{"_id":"@andysolomon/arc-orchestrator","_rev":"8-3bfe4464c0581ccb225faf1230fe694c","name":"@andysolomon/arc-orchestrator","dist-tags":{"latest":"0.66.1"},"versions":{"0.62.0":{"name":"@andysolomon/arc-orchestrator","version":"0.62.0","keywords":["coding-agent","orchestrator","multi-model","bun"],"license":"MIT","_id":"@andysolomon/arc-orchestrator@0.62.0","maintainers":[{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"}],"homepage":"https://github.com/andysolomon/arc-orchestrator#readme","bugs":{"url":"https://github.com/andysolomon/arc-orchestrator/issues"},"bin":{"arc-orchestrator":"plugins/arc-orchestrator/bin/arc-orchestrator"},"dist":{"shasum":"e5725692e5f2d85e870f4165d77cc2d247120058","tarball":"https://registry.npmjs.org/@andysolomon/arc-orchestrator/-/arc-orchestrator-0.62.0.tgz","fileCount":44,"integrity":"sha512-AGJUrhlJ1u+fGdloYWUla2qUN1gN6fbeg75vwQcutlqrx5dUflf86KGxpZG5VbiMlntCO2N4sXqUyHf+VcWR8w==","signatures":[{"sig":"MEUCIBErAkIU7vD63+0S07YH786UY7o9+TISIb4mDLzJqotKAiEAqYr0r0hfApZP9FY3TMgyOqNbB8qSIsB/ow2zs2AmSU0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676046},"type":"module","engines":{"bun":">=1.2.0"},"exports":{"./runner":"./plugins/arc-orchestrator/bin/arc-orchestrator","./package.json":"./package.json"},"gitHead":"3c9b9022e5a39c30940e3e3a5eecf97df0391052","scripts":{"test":"bun test","release":"semantic-release","validate":"claude plugin validate --strict . && claude plugin validate --strict ./plugins/arc-orchestrator && bun test","policy:check":"bun scripts/check-model-policy.mjs","package:check":"bun test test/npm-package.test.ts","generate:surfaces":"bun plugins/orchestrator-core/generate-surfaces.ts"},"_npmUser":{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"},"repository":{"url":"git+https://github.com/andysolomon/arc-orchestrator.git","type":"git"},"_npmVersion":"11.18.0","description":"Portable ARC multi-model orchestration runner.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","semantic-release":"^25.0.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.1","conventional-changelog-conventionalcommits":"^10.2.1"},"_npmOperationalInternal":{"tmp":"tmp/arc-orchestrator_0.62.0_1788691884512_0.19527094335117767","host":"s3://npm-registry-packages-npm-production"}},"0.63.0":{"name":"@andysolomon/arc-orchestrator","version":"0.63.0","keywords":["coding-agent","orchestrator","multi-model","bun"],"license":"MIT","_id":"@andysolomon/arc-orchestrator@0.63.0","maintainers":[{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"}],"homepage":"https://github.com/andysolomon/arc-orchestrator#readme","bugs":{"url":"https://github.com/andysolomon/arc-orchestrator/issues"},"bin":{"arc-orchestrator":"plugins/arc-orchestrator/bin/arc-orchestrator"},"dist":{"shasum":"6b1bf14138024a3550f0fde629b8b9590492194e","tarball":"https://registry.npmjs.org/@andysolomon/arc-orchestrator/-/arc-orchestrator-0.63.0.tgz","fileCount":44,"integrity":"sha512-NzMkodN6eGFL2pWw301uoyyz9S4poZZ1TowTWM5LEGuZu1IND/23UGSsd6ThU5uzNyNZCrDNhEHsjKOExjiUqg==","signatures":[{"sig":"MEUCIQDz456BHUFVY28wxln19tGwf8VIVGxJQkQXndVMp46eXAIgc0wMSw3LVIKBpgkbh0uQgdLYp711uw60f/elUzvW96s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679559},"type":"module","engines":{"bun":">=1.2.0"},"exports":{"./runner":"./plugins/arc-orchestrator/bin/arc-orchestrator","./package.json":"./package.json"},"gitHead":"b6efec614565817f2f8d8976cac006b412d12418","scripts":{"test":"bun test","release":"semantic-release","validate":"claude plugin validate --strict . && claude plugin validate --strict ./plugins/arc-orchestrator && bun test","policy:check":"bun scripts/check-model-policy.mjs","package:check":"bun test test/npm-package.test.ts","generate:surfaces":"bun plugins/orchestrator-core/generate-surfaces.ts"},"_npmUser":{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"},"repository":{"url":"git+https://github.com/andysolomon/arc-orchestrator.git","type":"git"},"_npmVersion":"11.18.0","description":"Portable ARC multi-model orchestration runner.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","semantic-release":"^25.0.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.1","conventional-changelog-conventionalcommits":"^10.2.1"},"_npmOperationalInternal":{"tmp":"tmp/arc-orchestrator_0.63.0_1789571255627_0.35689963969440597","host":"s3://npm-registry-packages-npm-production"}},"0.63.1":{"name":"@andysolomon/arc-orchestrator","version":"0.63.1","keywords":["coding-agent","orchestrator","multi-model","bun"],"license":"MIT","_id":"@andysolomon/arc-orchestrator@0.63.1","maintainers":[{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"}],"homepage":"https://github.com/andysolomon/arc-orchestrator#readme","bugs":{"url":"https://github.com/andysolomon/arc-orchestrator/issues"},"bin":{"arc-orchestrator":"plugins/arc-orchestrator/bin/arc-orchestrator"},"dist":{"shasum":"17fb933f9565bd72d8c8d1c096400bc40af18603","tarball":"https://registry.npmjs.org/@andysolomon/arc-orchestrator/-/arc-orchestrator-0.63.1.tgz","fileCount":44,"integrity":"sha512-kckHKPbSmdRNCDr/XUdpqHsM5GcrBeINCArgeNJO4roFhqphBpdLq06iVgLV2ZGM7ahgpwNWkYmKspoIbejkBg==","signatures":[{"sig":"MEUCIFBV84tGOHMaxWfYl1KF6yjcgbux9PF1ApW8hPDOoCLNAiEA8rhDoy6WpaZGsrlIaW4kS5N0/EFX05o3RXBHlTlMuQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679676},"type":"module","engines":{"bun":">=1.2.0"},"exports":{"./runner":"./plugins/arc-orchestrator/bin/arc-orchestrator","./package.json":"./package.json"},"gitHead":"2c40dfa78e71208562c095a46f6a9df8b918b65b","scripts":{"test":"bun test","release":"semantic-release","validate":"claude plugin validate --strict . && claude plugin validate --strict ./plugins/arc-orchestrator && bun test","policy:check":"bun scripts/check-model-policy.mjs","package:check":"bun test test/npm-package.test.ts","generate:surfaces":"bun plugins/orchestrator-core/generate-surfaces.ts"},"_npmUser":{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"},"repository":{"url":"git+https://github.com/andysolomon/arc-orchestrator.git","type":"git"},"_npmVersion":"11.18.0","description":"Portable ARC multi-model orchestration runner.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","semantic-release":"^25.0.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.1","conventional-changelog-conventionalcommits":"^10.2.1"},"_npmOperationalInternal":{"tmp":"tmp/arc-orchestrator_0.63.1_1789600774156_0.9542109992235803","host":"s3://npm-registry-packages-npm-production"}},"0.63.2":{"name":"@andysolomon/arc-orchestrator","version":"0.63.2","keywords":["coding-agent","orchestrator","multi-model","bun"],"license":"MIT","_id":"@andysolomon/arc-orchestrator@0.63.2","maintainers":[{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"}],"homepage":"https://github.com/andysolomon/arc-orchestrator#readme","bugs":{"url":"https://github.com/andysolomon/arc-orchestrator/issues"},"bin":{"arc-orchestrator":"plugins/arc-orchestrator/bin/arc-orchestrator"},"dist":{"shasum":"8cf7a0b2ca60047d53b27fd7175edf936fa1f013","tarball":"https://registry.npmjs.org/@andysolomon/arc-orchestrator/-/arc-orchestrator-0.63.2.tgz","fileCount":44,"integrity":"sha512-+nkmUkA4FHOmqEnPLUxU4tOBAgwv2kBO6g5pYynz9ykld1iZ0O3JL3vTAy/6c9zKeSl4q8/31gBecVGA9/zc9w==","signatures":[{"sig":"MEUCIDSwuECcuvuIoisxYG976T1UCkG0tTGqSG7U1OQT6p+eAiEA2LqkHE0fYP/pYiKuiHKFVe9fwe04+1qOsee2ApsrHr8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":683035},"type":"module","engines":{"bun":">=1.2.0"},"exports":{"./runner":"./plugins/arc-orchestrator/bin/arc-orchestrator","./package.json":"./package.json"},"gitHead":"09572f49fe3507c1aeb13b1b9e54b267fb454210","scripts":{"test":"bun test","release":"semantic-release","validate":"claude plugin validate --strict . && claude plugin validate --strict ./plugins/arc-orchestrator && bun test","policy:check":"bun scripts/check-model-policy.mjs","package:check":"bun test test/npm-package.test.ts","generate:surfaces":"bun plugins/orchestrator-core/generate-surfaces.ts"},"_npmUser":{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"},"repository":{"url":"git+https://github.com/andysolomon/arc-orchestrator.git","type":"git"},"_npmVersion":"11.18.0","description":"Portable ARC multi-model orchestration runner.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","semantic-release":"^25.0.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.1","conventional-changelog-conventionalcommits":"^10.2.1"},"_npmOperationalInternal":{"tmp":"tmp/arc-orchestrator_0.63.2_1789608782814_0.6516175529509638","host":"s3://npm-registry-packages-npm-production"}},"0.64.0":{"name":"@andysolomon/arc-orchestrator","version":"0.64.0","keywords":["coding-agent","orchestrator","multi-model","bun"],"license":"MIT","_id":"@andysolomon/arc-orchestrator@0.64.0","maintainers":[{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"}],"homepage":"https://github.com/andysolomon/arc-orchestrator#readme","bugs":{"url":"https://github.com/andysolomon/arc-orchestrator/issues"},"bin":{"arc-orchestrator":"plugins/arc-orchestrator/bin/arc-orchestrator"},"dist":{"shasum":"68d153264692dde8f9fd16277b37112ca28db4aa","tarball":"https://registry.npmjs.org/@andysolomon/arc-orchestrator/-/arc-orchestrator-0.64.0.tgz","fileCount":44,"integrity":"sha512-iinsm8glIT8iftqgMR5TJW14Qg6XzSf2SmSQ7+N4FQw91e/lMHjcTO4qlr+pdA4wRACMY/QymUQ4KqYffog8AA==","signatures":[{"sig":"MEUCIB1ZC/UKA5ToGKdcxkhwo9L87Ft6q5OhFx1vJzOH/gPyAiEAzX15JtuoSZGxCkr1fkhgxKZe5xfUGz0oUNm1IKkZUPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD/5s5N9+Cr5GIx5Lc055xOVrX5M6xcob7p/KWzidTCwAIgUaH5bNJC0RnyZDxh2Oo93m+rX/ODEJh4+iZSXWa34MU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":686850},"type":"module","engines":{"bun":">=1.2.0"},"exports":{"./runner":"./plugins/arc-orchestrator/bin/arc-orchestrator","./package.json":"./package.json"},"gitHead":"fbf4d039326902bbc2a1d79da6db4c086c73ab8f","scripts":{"test":"bun test","release":"semantic-release","validate":"claude plugin validate --strict . && claude plugin validate --strict ./plugins/arc-orchestrator && bun test","policy:check":"bun scripts/check-model-policy.mjs","package:check":"bun test test/npm-package.test.ts","generate:surfaces":"bun plugins/orchestrator-core/generate-surfaces.ts"},"_npmUser":{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"},"repository":{"url":"git+https://github.com/andysolomon/arc-orchestrator.git","type":"git"},"_npmVersion":"11.18.0","description":"Portable ARC multi-model orchestration runner.","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","semantic-release":"^25.0.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.1","conventional-changelog-conventionalcommits":"^10.2.1"},"_npmOperationalInternal":{"tmp":"tmp/arc-orchestrator_0.64.0_1790198249518_0.8390326476510281","host":"s3://npm-registry-packages-npm-production"}},"0.65.0":{"name":"@andysolomon/arc-orchestrator","version":"0.65.0","keywords":["coding-agent","orchestrator","multi-model","bun"],"license":"MIT","_id":"@andysolomon/arc-orchestrator@0.65.0","maintainers":[{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"}],"homepage":"https://github.com/andysolomon/arc-orchestrator#readme","bugs":{"url":"https://github.com/andysolomon/arc-orchestrator/issues"},"bin":{"arc-orchestrator":"plugins/arc-orchestrator/bin/arc-orchestrator"},"dist":{"shasum":"8d9f39cf262ed342ce1f68f91d2accd5d21704c1","tarball":"https://registry.npmjs.org/@andysolomon/arc-orchestrator/-/arc-orchestrator-0.65.0.tgz","fileCount":78,"integrity":"sha512-vBmImcbbXD9/KmUeODwAGCvIXcR118h3KFmLKWINXcFaHkmJGluuZ8t0vens6g+thoiZSOLcwnwAVAB+uNARGg==","signatures":[{"sig":"MEYCIQD8OYv3SYKEdL3Rvsjwt7L4LpW46ICpXaySxWTBSzP2JgIhAPa4CA+7cA+JEILLCjy+LGoK7ZJpu24AlnFna9D6nmaA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCuFgOqr3vyDnQPiuotPve/hE+NPXBDRlkewW32+E8ijwIhAL+D2YrGOPePDtPMD5RvmlW8KvQJWco79nq6jjYBRKpE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":970183},"type":"module","engines":{"bun":">=1.2.0"},"exports":{"./runner":"./plugins/arc-orchestrator/bin/arc-orchestrator","./package.json":"./package.json","./routing-core":"./packages/routing-core/src/index.ts","./routing-core/runtime":"./packages/routing-core/src/runtime.ts"},"gitHead":"da3729aff4db1e5bbaa7279ac12493f1465c1c1e","scripts":{"test":"bun test","release":"semantic-release","validate":"claude plugin validate --strict . && claude plugin validate --strict ./plugins/arc-orchestrator && bun test","policy:check":"bun scripts/check-model-policy.mjs","package:check":"bun test test/npm-package.test.ts","generate:surfaces":"bun plugins/orchestrator-core/generate-surfaces.ts","routing-core:check":"bun test test/routing-core","routing-core:export":"bun plugins/arc-orchestrator/bin/arc-orchestrator routing export"},"_npmUser":{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"},"repository":{"url":"git+https://github.com/andysolomon/arc-orchestrator.git","type":"git"},"_npmVersion":"11.18.0","description":"Portable ARC multi-model orchestration runner.","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","semantic-release":"^25.0.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.1","conventional-changelog-conventionalcommits":"^10.2.1"},"_npmOperationalInternal":{"tmp":"tmp/arc-orchestrator_0.65.0_1790515599284_0.39612744649351406","host":"s3://npm-registry-packages-npm-production"}},"0.66.0":{"name":"@andysolomon/arc-orchestrator","version":"0.66.0","keywords":["coding-agent","orchestrator","multi-model","bun"],"license":"MIT","_id":"@andysolomon/arc-orchestrator@0.66.0","maintainers":[{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"}],"homepage":"https://github.com/andysolomon/arc-orchestrator#readme","bugs":{"url":"https://github.com/andysolomon/arc-orchestrator/issues"},"bin":{"arc-orchestrator":"plugins/arc-orchestrator/bin/arc-orchestrator"},"dist":{"shasum":"b5507990e0a5590c1d119fd2b850a599f026fb9c","tarball":"https://registry.npmjs.org/@andysolomon/arc-orchestrator/-/arc-orchestrator-0.66.0.tgz","fileCount":78,"integrity":"sha512-wVFX+WiUQGIftbVkYSR/mv7lOM9nUtIiYoHlJuTsjLL6qvvRK+sMLTtcGtNCDpL/dPd2HAhhFaz/PaMZacfsVA==","signatures":[{"sig":"MEYCIQCx0TJ78qLltKK1vG/eZtUnAhhQS1mqu55KQc1uf9VK6gIhALISEnF4JZ3Zrhpin/h5aTR8ElrJpa7EuPnBxvvfyeTR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDEzz6qPoY7EaQKcniIyVYhE7FRlIu/xyrbgqYQY+CqYQIgU3/4NG4203/e4ogoeVVJ4VBlC8wQMGt9tSyzOPCZB54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":975714},"type":"module","engines":{"bun":">=1.2.0"},"exports":{"./runner":"./plugins/arc-orchestrator/bin/arc-orchestrator","./package.json":"./package.json","./routing-core":"./packages/routing-core/src/index.ts","./routing-core/runtime":"./packages/routing-core/src/runtime.ts"},"gitHead":"15ebbee059c87d8641358aded52158df91a74af0","scripts":{"test":"bun test","release":"semantic-release","validate":"claude plugin validate --strict . && claude plugin validate --strict ./plugins/arc-orchestrator && bun test","policy:check":"bun scripts/check-model-policy.mjs","package:check":"bun test test/npm-package.test.ts","generate:surfaces":"bun plugins/orchestrator-core/generate-surfaces.ts","routing-core:check":"bun test test/routing-core","routing-core:export":"bun plugins/arc-orchestrator/bin/arc-orchestrator routing export"},"_npmUser":{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"},"repository":{"url":"git+https://github.com/andysolomon/arc-orchestrator.git","type":"git"},"_npmVersion":"11.18.0","description":"Portable ARC multi-model orchestration runner.","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","semantic-release":"^25.0.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.1","conventional-changelog-conventionalcommits":"^10.2.1"},"_npmOperationalInternal":{"tmp":"tmp/arc-orchestrator_0.66.0_1790820196240_0.14229682262478827","host":"s3://npm-registry-packages-npm-production"}},"0.66.1":{"_id":"@andysolomon/arc-orchestrator@0.66.1","bin":{"arc-orchestrator":"plugins/arc-orchestrator/bin/arc-orchestrator"},"bugs":{"url":"https://github.com/andysolomon/arc-orchestrator/issues"},"dist":{"shasum":"2f1a2f2c15701949ce87368cd12802e50ba51576","tarball":"https://registry.npmjs.org/@andysolomon/arc-orchestrator/-/arc-orchestrator-0.66.1.tgz","fileCount":79,"integrity":"sha512-XISyn0Zuno808kEmobfk/LJy4N+7HNVQ5aAX17hqweEIoMJtKm5Lq0ob+y59EoE0XWmDyT5xGrDDguyPO8p9GA==","signatures":[{"sig":"MEYCIQCssPei8eN0p/DND/6+o0by4QljlG1bsTieFu8ZpV3fUgIhANx+d1WchhwLgmd7/FoRWCxoqNv5RO4nDejXTkuxdqE/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAoLQtc4H/E8IAwQvbiX/SG7fkDSJi3CASqkqyUPX1b2AiEA0mHKoPiy7Qw1YXB49gI75sMHTbmqBXbizkyaYF1NT4M="}],"unpackedSize":978864},"name":"@andysolomon/arc-orchestrator","type":"module","engines":{"bun":">=1.2.0"},"exports":{"./runner":"./plugins/arc-orchestrator/bin/arc-orchestrator","./package.json":"./package.json","./routing-core":"./packages/routing-core/src/index.ts","./routing-core/runtime":"./packages/routing-core/src/runtime.ts"},"gitHead":"1de2df4e292182e621641851daf9c10d1c252041","license":"MIT","scripts":{"test":"bun test","release":"semantic-release","validate":"claude plugin validate --strict . && claude plugin validate --strict ./plugins/arc-orchestrator && bun test","policy:check":"bun scripts/check-model-policy.mjs","package:check":"bun test test/npm-package.test.ts","generate:surfaces":"bun plugins/orchestrator-core/generate-surfaces.ts","routing-core:check":"bun test test/routing-core","routing-core:export":"bun plugins/arc-orchestrator/bin/arc-orchestrator routing export"},"version":"0.66.1","_npmUser":{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"},"homepage":"https://github.com/andysolomon/arc-orchestrator#readme","keywords":["coding-agent","orchestrator","multi-model","bun"],"repository":{"url":"git+https://github.com/andysolomon/arc-orchestrator.git","type":"git"},"_npmVersion":"11.18.0","description":"Portable ARC multi-model orchestration runner.","directories":{},"maintainers":[{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"}],"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","semantic-release":"^25.0.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.1","conventional-changelog-conventionalcommits":"^10.2.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/arc-orchestrator_0.66.1_1790820923022_0.9609287396673027"}}},"time":{"created":"2026-09-06T10:51:24.358Z","modified":"2026-10-01T02:15:23.291Z","0.62.0":"2026-09-06T10:51:24.671Z","0.63.0":"2026-09-16T15:07:35.755Z","0.63.1":"2026-09-16T23:19:34.360Z","0.63.2":"2026-09-17T01:33:02.966Z","0.64.0":"2026-09-23T21:17:29.649Z","0.65.0":"2026-09-27T13:26:39.369Z","0.66.0":"2026-10-01T02:03:16.341Z","0.66.1":"2026-10-01T02:15:23.131Z"},"bugs":{"url":"https://github.com/andysolomon/arc-orchestrator/issues"},"license":"MIT","homepage":"https://github.com/andysolomon/arc-orchestrator#readme","keywords":["coding-agent","orchestrator","multi-model","bun"],"repository":{"url":"git+https://github.com/andysolomon/arc-orchestrator.git","type":"git"},"description":"Portable ARC multi-model orchestration runner.","maintainers":[{"name":"andysolomon","email":"andrewsolomon.edu@gmail.com"}],"readme":"# Fable Orchestrator\n\nFable Orchestrator is a Claude Code marketplace plugin that keeps Claude Fable 5.1 focused on planning, judgment, and final review while delegating bounded execution to Cursor Composer 2.5 and Codex.\n\n```text\n                              Claude Fable 5.1\n                         planning and final judgment\n                                      |\n             +------------------------+------------------------+\n             |                        |                        |\n    composer-implement      --backend codex           --backend codex\n                            --mode implement          --mode analyze/review\n     Composer 2.5                GPT-6.1 Sol         GPT-6 Luna / GPT-6.1 Sol\n   routine implementation     difficult escalation      analysis and review\n```\n\nFable decides what should happen. Workers receive a narrow contract, perform one task, and return compact structured evidence.\n\n## What You Get\n\n- `/arc-orchestrator:orchestrate` chooses the appropriate worker with Fable as the default/recommended parent orchestrator.\n- `/arc-orchestrator:orchestrate-with-model` uses the same worker delegation pattern from Opus or the current Claude Code model when the user explicitly wants to orchestrate without Fable.\n- `/arc-orchestrator:orchestrate-eco` activates the fixed Eco worker stack; true Eco-parent orchestration requires running the mode from Cursor.\n- `/arc-orchestrator:direct-worker` runs one bounded worker directly from the parent Claude Code session when auto mode blocks the thin Agent wrapper.\n- `/arc-orchestrator:setup` diagnoses installations, authentication, and unsafe sudo-created Cursor state.\n- `/arc-orchestrator:observability` shows local trace status, Laminar readiness, recent delegated runs, and per-model totals inside Claude Code.\n- `/arc-orchestrator:story-queue-session` drives the arc-story-queue pull loop from a live Fable session — register, attach, `queue.next` into a worktree, delegate to workers, stream `story.update`, and `story.complete` with a handoff and run records. The daemon stays passive; Fable pulls the work.\n- `/arc-orchestrator:prompt-factory` scans a repository and creates `docs/orchestrator/*.md` prompt files for using the orchestrator from the selected surface. In Claude Code, it defaults to Claude Code slash-command examples.\n- Cursor projects can use `plugins/cursor-orchestrator` when Fable is available in Cursor; Fable remains the default parent orchestrator there too.\n- `arc-delegate` is the normal Claude Code worker wrapper for strict automatic runner-routing-v4 phase/workload selection.\n- `composer-implement` explicitly pins routine, clear-spec implementation to Cursor Composer 2.5; it is not the normal ARC Delegate default outside Eco mode.\n- `--backend codex --mode implement` handles difficult implementation and escalation through GPT-6.1 Sol at high reasoning effort unless `--effort` overrides.\n- `--backend codex --mode analyze` performs verbose repository analysis through a workspace-write-capable GPT-6 Luna profile.\n- `--backend codex --mode review` provides an independent read-only implementation review through GPT-6.1 Sol at high reasoning effort unless `--effort` overrides.\n- `opus-review` provides high-taste read-only critique for UI/UX, API design, docs, copy, prompts, and long-lived abstractions.\n- `opus-explore`, `opus-check`, and `opus-implement` are first-tier availability-fallback workers that route to the `claude` backend (Opus 5.5) when Codex is unavailable or the parent explicitly chooses Opus; they are not the default route and are distinct from `opus-review`.\n- `grok-explore`, `grok-check`, and `grok-implement` explicitly pin Cursor Grok 4.7 High on the `composer` backend; they are not taste escalation or a substitute for `opus-review`.\n- `arc-orchestrator` provides a scriptable, structured CLI for Codex, Composer, and Claude backends.\n\n## Routing\n\nARC Delegate uses the strict `runner-routing-v4` policy. Automatic worker phases\nare `explore|research|plan|implement|verify|deploy`; Analyze stays parent-local.\nImplementation requires one of the nine canonical difficulty × volume classes,\nfrom `hard-heavy` through `easy-light`. See [the generated ARC Delegate policy](docs/orchestrator/arc-delegate.md)\nfor the exact ordered model/effort stacks, lifecycle artifacts, and deployment\nHITL requirement.\n\n| Worker | Backend | Default model | Access | Use when |\n| ---------------------------------- | ----------------------------------------------------------- | -------------- | ----------------- | ---------------------------------------------------------------------------------------- |\n| `arc-delegate` | Automatic runner-routing-v4 | Phase/workload stack | Phase-dependent | Normal lifecycle delegation; the parent supplies a worker phase and implementation complexity without provider pins |\n| `composer-implement` | Cursor Agent | `composer-2.5` | Write-capable | The operator explicitly requests a single-candidate Composer pin, or Eco mode selects its fixed implementation route |\n| `--backend codex --mode implement` | Codex CLI | `gpt-6.1-sol` | `workspace-write` | The task is difficult, debugging-heavy, or Composer missed the quality bar |\n| `--backend codex --mode analyze` | Codex CLI | `gpt-6-luna` | `workspace-write` | Investigation would consume substantial Fable context |\n| `--backend codex --mode review` | Codex CLI | `gpt-6.1-sol` | `read-only` | Independent correctness, security, regression, or acceptance-criteria review is valuable |\n| `opus-review` | Claude Code Agent | Opus 5.5 | `read-only` | Taste, UX, API ergonomics, docs/copy, prompt, or abstraction review is valuable |\n| `opus-explore` | Claude CLI (`claude` backend) | Opus 5.5 | `workspace-write` | Codex unavailable or parent explicitly routes exploration to Opus 5.5 |\n| `opus-check` | Claude CLI (`claude` backend) | Opus 5.5 | `read-only` | Codex unavailable or parent explicitly routes review to Opus 5.5 |\n| `opus-implement` | Claude CLI (`claude` backend) | Opus 5.5 | workspace-write | Codex unavailable or parent explicitly routes implementation to Opus 5.5 |\n| `grok-explore` | Cursor Agent (`composer` backend, `--route grok-explore`) | Cursor Grok 4.7 High | `workspace-write` | Claude/Opus unavailable or parent explicitly routes exploration to Grok |\n| `grok-check` | Cursor Agent (`composer` backend, `--route grok-check`) | Cursor Grok 4.7 High | `read-only` | Claude/Opus unavailable or parent explicitly routes review to Grok |\n| `grok-implement` | Cursor Agent (`composer` backend, `--route grok-implement`) | Cursor Grok 4.7 High | workspace-write | Claude/Opus unavailable or parent explicitly routes implementation to Grok |\n\nKeep architecture, ambiguous requirements, user interaction, and final decisions in the parent orchestrator. Fable is the default/recommended parent; Opus or the current Claude Code model can be used explicitly through `/arc-orchestrator:orchestrate-with-model`.\n\n### Eco orchestrator economy mode\n\nEco orchestrator mode is an explicit opt-in and does not change any surface's default parent or normal routing. Activate the runner policy on each call with `--orchestrator eco`, or set `ARC_ORCHESTRATOR_ORCHESTRATOR=eco` for the session; the CLI flag takes precedence over the environment.\n\nThe fixed economy worker stack is `(O) Eco -> opus-explore [| cursor-auto-explore] -> composer-implement [| cursor-auto-implement] -> opus-check [| cursor-auto-check]`: `analyze` maps to `opus-explore`, `implement` to `composer-implement`, and `review` to `opus-check`. Claude Code can use `/arc-orchestrator:orchestrate-eco`; Cursor can use `/orchestrate-eco`; Pi and Copilot can select the same runner identity in their orchestration guidance. On Claude Code, Pi, or Copilot, the flag selects economy worker routing but does not turn the current chat into an Eco parent. True Eco-parent orchestration requires Cursor: start from an active Cursor Composer chat and select the same runner identity there.\n\n### Shipping authority\n\nWorkers do not commit, push, merge, deploy, or mutate GitHub. There are no\nmechanical worker routes. When explicitly authorized, the parent performs the\napproved git or GitHub shipping operation directly after reviewing worker evidence.\n\n### Machine-readable route capabilities\n\nExternal planners can discover the runner's executable routes without starting a\nworker:\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator routes --json\n```\n\nThe JSON-only response is a versioned public contract with `schema_version: 4`,\n`source: \"arc-orchestrator\"`, `phases`, `phase_modes`,\n`arc_delegate_workload_classes`, legacy `workload_classes`, and canonical `routes`. Each\nroute provides its stable ID, runner backend, execution mode, currently resolved\nmodel, sandbox, and planner guidance. `task_class` is free-form observability\nmetadata and never selects a model; `workload_class` selects automatic\nimplementation stacks. Explicit `--route` pins exactly one model. Omit\n`--backend` and `--route` for the automatic ADR screenshot policy.\nOptional `--routing-policy runner-routing-v4` is the only accepted fail-closed\nmarker for automatic delegation. Legacy v2/v3 markers and workload classes are\nrejected.\n\nConsumers must reject an unsupported schema version or an unknown route ID\nrather than silently executing it. `routes` intentionally requires `--json`;\nit has no human-readable form and never dispatches a worker.\n\n### Live activity event protocol\n\nDelegated runs keep the existing `arc-orchestrator: progress:` stderr lines and\nalso emit additive, best-effort lines prefixed `arc-orchestrator: event: `.\nThe remainder of each line is JSON with the stable envelope\n`{\"v\":1,\"kind\":\"activity|phase|files\",\"seq\":1,\"at\":0,\"data\":{...}}`.\nSequence numbers are per attempt and `at` is Unix time in milliseconds.\n\nVersion 1 admits only these data shapes:\n\n- `phase`: `{phase,status,model?}`\n- `activity`: `{status,tool?,count?}`\n- `files`: `{count,files:[{file,status}]}`\n\nWorkspace-write attempts additionally emit additive version 2 diff events:\n`{\"v\":2,\"kind\":\"diff\",\"seq\":1,\"at\":0,\"data\":{\"file\":\"src/app.ts\",\"status\":\"modified\",\"hunks\":[{\"header\":\"@@ -1 +1 @@\",\"lines\":[\"-old\",\"+new\"]}],\"truncated\":false,\"redactions\":0}}`.\nRenames may include `oldFile`; a safely excluded file has empty `hunks` and an\n`omitted` reason. Version 1 envelopes and file summaries remain unchanged.\n\nActivity text, prompts, assistant output, reasoning, and raw backend stdout are\nnever included. Activity events are rate-limited to one per second, all events\nare capped at 200 per attempt, strings are bounded, and file lists contain at\nmost 20 repo-relative paths; `count` remains the full change count. For\nworkspace-write attempts, file events compare a git baseline captured immediately\nbefore the worker starts with final workspace state. Non-git or unreadable state\nsilently omits the file event. Set `ARC_ORCHESTRATOR_LIVE_ACTIVITY=off` to opt\nout without changing existing progress output or worker behavior.\n\nDiff collection runs after the worker finishes and uses Git with external diffs\nand text conversion disabled. It fails closed for files dirty at the\nbaseline, sensitive paths, symlinks, binary data, secret-like content, and\nunavailable or malformed state. Payloads are capped at 5 diff events per run,\n3 hunks and 24 lines per file, 200 characters per line, 2400 bytes per file,\n8000 bytes per run, and 16000 characters per event line. Collection is\nbest-effort and cannot change a run result.\n\n## Capability Snapshot Rankings\n\nThis human-readable ranking surface is rendered from `plugins/orchestrator-core/capability-snapshot.json` (`2026-07-25+deepswe.v1.1+cursorbench.3.2`) and `MODEL_REGISTRY`; it is not an independent authority. Rows retain the historical identities that were benchmarked and are not renamed to current replacements. Decision 0005 binds DeepSWE to `swe` and CursorBench to `agentic-edit`, so the columns are not averaged into one global score. The runner dispatches low, medium, high, or `none` rungs only; max/xhigh leaderboard columns must not be used here.\n\n| Model | Backend | Snapshot rungs | SWE snapshot score | Agentic-edit snapshot score | Price band | Cost prior |\n| --- | --- | --- | ---: | ---: | --- | ---: |\n| `opus-5` | Claude Code | low, medium, high | 73% +/-2 (high) | 67% +/-3 (high) | $$$ | $6.08 (high) |\n| `gpt-5.6-sol` | Codex (`codex exec`) | low, medium, high | 69% +/-1 (high) | 64% +/-3 (high) | $$ | $3.47 (high) |\n| `fable-5` | Claude Code | low, medium, high | 69% +/-1 (high) | 67% +/-3 (high) | premium | $9.18 (high) |\n| `gpt-5.5` | Codex (`codex exec`) | low, medium, high | 64% +/-3 (high) | 58% +/-3 (high) | $$ | $5.10 (high) |\n| `opus-4.8` | Claude Code | low, medium, high | 52% +/-5 (high) | 58% +/-3 (high) | $$$ | $4.28 (high) |\n| `sonnet-5` | Claude Code | low, medium, high | 48% +/-5 (high) | 57% +/-3 (high) | $$ | $7.43 (high) |\n| `gpt-5.6-luna` | Codex (`codex exec`) | low, medium, high | 44% +/-3 (high) | 57% +/-3 (high) | $ | $0.78 (high) |\n| `cursor-grok-4.6-high` | Cursor (`cursor-agent`) | high | - | 67% +/-3 (high) | $ | - |\n| `composer-2.5` | Cursor (`cursor-agent`) | none | - | 56% +/-3 (none) | very-cheap | $0.44 (none) |\n\n## Shared routing contract (routing-core) and the control plane\n\n`packages/routing-core/` is the single representation of routing policy, model\nmetadata, capability evidence, selection, workload profiling, and trace records\n(ADR 0012). The runtime modules under `plugins/arc-orchestrator/lib/` bind the\nshared functions to the shipped data; candidate stacks are compiled from the\npolicy through `compileCandidateStacks`, never authored. The\n[arc-router](https://github.com/andysolomon/arc-router) control plane vendors\nthe browser-safe entry and the exported artifacts, so both planes see the same\npolicy; `test/routing-core/parity.test.ts` and arc-router's own parity test\nenforce it.\n\n```sh\nbun run routing-core:export   # write packages/routing-core/generated/* (checked by test/routing-cli.test.ts)\nbun run routing-core:check    # routing-core unit and parity tests\narc-orchestrator routing profile  --evidence '{\"scope\":{\"packages\":2,\"crossPackage\":true},\"change\":{\"estimatedFiles\":6,\"authBoundary\":true}}' --text\narc-orchestrator routing simulate --context '{\"phase\":\"implement\",\"evidence\":{...},\"availability\":{\"backends\":[{\"backend\":\"codex\",\"classification\":\"rate_limit\",\"observedAtMs\":1790380800000}]}}' --text\narc-orchestrator routing validate --policy candidate.json\narc-orchestrator routing diff     --policy candidate.json --text\narc-orchestrator routing replay   --traces ~/.arc-orchestrator/traces/routing-trace-v2.jsonl --policy candidate.json\narc-orchestrator routing contract\n```\n\n### Workload Profiler\n\n`run --workload-evidence <json|@file>` supplies structured, observable evidence\n(scope, change, execution, session). The profiler classifies difficulty and\nvolume with published decision tables (`WORKLOAD_PROFILE_THRESHOLDS`) and\nexplains every signal. On automatic `--phase implement` without\n`--workload-class`, the derived class routes; an explicit class always wins\nand any disagreement is recorded. Evidence without scope or change facts cannot\nderive a class and fails closed. The profile is written to the schema-4 trace\nand the `orchestrator-routing-trace/v2` record as the additive\n`workload_profile` block (`workload-profile/v1`); runs without evidence write\nbyte-identical records.\n\n```sh\narc-orchestrator run --mode implement --phase implement --routing-policy runner-routing-v4 \\\n  --task \"Add the session revocation endpoint\" \\\n  --workload-evidence '{\"scope\":{\"relevantFiles\":9,\"packages\":2,\"crossPackage\":true},\"change\":{\"estimatedFiles\":6,\"authBoundary\":true},\"execution\":{\"previousFailures\":1}}'\n```\n\n## Requirements\n\n- Claude Code with Fable 5.1 access\n- Codex CLI installed and authenticated\n- Cursor Agent installed and authenticated for Composer 2.5 implementation\n- Bun\n- `jq` only for this repository's test suite\n\nCheck the local tools:\n\n```sh\nclaude --version\ncodex --version\ncursor-agent --version\nbun --version\n```\n\n## arc-contracts pinning\n\nThe published runner has no runtime dependency on `arc-contracts`. This repository's parity tests use `arc-contracts` as a development-only fixture through Bun's global link registry.\n\nOne-time development setup per machine: run `bun link` inside `<arc-board checkout>/arc-story-queue/packages/arc-contracts`, then `bun link arc-contracts` and `bun install` here. CI performs the same explicit link before tests.\n\nThe tested contract version is whatever the linked arc-board checkout declares in `arc-contracts` `package.json` (currently `0.1.0`). Breaking contract changes are semver-major bumps that orchestrator and arc-story-queue adopt together; `test/handoff-parity.test.ts` is the CI seam that catches drift. The local link must never appear in the published package's runtime dependencies.\n\n## Install the runner from npm\n\nInstall [Bun](https://bun.sh/) first, then install the public runner package:\n\n```sh\nnpm install --global @andysolomon/arc-orchestrator\narc-orchestrator --version\narc-orchestrator doctor\n```\n\nBackend CLIs and their vendor-owned authentication remain separate prerequisites. The package does not install or authenticate Codex, Cursor Agent, Claude Code, or other workers.\n\nUpdate to the newest stable runner with:\n\n```sh\nnpm install --global @andysolomon/arc-orchestrator@latest\n```\n\n`ARC_ORCHESTRATOR_BIN` remains an override for integrations that intentionally pin another reviewed executable. Repository contributors can continue using `./plugins/arc-orchestrator/bin/arc-orchestrator` directly.\n\n## Quick Start\n\n### 1. Validate the repository\n\n```sh\nbun run validate\n```\n\nThis performs strict marketplace validation, strict plugin validation, and the Bun test suite.\n\n### 2. Check both backends\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator doctor\n```\n\nExpected result:\n\n```text\nFable Orchestrator: ready\nCodex: installed, authenticated\nComposer: installed, authenticated\nClaude: installed, authenticated\n```\n\nWhen Codex is unhealthy but Claude is ready, `doctor` prints degraded-mode guidance (for example, re-delegate with `--backend claude` or set `ARC_ORCHESTRATOR_FALLBACK=claude`). When Claude is also unavailable, the fallback hint points to Grok on the composer backend (`grok-explore`, `grok-check`, or `grok-implement`), and — when API keys are configured — Grok outages may continue on the `minimax` backend and then the terminal `kimi` backend. `doctor` also reports MiniMax and Kimi readiness.\n\nFix any reported issue before enabling automatic delegation. Never run Codex or Cursor Agent with `sudo`.\n\n### 3. Load the plugin locally\n\n```sh\nclaude \\\n  --plugin-dir ./plugins/arc-orchestrator \\\n  --model fable \\\n  --effort high\n```\n\n### 4. Verify setup inside Claude Code\n\n```text\n/arc-orchestrator:setup\n```\n\n### 5. Delegate a bounded task\n\n```text\n/arc-orchestrator:orchestrate implement the approved request validation,\nlimit changes to src/api and its tests, preserve existing response shapes,\nrun focused tests, and do not commit or touch unrelated files\n```\n\n## Installation From a Marketplace\n\nThe repository uses the standard Claude Code marketplace layout:\n\n```text\n.claude-plugin/marketplace.json\nplugins/arc-orchestrator/.claude-plugin/plugin.json\n```\n\nDuring local development, prefer `--plugin-dir`. Install the hosted marketplace with:\n\n```text\n/plugin marketplace add andysolomon/arc-orchestrator\n/plugin install arc-orchestrator@arc-orchestrator\n/reload-plugins\n/arc-orchestrator:setup\n```\n\n## Cursor, Pi, and Copilot Surfaces\n\nThis repository also includes Cursor, Pi, and GitHub Copilot surfaces. Across the canonical Claude Code and Cursor harnesses, follow the parent availability chain **CC-Fable → Codex 6.1 Sol → Cursor-Fable-High**. Run every parent tier at high reasoning effort; use `--effort high` or the surface-equivalent reasoning-effort control, and never use low or unspecified/default reasoning for a parent. Move to the next tier only when the active parent is unavailable because of a usage limit, authentication failure, or model unavailability. Pi and Copilot do **not** make Fable the default parent orchestrator; Pi uses Codex 6.1 Sol and Copilot intentionally remains Codex 5.6 Terra-first as the default parent/orchestration model.\n\n### Cursor rules and prompts\n\nInstall locally as a Cursor plugin:\n\n```sh\nmkdir -p ~/.cursor/plugins/local\nln -s /Users/andrewsolomon/orchestrator/plugins/cursor-orchestrator ~/.cursor/plugins/local/cursor-orchestrator\n```\n\nThen restart Cursor or run **Developer: Reload Window**. You can also copy only the rule into a project:\n\n```sh\nmkdir -p .cursor/rules\ncp plugins/cursor-orchestrator/rules/orchestrator.mdc .cursor/rules/orchestrator.mdc\n```\n\nThe Cursor plugin includes:\n\n- `plugins/cursor-orchestrator/.cursor-plugin/plugin.json`\n- `plugins/cursor-orchestrator/rules/orchestrator.mdc`\n- `plugins/cursor-orchestrator/skills/orchestrate/SKILL.md`\n- `plugins/cursor-orchestrator/skills/opus-review/SKILL.md`\n- `plugins/cursor-orchestrator/prompts/orchestrate.md`\n- `plugins/cursor-orchestrator/prompts/opus-review.md`\n\n### Pi and Copilot surfaces\n\n### Pi package\n\n```sh\npi install ./plugins/pi-orchestrator -l\npi /skill:arc-orchestrator\n```\n\nThe package includes:\n\n- `plugins/pi-orchestrator/bin/arc-orchestrator` (package-local runner wrapper)\n- `plugins/pi-orchestrator/skills/arc-orchestrator/SKILL.md`\n- `plugins/pi-orchestrator/prompts/orchestrate.md`\n\nCross-repo use works by default through `bin/arc-orchestrator`, which resolves the underlying runner automatically. `ARC_ORCHESTRATOR_BIN` is an optional override only when you need a non-default runner path.\n\n### GitHub Copilot instructions and prompts\n\n```sh\nmkdir -p .github/prompts\ncp plugins/copilot-orchestrator/copilot-instructions.md .github/copilot-instructions.md\ncp plugins/copilot-orchestrator/prompts/*.prompt.md .github/prompts/\n```\n\nThe Copilot pack includes repository instructions plus orchestration and review prompt files. Copilot and Pi both invoke the package-local `bin/arc-orchestrator` wrapper by default, with `ARC_ORCHESTRATOR_BIN` as an override-only escape hatch.\n\n## Updating Each Surface\n\nAfter pulling new orchestrator changes, refresh each integration you use. The steps below match the install paths documented above.\n\n### Claude Code\n\n**Marketplace install** — use the same marketplace and plugin names from [Installation From a Marketplace](#installation-from-a-marketplace):\n\n```text\n/plugin marketplace update arc-orchestrator\n/plugin update arc-orchestrator@arc-orchestrator\n/reload-plugins\n/arc-orchestrator:setup\n```\n\nFrom a shell you can run the same steps with the CLI:\n\n```sh\nclaude plugin marketplace update arc-orchestrator\nclaude plugin update arc-orchestrator@arc-orchestrator\nclaude plugin list\n```\n\nRestart Claude Code if skills or slash commands still look stale after `/reload-plugins`. Verify the installed version in the `/plugin` **Installed** tab (or `claude plugin list`) matches the version in `plugins/arc-orchestrator/.claude-plugin/plugin.json`, then run `/arc-orchestrator:setup` to confirm the plugin loads.\n\nPreviously installed plugin versions (for example 0.1.x) predate the Codex-to-Opus availability fallback; update to 0.2.0 or later so `opus-*` workers, the `claude` backend, and fallback routing are available.\n\n**Local `--plugin-dir` development** — `git pull` in this repository, then restart Claude Code with the same `--plugin-dir ./plugins/arc-orchestrator` flag. No marketplace update is required.\n\n### Cursor\n\n**Copy install (recommended)** — after `git pull` in this repository, re-copy `plugins/cursor-orchestrator` into `~/.cursor/plugins/local/` (or re-copy the project rule file), then reload Cursor with **Developer: Reload Window** (or restart Cursor) and confirm updated rules and skills are active. Copying is the reliable default because Cursor's plugin validation can reject symlinks that point outside `~/.cursor/plugins/local`.\n\n**Symlink install (if it loads on your Cursor version)** — `git pull` is enough; the symlink under `~/.cursor/plugins/local/` points at the updated plugin tree. Reload Cursor the same way.\n\nSee [plugins/cursor-orchestrator/README.md](plugins/cursor-orchestrator/README.md) for install layout, component paths, and distribution options.\n\n### Pi\n\nThe documented install uses a **symlink** (`pi install ./plugins/pi-orchestrator -l`). After `git pull` in this repository, Pi reads the linked package files directly — no separate Pi update command is required. Re-run `pi install ./plugins/pi-orchestrator -l` only if you moved the repository or need to refresh Pi's package registration. Confirm `/skill:arc-orchestrator` still resolves after an update. Cross-repo orchestration uses the package-local `bin/arc-orchestrator` wrapper by default; set `ARC_ORCHESTRATOR_BIN` only when you need a non-default runner path.\n\n### GitHub Copilot\n\nCopilot uses **copied** prompt files, not symlinks. When `plugins/copilot-orchestrator/` changes, re-copy the updated files into your target repository:\n\n```sh\ncp plugins/copilot-orchestrator/copilot-instructions.md .github/copilot-instructions.md\ncp plugins/copilot-orchestrator/prompts/*.prompt.md .github/prompts/\n```\n\nReload or reopen the Copilot chat session so the refreshed instructions and prompts are picked up.\n\n## Direct CLI\n\nThe CLI is useful for debugging integrations or calling workers outside Claude Code.\n\n### Automatic lifecycle routing\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator run \\\n  --mode implement \\\n  --phase implement \\\n  --workload-class medium-medium \\\n  --task \"Implement the bounded contract and run focused tests\" \\\n  --cwd \"$PWD\" \\\n  --routing-policy runner-routing-v4\n```\n\nThe commands below are explicit provider pins.\n\n### Analyze with Codex\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator run \\\n  --backend codex \\\n  --mode analyze \\\n  --task \"Map the authorization flow and identify every enforcement point\" \\\n  --cwd \"$PWD\"\n```\n\n### Implement with Composer 2.5\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator run \\\n  --backend composer \\\n  --mode implement \\\n  --task \"Implement the approved validation contract and run focused tests\" \\\n  --cwd \"$PWD\"\n```\n\n### Implement with GPT-6.1 Sol\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator run \\\n  --backend codex \\\n  --mode implement \\\n  --task \"Fix the confirmed race condition without changing the public API\" \\\n  --cwd \"$PWD\"\n```\n\n### Review with Codex\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator run \\\n  --backend codex \\\n  --mode review \\\n  --task \"Review the current changes for correctness, regressions, and missing tests\" \\\n  --cwd \"$PWD\"\n```\n\n### Analyze, implement, or review with Claude (Opus 4.8 fallback)\n\nUse when Codex is unavailable or the parent explicitly routes to Opus 4.8:\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator run \\\n  --backend claude \\\n  --mode analyze \\\n  --task \"Map the authorization flow and identify every enforcement point\" \\\n  --cwd \"$PWD\"\n```\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator run \\\n  --backend claude \\\n  --mode implement \\\n  --task \"Implement the approved validation contract and run focused tests\" \\\n  --cwd \"$PWD\"\n```\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator run \\\n  --backend claude \\\n  --mode review \\\n  --task \"Review the current changes for correctness, regressions, and missing tests\" \\\n  --cwd \"$PWD\"\n```\n\n### Codex and Claude outage fallback\n\nWhen Codex fails with a usage limit, authentication error, or missing binary, the runner classifies the outage as `backend_unavailable` and prints a machine-readable fallback hint on stderr (`fallback: { backend: \"claude\", model: <resolved> }`). By default the parent re-delegates explicitly (for example to `opus-explore` or `run --backend claude`) and records the switch with `annotate --escalated-to`. For unattended runs, set `ARC_ORCHESTRATOR_FALLBACK=claude` (or pass `--fallback claude`) to retry once on the `claude` backend; linked trace records use `fallback_of`.\n\nWhen Claude/Opus is also unavailable, stderr includes `fallback: { backend: \"composer\", model: <cursor-grok-4.7-high or ARC_ORCHESTRATOR_GROK_MODEL> }`. Re-delegate explicitly to `grok-explore`, `grok-check`, or `grok-implement`, or invoke `run --backend composer --route <grok-*>`. With `ARC_ORCHESTRATOR_FALLBACK=claude`, an availability-classified Claude failure during that retry chain continues once more on the composer backend with Grok. Grok is availability recovery, not taste escalation and not a substitute for `opus-review`.\n\nWhen a MiniMax key is configured (`ARC_ORCHESTRATOR_MINIMAX_API_KEY` or `MINIMAX_API_KEY`), the chain gains a key-gated tier: an availability-classified Grok failure continues once more on the `minimax` backend, which reuses the Claude Code CLI against MiniMax's Anthropic-compatible endpoint (`ANTHROPIC_BASE_URL`/`ANTHROPIC_API_KEY` are injected per invocation; the operator's normal Claude credentials and environment are untouched; default model `MiniMax-M3`). Because MiniMax is a pay-as-you-go API tier, it survives subscription exhaustion of Codex, Claude, and Cursor simultaneously. The `minimax` backend is also directly selectable with `--backend minimax` for all three modes.\n\nWhen a Kimi/Moonshot key is configured (`ARC_ORCHESTRATOR_KIMI_API_KEY`, `MOONSHOT_API_KEY`, or `KIMI_API_KEY`), the legacy direct chain gains a terminal tier after MiniMax (or directly after Grok when MiniMax is not configured): direct `--backend kimi` reuses the Claude Code CLI against Moonshot's Anthropic-compatible endpoint (`ANTHROPIC_BASE_URL`/`ANTHROPIC_AUTH_TOKEN` are injected per invocation; inherited `ANTHROPIC_API_KEY` is removed from the worker env; default model `kimi-k3[1m]`). Direct Kimi is always terminal. Automatic runner-routing-v4 uses the MiniMax M3 → Composer 2.5 emergency tail.\n\n`--worker-model <model>` pins the worker model for the requested backend explicitly, winning over both environment overrides and routing policy; the pinned model is recorded in the run's trace. Fallback tiers ignore it and use their own defaults, and it cannot be combined with `--route` (the route contract owns its model) or Eco mode.\n\nEvery successful task returns:\n\n```json\n{\n  \"status\": \"completed\",\n  \"summary\": \"Concise outcome\",\n  \"changes\": [\"src/example.ts\"],\n  \"verification\": [\"bun test src/example.test.ts\"],\n  \"risks\": [],\n  \"next_actions\": []\n}\n```\n\n## Configuration\n\n| Environment variable | Default | Purpose |\n| ----------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `ARC_ORCHESTRATOR_CODEX_BIN` | `codex` | Codex executable |\n| `ARC_ORCHESTRATOR_CURSOR_BIN` | `cursor-agent` | Cursor Agent executable |\n| `ARC_ORCHESTRATOR_COMPOSER_MODEL` | `composer-2.5` | Cursor implementation model |\n| `ARC_ORCHESTRATOR_ANALYZE_MODEL` | `gpt-6-luna` | Codex analysis model |\n| `ARC_ORCHESTRATOR_IMPLEMENT_MODEL` | `gpt-6.1-sol` | Codex implementation model (direct `--backend` path only; ignored by automatic/explicit canonical routes) |\n| `ARC_ORCHESTRATOR_REVIEW_MODEL` | `gpt-6.1-sol` | Codex review model (direct `--backend` path only; ignored by automatic/explicit canonical routes) |\n| `ARC_ORCHESTRATOR_CLAUDE_BIN` | `claude` | Claude Code CLI executable for the `claude` backend |\n| `ARC_ORCHESTRATOR_CLAUDE_MODEL` | `claude-opus-5-5` | Claude backend model (Opus 5.5 default) |\n| `ARC_ORCHESTRATOR_FALLBACK` | unset | Set to `claude` to retry availability-classified Codex failures once on the `claude` backend; Claude availability failures during that chain may continue once on the composer Grok route, then on the `minimax` backend when a MiniMax key is configured, then on the terminal `kimi` backend when a Kimi/Moonshot key is configured |\n| `ARC_ORCHESTRATOR_GROK_MODEL` | `cursor-grok-4.7-high` | Grok model for second-tier availability fallback on the composer backend |\n| `ARC_ORCHESTRATOR_MINIMAX_MODEL` | `MiniMax-M3` | MiniMax backend model |\n| `ARC_ORCHESTRATOR_MINIMAX_BASE_URL` | `https://api.minimax.io/anthropic` | MiniMax Anthropic-compatible endpoint used by the `minimax` backend |\n| `ARC_ORCHESTRATOR_MINIMAX_API_KEY` | unset (falls back to `MINIMAX_API_KEY`) | Pay-as-you-go MiniMax API key; enables the `minimax` backend and fallback tier |\n| `ARC_ORCHESTRATOR_OPENCODE_BIN` | `opencode` | OpenCode CLI for `--backend opencode`, including the OpenCode Go aliases (`glm-5.3-flash-*`, `glm-5.3-*`, `deepseek-v4-pro-*`, `go-kimi-k3-*`, ...) and their automatic `opencode-go/*` rungs |\n| `ARC_ORCHESTRATOR_OPENCODE_MODEL` | `moonshotai/kimi-k3` | OpenCode model for direct `--backend opencode` without `--route` (does not rewrite `opencode-go/*` route pins or direct `--backend kimi`) |\n| `ARC_ORCHESTRATOR_KIMI_MODEL` | `kimi-k3[1m]` | Direct `--backend kimi` / terminal fallback model only (Anthropic-compatible; does not rewrite provider-qualified OpenCode Go aliases) |\n| `ARC_ORCHESTRATOR_KIMI_BASE_URL` | `https://api.moonshot.ai/anthropic` | Moonshot Anthropic-compatible endpoint used by direct `--backend kimi` |\n| `ARC_ORCHESTRATOR_KIMI_API_KEY` | unset (falls back to `MOONSHOT_API_KEY`, then `KIMI_API_KEY`) | Pay-as-you-go Kimi/Moonshot API key; enables direct `--backend kimi` and the terminal fallback tier |\n| `ARC_ORCHESTRATOR_ORCHESTRATOR` | unset | Set to `composer` to activate the fixed Eco worker routes; true Eco-parent orchestration requires Cursor |\n| `CURSOR_API_KEY` | unset | Cursor's supported non-keychain authentication path |\n| `ARC_ORCHESTRATOR_TRACE` | `1` | Set to `0` to disable local trace records |\n| `ARC_ORCHESTRATOR_TRACE_DIR` | `~/.arc-orchestrator/traces` | Trace record location |\n| `ARC_ORCHESTRATOR_TRACE_LIMIT` | `1000` | Retained trace records; `0` keeps all |\n| `ARC_ORCHESTRATOR_MAX_DURATION_MS` | unset | Hard per-run deadline: the worker is killed and the run fails predictably |\n| `ARC_ORCHESTRATOR_MAX_TOKENS` | unset | Per-run token ceiling: completed runs that exceed it are flagged, not discarded |\n| `ARC_ORCHESTRATOR_LAMINAR` | unset | Set to `1` to export run metadata to Laminar |\n| `LMNR_PROJECT_API_KEY` | unset | Laminar project API key (required when export is enabled) |\n| `LMNR_BASE_URL` | `https://api.lmnr.ai` | Laminar API base URL |\n| `LMNR_PROJECT_NAME` | `arc-orchestrator` | Laminar evaluation group name |\n\nCodex continues to load normal user and trusted-project configuration. Cursor Agent continues to load its normal rules and project state.\n\n## Observability\n\nEvery delegated run appends one JSON line to `~/.arc-orchestrator/traces/runs.jsonl` recording the run id, backend, mode, **resolved model**, sandbox, an opaque project identifier (a short hash of the working directory — the absolute path itself is never recorded), duration, token usage (parsed from `codex exec --json` events and the Cursor JSON envelope), structured status, changed-file count, and a short error summary on failure. Task text, full prompts, filesystem paths, file contents, and raw transcripts are never written; because worker CLI diagnostics can echo the prompt or paths, persisted error summaries are additionally redacted (`<task>`/`<path>` placeholders) while the full detail still reaches the parent on stderr. To make runs recognizable, pass an explicit safe label with `--label \"<short description>\"`; it is recorded verbatim (truncated to 80 characters) and is never derived from the task prompt.\n\nThe parent model can also record, at spawn time, why it chose a route with `--task-class \"<class>\"` (for example `bugfix`, `migration`, `test-addition`) and `--route-rationale \"<reason>\"`. Both are parent-authored, bounded, and never derived from the task prompt.\n\nThe trace file is bounded: after each run only the most recent `ARC_ORCHESTRATOR_TRACE_LIMIT` records (default 1000) are retained; set it to `0` to keep everything.\n\n### Parent outcome annotations\n\nA trace records what a worker did; it cannot know whether the parent model accepted the result. After evaluating a worker run, the parent records its judgment with `annotate`:\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator annotate --run latest --outcome accepted\n./plugins/arc-orchestrator/bin/arc-orchestrator annotate --run <run id> --outcome escalated --escalated-to gpt-6.1-sol --note \"analysis missed the failing path\"\n```\n\n`--outcome` is one of `accepted`, `rejected`, `blocked`, `verification-failed`, or `escalated`. `--run latest` targets the most recent recorded run (the orchestrator runs sequentially), or pass an explicit run id from `runs --json`. Annotations are written to a sibling `annotations.jsonl` with the same redaction and bounded-retention rules; the most recent annotation per run wins, so a later `accepted` supersedes an earlier `escalated`. Both `runs` and `observability` join each run to its latest outcome (`[accepted]`, `[escalated]`, `[unrated]`, …) and `observability` reports a runs-by-outcome breakdown.\n\nInspect recent runs:\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator runs            # human summary with per-model totals and outcomes\n./plugins/arc-orchestrator/bin/arc-orchestrator runs --json     # records enriched with the joined outcome\n./plugins/arc-orchestrator/bin/arc-orchestrator runs --limit 5  # most recent five\n./plugins/arc-orchestrator/bin/arc-orchestrator observability   # trace, Laminar readiness, outcome, and recent-run summary\n```\n\n### Comparative report\n\n`report` aggregates the captured runs and their latest outcomes into a comparison you can use to justify routing changes. Group by `model` (default), `backend`, `mode`, or `task_class`:\n\n```sh\n./plugins/arc-orchestrator/bin/arc-orchestrator report                        # by model\n./plugins/arc-orchestrator/bin/arc-orchestrator report --group-by task_class  # by parent-authored class\n./plugins/arc-orchestrator/bin/arc-orchestrator report --json --limit 200     # machine-readable, last 200 runs\n```\n\nEach group reports run count, completion rate (by run status), acceptance rate (accepted ÷ rated runs — `n/a` when nothing in the group was annotated), the outcome breakdown, budget violations, and mean/total tokens and duration. Only annotated runs count toward acceptance, so the report distinguishes \"the worker finished\" from \"the parent kept the result.\"\n\n### Budget thresholds\n\nTwo opt-in, per-run thresholds bound delegated work, with deliberately different enforcement because of what each can know mid-flight:\n\n- `ARC_ORCHESTRATOR_MAX_DURATION_MS` is a **hard stop**: the runner kills the worker subprocess at the deadline, the run fails with a `budget:` error, and the trace records `duration_exceeded`. Use it to stop stuck or runaway workers.\n- `ARC_ORCHESTRATOR_MAX_TOKENS` is a **post-run flag**: token usage is only known once the CLI exits, so a completed run that exceeds the ceiling still returns its result, but the runner warns on stderr, the trace records `tokens_exceeded`, and `report` counts the violation for its group. Discarding finished work would waste exactly the usage the budget exists to protect.\n\nFrom the measured workload matrix (`docs/orchestrator/workload-matrix.md`): bounded implementation runs land around 16k (Composer) to 114k (Codex) tokens, scoped analysis/review around 100k–200k, while an unscoped Codex analysis of a large repository has reached 2.75M tokens. A reasonable starting point is `ARC_ORCHESTRATOR_MAX_TOKENS=500000` with a 10–15 minute duration ceiling, tightened per task class as your own `report` data accumulates.\n\n## Parallel Delegation\n\nTask scheduling and concurrency safety stay in the parent model — it can dispatch several workers at once after establishing that their scopes are compatible (see `docs/orchestrator/parallel-delegation.md` for the full evaluation):\n\n- **Read-only review routes (`review`) may run concurrently.** Review resolves a read-only sandbox on every transport.\n- **The parent coordinates write-capable runs (`implement` and `analyze`).** Analyze resolves a workspace-write sandbox and therefore carries write permission. Dispatch concurrent workers only for tasks known to be disjoint; the runner does not serialize or reject overlapping writes.\n- **Use separate worktrees for concurrent writers.** This isolates each worker's checkout and is the supported approach when write-capable runs overlap in time.\n\nInside Claude Code TUI, use `/arc-orchestrator:observability` for the same delegated-worker view. This observes worker runs launched through the orchestrator runner; it does not trace every parent Fable message, direct edit, or Claude Code tool call.\n\nGenerate repo-specific prompt packs:\n\n```sh\n# In Claude Code TUI\n/arc-orchestrator:prompt-factory scan this repository and create docs/orchestrator prompt md files that show exactly how to use the orchestrator for repo scan, file review, plugin sync, implementation, and test strategy.\n```\n\nShared prompt wording belongs in `plugins/orchestrator-core/prompt-factory.ts`; generated docs should focus on the user's selected surface instead of mixing Claude Code, Pi, and Copilot instructions in every prompt.\n\nDisable tracing with `ARC_ORCHESTRATOR_TRACE=0`; relocate it with `ARC_ORCHESTRATOR_TRACE_DIR`.\n\nFor an OpenCode read-only review spanning repositories,\n`ARC_ORCHESTRATOR_READ_ROOTS` accepts a JSON array of 1–8 literal absolute\ndirectory paths in the approved task scope. The adapter canonicalizes paths,\nrejects filesystem/home roots and wildcard grants, and allows external reads\nonly beneath those directories. Edit, shell, and subagent tools remain denied.\nName the exact repository paths in the task rather than asking the worker to\ndiscover them through their parent directory. ARC Pi supplies this environment\nvalue from the per-call `read_roots` contract field.\n\n### Optional Laminar export\n\nWith `ARC_ORCHESTRATOR_LAMINAR=1` and `LMNR_PROJECT_API_KEY` set, each run is also exported to [Laminar](https://www.laminar.sh) as a scored evaluation datapoint (grouped under `LMNR_PROJECT_NAME`), carrying the same redacted metadata plus numeric scores for duration, tokens, changed files, and completion. Export is strictly opt-in, uses plain HTTPS with no extra dependency, and a failed export never fails the run — it logs one stderr warning and continues. After a successful export the runner prints the evaluation's dashboard URL to stderr (`arc-orchestrator: laminar: …`) so each run is one click to inspect.\n\n## Persistent Project Policy\n\nThe source policy is `CLAUDE.md`. For repositories that should always use this routing strategy, copy the shorter `templates/CLAUDE.md.snippet.md` into the target repository's `CLAUDE.md`.\n\nKeep stable routing principles in `CLAUDE.md`; keep procedural detail in the plugin skills so it loads only when used.\n\n## Safety\n\n- Fable remains responsible for accepting worker output.\n- Codex review is read-only on every transport.\n- Codex analysis and implementation are limited to workspace writes.\n- Composer serves implementation and workspace-write-capable analyze; it is not used for review because Cursor headless mode does not provide a Codex-equivalent read-only sandbox.\n- Composer uses Cursor's `--force` flag and therefore receives only explicit, bounded write tasks.\n- No route uses unrestricted Codex filesystem access.\n- Workers are instructed not to commit, push, merge, deploy, access credentials, or make unrelated changes.\n- The runner uses process argument arrays rather than shell interpolation.\n- Failed or malformed worker output is rejected rather than presented as success.\n\n## Documentation\n\n- `docs/branch-protection.md` — `main` branch protection, Merge Gate required check, and release automation bypass\n- `docs/architecture.md` — trust boundaries, execution flow, and backend behavior\n- `docs/diagrams/README.md` — editable Excalidraw sources and rendered architecture examples\n- `docs/diagrams/mermaid.md` — Mermaid architecture, routing, and sequence diagrams\n- `docs/delegation-guide.md` — route selection, task contracts, examples, and escalation\n- `docs/troubleshooting.md` — authentication, keychain, ownership, and backend failures\n- `IMPLEMENTATION_PLAN.md` — roadmap, risks, and acceptance criteria\n- `progress.txt` — synchronized execution state\n\n## Current Limits\n\n- Routing is policy-driven; recorded traces inform but do not yet drive routing.\n- Parallel task scheduling and budget enforcement are deferred.\n- Computer-use delegation is not implemented.\n- Real-world model rankings remain heuristics until representative workloads are measured.\n\n## References\n\n- [Claude Code plugins](https://code.claude.com/docs/en/plugins)\n- [OpenAI Codex plugin for Claude Code](https://github.com/openai/codex-plugin-cc)\n- [Cursor Composer 2.5](https://cursor.com/docs/models/cursor-composer-2-5)\n- [Cursor Agent headless CLI](https://cursor.com/docs/cli/headless)\n- [Composer 2.5 orchestration article](https://note.com/ai_driven/n/n9018ad630d78?hl=en)\n","readmeFilename":"README.md"}