vralphy 0.5.6 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/commands/build.d.ts +0 -3
  2. package/dist/commands/build.d.ts.map +1 -1
  3. package/dist/commands/build.js +16 -50
  4. package/dist/commands/build.js.map +1 -1
  5. package/dist/commands/init.d.ts +0 -7
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +12 -77
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/plan.d.ts +0 -3
  10. package/dist/commands/plan.d.ts.map +1 -1
  11. package/dist/commands/plan.js +16 -50
  12. package/dist/commands/plan.js.map +1 -1
  13. package/dist/commands/spec.d.ts +0 -3
  14. package/dist/commands/spec.d.ts.map +1 -1
  15. package/dist/commands/spec.js +15 -77
  16. package/dist/commands/spec.js.map +1 -1
  17. package/dist/index.js +20 -72
  18. package/dist/index.js.map +1 -1
  19. package/dist/lib/config.d.ts +0 -23
  20. package/dist/lib/config.d.ts.map +1 -1
  21. package/dist/lib/config.js +4 -63
  22. package/dist/lib/config.js.map +1 -1
  23. package/dist/lib/engines/base.d.ts +8 -59
  24. package/dist/lib/engines/base.d.ts.map +1 -1
  25. package/dist/lib/engines/base.js +5 -58
  26. package/dist/lib/engines/base.js.map +1 -1
  27. package/dist/lib/engines/claude.d.ts +2 -6
  28. package/dist/lib/engines/claude.d.ts.map +1 -1
  29. package/dist/lib/engines/claude.js +15 -133
  30. package/dist/lib/engines/claude.js.map +1 -1
  31. package/dist/lib/engines/codex.d.ts +2 -5
  32. package/dist/lib/engines/codex.d.ts.map +1 -1
  33. package/dist/lib/engines/codex.js +15 -61
  34. package/dist/lib/engines/codex.js.map +1 -1
  35. package/dist/lib/engines/index.d.ts +1 -11
  36. package/dist/lib/engines/index.d.ts.map +1 -1
  37. package/dist/lib/engines/index.js +0 -16
  38. package/dist/lib/engines/index.js.map +1 -1
  39. package/dist/lib/engines/opencode.d.ts +2 -6
  40. package/dist/lib/engines/opencode.d.ts.map +1 -1
  41. package/dist/lib/engines/opencode.js +14 -114
  42. package/dist/lib/engines/opencode.js.map +1 -1
  43. package/dist/lib/init.d.ts +1 -17
  44. package/dist/lib/init.d.ts.map +1 -1
  45. package/dist/lib/init.js +55 -245
  46. package/dist/lib/init.js.map +1 -1
  47. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -10,46 +10,38 @@ import { specCommand } from './commands/spec.js';
10
10
  import { initCommand } from './commands/init.js';
11
11
  import { cleanupCommand } from './commands/cleanup.js';
12
12
  import { detectEngines } from './lib/engines/index.js';
13
- import { listSkills } from './lib/skills.js';
14
- import { listAgents } from './lib/agents.js';
15
- import { getSkillsDir, getAgentsDir } from './lib/config.js';
16
13
  const __filename = fileURLToPath(import.meta.url);
17
14
  const __dirname = dirname(__filename);
18
15
  const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));
19
16
  const program = new Command();
20
17
  program
21
18
  .name('vralphy')
22
- .description('CLI tool implementing the Ralph Playbook methodology')
19
+ .description('Ralph Playbook loop runner for Claude, OpenCode, and Codex')
23
20
  .version(packageJson.version);
24
21
  program
