@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,325 @@
1
+ /**
2
+ * Background Agent - 백그라운드 에이전트 관리
3
+ * oh-my-opencode의 BackgroundManager 패턴 참고
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
+ const activeSessions = new Map();
21
+ // 세션 히스토리 (완료된 세션 포함)
22
+ const sessionHistory = [];
23
+ /**
24
+ * 백그라운드 에이전트 시작
25
+ */
26
+ export async function launchBackgroundAgent(args) {
27
+ const { prompt, agentName = `agent-${Date.now()}`, model = 'claude-sonnet-4-5', maxTurns = 10, allowedTools = ['Read', 'Write', 'Edit', 'Glob', 'Grep', 'Bash'], projectPath = process.cwd(), onProgress } = args;
28
+ const query = await getQueryFunction();
29
+ // Agent SDK가 없으면 시뮬레이션
30
+ if (!query) {
31
+ const handle = {
32
+ sessionId: `simulated-${Date.now()}`,
33
+ agentName,
34
+ status: 'completed',
35
+ startTime: Date.now(),
36
+ getResult: async () => ({
37
+ agentName,
38
+ sessionId: `simulated-${Date.now()}`,
39
+ result: `[Agent SDK not installed] Would execute: ${prompt.slice(0, 100)}...`,
40
+ success: true,
41
+ duration: 0
42
+ }),
43
+ cancel: () => { }
44
+ };
45
+ return {
46
+ content: [{
47
+ type: 'text',
48
+ text: `Background agent "${agentName}" started (simulated)\nSession ID: ${handle.sessionId}\n\nNote: Install @anthropic-ai/claude-agent-sdk for real execution.`
49
+ }],
50
+ handle
51
+ };
52
+ }
53
+ const startTime = Date.now();
54
+ const cancelController = new AbortController();
55
+ let sessionId = '';
56
+ let result = '';
57
+ let status = 'running';
58
+ // 결과 수집 Promise
59
+ const resultPromise = new Promise(async (resolve) => {
60
+ try {
61
+ const response = query({
62
+ prompt,
63
+ options: {
64
+ model,
65
+ maxTurns,
66
+ allowedTools,
67
+ cwd: projectPath
68
+ }
69
+ });
70
+ for await (const message of response) {
71
+ // 취소 체크
72
+ if (cancelController.signal.aborted) {
73
+ status = 'cancelled';
74
+ resolve({
75
+ agentName,
76
+ sessionId,
77
+ result: 'Cancelled by user',
78
+ success: false,
79
+ error: 'Cancelled',
80
+ duration: Date.now() - startTime
81
+ });
82
+ return;
83
+ }
84
+ const msg = message;
85
+ // 세션 ID 캡처
86
+ if (msg.type === 'system' && msg.subtype === 'init' && msg.session_id) {
87
+ sessionId = msg.session_id;
88
+ }
89
+ // 진행 상황 콜백
90
+ if (msg.type === 'system' && msg.subtype === 'progress' && onProgress) {
91
+ onProgress(msg.content || 'Processing...');
92
+ }
93
+ // 결과 수집
94
+ if (msg.type === 'result' && msg.result) {
95
+ result = msg.result;
96
+ }
97
+ if (msg.type === 'assistant' && msg.message?.content) {
98
+ const textContent = msg.message.content
99
+ .filter(block => block.type === 'text' && block.text)
100
+ .map(block => block.text)
101
+ .join('\n');
102
+ if (textContent) {
103
+ result += textContent;
104
+ }
105
+ }
106
+ }
107
+ status = 'completed';
108
+ resolve({
109
+ agentName,
110
+ sessionId,
111
+ result: result || 'No result',
112
+ success: true,
113
+ duration: Date.now() - startTime
114
+ });
115
+ }
116
+ catch (error) {
117
+ status = 'failed';
118
+ resolve({
119
+ agentName,
120
+ sessionId,
121
+ result: '',
122
+ success: false,
123
+ error: error instanceof Error ? error.message : String(error),
124
+ duration: Date.now() - startTime
125
+ });
126
+ }
127
+ });
128
+ // 핸들 생성
129
+ const handle = {
130
+ sessionId: sessionId || `pending-${Date.now()}`,
131
+ agentName,
132
+ status,
133
+ startTime,
134
+ getResult: () => resultPromise,
135
+ cancel: () => {
136
+ cancelController.abort();
137
+ status = 'cancelled';
138
+ }
139
+ };
140
+ // 세션 등록
141
+ activeSessions.set(handle.sessionId, {
142
+ handle,
143
+ resultPromise,
144
+ cancelController
145
+ });
146
+ // 완료 시 히스토리에 추가
147
+ resultPromise.then((result) => {
148
+ sessionHistory.push({
149
+ sessionId: result.sessionId,
150
+ agentName: result.agentName,
151
+ status: result.success ? 'completed' : 'failed',
152
+ startTime,
153
+ endTime: Date.now(),
154
+ prompt
155
+ });
156
+ // 활성 세션에서 제거
157
+ activeSessions.delete(handle.sessionId);
158
+ });
159
+ return {
160
+ content: [{
161
+ type: 'text',
162
+ text: `Background agent "${agentName}" started\nSession ID: ${handle.sessionId}\nModel: ${model}\nMax Turns: ${maxTurns}\n\nUse getBackgroundAgentResult("${handle.sessionId}") to check status.`
163
+ }],
164
+ handle
165
+ };
166
+ }
167
+ /**
168
+ * 백그라운드 에이전트 결과 조회
169
+ */
170
+ export async function getBackgroundAgentResult(sessionId) {
171
+ const session = activeSessions.get(sessionId);
172
+ if (!session) {
173
+ // 히스토리에서 찾기
174
+ const historical = sessionHistory.find(s => s.sessionId === sessionId);
175
+ if (historical) {
176
+ return {
177
+ content: [{
178
+ type: 'text',
179
+ text: `Session "${sessionId}" completed at ${new Date(historical.endTime).toISOString()}\nStatus: ${historical.status}`
180
+ }]
181
+ };
182
+ }
183
+ return {
184
+ content: [{
185
+ type: 'text',
186
+ text: `Session "${sessionId}" not found`
187
+ }]
188
+ };
189
+ }
190
+ // 진행 중인 세션
191
+ if (session.handle.status === 'running') {
192
+ return {
193
+ content: [{
194
+ type: 'text',
195
+ text: `Session "${sessionId}" is still running\nAgent: ${session.handle.agentName}\nStarted: ${new Date(session.handle.startTime).toISOString()}`
196
+ }]
197
+ };
198
+ }
199
+ // 완료된 경우 결과 반환
200
+ const result = await session.resultPromise;
201
+ return {
202
+ content: [{
203
+ type: 'text',
204
+ text: `Session "${sessionId}" ${result.success ? 'completed' : 'failed'}\nDuration: ${(result.duration / 1000).toFixed(1)}s\n\nResult:\n${result.result}`
205
+ }],
206
+ result
207
+ };
208
+ }
209
+ /**
210
+ * 백그라운드 에이전트 취소
211
+ */
212
+ export function cancelBackgroundAgent(sessionId) {
213
+ const session = activeSessions.get(sessionId);
214
+ if (!session) {
215
+ return {
216
+ content: [{
217
+ type: 'text',
218
+ text: `Session "${sessionId}" not found or already completed`
219
+ }]
220
+ };
221
+ }
222
+ session.handle.cancel();
223
+ return {
224
+ content: [{
225
+ type: 'text',
226
+ text: `Session "${sessionId}" cancelled`
227
+ }]
228
+ };
229
+ }
230
+ /**
231
+ * 활성 세션 목록
232
+ */
233
+ export function listActiveSessions() {
234
+ const sessions = Array.from(activeSessions.values()).map(s => ({
235
+ sessionId: s.handle.sessionId,
236
+ agentName: s.handle.agentName,
237
+ status: s.handle.status,
238
+ startTime: new Date(s.handle.startTime).toISOString(),
239
+ runningFor: `${((Date.now() - s.handle.startTime) / 1000).toFixed(0)}s`
240
+ }));
241
+ if (sessions.length === 0) {
242
+ return {
243
+ content: [{
244
+ type: 'text',
245
+ text: 'No active background agents'
246
+ }]
247
+ };
248
+ }
249
+ let summary = `## Active Background Agents (${sessions.length})\n\n`;
250
+ for (const session of sessions) {
251
+ summary += `- **${session.agentName}** (${session.sessionId})\n`;
252
+ summary += ` Status: ${session.status} | Running: ${session.runningFor}\n`;
253
+ }
254
+ return {
255
+ content: [{ type: 'text', text: summary }],
256
+ sessions
257
+ };
258
+ }
259
+ /**
260
+ * 세션 히스토리 조회
261
+ */
262
+ export function getSessionHistory(limit = 10) {
263
+ const recent = sessionHistory.slice(-limit).reverse();
264
+ if (recent.length === 0) {
265
+ return {
266
+ content: [{
267
+ type: 'text',
268
+ text: 'No session history'
269
+ }]
270
+ };
271
+ }
272
+ let summary = `## Session History (last ${recent.length})\n\n`;
273
+ for (const session of recent) {
274
+ const duration = session.endTime
275
+ ? `${((session.endTime - session.startTime) / 1000).toFixed(1)}s`
276
+ : 'N/A';
277
+ summary += `- **${session.agentName}** (${session.sessionId})\n`;
278
+ summary += ` Status: ${session.status} | Duration: ${duration}\n`;
279
+ }
280
+ return {
281
+ content: [{ type: 'text', text: summary }],
282
+ history: recent
283
+ };
284
+ }
285
+ /**
286
+ * 여러 백그라운드 에이전트 동시 실행
287
+ */
288
+ export async function launchParallelAgents(agentConfigs) {
289
+ const handles = [];
290
+ const errors = [];
291
+ // 병렬로 에이전트 시작
292
+ const results = await Promise.all(agentConfigs.map(async (config) => {
293
+ try {
294
+ const result = await launchBackgroundAgent(config);
295
+ if ('handle' in result) {
296
+ return result.handle;
297
+ }
298
+ return null;
299
+ }
300
+ catch (error) {
301
+ errors.push(`${config.agentName}: ${error instanceof Error ? error.message : String(error)}`);
302
+ return null;
303
+ }
304
+ }));
305
+ for (const result of results) {
306
+ if (result) {
307
+ handles.push(result);
308
+ }
309
+ }
310
+ let summary = `## Launched ${handles.length} Background Agents\n\n`;
311
+ for (const handle of handles) {
312
+ summary += `- ${handle.agentName}: ${handle.sessionId}\n`;
313
+ }
314
+ if (errors.length > 0) {
315
+ summary += `\n### Errors (${errors.length})\n`;
316
+ for (const error of errors) {
317
+ summary += `- ${error}\n`;
318
+ }
319
+ }
320
+ return {
321
+ content: [{ type: 'text', text: summary }],
322
+ handles
323
+ };
324
+ }
325
+ //# sourceMappingURL=backgroundAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backgroundAgent.js","sourceRoot":"","sources":["../../src/orchestrator/backgroundAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
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
+ export type { AgentConfig, AgentResult, ResearchTask, ParallelResearchArgs, ParallelResearchResult, BackgroundAgentArgs, BackgroundAgentHandle, DiscoveredAgent, AgentDiscoveryArgs, SessionInfo, OrchestratorOptions, AgentMessage } from './types.js';
11
+ export { discoverAgents, loadAgent, listAgentsByCategory } from './agentDiscovery.js';
12
+ export { parallelResearch, researchFeature, createResearchTasks } from './parallelResearch.js';
13
+ export { launchBackgroundAgent, getBackgroundAgentResult, cancelBackgroundAgent, listActiveSessions, getSessionHistory, launchParallelAgents } from './backgroundAgent.js';
14
+ export { VibeOrchestrator, getOrchestrator } from './orchestrator.js';
15
+ import { ToolResult } from '../types/tool.js';
16
+ /**
17
+ * 기능 기반 병렬 리서치 (간편 API)
18
+ *
19
+ * @example
20
+ * node -e "import('@su-record/vibe/orchestrator').then(o => o.research('login feature', ['React', 'TypeScript'])).then(console.log)"
21
+ */
22
+ export declare function research(feature: string, techStack?: string[], projectPath?: string): Promise<ToolResult>;
23
+ /**
24
+ * 백그라운드 에이전트 시작 (간편 API)
25
+ *
26
+ * @example
27
+ * node -e "import('@su-record/vibe/orchestrator').then(o => o.runAgent('Fix the login bug', 'bug-fixer')).then(console.log)"
28
+ */
29
+ export declare function runAgent(prompt: string, agentName?: string, projectPath?: string): Promise<ToolResult>;
30
+ /**
31
+ * 에이전트 결과 조회 (간편 API)
32
+ *
33
+ * @example
34
+ * node -e "import('@su-record/vibe/orchestrator').then(o => o.getResult('session-id')).then(console.log)"
35
+ */
36
+ export declare function getResult(sessionId: string): Promise<ToolResult>;
37
+ /**
38
+ * 에이전트 목록 조회 (간편 API)
39
+ *
40
+ * @example
41
+ * node -e "import('@su-record/vibe/orchestrator').then(o => o.listAgents()).then(console.log)"
42
+ */
43
+ export declare function listAgents(category?: string, projectPath?: string): Promise<ToolResult>;
44
+ /**
45
+ * 병렬 리뷰 실행 (간편 API)
46
+ *
47
+ * @example
48
+ * node -e "import('@su-record/vibe/orchestrator').then(o => o.review(['src/api/user.ts'], ['TypeScript'])).then(console.log)"
49
+ */
50
+ export declare function review(filePaths: string[], techStack?: string[], projectPath?: string): Promise<ToolResult>;
51
+ /**
52
+ * 오케스트레이터 상태 확인
53
+ *
54
+ * @example
55
+ * node -e "import('@su-record/vibe/orchestrator').then(o => o.status()).then(console.log)"
56
+ */
57
+ export declare function status(): ToolResult;
58
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,cAAc,EACd,SAAS,EACT,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAkB3B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAM,EAAO,EACxB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,UAAU,CAAC,CAMrB;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAEtE;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,UAAU,CAAC,CAErB;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAC1B,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,GAAE,MAAM,EAAO,EACxB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,UAAU,CAAC,CA4BrB;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,IAAI,UAAU,CAUnC"}
@@ -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"}