@excitedjs/agent-runtime-claude-code 0.5.0-beta.168 → 0.5.0

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 (94) hide show
  1. package/README.md +43 -1
  2. package/dist/args.d.ts +2 -0
  3. package/dist/args.d.ts.map +1 -1
  4. package/dist/args.js +5 -0
  5. package/dist/args.js.map +1 -1
  6. package/dist/index.d.ts +2 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/provider.d.ts +5 -0
  10. package/dist/provider.d.ts.map +1 -1
  11. package/dist/provider.js +10 -4
  12. package/dist/provider.js.map +1 -1
  13. package/dist/rpc.d.ts +79 -6
  14. package/dist/rpc.d.ts.map +1 -1
  15. package/dist/rpc.js +329 -57
  16. package/dist/rpc.js.map +1 -1
  17. package/dist/runtime-deps.d.ts +30 -0
  18. package/dist/runtime-deps.d.ts.map +1 -0
  19. package/dist/runtime-deps.js +2 -0
  20. package/dist/runtime-deps.js.map +1 -0
  21. package/dist/runtime-session.d.ts +13 -0
  22. package/dist/runtime-session.d.ts.map +1 -0
  23. package/dist/runtime-session.js +41 -0
  24. package/dist/runtime-session.js.map +1 -0
  25. package/dist/runtime-submissions.d.ts +34 -0
  26. package/dist/runtime-submissions.d.ts.map +1 -0
  27. package/dist/runtime-submissions.js +200 -0
  28. package/dist/runtime-submissions.js.map +1 -0
  29. package/dist/runtime.d.ts +33 -131
  30. package/dist/runtime.d.ts.map +1 -1
  31. package/dist/runtime.js +286 -268
  32. package/dist/runtime.js.map +1 -1
  33. package/dist/skill-adapter.d.ts +11 -1
  34. package/dist/skill-adapter.d.ts.map +1 -1
  35. package/dist/skill-adapter.js +60 -7
  36. package/dist/skill-adapter.js.map +1 -1
  37. package/dist/skill-materializer.d.ts +6 -0
  38. package/dist/skill-materializer.d.ts.map +1 -0
  39. package/dist/skill-materializer.js +45 -0
  40. package/dist/skill-materializer.js.map +1 -0
  41. package/dist/source-reservation.d.ts +6 -0
  42. package/dist/source-reservation.d.ts.map +1 -0
  43. package/dist/source-reservation.js +48 -0
  44. package/dist/source-reservation.js.map +1 -0
  45. package/dist/stream.d.ts +3 -1
  46. package/dist/stream.d.ts.map +1 -1
  47. package/dist/stream.js +48 -1
  48. package/dist/stream.js.map +1 -1
  49. package/dist/supervisor.d.ts.map +1 -1
  50. package/dist/supervisor.js +68 -14
  51. package/dist/supervisor.js.map +1 -1
  52. package/dist/transcript/budget.d.ts +8 -0
  53. package/dist/transcript/budget.d.ts.map +1 -0
  54. package/dist/transcript/budget.js +9 -0
  55. package/dist/transcript/budget.js.map +1 -0
  56. package/dist/transcript/completion.d.ts +8 -0
  57. package/dist/transcript/completion.d.ts.map +1 -0
  58. package/dist/transcript/completion.js +57 -0
  59. package/dist/transcript/completion.js.map +1 -0
  60. package/dist/transcript/cursor.d.ts +25 -0
  61. package/dist/transcript/cursor.d.ts.map +1 -0
  62. package/dist/transcript/cursor.js +62 -0
  63. package/dist/transcript/cursor.js.map +1 -0
  64. package/dist/transcript/error.d.ts +9 -0
  65. package/dist/transcript/error.d.ts.map +1 -0
  66. package/dist/transcript/error.js +9 -0
  67. package/dist/transcript/error.js.map +1 -0
  68. package/dist/transcript/native-hash.d.ts +2 -0
  69. package/dist/transcript/native-hash.d.ts.map +1 -0
  70. package/dist/transcript/native-hash.js +79 -0
  71. package/dist/transcript/native-hash.js.map +1 -0
  72. package/dist/transcript/opened-file.d.ts +13 -0
  73. package/dist/transcript/opened-file.d.ts.map +1 -0
  74. package/dist/transcript/opened-file.js +110 -0
  75. package/dist/transcript/opened-file.js.map +1 -0
  76. package/dist/transcript/parallel-tools.d.ts +6 -0
  77. package/dist/transcript/parallel-tools.d.ts.map +1 -0
  78. package/dist/transcript/parallel-tools.js +123 -0
  79. package/dist/transcript/parallel-tools.js.map +1 -0
  80. package/dist/transcript/path.d.ts +25 -0
  81. package/dist/transcript/path.d.ts.map +1 -0
  82. package/dist/transcript/path.js +253 -0
  83. package/dist/transcript/path.js.map +1 -0
  84. package/dist/transcript/reader.d.ts +7 -0
  85. package/dist/transcript/reader.d.ts.map +1 -0
  86. package/dist/transcript/reader.js +476 -0
  87. package/dist/transcript/reader.js.map +1 -0
  88. package/dist/transcript/rewrites.d.ts +5 -0
  89. package/dist/transcript/rewrites.d.ts.map +1 -0
  90. package/dist/transcript/rewrites.js +65 -0
  91. package/dist/transcript/rewrites.js.map +1 -0
  92. package/dist/types.d.ts +33 -3
  93. package/dist/types.d.ts.map +1 -1
  94. package/package.json +4 -3
