@su-record/vibe 2.3.2 → 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 (118) 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 -245
  63. package/commands/vibe.reason.md +223 -223
  64. package/commands/vibe.review.md +213 -200
  65. package/commands/vibe.run.md +842 -838
  66. package/commands/vibe.spec.md +405 -419
  67. package/commands/vibe.utils.md +101 -101
  68. package/commands/vibe.verify.md +282 -282
  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.js +92 -92
  73. package/dist/lib/PythonParser.js +108 -108
  74. package/dist/lib/gemini-mcp.js +15 -15
  75. package/dist/lib/gemini-oauth.js +35 -35
  76. package/dist/lib/gpt-mcp.js +17 -17
  77. package/dist/lib/gpt-oauth.js +44 -44
  78. package/dist/orchestrator/agentDiscovery.d.ts +18 -0
  79. package/dist/orchestrator/agentDiscovery.d.ts.map +1 -0
  80. package/dist/orchestrator/agentDiscovery.js +174 -0
  81. package/dist/orchestrator/agentDiscovery.js.map +1 -0
  82. package/dist/orchestrator/backgroundAgent.d.ts +31 -0
  83. package/dist/orchestrator/backgroundAgent.d.ts.map +1 -0
  84. package/dist/orchestrator/backgroundAgent.js +325 -0
  85. package/dist/orchestrator/backgroundAgent.js.map +1 -0
  86. package/dist/orchestrator/index.d.ts +58 -0
  87. package/dist/orchestrator/index.d.ts.map +1 -0
  88. package/dist/orchestrator/index.js +115 -0
  89. package/dist/orchestrator/index.js.map +1 -0
  90. package/dist/orchestrator/orchestrator.d.ts +82 -0
  91. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  92. package/dist/orchestrator/orchestrator.js +257 -0
  93. package/dist/orchestrator/orchestrator.js.map +1 -0
  94. package/dist/orchestrator/parallelResearch.d.ts +19 -0
  95. package/dist/orchestrator/parallelResearch.d.ts.map +1 -0
  96. package/dist/orchestrator/parallelResearch.js +214 -0
  97. package/dist/orchestrator/parallelResearch.js.map +1 -0
  98. package/dist/orchestrator/types.d.ts +109 -0
  99. package/dist/orchestrator/types.d.ts.map +1 -0
  100. package/dist/orchestrator/types.js +5 -0
  101. package/dist/orchestrator/types.js.map +1 -0
  102. package/dist/tools/analytics/getUsageAnalytics.js +12 -12
  103. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  104. package/dist/tools/memory/getMemoryGraph.js +12 -12
  105. package/dist/tools/memory/getSessionContext.js +9 -9
  106. package/dist/tools/memory/linkMemories.js +14 -14
  107. package/dist/tools/memory/listMemories.js +4 -4
  108. package/dist/tools/memory/recallMemory.js +4 -4
  109. package/dist/tools/memory/saveMemory.js +4 -4
  110. package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
  111. package/dist/tools/planning/generatePrd.js +46 -46
  112. package/dist/tools/prompt/enhancePromptGemini.js +160 -160
  113. package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
  114. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  115. package/hooks/hooks.json +121 -121
  116. package/package.json +75 -73
  117. package/skills/git-worktree.md +178 -178
  118. package/skills/priority-todos.md +236 -236
