mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-11 02:33:51 +08:00
- Introduced a new CodexLens Manager item in the dashboard for easier access. - Implemented GPU management commands in the CLI, including listing available GPUs, selecting a specific GPU, and resetting to automatic detection. - Enhanced the embedding generation process to utilize GPU resources more effectively, including batch size optimization for better performance. - Updated the embedder to support device ID options for GPU selection, ensuring compatibility with DirectML and CUDA. - Added detailed logging and error handling for GPU detection and selection processes. - Updated package version to 6.2.9 and added comprehensive documentation for Codex Agent Execution Protocol.
109 lines
3.1 KiB
TypeScript
109 lines
3.1 KiB
TypeScript
// @ts-nocheck
|
|
/**
|
|
* Status Routes Module
|
|
* Aggregated status endpoint for faster dashboard loading
|
|
*/
|
|
import type { IncomingMessage, ServerResponse } from 'http';
|
|
import { existsSync } from 'fs';
|
|
import { join } from 'path';
|
|
import { homedir } from 'os';
|
|
import { getCliToolsStatus } from '../../tools/cli-executor.js';
|
|
import { checkVenvStatus, checkSemanticStatus } from '../../tools/codex-lens.js';
|
|
|
|
/**
|
|
* Check CCW installation status
|
|
* Verifies that required workflow files are installed in user's home directory
|
|
*/
|
|
function checkCcwInstallStatus(): {
|
|
installed: boolean;
|
|
workflowsInstalled: boolean;
|
|
missingFiles: string[];
|
|
installPath: string;
|
|
} {
|
|
const claudeDir = join(homedir(), '.claude');
|
|
const workflowsDir = join(claudeDir, 'workflows');
|
|
|
|
// Required workflow files for full functionality
|
|
const requiredFiles = [
|
|
'chinese-response.md',
|
|
'windows-platform.md',
|
|
'cli-tools-usage.md',
|
|
'coding-philosophy.md',
|
|
'context-tools.md',
|
|
'file-modification.md'
|
|
];
|
|
|
|
const missingFiles: string[] = [];
|
|
|
|
// Check each required file
|
|
for (const file of requiredFiles) {
|
|
const filePath = join(workflowsDir, file);
|
|
if (!existsSync(filePath)) {
|
|
missingFiles.push(file);
|
|
}
|
|
}
|
|
|
|
const workflowsInstalled = existsSync(workflowsDir) && missingFiles.length === 0;
|
|
const installed = existsSync(claudeDir) && workflowsInstalled;
|
|
|
|
return {
|
|
installed,
|
|
workflowsInstalled,
|
|
missingFiles,
|
|
installPath: claudeDir
|
|
};
|
|
}
|
|
|
|
export interface RouteContext {
|
|
pathname: string;
|
|
url: URL;
|
|
req: IncomingMessage;
|
|
res: ServerResponse;
|
|
initialPath: string;
|
|
handlePostRequest: (req: IncomingMessage, res: ServerResponse, handler: (body: unknown) => Promise<any>) => void;
|
|
broadcastToClients: (data: unknown) => void;
|
|
}
|
|
|
|
/**
|
|
* Handle status routes
|
|
* @returns true if route was handled, false otherwise
|
|
*/
|
|
export async function handleStatusRoutes(ctx: RouteContext): Promise<boolean> {
|
|
const { pathname, res } = ctx;
|
|
|
|
// API: Aggregated Status (all statuses in one call)
|
|
if (pathname === '/api/status/all') {
|
|
try {
|
|
// Check CCW installation status (sync, fast)
|
|
const ccwInstallStatus = checkCcwInstallStatus();
|
|
|
|
// Execute all status checks in parallel
|
|
const [cliStatus, codexLensStatus, semanticStatus] = await Promise.all([
|
|
getCliToolsStatus(),
|
|
checkVenvStatus(),
|
|
// Always check semantic status (will return available: false if CodexLens not ready)
|
|
checkSemanticStatus().catch(() => ({ available: false, backend: null }))
|
|
]);
|
|
|
|
const response = {
|
|
cli: cliStatus,
|
|
codexLens: codexLensStatus,
|
|
semantic: semanticStatus,
|
|
ccwInstall: ccwInstallStatus,
|
|
timestamp: new Date().toISOString()
|
|
};
|
|
|
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
res.end(JSON.stringify(response));
|
|
return true;
|
|
} catch (error) {
|
|
console.error('[Status Routes] Error fetching aggregated status:', error);
|
|
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
res.end(JSON.stringify({ error: (error as Error).message }));
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|