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

@@ -3,7 +3,8 @@
"description": "View and manage your CLI execution history",
"tabs": {
"executions": "Executions",
"observability": "Session Audit"
"observability": "Session Audit",
"nativeSessions": "Native Sessions"
},
"searchPlaceholder": "Search executions...",
"filterAllTools": "All Tools",
@@ -33,5 +34,13 @@
"message": "CLI execution history will appear here when you run CLI commands.",
"filtered": "No Matching Results",
"filteredMessage": "No executions match your current filter. Try adjusting your search or filter."
},
"nativeSessions": {
"count": "{count} native sessions",
"sessions": "sessions",
"empty": {
"title": "No Native Sessions",
"message": "Native CLI sessions from Gemini, Codex, Qwen, etc. will appear here."
}
}
}

View File

@@ -48,6 +48,11 @@
"issuePanel": {
"title": "Issues",
"sendToQueue": "Send to Queue",
"addToQueue": "Queue",
"addToQueueHint": "Add selected issues to the execution queue",
"addedToQueue": "Queued!",
"addToQueueFailed": "Failed to add to queue",
"queueModeHint": "Execution mode for queued items",
"noIssues": "No issues found",
"noIssuesDesc": "Issues will appear here when discovered",
"error": "Failed to load issues"
@@ -59,13 +64,35 @@
"error": "Failed to load queue",
"order": "#{order}",
"dependsOn": "Depends on: {deps}",
"blockedBy": "Blocked by: {deps}",
"status": {
"pending": "Pending",
"queued": "Queued",
"ready": "Ready",
"blocked": "Blocked",
"executing": "Executing",
"completed": "Completed",
"failed": "Failed",
"blocked": "Blocked"
"cancelled": "Cancelled",
"skipped": "Skipped"
},
"scheduler": {
"start": "Start",
"pause": "Pause",
"stop": "Stop",
"status": {
"idle": "Idle",
"running": "Running",
"paused": "Paused",
"stopping": "Stopping",
"completed": "Completed",
"failed": "Failed"
},
"progress": "{percent}%",
"concurrency": "Concurrency",
"concurrencyLabel": "Max",
"stopConfirmTitle": "Stop Queue?",
"stopConfirmMessage": "Executing tasks will finish, but no new tasks will be started. Pending items will remain in the queue."
}
},
"toolbar": {
@@ -81,7 +108,13 @@
"launchCli": "New Session",
"launchCliHint": "Click to configure and create a new CLI session",
"fullscreen": "Fullscreen",
"orchestrator": "Orchestrator"
"orchestrator": "Orchestrator",
"scheduler": "Scheduler",
"executionMonitor": "Execution Monitor"
},
"schedulerPanel": {
"sessionPool": "Session Pool",
"noSessions": "No active sessions"
},
"orchestratorPanel": {
"noPlans": "No active orchestrations",