25
- .option('--engine <engine>', 'Engine selection (claude|opencode|codex)')
26
- .option('--model <model>', 'Primary model (default: opus)')
27
- .option('--executor <model>', 'Executor/subagent model (default: sonnet)')
28
- .option('--skills <path>', 'Skills directory')
29
- .option('--agents <path>', 'Agents directory')
30
- .option('--config <path>', 'Config file (default: vralphy.config.json)')
31
- .option('--reasoning-effort <level>', 'Reasoning effort level (e.g., high, xhigh)')
32
- .option('--verbose', 'Verbose output', false)
33
- .option('--dry-run', 'Show what would execute without running', false);
22
+ .option('--engine <engine>', 'Engine: claude, opencode, codex')
23
+ .option('--model <model>', 'Model to use')
24
+ .option('--verbose', 'Verbose output')
25
+ .option('--dry-run', 'Show prompt without running');
34
26
  program
35
- .command('build [iterations]')
36
- .description('Run build mode (default command)')
27
+ .command('plan [iterations]')
28
+ .description('Run planning loop')
37
29
  .action(async (iterations) => {
38
30
  const opts = program.opts();
39
31
  const config = await resolveConfig(opts);
40
- await buildCommand(config, { iterations: iterations ? parseInt(iterations, 10) : undefined });
32
+ await planCommand(config, { iterations: iterations ? parseInt(iterations, 10) : undefined });
41
33
  });
42
34
  program
43
- .command('plan [iterations]')
44
- .description('Run plan mode')
35
+ .command('build [iterations]')
36
+ .description('Run build loop')
45
37
  .action(async (iterations) => {
46
38
  const opts = program.opts();
47
39
  const config = await resolveConfig(opts);
48
- await planCommand(config, { iterations: iterations ? parseInt(iterations, 10) : undefined });
40
+ await buildCommand(config, { iterations: iterations ? parseInt(iterations, 10) : undefined });
49
41
  });
50
42
  program
51
43
  .command('spec [topic]')
52
- .description('Interactive spec creation')
44
+ .description('Run spec session')
53
45
  .action(async (topic) => {
54
46
  const opts = program.opts();
55
47
  const config = await resolveConfig(opts);
@@ -57,23 +49,16 @@ program
57
49
  });
58
50
  program
59
51
  .command('init')
60
- .description('Initialize project for vralphy')
61
- .option('--from <path>', 'Initialize from existing project')
62
- .option('--no-ai', 'Skip AI generation, use template fallback')
63
- .option('--approve', 'Review AGENTS.md before saving')
64
- .option('--engine <engine>', 'Specify engine for AI generation (claude|opencode|codex)')
52
+ .description('Initialize project')
53
+ .option('--from <path>', 'Initialize from path')
65
54
  .action(async (cmdOpts) => {
66
- const globalOpts = program.opts();
67
- // Commander parses --no-ai as ai: false, so we convert to noAi: true
68
- const noAi = cmdOpts.ai === false;
69
- await initCommand({ ...cmdOpts, noAi, verbose: globalOpts.verbose });
55
+ await initCommand(cmdOpts);
70
56
  });
71
57
  program
72
58
  .command('cleanup')
73
59
  .description('Remove vralphy from project')
74
- .option('--from <path>', 'Clean up from existing project')
75
- .option('--remove-specs', 'Also remove specs/ directory')
76
- .option('--force', 'Skip confirmation prompt')
60
+ .option('--from <path>', 'Clean up from path')
61
+ .option('--force', 'Skip confirmation')
77
62
  .action(async (cmdOpts) => {
78
63
  await cleanupCommand(cmdOpts);
79
64
  });
@@ -87,48 +72,11 @@ program
87
72
  console.log(` - ${engine}`);
88
73
  }
