@su-record/vibe 2.11.0 → 2.12.2
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.d.ts.map +1 -1
- package/dist/cli/commands/info.js +9 -7
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/info.test.d.ts +2 -0
- package/dist/cli/commands/info.test.d.ts.map +1 -0
- package/dist/cli/commands/info.test.js +41 -0
- package/dist/cli/commands/info.test.js.map +1 -0
- 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/commands/upgrade.d.ts +7 -0
- package/dist/cli/commands/upgrade.d.ts.map +1 -1
- package/dist/cli/commands/upgrade.js +30 -3
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/upgrade.test.d.ts +2 -0
- package/dist/cli/commands/upgrade.test.d.ts.map +1 -0
- package/dist/cli/commands/upgrade.test.js +15 -0
- package/dist/cli/commands/upgrade.test.js.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +23 -24
- 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,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity 확장 기능
|
|
3
|
+
*
|
|
4
|
+
* - 웹 검색, UI 분석, 이미지 생성, 이미지 분석
|
|
5
|
+
* - API Key → Google AI Studio
|
|
6
|
+
*/
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import fs from 'fs';
|
|
9
|
+
import { getApiKeyFromConfig } from './auth.js';
|
|
10
|
+
import { ask, getAntigravityModels, DEFAULT_MODEL } from './chat.js';
|
|
11
|
+
// =============================================
|
|
12
|
+
// 웹 검색
|
|
13
|
+
// =============================================
|
|
14
|
+
/**
|
|
15
|
+
* 웹서치로 최신 정보 검색 (Antigravity Pro + Google Search)
|
|
16
|
+
*/
|
|
17
|
+
export async function webSearch(prompt) {
|
|
18
|
+
return ask(prompt, {
|
|
19
|
+
model: 'antigravity-pro',
|
|
20
|
+
maxTokens: 4096,
|
|
21
|
+
temperature: 0.3,
|
|
22
|
+
webSearch: true,
|
|
23
|
+
systemPrompt: 'Search the web for the latest information and provide accurate answers. Always include today\'s date and time context when relevant.',
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 빠른 웹서치 (Antigravity fast model + Google Search)
|
|
28
|
+
*/
|
|
29
|
+
export async function quickWebSearch(prompt) {
|
|
30
|
+
return ask(prompt, {
|
|
31
|
+
model: 'antigravity-fast',
|
|
32
|
+
maxTokens: 2048,
|
|
33
|
+
temperature: 0.3,
|
|
34
|
+
webSearch: true,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
// =============================================
|
|
38
|
+
// UI 분석
|
|
39
|
+
// =============================================
|
|
40
|
+
/**
|
|
41
|
+
* UI/UX 분석용 (Antigravity Pro)
|
|
42
|
+
*/
|
|
43
|
+
export async function analyzeUI(prompt) {
|
|
44
|
+
return ask(prompt, {
|
|
45
|
+
model: 'antigravity-pro',
|
|
46
|
+
maxTokens: 4096,
|
|
47
|
+
temperature: 0.5,
|
|
48
|
+
systemPrompt: 'You are a UI/UX expert. Analyze the given design or component and provide detailed feedback.',
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
// =============================================
|
|
52
|
+
// 이미지 생성
|
|
53
|
+
// =============================================
|
|
54
|
+
const IMAGE_MODELS = {
|
|
55
|
+
'nano-banana': 'gemini-3.1-flash-image-preview',
|
|
56
|
+
'nano-banana-pro': 'gemini-3-pro-image-preview',
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Antigravity image generation (API Key only)
|
|
60
|
+
*/
|
|
61
|
+
export async function generateImage(prompt, options = {}) {
|
|
62
|
+
const apiKey = getApiKeyFromConfig();
|
|
63
|
+
if (!apiKey) {
|
|
64
|
+
throw new Error('Antigravity API key required for image generation. Run "vibe antigravity key <key>".');
|
|
65
|
+
}
|
|
66
|
+
const size = options.size || '1024x1024';
|
|
67
|
+
const [width, height] = size.split('x').map(Number);
|
|
68
|
+
const aspectRatio = width && height ? `${width}:${height}` : '1:1';
|
|
69
|
+
const imageModel = IMAGE_MODELS[options.model || 'nano-banana'];
|
|
70
|
+
const url = `https://generativelanguage.googleapis.com/v1beta/models/${imageModel}:generateContent?key=${apiKey}`;
|
|
71
|
+
const requestBody = {
|
|
72
|
+
contents: [{
|
|
73
|
+
parts: [{
|
|
74
|
+
text: `Generate an image: ${prompt}\n\nRequirements:\n- High quality, detailed image\n- Aspect ratio: ${aspectRatio}\n- Professional and polished look`,
|
|
75
|
+
}],
|
|
76
|
+
}],
|
|
77
|
+
generationConfig: {
|
|
78
|
+
responseModalities: ['TEXT', 'IMAGE'],
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
const response = await fetch(url, {
|
|
82
|
+
method: 'POST',
|
|
83
|
+
headers: { 'Content-Type': 'application/json' },
|
|
84
|
+
body: JSON.stringify(requestBody),
|
|
85
|
+
});
|
|
86
|
+
if (!response.ok) {
|
|
87
|
+
const errorText = await response.text();
|
|
88
|
+
let errorMessage = `Antigravity image API error (${response.status})`;
|
|
89
|
+
try {
|
|
90
|
+
const errorJson = JSON.parse(errorText);
|
|
91
|
+
if (errorJson.error?.message)
|
|
92
|
+
errorMessage = errorJson.error.message;
|
|
93
|
+
}
|
|
94
|
+
catch { /* ignore */ }
|
|
95
|
+
throw new Error(errorMessage);
|
|
96
|
+
}
|
|
97
|
+
const result = await response.json();
|
|
98
|
+
const parts = result.candidates?.[0]?.content?.parts || [];
|
|
99
|
+
for (const part of parts) {
|
|
100
|
+
if (part.inlineData?.mimeType?.startsWith('image/')) {
|
|
101
|
+
return {
|
|
102
|
+
data: Buffer.from(part.inlineData.data, 'base64'),
|
|
103
|
+
mimeType: part.inlineData.mimeType,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
throw new Error('No image in Antigravity response');
|
|
108
|
+
}
|
|
109
|
+
// =============================================
|
|
110
|
+
// 이미지 분석 (Multimodal)
|
|
111
|
+
// =============================================
|
|
112
|
+
function getImageMimeType(filePath) {
|
|
113
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
114
|
+
const mimeMap = {
|
|
115
|
+
'.png': 'image/png',
|
|
116
|
+
'.jpg': 'image/jpeg',
|
|
117
|
+
'.jpeg': 'image/jpeg',
|
|
118
|
+
'.gif': 'image/gif',
|
|
119
|
+
'.webp': 'image/webp',
|
|
120
|
+
'.bmp': 'image/bmp',
|
|
121
|
+
};
|
|
122
|
+
return mimeMap[ext] || 'image/png';
|
|
123
|
+
}
|
|
124
|
+
async function analyzeImageWithApiKey(apiKey, contents, options) {
|
|
125
|
+
const modelInfo = getAntigravityModels()[options.model] || getAntigravityModels()[DEFAULT_MODEL];
|
|
126
|
+
const actualModel = modelInfo.id;
|
|
127
|
+
const requestBody = {
|
|
128
|
+
contents,
|
|
129
|
+
generationConfig: {
|
|
130
|
+
maxOutputTokens: options.maxTokens,
|
|
131
|
+
temperature: options.temperature,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
if (options.systemPrompt) {
|
|
135
|
+
requestBody.systemInstruction = { parts: [{ text: options.systemPrompt }] };
|
|
136
|
+
}
|
|
137
|
+
const url = `https://generativelanguage.googleapis.com/v1beta/models/${actualModel}:generateContent?key=${apiKey}`;
|
|
138
|
+
const response = await fetch(url, {
|
|
139
|
+
method: 'POST',
|
|
140
|
+
headers: { 'Content-Type': 'application/json' },
|
|
141
|
+
body: JSON.stringify(requestBody),
|
|
142
|
+
});
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
const errorText = await response.text();
|
|
145
|
+
throw new Error(`Antigravity API error (${response.status}): ${errorText}`);
|
|
146
|
+
}
|
|
147
|
+
const result = await response.json();
|
|
148
|
+
if (!result.candidates || result.candidates.length === 0) {
|
|
149
|
+
throw new Error('Antigravity API response is empty.');
|
|
150
|
+
}
|
|
151
|
+
return result.candidates[0].content?.parts?.[0]?.text || '';
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Antigravity 이미지 분석 (Multimodal)
|
|
155
|
+
*/
|
|
156
|
+
export async function analyzeImage(imagePath, prompt, options = {}) {
|
|
157
|
+
const { model = 'antigravity-fast', maxTokens = 4096, temperature = 0.3, systemPrompt, } = options;
|
|
158
|
+
const absolutePath = path.resolve(imagePath);
|
|
159
|
+
if (!fs.existsSync(absolutePath)) {
|
|
160
|
+
throw new Error(`Image file not found: ${absolutePath}`);
|
|
161
|
+
}
|
|
162
|
+
const imageData = fs.readFileSync(absolutePath);
|
|
163
|
+
const base64Data = imageData.toString('base64');
|
|
164
|
+
const mimeType = getImageMimeType(absolutePath);
|
|
165
|
+
const contents = [{
|
|
166
|
+
role: 'user',
|
|
167
|
+
parts: [
|
|
168
|
+
{ inlineData: { mimeType, data: base64Data } },
|
|
169
|
+
{ text: prompt },
|
|
170
|
+
],
|
|
171
|
+
}];
|
|
172
|
+
const apiKey = getApiKeyFromConfig();
|
|
173
|
+
if (!apiKey) {
|
|
174
|
+
throw new Error('Antigravity API key required for image analysis.');
|
|
175
|
+
}
|
|
176
|
+
return analyzeImageWithApiKey(apiKey, contents, { model, maxTokens, temperature, systemPrompt });
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity Chat API (generateContent)
|
|
3
|
+
*
|
|
4
|
+
* API Key → Google AI Studio
|
|
5
|
+
*/
|
|
6
|
+
import type { AntigravityModelInfo, ChatOptions, ChatResponse, StreamChunk } from './types.js';
|
|
7
|
+
export declare function getAntigravityModels(): Record<string, AntigravityModelInfo>;
|
|
8
|
+
export declare const ANTIGRAVITY_MODELS: Record<string, AntigravityModelInfo>;
|
|
9
|
+
export declare const DEFAULT_MODEL = "antigravity-fast";
|
|
10
|
+
/**
|
|
11
|
+
* Antigravity API 호출 (API Key)
|
|
12
|
+
*/
|
|
13
|
+
export declare function chat(options: ChatOptions): Promise<ChatResponse>;
|
|
14
|
+
/**
|
|
15
|
+
* 스트리밍 Chat (API Key → 단일 yield)
|
|
16
|
+
*/
|
|
17
|
+
export declare function chatStream(options: ChatOptions): AsyncGenerator<StreamChunk>;
|
|
18
|
+
/**
|
|
19
|
+
* 사용 가능한 모델 목록
|
|
20
|
+
*/
|
|
21
|
+
export declare function getAvailableModels(): AntigravityModelInfo[];
|
|
22
|
+
/**
|
|
23
|
+
* 모델 정보 가져오기
|
|
24
|
+
*/
|
|
25
|
+
export declare function getModelInfo(modelId: string): AntigravityModelInfo | null;
|
|
26
|
+
/**
|
|
27
|
+
* 간단한 질문-응답
|
|
28
|
+
*/
|
|
29
|
+
export declare function ask(prompt: string, options?: Omit<ChatOptions, 'messages'>): Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* 코드 탐색용 빠른 질문 (Antigravity Fast)
|
|
32
|
+
*/
|
|
33
|
+
export declare function quickAsk(prompt: string): Promise<string>;
|
|
34
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,WAAW,EAEZ,MAAM,YAAY,CAAC;AAMpB,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAkB3E;AAED,eAAO,MAAM,kBAAkB,sCAAyB,CAAC;AAEzD,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAgGhD;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAQtE;AAED;;GAEG;AACH,wBAAuB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CASnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,oBAAoB,EAAE,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAEzE;AAED;;GAEG;AACH,wBAAsB,GAAG,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAM,GAC1C,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM9D"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity Chat API (generateContent)
|
|
3
|
+
*
|
|
4
|
+
* API Key → Google AI Studio
|
|
5
|
+
*/
|
|
6
|
+
import { sleep } from '../utils.js';
|
|
7
|
+
import { getAuthInfo } from './auth.js';
|
|
8
|
+
import { getModelOverride } from '../config/GlobalConfigManager.js';
|
|
9
|
+
import { MAX_RETRIES, RETRY_BASE_DELAY_MS, } from './constants.js';
|
|
10
|
+
// =============================================
|
|
11
|
+
// 모델 레지스트리
|
|
12
|
+
// =============================================
|
|
13
|
+
export function getAntigravityModels() {
|
|
14
|
+
const proId = getModelOverride('antigravity') ?? process.env.ANTIGRAVITY_MODEL ?? 'gemini-3.1-pro-preview';
|
|
15
|
+
const flashId = process.env.ANTIGRAVITY_FAST_MODEL ?? 'gemini-3.1-flash-lite-preview';
|
|
16
|
+
return {
|
|
17
|
+
'antigravity-pro': {
|
|
18
|
+
id: proId,
|
|
19
|
+
name: 'Antigravity Pro',
|
|
20
|
+
description: 'Pro model for complex tasks',
|
|
21
|
+
maxTokens: 8192,
|
|
22
|
+
},
|
|
23
|
+
'antigravity-fast': {
|
|
24
|
+
id: flashId,
|
|
25
|
+
name: 'Antigravity Fast',
|
|
26
|
+
description: 'Fast model for lightweight tasks',
|
|
27
|
+
maxTokens: 8192,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export const ANTIGRAVITY_MODELS = getAntigravityModels();
|
|
32
|
+
export const DEFAULT_MODEL = 'antigravity-fast';
|
|
33
|
+
// =============================================
|
|
34
|
+
// API Key 방식 (Google AI Studio)
|
|
35
|
+
// =============================================
|
|
36
|
+
async function chatWithApiKey(apiKey, options) {
|
|
37
|
+
const { model = DEFAULT_MODEL, messages = [], maxTokens = 4096, temperature = 0.7, systemPrompt = '', jsonMode = false, } = options;
|
|
38
|
+
const models = getAntigravityModels();
|
|
39
|
+
const modelInfo = models[model] || models[DEFAULT_MODEL];
|
|
40
|
+
const actualModel = modelInfo.id;
|
|
41
|
+
const contents = messages.map(msg => ({
|
|
42
|
+
role: msg.role === 'assistant' || msg.role === 'model' ? 'model' : 'user',
|
|
43
|
+
parts: [{ text: msg.content }],
|
|
44
|
+
}));
|
|
45
|
+
const generationConfig = {
|
|
46
|
+
maxOutputTokens: maxTokens,
|
|
47
|
+
temperature,
|
|
48
|
+
};
|
|
49
|
+
if (jsonMode) {
|
|
50
|
+
generationConfig.responseMimeType = 'application/json';
|
|
51
|
+
}
|
|
52
|
+
const requestBody = {
|
|
53
|
+
contents,
|
|
54
|
+
generationConfig,
|
|
55
|
+
};
|
|
56
|
+
if (systemPrompt) {
|
|
57
|
+
requestBody.systemInstruction = { parts: [{ text: systemPrompt }] };
|
|
58
|
+
}
|
|
59
|
+
const retryCount = options._retryCount || 0;
|
|
60
|
+
try {
|
|
61
|
+
const url = `https://generativelanguage.googleapis.com/v1beta/models/${actualModel}:generateContent?key=${apiKey}`;
|
|
62
|
+
const response = await fetch(url, {
|
|
63
|
+
method: 'POST',
|
|
64
|
+
headers: { 'Content-Type': 'application/json' },
|
|
65
|
+
body: JSON.stringify(requestBody),
|
|
66
|
+
});
|
|
67
|
+
if (!response.ok) {
|
|
68
|
+
const errorText = await response.text();
|
|
69
|
+
if (response.status === 429 && retryCount < MAX_RETRIES) {
|
|
70
|
+
await sleep(Math.pow(2, retryCount) * RETRY_BASE_DELAY_MS);
|
|
71
|
+
return chatWithApiKey(apiKey, { ...options, _retryCount: retryCount + 1 });
|
|
72
|
+
}
|
|
73
|
+
let errorMessage = `Google AI API error (${response.status})`;
|
|
74
|
+
try {
|
|
75
|
+
const errorJson = JSON.parse(errorText);
|
|
76
|
+
if (errorJson.error?.message)
|
|
77
|
+
errorMessage = errorJson.error.message;
|
|
78
|
+
}
|
|
79
|
+
catch { /* ignore */ }
|
|
80
|
+
throw new Error(errorMessage);
|
|
81
|
+
}
|
|
82
|
+
const result = await response.json();
|
|
83
|
+
if (!result.candidates || result.candidates.length === 0) {
|
|
84
|
+
throw new Error('Antigravity API response is empty.');
|
|
85
|
+
}
|
|
86
|
+
const candidate = result.candidates[0];
|
|
87
|
+
return {
|
|
88
|
+
content: candidate.content?.parts?.[0]?.text || '',
|
|
89
|
+
model: actualModel,
|
|
90
|
+
finishReason: candidate.finishReason,
|
|
91
|
+
usage: result.usageMetadata,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (error.name === 'TypeError' && retryCount < MAX_RETRIES) {
|
|
96
|
+
await sleep(Math.pow(2, retryCount) * RETRY_BASE_DELAY_MS);
|
|
97
|
+
return chatWithApiKey(apiKey, { ...options, _retryCount: retryCount + 1 });
|
|
98
|
+
}
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// =============================================
|
|
103
|
+
// Public API
|
|
104
|
+
// =============================================
|
|
105
|
+
/**
|
|
106
|
+
* Antigravity API 호출 (API Key)
|
|
107
|
+
*/
|
|
108
|
+
export async function chat(options) {
|
|
109
|
+
const authInfo = await getAuthInfo();
|
|
110
|
+
if (authInfo.apiKey) {
|
|
111
|
+
return chatWithApiKey(authInfo.apiKey, options);
|
|
112
|
+
}
|
|
113
|
+
throw new Error('Antigravity API key not found.');
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 스트리밍 Chat (API Key → 단일 yield)
|
|
117
|
+
*/
|
|
118
|
+
export async function* chatStream(options) {
|
|
119
|
+
const result = await chat(options);
|
|
120
|
+
yield {
|
|
121
|
+
content: result.content,
|
|
122
|
+
done: true,
|
|
123
|
+
model: result.model,
|
|
124
|
+
finishReason: result.finishReason,
|
|
125
|
+
usage: result.usage,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* 사용 가능한 모델 목록
|
|
130
|
+
*/
|
|
131
|
+
export function getAvailableModels() {
|
|
132
|
+
return Object.values(getAntigravityModels());
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 모델 정보 가져오기
|
|
136
|
+
*/
|
|
137
|
+
export function getModelInfo(modelId) {
|
|
138
|
+
return getAntigravityModels()[modelId] || null;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* 간단한 질문-응답
|
|
142
|
+
*/
|
|
143
|
+
export async function ask(prompt, options = {}) {
|
|
144
|
+
const result = await chat({
|
|
145
|
+
...options,
|
|
146
|
+
messages: [{ role: 'user', content: prompt }],
|
|
147
|
+
});
|
|
148
|
+
return result.content;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* 코드 탐색용 빠른 질문 (Antigravity Fast)
|
|
152
|
+
*/
|
|
153
|
+
export async function quickAsk(prompt) {
|
|
154
|
+
return ask(prompt, {
|
|
155
|
+
model: 'antigravity-fast',
|
|
156
|
+
maxTokens: 2048,
|
|
157
|
+
temperature: 0.3,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Completion (placeholder)
|
|
3
|
+
*
|
|
4
|
+
* completeCode는 v1internal OAuth 전용이었으므로 제거됨.
|
|
5
|
+
* Antigravity CLI 직접 호출로 대체 가능.
|
|
6
|
+
*/
|
|
7
|
+
import type { CompleteCodeOptions, CompleteCodeResponse } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* 코드 자동완성 (미지원 — OAuth 제거됨)
|
|
10
|
+
*/
|
|
11
|
+
export declare function completeCode(_options: CompleteCodeOptions): Promise<CompleteCodeResponse>;
|
|
12
|
+
//# sourceMappingURL=completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/completion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE5E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAI/B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Completion (placeholder)
|
|
3
|
+
*
|
|
4
|
+
* completeCode는 v1internal OAuth 전용이었으므로 제거됨.
|
|
5
|
+
* Antigravity CLI 직접 호출로 대체 가능.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 코드 자동완성 (미지원 — OAuth 제거됨)
|
|
9
|
+
*/
|
|
10
|
+
export async function completeCode(_options) {
|
|
11
|
+
throw new Error('completeCode is no longer supported. Use Antigravity CLI directly for code completion.');
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/completion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAA6B;IAE7B,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,mBAAmB,OAAO,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity API 상수
|
|
3
|
+
*
|
|
4
|
+
* Auth: Antigravity CLI / Codex CLI / API Key 만 지원
|
|
5
|
+
*/
|
|
6
|
+
// =============================================
|
|
7
|
+
// Retry & Timeout
|
|
8
|
+
// =============================================
|
|
9
|
+
export const MAX_RETRIES = 3;
|
|
10
|
+
export const RETRY_BASE_DELAY_MS = 1000;
|
|
11
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gDAAgD;AAChD,kBAAkB;AAClB,gDAAgD;AAEhD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity API 모듈
|
|
3
|
+
*
|
|
4
|
+
* Auth: Antigravity CLI / Codex CLI (hooks) + API Key (library)
|
|
5
|
+
*/
|
|
6
|
+
export type { AuthInfo, AntigravityAuthMethod, AntigravityModelInfo, AvailableModel, ChatMessage, ChatOptions, ChatResponse, StreamChunk, AntigravityApiResponse, AntigravityCandidate, ImageGenerationOptions, ImageGenerationResult, ImageAnalysisOptions, MultimodalContent, VibeAntigravityOptions, } from './types.js';
|
|
7
|
+
export { getApiKeyFromConfig, getAuthInfo, } from './auth.js';
|
|
8
|
+
export { getGlobalConfigDir } from '../llm/auth/ConfigManager.js';
|
|
9
|
+
export { ANTIGRAVITY_MODELS, getAntigravityModels, DEFAULT_MODEL, chat, chatStream, getAvailableModels, getModelInfo, ask, quickAsk, } from './chat.js';
|
|
10
|
+
export { webSearch, quickWebSearch, analyzeUI, generateImage, analyzeImage, } from './capabilities.js';
|
|
11
|
+
export { coreAntigravityOrchestrate, coreAntigravityParseSpec, coreAntigravityPlanExecution, coreAntigravityAnalyze, coreAntigravityDecideNextAction, coreAntigravityAnalyzeUX, } from './orchestration.js';
|
|
12
|
+
export { fetchAvailableModels } from './models.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,QAAQ,EACR,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,mBAAmB,EACnB,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,IAAI,EACJ,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,GAAG,EACH,QAAQ,GACT,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,SAAS,EACT,cAAc,EACd,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity API 모듈
|
|
3
|
+
*
|
|
4
|
+
* Auth: Antigravity CLI / Codex CLI (hooks) + API Key (library)
|
|
5
|
+
*/
|
|
6
|
+
export { getApiKeyFromConfig, getAuthInfo, } from './auth.js';
|
|
7
|
+
export { getGlobalConfigDir } from '../llm/auth/ConfigManager.js';
|
|
8
|
+
export { ANTIGRAVITY_MODELS, getAntigravityModels, DEFAULT_MODEL, chat, chatStream, getAvailableModels, getModelInfo, ask, quickAsk, } from './chat.js';
|
|
9
|
+
export { webSearch, quickWebSearch, analyzeUI, generateImage, analyzeImage, } from './capabilities.js';
|
|
10
|
+
export { coreAntigravityOrchestrate, coreAntigravityParseSpec, coreAntigravityPlanExecution, coreAntigravityAnalyze, coreAntigravityDecideNextAction, coreAntigravityAnalyzeUX, } from './orchestration.js';
|
|
11
|
+
export { fetchAvailableModels } from './models.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,OAAO,EACL,mBAAmB,EACnB,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,IAAI,EACJ,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,GAAG,EACH,QAAQ,GACT,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,SAAS,EACT,cAAc,EACd,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Model Discovery API
|
|
3
|
+
*
|
|
4
|
+
* Google AI Studio (API Key) 전용
|
|
5
|
+
*/
|
|
6
|
+
import type { AvailableModel } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* 사용 가능한 모델 목록 조회 (API Key)
|
|
9
|
+
*/
|
|
10
|
+
export declare function fetchAvailableModels(): Promise<AvailableModel[]>;
|
|
11
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAyBjD;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAqBtE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Model Discovery API
|
|
3
|
+
*
|
|
4
|
+
* Google AI Studio (API Key) 전용
|
|
5
|
+
*/
|
|
6
|
+
import { getApiKeyFromConfig } from './auth.js';
|
|
7
|
+
function normalizeGoogleAI(raw) {
|
|
8
|
+
return {
|
|
9
|
+
modelId: raw.name || '',
|
|
10
|
+
displayName: raw.displayName || raw.name || '',
|
|
11
|
+
description: raw.description || '',
|
|
12
|
+
inputTokenLimit: raw.inputTokenLimit || 0,
|
|
13
|
+
outputTokenLimit: raw.outputTokenLimit || 0,
|
|
14
|
+
supportedActions: raw.supportedGenerationMethods || [],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 사용 가능한 모델 목록 조회 (API Key)
|
|
19
|
+
*/
|
|
20
|
+
export async function fetchAvailableModels() {
|
|
21
|
+
const apiKey = getApiKeyFromConfig();
|
|
22
|
+
if (!apiKey) {
|
|
23
|
+
throw new Error('Antigravity API key required. Run "vibe antigravity key <key>".');
|
|
24
|
+
}
|
|
25
|
+
const url = `https://generativelanguage.googleapis.com/v1beta/models?key=${apiKey}`;
|
|
26
|
+
const response = await fetch(url, {
|
|
27
|
+
method: 'GET',
|
|
28
|
+
headers: { 'Content-Type': 'application/json' },
|
|
29
|
+
});
|
|
30
|
+
if (!response.ok) {
|
|
31
|
+
const errorText = await response.text();
|
|
32
|
+
throw new Error(`Google AI models API error (${response.status}): ${errorText}`);
|
|
33
|
+
}
|
|
34
|
+
const result = await response.json();
|
|
35
|
+
const rawModels = result.models || [];
|
|
36
|
+
return rawModels.map(normalizeGoogleAI);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAehD,SAAS,iBAAiB,CAAC,GAAkB;IAC3C,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;QACvB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE;QAC9C,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;QAClC,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,CAAC;QACzC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,IAAI,CAAC;QAC3C,gBAAgB,EAAE,GAAG,CAAC,0BAA0B,IAAI,EAAE;KACvD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,GAAG,GAAG,+DAA+D,MAAM,EAAE,CAAC;IACpF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAkC,CAAC;IACrE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAEtC,OAAO,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity 오케스트레이션 함수
|
|
3
|
+
* - 검색 없이 빠르고 결정론적인 응답
|
|
4
|
+
*/
|
|
5
|
+
import type { VibeAntigravityOptions } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Core Antigravity 오케스트레이션 (검색 없음, JSON 모드)
|
|
8
|
+
* - 검색 제외로 빠른 응답
|
|
9
|
+
* - temperature=0 으로 결정론적 결과
|
|
10
|
+
* - JSON 출력 강제 가능
|
|
11
|
+
*/
|
|
12
|
+
export declare function coreAntigravityOrchestrate(prompt: string, systemPrompt: string, options?: VibeAntigravityOptions): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Core Spec 파싱 (Core Spec → 실행 계획)
|
|
15
|
+
*/
|
|
16
|
+
export declare function coreAntigravityParseSpec(spec: string): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Core 실행 계획 수립 (Task → Steps)
|
|
19
|
+
*/
|
|
20
|
+
export declare function coreAntigravityPlanExecution(task: string, context: string): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Core 코드 분석 (빠른 구조 분석)
|
|
23
|
+
*/
|
|
24
|
+
export declare function coreAntigravityAnalyze(code: string, question: string): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* Core 다음 액션 결정 (상태 기반)
|
|
27
|
+
*/
|
|
28
|
+
export declare function coreAntigravityDecideNextAction(currentState: string, availableActions: string[], goal: string): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Core UI/UX 분석 (검색 없이 내부 지식으로)
|
|
31
|
+
*/
|
|
32
|
+
export declare function coreAntigravityAnalyzeUX(description: string): Promise<string>;
|
|
33
|
+
//# sourceMappingURL=orchestration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestration.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/antigravity/orchestration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG5E;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMjG;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5F;AAED;;GAEG;AACH,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOnF"}
|