@tienne/gestalt 0.44.0 → 0.45.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.
- package/CLAUDE.md +2 -1
- package/dist/package.json +1 -1
- package/dist/skills/dispatch/SKILL.md +188 -0
- package/dist/skills/execute/SKILL.md +4 -0
- package/dist/src/code-graph/storage.d.ts.map +1 -1
- package/dist/src/code-graph/storage.js +2 -0
- package/dist/src/code-graph/storage.js.map +1 -1
- package/dist/src/core/constants.d.ts +1 -0
- package/dist/src/core/constants.d.ts.map +1 -1
- package/dist/src/core/constants.js +5 -0
- package/dist/src/core/constants.js.map +1 -1
- package/dist/src/events/store.d.ts.map +1 -1
- package/dist/src/events/store.js +2 -0
- package/dist/src/events/store.js.map +1 -1
- package/package.json +1 -1
- package/skills/dispatch/SKILL.md +188 -0
- package/skills/execute/SKILL.md +4 -0
package/CLAUDE.md
CHANGED
|
@@ -85,6 +85,7 @@ pnpm tsx bin/gestalt.ts init # gestalt.json + code graph + post-commit hook
|
|
|
85
85
|
| PR·브랜치·커밋 코드 리뷰 요청 | `/review` 스킬 사용 |
|
|
86
86
|
| 받은 리뷰 반영·답글 게시 요청 ("리뷰 반영해줘", "리뷰 코멘트에 답해줘", "받은 리뷰 처리해줘") | `review-reply` 스킬 사용 (스레드 수집 → 유형 분류 승인 → 수정·커밋 → 답글 승인 → 게시) |
|
|
87
87
|
| PR 작성·생성 요청 ("PR 만들어줘", "PR 작성해줘", "PR 올려줘") | `gestalt:pr` 스킬 사용 |
|
|
88
|
+
| 실행 태스크를 외부 런타임 워커로 뿌리는 요청 ("orca로 실행", "codex로 실행", "워커 띄워서 실행") | `dispatch` 스킬 사용 (런타임 감지 → 같은 워크트리에 터미널 → worker_done 대기 → ready 재계산). 런타임 없으면 execute의 기본 병렬 경로 |
|
|
88
89
|
|
|
89
90
|
## Project Structure
|
|
90
91
|
```
|
|
@@ -109,7 +110,7 @@ src/utils/ — 알림 등 공용 유틸
|
|
|
109
110
|
src/cli/ — commander 기반 CLI
|
|
110
111
|
role-agents/ — 내장 Role Agent 9개 (architect, frontend-developer, backend-developer, devops-engineer, qa-engineer, designer, product-planner, researcher, technical-writer) + 스킬 지원용 에이전트(jira-writer, slack-messenger, presentation-writer, code-review-writer, code-review-responder 등) 총 21개
|
|
111
112
|
review-agents/ — 내장 Review Agent 4개 (security-reviewer, performance-reviewer, quality-reviewer, frontend-reviewer)
|
|
112
|
-
skills/ — SKILL.md
|
|
113
|
+
skills/ — SKILL.md 17개 (interview, spec, execute, dispatch, agent, review, review-reply, pr, build-graph, blast-radius, diff-radius, jira-create, slack-send, brief, presentation, solve, setup) + `_shared/` 공유 규칙(스킬 아님, 레지스트리가 건너뜀)
|
|
113
114
|
```
|
|
114
115
|
|
|
115
116
|
## Conventions
|
package/dist/package.json
CHANGED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dispatch
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
description: "실행 세션의 착수 가능 태스크를 외부 에이전트 런타임(Orca)의 터미널로 뿌려 병렬 실행한다. 워커별로 다른 에이전트 CLI를 쓰거나, 진행을 터미널로 들여다봐야 하거나, 오래 걸리는 실행을 추적해야 할 때 쓴다. opt-in 대안 백엔드다 — 외부 런타임이 없으면 execute 스킬의 기본 병렬 경로(호스트 Agent 도구)가 그대로 낫고, 이 스킬은 그 사실을 밝히고 물러난다. 계획 수립이나 평가는 execute 스킬이 담당한다."
|
|
5
|
+
triggers:
|
|
6
|
+
- "orca로 실행"
|
|
7
|
+
- "orca로 병렬"
|
|
8
|
+
- "워커로 뿌려"
|
|
9
|
+
- "터미널로 뿌려"
|
|
10
|
+
- "병렬 디스패치"
|
|
11
|
+
- "다른 에이전트로 실행"
|
|
12
|
+
- "codex로 실행"
|
|
13
|
+
- "워커 띄워서 실행"
|
|
14
|
+
inputs:
|
|
15
|
+
sessionId:
|
|
16
|
+
type: string
|
|
17
|
+
required: false
|
|
18
|
+
description: "실행 세션 ID. active 또는 latest도 가능. 비우면 active로 본다"
|
|
19
|
+
agent:
|
|
20
|
+
type: string
|
|
21
|
+
required: false
|
|
22
|
+
description: "워커에 띄울 에이전트 CLI(claude, codex, gemini 등). 비우면 확인 후 결정"
|
|
23
|
+
maxConcurrent:
|
|
24
|
+
type: number
|
|
25
|
+
required: false
|
|
26
|
+
description: "동시에 띄울 워커 수 상한. 비우면 ready 집합 크기와 4 중 작은 값"
|
|
27
|
+
outputs:
|
|
28
|
+
- dispatched_tasks
|
|
29
|
+
- worker_results
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
# Dispatch Skill
|
|
33
|
+
|
|
34
|
+
실행 세션에서 지금 착수 가능한 태스크를 외부 에이전트 런타임의 터미널로 뿌려 병렬 실행한다. 게슈탈트가 무엇을 언제 할 수 있는지 계산하고, 외부 런타임이 워커를 띄우고 생애주기를 추적한다.
|
|
35
|
+
|
|
36
|
+
> **도구가 없을 때** → [`../_shared/tool-availability.md`](../_shared/tool-availability.md)
|
|
37
|
+
> 이 스킬은 외부 CLI에 의존한다. 없으면 흉내내지 않고, 어느 경로로 갈지 밝히고 기본 경로로 넘긴다.
|
|
38
|
+
|
|
39
|
+
## 이 스킬을 쓸 이유가 없는 경우가 많다
|
|
40
|
+
|
|
41
|
+
`execute` 스킬은 이미 `parallelGroups`를 읽어 호스트의 Agent 도구로 병렬 실행한다. 외부 런타임 없이 동작하고 더 가볍다. **기본값은 그쪽이다.**
|
|
42
|
+
|
|
43
|
+
이 스킬로 얻는 것은 병렬 자체가 아니라 세 가지다.
|
|
44
|
+
|
|
45
|
+
| 얻는 것 | 기본 경로로는 |
|
|
46
|
+
|---------|---------------|
|
|
47
|
+
| 워커별로 다른 에이전트 CLI (codex, gemini 등 혼용) | 불가 — 호스트 모델 하나 |
|
|
48
|
+
| 사람이 워커 진행을 터미널로 들여다보기 | 불가 — Agent 도구 내부는 안 보임 |
|
|
49
|
+
| `worker_done` 생애주기, 결정 게이트, 연속 실패 차단 | 없음 |
|
|
50
|
+
|
|
51
|
+
셋 다 필요하지 않으면 이 스킬을 쓰지 않는다. 사용자가 "orca로", "codex로", "워커 띄워서"처럼 **명시적으로 외부 런타임이나 다른 CLI를 지목했을 때만** 발동한다. 단지 병렬로 빠르게 돌리고 싶다는 요청은 execute 스킬로 보낸다.
|
|
52
|
+
|
|
53
|
+
## 0단계: 런타임 감지 — 없으면 여기서 끝낸다
|
|
54
|
+
|
|
55
|
+
**존재 여부만으로 판단하지 않는다.** 리눅스에서 `orca`는 GNOME 스크린리더 이름이다. `which orca`로 찾으면 엉뚱한 프로그램에 명령을 보내게 된다.
|
|
56
|
+
|
|
57
|
+
실행 파일 결정 순서:
|
|
58
|
+
|
|
59
|
+
1. 리눅스이고 Orca 관리 터미널 밖이면 `orca-ide`
|
|
60
|
+
2. 그 외에는 `orca`
|
|
61
|
+
|
|
62
|
+
결정한 실행 파일로 런타임이 실제로 응답하는지 확인한다.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
<실행파일> status --json
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
이 응답이 정상 JSON이고 런타임이 도달 가능할 때만 진행한다. 이후 모든 명령에 같은 실행 파일을 쓴다.
|
|
69
|
+
|
|
70
|
+
**감지에 실패하면 아래를 사용자에게 말하고 멈춘다.**
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Orca 런타임이 붙지 않아 워커 디스패치는 못 합니다.
|
|
74
|
+
대신 execute 스킬의 기본 병렬 경로(호스트 Agent 도구)로 진행할 수 있어요 — 이건 외부 도구 없이 동작합니다.
|
|
75
|
+
그쪽으로 갈까요?
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**감지 실패를 성공으로 보고하지 않는다.** Agent 도구로 돌렸으면 "Orca로 디스패치했다"고 말하지 않는다. 어느 경로로 돌았는지 완료 보고에 명시한다.
|
|
79
|
+
|
|
80
|
+
## 1단계: 착수 가능한 태스크 읽기
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{ "action": "status", "sessionId": "active" }
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
응답의 `nextTaskIds`가 지금 동시에 착수 가능한 태스크 집합이다. `sessionId`에는 `active`나 `latest`를 그대로 넣을 수 있다.
|
|
87
|
+
|
|
88
|
+
- `nextTaskIds`가 비어 있으면 진행할 게 없다. 모든 태스크가 끝났으면 evaluate로 넘기고, 아니면 왜 비었는지(의존성 미충족, 실패 태스크) 확인해 보고한다.
|
|
89
|
+
- `nextTaskIds`가 1개면 디스패치 이득이 없다. 그 사실을 말하고 기본 경로를 권한다.
|
|
90
|
+
- 2개 이상일 때만 아래로 간다.
|
|
91
|
+
|
|
92
|
+
## 2단계: 워커를 어디에 띄울지 — 기본은 같은 워크트리
|
|
93
|
+
|
|
94
|
+
**병렬 실행은 워크트리를 나눌 이유가 아니다.** 같은 워크트리에 에이전트 터미널을 여럿 띄우는 것이 기본이다. 이유가 둘이다.
|
|
95
|
+
|
|
96
|
+
1. Orca 자체 가이드가 그렇게 말한다 — 독립 태스크, 병렬 실행, 편의, 체크아웃 분리 선호는 모두 격리 요건이 아니다. 파일 충돌로 공유가 불가능할 때만 워크트리를 만든다.
|
|
97
|
+
2. 같은 워크트리면 `.gestalt/`를 공유한다. 코드 그래프와 memory가 그대로 살아 있다. 워크트리를 나누면 워커마다 그래프가 비어 blast-radius를 못 쓰고 memory도 빈 상태로 시작한다.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
<실행파일> terminal create --worktree active --title <task-id> --command "<agent>" --json
|
|
101
|
+
<실행파일> terminal wait --terminal <handle> --for tui-idle --timeout-ms 60000 --json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`tui-idle`을 기다리는 건 프롬프트가 씹히는 것을 막기 위한 것이다. 항상 `--timeout-ms`를 넘긴다.
|
|
105
|
+
|
|
106
|
+
워크트리를 새로 만드는 것은 **ready 집합의 태스크들이 같은 파일을 건드릴 때만**이다. 그 경우 먼저 사용자에게 충돌을 짚고 워크트리 분리가 필요하다고 말한 뒤 진행한다. 워크트리를 나눴다면 그 워커는 코드 그래프와 memory가 비어 있다는 사실도 함께 알린다.
|
|
107
|
+
|
|
108
|
+
## 3단계: 태스크를 디스패치한다
|
|
109
|
+
|
|
110
|
+
태스크마다 Orca 오케스트레이션 태스크를 만들고 워커에 넣는다. `--inject`가 워커에게 생애주기 프리앰블을 붙여 `worker_done`을 보내게 한다.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
<실행파일> orchestration task-create --spec "<태스크 브리핑>" --json
|
|
114
|
+
<실행파일> orchestration dispatch --task <task_id> --to <handle> --inject --json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**태스크 브리핑에 반드시 담을 것:**
|
|
118
|
+
|
|
119
|
+
- 게슈탈트 실행 세션 ID(UUID 원문 — 워커는 다른 프로세스라 `active`가 다르게 해석될 수 있다)
|
|
120
|
+
- 이 워커가 맡은 게슈탈트 taskId
|
|
121
|
+
- `taskContext.taskPrompt` 내용
|
|
122
|
+
- 완료 후 `ges_execute action=execute_task`로 결과를 제출하라는 지시
|
|
123
|
+
- **다른 태스크는 건드리지 말라는 경계** — 워커가 ready 집합을 보고 남의 태스크까지 하려 들면 충돌한다
|
|
124
|
+
|
|
125
|
+
동시 워커 수는 `maxConcurrent`로 제한한다. 지정이 없으면 ready 집합 크기와 4 중 작은 값을 쓴다. 워커마다 에이전트 프로세스와 게슈탈트 MCP 서버가 하나씩 뜨므로 무제한으로 띄우지 않는다.
|
|
126
|
+
|
|
127
|
+
## 4단계: 기다린다 — 폴링하지 않는다
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
<실행파일> orchestration check --wait --types worker_done,escalation,decision_gate --timeout-ms 900000 --json
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
- **타임아웃은 실패가 아니라 체크포인트다.** 코딩 태스크는 15~60분이 흔하다. `worker_done`이나 `escalation`을 받거나, 터미널이 사라지거나, 사용자가 멈추라고 하기 전까지 대기를 계속 건다.
|
|
134
|
+
- 하트비트와 터미널 활동은 살아 있다는 뜻이지 끝났다는 뜻이 아니다. 완료 메시지가 없다는 이유로 워커를 죽이거나 재시작하지 않는다.
|
|
135
|
+
- `check --wait`는 한 번에 하나를 돌려준다. 워커 N개가 동시에 끝날 수 있으면 N번 돌린다.
|
|
136
|
+
- `decision_gate`가 오면 사용자에게 판단을 받아 `orchestration reply`로 답하고 계속 기다린다.
|
|
137
|
+
|
|
138
|
+
## 5단계: `worker_done`마다 ready 집합을 다시 읽는다
|
|
139
|
+
|
|
140
|
+
**캐시된 세션 상태를 믿지 않는다.** 워커마다 게슈탈트 MCP 서버 프로세스가 따로 뜨고, 각 프로세스가 인메모리 세션을 따로 들고 있다. 이벤트는 append-only라 replay하면 수렴하지만, 다른 프로세스가 방금 넣은 결과는 이쪽 파생 상태(`nextTaskIds`)에 아직 반영되지 않는다.
|
|
141
|
+
|
|
142
|
+
그래서 `worker_done`을 받을 때마다 다시 읽는다.
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{ "action": "status", "sessionId": "<UUID>" }
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
새로 ready가 된 태스크가 있으면 2~3단계로 디스패치한다. **ready 집합을 앞으로 굴리는 것은 이 코디네이터 한 명만 한다.** 워커에게 다음 태스크를 알아서 집으라고 시키면 둘이 같은 태스크를 잡는다.
|
|
149
|
+
|
|
150
|
+
## 6단계: 막힌 것은 게이트로 올린다
|
|
151
|
+
|
|
152
|
+
게슈탈트가 human escalation으로 세션을 끝냈으면(`terminationReason: 'human_escalation'`) 그 사실을 Orca 게이트로 올려 사람 눈에 보이게 한다.
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
<실행파일> orchestration gate-create --task <task_id> --question "<막힌 지점과 필요한 판단>" --json
|
|
156
|
+
<실행파일> worktree set --worktree active --comment "blocked: 사람 판단 필요" --json
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
카드 코멘트를 남기면 터미널을 열지 않고도 `worktree ps`나 모바일에서 상태가 보인다. 의미 있는 체크포인트마다 코멘트를 갱신한다.
|
|
160
|
+
|
|
161
|
+
## Do-NOT
|
|
162
|
+
|
|
163
|
+
- **execute 스킬을 대체하지 않는다.** 계획 수립(Planning), 평가(Evaluate), 개선(Evolve)은 execute가 한다. 이 스킬은 Phase 2 실행을 다른 백엔드로 돌리는 것뿐이다.
|
|
164
|
+
- **런타임이 없을 때 흉내내지 않는다.** 0단계에서 멈추고 기본 경로를 권한다.
|
|
165
|
+
- **병렬 실행을 이유로 워크트리를 만들지 않는다.** 파일 충돌만이 사유다.
|
|
166
|
+
- **워커에게 ready 집합을 굴리게 하지 않는다.** 코디네이터만 한다.
|
|
167
|
+
- **`worker_done` 없이 완료로 보고하지 않는다.** 터미널이 조용한 것은 완료가 아니다.
|
|
168
|
+
- **워커를 무제한으로 띄우지 않는다.** 워커마다 에이전트와 MCP 서버 프로세스가 하나씩 붙는다.
|
|
169
|
+
|
|
170
|
+
## 에러 처리
|
|
171
|
+
|
|
172
|
+
| 상황 | 대응 |
|
|
173
|
+
|------|------|
|
|
174
|
+
| CLI 없음 또는 `status --json` 실패 | 0단계에서 멈추고 기본 경로 제안 |
|
|
175
|
+
| `ready` 집합이 0개 | 이유(전체 완료/의존성 미충족/실패 태스크)를 확인해 보고 |
|
|
176
|
+
| `ready` 집합이 1개 | 디스패치 이득 없음을 말하고 기본 경로 권유 |
|
|
177
|
+
| 터미널 핸들이 `terminal_handle_stale` | `terminal list`로 다시 조회해 교체 핸들만 쓴다. 낡은 핸들과 새 핸들에 이중 전송하지 않는다 |
|
|
178
|
+
| 워커가 같은 태스크를 3회 연속 실패 | 그 태스크 디스패치를 멈추고 사용자에게 보고. evolve 파이프라인으로 넘길지 확인 |
|
|
179
|
+
| `check --wait` 타임아웃 | 실패가 아니다. `task-list`나 `terminal read`로 생존을 확인하고 대기를 다시 건다 |
|
|
180
|
+
| DB 잠금 오류(`SQLITE_BUSY`) | 워커 수를 줄이고 재시도. 게슈탈트 이벤트 DB는 홈 글로벌이라 프로세스가 겹친다 |
|
|
181
|
+
|
|
182
|
+
## 완료 보고
|
|
183
|
+
|
|
184
|
+
- 어느 경로로 실행했는지 (외부 런타임 워커 / 호스트 Agent 도구)
|
|
185
|
+
- 디스패치한 태스크와 각 결과
|
|
186
|
+
- 워커별로 어떤 에이전트를 썼는지
|
|
187
|
+
- 실패한 태스크와 다음 행동
|
|
188
|
+
- 워크트리를 나눴다면 그 워커의 코드 그래프와 memory가 비어 있었다는 사실
|
|
@@ -206,6 +206,10 @@ ges_status() → { reasoningModel: "fable", reasoningModelFallback: "opus", ..
|
|
|
206
206
|
|
|
207
207
|
`plan_complete` 응답에 `parallelGroups: string[][]`가 포함되어 있으면 병렬 실행을 사용한다. 각 내부 배열은 동시에 실행할 수 있는 태스크 ID 묶음이다.
|
|
208
208
|
|
|
209
|
+
> 이 경로가 기본값이고 외부 도구 없이 동작한다. 워커별로 다른 에이전트 CLI를 쓰거나, 진행을 터미널로 들여다봐야 하거나, `worker_done` 추적이 필요하면 `dispatch` 스킬이 같은 단계를 외부 런타임으로 돌린다. 셋 다 필요 없으면 여기 그대로 두는 편이 가볍다.
|
|
210
|
+
>
|
|
211
|
+
> `execute_task` 응답의 `nextTaskIds`는 그 시점에 착수 가능한 태스크 집합이다. `parallelGroups`가 계획 시점의 정적 레이어라면, 이쪽은 지금 완료 상태를 반영한 값이다. 한 태스크가 끝나고 다음을 고를 때는 `nextTaskIds`를 보는 편이 정확하다.
|
|
212
|
+
|
|
209
213
|
**병렬 그룹 실행 흐름:**
|
|
210
214
|
|
|
211
215
|
1. `parallelGroups[groupIndex]`의 taskId 목록을 확인한다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/code-graph/storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/code-graph/storage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AA2FjE,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAW;gBAET,MAAM,EAAE,MAAM;IAa1B,OAAO,CAAC,UAAU;IAwClB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE;IAQjD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAQ7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE;IAQnD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE;IAQnD;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAY/C,WAAW,IAAI,aAAa,EAAE;IAQ9B,WAAW,IAAI,aAAa,EAAE;IAQ9B,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAmBrC,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAarC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAuBpC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ5C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAoCxC,eAAe,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAenD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAMtD,gBAAgB,IAAI,iBAAiB,EAAE;IAMvC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIrC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI9C,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
2
|
import { statSync, existsSync, mkdirSync } from 'node:fs';
|
|
3
3
|
import { dirname } from 'node:path';
|
|
4
|
+
import { SQLITE_BUSY_TIMEOUT_MS } from '../core/constants.js';
|
|
4
5
|
const _require = createRequire(import.meta.url);
|
|
5
6
|
function loadSqlite() {
|
|
6
7
|
const mod = _require('better-sqlite3');
|
|
@@ -52,6 +53,7 @@ export class CodeGraphStore {
|
|
|
52
53
|
const Database = loadSqlite();
|
|
53
54
|
this.db = new Database(dbPath);
|
|
54
55
|
this.db.pragma('journal_mode = WAL');
|
|
56
|
+
this.db.pragma(`busy_timeout = ${SQLITE_BUSY_TIMEOUT_MS}`);
|
|
55
57
|
this.db.pragma('foreign_keys = ON');
|
|
56
58
|
this.initialize();
|
|
57
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/code-graph/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/code-graph/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export declare const CONTINUITY_PENALTY_MAX = 0.15;
|
|
|
14
14
|
export declare const PRINCIPLE_QUESTION_STRATEGIES: Record<GestaltPrinciple, string>;
|
|
15
15
|
export declare const EVENT_STORE_TABLE = "events";
|
|
16
16
|
export declare const SKILLS_DIR = "skills";
|
|
17
|
+
export declare const SQLITE_BUSY_TIMEOUT_MS = 5000;
|
|
17
18
|
export declare const DEFAULT_SESSION_TTL_MS: number;
|
|
18
19
|
export declare const PLANNING_PRINCIPLE_SEQUENCE: readonly [GestaltPrinciple.FIGURE_GROUND, GestaltPrinciple.CLOSURE, GestaltPrinciple.PROXIMITY, GestaltPrinciple.CONTINUITY];
|
|
19
20
|
export declare const PLANNING_TOTAL_STEPS = 4;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAC/C,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAE/C,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAM/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAM/D,CAAC;AAEF,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAW1E,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAC1C,eAAO,MAAM,UAAU,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAC/C,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAE/C,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAM/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAM/D,CAAC;AAEF,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAW1E,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAC1C,eAAO,MAAM,UAAU,WAAW,CAAC;AAMnC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAG3C,eAAO,MAAM,sBAAsB,QAAsB,CAAC;AAG1D,eAAO,MAAM,2BAA2B,8HAK9B,CAAC;AAEX,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAShE,CAAC;AAEF,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,eAAe,KAAK,CAAC;AAGlC,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG/D,CAAC;AAOF,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAGX,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,wBAAwB,IAAI,CAAC"}
|
|
@@ -32,6 +32,11 @@ export const PRINCIPLE_QUESTION_STRATEGIES = {
|
|
|
32
32
|
};
|
|
33
33
|
export const EVENT_STORE_TABLE = 'events';
|
|
34
34
|
export const SKILLS_DIR = 'skills';
|
|
35
|
+
// ─── SQLite 연결 ─────────────────────────────────────────────────
|
|
36
|
+
// MCP 서버는 클라이언트 세션마다 프로세스가 따로 뜨는데 DB는 홈 글로벌 경로를 공유한다.
|
|
37
|
+
// busy_timeout 기본값 0이면 쓰기 잠금이 겹치는 순간 기다리지 않고 SQLITE_BUSY로 즉시
|
|
38
|
+
// 실패하므로, 잠금이 풀릴 때까지 대기할 시간을 준다. 연결마다 설정해야 적용된다.
|
|
39
|
+
export const SQLITE_BUSY_TIMEOUT_MS = 5000;
|
|
35
40
|
// ─── Session TTL ────────────────────────────────────────────────
|
|
36
41
|
export const DEFAULT_SESSION_TTL_MS = 24 * 60 * 60 * 1000; // 24h
|
|
37
42
|
// ─── Execute Engine ──────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/events/store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/events/store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAsBpD,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,CAAC,EACN,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,GACT,WAAW,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,CAAC,CAAC,EACJ,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,GACT,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACzB,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACnF,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3E,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChD,KAAK,IAAI,IAAI,CAAC;CACf;AAED,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,EAAE,CAA+B;IACzC,OAAO,CAAC,SAAS,CAAuB;gBAE5B,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;IA0B3D,OAAO,CAAC,UAAU;IAoBlB,MAAM,CAAC,CAAC,EACN,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,GACT,WAAW,CAAC,CAAC,CAAC;IAqCjB;;;OAGG;IACH,IAAI,CAAC,CAAC,EACJ,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,GACT,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAexB,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE;IAgBzE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,WAAW,EAAE;IAkBxD,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAqB5F;;;OAGG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE;IAIjE;;OAEG;IACH,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAwB/C,MAAM,CAAC,KAAK,SAAM,GAAG,WAAW,EAAE;IAYlC,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAoB9C,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,eAAe;CAkBxB"}
|
package/dist/src/events/store.js
CHANGED
|
@@ -3,6 +3,7 @@ import { appendFileSync, mkdirSync, existsSync, readFileSync } from 'node:fs';
|
|
|
3
3
|
import { createRequire } from 'node:module';
|
|
4
4
|
import { tmpdir } from 'node:os';
|
|
5
5
|
import { dirname, join } from 'node:path';
|
|
6
|
+
import { SQLITE_BUSY_TIMEOUT_MS } from '../core/constants.js';
|
|
6
7
|
import { EventStoreError } from '../core/errors.js';
|
|
7
8
|
import { logger } from '../core/logger.js';
|
|
8
9
|
const require = createRequire(import.meta.url);
|
|
@@ -19,6 +20,7 @@ export class EventStore {
|
|
|
19
20
|
const Database = loadSqliteDatabase();
|
|
20
21
|
this.db = new Database(dbPath);
|
|
21
22
|
this.db.pragma('journal_mode = WAL');
|
|
23
|
+
this.db.pragma(`busy_timeout = ${SQLITE_BUSY_TIMEOUT_MS}`);
|
|
22
24
|
this.db.pragma('foreign_keys = ON');
|
|
23
25
|
this.initialize(this.db);
|
|
24
26
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/events/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/events/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AA4C/C,MAAM,OAAO,UAAU;IACb,EAAE,GAA0B,IAAI,CAAC;IACjC,SAAS,GAAkB,IAAI,CAAC;IAExC,YAAY,MAAc,EAAE,UAA6B,EAAE;QACzD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;gBACtC,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,sBAAsB,EAAE,CAAC,CAAC;gBAC3D,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;oBACxD,MAAM,EAAE,cAAc;oBACtB,MAAM;oBACN,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;iBAClD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,UAAU,CAAC,EAAkB;QACnC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;KAgBP,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CACJ,aAAqB,EACrB,WAAmB,EACnB,SAAiB,EACjB,OAAU;QAEV,MAAM,KAAK,GAAmB;YAC5B,EAAE,EAAE,UAAU,EAAE;YAChB,aAAa;YACb,WAAW;YACX,SAAS;YACT,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;SAG5B,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,EACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAC7B,KAAK,CAAC,SAAS,CAChB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,eAAe,CACvB,2BAA2B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxE,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,IAAI,CACF,aAAqB,EACrB,WAAmB,EACnB,SAAiB,EACjB,OAAU;QAEV,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACrC,MAAM,EAAE,cAAc;gBACtB,aAAa;gBACb,WAAW;gBACX,SAAS;gBACT,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aAClD,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,cAAc,CAAC,aAAqB,EAAE,WAAmB;QACvD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,aAAa,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,CACtF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAkB,CAAC;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,SAAiB,EAAE,KAAK,GAAG,GAAG;QACtC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,eAAe,EAAE;iBAC1B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;iBAChD,IAAI,CAAC,eAAe,CAAC;iBACrB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAkB,CAAC;QACzD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,aAAqB,EAAE,WAAmB,EAAE,SAAiB;QACrE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAC3C,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,aAAa,KAAK,aAAa;gBACrC,KAAK,CAAC,WAAW,KAAK,WAAW;gBACjC,KAAK,CAAC,SAAS,KAAK,SAAS,CAChC,CAAC;YACF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,CAA4B,CAAC;QACvF,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,aAAqB,EAAE,WAAmB;QAC/C,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,aAAqB;QAClC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;YACtD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC3C,IAAI,KAAK,CAAC,aAAa,KAAK,aAAa;oBAAE,SAAS;gBACpD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;oBAChD,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,OAAO,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC;iBACtC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAA+B,CAAC;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,GAAG;QAChB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAkB,CAAC;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC3C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAA6C,CAAC;QACnE,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QACrC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAEO,WAAW,CAAI,KAAqB;QAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,eAAe,CAAC,0CAA0C,CAAC,CAAC;QACxE,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAEO,sBAAsB,CAAC,MAAc;QAC3C,MAAM,UAAU,GAAG;YACjB,MAAM;YACN,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC;SACvC,CAAC;QAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,GAAG,SAAS,QAAQ,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;wBAC7C,MAAM,EAAE,cAAc;wBACtB,aAAa,EAAE,MAAM;wBACrB,SAAS;qBACV,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO;YACT,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,MAAM,IAAI,eAAe,CACvB,qDAAqD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,CAAC;QAE9D,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE;oBACrD,MAAM,EAAE,cAAc;oBACtB,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAYD,SAAS,QAAQ,CAAC,GAAgB;IAChC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAwD,CAAC;IAClG,IAAI,OAAO,QAAQ,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IACpD,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;IACpE,MAAM,IAAI,eAAe,CAAC,sDAAsD,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,eAAe,CAAC,CAAc,EAAE,CAAc;IACrD,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dispatch
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
description: "실행 세션의 착수 가능 태스크를 외부 에이전트 런타임(Orca)의 터미널로 뿌려 병렬 실행한다. 워커별로 다른 에이전트 CLI를 쓰거나, 진행을 터미널로 들여다봐야 하거나, 오래 걸리는 실행을 추적해야 할 때 쓴다. opt-in 대안 백엔드다 — 외부 런타임이 없으면 execute 스킬의 기본 병렬 경로(호스트 Agent 도구)가 그대로 낫고, 이 스킬은 그 사실을 밝히고 물러난다. 계획 수립이나 평가는 execute 스킬이 담당한다."
|
|
5
|
+
triggers:
|
|
6
|
+
- "orca로 실행"
|
|
7
|
+
- "orca로 병렬"
|
|
8
|
+
- "워커로 뿌려"
|
|
9
|
+
- "터미널로 뿌려"
|
|
10
|
+
- "병렬 디스패치"
|
|
11
|
+
- "다른 에이전트로 실행"
|
|
12
|
+
- "codex로 실행"
|
|
13
|
+
- "워커 띄워서 실행"
|
|
14
|
+
inputs:
|
|
15
|
+
sessionId:
|
|
16
|
+
type: string
|
|
17
|
+
required: false
|
|
18
|
+
description: "실행 세션 ID. active 또는 latest도 가능. 비우면 active로 본다"
|
|
19
|
+
agent:
|
|
20
|
+
type: string
|
|
21
|
+
required: false
|
|
22
|
+
description: "워커에 띄울 에이전트 CLI(claude, codex, gemini 등). 비우면 확인 후 결정"
|
|
23
|
+
maxConcurrent:
|
|
24
|
+
type: number
|
|
25
|
+
required: false
|
|
26
|
+
description: "동시에 띄울 워커 수 상한. 비우면 ready 집합 크기와 4 중 작은 값"
|
|
27
|
+
outputs:
|
|
28
|
+
- dispatched_tasks
|
|
29
|
+
- worker_results
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
# Dispatch Skill
|
|
33
|
+
|
|
34
|
+
실행 세션에서 지금 착수 가능한 태스크를 외부 에이전트 런타임의 터미널로 뿌려 병렬 실행한다. 게슈탈트가 무엇을 언제 할 수 있는지 계산하고, 외부 런타임이 워커를 띄우고 생애주기를 추적한다.
|
|
35
|
+
|
|
36
|
+
> **도구가 없을 때** → [`../_shared/tool-availability.md`](../_shared/tool-availability.md)
|
|
37
|
+
> 이 스킬은 외부 CLI에 의존한다. 없으면 흉내내지 않고, 어느 경로로 갈지 밝히고 기본 경로로 넘긴다.
|
|
38
|
+
|
|
39
|
+
## 이 스킬을 쓸 이유가 없는 경우가 많다
|
|
40
|
+
|
|
41
|
+
`execute` 스킬은 이미 `parallelGroups`를 읽어 호스트의 Agent 도구로 병렬 실행한다. 외부 런타임 없이 동작하고 더 가볍다. **기본값은 그쪽이다.**
|
|
42
|
+
|
|
43
|
+
이 스킬로 얻는 것은 병렬 자체가 아니라 세 가지다.
|
|
44
|
+
|
|
45
|
+
| 얻는 것 | 기본 경로로는 |
|
|
46
|
+
|---------|---------------|
|
|
47
|
+
| 워커별로 다른 에이전트 CLI (codex, gemini 등 혼용) | 불가 — 호스트 모델 하나 |
|
|
48
|
+
| 사람이 워커 진행을 터미널로 들여다보기 | 불가 — Agent 도구 내부는 안 보임 |
|
|
49
|
+
| `worker_done` 생애주기, 결정 게이트, 연속 실패 차단 | 없음 |
|
|
50
|
+
|
|
51
|
+
셋 다 필요하지 않으면 이 스킬을 쓰지 않는다. 사용자가 "orca로", "codex로", "워커 띄워서"처럼 **명시적으로 외부 런타임이나 다른 CLI를 지목했을 때만** 발동한다. 단지 병렬로 빠르게 돌리고 싶다는 요청은 execute 스킬로 보낸다.
|
|
52
|
+
|
|
53
|
+
## 0단계: 런타임 감지 — 없으면 여기서 끝낸다
|
|
54
|
+
|
|
55
|
+
**존재 여부만으로 판단하지 않는다.** 리눅스에서 `orca`는 GNOME 스크린리더 이름이다. `which orca`로 찾으면 엉뚱한 프로그램에 명령을 보내게 된다.
|
|
56
|
+
|
|
57
|
+
실행 파일 결정 순서:
|
|
58
|
+
|
|
59
|
+
1. 리눅스이고 Orca 관리 터미널 밖이면 `orca-ide`
|
|
60
|
+
2. 그 외에는 `orca`
|
|
61
|
+
|
|
62
|
+
결정한 실행 파일로 런타임이 실제로 응답하는지 확인한다.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
<실행파일> status --json
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
이 응답이 정상 JSON이고 런타임이 도달 가능할 때만 진행한다. 이후 모든 명령에 같은 실행 파일을 쓴다.
|
|
69
|
+
|
|
70
|
+
**감지에 실패하면 아래를 사용자에게 말하고 멈춘다.**
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Orca 런타임이 붙지 않아 워커 디스패치는 못 합니다.
|
|
74
|
+
대신 execute 스킬의 기본 병렬 경로(호스트 Agent 도구)로 진행할 수 있어요 — 이건 외부 도구 없이 동작합니다.
|
|
75
|
+
그쪽으로 갈까요?
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**감지 실패를 성공으로 보고하지 않는다.** Agent 도구로 돌렸으면 "Orca로 디스패치했다"고 말하지 않는다. 어느 경로로 돌았는지 완료 보고에 명시한다.
|
|
79
|
+
|
|
80
|
+
## 1단계: 착수 가능한 태스크 읽기
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{ "action": "status", "sessionId": "active" }
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
응답의 `nextTaskIds`가 지금 동시에 착수 가능한 태스크 집합이다. `sessionId`에는 `active`나 `latest`를 그대로 넣을 수 있다.
|
|
87
|
+
|
|
88
|
+
- `nextTaskIds`가 비어 있으면 진행할 게 없다. 모든 태스크가 끝났으면 evaluate로 넘기고, 아니면 왜 비었는지(의존성 미충족, 실패 태스크) 확인해 보고한다.
|
|
89
|
+
- `nextTaskIds`가 1개면 디스패치 이득이 없다. 그 사실을 말하고 기본 경로를 권한다.
|
|
90
|
+
- 2개 이상일 때만 아래로 간다.
|
|
91
|
+
|
|
92
|
+
## 2단계: 워커를 어디에 띄울지 — 기본은 같은 워크트리
|
|
93
|
+
|
|
94
|
+
**병렬 실행은 워크트리를 나눌 이유가 아니다.** 같은 워크트리에 에이전트 터미널을 여럿 띄우는 것이 기본이다. 이유가 둘이다.
|
|
95
|
+
|
|
96
|
+
1. Orca 자체 가이드가 그렇게 말한다 — 독립 태스크, 병렬 실행, 편의, 체크아웃 분리 선호는 모두 격리 요건이 아니다. 파일 충돌로 공유가 불가능할 때만 워크트리를 만든다.
|
|
97
|
+
2. 같은 워크트리면 `.gestalt/`를 공유한다. 코드 그래프와 memory가 그대로 살아 있다. 워크트리를 나누면 워커마다 그래프가 비어 blast-radius를 못 쓰고 memory도 빈 상태로 시작한다.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
<실행파일> terminal create --worktree active --title <task-id> --command "<agent>" --json
|
|
101
|
+
<실행파일> terminal wait --terminal <handle> --for tui-idle --timeout-ms 60000 --json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`tui-idle`을 기다리는 건 프롬프트가 씹히는 것을 막기 위한 것이다. 항상 `--timeout-ms`를 넘긴다.
|
|
105
|
+
|
|
106
|
+
워크트리를 새로 만드는 것은 **ready 집합의 태스크들이 같은 파일을 건드릴 때만**이다. 그 경우 먼저 사용자에게 충돌을 짚고 워크트리 분리가 필요하다고 말한 뒤 진행한다. 워크트리를 나눴다면 그 워커는 코드 그래프와 memory가 비어 있다는 사실도 함께 알린다.
|
|
107
|
+
|
|
108
|
+
## 3단계: 태스크를 디스패치한다
|
|
109
|
+
|
|
110
|
+
태스크마다 Orca 오케스트레이션 태스크를 만들고 워커에 넣는다. `--inject`가 워커에게 생애주기 프리앰블을 붙여 `worker_done`을 보내게 한다.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
<실행파일> orchestration task-create --spec "<태스크 브리핑>" --json
|
|
114
|
+
<실행파일> orchestration dispatch --task <task_id> --to <handle> --inject --json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**태스크 브리핑에 반드시 담을 것:**
|
|
118
|
+
|
|
119
|
+
- 게슈탈트 실행 세션 ID(UUID 원문 — 워커는 다른 프로세스라 `active`가 다르게 해석될 수 있다)
|
|
120
|
+
- 이 워커가 맡은 게슈탈트 taskId
|
|
121
|
+
- `taskContext.taskPrompt` 내용
|
|
122
|
+
- 완료 후 `ges_execute action=execute_task`로 결과를 제출하라는 지시
|
|
123
|
+
- **다른 태스크는 건드리지 말라는 경계** — 워커가 ready 집합을 보고 남의 태스크까지 하려 들면 충돌한다
|
|
124
|
+
|
|
125
|
+
동시 워커 수는 `maxConcurrent`로 제한한다. 지정이 없으면 ready 집합 크기와 4 중 작은 값을 쓴다. 워커마다 에이전트 프로세스와 게슈탈트 MCP 서버가 하나씩 뜨므로 무제한으로 띄우지 않는다.
|
|
126
|
+
|
|
127
|
+
## 4단계: 기다린다 — 폴링하지 않는다
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
<실행파일> orchestration check --wait --types worker_done,escalation,decision_gate --timeout-ms 900000 --json
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
- **타임아웃은 실패가 아니라 체크포인트다.** 코딩 태스크는 15~60분이 흔하다. `worker_done`이나 `escalation`을 받거나, 터미널이 사라지거나, 사용자가 멈추라고 하기 전까지 대기를 계속 건다.
|
|
134
|
+
- 하트비트와 터미널 활동은 살아 있다는 뜻이지 끝났다는 뜻이 아니다. 완료 메시지가 없다는 이유로 워커를 죽이거나 재시작하지 않는다.
|
|
135
|
+
- `check --wait`는 한 번에 하나를 돌려준다. 워커 N개가 동시에 끝날 수 있으면 N번 돌린다.
|
|
136
|
+
- `decision_gate`가 오면 사용자에게 판단을 받아 `orchestration reply`로 답하고 계속 기다린다.
|
|
137
|
+
|
|
138
|
+
## 5단계: `worker_done`마다 ready 집합을 다시 읽는다
|
|
139
|
+
|
|
140
|
+
**캐시된 세션 상태를 믿지 않는다.** 워커마다 게슈탈트 MCP 서버 프로세스가 따로 뜨고, 각 프로세스가 인메모리 세션을 따로 들고 있다. 이벤트는 append-only라 replay하면 수렴하지만, 다른 프로세스가 방금 넣은 결과는 이쪽 파생 상태(`nextTaskIds`)에 아직 반영되지 않는다.
|
|
141
|
+
|
|
142
|
+
그래서 `worker_done`을 받을 때마다 다시 읽는다.
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{ "action": "status", "sessionId": "<UUID>" }
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
새로 ready가 된 태스크가 있으면 2~3단계로 디스패치한다. **ready 집합을 앞으로 굴리는 것은 이 코디네이터 한 명만 한다.** 워커에게 다음 태스크를 알아서 집으라고 시키면 둘이 같은 태스크를 잡는다.
|
|
149
|
+
|
|
150
|
+
## 6단계: 막힌 것은 게이트로 올린다
|
|
151
|
+
|
|
152
|
+
게슈탈트가 human escalation으로 세션을 끝냈으면(`terminationReason: 'human_escalation'`) 그 사실을 Orca 게이트로 올려 사람 눈에 보이게 한다.
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
<실행파일> orchestration gate-create --task <task_id> --question "<막힌 지점과 필요한 판단>" --json
|
|
156
|
+
<실행파일> worktree set --worktree active --comment "blocked: 사람 판단 필요" --json
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
카드 코멘트를 남기면 터미널을 열지 않고도 `worktree ps`나 모바일에서 상태가 보인다. 의미 있는 체크포인트마다 코멘트를 갱신한다.
|
|
160
|
+
|
|
161
|
+
## Do-NOT
|
|
162
|
+
|
|
163
|
+
- **execute 스킬을 대체하지 않는다.** 계획 수립(Planning), 평가(Evaluate), 개선(Evolve)은 execute가 한다. 이 스킬은 Phase 2 실행을 다른 백엔드로 돌리는 것뿐이다.
|
|
164
|
+
- **런타임이 없을 때 흉내내지 않는다.** 0단계에서 멈추고 기본 경로를 권한다.
|
|
165
|
+
- **병렬 실행을 이유로 워크트리를 만들지 않는다.** 파일 충돌만이 사유다.
|
|
166
|
+
- **워커에게 ready 집합을 굴리게 하지 않는다.** 코디네이터만 한다.
|
|
167
|
+
- **`worker_done` 없이 완료로 보고하지 않는다.** 터미널이 조용한 것은 완료가 아니다.
|
|
168
|
+
- **워커를 무제한으로 띄우지 않는다.** 워커마다 에이전트와 MCP 서버 프로세스가 하나씩 붙는다.
|
|
169
|
+
|
|
170
|
+
## 에러 처리
|
|
171
|
+
|
|
172
|
+
| 상황 | 대응 |
|
|
173
|
+
|------|------|
|
|
174
|
+
| CLI 없음 또는 `status --json` 실패 | 0단계에서 멈추고 기본 경로 제안 |
|
|
175
|
+
| `ready` 집합이 0개 | 이유(전체 완료/의존성 미충족/실패 태스크)를 확인해 보고 |
|
|
176
|
+
| `ready` 집합이 1개 | 디스패치 이득 없음을 말하고 기본 경로 권유 |
|
|
177
|
+
| 터미널 핸들이 `terminal_handle_stale` | `terminal list`로 다시 조회해 교체 핸들만 쓴다. 낡은 핸들과 새 핸들에 이중 전송하지 않는다 |
|
|
178
|
+
| 워커가 같은 태스크를 3회 연속 실패 | 그 태스크 디스패치를 멈추고 사용자에게 보고. evolve 파이프라인으로 넘길지 확인 |
|
|
179
|
+
| `check --wait` 타임아웃 | 실패가 아니다. `task-list`나 `terminal read`로 생존을 확인하고 대기를 다시 건다 |
|
|
180
|
+
| DB 잠금 오류(`SQLITE_BUSY`) | 워커 수를 줄이고 재시도. 게슈탈트 이벤트 DB는 홈 글로벌이라 프로세스가 겹친다 |
|
|
181
|
+
|
|
182
|
+
## 완료 보고
|
|
183
|
+
|
|
184
|
+
- 어느 경로로 실행했는지 (외부 런타임 워커 / 호스트 Agent 도구)
|
|
185
|
+
- 디스패치한 태스크와 각 결과
|
|
186
|
+
- 워커별로 어떤 에이전트를 썼는지
|
|
187
|
+
- 실패한 태스크와 다음 행동
|
|
188
|
+
- 워크트리를 나눴다면 그 워커의 코드 그래프와 memory가 비어 있었다는 사실
|
package/skills/execute/SKILL.md
CHANGED
|
@@ -206,6 +206,10 @@ ges_status() → { reasoningModel: "fable", reasoningModelFallback: "opus", ..
|
|
|
206
206
|
|
|
207
207
|
`plan_complete` 응답에 `parallelGroups: string[][]`가 포함되어 있으면 병렬 실행을 사용한다. 각 내부 배열은 동시에 실행할 수 있는 태스크 ID 묶음이다.
|
|
208
208
|
|
|
209
|
+
> 이 경로가 기본값이고 외부 도구 없이 동작한다. 워커별로 다른 에이전트 CLI를 쓰거나, 진행을 터미널로 들여다봐야 하거나, `worker_done` 추적이 필요하면 `dispatch` 스킬이 같은 단계를 외부 런타임으로 돌린다. 셋 다 필요 없으면 여기 그대로 두는 편이 가볍다.
|
|
210
|
+
>
|
|
211
|
+
> `execute_task` 응답의 `nextTaskIds`는 그 시점에 착수 가능한 태스크 집합이다. `parallelGroups`가 계획 시점의 정적 레이어라면, 이쪽은 지금 완료 상태를 반영한 값이다. 한 태스크가 끝나고 다음을 고를 때는 `nextTaskIds`를 보는 편이 정확하다.
|
|
212
|
+
|
|
209
213
|
**병렬 그룹 실행 흐름:**
|
|
210
214
|
|
|
211
215
|
1. `parallelGroups[groupIndex]`의 taskId 목록을 확인한다.
|