@exla/rudder 4.0.0-alpha.2 → 4.0.0-alpha.7

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 (41) hide show
  1. package/dist/brain.d.ts +7 -5
  2. package/dist/brain.js +32 -22
  3. package/dist/brain.js.map +1 -1
  4. package/dist/claude-sdk-protocol.d.ts +125 -0
  5. package/dist/claude-sdk-protocol.js +491 -0
  6. package/dist/claude-sdk-protocol.js.map +1 -0
  7. package/dist/claude-sdk.d.ts +28 -0
  8. package/dist/claude-sdk.js +425 -0
  9. package/dist/claude-sdk.js.map +1 -0
  10. package/dist/context-audit.js +1 -1
  11. package/dist/context-audit.js.map +1 -1
  12. package/dist/daemon.js +3 -0
  13. package/dist/daemon.js.map +1 -1
  14. package/dist/engine-authority.d.ts +5 -0
  15. package/dist/engine-authority.js +34 -0
  16. package/dist/engine-authority.js.map +1 -0
  17. package/dist/engine.d.ts +33 -0
  18. package/dist/engine.js +154 -0
  19. package/dist/engine.js.map +1 -0
  20. package/dist/fabric-local.d.ts +50 -0
  21. package/dist/fabric-local.js +339 -0
  22. package/dist/fabric-local.js.map +1 -0
  23. package/dist/fabric-remote.d.ts +92 -0
  24. package/dist/fabric-remote.js +402 -0
  25. package/dist/fabric-remote.js.map +1 -0
  26. package/dist/main.js +27 -1
  27. package/dist/main.js.map +1 -1
  28. package/dist/native/darwin-arm64/rudder-native +0 -0
  29. package/dist/native/darwin-x64/rudder-native +0 -0
  30. package/dist/native/linux-x64/rudder-native +0 -0
  31. package/dist/planner.js +1 -1
  32. package/dist/planner.js.map +1 -1
  33. package/dist/run-manager.js +11 -1
  34. package/dist/run-manager.js.map +1 -1
  35. package/dist/scheduler.js +3 -0
  36. package/dist/scheduler.js.map +1 -1
  37. package/dist/surfaces.d.ts +1 -1
  38. package/dist/surfaces.js +6 -7
  39. package/dist/surfaces.js.map +1 -1
  40. package/dist/types.d.ts +3 -0
  41. package/package.json +2 -1
