{"_id":"agent-conveyor","_rev":"27-695e0c4b10be92fc630fa80bb2c39571","name":"agent-conveyor","dist-tags":{"latest":"0.1.26"},"versions":{"0.1.0":{"name":"agent-conveyor","version":"0.1.0","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.0","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"e7c3a2d032ddc7fa4a61938a51d8ed1441a6efc0","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.0.tgz","fileCount":85,"integrity":"sha512-8BX1MbmaakWtLbeVBVgdbsG3vXkcDF3oe+bwq+RI3ADEljb9rmh6sBxU9wyS+oV48+ume0ZgGDLsW7G21uHqvw==","signatures":[{"sig":"MEQCIEwnMISyGYF+aDJ3tVLl/nNYcV0XiXcfNopQtM9ycMRYAiBi1QvqNZsKvdYpvhqyj8pLOxNPg4QxELNUXWGHaxdckw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1910145},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"neonwatty","email":"jermwatt@gmail.com"},"repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"10.9.8","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.0_1780769591730_0.9551397017885692","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"agent-conveyor","version":"0.1.1","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.1","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"d6c93c3e27fbf03fe12d3579d46d00d49f517890","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.1.tgz","fileCount":85,"integrity":"sha512-RJAxLSjCmrV6MWROEmye0NlGkkX/nNmUJWpTg+SutdfvSedoHQiuAXA/J6e1vmZeYB40qHnHCDRApbd1dbm23Q==","signatures":[{"sig":"MEYCIQC4Cwk92utfgANHvctLQzQ83RcQzoaGosDnZ7kZ0Y2CmwIhAPj7cicv5x1yYgwy2uFflq0hCsvn6w/Htgnl+fZGPUeT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1910582},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.1.tgz","_integrity":"sha512-RJAxLSjCmrV6MWROEmye0NlGkkX/nNmUJWpTg+SutdfvSedoHQiuAXA/J6e1vmZeYB40qHnHCDRApbd1dbm23Q==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.1_1780781775546_0.2577319603896042","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"agent-conveyor","version":"0.1.2","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.2","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"0dbd7948c0f38a0ed8d6390d2bb09457e11741f3","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.2.tgz","fileCount":85,"integrity":"sha512-6xTwVvJ+2iJh4ZFlTDmJJGBkXqW4zIAJa0j+pMH0o5ovtZ+t5Of18yTF2hW8uPFcllzvtDZZn6yGmb8NnLAPgg==","signatures":[{"sig":"MEQCIFEA/C9wxghru/gSthKNvS1KlUIZudRZoTripUESpAhVAiAnhcbe2uRWCj3tZbpwzIntCIVBJq+4/JGZGrgDMUua2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1976757},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"neonwatty","email":"jermwatt@gmail.com"},"repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"10.9.8","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.2_1780836687133_0.8571164226989914","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"agent-conveyor","version":"0.1.3","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.3","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"712c6749d71ad28a00bc8165ec03db54a061d027","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.3.tgz","fileCount":85,"integrity":"sha512-IJfzmBdYh7vuZ8sKerFZ4QmqzVJqEfdrhJCl6XEz2BbbHNXk5mPKanGDeHeHNFxlDsEi4b9YbWZy8xpYcivbfQ==","signatures":[{"sig":"MEUCIQCYxMqmBNOyhxghy1hyvOFa5NQVsfhcKE2CfIPKHUMLQAIgJM6awrc5nRqS2BSRH8y8h+91dgA14nuTBKiEbZYaty4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1976855},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.3.tgz","_integrity":"sha512-IJfzmBdYh7vuZ8sKerFZ4QmqzVJqEfdrhJCl6XEz2BbbHNXk5mPKanGDeHeHNFxlDsEi4b9YbWZy8xpYcivbfQ==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.3_1780876669339_0.8392209710220624","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"agent-conveyor","version":"0.1.4","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.4","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"1f66d406cc02fd25d628fe245291ac4145de1050","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.4.tgz","fileCount":85,"integrity":"sha512-CopNdaldjXD5Mt7mbfN+sfoFvWp/CmUFfovaPcLlbKUpXV/3zSF/Htfgxi1mk9XtK4jyYgD0adwg/kqhoUA5fg==","signatures":[{"sig":"MEUCIQCUGFVRw44lQEGll8OR8S29GTC8jb/MJZexrrhoMIxqpwIgLnVRM3g+2OyURCHzC/JWuLDKjZpq/D/fHWk3XIgy4Fg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1977161},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.4.tgz","_integrity":"sha512-CopNdaldjXD5Mt7mbfN+sfoFvWp/CmUFfovaPcLlbKUpXV/3zSF/Htfgxi1mk9XtK4jyYgD0adwg/kqhoUA5fg==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.4_1780928054640_0.031232871712196797","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"agent-conveyor","version":"0.1.5","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.5","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"a88a75b619d5b4dc21b426d6092fc005ea6f6261","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.5.tgz","fileCount":88,"integrity":"sha512-X69HBuGrLvXRzkIsbEB9UTT5OqIrqSy1NHBOvOG1OLax7c4nX9LtoA3qVglgBtXkpisY7UsvpXzaft4nKpCNrQ==","signatures":[{"sig":"MEUCIQDuoScvle/iy43bUUWaEICds6TtUwBsW859UWOnTZA1JgIgHv4KuyT9+dmM7C86tpVfY5WZN+DEbYbxNKluDAW82Gg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2034666},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.5.tgz","_integrity":"sha512-X69HBuGrLvXRzkIsbEB9UTT5OqIrqSy1NHBOvOG1OLax7c4nX9LtoA3qVglgBtXkpisY7UsvpXzaft4nKpCNrQ==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.5_1780950848718_0.32694183265441534","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"agent-conveyor","version":"0.1.6","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.6","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"c219db31399cb0db0b883ea392206f1c95220d94","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.6.tgz","fileCount":88,"integrity":"sha512-xSCwQFqmVwyTC1vZp4gDeyShPZh5OQXqsYp6ly3S45+eja2UOdAsjQxYKqqBrXQfFonwhXKuS3cGEREDVzlgHw==","signatures":[{"sig":"MEUCIQC4v3q1XD9isNbfE9mwl0EN+q+Tr3nwU5if30TyczqVXwIgVX10Wt7nhGxsRGRAwvvrdYHxlYQYXIs/oTjAh2x/UDk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2038267},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.6.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.6.tgz","_integrity":"sha512-xSCwQFqmVwyTC1vZp4gDeyShPZh5OQXqsYp6ly3S45+eja2UOdAsjQxYKqqBrXQfFonwhXKuS3cGEREDVzlgHw==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.6_1780951707998_0.7159686053958425","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"agent-conveyor","version":"0.1.7","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.7","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"72ad5d573359ab0c09b0495c31dc9844ce8fe4d0","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.7.tgz","fileCount":88,"integrity":"sha512-BK4JiRIN6G+BZ3+uqEiF8M912AwZtRtCHpVIGFwHoaza/DjkGqQeupDMZXCB3gdjepr3yfjrzxYsJM3jFh4IUQ==","signatures":[{"sig":"MEUCIF567LAZ15497xGjCjJG7fRnJyQjtKhtwO9vS+lx/l7hAiEAvVyZtXYjPxkJNotDECtyh4LeR2zWzn/sxDnnPSxiRjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2049287},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"neonwatty","email":"jermwatt@gmail.com"},"repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"10.9.8","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.7_1780969417974_0.8830314680750704","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"agent-conveyor","version":"0.1.8","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.8","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"9d95e097354555196785430c3efdc3a82c4912ff","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.8.tgz","fileCount":88,"integrity":"sha512-h1Dk/zHNDTVSAJGtW2nLXpoyxLvZ7/pU2IZ4HKgJRqsI1kmCrLdNfPIVzzn5VbUelWdN8J9Z3cSJkMu6eo+guw==","signatures":[{"sig":"MEUCIEf/GPBdKKUX0/AD5K1D/VgKeVrIg/Gu7U0h4GPMeXWVAiEA4AArkJZn/l7I9hedmZSdVu40dPyIdBncAViWrpaRHMM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2100178},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.8.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.8.tgz","_integrity":"sha512-h1Dk/zHNDTVSAJGtW2nLXpoyxLvZ7/pU2IZ4HKgJRqsI1kmCrLdNfPIVzzn5VbUelWdN8J9Z3cSJkMu6eo+guw==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.8_1781181972719_0.32100901180896235","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"agent-conveyor","version":"0.1.9","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.9","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"961afee79b8d68467d4e5f5a8d2c02978d9108fc","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.9.tgz","fileCount":91,"integrity":"sha512-Q7xWrw8+zpvOQkvVYb2J6pHB83aH1STcshzWfv7bozkH3RLvVfu+ZaBCbF85/fLPGc8LKNhIucKT4bWgv0AWKQ==","signatures":[{"sig":"MEYCIQD9+WD4aoOmkBxaM3zJgDXrJVhxbPMKvvRRY4yjDGxDPgIhALm8zmXNnfQywAZM0rHNsS/4tDiqbeivjDkT2r1Gz+Ah","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2150045},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.9.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.9.tgz","_integrity":"sha512-Q7xWrw8+zpvOQkvVYb2J6pHB83aH1STcshzWfv7bozkH3RLvVfu+ZaBCbF85/fLPGc8LKNhIucKT4bWgv0AWKQ==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.9_1781219482139_0.40590391018623007","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"agent-conveyor","version":"0.1.10","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.10","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"f3cf7fa4ba8cc138c76d6dfbf1cc8b7ffa344851","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.10.tgz","fileCount":91,"integrity":"sha512-blg3AED2TazVYOioRVA4mixVu7hF7xImSHulc7+NOZiUN+1CSt9B4bAuEe+L6JLtIhHqr0BTZm/wkHiPq3WuwA==","signatures":[{"sig":"MEQCIAfSkkrPzld2pCFf3nX7JxJzpZZERKAB2PY/VHcMFcNSAiB+D+HeGUap7eSbdeST1SQj3cjw0S2WDXkrQeR4Aum53w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2168315},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.10.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.10.tgz","_integrity":"sha512-blg3AED2TazVYOioRVA4mixVu7hF7xImSHulc7+NOZiUN+1CSt9B4bAuEe+L6JLtIhHqr0BTZm/wkHiPq3WuwA==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.10_1781229811806_0.4598832545034959","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"agent-conveyor","version":"0.1.11","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.11","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"5031bab3f1c0dde8191ef9082c92bc31c3393881","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.11.tgz","fileCount":91,"integrity":"sha512-9DJ14W6ZJFdNY573Iegs2ttNd059GiGKQrs0MvOZnn2F1o+gb4nmJHBnxXUvQ6z+71P0GMAfYZ86C/0pnebDKw==","signatures":[{"sig":"MEYCIQDSkUDZcTqgBZBfVcpKvvoo+iGNr9uXWCGPV82PWZRjMQIhAN2lxEK5Z0eUzllKA91LD0XAb9x0Tj2gjjFrXMN59bWN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2172131},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.11.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.11.tgz","_integrity":"sha512-9DJ14W6ZJFdNY573Iegs2ttNd059GiGKQrs0MvOZnn2F1o+gb4nmJHBnxXUvQ6z+71P0GMAfYZ86C/0pnebDKw==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.11_1781266902773_0.9472775201714048","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"agent-conveyor","version":"0.1.12","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.12","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"39606e20f3422d4b8a4e53f15de109a56f3cd8c8","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.12.tgz","fileCount":91,"integrity":"sha512-YRM5KZtmtYCBtEyIwq+1KITK2b3/TaMv+esoO5cJFG6jfLw2O7B9gHgu57kKxqZPIVsEGbY519W8O+AETLtG4w==","signatures":[{"sig":"MEUCIQCqhaX9dpis6PXB/hVYfv4QAM/B0Q4cYMk85FIScLFF3AIgQsXNDf4qYpXCLZZBwmPLOmr7VVzzC1yYcOpQcGLQQKM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2193680},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.12.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.12.tgz","_integrity":"sha512-YRM5KZtmtYCBtEyIwq+1KITK2b3/TaMv+esoO5cJFG6jfLw2O7B9gHgu57kKxqZPIVsEGbY519W8O+AETLtG4w==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.12_1781285844913_0.3291719513203344","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"agent-conveyor","version":"0.1.13","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.13","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"8fa41b8241f73fcae8f1b39c5f107d2d91522270","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.13.tgz","fileCount":91,"integrity":"sha512-R8Txy39ywyOONe0bRn/1ofHe5JpZxh0cP0/kvmI6mFrjL8DLVHHg7v+hNqz6ji8vGZYCqMnzPeHxCqsvBIpxMw==","signatures":[{"sig":"MEUCIQDKbbS4jq8VzmvWVhM+q4NUNzl7ALuf3e7cHjGJwafl1QIgOpmDwzynGT+gw5ZEG37SJGn2vvlhlExEQNeMB5XAY74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2208785},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.13.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.13.tgz","_integrity":"sha512-R8Txy39ywyOONe0bRn/1ofHe5JpZxh0cP0/kvmI6mFrjL8DLVHHg7v+hNqz6ji8vGZYCqMnzPeHxCqsvBIpxMw==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.13_1781318036853_0.25451181572674364","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"agent-conveyor","version":"0.1.14","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.14","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"7219f87e401f7e5539e193f4bf85d471d45d415e","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.14.tgz","fileCount":91,"integrity":"sha512-WIPR3EZqqCMtyvbqOpJP+C+PW9YJIRm6Y6QBKS+jyU7iybYYjcYnUhKBwVYZaErVgUV2suICMTun/SQ7qRx7SA==","signatures":[{"sig":"MEUCIQCpHlDd/jP9PX8gRuaRw4iw2P1kUXTikEqkF5dixneDCwIgHoWMXvbvvYNx0oiR+EkaL9m1kTXJ8PUv4Wa0WfwrhJM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2266430},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.14.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.14.tgz","_integrity":"sha512-WIPR3EZqqCMtyvbqOpJP+C+PW9YJIRm6Y6QBKS+jyU7iybYYjcYnUhKBwVYZaErVgUV2suICMTun/SQ7qRx7SA==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.14_1781542586907_0.47028860415799434","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"agent-conveyor","version":"0.1.15","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.15","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"dd7e293c17beaae5c0a6333a9173503b39eaf212","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.15.tgz","fileCount":94,"integrity":"sha512-U5p0zYdOvF+03BDWHDoOcu7XHSD6J/DiQsezlU0Qo/l5u4Hy1P9OGttXTu2Ze7EIOx0eeJuo6EpPqdFXo4lgtQ==","signatures":[{"sig":"MEYCIQCn0xgdyPYXg888uM/QOARO4Ba+bJ3qyBA2RlfSbMfSXAIhAIyHP+M51yJK9tRLpDUxsIOSF5BwhxvxaMQdJbEBX8zG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2387172},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.15.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.15.tgz","_integrity":"sha512-U5p0zYdOvF+03BDWHDoOcu7XHSD6J/DiQsezlU0Qo/l5u4Hy1P9OGttXTu2Ze7EIOx0eeJuo6EpPqdFXo4lgtQ==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.15_1781823200810_0.2829880211903322","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"agent-conveyor","version":"0.1.16","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.16","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"5394e1df71455a0209b289f7a07ca116f3dbe7e0","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.16.tgz","fileCount":94,"integrity":"sha512-1a/yd0yrLDf7XyID6trMypqm0j0FK4+RephxWOEeLNeialjQxNQH2Oq6hy1GNPjh63sHztu4tIkmTkc8Jg3iRA==","signatures":[{"sig":"MEUCIFnhvD5C8AK3jInNi689uGzvjnihsLq7WwP3qJVkk4iAAiEAmkqlXRYwnl62f7Ud5XbKFjBu9GBzanzyVRU8jfT6pEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2389724},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.16.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.16.tgz","_integrity":"sha512-1a/yd0yrLDf7XyID6trMypqm0j0FK4+RephxWOEeLNeialjQxNQH2Oq6hy1GNPjh63sHztu4tIkmTkc8Jg3iRA==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.16_1781872685087_0.7426265376149626","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"agent-conveyor","version":"0.1.17","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.17","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"077d4294f1df7e06220fa01b417ab8c44ca61fdb","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.17.tgz","fileCount":94,"integrity":"sha512-mDXd8sTjenRwpUVOVWmnnWEUsTHX9sPWlyYUA8+FSeanuqt+IBTiN36RNPTaSDYWaO8e3cIeFbkhCuEzwCBTHQ==","signatures":[{"sig":"MEQCIE9ZRI1uLqjCYORnDpKqgKi0VdbrC4fiiwHHWNR5e4Y3AiBFkUVtN0PTcOQ8/DPD7FOPO3/kTKzM51qRdyVtpows3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2397934},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.17.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.17.tgz","_integrity":"sha512-mDXd8sTjenRwpUVOVWmnnWEUsTHX9sPWlyYUA8+FSeanuqt+IBTiN36RNPTaSDYWaO8e3cIeFbkhCuEzwCBTHQ==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.17_1781880536457_0.5949848679065919","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"agent-conveyor","version":"0.1.18","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.18","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"900a06aefe4f2d9a5fa7924b1bd3f8aafaeb617f","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.18.tgz","fileCount":94,"integrity":"sha512-zI9SpJkyJf/HwhJ0k1Ds+VFPKamH1MfEwzMSrkJYheyGOr4kEzprk0+7HeJS7nKr+9Lsg4HuVuzrsddn1vgJLA==","signatures":[{"sig":"MEQCIDQ02dLYF2j0jElydlrhGz4FWVwwnPPjdNHcL2f9rshJAiBN8Yp2y/+KqpACrG4U+JkEcljR5KQKq9yy05pvYC1jxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2410018},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.18.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.18.tgz","_integrity":"sha512-zI9SpJkyJf/HwhJ0k1Ds+VFPKamH1MfEwzMSrkJYheyGOr4kEzprk0+7HeJS7nKr+9Lsg4HuVuzrsddn1vgJLA==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.18_1781883892075_0.8450521924922199","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"agent-conveyor","version":"0.1.19","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.19","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"b3800e260b938d40eae568d0cdec55fe5c393640","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.19.tgz","fileCount":94,"integrity":"sha512-QbsH0AQsssBciPvK11a7WtUmtV67s9tT1SYXdTzMiZ7Pg0leRsYnJguPr5a1bBZOD01ITPp8hOK/5FRafOxvAQ==","signatures":[{"sig":"MEUCIQCRGFgedH//ZNqan51u0SikzyaLdQKbXnnnuffWys73WwIgPrXv+zbzXXZOk+qvI9SpERq4QPW3sDPzR5Gq93Cb0wY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2417863},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.19.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.19.tgz","_integrity":"sha512-QbsH0AQsssBciPvK11a7WtUmtV67s9tT1SYXdTzMiZ7Pg0leRsYnJguPr5a1bBZOD01ITPp8hOK/5FRafOxvAQ==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.19_1781888079357_0.8999015709077074","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"agent-conveyor","version":"0.1.20","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.20","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"46c54463a3bc94570c161ad5b12c80721e2b8488","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.20.tgz","fileCount":98,"integrity":"sha512-rej3yEcXcueGmrEfPYmgNG9SkKMxKixo5DabqI/uS9eJEIZeSzXizmGGWw9HChffks5TrvyJfE33kqhr408UAA==","signatures":[{"sig":"MEUCIGypw/oh1fIbVBNFd1Cjsdhb5HXC5/IoW7natwT3ftFrAiEA9jSRASqvfGY5znXpgMTgeZErJ4jujT7ULj00rUPfnik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2440174},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.20.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.20.tgz","_integrity":"sha512-rej3yEcXcueGmrEfPYmgNG9SkKMxKixo5DabqI/uS9eJEIZeSzXizmGGWw9HChffks5TrvyJfE33kqhr408UAA==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.20_1781909884268_0.17437892918905118","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"agent-conveyor","version":"0.1.21","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.21","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"a66f2d93e31855acc2f65731f7403361ba7f398e","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.21.tgz","fileCount":99,"integrity":"sha512-Xt9tBXWxFS+O7xPt+7S/FScOZHd+8tNNUHYVx8uy2okvFnQiFdiTsP4Z4IbwDNgx5dGRZxGCsVoh3lAcpmb1JA==","signatures":[{"sig":"MEQCIAEgJdbKLSIeBSMfoitWJ+b9FUc+fbdnmc+7XI/0dNYZAiBKSoIGY8ucvDt5A9lbINFsCZ8PaUuDyg6ebzoiEFlx9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2444636},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.21.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.21.tgz","_integrity":"sha512-Xt9tBXWxFS+O7xPt+7S/FScOZHd+8tNNUHYVx8uy2okvFnQiFdiTsP4Z4IbwDNgx5dGRZxGCsVoh3lAcpmb1JA==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.21_1781958357293_0.025926838440224476","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"agent-conveyor","version":"0.1.22","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.22","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"346b1cd3a8f32cae4bbbc7c360960c7282139648","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.22.tgz","fileCount":100,"integrity":"sha512-HGxU8WthfaHs3t+dQ8RnQm8MUEhLmYIRsWDVg2Y2HA5yadVGZqd/hyBLgyTEFrlcPlAn1GpnB8VgHERG8v3WhA==","signatures":[{"sig":"MEQCIEiouW28WMpDuNeVBf4wzoxOEmHZAfxg+Av1kVfPVKKwAiB3WDgnT2+4iPq8p8C8rt5DiilsT1f2IdDHxaR+pPGquw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2478364},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.22.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.22.tgz","_integrity":"sha512-HGxU8WthfaHs3t+dQ8RnQm8MUEhLmYIRsWDVg2Y2HA5yadVGZqd/hyBLgyTEFrlcPlAn1GpnB8VgHERG8v3WhA==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.22_1782003217874_0.36735283033262256","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"agent-conveyor","version":"0.1.23","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.23","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"d640d8361e2157559226182aadd2126e56aeb1f5","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.23.tgz","fileCount":101,"integrity":"sha512-leEeCJ+HeeHTjrRjY8RLlCwCo0IF+VBeYHgtY5eIyfl06IIeYbIjV0kmfoCHj71RK2BmeebvucTwc9fJHns+PA==","signatures":[{"sig":"MEUCIQCTJqYa6uTzaxMZUR78fgaKa9UgARg3XeBGIket9ymNgQIgTgNTxUGZ6/9qex/p3scv1sj7L0k5Q3y7xAN89lw2FTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2526472},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.23.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.23.tgz","_integrity":"sha512-leEeCJ+HeeHTjrRjY8RLlCwCo0IF+VBeYHgtY5eIyfl06IIeYbIjV0kmfoCHj71RK2BmeebvucTwc9fJHns+PA==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.23_1782080420626_0.1907484255238081","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"agent-conveyor","version":"0.1.24","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.24","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"005f6350544e3cd2cdbc86c806308f9b8479e33f","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.24.tgz","fileCount":101,"integrity":"sha512-eh5nssvPUPTSPk04v7Tb+SDCIz7Ttz1hXGv1X9UPClLwKj00fX2Axkl8z5OCJvKgd8HmEyjU3PLON1MxEfMcaw==","signatures":[{"sig":"MEQCIGbQVnSeUKX5OUnE5USH/jAUlRIklKZ8RkP/WEKgMal5AiA9wfPnnT4pz66rre51ng6iei5JQoi0AhfYN4Zj8mNMWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2531192},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.24.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.24.tgz","_integrity":"sha512-eh5nssvPUPTSPk04v7Tb+SDCIz7Ttz1hXGv1X9UPClLwKj00fX2Axkl8z5OCJvKgd8HmEyjU3PLON1MxEfMcaw==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.24_1782089723404_0.12398207867641009","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"agent-conveyor","version":"0.1.25","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"license":"MIT","_id":"agent-conveyor@0.1.25","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"homepage":"https://github.com/neonwatty/agent-conveyor#readme","bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"dist":{"shasum":"47f139468bb0509101ade74fcdc68691c1d31602","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.25.tgz","fileCount":101,"integrity":"sha512-9X3jqJ18GOmG8ZDNs3xYh5t4EsnaZoyibHUHi5XPTXBeB7PvCQ2CZg6Az2wArtR6dLrIdE4tl3vaegmFfrT6Mw==","signatures":[{"sig":"MEYCIQCxKhCr/qTgn03y1mhxL39v3G9UZZUwdyLWZGzkUUjp8gIhANoBQRn3vTMZYjjcbhzDPFq7qYTuxgO2tWzYv4KA2W2A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2547360},"main":"./dist/index.js","type":"module","_from":"file:dist-release/agent-conveyor-0.1.25.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"knip":"npm run build:cli && knip","lint":"eslint .","test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","prepack":"rm -rf dist/cli && npm run build:cli","build:cli":"tsc -p tsconfig.cli.json","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepublishOnly":"node scripts/prepublish-guard.mjs","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.25.tgz","_integrity":"sha512-9X3jqJ18GOmG8ZDNs3xYh5t4EsnaZoyibHUHi5XPTXBeB7PvCQ2CZg6Az2wArtR6dLrIdE4tl3vaegmFfrT6Mw==","repository":{"url":"git+https://github.com/neonwatty/agent-conveyor.git","type":"git"},"_npmVersion":"11.13.0","description":"Local agent manager/worker conveyor control plane for Codex sessions.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.3","vite":"^7.2.4","react":"^19.2.0","express":"^5.1.0","react-dom":"^19.2.0","@xterm/xterm":"^5.5.0","@playwright/test":"^1.60.0","@xterm/addon-fit":"^0.10.0","@vitejs/plugin-react":"^5.1.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.15.0","eslint":"^10.4.1","globals":"^17.6.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/express":"^5.0.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-conveyor_0.1.25_1782091791389_0.2931687525575708","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"agent-conveyor","version":"0.1.26","description":"Local agent manager/worker conveyor control plane for Codex sessions.","license":"MIT","type":"module","bin":{"conveyor":"dist/cli/main.js","workerctl":"dist/cli/main.js"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/program-name.d.ts","default":"./dist/cli/program-name.js"}},"scripts":{"test":"node dashboard/scripts/run-tests.mjs","build":"npm run build:cli && npm run build:dashboard","build:cli":"tsc -p tsconfig.cli.json","build:dashboard":"tsc -p dashboard/tsconfig.json && vite build --config dashboard/vite.config.ts","lint":"eslint .","knip":"npm run build:cli && knip","migration:audit":"node scripts/ts-migration-audit.mjs","migration:audit:final":"node scripts/ts-migration-audit.mjs --require-zero-python","check":"npm run lint && npm run knip && npm test -- --runInBand && npm run build","dashboard":"tsx dashboard/server/index.ts","docs:landing":"node scripts/serve-landing-page.mjs","prepack":"rm -rf dist/cli && npm run build:cli","prepublishOnly":"node scripts/prepublish-guard.mjs"},"engines":{"node":">=20.19"},"keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"repository":{"type":"git","url":"git+https://github.com/neonwatty/agent-conveyor.git"},"bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"homepage":"https://github.com/neonwatty/agent-conveyor#readme","dependencies":{"@homebridge/node-pty-prebuilt-multiarch":"^0.13.1","@playwright/test":"^1.60.0","@vitejs/plugin-react":"^5.1.0","@xterm/addon-fit":"^0.10.0","@xterm/xterm":"^5.5.0","express":"^5.1.0","react":"^19.2.0","react-dom":"^19.2.0","vite":"^7.2.4","ws":"^8.18.3"},"devDependencies":{"@eslint/js":"^10.0.1","@types/express":"^5.0.5","@types/node":"^24.10.1","@types/react":"^19.2.6","@types/react-dom":"^19.2.3","@types/ws":"^8.18.1","eslint":"^10.4.1","globals":"^17.6.0","knip":"^6.15.0","tsx":"^4.21.0","typescript":"^5.9.3","typescript-eslint":"^8.60.1"},"_id":"agent-conveyor@0.1.26","_integrity":"sha512-K+EuK8gKOtmgGIBmL8UoNU/vImkbiwQi8Rv2GzdZJ5ldKZ6Q+cHfNhyzFJ/1UGdxFIhPKC4EFL17NnSC1p8EFg==","_resolved":"/Users/runner/work/agent-conveyor/agent-conveyor/dist-release/agent-conveyor-0.1.26.tgz","_from":"file:dist-release/agent-conveyor-0.1.26.tgz","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-K+EuK8gKOtmgGIBmL8UoNU/vImkbiwQi8Rv2GzdZJ5ldKZ6Q+cHfNhyzFJ/1UGdxFIhPKC4EFL17NnSC1p8EFg==","shasum":"acae833099cb5dfc7d5fae3d0e2ca8ef532f2723","tarball":"https://registry.npmjs.org/agent-conveyor/-/agent-conveyor-0.1.26.tgz","fileCount":101,"unpackedSize":2552252,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent-conveyor@0.1.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDtvrKbRGww7+N4bgQR10K+Cq/tn0m/xMq3+azCuRIBIgIgYfChobMp8ndcja4wxXI3XzzwF9K+2iQrwFgcN49g+NY="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1acde2a-0896-4d23-86ed-cbadfd7381ab"}},"directories":{},"maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-conveyor_0.1.26_1782143349615_0.1739536424409811"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-06T18:13:11.561Z","modified":"2026-06-22T15:49:10.156Z","0.1.0":"2026-06-06T18:13:11.960Z","0.1.1":"2026-06-06T21:36:15.709Z","0.1.2":"2026-06-07T12:51:27.313Z","0.1.3":"2026-06-07T23:57:49.508Z","0.1.4":"2026-06-08T14:14:14.784Z","0.1.5":"2026-06-08T20:34:08.928Z","0.1.6":"2026-06-08T20:48:28.192Z","0.1.7":"2026-06-09T01:43:38.101Z","0.1.8":"2026-06-11T12:46:12.918Z","0.1.9":"2026-06-11T23:11:22.420Z","0.1.10":"2026-06-12T02:03:32.000Z","0.1.11":"2026-06-12T12:21:42.969Z","0.1.12":"2026-06-12T17:37:25.101Z","0.1.13":"2026-06-13T02:33:57.057Z","0.1.14":"2026-06-15T16:56:27.073Z","0.1.15":"2026-06-18T22:53:20.992Z","0.1.16":"2026-06-19T12:38:05.305Z","0.1.17":"2026-06-19T14:48:56.655Z","0.1.18":"2026-06-19T15:44:52.260Z","0.1.19":"2026-06-19T16:54:39.526Z","0.1.20":"2026-06-19T22:58:04.471Z","0.1.21":"2026-06-20T12:25:57.468Z","0.1.22":"2026-06-21T00:53:38.106Z","0.1.23":"2026-06-21T22:20:20.759Z","0.1.24":"2026-06-22T00:55:23.577Z","0.1.25":"2026-06-22T01:29:51.569Z","0.1.26":"2026-06-22T15:49:09.832Z"},"bugs":{"url":"https://github.com/neonwatty/agent-conveyor/issues"},"license":"MIT","homepage":"https://github.com/neonwatty/agent-conveyor#readme","keywords":["agent","codex","conveyor","manager-worker","workflow-automation"],"repository":{"type":"git","url":"git+https://github.com/neonwatty/agent-conveyor.git"},"description":"Local agent manager/worker conveyor control plane for Codex sessions.","maintainers":[{"name":"neonwatty","email":"jermwatt@gmail.com"}],"readme":"# Codex Terminal Manager\n\nA Mac-first prototype for letting one Codex session supervise and gently steer\nanother Codex session running in a terminal.\n\nThe goal is not full autonomy. The goal is lightweight supervision for Codex\ntasks that mostly need progress checks, occasional nudges, test reruns, or\nclean stop/resume handling.\n\n## Motivating Principles\n\n- **Project workflows often need nudging.** Some Codex tasks do not need a\n  second implementer; they need a manager that keeps watching, asks for status\n  at the right time, unblocks predictable terminal prompts, and gently steers\n  the worker back toward the user's goal.\n- **Useful acceptance criteria often emerge during the work.** Even when the\n  user starts with a plan, implementation reveals new edge cases, missing tests,\n  unclear polish requirements, and follow-up decisions. The manager should help\n  discover, record, defer, satisfy, and audit these emergent acceptance criteria\n  instead of assuming the whole checklist can be known up front.\n- **Supervision should be durable and replayable.** Manager observations,\n  nudges, interrupts, handoffs, compaction requests, and final decisions should\n  leave enough structured history to understand why the worker was pushed and\n  what evidence supported finishing or continuing the task.\n\n## Burden Of Proof\n\nBefore declaring work complete, try to disprove the change. Identify the\nstrongest realistic failure mode, verify it with a command, test, trace,\nscreenshot, audit record, diff, or direct inspection, and include that evidence\nin the final handoff. Treat `done`, `tests passed`, worker claims, passing\nhappy-path tests, generated summaries, and optimistic UI as claims, not proof.\nTreat unverified assumptions as blockers or explicit follow-ups.\n\nSee `docs/agent-evidence-playbook.md` for the repo-specific evidence ladder,\nreceipt options, and final handoff shape agents should use when closing out\nwork.\n\n## Architecture\n\nSupervision is built on three primitives: **sessions**, **tasks**, and\n**bindings**.\n\n- **Worker session.** A Codex session running inside a named `tmux` session.\n  Workers own a rollout JSONL on disk (`~/.codex/sessions/.../rollout-*.jsonl`)\n  which Agent Conveyor ingests for state inference.\n- **Manager session.** A Codex session running anywhere — Ghostty, iTerm2,\n  Terminal.app, or a web terminal. The manager does not need to run inside\n  tmux. Its job is to call `conveyor` commands, read their JSON output, and\n  decide whether to nudge, interrupt, finish, or wait.\n- **Task.** A unit of supervised work. A task has a goal and optional\n  summary/manager instructions.\n- **Binding.** A row that ties one worker session and one manager session to\n  one task. Bindings are explicit and durable.\n\nThe manager Codex drives the supervision loop by calling\n`conveyor cycle <task>` repeatedly. Each cycle ingests new events from the\nworker's rollout, captures the worker's tmux pane as a shadow signal, and\nreturns structured JSON. The manager reads that JSON and decides what to do.\n\n`tmux` owns the worker PTY. Ghostty, iTerm2, Terminal.app, or `ttyd` can be\nviewers, but they should not be the source of truth for orchestration.\n\n```text\nmanager terminal\n  Codex manager session\n    |\n    | runs conveyor commands (cycle, session-nudge, ...)\n    v\ntmux session: codex-worker-a\n  pane 1: Codex worker session\n  pane 2: optional dev server, tests, or logs\n\n.codex-workers/\n  workerctl.db         <- authoritative SQLite control plane\n  worker-a/            <- ignored runtime artifacts\n    status.json\n    transcript.txt\n    events.jsonl\n```\n\n## Non-Goals\n\n- Cross-platform support.\n- Browser-first orchestration.\n- Full terminal emulator automation.\n- Autonomous merging or destructive git actions.\n- Managing many workers at once.\n\n## Install\n\nFor users, install the published Agent Conveyor package with npm:\n\n```bash\nnpm install -g agent-conveyor\nconveyor install-skills\nconveyor doctor\n```\n\nThe package name is `agent-conveyor`. The installed CLI exposes both\n`conveyor` and the compatibility command `workerctl`. `conveyor install-skills`\ninstalls the `manage-codex-workers` and `codex-review` skills into\n`$CODEX_HOME/skills` or `~/.codex/skills`. The `codex-review` install includes\nthe guarded review helper used by the QA and PR closeout flows.\n\nFor contributors working from this checkout, use the local installer instead:\n\n```bash\nscripts/install-local --write\nexport PATH=\"$PWD/bin:$PATH\"\n```\n\nTo test unreleased packaging changes before publish, install a local npm\ntarball into a temporary prefix:\n\n```bash\nnpm run build\nnpm pack\ntmp_prefix=\"$(mktemp -d)\"\nnpm install -g --prefix \"$tmp_prefix\" ./agent-conveyor-*.tgz\nPATH=\"$tmp_prefix/bin:$PATH\" conveyor --help\nPATH=\"$tmp_prefix/bin:$PATH\" workerctl --help\n```\n\n`conveyor doctor --json` reports local dependency health (tmux, codex, etc.),\npackage/bin resolution, Codex home, installed operator plugin version, installed\noperator skills, and an `operator_ready` summary for Codex app manager/worker\nsetup.\n`conveyor db-doctor` initializes and checks the SQLite control-plane\ndatabase.\nOn Node versions where `node:sqlite` is still marked experimental, SQLite\ncommands can also print an `ExperimentalWarning` to stderr while returning\nsuccessful JSON. Treat that warning as expected Node runtime noise when the\ncommand exits 0 and the JSON result reports `\"ok\": true`.\nBefore publishing `agent-conveyor` to npm, use\n[`docs/package-release.md`](docs/package-release.md).\nThe preferred publish path is the manual GitHub Actions `publish.yml` workflow\nwith npm Trusted Publishing enabled for the `npm-production` environment. Use\n`publish=false` for artifact review and `publish=true` only for an approved\nrelease version that is not already on npm.\n\nFor common manager setups, start with\n[`docs/manager-recipes.md`](docs/manager-recipes.md). It maps natural-language\nrequests such as GoalBuddy conveyor runs, test coverage loops, UX polish loops,\nwhat-next nudging, PR/CI/merge Ralph loops, and autonomous ship-it loops to\nconcrete `manager-config` settings, permissions, evidence gates, cleanup\nbehavior, and example\nmanager/Dispatch/worker interactions. Use `conveyor manager-recipes --list`\nor `conveyor manager-recipes --show goalbuddy-conveyor --json` for a\nmachine-readable setup preview.\nFor a package-facing overview of these modes, open\n[`docs/landing-page.html`](docs/landing-page.html) locally or host it as a\nstatic landing page. From the repo, `npm run docs:landing` serves it at\n`http://127.0.0.1:8765/`.\nThe GitHub Pages version lives at\n[`neonwatty.github.io/agent-conveyor`](https://neonwatty.github.io/agent-conveyor/).\nPages deploys from the protected `landing-page` branch through the\n`Pages` GitHub Actions workflow; propose public landing-page edits against\nthat branch rather than relying on ordinary `main` package PRs to publish the\nsite.\nPull requests into `landing-page` run the `Landing Page PR` workflow, which\nchecks linting, unused exports/files, tests, build output, the landing-page\nscreenshot gate, and a diff-scoped max-lines guard for changed text files.\nUse `node scripts/check-landing-page.mjs` for a docs-only desktop/mobile\nscreenshot gate; this does not run the full package release smoke.\n\n### Codex Operator Plugin\n\nAgent Conveyor also ships Codex-app-only operator scaffolding for visible\nmanager/worker sessions from any project. Install the package, then install\nand inspect the plugin:\n\n```bash\nnpm install -g agent-conveyor\nconveyor install-plugin\nconveyor doctor --json\n```\n\nThe per-project default ledger for operator sessions is\n`.codex-workers/workerctl.db`. The initial included skills are\n`conveyor-app-wake-relay`, `conveyor-smoke-app-connections`,\n`conveyor-create-pair`, `conveyor-create-worker-set`,\n`conveyor-check-status`, and `conveyor-whats-next-nudger`.\n\nAfter install, the intended Codex app entry point is natural language. Open a\nnew Codex app session in the target repo and say:\n\n```text\nUse the conveyor-create-pair skill.\n\nSet up a Codex app Ralph loop for issue CTL.\nRequire adversarial proof before another worker iteration.\n```\n\nFor multiple workers, start with `Use the conveyor-create-worker-set skill`.\nThe installed plugin skill should call the `conveyor` CLI, choose names, create\nthe no-tmux binding with `create-disposable-binding`, point the worker at\n`worker-inbox`, and use `loop-status` plus telemetry receipts before reporting\nthat the loop is ready. Pair and worker-set skills run\n`conveyor-smoke-app-connections` before real task work by default. Required\nsmoke first checks package/plugin/ledger/thread metadata, then starts a\nnonce-scoped `app-smoke` session and blocks real work until the worker has\naccepted smoke and delivered the manager report, then the manager validates\nthat report. Both roles need visible app-thread send receipts, fresh app\nheartbeats, durable received/accepted acknowledgements, and an\n`app-smoke status` result with `real_work_allowed=true`. The plain CLI records\nand evaluates receipts; the Codex app skill/operator layer must perform live\n`send_message_to_thread` delivery and record `sent`, `blocked`, or\nskipped/advisory evidence. If a smoke role blocks and later succeeds, the later\naccepted receipt for the same smoke id/nonce becomes the current terminal role\nstate. After required smoke passes, pair and worker-set skills start\n`app-autopilot` before real work so the just-proved sessions keep polling. A\nsetup is autonomous only when the emitted heartbeat automation specs have been\napplied and recorded with `app-autopilot record-automation`, or explicitly\ndeferred as `manual-poll only`; smoke-passed by itself only proves connection\nplumbing at that moment.\nWhen the manager is itself running in the Codex app and\nthread tools are available, the skill should first call `create_thread` for a\nfresh same-project worker, name it with `set_thread_title`, pass the returned\nthread identity through `--worker-codex-app-thread-id` and\n`--worker-codex-app-thread-title`, and use `send_message_to_thread` only to\ndeliver the generated `worker_handoff` bootstrap prompt. The raw terminal\n`conveyor` CLI does not create Codex app threads by itself; if app thread tools\nare unavailable, open a separate Codex app worker manually and paste the\n`worker_handoff` prompt. After a worker consumes a manager instruction, its\ncompletion or blocker report must go back through the generated\n`enqueue-notify-manager` command and a bounded Dispatch watch tick; a direct\nCodex app final answer is not a durable manager receipt.\nThe live manager and worker sessions should also be readable as the primary\noperator transcript: after consuming an inbox item, the consuming session must\nprint `CONVEYOR POLL`, `CONVEYOR RECEIVED`, `WORK`, `CONVEYOR SEND`, and\n`DISPATCH` sections while the turn is happening. SQLite/replay/status output is\naudit proof, not a replacement for the live session story. Idle polls may be a\nsingle `CONVEYOR IDLE` line.\n\nFor bounded follow-up passes after the first worker result, use\n`Use the conveyor-whats-next-nudger skill`.\n\nFor stale Codex app roles, use `Use the conveyor-app-wake-relay skill`. It\nruns `app-wakeup-dispatch`, sends only prepared `send_ready=true` prompts with\nCodex app thread tools, and records `sent`, `skipped`, or `blocked` delivery\nreceipts with `app-wakeup-record-delivery`. The app-thread prompt wakes the\nsession to poll; it is not durable task truth.\n\nDispatch is core infrastructure for supervised worker/manager pairs. The\n`pair` workflow starts a detached Dispatch watch process by default so worker\ncompletion is routed to the bound manager mechanically. For manually bound\npairs, run Dispatch in a separate shell:\n\n```bash\nconveyor dispatch --watch --dispatcher-id dispatch-local\n```\n\nUse `conveyor qa-plan dispatch-completion` for a bounded verification flow, or\n`conveyor qa-plan ralph-loop` for the repeated PR/CI/merge/context-clear\ndogfood loop.\nUse `conveyor qa-plan adversarial-triggers` to verify natural-language\nmanager prompts activate Ralph-loop adversarial gates.\nUse `conveyor qa-plan goalbuddy-conveyor` when a broad request should become\nsequential GoalBuddy child boards with PR/CI/merge receipts.\nUse `conveyor qa-plan ship-it-loop` when a manager is allowed to push a branch,\nopen a PR, monitor CI, resolve bounded conflicts, and merge only after explicit\nmanager-owned merge evidence.\nBefore cutting a manager loose, have it resolve the freeform setup request to a\nnamed recipe from `docs/manager-recipes.md` or an explicit `custom` setup, then\nshow the saved mode, permissions, evidence gates, cleanup policy, and disallowed\nactions.\nFor manual QA, launch the dashboard with Dispatch enforcement so the page can\nshow live proof:\n\n```bash\nconveyor dashboard --task <task> --ensure-dispatch --dispatcher-id qa-dispatch-dashboard\n```\n\n## Quickstart\n\nThe fastest way to start a worker and register it is a single command:\n\n```bash\n# One command: spawn codex in tmux, wait for it to come up, register as worker\nconveyor start-worker --name foo --cwd \"$PWD\" --task \"Refactor auth\"\n\n# Register a manager. Managers do not need to run inside tmux.\nMGR_PID=$$   # if your current shell is the manager; otherwise find its pid\nconveyor register-manager --name foo-mgr --pid $MGR_PID --cwd \"$PWD\"\n\n# Create a task and bind the pair to it.\nconveyor tasks --create my-task --goal \"Refactor auth\"\nconveyor bind --task my-task --worker foo --manager foo-mgr\n\n# Start Dispatch in another shell so worker completion wakes the manager.\nconveyor dispatch --watch --dispatcher-id dispatch-local\n\n# One observation cycle. Returns JSON.\nconveyor cycle my-task\n\n# Optionally nudge the worker through its tmux pane.\nconveyor session-nudge foo \"What's your current state?\"\n\n# When the task is complete:\nconveyor finish-task my-task --reason \"auth refactor merged\" --capture-transcript-before-stop --stop-manager --stop-worker\nconveyor unbind --task my-task\nconveyor deregister foo\nconveyor deregister foo-mgr\n```\n\nFor manual registration of a pre-existing Codex session:\n\n```bash\n# Start a Codex worker inside a fresh tmux session.\ntmux new-session -d -s codex-foo\ntmux send-keys -t codex-foo \"codex\" Enter\n# (Wait a moment for codex to come up.)\nWORKER_PID=$(pgrep -f \"codex.*--sandbox\" | head -1)\n\n# Register the worker. lsof auto-discovers the rollout JSONL from the pid.\nconveyor register-worker --name foo --pid $WORKER_PID \\\n  --cwd \"$PWD\" --tmux-session codex-foo\n```\n\nIf `lsof` discovery fails (e.g. the codex session was started ephemerally),\npass the rollout path explicitly with `--codex-session\n~/.codex/sessions/.../rollout-...-<uuid>.jsonl`.\n\nTo register a manager session that's already running:\n\n```bash\n# If the codex is already running and you know its pid:\nconveyor register-manager --name my-mgr --pid 28975\n\n# register-manager runs `lsof -p <pid>` to find the rollout JSONL.\n# If the codex hasn't written its rollout yet (no input typed),\n# you'll get a hint asking you to type something in the codex prompt and retry.\n\n# Or pass --codex-session explicitly to bypass the lsof probe:\nconveyor register-manager --name my-mgr --pid 28975 \\\n    --codex-session /path/to/rollout.jsonl\n```\n\nNote: `lsof` is the canonical pid→rollout lookup. `find -newermt` is unreliable because\nfilesystem mtime resolution and parsing of \"X minutes ago\" varies — `lsof` reads the open fd directly.\n\nFor low-risk verification without a real task, `conveyor start-test\n<name>` creates a worker, asks it to update only its ignored\n`status.json`, and leaves the tmux session attached:\n\n```bash\nconveyor start-test live-test --cwd \"$PWD\" --accept-trust --open\ntmux attach -t codex-live-test\n```\n\n## Commands\n\n### Campaigns\n\n- `campaign create --name C --objective TEXT [--metadata-json JSON] [--json]` —\n  Create a campaign record for a multi-worker initiative.\n- `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]` —\n  Add a named worker slot to a campaign. If `--session-id` is supplied, the\n  runtime verifies that it is a registered worker session.\n- `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]` —\n  Attach or refresh worker-session and Codex app thread metadata for an existing\n  campaign slot. Supplying `--session-id` requires a registered worker session.\n- `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]` —\n  Record a campaign-owned worker slot rotation. The command refuses to update\n  the slot unless `OLD` matches the slot's current Codex app thread id.\n- `campaign archive-slot --name C --slot SLOT_ID --expected-thread-id CURRENT [--json]` —\n  Mark a campaign worker slot archived only when the expected current thread id\n  matches the slot record.\n- `campaign brief --name C --channel CH --brief-json JSON [--json]` —\n  Upsert the structured brief for a channel.\n- `campaign assign --name C --slot SLOT_ID --title TEXT --instructions TEXT [--status queued|active|blocked|done|cancelled] [--metadata-json JSON] [--json]` —\n  Create a slot-scoped assignment.\n- `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]` —\n  Record a structured creative asset receipt. Assignment-scoped receipts are\n  one-per-assignment by default; use `--allow-additional-receipt` only for\n  intentional variants or revisions.\n- `campaign status --name C [--json]` —\n  Show campaign metadata, worker slots, channel briefs, assignment counts, and\n  asset receipt counts.\n- `campaign dashboard --name C [--json]` —\n  Show a manager-oriented campaign aggregate: worker slot lifecycle states,\n  blockers, approval counts, and the next recommended manager action. This is\n  also the supported way to inspect asset receipts and per-slot receipt counts;\n  there is no separate `campaign assets` subcommand.\n- `campaign closeout --name C [--failure-mode TEXT] [--json]` —\n  Produce a read-only closeout report from the campaign dashboard, including\n  verdict, worker thread ids, blockers, receipt counts by assignment, proof\n  checks, and the strongest realistic failure mode evidence to carry into a\n  manager/operator handoff.\n\nCreative Ops Campaign manager loop:\n\n```bash\nconveyor campaign create --name \"$CAMPAIGN\" \\\n  --objective \"Produce reviewable channel assets.\" --json\nconveyor campaign add-slot --name \"$CAMPAIGN\" --slot-key tiktok \\\n  --role-label \"TikTok worker\" --channel tiktok \\\n  --thread-id \"$TIKTOK_THREAD_ID\" --thread-title \"TikTok Worker\" \\\n  --state active --json\nconveyor campaign brief --name \"$CAMPAIGN\" --channel tiktok \\\n  --brief-json '{\"format\":\"9:16\",\"review_gate\":\"human approval before publish\"}' --json\nconveyor campaign assign --name \"$CAMPAIGN\" --slot \"$SLOT_ID\" \\\n  --title \"Draft TikTok hooks\" \\\n  --instructions \"Create reviewable draft copy only; do not publish.\" \\\n  --status active --json\nconveyor campaign asset --name \"$CAMPAIGN\" --slot \"$SLOT_ID\" \\\n  --assignment \"$ASSIGNMENT_ID\" --asset-type copy \\\n  --title \"TikTok hooks v1\" --status needs_review \\\n  --prompt-summary \"Sanitized prompt summary only.\" --json\nconveyor campaign dashboard --name \"$CAMPAIGN\" --json\nconveyor dashboard --campaign \"$CAMPAIGN\" --ensure-dispatch\n```\n\nUse `campaign rotate-slot` or `campaign archive-slot` only with the exact\ncurrent `--expected-thread-id` for that campaign slot. Public publishing,\nscheduling, posting, external account access, private phone content, raw audio,\ntokens, JWTs, keys, archives, and IPAs require explicit human approval or must\nstay out of receipts.\n\n### Sessions and binding\n\n- `start-worker --name N [--cwd D] [--task \"...\"] [--sandbox SANDBOX] [--ask-for-approval ASK_FOR_APPROVAL] [--accept-trust] [--timeout-seconds N]` —\n  Spawn Codex in a fresh tmux session and register it as a worker in one call.\n  The fastest way to start a supervised worker. Internally: `tmux new-session`\n  + `codex` + poll for rollout + `register-worker`.\n- `start-manager --name N [--cwd D] [--task T] [--task-goal G] [--worker W] [--sandbox SANDBOX] [--ask-for-approval ASK_FOR_APPROVAL] [--accept-trust] [--timeout-seconds N]` —\n  Spawn Codex in a fresh tmux session and register it as a manager in one call.\n  Mirrors `start-worker` but uses a manager bootstrap prompt instead of a worker\n  task prompt. When `--task`, `--task-goal`, and `--worker` are supplied, the\n  bootstrap is ready for late attach: it names the task, goal, worker session,\n  and concrete `manager-config`, `cycle`, `manager-ack`, and `worker-ack`\n  commands. If manager config has already been recorded for the task, the\n  bootstrap tells the manager to start with `cycle` instead of asking setup\n  questions again. Without those flags, the bootstrap asks the manager to\n  collect the missing supervision details before cycling.\n- `pair --task T --worker-name W --manager-name M [--cwd D] [--task-prompt PROMPT] [--task-goal GOAL] [--task-summary S] [--manager-objective O] [--manager-guideline G ...] [--manager-acceptance A ...] [--sandbox SANDBOX] [--ask-for-approval ASK_FOR_APPROVAL] [--accept-trust] [--timeout-seconds N] [--dispatcher-id ID] [--no-dispatch]` —\n  One-shot: spawn worker + manager and bind to a task in a single command. Combines\n  `start-worker` + `start-manager` + `bind`. The task is looked up or created (if\n  `--task-goal` is provided); if the task does not exist and no goal is given, an\n  error is raised with a hint. The worker receives the optional `--task-prompt` as\n  its initial Codex prompt; the manager receives a manager bootstrap prompt with\n  the task, goal, worker name, manager configuration status, and `cycle` commands.\n  `pair` records a default guided manager config before launching the manager, so\n  retries against an existing task do not fall back into setup-question mode.\n  If manager config flags are supplied (`--manager-mode`,\n  `--manager-objective`, repeated `--manager-guideline`,\n  `--manager-acceptance`, `--manager-reference`, or manager permission flags),\n  those values are merged into the seeded config and the bootstrap tells the\n  manager to start supervising with `cycle` instead of asking setup questions\n  first. Manager acceptance entries are also seeded into the living\n  acceptance criteria ledger when they do not already exist for the task. By\n  default `pair` starts a detached `dispatch --watch` process after successful\n  worker/manager setup, bind, and run creation. Use `--dispatcher-id` to set its\n  identity or `--no-dispatch` for isolated/manual workflows. A live dispatch\n  heartbeat is reused only when it has the same dispatcher id; otherwise `pair`\n  starts the requested dispatcher so audit receipts keep the configured\n  identity.\n  If the manager or bind fails after the worker is spawned, the worker remains\n  registered and can be cleaned up with `conveyor deregister`.\n  Use `--accept-trust` only for directories you intentionally trust; it retries\n  Enter during startup discovery so fresh workspaces do not stall before\n  registration.\n- `register-worker --name N [--pid P | --codex-session PATH] [--cwd D] [--tmux-session S] [--codex-app-thread-id ID] [--codex-app-thread-title TITLE]` —\n  Register an already-running Codex session as a worker. Rollout JSONL is\n  auto-discovered from the pid via `lsof` unless `--codex-session` is given.\n  The optional Codex app thread flags are metadata supplied by the Codex app\n  skill/tool layer; they help humans identify the app thread but do not change\n  rollout ingest or Dispatch delivery.\n- `register-manager --name N ...` — Same arguments; tmux is not required.\n  Both registration commands print a `communication` object. When\n  `--tmux-session` is present, `communication.session_kind='tmux'`,\n  `receive_style='push'`, and `delivery_mode='push'`; without tmux but with a\n  Codex rollout identity, `session_kind='codex_app'`, `receive_style='pull'`,\n  and `delivery_mode='pull_required'`, with the role-specific inbox polling\n  command template. The generated command may include a local\n  `PATH=.../bin:$PATH conveyor` prefix; preserve that prefix when sending the\n  command to a Codex app thread.\n- `deregister <name>` — Mark a session gone. Refuses if the session is bound\n  to an active task.\n- `sessions [--role worker|manager] [--state active|gone|all] [--include-legacy]\n  [--name N ...] [--redact-identity-token]` — List registered sessions.\n  By default, `sessions` shows active registered sessions and hides Phase 1 backfill rows (legacy pre-redesign workers/managers, identified by `pid IS NULL`) plus rows marked `state='gone'`. Pass `--state all` to show every row, or `--state gone` to inspect only gone rows:\n  ```bash\n  conveyor sessions                    # active registered sessions only\n  conveyor sessions --state active     # explicit equivalent of the default\n  conveyor sessions --state gone       # gone sessions only\n  conveyor sessions --state all        # active, gone, and legacy rows\n  conveyor sessions --name <session> --redact-identity-token\n  ```\n  For shareable QA evidence, prefer repeating `--name` for just the sessions in\n  scope and include `--redact-identity-token`; unfiltered output can include\n  unrelated active sessions and their registration tokens.\n  Each session row includes the same `communication` block emitted by\n  registration, so managers can detect whether a worker or manager is\n  tmux-push capable or must poll its mailbox.\n- `tasks [--create NAME --goal G --summary S]` — List or create tasks.\n- `create-disposable-binding TASK [--worker NAME] [--manager NAME] [--template TEMPLATE | --required-before-continue TYPE] [--adversarial] [--worker-codex-app-thread-id ID] [--worker-codex-app-thread-title TITLE] [--manager-codex-app-thread-id ID] [--manager-codex-app-thread-title TITLE]` —\n  Create a no-tmux manager/worker binding for real Ralph-loop slices. The\n  helper creates the task when missing, marks it managed, writes valid Codex\n  rollout JSONL files, registers worker and manager sessions with\n  `tmux_session=null`, binds them, optionally creates a template-backed or\n  custom Ralph-loop policy run, and prints replay commands for Dispatch,\n  `loop-status`, per-session `communication` metadata, plus a `worker_handoff`\n  prompt that tells Codex app workers to keep polling their worker inbox\n  through the bounded loop using the exact generated command. For pull-required\n  Codex app sessions, the JSON output also includes\n  `heartbeat_recommendations` with role-specific poll prompts; Dispatch can\n  deliver into those inboxes, but a heartbeat or operator wake-up is still\n  required to make an idle app thread poll autonomously. The worker handoff and\n  worker heartbeat prompt also include the exact durable\n  `enqueue-notify-manager` and one-iteration `dispatch --watch` commands that a\n  worker must run after completing or blocking on a consumed item. Those prompts\n  require live session transcript blocks for consumed items, so the operator can\n  inspect the actual Codex app sessions and see the same flow the durable inbox\n  later proves. Those\n  recommendations also include `wakeup_dispatch_command` and\n  `delivery_receipt_commands` for\n  app-thread wake recovery. Use them to record sent, skipped, and blocked wake\n  outcomes after `app-wakeup-dispatch`; an app-thread send is not task\n  completion. The recommendations include a `teardown_policy`: an idle poll is\n  only a quiet interval, not a reason to delete or pause heartbeat automation;\n  heartbeat teardown belongs to the manager/operator after terminal closeout or\n  explicit operator instruction. For same-thread Codex app visible-session\n  dogfood, prefer `--template app_visible_build_loop` or a custom adversarial\n  gate; reserve cleanup-gated templates such as `build_then_clear` for flows\n  that create a fresh worker context or can record a real cleanup receipt\n  between iterations.\n  The optional\n  Codex app thread metadata is normally supplied after a Codex app manager has\n  used `create_thread` and `set_thread_title`; terminal-only users can omit it\n  and still use the manual no-tmux handoff.\n- `app-heartbeat TASK --role manager|worker [--dispatcher-id ID]\n  [--stale-after N] [--json]` — Record a Codex app/no-tmux manager or worker\n  heartbeat for the active binding and return that role's next poll commands.\n  Use this as the recurring heartbeat command for pull-required app sessions.\n- `app-loop-status TASK [--dispatcher-id ID] [--stale-after N] [--json]` —\n  Summarize manager lease, worker lease, Dispatch heartbeat, and next required\n  actions for an app-native Conveyor loop.\n- `app-wakeup-plan TASK [--dispatcher-id ID] [--stale-after N] [--json]` —\n  Emit exact manager and worker thread wake prompts, including app thread ids\n  and titles when present, for an operator or Codex app automation to send.\n- `app-wakeup-dispatch TASK [--dispatcher-id ID] [--stale-after N] [--json]` —\n  Prepare adapter-ready Codex app wake actions and record a telemetry receipt\n  for prepared, skipped, and blocked role wakeups. This command does not send\n  `send_message_to_thread`; the Codex app/operator layer sends prompts whose\n  actions report `send_ready=true`.\n- `app-wakeup-record-delivery TASK --role manager|worker --dispatch-receipt ID\n  --delivery-status sent|skipped|blocked [--thread-id ID] [--reason TEXT]\n  [--json]` — Record what the Codex app/operator layer did with a wake action.\n  `sent` is accepted only when the referenced `app-wakeup-dispatch` receipt has\n  a matching `ready_to_send` action with `send_ready=true` and the same thread\n  id; healthy roles must be recorded as `skipped`; missing-thread blockers and\n  failed app-thread sends must be recorded as `blocked` with a reason.\n- `app-autopilot start|stop|status|record-automation TASK [--dispatcher-id ID]\n  [--interval SECONDS] [--watch-iterations N] [--stale-after N]\n  [--quiet-after N] [--role manager|worker --automation-id ID] [--json]` —\n  Manage the pair-level app-native heartbeat policy for the active\n  manager/worker binding. `start` and `stop` write telemetry receipts and emit\n  the exact manager/worker Codex app heartbeat automation specs plus the\n  bounded Dispatch watch command. A plain shell CLI cannot call Codex app\n  thread tools, so create/pause those heartbeat automations from a Codex app\n  operator session using the emitted specs, then run `record-automation` once\n  per created role automation. Conveyor remains the durable source of truth\n  through Dispatch, inboxes, automation-applied receipts, wake receipts, and app\n  heartbeat status. `status` reports `plan.readiness`; do not call a loop\n  autonomous unless `plan.readiness.autonomous_ready=true`.\n  `status` also reports `plan.quiescence`: when the loop is healthy, has no\n  `next_actions`, and both roles have produced `--quiet-after` paired\n  heartbeats since the last command or inbox-consumption receipt, it recommends\n  `stop_autopilot` so operators can quiesce blocked/no-progress loops instead\n  of repeating idle pulses.\n- `app-smoke preflight|start|record|status TASK [--mode required|advisory|skip]\n  [--scope pair|worker-set] [--smoke-id ID] [--nonce NONCE]\n  [--role manager|worker] [--status sent|skipped|received|accepted|blocked]\n  [--thread-id ID] [--notification-id N] [--worker-count N] [--from-stdin]\n  [--json]` —\n  Record and evaluate the durable side of Codex app connection smoke. Required\n  mode blocks real work until the active binding has bound app thread ids,\n  nonce-matching send receipts, fresh app heartbeats after smoke start, worker\n  `received`, and manager/worker `accepted` receipts. Advisory mode reports the\n  same blockers without blocking, and skip mode records an explicit bypass. The\n  CLI does not call Codex app thread tools; use the\n  `conveyor-smoke-app-connections` plugin skill from a Codex app operator\n  session for live `send_message_to_thread` delivery. A smoke-passed operator\n  flow should immediately run `app-autopilot start` and handle the emitted\n  automation specs before sending real task prompts.\n- `app-worker-rotation-plan TASK --old-worker-thread-id ID [--require-handoff]\n  [--reason TEXT] [--json]` — Prepare a Codex app fresh-worker rotation. The\n  CLI verifies that `ID` exactly matches the active bound worker session before\n  emitting adapter-ready actions to create a replacement worker thread and\n  archive the old worker thread. Blocked plans contain no archive action.\n- `app-worker-rotation-record TASK --old-worker-thread-id OLD\n  --new-worker-thread-id NEW [--new-worker-thread-title TITLE]\n  --archive-status archived|blocked [--reason TEXT] [--json]` — Record the\n  result after the Codex app layer creates the replacement worker thread and\n  archives, or blocks on archiving, the old thread. The command re-checks active\n  binding ownership before updating the worker session to the new app thread id,\n  so a stale plan cannot archive or replace an unrelated thread.\n- `discover [QUERY] [--all] [--limit N]` / `search [QUERY]` — Search tasks,\n  registered sessions, active bindings, and recent telemetry in one JSON result.\n  Use this for conversational setup when a manager or Codex session needs to\n  present likely worker/manager/task connection options instead of asking the\n  user for generated names:\n  ```bash\n  conveyor discover dashboard\n  conveyor search \"auth refactor\"\n  ```\n  The output includes `tasks`, `sessions`, `bindings`, `telemetry`, and\n  `suggestions`; suggestions may include a ready-to-run `conveyor bind`\n  command or next-step prompts to register the missing worker or manager.\n- `handoff <task> --summary S [--next-step N ...] [--payload-json JSON]` —\n  Persist a compact worker handoff for the task. Use this when a worker is\n  becoming managed or before a long context transition so the manager can read\n  progress and likely next steps from SQLite.\n- `manager-config <task> [--mode light|guided|strict] [--objective O]\n  [--guideline G ...] [--acceptance A ...] [--reference R ...]\n  [--permit CATEGORY.ACTION ...] [--tool TOOL ...]\n  [--epilogue STEP ...] [--nudge-on-completion MODE] [--require-acks]\n  [--allow-pr] [--allow-merge-green] [--allow-worker-compact-clear]` —\n  Persist the manager's supervision contract: what to check against, how\n  structured the loop should be, acceptance criteria, source references, and\n  categorized permissions. With no recorded config it creates the default\n  guided config; with no mutating flags after that it prints the current config.\n  Use `--questions` from a manager Codex session to get a stable JSON question\n  schema to ask the user in chat, then save the answers with noninteractive\n  flags. Use `--interactive` only as a terminal fallback when a human is\n  running `conveyor` directly.\n  `--permit` grants taxonomy permissions such as `repo.open_pr`,\n  `repo.push_branch`, `repo.monitor_ci`, `repo.resolve_conflicts`,\n  `repo.merge_green_pr`, `verification.run_pytest`, `context.spawn_reviewer`,\n  `communication.notify_operator`, or `worker_session.compact`. Use `--tool`\n  to record expected verification/context tools, `--epilogue` for required\n  built-in finish steps (`run-tools`, `draft-pr`, `subagent-review`,\n  `record-handoff`), `--nudge-on-completion` for continuation review behavior\n  (`off`, `ask-operator`, `auto-review`, `auto-proceed`), and `--require-acks`\n  when `cycle`/`finish-task` should fail closed until both sides acknowledge.\n  Legacy flat flags and `--permissions-json` keys (`create_pr`,\n  `merge_green_pr`, `worker_compact_clear`, plus older `allow_*` aliases) are\n  still accepted and normalized into the categorized taxonomy.\n- `criteria <task>` — Track emergent acceptance criteria discovered during\n  supervision. Managers should add useful proposed criteria, accept must-have\n  items, defer follow-ups, and mark criteria satisfied only when worker\n  receipts and verification cover them.\n  ```bash\n  conveyor criteria my-task --list\n  conveyor criteria my-task --list --status accepted\n  conveyor criteria my-task --add --criterion \"...\" --source worker_proposed --status proposed\n  conveyor criteria my-task --add --criterion \"...\" --source manager_inferred --status accepted\n  conveyor criteria my-task --accept 12 --rationale \"Must-have for this task\"\n  conveyor criteria my-task --satisfy <id> --evidence-json '{\"command\":\"...\",\"status\":\"pass\"}'\n  conveyor criteria my-task --defer 13 --rationale \"Follow-up after this task\"\n  conveyor criteria my-task --reject 14 --rationale \"Duplicate or out of scope\"\n  ```\n  Replace placeholder `...` values with the actual criterion and verification\n  command. Use `worker_proposed` for criteria proposed by the worker. Use\n  `manager_inferred` for criteria inferred from manager config, cycle evidence,\n  or manager inspection; `manager_config` is not a valid criteria source.\n  To add a criterion and satisfy that same row after verification:\n  ```bash\n  criterion_id=$(conveyor criteria my-task --add --criterion \"Targeted prompt tests pass\" --source worker_proposed --status proposed | node -e 'const fs = require(\"fs\"); console.log(JSON.parse(fs.readFileSync(0, \"utf8\")).affected_criterion.id)')\n  conveyor criteria my-task --satisfy \"$criterion_id\" --evidence-json '{\"command\":\"npm test -- --runInBand\",\"status\":\"pass\"}'\n  ```\n  For mutation responses, treat `affected_criterion` as the authoritative\n  receipt for the row changed by that command. When a manager applies multiple\n  criteria changes, run `criteria <task> --list` before final audit or other\n  decisions; the list command is the canonical task-level criteria state.\n- `criteria-plan <task> --from-text ...|--from-worker-response PATH|--from-stdin\n  [--json]` — Draft reviewed `criteria --add` commands from a worker response\n  that separates must-have current-task criteria from deferred follow-ups. This\n  helper is read-only: it resolves the task and prints suggestions, but does not\n  mutate acceptance criteria, events, or commands. If a proposed criterion\n  appears to describe manager closeout mechanics such as `finish-task`,\n  `--require-criteria-audit`, heartbeat teardown, or final manager reporting,\n  the helper emits a non-blocking warning and classifies that suggestion as\n  manager closeout proof. Keep that proof in the manager final report, audit,\n  replay, or epilogue evidence instead of accepted worker/task criteria unless\n  the task is explicitly Conveyor closeout QA.\n  ```bash\n  conveyor criteria-plan my-task --from-worker-response response.md --json\n  ```\n- `manager-permission <task> <CATEGORY.ACTION|CATEGORY> [--list]\n  [--require] [--require-handoff]` — Check and audit whether the saved manager\n  config allows a categorized action, or list granted actions in a category.\n  Use `--require` when a manager command should fail closed. Use\n  `--require-handoff` before worker compact/clear style instructions so visible\n  context is persisted first.\n- `manager-recipes --list|--show RECIPE [--json]` — List or show built-in\n  manager setup recipes. Recipe JSON includes the supervision mode,\n  permissions, expected tools, epilogues, evidence gates, cleanup behavior,\n  disallowed actions, locked setup summary template, and suggested\n  `manager-config` command. Use this before cutting a manager loose.\n  `campaign-duplicate-guard-dogfood` is the recipe for visible creative\n  campaign dogfoods that prove accidental duplicate assignment receipts are\n  rejected unless a worker explicitly uses `--allow-additional-receipt`.\n- `worker-ack <task> --from-stdin|--json [--correlation-id ID]` /\n  `manager-ack <task> --from-stdin|--json [--correlation-id ID]` — Persist or\n  read the latest structured acknowledgement from the worker or manager. Acks\n  are revisioned and exposed to `cycle`, `replay`, and `audit` so startup\n  contract drift can be distinguished from later drift.\n- `continuation <task> --submit worker|manager --from-stdin\n  [--correlation-id ID]` — Record independent worker/manager \"what's next\"\n  proposals for a completion turn. The worker proposal must be written first,\n  and manager-side reads are redacted until the manager submits its own\n  proposal.\n- `continuation <task> --review --from-stdin [--correlation-id ID]` — Record a\n  structured reviewer verdict over the paired continuation proposals. This\n  requires `context.spawn_reviewer` permission and reviewer separation metadata\n  (`subagent_run.reviewer_session_id` distinct from the manager and\n  `manager_rollout_access=false`). Divergent reviews are routed for operator\n  attention unless `--nudge-on-completion auto-proceed` is configured.\n- `continuation-reviewer <task> --correlation-id ID --reviewer-session-id ID\n  --manager-session-id ID --reviewer-command ...` — Run a reviewer command with\n  the allowed read-only context on stdin, capture reviewer metadata, and persist\n  the structured review. The context includes paired proposals, acceptance\n  criteria, manager config summary, diff metadata, and recent PR metadata; it\n  does not include manager rollout context. Reviewer commands run from an\n  isolated temporary cwd with a stripped environment and, on macOS, through\n  `sandbox-exec`. The sandbox keeps the targeted denial of bound\n  worker/manager rollout files plus the active control database and sidecars,\n  and also denies direct reads of the active `.codex-workers` state root so\n  legacy session files, transcripts, capture metadata, task state, and exports\n  are not available through filesystem reads. The allowed reviewer context still\n  arrives on stdin, and replay/audit/export commands outside this reviewer\n  subprocess are unchanged. Sandbox setup failures, reviewer command failures,\n  timeouts, or invalid JSON are recorded as `verdict=stop`, not silent approvals.\n  Use `--dry-run` to inspect the exact context without running the command.\n- `continuation <task> --list [--as-role all|worker|manager|reviewer]\n  [--include-payload]` — List continuation proposals and reviews with\n  role-aware payload redaction.\n- `record-decision <task> <wait|nudge|interrupt|escalate|stop|inspect>\n  --reason R [--cycle-id N] [--payload-json JSON]` — Persist a manager\n  decision and print its id. Use this before strict mutating commands that\n  require `--decision-id`.\n- `compact-worker <task> --reason R [--clear] [--prompt-only]` — Convenience\n  wrapper that records a `nudge` manager decision, then sends Codex `/compact`\n  to the worker through the same strict audited path as\n  `request-worker-compact`. Use `--clear` to send `/clear`.\n- `request-worker-compact <task> --decision-id N --strict-decisions` — Send\n  Codex `/compact` to the worker through the audited path. Use `--clear` to\n  send `/clear`, or `--prompt-only` to send an explanatory prompt instead.\n  Fails closed unless `worker_compact_clear` is enabled in manager config and\n  a worker handoff exists. Records a durable command and audit events\n  before/after sending the worker instruction. `--dry-run` still records the\n  command in `commands`, `replay`, and `mutation-audit` with `dry_run: true`\n  and `sent: false`.\n  In Codex app threads, remote `/compact` or `/clear` sent through\n  `send_message_to_thread` is prompt text, not an executable slash command. Use\n  `app-worker-rotation-plan` plus Codex app `create_thread` and\n  `set_thread_archived` when fresh context is required for app-native workers.\n- `bind --task T --worker W --manager M` — Create the task binding.\n- `unbind --task T` — End the active binding for a task.\n- `finish-task <task> [--reason R] [--require-criteria-audit]\n  [--require-acks] [--require-epilogue] [--require-adversarial-proof]\n  [--stop-manager] [--stop-worker]\n  [--capture-transcript-before-stop]` — Mark a task done.\n  Leaves the manager terminal open by default for review. With\n  `--require-criteria-audit`, fails before finishing if any acceptance criteria\n  for the task are still `accepted`; `proposed`, `satisfied`, `deferred`, and\n  `rejected` criteria do not block. With `--require-acks`, fails if worker or\n  manager acknowledgement is missing. With `--require-epilogue`, fails if any\n  configured epilogue step is not succeeded. With `--require-adversarial-proof`,\n  fails before finishing unless the task has at least one satisfied criterion\n  with `evidence_type=adversarial_check` and non-empty `failure_mode`, `check`,\n  and `result` fields; use this when `tests passed` is not enough by itself.\n  With `--capture-transcript-before-stop`, captures transcript segments for any\n  worker/manager sessions being stopped before killing tmux sessions; capture\n  failure fails before stop side effects.\n- `stop-task <task> [--reason R] [--stop-worker]` — Force-stop a task's\n  manager (and optionally the worker), recording the reason in the audit\n  payload.\n- `stop <session>` — Stop a tmux-backed worker or manager session by name. This\n  works for both legacy worker records and session-table workers/managers. For a\n  completed task with an active binding, prefer an idempotent cleanup pass with\n  `finish-task <task> --stop-manager --stop-worker` so the task audit records\n  the cleanup against the binding.\n\n### Observation\n\n- `dashboard [--task T] [--campaign C] [--ensure-dispatch] [--dispatcher-id ID]\n  [--host 127.0.0.1] [--port 8797]` — Launch the\n  local live supervision cockpit. The dashboard binds to loopback by default,\n  uses the TypeScript backend to shell out to `conveyor` JSON commands, and\n  attaches interactive terminals to tmux-backed worker/manager sessions through\n  a WebSocket PTY bridge. It includes browser bootstrap controls for creating a\n  task, starting a worker/manager pair with `conveyor pair`, auto-attaching the\n  terminals, attach/bind controls, and audited action receipts for cycle,\n  nudge, interrupt, finish, and export. With `--campaign`, the observation rail\n  also shows campaign slot lifecycle, blockers, approval counts, and the next\n  manager action. With `--ensure-dispatch`, launch also ensures a Dispatch watch\n  process using the supplied `--dispatcher-id` when provided, reusing only a\n  fresh heartbeat from that same dispatcher id. Use `--dry-run --json` to\n  inspect the launch command.\n- `cycle <task> [--busy-wait-seconds N]` — One observation cycle. Idempotent. Runs `ingest`, computes\n  worker state from the JSON event stream, captures the tmux pane as a shadow\n  signal, writes a `manager_cycles` row, and returns a JSON dict the manager\n  Codex consumes. The `status_payload` includes:\n  - `worker_alive` / `manager_alive` — booleans computed by probing the registered session pids (`os.kill(pid, 0)`). `False` when the session's pid is `NULL` (legacy backfill) or the process has exited — useful for detecting silently-dead workers between cycles.\n  - `last_event_subtype` — the subtype of the most recent `codex_events` row for the worker, or `null` if no events exist.\n  - `task_completed` — `true` iff `last_event_subtype` is `\"task_complete\"`. Disambiguates \"worker finished cleanly\" from \"worker idle but never started.\"\n  - `manager_context` — the latest `manager-config`, worker/manager\n    acknowledgements, `handoff`, and `acceptance_criteria` records for the\n    task, so each manager loop can reference the saved objective, living\n    acceptance criteria, categorized permissions, expected tools, acked\n    contract, worker progress, and next steps.\n    `manager_context.acceptance_criteria`\n    groups criteria by status, includes summary counts, and exposes `open` as\n    accepted criteria that still need proof before finishing.\n    `manager_context.criteria_negotiation` is advisory: when `needed` is true,\n    the manager should ask the worker for must-have current-task criteria versus\n    follow-up criteria, then record the result with `conveyor criteria`. The\n    field does not send nudges or mutate criteria automatically.\n  \n  The `cycle` subcommand accepts `--busy-wait-seconds N` (default: 90) to tune the pane-signal classifier's stuck-busy threshold. Lower values flag stalls faster but increase false positives on long-running real work:\n  ```bash\n  conveyor cycle my-task                          # default 90s threshold\n  conveyor cycle my-task --busy-wait-seconds 30   # tighter detection\n  ```\n- `ingest <session>` — Pull new events from a session's rollout JSONL into\n  the `codex_events` table. Tracks a byte offset, so subsequent runs only\n  pick up new events.\n- `tail <session> [--limit N] [--subtype T] [--include-content]` — Print the\n  most recent events for a session, newest first. Text payload fields are\n  redacted by default; use `--include-content` only when stdout is redirected\n  or verbatim text is intentionally needed.\n- `divergences <task> [--limit N]` — Cycles whose shadow pane signal flagged\n  a notable pattern (trust prompt, rate-limit prompt, approval prompt, etc.).\n  Useful for auditing the shadow signal against the JSON state.\n- `dispatch [--once|--watch] [--limit N] [--interval SECONDS]\n  [--dispatcher-id ID] [--type notify_manager|nudge_worker|worker_task_complete]\n  [--watch-iterations N] [--lease-seconds N] [--dry-run] [--json]` — Run\n  Dispatch, the mechanical routing/actuation role.\n  `worker_task_complete` routing reads from `codex_events`, records\n  deduplicated `routed_notifications` keyed by the source event, and notifies\n  the bound manager without deciding task success. Explicit `notify_manager`\n  and `nudge_worker` command rows are atomically claimed, executed, and recorded\n  through `command_attempts` with conservative side-effect metadata. `--watch`\n  repeats polling with heartbeat telemetry; `--watch-iterations` bounds a watch\n  run for scripts and verification; `--lease-seconds` tunes command claim\n  recovery; `--once` performs one pass.\n- `enqueue-notify-manager <task> --message \"...\" [--correlation-id C]\n  [--required-permission P] [--idempotency-key K] [--json]` — Queue a `notify_manager` command row for\n  Dispatch to claim and deliver to the bound manager. Codex app/no-tmux\n  workers must use this route for completion and blocker reports after\n  consuming a manager instruction; direct app-thread final answers are local\n  text, not manager inbox receipts.\n- `enqueue-nudge-worker <task> --message \"...\" [--correlation-id C]\n  [--required-permission P] [--idempotency-key K] [--json]` — Queue a `nudge_worker` command row for\n  Dispatch to claim and deliver to the bound worker. Use this dispatcher-backed\n  route instead of `session-nudge` when the worker is registered without tmux;\n  the worker then receives the message through `worker-inbox`.\n- `session-inbox <session> [--consume-next] [--wait] [--timeout N]\n  [--interval N] [--limit N] [--json]` — List or consume unconsumed routed\n  notifications addressed to a registered session. Text output includes the\n  pending count, signal type, delivery mode, source/target sessions, delivered\n  timestamp, and correlation id. Use `--consume-next --wait --json` for Codex\n  app long-polling; consumed items emit `dispatch_inbox_consumed` telemetry.\n- `manager-inbox <task> [--consume-next] [--wait] [--timeout N] [--interval N]\n  [--limit N] [--json]` — Resolve the task's bound manager session and read its\n  dispatcher inbox.\n- `worker-inbox <task> [--consume-next] [--wait] [--timeout N] [--interval N]\n  [--limit N] [--json]` — Resolve the task's bound worker session and read its\n  dispatcher inbox.\n- `inbox-ack <task> --notification-id N [--json]` — Read durable\n  role-authored acknowledgement history for one routed notification.\n- `inbox-ack <task> --notification-id N --role manager|worker\n  --status received|accepted|blocked --from-stdin [--correlation-id C]\n  [--json]` — Record that the addressed role saw a delivered notification and\n  either received, accepted, or blocked on it. `received` requires delivery;\n  `accepted` and `blocked` require consumption. Use this after visible Codex app\n  sessions print `CONVEYOR RECEIVED`; do not use direct app-thread text as the\n  durable receipt. `--from-stdin` expects a JSON object, for example\n  `printf '%s\\n' '{\"summary\":\"accepted\",\"evidence\":[\"consumed notification\"],\"blockers\":[]}' | conveyor inbox-ack ... --from-stdin`.\n\n### Actuation\n\n- `session-nudge <name> \"<text>\" [--dry-run]` — Send text plus Enter to the\n  session's tmux pane. Requires the session to have been registered with\n  `--tmux-session`. Managers running outside tmux cannot receive nudges; only\n  workers do.\n- `session-interrupt <name> [--key K] [--followup T] [--dry-run]` — Send an\n  interrupt key (default `C-c`). Optional `--followup` text after the\n  interrupt.\n\n### Audit\n\n- `audit <task>` — Events history for a task. Lists `events`-table rows only.\n  `audit --json` redacts stored terminal/transcript content unless\n  `--include-content` is passed.\n- `replay <task> [--format compact|timeline|transcript|full-transcript]\n  [--role all|worker|manager] [--limit N] [--include-content]` — Render a\n  chronological, human-readable reconstruction of the task. Cycle entries\n  include `[pane pattern: <pattern_id>]` when the shadow signal flagged\n  something. `full-transcript` is blocked unless `--include-content` is passed.\n- `mutation-audit <task>` — Manager decisions and their consequences.\n- `events <name>` — Worker events log.\n- `commands [--task T] [--type T] [--state S] [--attempts]` — Durable\n  side-effect commands log. Use `--attempts` to include per-dispatcher attempt\n  history.\n- `epilogue <task> --step run-tools|draft-pr|subagent-review|record-handoff\n  [--json] [--correlation-id ID]` — Run one configured epilogue step and record\n  its durable state. Use `--list` or `--status` to inspect configured steps and\n  latest run results.\n- `telemetry [--run RUN] [--task TASK] [--search QUERY] [--summary] [--json]`\n  — Query local structured telemetry events, search them with SQLite FTS, or\n  print aggregate counts for a run/task. `telemetry snapshot --task <task>\n  --json` prints the task-scoped dashboard overview contract.\n- `telemetry task <task> --json` — Print a task-scoped telemetry triage view:\n  recent cycle history, last successful cycle, worker/manager liveness,\n  decisions, commands, failed cycles/commands, ingest skipped/error summaries,\n  pane capture failures and notable patterns, open criteria counts, telemetry\n  counts, and retained storage counts. Raw transcript, pane, prompt, criterion,\n  command payload, and command result bodies are not included.\n- `telemetry failures --json` — Print an operator failure triage view across\n  tasks: recent failed cycles, failed commands, ingest errors/skipped lines,\n  pane capture failures, open accepted criteria, active task/session health, and\n  retained storage counts without raw transcript or prompt content. Use `--task`,\n  `--run`, `--active-only`, or `--window 2h` to narrow the failure view for\n  recency or active-task triage.\n- `telemetry metrics --window 24h --json` — Print bounded JSON rollups for\n  local telemetry and related tables: active tasks/sessions, cycle and command\n  success/failure counts, ingest/skipped-line totals, criteria counts,\n  reconcile drift counts, export counts, and retained capture/transcript bytes.\n- `export-task <task> [--zip] [--include-transcripts]\n  [--include-full-transcripts]` — Dump task status, audit, prompts, transcript\n  metadata, and optional transcript segments/full transcript replay into an\n  export bundle. Exports include\n  `telemetry-events.json`, `telemetry-summary.json`, and\n  `telemetry-report.md`; see `docs/local-telemetry-workflow.md`.\n\n### Administration\n\n- `doctor` — Local dependency and tmux health check.\n- `doctor-self` — Verify the current Codex session can self-register.\n- `db-doctor` — SQLite schema health check.\n- `reconcile [--apply] [--stale-cycles-seconds N]` — Report (and optionally\n  fix) dead-pid sessions, dangling bindings, and stuck tasks. Default\n  stale-cycle threshold is 3600 seconds (1h); override with\n  `--stale-cycles-seconds N` to catch tasks where the manager has been silent\n  for shorter intervals. JSON output.\n- `prune [--keep-latest N] [--dry-run]` — Drop old transcript content while\n  preserving metadata.\n- `transcript-prune <task> [--keep-latest N]` — Same, scoped to a task.\n- `transcript-capture <task> [--role R] [--mode M]` — Capture deduplicated\n  transcript segments. JSON output redacts raw captured terminal output by\n  default.\n- `transcript-show <task> [--role R] [--include-content]` — Show stored\n  transcript segment metadata. Segment text is redacted unless\n  `--include-content` is passed.\n- `qa-plan <self-management|emergent-criteria|tmux-errors|dispatch-completion|ralph-loop|adversarial-triggers|goalbuddy-conveyor|ship-it-loop>` — Print a\n  repeatable manual QA checklist.\n- `qa-run <ralph-loop-guardrails|generic-loop-template|generic-loop-template-browser|test-coverage-loop|adversarial-triggers|build-clear-loop|ship-it-loop> --receipt-output RECEIPT.json [--path DB]` —\n  Run a deterministic no-tmux QA harness and save a JSON receipt.\n  `ralph-loop-guardrails` proves max-iteration cutoff, missing-evidence\n  cutoff, fresh retry delivery after structured `adversarial_check` evidence,\n  and the `pr_ci_merge_loop` preset evidence gate. `generic-loop-template`\n  proves the `visual_diff_loop` template blocks before visual evidence,\n  rejects unstructured adversarial evidence, and delivers only after required\n  visual receipts plus structured adversarial proof exist.\n  `generic-loop-template-browser` runs the same `visual_diff_loop` gate proof\n  with a browser-rendered static HTML candidate screenshot, recording browser\n  backend, viewport, candidate HTML, screenshot, visual diff, and structured\n  adversarial evidence in the saved receipt. It uses the repo's Node\n  Playwright dependency and requires Chromium to be installed and launchable;\n  when unavailable, it fails with the browser-backed QA helper message.\n  `test-coverage-loop` proves the `test_coverage_loop` template blocks before\n  coverage evidence, rejects malformed adversarial evidence, and delivers only\n  after a structured coverage receipt plus adversarial proof exist.\n  `build-clear-loop` proves the non-coverage `build_then_clear` template\n  blocks before `build_passed` and `cleanup` receipts, still blocks after build\n  evidence alone, and delivers only after both build and cleanup evidence exist.\n  `ship-it-loop` proves push, PR, and merge commands fail closed until their\n  permissions are granted, then proves the `ship_it_loop` lifecycle blocks\n  before branch, PR, CI, mergeability, manager decision, merge, post-merge, and\n  adversarial receipts exist.\n- `loop-triggers --list|--classify PROMPT [--json]` — List the controlled\n  natural-language loop triggers or classify a manager/operator prompt before\n  creating a loop policy or continuation gate. Approved trigger phrases include\n  the adversarial Ralph-loop, iteration, finish, worker-directed proof, and\n  manager-created adversarial criteria gates; generic caution like \"be careful\n  and run tests\" intentionally does not arm those gates.\n- `loop-templates --list|--show TEMPLATE|--create-run TASK --template TEMPLATE` —\n  List generic loop templates or create a template-backed loop policy run.\n  Template-backed runs use the same Dispatch guardrails as Ralph-loop presets:\n  `max_iterations` prevents over-looping, and `required_before_continue`\n  evidence blocks a manager continuation before worker delivery until matching\n  satisfied criterion evidence exists. `ralph-loop-presets` remains as a\n  compatibility alias for the current Ralph-loop QA flows. The built-in\n  `app_visible_build_loop` template requires `build_passed` plus structured\n  `adversarial_check` evidence, but no cleanup evidence, so visible Codex app\n  threads can continue without pretending that same-thread context was cleared.\n  The built-in\n  `visual_diff_loop` template requires `reference_artifact`,\n  `candidate_screenshot`, `visual_diff_report`, `diff_below_threshold`, and\n  `adversarial_check` evidence before a manager-requested next visual pass can\n  reach the worker. Quality-oriented templates (`app_visible_build_loop`,\n  `pr_ci_merge_loop`, `ship_it_loop`, `test_coverage_loop`, and\n  `visual_diff_loop`) also expose an\n  `artifact_requirements[\"adversarial_check\"]` object requiring\n  `failure_mode`, `check`, and `result` fields.\n- `loop-status TASK --run RUN [--json]` — Summarize a Ralph-loop run for manager\n  review: policy template, iteration bounds, command states, routed\n  notifications, worker inbox backlog, evidence types, consumed-inbox\n  and iteration-advanced telemetry, failure counts, and a recommendation.\n\nFor real vertical slices, start with the Ralph loop operator guide in\n`docs/qa/ralph-loop-operator-guide.md`. It explains the controlled\nnatural-language triggers, Dispatch authority model, worker inbox polling,\nrequired evidence, adversarial proof, `loop-status`, and telemetry review pass\nbar.\nUse `create-disposable-binding` when the manager and worker are Codex app or\nother no-tmux sessions and you want the same Dispatch rails without manual\ntask/session/bind setup. In a Codex app manager session, prefer a fresh\nsame-project `create_thread` worker plus `set_thread_title` before creating the\nbinding, then pass the worker thread id/title into Conveyor. Use `fork_thread`\nonly when the user explicitly asks to fork or resume this conversation. If app\nthread tools are unavailable, create the binding anyway and paste the returned\n`worker_handoff` prompt into a manually opened worker session. The handoff\nrequires a worker to report completion/blockers through\n`enqueue-notify-manager` plus a bounded Dispatch watch run before treating the\nmanager as notified, and to print the live `CONVEYOR POLL` / `CONVEYOR\nRECEIVED` / `WORK` / `CONVEYOR SEND` / `DISPATCH` transcript in the worker\nsession for any consumed item.\n- `enqueue-continue-iteration TASK --loop-run RUN --requested-iteration N` —\n  Queue a manager-requested next loop pass for Dispatch. The command refuses\n  same/current iteration requests before they become pending queue rows, while\n  Dispatch also blocks any stale same/current iteration command that reaches\n  the queue. Max-iteration and missing-evidence refusals remain Dispatch policy receipts.\n  JSON output includes `loop_policy`; delivered manager/worker inbox payloads\n  include the same `loop_policy` plus enriched `ralph_loop` metadata so tmux and\n  Codex app sessions can see the template, cleanup policy, required evidence,\n  artifact requirements, and recommended tools.\n- `loop-evidence add TASK --loop-run RUN --iteration N --evidence-type TYPE` —\n  Record a run-qualified evidence receipt for a loop policy. Use\n  `loop-evidence build-passed TASK --loop-run RUN --iteration N` as the\n  friendly alias for the common `evidence_type=build_passed` receipt. Use\n  `loop-evidence visual-diff` to compare PNG screenshots, write an optional\n  diff/report artifact, and record `visual_diff_report` plus\n  `diff_below_threshold` as satisfied only when the computed score is within\n  threshold.\n- `loop-evidence adversarial-check TASK --loop-run RUN --iteration N --failure-mode F --check C --result R` —\n  Record first-class adversarial proof for a loop iteration. Use it when a\n  manager or worker tried to disprove the iteration before continuing. The\n  receipt is stored as `evidence_type=adversarial_check` with structured\n  `failure_mode`, `check`, and `result` metadata and can satisfy Ralph-loop\n  continuation policy. See `docs/qa/adversarial-proof.md` for the receipt\n  shape and how it maps to manager prompts, Ralph-loop evidence, Dispatch\n  blocking, and audited finish.\n- `qa-plan goalbuddy-conveyor` — Print the reusable natural-language starter\n  prompt and QA contract for autonomous GoalBuddy conveyor runs. Use it when a\n  manager should split broad work into one parent board plus sequential\n  vertical-slice child boards with PR/CI/merge receipts, satisfied-on-main\n  proof, and adversarial review gates. See `docs/qa/goalbuddy-conveyor.md`.\n- `ralph-loop-presets --list|--show PRESET|--create-run TASK --preset PRESET` —\n  List saved Ralph-loop guardrail templates or create a preset-backed\n  `ralph_loop` policy run.\n- `import-compat` — Dry-run or import existing `.codex-workers/<worker>/`\n  artifacts into SQLite.\n\n### Worker setup\n\n- `create <name> --cwd D --task \"...\"` — Full worker creation: spawn a tmux\n  session, start Codex, send the initial worker contract.\n- `start <name> --cwd D` — Start a plain Codex session inside tmux without\n  registering a worker. Useful when you want to register it manually later.\n- `start-test <name>` — Low-risk verification worker that only updates its\n  ignored `status.json`.\n\n### QA Plans\n\nPrint repeatable live QA checklists from the CLI:\n\n```bash\nconveyor qa-plan self-management\nconveyor qa-plan emergent-criteria\nconveyor qa-plan emergent-criteria --json\nconveyor qa-plan tmux-errors\nconveyor qa-plan dispatch-completion\nconveyor qa-plan ralph-loop\nconveyor qa-plan adversarial-triggers\nconveyor qa-plan goalbuddy-conveyor\nconveyor qa-plan ship-it-loop\nconveyor qa-run ralph-loop-guardrails --receipt-output /tmp/ralph-loop-guardrails-receipt.json --json\nconveyo","readmeFilename":"README.md"}