baxian 1.2.20 → 1.2.22

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 (39) hide show
  1. package/dist/agent/manager.d.ts +5 -0
  2. package/dist/agent/manager.d.ts.map +1 -1
  3. package/dist/agent/manager.js +274 -29
  4. package/dist/agent/manager.js.map +1 -1
  5. package/dist/agent/phase-signal-watcher.d.ts +6 -0
  6. package/dist/agent/phase-signal-watcher.d.ts.map +1 -1
  7. package/dist/agent/phase-signal-watcher.js +62 -0
  8. package/dist/agent/phase-signal-watcher.js.map +1 -1
  9. package/dist/agent/phase-signal.d.ts +4 -1
  10. package/dist/agent/phase-signal.d.ts.map +1 -1
  11. package/dist/agent/phase-signal.js +2 -1
  12. package/dist/agent/phase-signal.js.map +1 -1
  13. package/dist/agent/prompt.d.ts +2 -1
  14. package/dist/agent/prompt.d.ts.map +1 -1
  15. package/dist/agent/prompt.js +152 -278
  16. package/dist/agent/prompt.js.map +1 -1
  17. package/dist/api/projects.js +8 -1
  18. package/dist/api/projects.js.map +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +2 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/shared/constants.js +5 -5
  23. package/dist/shared/constants.js.map +1 -1
  24. package/dist/skill/registry.d.ts +2 -0
  25. package/dist/skill/registry.d.ts.map +1 -1
  26. package/dist/skill/registry.js +16 -0
  27. package/dist/skill/registry.js.map +1 -1
  28. package/dist/skills/baxian-greeting/SKILL.md +15 -0
  29. package/dist/skills/baxian-greeting/agents/openai.yaml +2 -0
  30. package/dist/skills/baxian-pr-feedback/SKILL.md +20 -3
  31. package/dist/skills/baxian-pr-recheck/SKILL.md +11 -11
  32. package/dist/skills/baxian-pr-review/SKILL.md +11 -11
  33. package/dist/skills/baxian-server-feedback/SKILL.md +38 -0
  34. package/dist/skills/baxian-server-feedback/agents/openai.yaml +2 -0
  35. package/dist/skills/baxian-server-review/SKILL.md +55 -0
  36. package/dist/skills/baxian-server-review/agents/openai.yaml +2 -0
  37. package/dist/skills/baxian-signals/SKILL.md +11 -5
  38. package/dist/skills/baxian-task-check/SKILL.md +35 -20
  39. package/package.json +1 -1
@@ -1,7 +1,6 @@
1
- import { AGENT_PHASES, REVIEW_EXCHANGE_DIR, SPEC_DOC_RELPATH } from '../shared/index.js';
2
- import { buildPhaseSignalTemplate, scanPhaseSignals } from './phase-signal.js';
1
+ import { AGENT_PHASES } from '../shared/index.js';
2
+ import { scanPhaseSignals } from './phase-signal.js';
3
3
  export const BAXIAN_PR_CLAIM = '<!-- baxian:managed -->';
4
- const PR_READY_FOR_REVIEW_INSTRUCTION = 'The PR must be ready for review (not Draft): do NOT use `--draft`; if it is draft after creation, run `gh pr ready` before signaling.';
5
4
  export const MAX_PROMPT_BYTES = 80 * 1024;
6
5
  // 1KB margin: preview uses placeholders; real worktree path may be longer at inject.
7
6
  export const MAX_PROMPT_BYTES_ROUTE_LIMIT = MAX_PROMPT_BYTES - 1024;
@@ -45,7 +44,13 @@ export const MAX_INLINE_FINDINGS_BYTES = 10 * 1024;
45
44
  // without this fail-fast the prompt would build with silently-degraded behavior
46
45
  // and no operator-visible signal.
