@tienne/gestalt 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +78 -1
- package/dist/package.json +3 -1
- package/dist/schemas/gestalt.schema.json +5 -0
- package/dist/skills/blast-radius/SKILL.md +134 -0
- package/dist/skills/build-graph/SKILL.md +100 -0
- package/dist/skills/diff-radius/SKILL.md +125 -0
- package/dist/skills/execute/SKILL.md +90 -8
- package/dist/skills/interview/SKILL.md +5 -4
- package/dist/skills/spec/SKILL.md +7 -1
- package/dist/src/cli/commands/init.d.ts +5 -0
- package/dist/src/cli/commands/init.d.ts.map +1 -0
- package/dist/src/cli/commands/init.js +79 -0
- package/dist/src/cli/commands/init.js.map +1 -0
- package/dist/src/cli/commands/setup.d.ts.map +1 -1
- package/dist/src/cli/commands/setup.js +1 -0
- package/dist/src/cli/commands/setup.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +9 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/code-graph/blast-radius.d.ts +9 -0
- package/dist/src/code-graph/blast-radius.d.ts.map +1 -0
- package/dist/src/code-graph/blast-radius.js +139 -0
- package/dist/src/code-graph/blast-radius.js.map +1 -0
- package/dist/src/code-graph/engine.d.ts +46 -0
- package/dist/src/code-graph/engine.d.ts.map +1 -0
- package/dist/src/code-graph/engine.js +301 -0
- package/dist/src/code-graph/engine.js.map +1 -0
- package/dist/src/code-graph/git-hook.d.ts +22 -0
- package/dist/src/code-graph/git-hook.d.ts.map +1 -0
- package/dist/src/code-graph/git-hook.js +100 -0
- package/dist/src/code-graph/git-hook.js.map +1 -0
- package/dist/src/code-graph/index.d.ts +7 -0
- package/dist/src/code-graph/index.d.ts.map +1 -0
- package/dist/src/code-graph/index.js +6 -0
- package/dist/src/code-graph/index.js.map +1 -0
- package/dist/src/code-graph/plugins/go.d.ts +3 -0
- package/dist/src/code-graph/plugins/go.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/go.js +126 -0
- package/dist/src/code-graph/plugins/go.js.map +1 -0
- package/dist/src/code-graph/plugins/index.d.ts +16 -0
- package/dist/src/code-graph/plugins/index.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/index.js +36 -0
- package/dist/src/code-graph/plugins/index.js.map +1 -0
- package/dist/src/code-graph/plugins/java.d.ts +3 -0
- package/dist/src/code-graph/plugins/java.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/java.js +108 -0
- package/dist/src/code-graph/plugins/java.js.map +1 -0
- package/dist/src/code-graph/plugins/kotlin.d.ts +3 -0
- package/dist/src/code-graph/plugins/kotlin.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/kotlin.js +94 -0
- package/dist/src/code-graph/plugins/kotlin.js.map +1 -0
- package/dist/src/code-graph/plugins/objc.d.ts +3 -0
- package/dist/src/code-graph/plugins/objc.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/objc.js +129 -0
- package/dist/src/code-graph/plugins/objc.js.map +1 -0
- package/dist/src/code-graph/plugins/python.d.ts +3 -0
- package/dist/src/code-graph/plugins/python.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/python.js +116 -0
- package/dist/src/code-graph/plugins/python.js.map +1 -0
- package/dist/src/code-graph/plugins/rust.d.ts +3 -0
- package/dist/src/code-graph/plugins/rust.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/rust.js +108 -0
- package/dist/src/code-graph/plugins/rust.js.map +1 -0
- package/dist/src/code-graph/plugins/swift.d.ts +3 -0
- package/dist/src/code-graph/plugins/swift.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/swift.js +106 -0
- package/dist/src/code-graph/plugins/swift.js.map +1 -0
- package/dist/src/code-graph/plugins/typescript.d.ts +3 -0
- package/dist/src/code-graph/plugins/typescript.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/typescript.js +209 -0
- package/dist/src/code-graph/plugins/typescript.js.map +1 -0
- package/dist/src/code-graph/storage.d.ts +18 -0
- package/dist/src/code-graph/storage.d.ts.map +1 -0
- package/dist/src/code-graph/storage.js +175 -0
- package/dist/src/code-graph/storage.js.map +1 -0
- package/dist/src/code-graph/types.d.ts +93 -0
- package/dist/src/code-graph/types.d.ts.map +1 -0
- package/dist/src/code-graph/types.js +17 -0
- package/dist/src/code-graph/types.js.map +1 -0
- package/dist/src/core/config.d.ts +4 -0
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/config.js +6 -1
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/types.d.ts +1 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/execute/passthrough-engine.d.ts +4 -1
- package/dist/src/execute/passthrough-engine.d.ts.map +1 -1
- package/dist/src/execute/passthrough-engine.js +54 -4
- package/dist/src/execute/passthrough-engine.js.map +1 -1
- package/dist/src/execute/prompts.d.ts +2 -2
- package/dist/src/execute/prompts.d.ts.map +1 -1
- package/dist/src/execute/prompts.js +7 -3
- package/dist/src/execute/prompts.js.map +1 -1
- package/dist/src/execute/repository.d.ts.map +1 -1
- package/dist/src/execute/repository.js +1 -0
- package/dist/src/execute/repository.js.map +1 -1
- package/dist/src/execute/session.d.ts +3 -1
- package/dist/src/execute/session.d.ts.map +1 -1
- package/dist/src/execute/session.js +3 -1
- package/dist/src/execute/session.js.map +1 -1
- package/dist/src/mcp/schemas.d.ts +46 -0
- package/dist/src/mcp/schemas.d.ts.map +1 -1
- package/dist/src/mcp/schemas.js +23 -0
- package/dist/src/mcp/schemas.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +21 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/code-graph-passthrough.d.ts +16 -0
- package/dist/src/mcp/tools/code-graph-passthrough.d.ts.map +1 -0
- package/dist/src/mcp/tools/code-graph-passthrough.js +65 -0
- package/dist/src/mcp/tools/code-graph-passthrough.js.map +1 -0
- package/dist/src/mcp/tools/execute-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute-passthrough.js +28 -2
- package/dist/src/mcp/tools/execute-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/index.d.ts +1 -0
- package/dist/src/mcp/tools/index.d.ts.map +1 -1
- package/dist/src/mcp/tools/index.js +1 -0
- package/dist/src/mcp/tools/index.js.map +1 -1
- package/dist/src/mcp/tools/interview-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/interview-passthrough.js +5 -0
- package/dist/src/mcp/tools/interview-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/spec-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/spec-passthrough.js +9 -0
- package/dist/src/mcp/tools/spec-passthrough.js.map +1 -1
- package/dist/src/utils/notifier.d.ts +10 -0
- package/dist/src/utils/notifier.d.ts.map +1 -0
- package/dist/src/utils/notifier.js +21 -0
- package/dist/src/utils/notifier.js.map +1 -0
- package/package.json +3 -1
- package/schemas/gestalt.schema.json +5 -0
- package/skills/blast-radius/SKILL.md +134 -0
- package/skills/build-graph/SKILL.md +100 -0
- package/skills/diff-radius/SKILL.md +125 -0
- package/skills/execute/SKILL.md +90 -8
- package/skills/interview/SKILL.md +5 -4
- package/skills/spec/SKILL.md +7 -1
package/skills/execute/SKILL.md
CHANGED
|
@@ -183,6 +183,67 @@ API 키 없이 MCP 서버 실행 시 자동 활성화. LLM 작업을 caller가
|
|
|
183
183
|
|
|
184
184
|
---
|
|
185
185
|
|
|
186
|
+
### 병렬 그룹 실행 (parallelGroups 활용)
|
|
187
|
+
|
|
188
|
+
`plan_complete` 응답에 `parallelGroups: string[][]`가 포함되어 있으면 병렬 실행을 사용한다. 각 내부 배열은 동시에 실행할 수 있는 태스크 ID 묶음이다.
|
|
189
|
+
|
|
190
|
+
**병렬 그룹 실행 흐름:**
|
|
191
|
+
|
|
192
|
+
1. `parallelGroups[groupIndex]`의 taskId 목록을 확인한다.
|
|
193
|
+
2. **단일 메시지에서** 각 taskId마다 Agent 툴을 하나씩, 동시에 호출한다 (여러 Agent 툴 호출을 같은 메시지에 담는다).
|
|
194
|
+
3. 각 Agent는 독립적으로 해당 태스크를 수행하고, 완료되면 `execute_task`를 호출해 결과를 제출한다.
|
|
195
|
+
4. 그룹 내 일부 Agent가 실패해도 나머지는 계속 실행한다. 실패한 태스크는 `status: "failed"`로 제출한다.
|
|
196
|
+
5. 그룹 내 모든 Agent가 완료되면 다음 그룹으로 넘어간다.
|
|
197
|
+
6. 모든 그룹이 완료된 후 실패한 태스크가 있으면 기존 evolve 파이프라인으로 재처리한다.
|
|
198
|
+
|
|
199
|
+
**Agent 툴 호출 예시 (parallelGroups[0] = ["task-0", "task-1", "task-2"] 인 경우):**
|
|
200
|
+
|
|
201
|
+
단일 메시지에서 세 Agent를 동시에 실행한다.
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
// 같은 메시지에서 동시 호출 — Agent 1
|
|
205
|
+
Agent(task: "task-0 실행: {task-0 title}\n컨텍스트: {taskContext}\n완료 후 execute_task로 결과 제출")
|
|
206
|
+
|
|
207
|
+
// 같은 메시지에서 동시 호출 — Agent 2
|
|
208
|
+
Agent(task: "task-1 실행: {task-1 title}\n컨텍스트: {taskContext}\n완료 후 execute_task로 결과 제출")
|
|
209
|
+
|
|
210
|
+
// 같은 메시지에서 동시 호출 — Agent 3
|
|
211
|
+
Agent(task: "task-2 실행: {task-2 title}\n컨텍스트: {taskContext}\n완료 후 execute_task로 결과 제출")
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**각 Agent의 execute_task 제출:**
|
|
215
|
+
|
|
216
|
+
```json
|
|
217
|
+
{
|
|
218
|
+
"action": "execute_task",
|
|
219
|
+
"sessionId": "...",
|
|
220
|
+
"taskResult": {
|
|
221
|
+
"taskId": "task-0",
|
|
222
|
+
"status": "completed",
|
|
223
|
+
"output": "태스크 수행 결과 요약",
|
|
224
|
+
"artifacts": ["path/to/file.ts"]
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
실패 시:
|
|
230
|
+
```json
|
|
231
|
+
{
|
|
232
|
+
"action": "execute_task",
|
|
233
|
+
"sessionId": "...",
|
|
234
|
+
"taskResult": {
|
|
235
|
+
"taskId": "task-1",
|
|
236
|
+
"status": "failed",
|
|
237
|
+
"output": "실패 원인 설명",
|
|
238
|
+
"artifacts": []
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
**parallelGroups가 없는 경우:** 기존 순차 실행 방식을 사용한다.
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
186
247
|
### `execute_task` — 태스크 실행 결과 제출
|
|
187
248
|
|
|
188
249
|
role_match/role_consensus로 얻은 `roleGuidance`를 참조해 태스크를 수행한 후 결과 제출.
|
|
@@ -381,26 +442,47 @@ Planning 패널 태스크를 완료하고, 새 Execution 패널 태스크를 생
|
|
|
381
442
|
|
|
382
443
|
```
|
|
383
444
|
subject: "Gestalt Execute: {spec.goal 앞 40자}"
|
|
384
|
-
description: "0/{totalTasks} 완료 |
|
|
385
|
-
activeForm: "
|
|
445
|
+
description: "0/{totalTasks} 완료 | 실패: 0개 | 그룹 0/{parallelGroupCount}"
|
|
446
|
+
activeForm: "실행 중: {taskContext.currentTask.title}"
|
|
386
447
|
```
|
|
387
448
|
|
|
388
449
|
`plan_complete` 응답의 `planSummary.totalTasks`와 `planSummary.parallelGroupCount`를 활용한다.
|
|
450
|
+
`taskContext.currentTask.title`은 `execute_start` 응답에서 바로 꺼내 쓴다.
|
|
451
|
+
|
|
452
|
+
### 병렬 그룹 실행 시작 시 (Agent 툴 동시 호출 직전)
|
|
453
|
+
|
|
454
|
+
각 병렬 그룹 실행을 시작하기 전에 `TaskUpdate`로 병렬 실행 상태를 표시한다.
|
|
455
|
+
|
|
456
|
+
```
|
|
457
|
+
activeForm: "병렬 실행 중: 그룹 {groupIndex}/{totalGroups} — {agentCount}개 Agent 실행 중"
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
- `groupIndex`: 현재 병렬 그룹 번호 (1부터 시작)
|
|
461
|
+
- `totalGroups`: 전체 병렬 그룹 수 (`parallelGroups.length`)
|
|
462
|
+
- `agentCount`: 현재 그룹의 태스크 수 (`parallelGroups[groupIndex].length`)
|
|
389
463
|
|
|
390
464
|
### 각 태스크 완료 후 (`execute_task` 응답 수신 시마다)
|
|
391
465
|
|
|
392
|
-
`TaskUpdate`로 진행
|
|
466
|
+
`TaskUpdate`로 진행 상황과 현재 실행 태스크명을 업데이트한다.
|
|
467
|
+
|
|
468
|
+
순차 실행 중:
|
|
469
|
+
```
|
|
470
|
+
description: "{completedCount}/{totalTasks} 완료 | 실패: {failedCount}개 | 그룹 {groupIndex}/{totalGroups}"
|
|
471
|
+
activeForm: "실행 중: {taskContext.currentTask.title}"
|
|
472
|
+
```
|
|
393
473
|
|
|
474
|
+
병렬 그룹 실행 중 (각 Agent의 execute_task 완료 시):
|
|
394
475
|
```
|
|
395
|
-
description: "{completedCount}/{totalTasks} 완료 |
|
|
476
|
+
description: "{completedCount}/{totalTasks} 완료 | 실패: {failedCount}개 | 그룹 {groupIndex}/{totalGroups}"
|
|
477
|
+
activeForm: "병렬 실행 중: 그룹 {groupIndex}/{totalGroups} — {agentCount}개 Agent 실행 중"
|
|
396
478
|
```
|
|
397
479
|
|
|
398
|
-
- `completedCount`: 지금까지 제출한 taskResult 수
|
|
399
|
-
- `nextTask`: 응답의 `nextTaskId`로 다음 태스크 이름 추론
|
|
480
|
+
- `completedCount`: 지금까지 제출한 taskResult 수 (`response.completedTasks`)
|
|
400
481
|
- `failedCount`: status가 `failed`인 taskResult 수
|
|
401
|
-
- `groupIndex/totalGroups`:
|
|
482
|
+
- `groupIndex/totalGroups`: 현재 처리 중인 병렬 그룹 번호 / 전체 그룹 수
|
|
483
|
+
- `agentCount`: 해당 그룹에서 아직 실행 중인 Agent 수
|
|
402
484
|
|
|
403
|
-
`allTasksCompleted === true` 이면 description
|
|
485
|
+
`allTasksCompleted === true` 이면 `TaskUpdate({ status: "completed", activeForm: undefined, description: "전체 완료 ({totalTasks}개)" })`로 변경한다.
|
|
404
486
|
|
|
405
487
|
### 평가/진화 단계
|
|
406
488
|
|
|
@@ -93,16 +93,17 @@ API 키 없이 MCP 서버 실행 시 자동 활성화. LLM 작업을 caller가
|
|
|
93
93
|
|
|
94
94
|
```
|
|
95
95
|
subject: "Gestalt 인터뷰: {topic}"
|
|
96
|
-
description: "라운드 1/{maxRounds} |
|
|
97
|
-
activeForm: "
|
|
96
|
+
description: "라운드 1/{maxRounds} | 모호성: 측정 전"
|
|
97
|
+
activeForm: "라운드 1 — {currentPrinciple}"
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
### 각 라운드 후 (`respond` 응답 수신 시마다)
|
|
101
101
|
|
|
102
|
-
`TaskUpdate`로 description을 최신 상태로 갱신한다. 모호성 점수는 추이 형식으로 표시한다.
|
|
102
|
+
`TaskUpdate`로 description과 activeForm을 최신 상태로 갱신한다. 모호성 점수는 추이 형식으로 표시한다.
|
|
103
103
|
|
|
104
104
|
```
|
|
105
|
-
description: "라운드 {roundNumber}/{maxRounds} |
|
|
105
|
+
description: "라운드 {roundNumber}/{maxRounds} | 모호성: {score1} → {score2} → {latestScore}"
|
|
106
|
+
activeForm: "라운드 {roundNumber} — {currentPrinciple}"
|
|
106
107
|
```
|
|
107
108
|
|
|
108
109
|
ambiguityScore.isReady === true 이면 description에 "✓ 준비 완료" 표시를 추가한다.
|
package/skills/spec/SKILL.md
CHANGED
|
@@ -104,7 +104,13 @@ Spec 생성 중 Claude Code Task 패널에 상태를 표시한다. best-effort
|
|
|
104
104
|
```
|
|
105
105
|
subject: "Spec 생성 중"
|
|
106
106
|
description: "인터뷰 세션 {sessionId} 기반 Spec 구성 중..."
|
|
107
|
-
activeForm: "
|
|
107
|
+
activeForm: "1/2 — 컨텍스트 요청 중"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
1단계 응답(`status: "prompt"`) 수신 후 `TaskUpdate`로 갱신한다.
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
activeForm: "2/2 — Spec 검증 중"
|
|
108
114
|
```
|
|
109
115
|
|
|
110
116
|
### 완료 시 (2단계 `ges_generate_spec` 응답 수신 후)
|