@excitedjs/agent-runtime-codex 0.3.5-beta.168 → 0.4.0-beta.175
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -1
- package/dist/events.d.ts +8 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +119 -47
- package/dist/events.js.map +1 -1
- package/dist/provider.d.ts +3 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +6 -3
- package/dist/provider.js.map +1 -1
- package/dist/rpc.d.ts +1 -0
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +9 -1
- package/dist/rpc.js.map +1 -1
- package/dist/runtime.d.ts +15 -7
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +242 -80
- package/dist/runtime.js.map +1 -1
- package/dist/supervisor.d.ts +7 -0
- package/dist/supervisor.d.ts.map +1 -1
- package/dist/supervisor.js +99 -43
- package/dist/supervisor.js.map +1 -1
- package/dist/transcript/budget.d.ts +8 -0
- package/dist/transcript/budget.d.ts.map +1 -0
- package/dist/transcript/budget.js +9 -0
- package/dist/transcript/budget.js.map +1 -0
- package/dist/transcript/cursor.d.ts +23 -0
- package/dist/transcript/cursor.d.ts.map +1 -0
- package/dist/transcript/cursor.js +57 -0
- package/dist/transcript/cursor.js.map +1 -0
- package/dist/transcript/error.d.ts +9 -0
- package/dist/transcript/error.d.ts.map +1 -0
- package/dist/transcript/error.js +9 -0
- package/dist/transcript/error.js.map +1 -0
- package/dist/transcript/opened-file.d.ts +10 -0
- package/dist/transcript/opened-file.d.ts.map +1 -0
- package/dist/transcript/opened-file.js +61 -0
- package/dist/transcript/opened-file.js.map +1 -0
- package/dist/transcript/path.d.ts +28 -0
- package/dist/transcript/path.d.ts.map +1 -0
- package/dist/transcript/path.js +422 -0
- package/dist/transcript/path.js.map +1 -0
- package/dist/transcript/projection.d.ts +6 -0
- package/dist/transcript/projection.d.ts.map +1 -0
- package/dist/transcript/projection.js +170 -0
- package/dist/transcript/projection.js.map +1 -0
- package/dist/transcript/reader.d.ts +7 -0
- package/dist/transcript/reader.d.ts.map +1 -0
- package/dist/transcript/reader.js +421 -0
- package/dist/transcript/reader.js.map +1 -0
- package/dist/turn-manager.d.ts +34 -56
- package/dist/turn-manager.d.ts.map +1 -1
- package/dist/turn-manager.js +369 -303
- package/dist/turn-manager.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
import { isAbsolute as isAbsolutePath } from 'node:path';
|
|
2
|
+
import { opendir, realpath, stat } from 'node:fs/promises';
|
|
3
|
+
import { basename, dirname, isAbsolute, join, relative, resolve, } from 'node:path';
|
|
4
|
+
import { createZstdDecompress } from 'node:zlib';
|
|
5
|
+
import { isPathWithin } from '@excitedjs/dreamux-utils';
|
|
6
|
+
import { createCodexTranscriptBudget, } from './budget.js';
|
|
7
|
+
import { CodexTranscriptError } from './error.js';
|
|
8
|
+
import { openCodexTranscript, } from './opened-file.js';
|
|
9
|
+
const ROLLOUT_FILENAME = /^rollout-[^/]+-[0-9a-f-]{36}(?:_[0-9a-f-]{36})?\.jsonl(?:\.zst)?$/i;
|
|
10
|
+
const MAX_METADATA_BYTES = 1_048_576;
|
|
11
|
+
export async function resolveCodexTranscriptRoots(env = process.env) {
|
|
12
|
+
const configured = env['CODEX_HOME'];
|
|
13
|
+
let home;
|
|
14
|
+
if (configured !== undefined) {
|
|
15
|
+
if (!isAbsolutePath(configured)) {
|
|
16
|
+
throw new CodexTranscriptError('invalid', 'Explicit Codex home must be an absolute directory');
|
|
17
|
+
}
|
|
18
|
+
let info;
|
|
19
|
+
try {
|
|
20
|
+
info = await stat(configured);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
throw classifyRootError(error);
|
|
24
|
+
}
|
|
25
|
+
if (!info.isDirectory()) {
|
|
26
|
+
throw new CodexTranscriptError('invalid', 'Explicit Codex home must be a directory');
|
|
27
|
+
}
|
|
28
|
+
home = await realpath(configured).catch((error) => {
|
|
29
|
+
throw classifyRootError(error);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const fallback = join(homeDirectory(env), '.codex');
|
|
34
|
+
home = await realpath(fallback).catch((error) => {
|
|
35
|
+
if (error.code === 'ENOENT') {
|
|
36
|
+
return resolve(fallback);
|
|
37
|
+
}
|
|
38
|
+
throw classifyRootError(error);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
home,
|
|
43
|
+
sessions: join(home, 'sessions'),
|
|
44
|
+
archived: join(home, 'archived_sessions'),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export async function validateCodexThreadPath(candidate, expectedSessionId, roots) {
|
|
48
|
+
try {
|
|
49
|
+
return await validateCodexTranscriptLocator(candidate, expectedSessionId, roots);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (!(error instanceof CodexTranscriptError) ||
|
|
53
|
+
error.reason !== 'not_found') {
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
assertNativeRolloutPath(candidate);
|
|
58
|
+
const rolloutId = rolloutIdFromPath(candidate);
|
|
59
|
+
if (threadIdFromPath(candidate).toLowerCase() !==
|
|
60
|
+
expectedSessionId.toLowerCase()) {
|
|
61
|
+
throw new CodexTranscriptError('session_mismatch', 'Codex transcript does not belong to the selected session');
|
|
62
|
+
}
|
|
63
|
+
const canonicalPath = await canonicalProspectivePath(candidate, roots);
|
|
64
|
+
return {
|
|
65
|
+
path: canonicalPath,
|
|
66
|
+
root: canonicalRootsForProspectivePath(canonicalPath, roots),
|
|
67
|
+
sessionId: expectedSessionId,
|
|
68
|
+
rolloutId,
|
|
69
|
+
historyBase: null,
|
|
70
|
+
dev: -1,
|
|
71
|
+
ino: -1,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export async function validateCodexTranscriptLocator(candidate, expectedSessionId, roots) {
|
|
75
|
+
return validateCodexTranscript({
|
|
76
|
+
candidate,
|
|
77
|
+
roots,
|
|
78
|
+
expectedSessionId,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
export async function locateCodexTranscript(locator, expectedSessionId, roots, budget = createCodexTranscriptBudget()) {
|
|
82
|
+
if (locator !== null && locator !== undefined) {
|
|
83
|
+
try {
|
|
84
|
+
return await validateCodexTranscriptLocator(locator, expectedSessionId, roots);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
if (!(error instanceof CodexTranscriptError) ||
|
|
88
|
+
error.reason !== 'not_found') {
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const candidates = await discoverRollouts(roots, expectedSessionId, budget);
|
|
94
|
+
for (const candidate of candidates) {
|
|
95
|
+
try {
|
|
96
|
+
return await validateCodexTranscriptLocator(candidate, expectedSessionId, roots);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
if (error instanceof CodexTranscriptError &&
|
|
100
|
+
(error.reason === 'session_mismatch' ||
|
|
101
|
+
error.reason === 'not_found')) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
throw new CodexTranscriptError('not_found', 'Codex transcript is unavailable');
|
|
108
|
+
}
|
|
109
|
+
export async function findCodexRolloutById(roots, rolloutId, budget = createCodexTranscriptBudget()) {
|
|
110
|
+
const candidates = await discoverRollouts(roots, rolloutId, budget);
|
|
111
|
+
for (const candidate of candidates) {
|
|
112
|
+
if (!basename(candidate).toLowerCase().includes(rolloutId.toLowerCase())) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
return await validateCodexTranscript({
|
|
117
|
+
candidate,
|
|
118
|
+
roots,
|
|
119
|
+
expectedRolloutId: rolloutId,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (error instanceof CodexTranscriptError &&
|
|
124
|
+
(error.reason === 'session_mismatch' ||
|
|
125
|
+
error.reason === 'not_found')) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
throw new CodexTranscriptError('not_found', 'Codex transcript lineage is unavailable');
|
|
132
|
+
}
|
|
133
|
+
export async function readCodexTranscriptText(opened, maxDecodedBytes) {
|
|
134
|
+
if (opened.path.endsWith('.zst') && opened.size > maxDecodedBytes) {
|
|
135
|
+
throw new CodexTranscriptError('scan_unsupported', 'Codex compressed transcript requires a native read index');
|
|
136
|
+
}
|
|
137
|
+
const source = opened.handle.createReadStream({
|
|
138
|
+
autoClose: false,
|
|
139
|
+
start: 0,
|
|
140
|
+
});
|
|
141
|
+
const stream = opened.path.endsWith('.zst')
|
|
142
|
+
? source.pipe(createZstdDecompress())
|
|
143
|
+
: source;
|
|
144
|
+
const chunks = [];
|
|
145
|
+
let decodedBytes = 0;
|
|
146
|
+
try {
|
|
147
|
+
for await (const chunk of stream) {
|
|
148
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
149
|
+
decodedBytes += buffer.length;
|
|
150
|
+
if (decodedBytes > maxDecodedBytes) {
|
|
151
|
+
throw new CodexTranscriptError('scan_unsupported', 'Codex transcript exceeds the bounded scan limit');
|
|
152
|
+
}
|
|
153
|
+
chunks.push(buffer);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
if (error instanceof CodexTranscriptError)
|
|
158
|
+
throw error;
|
|
159
|
+
throw new CodexTranscriptError('unreadable', 'Codex transcript is unreadable', { cause: error });
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
stream.destroy();
|
|
163
|
+
source.destroy();
|
|
164
|
+
}
|
|
165
|
+
return Buffer.concat(chunks).toString('utf8');
|
|
166
|
+
}
|
|
167
|
+
async function readCodexSessionMetadata(opened) {
|
|
168
|
+
const source = opened.handle.createReadStream({
|
|
169
|
+
autoClose: false,
|
|
170
|
+
start: 0,
|
|
171
|
+
});
|
|
172
|
+
const stream = opened.path.endsWith('.zst')
|
|
173
|
+
? source.pipe(createZstdDecompress())
|
|
174
|
+
: source;
|
|
175
|
+
let buffered = Buffer.alloc(0);
|
|
176
|
+
try {
|
|
177
|
+
for await (const chunk of stream) {
|
|
178
|
+
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
179
|
+
buffered = Buffer.concat([buffered, bytes]);
|
|
180
|
+
if (buffered.length > MAX_METADATA_BYTES) {
|
|
181
|
+
throw metadataTooLarge();
|
|
182
|
+
}
|
|
183
|
+
let newline;
|
|
184
|
+
while ((newline = buffered.indexOf(0x0a)) >= 0) {
|
|
185
|
+
const line = buffered.subarray(0, newline).toString('utf8');
|
|
186
|
+
buffered = buffered.subarray(newline + 1);
|
|
187
|
+
const metadata = metadataFromLine(line);
|
|
188
|
+
if (metadata !== null)
|
|
189
|
+
return metadata;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (buffered.length > 0) {
|
|
193
|
+
const metadata = metadataFromLine(buffered.toString('utf8'));
|
|
194
|
+
if (metadata !== null)
|
|
195
|
+
return metadata;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
if (error instanceof CodexTranscriptError)
|
|
200
|
+
throw error;
|
|
201
|
+
throw new CodexTranscriptError('unreadable', 'Codex transcript metadata is unreadable', { cause: error });
|
|
202
|
+
}
|
|
203
|
+
finally {
|
|
204
|
+
stream.destroy();
|
|
205
|
+
source.destroy();
|
|
206
|
+
}
|
|
207
|
+
throw new CodexTranscriptError('invalid', 'Codex transcript metadata is invalid');
|
|
208
|
+
}
|
|
209
|
+
async function discoverRollouts(roots, id, budget) {
|
|
210
|
+
const matches = [];
|
|
211
|
+
for (const root of [roots.sessions, roots.archived]) {
|
|
212
|
+
const stack = [root];
|
|
213
|
+
while (stack.length > 0) {
|
|
214
|
+
const directory = stack.pop();
|
|
215
|
+
let opened;
|
|
216
|
+
try {
|
|
217
|
+
opened = await opendir(directory);
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
if (error.code === 'ENOENT')
|
|
221
|
+
continue;
|
|
222
|
+
throw new CodexTranscriptError('unreadable', 'Codex transcript directory is unreadable', { cause: error });
|
|
223
|
+
}
|
|
224
|
+
try {
|
|
225
|
+
for await (const entry of opened) {
|
|
226
|
+
budget.inspect();
|
|
227
|
+
const path = join(directory, entry.name);
|
|
228
|
+
if (entry.isDirectory()) {
|
|
229
|
+
stack.push(path);
|
|
230
|
+
}
|
|
231
|
+
else if (ROLLOUT_FILENAME.test(entry.name) &&
|
|
232
|
+
entry.name.toLowerCase().includes(id.toLowerCase())) {
|
|
233
|
+
matches.push(path);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
if (error instanceof CodexTranscriptError)
|
|
239
|
+
throw error;
|
|
240
|
+
if (error.code === 'ENOENT')
|
|
241
|
+
continue;
|
|
242
|
+
throw new CodexTranscriptError('unreadable', 'Codex transcript directory is unreadable', { cause: error });
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return matches.sort((left, right) => basename(right).localeCompare(basename(left)));
|
|
247
|
+
}
|
|
248
|
+
async function existingRepresentation(path) {
|
|
249
|
+
for (const candidate of path.endsWith('.zst')
|
|
250
|
+
? [path, path.slice(0, -4)]
|
|
251
|
+
: [path, `${path}.zst`]) {
|
|
252
|
+
try {
|
|
253
|
+
const info = await stat(candidate);
|
|
254
|
+
if (info.isFile())
|
|
255
|
+
return candidate;
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
if (error.code !== 'ENOENT') {
|
|
259
|
+
throw new CodexTranscriptError('unreadable', 'Codex transcript path is unreadable', { cause: error });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
throw new CodexTranscriptError('not_found', 'Codex transcript is unavailable');
|
|
264
|
+
}
|
|
265
|
+
async function canonicalExistingRoots(roots) {
|
|
266
|
+
const result = [];
|
|
267
|
+
for (const root of [roots.sessions, roots.archived]) {
|
|
268
|
+
const canonical = await realpath(root).catch((error) => {
|
|
269
|
+
if (error.code === 'ENOENT')
|
|
270
|
+
return null;
|
|
271
|
+
throw new CodexTranscriptError('unreadable', 'Codex transcript root is unreadable', { cause: error });
|
|
272
|
+
});
|
|
273
|
+
if (canonical !== null)
|
|
274
|
+
result.push(canonical);
|
|
275
|
+
}
|
|
276
|
+
if (result.length === 0) {
|
|
277
|
+
throw new CodexTranscriptError('not_found', 'Codex transcript roots are unavailable');
|
|
278
|
+
}
|
|
279
|
+
return result;
|
|
280
|
+
}
|
|
281
|
+
async function validateCodexTranscript(input) {
|
|
282
|
+
assertNativeRolloutPath(input.candidate);
|
|
283
|
+
const existing = await existingRepresentation(input.candidate);
|
|
284
|
+
const canonicalRoots = await canonicalExistingRoots(input.roots);
|
|
285
|
+
const opened = await openCodexTranscript(existing, canonicalRoots);
|
|
286
|
+
try {
|
|
287
|
+
const rolloutId = rolloutIdFromPath(opened.path);
|
|
288
|
+
if (input.expectedRolloutId !== undefined &&
|
|
289
|
+
rolloutId.toLowerCase() !== input.expectedRolloutId.toLowerCase()) {
|
|
290
|
+
throw new CodexTranscriptError('session_mismatch', 'Codex transcript rollout identity does not match');
|
|
291
|
+
}
|
|
292
|
+
const metadata = await readCodexSessionMetadata(opened);
|
|
293
|
+
if (input.expectedSessionId !== undefined &&
|
|
294
|
+
metadata.sessionId !== input.expectedSessionId) {
|
|
295
|
+
throw new CodexTranscriptError('session_mismatch', 'Codex transcript does not belong to the selected session');
|
|
296
|
+
}
|
|
297
|
+
return {
|
|
298
|
+
path: opened.path,
|
|
299
|
+
root: canonicalRoots.find((root) => isPathWithin(root, opened.path)),
|
|
300
|
+
sessionId: metadata.sessionId,
|
|
301
|
+
rolloutId,
|
|
302
|
+
historyBase: metadata.historyBase,
|
|
303
|
+
dev: opened.dev,
|
|
304
|
+
ino: opened.ino,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
finally {
|
|
308
|
+
await opened.handle.close();
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
function canonicalRootsForProspectivePath(candidate, roots) {
|
|
312
|
+
return isPathWithin(roots.sessions, candidate)
|
|
313
|
+
? roots.sessions
|
|
314
|
+
: roots.archived;
|
|
315
|
+
}
|
|
316
|
+
function metadataFromLine(line) {
|
|
317
|
+
const value = parseObject(line);
|
|
318
|
+
if (value?.['type'] !== 'session_meta')
|
|
319
|
+
return null;
|
|
320
|
+
const payload = asRecord(value['payload']);
|
|
321
|
+
const meta = asRecord(payload?.['meta']) ?? payload;
|
|
322
|
+
const id = stringValue(meta?.['id']) ?? stringValue(meta?.['session_id']);
|
|
323
|
+
if (id === null) {
|
|
324
|
+
throw new CodexTranscriptError('invalid', 'Codex transcript metadata is invalid');
|
|
325
|
+
}
|
|
326
|
+
const historyBaseRecord = asRecord(meta?.['history_base']);
|
|
327
|
+
const rolloutId = stringValue(historyBaseRecord?.['thread_id']);
|
|
328
|
+
const endByteOffset = numberValue(historyBaseRecord?.['end_byte_offset']);
|
|
329
|
+
return {
|
|
330
|
+
sessionId: id,
|
|
331
|
+
historyBase: rolloutId !== null && endByteOffset !== null
|
|
332
|
+
? { rolloutId, endByteOffset }
|
|
333
|
+
: null,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
function metadataTooLarge() {
|
|
337
|
+
return new CodexTranscriptError('invalid', 'Codex transcript metadata exceeds its bounded record size');
|
|
338
|
+
}
|
|
339
|
+
function classifyRootError(error) {
|
|
340
|
+
return new CodexTranscriptError(error.code === 'ENOENT'
|
|
341
|
+
? 'not_found'
|
|
342
|
+
: 'unreadable', 'Codex home directory is unavailable', { cause: error });
|
|
343
|
+
}
|
|
344
|
+
async function canonicalProspectivePath(candidate, roots) {
|
|
345
|
+
const canonicalCandidate = await canonicalizeProspectivePath(candidate);
|
|
346
|
+
const canonicalRoots = await Promise.all([roots.sessions, roots.archived].map(canonicalizeProspectivePath));
|
|
347
|
+
if (!canonicalRoots.some((root) => isPathWithin(root, canonicalCandidate))) {
|
|
348
|
+
throw new CodexTranscriptError('locator_outside_root', 'Codex transcript locator is outside the native transcript roots');
|
|
349
|
+
}
|
|
350
|
+
return canonicalCandidate;
|
|
351
|
+
}
|
|
352
|
+
async function canonicalizeProspectivePath(path) {
|
|
353
|
+
const absolutePath = resolve(path);
|
|
354
|
+
let ancestor = absolutePath;
|
|
355
|
+
while (true) {
|
|
356
|
+
const canonicalAncestor = await realpathIfExists(ancestor);
|
|
357
|
+
if (canonicalAncestor !== null) {
|
|
358
|
+
return resolve(canonicalAncestor, relative(ancestor, absolutePath));
|
|
359
|
+
}
|
|
360
|
+
const parent = dirname(ancestor);
|
|
361
|
+
if (parent === ancestor) {
|
|
362
|
+
throw new CodexTranscriptError('not_found', 'Codex transcript root is unavailable');
|
|
363
|
+
}
|
|
364
|
+
ancestor = parent;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
async function realpathIfExists(path) {
|
|
368
|
+
try {
|
|
369
|
+
return await realpath(path);
|
|
370
|
+
}
|
|
371
|
+
catch (error) {
|
|
372
|
+
if (error.code === 'ENOENT')
|
|
373
|
+
return null;
|
|
374
|
+
throw new CodexTranscriptError('unreadable', 'Codex transcript path is unreadable', { cause: error });
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
function rolloutIdFromPath(path) {
|
|
378
|
+
const ids = rolloutIdsFromPath(path);
|
|
379
|
+
return ids.at(-1) ?? basename(path);
|
|
380
|
+
}
|
|
381
|
+
function threadIdFromPath(path) {
|
|
382
|
+
const ids = rolloutIdsFromPath(path);
|
|
383
|
+
return ids[0] ?? basename(path);
|
|
384
|
+
}
|
|
385
|
+
function rolloutIdsFromPath(path) {
|
|
386
|
+
const name = basename(path).replace(/\.jsonl(?:\.zst)?$/, '');
|
|
387
|
+
return name.match(/[0-9a-f]{8}-[0-9a-f-]{27}/gi) ?? [];
|
|
388
|
+
}
|
|
389
|
+
function assertNativeRolloutPath(candidate) {
|
|
390
|
+
if (!isAbsolute(candidate) || !ROLLOUT_FILENAME.test(basename(candidate))) {
|
|
391
|
+
throw new CodexTranscriptError('invalid', 'Codex transcript locator is not a native rollout path');
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
function homeDirectory(env) {
|
|
395
|
+
const value = env['HOME'];
|
|
396
|
+
if (value === undefined || value === '') {
|
|
397
|
+
throw new CodexTranscriptError('not_found', 'Codex home directory is unavailable');
|
|
398
|
+
}
|
|
399
|
+
return value;
|
|
400
|
+
}
|
|
401
|
+
function parseObject(value) {
|
|
402
|
+
try {
|
|
403
|
+
return asRecord(JSON.parse(value));
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
return null;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
function asRecord(value) {
|
|
410
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
411
|
+
? value
|
|
412
|
+
: null;
|
|
413
|
+
}
|
|
414
|
+
function stringValue(value) {
|
|
415
|
+
return typeof value === 'string' && value !== '' ? value : null;
|
|
416
|
+
}
|
|
417
|
+
function numberValue(value) {
|
|
418
|
+
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0
|
|
419
|
+
? value
|
|
420
|
+
: null;
|
|
421
|
+
}
|
|
422
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/transcript/path.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/transcript/projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|