agent-conveyor 0.1.0 → 0.1.2

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.
@@ -1,12 +1,116 @@
1
- import { mkdirSync, writeFileSync } from "node:fs";
2
- import { resolve } from "node:path";
1
+ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { dirname, resolve } from "node:path";
3
+ import { deflateRawSync } from "node:zlib";
3
4
  import { taskAuditSync } from "./audit.js";
5
+ import { managerConfigSync } from "./manager-config.js";
6
+ import { replayEntriesFromAudit } from "./replay.js";
4
7
  export class TaskExportError extends Error {
5
8
  constructor(message) {
6
9
  super(message);
7
10
  this.name = "TaskExportError";
8
11
  }
9
12
  }
13
+ export function exportTaskSync(database, options) {
14
+ const audit = taskAuditSync(database, options.task);
15
+ const snapshot = taskStatusSnapshotSync(database, audit.task.id);
16
+ const telemetryEvents = telemetryEventsForTaskSync(database, audit.task.id);
17
+ const telemetrySummary = telemetrySummarySync(telemetryEvents);
18
+ const replay = {
19
+ entries: replayEntriesFromAudit(audit, { mode: "timeline", role: "all" }),
20
+ mode: "timeline",
21
+ role: "all",
22
+ task: audit.task,
23
+ };
24
+ const fullReplay = options.includeFullTranscripts
25
+ ? {
26
+ entries: replayEntriesFromAudit(audit, { mode: "full-transcript", role: "all" }),
27
+ mode: "full-transcript",
28
+ role: "all",
29
+ task: audit.task,
30
+ }
31
+ : null;
32
+ const exportDir = resolve(options.outputDir);
33
+ mkdirSync(exportDir, { recursive: true });
34
+ const files = [
35
+ "task-status.json",
36
+ "audit.json",
37
+ "acceptance-criteria.json",
38
+ "prompts.json",
39
+ "transcript-captures.json",
40
+ "terminal-captures.json",
41
+ "agent-observations.json",
42
+ "manager-cycles.json",
43
+ "manager-cycle-spans.json",
44
+ "manager-decisions.json",
45
+ "mutation-audit.json",
46
+ "replay.json",
47
+ "telemetry-events.json",
48
+ "telemetry-summary.json",
49
+ "telemetry-report.md",
50
+ ];
51
+ if (options.includeTranscripts || options.includeFullTranscripts) {
52
+ files.push("transcript-segments.json");
53
+ }
54
+ if (options.includeFullTranscripts) {
55
+ files.push("replay-full-transcript.json", "transcripts/worker.txt", "transcripts/manager.txt");
56
+ }
57
+ const payloads = {
58
+ "acceptance-criteria.json": audit.acceptance_criteria,
59
+ "agent-observations.json": audit.agent_observations,
60
+ "audit.json": redactAuditForExport(audit),
61
+ "manager-cycle-spans.json": audit.manager_cycle_spans,
62
+ "manager-cycles.json": audit.manager_cycles,
63
+ "manager-decisions.json": audit.manager_decisions,
64
+ "mutation-audit.json": mutationAuditResultSync(audit),
65
+ "prompts.json": promptRecordsForTaskSync(database, audit.task.id),
66
+ "replay-full-transcript.json": fullReplay,
67
+ "replay.json": replay,
68
+ "task-status.json": snapshot,
69
+ "telemetry-events.json": telemetryEvents,
70
+ "telemetry-summary.json": telemetrySummary,
71
+ "terminal-captures.json": redactTerminalCaptures(audit.terminal_captures),
72
+ "transcript-captures.json": transcriptCaptureRecordsForTaskSync(database, audit.task.id),
73
+ "transcript-segments.json": audit.transcript_segments,
74
+ };
75
+ for (const file of files) {
76
+ if (file.endsWith(".json")) {
77
+ writeJson(`${exportDir}/${file}`, payloads[file]);
78
+ }
79
+ else if (file === "telemetry-report.md") {
80
+ writeText(`${exportDir}/${file}`, telemetryReportMarkdown({
81
+ events: telemetryEvents,
82
+ summary: telemetrySummary,
83
+ task: audit.task,
84
+ }));
85
+ }
86
+ else if (file.startsWith("transcripts/")) {
87
+ const role = file.includes("worker") ? "worker" : "manager";
88
+ writeText(`${exportDir}/${file}`, transcriptText(audit, role));
89
+ }
90
+ }
91
+ const manifest = {
92
+ created_at: options.now ?? new Date().toISOString(),
93
+ files,
94
+ task: {
95
+ id: audit.task.id,
96
+ name: audit.task.name,
97
+ },
98
+ };
99
+ writeJson(`${exportDir}/manifest.json`, manifest);
100
+ const archive = options.zip ? `${exportDir}.zip` : null;
101
+ if (archive) {
102
+ writeZip(archive, [...files, "manifest.json"].map((file) => ({
103
+ data: readFileSync(`${exportDir}/${file}`),
104
+ name: file,
105
+ })));
106
+ }
107
+ return {
108
+ archive,
109
+ export_dir: exportDir,
110
+ manifest,
111
+ task: audit.task.name,
112
+ };
113
+ }
10
114
  export function exportTaskAuditSubsetSync(database, options) {
11
115
  const audit = taskAuditSync(database, options.task);
12
116
  const exportDir = resolve(options.outputDir);
@@ -23,7 +127,7 @@ export function exportTaskAuditSubsetSync(database, options) {
23
127
  ];
24
128
  const payloads = {
25
129
  "acceptance-criteria.json": audit.acceptance_criteria,
26
- "audit.json": audit,
130
+ "audit.json": redactAuditForExport(audit),
27
131
  "command-attempts.json": audit.command_attempts,
28
132
  "commands.json": audit.commands,
29
133
  "correlation-chains.json": audit.correlation_chains,
@@ -44,6 +148,7 @@ export function exportTaskAuditSubsetSync(database, options) {
44
148
  };
45
149
  writeJson(`${exportDir}/manifest.json`, manifest);
46
150
  return {
151
+ archive: null,
47
152
  export_dir: exportDir,
48
153
  manifest,
49
154
  task: audit.task.name,
@@ -60,8 +165,156 @@ function taskStatusPayload(audit) {
60
165
  updated_at: audit.task.updated_at,
61
166
  };
62
167
  }
168
+ function taskStatusSnapshotSync(database, task) {
169
+ const taskRow = database.prepare(`
170
+ select tasks.id, tasks.name, tasks.goal, tasks.summary, tasks.state,
171
+ tasks.created_at, tasks.updated_at,
172
+ budgets.max_nudges, budgets.nudges_used, budgets.expires_at
173
+ from tasks
174
+ left join budgets on budgets.task_id = tasks.id
175
+ where tasks.id = ? or tasks.name = ?
176
+ order by tasks.created_at desc
177
+ limit 1
178
+ `).get(task, task);
179
+ if (!taskRow) {
180
+ throw new TaskExportError(`Unknown task: ${task}`);
181
+ }
182
+ const worker = taskStatusWorkerSync(database, taskRow.id);
183
+ const manager = taskStatusManagerSync(database, taskRow.id);
184
+ const integrityIssues = [];
185
+ if (taskRow.state === "managed" && worker === null) {
186
+ integrityIssues.push("managed_without_active_worker_binding");
187
+ }
188
+ if (taskRow.state === "managed" && manager === null) {
189
+ integrityIssues.push("managed_without_active_manager");
190
+ }
191
+ if (taskRow.state === "failed" && manager !== null) {
192
+ integrityIssues.push("closed_task_has_active_manager");
193
+ }
194
+ return {
195
+ budget: taskRow.max_nudges === null ? null : {
196
+ expires_at: taskRow.expires_at,
197
+ max_nudges: taskRow.max_nudges,
198
+ nudges_remaining: taskRow.max_nudges - (taskRow.nudges_used ?? 0),
199
+ nudges_used: taskRow.nudges_used ?? 0,
200
+ },
201
+ created_at: taskRow.created_at,
202
+ goal: taskRow.goal,
203
+ id: taskRow.id,
204
+ integrity: {
205
+ issues: integrityIssues,
206
+ ok: integrityIssues.length === 0,
207
+ },
208
+ manager,
209
+ manager_config: managerConfigSync(database, taskRow.id),
210
+ name: taskRow.name,
211
+ state: taskRow.state,
212
+ summary: taskRow.summary,
213
+ updated_at: taskRow.updated_at,
214
+ worker,
215
+ worker_handoff: latestWorkerHandoffSync(database, taskRow.id),
216
+ worker_status: worker === null ? null : latestWorkerStatusSync(database, String(worker.id)),
217
+ };
218
+ }
219
+ function taskStatusWorkerSync(database, taskId) {
220
+ const row = database.prepare(`
221
+ select bindings.id, bindings.state, bindings.created_at,
222
+ workers.id as worker_id, workers.name as worker_name,
223
+ workers.tmux_session, workers.tmux_pane_id, workers.state as worker_state,
224
+ workers.cwd
225
+ from bindings
226
+ join workers on workers.id = bindings.worker_id
227
+ where bindings.task_id = ? and bindings.state in ('active', 'ending')
228
+ order by bindings.created_at desc
229
+ limit 1
230
+ `).get(taskId);
231
+ if (!row) {
232
+ return null;
233
+ }
234
+ return {
235
+ binding_id: row.id,
236
+ binding_state: row.state,
237
+ cwd: row.cwd,
238
+ id: row.worker_id,
239
+ name: row.worker_name,
240
+ state: row.worker_state,
241
+ tmux_pane_id: row.tmux_pane_id,
242
+ tmux_session: row.tmux_session,
243
+ };
244
+ }
245
+ function latestWorkerStatusSync(database, workerId) {
246
+ const row = database.prepare(`
247
+ select state, current_task, next_action, blocker, created_at
248
+ from statuses
249
+ where worker_id = ?
250
+ order by id desc
251
+ limit 1
252
+ `).get(workerId);
253
+ if (!row) {
254
+ return null;
255
+ }
256
+ return {
257
+ blocker: row.blocker,
258
+ current_task: row.current_task,
259
+ last_update: row.created_at,
260
+ next_action: row.next_action,
261
+ state: row.state,
262
+ };
263
+ }
264
+ function taskStatusManagerSync(database, taskId) {
265
+ const row = database.prepare(`
266
+ select id, name, tmux_session, tmux_pane_id, state, codex_args_json, started_at,
267
+ stopped_at, last_seen_at, exit_detected_at, exit_reason
268
+ from managers
269
+ where task_id = ? and state in ('starting', 'ready', 'stopping')
270
+ order by started_at desc
271
+ limit 1
272
+ `).get(taskId);
273
+ if (!row) {
274
+ return null;
275
+ }
276
+ return {
277
+ codex_args: JSON.parse(row.codex_args_json),
278
+ exit_detected_at: row.exit_detected_at,
279
+ exit_reason: row.exit_reason,
280
+ id: row.id,
281
+ last_seen_at: row.last_seen_at,
282
+ name: row.name,
283
+ started_at: row.started_at,
284
+ state: row.state,
285
+ stopped_at: row.stopped_at,
286
+ task_id: taskId,
287
+ tmux_pane_id: row.tmux_pane_id,
288
+ tmux_session: row.tmux_session,
289
+ };
290
+ }
291
+ function latestWorkerHandoffSync(database, taskId) {
292
+ const row = database.prepare(`
293
+ select id, task_id, worker_session_id, summary, next_steps_json, payload_json, created_at
294
+ from worker_handoffs
295
+ where task_id = ?
296
+ order by id desc
297
+ limit 1
298
+ `).get(taskId);
299
+ if (!row) {
300
+ return null;
301
+ }
302
+ return {
303
+ created_at: row.created_at,
304
+ id: row.id,
305
+ next_steps: JSON.parse(row.next_steps_json),
306
+ payload: JSON.parse(row.payload_json),
307
+ summary: row.summary,
308
+ task_id: row.task_id,
309
+ worker_session_id: row.worker_session_id,
310
+ };
311
+ }
63
312
  function writeJson(path, value) {
64
- writeFileSync(path, `${JSON.stringify(sortJson(value), null, 2)}\n`);
313
+ writeText(path, `${JSON.stringify(sortJson(value), null, 2)}\n`);
314
+ }
315
+ function writeText(path, value) {
316
+ mkdirSync(dirname(path), { recursive: true });
317
+ writeFileSync(path, value);
65
318
  }
66
319
  function sortJson(value) {
67
320
  if (Array.isArray(value)) {
@@ -74,4 +327,314 @@ function sortJson(value) {
74
327
  }
75
328
  return value;
76
329
  }
330
+ function promptRecordsForTaskSync(database, taskId) {
331
+ const rows = database.prepare(`
332
+ select id, kind, content, content_sha256, generator_version,
333
+ source_snapshot_json, policy_json, artifact_path, created_at
334
+ from prompts
335
+ where task_id = ?
336
+ order by id
337
+ `).all(taskId);
338
+ return rows.map((row) => parseJsonColumns(row, {
339
+ policy_json: "policy",
340
+ source_snapshot_json: "source_snapshot",
341
+ }));
342
+ }
343
+ function transcriptCaptureRecordsForTaskSync(database, taskId) {
344
+ const rows = database.prepare(`
345
+ select transcript_captures.*
346
+ from transcript_captures
347
+ join bindings on bindings.worker_id = transcript_captures.worker_id
348
+ where bindings.task_id = ?
349
+ and transcript_captures.captured_at >= bindings.created_at
350
+ and (bindings.ended_at is null or transcript_captures.captured_at <= bindings.ended_at)
351
+ order by transcript_captures.id
352
+ `).all(taskId);
353
+ return redactTranscriptCaptures(rows);
354
+ }
355
+ function telemetryEventsForTaskSync(database, taskId) {
356
+ const rows = database.prepare(`
357
+ select id, run_id, task_id, timestamp, actor, event_type, severity,
358
+ summary, correlation_json, attributes_json
359
+ from telemetry_events
360
+ where task_id = ?
361
+ order by timestamp, rowid
362
+ limit 10000
363
+ `).all(taskId);
364
+ return rows.map((row) => parseJsonColumns(row, {
365
+ attributes_json: "attributes",
366
+ correlation_json: "correlation",
367
+ }));
368
+ }
369
+ function telemetrySummarySync(events) {
370
+ const runIds = new Set(events.map((event) => event.run_id).filter((value) => value !== null && value !== undefined));
371
+ const taskIds = new Set(events.map((event) => event.task_id).filter((value) => value !== null && value !== undefined));
372
+ return {
373
+ by_actor: countBy(events, "actor"),
374
+ by_event_type: countBy(events, "event_type"),
375
+ by_severity: countBy(events, "severity"),
376
+ first_timestamp: typeof events[0]?.timestamp === "string" ? events[0].timestamp : null,
377
+ last_timestamp: typeof events.at(-1)?.timestamp === "string" ? events.at(-1)?.timestamp : null,
378
+ run_id: runIds.size === 1 ? Array.from(runIds)[0] : null,
379
+ task_id: taskIds.size === 1 ? Array.from(taskIds)[0] : null,
380
+ total: events.length,
381
+ };
382
+ }
383
+ function telemetryReportMarkdown(options) {
384
+ const byEventType = isRecord(options.summary.by_event_type) ? options.summary.by_event_type : {};
385
+ const lines = [
386
+ `# Telemetry Report: ${options.task.name}`,
387
+ "",
388
+ `- Task ID: \`${options.task.id}\``,
389
+ `- Total events: ${String(options.summary.total ?? 0)}`,
390
+ `- First event: ${String(options.summary.first_timestamp ?? "null")}`,
391
+ `- Last event: ${String(options.summary.last_timestamp ?? "null")}`,
392
+ "",
393
+ "## Event Types",
394
+ ];
395
+ for (const [eventType, count] of Object.entries(byEventType).sort(([left], [right]) => left.localeCompare(right))) {
396
+ lines.push(`- \`${eventType}\`: ${String(count)}`);
397
+ }
398
+ lines.push("", "## Timeline");
399
+ for (const event of options.events) {
400
+ lines.push(`- ${String(event.timestamp)} \`${String(event.actor)}\` \`${String(event.event_type)}\` `
401
+ + `[${String(event.severity)}]: ${String(event.summary)}`);
402
+ }
403
+ return `${lines.join("\n")}\n`;
404
+ }
405
+ function transcriptText(audit, role) {
406
+ const lines = [];
407
+ for (const segment of audit.transcript_segments) {
408
+ if (segment.role !== role) {
409
+ continue;
410
+ }
411
+ lines.push(`--- ${role} segment ${String(segment.id)} ${String(segment.captured_at)} (${String(segment.segment_kind)}) ---`);
412
+ lines.push(typeof segment.segment_text === "string" && segment.segment_text ? segment.segment_text : "[metadata only]");
413
+ }
414
+ return lines.length > 0 ? `${lines.join("\n")}\n` : "";
415
+ }
416
+ function redactAuditForExport(audit) {
417
+ return {
418
+ ...audit,
419
+ terminal_captures: redactTerminalCaptures(audit.terminal_captures),
420
+ transcript_segments: redactTranscriptSegments(audit.transcript_segments),
421
+ };
422
+ }
423
+ function redactTerminalCaptures(captures) {
424
+ return captures.map((capture) => {
425
+ const { content, ...rest } = capture;
426
+ if (typeof content !== "string") {
427
+ return rest;
428
+ }
429
+ return {
430
+ ...rest,
431
+ content_byte_count: Buffer.byteLength(content),
432
+ content_line_count: splitlinesCount(content),
433
+ content_redacted: true,
434
+ };
435
+ });
436
+ }
437
+ function redactTranscriptCaptures(captures) {
438
+ return captures.map((capture) => {
439
+ const { content, ...rest } = capture;
440
+ if (typeof content !== "string") {
441
+ return rest;
442
+ }
443
+ return {
444
+ ...rest,
445
+ content_byte_count: Buffer.byteLength(content),
446
+ content_line_count: splitlinesCount(content),
447
+ content_redacted: true,
448
+ };
449
+ });
450
+ }
451
+ function redactTranscriptSegments(segments) {
452
+ return segments.map((segment) => {
453
+ const { segment_text: segmentText, ...rest } = segment;
454
+ if (typeof segmentText !== "string") {
455
+ return rest;
456
+ }
457
+ return {
458
+ ...rest,
459
+ segment_text_byte_count: Buffer.byteLength(segmentText),
460
+ segment_text_line_count: splitlinesCount(segmentText),
461
+ segment_text_redacted: true,
462
+ };
463
+ });
464
+ }
465
+ function splitlinesCount(value) {
466
+ if (value.length === 0) {
467
+ return 0;
468
+ }
469
+ const lineBreaks = value.match(/\r\n|\r|\n/g)?.length ?? 0;
470
+ return lineBreaks + (/(?:\r\n|\r|\n)$/.test(value) ? 0 : 1);
471
+ }
472
+ function mutationAuditResultSync(audit) {
473
+ const allowedByType = {
474
+ deregister_session: [],
475
+ extend_nudge_budget: ["escalate"],
476
+ finish_task: ["stop"],
477
+ pause_manager: ["escalate", "stop"],
478
+ request_worker_compact: ["nudge"],
479
+ stop_task: ["stop"],
480
+ task_interrupt: ["interrupt"],
481
+ task_nudge: ["nudge"],
482
+ };
483
+ const decisionsById = new Map(audit.manager_decisions.map((decision) => [decision.id, decision]));
484
+ const records = audit.commands.flatMap((command) => {
485
+ const allowed = allowedByType[command.type];
486
+ if (allowed === undefined) {
487
+ return [];
488
+ }
489
+ const payload = command.payload ?? {};
490
+ const result = command.result ?? {};
491
+ let managerDecision = isRecord(result.manager_decision)
492
+ ? result.manager_decision
493
+ : (isRecord(payload.manager_decision) ? payload.manager_decision : null);
494
+ if (command.type === "finish_task" && typeof result.final_decision_id === "number" && decisionsById.has(result.final_decision_id)) {
495
+ managerDecision = { decision: decisionsById.get(result.final_decision_id), warnings: [] };
496
+ }
497
+ const linkedDecision = linkedDecisionFromCheck(managerDecision, decisionsById);
498
+ const nearest = audit.manager_decisions.filter((decision) => decision.created_at <= command.created_at).at(-1) ?? null;
499
+ const warnings = [];
500
+ const expectedFailure = Boolean(result.expected_failure ?? payload.expected_failure);
501
+ if (!(expectedFailure && command.state === "failed")) {
502
+ if (allowed.length === 0) {
503
+ if (linkedDecision)
504
+ warnings.push("unexpected_linked_decision");
505
+ }
506
+ else if (managerDecision) {
507
+ const checkWarnings = Array.isArray(managerDecision.warnings) ? managerDecision.warnings.map(String) : [];
508
+ warnings.push(...checkWarnings);
509
+ }
510
+ else {
511
+ warnings.push("missing_decision_metadata");
512
+ }
513
+ if (allowed.length > 0 && nearest && !linkedDecision) {
514
+ warnings.push("nearest_decision_unlinked");
515
+ }
516
+ if (allowed.length > 0 && linkedDecision && !allowed.includes(String(linkedDecision.decision))) {
517
+ warnings.push("linked_decision_incompatible");
518
+ }
519
+ }
520
+ return [{
521
+ allowed_decisions: allowed,
522
+ command: { created_at: command.created_at, id: command.id, state: command.state, type: command.type },
523
+ effect: {
524
+ dry_run: isRecord(result.send_result) ? Boolean(result.send_result.dry_run) : false,
525
+ permission_check: result.permission_check ?? payload.permission_check,
526
+ send_text: result.send_text ?? payload.send_text,
527
+ sent: command.state === "succeeded" && isRecord(result.send_result) && !result.send_result.dry_run,
528
+ slash_command: "slash_command" in result ? result.slash_command : payload.slash_command,
529
+ worker_session: result.worker_session ?? payload.worker_session,
530
+ },
531
+ expected_failure: expectedFailure,
532
+ linked_decision: linkedDecision,
533
+ nearest_prior_decision: nearest,
534
+ ok: warnings.length === 0,
535
+ warnings,
536
+ }];
537
+ });
538
+ return {
539
+ ok: records.every((record) => record.ok),
540
+ records,
541
+ summary: { mutations: records.length, with_warnings: records.filter((record) => record.warnings.length > 0).length },
542
+ task: audit.task,
543
+ };
544
+ }
545
+ function linkedDecisionFromCheck(value, decisionsById) {
546
+ if (!value) {
547
+ return null;
548
+ }
549
+ const decision = isRecord(value.decision) ? value.decision : value;
550
+ const id = typeof value.decision_id === "number" ? value.decision_id : (typeof decision.id === "number" ? decision.id : null);
551
+ if (id !== null && decisionsById.has(id)) {
552
+ return decisionsById.get(id) ?? null;
553
+ }
554
+ return isRecord(decision) && typeof decision.decision === "string" ? decision : null;
555
+ }
556
+ function countBy(rows, key) {
557
+ const counts = {};
558
+ for (const row of rows) {
559
+ const value = String(row[key] ?? "");
560
+ counts[value] = (counts[value] ?? 0) + 1;
561
+ }
562
+ return counts;
563
+ }
564
+ function parseJsonColumns(row, columns) {
565
+ const parsed = { ...row };
566
+ for (const [column, key] of Object.entries(columns)) {
567
+ const value = row[column];
568
+ delete parsed[column];
569
+ parsed[key] = typeof value === "string" ? JSON.parse(value) : null;
570
+ }
571
+ return parsed;
572
+ }
573
+ function writeZip(path, entries) {
574
+ const chunks = [];
575
+ const centralDirectory = [];
576
+ let offset = 0;
577
+ for (const entry of entries) {
578
+ const name = Buffer.from(entry.name);
579
+ const compressed = deflateRawSync(entry.data);
580
+ const crc = crc32(entry.data);
581
+ const local = Buffer.alloc(30 + name.length);
582
+ local.writeUInt32LE(0x04034b50, 0);
583
+ local.writeUInt16LE(20, 4);
584
+ local.writeUInt16LE(0, 6);
585
+ local.writeUInt16LE(8, 8);
586
+ local.writeUInt16LE(0, 10);
587
+ local.writeUInt16LE(0, 12);
588
+ local.writeUInt32LE(crc, 14);
589
+ local.writeUInt32LE(compressed.length, 18);
590
+ local.writeUInt32LE(entry.data.length, 22);
591
+ local.writeUInt16LE(name.length, 26);
592
+ name.copy(local, 30);
593
+ chunks.push(local, compressed);
594
+ const central = Buffer.alloc(46 + name.length);
595
+ central.writeUInt32LE(0x02014b50, 0);
596
+ central.writeUInt16LE(20, 4);
597
+ central.writeUInt16LE(20, 6);
598
+ central.writeUInt16LE(0, 8);
599
+ central.writeUInt16LE(8, 10);
600
+ central.writeUInt16LE(0, 12);
601
+ central.writeUInt16LE(0, 14);
602
+ central.writeUInt32LE(crc, 16);
603
+ central.writeUInt32LE(compressed.length, 20);
604
+ central.writeUInt32LE(entry.data.length, 24);
605
+ central.writeUInt16LE(name.length, 28);
606
+ central.writeUInt32LE(offset, 42);
607
+ name.copy(central, 46);
608
+ centralDirectory.push(central);
609
+ offset += local.length + compressed.length;
610
+ }
611
+ const centralOffset = offset;
612
+ const centralSize = centralDirectory.reduce((total, chunk) => total + chunk.length, 0);
613
+ chunks.push(...centralDirectory);
614
+ const end = Buffer.alloc(22);
615
+ end.writeUInt32LE(0x06054b50, 0);
616
+ end.writeUInt16LE(entries.length, 8);
617
+ end.writeUInt16LE(entries.length, 10);
618
+ end.writeUInt32LE(centralSize, 12);
619
+ end.writeUInt32LE(centralOffset, 16);
620
+ chunks.push(end);
621
+ writeFileSync(path, Buffer.concat(chunks));
622
+ }
623
+ const CRC_TABLE = Array.from({ length: 256 }, (_, index) => {
624
+ let value = index;
625
+ for (let bit = 0; bit < 8; bit += 1) {
626
+ value = value & 1 ? 0xedb88320 ^ (value >>> 1) : value >>> 1;
627
+ }
628
+ return value >>> 0;
629
+ });
630
+ function crc32(data) {
631
+ let crc = 0xffffffff;
632
+ for (const byte of data) {
633
+ crc = CRC_TABLE[(crc ^ byte) & 0xff] ^ (crc >>> 8);
634
+ }
635
+ return (crc ^ 0xffffffff) >>> 0;
636
+ }
637
+ function isRecord(value) {
638
+ return value !== null && typeof value === "object" && !Array.isArray(value);
639
+ }
77
640
  //# sourceMappingURL=export.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/runtime/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/runtime/export.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export type ReplayMode = "compact" | "timeline" | "transcript" | "full-transcrip
3
3
  export type ReplayRole = "all" | "worker" | "manager" | "reviewer" | "workerctl";
4
4
  export interface ReplayEntry {
5
5
  actor: string;
6
+ content?: string | null;
6
7
  details: Record<string, unknown>;
7
8
  kind: string;
8
9
  source: string;