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 +13 -5
- package/dist/cli/typescript-runtime.js +38 -6
- package/dist/cli/typescript-runtime.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/audit.d.ts +10 -0
- package/dist/runtime/audit.js +145 -2
- package/dist/runtime/audit.js.map +1 -1
- package/dist/runtime/export.d.ts +9 -0
- package/dist/runtime/export.js +567 -4
- package/dist/runtime/export.js.map +1 -1
- package/dist/runtime/replay.d.ts +1 -0
- package/dist/runtime/replay.js +119 -0
- package/dist/runtime/replay.js.map +1 -1
- package/package.json +1 -1
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]
|
|
620
|
-
|
|
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.
|
|
1051
|
-
|
|
1052
|
-
|
|
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 {
|
|
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(
|
|
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) {
|