47
46
  export function buildPromptInline(opts) {
48
- const required = AGENT_PHASES[opts.agent.role]?.[opts.phase]?.skills ?? [];
47
+ // A signal-emitting prompt now points at the baxian-signals skill for the emit rules
48
+ // instead of inlining them, so that skill MUST be resolvable — fail loud here rather than
49
+ // ship a prompt whose signal silently never fires because the rules were never loadable.
50
+ const required = [
51
+ ...(AGENT_PHASES[opts.agent.role]?.[opts.phase]?.skills ?? []),
52
+ ...(opts.signalToken ? ['baxian-signals'] : []),
53
+ ];
49
54
  const missing = required.filter(name => !opts.skillRegistry.has(name));
50
55
  if (missing.length > 0)
51
56
  throw new RequiredSkillsMissingError(missing);
@@ -70,9 +75,15 @@ export function buildPromptInline(opts) {
70
75
  // Force-load the phase skill via the runtime's command, unless it is already
71
76
  // resident in this REPL (excludeSkills = the dedup baseline for this pane).
72
77
  const primary = phasePrimarySkill(opts.agent.role, opts.phase);
78
+ // A signal-emitting phase with NO primary skill (the server-* phases) would otherwise leave the
79
+ // command slot empty and rely on the model to implicitly load baxian-signals — but the emit rules
80
+ // now live ONLY there, so a miss means the signal silently never fires. Force-load baxian-signals
81
+ // into the free slot so the protocol is deterministically in context (GitHub phases keep their
82
+ // primary skill, whose own body points at baxian-signals).
83
+ const slotSkill = primary ?? (opts.signalToken ? 'baxian-signals' : undefined);
73
84
  const alreadyLoaded = new Set(opts.excludeSkills ?? []);
74
- const invokeLine = primary && !alreadyLoaded.has(primary)
75
- ? `${SKILL_INVOKE_SIGIL[opts.agent.runtime]}${primary}\n`
85
+ const invokeLine = slotSkill && !alreadyLoaded.has(slotSkill)
86
+ ? `${SKILL_INVOKE_SIGIL[opts.agent.runtime]}${slotSkill}\n`
76
87
  : '';
77
88
  const fullPrompt = invokeLine + taskBody;
78
89
  const bytes = Buffer.byteLength(fullPrompt, 'utf8');
@@ -80,255 +91,123 @@ export function buildPromptInline(opts) {
80
91
  throw new PromptSizeError(bytes);
81
92
  return fullPrompt;
82
93
  }
83
- function buildReviewOrRecheckInstructions({ task, signalToken }, isRecheck) {
84
- const prRef = task.prNumber !== undefined ? String(task.prNumber) : '<pr-number>';
85
- const anchorSha = task.reviewHeadAnchorSha;
86
- return [
87
- `Code ${isRecheck ? 'recheck' : 'review'} phase:`,
88
- isRecheck
89
- ? '- Dev pushed new commits. Re-check prior feedback and task spec.'
90
- : '- Check out PR branch, review changes against task spec.',
91
- `- Execute verdict per ${isRecheck ? 'baxian-pr-recheck' : 'baxian-pr-review'} skill §Verdict. PR number: ${prRef}`,
92
- ` Build the \`gh pr review ${prRef}\` commands per the verdict table, substituting N=${prRef} and TOKEN=${signalToken}.`,
93
- anchorSha
94
- ? ` Review head SHA for §Verdict Verification: ${anchorSha}`
95
- : ' Review head SHA is unavailable — skip the commit_id check in §Verdict Verification.',
96
- `- 422 fallback signals:`,
97
- ` ${buildPhaseSignalTemplate('pr-approved')}`,
98
- ` ${buildPhaseSignalTemplate('pr-changes-requested')}`,
99
- ` token: ${signalToken}`,
100
- '',
101
- ].join('\n');
94
+ // Bootstrap capability handshake. Force-loads the baxian-greeting skill exactly like a real
95
+ // phase dispatch force-loads its primary skill (the command slot is free during bootstrap), and
96
+ // that skill delegates the wire rules to baxian-signals — so a passing greeting exercises the
97
+ // same force-load + signal-skill chain real dispatches use. The token rides as the command input.
98
+ export function buildGreetingPrompt(token, runtime) {
99
+ return `${SKILL_INVOKE_SIGIL[runtime]}baxian-greeting\ntoken: ${token}\n`;
100
+ }
101
+ // review/recheck verdict via native `gh pr review` (no completion signal); the 422
102
+ // fallback signal kinds are fixed and live in the skill, so only pr + anchor-sha vary.
103
+ function reviewFields({ task }) {
104
+ return {
105
+ fields: [
106
+ `pr: ${task.prNumber ?? '<pr-number>'}`,
107
+ ...(task.reviewHeadAnchorSha ? [`anchor-sha: ${task.reviewHeadAnchorSha}`] : []),
108
+ ],
109
+ };
102
110
  }
103
111
  // Single source of truth for per-phase prompt instructions, keyed by an exhaustive
104
112
  // Record<DispatchPhase, …>: a phase shipped without a builder is a COMPILE error.
105
113
  // `merge` runs through the /compact cleanup path (not buildTaskBody), so its builder is empty by design.
106
114
  const PHASE_PROMPT_BUILDERS = {
107
- merge: () => '',
115
+ merge: () => ({ fields: [] }),
116
+ // develop: implement and emit the done-signal (pr-created on GitHub, code-done on
117
+ // server). When a QA partner exists, spec-signal offers the optional SDD route. All
118
+ // mechanics live in baxian-task-check §Develop.
108
119
  develop: ({ task, signalToken, hasQaPartner }) => {
109
120
  if (!signalToken)
110
- return '';
111
- // spec review 由 QA 执行;没有 QA 时不提供该路线,spec-done 会派不出去。
112
- const offerSpec = hasQaPartner !== false;
113
- // SDD 机制(写 .baxian/spec.md、不要 commit/push)已收进 baxian-task-check
114
- // §Specification-Driven Development(develop force-load skill);prompt 只留可变 signal。
115
- const specLines = offerSpec
116
- ? [
117
- '- Specification-Driven Development (SDD) — optional. To get QA spec review first, follow baxian-task-check §Specification-Driven Development, then signal:',
118
- ` ${buildPhaseSignalTemplate('spec-done')}`,
119
- ` token: ${signalToken}`,
120
- ]
121
- : [];
122
- if (task.reviewMode === 'server') {
123
- return [
124
- 'Server review mode — no PRs, no branch pushes during review.',
125
- ...specLines,
126
- offerSpec
127
- ? '- Otherwise implement the change, commit locally (do NOT push), then signal:'
128
- : '- Implement the change, commit locally (do NOT push), then signal:',
129
- ` ${buildPhaseSignalTemplate('code-done')}`,
130
- ` token: ${signalToken}`,
131
- '',
132
- ].join('\n');
133
- }
134
- return [
135
- ...specLines,
136
- offerSpec
137
- ? '- Otherwise proceed straight to implementing the change. After `gh pr create`, ensure the PR is ready for review, then signal:'
138
- : 'Implement the change. After `gh pr create`, ensure the PR is ready for review, then signal:',
139
- ` ${PR_READY_FOR_REVIEW_INSTRUCTION}`,
140
- ` ${buildPhaseSignalTemplate('pr-created')}`,
141
- ` token: ${signalToken}`,
142
- '',
143
- ].join('\n');
144
- },
145
- code: ({ task, signalToken }) => task.reviewMode === 'server'
146
- ? [
147
- 'Code phase (server review mode):',
148
- `- Spec is approved. Implement code per the spec at ${SPEC_DOC_RELPATH}.`,
149
- '- Commit locally. Do NOT push and do NOT open a PR — baxian reads your worktree directly.',
150
- '- When done, signal:',
151
- ` ${buildPhaseSignalTemplate('code-done')}`,
152
- ` token: ${signalToken}`,
153
- '',
154
- ].join('\n')
155
- : [
156
- 'Code phase:',
157
- `- Spec is approved. Implement code per the spec at ${SPEC_DOC_RELPATH}.`,
158
- '- Commit+push, open PR via `gh pr create`, and ensure it is ready for review before signaling:',
159
- ` ${PR_READY_FOR_REVIEW_INSTRUCTION}`,
160
- ` ${buildPhaseSignalTemplate('pr-created')}`,
161
- ` token: ${signalToken}`,
162
- '',
163
- ].join('\n'),
164
- fix: ({ task, signalToken }) => {
165
- const round = task.reviewRound;
166
- const prRef = task.prNumber !== undefined ? String(task.prNumber) : '<pr-number>';
167
- const branch = task.branch ?? '<branch>';
168
- return [
169
- `Fix phase (review round ${round}):`,
170
- `- QA requested changes on PR ${prRef}. Read all feedback per baxian-pr-feedback §Fetch Feedback.`,
171
- `- Address every finding per baxian-pr-feedback §Decide and Act. Judge independently.`,
172
- `- If you change code, commit then push: \`git push origin HEAD:${branch}\`.`,
173
- `- When done, emit per baxian-pr-feedback skill §Fix Completion:`,
174
- ` ${buildPhaseSignalTemplate('pr-fixed')}`,
175
- ` token: ${signalToken}`,
176
- '',
177
- ].join('\n');
121
+ return { fields: [] };
122
+ return {
123
+ fields: [
124
+ ...(hasQaPartner !== false ? ['spec-signal: spec-done'] : []),
125
+ `signal: ${task.reviewMode === 'server' ? 'code-done' : 'pr-created'}`,
126
+ ],
127
+ };
178
128
  },
179
- 'post-approve': ({ signalToken, postApproveRedispatchCount }) => typeof postApproveRedispatchCount === 'number' && postApproveRedispatchCount > 0
180
- ? [
181
- `Post-approve recheck (redispatch #${postApproveRedispatchCount}):`,
182
- '- New PR feedback arrived while you were running. Re-read the three sources and handle any non-self item with created_at > T_self per the first-pass rules already in your context.',
183
- '- Fix or reply "Won\'t fix" each item. If you push code, baxian routes to QA for recheck.',
184
- '- Before echoing the signal: re-fetch one more time and only emit when no unhandled items remain.',
185
- ` ${buildPhaseSignalTemplate('pr-merge-ready')}`,
186
- ` token: ${signalToken}`,
187
- '',
188
- ].join('\n')
189
- : [
190
- 'Post-approve PR feedback check:',
191
- '- QA approved. Before merge, read all PR feedback per baxian-pr-feedback §Fetch Feedback.',
192
- '- Idempotency: compute T_self = your latest reply timestamp per source. Respond to EVERY non-self comment with created_at > T_self. Apply per review thread and across issue-comment stream.',
193
- '- Address each per baxian-pr-feedback §Decide and Act. If code changes, commit+push (baxian routes to QA for recheck) and STOP — do not emit pr-merge-ready when you pushed code.',
194
- '- If no code changes were needed, re-fetch all sources before signaling. The server suppresses redispatches while you run, so new comments only reach you via this re-fetch. If unhandled items remain, process and re-fetch again. Only signal when clean:',
195
- ` ${buildPhaseSignalTemplate('pr-merge-ready')}`,
196
- ` token: ${signalToken}`,
197
- '- Do not merge the PR yourself from this phase.',
198
- '',
199
- ].join('\n'),
200
- review: (ctx) => buildReviewOrRecheckInstructions(ctx, false),
201
- recheck: (ctx) => buildReviewOrRecheckInstructions(ctx, true),
202
- 'server-review': (ctx) => buildServerReviewInstructions(ctx, false),
203
- 'server-recheck': (ctx) => buildServerReviewInstructions(ctx, true),
204
- 'server-spec-review': ({ task, signalToken, serverContent, contentTruncated, currentSpecRound, serverPriorFindings, serverPriorResponse }) => {
129
+ code: ({ task }) => ({
130
+ fields: [`signal: ${task.reviewMode === 'server' ? 'code-done' : 'pr-created'}`],
131
+ }),
132
+ fix: ({ task }) => ({
133
+ fields: [
134
+ `pr: ${task.prNumber ?? '<pr-number>'}`,
135
+ `branch: ${task.branch ?? '<branch>'}`,
136
+ `round: ${task.reviewRound}`,
137
+ 'signal: pr-fixed',
138
+ ],
139
+ }),
140
+ 'post-approve': ({ task, postApproveRedispatchCount }) => ({
141
+ fields: [
142
+ `pr: ${task.prNumber ?? '<pr-number>'}`,
143
+ ...(typeof postApproveRedispatchCount === 'number' && postApproveRedispatchCount > 0
144
+ ? [`redispatch: ${postApproveRedispatchCount}`]
145
+ : []),
146
+ 'signal: pr-merge-ready',
147
+ ],
148
+ }),
149
+ review: (ctx) => reviewFields(ctx),
150
+ recheck: (ctx) => reviewFields(ctx),
151
+ 'server-review': (ctx) => buildServerReviewInstructions(ctx),
152
+ 'server-recheck': (ctx) => buildServerReviewInstructions(ctx),
153
+ 'server-spec-review': ({ task, contentTruncated, currentSpecRound, serverContent, serverPriorFindings, serverPriorResponse }) => {
205
154
  const round = currentSpecRound ?? task.specReviewRound ?? 1;
206
155
  const priorFindings = serverPriorFindings ? compactFindings(serverPriorFindings) : undefined;
207
156
  const priorResponse = serverPriorResponse ? compactFindings(serverPriorResponse) : undefined;
208
- return [
209
- `Server spec review phase (round ${round}):`,
210
- '- Review the spec injected below. Do NOT fetch branches or use gh; this is the review input.',
211
- '- Judge: completeness (every requirement covered, interfaces and data flows defined, error paths specified), correctness (internally consistent, no contradicting sections, feasible against the existing codebase), ambiguity (any requirement readable two ways is a finding).',
212
- '- Need a referenced file or codebase section to judge feasibility? Emit [bx:read-file:<path>:<start>-<end>] on its own line (relative path, ≤200 lines) and wait; baxian injects it.',
213
- ...(priorFindings
214
- ? ['- Prior findings and the dev response are included below. Verify every finding is closed (revised with evidence, or convincingly rejected) before judging the rest of the spec.']
215
- : []),
216
- ...(contentTruncated
217
- ? ['- Content truncated. Request more via [bx:read-file:<path>:<start>-<end>] (relative path, ≤200 lines).']
218
- : []),
219
- `- Write findings to ${REVIEW_EXCHANGE_DIR}/findings.json in YOUR worktree (\`mkdir -p ${REVIEW_EXCHANGE_DIR}\` first). Atomic write: write findings.json.tmp first, then \`mv findings.json.tmp findings.json\`.`,
220
- `- Schema: {"round":${round},"verdict":"approve"|"request-changes","findings":[{"id":"f-1","severity":"critical"|"major"|"minor","location":"Section ...","message":"..."}]}`,
221
- '- Approve MAY carry minor findings as suggestions; verdict field is authoritative.',
222
- `- Then emit exactly once: ${buildPhaseSignalTemplate('spec-reviewed')}`,
223
- ` token: ${signalToken}`,
224
- ...(priorFindings
225
- ? ['', `prior findings${priorFindings.truncated ? ' [truncated]' : ''}:`, priorFindings.text]
226
- : []),
227
- ...(priorResponse
228
- ? ['', `dev response${priorResponse.truncated ? ' [truncated]' : ''}:`, priorResponse.text]
229
- : []),
230
- '',
231
- 'spec content:',
232
- serverContent ?? '',
233
- '',
234
- ].join('\n');
157
+ return {
158
+ fields: [
159
+ `round: ${round}`,
160
+ ...(contentTruncated ? ['content: truncated'] : []),
161
+ 'signal: spec-reviewed',
162
+ ],
163
+ blocks: [
164
+ ...(priorFindings ? [`prior-findings${priorFindings.truncated ? ' (truncated)' : ''}:`, priorFindings.text] : []),
165
+ ...(priorResponse ? [`prior-response${priorResponse.truncated ? ' (truncated)' : ''}:`, priorResponse.text] : []),
166
+ 'spec:',
167
+ serverContent ?? '',
168
+ ],
169
+ };
235
170
  },
236
- 'server-feedback': ({ task, signalToken, serverPriorFindings, currentSpecRound }) => {
171
+ 'server-feedback': ({ task, currentSpecRound, serverPriorFindings }) => {
237
172
  const isSpec = task.phase === 'spec';
238
173
  const round = isSpec ? (currentSpecRound ?? task.specReviewRound ?? 1) : task.reviewRound;
239
- const signalKind = isSpec ? 'spec-fixed' : 'code-fixed';
240
- const truncated = serverPriorFindings ? compactFindings(serverPriorFindings) : undefined;
241
- return [
242
- `Server feedback phase (${isSpec ? 'spec' : 'code'} round ${round}):`,
243
- `- QA findings are injected below. Judge each independently — QA can be wrong; fix only what is actually correct, otherwise reject. Handle EVERY finding by id:`,
244
- isSpec
245
- ? ` fix — revise ${SPEC_DOC_RELPATH} in place (do NOT commit or push it).`
246
- : ' fix change the code/spec, commit; include commitSha in your response item.',
247
- ' reject — concrete rationale why the finding is wrong or not applicable. Never reject just to save effort.',
248
- ' out-of-scope — rationale plus where it is tracked (issue link or task note).',
249
- `- Write your response to ${REVIEW_EXCHANGE_DIR}/response.json in your worktree (\`mkdir -p ${REVIEW_EXCHANGE_DIR}\` first). Atomic write: response.json.tmp then \`mv\`.`,
250
- isSpec
251
- ? `- Schema: {"round":${round},"responses":[{"findingId":"f-1","action":"fix"|"reject"|"out-of-scope","rationale":"..."}]}`
252
- : `- Schema: {"round":${round},"responses":[{"findingId":"f-1","action":"fix"|"reject"|"out-of-scope","rationale":"...","commitSha":"..."}]}`,
253
- '- Every finding id MUST have exactly one response item (ids may look like b0-f-1 when the review was batched).',
254
- '- Do NOT push to any remote and do NOT open a PR in this phase — baxian reads your worktree directly; publishing is deferred to the server-after-done phase.',
255
- `- Then emit exactly once: ${buildPhaseSignalTemplate(signalKind)}`,
256
- ` token: ${signalToken}`,
257
- ...(truncated
258
- ? [
259
- '',
260
- `findings (round ${round})${truncated.truncated ? ' [truncated]' : ''}:`,
261
- truncated.text,
262
- ]
263
- : []),
264
- '',
265
- ].join('\n');
266
- },
267
- 'server-after-done': ({ task, signalToken, serverAfterDone }) => {
268
- const branch = serverAfterDone?.branch ?? task.branch ?? '<branch>';
269
- if (serverAfterDone?.kind === 'pr') {
270
- return [
271
- 'Publish phase (push + PR):',
272
- `- Push the reviewed branch: \`git push -u origin ${branch}\`.`,
273
- '- Open a PR via `gh pr create` (title: task title; body: short summary of the server-side review outcome).',
274
- `- ${PR_READY_FOR_REVIEW_INSTRUCTION}`,
275
- `- The PR body MUST end with the marker line \`${BAXIAN_PR_CLAIM}\` — without it baxian's poller treats the PR as unmanaged and ignores its merge/comment events.`,
276
- '- Then emit exactly once, substituting the real PR number:',
277
- ' [bx:code-ready:<pr_number>:<token>]',
278
- ` token: ${signalToken}`,
279
- '',
280
- ].join('\n');
281
- }
282
- return [
283
- 'Publish phase (push branch):',
284
- `- Push the reviewed branch: \`git push -u origin ${branch}\`.`,
285
- `- Then emit exactly once: ${buildPhaseSignalTemplate('code-ready')}`,
286
- ` token: ${signalToken}`,
287
- '',
288
- ].join('\n');
174
+ const findings = serverPriorFindings ? compactFindings(serverPriorFindings) : undefined;
175
+ return {
176
+ fields: [
177
+ `feedback: ${isSpec ? 'spec' : 'code'}`,
178
+ `round: ${round}`,
179
+ `signal: ${isSpec ? 'spec-fixed' : 'code-fixed'}`,
180
+ ],
181
+ blocks: findings ? [`findings${findings.truncated ? ' (truncated)' : ''}:`, findings.text] : undefined,
182
+ };
289
183
  },
184
+ 'server-after-done': ({ task, serverAfterDone }) => ({
185
+ fields: [
186
+ `publish: ${serverAfterDone?.kind === 'pr' ? 'pr' : 'branch'}`,
187
+ `branch: ${serverAfterDone?.branch ?? task.branch ?? '<branch>'}`,
188
+ 'signal: code-ready',
189
+ ],
190
+ }),
290
191
  };
291
- function buildServerReviewInstructions({ task, signalToken, serverContent, serverDiffstat, serverBatch, serverPriorFindings, serverPriorResponse, contentTruncated }, isRecheck) {
192
+ function buildServerReviewInstructions({ task, serverContent, serverDiffstat, serverBatch, serverPriorFindings, serverPriorResponse, contentTruncated }) {
292
193
  const round = task.reviewRound || 1;
293
- const batchLabel = serverBatch ? ` — Batch ${serverBatch.index + 1}/${serverBatch.total}` : '';
294
194
  const priorFindings = serverPriorFindings ? compactFindings(serverPriorFindings) : undefined;
295
195
  const priorResponse = serverPriorResponse ? compactFindings(serverPriorResponse) : undefined;
296
- return [
297
- `Server code ${isRecheck ? 'recheck' : 'review'} phase (round ${round})${batchLabel}:`,
298
- '- Review the diff injected below. Do NOT fetch branches or use gh; the diff is the review input.',
299
- '- Judge against the task spec: correctness, tests, edge cases, security, regressions. Severity: critical = broken/unsafe, major = must fix before merge, minor = improvement. Reference file + line for every code finding.',
300
- ...(isRecheck
301
- ? [
302
- '- Closure first: resolve the status of EVERY prior finding (included below with the dev response) before judging new issues.',
303
- '- A finding the dev claims fixed → verify it in the new diff (no "fixed" without evidence). A finding the dev rejected / called out-of-scope → judge the rationale on merit and re-raise it with concrete counter-evidence if it is wrong.',
304
- '- Any prior finding NOT closed reappears in findings.json with its ORIGINAL id and the evidence restated — do not renumber or drop it.',
305
- '- Verdict approve ONLY when every prior finding is closed AND the new diff is clean; an unresolved finding may not be downgraded to a minor suggestion to justify approve — otherwise request-changes.',
306
- '- After closure, scan the new diff for regressions AND for behavior the fixes introduced that lacks test coverage.',
307
- ]
308
- : []),
309
- ...(serverDiffstat ? ['', 'Changed files (full change scope):', serverDiffstat] : []),
310
- ...(contentTruncated
311
- ? ['- Content truncated. Request context via [bx:read-file:<path>:<start>-<end>] (relative path, ≤200 lines).']
312
- : []),
313
- '- Need file context beyond the diff? Emit [bx:read-file:<path>:<start>-<end>] on its own line and wait; baxian injects the content.',
314
- '- For unchanged files, read them directly from your own base-branch worktree; use [bx:read-file] only for content not present locally.',
315
- `- Write findings to ${REVIEW_EXCHANGE_DIR}/findings.json in YOUR worktree (\`mkdir -p ${REVIEW_EXCHANGE_DIR}\` first). Atomic write: write findings.json.tmp first, then \`mv findings.json.tmp findings.json\`.`,
316
- `- Schema: {"round":${round},"verdict":"approve"|"request-changes","findings":[{"id":"f-1","severity":"critical"|"major"|"minor","message":"...","file":"path","line":N}]}`,
317
- '- Finding ids are f-1, f-2, … sequential and unique within findings.json (the dev coverage check and QA closure verification key off them).',
318
- '- Approve MAY carry minor findings as suggestions; verdict field is authoritative.',
319
- `- Then emit exactly once: ${buildPhaseSignalTemplate('code-reviewed')}`,
320
- ` token: ${signalToken}`,
321
- ...(priorFindings
322
- ? ['', `prior findings${priorFindings.truncated ? ' [truncated]' : ''}:`, priorFindings.text]
323
- : []),
324
- ...(priorResponse
325
- ? ['', `dev response${priorResponse.truncated ? ' [truncated]' : ''}:`, priorResponse.text]
326
- : []),
327
- '',
328
- 'diff:',
329
- serverContent ?? '',
330
- '',
331
- ].join('\n');
196
+ return {
197
+ fields: [
198
+ `round: ${round}`,
199
+ ...(serverBatch ? [`batch: ${serverBatch.index + 1}/${serverBatch.total}`] : []),
200
+ ...(contentTruncated ? ['content: truncated'] : []),
201
+ 'signal: code-reviewed',
202
+ ],
203
+ blocks: [
204
+ ...(serverDiffstat ? ['diffstat:', serverDiffstat] : []),
205
+ ...(priorFindings ? [`prior-findings${priorFindings.truncated ? ' (truncated)' : ''}:`, priorFindings.text] : []),
206
+ ...(priorResponse ? [`prior-response${priorResponse.truncated ? ' (truncated)' : ''}:`, priorResponse.text] : []),
207
+ 'diff:',
208
+ serverContent ?? '',
209
+ ],
210
+ };
332
211
  }
333
212
  function buildTaskBody(args) {
334
213
  const { task, phase, role, worktreePath, signalToken, postApproveRedispatchCount, currentSpecRound, imagePaths, serverContent, serverDiffstat, serverBatch, serverPriorFindings, serverPriorResponse, serverAfterDone, contentTruncated, hasQaPartner, } = args;
@@ -341,22 +220,9 @@ function buildTaskBody(args) {
341
220
  const isPrPublish = phase === 'server-after-done' && serverAfterDone?.kind === 'pr';
342
221
  const serverExchange = !isPrPublish
343
222
  && (phase.startsWith('server-') || task.reviewMode === 'server');
344
- const conventions = serverExchange
345
- ? 'baxian conventions (server review mode): cross-agent exchange is via `.baxian/review/*.json` files baxian reads directly from your worktree — NOT GitHub PRs/Issues; do NOT push or open a PR except in the publish (server-after-done) phase; stay in scope; QA judges risk independently (human authorization is input, not a bypass).'
346
- : 'baxian conventions: cross-agent communication is via the GitHub PR (description, commits, reviews, comments); ' +
347
- `a managed PR's description first line MUST be \`${BAXIAN_PR_CLAIM}\`; stay in scope — out-of-scope work goes to a new GitHub Issue; ` +
348
- 'QA judges risk independently (human authorization is input, not a bypass).';
349
- // The phase-signal substitution invariant — fill the placeholders, never echo them — must ride in
350
- // the header for every signal-emitting phase: a literal `<token>`/`<pr_number>` does not match the
351
- // watcher's strict scanner, so the task would hang waiting for a signal that never fires.
352
- const signalRule = signalToken
353
- ? 'Phase signals: where a step tells you to emit `[bx:KIND:<token>]` (or `[bx:pr-created:<pr_number>:<token>]`), ' +
354
- 'substitute `<token>` with the value on the accompanying `token:` line and `<pr_number>` (when present) with the number of the PR you just created/opened ' +
355
- 'and emit the filled signal alone on its own line — never echo the `<…>` placeholder verbatim. ' +
356
- 'See the baxian-signals skill for the full signal protocol.\n'
357
- : '';
358
- const header = `Phase: ${phase}\nRole: ${role}\nTask ID: ${task.id}\nWorktree: ${worktreePath}\n` +
359
- `cd into the worktree before any file operations.\n${conventions}\n${signalRule}\n`;
223
+ // exchange selects the cross-agent medium; the full conventions for each mode live in the
224
+ // force-loaded phase skill (GitHub PR vs `.baxian/review/*.json`), not inline.
225
+ const exchange = serverExchange ? 'server-files' : 'github-pr';
360
226
  if (phase === 'post-approve' && !signalToken) {
361
227
  throw new Error('post-approve prompt requires signalToken');
362
228
  }
@@ -375,20 +241,32 @@ function buildTaskBody(args) {
375
241
  // prompt to ship silently.
376
242
  throw new Error(`buildTaskBody: no prompt builder registered for phase "${phase}"`);
377
243
  }
378
- const phaseInstructions = phaseBuilder({
244
+ const { fields, blocks } = phaseBuilder({
379
245
  task, signalToken, currentSpecRound, postApproveRedispatchCount,
380
246
  serverContent, serverDiffstat, serverBatch,
381
247
  serverPriorFindings, serverPriorResponse, serverAfterDone, contentTruncated,
382
248
  hasQaPartner,
383
249
  });
250
+ // Structured descriptor: baxian metadata as key:value the force-loaded phase skill reads
251
+ // by name. token rides as a field (never a filled `[bx:...]` literal) so the prompt itself
252
+ // can't self-fire the watcher.
253
+ const descriptor = [
254
+ `phase: ${phase}`,
255
+ `role: ${role}`,
256
+ `task: ${task.id}`,
257
+ `worktree: ${worktreePath}`,
258
+ `exchange: ${exchange}`,
259
+ ...fields,
260
+ ...(signalToken ? [`token: ${signalToken}`] : []),
261
+ ].join('\n');
384
262
  const titleAndBody = task.description
385
- ? `Title: ${task.title}\n\n${task.description}`
386
- : `Title: ${task.title}`;
263
+ ? `title: ${task.title}\n\n${task.description}`
264
+ : `title: ${task.title}`;
387
265
  const imagesBlock = imagePaths && imagePaths.length > 0
388
- ? '\n\n附图(baxian 已将用户上传的图片下载到 agent host,以下为绝对路径,请读取并结合任务分析):\n' +
389
- imagePaths.map(p => `- ${p}`).join('\n')
266
+ ? '\n\nimages:\n' + imagePaths.map(p => `- ${p}`).join('\n')
390
267
  : '';
391
- const body = header + phaseInstructions + titleAndBody + imagesBlock;
268
+ const injected = blocks && blocks.length > 0 ? '\n\n' + blocks.join('\n') : '';
269
+ const body = `${descriptor}\n\n${titleAndBody}${imagesBlock}${injected}\n`;
392
270
  // Guard: the rendered body must not contain a filled signal literal that
393
271
  // would fire the watcher. We run the scanner over body and reject any match
394
272
  // whose token equals the active signalToken. This catches accidental leaks
@@ -490,28 +368,24 @@ function truncateFindings(text) {
490
368
  return { text: buf.subarray(0, cut).toString('utf8'), truncated: true };
491
369
  }
492
370
  export function buildPostMergeCleanupPrompt(ctx, result) {
493
- const status = renderCleanupStatus(ctx.branch, result);
371
+ // Self-contained, NO skill force-load: dispatchPostMergeCleanup injects this straight into an
372
+ // existing pane without re-provisioning skills (unlike ensureSession), so a hot-upgraded session
373
+ // may not have a freshly-added skill on the host. The failed-case manual-cleanup warning must
374
+ // never depend on skill availability — keep it inline. `next` is the compaction step baxian runs
375
+ // once the REPL is idle (clean slate → /clear, otherwise → /compact, which preserves the warning).
376
+ const cleanSlate = result.outcome === 'deleted' || result.outcome === 'absent';
494
377
  return [
495
- `PR #${ctx.prNumber} (task ${ctx.taskId}, branch ${ctx.branch}) has merged.`,
496
- '',
497
- status,
498
- result.outcome === 'deleted' || result.outcome === 'absent'
499
- ? '`/clear` will follow automatically once your runtime is back at the REPL prompt — that gives the next task a clean context window.'
500
- : '`/compact` will follow automatically once your runtime is back at the REPL prompt — that is the compression step for this round\'s context.',
378
+ 'event: pr-merged',
379
+ `task: ${ctx.taskId}`,
380
+ `pr: ${ctx.prNumber}`,
381
+ `branch: ${ctx.branch}`,
382
+ `branch-cleanup: ${result.outcome}`,
383
+ ...(result.detail ? [`detail: ${result.detail.replace(/\n+/g, ' ').trim()}`] : []),
384
+ `next: ${cleanSlate ? 'clear' : 'compact'}`,
385
+ ...(result.outcome === 'failed'
386
+ ? ['', `WARNING: baxian could not delete the merged branch — clean it up manually before the next task: \`git worktree prune && git branch -D ${ctx.branch}\`.`]
387
+ : []),
501
388
  '',
502
389
  ].join('\n');
503
390
  }
504
- function renderCleanupStatus(branch, result) {
505
- switch (result.outcome) {
506
- case 'deleted':
507
- return `baxian deleted the merged local feature branch \`${branch}\` from your repo clone (server-side via runner.exec).`;
508
- case 'absent':
509
- return `Local feature branch \`${branch}\` was already absent from your repo clone — nothing to clean up.`;
510
- case 'failed':
511
- return `WARNING: baxian failed to delete the local feature branch \`${branch}\`: ${result.detail || 'unknown error'}. ` +
512
- 'Please clean it up manually (e.g. `git worktree prune && git branch -D ' + branch + '`) before the next task picks up this workspace.';
513
- case 'skipped':
514
- return `Local feature branch \`${branch}\` was not touched: ${result.detail || 'no repo path available'}.`;
515
- }
516
- }
517
391
  //# sourceMappingURL=prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/agent/prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/agent/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA2F,MAAM,oBAAoB,CAAC;AAE3I,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1C,qFAAqF;AACrF,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAgB,GAAG,IAAI,CAAC;AAEpE,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACZ;IAA5B,YAA4B,KAAa;QACvC,KAAK,CACH,eAAe,KAAK,kBAAkB,gBAAgB,UAAU;YAChE,iEAAiE,CAClE,CAAC;QAJwB,UAAK,GAAL,KAAK,CAAQ;QAKvC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACvB;IAA5B,YAA4B,OAAiB;QAC3C,KAAK,CACH,4CAA4C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAClE,wDAAwD,CACzD,CAAC;QAJwB,YAAO,GAAP,OAAO,CAAU;QAK3C,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,6EAA6E;AAC7E,iFAAiF;AACjF,4EAA4E;AAC5E,gFAAgF;AAChF,MAAM,kBAAkB,GAAiC;IACvD,aAAa,EAAE,GAAG;IAClB,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,gFAAgF;AAChF,iFAAiF;AACjF,sBAAsB;AACtB,SAAS,iBAAiB,CAAC,IAAe,EAAE,KAAa;IACvD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,KAA+C,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;IACnG,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAkCD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnD,gEAAgE;AAChE,6EAA6E;AAC7E,6EAA6E;AAC7E,gFAAgF;AAChF,kCAAkC;AAClC,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,qFAAqF;IACrF,0FAA0F;IAC1F,yFAAyF;IACzF,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,aAAa,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;QACrB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;QAC3D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC,CAAC;IACH,6EAA6E;IAC7E,4EAA4E;IAC5E,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,gGAAgG;IAChG,kGAAkG;IAClG,kGAAkG;IAClG,+FAA+F;IAC/F,2DAA2D;IAC3D,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;QAC3D,CAAC,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,IAAI;QAC3D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACpD,IAAI,KAAK,GAAG,gBAAgB;QAAE,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,4FAA4F;AAC5F,gGAAgG;AAChG,8FAA8F;AAC9F,kGAAkG;AAClG,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,OAAqB;IACtE,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,2BAA2B,KAAK,IAAI,CAAC;AAC5E,CAAC;AA6CD,mFAAmF;AACnF,uFAAuF;AACvF,SAAS,YAAY,CAAC,EAAE,IAAI,EAAkB;IAC5C,OAAO;QACL,MAAM,EAAE;YACN,OAAO,IAAI,CAAC,QAAQ,IAAI,aAAa,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF;KACF,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,kFAAkF;AAClF,yGAAyG;AACzG,MAAM,qBAAqB,GAA8C;IACvE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC7B,kFAAkF;IAClF,oFAAoF;IACpF,gDAAgD;IAChD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE;QAC/C,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACxC,OAAO;YACL,MAAM,EAAE;gBACN,GAAG,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,WAAW,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE;aACvE;SACF,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACnB,MAAM,EAAE,CAAC,WAAW,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;KACjF,CAAC;IACF,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAClB,MAAM,EAAE;YACN,OAAO,IAAI,CAAC,QAAQ,IAAI,aAAa,EAAE;YACvC,WAAW,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE;YACtC,UAAU,IAAI,CAAC,WAAW,EAAE;YAC5B,kBAAkB;SACnB;KACF,CAAC;IACF,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,MAAM,EAAE;YACN,OAAO,IAAI,CAAC,QAAQ,IAAI,aAAa,EAAE;YACvC,GAAG,CAAC,OAAO,0BAA0B,KAAK,QAAQ,IAAI,0BAA0B,GAAG,CAAC;gBAClF,CAAC,CAAC,CAAC,eAAe,0BAA0B,EAAE,CAAC;gBAC/C,CAAC,CAAC,EAAE,CAAC;YACP,wBAAwB;SACzB;KACF,CAAC;IACF,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC;IAClC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC;IACnC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,6BAA6B,CAAC,GAAG,CAAC;IAC5D,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,6BAA6B,CAAC,GAAG,CAAC;IAC7D,oBAAoB,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,EAAE,EAAE;QAC9H,MAAM,KAAK,GAAG,gBAAgB,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,MAAM,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,OAAO;YACL,MAAM,EAAE;gBACN,UAAU,KAAK,EAAE;gBACjB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,uBAAuB;aACxB;YACD,MAAM,EAAE;gBACN,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,iBAAiB,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjH,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,iBAAiB,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjH,OAAO;gBACP,aAAa,IAAI,EAAE;aACpB;SACF,CAAC;IACJ,CAAC;IACD,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,EAAE;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QAC1F,MAAM,QAAQ,GAAG,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,OAAO;YACL,MAAM,EAAE;gBACN,aAAa,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;gBACvC,UAAU,KAAK,EAAE;gBACjB,WAAW,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE;aAClD;YACD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACvG,CAAC;IACJ,CAAC;IACD,mBAAmB,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,EAAE;YACN,YAAY,eAAe,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC9D,WAAW,eAAe,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE;YACjE,oBAAoB;SACrB;KACF,CAAC;CACH,CAAC;AAEF,SAAS,6BAA6B,CACpC,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAkB;IAEhI,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,MAAM,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,OAAO;QACL,MAAM,EAAE;YACN,UAAU,KAAK,EAAE;YACjB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,WAAW,CAAC,KAAK,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,uBAAuB;SACxB;QACD,MAAM,EAAE;YACN,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,iBAAiB,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjH,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,iBAAiB,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjH,OAAO;YACP,aAAa,IAAI,EAAE;SACpB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAkB;IACvC,MAAM,EACJ,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,0BAA0B,EACxE,gBAAgB,EAAE,UAAU,EAC5B,aAAa,EAAE,cAAc,EAAE,WAAW,EAC1C,mBAAmB,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAC3E,YAAY,GACb,GAAG,IAAI,CAAC;IACT,gFAAgF;IAChF,kFAAkF;IAClF,qFAAqF;IACrF,mFAAmF;IACnF,oFAAoF;IACpF,gFAAgF;IAChF,MAAM,WAAW,GAAG,KAAK,KAAK,mBAAmB,IAAI,eAAe,EAAE,IAAI,KAAK,IAAI,CAAC;IACpF,MAAM,cAAc,GAAG,CAAC,WAAW;WAC9B,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC;IACnE,0FAA0F;IAC1F,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/D,IAAI,KAAK,KAAK,cAAc,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,2EAA2E;IAC3E,+EAA+E;IAC/E,4EAA4E;IAC5E,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvG,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,YAAY,GAAI,qBAA4D,CAAC,KAAK,CAAC,CAAC;IAC1F,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,6EAA6E;QAC7E,2BAA2B;QAC3B,MAAM,IAAI,KAAK,CAAC,0DAA0D,KAAK,GAAG,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;QACtC,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,0BAA0B;QAC/D,aAAa,EAAE,cAAc,EAAE,WAAW;QAC1C,mBAAmB,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB;QAC3E,YAAY;KACb,CAAC,CAAC;IAEH,yFAAyF;IACzF,2FAA2F;IAC3F,+BAA+B;IAC/B,MAAM,UAAU,GAAG;QACjB,UAAU,KAAK,EAAE;QACjB,SAAS,IAAI,EAAE;QACf,SAAS,IAAI,CAAC,EAAE,EAAE;QAClB,aAAa,YAAY,EAAE;QAC3B,aAAa,QAAQ,EAAE;QACvB,GAAG,MAAM;QACT,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW;QACnC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,WAAW,EAAE;QAC/C,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QACrD,CAAC,CAAC,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,IAAI,GAAG,GAAG,UAAU,OAAO,YAAY,GAAG,WAAW,GAAG,QAAQ,IAAI,CAAC;IAC3E,yEAAyE;IACzE,4EAA4E;IAC5E,2EAA2E;IAC3E,uEAAuE;IACvE,kDAAkD;IAClD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;QACzE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qCAAqC,MAAM,CAAC,IAAI,iBAAiB,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,gFAAgF;AAChF,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,yBAAyB,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,MAAiG,CAAC;IACtG,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QAAE,OAAO,gBAAgB,CAAC,MAAuD,CAAC,CAAC;IACtH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnE,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG;YAChB,GAAG,MAAM;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClC,GAAG,CAAC;gBACJ,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU;oBAChE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE;oBACnD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;SACJ,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,yBAAyB,EAAE,CAAC;YAChE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IACD,2EAA2E;IAC3E,8EAA8E;IAC9E,6DAA6D;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,GAAG,MAAM;QACT,IAAI,EAAE,8DAA8D;QACpE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAqD;IAC7E,KAAK,MAAM,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG;YAChB,GAAG,MAAM;YACT,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC;gBACJ,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;oBACtE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,EAAE;oBACzD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;SACJ,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,yBAAyB,EAAE,CAAC;YAChE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,GAAG,MAAM;QACT,IAAI,EAAE,uEAAuE;QAC7E,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpC,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,GAAG,CAAC,UAAU,IAAI,yBAAyB;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACnF,iCAAiC;IACjC,IAAI,GAAG,GAAG,yBAAyB,CAAC;IACpC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,GAAG,IAAI,CAAC,KAAK,IAAI;QAAE,GAAG,EAAE,CAAC;IACrD,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC1E,CAAC;AAcD,MAAM,UAAU,2BAA2B,CACzC,GAA4B,EAC5B,MAAoC;IAEpC,8FAA8F;IAC9F,iGAAiG;IACjG,8FAA8F;IAC9F,iGAAiG;IACjG,mGAAmG;IACnG,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC;IAC/E,OAAO;QACL,kBAAkB;QAClB,SAAS,GAAG,CAAC,MAAM,EAAE;QACrB,OAAO,GAAG,CAAC,QAAQ,EAAE;QACrB,WAAW,GAAG,CAAC,MAAM,EAAE;QACvB,mBAAmB,MAAM,CAAC,OAAO,EAAE;QACnC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,SAAS,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE;QAC3C,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ;YAC7B,CAAC,CAAC,CAAC,EAAE,EAAE,yIAAyI,GAAG,CAAC,MAAM,KAAK,CAAC;YAChK,CAAC,CAAC,EAAE,CAAC;QACP,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -628,7 +628,14 @@ async function pendingCleanupAfterReplReady(app, agentId, takeover) {
628
628
  const state = await app.ctx.agentStore.get(agentId);
629
629
  const taskId = state?.taskId;
630
630
  if (!taskId) {
631
- await app.ctx.agentManager.clearAwaitingHuman(agentId);
631
+ // A greeting_failed hold must re-prove signal capability, not be silently cleared:
632
+ // re-run the handshake on the restarted REPL; only a pass clears the hold.
633
+ if (state?.awaitingPhase === 'greeting_failed') {
634
+ await app.ctx.agentManager.regreetHeldAgent(agentId);
635
+ }
636
+ else {
637
+ await app.ctx.agentManager.clearAwaitingHuman(agentId);
638
+ }
632
639
  if (!takeover)
633
640
  await app.ctx.lockManager.release(agentId);
634
641
  return;