@agent-link/agent 0.1.347 → 0.1.349

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.
@@ -107,7 +107,11 @@ export function claudeCapabilities() {
107
107
  fallbackRenderer: true,
108
108
  specializedRenderers: ['Edit', 'EnterPlanMode'],
109
109
  },
110
- commands: { discovery: { supported: false } },
110
+ commands: {
111
+ // Built-in Claude CLI only; each turn is confirmed steerable at runtime (turn_steerable).
112
+ steering: { supported: true, details: { providerIds: ['claude'] } },
113
+ discovery: { supported: false },
114
+ },
111
115
  integrations: {
112
116
  accountInfo: no(),
113
117
  codeReview: no(),
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/backends/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/backends/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Claude Steering — plain-text supplements written to a running Claude turn.
3
+ *
4
+ * The CLI queues a stdin user message that arrives mid-turn and reports its
5
+ * fate through `command_lifecycle` frames keyed by the message `uuid`:
6
+ * `started` means the model received it — at the next tool boundary, or as a
7
+ * new native turn right after the current answer. See
8
+ * docs/2026-11-11-claude-steering.md.
9
+ *
10
+ * Pure state transitions over the conversation's request store; claude.ts
11
+ * owns the process, the output loop and sending.
12
+ */
13
+ export declare const CLAUDE_STEERING_PROVIDER_ID = "claude";
14
+ /** How long a native result may wait for a pending supplement to start. */
15
+ export declare const STEERING_HOLD_TIMEOUT_MS = 15000;
16
+ export type ClaudeSteeringState = 'pending' | 'delivered' | 'failed' | 'cancelled';
17
+ export interface ClaudeSteeringRequest {
18
+ requestId: string;
19
+ /** UUID sent to the CLI; agent-generated so clients cannot collide with native ids. */
20
+ nativeUuid: string;
21
+ content: string;
22
+ turnId: string;
23
+ state: ClaudeSteeringState;
24
+ /** Diagnostic: injected into the running native turn, or run as the next one. */
25
+ delivery?: 'steering' | 'queued';
26
+ error?: string;
27
+ }
28
+ export interface ClaudeSteeringScope {
29
+ requestId: string;
30
+ conversationId: string;
31
+ providerId: string;
32
+ workDir: string;
33
+ claudeSessionId: string;
34
+ turnId: string;
35
+ }
36
+ /** The ConversationState fields steering reads and writes. */
37
+ export interface ClaudeSteeringHost {
38
+ conversationId: string;
39
+ providerId: string;
40
+ workDir: string;
41
+ claudeSessionId: string | null;
42
+ turnActive: boolean;
43
+ turnId: string | null;
44
+ isCompacting: boolean;
45
+ inputStream: unknown;
46
+ /** The CLI reported command_lifecycle for this process — supplements get receipts. */
47
+ commandLifecycle?: boolean;
48
+ steeringRequests?: Map<string, ClaudeSteeringRequest>;
49
+ /** A native result arrived while supplements were pending; the outer turn stays open. */
50
+ steeringHeld?: boolean;
51
+ }
52
+ /** Only the built-in Claude CLI is known to report command_lifecycle. */
53
+ export declare function usesCommandUuids(providerId: string): boolean;
54
+ export declare function isValidSteeringRequestId(requestId: unknown): requestId is string;
55
+ /** Whether the host's current turn can accept a supplement (independent of the text). */
56
+ export declare function isSteerable(host: ClaudeSteeringHost | null | undefined): boolean;
57
+ /** Returns a user-facing reason the supplement cannot be sent, or null. */
58
+ export declare function validateSteering(host: ClaudeSteeringHost | null | undefined, prompt: unknown, scope: ClaudeSteeringScope): string | null;
59
+ export declare function createSteeringRequest(host: ClaudeSteeringHost, requestId: string, prompt: string): ClaudeSteeringRequest;
60
+ export declare function hasPendingSteering(host: ClaudeSteeringHost): boolean;
61
+ /**
62
+ * Apply a command_lifecycle frame. Returns the request that was just delivered,
63
+ * if any. Any lifecycle frame proves the CLI reports delivery.
64
+ */
65
+ export declare function applyCommandLifecycle(host: ClaudeSteeringHost, frame: Record<string, unknown>): ClaudeSteeringRequest | null;
66
+ /** Settle every pending request; returns the ones that changed. */
67
+ export declare function settlePendingSteering(host: ClaudeSteeringHost, state: 'failed' | 'cancelled', error?: string): ClaudeSteeringRequest[];
68
+ export declare function steeringReceipt(host: ClaudeSteeringHost, request: ClaudeSteeringRequest): Record<string, unknown>;
69
+ /** Receipt for a request that was rejected before it existed in the store. */
70
+ export declare function rejectedSteeringReceipt(scope: ClaudeSteeringScope, prompt: unknown, error: string): Record<string, unknown>;
71
+ export declare function turnSteerableMessage(host: ClaudeSteeringHost): Record<string, unknown>;
72
+ /**
73
+ * Frames a refreshed client needs for the active turn: the steerable signal and
74
+ * receipts that history cannot show yet (delivered supplements are in the JSONL).
75
+ */
76
+ export declare function steeringResyncMessages(host: ClaudeSteeringHost): Record<string, unknown>[];
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Claude Steering — plain-text supplements written to a running Claude turn.
3
+ *
4
+ * The CLI queues a stdin user message that arrives mid-turn and reports its
5
+ * fate through `command_lifecycle` frames keyed by the message `uuid`:
6
+ * `started` means the model received it — at the next tool boundary, or as a
7
+ * new native turn right after the current answer. See
8
+ * docs/2026-11-11-claude-steering.md.
9
+ *
10
+ * Pure state transitions over the conversation's request store; claude.ts
11
+ * owns the process, the output loop and sending.
12
+ */
13
+ import { randomUUID } from 'crypto';
14
+ import { resolve } from 'path';
15
+ export const CLAUDE_STEERING_PROVIDER_ID = 'claude';
16
+ /** How long a native result may wait for a pending supplement to start. */
17
+ export const STEERING_HOLD_TIMEOUT_MS = 15_000;
18
+ const MAX_REQUEST_ID_LENGTH = 200;
19
+ /** Only the built-in Claude CLI is known to report command_lifecycle. */
20
+ export function usesCommandUuids(providerId) {
21
+ return providerId === CLAUDE_STEERING_PROVIDER_ID;
22
+ }
23
+ function sameDir(a, b) {
24
+ const normalize = (dir) => {
25
+ const resolved = resolve(dir).replace(/[\\/]+$/, '');
26
+ return process.platform === 'win32' ? resolved.toLowerCase() : resolved;
27
+ };
28
+ return normalize(a) === normalize(b);
29
+ }
30
+ export function isValidSteeringRequestId(requestId) {
31
+ return typeof requestId === 'string' && requestId.length > 0 && requestId.length <= MAX_REQUEST_ID_LENGTH;
32
+ }
33
+ /** Whether the host's current turn can accept a supplement (independent of the text). */
34
+ export function isSteerable(host) {
35
+ return !!host && usesCommandUuids(host.providerId) && host.turnActive && !!host.turnId
36
+ && !!host.inputStream && !host.isCompacting && host.commandLifecycle === true;
37
+ }
38
+ /** Returns a user-facing reason the supplement cannot be sent, or null. */
39
+ export function validateSteering(host, prompt, scope) {
40
+ const text = typeof prompt === 'string' ? prompt.trim() : '';
41
+ if (!text)
42
+ return 'Steering requires text';
43
+ if (text.startsWith('/'))
44
+ return 'Commands cannot be sent as Steering';
45
+ if (!host)
46
+ return 'Steering conversation is no longer active';
47
+ if (!usesCommandUuids(host.providerId) || scope.providerId !== host.providerId) {
48
+ return 'Steering is only available for Claude';
49
+ }
50
+ if (!host.claudeSessionId || scope.claudeSessionId !== host.claudeSessionId
51
+ || typeof scope.workDir !== 'string' || !sameDir(scope.workDir, host.workDir)) {
52
+ return 'Steering session or directory no longer matches';
53
+ }
54
+ if (!host.turnActive || !host.turnId || scope.turnId !== host.turnId) {
55
+ return 'The task already finished; send it as a new message';
56
+ }
57
+ if (host.isCompacting)
58
+ return 'Steering is unavailable while context is compacting';
59
+ if (!host.inputStream)
60
+ return 'Claude process is not running';
61
+ if (host.commandLifecycle !== true)
62
+ return 'This Claude Code version does not confirm Steering delivery; update Claude Code';
63
+ return null;
64
+ }
65
+ export function createSteeringRequest(host, requestId, prompt) {
66
+ const request = {
67
+ requestId,
68
+ nativeUuid: randomUUID(),
69
+ content: prompt.trim(),
70
+ turnId: host.turnId,
71
+ state: 'pending',
72
+ };
73
+ (host.steeringRequests ??= new Map()).set(requestId, request);
74
+ return request;
75
+ }
76
+ export function hasPendingSteering(host) {
77
+ for (const request of host.steeringRequests?.values() || []) {
78
+ if (request.state === 'pending')
79
+ return true;
80
+ }
81
+ return false;
82
+ }
83
+ /**
84
+ * Apply a command_lifecycle frame. Returns the request that was just delivered,
85
+ * if any. Any lifecycle frame proves the CLI reports delivery.
86
+ */
87
+ export function applyCommandLifecycle(host, frame) {
88
+ host.commandLifecycle = true;
89
+ if (frame.state !== 'started')
90
+ return null;
91
+ for (const request of host.steeringRequests?.values() || []) {
92
+ if (request.nativeUuid !== frame.command_uuid || request.state !== 'pending')
93
+ continue;
94
+ request.state = 'delivered';
95
+ request.delivery = host.steeringHeld ? 'queued' : 'steering';
96
+ // The held native turn ended; the supplement now runs as the next one.
97
+ host.steeringHeld = false;
98
+ return request;
99
+ }
100
+ return null;
101
+ }
102
+ /** Settle every pending request; returns the ones that changed. */
103
+ export function settlePendingSteering(host, state, error) {
104
+ const settled = [];
105
+ for (const request of host.steeringRequests?.values() || []) {
106
+ if (request.state !== 'pending')
107
+ continue;
108
+ request.state = state;
109
+ if (error)
110
+ request.error = error;
111
+ settled.push(request);
112
+ }
113
+ host.steeringHeld = false;
114
+ return settled;
115
+ }
116
+ export function steeringReceipt(host, request) {
117
+ return {
118
+ type: 'claude_steer_receipt',
119
+ conversationId: host.conversationId,
120
+ claudeSessionId: host.claudeSessionId,
121
+ workDir: host.workDir,
122
+ providerId: host.providerId,
123
+ turnId: request.turnId,
124
+ requestId: request.requestId,
125
+ content: request.content,
126
+ state: request.state,
127
+ ...(request.delivery ? { delivery: request.delivery } : {}),
128
+ ...(request.error ? { error: request.error } : {}),
129
+ };
130
+ }
131
+ /** Receipt for a request that was rejected before it existed in the store. */
132
+ export function rejectedSteeringReceipt(scope, prompt, error) {
133
+ return {
134
+ type: 'claude_steer_receipt',
135
+ conversationId: scope.conversationId,
136
+ claudeSessionId: scope.claudeSessionId,
137
+ workDir: scope.workDir,
138
+ providerId: scope.providerId,
139
+ turnId: scope.turnId,
140
+ requestId: scope.requestId,
141
+ content: typeof prompt === 'string' ? prompt.trim() : '',
142
+ state: 'failed',
143
+ error,
144
+ };
145
+ }
146
+ export function turnSteerableMessage(host) {
147
+ return {
148
+ type: 'turn_steerable',
149
+ conversationId: host.conversationId,
150
+ claudeSessionId: host.claudeSessionId,
151
+ providerId: host.providerId,
152
+ workDir: host.workDir,
153
+ turnId: host.turnId,
154
+ };
155
+ }
156
+ /**
157
+ * Frames a refreshed client needs for the active turn: the steerable signal and
158
+ * receipts that history cannot show yet (delivered supplements are in the JSONL).
159
+ */
160
+ export function steeringResyncMessages(host) {
161
+ if (!host.turnActive || !host.turnId)
162
+ return [];
163
+ const messages = [];
164
+ if (isSteerable(host))
165
+ messages.push(turnSteerableMessage(host));
166
+ for (const request of host.steeringRequests?.values() || []) {
167
+ if (request.turnId === host.turnId && request.state !== 'delivered')
168
+ messages.push(steeringReceipt(host, request));
169
+ }
170
+ return messages;
171
+ }
172
+ //# sourceMappingURL=claude-steering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-steering.js","sourceRoot":"","sources":["../src/claude-steering.ts"],"names":[],"mappings":"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"}
package/dist/claude.d.ts CHANGED
@@ -18,6 +18,7 @@
18
18
  import { type ChildProcess } from 'child_process';
19
19
  import { Stream } from './stream.js';
20
20
  import { type HistoryMessage } from './history.js';
21
+ import { type ClaudeSteeringRequest, type ClaudeSteeringScope } from './claude-steering.js';
21
22
  export { buildControlResponse, handleResultMessage, handleAssistantMessage, isTaskNotification, handleUserMessage, trackAssistantContextUsage, } from './claude-message-helpers.js';
22
23
  export interface ClaudeMessage {
23
24
  type: string;
@@ -64,6 +65,13 @@ export interface ConversationState {
64
65
  lastActivityAt: number;
65
66
  /** Prompt size (uncached + cache read + cache creation) of the latest main-thread API call. */
66
67
  lastContextTokens?: number;
68
+ /** The CLI reports command_lifecycle for this process (see claude-steering.ts). */
69
+ commandLifecycle?: boolean;
70
+ /** Steering supplements for the current turn, keyed by client request ID. */
71
+ steeringRequests?: Map<string, ClaudeSteeringRequest>;
72
+ /** A native result arrived while supplements were pending; the outer turn stays open. */
73
+ steeringHeld?: boolean;
74
+ steeringHoldTimer?: ReturnType<typeof setTimeout> | null;
67
75
  }
68
76
  export type SendFn = (msg: Record<string, unknown>) => void;
69
77
  export declare const IDLE_CONVERSATION_TIMEOUT_MS: number;
@@ -178,6 +186,13 @@ export declare function buildActionBuilderPrompt(prompt: string, actionDraftId?:
178
186
  * If resumeSessionId is provided, resumes that Claude session.
179
187
  */
180
188
  export declare function handleChat(conversationId: string | undefined, prompt: string, workDir: string, options?: HandleChatOptions, files?: ChatFile[]): void;
189
+ /**
190
+ * Write a plain-text supplement into the running Claude turn. Never starts a
191
+ * session or a turn; every outcome is reported as a claude_steer_receipt.
192
+ */
193
+ export declare function steerClaude(prompt: unknown, scope: ClaudeSteeringScope): void;
194
+ /** Steerable signal and undelivered receipts for a refreshed client of this conversation. */
195
+ export declare function getClaudeSteeringResync(conversationId: string): Record<string, unknown>[];
181
196
  /**
182
197
  * Abort a specific conversation's Claude process.
183
198
  * If no conversationId, aborts the 'default' conversation (backward compat).
package/dist/claude.js CHANGED
@@ -27,6 +27,7 @@ import { getProvider, resolveProviderCommand, getDefaultProviderId } from './pro
27
27
  import { saveSessionMetadata } from './session-metadata.js';
28
28
  import { readConversationContext, readSessionMessages } from './history.js';
29
29
  import { buildControlResponse, handleResultMessage, handleAssistantMessage, isTaskNotification, handleUserMessage, trackAssistantContextUsage, } from './claude-message-helpers.js';
30
+ import { STEERING_HOLD_TIMEOUT_MS, applyCommandLifecycle, createSteeringRequest, hasPendingSteering, isSteerable, isValidSteeringRequestId, rejectedSteeringReceipt, settlePendingSteering, steeringReceipt, steeringResyncMessages, turnSteerableMessage, usesCommandUuids, validateSteering, } from './claude-steering.js';
30
31
  export { buildControlResponse, handleResultMessage, handleAssistantMessage, isTaskNotification, handleUserMessage, trackAssistantContextUsage, } from './claude-message-helpers.js';
31
32
  /** Heartbeat interval for turn liveness (15 seconds). */
32
33
  const TURN_HEARTBEAT_INTERVAL_MS = 15_000;
@@ -400,6 +401,12 @@ export function handleChat(conversationId, prompt, workDir, options, files) {
400
401
  lastSessionIdsByConv.delete(convId);
401
402
  }
402
403
  const state = conversations.get(convId);
404
+ // Supplements belong to one turn; a new message supersedes unconfirmed ones.
405
+ for (const request of settlePendingSteering(state, 'failed', 'Superseded by a new message')) {
406
+ publishSteering(state, request);
407
+ }
408
+ clearSteeringHold(state);
409
+ state.steeringRequests = new Map();
403
410
  state.turnActive = true;
404
411
  state.lastActivityAt = Date.now();
405
412
  state.turnId = generateTurnId();
@@ -412,6 +419,8 @@ export function handleChat(conversationId, prompt, workDir, options, files) {
412
419
  turnId: state.turnId,
413
420
  stateVersion: state.stateVersion,
414
421
  });
422
+ if (isSteerable(state))
423
+ sendFn(turnSteerableMessage(state));
415
424
  // Start heartbeat timer (one per conversation, idempotent)
416
425
  if (!state.heartbeatTimer) {
417
426
  state.heartbeatTimer = setInterval(() => {
@@ -472,20 +481,77 @@ export function handleChat(conversationId, prompt, workDir, options, files) {
472
481
  }
473
482
  const logLen = (state.recapId || state.briefingDate) ? 500 : 100;
474
483
  console.log(`[Claude:${convId.slice(0, 8)}] Sending (recapId=${state.recapId}, briefingDate=${state.briefingDate}): ${effectivePrompt.substring(0, logLen)}${effectivePrompt.length > logLen ? '...' : ''}`);
484
+ // A uuid makes the Claude CLI report command_lifecycle, which tells us the
485
+ // process can confirm Steering delivery.
486
+ const nativeUuid = usesCommandUuids(state.providerId) ? { uuid: randomUUID() } : {};
475
487
  if (files && files.length > 0) {
476
488
  const content = processFilesForClaude(files, workDir, effectivePrompt);
477
489
  state.inputStream.enqueue({
478
490
  type: 'user',
479
491
  message: { role: 'user', content },
492
+ ...nativeUuid,
480
493
  });
481
494
  }
482
495
  else {
483
496
  state.inputStream.enqueue({
484
497
  type: 'user',
485
498
  message: { role: 'user', content: effectivePrompt },
499
+ ...nativeUuid,
486
500
  });
487
501
  }
488
502
  }
503
+ function publishSteering(state, request) {
504
+ sendFn(steeringReceipt(state, request));
505
+ }
506
+ function clearSteeringHold(state) {
507
+ if (state.steeringHoldTimer) {
508
+ clearTimeout(state.steeringHoldTimer);
509
+ state.steeringHoldTimer = null;
510
+ }
511
+ state.steeringHeld = false;
512
+ }
513
+ /**
514
+ * Write a plain-text supplement into the running Claude turn. Never starts a
515
+ * session or a turn; every outcome is reported as a claude_steer_receipt.
516
+ */
517
+ export function steerClaude(prompt, scope) {
518
+ if (!scope || !isValidSteeringRequestId(scope.requestId)) {
519
+ console.warn('[Claude:steering] Ignoring request without a valid request ID');
520
+ return;
521
+ }
522
+ const conv = conversations.get(scope.conversationId) ?? null;
523
+ const existing = conv?.steeringRequests?.get(scope.requestId);
524
+ if (existing) {
525
+ // Retransmission of the same supplement: report its current state again.
526
+ if (existing.content === (typeof prompt === 'string' ? prompt.trim() : '') && existing.turnId === scope.turnId) {
527
+ publishSteering(conv, existing);
528
+ }
529
+ else {
530
+ sendFn(rejectedSteeringReceipt(scope, prompt, 'Steering request ID was already used for a different request'));
531
+ }
532
+ return;
533
+ }
534
+ const error = validateSteering(conv, prompt, scope);
535
+ if (error || !conv) {
536
+ console.warn(`[Claude:steering] Rejected ${scope.requestId}: ${error}`);
537
+ sendFn(rejectedSteeringReceipt(scope, prompt, error || 'Steering conversation is no longer active'));
538
+ return;
539
+ }
540
+ const request = createSteeringRequest(conv, scope.requestId, prompt);
541
+ publishSteering(conv, request);
542
+ conv.lastActivityAt = Date.now();
543
+ console.log(`[Claude:${conv.conversationId.slice(0, 8)}] Steering ${request.requestId}: ${request.content.substring(0, 100)}`);
544
+ conv.inputStream.enqueue({
545
+ type: 'user',
546
+ message: { role: 'user', content: request.content },
547
+ uuid: request.nativeUuid,
548
+ });
549
+ }
550
+ /** Steerable signal and undelivered receipts for a refreshed client of this conversation. */
551
+ export function getClaudeSteeringResync(conversationId) {
552
+ const conv = conversations.get(conversationId);
553
+ return conv ? steeringResyncMessages(conv) : [];
554
+ }
489
555
  /**
490
556
  * Abort a specific conversation's Claude process.
491
557
  * If no conversationId, aborts the 'default' conversation (backward compat).
@@ -1131,6 +1197,13 @@ async function processOutput(child, state, stderr) {
1131
1197
  continue;
1132
1198
  try {
1133
1199
  const msg = JSON.parse(line);
1200
+ // Delivery bookkeeping for our own stdin messages. Keep it in stdout
1201
+ // order (it is classified against `result`), but never expose it to
1202
+ // observers or the web as output.
1203
+ if (msg.type === 'command_lifecycle') {
1204
+ messageStream.enqueue(msg);
1205
+ continue;
1206
+ }
1134
1207
  // Notify output observers before any processing.
1135
1208
  // If any observer returns true, suppress this message from normal handling.
1136
1209
  let suppressed = false;
@@ -1241,18 +1314,73 @@ async function processOutput(child, state, stderr) {
1241
1314
  let lastSentText = '';
1242
1315
  // Suppress output for turns triggered by task-notification (background task events)
1243
1316
  let silentTurn = false;
1317
+ // Keep the outer turn open across a native result while Steering supplements
1318
+ // are pending. If none starts in time, settle them and complete with this result.
1319
+ function holdResultForSteering(result) {
1320
+ state.steeringHeld = true;
1321
+ lastSentText = '';
1322
+ if (result.is_error) {
1323
+ // Sending `error` would end the turn in the web; the CLI continues with the supplement.
1324
+ console.warn(`[Claude:${state.conversationId.slice(0, 8)}] Native turn ended with an error while Steering was pending: ${String(result.result ?? result.error ?? '')}`);
1325
+ }
1326
+ console.log(`[Claude:${state.conversationId.slice(0, 8)}] Holding turn for pending Steering`);
1327
+ if (state.steeringHoldTimer)
1328
+ clearTimeout(state.steeringHoldTimer);
1329
+ state.steeringHoldTimer = setTimeout(() => {
1330
+ state.steeringHoldTimer = null;
1331
+ if (conversations.get(state.conversationId) !== state || !state.steeringHeld || state.turnResultReceived)
1332
+ return;
1333
+ for (const request of settlePendingSteering(state, 'failed', 'Claude did not pick up the supplement')) {
1334
+ publishSteering(state, request);
1335
+ }
1336
+ state.turnResultReceived = true;
1337
+ resultHandled = true;
1338
+ handleResultMessage(result, state, sendWithConvId);
1339
+ state.hasVisibleOutput = false;
1340
+ }, STEERING_HOLD_TIMEOUT_MS);
1341
+ state.steeringHoldTimer.unref?.();
1342
+ }
1244
1343
  try {
1245
1344
  for await (const msg of messageStream) {
1246
1345
  // If the conversation was cancelled/removed, stop processing stale output
1247
1346
  if (conversations.get(state.conversationId) !== state) {
1248
1347
  break;
1249
1348
  }
1349
+ // ── command_lifecycle → Steering delivery ──
1350
+ if (msg.type === 'command_lifecycle') {
1351
+ const firstSignal = !state.commandLifecycle;
1352
+ const delivered = applyCommandLifecycle(state, msg);
1353
+ if (firstSignal && isSteerable(state))
1354
+ sendWithConvId(turnSteerableMessage(state));
1355
+ if (delivered) {
1356
+ if (state.steeringHoldTimer) {
1357
+ clearTimeout(state.steeringHoldTimer);
1358
+ state.steeringHoldTimer = null;
1359
+ }
1360
+ // The supplement is a visible transcript boundary: later text is a
1361
+ // new assistant block, and the turn must not go silent.
1362
+ lastSentText = '';
1363
+ silentTurn = false;
1364
+ state.hasVisibleOutput = true;
1365
+ state.lastActivityAt = Date.now();
1366
+ console.log(`[Claude:${state.conversationId.slice(0, 8)}] Steering ${delivered.requestId} delivered (${delivered.delivery})`);
1367
+ publishSteering(state, delivered);
1368
+ }
1369
+ continue;
1370
+ }
1250
1371
  // ── result → turn complete ──
1251
1372
  if (msg.type === 'result') {
1252
1373
  if (state.turnResultReceived) {
1253
1374
  // Suppress duplicate result (SDK can emit more than one)
1254
1375
  continue;
1255
1376
  }
1377
+ if (!silentTurn && state.turnActive && hasPendingSteering(state)) {
1378
+ // The native turn ended before a supplement was picked up; the CLI
1379
+ // runs it next. Keep the outer turn open until that result.
1380
+ holdResultForSteering(msg);
1381
+ continue;
1382
+ }
1383
+ clearSteeringHold(state);
1256
1384
  state.turnResultReceived = true;
1257
1385
  resultHandled = true;
1258
1386
  lastSentText = '';
@@ -1399,6 +1527,10 @@ async function processOutput(child, state, stderr) {
1399
1527
  }
1400
1528
  }
1401
1529
  finally {
1530
+ for (const request of settlePendingSteering(state, 'failed', 'Claude exited before receiving the supplement')) {
1531
+ publishSteering(state, request);
1532
+ }
1533
+ clearSteeringHold(state);
1402
1534
  // If the process exited mid-turn without a result, notify web client with error
1403
1535
  if (!resultHandled && state.turnActive && !silentTurn) {
1404
1536
  state.stateVersion++;
@@ -1543,6 +1675,11 @@ function cleanupConversation(conversationId) {
1543
1675
  }
1544
1676
  }
1545
1677
  conv.isCompacting = false;
1678
+ // Stop / restart / eviction: supplements the CLI never started are not delivered.
1679
+ for (const request of settlePendingSteering(conv, 'cancelled')) {
1680
+ publishSteering(conv, request);
1681
+ }
1682
+ clearSteeringHold(conv);
1546
1683
  // Clear heartbeat timer to prevent stale heartbeats after cleanup
1547
1684
  if (conv.heartbeatTimer) {
1548
1685
  clearInterval(conv.heartbeatTimer);