@excitedjs/agent-runtime-codex 0.5.0-beta.179 → 0.5.0-beta.183

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 (95) hide show
  1. package/dist/activity/budget.d.ts +8 -0
  2. package/dist/activity/budget.d.ts.map +1 -0
  3. package/dist/activity/budget.js +9 -0
  4. package/dist/activity/budget.js.map +1 -0
  5. package/dist/{transcript → activity}/cursor.d.ts +2 -2
  6. package/dist/activity/cursor.d.ts.map +1 -0
  7. package/dist/{transcript → activity}/cursor.js +10 -10
  8. package/dist/activity/cursor.js.map +1 -0
  9. package/dist/activity/error.d.ts +16 -0
  10. package/dist/activity/error.d.ts.map +1 -0
  11. package/dist/activity/error.js +22 -0
  12. package/dist/activity/error.js.map +1 -0
  13. package/dist/activity/opened-file.d.ts +10 -0
  14. package/dist/activity/opened-file.d.ts.map +1 -0
  15. package/dist/{transcript → activity}/opened-file.js +10 -10
  16. package/dist/activity/opened-file.js.map +1 -0
  17. package/dist/activity/path.d.ts +27 -0
  18. package/dist/activity/path.d.ts.map +1 -0
  19. package/dist/{transcript → activity}/path.js +49 -119
  20. package/dist/activity/path.js.map +1 -0
  21. package/dist/activity/projection.d.ts +34 -0
  22. package/dist/activity/projection.d.ts.map +1 -0
  23. package/dist/activity/projection.js +191 -0
  24. package/dist/activity/projection.js.map +1 -0
  25. package/dist/activity/reader.d.ts +14 -0
  26. package/dist/activity/reader.d.ts.map +1 -0
  27. package/dist/activity/reader.js +314 -0
  28. package/dist/activity/reader.js.map +1 -0
  29. package/dist/approval.d.ts +4 -3
  30. package/dist/approval.d.ts.map +1 -1
  31. package/dist/approval.js +6 -5
  32. package/dist/approval.js.map +1 -1
  33. package/dist/args.d.ts +3 -3
  34. package/dist/args.js +4 -4
  35. package/dist/args.js.map +1 -1
  36. package/dist/diagnostic.d.ts +2 -2
  37. package/dist/diagnostic.d.ts.map +1 -1
  38. package/dist/events.d.ts +1 -1
  39. package/dist/events.js +1 -1
  40. package/dist/index.d.ts +1 -2
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +4 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/mcp-config.d.ts +27 -3
  45. package/dist/mcp-config.d.ts.map +1 -1
  46. package/dist/mcp-config.js +55 -9
  47. package/dist/mcp-config.js.map +1 -1
  48. package/dist/provider.d.ts +28 -42
  49. package/dist/provider.d.ts.map +1 -1
  50. package/dist/provider.js +37 -56
  51. package/dist/provider.js.map +1 -1
  52. package/dist/rpc.d.ts +2 -2
  53. package/dist/rpc.js +3 -3
  54. package/dist/rpc.js.map +1 -1
  55. package/dist/runtime-deps.d.ts +43 -0
  56. package/dist/runtime-deps.d.ts.map +1 -0
  57. package/dist/runtime-deps.js +2 -0
  58. package/dist/runtime-deps.js.map +1 -0
  59. package/dist/runtime.d.ts +69 -47
  60. package/dist/runtime.d.ts.map +1 -1
  61. package/dist/runtime.js +189 -132
  62. package/dist/runtime.js.map +1 -1
  63. package/dist/supervisor.d.ts +2 -2
  64. package/dist/supervisor.js +2 -2
  65. package/dist/turn-manager.d.ts +14 -19
  66. package/dist/turn-manager.d.ts.map +1 -1
  67. package/dist/turn-manager.js +16 -104
  68. package/dist/turn-manager.js.map +1 -1
  69. package/dist/types.d.ts +1 -1
  70. package/dist/types.js +1 -1
  71. package/package.json +3 -3
  72. package/dist/transcript/budget.d.ts +0 -8
  73. package/dist/transcript/budget.d.ts.map +0 -1
  74. package/dist/transcript/budget.js +0 -9
  75. package/dist/transcript/budget.js.map +0 -1
  76. package/dist/transcript/cursor.d.ts.map +0 -1
  77. package/dist/transcript/cursor.js.map +0 -1
  78. package/dist/transcript/error.d.ts +0 -9
  79. package/dist/transcript/error.d.ts.map +0 -1
  80. package/dist/transcript/error.js +0 -9
  81. package/dist/transcript/error.js.map +0 -1
  82. package/dist/transcript/opened-file.d.ts +0 -10
  83. package/dist/transcript/opened-file.d.ts.map +0 -1
  84. package/dist/transcript/opened-file.js.map +0 -1
  85. package/dist/transcript/path.d.ts +0 -28
  86. package/dist/transcript/path.d.ts.map +0 -1
  87. package/dist/transcript/path.js.map +0 -1
  88. package/dist/transcript/projection.d.ts +0 -6
  89. package/dist/transcript/projection.d.ts.map +0 -1
  90. package/dist/transcript/projection.js +0 -170
  91. package/dist/transcript/projection.js.map +0 -1
  92. package/dist/transcript/reader.d.ts +0 -7
  93. package/dist/transcript/reader.d.ts.map +0 -1
  94. package/dist/transcript/reader.js +0 -421
  95. package/dist/transcript/reader.js.map +0 -1
