@su-record/vibe 2.5.11 → 2.5.13
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/CLAUDE.md +243 -0
- package/LICENSE +21 -21
- package/README.md +262 -262
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +189 -189
- package/agents/research/codebase-patterns-agent.md +147 -147
- package/agents/research/framework-docs-agent.md +178 -178
- package/agents/research/security-advisory-agent.md +203 -203
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui-previewer.md +129 -129
- package/commands/vibe.analyze.md +356 -356
- package/commands/vibe.reason.md +329 -329
- package/commands/vibe.review.md +326 -326
- package/commands/vibe.run.md +1117 -1051
- package/commands/vibe.spec.md +1058 -1058
- package/commands/vibe.utils.md +353 -296
- package/commands/vibe.verify.md +375 -375
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.js +102 -102
- package/dist/cli/llm.js +144 -144
- package/dist/cli/mcp.d.ts +49 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +169 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli/postinstall.js +180 -2
- package/dist/cli/postinstall.js.map +1 -1
- package/dist/cli/setup/GlobalInstaller.d.ts +24 -0
- package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -0
- package/dist/cli/setup/GlobalInstaller.js +130 -0
- package/dist/cli/setup/GlobalInstaller.js.map +1 -0
- package/dist/cli/setup/LanguageDetector.d.ts +16 -0
- package/dist/cli/setup/LanguageDetector.d.ts.map +1 -0
- package/dist/cli/setup/LanguageDetector.js +49 -0
- package/dist/cli/setup/LanguageDetector.js.map +1 -0
- package/dist/cli/setup/LegacyMigration.d.ts +25 -0
- package/dist/cli/setup/LegacyMigration.d.ts.map +1 -0
- package/dist/cli/setup/LegacyMigration.js +162 -0
- package/dist/cli/setup/LegacyMigration.js.map +1 -0
- package/dist/cli/setup/ProjectSetup.d.ts +30 -0
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -0
- package/dist/cli/setup/ProjectSetup.js +238 -0
- package/dist/cli/setup/ProjectSetup.js.map +1 -0
- package/dist/cli/setup/index.d.ts +14 -0
- package/dist/cli/setup/index.d.ts.map +1 -0
- package/dist/cli/setup/index.js +18 -0
- package/dist/cli/setup/index.js.map +1 -0
- package/dist/cli/setup.d.ts +10 -77
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +15 -592
- package/dist/cli/setup.js.map +1 -1
- package/dist/lib/DeepInit.d.ts +0 -2
- package/dist/lib/DeepInit.d.ts.map +1 -1
- package/dist/lib/DeepInit.js +24 -26
- package/dist/lib/DeepInit.js.map +1 -1
- package/dist/lib/IterationTracker.d.ts +0 -2
- package/dist/lib/IterationTracker.d.ts.map +1 -1
- package/dist/lib/IterationTracker.js +11 -13
- package/dist/lib/IterationTracker.js.map +1 -1
- package/dist/lib/ModelRouter.d.ts +0 -2
- package/dist/lib/ModelRouter.d.ts.map +1 -1
- package/dist/lib/ModelRouter.js +0 -2
- package/dist/lib/ModelRouter.js.map +1 -1
- package/dist/lib/OrchestrateWorkflow.d.ts +1 -3
- package/dist/lib/OrchestrateWorkflow.d.ts.map +1 -1
- package/dist/lib/OrchestrateWorkflow.js +1 -3
- package/dist/lib/OrchestrateWorkflow.js.map +1 -1
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/SkillFrontmatter.d.ts +0 -2
- package/dist/lib/SkillFrontmatter.d.ts.map +1 -1
- package/dist/lib/SkillFrontmatter.js +28 -30
- package/dist/lib/SkillFrontmatter.js.map +1 -1
- package/dist/lib/SkillQualityGate.d.ts +0 -2
- package/dist/lib/SkillQualityGate.d.ts.map +1 -1
- package/dist/lib/SkillQualityGate.js +9 -11
- package/dist/lib/SkillQualityGate.js.map +1 -1
- package/dist/lib/SkillRepository.d.ts +117 -0
- package/dist/lib/SkillRepository.d.ts.map +1 -0
- package/dist/lib/SkillRepository.js +477 -0
- package/dist/lib/SkillRepository.js.map +1 -0
- package/dist/lib/UltraQA.d.ts +0 -2
- package/dist/lib/UltraQA.d.ts.map +1 -1
- package/dist/lib/UltraQA.js +77 -79
- package/dist/lib/UltraQA.js.map +1 -1
- package/dist/lib/gemini-mcp.d.ts +10 -0
- package/dist/lib/gemini-mcp.d.ts.map +1 -0
- package/dist/lib/gemini-mcp.js +353 -0
- package/dist/lib/gemini-mcp.js.map +1 -0
- package/dist/lib/gpt-api.js +4 -4
- package/dist/lib/gpt-mcp.d.ts +10 -0
- package/dist/lib/gpt-mcp.d.ts.map +1 -0
- package/dist/lib/gpt-mcp.js +352 -0
- package/dist/lib/gpt-mcp.js.map +1 -0
- package/dist/lib/llm/auth/ApiKeyManager.d.ts +21 -0
- package/dist/lib/llm/auth/ApiKeyManager.d.ts.map +1 -0
- package/dist/lib/llm/auth/ApiKeyManager.js +43 -0
- package/dist/lib/llm/auth/ApiKeyManager.js.map +1 -0
- package/dist/lib/llm/auth/ConfigManager.d.ts +29 -0
- package/dist/lib/llm/auth/ConfigManager.d.ts.map +1 -0
- package/dist/lib/llm/auth/ConfigManager.js +67 -0
- package/dist/lib/llm/auth/ConfigManager.js.map +1 -0
- package/dist/lib/llm/auth/index.d.ts +25 -0
- package/dist/lib/llm/auth/index.d.ts.map +1 -0
- package/dist/lib/llm/auth/index.js +83 -0
- package/dist/lib/llm/auth/index.js.map +1 -0
- package/dist/lib/llm/index.d.ts +10 -0
- package/dist/lib/llm/index.d.ts.map +1 -0
- package/dist/lib/llm/index.js +12 -0
- package/dist/lib/llm/index.js.map +1 -0
- package/dist/lib/llm/types.d.ts +96 -0
- package/dist/lib/llm/types.d.ts.map +1 -0
- package/dist/lib/llm/types.js +17 -0
- package/dist/lib/llm/types.js.map +1 -0
- package/dist/lib/llm/utils/index.d.ts +6 -0
- package/dist/lib/llm/utils/index.d.ts.map +1 -0
- package/dist/lib/llm/utils/index.js +6 -0
- package/dist/lib/llm/utils/index.js.map +1 -0
- package/dist/lib/llm/utils/retry.d.ts +25 -0
- package/dist/lib/llm/utils/retry.d.ts.map +1 -0
- package/dist/lib/llm/utils/retry.js +72 -0
- package/dist/lib/llm/utils/retry.js.map +1 -0
- package/dist/lib/llm/utils/stream.d.ts +13 -0
- package/dist/lib/llm/utils/stream.d.ts.map +1 -0
- package/dist/lib/llm/utils/stream.js +110 -0
- package/dist/lib/llm/utils/stream.js.map +1 -0
- package/dist/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/lib/memory/MemorySearch.js +20 -20
- package/dist/lib/memory/MemoryStorage.js +64 -64
- package/dist/orchestrator/AgentExecutor.d.ts +23 -0
- package/dist/orchestrator/AgentExecutor.d.ts.map +1 -0
- package/dist/orchestrator/AgentExecutor.js +231 -0
- package/dist/orchestrator/AgentExecutor.js.map +1 -0
- package/dist/orchestrator/AgentManager.d.ts +73 -0
- package/dist/orchestrator/AgentManager.d.ts.map +1 -0
- package/dist/orchestrator/AgentManager.js +184 -0
- package/dist/orchestrator/AgentManager.js.map +1 -0
- package/dist/orchestrator/LLMCluster.d.ts +70 -0
- package/dist/orchestrator/LLMCluster.d.ts.map +1 -0
- package/dist/orchestrator/LLMCluster.js +91 -0
- package/dist/orchestrator/LLMCluster.js.map +1 -0
- package/dist/orchestrator/MultiLlmResearch.d.ts +27 -0
- package/dist/orchestrator/MultiLlmResearch.d.ts.map +1 -0
- package/dist/orchestrator/MultiLlmResearch.js +145 -0
- package/dist/orchestrator/MultiLlmResearch.js.map +1 -0
- package/dist/orchestrator/SessionStore.d.ts +41 -0
- package/dist/orchestrator/SessionStore.d.ts.map +1 -0
- package/dist/orchestrator/SessionStore.js +117 -0
- package/dist/orchestrator/SessionStore.js.map +1 -0
- package/dist/orchestrator/SmartRouter.d.ts +68 -0
- package/dist/orchestrator/SmartRouter.d.ts.map +1 -0
- package/dist/orchestrator/SmartRouter.js +256 -0
- package/dist/orchestrator/SmartRouter.js.map +1 -0
- package/dist/orchestrator/backgroundAgent.d.ts +10 -28
- package/dist/orchestrator/backgroundAgent.d.ts.map +1 -1
- package/dist/orchestrator/backgroundAgent.js +11 -346
- package/dist/orchestrator/backgroundAgent.js.map +1 -1
- package/dist/orchestrator/index.d.ts +3 -0
- package/dist/orchestrator/index.d.ts.map +1 -1
- package/dist/orchestrator/index.js +4 -0
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/orchestrator/orchestrator.d.ts +19 -154
- package/dist/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.js +90 -514
- package/dist/orchestrator/orchestrator.js.map +1 -1
- package/dist/orchestrator/parallelResearch.d.ts +5 -12
- package/dist/orchestrator/parallelResearch.d.ts.map +1 -1
- package/dist/orchestrator/parallelResearch.js +10 -193
- package/dist/orchestrator/parallelResearch.js.map +1 -1
- package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
- package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
- package/dist/tools/analytics/getUsageAnalytics.js +246 -0
- package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
- package/dist/tools/analytics/index.d.ts +5 -0
- package/dist/tools/analytics/index.d.ts.map +1 -0
- package/dist/tools/analytics/index.js +5 -0
- package/dist/tools/analytics/index.js.map +1 -0
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/getCodingGuide.d.ts +7 -0
- package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
- package/dist/tools/convention/getCodingGuide.js +69 -0
- package/dist/tools/convention/getCodingGuide.js.map +1 -0
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
- package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
- package/dist/tools/planning/analyzeRequirements.js +171 -0
- package/dist/tools/planning/analyzeRequirements.js.map +1 -0
- package/dist/tools/planning/createUserStories.d.ts +9 -0
- package/dist/tools/planning/createUserStories.d.ts.map +1 -0
- package/dist/tools/planning/createUserStories.js +124 -0
- package/dist/tools/planning/createUserStories.js.map +1 -0
- package/dist/tools/planning/featureRoadmap.d.ts +10 -0
- package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
- package/dist/tools/planning/featureRoadmap.js +207 -0
- package/dist/tools/planning/featureRoadmap.js.map +1 -0
- package/dist/tools/planning/generatePrd.d.ts +11 -0
- package/dist/tools/planning/generatePrd.d.ts.map +1 -0
- package/dist/tools/planning/generatePrd.js +161 -0
- package/dist/tools/planning/generatePrd.js.map +1 -0
- package/dist/tools/planning/index.d.ts +8 -0
- package/dist/tools/planning/index.d.ts.map +1 -0
- package/dist/tools/planning/index.js +8 -0
- package/dist/tools/planning/index.js.map +1 -0
- package/dist/tools/prompt/analyzePrompt.d.ts +7 -0
- package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
- package/dist/tools/prompt/analyzePrompt.js +150 -0
- package/dist/tools/prompt/analyzePrompt.js.map +1 -0
- package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
- package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
- package/dist/tools/prompt/enhancePrompt.js +110 -0
- package/dist/tools/prompt/enhancePrompt.js.map +1 -0
- package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
- package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
- package/dist/tools/prompt/enhancePromptGemini.js +332 -0
- package/dist/tools/prompt/enhancePromptGemini.js.map +1 -0
- package/dist/tools/prompt/index.d.ts +7 -0
- package/dist/tools/prompt/index.d.ts.map +1 -0
- package/dist/tools/prompt/index.js +7 -0
- package/dist/tools/prompt/index.js.map +1 -0
- package/dist/tools/reasoning/applyReasoningFramework.d.ts +8 -0
- package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
- package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
- package/dist/tools/reasoning/applyReasoningFramework.js.map +1 -0
- package/dist/tools/reasoning/index.d.ts +5 -0
- package/dist/tools/reasoning/index.d.ts.map +1 -0
- package/dist/tools/reasoning/index.js +5 -0
- package/dist/tools/reasoning/index.js.map +1 -0
- package/dist/tools/thinking/analyzeProblem.d.ts +7 -0
- package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
- package/dist/tools/thinking/analyzeProblem.js +55 -0
- package/dist/tools/thinking/analyzeProblem.js.map +1 -0
- package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
- package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
- package/dist/tools/thinking/breakDownProblem.js +145 -0
- package/dist/tools/thinking/breakDownProblem.js.map +1 -0
- package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
- package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
- package/dist/tools/thinking/createThinkingChain.js +44 -0
- package/dist/tools/thinking/createThinkingChain.js.map +1 -0
- package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
- package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
- package/dist/tools/thinking/formatAsPlan.js +78 -0
- package/dist/tools/thinking/formatAsPlan.js.map +1 -0
- package/dist/tools/thinking/index.d.ts +10 -0
- package/dist/tools/thinking/index.d.ts.map +1 -0
- package/dist/tools/thinking/index.js +10 -0
- package/dist/tools/thinking/index.js.map +1 -0
- package/dist/tools/thinking/stepByStepAnalysis.d.ts +8 -0
- package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
- package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
- package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
- package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
- package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
- package/dist/tools/thinking/thinkAloudProcess.js +80 -0
- package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
- package/hooks/hooks.json +222 -222
- package/hooks/scripts/code-check.js +22 -22
- package/hooks/scripts/code-review.js +22 -22
- package/hooks/scripts/complexity.js +22 -22
- package/hooks/scripts/compound.js +23 -23
- package/hooks/scripts/context-save.js +33 -33
- package/hooks/scripts/generate-brand-assets.js +472 -0
- package/hooks/scripts/hud-multiline.js +262 -264
- package/hooks/scripts/hud-status.js +291 -293
- package/hooks/scripts/keyword-detector.js +214 -216
- package/hooks/scripts/llm-orchestrate.js +171 -171
- package/hooks/scripts/post-edit.js +97 -97
- package/hooks/scripts/post-tool-verify.js +210 -212
- package/hooks/scripts/pre-tool-guard.js +125 -127
- package/hooks/scripts/recall.js +22 -22
- package/hooks/scripts/session-start.js +30 -30
- package/hooks/scripts/skill-injector.js +191 -193
- package/hooks/scripts/utils.js +97 -97
- package/languages/csharp-unity.md +515 -515
- package/languages/gdscript-godot.md +470 -470
- package/languages/ruby-rails.md +489 -489
- package/languages/typescript-angular.md +433 -433
- package/languages/typescript-astro.md +416 -416
- package/languages/typescript-electron.md +406 -406
- package/languages/typescript-nestjs.md +524 -524
- package/languages/typescript-svelte.md +407 -407
- package/languages/typescript-tauri.md +365 -365
- package/package.json +83 -83
- package/skills/brand-assets.md +141 -0
- package/skills/commerce-patterns.md +361 -0
- package/skills/context7-usage.md +102 -102
- package/skills/e2e-commerce.md +304 -0
- package/skills/frontend-design.md +92 -0
- package/skills/git-worktree.md +181 -181
- package/skills/parallel-research.md +77 -77
- package/skills/priority-todos.md +239 -239
- package/skills/seo-checklist.md +244 -0
- package/skills/tool-fallback.md +190 -190
- package/skills/vibe-capabilities.md +161 -161
- package/vibe/constitution.md +227 -227
- package/vibe/rules/core/communication-guide.md +98 -98
- package/vibe/rules/core/development-philosophy.md +52 -52
- package/vibe/rules/core/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentManager - 에이전트 관리 및 실행
|
|
3
|
+
* orchestrator.ts에서 추출된 에이전트 관리 모듈
|
|
4
|
+
*/
|
|
5
|
+
import { discoverAgents, loadAgent, listAgentsByCategory } from './agentDiscovery.js';
|
|
6
|
+
import { launchBackgroundAgent, getBackgroundAgentResult, cancelBackgroundAgent, listActiveSessions, getSessionHistory, launchParallelAgents } from './backgroundAgent.js';
|
|
7
|
+
import { DEFAULT_MODELS } from '../lib/constants.js';
|
|
8
|
+
/**
|
|
9
|
+
* AgentManager - 에이전트 탐색, 실행, 결과 관리
|
|
10
|
+
*/
|
|
11
|
+
export class AgentManager {
|
|
12
|
+
projectPath;
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.projectPath = options.projectPath ?? process.cwd();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 에이전트 탐색
|
|
18
|
+
*/
|
|
19
|
+
async discover(category) {
|
|
20
|
+
const result = await discoverAgents({
|
|
21
|
+
projectPath: this.projectPath,
|
|
22
|
+
category
|
|
23
|
+
});
|
|
24
|
+
if ('agents' in result) {
|
|
25
|
+
return result.agents;
|
|
26
|
+
}
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 특정 에이전트 로드
|
|
31
|
+
*/
|
|
32
|
+
async load(agentName) {
|
|
33
|
+
return loadAgent(agentName, this.projectPath);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 카테고리별 에이전트 목록
|
|
37
|
+
*/
|
|
38
|
+
async listByCategory(category) {
|
|
39
|
+
return listAgentsByCategory(category, this.projectPath);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 백그라운드 에이전트 시작
|
|
43
|
+
*/
|
|
44
|
+
async launch(args) {
|
|
45
|
+
const result = await launchBackgroundAgent({
|
|
46
|
+
...args,
|
|
47
|
+
projectPath: args.projectPath || this.projectPath
|
|
48
|
+
});
|
|
49
|
+
if ('handle' in result) {
|
|
50
|
+
return result.handle;
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 여러 에이전트 동시 실행
|
|
56
|
+
*/
|
|
57
|
+
async launchParallel(configs) {
|
|
58
|
+
const result = await launchParallelAgents(configs.map(c => ({
|
|
59
|
+
...c,
|
|
60
|
+
projectPath: c.projectPath || this.projectPath
|
|
61
|
+
})));
|
|
62
|
+
if ('handles' in result) {
|
|
63
|
+
return result.handles;
|
|
64
|
+
}
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 에이전트 결과 조회
|
|
69
|
+
*/
|
|
70
|
+
async getResult(sessionId) {
|
|
71
|
+
const result = await getBackgroundAgentResult(sessionId);
|
|
72
|
+
if ('result' in result) {
|
|
73
|
+
return result.result;
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 에이전트 취소
|
|
79
|
+
*/
|
|
80
|
+
cancel(sessionId) {
|
|
81
|
+
const result = cancelBackgroundAgent(sessionId);
|
|
82
|
+
return result.content[0].text.includes('cancelled');
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 활성 세션 목록
|
|
86
|
+
*/
|
|
87
|
+
getActiveSessions() {
|
|
88
|
+
return listActiveSessions();
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 세션 히스토리
|
|
92
|
+
*/
|
|
93
|
+
getHistory(limit = 10) {
|
|
94
|
+
return getSessionHistory(limit);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* 리뷰 에이전트 병렬 실행
|
|
98
|
+
*/
|
|
99
|
+
async runParallelReview(filePaths, techStack = []) {
|
|
100
|
+
const reviewAgents = await this.listByCategory('review');
|
|
101
|
+
const relevantAgents = this.filterRelevantAgents(reviewAgents, techStack);
|
|
102
|
+
const agentConfigs = relevantAgents.map(agent => ({
|
|
103
|
+
agentName: agent.name,
|
|
104
|
+
prompt: this.buildReviewPrompt(agent, filePaths),
|
|
105
|
+
model: DEFAULT_MODELS.REVIEW,
|
|
106
|
+
maxTurns: 3,
|
|
107
|
+
allowedTools: ['Read', 'Glob', 'Grep']
|
|
108
|
+
}));
|
|
109
|
+
const handles = await this.launchParallel(agentConfigs);
|
|
110
|
+
const results = [];
|
|
111
|
+
for (const handle of handles) {
|
|
112
|
+
const result = await handle.getResult();
|
|
113
|
+
results.push(result);
|
|
114
|
+
}
|
|
115
|
+
return results;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 기술 스택에 맞는 에이전트 필터링
|
|
119
|
+
*/
|
|
120
|
+
filterRelevantAgents(agents, techStack) {
|
|
121
|
+
const coreReviewers = [
|
|
122
|
+
'security-reviewer',
|
|
123
|
+
'performance-reviewer',
|
|
124
|
+
'architecture-reviewer',
|
|
125
|
+
'complexity-reviewer',
|
|
126
|
+
'simplicity-reviewer',
|
|
127
|
+
'data-integrity-reviewer',
|
|
128
|
+
'test-coverage-reviewer',
|
|
129
|
+
'git-history-reviewer'
|
|
130
|
+
];
|
|
131
|
+
const stackReviewers = {
|
|
132
|
+
typescript: ['typescript-reviewer'],
|
|
133
|
+
python: ['python-reviewer'],
|
|
134
|
+
react: ['react-reviewer'],
|
|
135
|
+
rails: ['rails-reviewer'],
|
|
136
|
+
ruby: ['rails-reviewer']
|
|
137
|
+
};
|
|
138
|
+
const relevantNames = new Set(coreReviewers);
|
|
139
|
+
for (const tech of techStack) {
|
|
140
|
+
const reviewers = stackReviewers[tech.toLowerCase()];
|
|
141
|
+
if (reviewers) {
|
|
142
|
+
reviewers.forEach(r => relevantNames.add(r));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return agents.filter(agent => {
|
|
146
|
+
const normalizedName = agent.name.toLowerCase().replace(/\s+/g, '-');
|
|
147
|
+
return relevantNames.has(normalizedName) ||
|
|
148
|
+
Array.from(relevantNames).some(r => normalizedName.includes(r));
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 리뷰 프롬프트 생성
|
|
153
|
+
*/
|
|
154
|
+
buildReviewPrompt(agent, filePaths) {
|
|
155
|
+
return `You are a ${agent.name}. Review the following files for issues in your domain:
|
|
156
|
+
|
|
157
|
+
Files to review:
|
|
158
|
+
${filePaths.map(f => `- ${f}`).join('\n')}
|
|
159
|
+
|
|
160
|
+
${agent.content}
|
|
161
|
+
|
|
162
|
+
Provide findings in this format:
|
|
163
|
+
- Priority: P1 (Critical), P2 (Important), P3 (Nice-to-have)
|
|
164
|
+
- Category: Your specialty area
|
|
165
|
+
- Location: file:line
|
|
166
|
+
- Issue: Description
|
|
167
|
+
- Fix: Recommendation`;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* 프로젝트 경로 업데이트
|
|
171
|
+
*/
|
|
172
|
+
setProjectPath(path) {
|
|
173
|
+
this.projectPath = path;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// 싱글톤 인스턴스
|
|
177
|
+
let defaultManager = null;
|
|
178
|
+
export function getAgentManager(options) {
|
|
179
|
+
if (!defaultManager || options) {
|
|
180
|
+
defaultManager = new AgentManager(options);
|
|
181
|
+
}
|
|
182
|
+
return defaultManager;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=AgentManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentManager.js","sourceRoot":"","sources":["../../src/orchestrator/AgentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLMCluster - Multi-LLM 병렬 쿼리 및 상태 관리
|
|
3
|
+
* orchestrator.ts에서 추출된 LLM 클러스터 관리 모듈
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Multi-LLM 쿼리 결과
|
|
7
|
+
*/
|
|
8
|
+
export interface MultiLlmQueryResult {
|
|
9
|
+
gpt?: string;
|
|
10
|
+
gemini?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* LLM 상태 결과
|
|
14
|
+
*/
|
|
15
|
+
export interface LlmStatusResult {
|
|
16
|
+
gpt: {
|
|
17
|
+
available: boolean;
|
|
18
|
+
};
|
|
19
|
+
gemini: {
|
|
20
|
+
available: boolean;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* LLMCluster 설정
|
|
25
|
+
*/
|
|
26
|
+
export interface LLMClusterOptions {
|
|
27
|
+
defaultSystemPrompt?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* LLMCluster - GPT/Gemini 병렬 쿼리 및 상태 관리
|
|
31
|
+
*/
|
|
32
|
+
export declare class LLMCluster {
|
|
33
|
+
private defaultSystemPrompt;
|
|
34
|
+
constructor(options?: LLMClusterOptions);
|
|
35
|
+
/**
|
|
36
|
+
* GPT 오케스트레이션
|
|
37
|
+
*/
|
|
38
|
+
gptOrchestrate(prompt: string, systemPrompt?: string, options?: {
|
|
39
|
+
jsonMode?: boolean;
|
|
40
|
+
}): Promise<string>;
|
|
41
|
+
/**
|
|
42
|
+
* Gemini 오케스트레이션
|
|
43
|
+
*/
|
|
44
|
+
geminiOrchestrate(prompt: string, systemPrompt?: string, options?: {
|
|
45
|
+
jsonMode?: boolean;
|
|
46
|
+
}): Promise<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Gemini 웹 검색
|
|
49
|
+
*/
|
|
50
|
+
geminiWebSearch(query: string): Promise<string>;
|
|
51
|
+
/**
|
|
52
|
+
* GPT 웹 검색 (Gemini로 위임)
|
|
53
|
+
* @deprecated GPT Codex API는 웹 검색을 지원하지 않습니다. geminiWebSearch를 사용하세요.
|
|
54
|
+
*/
|
|
55
|
+
gptWebSearch(query: string): Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
* 멀티 LLM 병렬 쿼리
|
|
58
|
+
* GPT, Gemini 동시 호출하여 결과 비교
|
|
59
|
+
*/
|
|
60
|
+
multiQuery(prompt: string, options?: {
|
|
61
|
+
useGpt?: boolean;
|
|
62
|
+
useGemini?: boolean;
|
|
63
|
+
}): Promise<MultiLlmQueryResult>;
|
|
64
|
+
/**
|
|
65
|
+
* LLM 상태 확인 (전체)
|
|
66
|
+
*/
|
|
67
|
+
checkStatus(): Promise<LlmStatusResult>;
|
|
68
|
+
}
|
|
69
|
+
export declare function getLLMCluster(options?: LLMClusterOptions): LLMCluster;
|
|
70
|
+
//# sourceMappingURL=LLMCluster.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMCluster.d.ts","sourceRoot":"","sources":["../../src/orchestrator/LLMCluster.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5B,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,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,iBAAiB,CACrB,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,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD;;;OAGG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAClD,OAAO,CAAC,mBAAmB,CAAC;IA0B/B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;CAoB9C;AAKD,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAKrE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLMCluster - Multi-LLM 병렬 쿼리 및 상태 관리
|
|
3
|
+
* orchestrator.ts에서 추출된 LLM 클러스터 관리 모듈
|
|
4
|
+
*/
|
|
5
|
+
import * as gptApi from '../lib/gpt-api.js';
|
|
6
|
+
import * as geminiApi from '../lib/gemini-api.js';
|
|
7
|
+
import { warnLog } from '../lib/utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* LLMCluster - GPT/Gemini 병렬 쿼리 및 상태 관리
|
|
10
|
+
*/
|
|
11
|
+
export class LLMCluster {
|
|
12
|
+
defaultSystemPrompt;
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.defaultSystemPrompt = options.defaultSystemPrompt ?? 'You are a helpful assistant.';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* GPT 오케스트레이션
|
|
18
|
+
*/
|
|
19
|
+
async gptOrchestrate(prompt, systemPrompt, options) {
|
|
20
|
+
return gptApi.vibeGptOrchestrate(prompt, systemPrompt ?? this.defaultSystemPrompt, options);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gemini 오케스트레이션
|
|
24
|
+
*/
|
|
25
|
+
async geminiOrchestrate(prompt, systemPrompt, options) {
|
|
26
|
+
return geminiApi.vibeGeminiOrchestrate(prompt, systemPrompt ?? this.defaultSystemPrompt, options);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Gemini 웹 검색
|
|
30
|
+
*/
|
|
31
|
+
async geminiWebSearch(query) {
|
|
32
|
+
return geminiApi.quickWebSearch(query);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* GPT 웹 검색 (Gemini로 위임)
|
|
36
|
+
* @deprecated GPT Codex API는 웹 검색을 지원하지 않습니다. geminiWebSearch를 사용하세요.
|
|
37
|
+
*/
|
|
38
|
+
async gptWebSearch(query) {
|
|
39
|
+
return this.geminiWebSearch(query);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 멀티 LLM 병렬 쿼리
|
|
43
|
+
* GPT, Gemini 동시 호출하여 결과 비교
|
|
44
|
+
*/
|
|
45
|
+
async multiQuery(prompt, options) {
|
|
46
|
+
const { useGpt = true, useGemini = true } = options || {};
|
|
47
|
+
const results = {};
|
|
48
|
+
const promises = [];
|
|
49
|
+
if (useGpt) {
|
|
50
|
+
promises.push(this.gptOrchestrate(prompt)
|
|
51
|
+
.then(r => { results.gpt = r; })
|
|
52
|
+
.catch(e => { warnLog('GPT query failed in multiLlm', e); }));
|
|
53
|
+
}
|
|
54
|
+
if (useGemini) {
|
|
55
|
+
promises.push(this.geminiOrchestrate(prompt)
|
|
56
|
+
.then(r => { results.gemini = r; })
|
|
57
|
+
.catch(e => { warnLog('Gemini query failed in multiLlm', e); }));
|
|
58
|
+
}
|
|
59
|
+
await Promise.all(promises);
|
|
60
|
+
return results;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* LLM 상태 확인 (전체)
|
|
64
|
+
*/
|
|
65
|
+
async checkStatus() {
|
|
66
|
+
let gptAvailable = false;
|
|
67
|
+
let geminiAvailable = false;
|
|
68
|
+
const promises = [
|
|
69
|
+
this.gptOrchestrate('ping', 'Reply with pong')
|
|
70
|
+
.then(() => { gptAvailable = true; })
|
|
71
|
+
.catch(e => { warnLog('GPT status check failed', e); }),
|
|
72
|
+
this.geminiOrchestrate('ping', 'Reply with pong')
|
|
73
|
+
.then(() => { geminiAvailable = true; })
|
|
74
|
+
.catch(e => { warnLog('Gemini status check failed', e); })
|
|
75
|
+
];
|
|
76
|
+
await Promise.all(promises);
|
|
77
|
+
return {
|
|
78
|
+
gpt: { available: gptAvailable },
|
|
79
|
+
gemini: { available: geminiAvailable }
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// 싱글톤 인스턴스
|
|
84
|
+
let defaultCluster = null;
|
|
85
|
+
export function getLLMCluster(options) {
|
|
86
|
+
if (!defaultCluster || options) {
|
|
87
|
+
defaultCluster = new LLMCluster(options);
|
|
88
|
+
}
|
|
89
|
+
return defaultCluster;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=LLMCluster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMCluster.js","sourceRoot":"","sources":["../../src/orchestrator/LLMCluster.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MultiLlmResearch - GPT/Gemini 기반 Multi-LLM 리서치
|
|
3
|
+
* parallelResearch.ts에서 추출 (v2.6.0)
|
|
4
|
+
*/
|
|
5
|
+
import { MultiLlmResult } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Multi-LLM 리서치 프롬프트 생성
|
|
8
|
+
*/
|
|
9
|
+
export declare function createMultiLlmPrompts(feature: string, techStack: string[]): {
|
|
10
|
+
bestPractices: {
|
|
11
|
+
gpt: string;
|
|
12
|
+
gemini: string;
|
|
13
|
+
};
|
|
14
|
+
security: {
|
|
15
|
+
gpt: string;
|
|
16
|
+
gemini: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Multi-LLM 병렬 리서치 실행
|
|
21
|
+
*/
|
|
22
|
+
export declare function executeMultiLlmResearch(feature: string, techStack: string[]): Promise<MultiLlmResult[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Multi-LLM 결과 포맷팅
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatMultiLlmResults(results: MultiLlmResult[]): string;
|
|
27
|
+
//# sourceMappingURL=MultiLlmResearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiLlmResearch.d.ts","sourceRoot":"","sources":["../../src/orchestrator/MultiLlmResearch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAK5C;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG;IAC3E,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAqBA;AAsCD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC,CA2E3B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CA+BvE"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MultiLlmResearch - GPT/Gemini 기반 Multi-LLM 리서치
|
|
3
|
+
* parallelResearch.ts에서 추출 (v2.6.0)
|
|
4
|
+
*/
|
|
5
|
+
import { warnLog } from '../lib/utils.js';
|
|
6
|
+
import * as gptApi from '../lib/gpt-api.js';
|
|
7
|
+
import * as geminiApi from '../lib/gemini-api.js';
|
|
8
|
+
/**
|
|
9
|
+
* Multi-LLM 리서치 프롬프트 생성
|
|
10
|
+
*/
|
|
11
|
+
export function createMultiLlmPrompts(feature, techStack) {
|
|
12
|
+
const stackStr = techStack.length > 0 ? techStack.join(', ') : 'the project';
|
|
13
|
+
return {
|
|
14
|
+
bestPractices: {
|
|
15
|
+
gpt: `Best practices for implementing "${feature}" with ${stackStr}.
|
|
16
|
+
Focus on: architecture patterns, code conventions, design patterns.
|
|
17
|
+
Return JSON: { patterns: string[], antiPatterns: string[], libraries: string[] }`,
|
|
18
|
+
gemini: `Best practices for implementing "${feature}" with ${stackStr}.
|
|
19
|
+
Focus on: latest trends, framework updates, modern approaches.
|
|
20
|
+
Return JSON: { patterns: string[], antiPatterns: string[], libraries: string[] }`
|
|
21
|
+
},
|
|
22
|
+
security: {
|
|
23
|
+
gpt: `Security considerations for "${feature}" with ${stackStr}.
|
|
24
|
+
Focus on: CVE database, known vulnerabilities, exploit patterns.
|
|
25
|
+
Return JSON: { vulnerabilities: string[], mitigations: string[], checklist: string[] }`,
|
|
26
|
+
gemini: `Security advisories for "${feature}" with ${stackStr}.
|
|
27
|
+
Focus on: latest patches, recent incidents, security best practices.
|
|
28
|
+
Return JSON: { advisories: string[], patches: string[], incidents: string[] }`
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* GPT API 호출 (에러 처리 포함)
|
|
34
|
+
*/
|
|
35
|
+
async function callGptSafe(prompt, systemPrompt, jsonMode = true) {
|
|
36
|
+
try {
|
|
37
|
+
const result = await gptApi.vibeGptOrchestrate(prompt, systemPrompt, { jsonMode });
|
|
38
|
+
return { result, success: true };
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
42
|
+
warnLog('[Multi-LLM] GPT call failed:', errorMsg);
|
|
43
|
+
return { result: '', success: false, error: errorMsg };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Gemini API 호출 (에러 처리 포함)
|
|
48
|
+
*/
|
|
49
|
+
async function callGeminiSafe(prompt, systemPrompt, jsonMode = true) {
|
|
50
|
+
try {
|
|
51
|
+
const result = await geminiApi.vibeGeminiOrchestrate(prompt, systemPrompt, { jsonMode });
|
|
52
|
+
return { result, success: true };
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
56
|
+
warnLog('[Multi-LLM] Gemini call failed:', errorMsg);
|
|
57
|
+
return { result: '', success: false, error: errorMsg };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Multi-LLM 병렬 리서치 실행
|
|
62
|
+
*/
|
|
63
|
+
export async function executeMultiLlmResearch(feature, techStack) {
|
|
64
|
+
const prompts = createMultiLlmPrompts(feature, techStack);
|
|
65
|
+
const results = [];
|
|
66
|
+
const promises = [];
|
|
67
|
+
// Best Practices - GPT
|
|
68
|
+
promises.push((async () => {
|
|
69
|
+
const taskStart = Date.now();
|
|
70
|
+
const { result, success, error } = await callGptSafe(prompts.bestPractices.gpt, 'You are an expert software architect. Provide best practices in JSON format.');
|
|
71
|
+
results.push({
|
|
72
|
+
provider: 'gpt',
|
|
73
|
+
category: 'best-practices',
|
|
74
|
+
result, success, error,
|
|
75
|
+
duration: Date.now() - taskStart
|
|
76
|
+
});
|
|
77
|
+
})());
|
|
78
|
+
// Best Practices - Gemini
|
|
79
|
+
promises.push((async () => {
|
|
80
|
+
const taskStart = Date.now();
|
|
81
|
+
const { result, success, error } = await callGeminiSafe(prompts.bestPractices.gemini, 'You are an expert in modern development trends. Provide best practices in JSON format.');
|
|
82
|
+
results.push({
|
|
83
|
+
provider: 'gemini',
|
|
84
|
+
category: 'best-practices',
|
|
85
|
+
result, success, error,
|
|
86
|
+
duration: Date.now() - taskStart
|
|
87
|
+
});
|
|
88
|
+
})());
|
|
89
|
+
// Security - GPT
|
|
90
|
+
promises.push((async () => {
|
|
91
|
+
const taskStart = Date.now();
|
|
92
|
+
const { result, success, error } = await callGptSafe(prompts.security.gpt, 'You are a security expert. Focus on CVE database and known vulnerabilities. Return JSON format.');
|
|
93
|
+
results.push({
|
|
94
|
+
provider: 'gpt',
|
|
95
|
+
category: 'security',
|
|
96
|
+
result, success, error,
|
|
97
|
+
duration: Date.now() - taskStart
|
|
98
|
+
});
|
|
99
|
+
})());
|
|
100
|
+
// Security - Gemini
|
|
101
|
+
promises.push((async () => {
|
|
102
|
+
const taskStart = Date.now();
|
|
103
|
+
const { result, success, error } = await callGeminiSafe(prompts.security.gemini, 'You are a security advisor. Focus on latest advisories and patches. Return JSON format.');
|
|
104
|
+
results.push({
|
|
105
|
+
provider: 'gemini',
|
|
106
|
+
category: 'security',
|
|
107
|
+
result, success, error,
|
|
108
|
+
duration: Date.now() - taskStart
|
|
109
|
+
});
|
|
110
|
+
})());
|
|
111
|
+
await Promise.all(promises);
|
|
112
|
+
return results;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Multi-LLM 결과 포맷팅
|
|
116
|
+
*/
|
|
117
|
+
export function formatMultiLlmResults(results) {
|
|
118
|
+
if (results.length === 0) {
|
|
119
|
+
return '[Multi-LLM] No results available';
|
|
120
|
+
}
|
|
121
|
+
const successCount = results.filter(r => r.success).length;
|
|
122
|
+
let output = `\n## Multi-LLM Research Results (${successCount}/${results.length} successful)\n\n`;
|
|
123
|
+
// Best Practices 섹션
|
|
124
|
+
const bestPractices = results.filter(r => r.category === 'best-practices');
|
|
125
|
+
if (bestPractices.length > 0) {
|
|
126
|
+
output += `### Best Practices\n\n`;
|
|
127
|
+
for (const bp of bestPractices) {
|
|
128
|
+
const status = bp.success ? '✅' : '❌';
|
|
129
|
+
output += `#### ${status} ${bp.provider.toUpperCase()} (${(bp.duration / 1000).toFixed(1)}s)\n`;
|
|
130
|
+
output += bp.success ? `${bp.result}\n\n` : `Error: ${bp.error}\n\n`;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Security 섹션
|
|
134
|
+
const security = results.filter(r => r.category === 'security');
|
|
135
|
+
if (security.length > 0) {
|
|
136
|
+
output += `### Security Advisories\n\n`;
|
|
137
|
+
for (const sec of security) {
|
|
138
|
+
const status = sec.success ? '✅' : '❌';
|
|
139
|
+
output += `#### ${status} ${sec.provider.toUpperCase()} (${(sec.duration / 1000).toFixed(1)}s)\n`;
|
|
140
|
+
output += sec.success ? `${sec.result}\n\n` : `Error: ${sec.error}\n\n`;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return output;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=MultiLlmResearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiLlmResearch.js","sourceRoot":"","sources":["../../src/orchestrator/MultiLlmResearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SessionStore - 백그라운드 에이전트 세션 저장소
|
|
3
|
+
* backgroundAgent.ts에서 추출 (v2.6.0)
|
|
4
|
+
*/
|
|
5
|
+
import { BackgroundAgentHandle, AgentResult, SessionInfo } from './types.js';
|
|
6
|
+
import { ToolResult } from '../types/tool.js';
|
|
7
|
+
export interface SessionData {
|
|
8
|
+
handle: BackgroundAgentHandle;
|
|
9
|
+
resultPromise: Promise<AgentResult>;
|
|
10
|
+
cancelController: AbortController;
|
|
11
|
+
createdAt: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* SessionStore - 세션 저장 및 관리
|
|
15
|
+
*/
|
|
16
|
+
declare class SessionStoreImpl {
|
|
17
|
+
private activeSessions;
|
|
18
|
+
private sessionHistory;
|
|
19
|
+
private cleanupTimer;
|
|
20
|
+
constructor();
|
|
21
|
+
private startCleanupTimer;
|
|
22
|
+
private cleanup;
|
|
23
|
+
add(sessionId: string, data: SessionData): void;
|
|
24
|
+
get(sessionId: string): SessionData | undefined;
|
|
25
|
+
delete(sessionId: string): void;
|
|
26
|
+
addToHistory(info: SessionInfo): void;
|
|
27
|
+
findInHistory(sessionId: string): SessionInfo | undefined;
|
|
28
|
+
getActiveSessions(): SessionData[];
|
|
29
|
+
getRecentHistory(limit: number): SessionInfo[];
|
|
30
|
+
}
|
|
31
|
+
export declare const sessionStore: SessionStoreImpl;
|
|
32
|
+
/**
|
|
33
|
+
* 활성 세션 목록 조회
|
|
34
|
+
*/
|
|
35
|
+
export declare function listActiveSessions(): ToolResult;
|
|
36
|
+
/**
|
|
37
|
+
* 세션 히스토리 조회
|
|
38
|
+
*/
|
|
39
|
+
export declare function getSessionHistory(limit?: number): ToolResult;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=SessionStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionStore.d.ts","sourceRoot":"","sources":["../../src/orchestrator/SessionStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,gBAAgB,EAAE,eAAe,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD;;GAEG;AACH,cAAM,gBAAgB;IACpB,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,YAAY,CAA+C;;IAMnE,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,OAAO;IAoBf,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAI/C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI/C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/B,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIrC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIzD,iBAAiB,IAAI,WAAW,EAAE;IAIlC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;CAG/C;AAGD,eAAO,MAAM,YAAY,kBAAyB,CAAC;AAEnD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,UAAU,CAyB/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,MAAW,GAAG,UAAU,CAsBhE"}
|