@su-record/vibe 2.11.0 → 2.12.1
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/README.en.md +23 -28
- package/README.md +10 -9
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +12 -12
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/commands/codex-proxy.d.ts +1 -1
- package/dist/cli/commands/codex-proxy.js +11 -11
- package/dist/cli/commands/codex-proxy.js.map +1 -1
- package/dist/cli/commands/config.d.ts +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +22 -21
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/info.js +2 -2
- package/dist/cli/commands/init.d.ts +2 -2
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +20 -16
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +1 -1
- package/dist/cli/commands/setup.js +24 -24
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +8 -7
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +28 -16
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +22 -23
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/antigravity-commands.d.ts +25 -0
- package/dist/cli/llm/antigravity-commands.d.ts.map +1 -0
- package/dist/cli/llm/antigravity-commands.js +142 -0
- package/dist/cli/llm/antigravity-commands.js.map +1 -0
- package/dist/cli/llm/claude-commands.d.ts.map +1 -1
- package/dist/cli/llm/claude-commands.js +3 -1
- package/dist/cli/llm/claude-commands.js.map +1 -1
- package/dist/cli/llm/config.js +7 -7
- package/dist/cli/llm/config.js.map +1 -1
- package/dist/cli/llm/gemini-commands.d.ts.map +1 -1
- package/dist/cli/llm/gemini-commands.js +7 -4
- package/dist/cli/llm/gemini-commands.js.map +1 -1
- package/dist/cli/llm/gpt-commands.d.ts.map +1 -1
- package/dist/cli/llm/gpt-commands.js +3 -3
- package/dist/cli/llm/gpt-commands.js.map +1 -1
- package/dist/cli/llm/help.js +4 -4
- package/dist/cli/llm/index.d.ts +1 -1
- package/dist/cli/llm/index.d.ts.map +1 -1
- package/dist/cli/llm/index.js +1 -1
- package/dist/cli/llm/index.js.map +1 -1
- package/dist/cli/llm.d.ts +2 -2
- package/dist/cli/llm.js +2 -2
- package/dist/cli/postinstall/constants.js +6 -6
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/inline-skills.js +5 -5
- package/dist/cli/postinstall/inline-skills.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +14 -9
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/setup/CodexHooks.d.ts +20 -0
- package/dist/cli/setup/CodexHooks.d.ts.map +1 -0
- package/dist/cli/setup/CodexHooks.js +50 -0
- package/dist/cli/setup/CodexHooks.js.map +1 -0
- package/dist/cli/setup/CodexHooks.test.d.ts +2 -0
- package/dist/cli/setup/CodexHooks.test.d.ts.map +1 -0
- package/dist/cli/setup/CodexHooks.test.js +23 -0
- package/dist/cli/setup/CodexHooks.test.js.map +1 -0
- package/dist/cli/setup/LegacyMigration.js +2 -2
- package/dist/cli/setup/ProjectSetup.d.ts +4 -4
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +21 -19
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/cli/setup/index.d.ts +1 -0
- package/dist/cli/setup/index.d.ts.map +1 -1
- package/dist/cli/setup/index.js +1 -0
- package/dist/cli/setup/index.js.map +1 -1
- package/dist/cli/setup.d.ts +2 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +2 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/types.d.ts +7 -9
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/utils/cli-detector.d.ts +5 -5
- package/dist/cli/utils/cli-detector.d.ts.map +1 -1
- package/dist/cli/utils/cli-detector.js +18 -14
- package/dist/cli/utils/cli-detector.js.map +1 -1
- package/dist/cli/utils/cli-detector.test.d.ts +2 -0
- package/dist/cli/utils/cli-detector.test.d.ts.map +1 -0
- package/dist/cli/utils/cli-detector.test.js +51 -0
- package/dist/cli/utils/cli-detector.test.js.map +1 -0
- package/dist/infra/lib/ReviewRace.d.ts +4 -4
- package/dist/infra/lib/ReviewRace.d.ts.map +1 -1
- package/dist/infra/lib/ReviewRace.js +16 -16
- package/dist/infra/lib/ReviewRace.js.map +1 -1
- package/dist/infra/lib/SkillRepository.js +7 -7
- package/dist/infra/lib/antigravity/auth.d.ts +18 -0
- package/dist/infra/lib/antigravity/auth.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/auth.js +32 -0
- package/dist/infra/lib/antigravity/auth.js.map +1 -0
- package/dist/infra/lib/antigravity/capabilities.d.ts +28 -0
- package/dist/infra/lib/antigravity/capabilities.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/capabilities.js +178 -0
- package/dist/infra/lib/antigravity/capabilities.js.map +1 -0
- package/dist/infra/lib/antigravity/chat.d.ts +34 -0
- package/dist/infra/lib/antigravity/chat.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/chat.js +160 -0
- package/dist/infra/lib/antigravity/chat.js.map +1 -0
- package/dist/infra/lib/antigravity/completion.d.ts +12 -0
- package/dist/infra/lib/antigravity/completion.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/completion.js +13 -0
- package/dist/infra/lib/antigravity/completion.js.map +1 -0
- package/dist/infra/lib/antigravity/constants.d.ts +8 -0
- package/dist/infra/lib/antigravity/constants.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/constants.js +11 -0
- package/dist/infra/lib/antigravity/constants.js.map +1 -0
- package/dist/infra/lib/antigravity/index.d.ts +13 -0
- package/dist/infra/lib/antigravity/index.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/index.js +12 -0
- package/dist/infra/lib/antigravity/index.js.map +1 -0
- package/dist/infra/lib/antigravity/models.d.ts +11 -0
- package/dist/infra/lib/antigravity/models.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/models.js +38 -0
- package/dist/infra/lib/antigravity/models.js.map +1 -0
- package/dist/infra/lib/antigravity/orchestration.d.ts +33 -0
- package/dist/infra/lib/antigravity/orchestration.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/orchestration.js +62 -0
- package/dist/infra/lib/antigravity/orchestration.js.map +1 -0
- package/dist/infra/lib/antigravity/types.d.ts +115 -0
- package/dist/infra/lib/antigravity/types.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/types.js +5 -0
- package/dist/infra/lib/antigravity/types.js.map +1 -0
- package/dist/infra/lib/codex-proxy.d.ts +1 -1
- package/dist/infra/lib/codex-proxy.js +9 -9
- package/dist/infra/lib/codex-proxy.js.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.d.ts +6 -3
- package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.js +47 -37
- package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.test.d.ts +2 -0
- package/dist/infra/lib/config/GlobalConfigManager.test.d.ts.map +1 -0
- package/dist/infra/lib/config/GlobalConfigManager.test.js +9 -0
- package/dist/infra/lib/config/GlobalConfigManager.test.js.map +1 -0
- package/dist/infra/lib/constants.js +1 -1
- package/dist/infra/lib/constants.js.map +1 -1
- package/dist/infra/lib/gemini/auth.d.ts +3 -3
- package/dist/infra/lib/gemini/auth.js +9 -9
- package/dist/infra/lib/gemini/auth.js.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts +3 -3
- package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.js.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.test.js +8 -8
- package/dist/infra/lib/llm/auth/AuthProfileManager.test.js.map +1 -1
- package/dist/infra/lib/llm/auth/ConfigManager.js +2 -2
- package/dist/infra/lib/llm/auth/ConfigManager.js.map +1 -1
- package/dist/infra/lib/llm/auth/TokenRefresher.d.ts +1 -1
- package/dist/infra/lib/llm/auth/TokenRefresher.js +1 -1
- package/dist/infra/lib/llm/auth/index.js +1 -1
- package/dist/infra/lib/llm/auth/index.js.map +1 -1
- package/dist/infra/lib/llm/index.d.ts +1 -1
- package/dist/infra/lib/llm/index.js +1 -1
- package/dist/infra/lib/llm/types.d.ts +3 -3
- package/dist/infra/lib/llm/types.d.ts.map +1 -1
- package/dist/infra/lib/llm/types.js +1 -1
- package/dist/infra/lib/llm/utils/stream.js +1 -1
- package/dist/infra/lib/llm/utils/stream.js.map +1 -1
- package/dist/infra/lib/llm-availability.d.ts +5 -5
- package/dist/infra/lib/llm-availability.d.ts.map +1 -1
- package/dist/infra/lib/llm-availability.js +13 -10
- package/dist/infra/lib/llm-availability.js.map +1 -1
- package/dist/infra/lib/llm-availability.test.d.ts +2 -0
- package/dist/infra/lib/llm-availability.test.d.ts.map +1 -0
- package/dist/infra/lib/llm-availability.test.js +36 -0
- package/dist/infra/lib/llm-availability.test.js.map +1 -0
- package/dist/infra/lib/ui-ux/UiUxWorkflow.d.ts.map +1 -1
- package/dist/infra/lib/ui-ux/UiUxWorkflow.js +23 -5
- package/dist/infra/lib/ui-ux/UiUxWorkflow.js.map +1 -1
- package/dist/infra/orchestrator/AgentExecutor.d.ts.map +1 -1
- package/dist/infra/orchestrator/AgentExecutor.js +30 -1
- package/dist/infra/orchestrator/AgentExecutor.js.map +1 -1
- package/dist/infra/orchestrator/AgentManifestCache.js +1 -1
- package/dist/infra/orchestrator/AgentManifestCache.js.map +1 -1
- package/dist/infra/orchestrator/BackgroundManager.js +2 -2
- package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.d.ts +12 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.d.ts.map +1 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.js +94 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.js.map +1 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts +2 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts.map +1 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.js +37 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.js.map +1 -0
- package/dist/infra/orchestrator/LLMCluster.d.ts +11 -11
- package/dist/infra/orchestrator/LLMCluster.d.ts.map +1 -1
- package/dist/infra/orchestrator/LLMCluster.js +22 -22
- package/dist/infra/orchestrator/LLMCluster.js.map +1 -1
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts +3 -3
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts.map +1 -1
- package/dist/infra/orchestrator/MultiLlmResearch.js +17 -17
- package/dist/infra/orchestrator/MultiLlmResearch.js.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.d.ts +2 -2
- package/dist/infra/orchestrator/SmartRouter.js +7 -7
- package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.test.js +74 -74
- package/dist/infra/orchestrator/SmartRouter.test.js.map +1 -1
- package/dist/infra/orchestrator/agentDiscovery.d.ts +1 -1
- package/dist/infra/orchestrator/agentDiscovery.js +4 -4
- package/dist/infra/orchestrator/agentDiscovery.js.map +1 -1
- package/dist/infra/orchestrator/index.d.ts +17 -17
- package/dist/infra/orchestrator/index.d.ts.map +1 -1
- package/dist/infra/orchestrator/index.js +30 -30
- package/dist/infra/orchestrator/index.js.map +1 -1
- package/dist/infra/orchestrator/orchestrator.d.ts +4 -4
- package/dist/infra/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/infra/orchestrator/orchestrator.js +5 -5
- package/dist/infra/orchestrator/orchestrator.js.map +1 -1
- package/dist/infra/orchestrator/parallelResearch.d.ts.map +1 -1
- package/dist/infra/orchestrator/parallelResearch.js +11 -0
- package/dist/infra/orchestrator/parallelResearch.js.map +1 -1
- package/dist/infra/orchestrator/types.d.ts +7 -8
- package/dist/infra/orchestrator/types.d.ts.map +1 -1
- package/dist/infra/orchestrator/types.js +17 -18
- package/dist/infra/orchestrator/types.js.map +1 -1
- package/dist/tools/spec/specGenerator.d.ts +1 -1
- package/dist/tools/spec/specGenerator.js +1 -1
- package/hooks/antigravity-hooks.json +73 -0
- package/hooks/scripts/__tests__/codex-hook-adapter.test.js +31 -0
- package/hooks/scripts/__tests__/hook-payload.test.js +29 -0
- package/hooks/scripts/__tests__/llm-orchestrate-antigravity.test.js +63 -0
- package/hooks/scripts/codex-hook-adapter.js +124 -0
- package/hooks/scripts/codex-review-gate.js +7 -3
- package/hooks/scripts/devlog-gen.js +1 -1
- package/hooks/scripts/hook-payload.js +64 -0
- package/hooks/scripts/lib/dispatcher.js +20 -0
- package/hooks/scripts/llm-orchestrate.js +40 -44
- package/hooks/scripts/prompt-dispatcher.js +9 -9
- package/hooks/scripts/stop-notify.js +1 -1
- package/hooks/scripts/utils.js +1 -1
- package/package.json +1 -1
- package/skills/brand-assets/SKILL.md +11 -11
- package/skills/docs/SKILL.md +10 -5
- package/skills/event-comms/SKILL.md +1 -1
- package/skills/event-ops/SKILL.md +4 -4
- package/skills/spec/SKILL.md +29 -29
- package/skills/spec-review/SKILL.md +23 -23
- package/skills/tool-fallback/SKILL.md +2 -2
- package/skills/tool-fallback/rubrics/fallback-chain.md +2 -2
- package/skills/vibe.event/SKILL.md +1 -1
- package/skills/vibe.review/SKILL.md +13 -13
- package/skills/vibe.run/SKILL.md +30 -30
- package/skills/vibe.spec/SKILL.md +4 -4
- package/skills/vibe.utils/SKILL.md +17 -17
- package/hooks/gemini-hooks.json +0 -73
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { getModelOverride } from '../lib/config/GlobalConfigManager.js';
|
|
6
|
+
export function resolveCodexAgentModel(model) {
|
|
7
|
+
const override = getModelOverride('gptCodex') ?? process.env.GPT_CODEX_MODEL ?? process.env.CODEX_MODEL;
|
|
8
|
+
if (override)
|
|
9
|
+
return override;
|
|
10
|
+
if (!model || model.startsWith('claude'))
|
|
11
|
+
return undefined;
|
|
12
|
+
return model;
|
|
13
|
+
}
|
|
14
|
+
export function buildCodexExecArgs(options) {
|
|
15
|
+
const args = [
|
|
16
|
+
'exec',
|
|
17
|
+
'--cd',
|
|
18
|
+
options.projectPath,
|
|
19
|
+
'--sandbox',
|
|
20
|
+
'workspace-write',
|
|
21
|
+
'--output-last-message',
|
|
22
|
+
options.outputPath,
|
|
23
|
+
];
|
|
24
|
+
const model = resolveCodexAgentModel(options.model);
|
|
25
|
+
if (model)
|
|
26
|
+
args.push('--model', model);
|
|
27
|
+
args.push('-');
|
|
28
|
+
return args;
|
|
29
|
+
}
|
|
30
|
+
function buildPrompt(args) {
|
|
31
|
+
const agentName = args.agentName ? `Agent: ${args.agentName}\n\n` : '';
|
|
32
|
+
const tools = args.allowedTools?.length ? `Allowed tool intent: ${args.allowedTools.join(', ')}\n\n` : '';
|
|
33
|
+
const turns = args.maxTurns ? `Max turns: ${args.maxTurns}\n\n` : '';
|
|
34
|
+
return `${agentName}${tools}${turns}${args.prompt}`;
|
|
35
|
+
}
|
|
36
|
+
function readOutput(outputPath, stdout, stderr) {
|
|
37
|
+
try {
|
|
38
|
+
if (fs.existsSync(outputPath)) {
|
|
39
|
+
const content = fs.readFileSync(outputPath, 'utf-8').trim();
|
|
40
|
+
if (content)
|
|
41
|
+
return content;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Fall back to captured process output.
|
|
46
|
+
}
|
|
47
|
+
return `${stdout}${stderr ? `\n${stderr}` : ''}`.trim();
|
|
48
|
+
}
|
|
49
|
+
export function launchCodexBackgroundAgent(args) {
|
|
50
|
+
const agentName = args.agentName ?? `codex-agent-${Date.now()}`;
|
|
51
|
+
const projectPath = args.projectPath ?? process.cwd();
|
|
52
|
+
const startTime = Date.now();
|
|
53
|
+
const sessionId = `codex-${startTime}-${Math.random().toString(36).slice(2, 8)}`;
|
|
54
|
+
const outputPath = path.join(os.tmpdir(), `${sessionId}.txt`);
|
|
55
|
+
const codexArgs = buildCodexExecArgs({ projectPath, outputPath, model: args.model });
|
|
56
|
+
let status = 'running';
|
|
57
|
+
let child = null;
|
|
58
|
+
let stdout = '';
|
|
59
|
+
let stderr = '';
|
|
60
|
+
const resultPromise = new Promise((resolve) => {
|
|
61
|
+
child = spawn('codex', codexArgs, {
|
|
62
|
+
cwd: projectPath,
|
|
63
|
+
env: { ...process.env, VIBE_HOOK_DEPTH: '1' },
|
|
64
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
65
|
+
});
|
|
66
|
+
child.stdout.on('data', chunk => { stdout += chunk.toString(); });
|
|
67
|
+
child.stderr.on('data', chunk => { stderr += chunk.toString(); });
|
|
68
|
+
child.on('error', error => {
|
|
69
|
+
status = 'failed';
|
|
70
|
+
resolve({ agentName, sessionId, result: stdout, success: false, error: error.message, duration: Date.now() - startTime });
|
|
71
|
+
});
|
|
72
|
+
child.on('close', code => {
|
|
73
|
+
status = code === 0 ? 'completed' : 'failed';
|
|
74
|
+
const result = readOutput(outputPath, stdout, stderr);
|
|
75
|
+
resolve({ agentName, sessionId, result, success: code === 0, error: code === 0 ? undefined : result, duration: Date.now() - startTime });
|
|
76
|
+
});
|
|
77
|
+
child.stdin.end(buildPrompt(args));
|
|
78
|
+
});
|
|
79
|
+
return {
|
|
80
|
+
sessionId,
|
|
81
|
+
agentName,
|
|
82
|
+
status,
|
|
83
|
+
startTime,
|
|
84
|
+
getResult: () => resultPromise,
|
|
85
|
+
cancel: () => {
|
|
86
|
+
status = 'cancelled';
|
|
87
|
+
child?.kill();
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export async function runCodexAgentOnce(args) {
|
|
92
|
+
return launchCodexBackgroundAgent(args).getResult();
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=CodexAgentRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodexAgentRuntime.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/CodexAgentRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAuC,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAQxE,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACxG,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,MAAM,IAAI,GAAG;QACX,MAAM;QACN,MAAM;QACN,OAAO,CAAC,WAAW;QACnB,WAAW;QACX,iBAAiB;QACjB,uBAAuB;QACvB,OAAO,CAAC,UAAU;KACnB,CAAC;IACF,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,IAAyB;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,wBAAwB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1G,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,UAAU,CAAC,UAAkB,EAAE,MAAc,EAAE,MAAc;IACpE,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5D,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;IACD,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAyB;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,SAAS,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACjF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,SAAS,MAAM,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACrF,IAAI,MAAM,GAAoC,SAAS,CAAC;IACxD,IAAI,KAAK,GAA0C,IAAI,CAAC;IACxD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,MAAM,aAAa,GAAG,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,EAAE;QACzD,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE;YAChC,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE;YAC7C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YACxB,MAAM,GAAG,QAAQ,CAAC;YAClB,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;QAC5H,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACvB,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACtD,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;QAC3I,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;QACT,SAAS;QACT,MAAM;QACN,SAAS;QACT,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa;QAC9B,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,GAAG,WAAW,CAAC;YACrB,KAAK,EAAE,IAAI,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAyB;IAC/D,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodexAgentRuntime.test.d.ts","sourceRoot":"","sources":["../../../src/infra/orchestrator/CodexAgentRuntime.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
+
import { buildCodexExecArgs, resolveCodexAgentModel } from './CodexAgentRuntime.js';
|
|
3
|
+
describe('CodexAgentRuntime', () => {
|
|
4
|
+
const originalModel = process.env.GPT_CODEX_MODEL;
|
|
5
|
+
afterEach(() => {
|
|
6
|
+
if (originalModel === undefined) {
|
|
7
|
+
delete process.env.GPT_CODEX_MODEL;
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
process.env.GPT_CODEX_MODEL = originalModel;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
it('builds non-interactive codex exec args for a project workspace', () => {
|
|
14
|
+
const args = buildCodexExecArgs({
|
|
15
|
+
projectPath: '/repo',
|
|
16
|
+
outputPath: '/tmp/result.txt',
|
|
17
|
+
model: 'gpt-5.3-codex',
|
|
18
|
+
});
|
|
19
|
+
expect(args).toEqual([
|
|
20
|
+
'exec',
|
|
21
|
+
'--cd',
|
|
22
|
+
'/repo',
|
|
23
|
+
'--sandbox',
|
|
24
|
+
'workspace-write',
|
|
25
|
+
'--output-last-message',
|
|
26
|
+
'/tmp/result.txt',
|
|
27
|
+
'--model',
|
|
28
|
+
'gpt-5.3-codex',
|
|
29
|
+
'-',
|
|
30
|
+
]);
|
|
31
|
+
});
|
|
32
|
+
it('does not pass Claude model names through to Codex', () => {
|
|
33
|
+
delete process.env.GPT_CODEX_MODEL;
|
|
34
|
+
expect(resolveCodexAgentModel('claude-sonnet-4-5')).toBeUndefined();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=CodexAgentRuntime.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodexAgentRuntime.test.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/CodexAgentRuntime.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEpF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,aAAa,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,IAAI,GAAG,kBAAkB,CAAC;YAC9B,WAAW,EAAE,OAAO;YACpB,UAAU,EAAE,iBAAiB;YAC7B,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACnB,MAAM;YACN,MAAM;YACN,OAAO;YACP,WAAW;YACX,iBAAiB;YACjB,uBAAuB;YACvB,iBAAiB;YACjB,SAAS;YACT,eAAe;YACf,GAAG;SACJ,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAEnC,MAAM,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* LLMCluster - Multi-LLM 병렬 쿼리 및 상태 관리
|
|
3
|
-
* GPT,
|
|
3
|
+
* GPT, Antigravity, Claude 지원
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Multi-LLM 쿼리 결과
|
|
7
7
|
*/
|
|
8
8
|
export interface MultiLlmQueryResult {
|
|
9
9
|
gpt?: string;
|
|
10
|
-
|
|
10
|
+
antigravity?: string;
|
|
11
11
|
claude?: string;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
@@ -17,7 +17,7 @@ export interface LlmStatusResult {
|
|
|
17
17
|
gpt: {
|
|
18
18
|
available: boolean;
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
antigravity: {
|
|
21
21
|
available: boolean;
|
|
22
22
|
};
|
|
23
23
|
claude: {
|
|
@@ -31,7 +31,7 @@ export interface LLMClusterOptions {
|
|
|
31
31
|
defaultSystemPrompt?: string;
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
* LLMCluster - GPT /
|
|
34
|
+
* LLMCluster - GPT / Antigravity / Claude 병렬 쿼리 및 상태 관리
|
|
35
35
|
*/
|
|
36
36
|
export declare class LLMCluster {
|
|
37
37
|
private defaultSystemPrompt;
|
|
@@ -47,18 +47,18 @@ export declare class LLMCluster {
|
|
|
47
47
|
jsonMode?: boolean;
|
|
48
48
|
}): Promise<string>;
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* Antigravity 오케스트레이션
|
|
51
51
|
*/
|
|
52
|
-
|
|
52
|
+
antigravityOrchestrate(prompt: string, systemPrompt?: string, options?: {
|
|
53
53
|
jsonMode?: boolean;
|
|
54
54
|
}): Promise<string>;
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
56
|
+
* Antigravity 웹 검색
|
|
57
57
|
*/
|
|
58
|
-
|
|
58
|
+
antigravityWebSearch(query: string): Promise<string>;
|
|
59
59
|
/**
|
|
60
|
-
* GPT 웹 검색 (
|
|
61
|
-
* @deprecated GPT Codex API는 웹 검색을 지원하지 않습니다.
|
|
60
|
+
* GPT 웹 검색 (Antigravity로 위임)
|
|
61
|
+
* @deprecated GPT Codex API는 웹 검색을 지원하지 않습니다. antigravityWebSearch를 사용하세요.
|
|
62
62
|
*/
|
|
63
63
|
gptWebSearch(query: string): Promise<string>;
|
|
64
64
|
/**
|
|
@@ -66,7 +66,7 @@ export declare class LLMCluster {
|
|
|
66
66
|
*/
|
|
67
67
|
multiQuery(prompt: string, options?: {
|
|
68
68
|
useGpt?: boolean;
|
|
69
|
-
|
|
69
|
+
useAntigravity?: boolean;
|
|
70
70
|
useClaude?: boolean;
|
|
71
71
|
}): Promise<MultiLlmQueryResult>;
|
|
72
72
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LLMCluster.d.ts","sourceRoot":"","sources":["../../../src/infra/orchestrator/LLMCluster.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"LLMCluster.d.ts","sourceRoot":"","sources":["../../../src/infra/orchestrator/LLMCluster.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5B,WAAW,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IACpC,MAAM,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,mBAAmB,CAAS;gBAExB,OAAO,GAAE,iBAAsB;IAI3C;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAUlB;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAC/B,OAAO,CAAC,MAAM,CAAC;IAQlB;;OAEG;IACG,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAC/B,OAAO,CAAC,MAAM,CAAC;IAQlB;;OAEG;IACG,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5E,OAAO,CAAC,mBAAmB,CAAC;IAkC/B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;CAyB9C;AAKD,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAKrE"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* LLMCluster - Multi-LLM 병렬 쿼리 및 상태 관리
|
|
3
|
-
* GPT,
|
|
3
|
+
* GPT, Antigravity, Claude 지원
|
|
4
4
|
*/
|
|
5
5
|
import { execSync } from 'child_process';
|
|
6
6
|
import * as gptApi from '../lib/gpt/index.js';
|
|
7
|
-
import * as
|
|
7
|
+
import * as antigravityApi from '../lib/antigravity/index.js';
|
|
8
8
|
import { warnLog } from '../lib/utils.js';
|
|
9
9
|
/**
|
|
10
|
-
* LLMCluster - GPT /
|
|
10
|
+
* LLMCluster - GPT / Antigravity / Claude 병렬 쿼리 및 상태 관리
|
|
11
11
|
*/
|
|
12
12
|
export class LLMCluster {
|
|
13
13
|
defaultSystemPrompt;
|
|
@@ -30,29 +30,29 @@ export class LLMCluster {
|
|
|
30
30
|
return gptApi.coreGptOrchestrate(prompt, systemPrompt ?? this.defaultSystemPrompt, options);
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
33
|
+
* Antigravity 오케스트레이션
|
|
34
34
|
*/
|
|
35
|
-
async
|
|
36
|
-
return
|
|
35
|
+
async antigravityOrchestrate(prompt, systemPrompt, options) {
|
|
36
|
+
return antigravityApi.coreAntigravityOrchestrate(prompt, systemPrompt ?? this.defaultSystemPrompt, options);
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
39
|
+
* Antigravity 웹 검색
|
|
40
40
|
*/
|
|
41
|
-
async
|
|
42
|
-
return
|
|
41
|
+
async antigravityWebSearch(query) {
|
|
42
|
+
return antigravityApi.quickWebSearch(query);
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
|
-
* GPT 웹 검색 (
|
|
46
|
-
* @deprecated GPT Codex API는 웹 검색을 지원하지 않습니다.
|
|
45
|
+
* GPT 웹 검색 (Antigravity로 위임)
|
|
46
|
+
* @deprecated GPT Codex API는 웹 검색을 지원하지 않습니다. antigravityWebSearch를 사용하세요.
|
|
47
47
|
*/
|
|
48
48
|
async gptWebSearch(query) {
|
|
49
|
-
return this.
|
|
49
|
+
return this.antigravityWebSearch(query);
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
52
|
* 멀티 LLM 병렬 쿼리
|
|
53
53
|
*/
|
|
54
54
|
async multiQuery(prompt, options) {
|
|
55
|
-
const { useGpt = true,
|
|
55
|
+
const { useGpt = true, useAntigravity = true, useClaude = false } = options || {};
|
|
56
56
|
const results = {};
|
|
57
57
|
const promises = [];
|
|
58
58
|
if (useGpt) {
|
|
@@ -60,10 +60,10 @@ export class LLMCluster {
|
|
|
60
60
|
.then(r => { results.gpt = r; })
|
|
61
61
|
.catch(e => { warnLog('GPT query failed in multiLlm', e); }));
|
|
62
62
|
}
|
|
63
|
-
if (
|
|
64
|
-
promises.push(this.
|
|
65
|
-
.then(r => { results.
|
|
66
|
-
.catch(e => { warnLog('
|
|
63
|
+
if (useAntigravity) {
|
|
64
|
+
promises.push(this.antigravityOrchestrate(prompt)
|
|
65
|
+
.then(r => { results.antigravity = r; })
|
|
66
|
+
.catch(e => { warnLog('Antigravity query failed in multiLlm', e); }));
|
|
67
67
|
}
|
|
68
68
|
if (useClaude) {
|
|
69
69
|
promises.push(this.claudeOrchestrate(prompt)
|
|
@@ -78,15 +78,15 @@ export class LLMCluster {
|
|
|
78
78
|
*/
|
|
79
79
|
async checkStatus() {
|
|
80
80
|
let gptAvailable = false;
|
|
81
|
-
let
|
|
81
|
+
let antigravityAvailable = false;
|
|
82
82
|
let claudeAvailable = false;
|
|
83
83
|
const promises = [
|
|
84
84
|
this.gptOrchestrate('ping', 'Reply with pong')
|
|
85
85
|
.then(() => { gptAvailable = true; })
|
|
86
86
|
.catch(e => { warnLog('GPT status check failed', e); }),
|
|
87
|
-
this.
|
|
88
|
-
.then(() => {
|
|
89
|
-
.catch(e => { warnLog('
|
|
87
|
+
this.antigravityOrchestrate('ping', 'Reply with pong')
|
|
88
|
+
.then(() => { antigravityAvailable = true; })
|
|
89
|
+
.catch(e => { warnLog('Antigravity status check failed', e); }),
|
|
90
90
|
this.claudeOrchestrate('ping', 'Reply with pong')
|
|
91
91
|
.then(() => { claudeAvailable = true; })
|
|
92
92
|
.catch(e => { warnLog('Claude status check failed', e); }),
|
|
@@ -94,7 +94,7 @@ export class LLMCluster {
|
|
|
94
94
|
await Promise.all(promises);
|
|
95
95
|
return {
|
|
96
96
|
gpt: { available: gptAvailable },
|
|
97
|
-
|
|
97
|
+
antigravity: { available: antigravityAvailable },
|
|
98
98
|
claude: { available: claudeAvailable },
|
|
99
99
|
};
|
|
100
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LLMCluster.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/LLMCluster.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"LLMCluster.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/LLMCluster.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MultiLlmResearch - GPT/
|
|
2
|
+
* MultiLlmResearch - GPT/Antigravity 기반 Multi-LLM 리서치
|
|
3
3
|
*/
|
|
4
4
|
import { MultiLlmResult } from './types.js';
|
|
5
5
|
/**
|
|
@@ -8,11 +8,11 @@ import { MultiLlmResult } from './types.js';
|
|
|
8
8
|
export declare function createMultiLlmPrompts(feature: string, techStack: string[]): {
|
|
9
9
|
bestPractices: {
|
|
10
10
|
gpt: string;
|
|
11
|
-
|
|
11
|
+
antigravity: string;
|
|
12
12
|
};
|
|
13
13
|
security: {
|
|
14
14
|
gpt: string;
|
|
15
|
-
|
|
15
|
+
antigravity: string;
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiLlmResearch.d.ts","sourceRoot":"","sources":["../../../src/infra/orchestrator/MultiLlmResearch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM5C;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG;IAC3E,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,
|
|
1
|
+
{"version":3,"file":"MultiLlmResearch.d.ts","sourceRoot":"","sources":["../../../src/infra/orchestrator/MultiLlmResearch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM5C;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG;IAC3E,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAqBA;AAsCD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC,CAmF3B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CA+BvE"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MultiLlmResearch - GPT/
|
|
2
|
+
* MultiLlmResearch - GPT/Antigravity 기반 Multi-LLM 리서치
|
|
3
3
|
*/
|
|
4
4
|
import { warnLog } from '../lib/utils.js';
|
|
5
5
|
import * as gptApi from '../lib/gpt/index.js';
|
|
6
|
-
import * as
|
|
7
|
-
import {
|
|
6
|
+
import * as antigravityApi from '../lib/antigravity/index.js';
|
|
7
|
+
import { isAntigravityAvailable, isCodexAvailable } from '../lib/llm-availability.js';
|
|
8
8
|
/**
|
|
9
9
|
* Multi-LLM 리서치 프롬프트 생성
|
|
10
10
|
*/
|
|
@@ -15,7 +15,7 @@ export function createMultiLlmPrompts(feature, techStack) {
|
|
|
15
15
|
gpt: `Best practices for implementing "${feature}" with ${stackStr}.
|
|
16
16
|
Focus on: architecture patterns, code conventions, design patterns.
|
|
17
17
|
Return JSON: { patterns: string[], antiPatterns: string[], libraries: string[] }`,
|
|
18
|
-
|
|
18
|
+
antigravity: `Best practices for implementing "${feature}" with ${stackStr}.
|
|
19
19
|
Focus on: latest trends, framework updates, modern approaches.
|
|
20
20
|
Return JSON: { patterns: string[], antiPatterns: string[], libraries: string[] }`
|
|
21
21
|
},
|
|
@@ -23,7 +23,7 @@ Return JSON: { patterns: string[], antiPatterns: string[], libraries: string[] }
|
|
|
23
23
|
gpt: `Security considerations for "${feature}" with ${stackStr}.
|
|
24
24
|
Focus on: CVE database, known vulnerabilities, exploit patterns.
|
|
25
25
|
Return JSON: { vulnerabilities: string[], mitigations: string[], checklist: string[] }`,
|
|
26
|
-
|
|
26
|
+
antigravity: `Security advisories for "${feature}" with ${stackStr}.
|
|
27
27
|
Focus on: latest patches, recent incidents, security best practices.
|
|
28
28
|
Return JSON: { advisories: string[], patches: string[], incidents: string[] }`
|
|
29
29
|
}
|
|
@@ -44,16 +44,16 @@ async function callGptSafe(prompt, systemPrompt, jsonMode = true) {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
|
-
*
|
|
47
|
+
* Antigravity 호출 (에러 처리 포함)
|
|
48
48
|
*/
|
|
49
|
-
async function
|
|
49
|
+
async function callAntigravitySafe(prompt, systemPrompt, jsonMode = true) {
|
|
50
50
|
try {
|
|
51
|
-
const result = await
|
|
51
|
+
const result = await antigravityApi.coreAntigravityOrchestrate(prompt, systemPrompt, { jsonMode });
|
|
52
52
|
return { result, success: true };
|
|
53
53
|
}
|
|
54
54
|
catch (error) {
|
|
55
55
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
56
|
-
warnLog('[Multi-LLM]
|
|
56
|
+
warnLog('[Multi-LLM] Antigravity call failed:', errorMsg);
|
|
57
57
|
return { result: '', success: false, error: errorMsg };
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -77,13 +77,13 @@ export async function executeMultiLlmResearch(feature, techStack) {
|
|
|
77
77
|
});
|
|
78
78
|
})());
|
|
79
79
|
}
|
|
80
|
-
// Best Practices -
|
|
81
|
-
if (
|
|
80
|
+
// Best Practices - Antigravity
|
|
81
|
+
if (isAntigravityAvailable()) {
|
|
82
82
|
promises.push((async () => {
|
|
83
83
|
const taskStart = Date.now();
|
|
84
|
-
const { result, success, error } = await
|
|
84
|
+
const { result, success, error } = await callAntigravitySafe(prompts.bestPractices.antigravity, 'You are an expert in modern development trends. Provide best practices in JSON format.');
|
|
85
85
|
results.push({
|
|
86
|
-
provider: '
|
|
86
|
+
provider: 'antigravity',
|
|
87
87
|
category: 'best-practices',
|
|
88
88
|
result, success, error,
|
|
89
89
|
duration: Date.now() - taskStart
|
|
@@ -103,13 +103,13 @@ export async function executeMultiLlmResearch(feature, techStack) {
|
|
|
103
103
|
});
|
|
104
104
|
})());
|
|
105
105
|
}
|
|
106
|
-
// Security -
|
|
107
|
-
if (
|
|
106
|
+
// Security - Antigravity
|
|
107
|
+
if (isAntigravityAvailable()) {
|
|
108
108
|
promises.push((async () => {
|
|
109
109
|
const taskStart = Date.now();
|
|
110
|
-
const { result, success, error } = await
|
|
110
|
+
const { result, success, error } = await callAntigravitySafe(prompts.security.antigravity, 'You are a security advisor. Focus on latest advisories and patches. Return JSON format.');
|
|
111
111
|
results.push({
|
|
112
|
-
provider: '
|
|
112
|
+
provider: 'antigravity',
|
|
113
113
|
category: 'security',
|
|
114
114
|
result, success, error,
|
|
115
115
|
duration: Date.now() - taskStart
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiLlmResearch.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/MultiLlmResearch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"MultiLlmResearch.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/MultiLlmResearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export interface SmartRouterOptions {
|
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* SmartRouter - Task 유형별 최적 LLM 선택 + fallback chain
|
|
22
|
-
* GPT와
|
|
22
|
+
* GPT와 Antigravity를 지원
|
|
23
23
|
*/
|
|
24
24
|
export declare class SmartRouter {
|
|
25
25
|
private cache;
|
|
@@ -31,7 +31,7 @@ export declare class SmartRouter {
|
|
|
31
31
|
route(request: SmartRouteRequest): Promise<SmartRouteResult>;
|
|
32
32
|
/**
|
|
33
33
|
* LLM 우선순위 결정
|
|
34
|
-
* WHY task-based routing: GPT excels at code/reasoning tasks;
|
|
34
|
+
* WHY task-based routing: GPT excels at code/reasoning tasks; Antigravity excels
|
|
35
35
|
* at web search and multimodal (UI/UX). Routing by task type maximizes
|
|
36
36
|
* quality while keeping Claude as the last-resort fallback (expensive).
|
|
37
37
|
*/
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { getTaskLlmPriority } from './types.js';
|
|
5
5
|
import * as gptApi from '../lib/gpt/index.js';
|
|
6
|
-
import * as
|
|
6
|
+
import * as antigravityApi from '../lib/antigravity/index.js';
|
|
7
7
|
import { debugLog } from '../lib/utils.js';
|
|
8
8
|
// LLM 가용성 캐시 (5분 TTL)
|
|
9
9
|
// WHY 5min: Long enough to avoid hammering a down provider, short enough to
|
|
@@ -32,7 +32,7 @@ export class AllProvidersFailedError extends Error {
|
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* SmartRouter - Task 유형별 최적 LLM 선택 + fallback chain
|
|
35
|
-
* GPT와
|
|
35
|
+
* GPT와 Antigravity를 지원
|
|
36
36
|
*/
|
|
37
37
|
export class SmartRouter {
|
|
38
38
|
cache;
|
|
@@ -41,7 +41,7 @@ export class SmartRouter {
|
|
|
41
41
|
this.verbose = options.verbose ?? false;
|
|
42
42
|
this.cache = {
|
|
43
43
|
gpt: { available: true, checkedAt: 0, errorCount: 0 },
|
|
44
|
-
|
|
44
|
+
antigravity: { available: true, checkedAt: 0, errorCount: 0 }
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
@@ -100,7 +100,7 @@ export class SmartRouter {
|
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
102
|
* LLM 우선순위 결정
|
|
103
|
-
* WHY task-based routing: GPT excels at code/reasoning tasks;
|
|
103
|
+
* WHY task-based routing: GPT excels at code/reasoning tasks; Antigravity excels
|
|
104
104
|
* at web search and multimodal (UI/UX). Routing by task type maximizes
|
|
105
105
|
* quality while keeping Claude as the last-resort fallback (expensive).
|
|
106
106
|
*/
|
|
@@ -139,8 +139,8 @@ export class SmartRouter {
|
|
|
139
139
|
switch (provider) {
|
|
140
140
|
case 'gpt':
|
|
141
141
|
return gptApi.coreGptOrchestrate(prompt, systemPrompt, { jsonMode: false });
|
|
142
|
-
case '
|
|
143
|
-
return
|
|
142
|
+
case 'antigravity':
|
|
143
|
+
return antigravityApi.coreAntigravityOrchestrate(prompt, systemPrompt, { jsonMode: false });
|
|
144
144
|
case 'claude':
|
|
145
145
|
throw new Error('Claude fallback - handled by caller');
|
|
146
146
|
default:
|
|
@@ -263,7 +263,7 @@ export class SmartRouter {
|
|
|
263
263
|
resetCache() {
|
|
264
264
|
this.cache = {
|
|
265
265
|
gpt: { available: true, checkedAt: 0, errorCount: 0 },
|
|
266
|
-
|
|
266
|
+
antigravity: { available: true, checkedAt: 0, errorCount: 0 }
|
|
267
267
|
};
|
|
268
268
|
}
|
|
269
269
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartRouter.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/SmartRouter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAOL,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SmartRouter.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/SmartRouter.ts"],"names":[],"mappings":"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"}
|