@@ -1,6 +0,0 @@
1
- import type { AgentRuntimeTranscriptTurn } from '@excitedjs/dreamux-types';
2
- export interface CodexProjectionRecord {
3
- value: Record<string, unknown>;
4
- }
5
- export declare function projectCodexTurn(lines: readonly CodexProjectionRecord[], includeTools: boolean): AgentRuntimeTranscriptTurn;
6
- //# sourceMappingURL=projection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../src/transcript/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,0BAA0B,EAC3B,MAAM,0BAA0B,CAAC;AAGlC,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,qBAAqB,EAAE,EACvC,YAAY,EAAE,OAAO,GACpB,0BAA0B,CA4F5B"}
@@ -1,170 +0,0 @@
1
- import { renderTranscriptValue } from '@excitedjs/dreamux-utils';
2
- export function projectCodexTurn(lines, includeTools) {
3
- const responseBlocks = [];
4
- const fallbackMessages = [];
5
- const calls = new Map();
6
- let startedAt = null;
7
- let endedAt = null;
8
- for (const line of lines) {
9
- const timestamp = timestampMs(line.value['timestamp']);
10
- const marker = eventMarker(line.value);
11
- if (isStartMarker(marker))
12
- startedAt ??= timestamp;
13
- if (isCompleteMarker(marker))
14
- endedAt = timestamp ?? endedAt;
15
- const type = stringValue(line.value['type']);
16
- const payload = recordValue(line.value['payload']);
17
- if (type === 'event_msg') {
18
- const eventType = stringValue(payload?.['type']);
19
- if (eventType === 'user_message' || eventType === 'agent_message') {
20
- const text = stringValue(payload?.['message']) ??
21
- stringValue(payload?.['text']);
22
- if (text !== null) {
23
- fallbackMessages.push({
24
- kind: 'message',
25
- role: eventType === 'user_message' ? 'user' : 'assistant',
26
- text,
27
- truncated: false,
28
- });
29
- }
30
- }
31
- continue;
32
- }
33
- if (type !== 'response_item' || payload === null)
34
- continue;
35
- const itemType = stringValue(payload['type']);
36
- if (itemType === 'message') {
37
- const role = payload['role'];
38
- if (role !== 'user' && role !== 'assistant')
39
- continue;
40
- const text = contentText(payload['content']);
41
- if (text !== '') {
42
- responseBlocks.push({
43
- kind: 'message',
44
- role,
45
- text,
46
- truncated: false,
47
- });
48
- }
49
- continue;
50
- }
51
- if (itemType === 'function_call' || itemType === 'custom_tool_call') {
52
- const callId = stringValue(payload['call_id']);
53
- const name = stringValue(payload['name']);
54
- if (callId === null || name === null)
55
- continue;
56
- const blockIndex = includeTools ? responseBlocks.length : null;
57
- calls.set(callId, blockIndex);
58
- if (includeTools) {
59
- responseBlocks.push({
60
- kind: 'tool',
61
- name,
62
- input: renderNativeValue(itemType === 'function_call'
63
- ? payload['arguments']
64
- : payload['input']),
65
- output: null,
66
- status: 'error',
67
- inputTruncated: false,
68
- outputTruncated: false,
69
- });
70
- }
71
- continue;
72
- }
73
- if (itemType === 'function_call_output' ||
74
- itemType === 'custom_tool_call_output') {
75
- const callId = stringValue(payload['call_id']);
76
- if (callId === null)
77
- continue;
78
- const blockIndex = calls.get(callId);
79
- if (blockIndex === null || blockIndex === undefined)
80
- continue;
81
- const block = responseBlocks[blockIndex];
82
- if (block?.kind === 'tool') {
83
- block.output = renderNativeValue(payload['output']);
84
- block.status = nativeOutputHasError(payload) ? 'error' : 'ok';
85
- }
86
- }
87
- }
88
- return {
89
- startedAt,
90
- endedAt,
91
- blocks: responseBlocks.length > 0 ? responseBlocks : fallbackMessages,
92
- };
93
- }
94
- function eventMarker(value) {
95
- if (value['type'] !== 'event_msg')
96
- return null;
97
- return stringValue(recordValue(value['payload'])?.['type']);
98
- }
99
- function isStartMarker(value) {
100
- return value === 'task_started' || value === 'turn_started';
101
- }
102
- function isCompleteMarker(value) {
103
- return value === 'task_complete' || value === 'turn_complete';
104
- }
105
- function contentText(value) {
106
- if (!Array.isArray(value))
107
- return '';
108
- return value
109
- .flatMap((entry) => {
110
- const item = recordValue(entry);
111
- const type = stringValue(item?.['type']);
112
- const text = stringValue(item?.['text']);
113
- return (type === 'input_text' ||
114
- type === 'output_text' ||
115
- type === 'text') &&
116
- text !== null
117
- ? [text]
118
- : [];
119
- })
120
- .join('');
121
- }
122
- function renderNativeValue(value) {
123
- if (typeof value === 'string') {
124
- try {
125
- return renderTranscriptValue(JSON.parse(value));
126
- }
127
- catch {
128
- return value;
129
- }
130
- }
131
- if (Array.isArray(value)) {
132
- const text = value
133
- .map((entry) => stringValue(recordValue(entry)?.['text']))
134
- .filter((entry) => entry !== null)
135
- .join('');
136
- if (text !== '')
137
- return text;
138
- }
139
- return renderTranscriptValue(value);
140
- }
141
- function nativeOutputHasError(value) {
142
- if (value['is_error'] === true)
143
- return true;
144
- const status = stringValue(value['status']);
145
- if (status === 'error' || status === 'failed')
146
- return true;
147
- const output = value['output'];
148
- return (Array.isArray(output) &&
149
- output.some((entry) => recordValue(entry)?.['is_error'] === true));
150
- }
151
- function timestampMs(value) {
152
- if (typeof value === 'number') {
153
- if (!Number.isFinite(value))
154
- return null;
155
- return value < 10_000_000_000 ? value * 1000 : value;
156
- }
157
- if (typeof value !== 'string')
158
- return null;
159
- const parsed = Date.parse(value);
160
- return Number.isNaN(parsed) ? null : parsed;
161
- }
162
- function recordValue(value) {
163
- return value !== null && typeof value === 'object' && !Array.isArray(value)
164
- ? value
165
- : null;
166
- }
167
- function stringValue(value) {
168
- return typeof value === 'string' ? value : null;
169
- }
170
- //# sourceMappingURL=projection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/transcript/projection.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { AgentRuntimeTranscriptContext, AgentRuntimeTranscriptPage, AgentRuntimeTranscriptQuery } from '@excitedjs/dreamux-types';
2
- import type { DispatcherCodexConfig } from '../config.js';
3
- export declare function readCodexTranscript(query: AgentRuntimeTranscriptQuery, context: AgentRuntimeTranscriptContext<DispatcherCodexConfig>, testHooks?: {
4
- afterLocate?: () => void | Promise<void>;
5
- maxReadChunkBytes?: number;
6
- }): Promise<AgentRuntimeTranscriptPage>;
7
- //# sourceMappingURL=reader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/transcript/reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAE5B,MAAM,0BAA0B,CAAC;AAOlC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AA4D1D,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,2BAA2B,EAClC,OAAO,EAAE,6BAA6B,CAAC,qBAAqB,CAAC,EAC7D,SAAS,GAAE;IACT,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACvB,GACL,OAAO,CAAC,0BAA0B,CAAC,CAmGrC"}
@@ -1,421 +0,0 @@
1
- import { budgetTranscriptTurns, isTranscriptTurnCount, readTranscriptBytesAt, } from '@excitedjs/dreamux-utils';
2
- import { createCodexTranscriptBudget } from './budget.js';
3
- import { codexQueryFingerprint, decodeCodexCursor, digest, encodeCodexCursor, } from './cursor.js';
4
- import { CodexTranscriptError } from './error.js';
5
- import { openCodexTranscript, } from './opened-file.js';
6
- import { findCodexRolloutById, locateCodexTranscript, readCodexTranscriptText, resolveCodexTranscriptRoots, } from './path.js';
7
- import { projectCodexTurn } from './projection.js';
8
- const MAX_DECODED_BYTES = 8_388_608;
9
- const MAX_NATIVE_RECORDS = 20_000;
10
- const MAX_ELAPSED_MS = 2_000;
11
- export async function readCodexTranscript(query, context, testHooks = {}) {
12
- if (!isTranscriptTurnCount(query.turns)) {
13
- throw new CodexTranscriptError('invalid', 'Codex transcript query turns must be an integer in 1..50');
14
- }
15
- const checkpoint = context.checkpoint;
16
- if (checkpoint === null) {
17
- throw new CodexTranscriptError('checkpoint_missing', 'Codex transcript is unavailable before a session is established');
18
- }
19
- const includeTools = query.includeTools ?? true;
20
- const roots = await resolveCodexTranscriptRoots(effectiveEnvironment(context));
21
- const discoveryBudget = createCodexTranscriptBudget();
22
- const tail = await locateCodexTranscript(checkpoint.transcript_locator, checkpoint.id, roots, discoveryBudget);
23
- const lineage = await buildLineage(tail, roots, discoveryBudget);
24
- await testHooks.afterLocate?.();
25
- const generation = lineageGeneration(lineage);
26
- const fingerprint = codexQueryFingerprint(includeTools);
27
- const cursor = query.cursor === undefined
28
- ? null
29
- : decodeCodexCursor(query.cursor, fingerprint);
30
- if (cursor !== null && cursor.gen !== generation) {
31
- throw new CodexTranscriptError('cursor_stale', 'Codex transcript cursor is stale');
32
- }
33
- if (cursor !== null) {
34
- await verifyBoundaryDigest(lineage, cursor.pos, cursor.bd, testHooks.maxReadChunkBytes);
35
- }
36
- const scan = await scanTurns({
37
- lineage,
38
- roots,
39
- startPosition: cursor?.pos ?? null,
40
- turns: query.turns,
41
- includeTools,
42
- maxReadChunkBytes: testHooks.maxReadChunkBytes,
43
- });
44
- const budgeted = budgetTranscriptTurns(scan.candidates.map((candidate) => candidate.native.turn), context.outputBudgetBytes);
45
- const consumed = scan.candidates.slice(0, budgeted.consumed);
46
- const omittedForBudget = budgeted.consumed < scan.candidates.length;
47
- const cursorTarget = consumed.at(-1) ??
48
- (budgeted.consumed === 0 ? null : scan.candidates[0] ?? null);
49
- let nextPosition = null;
50
- let nextBoundaryDigest = null;
51
- if (cursorTarget !== null && (omittedForBudget || scan.hasOlder)) {
52
- nextPosition = {
53
- segment: cursorTarget.segment,
54
- offset: cursorTarget.native.start,
55
- };
56
- nextBoundaryDigest = cursorTarget.native.boundaryDigest;
57
- }
58
- else if (consumed.length === 0 && scan.resumePosition !== null) {
59
- nextPosition = scan.resumePosition;
60
- nextBoundaryDigest = scan.resumeBoundaryDigest;
61
- }
62
- if (nextPosition !== null &&
63
- cursor !== null &&
64
- !isStrictlyOlder(nextPosition, cursor.pos)) {
65
- throw new CodexTranscriptError('scan_unsupported', 'Codex transcript pagination cannot make safe progress');
66
- }
67
- const nextCursor = nextPosition !== null && nextBoundaryDigest !== null
68
- ? encodeCodexCursor({
69
- fingerprint,
70
- generation,
71
- position: nextPosition,
72
- boundaryDigest: nextBoundaryDigest,
73
- })
74
- : null;
75
- return {
76
- turns: [...budgeted.turnsNewestFirst].reverse(),
77
- nextCursor,
78
- truncated: budgeted.truncated,
79
- };
80
- }
81
- async function buildLineage(tail, roots, budget) {
82
- const lineage = [{ transcript: tail, endOffset: null }];
83
- const visited = new Set([tail.rolloutId]);
84
- let current = tail;
85
- while (current.historyBase !== null) {
86
- if (visited.has(current.historyBase.rolloutId)) {
87
- throw new CodexTranscriptError('invalid', 'Codex transcript lineage contains a cycle');
88
- }
89
- const parent = await findCodexRolloutById(roots, current.historyBase.rolloutId, budget);
90
- visited.add(parent.rolloutId);
91
- lineage.push({
92
- transcript: parent,
93
- endOffset: current.historyBase.endByteOffset,
94
- });
95
- current = parent;
96
- if (lineage.length > 64) {
97
- throw new CodexTranscriptError('scan_unsupported', 'Codex transcript lineage exceeds the bounded depth');
98
- }
99
- }
100
- return lineage;
101
- }
102
- function lineageGeneration(lineage) {
103
- return digest(JSON.stringify({
104
- lineage: lineage.map((segment) => ({
105
- rollout: digest(segment.transcript.rolloutId),
106
- end: segment.endOffset,
107
- })),
108
- }));
109
- }
110
- async function scanTurns(input) {
111
- if (input.startPosition !== null &&
112
- input.startPosition.segment >= input.lineage.length) {
113
- throw new CodexTranscriptError('cursor_stale', 'Codex transcript cursor is stale');
114
- }
115
- const deadline = Date.now() + MAX_ELAPSED_MS;
116
- let bytesRemaining = MAX_DECODED_BYTES;
117
- let recordsRemaining = MAX_NATIVE_RECORDS;
118
- const candidates = [];
119
- let resumePosition = null;
120
- let resumeBoundaryDigest = null;
121
- let stoppedBeforeOrigin = false;
122
- const firstSegment = input.startPosition?.segment ?? 0;
123
- for (let segmentIndex = firstSegment; segmentIndex < input.lineage.length; segmentIndex += 1) {
124
- if (Date.now() > deadline) {
125
- stoppedBeforeOrigin = true;
126
- break;
127
- }
128
- const segment = input.lineage[segmentIndex];
129
- const endOffset = segmentIndex === firstSegment && input.startPosition !== null
130
- ? input.startPosition.offset
131
- : segment.endOffset;
132
- const window = await loadLineWindow(segment.transcript, endOffset, bytesRemaining, input.maxReadChunkBytes);
133
- bytesRemaining -= window.bytesRead;
134
- const parsed = parseNativeTurns(window.lines, input.includeTools, recordsRemaining, deadline);
135
- recordsRemaining -= parsed.records;
136
- for (const native of parsed.turns) {
137
- if (candidates.length >= input.turns) {
138
- return {
139
- candidates,
140
- hasOlder: true,
141
- resumePosition: null,
142
- resumeBoundaryDigest: null,
143
- };
144
- }
145
- candidates.push({ segment: segmentIndex, native });
146
- }
147
- const segmentOriginReached = window.bytesRead > 0 &&
148
- parsed.incompleteBoundary === null &&
149
- !parsed.boundReached &&
150
- window.startOffset === 0;
151
- if (candidates.length >= input.turns &&
152
- (!segmentOriginReached ||
153
- segmentIndex + 1 < input.lineage.length)) {
154
- return {
155
- candidates,
156
- hasOlder: true,
157
- resumePosition: null,
158
- resumeBoundaryDigest: null,
159
- };
160
- }
161
- if (parsed.incompleteBoundary !== null) {
162
- if (candidates.length === 0 &&
163
- input.startPosition === null &&
164
- segmentIndex === 0 &&
165
- parsed.sawOpenTail) {
166
- break;
167
- }
168
- if (candidates.length === 0) {
169
- throw new CodexTranscriptError('scan_unsupported', 'Codex completed turn exceeds the bounded scan limit');
170
- }
171
- stoppedBeforeOrigin = true;
172
- break;
173
- }
174
- if (parsed.boundReached || window.startOffset > 0) {
175
- if (candidates.length === 0 &&
176
- input.startPosition === null &&
177
- segmentIndex === 0 &&
178
- !parsed.sawCompleteMarker) {
179
- break;
180
- }
181
- if (candidates.length === 0) {
182
- const boundary = parsed.oldestProcessed;
183
- if (boundary === null) {
184
- throw new CodexTranscriptError('scan_unsupported', 'Codex transcript pagination cannot make safe progress');
185
- }
186
- resumePosition = {
187
- segment: segmentIndex,
188
- offset: boundary.start,
189
- };
190
- resumeBoundaryDigest = digest(boundary.boundaryBytes);
191
- }
192
- else {
193
- stoppedBeforeOrigin = true;
194
- }
195
- break;
196
- }
197
- if (bytesRemaining <= 0 || recordsRemaining <= 0 || Date.now() > deadline) {
198
- if (candidates.length === 0) {
199
- throw new CodexTranscriptError('scan_unsupported', 'Codex transcript pagination cannot make safe progress');
200
- }
201
- if (!segmentOriginReached ||
202
- segmentIndex + 1 < input.lineage.length) {
203
- stoppedBeforeOrigin = true;
204
- }
205
- break;
206
- }
207
- }
208
- return {
209
- candidates,
210
- hasOlder: resumePosition !== null || stoppedBeforeOrigin,
211
- resumePosition,
212
- resumeBoundaryDigest,
213
- };
214
- }
215
- async function loadLineWindow(transcript, requestedEndOffset, maxBytes, maxReadChunkBytes) {
216
- if (maxBytes <= 0) {
217
- return { lines: [], startOffset: 0, endOffset: 0, bytesRead: 0 };
218
- }
219
- const opened = await openValidatedSegment(transcript);
220
- try {
221
- if (opened.path.endsWith('.zst')) {
222
- const text = await readCodexTranscriptText(opened, maxBytes);
223
- const bytes = Buffer.from(text, 'utf8');
224
- const end = Math.min(requestedEndOffset ?? bytes.length, bytes.length);
225
- const limited = bytes.subarray(0, end);
226
- return {
227
- lines: parseLines(limited, 0, true),
228
- startOffset: 0,
229
- endOffset: end,
230
- bytesRead: limited.length,
231
- };
232
- }
233
- const end = Math.min(requestedEndOffset ?? opened.size, opened.size);
234
- const start = Math.max(0, end - maxBytes);
235
- const length = end - start;
236
- const data = await readTranscriptBytesAt(opened.handle, start, length, {
237
- ...(maxReadChunkBytes !== undefined
238
- ? { maxChunkBytes: maxReadChunkBytes }
239
- : {}),
240
- });
241
- return {
242
- lines: parseLines(data, start, start === 0),
243
- startOffset: start,
244
- endOffset: start + data.length,
245
- bytesRead: data.length,
246
- };
247
- }
248
- finally {
249
- await opened.handle.close();
250
- }
251
- }
252
- function parseLines(bytes, baseOffset, startsAtBoundary) {
253
- let localStart = 0;
254
- if (!startsAtBoundary) {
255
- const firstNewline = bytes.indexOf(0x0a);
256
- if (firstNewline < 0)
257
- return [];
258
- localStart = firstNewline + 1;
259
- }
260
- const lines = [];
261
- let cursor = localStart;
262
- while (cursor < bytes.length) {
263
- const newline = bytes.indexOf(0x0a, cursor);
264
- if (newline < 0)
265
- break;
266
- const raw = bytes.subarray(cursor, newline).toString('utf8');
267
- if (raw.trim() !== '') {
268
- let value;
269
- try {
270
- value = JSON.parse(raw);
271
- }
272
- catch (error) {
273
- throw new CodexTranscriptError('invalid', 'Codex transcript contains an invalid native record', { cause: error });
274
- }
275
- if (isRecord(value)) {
276
- lines.push({
277
- start: baseOffset + cursor,
278
- end: baseOffset + newline + 1,
279
- raw,
280
- boundaryBytes: bytes.subarray(cursor, newline + 1),
281
- value,
282
- });
283
- }
284
- }
285
- cursor = newline + 1;
286
- }
287
- return lines;
288
- }
289
- function parseNativeTurns(lines, includeTools, recordBudget, deadline) {
290
- const turns = [];
291
- let terminal = null;
292
- let collected = [];
293
- let records = 0;
294
- let oldestProcessed = null;
295
- let sawStartMarker = false;
296
- let sawCompleteMarker = false;
297
- let sawOpenTail = false;
298
- for (let index = lines.length - 1; index >= 0; index -= 1) {
299
- if (records >= recordBudget || Date.now() > deadline)
300
- break;
301
- const line = lines[index];
302
- records += 1;
303
- oldestProcessed = line;
304
- const marker = eventMarker(line.value);
305
- sawStartMarker ||= isStartMarker(marker);
306
- sawCompleteMarker ||= isCompleteMarker(marker);
307
- if (terminal === null) {
308
- if (isStartMarker(marker))
309
- sawOpenTail = true;
310
- if (isCompleteMarker(marker)) {
311
- terminal = line;
312
- collected = [line];
313
- }
314
- continue;
315
- }
316
- collected.push(line);
317
- if (!isStartMarker(marker))
318
- continue;
319
- const chronological = [...collected].reverse();
320
- turns.push({
321
- start: line.start,
322
- end: terminal.end,
323
- boundaryDigest: digest(line.boundaryBytes),
324
- turn: projectCodexTurn(chronological, includeTools),
325
- });
326
- terminal = null;
327
- collected = [];
328
- }
329
- return {
330
- turns,
331
- records,
332
- incompleteBoundary: terminal,
333
- oldestProcessed,
334
- sawStartMarker,
335
- sawCompleteMarker,
336
- sawOpenTail,
337
- boundReached: records < lines.length &&
338
- (records >= recordBudget || Date.now() > deadline),
339
- };
340
- }
341
- async function verifyBoundaryDigest(lineage, position, expectedDigest, maxReadChunkBytes) {
342
- const segment = lineage[position.segment];
343
- if (segment === undefined) {
344
- throw new CodexTranscriptError('cursor_stale', 'Codex transcript cursor is stale');
345
- }
346
- const boundaryBytes = await readBoundaryRecordBytes(segment.transcript, position.offset, maxReadChunkBytes);
347
- if (digest(boundaryBytes) !== expectedDigest) {
348
- throw new CodexTranscriptError('cursor_stale', 'Codex transcript cursor is stale');
349
- }
350
- }
351
- async function readBoundaryRecordBytes(transcript, offset, maxReadChunkBytes) {
352
- const opened = await openValidatedSegment(transcript);
353
- try {
354
- if (opened.path.endsWith('.zst')) {
355
- const text = await readCodexTranscriptText(opened, MAX_DECODED_BYTES);
356
- return boundaryRecordFromBuffer(Buffer.from(text, 'utf8'), offset);
357
- }
358
- if (offset >= opened.size) {
359
- throw new CodexTranscriptError('cursor_stale', 'Codex transcript cursor is stale');
360
- }
361
- const length = Math.min(MAX_DECODED_BYTES, opened.size - offset);
362
- const bytes = await readTranscriptBytesAt(opened.handle, offset, length, {
363
- ...(maxReadChunkBytes !== undefined
364
- ? { maxChunkBytes: maxReadChunkBytes }
365
- : {}),
366
- });
367
- return boundaryRecordFromBuffer(bytes, 0);
368
- }
369
- finally {
370
- await opened.handle.close();
371
- }
372
- }
373
- async function openValidatedSegment(transcript) {
374
- const opened = await openCodexTranscript(transcript.path, [transcript.root]);
375
- if (transcript.dev !== -1 &&
376
- (opened.dev !== transcript.dev || opened.ino !== transcript.ino)) {
377
- await opened.handle.close();
378
- throw new CodexTranscriptError('unreadable', 'Codex transcript changed after validation');
379
- }
380
- return opened;
381
- }
382
- function boundaryRecordFromBuffer(bytes, offset) {
383
- const newline = bytes.indexOf(0x0a, offset);
384
- if (newline < 0) {
385
- throw new CodexTranscriptError('scan_unsupported', 'Codex cursor boundary record exceeds the bounded scan limit');
386
- }
387
- return bytes.subarray(offset, newline + 1);
388
- }
389
- function eventMarker(value) {
390
- if (value['type'] !== 'event_msg')
391
- return null;
392
- return stringValue(recordValue(value['payload'])?.['type']);
393
- }
394
- function isStartMarker(value) {
395
- return value === 'task_started' || value === 'turn_started';
396
- }
397
- function isCompleteMarker(value) {
398
- return value === 'task_complete' || value === 'turn_complete';
399
- }
400
- function effectiveEnvironment(context) {
401
- return {
402
- ...process.env,
403
- ...(context.injectEnv ?? {}),
404
- ...context.config.extra_env,
405
- };
406
- }
407
- function recordValue(value) {
408
- return isRecord(value) ? value : null;
409
- }
410
- function isRecord(value) {
411
- return value !== null && typeof value === 'object' && !Array.isArray(value);
412
- }
413
- function stringValue(value) {
414
- return typeof value === 'string' ? value : null;
415
- }
416
- function isStrictlyOlder(candidate, previous) {
417
- return (candidate.segment > previous.segment ||
418
- (candidate.segment === previous.segment &&
419
- candidate.offset < previous.offset));
420
- }
421
- //# sourceMappingURL=reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/transcript/reader.ts"],"names":[],"mappings":"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"}