@su-record/vibe 2.6.16 → 2.6.17
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/README.md +79 -43
- package/dist/orchestrator/SwarmOrchestrator.d.ts +144 -0
- package/dist/orchestrator/SwarmOrchestrator.d.ts.map +1 -0
- package/dist/orchestrator/SwarmOrchestrator.js +361 -0
- package/dist/orchestrator/SwarmOrchestrator.js.map +1 -0
- package/dist/orchestrator/SwarmOrchestrator.test.d.ts +5 -0
- package/dist/orchestrator/SwarmOrchestrator.test.d.ts.map +1 -0
- package/dist/orchestrator/SwarmOrchestrator.test.js +95 -0
- package/dist/orchestrator/SwarmOrchestrator.test.js.map +1 -0
- package/dist/orchestrator/index.d.ts +2 -0
- package/dist/orchestrator/index.d.ts.map +1 -1
- package/dist/orchestrator/index.js +2 -0
- package/dist/orchestrator/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](https://www.npmjs.com/package/@su-record/vibe)
|
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
8
|
|
|
9
|
-
>
|
|
9
|
+
> AI coding framework for Claude Code. SPEC-based requirements management, Multi-LLM (Claude + GPT + Gemini) orchestration, and automated quality assurance with 13+ parallel review agents.
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
@@ -20,20 +20,21 @@ vibe init
|
|
|
20
20
|
```
|
|
21
21
|
/vibe.spec → /vibe.run → /vibe.trace → /vibe.verify → /vibe.review
|
|
22
22
|
↓ ↓ ↓ ↓ ↓
|
|
23
|
-
SPEC
|
|
23
|
+
Write SPEC Execute Traceability BDD Verify Parallel Review
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
## Key Features
|
|
27
27
|
|
|
28
28
|
| Feature | Description |
|
|
29
29
|
|---------|-------------|
|
|
30
|
-
| **SPEC-driven Development** |
|
|
31
|
-
| **Multi-LLM Orchestration** | Claude + GPT + Gemini 3-way
|
|
32
|
-
| **13+ Parallel Review Agents** | Security, Performance, Architecture
|
|
33
|
-
| **ULTRAWORK Mode** |
|
|
34
|
-
| **Fire-and-Forget Agents** |
|
|
35
|
-
| **Phase Pipelining** |
|
|
36
|
-
| **
|
|
30
|
+
| **SPEC-driven Development** | Traceable development: Requirements → SPEC → Feature → Test |
|
|
31
|
+
| **Multi-LLM Orchestration** | Claude + GPT + Gemini 3-way verification with automatic routing |
|
|
32
|
+
| **13+ Parallel Review Agents** | Parallel code review: Security, Performance, Architecture, etc. |
|
|
33
|
+
| **ULTRAWORK Mode** | Enable all optimizations with a single keyword |
|
|
34
|
+
| **Fire-and-Forget Agents** | Non-blocking background agent execution |
|
|
35
|
+
| **Phase Pipelining** | Prepare next phase while current phase executes |
|
|
36
|
+
| **Swarm Pattern** | Auto-split complex tasks for parallel processing (v2.7) |
|
|
37
|
+
| **23 Language Presets** | TypeScript, Python, Go, Rust, Swift, Kotlin, and more |
|
|
37
38
|
|
|
38
39
|
## Commands
|
|
39
40
|
|
|
@@ -41,40 +42,40 @@ vibe init
|
|
|
41
42
|
|
|
42
43
|
| Command | Description |
|
|
43
44
|
|---------|-------------|
|
|
44
|
-
| `vibe init` |
|
|
45
|
-
| `vibe update` |
|
|
46
|
-
| `vibe status` |
|
|
47
|
-
| `vibe gpt auth` | GPT OAuth
|
|
48
|
-
| `vibe gemini auth` | Gemini OAuth
|
|
45
|
+
| `vibe init` | Initialize project |
|
|
46
|
+
| `vibe update` | Update configuration |
|
|
47
|
+
| `vibe status` | Check status |
|
|
48
|
+
| `vibe gpt auth` | GPT OAuth authentication |
|
|
49
|
+
| `vibe gemini auth` | Gemini OAuth authentication |
|
|
49
50
|
|
|
50
51
|
### Claude Code Slash Commands
|
|
51
52
|
|
|
52
53
|
| Command | Description |
|
|
53
54
|
|---------|-------------|
|
|
54
|
-
| `/vibe.spec "feature"` | SPEC
|
|
55
|
-
| `/vibe.run "feature"` |
|
|
56
|
-
| `/vibe.run "feature" ultrawork` |
|
|
57
|
-
| `/vibe.verify "feature"` | BDD
|
|
58
|
-
| `/vibe.trace "feature"` |
|
|
59
|
-
| `/vibe.review` | 13+
|
|
60
|
-
| `/vibe.review --race` | GPT + Gemini
|
|
55
|
+
| `/vibe.spec "feature"` | Generate SPEC document + parallel research |
|
|
56
|
+
| `/vibe.run "feature"` | Execute implementation |
|
|
57
|
+
| `/vibe.run "feature" ultrawork` | Maximum performance mode |
|
|
58
|
+
| `/vibe.verify "feature"` | BDD verification |
|
|
59
|
+
| `/vibe.trace "feature"` | Requirements traceability matrix |
|
|
60
|
+
| `/vibe.review` | 13+ agent parallel review |
|
|
61
|
+
| `/vibe.review --race` | GPT + Gemini race review |
|
|
61
62
|
|
|
62
63
|
## ULTRAWORK Mode
|
|
63
64
|
|
|
64
|
-
`ultrawork`
|
|
65
|
+
Activate maximum performance with `ultrawork` or `ulw` keyword:
|
|
65
66
|
|
|
66
67
|
```bash
|
|
67
68
|
/vibe.run "feature" ultrawork
|
|
68
69
|
```
|
|
69
70
|
|
|
70
|
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
- Phase
|
|
74
|
-
- Boulder Loop (
|
|
75
|
-
- 80%+
|
|
71
|
+
**Enabled Features:**
|
|
72
|
+
- Parallel sub-agent exploration (3+ concurrent)
|
|
73
|
+
- Background agents (prepare next phase during implementation)
|
|
74
|
+
- Phase pipelining (eliminate wait time between phases)
|
|
75
|
+
- Boulder Loop (auto-continue until all scenarios complete)
|
|
76
|
+
- Auto-save at 80%+ context
|
|
76
77
|
|
|
77
|
-
|
|
78
|
+
**Speed Comparison:**
|
|
78
79
|
|
|
79
80
|
| Mode | 5 Phases |
|
|
80
81
|
|------|----------|
|
|
@@ -86,18 +87,18 @@ vibe init
|
|
|
86
87
|
|
|
87
88
|
### Automatic Routing
|
|
88
89
|
|
|
89
|
-
|
|
90
|
+
Automatically routes to the optimal LLM based on prompt keywords:
|
|
90
91
|
|
|
91
92
|
| Keyword | Routes to | Use Case |
|
|
92
93
|
|---------|-----------|----------|
|
|
93
|
-
| `architecture`, `design` | GPT |
|
|
94
|
-
| `UI`, `UX` | Gemini | UI/UX
|
|
95
|
-
| `debugging` | GPT |
|
|
96
|
-
| `analyze code` | Gemini |
|
|
94
|
+
| `architecture`, `design` | GPT | Architecture review |
|
|
95
|
+
| `UI`, `UX` | Gemini | UI/UX feedback |
|
|
96
|
+
| `debugging` | GPT | Bug analysis |
|
|
97
|
+
| `analyze code` | Gemini | Code review |
|
|
97
98
|
|
|
98
99
|
### Race Review
|
|
99
100
|
|
|
100
|
-
GPT + Gemini
|
|
101
|
+
Run GPT + Gemini in parallel for cross-validation:
|
|
101
102
|
|
|
102
103
|
```bash
|
|
103
104
|
/vibe.review --race
|
|
@@ -110,7 +111,7 @@ GPT + Gemini 병렬 실행 후 교차 검증:
|
|
|
110
111
|
|
|
111
112
|
## Parallel Review Agents
|
|
112
113
|
|
|
113
|
-
|
|
114
|
+
Run 13+ agents simultaneously with `/vibe.review`:
|
|
114
115
|
|
|
115
116
|
| Category | Agents |
|
|
116
117
|
|----------|--------|
|
|
@@ -120,13 +121,40 @@ GPT + Gemini 병렬 실행 후 교차 검증:
|
|
|
120
121
|
| Language | python, typescript, rails, react reviewers |
|
|
121
122
|
|
|
122
123
|
**Priority System:**
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
124
|
+
- P1 (Critical): Blocks merge
|
|
125
|
+
- P2 (Important): Fix recommended
|
|
126
|
+
- P3 (Nice-to-have): Backlog
|
|
127
|
+
|
|
128
|
+
## Swarm Pattern (v2.7)
|
|
129
|
+
|
|
130
|
+
Automatically split complex tasks for parallel processing:
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
import { swarm, analyzeTaskComplexity } from '@su-record/vibe/orchestrator';
|
|
134
|
+
|
|
135
|
+
// Analyze complexity
|
|
136
|
+
const analysis = analyzeTaskComplexity('Your prompt');
|
|
137
|
+
console.log(analysis.score); // Split if >= 15
|
|
138
|
+
|
|
139
|
+
// Execute swarm
|
|
140
|
+
const result = await swarm({
|
|
141
|
+
prompt: 'Complex task...',
|
|
142
|
+
maxDepth: 2, // Maximum split depth
|
|
143
|
+
splitThreshold: 15, // Complexity threshold
|
|
144
|
+
});
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**How it works:**
|
|
148
|
+
```
|
|
149
|
+
Prompt → Complexity Analysis → Split Decision
|
|
150
|
+
↓
|
|
151
|
+
┌─ Low → Direct execution
|
|
152
|
+
└─ High → Create subtasks → Parallel processing → Merge results
|
|
153
|
+
```
|
|
126
154
|
|
|
127
155
|
## Requirements Traceability (v2.6)
|
|
128
156
|
|
|
129
|
-
|
|
157
|
+
Track from requirements to tests:
|
|
130
158
|
|
|
131
159
|
```bash
|
|
132
160
|
/vibe.trace "feature"
|
|
@@ -161,14 +189,14 @@ REQ-login-002 → SPEC Phase 2 → Feature Scenario 3 → auth.test.ts
|
|
|
161
189
|
|
|
162
190
|
| Metric | Limit |
|
|
163
191
|
|--------|-------|
|
|
164
|
-
| Function length | 30 lines (
|
|
192
|
+
| Function length | 30 lines (recommended), 50 lines (allowed) |
|
|
165
193
|
| Nesting depth | 3 levels |
|
|
166
194
|
| Parameters | 5 |
|
|
167
195
|
| Cyclomatic complexity | 10 |
|
|
168
196
|
|
|
169
197
|
## Cursor IDE Support
|
|
170
198
|
|
|
171
|
-
`vibe init/update
|
|
199
|
+
Assets auto-installed on `vibe init/update`:
|
|
172
200
|
|
|
173
201
|
| Asset | Path | Count |
|
|
174
202
|
|-------|------|-------|
|
|
@@ -184,6 +212,14 @@ import { launch, poll } from '@su-record/vibe/orchestrator';
|
|
|
184
212
|
const { taskId } = launch({ prompt: 'Analyze code', agentName: 'analyzer' });
|
|
185
213
|
const result = await poll(taskId);
|
|
186
214
|
|
|
215
|
+
// Swarm pattern (v2.7) - Auto-split complex tasks
|
|
216
|
+
import { swarm } from '@su-record/vibe/orchestrator';
|
|
217
|
+
const result = await swarm({
|
|
218
|
+
prompt: 'Implement login with: 1. UI 2. Validation 3. API 4. Tests',
|
|
219
|
+
maxDepth: 2,
|
|
220
|
+
splitThreshold: 15,
|
|
221
|
+
});
|
|
222
|
+
|
|
187
223
|
// LLM direct call
|
|
188
224
|
import { ask } from '@su-record/vibe/lib/gpt';
|
|
189
225
|
import { webSearch } from '@su-record/vibe/lib/gemini';
|
|
@@ -200,4 +236,4 @@ MIT - [GitHub](https://github.com/su-record/vibe)
|
|
|
200
236
|
|
|
201
237
|
---
|
|
202
238
|
|
|
203
|
-
|
|
239
|
+
If this helps your workflow, consider giving it a star!
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SwarmOrchestrator - 에이전트 자가 복제 패턴 (Swarm Pattern)
|
|
3
|
+
* v2.7.0: 복잡한 작업을 자동으로 분할하여 병렬 처리
|
|
4
|
+
*
|
|
5
|
+
* SKILL.md 참조: Claude Code의 Swarm 패턴을 Vibe 자체 구현으로 재현
|
|
6
|
+
* - 에이전트가 "너무 복잡하다" 판단 시 하위 에이전트 동적 생성
|
|
7
|
+
* - 기존 launch()/poll() 인프라 활용
|
|
8
|
+
* - Claude Code + Cursor IDE 모두 지원 (플랫폼 독립)
|
|
9
|
+
*/
|
|
10
|
+
import { ToolResult } from '../types/tool.js';
|
|
11
|
+
import type { AgentResult, ClaudeModel } from './types.js';
|
|
12
|
+
/** Swarm 설정 */
|
|
13
|
+
export interface SwarmConfig {
|
|
14
|
+
/** 루트 프롬프트 */
|
|
15
|
+
prompt: string;
|
|
16
|
+
/** 에이전트 이름 (선택) */
|
|
17
|
+
agentName?: string;
|
|
18
|
+
/** 모델 (기본: sonnet) */
|
|
19
|
+
model?: ClaudeModel;
|
|
20
|
+
/** 최대 분할 깊이 (기본: 2) */
|
|
21
|
+
maxDepth?: number;
|
|
22
|
+
/** 복잡도 임계값 - 이 이상이면 분할 (기본: 15) */
|
|
23
|
+
splitThreshold?: number;
|
|
24
|
+
/** 최대 동시 하위 에이전트 수 (기본: 5) */
|
|
25
|
+
maxConcurrentChildren?: number;
|
|
26
|
+
/** 분할 시 콜백 */
|
|
27
|
+
onSplit?: (task: SwarmTask) => void;
|
|
28
|
+
/** 완료 시 콜백 */
|
|
29
|
+
onComplete?: (task: SwarmTask, result: AgentResult) => void;
|
|
30
|
+
/** 프로젝트 경로 */
|
|
31
|
+
projectPath?: string;
|
|
32
|
+
/** 타임아웃 (ms, 기본: 5분) */
|
|
33
|
+
timeout?: number;
|
|
34
|
+
}
|
|
35
|
+
/** Swarm 작업 */
|
|
36
|
+
export interface SwarmTask {
|
|
37
|
+
id: string;
|
|
38
|
+
parentId: string | null;
|
|
39
|
+
prompt: string;
|
|
40
|
+
depth: number;
|
|
41
|
+
status: 'pending' | 'analyzing' | 'running' | 'splitting' | 'completed' | 'failed';
|
|
42
|
+
complexity?: number;
|
|
43
|
+
children: string[];
|
|
44
|
+
taskId?: string;
|
|
45
|
+
result?: AgentResult;
|
|
46
|
+
error?: string;
|
|
47
|
+
createdAt: number;
|
|
48
|
+
startedAt?: number;
|
|
49
|
+
completedAt?: number;
|
|
50
|
+
}
|
|
51
|
+
/** Swarm 결과 */
|
|
52
|
+
export interface SwarmResult {
|
|
53
|
+
rootTaskId: string;
|
|
54
|
+
tasks: SwarmTask[];
|
|
55
|
+
totalDuration: number;
|
|
56
|
+
splitCount: number;
|
|
57
|
+
successCount: number;
|
|
58
|
+
failureCount: number;
|
|
59
|
+
maxDepthReached: number;
|
|
60
|
+
mergedResult: string;
|
|
61
|
+
}
|
|
62
|
+
/** 복잡도 분석 결과 */
|
|
63
|
+
interface ComplexityAnalysis {
|
|
64
|
+
score: number;
|
|
65
|
+
factors: string[];
|
|
66
|
+
suggestedSplits?: string[];
|
|
67
|
+
}
|
|
68
|
+
export declare class SwarmOrchestrator {
|
|
69
|
+
private tasks;
|
|
70
|
+
private config;
|
|
71
|
+
private startTime;
|
|
72
|
+
constructor(config: SwarmConfig);
|
|
73
|
+
/**
|
|
74
|
+
* Swarm 실행
|
|
75
|
+
*/
|
|
76
|
+
execute(): Promise<SwarmResult>;
|
|
77
|
+
/**
|
|
78
|
+
* 태스크 처리
|
|
79
|
+
*/
|
|
80
|
+
private processTask;
|
|
81
|
+
/**
|
|
82
|
+
* 복잡도 분석
|
|
83
|
+
*/
|
|
84
|
+
private analyzeComplexity;
|
|
85
|
+
/**
|
|
86
|
+
* 분할 제안 생성
|
|
87
|
+
*/
|
|
88
|
+
private suggestSplits;
|
|
89
|
+
/**
|
|
90
|
+
* 분할 여부 결정
|
|
91
|
+
*/
|
|
92
|
+
private shouldSplit;
|
|
93
|
+
/**
|
|
94
|
+
* 태스크 분할
|
|
95
|
+
*/
|
|
96
|
+
private splitTask;
|
|
97
|
+
/**
|
|
98
|
+
* 하위 프롬프트 생성
|
|
99
|
+
*/
|
|
100
|
+
private createChildPrompt;
|
|
101
|
+
/**
|
|
102
|
+
* 하위 결과 병합
|
|
103
|
+
*/
|
|
104
|
+
private mergeChildResults;
|
|
105
|
+
/**
|
|
106
|
+
* 태스크 실행 (분할 없이)
|
|
107
|
+
*/
|
|
108
|
+
private executeTask;
|
|
109
|
+
/**
|
|
110
|
+
* 결과 수집
|
|
111
|
+
*/
|
|
112
|
+
private collectResults;
|
|
113
|
+
/**
|
|
114
|
+
* 태스크 생성
|
|
115
|
+
*/
|
|
116
|
+
private createTask;
|
|
117
|
+
private sleep;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Swarm 패턴으로 복잡한 작업 실행
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* import { swarm } from '@su-record/vibe/orchestrator';
|
|
124
|
+
*
|
|
125
|
+
* const result = await swarm({
|
|
126
|
+
* prompt: 'Implement login feature with: 1. UI form 2. Validation 3. API call 4. Error handling',
|
|
127
|
+
* maxDepth: 2,
|
|
128
|
+
* splitThreshold: 15,
|
|
129
|
+
* onSplit: (task) => console.log(`Splitting: ${task.id}`),
|
|
130
|
+
* });
|
|
131
|
+
*/
|
|
132
|
+
export declare function swarm(config: SwarmConfig): Promise<ToolResult & {
|
|
133
|
+
swarmResult: SwarmResult;
|
|
134
|
+
}>;
|
|
135
|
+
/**
|
|
136
|
+
* 작업 복잡도 분석 (swarm 없이)
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* const analysis = analyzeTaskComplexity('Implement login with validation and error handling');
|
|
140
|
+
* console.log(analysis.score); // 15
|
|
141
|
+
*/
|
|
142
|
+
export declare function analyzeTaskComplexity(prompt: string): ComplexityAnalysis;
|
|
143
|
+
export {};
|
|
144
|
+
//# sourceMappingURL=SwarmOrchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwarmOrchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/SwarmOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SwarmOrchestrator - 에이전트 자가 복제 패턴 (Swarm Pattern)
|
|
3
|
+
* v2.7.0: 복잡한 작업을 자동으로 분할하여 병렬 처리
|
|
4
|
+
*
|
|
5
|
+
* SKILL.md 참조: Claude Code의 Swarm 패턴을 Vibe 자체 구현으로 재현
|
|
6
|
+
* - 에이전트가 "너무 복잡하다" 판단 시 하위 에이전트 동적 생성
|
|
7
|
+
* - 기존 launch()/poll() 인프라 활용
|
|
8
|
+
* - Claude Code + Cursor IDE 모두 지원 (플랫폼 독립)
|
|
9
|
+
*/
|
|
10
|
+
import { launch, poll } from './BackgroundManager.js';
|
|
11
|
+
import { DEFAULT_MODELS } from '../lib/constants.js';
|
|
12
|
+
// ============================================
|
|
13
|
+
// SwarmOrchestrator
|
|
14
|
+
// ============================================
|
|
15
|
+
export class SwarmOrchestrator {
|
|
16
|
+
tasks = new Map();
|
|
17
|
+
config;
|
|
18
|
+
startTime = 0;
|
|
19
|
+
constructor(config) {
|
|
20
|
+
this.config = {
|
|
21
|
+
prompt: config.prompt,
|
|
22
|
+
agentName: config.agentName || 'swarm-root',
|
|
23
|
+
model: config.model || DEFAULT_MODELS.BACKGROUND,
|
|
24
|
+
maxDepth: config.maxDepth ?? 2,
|
|
25
|
+
splitThreshold: config.splitThreshold ?? 15,
|
|
26
|
+
maxConcurrentChildren: config.maxConcurrentChildren ?? 5,
|
|
27
|
+
onSplit: config.onSplit || (() => { }),
|
|
28
|
+
onComplete: config.onComplete || (() => { }),
|
|
29
|
+
projectPath: config.projectPath || process.cwd(),
|
|
30
|
+
timeout: config.timeout ?? 5 * 60 * 1000
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Swarm 실행
|
|
35
|
+
*/
|
|
36
|
+
async execute() {
|
|
37
|
+
this.startTime = Date.now();
|
|
38
|
+
// 루트 태스크 생성
|
|
39
|
+
const rootTask = this.createTask(this.config.prompt, null, 0);
|
|
40
|
+
this.tasks.set(rootTask.id, rootTask);
|
|
41
|
+
// 실행
|
|
42
|
+
await this.processTask(rootTask);
|
|
43
|
+
// 결과 수집
|
|
44
|
+
return this.collectResults(rootTask.id);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 태스크 처리
|
|
48
|
+
*/
|
|
49
|
+
async processTask(task) {
|
|
50
|
+
// 타임아웃 체크
|
|
51
|
+
if (Date.now() - this.startTime > this.config.timeout) {
|
|
52
|
+
task.status = 'failed';
|
|
53
|
+
task.error = 'Swarm timeout exceeded';
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
task.status = 'analyzing';
|
|
57
|
+
task.startedAt = Date.now();
|
|
58
|
+
// 복잡도 분석
|
|
59
|
+
const analysis = await this.analyzeComplexity(task.prompt);
|
|
60
|
+
task.complexity = analysis.score;
|
|
61
|
+
// 분할 결정
|
|
62
|
+
if (this.shouldSplit(task, analysis)) {
|
|
63
|
+
await this.splitTask(task, analysis);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
await this.executeTask(task);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 복잡도 분석
|
|
71
|
+
*/
|
|
72
|
+
async analyzeComplexity(prompt) {
|
|
73
|
+
const factors = [];
|
|
74
|
+
let score = 0;
|
|
75
|
+
// 프롬프트 길이
|
|
76
|
+
if (prompt.length > 500) {
|
|
77
|
+
score += 5;
|
|
78
|
+
factors.push('long-prompt');
|
|
79
|
+
}
|
|
80
|
+
if (prompt.length > 1000) {
|
|
81
|
+
score += 5;
|
|
82
|
+
factors.push('very-long-prompt');
|
|
83
|
+
}
|
|
84
|
+
// 키워드 기반 복잡도
|
|
85
|
+
const complexKeywords = [
|
|
86
|
+
{ pattern: /implement|create|build/gi, weight: 3 },
|
|
87
|
+
{ pattern: /refactor|restructure|redesign/gi, weight: 4 },
|
|
88
|
+
{ pattern: /multiple|several|all|every/gi, weight: 2 },
|
|
89
|
+
{ pattern: /and then|after that|next/gi, weight: 2 },
|
|
90
|
+
{ pattern: /test|verify|validate/gi, weight: 2 },
|
|
91
|
+
{ pattern: /security|authentication|authorization/gi, weight: 3 },
|
|
92
|
+
{ pattern: /database|migration|schema/gi, weight: 3 },
|
|
93
|
+
{ pattern: /api|endpoint|route/gi, weight: 2 },
|
|
94
|
+
{ pattern: /frontend|backend|fullstack/gi, weight: 3 },
|
|
95
|
+
{ pattern: /phase|step|stage/gi, weight: 2 }
|
|
96
|
+
];
|
|
97
|
+
for (const { pattern, weight } of complexKeywords) {
|
|
98
|
+
const matches = prompt.match(pattern);
|
|
99
|
+
if (matches) {
|
|
100
|
+
score += weight * matches.length;
|
|
101
|
+
factors.push(pattern.source.split('|')[0]);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// 파일/경로 언급
|
|
105
|
+
const fileMentions = prompt.match(/\.(ts|js|tsx|jsx|py|go|rs|java|rb|swift|kt)/gi);
|
|
106
|
+
if (fileMentions && fileMentions.length > 3) {
|
|
107
|
+
score += fileMentions.length * 2;
|
|
108
|
+
factors.push(`${fileMentions.length}-files`);
|
|
109
|
+
}
|
|
110
|
+
// 숫자 목록 (1. 2. 3. 등)
|
|
111
|
+
const numberedList = prompt.match(/^\d+\./gm);
|
|
112
|
+
if (numberedList && numberedList.length > 2) {
|
|
113
|
+
score += numberedList.length * 2;
|
|
114
|
+
factors.push(`${numberedList.length}-steps`);
|
|
115
|
+
}
|
|
116
|
+
// 분할 제안 생성
|
|
117
|
+
const suggestedSplits = this.suggestSplits(prompt);
|
|
118
|
+
return { score, factors, suggestedSplits };
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 분할 제안 생성
|
|
122
|
+
*/
|
|
123
|
+
suggestSplits(prompt) {
|
|
124
|
+
const splits = [];
|
|
125
|
+
// 숫자 목록으로 분할
|
|
126
|
+
const numberedSections = prompt.split(/(?=\d+\.\s)/);
|
|
127
|
+
if (numberedSections.length > 2) {
|
|
128
|
+
for (const section of numberedSections) {
|
|
129
|
+
const trimmed = section.trim();
|
|
130
|
+
if (trimmed.length > 20) {
|
|
131
|
+
splits.push(trimmed);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (splits.length > 1)
|
|
135
|
+
return splits;
|
|
136
|
+
}
|
|
137
|
+
// "and", "then" 등으로 분할
|
|
138
|
+
const conjunctionSplit = prompt.split(/\s+(?:and then|then|after that|next,?)\s+/i);
|
|
139
|
+
if (conjunctionSplit.length > 1) {
|
|
140
|
+
return conjunctionSplit.map(s => s.trim()).filter(s => s.length > 20);
|
|
141
|
+
}
|
|
142
|
+
// 문장 단위 분할 (fallback)
|
|
143
|
+
const sentences = prompt.split(/(?<=[.!?])\s+/);
|
|
144
|
+
if (sentences.length > 3) {
|
|
145
|
+
// 2-3개 문장씩 그룹화
|
|
146
|
+
const grouped = [];
|
|
147
|
+
for (let i = 0; i < sentences.length; i += 2) {
|
|
148
|
+
const group = sentences.slice(i, i + 2).join(' ');
|
|
149
|
+
if (group.length > 30) {
|
|
150
|
+
grouped.push(group);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (grouped.length > 1)
|
|
154
|
+
return grouped;
|
|
155
|
+
}
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* 분할 여부 결정
|
|
160
|
+
*/
|
|
161
|
+
shouldSplit(task, analysis) {
|
|
162
|
+
// 최대 깊이 도달
|
|
163
|
+
if (task.depth >= this.config.maxDepth) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
// 복잡도 임계값 미달
|
|
167
|
+
if (analysis.score < this.config.splitThreshold) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
// 분할 가능한 항목이 없음
|
|
171
|
+
if (!analysis.suggestedSplits || analysis.suggestedSplits.length < 2) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* 태스크 분할
|
|
178
|
+
*/
|
|
179
|
+
async splitTask(task, analysis) {
|
|
180
|
+
task.status = 'splitting';
|
|
181
|
+
this.config.onSplit(task);
|
|
182
|
+
const splits = analysis.suggestedSplits || [];
|
|
183
|
+
const childTasks = [];
|
|
184
|
+
// 하위 태스크 생성
|
|
185
|
+
for (let i = 0; i < Math.min(splits.length, this.config.maxConcurrentChildren); i++) {
|
|
186
|
+
const childPrompt = this.createChildPrompt(splits[i], i + 1, splits.length);
|
|
187
|
+
const childTask = this.createTask(childPrompt, task.id, task.depth + 1);
|
|
188
|
+
this.tasks.set(childTask.id, childTask);
|
|
189
|
+
task.children.push(childTask.id);
|
|
190
|
+
childTasks.push(childTask);
|
|
191
|
+
}
|
|
192
|
+
// 병렬 실행
|
|
193
|
+
await Promise.all(childTasks.map(child => this.processTask(child)));
|
|
194
|
+
// 결과 병합
|
|
195
|
+
await this.mergeChildResults(task);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* 하위 프롬프트 생성
|
|
199
|
+
*/
|
|
200
|
+
createChildPrompt(content, index, total) {
|
|
201
|
+
return `[Part ${index}/${total}] ${content}`;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* 하위 결과 병합
|
|
205
|
+
*/
|
|
206
|
+
async mergeChildResults(task) {
|
|
207
|
+
const childResults = [];
|
|
208
|
+
let allSuccess = true;
|
|
209
|
+
for (const childId of task.children) {
|
|
210
|
+
const child = this.tasks.get(childId);
|
|
211
|
+
if (child) {
|
|
212
|
+
if (child.status === 'completed' && child.result) {
|
|
213
|
+
childResults.push(`## Part ${task.children.indexOf(childId) + 1}\n${child.result.result}`);
|
|
214
|
+
}
|
|
215
|
+
else if (child.status === 'failed') {
|
|
216
|
+
allSuccess = false;
|
|
217
|
+
childResults.push(`## Part ${task.children.indexOf(childId) + 1}\n[FAILED] ${child.error || 'Unknown error'}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
task.status = allSuccess ? 'completed' : 'failed';
|
|
222
|
+
task.completedAt = Date.now();
|
|
223
|
+
task.result = {
|
|
224
|
+
agentName: `${this.config.agentName}-merged`,
|
|
225
|
+
sessionId: task.id,
|
|
226
|
+
result: childResults.join('\n\n'),
|
|
227
|
+
success: allSuccess,
|
|
228
|
+
duration: task.completedAt - (task.startedAt || task.createdAt)
|
|
229
|
+
};
|
|
230
|
+
this.config.onComplete(task, task.result);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* 태스크 실행 (분할 없이)
|
|
234
|
+
*/
|
|
235
|
+
async executeTask(task) {
|
|
236
|
+
task.status = 'running';
|
|
237
|
+
const args = {
|
|
238
|
+
prompt: task.prompt,
|
|
239
|
+
agentName: `${this.config.agentName}-${task.depth}-${task.id.slice(-6)}`,
|
|
240
|
+
model: this.config.model,
|
|
241
|
+
projectPath: this.config.projectPath
|
|
242
|
+
};
|
|
243
|
+
// launch로 백그라운드 실행
|
|
244
|
+
const launchResult = launch(args);
|
|
245
|
+
task.taskId = launchResult.taskId;
|
|
246
|
+
// poll로 결과 대기
|
|
247
|
+
let pollResult = await poll(launchResult.taskId);
|
|
248
|
+
while (pollResult.task?.status === 'pending' || pollResult.task?.status === 'running') {
|
|
249
|
+
await this.sleep(500);
|
|
250
|
+
pollResult = await poll(launchResult.taskId);
|
|
251
|
+
}
|
|
252
|
+
if (pollResult.result) {
|
|
253
|
+
task.result = pollResult.result;
|
|
254
|
+
task.status = pollResult.result.success ? 'completed' : 'failed';
|
|
255
|
+
if (!pollResult.result.success) {
|
|
256
|
+
task.error = pollResult.result.error;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
task.status = 'failed';
|
|
261
|
+
task.error = 'No result from agent';
|
|
262
|
+
}
|
|
263
|
+
task.completedAt = Date.now();
|
|
264
|
+
if (task.result) {
|
|
265
|
+
this.config.onComplete(task, task.result);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* 결과 수집
|
|
270
|
+
*/
|
|
271
|
+
collectResults(rootTaskId) {
|
|
272
|
+
const allTasks = Array.from(this.tasks.values());
|
|
273
|
+
const rootTask = this.tasks.get(rootTaskId);
|
|
274
|
+
let maxDepth = 0;
|
|
275
|
+
let splitCount = 0;
|
|
276
|
+
let successCount = 0;
|
|
277
|
+
let failureCount = 0;
|
|
278
|
+
for (const task of allTasks) {
|
|
279
|
+
maxDepth = Math.max(maxDepth, task.depth);
|
|
280
|
+
if (task.children.length > 0)
|
|
281
|
+
splitCount++;
|
|
282
|
+
if (task.status === 'completed')
|
|
283
|
+
successCount++;
|
|
284
|
+
if (task.status === 'failed')
|
|
285
|
+
failureCount++;
|
|
286
|
+
}
|
|
287
|
+
return {
|
|
288
|
+
rootTaskId,
|
|
289
|
+
tasks: allTasks,
|
|
290
|
+
totalDuration: Date.now() - this.startTime,
|
|
291
|
+
splitCount,
|
|
292
|
+
successCount,
|
|
293
|
+
failureCount,
|
|
294
|
+
maxDepthReached: maxDepth,
|
|
295
|
+
mergedResult: rootTask.result?.result || ''
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* 태스크 생성
|
|
300
|
+
*/
|
|
301
|
+
createTask(prompt, parentId, depth) {
|
|
302
|
+
return {
|
|
303
|
+
id: `swarm-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
|
|
304
|
+
parentId,
|
|
305
|
+
prompt,
|
|
306
|
+
depth,
|
|
307
|
+
status: 'pending',
|
|
308
|
+
children: [],
|
|
309
|
+
createdAt: Date.now()
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
sleep(ms) {
|
|
313
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// ============================================
|
|
317
|
+
// 편의 함수
|
|
318
|
+
// ============================================
|
|
319
|
+
/**
|
|
320
|
+
* Swarm 패턴으로 복잡한 작업 실행
|
|
321
|
+
*
|
|
322
|
+
* @example
|
|
323
|
+
* import { swarm } from '@su-record/vibe/orchestrator';
|
|
324
|
+
*
|
|
325
|
+
* const result = await swarm({
|
|
326
|
+
* prompt: 'Implement login feature with: 1. UI form 2. Validation 3. API call 4. Error handling',
|
|
327
|
+
* maxDepth: 2,
|
|
328
|
+
* splitThreshold: 15,
|
|
329
|
+
* onSplit: (task) => console.log(`Splitting: ${task.id}`),
|
|
330
|
+
* });
|
|
331
|
+
*/
|
|
332
|
+
export async function swarm(config) {
|
|
333
|
+
const orchestrator = new SwarmOrchestrator(config);
|
|
334
|
+
const result = await orchestrator.execute();
|
|
335
|
+
const statusEmoji = result.failureCount === 0 ? '✅' : result.successCount > 0 ? '⚠️' : '❌';
|
|
336
|
+
let summary = `## Swarm Execution ${statusEmoji}\n\n`;
|
|
337
|
+
summary += `**Duration**: ${(result.totalDuration / 1000).toFixed(1)}s\n`;
|
|
338
|
+
summary += `**Tasks**: ${result.tasks.length} (${result.splitCount} splits)\n`;
|
|
339
|
+
summary += `**Max Depth**: ${result.maxDepthReached}/${config.maxDepth || 2}\n`;
|
|
340
|
+
summary += `**Success**: ${result.successCount}/${result.tasks.length}\n\n`;
|
|
341
|
+
if (result.mergedResult) {
|
|
342
|
+
summary += `### Result\n\n${result.mergedResult}`;
|
|
343
|
+
}
|
|
344
|
+
return {
|
|
345
|
+
content: [{ type: 'text', text: summary }],
|
|
346
|
+
swarmResult: result
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* 작업 복잡도 분석 (swarm 없이)
|
|
351
|
+
*
|
|
352
|
+
* @example
|
|
353
|
+
* const analysis = analyzeTaskComplexity('Implement login with validation and error handling');
|
|
354
|
+
* console.log(analysis.score); // 15
|
|
355
|
+
*/
|
|
356
|
+
export function analyzeTaskComplexity(prompt) {
|
|
357
|
+
const orchestrator = new SwarmOrchestrator({ prompt });
|
|
358
|
+
// @ts-expect-error - private method access for utility
|
|
359
|
+
return orchestrator.analyzeComplexity(prompt);
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=SwarmOrchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwarmOrchestrator.js","sourceRoot":"","sources":["../../src/orchestrator/SwarmOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwarmOrchestrator.test.d.ts","sourceRoot":"","sources":["../../src/orchestrator/SwarmOrchestrator.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SwarmOrchestrator 테스트
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
5
|
+
import { SwarmOrchestrator, analyzeTaskComplexity } from './SwarmOrchestrator.js';
|
|
6
|
+
describe('SwarmOrchestrator', () => {
|
|
7
|
+
describe('analyzeTaskComplexity', () => {
|
|
8
|
+
it('간단한 프롬프트는 낮은 복잡도', async () => {
|
|
9
|
+
const analysis = await analyzeTaskComplexity('Fix a typo in README');
|
|
10
|
+
expect(analysis.score).toBeLessThan(10);
|
|
11
|
+
});
|
|
12
|
+
it('복잡한 프롬프트는 높은 복잡도', async () => {
|
|
13
|
+
const complexPrompt = `
|
|
14
|
+
Implement a complete login feature:
|
|
15
|
+
1. Create the login form UI with React
|
|
16
|
+
2. Add form validation with Zod
|
|
17
|
+
3. Implement the API endpoint with authentication
|
|
18
|
+
4. Add error handling and loading states
|
|
19
|
+
5. Write unit tests for all components
|
|
20
|
+
6. Add security measures against CSRF
|
|
21
|
+
`;
|
|
22
|
+
const analysis = await analyzeTaskComplexity(complexPrompt);
|
|
23
|
+
expect(analysis.score).toBeGreaterThan(15);
|
|
24
|
+
expect(analysis.suggestedSplits?.length).toBeGreaterThan(1);
|
|
25
|
+
});
|
|
26
|
+
it('파일 언급이 많으면 복잡도 증가', async () => {
|
|
27
|
+
const prompt = 'Update login.ts, auth.ts, user.ts, session.ts, and middleware.ts';
|
|
28
|
+
const analysis = await analyzeTaskComplexity(prompt);
|
|
29
|
+
expect(analysis.factors).toContain('5-files');
|
|
30
|
+
});
|
|
31
|
+
it('숫자 목록은 분할 제안 생성', async () => {
|
|
32
|
+
const prompt = `
|
|
33
|
+
1. First do this task
|
|
34
|
+
2. Then do second task
|
|
35
|
+
3. Finally do third task
|
|
36
|
+
`;
|
|
37
|
+
const analysis = await analyzeTaskComplexity(prompt);
|
|
38
|
+
expect(analysis.suggestedSplits?.length).toBeGreaterThanOrEqual(2);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe('SwarmOrchestrator 인스턴스', () => {
|
|
42
|
+
it('기본 설정으로 생성', () => {
|
|
43
|
+
const orchestrator = new SwarmOrchestrator({
|
|
44
|
+
prompt: 'Test prompt'
|
|
45
|
+
});
|
|
46
|
+
expect(orchestrator).toBeDefined();
|
|
47
|
+
});
|
|
48
|
+
it('커스텀 설정으로 생성', () => {
|
|
49
|
+
const onSplit = vi.fn();
|
|
50
|
+
const onComplete = vi.fn();
|
|
51
|
+
const orchestrator = new SwarmOrchestrator({
|
|
52
|
+
prompt: 'Test prompt',
|
|
53
|
+
agentName: 'test-agent',
|
|
54
|
+
maxDepth: 3,
|
|
55
|
+
splitThreshold: 20,
|
|
56
|
+
maxConcurrentChildren: 3,
|
|
57
|
+
onSplit,
|
|
58
|
+
onComplete,
|
|
59
|
+
timeout: 60000
|
|
60
|
+
});
|
|
61
|
+
expect(orchestrator).toBeDefined();
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe('분할 로직', () => {
|
|
65
|
+
it('maxDepth 도달 시 분할 안함', async () => {
|
|
66
|
+
// maxDepth: 0으로 설정하면 분할하지 않음
|
|
67
|
+
const orchestrator = new SwarmOrchestrator({
|
|
68
|
+
prompt: `
|
|
69
|
+
1. Task one
|
|
70
|
+
2. Task two
|
|
71
|
+
3. Task three
|
|
72
|
+
`,
|
|
73
|
+
maxDepth: 0
|
|
74
|
+
});
|
|
75
|
+
// shouldSplit가 false 반환 확인 (내부 로직)
|
|
76
|
+
// @ts-expect-error - private method access for testing
|
|
77
|
+
const task = orchestrator.createTask('test', null, 0);
|
|
78
|
+
// @ts-expect-error - private method access for testing
|
|
79
|
+
const shouldSplit = orchestrator.shouldSplit(task, { score: 50, factors: [], suggestedSplits: ['a', 'b'] });
|
|
80
|
+
expect(shouldSplit).toBe(false);
|
|
81
|
+
});
|
|
82
|
+
it('splitThreshold 미만이면 분할 안함', async () => {
|
|
83
|
+
const orchestrator = new SwarmOrchestrator({
|
|
84
|
+
prompt: 'Simple task',
|
|
85
|
+
splitThreshold: 100
|
|
86
|
+
});
|
|
87
|
+
// @ts-expect-error - private method access for testing
|
|
88
|
+
const task = orchestrator.createTask('test', null, 0);
|
|
89
|
+
// @ts-expect-error - private method access for testing
|
|
90
|
+
const shouldSplit = orchestrator.shouldSplit(task, { score: 50, factors: [], suggestedSplits: ['a', 'b'] });
|
|
91
|
+
expect(shouldSplit).toBe(false);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=SwarmOrchestrator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwarmOrchestrator.test.js","sourceRoot":"","sources":["../../src/orchestrator/SwarmOrchestrator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,8 @@ export { LLMCluster, LLMClusterOptions, MultiLlmQueryResult, LlmStatusResult, ge
|
|
|
19
19
|
export { AgentManager, AgentManagerOptions, getAgentManager } from './AgentManager.js';
|
|
20
20
|
export { PhasePipeline, createStage, createPipeline, createUltraworkPipeline, pipelineResultToToolResult } from './PhasePipeline.js';
|
|
21
21
|
export type { PipelineStage, StageContext, StageResult, PipelineOptions, PipelineResult } from './PhasePipeline.js';
|
|
22
|
+
export { SwarmOrchestrator, swarm, analyzeTaskComplexity } from './SwarmOrchestrator.js';
|
|
23
|
+
export type { SwarmConfig, SwarmTask, SwarmResult } from './SwarmOrchestrator.js';
|
|
22
24
|
import { ToolResult } from '../types/tool.js';
|
|
23
25
|
/**
|
|
24
26
|
* 기능 기반 병렬 리서치 (간편 API)
|
|
@@ -1 +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,EAEZ,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EAEpB,cAAc,EACd,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACL,cAAc,EACd,SAAS,EACT,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EAEnB,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EAEpB,iBAAiB,EACjB,MAAM,EACN,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG7E,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACf,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,8 @@ export { LLMCluster, getLLMCluster } from './LLMCluster.js';
|
|
|
27
27
|
export { AgentManager, getAgentManager } from './AgentManager.js';
|
|
28
28
|
// PhasePipeline (v2.6.0)
|
|
29
29
|
export { PhasePipeline, createStage, createPipeline, createUltraworkPipeline, pipelineResultToToolResult } from './PhasePipeline.js';
|
|
30
|
+
// SwarmOrchestrator (v2.7.0) - 에이전트 자가 복제 패턴
|
|
31
|
+
export { SwarmOrchestrator, swarm, analyzeTaskComplexity } from './SwarmOrchestrator.js';
|
|
30
32
|
// ============================================
|
|
31
33
|
// 간편 함수 (hooks에서 직접 호출용)
|
|
32
34
|
// ============================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"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"}
|