steroids-cli 0.4.47
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.
- package/LICENSE +21 -0
- package/README.md +640 -0
- package/dist/cli/colors.d.ts +110 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +228 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/env.d.ts +159 -0
- package/dist/cli/env.d.ts.map +1 -0
- package/dist/cli/env.js +227 -0
- package/dist/cli/env.js.map +1 -0
- package/dist/cli/errors.d.ts +166 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +244 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/flags.d.ts +75 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +232 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/help.d.ts +97 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +275 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +29 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interactive.d.ts +58 -0
- package/dist/cli/interactive.d.ts.map +1 -0
- package/dist/cli/interactive.js +127 -0
- package/dist/cli/interactive.js.map +1 -0
- package/dist/cli/output.d.ts +116 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +178 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/commands/about.d.ts +7 -0
- package/dist/commands/about.d.ts.map +1 -0
- package/dist/commands/about.js +259 -0
- package/dist/commands/about.js.map +1 -0
- package/dist/commands/ai.d.ts +6 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +382 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/backup.d.ts +3 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +528 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/completion.d.ts +3 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +405 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +665 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/disputes.d.ts +3 -0
- package/dist/commands/disputes.d.ts.map +1 -0
- package/dist/commands/disputes.js +499 -0
- package/dist/commands/disputes.js.map +1 -0
- package/dist/commands/gc.d.ts +3 -0
- package/dist/commands/gc.d.ts.map +1 -0
- package/dist/commands/gc.js +300 -0
- package/dist/commands/gc.js.map +1 -0
- package/dist/commands/git.d.ts +3 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +458 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/health.d.ts +3 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +604 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/hooks.d.ts +6 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +529 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +200 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/llm.d.ts +7 -0
- package/dist/commands/llm.d.ts.map +1 -0
- package/dist/commands/llm.js +285 -0
- package/dist/commands/llm.js.map +1 -0
- package/dist/commands/locks.d.ts +3 -0
- package/dist/commands/locks.d.ts.map +1 -0
- package/dist/commands/locks.js +431 -0
- package/dist/commands/locks.js.map +1 -0
- package/dist/commands/logs.d.ts +3 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +487 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/loop-phases.d.ts +11 -0
- package/dist/commands/loop-phases.d.ts.map +1 -0
- package/dist/commands/loop-phases.js +204 -0
- package/dist/commands/loop-phases.js.map +1 -0
- package/dist/commands/loop.d.ts +3 -0
- package/dist/commands/loop.d.ts.map +1 -0
- package/dist/commands/loop.js +396 -0
- package/dist/commands/loop.js.map +1 -0
- package/dist/commands/projects.d.ts +6 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +362 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/purge.d.ts +3 -0
- package/dist/commands/purge.d.ts.map +1 -0
- package/dist/commands/purge.js +516 -0
- package/dist/commands/purge.js.map +1 -0
- package/dist/commands/runners.d.ts +3 -0
- package/dist/commands/runners.d.ts.map +1 -0
- package/dist/commands/runners.js +1076 -0
- package/dist/commands/runners.js.map +1 -0
- package/dist/commands/scan.d.ts +3 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +291 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/sections-commands.d.ts +9 -0
- package/dist/commands/sections-commands.d.ts.map +1 -0
- package/dist/commands/sections-commands.js +282 -0
- package/dist/commands/sections-commands.js.map +1 -0
- package/dist/commands/sections-graph.d.ts +25 -0
- package/dist/commands/sections-graph.d.ts.map +1 -0
- package/dist/commands/sections-graph.js +180 -0
- package/dist/commands/sections-graph.js.map +1 -0
- package/dist/commands/sections.d.ts +3 -0
- package/dist/commands/sections.d.ts.map +1 -0
- package/dist/commands/sections.js +376 -0
- package/dist/commands/sections.js.map +1 -0
- package/dist/commands/stats.d.ts +6 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +324 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/tasks.d.ts +3 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +1115 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/commands/web.d.ts +7 -0
- package/dist/commands/web.d.ts.map +1 -0
- package/dist/commands/web.js +204 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/config/ai-setup.d.ts +27 -0
- package/dist/config/ai-setup.d.ts.map +1 -0
- package/dist/config/ai-setup.js +432 -0
- package/dist/config/ai-setup.js.map +1 -0
- package/dist/config/browser.d.ts +9 -0
- package/dist/config/browser.d.ts.map +1 -0
- package/dist/config/browser.js +200 -0
- package/dist/config/browser.js.map +1 -0
- package/dist/config/json-schema.d.ts +28 -0
- package/dist/config/json-schema.d.ts.map +1 -0
- package/dist/config/json-schema.js +84 -0
- package/dist/config/json-schema.js.map +1 -0
- package/dist/config/loader.d.ts +152 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +270 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +34 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +437 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/validator.d.ts +32 -0
- package/dist/config/validator.d.ts.map +1 -0
- package/dist/config/validator.js +187 -0
- package/dist/config/validator.js.map +1 -0
- package/dist/database/connection.d.ts +35 -0
- package/dist/database/connection.d.ts.map +1 -0
- package/dist/database/connection.js +208 -0
- package/dist/database/connection.js.map +1 -0
- package/dist/database/queries.d.ts +218 -0
- package/dist/database/queries.d.ts.map +1 -0
- package/dist/database/queries.js +613 -0
- package/dist/database/queries.js.map +1 -0
- package/dist/database/schema.d.ts +8 -0
- package/dist/database/schema.d.ts.map +1 -0
- package/dist/database/schema.js +160 -0
- package/dist/database/schema.js.map +1 -0
- package/dist/disputes/behavior.d.ts +106 -0
- package/dist/disputes/behavior.d.ts.map +1 -0
- package/dist/disputes/behavior.js +150 -0
- package/dist/disputes/behavior.js.map +1 -0
- package/dist/disputes/create.d.ts +59 -0
- package/dist/disputes/create.d.ts.map +1 -0
- package/dist/disputes/create.js +222 -0
- package/dist/disputes/create.js.map +1 -0
- package/dist/disputes/index.d.ts +21 -0
- package/dist/disputes/index.d.ts.map +1 -0
- package/dist/disputes/index.js +76 -0
- package/dist/disputes/index.js.map +1 -0
- package/dist/disputes/markdown.d.ts +41 -0
- package/dist/disputes/markdown.d.ts.map +1 -0
- package/dist/disputes/markdown.js +261 -0
- package/dist/disputes/markdown.js.map +1 -0
- package/dist/disputes/queries.d.ts +83 -0
- package/dist/disputes/queries.d.ts.map +1 -0
- package/dist/disputes/queries.js +180 -0
- package/dist/disputes/queries.js.map +1 -0
- package/dist/disputes/resolve.d.ts +57 -0
- package/dist/disputes/resolve.d.ts.map +1 -0
- package/dist/disputes/resolve.js +171 -0
- package/dist/disputes/resolve.js.map +1 -0
- package/dist/disputes/stale.d.ts +98 -0
- package/dist/disputes/stale.d.ts.map +1 -0
- package/dist/disputes/stale.js +205 -0
- package/dist/disputes/stale.js.map +1 -0
- package/dist/disputes/types.d.ts +92 -0
- package/dist/disputes/types.d.ts.map +1 -0
- package/dist/disputes/types.js +100 -0
- package/dist/disputes/types.js.map +1 -0
- package/dist/git/push.d.ts +26 -0
- package/dist/git/push.d.ts.map +1 -0
- package/dist/git/push.js +97 -0
- package/dist/git/push.js.map +1 -0
- package/dist/git/status.d.ts +61 -0
- package/dist/git/status.d.ts.map +1 -0
- package/dist/git/status.js +251 -0
- package/dist/git/status.js.map +1 -0
- package/dist/hooks/events.d.ts +72 -0
- package/dist/hooks/events.d.ts.map +1 -0
- package/dist/hooks/events.js +120 -0
- package/dist/hooks/events.js.map +1 -0
- package/dist/hooks/index.d.ts +19 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +48 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/integration.d.ts +69 -0
- package/dist/hooks/integration.d.ts.map +1 -0
- package/dist/hooks/integration.js +179 -0
- package/dist/hooks/integration.js.map +1 -0
- package/dist/hooks/merge.d.ts +115 -0
- package/dist/hooks/merge.d.ts.map +1 -0
- package/dist/hooks/merge.js +161 -0
- package/dist/hooks/merge.js.map +1 -0
- package/dist/hooks/orchestrator.d.ts +115 -0
- package/dist/hooks/orchestrator.d.ts.map +1 -0
- package/dist/hooks/orchestrator.js +226 -0
- package/dist/hooks/orchestrator.js.map +1 -0
- package/dist/hooks/payload.d.ts +294 -0
- package/dist/hooks/payload.d.ts.map +1 -0
- package/dist/hooks/payload.js +267 -0
- package/dist/hooks/payload.js.map +1 -0
- package/dist/hooks/script-runner.d.ts +63 -0
- package/dist/hooks/script-runner.d.ts.map +1 -0
- package/dist/hooks/script-runner.js +221 -0
- package/dist/hooks/script-runner.js.map +1 -0
- package/dist/hooks/templates.d.ts +104 -0
- package/dist/hooks/templates.d.ts.map +1 -0
- package/dist/hooks/templates.js +327 -0
- package/dist/hooks/templates.js.map +1 -0
- package/dist/hooks/webhook-runner.d.ts +69 -0
- package/dist/hooks/webhook-runner.d.ts.map +1 -0
- package/dist/hooks/webhook-runner.js +208 -0
- package/dist/hooks/webhook-runner.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +281 -0
- package/dist/index.js.map +1 -0
- package/dist/locking/cleanup.d.ts +70 -0
- package/dist/locking/cleanup.d.ts.map +1 -0
- package/dist/locking/cleanup.js +157 -0
- package/dist/locking/cleanup.js.map +1 -0
- package/dist/locking/queries.d.ts +116 -0
- package/dist/locking/queries.d.ts.map +1 -0
- package/dist/locking/queries.js +255 -0
- package/dist/locking/queries.js.map +1 -0
- package/dist/locking/section-lock.d.ts +74 -0
- package/dist/locking/section-lock.d.ts.map +1 -0
- package/dist/locking/section-lock.js +207 -0
- package/dist/locking/section-lock.js.map +1 -0
- package/dist/locking/task-lock.d.ts +92 -0
- package/dist/locking/task-lock.d.ts.map +1 -0
- package/dist/locking/task-lock.js +246 -0
- package/dist/locking/task-lock.js.map +1 -0
- package/dist/migrations/index.d.ts +7 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +37 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/manifest.d.ts +92 -0
- package/dist/migrations/manifest.d.ts.map +1 -0
- package/dist/migrations/manifest.js +270 -0
- package/dist/migrations/manifest.js.map +1 -0
- package/dist/migrations/runner.d.ts +84 -0
- package/dist/migrations/runner.d.ts.map +1 -0
- package/dist/migrations/runner.js +351 -0
- package/dist/migrations/runner.js.map +1 -0
- package/dist/orchestrator/coder.d.ts +32 -0
- package/dist/orchestrator/coder.d.ts.map +1 -0
- package/dist/orchestrator/coder.js +174 -0
- package/dist/orchestrator/coder.js.map +1 -0
- package/dist/orchestrator/coordinator.d.ts +28 -0
- package/dist/orchestrator/coordinator.d.ts.map +1 -0
- package/dist/orchestrator/coordinator.js +256 -0
- package/dist/orchestrator/coordinator.js.map +1 -0
- package/dist/orchestrator/reviewer.d.ts +35 -0
- package/dist/orchestrator/reviewer.d.ts.map +1 -0
- package/dist/orchestrator/reviewer.js +241 -0
- package/dist/orchestrator/reviewer.js.map +1 -0
- package/dist/orchestrator/task-selector.d.ts +102 -0
- package/dist/orchestrator/task-selector.d.ts.map +1 -0
- package/dist/orchestrator/task-selector.js +341 -0
- package/dist/orchestrator/task-selector.js.map +1 -0
- package/dist/prompts/coder.d.ts +36 -0
- package/dist/prompts/coder.d.ts.map +1 -0
- package/dist/prompts/coder.js +315 -0
- package/dist/prompts/coder.js.map +1 -0
- package/dist/prompts/prompt-helpers.d.ts +51 -0
- package/dist/prompts/prompt-helpers.d.ts.map +1 -0
- package/dist/prompts/prompt-helpers.js +312 -0
- package/dist/prompts/prompt-helpers.js.map +1 -0
- package/dist/prompts/reviewer.d.ts +40 -0
- package/dist/prompts/reviewer.d.ts.map +1 -0
- package/dist/prompts/reviewer.js +438 -0
- package/dist/prompts/reviewer.js.map +1 -0
- package/dist/providers/api-models.d.ts +65 -0
- package/dist/providers/api-models.d.ts.map +1 -0
- package/dist/providers/api-models.js +323 -0
- package/dist/providers/api-models.js.map +1 -0
- package/dist/providers/claude.d.ts +53 -0
- package/dist/providers/claude.d.ts.map +1 -0
- package/dist/providers/claude.js +229 -0
- package/dist/providers/claude.js.map +1 -0
- package/dist/providers/codex.d.ts +53 -0
- package/dist/providers/codex.d.ts.map +1 -0
- package/dist/providers/codex.js +214 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/providers/gemini.d.ts +58 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +242 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +49 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/interface.d.ts +173 -0
- package/dist/providers/interface.d.ts.map +1 -0
- package/dist/providers/interface.js +96 -0
- package/dist/providers/interface.js.map +1 -0
- package/dist/providers/invocation-logger.d.ts +114 -0
- package/dist/providers/invocation-logger.d.ts.map +1 -0
- package/dist/providers/invocation-logger.js +298 -0
- package/dist/providers/invocation-logger.js.map +1 -0
- package/dist/providers/openai.d.ts +53 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +232 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/registry.d.ts +100 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +178 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/runners/activity-log.d.ts +65 -0
- package/dist/runners/activity-log.d.ts.map +1 -0
- package/dist/runners/activity-log.js +148 -0
- package/dist/runners/activity-log.js.map +1 -0
- package/dist/runners/cron.d.ts +26 -0
- package/dist/runners/cron.d.ts.map +1 -0
- package/dist/runners/cron.js +176 -0
- package/dist/runners/cron.js.map +1 -0
- package/dist/runners/daemon.d.ts +71 -0
- package/dist/runners/daemon.d.ts.map +1 -0
- package/dist/runners/daemon.js +245 -0
- package/dist/runners/daemon.js.map +1 -0
- package/dist/runners/global-db.d.ts +31 -0
- package/dist/runners/global-db.d.ts.map +1 -0
- package/dist/runners/global-db.js +230 -0
- package/dist/runners/global-db.js.map +1 -0
- package/dist/runners/hang-detector.d.ts +38 -0
- package/dist/runners/hang-detector.d.ts.map +1 -0
- package/dist/runners/hang-detector.js +136 -0
- package/dist/runners/hang-detector.js.map +1 -0
- package/dist/runners/heartbeat.d.ts +39 -0
- package/dist/runners/heartbeat.d.ts.map +1 -0
- package/dist/runners/heartbeat.js +79 -0
- package/dist/runners/heartbeat.js.map +1 -0
- package/dist/runners/lock.d.ts +47 -0
- package/dist/runners/lock.d.ts.map +1 -0
- package/dist/runners/lock.js +150 -0
- package/dist/runners/lock.js.map +1 -0
- package/dist/runners/orchestrator-loop.d.ts +20 -0
- package/dist/runners/orchestrator-loop.d.ts.map +1 -0
- package/dist/runners/orchestrator-loop.js +285 -0
- package/dist/runners/orchestrator-loop.js.map +1 -0
- package/dist/runners/projects.d.ts +96 -0
- package/dist/runners/projects.d.ts.map +1 -0
- package/dist/runners/projects.js +255 -0
- package/dist/runners/projects.js.map +1 -0
- package/dist/runners/wakeup.d.ts +34 -0
- package/dist/runners/wakeup.d.ts.map +1 -0
- package/dist/runners/wakeup.js +291 -0
- package/dist/runners/wakeup.js.map +1 -0
- package/migrations/001_initial_schema.sql +106 -0
- package/migrations/002_add_commit_sha.sql +12 -0
- package/migrations/003_add_section_priority.sql +13 -0
- package/migrations/004_add_section_dependencies.sql +18 -0
- package/migrations/005_add_audit_actor_model.sql +10 -0
- package/migrations/006_add_task_invocations.sql +33 -0
- package/migrations/007_add_file_anchor.sql +14 -0
- package/migrations/manifest.json +62 -0
- package/package.json +49 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Provider Model Discovery
|
|
4
|
+
* Fetches available models from providers (via CLI or API)
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.checkProviderCLI = checkProviderCLI;
|
|
8
|
+
exports.getModelsForProvider = getModelsForProvider;
|
|
9
|
+
exports.getDefaultModel = getDefaultModel;
|
|
10
|
+
exports.fetchClaudeModels = fetchClaudeModels;
|
|
11
|
+
exports.fetchOpenAIModels = fetchOpenAIModels;
|
|
12
|
+
exports.fetchGeminiModels = fetchGeminiModels;
|
|
13
|
+
exports.fetchModelsForProvider = fetchModelsForProvider;
|
|
14
|
+
exports.getApiKeyEnvVar = getApiKeyEnvVar;
|
|
15
|
+
exports.hasApiKey = hasApiKey;
|
|
16
|
+
const registry_js_1 = require("./registry.js");
|
|
17
|
+
/**
|
|
18
|
+
* Check if provider CLI is available
|
|
19
|
+
* Uses the provider registry to verify CLI availability
|
|
20
|
+
*/
|
|
21
|
+
async function checkProviderCLI(provider) {
|
|
22
|
+
const registry = (0, registry_js_1.getProviderRegistry)();
|
|
23
|
+
const providerInstance = registry.tryGet(provider);
|
|
24
|
+
if (!providerInstance) {
|
|
25
|
+
return {
|
|
26
|
+
name: provider,
|
|
27
|
+
displayName: provider,
|
|
28
|
+
available: false,
|
|
29
|
+
models: [],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const available = await providerInstance.isAvailable();
|
|
33
|
+
return {
|
|
34
|
+
name: providerInstance.name,
|
|
35
|
+
displayName: providerInstance.displayName,
|
|
36
|
+
available,
|
|
37
|
+
cliPath: providerInstance.getCliPath(),
|
|
38
|
+
models: providerInstance.listModels(),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get models for a provider from the registry (CLI-based)
|
|
43
|
+
* Does not require API keys - uses hardcoded model lists from provider implementations
|
|
44
|
+
*/
|
|
45
|
+
function getModelsForProvider(provider) {
|
|
46
|
+
const registry = (0, registry_js_1.getProviderRegistry)();
|
|
47
|
+
const providerInstance = registry.tryGet(provider);
|
|
48
|
+
if (!providerInstance) {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
const modelInfo = providerInstance.getModelInfo();
|
|
52
|
+
return modelInfo.map((m) => ({
|
|
53
|
+
id: m.id,
|
|
54
|
+
name: m.name,
|
|
55
|
+
recommendedFor: m.recommendedFor,
|
|
56
|
+
supportsStreaming: m.supportsStreaming,
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get the default model for a provider and role
|
|
61
|
+
*/
|
|
62
|
+
function getDefaultModel(provider, role) {
|
|
63
|
+
const registry = (0, registry_js_1.getProviderRegistry)();
|
|
64
|
+
const providerInstance = registry.tryGet(provider);
|
|
65
|
+
return providerInstance?.getDefaultModel(role);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Fetch models from Anthropic API
|
|
69
|
+
* Uses ANTHROPIC_API_KEY environment variable
|
|
70
|
+
*/
|
|
71
|
+
async function fetchClaudeModels() {
|
|
72
|
+
const apiKey = process.env.ANTHROPIC_API_KEY;
|
|
73
|
+
if (!apiKey) {
|
|
74
|
+
return {
|
|
75
|
+
success: false,
|
|
76
|
+
models: [],
|
|
77
|
+
error: 'ANTHROPIC_API_KEY not set',
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const response = await fetch('https://api.anthropic.com/v1/models', {
|
|
82
|
+
method: 'GET',
|
|
83
|
+
headers: {
|
|
84
|
+
'x-api-key': apiKey,
|
|
85
|
+
'anthropic-version': '2023-06-01',
|
|
86
|
+
'Content-Type': 'application/json',
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
if (!response.ok) {
|
|
90
|
+
const text = await response.text();
|
|
91
|
+
return {
|
|
92
|
+
success: false,
|
|
93
|
+
models: [],
|
|
94
|
+
error: `API error: ${response.status} - ${text}`,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const data = (await response.json());
|
|
98
|
+
const models = data.data.map((m) => ({
|
|
99
|
+
id: m.id,
|
|
100
|
+
name: m.display_name ?? m.id,
|
|
101
|
+
created: m.created_at ? new Date(m.created_at) : undefined,
|
|
102
|
+
}));
|
|
103
|
+
// Sort by name, putting claude-3.5 and claude-4 first
|
|
104
|
+
models.sort((a, b) => {
|
|
105
|
+
const aScore = a.id.includes('claude-4') ? 0 : a.id.includes('claude-3-5') ? 1 : 2;
|
|
106
|
+
const bScore = b.id.includes('claude-4') ? 0 : b.id.includes('claude-3-5') ? 1 : 2;
|
|
107
|
+
if (aScore !== bScore)
|
|
108
|
+
return aScore - bScore;
|
|
109
|
+
return a.name.localeCompare(b.name);
|
|
110
|
+
});
|
|
111
|
+
return { success: true, models };
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
return {
|
|
115
|
+
success: false,
|
|
116
|
+
models: [],
|
|
117
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Fetch models from OpenAI API
|
|
123
|
+
* Uses OPENAI_API_KEY environment variable
|
|
124
|
+
*/
|
|
125
|
+
async function fetchOpenAIModels() {
|
|
126
|
+
const apiKey = process.env.OPENAI_API_KEY;
|
|
127
|
+
if (!apiKey) {
|
|
128
|
+
return {
|
|
129
|
+
success: false,
|
|
130
|
+
models: [],
|
|
131
|
+
error: 'OPENAI_API_KEY not set',
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const response = await fetch('https://api.openai.com/v1/models', {
|
|
136
|
+
method: 'GET',
|
|
137
|
+
headers: {
|
|
138
|
+
Authorization: `Bearer ${apiKey}`,
|
|
139
|
+
'Content-Type': 'application/json',
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
if (!response.ok) {
|
|
143
|
+
const text = await response.text();
|
|
144
|
+
return {
|
|
145
|
+
success: false,
|
|
146
|
+
models: [],
|
|
147
|
+
error: `API error: ${response.status} - ${text}`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const data = (await response.json());
|
|
151
|
+
// Filter to chat models (gpt-4, gpt-3.5, o1, etc.)
|
|
152
|
+
const chatModels = data.data.filter((m) => m.id.startsWith('gpt-4') ||
|
|
153
|
+
m.id.startsWith('gpt-3.5') ||
|
|
154
|
+
m.id.startsWith('o1') ||
|
|
155
|
+
m.id.startsWith('o3'));
|
|
156
|
+
const models = chatModels.map((m) => ({
|
|
157
|
+
id: m.id,
|
|
158
|
+
name: formatOpenAIModelName(m.id),
|
|
159
|
+
created: m.created ? new Date(m.created * 1000) : undefined,
|
|
160
|
+
}));
|
|
161
|
+
// Sort by model family and version
|
|
162
|
+
models.sort((a, b) => {
|
|
163
|
+
const aScore = getOpenAIModelScore(a.id);
|
|
164
|
+
const bScore = getOpenAIModelScore(b.id);
|
|
165
|
+
if (aScore !== bScore)
|
|
166
|
+
return aScore - bScore;
|
|
167
|
+
return a.id.localeCompare(b.id);
|
|
168
|
+
});
|
|
169
|
+
return { success: true, models };
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
return {
|
|
173
|
+
success: false,
|
|
174
|
+
models: [],
|
|
175
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function formatOpenAIModelName(id) {
|
|
180
|
+
if (id.startsWith('gpt-4o'))
|
|
181
|
+
return `GPT-4o ${id.replace('gpt-4o', '').replace(/-/g, ' ').trim()}`.trim();
|
|
182
|
+
if (id.startsWith('gpt-4-turbo'))
|
|
183
|
+
return 'GPT-4 Turbo';
|
|
184
|
+
if (id.startsWith('gpt-4'))
|
|
185
|
+
return `GPT-4 ${id.replace('gpt-4', '').replace(/-/g, ' ').trim()}`.trim();
|
|
186
|
+
if (id.startsWith('gpt-3.5-turbo'))
|
|
187
|
+
return 'GPT-3.5 Turbo';
|
|
188
|
+
if (id.startsWith('o1'))
|
|
189
|
+
return `O1 ${id.replace('o1', '').replace(/-/g, ' ').trim()}`.trim();
|
|
190
|
+
if (id.startsWith('o3'))
|
|
191
|
+
return `O3 ${id.replace('o3', '').replace(/-/g, ' ').trim()}`.trim();
|
|
192
|
+
return id;
|
|
193
|
+
}
|
|
194
|
+
function getOpenAIModelScore(id) {
|
|
195
|
+
if (id.startsWith('o3'))
|
|
196
|
+
return 0;
|
|
197
|
+
if (id.startsWith('o1'))
|
|
198
|
+
return 1;
|
|
199
|
+
if (id.startsWith('gpt-4o'))
|
|
200
|
+
return 2;
|
|
201
|
+
if (id.startsWith('gpt-4-turbo'))
|
|
202
|
+
return 3;
|
|
203
|
+
if (id.startsWith('gpt-4'))
|
|
204
|
+
return 4;
|
|
205
|
+
if (id.startsWith('gpt-3.5'))
|
|
206
|
+
return 5;
|
|
207
|
+
return 6;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Fetch models from Google AI (Gemini) API
|
|
211
|
+
* Uses GOOGLE_API_KEY or GEMINI_API_KEY environment variable
|
|
212
|
+
*/
|
|
213
|
+
async function fetchGeminiModels() {
|
|
214
|
+
const apiKey = process.env.GOOGLE_API_KEY ?? process.env.GEMINI_API_KEY;
|
|
215
|
+
if (!apiKey) {
|
|
216
|
+
return {
|
|
217
|
+
success: false,
|
|
218
|
+
models: [],
|
|
219
|
+
error: 'GOOGLE_API_KEY or GEMINI_API_KEY not set',
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models?key=${apiKey}`, {
|
|
224
|
+
method: 'GET',
|
|
225
|
+
headers: {
|
|
226
|
+
'Content-Type': 'application/json',
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
if (!response.ok) {
|
|
230
|
+
const text = await response.text();
|
|
231
|
+
return {
|
|
232
|
+
success: false,
|
|
233
|
+
models: [],
|
|
234
|
+
error: `API error: ${response.status} - ${text}`,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
const data = (await response.json());
|
|
238
|
+
// Filter to generative models that support generateContent
|
|
239
|
+
const generativeModels = data.models.filter((m) => m.supportedGenerationMethods?.includes('generateContent') &&
|
|
240
|
+
m.name.includes('gemini'));
|
|
241
|
+
const models = generativeModels.map((m) => {
|
|
242
|
+
// Extract model ID from full name (models/gemini-pro -> gemini-pro)
|
|
243
|
+
const id = m.name.replace('models/', '');
|
|
244
|
+
return {
|
|
245
|
+
id,
|
|
246
|
+
name: m.displayName ?? id,
|
|
247
|
+
description: m.description,
|
|
248
|
+
contextWindow: m.inputTokenLimit,
|
|
249
|
+
};
|
|
250
|
+
});
|
|
251
|
+
// Sort by model tier
|
|
252
|
+
models.sort((a, b) => {
|
|
253
|
+
const aScore = getGeminiModelScore(a.id);
|
|
254
|
+
const bScore = getGeminiModelScore(b.id);
|
|
255
|
+
if (aScore !== bScore)
|
|
256
|
+
return aScore - bScore;
|
|
257
|
+
return a.name.localeCompare(b.name);
|
|
258
|
+
});
|
|
259
|
+
return { success: true, models };
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
return {
|
|
263
|
+
success: false,
|
|
264
|
+
models: [],
|
|
265
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
function getGeminiModelScore(id) {
|
|
270
|
+
if (id.includes('ultra'))
|
|
271
|
+
return 0;
|
|
272
|
+
if (id.includes('pro'))
|
|
273
|
+
return 1;
|
|
274
|
+
if (id.includes('flash'))
|
|
275
|
+
return 2;
|
|
276
|
+
return 3;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Fetch models for a specific provider
|
|
280
|
+
*/
|
|
281
|
+
async function fetchModelsForProvider(provider) {
|
|
282
|
+
switch (provider) {
|
|
283
|
+
case 'claude':
|
|
284
|
+
return fetchClaudeModels();
|
|
285
|
+
case 'openai':
|
|
286
|
+
return fetchOpenAIModels();
|
|
287
|
+
case 'gemini':
|
|
288
|
+
return fetchGeminiModels();
|
|
289
|
+
default:
|
|
290
|
+
return {
|
|
291
|
+
success: false,
|
|
292
|
+
models: [],
|
|
293
|
+
error: `Unknown provider: ${provider}`,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Get the environment variable name for a provider's API key
|
|
299
|
+
*/
|
|
300
|
+
function getApiKeyEnvVar(provider) {
|
|
301
|
+
switch (provider) {
|
|
302
|
+
case 'claude':
|
|
303
|
+
return 'ANTHROPIC_API_KEY';
|
|
304
|
+
case 'openai':
|
|
305
|
+
return 'OPENAI_API_KEY';
|
|
306
|
+
case 'gemini':
|
|
307
|
+
return 'GOOGLE_API_KEY';
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Check if API key is set for a provider
|
|
312
|
+
*/
|
|
313
|
+
function hasApiKey(provider) {
|
|
314
|
+
switch (provider) {
|
|
315
|
+
case 'claude':
|
|
316
|
+
return !!process.env.ANTHROPIC_API_KEY;
|
|
317
|
+
case 'openai':
|
|
318
|
+
return !!process.env.OPENAI_API_KEY;
|
|
319
|
+
case 'gemini':
|
|
320
|
+
return !!(process.env.GOOGLE_API_KEY ?? process.env.GEMINI_API_KEY);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=api-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-models.js","sourceRoot":"","sources":["../../src/providers/api-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Provider
|
|
3
|
+
* Implementation for Anthropic's Claude CLI
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAIProvider, type InvokeOptions, type InvokeResult, type ModelInfo } from './interface.js';
|
|
6
|
+
/**
|
|
7
|
+
* Claude AI Provider implementation
|
|
8
|
+
*/
|
|
9
|
+
export declare class ClaudeProvider extends BaseAIProvider {
|
|
10
|
+
readonly name = "claude";
|
|
11
|
+
readonly displayName = "Anthropic Claude";
|
|
12
|
+
/**
|
|
13
|
+
* Write prompt to a temporary file
|
|
14
|
+
*/
|
|
15
|
+
private writePromptFile;
|
|
16
|
+
/**
|
|
17
|
+
* Clean up temporary prompt file
|
|
18
|
+
*/
|
|
19
|
+
private cleanupPromptFile;
|
|
20
|
+
/**
|
|
21
|
+
* Invoke Claude CLI with a prompt
|
|
22
|
+
*/
|
|
23
|
+
invoke(prompt: string, options: InvokeOptions): Promise<InvokeResult>;
|
|
24
|
+
/**
|
|
25
|
+
* Invoke Claude CLI with a prompt file using the invocation template
|
|
26
|
+
*/
|
|
27
|
+
private invokeWithFile;
|
|
28
|
+
/**
|
|
29
|
+
* Check if Claude CLI is available
|
|
30
|
+
*/
|
|
31
|
+
isAvailable(): Promise<boolean>;
|
|
32
|
+
/**
|
|
33
|
+
* List available model IDs
|
|
34
|
+
*/
|
|
35
|
+
listModels(): string[];
|
|
36
|
+
/**
|
|
37
|
+
* Get detailed model information
|
|
38
|
+
*/
|
|
39
|
+
getModelInfo(): ModelInfo[];
|
|
40
|
+
/**
|
|
41
|
+
* Get the default model for a role
|
|
42
|
+
*/
|
|
43
|
+
getDefaultModel(role: 'orchestrator' | 'coder' | 'reviewer'): string;
|
|
44
|
+
/**
|
|
45
|
+
* Get the default invocation template for Claude CLI
|
|
46
|
+
*/
|
|
47
|
+
getDefaultInvocationTemplate(): string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Create a Claude provider instance
|
|
51
|
+
*/
|
|
52
|
+
export declare function createClaudeProvider(): ClaudeProvider;
|
|
53
|
+
//# sourceMappingURL=claude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AA+CxB;;GAEG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,sBAAsB;IAE1C;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAwB3E;;OAEG;IACH,OAAO,CAAC,cAAc;IAiFtB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAyBrC;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;OAEG;IACH,YAAY,IAAI,SAAS,EAAE;IAI3B;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM;IAIpE;;OAEG;IACH,4BAA4B,IAAI,MAAM;CAGvC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Claude Provider
|
|
4
|
+
* Implementation for Anthropic's Claude CLI
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ClaudeProvider = void 0;
|
|
8
|
+
exports.createClaudeProvider = createClaudeProvider;
|
|
9
|
+
const node_child_process_1 = require("node:child_process");
|
|
10
|
+
const node_fs_1 = require("node:fs");
|
|
11
|
+
const node_os_1 = require("node:os");
|
|
12
|
+
const node_path_1 = require("node:path");
|
|
13
|
+
const interface_js_1 = require("./interface.js");
|
|
14
|
+
/**
|
|
15
|
+
* Available Claude models
|
|
16
|
+
* Use aliases (sonnet, opus, haiku) for latest versions
|
|
17
|
+
*/
|
|
18
|
+
const CLAUDE_MODELS = [
|
|
19
|
+
{
|
|
20
|
+
id: 'opus',
|
|
21
|
+
name: 'Claude Opus (latest)',
|
|
22
|
+
recommendedFor: ['orchestrator', 'reviewer'],
|
|
23
|
+
supportsStreaming: true,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: 'sonnet',
|
|
27
|
+
name: 'Claude Sonnet (latest)',
|
|
28
|
+
recommendedFor: ['coder'],
|
|
29
|
+
supportsStreaming: true,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: 'haiku',
|
|
33
|
+
name: 'Claude Haiku (latest)',
|
|
34
|
+
recommendedFor: [],
|
|
35
|
+
supportsStreaming: true,
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* Default models per role
|
|
40
|
+
*/
|
|
41
|
+
const DEFAULT_MODELS = {
|
|
42
|
+
orchestrator: 'opus',
|
|
43
|
+
coder: 'sonnet',
|
|
44
|
+
reviewer: 'opus',
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Default timeout in milliseconds (15 minutes)
|
|
48
|
+
*/
|
|
49
|
+
const DEFAULT_TIMEOUT = 900_000;
|
|
50
|
+
/**
|
|
51
|
+
* Default invocation template for Claude CLI
|
|
52
|
+
* Uses -p flag for print mode with prompt from file via shell substitution
|
|
53
|
+
*/
|
|
54
|
+
const DEFAULT_INVOCATION_TEMPLATE = '{cli} -p "$(cat {prompt_file})" --model {model}';
|
|
55
|
+
/**
|
|
56
|
+
* Claude AI Provider implementation
|
|
57
|
+
*/
|
|
58
|
+
class ClaudeProvider extends interface_js_1.BaseAIProvider {
|
|
59
|
+
name = 'claude';
|
|
60
|
+
displayName = 'Anthropic Claude';
|
|
61
|
+
/**
|
|
62
|
+
* Write prompt to a temporary file
|
|
63
|
+
*/
|
|
64
|
+
writePromptFile(prompt) {
|
|
65
|
+
const tempPath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `steroids-claude-${Date.now()}.txt`);
|
|
66
|
+
(0, node_fs_1.writeFileSync)(tempPath, prompt, { mode: 0o600 });
|
|
67
|
+
return tempPath;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Clean up temporary prompt file
|
|
71
|
+
*/
|
|
72
|
+
cleanupPromptFile(path) {
|
|
73
|
+
try {
|
|
74
|
+
if ((0, node_fs_1.existsSync)(path)) {
|
|
75
|
+
(0, node_fs_1.unlinkSync)(path);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Ignore cleanup errors
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Invoke Claude CLI with a prompt
|
|
84
|
+
*/
|
|
85
|
+
async invoke(prompt, options) {
|
|
86
|
+
const timeout = options.timeout ?? DEFAULT_TIMEOUT;
|
|
87
|
+
const cwd = options.cwd ?? process.cwd();
|
|
88
|
+
const model = options.model;
|
|
89
|
+
const streamOutput = options.streamOutput ?? true;
|
|
90
|
+
// Apply custom invocation template if provided in options
|
|
91
|
+
if (options.invocationTemplate) {
|
|
92
|
+
this.setInvocationTemplate(options.invocationTemplate);
|
|
93
|
+
}
|
|
94
|
+
// Write prompt to temp file
|
|
95
|
+
const promptFile = options.promptFile ?? this.writePromptFile(prompt);
|
|
96
|
+
const createdTempFile = !options.promptFile;
|
|
97
|
+
try {
|
|
98
|
+
return await this.invokeWithFile(promptFile, model, timeout, cwd, streamOutput);
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
if (createdTempFile) {
|
|
102
|
+
this.cleanupPromptFile(promptFile);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Invoke Claude CLI with a prompt file using the invocation template
|
|
108
|
+
*/
|
|
109
|
+
invokeWithFile(promptFile, model, timeout, cwd, streamOutput) {
|
|
110
|
+
return new Promise((resolve) => {
|
|
111
|
+
const startTime = Date.now();
|
|
112
|
+
let stdout = '';
|
|
113
|
+
let stderr = '';
|
|
114
|
+
let timedOut = false;
|
|
115
|
+
// Build command from invocation template
|
|
116
|
+
const command = this.buildCommand(promptFile, model);
|
|
117
|
+
// Spawn using shell to handle the command template
|
|
118
|
+
const child = (0, node_child_process_1.spawn)(command, {
|
|
119
|
+
shell: true,
|
|
120
|
+
cwd,
|
|
121
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
122
|
+
});
|
|
123
|
+
const timeoutHandle = setTimeout(() => {
|
|
124
|
+
timedOut = true;
|
|
125
|
+
child.kill('SIGTERM');
|
|
126
|
+
// Force kill after 5 seconds if still running
|
|
127
|
+
setTimeout(() => {
|
|
128
|
+
if (!child.killed) {
|
|
129
|
+
child.kill('SIGKILL');
|
|
130
|
+
}
|
|
131
|
+
}, 5000);
|
|
132
|
+
}, timeout);
|
|
133
|
+
child.stdout?.on('data', (data) => {
|
|
134
|
+
const text = data.toString();
|
|
135
|
+
stdout += text;
|
|
136
|
+
// Stream output in real-time if enabled
|
|
137
|
+
if (streamOutput) {
|
|
138
|
+
process.stdout.write(text);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
child.stderr?.on('data', (data) => {
|
|
142
|
+
const text = data.toString();
|
|
143
|
+
stderr += text;
|
|
144
|
+
if (streamOutput) {
|
|
145
|
+
process.stderr.write(text);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
child.on('close', (code) => {
|
|
149
|
+
clearTimeout(timeoutHandle);
|
|
150
|
+
const duration = Date.now() - startTime;
|
|
151
|
+
resolve({
|
|
152
|
+
success: code === 0 && !timedOut,
|
|
153
|
+
exitCode: code ?? 1,
|
|
154
|
+
stdout,
|
|
155
|
+
stderr,
|
|
156
|
+
duration,
|
|
157
|
+
timedOut,
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
child.on('error', (error) => {
|
|
161
|
+
clearTimeout(timeoutHandle);
|
|
162
|
+
const duration = Date.now() - startTime;
|
|
163
|
+
resolve({
|
|
164
|
+
success: false,
|
|
165
|
+
exitCode: 1,
|
|
166
|
+
stdout,
|
|
167
|
+
stderr: error.message,
|
|
168
|
+
duration,
|
|
169
|
+
timedOut: false,
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Check if Claude CLI is available
|
|
176
|
+
*/
|
|
177
|
+
async isAvailable() {
|
|
178
|
+
return new Promise((resolve) => {
|
|
179
|
+
const cli = this.cliPath ?? 'claude';
|
|
180
|
+
const child = (0, node_child_process_1.spawn)('which', [cli], {
|
|
181
|
+
shell: true,
|
|
182
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
183
|
+
});
|
|
184
|
+
child.on('close', (code) => {
|
|
185
|
+
resolve(code === 0);
|
|
186
|
+
});
|
|
187
|
+
child.on('error', () => {
|
|
188
|
+
resolve(false);
|
|
189
|
+
});
|
|
190
|
+
// Timeout after 5 seconds
|
|
191
|
+
setTimeout(() => {
|
|
192
|
+
child.kill();
|
|
193
|
+
resolve(false);
|
|
194
|
+
}, 5000);
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* List available model IDs
|
|
199
|
+
*/
|
|
200
|
+
listModels() {
|
|
201
|
+
return CLAUDE_MODELS.map((m) => m.id);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get detailed model information
|
|
205
|
+
*/
|
|
206
|
+
getModelInfo() {
|
|
207
|
+
return [...CLAUDE_MODELS];
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get the default model for a role
|
|
211
|
+
*/
|
|
212
|
+
getDefaultModel(role) {
|
|
213
|
+
return DEFAULT_MODELS[role];
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get the default invocation template for Claude CLI
|
|
217
|
+
*/
|
|
218
|
+
getDefaultInvocationTemplate() {
|
|
219
|
+
return DEFAULT_INVOCATION_TEMPLATE;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
exports.ClaudeProvider = ClaudeProvider;
|
|
223
|
+
/**
|
|
224
|
+
* Create a Claude provider instance
|
|
225
|
+
*/
|
|
226
|
+
function createClaudeProvider() {
|
|
227
|
+
return new ClaudeProvider();
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkQH,oDAEC;AAlQD,2DAA2C;AAC3C,qCAAgE;AAChE,qCAAiC;AACjC,yCAAiC;AACjC,iDAKwB;AAExB;;;GAGG;AACH,MAAM,aAAa,GAAgB;IACjC;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,sBAAsB;QAC5B,cAAc,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;QAC5C,iBAAiB,EAAE,IAAI;KACxB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,wBAAwB;QAC9B,cAAc,EAAE,CAAC,OAAO,CAAC;QACzB,iBAAiB,EAAE,IAAI;KACxB;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,uBAAuB;QAC7B,cAAc,EAAE,EAAE;QAClB,iBAAiB,EAAE,IAAI;KACxB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAA0D;IAC5E,YAAY,EAAE,MAAM;IACpB,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,MAAM;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC;;;GAGG;AACH,MAAM,2BAA2B,GAAG,iDAAiD,CAAC;AAEtF;;GAEG;AACH,MAAa,cAAe,SAAQ,6BAAc;IACvC,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,kBAAkB,CAAC;IAE1C;;OAEG;IACK,eAAe,CAAC,MAAc;QACpC,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,mBAAmB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrE,IAAA,uBAAa,EAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAY;QACpC,IAAI,CAAC;YACH,IAAI,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAA,oBAAU,EAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,OAAsB;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;QACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QAElD,0DAA0D;QAC1D,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACzD,CAAC;QAED,4BAA4B;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,eAAe,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;QAE5C,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAClF,CAAC;gBAAS,CAAC;YACT,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,UAAkB,EAClB,KAAa,EACb,OAAe,EACf,GAAW,EACX,YAAqB;QAErB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,yCAAyC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAErD,mDAAmD;YACnD,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,OAAO,EAAE;gBAC3B,KAAK,EAAE,IAAI;gBACX,GAAG;gBACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;gBACpC,QAAQ,GAAG,IAAI,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtB,8CAA8C;gBAC9C,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;wBAClB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,IAAI,CAAC;gBACf,wCAAwC;gBACxC,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,IAAI,CAAC;gBACf,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAExC,OAAO,CAAC;oBACN,OAAO,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ;oBAChC,QAAQ,EAAE,IAAI,IAAI,CAAC;oBACnB,MAAM;oBACN,MAAM;oBACN,QAAQ;oBACR,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC1B,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAExC,OAAO,CAAC;oBACN,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,CAAC;oBACX,MAAM;oBACN,MAAM,EAAE,KAAK,CAAC,OAAO;oBACrB,QAAQ;oBACR,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC;YAErC,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;gBAClC,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,0BAA0B;YAC1B,UAAU,CAAC,GAAG,EAAE;gBACd,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAA2C;QACzD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,4BAA4B;QAC1B,OAAO,2BAA2B,CAAC;IACrC,CAAC;CACF;AAhMD,wCAgMC;AAED;;GAEG;AACH,SAAgB,oBAAoB;IAClC,OAAO,IAAI,cAAc,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex Provider
|
|
3
|
+
* Implementation for OpenAI Codex CLI
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAIProvider, type InvokeOptions, type InvokeResult, type ModelInfo } from './interface.js';
|
|
6
|
+
/**
|
|
7
|
+
* Codex AI Provider implementation
|
|
8
|
+
*/
|
|
9
|
+
export declare class CodexProvider extends BaseAIProvider {
|
|
10
|
+
readonly name = "codex";
|
|
11
|
+
readonly displayName = "OpenAI Codex";
|
|
12
|
+
/**
|
|
13
|
+
* Write prompt to a temporary file
|
|
14
|
+
*/
|
|
15
|
+
private writePromptFile;
|
|
16
|
+
/**
|
|
17
|
+
* Clean up temporary prompt file
|
|
18
|
+
*/
|
|
19
|
+
private cleanupPromptFile;
|
|
20
|
+
/**
|
|
21
|
+
* Get the default invocation template
|
|
22
|
+
*/
|
|
23
|
+
getDefaultInvocationTemplate(): string;
|
|
24
|
+
/**
|
|
25
|
+
* Invoke Codex CLI with a prompt
|
|
26
|
+
*/
|
|
27
|
+
invoke(prompt: string, options: InvokeOptions): Promise<InvokeResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Invoke Codex CLI with a prompt file using the invocation template
|
|
30
|
+
*/
|
|
31
|
+
private invokeWithFile;
|
|
32
|
+
/**
|
|
33
|
+
* Check if Codex CLI is available
|
|
34
|
+
*/
|
|
35
|
+
isAvailable(): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* List available model IDs
|
|
38
|
+
*/
|
|
39
|
+
listModels(): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Get detailed model information
|
|
42
|
+
*/
|
|
43
|
+
getModelInfo(): ModelInfo[];
|
|
44
|
+
/**
|
|
45
|
+
* Get the default model for a role
|
|
46
|
+
*/
|
|
47
|
+
getDefaultModel(role: 'orchestrator' | 'coder' | 'reviewer'): string | undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Create a Codex provider instance
|
|
51
|
+
*/
|
|
52
|
+
export declare function createCodexProvider(): CodexProvider;
|
|
53
|
+
//# sourceMappingURL=codex.d.ts.map
|