agent-conveyor 0.1.14 → 0.1.16
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 +83 -5
- package/dist/cli/typescript-runtime.js +760 -8
- package/dist/cli/typescript-runtime.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime/campaigns.d.ts +198 -0
- package/dist/runtime/campaigns.js +454 -0
- package/dist/runtime/campaigns.js.map +1 -0
- package/dist/state/schema-v23.js +87 -1
- package/dist/state/schema-v23.js.map +1 -1
- package/dist/state/sqlite-contract.d.ts +1 -1
- package/dist/state/sqlite-contract.js +13 -1
- package/dist/state/sqlite-contract.js.map +1 -1
- package/docs/manager-recipes.md +102 -0
- package/package.json +1 -1
- package/skills/manage-codex-workers/SKILL.md +67 -0
- package/skills/manage-codex-workers/agents/openai.yaml +2 -2
package/README.md
CHANGED
|
@@ -295,6 +295,66 @@ tmux attach -t codex-live-test
|
|
|
295
295
|
|
|
296
296
|
## Commands
|
|
297
297
|
|
|
298
|
+
### Campaigns
|
|
299
|
+
|
|
300
|
+
- `campaign create --name C --objective TEXT [--metadata-json JSON] [--json]` —
|
|
301
|
+
Create a campaign record for a multi-worker initiative.
|
|
302
|
+
- `campaign add-slot --name C --slot-key K --role-label TEXT [--channel CH] [--session-id S] [--thread-id ID] [--thread-title TITLE] [--state planned|active|idle|blocked|archived] [--metadata-json JSON] [--json]` —
|
|
303
|
+
Add a named worker slot to a campaign. If `--session-id` is supplied, the
|
|
304
|
+
runtime verifies that it is a registered worker session.
|
|
305
|
+
- `campaign attach-slot --name C --slot SLOT_ID [--session-id S] [--thread-id ID] [--thread-title TITLE] [--state planned|active|idle|blocked|archived] [--metadata-json JSON] [--json]` —
|
|
306
|
+
Attach or refresh worker-session and Codex app thread metadata for an existing
|
|
307
|
+
campaign slot. Supplying `--session-id` requires a registered worker session.
|
|
308
|
+
- `campaign rotate-slot --name C --slot SLOT_ID --expected-thread-id OLD --thread-id NEW [--thread-title TITLE] [--session-id S] [--state planned|active|idle|blocked|archived] [--json]` —
|
|
309
|
+
Record a campaign-owned worker slot rotation. The command refuses to update
|
|
310
|
+
the slot unless `OLD` matches the slot's current Codex app thread id.
|
|
311
|
+
- `campaign archive-slot --name C --slot SLOT_ID --expected-thread-id CURRENT [--json]` —
|
|
312
|
+
Mark a campaign worker slot archived only when the expected current thread id
|
|
313
|
+
matches the slot record.
|
|
314
|
+
- `campaign brief --name C --channel CH --brief-json JSON [--json]` —
|
|
315
|
+
Upsert the structured brief for a channel.
|
|
316
|
+
- `campaign assign --name C --slot SLOT_ID --title TEXT --instructions TEXT [--status queued|active|blocked|done|cancelled] [--metadata-json JSON] [--json]` —
|
|
317
|
+
Create a slot-scoped assignment.
|
|
318
|
+
- `campaign asset --name C --slot SLOT_ID --asset-type image|video|hyperframes|copy|audio|other --title TEXT [--assignment ASSIGNMENT_ID] [--channel CH] [--status draft|needs_review|approved|rejected|published] [--prompt-summary TEXT] [--artifact-path PATH] [--metadata-json JSON] [--review-notes TEXT] [--allow-additional-receipt] [--json]` —
|
|
319
|
+
Record a structured creative asset receipt. Assignment-scoped receipts are
|
|
320
|
+
one-per-assignment by default; use `--allow-additional-receipt` only for
|
|
321
|
+
intentional variants or revisions.
|
|
322
|
+
- `campaign status --name C [--json]` —
|
|
323
|
+
Show campaign metadata, worker slots, channel briefs, assignment counts, and
|
|
324
|
+
asset receipt counts.
|
|
325
|
+
- `campaign dashboard --name C [--json]` —
|
|
326
|
+
Show a manager-oriented campaign aggregate: worker slot lifecycle states,
|
|
327
|
+
blockers, approval counts, and the next recommended manager action.
|
|
328
|
+
|
|
329
|
+
Creative Ops Campaign manager loop:
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
conveyor campaign create --name "$CAMPAIGN" \
|
|
333
|
+
--objective "Produce reviewable channel assets." --json
|
|
334
|
+
conveyor campaign add-slot --name "$CAMPAIGN" --slot-key tiktok \
|
|
335
|
+
--role-label "TikTok worker" --channel tiktok \
|
|
336
|
+
--thread-id "$TIKTOK_THREAD_ID" --thread-title "TikTok Worker" \
|
|
337
|
+
--state active --json
|
|
338
|
+
conveyor campaign brief --name "$CAMPAIGN" --channel tiktok \
|
|
339
|
+
--brief-json '{"format":"9:16","review_gate":"human approval before publish"}' --json
|
|
340
|
+
conveyor campaign assign --name "$CAMPAIGN" --slot "$SLOT_ID" \
|
|
341
|
+
--title "Draft TikTok hooks" \
|
|
342
|
+
--instructions "Create reviewable draft copy only; do not publish." \
|
|
343
|
+
--status active --json
|
|
344
|
+
conveyor campaign asset --name "$CAMPAIGN" --slot "$SLOT_ID" \
|
|
345
|
+
--assignment "$ASSIGNMENT_ID" --asset-type copy \
|
|
346
|
+
--title "TikTok hooks v1" --status needs_review \
|
|
347
|
+
--prompt-summary "Sanitized prompt summary only." --json
|
|
348
|
+
conveyor campaign dashboard --name "$CAMPAIGN" --json
|
|
349
|
+
conveyor dashboard --campaign "$CAMPAIGN" --ensure-dispatch
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
Use `campaign rotate-slot` or `campaign archive-slot` only with the exact
|
|
353
|
+
current `--expected-thread-id` for that campaign slot. Public publishing,
|
|
354
|
+
scheduling, posting, external account access, private phone content, raw audio,
|
|
355
|
+
tokens, JWTs, keys, archives, and IPAs require explicit human approval or must
|
|
356
|
+
stay out of receipts.
|
|
357
|
+
|
|
298
358
|
### Sessions and binding
|
|
299
359
|
|
|
300
360
|
- `start-worker --name N [--cwd D] [--task "..."] [--sandbox SANDBOX] [--ask-for-approval ASK_FOR_APPROVAL] [--accept-trust] [--timeout-seconds N]` —
|
|
@@ -443,6 +503,18 @@ tmux attach -t codex-live-test
|
|
|
443
503
|
heartbeats since the last command or inbox-consumption receipt, it recommends
|
|
444
504
|
`stop_autopilot` so operators can quiesce blocked/no-progress loops instead
|
|
445
505
|
of repeating idle pulses.
|
|
506
|
+
- `app-worker-rotation-plan TASK --old-worker-thread-id ID [--require-handoff]
|
|
507
|
+
[--reason TEXT] [--json]` — Prepare a Codex app fresh-worker rotation. The
|
|
508
|
+
CLI verifies that `ID` exactly matches the active bound worker session before
|
|
509
|
+
emitting adapter-ready actions to create a replacement worker thread and
|
|
510
|
+
archive the old worker thread. Blocked plans contain no archive action.
|
|
511
|
+
- `app-worker-rotation-record TASK --old-worker-thread-id OLD
|
|
512
|
+
--new-worker-thread-id NEW [--new-worker-thread-title TITLE]
|
|
513
|
+
--archive-status archived|blocked [--reason TEXT] [--json]` — Record the
|
|
514
|
+
result after the Codex app layer creates the replacement worker thread and
|
|
515
|
+
archives, or blocks on archiving, the old thread. The command re-checks active
|
|
516
|
+
binding ownership before updating the worker session to the new app thread id,
|
|
517
|
+
so a stale plan cannot archive or replace an unrelated thread.
|
|
446
518
|
- `discover [QUERY] [--all] [--limit N]` / `search [QUERY]` — Search tasks,
|
|
447
519
|
registered sessions, active bindings, and recent telemetry in one JSON result.
|
|
448
520
|
Use this for conversational setup when a manager or Codex session needs to
|
|
@@ -587,6 +659,10 @@ tmux attach -t codex-live-test
|
|
|
587
659
|
before/after sending the worker instruction. `--dry-run` still records the
|
|
588
660
|
command in `commands`, `replay`, and `mutation-audit` with `dry_run: true`
|
|
589
661
|
and `sent: false`.
|
|
662
|
+
In Codex app threads, remote `/compact` or `/clear` sent through
|
|
663
|
+
`send_message_to_thread` is prompt text, not an executable slash command. Use
|
|
664
|
+
`app-worker-rotation-plan` plus Codex app `create_thread` and
|
|
665
|
+
`set_thread_archived` when fresh context is required for app-native workers.
|
|
590
666
|
- `bind --task T --worker W --manager M` — Create the task binding.
|
|
591
667
|
- `unbind --task T` — End the active binding for a task.
|
|
592
668
|
- `finish-task <task> [--reason R] [--require-criteria-audit]
|
|
@@ -616,7 +692,7 @@ tmux attach -t codex-live-test
|
|
|
616
692
|
|
|
617
693
|
### Observation
|
|
618
694
|
|
|
619
|
-
- `dashboard [--task T] [--ensure-dispatch] [--dispatcher-id ID]
|
|
695
|
+
- `dashboard [--task T] [--campaign C] [--ensure-dispatch] [--dispatcher-id ID]
|
|
620
696
|
[--host 127.0.0.1] [--port 8797]` — Launch the
|
|
621
697
|
local live supervision cockpit. The dashboard binds to loopback by default,
|
|
622
698
|
uses the TypeScript backend to shell out to `conveyor` JSON commands, and
|
|
@@ -624,10 +700,12 @@ tmux attach -t codex-live-test
|
|
|
624
700
|
a WebSocket PTY bridge. It includes browser bootstrap controls for creating a
|
|
625
701
|
task, starting a worker/manager pair with `conveyor pair`, auto-attaching the
|
|
626
702
|
terminals, attach/bind controls, and audited action receipts for cycle,
|
|
627
|
-
nudge, interrupt, finish, and export. With `--
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
`--
|
|
703
|
+
nudge, interrupt, finish, and export. With `--campaign`, the observation rail
|
|
704
|
+
also shows campaign slot lifecycle, blockers, approval counts, and the next
|
|
705
|
+
manager action. With `--ensure-dispatch`, launch also ensures a Dispatch watch
|
|
706
|
+
process using the supplied `--dispatcher-id` when provided, reusing only a
|
|
707
|
+
fresh heartbeat from that same dispatcher id. Use `--dry-run --json` to
|
|
708
|
+
inspect the launch command.
|
|
631
709
|
- `cycle <task> [--busy-wait-seconds N]` — One observation cycle. Idempotent. Runs `ingest`, computes
|
|
632
710
|
worker state from the JSON event stream, captures the tmux pane as a shadow
|
|
633
711
|
signal, writes a `manager_cycles` row, and returns a JSON dict the manager
|