89
74
  if (available.length === 0) {
90
- console.log(' (none found - install claude or opencode CLI)');
91
- }
92
- });
93
- program
94
- .command('skills')
95
- .description('List available skills')
96
- .action(async () => {
97
- const opts = program.opts();
98
- const config = await resolveConfig(opts);
99
- const skillsDir = getSkillsDir(config.engine, config.skillsDir);
100
- const skills = await listSkills(skillsDir);
101
- if (skills.length === 0) {
102
- console.log(`No skills found in: ${skillsDir}`);
103
- console.log('Create .md files with frontmatter to add skills.');
104
- return;
105
- }
106
- console.log('Available skills:');
107
- for (const skill of skills) {
108
- console.log(` - ${skill.name}${skill.description ? `: ${skill.description}` : ''}`);
109
- }
110
- });
111
- program
112
- .command('agents')
113
- .description('List available agents')
114
- .action(async () => {
115
- const opts = program.opts();
116
- const config = await resolveConfig(opts);
117
- const agentsDir = getAgentsDir(config.engine, config.agentsDir);
118
- const agents = await listAgents(agentsDir);
119
- if (agents.length === 0) {
120
- console.log(`No agents found in: ${agentsDir}`);
121
- console.log('Create .md files with frontmatter to add agents.');
122
- return;
123
- }
124
- console.log('Available agents:');
125
- for (const agent of agents) {
126
- const model = agent.model ? ` (${agent.model})` : '';
127
- console.log(` - ${agent.name}${model}${agent.description ? `: ${agent.description}` : ''}`);
75
+ console.log(' (none - install claude, opencode, or codex)');
128
76
  }
129
77
  });
