@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.
- package/dist/backends/types.js +5 -1
- package/dist/backends/types.js.map +1 -1
- package/dist/claude-steering.d.ts +76 -0
- package/dist/claude-steering.js +172 -0
- package/dist/claude-steering.js.map +1 -0
- package/dist/claude.d.ts +15 -0
- package/dist/claude.js +137 -0
- package/dist/claude.js.map +1 -1
- package/dist/connection.js +9 -1
- package/dist/connection.js.map +1 -1
- package/dist/copilot-capabilities.d.ts +1 -1
- package/dist/copilot-capabilities.js +2 -1
- package/dist/copilot-capabilities.js.map +1 -1
- package/dist/history-message-transform.d.ts +2 -0
- package/dist/history-message-transform.js.map +1 -1
- package/dist/history.js +46 -1
- package/dist/history.js.map +1 -1
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +1 -1
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
package/dist/backends/types.js
CHANGED
|
@@ -107,7 +107,11 @@ export function claudeCapabilities() {
|
|
|
107
107
|
fallbackRenderer: true,
|
|
108
108
|
specializedRenderers: ['Edit', 'EnterPlanMode'],
|
|
109
109
|
},
|
|
110
|
-
commands: {
|
|
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);
|