feat(cli): Add CLI Manager with status and history components

- Implemented CLI History Component to display execution history with filtering and search capabilities.
- Created CLI Status Component to show availability of CLI tools and allow setting a default tool.
- Enhanced notifications to handle CLI execution events.
- Integrated CLI Manager view to combine status and history panels for better user experience.
- Developed CLI Executor Tool for unified execution of external CLI tools (Gemini, Qwen, Codex) with streaming output.
- Added functionality to save and retrieve CLI execution history.
- Updated dashboard HTML to include navigation for CLI tools management.
This commit is contained in:
catlog22
2025-12-11 11:05:57 +08:00
parent a667b7548c
commit b81d1039c5
14 changed files with 2014 additions and 19 deletions

View File

@@ -8,6 +8,7 @@ import { upgradeCommand } from './commands/upgrade.js';
import { listCommand } from './commands/list.js';
import { toolCommand } from './commands/tool.js';
import { sessionCommand } from './commands/session.js';
import { cliCommand } from './commands/cli.js';
import { readFileSync, existsSync } from 'fs';
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';
@@ -133,5 +134,20 @@ export function run(argv) {
.option('--no-update-status', 'Skip status update on archive')
.action((subcommand, args, options) => sessionCommand(subcommand, args, options));
// CLI command
program
.command('cli [subcommand] [args...]')
.description('Unified CLI tool executor (gemini/qwen/codex)')
.option('--tool <tool>', 'CLI tool to use', 'gemini')
.option('--mode <mode>', 'Execution mode: analysis, write, auto', 'analysis')
.option('--model <model>', 'Model override')
.option('--cd <path>', 'Working directory (-C for codex)')
.option('--includeDirs <dirs>', 'Additional directories (--include-directories for gemini/qwen, --add-dir for codex)')
.option('--timeout <ms>', 'Timeout in milliseconds', '300000')
.option('--no-stream', 'Disable streaming output')
.option('--limit <n>', 'History limit')
.option('--status <status>', 'Filter by status')
.action((subcommand, args, options) => cliCommand(subcommand, args, options));
program.parse(argv);
}