feat(queue): implement queue scheduler service and API routes

- Added QueueSchedulerService to manage task queue lifecycle, including state machine, dependency resolution, and session management.
- Implemented HTTP API endpoints for queue scheduling:
  - POST /api/queue/execute: Submit items to the scheduler.
  - GET /api/queue/scheduler/state: Retrieve full scheduler state.
  - POST /api/queue/scheduler/start: Start scheduling loop with items.
  - POST /api/queue/scheduler/pause: Pause scheduling.
  - POST /api/queue/scheduler/stop: Graceful stop of the scheduler.
  - POST /api/queue/scheduler/config: Update scheduler configuration.
- Introduced types for queue items, scheduler state, and WebSocket messages to ensure type safety and compatibility with the backend.
- Added static model lists for LiteLLM as a fallback for available models.
This commit is contained in:
catlog22
2026-02-27 20:53:46 +08:00
parent 5b54f38aa3
commit 75173312c1
47 changed files with 3813 additions and 307 deletions

View File

@@ -283,6 +283,54 @@ const mockMessages: Record<Locale, Record<string, string>> = {
'codexlens.reranker.selectBackend': 'Select backend...',
'codexlens.reranker.selectModel': 'Select model...',
'codexlens.reranker.selectProvider': 'Select provider...',
// MCP - CCW Tools
'mcp.ccw.title': 'CCW MCP Server',
'mcp.ccw.description': 'Configure CCW MCP tools and paths',
'mcp.ccw.status.installed': 'Installed',
'mcp.ccw.status.notInstalled': 'Not installed',
'mcp.ccw.status.special': 'Special',
'mcp.ccw.actions.enableAll': 'Enable All',
'mcp.ccw.actions.disableAll': 'Disable All',
'mcp.ccw.actions.saveConfig': 'Save Configuration',
'mcp.ccw.actions.saving': 'Saving...',
'mcp.ccw.actions.installing': 'Installing...',
'mcp.ccw.actions.uninstall': 'Uninstall',
'mcp.ccw.actions.uninstalling': 'Uninstalling...',
'mcp.ccw.actions.uninstallConfirm': 'Are you sure you want to uninstall?',
'mcp.ccw.actions.uninstallScopeConfirm': 'Are you sure you want to uninstall from this scope?',
'mcp.ccw.codexNote': 'Codex only supports global installation',
'mcp.ccw.tools.label': 'Tools',
'mcp.ccw.tools.hint': 'Install to edit tools',
'mcp.ccw.tools.core': 'Core',
'mcp.ccw.tools.write_file.name': 'Write File',
'mcp.ccw.tools.write_file.desc': 'Write/create files',
'mcp.ccw.tools.edit_file.name': 'Edit File',
'mcp.ccw.tools.edit_file.desc': 'Edit/replace content',
'mcp.ccw.tools.read_file.name': 'Read File',
'mcp.ccw.tools.read_file.desc': 'Read single file',
'mcp.ccw.tools.read_many_files.name': 'Read Many Files',
'mcp.ccw.tools.read_many_files.desc': 'Read multiple files/dirs',
'mcp.ccw.tools.core_memory.name': 'Core Memory',
'mcp.ccw.tools.core_memory.desc': 'Core memory management',
'mcp.ccw.tools.ask_question.name': 'Ask Question',
'mcp.ccw.tools.ask_question.desc': 'Interactive questions (A2UI)',
'mcp.ccw.tools.smart_search.name': 'Smart Search',
'mcp.ccw.tools.smart_search.desc': 'Intelligent code search',
'mcp.ccw.tools.team_msg.name': 'Team Message',
'mcp.ccw.tools.team_msg.desc': 'Agent team message bus',
'mcp.ccw.paths.label': 'Paths',
'mcp.ccw.paths.projectRoot': 'Project Root',
'mcp.ccw.paths.projectRootPlaceholder': 'e.g. D:\\path\\to\\project',
'mcp.ccw.paths.allowedDirs': 'Allowed Directories',
'mcp.ccw.paths.allowedDirsPlaceholder': 'Comma-separated directories',
'mcp.ccw.paths.allowedDirsHint': 'Separate multiple directories with commas',
'mcp.ccw.paths.enableSandbox': 'Enable Sandbox',
'mcp.ccw.scope.installToGlobal': 'Install to Global',
'mcp.ccw.scope.installToProject': 'Install to Project',
'mcp.ccw.scope.uninstallGlobal': 'Uninstall Global',
'mcp.ccw.scope.uninstallProject': 'Uninstall Project',
'mcp.ccw.feedback.saveSuccess': 'Configuration saved',
'mcp.ccw.feedback.saveError': 'Failed to save configuration',
'navigation.codexlens': 'CodexLens',
},
zh: {
@@ -555,6 +603,54 @@ const mockMessages: Record<Locale, Record<string, string>> = {
'codexlens.reranker.selectBackend': '选择后端...',
'codexlens.reranker.selectModel': '选择模型...',
'codexlens.reranker.selectProvider': '选择提供商...',
// MCP - CCW Tools
'mcp.ccw.title': 'CCW MCP 服务器',
'mcp.ccw.description': '配置 CCW MCP 工具与路径',
'mcp.ccw.status.installed': '已安装',
'mcp.ccw.status.notInstalled': '未安装',
'mcp.ccw.status.special': '特殊',
'mcp.ccw.actions.enableAll': '全选',
'mcp.ccw.actions.disableAll': '全不选',
'mcp.ccw.actions.saveConfig': '保存配置',
'mcp.ccw.actions.saving': '保存中...',
'mcp.ccw.actions.installing': '安装中...',
'mcp.ccw.actions.uninstall': '卸载',
'mcp.ccw.actions.uninstalling': '卸载中...',
'mcp.ccw.actions.uninstallConfirm': '确定要卸载吗?',
'mcp.ccw.actions.uninstallScopeConfirm': '确定要从该作用域卸载吗?',
'mcp.ccw.codexNote': 'Codex 仅支持全局安装',
'mcp.ccw.tools.label': '工具',
'mcp.ccw.tools.hint': '安装后可编辑工具',
'mcp.ccw.tools.core': '核心',
'mcp.ccw.tools.write_file.name': '写入文件',
'mcp.ccw.tools.write_file.desc': '写入/创建文件',
'mcp.ccw.tools.edit_file.name': '编辑文件',
'mcp.ccw.tools.edit_file.desc': '编辑/替换内容',
'mcp.ccw.tools.read_file.name': '读取文件',
'mcp.ccw.tools.read_file.desc': '读取单个文件',
'mcp.ccw.tools.read_many_files.name': '读取多个文件',
'mcp.ccw.tools.read_many_files.desc': '读取多个文件/目录',
'mcp.ccw.tools.core_memory.name': '核心记忆',
'mcp.ccw.tools.core_memory.desc': '核心记忆管理',
'mcp.ccw.tools.ask_question.name': '提问',
'mcp.ccw.tools.ask_question.desc': '交互式问题A2UI',
'mcp.ccw.tools.smart_search.name': '智能搜索',
'mcp.ccw.tools.smart_search.desc': '智能代码搜索',
'mcp.ccw.tools.team_msg.name': '团队消息',
'mcp.ccw.tools.team_msg.desc': '代理团队消息总线',
'mcp.ccw.paths.label': '路径',
'mcp.ccw.paths.projectRoot': '项目根目录',
'mcp.ccw.paths.projectRootPlaceholder': '例如D:\\path\\to\\project',
'mcp.ccw.paths.allowedDirs': '允许目录',
'mcp.ccw.paths.allowedDirsPlaceholder': '用逗号分隔的目录',
'mcp.ccw.paths.allowedDirsHint': '使用逗号分隔多个目录',
'mcp.ccw.paths.enableSandbox': '启用沙箱',
'mcp.ccw.scope.installToGlobal': '安装到全局',
'mcp.ccw.scope.installToProject': '安装到项目',
'mcp.ccw.scope.uninstallGlobal': '卸载全局',
'mcp.ccw.scope.uninstallProject': '卸载项目',
'mcp.ccw.feedback.saveSuccess': '配置已保存',
'mcp.ccw.feedback.saveError': '保存配置失败',
'navigation.codexlens': 'CodexLens',
},
};