package/dist/rpc.js CHANGED
@@ -1,22 +1,58 @@
1
1
  /**
2
2
  * Claude Code stream-json turn RPC.
3
3
  *
4
- * The supervisor owns the child process. This class owns one in-flight turn,
5
- * stdout line demux, turn aggregation, and defensive control-request replies.
4
+ * The supervisor owns the child process. This class owns one in-flight command
5
+ * group, stdout line demux, command drainage, and defensive control replies.
6
+ *
7
+ * One resident CLI execution window can span several submitted commands: a
8
+ * live steer is written while the CLI is already running. How the CLI answers them is
9
+ * not fixed, which is what makes settlement subtle (probed against a live
10
+ * 2.1.231 resident session):
11
+ *
12
+ * - **Commands fold.** A message that arrives while the in-flight turn is
13
+ * inside a tool call is absorbed into that turn at the next query-loop
14
+ * boundary. Several commands then share ONE `result` (3 → 1 observed), and
15
+ * a folded command's uuid never appears on any `result`. Folding does not
16
+ * depend on `priority`.
17
+ * - **Or they do not.** A command that arrives between turns runs on its own
18
+ * and gets its own `result`.
19
+ * - **`result.user_message_uuid` is not a completion ledger.** It is present
20
+ * only sometimes, is not reliably the first-submitted uuid of a fold, and
21
+ * is absent entirely on the `error_during_execution` artifact a
22
+ * `priority: 'now'` interrupt produces.
23
+ * - **`command_lifecycle` is the attribution signal.** Started commands identify
24
+ * the submissions represented by the next native `result`; terminal states
25
+ * drain the resident execution window. Its ordering against `result` is not
26
+ * stable.
27
+ *
28
+ * Every valid `result` is forwarded immediately as its own native completion
29
+ * boundary. Lifecycle terminality only decides when the command group has
30
+ * drained and the resident session may accept a new initial command; it never
31
+ * aggregates several results into one completion.
6
32
  */
7
33
  import { randomUUID } from 'node:crypto';
8
34
  import { buildCanUseToolAllow, buildControlAck, buildRemoteControlEnable, buildUserMessage, LineBuffer, parseLine, TurnAggregator, } from './stream.js';
