zelari-code 1.10.0 → 1.12.1

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.
@@ -15,13 +15,53 @@
15
15
  * @since 0.5.0
16
16
  */
17
17
  import { AgentHarness } from '@zelari/core/harness';
18
+ import { cleanAgentContent } from '@zelari/core';
19
+ import { buildCouncilTaskWithHistory, maybeAnchorShortAnswer, } from './hooks/conversationContext.js';
18
20
  import { createBuiltinToolRegistry } from './toolRegistry.js';
19
21
  import { emitEvent, openaiCompatibleProvider, resolveHeadlessKey, resolveHeadlessProvider, } from './headless.js';
20
22
  import { buildSystemPrompt, getAllTools, SINGLE_AGENT_IDENTITY_MODULE, buildLanguagePolicyModuleFor, } from '@zelari/core/skills';
21
23
  import { envNumber } from './utils/envNumber.js';
22
24
  import { setPhase } from './phaseState.js';
23
25
  import { describePhase } from './phase.js';
26
+ import { createStreamScrubber } from './utils/streamScrub.js';
24
27
  export async function runHeadless(opts) {
28
+ // === Global crash handlers (headless-only) ===
29
+ // Without these, an uncaught exception during a tool call (e.g. write_file
30
+ // failing deep in the harness) kills the process silently: no agent_end,
31
+ // no run-finished, and the desktop hangs forever waiting for output that
32
+ // never comes. Here we surface the failure as a final NDJSON error event
33
+ // + stderr line, then exit non-zero, so the desktop can show the cause.
34
+ let crashed = false;
35
+ const handleFatal = (label, err) => {
36
+ if (crashed)
37
+ return; // Re-entrant: log only the first fatal cause.
38
+ crashed = true;
39
+ const msg = err instanceof Error ? err.message : String(err);
40
+ const stack = err instanceof Error && err.stack ? `\n${err.stack}` : '';
41
+ const line = `[zelari-code --headless] FATAL ${label}: ${msg}${stack}`;
42
+ try {
43
+ // Emit a structured error event the desktop renders in the chat.
44
+ emitEvent({
45
+ type: 'error',
46
+ severity: 'fatal',
47
+ message: `${label}: ${msg}`,
48
+ code: 'uncaught',
49
+ });
50
+ }
51
+ catch {
52
+ // If stdout is already gone, at least try stderr.
53
+ }
54
+ try {
55
+ process.stderr.write(line + '\n');
56
+ }
57
+ catch { /* ignore */ }
58
+ // Force exit: the default Node behavior would print to stderr and keep
59
+ // an exit code 1, but for unhandledRejection it just warns and continues
60
+ // (which leaves the desktop hanging). We make both fatal + explicit.
61
+ process.exit(2);
62
+ };
63
+ process.on('uncaughtException', (err) => handleFatal('uncaughtException', err));
64
+ process.on('unhandledRejection', (err) => handleFatal('unhandledRejection', err));
25
65
  // Apply work phase before any tool registry is built.
26
66
  setPhase(opts.phase ?? 'build');
27
67
  const { provider, model } = resolveHeadlessProvider(opts);
@@ -57,11 +97,55 @@ export async function runHeadless(opts) {
57
97
  function planModeFromOpts(opts) {
58
98
  return (opts.phase ?? 'build') === 'plan';
59
99
  }
100
+ let mcpExitHookInstalled = false;
101
+ async function registerHeadlessMcp(toolRegistry, opts) {
102
+ try {
103
+ const { registerMcpTools, closeMcpClients } = await import('./mcp/mcpManager.js');
104
+ const mcp = await registerMcpTools(toolRegistry, process.cwd());
105
+ // Ensure MCP child processes are torn down when the headless process exits.
106
+ if (!mcpExitHookInstalled) {
107
+ mcpExitHookInstalled = true;
108
+ process.once('exit', () => {
109
+ try {
110
+ closeMcpClients();
111
+ }
112
+ catch {
113
+ /* ignore */
114
+ }
115
+ });
116
+ }
117
+ if (mcp.registered.length > 0 && opts.output === 'json') {
118
+ emitEvent({
119
+ type: 'log',
120
+ message: `[headless] MCP tools: ${mcp.registered.length} registered`,
121
+ });
122
+ }
123
+ for (const w of mcp.warnings) {
124
+ if (opts.output === 'json') {
125
+ emitEvent({ type: 'log', message: `[mcp] ${w}` });
126
+ }
127
+ else {
128
+ process.stderr.write(`[zelari-code --headless] [mcp] ${w}\n`);
129
+ }
130
+ }
131
+ }
132
+ catch (err) {
133
+ const msg = err instanceof Error ? err.message : String(err);
134
+ if (opts.output === 'json') {
135
+ emitEvent({ type: 'log', message: `[mcp] registration skipped: ${msg}` });
136
+ }
137
+ else {
138
+ process.stderr.write(`[zelari-code --headless] [mcp] registration skipped: ${msg}\n`);
139
+ }
140
+ }
141
+ }
60
142
  async function runHeadlessSingle(opts, provider, model, providerStream) {
61
143
  const sessionId = crypto.randomUUID();
62
144
  const { registry: toolRegistry } = createBuiltinToolRegistry({
63
145
  planMode: planModeFromOpts(opts),
64
146
  });
147
+ // Parity with TUI: project MCP tools must be available from Desktop/headless.
148
+ await registerHeadlessMcp(toolRegistry, opts);
65
149
  const tools = toolRegistry.toOpenAITools().map((t) => ({
66
150
  name: t.function.name,
67
151
  description: t.function.description,
@@ -101,18 +185,36 @@ async function runHeadlessSingle(opts, provider, model, providerStream) {
101
185
  : 'BUILD phase: full tools; implement changes.',
102
186
  ].join('\n'),
103
187
  };
104
- systemPrompt = buildSystemPrompt(headlessRole, {
188
+ const { loadProjectInstructions } = await import('./workspace/projectInstructions.js');
189
+ const projectInstructions = loadProjectInstructions(process.cwd()).content;
190
+ let sshBlock = '';
191
+ try {
192
+ const { formatSshTargetsForPrompt } = await import('./ssh/targets.js');
193
+ sshBlock = formatSshTargetsForPrompt();
194
+ }
195
+ catch {
196
+ /* optional */
197
+ }
198
+ const rolePrompt = [headlessRole.systemPrompt, sshBlock]
199
+ .filter(Boolean)
200
+ .join('\n\n');
201
+ systemPrompt = buildSystemPrompt({ ...headlessRole, systemPrompt: rolePrompt }, {
105
202
  tools: getAllTools(),
106
203
  toolNames,
204
+ mode: 'agent',
205
+ projectInstructions: projectInstructions || undefined,
107
206
  aiConfig: {
108
207
  enabledSkills: [],
109
208
  enabledTools: toolNames,
110
- customPromptModules: [SINGLE_AGENT_IDENTITY_MODULE, {
209
+ customPromptModules: [
210
+ SINGLE_AGENT_IDENTITY_MODULE,
211
+ {
111
212
  type: 'language-policy',
112
213
  title: 'Response Language',
113
214
  priority: 5,
114
215
  content: languageDirectiveContent,
115
- }],
216
+ },
217
+ ],
116
218
  agentSkillConfigs: [],
117
219
  },
118
220
  });
@@ -125,13 +227,30 @@ async function runHeadlessSingle(opts, provider, model, providerStream) {
125
227
  languageDirectiveContent,
126
228
  ].join('\n');
127
229
  }
230
+ // v1.10.0: multi-turn context for the desktop. Each desktop message spawns
231
+ // a fresh headless process, so without seeding prior turns the agent has
232
+ // amnesia and treats "procedi" / "sì" as brand-new requests. The desktop
233
+ // passes the rolling history via --history <json>; we scrub it (strip
234
+ // <think> tags but KEEP ---QUESTION--- blocks so short answers can bind),
235
+ // then seed the harness as [system, ...history, {user: task}].
236
+ const historySeed = (opts.history ?? []).map((m) => m.role === 'assistant' && m.content
237
+ ? { ...m, content: cleanAgentContent(m.content, { stripQuestion: false }) }
238
+ : m);
239
+ // Short-answer anchoring: if the last history turn was a clarifying
240
+ // question and the user's reply is short ("procedi", "2", "sì"), rewrite
241
+ // it to re-state the question so the model can't treat it as contextless.
242
+ // Mirrors the TUI's maybeAnchorShortAnswer (conversationContext.ts).
243
+ const effectiveTask = maybeAnchorShortAnswer(opts.task)
244
+ ?? opts.task;
245
+ const historySeedLen = historySeed.length;
128
246
  const harness = new AgentHarness({
129
247
  model,
130
248
  provider,
131
249
  sessionId,
132
250
  messages: [
133
251
  { role: 'system', content: systemPrompt },
134
- { role: 'user', content: opts.task },
252
+ ...historySeed,
253
+ { role: 'user', content: effectiveTask },
135
254
  ],
136
255
  tools,
137
256
  toolRegistry,
@@ -144,27 +263,58 @@ async function runHeadlessSingle(opts, provider, model, providerStream) {
144
263
  let finalReason = 'completed';
145
264
  let exitCode = 0;
146
265
  const textBuffer = [];
266
+ // Scrub <think>/---QUESTION--- leaks from the streamed text. The TUI does
267
+ // this in useChatTurn; the headless path used to emit raw deltas, leaking
268
+ // model reasoning into the desktop UI. One scrubber per turn accumulates
269
+ // raw text and yields only clean increments.
270
+ const scrub = createStreamScrubber();
147
271
  try {
148
272
  for await (const event of harness.run()) {
149
- if (opts.output === 'json') {
150
- emitEvent(event);
273
+ // Reset the scrubber on every new assistant message so an unclosed
274
+ // <think> in one message can't swallow the next message's text.
275
+ // (In a tool-loop turn the harness emits multiple message_start/end cycles.)
276
+ if (event.type === 'message_start') {
277
+ scrub.reset();
151
278
  }
152
- if (event.type === 'message_delta') {
153
- if (opts.output === 'plain') {
154
- process.stdout.write(event.delta);
279
+ if (event.type === 'message_delta' && typeof event.delta === 'string') {
280
+ const cleanDelta = scrub.push(event.delta);
281
+ if (opts.output === 'json') {
282
+ // Re-emit a scrubbed message_delta so JSON consumers never see
283
+ // <think> tags. (Other event types pass through untouched.)
284
+ if (cleanDelta.length > 0) {
285
+ emitEvent({ ...event, delta: cleanDelta });
286
+ }
287
+ }
288
+ else if (opts.output === 'plain') {
289
+ if (cleanDelta.length > 0)
290
+ process.stdout.write(cleanDelta);
155
291
  }
156
292
  else {
157
- textBuffer.push(event.delta);
293
+ if (cleanDelta.length > 0)
294
+ textBuffer.push(cleanDelta);
158
295
  }
159
296
  }
160
- else if (event.type === 'agent_end') {
161
- finalReason = event.reason;
162
- if (event.reason === 'error')
163
- exitCode = 3;
164
- }
165
- else if (event.type === 'error') {
166
- if (event.severity === 'fatal') {
167
- exitCode = 2;
297
+ else {
298
+ if (opts.output === 'json') {
299
+ emitEvent(event);
300
+ }
301
+ if (event.type === 'agent_end') {
302
+ // Flush any trailing cleaned text before signaling end.
303
+ const tail = scrub.flush();
304
+ if (tail.length > 0) {
305
+ if (opts.output === 'plain')
306
+ process.stdout.write(tail);
307
+ else
308
+ textBuffer.push(tail);
309
+ }
310
+ finalReason = event.reason;
311
+ if (event.reason === 'error')
312
+ exitCode = 3;
313
+ }
314
+ else if (event.type === 'error') {
315
+ if (event.severity === 'fatal') {
316
+ exitCode = 2;
317
+ }
168
318
  }
169
319
  }
170
320
  }
@@ -177,11 +327,33 @@ async function runHeadlessSingle(opts, provider, model, providerStream) {
177
327
  process.stdout.write(textBuffer.join(''));
178
328
  }
179
329
  process.stdout.write('');
330
+ // v1.10.0: emit a history_snapshot so the desktop can replay this turn's
331
+ // assistant+tool tail on the next message. We snapshot the messages BEYOND
332
+ // the seed (everything the harness added this turn), scrubbing <think> from
333
+ // assistant content but KEEPING ---QUESTION--- blocks (so the next turn's
334
+ // short-answer anchor can still bind). Mirrors useChatTurn's finally block.
335
+ if (finalReason !== 'error' && opts.output === 'json') {
336
+ try {
337
+ const all = harness.getMessages();
338
+ const seedLen = 1 /*system*/ + historySeedLen + 1 /*user*/;
339
+ if (all.length > seedLen) {
340
+ const tail = all.slice(seedLen).map((m) => m.role === 'assistant' && m.content
341
+ ? { ...m, content: cleanAgentContent(m.content, { stripQuestion: false }) }
342
+ : m);
343
+ if (tail.length > 0) {
344
+ emitEvent({ type: 'history_snapshot', messages: tail });
345
+ }
346
+ }
347
+ }
348
+ catch {
349
+ // Non-fatal: a snapshot failure must never break the run.
350
+ }
351
+ }
180
352
  if (finalReason === 'error')
181
353
  return 3;
182
354
  return exitCode;
183
355
  }
184
- async function buildCouncilToolRegistry(planMode) {
356
+ async function buildCouncilToolRegistry(planMode, opts) {
185
357
  const { registry: toolRegistry } = createBuiltinToolRegistry({ planMode });
186
358
  const { createWorkspaceContext, createWorkspaceStubs } = await import('./workspace/stubs.js');
187
359
  const { createWorkspaceToolRegistry } = await import('./workspace/toolRegistry.js');
@@ -194,17 +366,31 @@ async function buildCouncilToolRegistry(planMode) {
194
366
  toolRegistry.register(td);
195
367
  }
196
368
  setWorkspaceStubs(createWorkspaceStubs(realCtx));
369
+ if (opts) {
370
+ await registerHeadlessMcp(toolRegistry, opts);
371
+ }
197
372
  return { toolRegistry, workspaceCtx: realCtx };
198
373
  }
199
374
  async function runHeadlessCouncil(opts, provider, model, providerStream) {
200
375
  const { dispatchCouncil } = await import('./councilDispatcher.js');
201
376
  const sessionId = crypto.randomUUID();
202
- const { toolRegistry } = await buildCouncilToolRegistry(planModeFromOpts(opts));
377
+ const { toolRegistry } = await buildCouncilToolRegistry(planModeFromOpts(opts), opts);
203
378
  const { FeedbackStore } = await import('./councilFeedback.js');
204
379
  const feedbackStore = new FeedbackStore();
380
+ // Multi-turn: Desktop passes --history, but council used to ignore it →
381
+ // "procedi" looked like a brand-new empty request. Inject prior transcript
382
+ // into the user task and emit history_snapshot for the next turn.
383
+ const historySeed = (opts.history ?? []).map((m) => m.role === 'assistant' && m.content
384
+ ? { ...m, content: cleanAgentContent(m.content, { stripQuestion: false }) }
385
+ : m);
386
+ const effectiveTask = buildCouncilTaskWithHistory(opts.task, historySeed);
205
387
  let exitCode = 0;
388
+ const scrub = createStreamScrubber();
389
+ /** Last finished assistant blob this run (chairman / specialist). */
390
+ let lastAssistantText = '';
391
+ let currentAssistantText = '';
206
392
  try {
207
- for await (const event of dispatchCouncil(opts.task, {
393
+ for await (const event of dispatchCouncil(effectiveTask, {
208
394
  apiKey: 'REDACTED',
209
395
  model,
210
396
  provider: 'openai-compatible',
@@ -214,17 +400,42 @@ async function runHeadlessCouncil(opts, provider, model, providerStream) {
214
400
  feedbackStore,
215
401
  runMode: planModeFromOpts(opts) ? 'design-phase' : 'implementation',
216
402
  })) {
217
- if (opts.output === 'json') {
218
- emitEvent(event);
403
+ if (event.type === 'message_start') {
404
+ scrub.reset();
405
+ currentAssistantText = '';
219
406
  }
220
- else if (event.type === 'message_delta') {
221
- process.stdout.write(event.delta);
222
- }
223
- else if (event.type === 'agent_end' && event.reason === 'error') {
224
- exitCode = 3;
407
+ if (event.type === 'message_delta' && typeof event.delta === 'string') {
408
+ const cleanDelta = scrub.push(event.delta);
409
+ if (cleanDelta.length > 0)
410
+ currentAssistantText += cleanDelta;
411
+ if (opts.output === 'json') {
412
+ if (cleanDelta.length > 0)
413
+ emitEvent({ ...event, delta: cleanDelta });
414
+ }
415
+ else if (opts.output === 'plain' && cleanDelta.length > 0) {
416
+ process.stdout.write(cleanDelta);
417
+ }
225
418
  }
226
- else if (event.type === 'error' && event.severity === 'fatal') {
227
- exitCode = 2;
419
+ else {
420
+ if (opts.output === 'json')
421
+ emitEvent(event);
422
+ if (event.type === 'message_end' || event.type === 'agent_end') {
423
+ const tail = scrub.flush();
424
+ if (tail.length > 0) {
425
+ currentAssistantText += tail;
426
+ if (opts.output === 'plain')
427
+ process.stdout.write(tail);
428
+ }
429
+ if (currentAssistantText.trim()) {
430
+ lastAssistantText = currentAssistantText.trim();
431
+ }
432
+ if (event.type === 'agent_end' && event.reason === 'error') {
433
+ exitCode = 3;
434
+ }
435
+ }
436
+ else if (event.type === 'error' && event.severity === 'fatal') {
437
+ exitCode = 2;
438
+ }
228
439
  }
229
440
  }
230
441
  }
@@ -232,6 +443,21 @@ async function runHeadlessCouncil(opts, provider, model, providerStream) {
232
443
  process.stderr.write(`[zelari-code --headless] council error: ${err instanceof Error ? err.message : String(err)}\n`);
233
444
  return 2;
234
445
  }
446
+ // Desktop multi-turn: append this turn so the next "procedi" has context.
447
+ if (opts.output === 'json') {
448
+ try {
449
+ const snapshot = [
450
+ { role: 'user', content: opts.task },
451
+ ...(lastAssistantText
452
+ ? [{ role: 'assistant', content: lastAssistantText }]
453
+ : []),
454
+ ];
455
+ emitEvent({ type: 'history_snapshot', messages: snapshot });
456
+ }
457
+ catch {
458
+ /* non-fatal */
459
+ }
460
+ }
235
461
  return exitCode;
236
462
  }
237
463
  /**
@@ -251,7 +477,7 @@ async function runHeadlessZelari(opts, provider, model, providerStream) {
251
477
  hasPlan: hasWorkspacePlan(projectRoot),
252
478
  });
253
479
  const memory = await getMemoryBackend(projectRoot);
254
- const { toolRegistry, workspaceCtx } = await buildCouncilToolRegistry(planModeFromOpts(opts));
480
+ const { toolRegistry, workspaceCtx } = await buildCouncilToolRegistry(planModeFromOpts(opts), opts);
255
481
  const feedbackStore = new FeedbackStore();
256
482
  const chairmanBudget = envNumber(process.env.ZELARI_MODE_MAX_TOOLS_LUCIFER, {
257
483
  default: 30,
@@ -265,11 +491,16 @@ async function runHeadlessZelari(opts, provider, model, providerStream) {
265
491
  process.stderr.write(message + '\n');
266
492
  }
267
493
  };
494
+ const historySeed = (opts.history ?? []).map((m) => m.role === 'assistant' && m.content
495
+ ? { ...m, content: cleanAgentContent(m.content, { stripQuestion: false }) }
496
+ : m);
497
+ const missionTask = buildCouncilTaskWithHistory(opts.task, historySeed);
268
498
  // Surface the brief once so the desktop UI is not blank.
269
499
  emit(`[zelari] mission brief\n${JSON.stringify({ deliverable: brief.deliverableThisMission, mvp: brief.sliceMvp?.title }, null, 0)}`);
270
500
  let exitCode = 0;
501
+ let lastMissionAssistant = '';
271
502
  try {
272
- const state = await runZelariMission(opts.task, brief, {
503
+ const state = await runZelariMission(missionTask, brief, {
273
504
  projectRoot,
274
505
  memory,
275
506
  emit,
@@ -282,6 +513,7 @@ async function runHeadlessZelari(opts, provider, model, providerStream) {
282
513
  let writeCount = 0;
283
514
  let chairmanErrored = false;
284
515
  let membersCompleted = 0;
516
+ const scrub = createStreamScrubber();
285
517
  for await (const event of dispatchCouncil(fullPrompt, {
286
518
  apiKey: 'REDACTED',
287
519
  model,
@@ -293,15 +525,27 @@ async function runHeadlessZelari(opts, provider, model, providerStream) {
293
525
  runMode: planModeFromOpts(opts) ? 'design-phase' : runMode,
294
526
  maxToolCallsChairman: chairmanBudget,
295
527
  })) {
296
- if (opts.output === 'json') {
297
- emitEvent(event);
298
- }
299
- else if (event.type === 'message_delta') {
300
- process.stdout.write(event.delta);
528
+ if (event.type === 'message_start') {
529
+ scrub.reset();
301
530
  }
302
531
  if (event.type === 'message_delta' && typeof event.delta === 'string') {
303
- // Best-effort accumulate last member stream as synthesis proxy
532
+ // Best-effort accumulate RAW last member stream as synthesis proxy
533
+ // (the synthesis accumulator tracks raw provider text; the display
534
+ // path below emits the scrubbed version separately).
304
535
  synthesisText += event.delta;
536
+ const cleanDelta = scrub.push(event.delta);
537
+ if (opts.output === 'json') {
538
+ if (cleanDelta.length > 0)
539
+ emitEvent({ ...event, delta: cleanDelta });
540
+ }
541
+ else if (opts.output === 'plain' && cleanDelta.length > 0) {
542
+ process.stdout.write(cleanDelta);
543
+ }
544
+ }
545
+ else {
546
+ if (opts.output === 'json') {
547
+ emitEvent(event);
548
+ }
305
549
  }
306
550
  if (event.type === 'tool_execution_end') {
307
551
  const name = event.toolName
@@ -348,6 +592,11 @@ async function runHeadlessZelari(opts, provider, model, providerStream) {
348
592
  catch {
349
593
  // best-effort
350
594
  }
595
+ if (synthesisText.trim()) {
596
+ lastMissionAssistant = cleanAgentContent(synthesisText, {
597
+ stripQuestion: false,
598
+ });
599
+ }
351
600
  return {
352
601
  completionOk,
353
602
  ran: membersCompleted > 0 || synthesisText.length > 0,
@@ -371,6 +620,22 @@ async function runHeadlessZelari(opts, provider, model, providerStream) {
371
620
  finally {
372
621
  await memory.close().catch(() => undefined);
373
622
  }
623
+ if (opts.output === 'json') {
624
+ try {
625
+ emitEvent({
626
+ type: 'history_snapshot',
627
+ messages: [
628
+ { role: 'user', content: opts.task },
629
+ ...(lastMissionAssistant
630
+ ? [{ role: 'assistant', content: lastMissionAssistant }]
631
+ : []),
632
+ ],
633
+ });
634
+ }
635
+ catch {
636
+ /* non-fatal */
637
+ }
638
+ }
374
639
  return exitCode;
375
640
  }
376
641
  //# sourceMappingURL=runHeadless.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runHeadless.js","sourceRoot":"","sources":["../../src/cli/runHeadless.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runHeadless.js","sourceRoot":"","sources":["../../src/cli/runHeadless.ts"],"names":[],"mappings":"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"}