@su-record/vibe 2.3.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +35 -35
- package/.claude/settings.local.json +30 -24
- package/.claude/vibe/constitution.md +184 -184
- package/.claude/vibe/rules/core/communication-guide.md +104 -104
- package/.claude/vibe/rules/core/development-philosophy.md +52 -52
- package/.claude/vibe/rules/core/quick-start.md +120 -120
- package/.claude/vibe/rules/languages/dart-flutter.md +509 -509
- package/.claude/vibe/rules/languages/go.md +396 -396
- package/.claude/vibe/rules/languages/java-spring.md +586 -586
- package/.claude/vibe/rules/languages/kotlin-android.md +491 -491
- package/.claude/vibe/rules/languages/python-django.md +371 -371
- package/.claude/vibe/rules/languages/python-fastapi.md +386 -386
- package/.claude/vibe/rules/languages/rust.md +425 -425
- package/.claude/vibe/rules/languages/swift-ios.md +516 -516
- package/.claude/vibe/rules/languages/typescript-nextjs.md +441 -441
- package/.claude/vibe/rules/languages/typescript-node.md +375 -375
- package/.claude/vibe/rules/languages/typescript-nuxt.md +521 -521
- package/.claude/vibe/rules/languages/typescript-react-native.md +446 -446
- package/.claude/vibe/rules/languages/typescript-react.md +525 -525
- package/.claude/vibe/rules/languages/typescript-vue.md +353 -353
- package/.claude/vibe/rules/quality/bdd-contract-testing.md +388 -388
- package/.claude/vibe/rules/quality/checklist.md +276 -276
- package/.claude/vibe/rules/quality/testing-strategy.md +437 -437
- package/.claude/vibe/rules/standards/anti-patterns.md +369 -369
- package/.claude/vibe/rules/standards/code-structure.md +291 -291
- package/.claude/vibe/rules/standards/complexity-metrics.md +312 -312
- package/.claude/vibe/rules/standards/naming-conventions.md +198 -198
- package/.claude/vibe/setup.sh +31 -31
- package/.claude/vibe/templates/constitution-template.md +184 -184
- package/.claude/vibe/templates/contract-backend-template.md +517 -517
- package/.claude/vibe/templates/contract-frontend-template.md +594 -594
- package/.claude/vibe/templates/feature-template.md +96 -96
- package/.claude/vibe/templates/spec-template.md +199 -199
- package/CLAUDE.md +345 -345
- package/LICENSE +21 -21
- package/README.md +817 -744
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer.md +48 -48
- package/agents/implementer.md +53 -53
- package/agents/research/best-practices-agent.md +139 -139
- package/agents/research/codebase-patterns-agent.md +147 -147
- package/agents/research/framework-docs-agent.md +181 -181
- package/agents/research/security-advisory-agent.md +167 -167
- 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 +152 -152
- 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 +119 -119
- package/agents/tester.md +49 -49
- package/agents/ui-previewer.md +137 -137
- package/commands/vibe.analyze.md +260 -199
- package/commands/vibe.reason.md +223 -183
- package/commands/vibe.review.md +213 -160
- package/commands/vibe.run.md +842 -836
- package/commands/vibe.spec.md +405 -383
- package/commands/vibe.utils.md +101 -101
- package/commands/vibe.verify.md +282 -241
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +422 -385
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/MemoryManager.d.ts.map +1 -1
- package/dist/lib/MemoryManager.js +119 -114
- package/dist/lib/MemoryManager.js.map +1 -1
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/gemini-mcp.js +15 -15
- package/dist/lib/gemini-oauth.js +35 -35
- package/dist/lib/gpt-mcp.js +17 -17
- package/dist/lib/gpt-oauth.js +44 -44
- package/dist/orchestrator/agentDiscovery.d.ts +18 -0
- package/dist/orchestrator/agentDiscovery.d.ts.map +1 -0
- package/dist/orchestrator/agentDiscovery.js +174 -0
- package/dist/orchestrator/agentDiscovery.js.map +1 -0
- package/dist/orchestrator/backgroundAgent.d.ts +31 -0
- package/dist/orchestrator/backgroundAgent.d.ts.map +1 -0
- package/dist/orchestrator/backgroundAgent.js +325 -0
- package/dist/orchestrator/backgroundAgent.js.map +1 -0
- package/dist/orchestrator/index.d.ts +58 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +115 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +82 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator.js +257 -0
- package/dist/orchestrator/orchestrator.js.map +1 -0
- package/dist/orchestrator/parallelResearch.d.ts +19 -0
- package/dist/orchestrator/parallelResearch.d.ts.map +1 -0
- package/dist/orchestrator/parallelResearch.js +214 -0
- package/dist/orchestrator/parallelResearch.js.map +1 -0
- package/dist/orchestrator/types.d.ts +109 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +5 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/tools/analytics/getUsageAnalytics.js +12 -12
- package/dist/tools/index.d.ts +50 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +61 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
- package/dist/tools/planning/generatePrd.js +46 -46
- package/dist/tools/prompt/enhancePromptGemini.js +160 -160
- package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/hooks/hooks.json +121 -103
- package/package.json +75 -69
- package/skills/git-worktree.md +178 -178
- package/skills/priority-todos.md +236 -236
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VIBE Orchestrator - Agent SDK 기반 멀티 에이전트 오케스트레이션
|
|
3
|
+
*
|
|
4
|
+
* 사용법 (hooks에서):
|
|
5
|
+
* node -e "import('@su-record/vibe/orchestrator').then(o => o.parallelResearch({...})).then(console.log)"
|
|
6
|
+
*
|
|
7
|
+
* 사용법 (코드에서):
|
|
8
|
+
* import { VibeOrchestrator, parallelResearch } from '@su-record/vibe/orchestrator';
|
|
9
|
+
*/
|
|
10
|
+
// Agent Discovery
|
|
11
|
+
export { discoverAgents, loadAgent, listAgentsByCategory } from './agentDiscovery.js';
|
|
12
|
+
// Parallel Research
|
|
13
|
+
export { parallelResearch, researchFeature, createResearchTasks } from './parallelResearch.js';
|
|
14
|
+
// Background Agent
|
|
15
|
+
export { launchBackgroundAgent, getBackgroundAgentResult, cancelBackgroundAgent, listActiveSessions, getSessionHistory, launchParallelAgents } from './backgroundAgent.js';
|
|
16
|
+
// Main Orchestrator Class
|
|
17
|
+
export { VibeOrchestrator, getOrchestrator } from './orchestrator.js';
|
|
18
|
+
// ============================================
|
|
19
|
+
// 간편 함수 (hooks에서 직접 호출용)
|
|
20
|
+
// ============================================
|
|
21
|
+
import { VibeOrchestrator } from './orchestrator.js';
|
|
22
|
+
import { parallelResearch as _parallelResearch, createResearchTasks } from './parallelResearch.js';
|
|
23
|
+
import { launchBackgroundAgent as _launchBackgroundAgent, getBackgroundAgentResult as _getBackgroundAgentResult, listActiveSessions, getSessionHistory } from './backgroundAgent.js';
|
|
24
|
+
import { discoverAgents as _discoverAgents } from './agentDiscovery.js';
|
|
25
|
+
/**
|
|
26
|
+
* 기능 기반 병렬 리서치 (간편 API)
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* node -e "import('@su-record/vibe/orchestrator').then(o => o.research('login feature', ['React', 'TypeScript'])).then(console.log)"
|
|
30
|
+
*/
|
|
31
|
+
export async function research(feature, techStack = [], projectPath = process.cwd()) {
|
|
32
|
+
const tasks = createResearchTasks(feature, techStack);
|
|
33
|
+
return _parallelResearch({ tasks, projectPath });
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 백그라운드 에이전트 시작 (간편 API)
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* node -e "import('@su-record/vibe/orchestrator').then(o => o.runAgent('Fix the login bug', 'bug-fixer')).then(console.log)"
|
|
40
|
+
*/
|
|
41
|
+
export async function runAgent(prompt, agentName, projectPath = process.cwd()) {
|
|
42
|
+
return _launchBackgroundAgent({
|
|
43
|
+
prompt,
|
|
44
|
+
agentName: agentName || `agent-${Date.now()}`,
|
|
45
|
+
projectPath
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 에이전트 결과 조회 (간편 API)
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* node -e "import('@su-record/vibe/orchestrator').then(o => o.getResult('session-id')).then(console.log)"
|
|
53
|
+
*/
|
|
54
|
+
export async function getResult(sessionId) {
|
|
55
|
+
return _getBackgroundAgentResult(sessionId);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 에이전트 목록 조회 (간편 API)
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* node -e "import('@su-record/vibe/orchestrator').then(o => o.listAgents()).then(console.log)"
|
|
62
|
+
*/
|
|
63
|
+
export async function listAgents(category, projectPath = process.cwd()) {
|
|
64
|
+
return _discoverAgents({ projectPath, category });
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 병렬 리뷰 실행 (간편 API)
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* node -e "import('@su-record/vibe/orchestrator').then(o => o.review(['src/api/user.ts'], ['TypeScript'])).then(console.log)"
|
|
71
|
+
*/
|
|
72
|
+
export async function review(filePaths, techStack = [], projectPath = process.cwd()) {
|
|
73
|
+
const orchestrator = new VibeOrchestrator({ projectPath });
|
|
74
|
+
const results = await orchestrator.runParallelReview(filePaths, techStack);
|
|
75
|
+
// 결과 포맷팅
|
|
76
|
+
let summary = `## Parallel Review Results\n\n`;
|
|
77
|
+
summary += `**Files**: ${filePaths.length}\n`;
|
|
78
|
+
summary += `**Reviewers**: ${results.length}\n\n`;
|
|
79
|
+
const successCount = results.filter(r => r.success).length;
|
|
80
|
+
summary += `**Success**: ${successCount}/${results.length}\n\n`;
|
|
81
|
+
for (const result of results) {
|
|
82
|
+
const status = result.success ? '✅' : '❌';
|
|
83
|
+
summary += `### ${status} ${result.agentName}\n`;
|
|
84
|
+
if (result.success) {
|
|
85
|
+
summary += result.result.slice(0, 500);
|
|
86
|
+
if (result.result.length > 500)
|
|
87
|
+
summary += '...';
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
summary += `Error: ${result.error}`;
|
|
91
|
+
}
|
|
92
|
+
summary += '\n\n';
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
content: [{ type: 'text', text: summary }],
|
|
96
|
+
results
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 오케스트레이터 상태 확인
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* node -e "import('@su-record/vibe/orchestrator').then(o => o.status()).then(console.log)"
|
|
104
|
+
*/
|
|
105
|
+
export function status() {
|
|
106
|
+
const active = listActiveSessions();
|
|
107
|
+
const history = getSessionHistory(5);
|
|
108
|
+
return {
|
|
109
|
+
content: [{
|
|
110
|
+
type: 'text',
|
|
111
|
+
text: `## Orchestrator Status\n\n${active.content[0].text}\n\n${history.content[0].text}`
|
|
112
|
+
}]
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestrator - 메인 오케스트레이터 클래스
|
|
3
|
+
* /vibe.* 명령어에서 사용할 중앙 오케스트레이션 로직
|
|
4
|
+
*/
|
|
5
|
+
import { OrchestratorOptions, AgentResult, BackgroundAgentArgs, BackgroundAgentHandle, ParallelResearchArgs, ParallelResearchResult, DiscoveredAgent } from './types.js';
|
|
6
|
+
import { ToolResult } from '../types/tool.js';
|
|
7
|
+
/**
|
|
8
|
+
* Vibe Orchestrator
|
|
9
|
+
* 모든 /vibe.* 명령어의 오케스트레이션을 담당
|
|
10
|
+
*/
|
|
11
|
+
export declare class VibeOrchestrator {
|
|
12
|
+
private options;
|
|
13
|
+
private memoryManager;
|
|
14
|
+
constructor(options?: OrchestratorOptions);
|
|
15
|
+
/**
|
|
16
|
+
* 에이전트 탐색
|
|
17
|
+
*/
|
|
18
|
+
discoverAgents(category?: string): Promise<DiscoveredAgent[]>;
|
|
19
|
+
/**
|
|
20
|
+
* 특정 에이전트 로드
|
|
21
|
+
*/
|
|
22
|
+
loadAgent(agentName: string): Promise<DiscoveredAgent | null>;
|
|
23
|
+
/**
|
|
24
|
+
* 병렬 리서치 실행
|
|
25
|
+
*/
|
|
26
|
+
runParallelResearch(args: ParallelResearchArgs): Promise<ParallelResearchResult>;
|
|
27
|
+
/**
|
|
28
|
+
* 기능 기반 리서치 (간편 API)
|
|
29
|
+
*/
|
|
30
|
+
researchFeature(feature: string, techStack?: string[]): Promise<ParallelResearchResult>;
|
|
31
|
+
/**
|
|
32
|
+
* 백그라운드 에이전트 시작
|
|
33
|
+
*/
|
|
34
|
+
launchAgent(args: BackgroundAgentArgs): Promise<BackgroundAgentHandle | null>;
|
|
35
|
+
/**
|
|
36
|
+
* 여러 에이전트 동시 실행
|
|
37
|
+
*/
|
|
38
|
+
launchAgents(configs: BackgroundAgentArgs[]): Promise<BackgroundAgentHandle[]>;
|
|
39
|
+
/**
|
|
40
|
+
* 에이전트 결과 조회
|
|
41
|
+
*/
|
|
42
|
+
getAgentResult(sessionId: string): Promise<AgentResult | null>;
|
|
43
|
+
/**
|
|
44
|
+
* 에이전트 취소
|
|
45
|
+
*/
|
|
46
|
+
cancelAgent(sessionId: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* 활성 세션 목록
|
|
49
|
+
*/
|
|
50
|
+
getActiveSessions(): ToolResult;
|
|
51
|
+
/**
|
|
52
|
+
* 세션 히스토리
|
|
53
|
+
*/
|
|
54
|
+
getHistory(limit?: number): ToolResult;
|
|
55
|
+
/**
|
|
56
|
+
* 리뷰 에이전트 병렬 실행
|
|
57
|
+
* /vibe.review에서 사용
|
|
58
|
+
*/
|
|
59
|
+
runParallelReview(filePaths: string[], techStack?: string[]): Promise<AgentResult[]>;
|
|
60
|
+
/**
|
|
61
|
+
* 기술 스택에 맞는 에이전트 필터링
|
|
62
|
+
*/
|
|
63
|
+
private filterRelevantAgents;
|
|
64
|
+
/**
|
|
65
|
+
* 리뷰 프롬프트 생성
|
|
66
|
+
*/
|
|
67
|
+
private buildReviewPrompt;
|
|
68
|
+
/**
|
|
69
|
+
* 결과 저장
|
|
70
|
+
*/
|
|
71
|
+
private saveOrchestratorResult;
|
|
72
|
+
/**
|
|
73
|
+
* 메모리에 결과 저장
|
|
74
|
+
*/
|
|
75
|
+
saveToMemory(key: string, value: string, category?: string): void;
|
|
76
|
+
/**
|
|
77
|
+
* 메모리에서 결과 조회
|
|
78
|
+
*/
|
|
79
|
+
getFromMemory(key: string): string | null;
|
|
80
|
+
}
|
|
81
|
+
export declare function getOrchestrator(options?: OrchestratorOptions): VibeOrchestrator;
|
|
82
|
+
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,mBAAmB,EAEnB,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiB9C;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,OAAO,GAAE,mBAAwB;IAW7C;;OAEG;IACG,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAYnE;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAInE;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAuBtF;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAKjG;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAYnF;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAcpF;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IASpE;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAKvC;;OAEG;IACH,iBAAiB,IAAI,UAAU;IAI/B;;OAEG;IACH,UAAU,CAAC,KAAK,GAAE,MAAW,GAAG,UAAU;IAI1C;;;OAGG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAkC9F;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuC5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;YACW,sBAAsB;IAsBpC;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAuB,GAAG,IAAI;IAIjF;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAI1C;AAKD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,CAK/E"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestrator - 메인 오케스트레이터 클래스
|
|
3
|
+
* /vibe.* 명령어에서 사용할 중앙 오케스트레이션 로직
|
|
4
|
+
*/
|
|
5
|
+
import { promises as fs } from 'fs';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import { discoverAgents, loadAgent, listAgentsByCategory } from './agentDiscovery.js';
|
|
8
|
+
import { parallelResearch, createResearchTasks } from './parallelResearch.js';
|
|
9
|
+
import { launchBackgroundAgent, getBackgroundAgentResult, cancelBackgroundAgent, listActiveSessions, getSessionHistory, launchParallelAgents } from './backgroundAgent.js';
|
|
10
|
+
import { MemoryManager } from '../lib/MemoryManager.js';
|
|
11
|
+
/**
|
|
12
|
+
* Vibe Orchestrator
|
|
13
|
+
* 모든 /vibe.* 명령어의 오케스트레이션을 담당
|
|
14
|
+
*/
|
|
15
|
+
export class VibeOrchestrator {
|
|
16
|
+
options;
|
|
17
|
+
memoryManager;
|
|
18
|
+
constructor(options = {}) {
|
|
19
|
+
this.options = {
|
|
20
|
+
projectPath: process.cwd(),
|
|
21
|
+
verbose: false,
|
|
22
|
+
saveResults: true,
|
|
23
|
+
resultsPath: '.claude/vibe/orchestrator',
|
|
24
|
+
...options
|
|
25
|
+
};
|
|
26
|
+
this.memoryManager = MemoryManager.getInstance(this.options.projectPath);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 에이전트 탐색
|
|
30
|
+
*/
|
|
31
|
+
async discoverAgents(category) {
|
|
32
|
+
const result = await discoverAgents({
|
|
33
|
+
projectPath: this.options.projectPath,
|
|
34
|
+
category
|
|
35
|
+
});
|
|
36
|
+
if ('agents' in result) {
|
|
37
|
+
return result.agents;
|
|
38
|
+
}
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 특정 에이전트 로드
|
|
43
|
+
*/
|
|
44
|
+
async loadAgent(agentName) {
|
|
45
|
+
return loadAgent(agentName, this.options.projectPath);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 병렬 리서치 실행
|
|
49
|
+
*/
|
|
50
|
+
async runParallelResearch(args) {
|
|
51
|
+
const result = await parallelResearch({
|
|
52
|
+
...args,
|
|
53
|
+
projectPath: args.projectPath || this.options.projectPath
|
|
54
|
+
});
|
|
55
|
+
// 결과 저장
|
|
56
|
+
if (this.options.saveResults && 'results' in result) {
|
|
57
|
+
await this.saveOrchestratorResult('research', result);
|
|
58
|
+
}
|
|
59
|
+
if ('results' in result) {
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
results: [],
|
|
64
|
+
totalDuration: 0,
|
|
65
|
+
successCount: 0,
|
|
66
|
+
failureCount: 0
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 기능 기반 리서치 (간편 API)
|
|
71
|
+
*/
|
|
72
|
+
async researchFeature(feature, techStack = []) {
|
|
73
|
+
const tasks = createResearchTasks(feature, techStack);
|
|
74
|
+
return this.runParallelResearch({ tasks });
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 백그라운드 에이전트 시작
|
|
78
|
+
*/
|
|
79
|
+
async launchAgent(args) {
|
|
80
|
+
const result = await launchBackgroundAgent({
|
|
81
|
+
...args,
|
|
82
|
+
projectPath: args.projectPath || this.options.projectPath
|
|
83
|
+
});
|
|
84
|
+
if ('handle' in result) {
|
|
85
|
+
return result.handle;
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 여러 에이전트 동시 실행
|
|
91
|
+
*/
|
|
92
|
+
async launchAgents(configs) {
|
|
93
|
+
const result = await launchParallelAgents(configs.map(c => ({
|
|
94
|
+
...c,
|
|
95
|
+
projectPath: c.projectPath || this.options.projectPath
|
|
96
|
+
})));
|
|
97
|
+
if ('handles' in result) {
|
|
98
|
+
return result.handles;
|
|
99
|
+
}
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 에이전트 결과 조회
|
|
104
|
+
*/
|
|
105
|
+
async getAgentResult(sessionId) {
|
|
106
|
+
const result = await getBackgroundAgentResult(sessionId);
|
|
107
|
+
if ('result' in result) {
|
|
108
|
+
return result.result;
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* 에이전트 취소
|
|
114
|
+
*/
|
|
115
|
+
cancelAgent(sessionId) {
|
|
116
|
+
const result = cancelBackgroundAgent(sessionId);
|
|
117
|
+
return result.content[0].text.includes('cancelled');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 활성 세션 목록
|
|
121
|
+
*/
|
|
122
|
+
getActiveSessions() {
|
|
123
|
+
return listActiveSessions();
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 세션 히스토리
|
|
127
|
+
*/
|
|
128
|
+
getHistory(limit = 10) {
|
|
129
|
+
return getSessionHistory(limit);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 리뷰 에이전트 병렬 실행
|
|
133
|
+
* /vibe.review에서 사용
|
|
134
|
+
*/
|
|
135
|
+
async runParallelReview(filePaths, techStack = []) {
|
|
136
|
+
// 리뷰 에이전트 탐색
|
|
137
|
+
const reviewAgents = await listAgentsByCategory('review', this.options.projectPath);
|
|
138
|
+
// 기술 스택에 맞는 에이전트만 필터링
|
|
139
|
+
const relevantAgents = this.filterRelevantAgents(reviewAgents, techStack);
|
|
140
|
+
// 각 에이전트에 대한 프롬프트 생성
|
|
141
|
+
const agentConfigs = relevantAgents.map(agent => ({
|
|
142
|
+
agentName: agent.name,
|
|
143
|
+
prompt: this.buildReviewPrompt(agent, filePaths),
|
|
144
|
+
model: 'claude-haiku-3-5', // 리뷰는 빠른 모델
|
|
145
|
+
maxTurns: 3,
|
|
146
|
+
allowedTools: ['Read', 'Glob', 'Grep']
|
|
147
|
+
}));
|
|
148
|
+
// 병렬 실행
|
|
149
|
+
const handles = await this.launchAgents(agentConfigs);
|
|
150
|
+
// 모든 결과 수집
|
|
151
|
+
const results = [];
|
|
152
|
+
for (const handle of handles) {
|
|
153
|
+
const result = await handle.getResult();
|
|
154
|
+
results.push(result);
|
|
155
|
+
}
|
|
156
|
+
// 결과 저장
|
|
157
|
+
if (this.options.saveResults) {
|
|
158
|
+
await this.saveOrchestratorResult('review', { results, filePaths, techStack });
|
|
159
|
+
}
|
|
160
|
+
return results;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 기술 스택에 맞는 에이전트 필터링
|
|
164
|
+
*/
|
|
165
|
+
filterRelevantAgents(agents, techStack) {
|
|
166
|
+
// 항상 실행할 코어 리뷰어
|
|
167
|
+
const coreReviewers = [
|
|
168
|
+
'security-reviewer',
|
|
169
|
+
'performance-reviewer',
|
|
170
|
+
'architecture-reviewer',
|
|
171
|
+
'complexity-reviewer',
|
|
172
|
+
'simplicity-reviewer',
|
|
173
|
+
'data-integrity-reviewer',
|
|
174
|
+
'test-coverage-reviewer',
|
|
175
|
+
'git-history-reviewer'
|
|
176
|
+
];
|
|
177
|
+
// 스택별 리뷰어 매핑
|
|
178
|
+
const stackReviewers = {
|
|
179
|
+
typescript: ['typescript-reviewer'],
|
|
180
|
+
python: ['python-reviewer'],
|
|
181
|
+
react: ['react-reviewer'],
|
|
182
|
+
rails: ['rails-reviewer'],
|
|
183
|
+
ruby: ['rails-reviewer']
|
|
184
|
+
};
|
|
185
|
+
const relevantNames = new Set(coreReviewers);
|
|
186
|
+
// 기술 스택에 맞는 리뷰어 추가
|
|
187
|
+
for (const tech of techStack) {
|
|
188
|
+
const reviewers = stackReviewers[tech.toLowerCase()];
|
|
189
|
+
if (reviewers) {
|
|
190
|
+
reviewers.forEach(r => relevantNames.add(r));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return agents.filter(agent => {
|
|
194
|
+
const normalizedName = agent.name.toLowerCase().replace(/\s+/g, '-');
|
|
195
|
+
return relevantNames.has(normalizedName) ||
|
|
196
|
+
Array.from(relevantNames).some(r => normalizedName.includes(r));
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* 리뷰 프롬프트 생성
|
|
201
|
+
*/
|
|
202
|
+
buildReviewPrompt(agent, filePaths) {
|
|
203
|
+
return `You are a ${agent.name}. Review the following files for issues in your domain:
|
|
204
|
+
|
|
205
|
+
Files to review:
|
|
206
|
+
${filePaths.map(f => `- ${f}`).join('\n')}
|
|
207
|
+
|
|
208
|
+
${agent.content}
|
|
209
|
+
|
|
210
|
+
Provide findings in this format:
|
|
211
|
+
- Priority: P1 (Critical), P2 (Important), P3 (Nice-to-have)
|
|
212
|
+
- Category: Your specialty area
|
|
213
|
+
- Location: file:line
|
|
214
|
+
- Issue: Description
|
|
215
|
+
- Fix: Recommendation`;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* 결과 저장
|
|
219
|
+
*/
|
|
220
|
+
async saveOrchestratorResult(type, data) {
|
|
221
|
+
const resultsDir = path.join(this.options.projectPath, this.options.resultsPath);
|
|
222
|
+
try {
|
|
223
|
+
await fs.mkdir(resultsDir, { recursive: true });
|
|
224
|
+
const filename = `${type}-${Date.now()}.json`;
|
|
225
|
+
const filepath = path.join(resultsDir, filename);
|
|
226
|
+
await fs.writeFile(filepath, JSON.stringify(data, null, 2));
|
|
227
|
+
if (this.options.verbose) {
|
|
228
|
+
console.log(`Saved orchestrator result: ${filepath}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
console.error('Failed to save orchestrator result:', error);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* 메모리에 결과 저장
|
|
237
|
+
*/
|
|
238
|
+
saveToMemory(key, value, category = 'orchestrator') {
|
|
239
|
+
this.memoryManager.save(key, value, category);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* 메모리에서 결과 조회
|
|
243
|
+
*/
|
|
244
|
+
getFromMemory(key) {
|
|
245
|
+
const memory = this.memoryManager.recall(key);
|
|
246
|
+
return memory?.value || null;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// 싱글톤 인스턴스 (선택적 사용)
|
|
250
|
+
let defaultOrchestrator = null;
|
|
251
|
+
export function getOrchestrator(options) {
|
|
252
|
+
if (!defaultOrchestrator || options) {
|
|
253
|
+
defaultOrchestrator = new VibeOrchestrator(options);
|
|
254
|
+
}
|
|
255
|
+
return defaultOrchestrator;
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parallel Research - 병렬 리서치 에이전트 실행
|
|
3
|
+
* Agent SDK의 query() 함수를 사용하여 여러 에이전트를 동시에 실행
|
|
4
|
+
*/
|
|
5
|
+
import { ParallelResearchArgs, ResearchTask } from './types.js';
|
|
6
|
+
import { ToolResult } from '../types/tool.js';
|
|
7
|
+
/**
|
|
8
|
+
* 기본 리서치 태스크 템플릿
|
|
9
|
+
*/
|
|
10
|
+
export declare function createResearchTasks(feature: string, techStack?: string[]): ResearchTask[];
|
|
11
|
+
/**
|
|
12
|
+
* 병렬 리서치 실행
|
|
13
|
+
*/
|
|
14
|
+
export declare function parallelResearch(args: ParallelResearchArgs): Promise<ToolResult>;
|
|
15
|
+
/**
|
|
16
|
+
* 기능 기반 병렬 리서치 (간편 API)
|
|
17
|
+
*/
|
|
18
|
+
export declare function researchFeature(feature: string, techStack?: string[], projectPath?: string): Promise<ToolResult>;
|
|
19
|
+
//# sourceMappingURL=parallelResearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parallelResearch.d.ts","sourceRoot":"","sources":["../../src/orchestrator/parallelResearch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,oBAAoB,EAEpB,YAAY,EAGb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiB9C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,YAAY,EAAE,CAiD7F;AA4FD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwEtF;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAM,EAAO,EACxB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,UAAU,CAAC,CAGrB"}
|