35
+ /** Provider-private admission classification; never crosses the neutral API. */
36
+ export class ClaudeSteerAdmissionError extends Error {
37
+ admission;
38
+ constructor(admission, message, options) {
39
+ super(message, options);
40
+ this.admission = admission;
41
+ this.name = 'ClaudeSteerAdmissionError';
42
+ }
43
+ }
9
44
  export class ClaudeCodeStreamRpc {
10
45
  stdin;
11
46
  options;
12
47
  lineBuf = new LineBuffer();
13
48
  pending = null;
49
+ lifecycleSupported = null;
14
50
  remoteControlRequestId = null;
15
51
  constructor(stdin, options) {
16
52
  this.stdin = stdin;
17
53
  this.options = options;
18
54
  }
19
- async submitTurn(prompt, options = {}) {
55
+ async submitTurn(prompt, options = {}, commandUuid = randomUUID()) {
20
56
  if (!this.stdin.writable) {
21
57
  return Promise.reject(new Error('claude resident child is not running'));
22
58
  }
@@ -29,37 +65,85 @@ export class ClaudeCodeStreamRpc {
29
65
  reject,
30
66
  aggregator: new TurnAggregator(),
31
67
  timer: null,
32
- settleImmediate: null,
33
- steered: false,
34
- deferredOutcome: null,
68
+ submitted: [commandUuid],
69
+ terminal: new Set(),
70
+ startedSinceResult: new Set(),
71
+ ranAnyCommand: false,
72
+ sawResult: false,
73
+ lastAbnormalReason: null,
74
+ capabilityWaiters: [],
75
+ writeWaiters: new Map(),
35
76
  };
36
77
  this.pending = pending;
37
78
  // Arm the idle deadline (reset on every inbound stream line in `onLine`).
38
79
  this.armIdleTimer(pending);
39
- this.stdin.write(`${buildUserMessage(prompt, options)}\n`, (err) => {
40
- if (err != null && this.pending === pending) {
41
- this.settlePending()?.reject(err instanceof Error ? err : new Error(String(err)));
80
+ try {
81
+ this.stdin.write(`${buildUserMessage(prompt, options, commandUuid)}\n`, (err) => {
82
+ if (err != null && this.pending === pending) {
83
+ const error = asError(err);
84
+ this.settlePending(error)?.reject(error);
85
+ }
86
+ });
87
+ }
88
+ catch (error) {
89
+ if (this.pending === pending) {
90
+ const failure = asError(error);
91
+ this.settlePending(failure)?.reject(failure);
42
92
  }
43
- });
93
+ }
44
94
  });
45
95
  }
46
- async steerTurn(prompt, options = {}) {
96
+ async steerTurn(prompt, options = {}, commandUuid = randomUUID()) {
47
97
  if (!this.stdin.writable) {
48
- return Promise.reject(new Error('claude resident child is not running'));
98
+ return Promise.reject(preAdmissionError('claude resident child is not running'));
49
99
  }
50
100
  if (this.pending === null) {
51
- return Promise.reject(new Error('claude resident session has no active turn'));
101
+ return Promise.reject(preAdmissionError('claude resident session has no active turn'));
52
102
  }
53
103
  const pending = this.pending;
54
- pending.steered = true;
55
- return new Promise((resolve, reject) => {
56
- this.stdin.write(`${buildUserMessage(prompt, { priority: 'now', ...options })}\n`, (err) => {
57
- if (err != null) {
58
- reject(err instanceof Error ? err : new Error(String(err)));
59
- return;
60
- }
61
- resolve();
104
+ if (this.lifecycleSupported === false) {
105
+ return Promise.reject(lifecycleUnsupportedError());
106
+ }
107
+ if (this.lifecycleSupported === null) {
108
+ return new Promise((resolve, reject) => {
109
+ pending.capabilityWaiters.push({ prompt, options, commandUuid, resolve, reject });
62
110
  });
111
+ }
112
+ return this.writeSteer(pending, prompt, options, commandUuid);
113
+ }
114
+ writeSteer(pending, prompt, options, commandUuid = randomUUID()) {
115
+ if (this.pending !== pending) {
116
+ return Promise.reject(capabilityUndecidedTurnEndedError());
117
+ }
118
+ if (!this.stdin.writable) {
119
+ return Promise.reject(preAdmissionError('claude resident child is not running'));
120
+ }
121
+ // The steer joins this resident execution window: from here on it cannot drain
122
+ // until this command has also reached a terminal lifecycle state.
123
+ pending.submitted.push(commandUuid);
124
+ return new Promise((resolve, reject) => {
125
+ pending.writeWaiters.set(commandUuid, { resolve, reject });
126
+ const fail = (error) => {
127
+ // A steer whose write failed will never reach the CLI, so no
128
+ // `command_lifecycle` is coming for it: mark it terminal here or the
129
+ // turn waits on a signal that cannot arrive. Reject the waiter first,
130
+ // since marking may settle the turn and settlement rejects surviving
131
+ // waiters with the generic write-unconfirmed message.
132
+ this.rejectWriteWaiter(pending, commandUuid, ambiguousWriteError(error));
133
+ this.markCommandTerminal(pending, commandUuid, 'steer write failed');
134
+ };
135
+ try {
136
+ this.stdin.write(`${buildUserMessage(prompt, { priority: 'now', ...options }, commandUuid)}\n`, (err) => {
137
+ if (err != null) {
138
+ fail(err);
139
+ return;
140
+ }
141
+ this.resolveWriteWaiter(pending, commandUuid);
142
+ });
143
+ }
144
+ catch (error) {
145
+ fail(error);
146
+ }
63
147
  });
64
148
  }
65
149
  onStdoutChunk(chunk) {
@@ -67,7 +151,7 @@ export class ClaudeCodeStreamRpc {
67
151
  this.onLine(parseLine(line));
68
152
  }
69
153
  failPending(err) {
70
- this.settlePending()?.reject(err);
154
+ this.settlePending(err)?.reject(err);
71
155
  }
72
156
  enableRemoteControl() {
73
157
  if (!this.stdin.writable)
@@ -79,17 +163,94 @@ export class ClaudeCodeStreamRpc {
79
163
  * Detach the in-flight turn: clear its deadline timer and null `pending`,
80
164
  * returning it so the caller can resolve or reject it exactly once.
81
165
  */
82
- settlePending() {
166
+ settlePending(failure) {
83
167
  const pending = this.pending;
84
168
  if (pending === null)
85
169
  return null;
86
170
  if (pending.timer !== null)
87
171
  clearTimeout(pending.timer);
88
- if (pending.settleImmediate !== null)
89
- clearImmediate(pending.settleImmediate);
90
172
  this.pending = null;
173
+ // On an explicit failure (write error, stop, idle reap) both waiter kinds
174
+ // get the real error. On a clean `result` settlement there is no error:
175
+ // capability waiters never got a decision, while write waiters were written
176
+ // but unconfirmed — distinct messages for distinct conditions.
177
+ this.rejectCapabilityWaiters(pending, failure ?? capabilityUndecidedTurnEndedError());
178
+ this.rejectWriteWaiters(pending, failure ?? steerWriteUnconfirmedError());
91
179
  return pending;
92
180
  }
181
+ /**
182
+ * Mark a submitted command as producing nothing further, then re-check
183
+ * settlement. `abnormalReason` is `null` for the normal ending (`completed`)
184
+ * and a short phrase for a command that never ran — those are logged,
185
+ * because the CLI gives no other trace of a command it declined.
186
+ *
187
+ * A command ending abnormally never fails the turn by itself: the probe
188
+ * shows a `cancelled` command coexisting with another that answers normally
189
+ * (that is exactly what a `priority: 'now'` interrupt looks like), so
190
+ * rejecting on `cancelled` — as the pre-#342 code did — is wrong.
191
+ */
192
+ markCommandTerminal(pending, commandUuid, abnormalReason) {
193
+ if (!pending.submitted.includes(commandUuid))
194
+ return;
195
+ if (!pending.terminal.has(commandUuid)) {
196
+ pending.terminal.add(commandUuid);
197
+ if (abnormalReason === null) {
198
+ pending.ranAnyCommand = true;
199
+ }
200
+ else {
201
+ pending.lastAbnormalReason = abnormalReason;
202
+ this.options.log?.('warn', `claude command ${commandUuid} ${abnormalReason}; it will not ` +
203
+ 'produce further output for this turn');
204
+ }
205
+ }
206
+ this.settleIfReady(pending);
207
+ }
208
+ /**
209
+ * The drainage gate: every submitted command has reached a terminal
210
+ * lifecycle state AND at least one valid `result` has been seen. Result
211
+ * identity and settlement have already been forwarded one-by-one.
212
+ *
213
+ * Two escapes, both anti-hang:
214
+ *
215
+ * - no lifecycle signal at all (`msg_lifecycle_v1` absent, so no
216
+ * `command_lifecycle` will ever arrive) — the `result` is then the only
217
+ * terminal event there is, so settle on it;
218
+ * - every command terminal, none of them ever ran, and no result — nothing
219
+ * can answer this turn, so fail it loudly. The idle deadline is not an
220
+ * acceptable backstop here: it reaps the resident child, and any inbound
221
+ * line re-arms it, so a healthy session could be killed long after the
222
+ * turn became unanswerable.
223
+ *
224
+ * When a command *did* run but no result has arrived yet, this waits: the
225
+ * probe shows terminal lifecycle states arriving both before and after the
226
+ * result they belong to, so "terminal, therefore no result is coming" is not
227
+ * a sound inference.
228
+ */
229
+ settleIfReady(pending) {
230
+ if (this.pending !== pending)
231
+ return;
232
+ if (pending.sawResult && this.lifecycleSupported !== true) {
233
+ this.settlePending()?.resolve();
234
+ return;
235
+ }
236
+ if (pending.startedSinceResult.size > 0)
237
+ return;
238
+ for (const commandUuid of pending.submitted) {
239
+ if (!pending.terminal.has(commandUuid))
240
+ return;
241
+ }
242
+ if (pending.sawResult) {
243
+ this.settlePending()?.resolve();
244
+ return;
245
+ }
246
+ if (pending.ranAnyCommand)
247
+ return;
248
+ const error = new Error('claude turn ended without running any of its commands ' +
249
+ `(last: ${pending.lastAbnormalReason ?? 'no command reached the CLI'})`);
250
+ // Pass the cause into `settlePending` so surviving steer waiters get the
251
+ // real reason instead of the generic write-unconfirmed message.
252
+ this.settlePending(error)?.reject(error);
253
+ }
93
254
  /**
94
255
  * (Re)arm the per-turn idle deadline. `turnTimeoutMs` is a *max-idle* window,
95
256
  * not a total-turn cap: any inbound stream line for this turn pushes it out
@@ -103,9 +264,12 @@ export class ClaudeCodeStreamRpc {
103
264
  pending.timer = setTimeout(() => {
104
265
  if (this.pending !== pending)
105
266
  return;
106
- this.pending = null;
267
+ const error = new Error(`claude resident turn stalled: no stream activity for ${this.options.turnTimeoutMs}ms`);
268
+ const stalled = this.settlePending(error);
269
+ if (stalled === null)
270
+ return;
107
271
  this.options.log?.('error', `claude turn stalled: no stream activity for ${this.options.turnTimeoutMs}ms; reaping resident child`);
108
- pending.reject(new Error(`claude resident turn stalled: no stream activity for ${this.options.turnTimeoutMs}ms`));
272
+ stalled.reject(error);
109
273
  this.options.reapOnTimeout();
110
274
  }, this.options.turnTimeoutMs);
111
275
  }
@@ -117,25 +281,82 @@ export class ClaudeCodeStreamRpc {
117
281
  this.armIdleTimer(this.pending);
118
282
  switch (line.kind) {
119
283
  case 'init':
284
+ this.decideLifecycleSupport(line.capabilities.includes('msg_lifecycle_v1'));
285
+ this.pending?.aggregator.accept(line);
286
+ break;
120
287
  case 'assistant':
121
288
  this.pending?.aggregator.accept(line);
289
+ this.options.onProtocolEvent?.({ kind: 'stream', line });
122
290
  break;
291
+ case 'command_lifecycle': {
292
+ const pending = this.pending;
293
+ if (pending === null || line.commandUuid === null)
294
+ break;
295
+ if (line.state !== null) {
296
+ this.options.onProtocolEvent?.({
297
+ kind: 'command_lifecycle',
298
+ commandUuid: line.commandUuid,
299
+ state: line.state,
300
+ });
301
+ }
302
+ if (line.state === 'started')
303
+ pending.startedSinceResult.add(line.commandUuid);
304
+ // `command_lifecycle` does double duty: it coordinates live-steer
305
+ // admission (writeWaiters) and proves lifecycle capability, and its
306
+ // terminal states are the drainage gate when the CLI represents several
307
+ // started commands with one `result`.
308
+ const newlySupported = this.lifecycleSupported === null;
309
+ if (newlySupported)
310
+ this.lifecycleSupported = true;
311
+ this.resolveWriteWaiter(pending, line.commandUuid);
312
+ if (newlySupported && this.pending === pending) {
313
+ this.flushCapabilityWaiters(pending);
314
+ }
315
+ if (this.pending !== pending)
316
+ break;
317
+ if (line.state === 'completed') {
318
+ this.markCommandTerminal(pending, line.commandUuid, null);
319
+ }
320
+ else if (line.state === 'cancelled' || line.state === 'discarded' || line.state === 'refused') {
321
+ pending.startedSinceResult.delete(line.commandUuid);
322
+ this.markCommandTerminal(pending, line.commandUuid, `was ${line.state} by claude`);
323
+ }
324
+ break;
325
+ }
123
326
  case 'result': {
124
- if (this.pending === null)
327
+ const pending = this.pending;
328
+ if (pending === null) {
329
+ const error = new Error('claude result envelope arrived without an attributable command group');
330
+ this.options.log?.('error', error.message, error);
331
+ this.options.reapOnTimeout();
125
332
  break;
126
- this.pending.aggregator.accept(line);
127
- const outcome = this.pending.aggregator.outcome();
128
- if (this.pending.steered) {
129
- this.deferSteeredResult(this.pending, outcome);
333
+ }
334
+ const commandUuid = line.outcome.userMessageUuid;
335
+ if (commandUuid !== null && !pending.submitted.includes(commandUuid)) {
336
+ const error = new Error(`claude result envelope for unsubmitted command ${commandUuid}; ` +
337
+ 'native completion ownership is ambiguous');
338
+ this.options.log?.('error', error.message, error);
339
+ this.settlePending(error)?.reject(error);
340
+ this.options.reapOnTimeout();
130
341
  break;
131
342
  }
132
- const pending = this.settlePending();
133
- if (pending === null)
343
+ // The interrupt artifact (`error_during_execution` with no result) is
344
+ // not a native answer boundary. Older valid results may omit the uuid.
345
+ if (line.outcome.subtype === 'error_during_execution' &&
346
+ line.outcome.userMessageUuid === null &&
347
+ line.outcome.text === null) {
348
+ this.options.log?.('warn', 'claude interrupt result artifact ignored');
134
349
  break;
135
- if (outcome !== null)
136
- pending.resolve(outcome);
137
- else
138
- pending.reject(new Error('claude turn ended without a result'));
350
+ }
351
+ pending.aggregator.accept(line);
352
+ const outcome = pending.aggregator.takeOutcome();
353
+ pending.startedSinceResult.clear();
354
+ pending.sawResult = true;
355
+ this.options.onProtocolEvent?.({
356
+ kind: 'result',
357
+ outcome,
358
+ });
359
+ this.settleIfReady(pending);
139
360
  break;
140
361
  }
141
362
  case 'control_request':
@@ -148,29 +369,60 @@ export class ClaudeCodeStreamRpc {
148
369
  this.options.log?.('warn', `claude stream-json parse error: ${line.raw}`);
149
370
  break;
150
371
  default:
372
+ this.options.onProtocolEvent?.({ kind: 'stream', line });
151
373
  break;
152
374
  }
153
375
  }
154
- deferSteeredResult(pending, outcome) {
155
- pending.deferredOutcome = outcome;
156
- if (pending.settleImmediate !== null)
376
+ decideLifecycleSupport(supported) {
377
+ if (this.lifecycleSupported !== null)
157
378
  return;
158
- // A stream-json `priority` steer can cause Claude Code to close the
159
- // interrupted run and immediately drain the queued steer in the same stdout
160
- // flush. Resolve on the next tick so those follow-up lines are still folded
161
- // into this one Dreamux logical turn instead of becoming a silent late result.
162
- pending.settleImmediate = setImmediate(() => {
163
- if (this.pending !== pending)
164
- return;
165
- const finalOutcome = pending.deferredOutcome;
166
- const settled = this.settlePending();
167
- if (settled === null)
168
- return;
169
- if (finalOutcome !== null)
170
- settled.resolve(finalOutcome);
171
- else
172
- settled.reject(new Error('claude turn ended without a result'));
173
- });
379
+ this.lifecycleSupported = supported;
380
+ const pending = this.pending;
381
+ if (pending === null)
382
+ return;
383
+ if (supported) {
384
+ this.flushCapabilityWaiters(pending);
385
+ return;
386
+ }
387
+ this.rejectCapabilityWaiters(pending, lifecycleUnsupportedError());
388
+ }
389
+ flushCapabilityWaiters(pending) {
390
+ const waiters = pending.capabilityWaiters.splice(0);
391
+ for (const waiter of waiters) {
392
+ void this.writeSteer(pending, waiter.prompt, waiter.options, waiter.commandUuid).then(waiter.resolve, waiter.reject);
393
+ }
394
+ }
395
+ rejectCapabilityWaiters(pending, error) {
396
+ const waiters = pending.capabilityWaiters.splice(0);
397
+ const failure = error instanceof ClaudeSteerAdmissionError
398
+ ? error
399
+ : preAdmissionError(error.message, error);
400
+ for (const waiter of waiters)
401
+ waiter.reject(failure);
402
+ }
403
+ resolveWriteWaiter(pending, commandUuid) {
404
+ const waiter = pending.writeWaiters.get(commandUuid);
405
+ if (waiter === undefined)
406
+ return;
407
+ pending.writeWaiters.delete(commandUuid);
408
+ waiter.resolve();
409
+ }
410
+ rejectWriteWaiter(pending, commandUuid, error) {
411
+ const waiter = pending.writeWaiters.get(commandUuid);
412
+ if (waiter === undefined)
413
+ return;
414
+ pending.writeWaiters.delete(commandUuid);
415
+ waiter.reject(error);
416
+ }
417
+ rejectWriteWaiters(pending, error) {
418
+ const failure = error instanceof ClaudeSteerAdmissionError &&
419
+ error.admission === 'ambiguous'
420
+ ? error
421
+ : ambiguousWriteError(error);
422
+ const waiters = [...pending.writeWaiters.values()];
423
+ pending.writeWaiters.clear();
424
+ for (const waiter of waiters)
425
+ waiter.reject(failure);
174
426
  }
175
427
  onControlRequest(requestId, subtype, request) {
176
428
  if (requestId === null || !this.stdin.writable)
@@ -209,4 +461,24 @@ export class ClaudeCodeStreamRpc {
209
461
  this.options.log?.('warn', `claude remote control enable failed${error !== null ? `: ${error}` : ''}`);
210
462
  }
211
463
  }
464
+ function lifecycleUnsupportedError() {
465
+ return preAdmissionError('claude resident session cannot prove live-steer lifecycle: ' +
466
+ 'msg_lifecycle_v1 is unavailable');
467
+ }
468
+ function capabilityUndecidedTurnEndedError() {
469
+ return preAdmissionError('claude resident turn ended before live-steer capability was decided');
470
+ }
471
+ function steerWriteUnconfirmedError() {
472
+ return new ClaudeSteerAdmissionError('ambiguous', 'claude resident turn ended before the steer write was confirmed');
473
+ }
474
+ function preAdmissionError(message, cause) {
475
+ return new ClaudeSteerAdmissionError('failed', message, cause === undefined ? undefined : { cause });
476
+ }
477
+ function ambiguousWriteError(error) {
478
+ const cause = asError(error);
479
+ return new ClaudeSteerAdmissionError('ambiguous', cause.message, { cause });
480
+ }
481
+ function asError(error) {
482
+ return error instanceof Error ? error : new Error(String(error));
483
+ }
212
484
  //# sourceMappingURL=rpc.js.map
package/dist/rpc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { AgentRuntimeMcpServer, AgentRuntimePathContext, AgentRuntimeSkillSource, AgentRuntimeStateCallbacks, DreamuxLogger, RuntimeActivitySink } from '@excitedjs/dreamux-types';
2
+ import type { DispatcherClaudeCodeConfig } from './config.js';
3
+ import type { ClaudeCodeSessionFactory } from './supervisor.js';
4
+ /** Neutral host capabilities required by one resident Claude Code runtime. */
5
+ export interface ClaudeCodeRuntimeDeps {
6
+ config: DispatcherClaudeCodeConfig;
7
+ cwd: string;
8
+ state: AgentRuntimeStateCallbacks;
9
+ paths: AgentRuntimePathContext;
10
+ mcpServers: readonly AgentRuntimeMcpServer[];
11
+ sessionFactory: ClaudeCodeSessionFactory;
12
+ resolveBinPath: (bin: string) => string;
13
+ injectEnv?: Record<string, string>;
14
+ systemPromptAppend?: readonly string[];
15
+ skillSources?: readonly AgentRuntimeSkillSource[];
16
+ disableFeatures?: readonly string[];
17
+ outputSchema?: Record<string, unknown>;
18
+ generateSessionId?: () => string;
19
+ resolveTranscriptPath?: (input: {
20
+ sessionId: string;
21
+ cwd: string;
22
+ locator: string | null;
23
+ env: NodeJS.ProcessEnv;
24
+ resume: boolean;
25
+ }) => Promise<string>;
26
+ sourceIdDedupeWindow?: number;
27
+ logger?: DreamuxLogger;
28
+ activitySink: RuntimeActivitySink;
29
+ }
30
+ //# sourceMappingURL=runtime-deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-deps.d.ts","sourceRoot":"","sources":["../src/runtime-deps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,0BAA0B,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,0BAA0B,CAAC;IAClC,KAAK,EAAE,uBAAuB,CAAC;IAC/B,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC7C,cAAc,EAAE,wBAAwB,CAAC;IACzC,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAClD,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;IACjC,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC;KACjB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,YAAY,EAAE,mBAAmB,CAAC;CACnC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runtime-deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-deps.js","sourceRoot":"","sources":["../src/runtime-deps.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { TurnOutcome } from './supervisor.js';
2
+ export interface ResolveRuntimeTranscriptPathInput {
3
+ sessionId: string;
4
+ cwd: string;
5
+ locator: string | null;
6
+ env: NodeJS.ProcessEnv;
7
+ resume: boolean;
8
+ override?: (input: Omit<ResolveRuntimeTranscriptPathInput, 'override'>) => Promise<string>;
9
+ }
10
+ export declare function buildClaudeProcessEnv(injectEnv: Record<string, string> | undefined, extraEnv: Record<string, string>): NodeJS.ProcessEnv;
11
+ export declare function resolveRuntimeTranscriptPath(input: ResolveRuntimeTranscriptPathInput): Promise<string>;
12
+ export declare function resultTextFromTurnOutcome(outcome: TurnOutcome, expectedSessionId: string | null, requiresStructuredOutput: boolean): string | null;
13
+ //# sourceMappingURL=runtime-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-session.d.ts","sourceRoot":"","sources":["../src/runtime-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAMnD,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CACT,KAAK,EAAE,IAAI,CAAC,iCAAiC,EAAE,UAAU,CAAC,KACvD,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC7C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAAC,UAAU,CAMnB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,WAAW,EACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,wBAAwB,EAAE,OAAO,GAChC,MAAM,GAAG,IAAI,CA0Bf"}
@@ -0,0 +1,41 @@
1
+ import { deriveClaudeTranscriptPath, locateClaudeTranscript, } from './transcript/path.js';
2
+ export function buildClaudeProcessEnv(injectEnv, extraEnv) {
3
+ return {
4
+ ...globalThis.process.env,
5
+ ...(injectEnv ?? {}),
6
+ ...extraEnv,
7
+ };
8
+ }
9
+ export function resolveRuntimeTranscriptPath(input) {
10
+ const { override, ...pathInput } = input;
11
+ if (override !== undefined)
12
+ return override(pathInput);
13
+ return input.resume
14
+ ? locateClaudeTranscript({
15
+ sessionId: input.sessionId,
16
+ cwd: input.cwd,
17
+ locator: input.locator,
18
+ env: input.env,
19
+ }).then((located) => located.path)
20
+ : deriveClaudeTranscriptPath(input.sessionId, input.cwd, input.env);
21
+ }
22
+ export function resultTextFromTurnOutcome(outcome, expectedSessionId, requiresStructuredOutput) {
23
+ if (outcome.sessionId !== null &&
24
+ outcome.sessionId !== '' &&
25
+ outcome.sessionId !== expectedSessionId) {
26
+ throw new Error('claude-code returned a session id that differs from the pinned native session');
27
+ }
28
+ const resultText = outcome.isError || outcome.text === '' ? null : outcome.text;
29
+ if (outcome.isError) {
30
+ const detail = outcome.errors.length > 0
31
+ ? outcome.errors.join('; ')
32
+ : (outcome.subtype ?? 'unknown error');
33
+ throw new Error(`claude turn returned an error result: ${detail}`);
34
+ }
35
+ if (requiresStructuredOutput && !outcome.hasStructuredOutput) {
36
+ throw new Error('claude turn did not return structured_output for a ' +
37
+ '--json-schema session');
38
+ }
39
+ return resultText;
40
+ }
41
+ //# sourceMappingURL=runtime-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-session.js","sourceRoot":"","sources":["../src/runtime-session.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAa9B,MAAM,UAAU,qBAAqB,CACnC,SAA6C,EAC7C,QAAgC;IAEhC,OAAO;QACL,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG;QACzB,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;QACpB,GAAG,QAAQ;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAwC;IAExC,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IACzC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,MAAM;QACjB,CAAC,CAAC,sBAAsB,CAAC;YACrB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,0BAA0B,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAAoB,EACpB,iBAAgC,EAChC,wBAAiC;IAEjC,IACE,OAAO,CAAC,SAAS,KAAK,IAAI;QAC1B,OAAO,CAAC,SAAS,KAAK,EAAE;QACxB,OAAO,CAAC,SAAS,KAAK,iBAAiB,EACvC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GACd,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,wBAAwB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,qDAAqD;YACnD,uBAAuB,CAC1B,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}