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.
package/README.md CHANGED
@@ -125,6 +125,10 @@ PATH="$tmp_prefix/bin:$PATH" workerctl --help
125
125
  `conveyor doctor` reports local dependency health (tmux, codex, etc.).
126
126
  `conveyor db-doctor` initializes and checks the SQLite control-plane
127
127
  database.
128
+ On Node versions where `node:sqlite` is still marked experimental, SQLite
129
+ commands can also print an `ExperimentalWarning` to stderr while returning
130
+ successful JSON. Treat that warning as expected Node runtime noise when the
131
+ command exits 0 and the JSON result reports `"ok": true`.
128
132
  Before publishing `agent-conveyor` to npm, use
129
133
  [`docs/package-release.md`](docs/package-release.md).
130
134
 
@@ -616,8 +620,10 @@ tmux attach -t codex-live-test
616
620
  local telemetry and related tables: active tasks/sessions, cycle and command
617
621
  success/failure counts, ingest/skipped-line totals, criteria counts,
618
622
  reconcile drift counts, export counts, and retained capture/transcript bytes.
619
- - `export-task <task> [--zip]` — Dump task status, audit, prompts, and
620
- transcript metadata into an export bundle. Exports include
623
+ - `export-task <task> [--zip] [--include-transcripts]
624
+ [--include-full-transcripts]` Dump task status, audit, prompts, transcript
625
+ metadata, and optional transcript segments/full transcript replay into an
626
+ export bundle. Exports include
621
627
  `telemetry-events.json`, `telemetry-summary.json`, and
622
628
  `telemetry-report.md`; see `docs/local-telemetry-workflow.md`.
623
629
 
@@ -1047,9 +1053,11 @@ SQLite database at `.codex-workers/workerctl.db`. Key tables:
1047
1053
  proposals and reviewer verdicts for "what's next" review flows.
1048
1054
  - `workers`, `managers` — Legacy tables retained for read-only history.
1049
1055
 
1050
- `conveyor db-doctor` reports schema health. `conveyor reconcile` reports
1051
- runtime drift (dead-pid sessions, dangling bindings, stuck tasks); add
1052
- `--apply` to fix.
1056
+ `conveyor db-doctor` reports schema health. On Node releases that still mark
1057
+ `node:sqlite` experimental, the command may emit an `ExperimentalWarning` to
1058
+ stderr even when the schema check succeeds. `conveyor reconcile` reports runtime
1059
+ drift (dead-pid sessions, dangling bindings, stuck tasks); add `--apply` to
1060
+ fix.
1053
1061
 
1054
1062
  ## Migration from the Legacy Path
1055
1063
 
@@ -6,7 +6,7 @@ import { dirname, join, relative, resolve } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { taskAuditSync } from "../runtime/audit.js";
8
8
  import { classifyBusyWait, classifyStartupOutput } from "../runtime/classify.js";
9
- import { exportTaskAuditSubsetSync } from "../runtime/export.js";
9
+ import { exportTaskSync } from "../runtime/export.js";
10
10
  import { ingestSessionSync } from "../runtime/ingest.js";
11
11
  import { acceptanceCriteriaForTaskSync, loopEvidenceCriterion, recordAdversarialLoopEvidenceSync, recordLoopEvidenceSync, recordVisualDiffLoopEvidenceSync, } from "../runtime/loop-evidence.js";
12
12
  import { writePngRgba } from "../runtime/visual-diff.js";
@@ -2665,7 +2665,7 @@ function runAuditCommand(parsed, options) {
2665
2665
  try {
2666
2666
  const audit = taskAuditSync(database, task);
2667
2667
  if (parsed.flags.json) {
2668
- return jsonResult(audit);
2668
+ return jsonResult(parsed.flags.includeContent ? audit : redactAudit(audit));
2669
2669
  }
2670
2670
  const lines = [
2671
2671
  `${audit.task.name}\t${audit.task.state}\t${audit.task.goal}`,
@@ -2703,16 +2703,19 @@ function runReplayCommand(parsed, options) {
2703
2703
  }
2704
2704
  function runExportTaskCommand(parsed, options) {
2705
2705
  const task = requireTask(parsed);
2706
- if (parsed.flags.zip || parsed.flags.includeTranscripts || parsed.flags.includeFullTranscripts) {
2707
- return errorResult("TypeScript runtime export currently supports the migrated audit subset only; omit --zip and transcript flags.");
2708
- }
2709
2706
  const database = openRuntimeDatabase(parsed, options);
2710
2707
  try {
2711
2708
  const audit = taskAuditSync(database, task);
2712
2709
  const outputDir = parsed.flags.output
2713
2710
  ? resolve(parsed.flags.output)
2714
2711
  : join(stateRoot({ cwd: options.cwd, env: options.env }), "artifacts", "tasks", audit.task.id, "export");
2715
- return jsonResult(exportTaskAuditSubsetSync(database, { outputDir, task }));
2712
+ return jsonResult(exportTaskSync(database, {
2713
+ includeFullTranscripts: parsed.flags.includeFullTranscripts,
2714
+ includeTranscripts: parsed.flags.includeTranscripts,
2715
+ outputDir,
2716
+ task,
2717
+ zip: parsed.flags.zip,
2718
+ }));
2716
2719
  }
2717
2720
  finally {
2718
2721
  database.close();
@@ -17021,6 +17024,35 @@ function redactTranscriptSegments(result) {
17021
17024
  task: result.task,
17022
17025
  };
17023
17026
  }
17027
+ function redactAudit(audit) {
17028
+ return {
17029
+ ...audit,
17030
+ terminal_captures: audit.terminal_captures.map((capture) => {
17031
+ const { content, ...rest } = capture;
17032
+ if (typeof content !== "string") {
17033
+ return rest;
17034
+ }
17035
+ return {
17036
+ ...rest,
17037
+ content_byte_count: Buffer.byteLength(content),
17038
+ content_line_count: pythonSplitlinesCount(content),
17039
+ content_redacted: true,
17040
+ };
17041
+ }),
17042
+ transcript_segments: audit.transcript_segments.map((segment) => {
17043
+ const { segment_text: segmentText, ...rest } = segment;
17044
+ if (typeof segmentText !== "string") {
17045
+ return rest;
17046
+ }
17047
+ return {
17048
+ ...rest,
17049
+ segment_text_byte_count: Buffer.byteLength(segmentText),
17050
+ segment_text_line_count: pythonSplitlinesCount(segmentText),
17051
+ segment_text_redacted: true,
17052
+ };
17053
+ }),
17054
+ };
17055
+ }
17024
17056
  function renderTranscriptCaptureText(captures) {
17025
17057
  return captures.map((capture) => {
17026
17058
  if ("error" in capture) {