@@ -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"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Parallel Research - 병렬 리서치 에이전트 실행
3
+ * Agent SDK의 query() 함수를 사용하여 여러 에이전트를 동시에 실행
4
+ */
5
+ // Agent SDK 동적 import (설치되지 않았을 경우 폴백)
6
+ let agentSdkQuery = null;
7
+ async function getQueryFunction() {
8
+ if (agentSdkQuery)
9
+ return agentSdkQuery;
10
+ try {
11
+ const sdk = await import('@anthropic-ai/claude-agent-sdk');
12
+ agentSdkQuery = sdk.query;
13
+ return agentSdkQuery;
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
19
+ /**
20
+ * 기본 리서치 태스크 템플릿
21
+ */
22
+ export function createResearchTasks(feature, techStack = []) {
23
+ const stackStr = techStack.length > 0 ? techStack.join(', ') : 'the project';
24
+ return [
25
+ {
26
+ name: 'best-practices-agent',
27
+ category: 'best-practices',
28
+ prompt: `Research best practices for implementing "${feature}" with ${stackStr}. Focus on:
29
+ 1. Industry-standard patterns
30
+ 2. Common pitfalls to avoid
31
+ 3. Recommended libraries/tools
32
+ 4. Testing strategies
33
+
34
+ Provide actionable recommendations.`
35
+ },
36
+ {
37
+ name: 'framework-docs-agent',
38
+ category: 'framework-docs',
39
+ prompt: `Find the latest documentation for ${stackStr} related to "${feature}". Include:
40
+ 1. Official API references
41
+ 2. Configuration options
42
+ 3. Migration guides if applicable
43
+ 4. Code examples from official docs
44
+
45
+ Use context7 MCP if available for up-to-date documentation.`
46
+ },
47
+ {
48
+ name: 'codebase-patterns-agent',
49
+ category: 'codebase-patterns',
50
+ prompt: `Analyze the current codebase for patterns related to "${feature}". Look for:
51
+ 1. Similar existing implementations
52
+ 2. Established conventions
53
+ 3. Reusable utilities
54
+ 4. Potential conflicts or dependencies
55
+
56
+ Use Glob and Grep to search the codebase.`
57
+ },
58
+ {
59
+ name: 'security-advisory-agent',
60
+ category: 'security-advisory',
61
+ prompt: `Review security considerations for "${feature}" with ${stackStr}. Check:
62
+ 1. OWASP Top 10 relevance
63
+ 2. Authentication/authorization requirements
64
+ 3. Data validation needs
65
+ 4. Known vulnerabilities in dependencies
66
+
67
+ Provide security recommendations.`
68
+ }
69
+ ];
70
+ }
71
+ /**
72
+ * 단일 리서치 태스크 실행
73
+ */
74
+ async function executeResearchTask(task, projectPath, timeout) {
75
+ const startTime = Date.now();
76
+ const query = await getQueryFunction();
77
+ // Agent SDK가 없으면 시뮬레이션 결과 반환
78
+ if (!query) {
79
+ return {
80
+ agentName: task.name,
81
+ sessionId: `simulated-${Date.now()}`,
82
+ result: `[Agent SDK not installed] Task "${task.name}" would execute: ${task.prompt.slice(0, 100)}...`,
83
+ success: true,
84
+ duration: Date.now() - startTime
85
+ };
86
+ }
87
+ try {
88
+ let sessionId = '';
89
+ let result = '';
90
+ // Agent SDK query 실행
91
+ const response = query({
92
+ prompt: task.prompt,
93
+ options: {
94
+ model: 'claude-haiku-3-5', // 리서치는 빠른 모델 사용
95
+ maxTurns: 3,
96
+ allowedTools: ['Read', 'Glob', 'Grep', 'WebFetch', 'WebSearch'],
97
+ cwd: projectPath
98
+ }
99
+ });
100
+ // 타임아웃 처리
101
+ const timeoutPromise = new Promise((_, reject) => {
102
+ setTimeout(() => reject(new Error('Research task timeout')), timeout);
103
+ });
104
+ // 스트리밍 결과 수집
105
+ const collectResult = async () => {
106
+ for await (const message of response) {
107
+ const msg = message;
108
+ if (msg.type === 'system' && msg.subtype === 'init' && msg.session_id) {
109
+ sessionId = msg.session_id;
110
+ }
111
+ if (msg.type === 'result' && msg.result) {
112
+ result = msg.result;
113
+ }
114
+ if (msg.type === 'assistant' && msg.message?.content) {
115
+ const textContent = msg.message.content
116
+ .filter(block => block.type === 'text' && block.text)
117
+ .map(block => block.text)
118
+ .join('\n');
119
+ if (textContent) {
120
+ result += textContent;
121
+ }
122
+ }
123
+ }
124
+ };
125
+ await Promise.race([collectResult(), timeoutPromise]);
126
+ return {
127
+ agentName: task.name,
128
+ sessionId,
129
+ result: result || 'No result collected',
130
+ success: true,
131
+ duration: Date.now() - startTime
132
+ };
133
+ }
134
+ catch (error) {
135
+ return {
136
+ agentName: task.name,
137
+ sessionId: '',
138
+ result: '',
139
+ success: false,
140
+ error: error instanceof Error ? error.message : String(error),
141
+ duration: Date.now() - startTime
142
+ };
143
+ }
144
+ }
145
+ /**
146
+ * 병렬 리서치 실행
147
+ */
148
+ export async function parallelResearch(args) {
149
+ const { tasks, projectPath = process.cwd(), maxConcurrency = 4, timeout = 60000 // 1분 기본 타임아웃
150
+ } = args;
151
+ const startTime = Date.now();
152
+ const results = [];
153
+ try {
154
+ // 동시성 제어를 위한 청크 분할
155
+ const chunks = [];
156
+ for (let i = 0; i < tasks.length; i += maxConcurrency) {
157
+ chunks.push(tasks.slice(i, i + maxConcurrency));
158
+ }
159
+ // 청크별 병렬 실행
160
+ for (const chunk of chunks) {
161
+ const chunkResults = await Promise.all(chunk.map(task => executeResearchTask(task, projectPath, timeout)));
162
+ results.push(...chunkResults);
163
+ }
164
+ const totalDuration = Date.now() - startTime;
165
+ const successCount = results.filter(r => r.success).length;
166
+ const failureCount = results.length - successCount;
167
+ // 결과 포맷팅
168
+ let summary = `## Parallel Research Results\n\n`;
169
+ summary += `**Duration**: ${(totalDuration / 1000).toFixed(1)}s\n`;
170
+ summary += `**Success**: ${successCount}/${results.length}\n\n`;
171
+ for (const result of results) {
172
+ const status = result.success ? '✅' : '❌';
173
+ summary += `### ${status} ${result.agentName}\n`;
174
+ summary += `Duration: ${(result.duration / 1000).toFixed(1)}s\n`;
175
+ if (result.success) {
176
+ // 결과 요약 (첫 500자)
177
+ const preview = result.result.length > 500
178
+ ? result.result.slice(0, 500) + '...'
179
+ : result.result;
180
+ summary += `\n${preview}\n`;
181
+ }
182
+ else {
183
+ summary += `Error: ${result.error}\n`;
184
+ }
185
+ summary += '\n---\n\n';
186
+ }
187
+ const fullResult = {
188
+ results,
189
+ totalDuration,
190
+ successCount,
191
+ failureCount
192
+ };
193
+ return {
194
+ content: [{ type: 'text', text: summary }],
195
+ ...fullResult
196
+ };
197
+ }
198
+ catch (error) {
199
+ return {
200
+ content: [{
201
+ type: 'text',
202
+ text: `Parallel research failed: ${error instanceof Error ? error.message : String(error)}`
203
+ }]
204
+ };
205
+ }
206
+ }
207
+ /**
208
+ * 기능 기반 병렬 리서치 (간편 API)
209
+ */
210
+ export async function researchFeature(feature, techStack = [], projectPath = process.cwd()) {
211
+ const tasks = createResearchTasks(feature, techStack);
212
+ return parallelResearch({ tasks, projectPath });
213
+ }
214
+ //# sourceMappingURL=parallelResearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallelResearch.js","sourceRoot":"","sources":["../../src/orchestrator/parallelResearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Orchestrator Types - Agent SDK 기반 오케스트레이션 타입 정의
3
+ */
4
+ import { ToolResult } from '../types/tool.js';
5
+ export interface AgentConfig {
6
+ name: string;
7
+ description: string;
8
+ prompt: string;
9
+ model?: 'claude-sonnet-4-5' | 'claude-opus-4' | 'claude-haiku-3-5';
10
+ maxTurns?: number;
11
+ allowedTools?: string[];
12
+ systemPrompt?: string;
13
+ }
14
+ export interface AgentResult {
15
+ agentName: string;
16
+ sessionId: string;
17
+ result: string;
18
+ success: boolean;
19
+ error?: string;
20
+ duration: number;
21
+ }
22
+ export interface ResearchTask {
23
+ name: string;
24
+ prompt: string;
25
+ category: 'best-practices' | 'framework-docs' | 'codebase-patterns' | 'security-advisory' | 'custom';
26
+ }
27
+ export interface ParallelResearchArgs {
28
+ tasks: ResearchTask[];
29
+ projectPath?: string;
30
+ maxConcurrency?: number;
31
+ timeout?: number;
32
+ }
33
+ export interface ParallelResearchResult {
34
+ results: AgentResult[];
35
+ totalDuration: number;
36
+ successCount: number;
37
+ failureCount: number;
38
+ }
39
+ export interface BackgroundAgentArgs {
40
+ prompt: string;
41
+ agentName?: string;
42
+ model?: 'claude-sonnet-4-5' | 'claude-opus-4' | 'claude-haiku-3-5';
43
+ maxTurns?: number;
44
+ allowedTools?: string[];
45
+ projectPath?: string;
46
+ onProgress?: (message: string) => void;
47
+ }
48
+ export interface BackgroundAgentHandle {
49
+ sessionId: string;
50
+ agentName: string;
51
+ status: 'running' | 'completed' | 'failed' | 'cancelled';
52
+ startTime: number;
53
+ getResult: () => Promise<AgentResult>;
54
+ cancel: () => void;
55
+ }
56
+ export interface DiscoveredAgent {
57
+ name: string;
58
+ path: string;
59
+ category: string;
60
+ description: string;
61
+ content: string;
62
+ }
63
+ export interface AgentDiscoveryArgs {
64
+ projectPath?: string;
65
+ category?: string;
66
+ pattern?: string;
67
+ }
68
+ export interface SessionInfo {
69
+ sessionId: string;
70
+ agentName: string;
71
+ status: 'active' | 'completed' | 'failed';
72
+ startTime: number;
73
+ endTime?: number;
74
+ prompt: string;
75
+ }
76
+ export interface SessionStore {
77
+ sessions: Map<string, SessionInfo>;
78
+ add: (session: SessionInfo) => void;
79
+ get: (sessionId: string) => SessionInfo | undefined;
80
+ list: () => SessionInfo[];
81
+ cleanup: (maxAge: number) => void;
82
+ }
83
+ export interface OrchestratorOptions {
84
+ projectPath?: string;
85
+ verbose?: boolean;
86
+ saveResults?: boolean;
87
+ resultsPath?: string;
88
+ }
89
+ export interface AgentMessage {
90
+ type: 'system' | 'assistant' | 'user' | 'result';
91
+ subtype?: 'init' | 'progress' | 'tool_use' | 'tool_result';
92
+ session_id?: string;
93
+ content?: string;
94
+ result?: string;
95
+ message?: {
96
+ content: Array<{
97
+ type: string;
98
+ text?: string;
99
+ }>;
100
+ };
101
+ }
102
+ export interface OrchestratorToolResult extends ToolResult {
103
+ metadata?: {
104
+ sessionId?: string;
105
+ duration?: number;
106
+ agentName?: string;
107
+ };
108
+ }
109
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Orchestrator Types - Agent SDK 기반 오케스트레이션 타입 정의
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -2,18 +2,18 @@
2
2
  import { MemoryManager } from '../../lib/MemoryManager.js';
3
3
  export const getUsageAnalyticsDefinition = {
4
4
  name: 'get_usage_analytics',
5
- description: `도구 사용 분석 및 통계를 조회합니다.
6
-
7
- 키워드: 분석, 통계, 사용량, analytics, statistics, usage
8
-
9
- **제공 정보:**
10
- - 메모리 사용 통계
11
- - 카테고리별 분포
12
- - 시간별 사용 패턴
13
- - 그래프 관계 통계
14
-
15
- 사용 예시:
16
- - "사용 통계 보여줘"
5
+ description: `도구 사용 분석 및 통계를 조회합니다.
6
+
7
+ 키워드: 분석, 통계, 사용량, analytics, statistics, usage
8
+
9
+ **제공 정보:**
10
+ - 메모리 사용 통계
11
+ - 카테고리별 분포
12
+ - 시간별 사용 패턴
13
+ - 그래프 관계 통계
14
+
15
+ 사용 예시:
16
+ - "사용 통계 보여줘"
17
17
  - "메모리 분석"`,
18
18
  inputSchema: {
19
19
  type: 'object',