@@ -0,0 +1,491 @@
1
+ /** The managed Claude profile uses the public SDK's typed stream-json protocol.
2
+ * Runtime imports of the SDK are deliberately unnecessary: the installed CLI
3
+ * owns the actual session, and the engine owns this process attempt.
4
+ */
5
+ import { createHash, randomUUID } from "node:crypto";
6
+ import { performance } from "node:perf_hooks";
7
+ export const SDK_PROFILE = "claude-sdk";
8
+ export const SDK_FRAME_LIMIT = 1024 * 1024;
9
+ export const SDK_TEXT_LIMIT = 64 * 1024;
10
+ export const SDK_REQUIRED_CAPABILITIES = ["interrupt_receipt_v1", "interrupt_cancel_queued_v1"];
11
+ export class SdkControlError extends Error {
12
+ kind;
13
+ constructor(kind, message) {
14
+ super(message);
15
+ this.kind = kind;
16
+ this.name = "SdkControlError";
17
+ }
18
+ }
19
+ export function object(value) { return !!value && typeof value === "object" && !Array.isArray(value); }
20
+ export function id(value) { return typeof value === "string" && value.length > 0 && value.length <= 256 && !/[\x00-\x1f\x7f]/.test(value); }
21
+ export function text(value) { return typeof value === "string" && value.length > 0 && Buffer.byteLength(value) <= SDK_TEXT_LIMIT; }
22
+ function exactKeys(value, allowed) { return Object.keys(value).every((key) => allowed.includes(key)); }
23
+ export function parseSdkCommand(value) {
24
+ if (!object(value) || !exactKeys(value, ["run_id", "attempt_id", "command_id", "expected_turn_id", "operation", "deadline_unix_ms"])
25
+ || !id(value.run_id) || !id(value.attempt_id) || !id(value.command_id)
26
+ || !(value.expected_turn_id === null || id(value.expected_turn_id)) || !object(value.operation)
27
+ || !(value.deadline_unix_ms === undefined || Number.isSafeInteger(value.deadline_unix_ms) && Number(value.deadline_unix_ms) > 0)) {
28
+ throw new SdkControlError("rejected", "Invalid managed Claude command envelope");
29
+ }
30
+ const op = value.operation;
31
+ if (op.kind === "interrupt" && exactKeys(op, ["kind"]))
32
+ return value;
33
+ if (!["deliver", "steer", "resume"].includes(String(op.kind)) || !exactKeys(op, ["kind", "message"]) || !object(op.message)
34
+ || !exactKeys(op.message, ["sender_run_id", "message_id", "text"]) || !id(op.message.sender_run_id) || !id(op.message.message_id) || !text(op.message.text)) {
35
+ throw new SdkControlError("rejected", "Invalid attributed peer input");
36
+ }
37
+ return value;
38
+ }
39
+ function strings(value) { return Array.isArray(value) && value.length <= 1024 && value.every(id); }
40
+ function nonHumanOriginVersion(version) {
41
+ const match = /^(\d+)\.(\d+)\.(\d+)$/.exec(version ?? "");
42
+ if (!match)
43
+ return false;
44
+ const [major, minor, patch] = match.slice(1).map(Number);
45
+ return major > 2 || major === 2 && (minor > 1 || minor === 1 && patch >= 223);
46
+ }
47
+ function uuid() { return randomUUID(); }
48
+ function deferred(timeout, message) {
49
+ let resolve, reject;
50
+ const promise = new Promise((yes, no) => { resolve = yes; reject = no; });
51
+ // A transport can fail synchronously before a caller reaches its await.
52
+ // Keep the original promise rejecting for callers without an unhandled timer.
53
+ void promise.catch(() => { });
54
+ const timer = setTimeout(() => reject(new SdkControlError("uncertain", message)), timeout);
55
+ return { promise, resolve(value) { clearTimeout(timer); resolve(value); }, reject(error) { clearTimeout(timer); reject(error); }, timer };
56
+ }
57
+ /** One backend protocol actor, with no run/workspace scheduling authority. */
58
+ export class ClaudeSdkProtocol {
59
+ runId;
60
+ attemptId;
61
+ cwd;
62
+ send;
63
+ event;
64
+ notice;
65
+ timeoutMs;
66
+ sessionId = null;
67
+ cliVersion = null;
68
+ capabilities = new Set();
69
+ active = null;
70
+ lastInterrupted = null;
71
+ lastTurn = null;
72
+ uncertain = false;
73
+ hardUncertain = false;
74
+ closed = false;
75
+ initialization = null;
76
+ initialized = false;
77
+ negotiated = false;
78
+ sessionHint;
79
+ inputs = new Map();
80
+ interruption = null;
81
+ busy = false;
82
+ commands = new Map();
83
+ permissions = new Map();
84
+ humanQueue = [];
85
+ constructor(runId, attemptId, cwd, send, event, notice, timeoutMs = 30_000, selectedSession = null) {
86
+ this.runId = runId;
87
+ this.attemptId = attemptId;
88
+ this.cwd = cwd;
89
+ this.send = send;
90
+ this.event = event;
91
+ this.notice = notice;
92
+ this.timeoutMs = timeoutMs;
93
+ if (!id(runId) || !id(attemptId) || timeoutMs < 10 || timeoutMs > 120_000)
94
+ throw new Error("Invalid managed Claude protocol options");
95
+ if (selectedSession !== null && !id(selectedSession))
96
+ throw new Error("Invalid managed Claude session selection");
97
+ this.sessionId = selectedSession;
98
+ this.sessionHint = selectedSession !== null;
99
+ }
100
+ snapshot() {
101
+ return { sessionId: this.sessionId, activeTurnId: this.active?.id ?? null, lastInterruptedTurnId: this.lastInterrupted,
102
+ qualified: !!this.sessionId && nonHumanOriginVersion(this.cliVersion) && SDK_REQUIRED_CAPABILITIES.every((capability) => this.capabilities.has(capability)), uncertain: this.uncertain,
103
+ capabilities: [...this.capabilities], cliVersion: this.cliVersion, steerMode: "interrupt_then_replace" };
104
+ }
105
+ thread() {
106
+ if (!this.sessionId || !(this.snapshot().qualified || this.canBootstrap()))
107
+ return null;
108
+ const last = this.active ? { id: this.active.id, status: "inProgress", items: [] } : this.lastTurn ? { ...this.lastTurn, items: [] } : null;
109
+ return { id: this.sessionId, sessionId: this.sessionId, cwd: this.cwd, source: "cli", ephemeral: false, turns: last ? [last] : [], status: { type: this.active ? "active" : "idle" },
110
+ rudder_profile_qualified: this.snapshot().qualified, rudder_binding_observed: this.negotiated, rudder_capabilities: [...this.capabilities],
111
+ rudder_uncertain: this.uncertain, rudder_cli_version: this.cliVersion };
112
+ }
113
+ canBootstrap() { return this.initialized && this.sessionHint && !this.negotiated && nonHumanOriginVersion(this.cliVersion); }
114
+ async initialize() {
115
+ if (this.initialization)
116
+ throw new Error("Claude stream was already initialized");
117
+ const wait = deferred(this.timeoutMs, "Claude SDK initialization timed out");
118
+ this.initialization = { id: randomUUID(), wait };
119
+ this.write({ type: "control_request", request_id: this.initialization.id, request: { subtype: "initialize" } });
120
+ await wait.promise;
121
+ }
122
+ write(frame) {
123
+ if (this.closed)
124
+ throw new SdkControlError("rejected", "Claude attempt has closed");
125
+ try {
126
+ this.send(frame);
127
+ }
128
+ catch {
129
+ this.failTransport("Claude stdin write may have failed; do not replay");
130
+ throw new SdkControlError("uncertain", "Claude stdin write may have failed; do not replay");
131
+ }
132
+ }
133
+ /** Only the direct keyboard path calls this. Peer RPC payloads cannot select
134
+ * human/coordinator origin or provide permission responses. */
135
+ async humanInput(body) {
136
+ if (!text(body))
137
+ throw new SdkControlError("rejected", "Input must contain 1..=65536 bytes");
138
+ if (this.closed || this.uncertain)
139
+ throw new SdkControlError("uncertain", "Claude control state requires reconciliation");
140
+ if (this.active || this.busy) {
141
+ if (this.humanQueue.length >= 16)
142
+ throw new SdkControlError("rejected", "Human input queue is full");
143
+ this.humanQueue.push(body);
144
+ this.notice("Input held until the current turn finishes.");
145
+ return;
146
+ }
147
+ await this.submitInput(body, { kind: "human" });
148
+ }
149
+ async submitInput(body, origin, budgetMs = this.timeoutMs) {
150
+ if (this.active)
151
+ throw new SdkControlError("rejected", "Claude already has an active turn");
152
+ if (budgetMs <= 0)
153
+ throw new SdkControlError("uncertain", "Claude control expired before input submission; no new turn was submitted");
154
+ const inputId = uuid();
155
+ const wait = deferred(budgetMs, "Claude input acceptance is unknown; do not replay");
156
+ this.active = { id: inputId, inputs: new Set([inputId]), started: false, origin: origin.kind === "peer" ? "peer" : "human" };
157
+ this.lastInterrupted = null;
158
+ this.inputs.set(inputId, { turnId: inputId, wait });
159
+ const frame = { type: "user", uuid: inputId, message: { role: "user", content: body }, parent_tool_use_id: null, origin,
160
+ ...(origin.kind === "peer" ? { isSynthetic: true, priority: "next" } : {}), ...(this.sessionId ? { session_id: this.sessionId } : {}) };
161
+ try {
162
+ this.write(frame);
163
+ await wait.promise;
164
+ return inputId;
165
+ }
166
+ catch (error) {
167
+ this.uncertain = true;
168
+ throw error;
169
+ }
170
+ }
171
+ execute(raw, threadId) {
172
+ let command;
173
+ try {
174
+ command = parseSdkCommand(raw);
175
+ }
176
+ catch (error) {
177
+ return Promise.reject(error);
178
+ }
179
+ const fingerprint = createHash("sha256").update(JSON.stringify({ threadId, command })).digest("hex");
180
+ const prior = this.commands.get(command.command_id);
181
+ if (prior) {
182
+ if (prior.fingerprint !== fingerprint)
183
+ return Promise.reject(new SdkControlError("rejected", "Command id reused with different content"));
184
+ return prior.promise;
185
+ }
186
+ if (this.commands.size >= 4096)
187
+ return Promise.reject(new SdkControlError("rejected", "Attempt replay table is full"));
188
+ const promise = this.perform(command, threadId);
189
+ this.commands.set(command.command_id, { fingerprint, promise });
190
+ return promise;
191
+ }
192
+ async perform(command, threadId) {
193
+ if (command.run_id !== this.runId || command.attempt_id !== this.attemptId || threadId !== this.sessionId)
194
+ throw new SdkControlError("rejected", "Stale Claude attempt or session");
195
+ const firstIdleDelivery = this.canBootstrap() && !this.active && command.expected_turn_id === null && command.operation.kind === "deliver";
196
+ if (!this.snapshot().qualified && !firstIdleDelivery)
197
+ throw new SdkControlError("unsupported", "Claude CLI has not advertised the required interrupt capabilities");
198
+ if (this.closed)
199
+ throw new SdkControlError("rejected", "Claude attempt has closed");
200
+ if (this.uncertain)
201
+ throw new SdkControlError("uncertain", "A previous Claude control has an unresolved outcome");
202
+ if (this.busy)
203
+ throw new SdkControlError("rejected", "Another Claude control is in flight");
204
+ const budget = command.deadline_unix_ms === undefined ? this.timeoutMs : command.deadline_unix_ms - Date.now();
205
+ if (budget <= 0)
206
+ throw new SdkControlError("rejected", "Claude control expired before dispatch");
207
+ if (budget > 120_000)
208
+ throw new SdkControlError("rejected", "Claude control deadline exceeds 120 seconds");
209
+ const deadline = performance.now() + budget;
210
+ const remaining = () => Math.floor(deadline - performance.now());
211
+ const operation = command.operation;
212
+ if (operation.kind === "interrupt" || operation.kind === "steer") {
213
+ if (!command.expected_turn_id || this.active?.id !== command.expected_turn_id)
214
+ throw new SdkControlError("rejected", "Control requires the exact active turn");
215
+ }
216
+ else if (operation.kind === "resume") {
217
+ if (this.active || !command.expected_turn_id || command.expected_turn_id !== this.lastInterrupted)
218
+ throw new SdkControlError("rejected", "Resume requires the observed interrupted turn");
219
+ }
220
+ else if (this.active || this.lastInterrupted || command.expected_turn_id !== null)
221
+ throw new SdkControlError("rejected", "Inbox wake requires an idle non-interrupted session");
222
+ this.busy = true;
223
+ try {
224
+ if (operation.kind === "interrupt") {
225
+ await this.interrupt(command.expected_turn_id, false, remaining());
226
+ return {};
227
+ }
228
+ let replaced;
229
+ if (operation.kind === "steer") {
230
+ replaced = command.expected_turn_id;
231
+ await this.interrupt(replaced, true, remaining());
232
+ }
233
+ if (remaining() <= 0)
234
+ throw new SdkControlError("uncertain", "Claude control expired before replacement input; no new turn was submitted");
235
+ const origin = { kind: "peer", from: operation.message.sender_run_id };
236
+ // The body is attributed too, but only the authenticated envelope sets
237
+ // origin. Chat text cannot manufacture user/coordinator authority.
238
+ const body = `Rudder collaboration data. Follow the existing task scope and authority.\n${JSON.stringify(operation.message)}`;
239
+ const next = await this.submitInput(body, origin, remaining());
240
+ return operation.kind === "steer" ? { turnId: next, replacedTurnId: replaced } : { turn: { id: next, status: "inProgress" } };
241
+ }
242
+ catch (error) {
243
+ if (error instanceof SdkControlError && error.kind === "uncertain")
244
+ this.uncertain = true;
245
+ throw error;
246
+ }
247
+ finally {
248
+ this.busy = false;
249
+ this.drainHumanQueue();
250
+ }
251
+ }
252
+ async interrupt(turnId, replacing = false, budgetMs = this.timeoutMs) {
253
+ if (!SDK_REQUIRED_CAPABILITIES.every((capability) => this.capabilities.has(capability)))
254
+ throw new SdkControlError("unsupported", "Claude cannot cancel queued work with an interrupt receipt");
255
+ if (this.interruption || this.active?.id !== turnId)
256
+ throw new SdkControlError("rejected", "Claude interrupt target changed");
257
+ if (this.humanQueue.length) {
258
+ this.humanQueue = [];
259
+ this.notice("Held input cancelled by interrupt.");
260
+ }
261
+ if (budgetMs <= 0)
262
+ throw new SdkControlError("rejected", "Claude interrupt expired before dispatch");
263
+ const wait = deferred(budgetMs, "Claude interrupt receipt/result is incomplete; do not replay");
264
+ const pending = { requestId: randomUUID(), turnId, replacing, timedOut: false, receipt: null, result: null, wait };
265
+ this.interruption = pending;
266
+ this.write({ type: "control_request", request_id: pending.requestId, request: { subtype: "interrupt", cancel_queued: true } });
267
+ try {
268
+ await wait.promise;
269
+ }
270
+ catch (error) {
271
+ if (!(error instanceof SdkControlError) || error.kind === "uncertain") {
272
+ pending.timedOut = true;
273
+ this.uncertain = true;
274
+ }
275
+ throw error;
276
+ }
277
+ }
278
+ async humanInterrupt() {
279
+ if (!this.active)
280
+ throw new SdkControlError("rejected", "Claude has no active turn");
281
+ // Explicit stop also discards input held by this renderer, before any SDK
282
+ // write. Those messages are not silently replayed after interruption.
283
+ this.humanQueue = [];
284
+ await this.execute({ run_id: this.runId, attempt_id: this.attemptId, command_id: randomUUID(), expected_turn_id: this.active.id, operation: { kind: "interrupt" } }, this.sessionId ?? "");
285
+ }
286
+ accepted(inputId) {
287
+ const input = this.inputs.get(inputId);
288
+ if (!input || !this.active?.inputs.has(inputId) || !this.snapshot().qualified)
289
+ return;
290
+ if (!this.active.started && this.sessionId) {
291
+ this.active.started = true;
292
+ this.event({ method: "turn/started", params: { threadId: this.sessionId, turn: { id: this.active.id, status: "inProgress" } } });
293
+ }
294
+ this.inputs.delete(inputId);
295
+ input.wait.resolve();
296
+ }
297
+ correlate(frame) {
298
+ const values = Array.isArray(frame.user_message_uuids) ? [...frame.user_message_uuids] : [];
299
+ if (typeof frame.user_message_uuid === "string")
300
+ values.push(frame.user_message_uuid);
301
+ return [...new Set(values.filter((value) => id(value)))];
302
+ }
303
+ ingest(raw) {
304
+ if (!object(raw) || typeof raw.type !== "string" || this.closed)
305
+ return;
306
+ if (raw.type === "control_response") {
307
+ this.controlResponse(raw);
308
+ return;
309
+ }
310
+ if (raw.type === "control_request") {
311
+ this.permissionRequest(raw);
312
+ return;
313
+ }
314
+ if (raw.type === "control_cancel_request" && id(raw.request_id)) {
315
+ this.permissions.delete(raw.request_id);
316
+ return;
317
+ }
318
+ if (raw.type === "system" && raw.subtype === "init") {
319
+ if (!id(raw.session_id) || !strings(raw.capabilities) || typeof raw.claude_code_version !== "string") {
320
+ this.failTransport("Claude initialization does not expose supported capability evidence");
321
+ return;
322
+ }
323
+ if (this.sessionId && this.sessionId !== raw.session_id) {
324
+ this.failTransport("Claude session identity changed");
325
+ return;
326
+ }
327
+ this.sessionId = raw.session_id;
328
+ this.cliVersion = raw.claude_code_version;
329
+ this.capabilities = new Set(raw.capabilities);
330
+ this.negotiated = true;
331
+ if (!this.snapshot().qualified)
332
+ this.failTransport("Claude CLI lacks interrupt_receipt_v1 and interrupt_cancel_queued_v1");
333
+ else
334
+ this.event({ method: "rudder/profile", params: { threadId: this.sessionId, qualified: true, uncertain: this.uncertain } });
335
+ return;
336
+ }
337
+ if (!this.sessionId || raw.session_id !== this.sessionId || raw.parent_tool_use_id != null)
338
+ return;
339
+ if (raw.type === "user" && raw.isReplay === true && id(raw.uuid))
340
+ this.accepted(raw.uuid);
341
+ const correlation = this.correlate(raw);
342
+ if (raw.type === "assistant" || raw.type === "stream_event" || raw.type === "result")
343
+ for (const input of correlation)
344
+ this.accepted(input);
345
+ if (raw.type !== "result" || !this.active || !correlation.some((input) => this.active.inputs.has(input)))
346
+ return;
347
+ if (typeof raw.is_error !== "boolean" || !["success", "error_during_execution", "error_max_turns", "error_max_budget_usd", "error_max_structured_output_retries"].includes(String(raw.subtype))) {
348
+ this.failTransport("Claude result has an unsupported lifecycle schema");
349
+ return;
350
+ }
351
+ if (this.active.origin === "peer" && (!object(raw.origin) || !["peer", "unclassified"].includes(String(raw.origin.kind)))) {
352
+ this.failTransport("Claude did not preserve a non-human source for the peer turn");
353
+ return;
354
+ }
355
+ const turnId = this.active.id;
356
+ const terminal = raw.terminal_reason;
357
+ let status;
358
+ if (terminal === "aborted_streaming" || terminal === "aborted_tools")
359
+ status = "interrupted";
360
+ else if (raw.is_error === true || String(raw.subtype).startsWith("error"))
361
+ status = "failed";
362
+ else if (["stop_hook_prevented", "hook_stopped", "tool_deferred", "background_requested", "tool_deferred_unavailable"].includes(String(terminal)))
363
+ status = "idle";
364
+ else if (["blocking_limit", "rapid_refill_breaker", "prompt_too_long", "image_error", "model_error", "api_error", "malformed_tool_use_exhausted", "max_turns", "budget_exhausted", "structured_output_retry_exhausted", "turn_setup_failed"].includes(String(terminal)))
365
+ status = "failed";
366
+ else if (terminal === "completed")
367
+ status = "completed";
368
+ else if (terminal == null)
369
+ status = raw.num_turns === 0 ? "idle" : "completed"; // supported legacy SDK success results
370
+ else {
371
+ this.failTransport("Claude reported an unknown terminal reason; completion is unproven");
372
+ return;
373
+ }
374
+ if (this.interruption?.turnId === turnId) {
375
+ this.interruption.result = { status };
376
+ this.finishInterrupt();
377
+ return;
378
+ }
379
+ this.finishTurn(turnId, status);
380
+ this.drainHumanQueue();
381
+ }
382
+ controlResponse(frame) {
383
+ if (!object(frame.response) || !id(frame.response.request_id))
384
+ return;
385
+ const response = frame.response;
386
+ const initialization = this.initialization;
387
+ if (initialization && initialization.id === response.request_id) {
388
+ if (response.subtype === "success" && object(response.response)) {
389
+ this.initialized = true;
390
+ if (typeof response.response.claude_code_version === "string")
391
+ this.cliVersion = response.response.claude_code_version;
392
+ initialization.wait.resolve();
393
+ }
394
+ else
395
+ initialization.wait.reject(new SdkControlError("rejected", "Claude initialization was rejected"));
396
+ return;
397
+ }
398
+ const pending = this.interruption;
399
+ if (!pending || response.request_id !== pending.requestId)
400
+ return;
401
+ if (response.subtype === "error") {
402
+ this.interruption = null;
403
+ pending.wait.reject(new SdkControlError("rejected", "Claude rejected the interrupt request"));
404
+ if (pending.result)
405
+ this.finishTurn(pending.turnId, pending.result.status);
406
+ return;
407
+ }
408
+ const receipt = response.response;
409
+ if (response.subtype !== "success" || !object(receipt) || !strings(receipt.still_queued) || !(receipt.cancelled === undefined || strings(receipt.cancelled))) {
410
+ this.failTransport("Claude interrupt receipt does not prove queue cancellation");
411
+ return;
412
+ }
413
+ if (receipt.still_queued.length > 0) {
414
+ this.failTransport("Claude retained queued work after cancel_queued interrupt");
415
+ return;
416
+ }
417
+ pending.receipt = receipt;
418
+ this.finishInterrupt();
419
+ }
420
+ finishInterrupt() {
421
+ const pending = this.interruption;
422
+ if (!pending?.receipt || !pending.result)
423
+ return;
424
+ this.interruption = null;
425
+ this.finishTurn(pending.turnId, pending.result.status);
426
+ // A late exact receipt + aborted result resolves a simple interrupt's
427
+ // uncertainty. A timed-out replacement is never sent automatically.
428
+ if (pending.timedOut && !pending.replacing && !this.hardUncertain && pending.result.status === "interrupted") {
429
+ this.uncertain = false;
430
+ this.event({ method: "rudder/profile", params: { threadId: this.sessionId, qualified: this.snapshot().qualified, uncertain: false } });
431
+ }
432
+ if (pending.result.status === "interrupted")
433
+ pending.wait.resolve();
434
+ else
435
+ pending.wait.reject(new SdkControlError("rejected", `Intended turn ended as ${pending.result.status}, not interrupted`));
436
+ }
437
+ finishTurn(turnId, status) {
438
+ if (this.active?.id !== turnId || !this.sessionId)
439
+ return;
440
+ this.active = null;
441
+ this.permissions.clear();
442
+ this.lastInterrupted = status === "interrupted" ? turnId : null;
443
+ this.lastTurn = { id: turnId, status };
444
+ this.event({ method: "turn/completed", params: { threadId: this.sessionId, turn: { id: turnId, status } } });
445
+ }
446
+ drainHumanQueue() {
447
+ if (this.active || this.busy || this.closed || this.uncertain || this.lastInterrupted || !this.humanQueue.length)
448
+ return;
449
+ const next = this.humanQueue.shift();
450
+ void this.humanInput(next).catch((error) => this.notice(error.message));
451
+ }
452
+ permissionRequest(frame) {
453
+ if (!id(frame.request_id) || !object(frame.request))
454
+ return;
455
+ if (frame.request.subtype !== "can_use_tool" || this.permissions.size >= 16) {
456
+ this.write({ type: "control_response", response: { subtype: "error", request_id: frame.request_id, error: "This managed profile cannot answer this control request" } });
457
+ return;
458
+ }
459
+ this.permissions.set(frame.request_id, frame.request);
460
+ this.notice(`Permission needed: ${String(frame.request.tool_name).slice(0, 128)} ${JSON.stringify(frame.request.input ?? {}).slice(0, 2048)}\n/approve ${frame.request_id} or /deny ${frame.request_id}`);
461
+ }
462
+ answerPermission(requestId, allow) {
463
+ const pending = this.permissions.get(requestId);
464
+ if (!pending)
465
+ throw new SdkControlError("rejected", "Permission request is no longer pending");
466
+ this.permissions.delete(requestId);
467
+ this.write({ type: "control_response", response: { subtype: "success", request_id: requestId,
468
+ response: allow ? { behavior: "allow", updatedInput: pending.input } : { behavior: "deny", message: "Denied by the user" } } });
469
+ }
470
+ failTransport(reason) {
471
+ this.uncertain = true;
472
+ this.hardUncertain = true;
473
+ this.event({ method: "rudder/profile", params: { threadId: this.sessionId, qualified: false, uncertain: true } });
474
+ this.initialization?.wait.reject(new SdkControlError("uncertain", reason));
475
+ for (const input of this.inputs.values())
476
+ input.wait.reject(new SdkControlError("uncertain", reason));
477
+ this.inputs.clear();
478
+ this.interruption?.wait.reject(new SdkControlError("uncertain", reason));
479
+ this.notice(reason);
480
+ }
481
+ close() {
482
+ this.closed = true;
483
+ this.humanQueue = [];
484
+ this.permissions.clear();
485
+ if (this.inputs.size || this.interruption)
486
+ this.failTransport("Claude attempt closed; unresolved controls must not be replayed");
487
+ else
488
+ this.initialization?.wait.reject(new SdkControlError("rejected", "Claude session closed"));
489
+ }
490
+ }
491
+ //# sourceMappingURL=claude-sdk-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-sdk-protocol.js","sourceRoot":"","sources":["../src/claude-sdk-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export type ClaudeSdkLaunch = {
2
+ format_version: 1;
3
+ run_id: string;
4
+ attempt_id: string;
5
+ socket_path: string;
6
+ claude_program: string;
7
+ claude_args: string[];
8
+ initial_prompt: string | null;
9
+ };
10
+ export declare function readClaudeSdkLaunch(file: string): Promise<ClaudeSdkLaunch>;
11
+ export declare function claudeSdkArgv(original: string[]): string[];
12
+ /** Identity comes from the engine's explicit CLI selection, never peer text.
13
+ * A fork without an explicit new id waits for the backend's own init event. */
14
+ export declare function selectedClaudeSdkSession(args: string[]): string | null;
15
+ /** Complete JSON frames are bounded before parsing, even without newlines. */
16
+ export declare class SdkJsonLines {
17
+ private readonly frame;
18
+ private readonly failed;
19
+ private pending;
20
+ constructor(frame: (value: unknown) => void, failed: (error: Error) => void);
21
+ private broken;
22
+ push(chunk: Buffer): void;
23
+ end(): void;
24
+ private consume;
25
+ private fail;
26
+ }
27
+ /** Hidden CLI: rudder __claude-sdk --launch-file <private JSON>. */
28
+ export declare function runClaudeSdkBridge(args: string[]): Promise<void>;