130
- program
131
- .action(async () => {
78
+ // Default: run build
79
+ program.action(async () => {
132
80
  const opts = program.opts();
133
81
  const config = await resolveConfig(opts);
134
82
  await buildCommand(config, {});
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,39 +2,16 @@ import { EngineName } from './engines/index.js';
2
2
  export interface VralphyConfig {
3
3
  engine: EngineName;
4
4
  model: string;
5
- executor: string;
6
- skillsDir: string;
7
- agentsDir: string;
8
5
  verbose: boolean;
9
6
  dryRun: boolean;
10
- reasoningEffort?: string;
11
7
  }
12
8
  export interface ConfigOptions {
13
9
  engine?: string;
14
10
  model?: string;
15
- executor?: string;
16
- skills?: string;
17
- agents?: string;
18
11
  config?: string;
19
- reasoningEffort?: string;
20
12
  verbose?: boolean;
21
13
  dryRun?: boolean;
22
14
  }
23
- /**
24
- * Resolve configuration from multiple sources
25
- * Priority: CLI flags > env vars > config file > defaults
26
- */
27
15
  export declare function resolveConfig(cliOptions: ConfigOptions): Promise<VralphyConfig>;
28
- /**
29
- * Determine skills directory based on engine
30
- */
31
- export declare function getSkillsDir(engine: EngineName, customPath?: string): string;
32
- /**
33
- * Determine agents directory based on engine
34
- */
35
- export declare function getAgentsDir(engine: EngineName, customPath?: string): string;
36
- /**
37
- * Find project root by looking for common markers
38
- */
39
16
  export declare function findProjectRoot(startDir?: string): string;
40
17
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA6BD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBrF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAe5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAe5E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,CAgBxE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAmBD,wBAAsB,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAUrF;AAED,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,CAYxE"}
@@ -1,24 +1,15 @@
1
1
  import { readFile } from 'fs/promises';
2
2
  import { existsSync } from 'fs';
3
3
  import { join } from 'path';
4
- import { validateModelForEngine } from './engines/base.js';
5
4
  const DEFAULT_CONFIG = {
6
5
  engine: 'claude',
7
- model: 'opus',
8
- executor: 'sonnet',
9
- skillsDir: '.claude/skills',
10
- agentsDir: 'agents',
6
+ model: 'sonnet',
11
7
  verbose: false,
12
8
  dryRun: false,
13
- reasoningEffort: undefined,
14
9
  };
15
- /**
16
- * Load config from file if it exists
17
- */
18
10
  async function loadConfigFile(path) {
19
- if (!existsSync(path)) {
11
+ if (!existsSync(path))
20
12
  return {};
21
- }
22
13
  try {
23
14
  const content = await readFile(path, 'utf-8');
24
15
  return JSON.parse(content);
@@ -27,70 +18,20 @@ async function loadConfigFile(path) {
27
18
  return {};
28
19
  }
29
20
  }
30
- /**
31
- * Resolve configuration from multiple sources
32
- * Priority: CLI flags > env vars > config file > defaults
33
- */
34
21
  export async function resolveConfig(cliOptions) {
35
22
  const configPath = cliOptions.config ?? 'vralphy.config.json';
36
23
  const fileConfig = await loadConfigFile(configPath);
37
- const config = {
24
+ return {
38
25
  engine: (cliOptions.engine ?? process.env.VRALPHY_ENGINE ?? fileConfig.engine ?? DEFAULT_CONFIG.engine),
39
26
  model: cliOptions.model ?? process.env.VRALPHY_MODEL ?? fileConfig.model ?? DEFAULT_CONFIG.model,
40
- executor: cliOptions.executor ?? process.env.VRALPHY_EXECUTOR ?? fileConfig.executor ?? DEFAULT_CONFIG.executor,
41
- skillsDir: cliOptions.skills ?? fileConfig.skillsDir ?? DEFAULT_CONFIG.skillsDir,
42
- agentsDir: cliOptions.agents ?? fileConfig.agentsDir ?? DEFAULT_CONFIG.agentsDir,
43
27
  verbose: cliOptions.verbose ?? fileConfig.verbose ?? DEFAULT_CONFIG.verbose,
44
28
  dryRun: cliOptions.dryRun ?? fileConfig.dryRun ?? DEFAULT_CONFIG.dryRun,
45
- reasoningEffort: cliOptions.reasoningEffort ?? process.env.VRALPHY_REASONING_EFFORT ?? fileConfig.reasoningEffort ?? DEFAULT_CONFIG.reasoningEffort,
46
- };
47
- // Validate model is compatible with engine
48
- validateModelForEngine(config.model, config.engine);
49
- return config;
50
- }
51
- /**
52
- * Determine skills directory based on engine
53
- */
54
- export function getSkillsDir(engine, customPath) {
55
- if (customPath)
56
- return customPath;
57
- const engineDirs = {
58
- claude: '.claude/skills',
59
- opencode: '.opencode/skills',
60
- codex: '.codex/skills',
61
- };
62
- const engineDir = engineDirs[engine];
63
- if (existsSync(engineDir))
64
- return engineDir;
65
- if (existsSync('skills'))
66
- return 'skills';
67
- return engineDir;
68
- }
69
- /**
70
- * Determine agents directory based on engine
71
- */
72
- export function getAgentsDir(engine, customPath) {
73
- if (customPath)
74
- return customPath;
75
- const engineDirs = {
76
- claude: '.claude/agents',
77
- opencode: '.opencode/agents',
78
- codex: '.codex/agents',
79
29
  };
80
- const engineDir = engineDirs[engine];
81
- if (existsSync(engineDir))
82
- return engineDir;
83
- if (existsSync('agents'))
84
- return 'agents';
85
- return engineDir;
86
30
  }
87
- /**
88
- * Find project root by looking for common markers
89
- */
90
31
  export function findProjectRoot(startDir = process.cwd()) {
91
32
  let dir = startDir;
92
33
  while (dir !== '/') {
93
- const markers = ['package.json', 'Cargo.toml', 'go.mod', '.git', 'AGENTS.md'];
34
+ const markers = ['package.json', 'Cargo.toml', 'go.mod', '.git'];
94
35
  for (const marker of markers) {
95
36
  if (existsSync(join(dir, marker))) {
96
37
  return dir;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAkB5B,MAAM,cAAc,GAAkB;IACpC,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,KAAK,UAAU,cAAc,CAAC,IAAY;IACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAyB;IAC3D,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,IAAI,qBAAqB,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,UAAU,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAe;QACrH,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,UAAU,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK;QAChG,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;QAC3E,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IAC9D,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;gBAClC,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,68 +1,17 @@
1
1
  /**
2
- * Base engine interface that all engines must implement
2
+ * Simple engine interface - just run prompts
3
3
  */
4
- export interface ExecuteOptions {
5
- model: string;
6
- executor: string;
7
- headless: boolean;
8
- skipPermissions: boolean;
9
- outputFormat: 'stream-json' | 'text';
10
- verbose: boolean;
11
- skills?: string[];
12
- agents?: string[];
13
- reasoningEffort?: string;
14
- }
15
- export interface Chunk {
16
- type: 'text' | 'tool_use' | 'error' | 'done';
17
- content?: string;
18
- tool?: string;
19
- error?: string;
20
- }
21
- export interface EngineFlags {
22
- model?: string;
23
- skipPermissions?: boolean;
24
- outputFormat?: 'stream-json' | 'text';
25
- verbose?: boolean;
26
- reasoningEffort?: string;
27
- }
28
4
  export interface Engine {
29
5
  readonly name: string;
30
- /**
31
- * Execute prompt with streaming output
32
- */
33
- execute(prompt: string, options: ExecuteOptions): AsyncIterable<Chunk>;
34
- /**
35
- * Check if engine CLI is available
36
- */
6
+ run(prompt: string, options: RunOptions): Promise<void>;
37
7
  isAvailable(): Promise<boolean>;
38
- /**
39
- * Get engine-specific CLI flags
40
- */
41
- getFlags(options: EngineFlags): string[];
42
- /**
43
- * Whether engine supports interactive mode (AskUserQuestion)
44
- */
45
- supportsInteractive(): boolean;
46
- /**
47
- * Get the CLI command name
48
- */
49
- getCommand(): string;
8
+ }
9
+ export interface RunOptions {
10
+ model?: string;
11
+ skipPermissions?: boolean;
50
12
  }
51
13
  /**
52
- * Model aliases per engine
53
- */
54
- export declare const MODEL_ALIASES_BY_ENGINE: Record<string, Record<string, string>>;
55
- /**
56
- * Backward compatibility: global aliases (Claude-only for now)
57
- */
58
- export declare const MODEL_ALIASES: Record<string, string>;
59
- /**
60
- * Resolve model alias to full model ID
61
- * Falls back to string if not found (allows full model IDs)
62
- */
63
- export declare function resolveModel(model: string, engine?: string): string;
64
- /**
65
- * Validate that a model is compatible with the specified engine
14
+ * Check if a command exists
66
15
  */
67
- export declare function validateModelForEngine(model: string, engine: string): void;
16
+ export declare function commandExists(cmd: string): boolean;
68
17
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/lib/engines/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,aAAa,GAAG,MAAM,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEvE;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;IAEzC;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC;IAE/B;;OAEG;IACH,UAAU,IAAI,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmB1E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAkC,CAAC;AAEpF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiB,GAAG,MAAM,CAM7E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAmB1E"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/lib/engines/base.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGlD"}
@@ -1,62 +1,9 @@
1
+ import { spawnSync } from 'child_process';
1
2
  /**
2
- * Base engine interface that all engines must implement
3
+ * Check if a command exists
3
4
  */
4
- /**
5
- * Model aliases per engine
6
- */
7
- export const MODEL_ALIASES_BY_ENGINE = {
8
- claude: {
9
- opus: 'opus',
10
- sonnet: 'sonnet',
11
- haiku: 'haiku',
12
- },
13
- opencode: {
14
- // OpenAI models
15
- 'gpt-4o': 'gpt-4o',
16
- 'gpt-4': 'gpt-4-turbo',
17
- 'o1': 'o1', // Reasoning model
18
- 'o1-mini': 'o1-mini', // Smaller reasoning model
19
- 'o1-preview': 'o1-preview',
20
- },
21
- codex: {
22
- // Codex/DeepSeek models
23
- 'deepseek-chat': 'deepseek-chat',
24
- 'deepseek-r1': 'deepseek-r1', // Reasoning model
25
- },
26
- };
27
- /**
28
- * Backward compatibility: global aliases (Claude-only for now)
29
- */
30
- export const MODEL_ALIASES = MODEL_ALIASES_BY_ENGINE.claude;
31
- /**
32
- * Resolve model alias to full model ID
33
- * Falls back to string if not found (allows full model IDs)
34
- */
35
- export function resolveModel(model, engine = 'claude') {
36
- const engineAliases = MODEL_ALIASES_BY_ENGINE[engine];
37
- if (engineAliases) {
38
- return engineAliases[model.toLowerCase()] ?? model;
39
- }
40
- return model;
41
- }
42
- /**
43
- * Validate that a model is compatible with the specified engine
44
- */
45
- export function validateModelForEngine(model, engine) {
46
- const engineAliases = MODEL_ALIASES_BY_ENGINE[engine];
47
- if (!engineAliases) {
48
- return; // Unknown engine, skip validation
49
- }
50
- const normalizedModel = model.toLowerCase();
51
- const isFullModelId = model.includes('/') || model.includes('-');
52
- // Error if it looks like an alias for a different engine
53
- for (const [otherEngine, aliases] of Object.entries(MODEL_ALIASES_BY_ENGINE)) {
54
- if (otherEngine === engine)
55
- continue;
56
- if (normalizedModel in aliases) {
57
- throw new Error(`Model '${model}' is a ${otherEngine} alias but you're using engine '${engine}'. ` +
58
- `Use --engine ${otherEngine} or choose a compatible model.`);
59
- }
60
- }
5
+ export function commandExists(cmd) {
6
+ const result = spawnSync('which', [cmd], { stdio: 'ignore' });
7
+ return result.status === 0;
61
8
  }
62
9
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/lib/engines/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0DH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA2C;IAC7E,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;KACf;IACD,QAAQ,EAAE;QACR,gBAAgB;QAChB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,IAAI,EAAe,kBAAkB;QAC3C,SAAS,EAAE,SAAS,EAAK,0BAA0B;QACnD,YAAY,EAAE,YAAY;KAC3B;IACD,KAAK,EAAE;QACL,wBAAwB;QACxB,eAAe,EAAE,eAAe;QAChC,aAAa,EAAE,aAAa,EAAG,kBAAkB;KAClD;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAA2B,uBAAuB,CAAC,MAAM,CAAC;AAEpF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,SAAiB,QAAQ;IACnE,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,MAAc;IAClE,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,kCAAkC;IAC5C,CAAC;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEjE,yDAAyD;IACzD,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC7E,IAAI,WAAW,KAAK,MAAM;YAAE,SAAS;QACrC,IAAI,eAAe,IAAI,OAAO,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,UAAU,WAAW,mCAAmC,MAAM,KAAK;gBAClF,gBAAgB,WAAW,gCAAgC,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/lib/engines/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAgB1C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC"}
@@ -1,11 +1,7 @@
1
- import { Engine, ExecuteOptions, Chunk, EngineFlags } from './base.js';
1
+ import { Engine, RunOptions } from './base.js';
2
2
  export declare class ClaudeEngine implements Engine {
3
3
  readonly name = "claude";
4
- execute(prompt: string, options: ExecuteOptions): AsyncIterable<Chunk>;
5
- private parseStreamJson;
4
+ run(prompt: string, options: RunOptions): Promise<void>;
6
5
  isAvailable(): Promise<boolean>;
7
- getFlags(options: EngineFlags): string[];
8
- supportsInteractive(): boolean;
9
- getCommand(): string;
10
6
  }
11
7
  //# sourceMappingURL=claude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/lib/engines/claude.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAgB,MAAM,WAAW,CAAC;AAErF,qBAAa,YAAa,YAAW,MAAM;IACzC,QAAQ,CAAC,IAAI,YAAY;IAElB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC;IAyE7E,OAAO,CAAC,eAAe;IAkCjB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBrC,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE;IAiCxC,mBAAmB,IAAI,OAAO;IAI9B,UAAU,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/lib/engines/claude.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAE9D,qBAAa,YAAa,YAAW,MAAM;IACzC,QAAQ,CAAC,IAAI,YAAY;IAEnB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BvD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAGtC"}