fmode-code-agent.js 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/env node
  2. /**
  3. * fmode-code-agent CLI
  4. * 用法:
  5. * node bin/fmode-code-agent.js install # 装技能到 ~/.claude/skills/(默认)
  6. * node bin/fmode-code-agent.js workspace # 装技能到 ./.claude/skills/
  7. * node bin/fmode-code-agent.js rules [dir] # 把智能体规则装入目标项目 ./.claude/rules/
  8. * node bin/fmode-code-agent.js scaffold <dir> --project <name> # 生成智能体骨架
  9. * node bin/fmode-code-agent.js smoke # 自检
  10. */
  11. import { spawnSync } from 'node:child_process';
  12. import { dirname, join } from 'node:path';
  13. import { fileURLToPath } from 'node:url';
  14. const __dirname = dirname(fileURLToPath(import.meta.url));
  15. const SCRIPTS = join(__dirname, '..', 'scripts');
  16. const [cmd = 'install', ...rest] = process.argv.slice(2);
  17. const MAP = {
  18. install: 'install.mjs',
  19. workspace: 'install.mjs',
  20. rules: 'install-rules.mjs',
  21. scaffold: 'scaffold.mjs',
  22. smoke: 'smoke.mjs',
  23. };
  24. const script = MAP[cmd];
  25. if (!script) {
  26. console.error(`未知命令:${cmd}\n可用:${Object.keys(MAP).join(', ')}`);
  27. process.exit(2);
  28. }
  29. const r = spawnSync(process.execPath, [join(SCRIPTS, script), ...(cmd === 'smoke' ? [] : [cmd === 'install' || cmd === 'workspace' ? cmd : '', ...rest].filter((x) => x !== ''))], { stdio: 'inherit' });
  30. process.exit(r.status ?? 1);