@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.
Files changed (124) hide show
  1. package/.claude/settings.json +35 -35
  2. package/.claude/settings.local.json +30 -24
  3. package/.claude/vibe/constitution.md +184 -184
  4. package/.claude/vibe/rules/core/communication-guide.md +104 -104
  5. package/.claude/vibe/rules/core/development-philosophy.md +52 -52
  6. package/.claude/vibe/rules/core/quick-start.md +120 -120
  7. package/.claude/vibe/rules/languages/dart-flutter.md +509 -509
  8. package/.claude/vibe/rules/languages/go.md +396 -396
  9. package/.claude/vibe/rules/languages/java-spring.md +586 -586
  10. package/.claude/vibe/rules/languages/kotlin-android.md +491 -491
  11. package/.claude/vibe/rules/languages/python-django.md +371 -371
  12. package/.claude/vibe/rules/languages/python-fastapi.md +386 -386
  13. package/.claude/vibe/rules/languages/rust.md +425 -425
  14. package/.claude/vibe/rules/languages/swift-ios.md +516 -516
  15. package/.claude/vibe/rules/languages/typescript-nextjs.md +441 -441
  16. package/.claude/vibe/rules/languages/typescript-node.md +375 -375
  17. package/.claude/vibe/rules/languages/typescript-nuxt.md +521 -521
  18. package/.claude/vibe/rules/languages/typescript-react-native.md +446 -446
  19. package/.claude/vibe/rules/languages/typescript-react.md +525 -525
  20. package/.claude/vibe/rules/languages/typescript-vue.md +353 -353
  21. package/.claude/vibe/rules/quality/bdd-contract-testing.md +388 -388
  22. package/.claude/vibe/rules/quality/checklist.md +276 -276
  23. package/.claude/vibe/rules/quality/testing-strategy.md +437 -437
  24. package/.claude/vibe/rules/standards/anti-patterns.md +369 -369
  25. package/.claude/vibe/rules/standards/code-structure.md +291 -291
  26. package/.claude/vibe/rules/standards/complexity-metrics.md +312 -312
  27. package/.claude/vibe/rules/standards/naming-conventions.md +198 -198
  28. package/.claude/vibe/setup.sh +31 -31
  29. package/.claude/vibe/templates/constitution-template.md +184 -184
  30. package/.claude/vibe/templates/contract-backend-template.md +517 -517
  31. package/.claude/vibe/templates/contract-frontend-template.md +594 -594
  32. package/.claude/vibe/templates/feature-template.md +96 -96
  33. package/.claude/vibe/templates/spec-template.md +199 -199
  34. package/CLAUDE.md +345 -345
  35. package/LICENSE +21 -21
  36. package/README.md +817 -744
  37. package/agents/compounder.md +261 -261
  38. package/agents/diagrammer.md +178 -178
  39. package/agents/e2e-tester.md +266 -266
  40. package/agents/explorer.md +48 -48
  41. package/agents/implementer.md +53 -53
  42. package/agents/research/best-practices-agent.md +139 -139
  43. package/agents/research/codebase-patterns-agent.md +147 -147
  44. package/agents/research/framework-docs-agent.md +181 -181
  45. package/agents/research/security-advisory-agent.md +167 -167
  46. package/agents/review/architecture-reviewer.md +107 -107
  47. package/agents/review/complexity-reviewer.md +116 -116
  48. package/agents/review/data-integrity-reviewer.md +88 -88
  49. package/agents/review/git-history-reviewer.md +103 -103
  50. package/agents/review/performance-reviewer.md +86 -86
  51. package/agents/review/python-reviewer.md +152 -152
  52. package/agents/review/rails-reviewer.md +139 -139
  53. package/agents/review/react-reviewer.md +144 -144
  54. package/agents/review/security-reviewer.md +80 -80
  55. package/agents/review/simplicity-reviewer.md +140 -140
  56. package/agents/review/test-coverage-reviewer.md +116 -116
  57. package/agents/review/typescript-reviewer.md +127 -127
  58. package/agents/searcher.md +54 -54
  59. package/agents/simplifier.md +119 -119
  60. package/agents/tester.md +49 -49
  61. package/agents/ui-previewer.md +137 -137
  62. package/commands/vibe.analyze.md +260 -199
  63. package/commands/vibe.reason.md +223 -183
  64. package/commands/vibe.review.md +213 -160
  65. package/commands/vibe.run.md +842 -836
  66. package/commands/vibe.spec.md +405 -383
  67. package/commands/vibe.utils.md +101 -101
  68. package/commands/vibe.verify.md +282 -241
  69. package/dist/cli/index.d.ts.map +1 -1
  70. package/dist/cli/index.js +422 -385
  71. package/dist/cli/index.js.map +1 -1
  72. package/dist/lib/MemoryManager.d.ts.map +1 -1
  73. package/dist/lib/MemoryManager.js +119 -114
  74. package/dist/lib/MemoryManager.js.map +1 -1
  75. package/dist/lib/PythonParser.js +108 -108
  76. package/dist/lib/gemini-mcp.js +15 -15
  77. package/dist/lib/gemini-oauth.js +35 -35
  78. package/dist/lib/gpt-mcp.js +17 -17
  79. package/dist/lib/gpt-oauth.js +44 -44
  80. package/dist/orchestrator/agentDiscovery.d.ts +18 -0
  81. package/dist/orchestrator/agentDiscovery.d.ts.map +1 -0
  82. package/dist/orchestrator/agentDiscovery.js +174 -0
  83. package/dist/orchestrator/agentDiscovery.js.map +1 -0
  84. package/dist/orchestrator/backgroundAgent.d.ts +31 -0
  85. package/dist/orchestrator/backgroundAgent.d.ts.map +1 -0
  86. package/dist/orchestrator/backgroundAgent.js +325 -0
  87. package/dist/orchestrator/backgroundAgent.js.map +1 -0
  88. package/dist/orchestrator/index.d.ts +58 -0
  89. package/dist/orchestrator/index.d.ts.map +1 -0
  90. package/dist/orchestrator/index.js +115 -0
  91. package/dist/orchestrator/index.js.map +1 -0
  92. package/dist/orchestrator/orchestrator.d.ts +82 -0
  93. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  94. package/dist/orchestrator/orchestrator.js +257 -0
  95. package/dist/orchestrator/orchestrator.js.map +1 -0
  96. package/dist/orchestrator/parallelResearch.d.ts +19 -0
  97. package/dist/orchestrator/parallelResearch.d.ts.map +1 -0
  98. package/dist/orchestrator/parallelResearch.js +214 -0
  99. package/dist/orchestrator/parallelResearch.js.map +1 -0
  100. package/dist/orchestrator/types.d.ts +109 -0
  101. package/dist/orchestrator/types.d.ts.map +1 -0
  102. package/dist/orchestrator/types.js +5 -0
  103. package/dist/orchestrator/types.js.map +1 -0
  104. package/dist/tools/analytics/getUsageAnalytics.js +12 -12
  105. package/dist/tools/index.d.ts +50 -0
  106. package/dist/tools/index.d.ts.map +1 -0
  107. package/dist/tools/index.js +61 -0
  108. package/dist/tools/index.js.map +1 -0
  109. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  110. package/dist/tools/memory/getMemoryGraph.js +12 -12
  111. package/dist/tools/memory/getSessionContext.js +9 -9
  112. package/dist/tools/memory/linkMemories.js +14 -14
  113. package/dist/tools/memory/listMemories.js +4 -4
  114. package/dist/tools/memory/recallMemory.js +4 -4
  115. package/dist/tools/memory/saveMemory.js +4 -4
  116. package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
  117. package/dist/tools/planning/generatePrd.js +46 -46
  118. package/dist/tools/prompt/enhancePromptGemini.js +160 -160
  119. package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
  120. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  121. package/hooks/hooks.json +121 -103
  122. package/package.json +75 -69
  123. package/skills/git-worktree.md +178 -178
  124. 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"}