@excitedjs/agent-runtime-claude-code 0.5.0-beta.167 → 1.0.0-beta.169

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 +41 -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 +9 -4
  12. package/dist/provider.js.map +1 -1
  13. package/dist/rpc.d.ts +14 -1
  14. package/dist/rpc.d.ts.map +1 -1
  15. package/dist/rpc.js +194 -53
  16. package/dist/rpc.js.map +1 -1
  17. package/dist/runtime-deps.d.ts +29 -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-turn.d.ts +7 -0
  26. package/dist/runtime-turn.d.ts.map +1 -0
  27. package/dist/runtime-turn.js +21 -0
  28. package/dist/runtime-turn.js.map +1 -0
  29. package/dist/runtime.d.ts +30 -131
  30. package/dist/runtime.d.ts.map +1 -1
  31. package/dist/runtime.js +258 -225
  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 +1 -1
  46. package/dist/stream.d.ts.map +1 -1
  47. package/dist/stream.js +21 -1
  48. package/dist/stream.js.map +1 -1
  49. package/dist/supervisor.d.ts.map +1 -1
  50. package/dist/supervisor.js +63 -10
  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 +44 -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 +7 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/package.json +3 -3
@@ -0,0 +1,476 @@
1
+ import { budgetTranscriptTurns, isTranscriptTurnCount, readTranscriptBytesAt, renderTranscriptValue, } from '@excitedjs/dreamux-utils';
2
+ import { hasAssistantWithoutHumanBoundary, hasCompletionEvidence, hasOpenTail, isHumanPrompt, } from './completion.js';
3
+ import { claudeQueryFingerprint, decodeClaudeCursor, digest, encodeClaudeCursor, } from './cursor.js';
4
+ import { ClaudeTranscriptError } from './error.js';
5
+ import { openClaudeTranscript, validateClaudeSessionEvidence, } from './opened-file.js';
6
+ import { recoverParallelToolBranches } from './parallel-tools.js';
7
+ import { locateClaudeTranscript, } from './path.js';
8
+ import { applyNativeRewrites } from './rewrites.js';
9
+ const MAX_DECODED_BYTES = 8_388_608;
10
+ const MAX_NATIVE_RECORDS = 20_000;
11
+ const MAX_ELAPSED_MS = 2_000;
12
+ export async function readClaudeTranscript(query, context, testHooks = {}) {
13
+ if (!isTranscriptTurnCount(query.turns)) {
14
+ throw new ClaudeTranscriptError('invalid', 'Claude Code transcript query turns must be an integer in 1..50');
15
+ }
16
+ const checkpoint = context.checkpoint;
17
+ if (checkpoint === null) {
18
+ throw new ClaudeTranscriptError('checkpoint_missing', 'Claude Code transcript is unavailable before a session is established');
19
+ }
20
+ const includeTools = query.includeTools ?? true;
21
+ const env = effectiveEnvironment(context);
22
+ const located = await locateClaudeTranscript({
23
+ sessionId: checkpoint.id,
24
+ cwd: context.cwd,
25
+ locator: checkpoint.transcript_locator,
26
+ env,
27
+ });
28
+ await testHooks.afterLocate?.();
29
+ const opened = await openClaudeTranscript(located.path, located.root);
30
+ if (opened.dev !== located.dev || opened.ino !== located.ino) {
31
+ await opened.handle.close();
32
+ throw new ClaudeTranscriptError('unreadable', 'Claude Code transcript changed after validation');
33
+ }
34
+ try {
35
+ await validateClaudeSessionEvidence(opened, checkpoint.id, {
36
+ ...(testHooks.maxReadChunkBytes !== undefined
37
+ ? { maxReadChunkBytes: testHooks.maxReadChunkBytes }
38
+ : {}),
39
+ });
40
+ const fingerprint = claudeQueryFingerprint(includeTools);
41
+ const cursor = query.cursor === undefined
42
+ ? null
43
+ : decodeClaudeCursor(query.cursor, fingerprint);
44
+ const endOffset = Math.min(cursor?.pos ?? opened.size, opened.size);
45
+ const rewriteEvidence = await verifyRewriteEvidence(opened, cursor, testHooks.maxReadChunkBytes);
46
+ if (cursor !== null) {
47
+ await verifyCursorBoundaryDigest(opened, cursor.pos, cursor.bd, testHooks.maxReadChunkBytes);
48
+ }
49
+ const window = await readWindow(opened, endOffset, testHooks.maxReadChunkBytes);
50
+ const parsed = parseEntries(window.bytes, window.startOffset, checkpoint.id);
51
+ const logical = applyNativeRewrites(parsed.entries);
52
+ const chain = recoverParallelToolBranches(logical, buildSelectedChain(logical));
53
+ const nativeTurns = groupTurns(chain, includeTools);
54
+ const candidates = nativeTurns.slice(-query.turns).reverse();
55
+ const openTailOnly = cursor === null &&
56
+ candidates.length === 0 &&
57
+ (!hasCompletionEvidence(chain) || hasOpenTail(chain));
58
+ if (candidates.length === 0 &&
59
+ !openTailOnly &&
60
+ parsed.boundReached &&
61
+ hasCompletionEvidence(chain) &&
62
+ hasAssistantWithoutHumanBoundary(chain)) {
63
+ throw new ClaudeTranscriptError('scan_unsupported', 'Claude Code completed turn exceeds the bounded scan limit');
64
+ }
65
+ const budgeted = budgetTranscriptTurns(candidates.map((candidate) => candidate.turn), context.outputBudgetBytes);
66
+ const consumed = candidates.slice(0, budgeted.consumed);
67
+ const hasOlder = !openTailOnly &&
68
+ (consumed.at(-1)?.start ?? endOffset) > 0 &&
69
+ (nativeTurns.length > consumed.length || parsed.boundReached);
70
+ const boundary = consumed.at(-1) ??
71
+ (hasOlder && candidates.length === 0 ? parsed.oldestProcessed : null);
72
+ if (boundary !== null &&
73
+ cursor !== null &&
74
+ boundary.start >= cursor.pos) {
75
+ throw new ClaudeTranscriptError('scan_unsupported', 'Claude Code transcript pagination cannot make safe progress');
76
+ }
77
+ const nextCursor = boundary !== null && hasOlder
78
+ ? encodeClaudeCursor({
79
+ fingerprint,
80
+ generation: rewriteGeneration(rewriteEvidence),
81
+ position: boundary.start,
82
+ boundaryDigest: 'boundaryDigest' in boundary
83
+ ? boundary.boundaryDigest
84
+ : digest(boundary.boundaryBytes),
85
+ rewriteWatermark: rewriteEvidence.watermark,
86
+ rewritePosition: rewriteEvidence.position,
87
+ rewriteDigest: rewriteEvidence.digest,
88
+ })
89
+ : null;
90
+ return {
91
+ turns: [...budgeted.turnsNewestFirst].reverse(),
92
+ nextCursor,
93
+ truncated: budgeted.truncated,
94
+ };
95
+ }
96
+ finally {
97
+ await opened.handle.close();
98
+ }
99
+ }
100
+ async function readWindow(opened, endOffset, maxReadChunkBytes) {
101
+ const startOffset = Math.max(0, endOffset - MAX_DECODED_BYTES);
102
+ const length = endOffset - startOffset;
103
+ const bytes = await readTranscriptBytesAt(opened.handle, startOffset, length, {
104
+ ...(maxReadChunkBytes !== undefined
105
+ ? { maxChunkBytes: maxReadChunkBytes }
106
+ : {}),
107
+ });
108
+ return { bytes, startOffset };
109
+ }
110
+ function parseEntries(bytes, baseOffset, sessionId) {
111
+ const deadline = Date.now() + MAX_ELAPSED_MS;
112
+ const entriesNewestFirst = [];
113
+ const firstBoundary = baseOffset === 0 ? 0 : Math.max(0, bytes.indexOf(0x0a) + 1);
114
+ let lineEnd = bytes.length;
115
+ if (lineEnd > 0 && bytes[lineEnd - 1] !== 0x0a) {
116
+ lineEnd = bytes.lastIndexOf(0x0a, lineEnd - 1) + 1;
117
+ }
118
+ let cursor = lineEnd;
119
+ while (cursor > firstBoundary &&
120
+ entriesNewestFirst.length < MAX_NATIVE_RECORDS &&
121
+ Date.now() <= deadline) {
122
+ const previousNewline = bytes.lastIndexOf(0x0a, cursor - 2);
123
+ const lineStart = Math.max(firstBoundary, previousNewline + 1);
124
+ const rawEnd = cursor - 1;
125
+ const raw = bytes.subarray(lineStart, rawEnd).toString('utf8');
126
+ const value = parseRecord(raw);
127
+ if (value === null && raw.trim() !== '') {
128
+ throw new ClaudeTranscriptError('invalid', 'Claude Code transcript contains an invalid native record');
129
+ }
130
+ if (value !== null) {
131
+ const nativeSessionId = stringValue(value['sessionId']);
132
+ if (nativeSessionId !== null) {
133
+ if (sessionId !== null && nativeSessionId !== sessionId) {
134
+ throw new ClaudeTranscriptError('session_mismatch', 'Claude Code transcript does not belong to the selected session');
135
+ }
136
+ }
137
+ if (isProjectableRecord(value) && nativeSessionId === null) {
138
+ throw new ClaudeTranscriptError('invalid', 'Claude Code conversation record has no native session id');
139
+ }
140
+ entriesNewestFirst.push({
141
+ start: baseOffset + lineStart,
142
+ end: baseOffset + cursor,
143
+ raw,
144
+ boundaryBytes: bytes.subarray(lineStart, cursor),
145
+ value,
146
+ });
147
+ }
148
+ cursor = lineStart;
149
+ }
150
+ const entries = entriesNewestFirst.reverse();
151
+ return {
152
+ entries,
153
+ oldestProcessed: entries[0] ?? null,
154
+ boundReached: baseOffset > 0 ||
155
+ cursor > firstBoundary ||
156
+ entriesNewestFirst.length >= MAX_NATIVE_RECORDS ||
157
+ Date.now() > deadline,
158
+ };
159
+ }
160
+ function buildSelectedChain(entries) {
161
+ const byId = new Map();
162
+ const parents = new Set();
163
+ for (const entry of entries) {
164
+ const uuid = stringValue(entry.value['uuid']);
165
+ if (uuid === null)
166
+ continue;
167
+ byId.set(uuid, entry);
168
+ const parent = stringValue(entry.value['parentUuid']);
169
+ if (parent !== null)
170
+ parents.add(parent);
171
+ }
172
+ const leaf = [...entries]
173
+ .reverse()
174
+ .find((entry) => {
175
+ const uuid = stringValue(entry.value['uuid']);
176
+ return (uuid !== null &&
177
+ !parents.has(uuid) &&
178
+ isConversationParticipant(entry.value));
179
+ }) ?? null;
180
+ if (leaf === null)
181
+ return [];
182
+ const chain = [];
183
+ const seen = new Set();
184
+ let current = leaf;
185
+ while (current !== undefined && chain.length < MAX_NATIVE_RECORDS) {
186
+ const uuid = stringValue(current.value['uuid']);
187
+ if (uuid === null || seen.has(uuid))
188
+ break;
189
+ seen.add(uuid);
190
+ chain.push(current);
191
+ const parent = stringValue(current.value['parentUuid']) ??
192
+ stringValue(current.value['logicalParentUuid']);
193
+ current = parent === null ? undefined : byId.get(parent);
194
+ }
195
+ return chain.reverse();
196
+ }
197
+ function groupTurns(chain, includeTools) {
198
+ const turns = [];
199
+ let current = [];
200
+ for (const entry of chain) {
201
+ if (isHumanPrompt(entry.value)) {
202
+ commitCurrentTurn(turns, current, includeTools);
203
+ current = [entry];
204
+ }
205
+ else if (current.length > 0) {
206
+ current.push(entry);
207
+ }
208
+ }
209
+ commitCurrentTurn(turns, current, includeTools);
210
+ return turns;
211
+ }
212
+ function commitCurrentTurn(turns, entries, includeTools) {
213
+ if (entries.length === 0 ||
214
+ !hasCompletionEvidence(entries)) {
215
+ return;
216
+ }
217
+ const blocks = [];
218
+ const tools = new Map();
219
+ let startedAt = null;
220
+ let endedAt = null;
221
+ for (const entry of entries) {
222
+ const timestamp = timestampMs(entry.value['timestamp']);
223
+ startedAt ??= timestamp;
224
+ endedAt = timestamp ?? endedAt;
225
+ const type = entry.value['type'];
226
+ const message = recordValue(entry.value['message']);
227
+ const content = message?.['content'];
228
+ if (type === 'user' && isHumanPrompt(entry.value)) {
229
+ const text = visibleText(content, 'text');
230
+ if (text !== '') {
231
+ blocks.push({
232
+ kind: 'message',
233
+ role: 'user',
234
+ text,
235
+ truncated: false,
236
+ });
237
+ }
238
+ }
239
+ else if (type === 'assistant') {
240
+ if (!Array.isArray(content))
241
+ continue;
242
+ const text = visibleText(content, 'text');
243
+ if (text !== '') {
244
+ blocks.push({
245
+ kind: 'message',
246
+ role: 'assistant',
247
+ text,
248
+ truncated: false,
249
+ });
250
+ }
251
+ for (const nativeBlock of content) {
252
+ const block = recordValue(nativeBlock);
253
+ if (block?.['type'] !== 'tool_use')
254
+ continue;
255
+ const id = stringValue(block['id']);
256
+ const name = stringValue(block['name']);
257
+ if (id === null || name === null)
258
+ continue;
259
+ const publicIndex = includeTools ? blocks.length : -1;
260
+ tools.set(id, {
261
+ index: publicIndex,
262
+ name,
263
+ input: renderTranscriptValue(block['input']),
264
+ output: null,
265
+ status: 'error',
266
+ });
267
+ if (includeTools) {
268
+ blocks.push({
269
+ kind: 'tool',
270
+ name,
271
+ input: renderTranscriptValue(block['input']),
272
+ output: null,
273
+ status: 'error',
274
+ inputTruncated: false,
275
+ outputTruncated: false,
276
+ });
277
+ }
278
+ }
279
+ }
280
+ else if (type === 'user' && Array.isArray(content)) {
281
+ for (const nativeBlock of content) {
282
+ const block = recordValue(nativeBlock);
283
+ if (block?.['type'] !== 'tool_result')
284
+ continue;
285
+ const toolUseId = stringValue(block['tool_use_id']);
286
+ if (toolUseId === null)
287
+ continue;
288
+ const tool = tools.get(toolUseId);
289
+ if (tool === undefined)
290
+ continue;
291
+ tool.output = renderToolResult(block['content']);
292
+ tool.status = block['is_error'] === true ? 'error' : 'ok';
293
+ if (includeTools) {
294
+ const publicBlock = blocks[tool.index];
295
+ if (publicBlock?.kind === 'tool') {
296
+ publicBlock.output = tool.output;
297
+ publicBlock.status = tool.status;
298
+ }
299
+ }
300
+ }
301
+ }
302
+ }
303
+ turns.push({
304
+ start: entries[0].start,
305
+ boundaryDigest: digest(entries[0].boundaryBytes),
306
+ turn: { startedAt, endedAt, blocks },
307
+ });
308
+ }
309
+ async function verifyCursorBoundaryDigest(opened, position, expected, maxReadChunkBytes) {
310
+ const length = Math.min(MAX_DECODED_BYTES, Math.max(0, opened.size - position));
311
+ const bytes = await readTranscriptBytesAt(opened.handle, position, length, {
312
+ ...(maxReadChunkBytes !== undefined
313
+ ? { maxChunkBytes: maxReadChunkBytes }
314
+ : {}),
315
+ });
316
+ const newline = bytes.indexOf(0x0a, 0);
317
+ if (bytes.length === 0) {
318
+ throw new ClaudeTranscriptError('cursor_stale', 'Claude Code transcript cursor is stale');
319
+ }
320
+ if (newline < 0) {
321
+ throw new ClaudeTranscriptError('scan_unsupported', 'Claude Code cursor boundary record exceeds the bounded scan limit');
322
+ }
323
+ const boundaryBytes = bytes.subarray(0, newline + 1);
324
+ if (digest(boundaryBytes) !== expected) {
325
+ throw new ClaudeTranscriptError('cursor_stale', 'Claude Code transcript cursor is stale');
326
+ }
327
+ }
328
+ function isConversationParticipant(value) {
329
+ if (value['isSidechain'] === true || value['isMeta'] === true)
330
+ return false;
331
+ return (value['type'] === 'user' ||
332
+ value['type'] === 'assistant' ||
333
+ (value['type'] === 'system' &&
334
+ (value['subtype'] === 'compact_boundary' ||
335
+ value['subtype'] === 'turn_duration')));
336
+ }
337
+ function isProjectableRecord(value) {
338
+ return (value['type'] === 'user' ||
339
+ value['type'] === 'assistant' ||
340
+ (value['type'] === 'system' && value['subtype'] === 'turn_duration'));
341
+ }
342
+ async function verifyRewriteEvidence(opened, cursor, maxReadChunkBytes) {
343
+ if (cursor === null) {
344
+ const start = Math.max(0, opened.size - MAX_DECODED_BYTES);
345
+ return scanRewriteEvidence(opened, start, opened.size, start === 0, maxReadChunkBytes);
346
+ }
347
+ if (cursor.gen !==
348
+ rewriteGeneration({
349
+ watermark: cursor.rw,
350
+ position: cursor.rp,
351
+ digest: cursor.rd,
352
+ })) {
353
+ throw new ClaudeTranscriptError('cursor_stale', 'Claude Code transcript cursor is stale');
354
+ }
355
+ if (cursor.rw > opened.size) {
356
+ throw new ClaudeTranscriptError('cursor_stale', 'Claude Code transcript cursor is stale');
357
+ }
358
+ if (cursor.rp !== null && cursor.rd !== null) {
359
+ await verifyCursorBoundaryDigest(opened, cursor.rp, cursor.rd, maxReadChunkBytes);
360
+ }
361
+ const appended = await scanRewriteEvidence(opened, cursor.rw, opened.size, true, maxReadChunkBytes);
362
+ if (appended.position !== null) {
363
+ throw new ClaudeTranscriptError('cursor_stale', 'Claude Code transcript cursor is stale');
364
+ }
365
+ return {
366
+ watermark: appended.watermark,
367
+ position: cursor.rp,
368
+ digest: cursor.rd,
369
+ };
370
+ }
371
+ async function scanRewriteEvidence(opened, start, end, startsAtBoundary, maxReadChunkBytes) {
372
+ const length = end - start;
373
+ if (length > MAX_DECODED_BYTES) {
374
+ throw new ClaudeTranscriptError('scan_unsupported', 'Claude Code rewrite interval exceeds the bounded scan limit');
375
+ }
376
+ const data = await readTranscriptBytesAt(opened.handle, start, length, {
377
+ ...(maxReadChunkBytes !== undefined
378
+ ? { maxChunkBytes: maxReadChunkBytes }
379
+ : {}),
380
+ });
381
+ let position = null;
382
+ let evidenceDigest = null;
383
+ let cursor = startsAtBoundary
384
+ ? 0
385
+ : data.indexOf(0x0a) + 1;
386
+ if (cursor === 0 && !startsAtBoundary && data.length > 0) {
387
+ throw new ClaudeTranscriptError('scan_unsupported', 'Claude Code rewrite scan cannot find a bounded record boundary');
388
+ }
389
+ while (cursor < data.length) {
390
+ const newline = data.indexOf(0x0a, cursor);
391
+ if (newline < 0)
392
+ break;
393
+ const raw = data.subarray(cursor, newline).toString('utf8');
394
+ const value = parseRecord(raw);
395
+ if (value === null && raw.trim() !== '') {
396
+ throw new ClaudeTranscriptError('invalid', 'Claude Code transcript contains an invalid native record');
397
+ }
398
+ if (value !== null && isRewriteRecord(value)) {
399
+ position = start + cursor;
400
+ evidenceDigest = digest(data.subarray(cursor, newline + 1));
401
+ }
402
+ cursor = newline + 1;
403
+ }
404
+ return {
405
+ watermark: start + cursor,
406
+ position,
407
+ digest: evidenceDigest,
408
+ };
409
+ }
410
+ function rewriteGeneration(evidence) {
411
+ return digest(JSON.stringify({
412
+ watermark: evidence.watermark,
413
+ position: evidence.position,
414
+ digest: evidence.digest,
415
+ }));
416
+ }
417
+ function isRewriteRecord(value) {
418
+ return (value['type'] === 'summary' ||
419
+ (value['type'] === 'system' &&
420
+ value['subtype'] === 'compact_boundary') ||
421
+ value['snipMetadata'] !== undefined);
422
+ }
423
+ function visibleText(value, type) {
424
+ if (typeof value === 'string')
425
+ return value;
426
+ if (!Array.isArray(value))
427
+ return '';
428
+ return value
429
+ .flatMap((entry) => {
430
+ const block = recordValue(entry);
431
+ return block?.['type'] === type && typeof block['text'] === 'string'
432
+ ? [block['text']]
433
+ : [];
434
+ })
435
+ .join('');
436
+ }
437
+ function renderToolResult(value) {
438
+ if (typeof value === 'string')
439
+ return value;
440
+ if (Array.isArray(value)) {
441
+ const text = visibleText(value, 'text');
442
+ if (text !== '')
443
+ return text;
444
+ }
445
+ return renderTranscriptValue(value);
446
+ }
447
+ function parseRecord(raw) {
448
+ try {
449
+ return recordValue(JSON.parse(raw));
450
+ }
451
+ catch {
452
+ return null;
453
+ }
454
+ }
455
+ function effectiveEnvironment(context) {
456
+ return {
457
+ ...process.env,
458
+ ...(context.injectEnv ?? {}),
459
+ ...context.config.extra_env,
460
+ };
461
+ }
462
+ function timestampMs(value) {
463
+ if (typeof value !== 'string')
464
+ return null;
465
+ const parsed = Date.parse(value);
466
+ return Number.isNaN(parsed) ? null : parsed;
467
+ }
468
+ function recordValue(value) {
469
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
470
+ ? value
471
+ : null;
472
+ }
473
+ function stringValue(value) {
474
+ return typeof value === 'string' ? value : null;
475
+ }
476
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/transcript/reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface ClaudeRewriteEntry {
2
+ value: Record<string, unknown>;
3
+ }
4
+ export declare function applyNativeRewrites<TEntry extends ClaudeRewriteEntry>(entries: readonly TEntry[]): TEntry[];
5
+ //# sourceMappingURL=rewrites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrites.d.ts","sourceRoot":"","sources":["../../src/transcript/rewrites.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,SAAS,kBAAkB,EACnE,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,MAAM,EAAE,CAqDV"}
@@ -0,0 +1,65 @@
1
+ export function applyNativeRewrites(entries) {
2
+ const removed = new Set();
3
+ for (const entry of entries) {
4
+ const metadata = recordValue(entry.value['snipMetadata']);
5
+ const uuids = metadata?.['removedUuids'];
6
+ if (Array.isArray(uuids)) {
7
+ for (const uuid of uuids) {
8
+ if (typeof uuid === 'string')
9
+ removed.add(uuid);
10
+ }
11
+ }
12
+ }
13
+ const byId = new Map();
14
+ const parentById = new Map();
15
+ for (const entry of entries) {
16
+ const uuid = stringValue(entry.value['uuid']);
17
+ if (uuid === null)
18
+ continue;
19
+ parentById.set(uuid, stringValue(entry.value['parentUuid']));
20
+ if (!removed.has(uuid))
21
+ byId.set(uuid, entry);
22
+ }
23
+ if (removed.size === 0)
24
+ return [...byId.values()];
25
+ const resolvedParents = new Map();
26
+ const resolveParent = (uuid) => {
27
+ if (resolvedParents.has(uuid))
28
+ return resolvedParents.get(uuid) ?? null;
29
+ const path = [];
30
+ const seen = new Set();
31
+ let current = uuid;
32
+ while (current !== null &&
33
+ removed.has(current) &&
34
+ !seen.has(current)) {
35
+ seen.add(current);
36
+ path.push(current);
37
+ if (resolvedParents.has(current)) {
38
+ current = resolvedParents.get(current) ?? null;
39
+ break;
40
+ }
41
+ current = parentById.get(current) ?? null;
42
+ }
43
+ const resolved = current !== null && seen.has(current) ? null : current;
44
+ for (const removedUuid of path) {
45
+ resolvedParents.set(removedUuid, resolved);
46
+ }
47
+ return resolved;
48
+ };
49
+ for (const entry of byId.values()) {
50
+ let parent = stringValue(entry.value['parentUuid']);
51
+ if (parent !== null && removed.has(parent))
52
+ parent = resolveParent(parent);
53
+ entry.value['parentUuid'] = parent;
54
+ }
55
+ return [...byId.values()];
56
+ }
57
+ function recordValue(value) {
58
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
59
+ ? value
60
+ : null;
61
+ }
62
+ function stringValue(value) {
63
+ return typeof value === 'string' ? value : null;
64
+ }
65
+ //# sourceMappingURL=rewrites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrites.js","sourceRoot":"","sources":["../../src/transcript/rewrites.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,mBAAmB,CACjC,OAA0B;IAE1B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IACpD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QAC5B,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAElD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAC;IACzD,MAAM,aAAa,GAAG,CAAC,IAAY,EAAiB,EAAE;QACpD,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACxE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,IAAI,OAAO,GAAkB,IAAI,CAAC;QAClC,OACE,OAAO,KAAK,IAAI;YAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YACpB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAClB,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnB,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;gBAC/C,MAAM;YACR,CAAC;YACD,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;QAC5C,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QACxE,KAAK,MAAM,WAAW,IAAI,IAAI,EAAE,CAAC;YAC/B,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QACpD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3E,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC"}
package/dist/types.d.ts CHANGED
@@ -13,6 +13,7 @@ export type ParsedLine = {
13
13
  kind: 'init';
14
14
  sessionId: string | null;
15
15
  model: string | null;
16
+ capabilities: readonly string[];
16
17
  raw: JsonObject;
17
18
  } | {
18
19
  kind: 'assistant';
@@ -23,6 +24,11 @@ export type ParsedLine = {
23
24
  kind: 'result';
24
25
  outcome: ResultEnvelope;
25
26
  raw: JsonObject;
27
+ } | {
28
+ kind: 'command_lifecycle';
29
+ commandUuid: string | null;
30
+ state: CommandLifecycleState | null;
31
+ raw: JsonObject;
26
32
  } | {
27
33
  kind: 'control_request';
28
34
  requestId: string | null;
@@ -45,6 +51,7 @@ export type ParsedLine = {
45
51
  kind: 'parse_error';
46
52
  raw: string;
47
53
  };
54
+ export type CommandLifecycleState = 'queued' | 'started' | 'completed' | 'cancelled' | 'discarded';
48
55
  /** The terminal `result` envelope, reduced to what the runtime records per turn. */
49
56
  export interface ResultEnvelope {
50
57
  /** `success` or one of the `error_*` subtypes. Unknown subtypes pass through. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@excitedjs/agent-runtime-claude-code",
3
- "version": "0.5.0-beta.167",
3
+ "version": "1.0.0-beta.169",
4
4
  "description": "Built-in Claude Code Agent Runtime provider for Dreamux (alias builtin:claude-code). Implements the @excitedjs/dreamux-types AgentRuntimeProvider contract against a resident `claude` stream-json child; depends on @excitedjs/dreamux-types only, never on @excitedjs/dreamux core (issue excitedjs/dreamux#209).",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -32,8 +32,8 @@
32
32
  "LICENSE"
33
33
  ],
34
34
  "dependencies": {
35
- "@excitedjs/dreamux-types": "1.0.0-beta.167",
36
- "@excitedjs/dreamux-utils": "0.4.0-beta.167"
35
+ "@excitedjs/dreamux-types": "1.0.0-beta.169",
36
+ "@excitedjs/dreamux-utils": "1.0.0-beta.169"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/node": "^22.10.0",