{"_id":"omnilane","_rev":"34-9e59c33238cb5bbe9b8c03ac753502dc","name":"omnilane","dist-tags":{"latest":"0.45.0"},"versions":{"0.7.0":{"name":"omnilane","version":"0.7.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.7.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"4c937db44cabd551b7d30fcdaa5cfffbf0c3eb1d","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.7.0.tgz","fileCount":35,"integrity":"sha512-VadLIbqEaiXpwooVuofkePk0El2/LcQZa9MRaIDoqa3oNQrn9u/WNLLoKfr5ynb8sEnJ9mzSguBnKHMvqWGQjg==","signatures":[{"sig":"MEUCIQCUlN+C3/OXr8WxcOXMt5USEIVe+GWSjB3crgYgIq6ajgIgTRwl6EmdfgMP+GRpYX8xDjzSDUCFJtzZvlAei8yyoNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":357611},"gitHead":"849829d80ef0583ad899fafcda38ebfc56ab9d36","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.7.0_1784294760035_0.7405994460919445","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"omnilane","version":"0.7.1","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.7.1","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"9c09aa2c76202b2294d74d25793159961d0618bd","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.7.1.tgz","fileCount":35,"integrity":"sha512-kdCyZlByJHuvUKzUiw6RTmUM6R/nh2wXCsRLTEJUMeBuU/iQNVo62g8k3Gupo8lUMuKu3dZ2szQE6y6dn/13UA==","signatures":[{"sig":"MEYCIQCZ7BliF5MWZWkBG77Hw2/rFlrPQ4By02BZXi2YX1obpwIhALXiyg4N7J7Xq+jl2DvPt+lvVnqTIggtoZK8Cg6bol0r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":360904},"gitHead":"098439f80ba1147847858da8d216b7bab7003b30","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.7.1_1784338128243_0.16930692312511697","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"omnilane","version":"0.8.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.8.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"ab71f885e9d09ece159c1fa1c53e80a99f7dcedc","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.8.0.tgz","fileCount":37,"integrity":"sha512-zg8omDVe+h0oy0tvInLDfnx7Jt4IZdPHrpGWy4PEMQunZhGfZ12fcCmbskUy0f4Yqd2abjjwLPOf1a2fRq7U8g==","signatures":[{"sig":"MEUCIQC1tokH8Xdq1riB7n3EWvyxuzH5EaYcmB+vAQsLq3cgQgIgF3Wzq4w/pxehZGymDyYDf6pU854+9itgelOCh++VvOM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":369268},"gitHead":"61cb955fc847722b52660132edbdc7dc2d93b738","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.8.0_1784340932231_0.056399974567740374","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"omnilane","version":"0.8.1","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.8.1","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"c8f6ad83c523d62653410330ce67d78d67d2f5cb","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.8.1.tgz","fileCount":37,"integrity":"sha512-YaJP+O2bNrFY8fgcYXp+o+GxzjJiwRUH9b5x8qCcoIfq1cLFGJZ2D+qLCcsn214J4f/BltX0H4vAUQGcmm9NOA==","signatures":[{"sig":"MEYCIQDvMx9kJjOO7/RfIioqySxXKVtHDg7D5Ia3oXS/EjomsAIhALy4nTGNoBbIB84gW8hDF2OfsofJWL9g+SkVx65gOnMS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":372287},"gitHead":"61cb955fc847722b52660132edbdc7dc2d93b738","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.8.1_1784343743785_0.2332240729434787","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"omnilane","version":"0.8.2","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.8.2","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"f591759844e26ed381474817c7122c603c195c96","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.8.2.tgz","fileCount":39,"integrity":"sha512-2jl0nDCU66AKGsWKpYxINXOtzMJtbBVUOburYthn4F+flJt3bqqUawilOQfphS2q2BpakZEeEdfgsPdkCZmUBQ==","signatures":[{"sig":"MEQCIDl8qCE5JeBAvMxzT5iaNm23FyO2iWCyVe0HPy1kIZVaAiBQ1kAZd8CeIKX1EWX9vAm73ntuFnEtBZkeBI345apseg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383264},"gitHead":"a014a8dc731cf0c1c476e69e43a405ca17d8ca52","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.8.2_1784348731108_0.37500268103615353","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"omnilane","version":"0.8.3","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.8.3","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"1c06b98d564f033e7b2289db432969d81511e632","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.8.3.tgz","fileCount":40,"integrity":"sha512-USXFse5GE2U481Oy7rOvMMNGIZD5dZxZ47OOE7FPloUULAS+wGqE1+qFbKxFPhk+mCNjkOd3200GtEKj/Tt8ug==","signatures":[{"sig":"MEYCIQChLPUJoFxBURdQCfapgfgs1EGzArB4zwRfuSlFxxFRLgIhAIP2POYpgrmowpWlBIzokV/LvqIsnUkCyOqwJ3UAB8Az","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407090},"gitHead":"4a93bdc92e1b679299ac513f627ef094bf26997c","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.8.3_1784355309913_0.42478570271709537","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"omnilane","version":"0.9.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.9.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"6c8074a020292bee9779012964ab39fef37459be","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.9.0.tgz","fileCount":48,"integrity":"sha512-Ep0D1psRzoB0xh6DXi9332uN+joBgm7qe6fTMuUwq294uLEE98uTzJSpZlSIMX5sDx0ZXLlDmuRYQR2D7kCMqw==","signatures":[{"sig":"MEUCIQDm1oq2GUDnmPYjaNwqz8+LN7rkBd8QWzwtB4ozCJT1kAIgWIRThdYI/vr7pj+EP2nSOLjKlG+n2N1+bkIgnGU7/iI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":457837},"gitHead":"63eb84a733819b679705ae66fc4b4aa4bdd96cb2","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.9.0_1784433436905_0.05192110625511415","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"omnilane","version":"0.9.1","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.9.1","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"67bc2921525ccab45b96c6fb2000cc0f37128fd2","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.9.1.tgz","fileCount":48,"integrity":"sha512-qHZ/1tGYcE4vh+PDqqnC/rSixeMTMuzFsdtjCgEbzrYJ8m0awUgHKI2s5LlVDPgqwaER92Jjs+Rsbv5JRjCXbw==","signatures":[{"sig":"MEUCIQDUIZlPUEKE9BAIVgvT+FySywKguXdbUB60D28elANO+wIgDH/7L7p3IGQ59sW0fkSw0Nr/vMHpmks5ead22rkX88w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":467130},"gitHead":"b3b12ac74a4aae23f113e5bd60bc240bb7a86d14","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.9.1_1784447974884_0.6765834220491296","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"omnilane","version":"0.10.1","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.10.1","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"3702490e8241ca998449ee853b70224a5eb9b294","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.10.1.tgz","fileCount":48,"integrity":"sha512-gecizdfhrzZARP2j+oD0I43yk5sDgQa7HuzfoQELJ8UYoRJZpOjX7VOc7UHWHD2UZWFb0HX09UGVRkMTsIHwBw==","signatures":[{"sig":"MEQCICXBFbe1zEyGgFM8cQWu5AYOCuVULZ2iOb8KEAhSrWmkAiBsj2xOCAmcrQSSOSoov9hpxv143pFuQ5IpeZu1jeEt5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":476290},"gitHead":"902e6377c0a66cd86976763ac5a35059e4e47da3","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.10.1_1785025364832_0.2542828655095737","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"omnilane","version":"0.10.2","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.10.2","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"31c7ca7a5bebc5771fe01aec06ada0b2b2f6ce1b","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.10.2.tgz","fileCount":48,"integrity":"sha512-kLqS/epTt+9NTCx+QDCpMr+J37FVlO329O9GthQOH8r1yRf+22vWB5dIEZBoFel21o9PNjQ4zPwS+TtEZT3sOw==","signatures":[{"sig":"MEQCIGepyG2ZDTH/YmQQENURrWPxHYmrBqNwSKWrSH33yL4kAiBfo2tkc15X8uLLWhflheYLJ1Jre1q6SyBNr9uHXgdxnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":477398},"gitHead":"8c0e86abbf47ee9ffa0dfab8dc55336875de796f","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.10.2_1785028915710_0.7041973202883607","host":"s3://npm-registry-packages-npm-production"}},"0.10.3":{"name":"omnilane","version":"0.10.3","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.10.3","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"52efa41eb87f36007438dabe3bff6ba74bd9cc82","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.10.3.tgz","fileCount":48,"integrity":"sha512-LIOMAwXKiQM3tYVp1WK56GDPqKTVMLNkkv8ARxnzvjgjtVes0BVBCsxqankdcAlW9M/6KHKOIsFTuom3ipVjVg==","signatures":[{"sig":"MEYCIQD6q4kiQcFQJSFIbLxnA0O8FBU/OvankC9RIub2CIf31wIhAO6zCk7RVTX/X5LiPbbNiNFKNssQuOJ2x9ZBqoeZlg4Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":518800},"gitHead":"9b4418c58ce443c8418e784d812018db8dc9a865","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.10.3_1785052290140_0.6463945745913329","host":"s3://npm-registry-packages-npm-production"}},"0.10.4":{"name":"omnilane","version":"0.10.4","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.10.4","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"644aba915eeeab1b514603ec3d3862f9c45f9c06","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.10.4.tgz","fileCount":48,"integrity":"sha512-fGlfsXOqHB/fwCfTvyn/z37oIEwIf+Xlt1xB2DI9iRYiBUQ5qakXy1UACinBIwmiUNL0yHURtixHH0WFIAbYyQ==","signatures":[{"sig":"MEUCIGEV81ARGJ3CSy2U49WeYPlUPCzFD5DroJF5xAfDE8dYAiEAqFD34ouzEvvh/4I+Qwd5xVN16uDrIymHjxCSOh5699k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":527312},"gitHead":"260aa05e451aee083f2fc3f4c33d192cc8c4b5c4","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.10.4_1785074293459_0.005642463950896293","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"omnilane","version":"0.11.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.11.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"5e8b0fda69735631238ce05940f7350a112a3b90","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.11.0.tgz","fileCount":48,"integrity":"sha512-PfZ8uT8vss4oRf9yK+jFcCL1P9AcGdFZOL5SUh08pR3VPNWlkmQ6lsP30tTrdlcmVKoB+BEIbTOTjz3AMbEXKw==","signatures":[{"sig":"MEQCIDybXmriYibsSfbbAW68bO5xsjr0IHCCEbUM28SUXlL5AiAlvBPdP666adHn8jagrhYr7oufG5nWx8bjNZwp6Bc3yA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":572211},"gitHead":"35f208787345b7369c88b891c9689c61238643e3","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.11.0_1785129833411_0.37424360893264974","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"omnilane","version":"0.12.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.12.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"d8d570c6c41fb52b6b8e4802478e6da936856953","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.12.0.tgz","fileCount":48,"integrity":"sha512-unD7jb5IksrZL6VWMU8y83n0IPYmKmHaUjwGEXU7wC0QupFi5MZrWAzgOG5gvs3lpf9bVYF4mytSG7JYR6YBFw==","signatures":[{"sig":"MEYCIQCbtxavpIRenFMRe3+hidUJmfH4BuWuZyaFSMoMO6NWfwIhAJaFFfZz2lJXYtIzy3AIJ+9hzk10W+TrVah6ajWTjw0H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":589753},"gitHead":"d9f645fbad950ed515e81f49f7fcaffc062399bf","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.12.0_1785728178061_0.184908782600949","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"omnilane","version":"0.13.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.13.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"682288b9a1b8b6697469b33d3f9774a6941e57b0","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.13.0.tgz","fileCount":48,"integrity":"sha512-m4Euul6SM5A4oHn8rtG7LNeVvQunVGjLniLelO5bptn2Dkd54iBhmbDAXISjRqSdgHfqadMe4DjSQauR4zZJaA==","signatures":[{"sig":"MEUCIAouVHfnUUXiJhTJ+yB9dLIU5bCOtBlrbuBkZIbyN8SaAiEA8i4BiRXICwiBdgoP/W2+zIRFU8zaoLY1khP+V8cS6DA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":599369},"gitHead":"e52487ef698956ab56bf0f3541ba407650e993c2","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.13.0_1785734907322_0.8802241814451359","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"omnilane","version":"0.14.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.14.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"6aef7188764c778098475c01c7e58548437a8c55","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.14.0.tgz","fileCount":51,"integrity":"sha512-50DNlhtwRmwykIvGS86J9UAso6zP5YSt8hZ47TGmlnjocJonagAspgqJ8uTPd/wIzC4dRp0JOgG/XzIBv5EIqQ==","signatures":[{"sig":"MEYCIQCLU6ueZHucR0ggCRkGKRfrPtJxHpkvd1/cGvKGiluE9gIhAK/jiPsYw/eXK8u5TzM438JQ1+xUm8dE1pUFEYfCGOKb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":646766},"gitHead":"7a49d60e1d9e5b87c8f4dcbaf57e33e5f6431129","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.14.0_1786339484088_0.7585008130774262","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"omnilane","version":"0.15.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.15.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"3e95ddcefb5e2afbc7c1531a5325bb2289ae90b2","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.15.0.tgz","fileCount":51,"integrity":"sha512-FgkPUIG3Y8/msEyUxwxwVXgBO3X6bGYor35sblM6oZDj/9llVUI2awFX79GtfpMx6ox1rSM+MpMA2epAXUJrvw==","signatures":[{"sig":"MEQCIHRIFu+ek/4CThn2kHuFOOzBpSW39SUlASswutbFJSE1AiAkIGOISh3otKII7ZtgatnvUAGcQMn9HWwzOdZ1kZjCGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":655093},"gitHead":"9d07e1c0b3a25ad1abf4b599bae416d5ca7c2d79","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.15.0_1787889669822_0.7432487382560571","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"omnilane","version":"0.20.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.20.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"659c6da026cea5a45ef52d608bf960692ced9081","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.20.0.tgz","fileCount":59,"integrity":"sha512-agtqNCbdM2Jg9G3rwUG6ZRXQ6+/b8U8gOZ9epl1ZgN5oBPCJJJ+bZnI3l8cxbftoPsZ9nPwbJp1afHLzde+gFw==","signatures":[{"sig":"MEQCIF/RF60EOULxK6//Corfz0eSlwkYyeLHB2RbI6jllZKtAiAnSprw48RoFj5kY6z/hvQ2wDIdCvj3BgvoRN6PmsTwhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":717823},"gitHead":"ed4ff17a0c300f9151f2f99551d57e296f08d389","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.20.0_1788077737329_0.6669785324209743","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"omnilane","version":"0.21.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.21.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"7ce0468f65d14ff9ec1cf382c98e899d2d4ee3a1","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.21.0.tgz","fileCount":61,"integrity":"sha512-9idQVLVA0WL8UQaUtmUHGizBB6PV4rJ8eVRjDFDi8sljlYqAf2/nQu7K9GHtVZndTSyO6NNk5FJGf7KtFmpJ2g==","signatures":[{"sig":"MEUCIAhi69aLWU0HDkEu2JVHs9bC3xSodaD0piR4bkgCo4mGAiEA0Rg12egXcf101RgZixflO+cdJArg8dg6c0/CgsPrxPQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":759493},"gitHead":"fff0fef38fc437192464fc75e4a2dea47b3d38a9","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.21.0_1788097713084_0.8614731569100003","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"omnilane","version":"0.31.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.31.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"ca7c3439f6384674b132fa4d78ccd0e5864a4982","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.31.0.tgz","fileCount":61,"integrity":"sha512-K7p8e85SnowTi9iH68/5doyrv35jaiadTuPWddwXQuPkFX+Rvhn+zha2qXkd/Rk7+1pXuQFNg/x37emVg+TZFw==","signatures":[{"sig":"MEUCIFdPqHqvAgkCUVXLd26WuyEDNCRrrqNg0d1IXz9m06MAAiEAv/Pg8f0DuhhECc4NYcw7qWuof+tZ4xyeHJ/UPWdgT0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":775502},"gitHead":"c20caebaeab199b6735a9d55f67f63b8ddad20e7","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.31.0_1788224690375_0.10710102999355042","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"omnilane","version":"0.32.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.32.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"64f810f530ea46f2a6083a29417206b1aa7f3f9c","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.32.0.tgz","fileCount":61,"integrity":"sha512-BmT/t6re5UnxiQP/WwxujdwgRkwuWz99B5PxlIl+jvHVvKiWDS0V7d/hkrNtDm1wEtZ0T4KOs39+5KN16ha2Cw==","signatures":[{"sig":"MEYCIQDkcW9uJBIXFl8IYE7wRXme4h/+UnrJ/HLoJeHG4P4m7QIhAIhE2rGJbvQUSNk8MTfyNchd/tquQRglz8Whmc2Ie2fn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":775058},"gitHead":"c7f9bcca8efaca0bf040ee9151a768a16b47d061","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.32.0_1788333273176_0.4041662395484986","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"omnilane","version":"0.33.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.33.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"0c03b06359d75014da085822fba39a86293f5330","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.33.0.tgz","fileCount":61,"integrity":"sha512-kXitmWJVjZS0TfiHe8pTAtMTwmXIKa+H2tNFmT2HAyzc+a1Qpk4u73Tp2RIcx8oQHH373ZNWJlyjyOzOZnYn7A==","signatures":[{"sig":"MEQCICrIRUBt4urVFGPEGpGFCJcYlc1pl2su6cYqtfVcQlwoAiA8qtdls7tujkHKpfXGeP8PhLz7Ojr56sHpfIzbCra0gA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":809058},"gitHead":"4e2f882582034ad2ed6e1ab8817926161d0bd72f","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.33.0_1788409434386_0.427851181547388","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"omnilane","version":"0.34.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.34.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"5f5fe700ecaaf60640e51992026dd6f13eb8781a","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.34.0.tgz","fileCount":61,"integrity":"sha512-RZs8Xxoub+QDkjWgHXXUM154e52to6m5JBQcTnsadTkKVDJmJJNt/gbrDa/nXJ7gbVfcIosOweAVchvacdAV1w==","signatures":[{"sig":"MEQCIGjlUl8/QfsTuvrydiLZvr+Hzw+jIj5/DepG9dG80bfmAiAddxQ/c/X6SsIVIwgU8iUaXyqG6igimu7GFikZ5ZHl8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":814540},"_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.34.0_1788425559472_0.47917418835923065","host":"s3://npm-registry-packages-npm-production"}},"0.41.1":{"name":"omnilane","version":"0.41.1","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.41.1","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"56ad32694186c5d1f41e1bd2f8e0d7f6a6750db9","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.41.1.tgz","fileCount":67,"integrity":"sha512-fxmRZNvh+ypEFKHPt1tph4D7BLYUKUUCz8kfvzFpPedyL+Z2SD7DG9cDtlk533I4GUXdFqr+BXgUbJwhuK2dCg==","signatures":[{"sig":"MEUCIAFYdTo0ht+t7/1AjkRoQdjx85snr374pNbMQruhtp9LAiEAh+96DBYqr1BnU8H3Anp6l1FmUkV+lGKu9vUOdz6va0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1954016},"_from":"file:/Users/vincentw/dev/omnilane-wt/merge/.test-scratch/package-acceptance-v0411-final-v2/tarballs/omnilane-0.41.1.tgz","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"_resolved":"/Users/vincentw/dev/omnilane-wt/merge/.test-scratch/package-acceptance-v0411-final-v2/tarballs/omnilane-0.41.1.tgz","_integrity":"sha512-fxmRZNvh+ypEFKHPt1tph4D7BLYUKUUCz8kfvzFpPedyL+Z2SD7DG9cDtlk533I4GUXdFqr+BXgUbJwhuK2dCg==","repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.41.1_1788697778891_0.6290641978591012","host":"s3://npm-registry-packages-npm-production"}},"0.42.1":{"name":"omnilane","version":"0.42.1","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.42.1","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"a2ad45c94174c3a2eded42f9c8cf7194e87e8cd8","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.42.1.tgz","fileCount":75,"integrity":"sha512-puvXWx44C3R7o9WK6obkhXeYtTEvtLpwkXuOcWmaIOGB3RRC7eypHA68AGi49UdIW9EjZhww1eBUEp8kJEiFIw==","signatures":[{"sig":"MEYCIQDMB7b/lnUDcNrH9mqTPzXByY3DeD/y/X/MKzt/L9i8ygIhAOlTVVafWBmlU/igkpWhE7EmcE0QcoCEvlqjFVfEWUnr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2204123},"_from":"file:/Users/vincentw/dev/omnilane/.rollback/release-0.42.1/independent-review/final-20260907075332/omnilane-0.42.1.tgz","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"_resolved":"/Users/vincentw/dev/omnilane/.rollback/release-0.42.1/independent-review/final-20260907075332/omnilane-0.42.1.tgz","_integrity":"sha512-puvXWx44C3R7o9WK6obkhXeYtTEvtLpwkXuOcWmaIOGB3RRC7eypHA68AGi49UdIW9EjZhww1eBUEp8kJEiFIw==","repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.42.1_1788740459337_0.7650748904817832","host":"s3://npm-registry-packages-npm-production"}},"0.42.2":{"name":"omnilane","version":"0.42.2","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.42.2","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"37a1a4b6289838cdd8acbe8b06258be70e65b3e0","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.42.2.tgz","fileCount":75,"integrity":"sha512-WiJDAanR4IaTwtjlcADa41VdonHcdLlhavdSP/eu8eFa/iOofAyqnDK3NouFOZzJlbHoMAqcUR2kE9FFjlVo9g==","signatures":[{"sig":"MEUCIQDT3dqpkHXSSbpamldoTM6oMehombEAWqnEZEvztwf9dwIgcrvQypDpf5416HHgFo9Uk89ZHPcwtUcRaOWVjcJzggc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2209718},"_from":"file:/Users/vincentw/dev/omnilane/.rollback/grok-effort-release-0.42.2/omnilane-0.42.2.tgz","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"_resolved":"/Users/vincentw/dev/omnilane/.rollback/grok-effort-release-0.42.2/omnilane-0.42.2.tgz","_integrity":"sha512-WiJDAanR4IaTwtjlcADa41VdonHcdLlhavdSP/eu8eFa/iOofAyqnDK3NouFOZzJlbHoMAqcUR2kE9FFjlVo9g==","repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.42.2_1788756403297_0.7560367135999788","host":"s3://npm-registry-packages-npm-production"}},"0.42.4":{"name":"omnilane","version":"0.42.4","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.42.4","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"9f88f64250bbad759560742a91673340b96e4818","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.42.4.tgz","fileCount":75,"integrity":"sha512-RPCFy88r0T2VK3vyBIsJVQvl0ol2mXbpQprRsgxylF1mxV2aGYrmoe09Evu9oHXMvrvujHSvknUWwoK491eUsw==","signatures":[{"sig":"MEUCIHR5cilHBq0j+Fe6ETRo1I09KlwTZpqJNvQGFmlrmMG2AiEApiumZMUhjyqsklavroLHxN2yIeXG5WEdNG7qo/Joveg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2228041},"gitHead":"41f5082d0670c44d3d626a3ded21d51813b52a44","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.42.4_1788822897326_0.7340900699196871","host":"s3://npm-registry-packages-npm-production"}},"0.42.5":{"name":"omnilane","version":"0.42.5","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.42.5","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"76d8f805c0dae5b66cf3452a071f978ba70000f7","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.42.5.tgz","fileCount":78,"integrity":"sha512-EdvlT8MNekGUfzI9tUZi7stoV5CcjoAqQ1GWsnSyMlINQrRaL27B0/m9wBB7ygwec++RvCYFtc4Dvi9kxGYVAg==","signatures":[{"sig":"MEQCICiw+FZwvqKAY1VnCfJA5CFeHkQWYLvdCd45So5IBgJHAiAyRZBmqLZSIyY2ppNCCOnaUOIYLy2pGpTnDUQiaTRWKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2272246},"gitHead":"6e6831265492f94932eed4647251564df666a3b9","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.42.5_1788978377856_0.9606950044391416","host":"s3://npm-registry-packages-npm-production"}},"0.42.6":{"name":"omnilane","version":"0.42.6","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.42.6","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"1a0031c6b9bda27c7025ae59a7413c0bcf21af9c","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.42.6.tgz","fileCount":78,"integrity":"sha512-gfHEK5bWTTGhRCstkzAFGt+a2CGx+d3U9aHVpe8Tp32VxLgWwZ3Jgho5P/1fBMwTabTtHeH+vCn1NVgdTpdssA==","signatures":[{"sig":"MEYCIQDE66ftTSydeKtq1FuIsAYt8e/C1cxJbOj9C5TKLxMfegIhAJpa+FfwGdxFjbsQsqUmpMKlq6hGSxrjP69S8o5t6EsK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2301687},"gitHead":"cc08676184cba735c9556d113b8f51738c349e42","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.42.6_1789019510514_0.10747698099363623","host":"s3://npm-registry-packages-npm-production"}},"0.42.7":{"name":"omnilane","version":"0.42.7","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.42.7","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"a410106ead1f54b15aeaf91c54d97e7c869e2475","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.42.7.tgz","fileCount":79,"integrity":"sha512-ePvAKLCacsYkaFvy70Vp3zuOO0pE3ct5lcLcBMkWvnPbiUOlYJ+rSE1iHKOIofVnHpWeVeuvQWHEb5g6sH7frA==","signatures":[{"sig":"MEYCIQC1iH1aUNIrhq9oDEenXJWvmHHYYy6QVX+l8lC+x12RMQIhAM457UcqwPRyv01+aVdbp/zO7U84crpJw7wkvPlHhcDg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2325250},"gitHead":"b44085f07d6a0174dd0fde6e81f9dd4cbf7b6b65","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.42.7_1789035566649_0.3189415280645911","host":"s3://npm-registry-packages-npm-production"}},"0.42.8":{"name":"omnilane","version":"0.42.8","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.42.8","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"53717ce856c45ead5931e57dccc99498e8edcbdb","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.42.8.tgz","fileCount":79,"integrity":"sha512-tN1UlzTaIOxqZeL72SJbxwCI2y/lcS+r81q22OSJAyGkD/EiA90pzHObJbD0tvQYayokYxbFvffh5WRUoE49tw==","signatures":[{"sig":"MEUCIQDomue4o1Y95km9a30CansHpPrdiA3MKTWTSrM0gFTx+wIgQdTLjlhsFzZwHCF0xfbadqa+vTnhvAvmvHjPR/KDfpg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2354536},"gitHead":"7063126e77dc69366bff0f1af38fad436c0133bb","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.42.8_1789204706133_0.1536725595023265","host":"s3://npm-registry-packages-npm-production"}},"0.42.9":{"name":"omnilane","version":"0.42.9","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.42.9","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"4b6ccffe799064513c8fceade3c8c225d4a50d7f","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.42.9.tgz","fileCount":79,"integrity":"sha512-IH3FtAYbj2W/4gvPtEzHw64ZkVMjUE4ik1fU5uJhgwTLI+Y1bjesLivQ4jP0XFF6yQI29fG2RLTeaTrUQ/kBfA==","signatures":[{"sig":"MEUCIEwrqZgTGwlAp9j+dPk28uSz22bAgBjr4+PxEu8VmQr4AiEA5KDgmau+QMKZ7r4knH20hQXMnHgl3f7jG373W1DBCqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2359130},"gitHead":"293b68906217d6806a383e13d0582b4091f772a0","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.42.9_1789290931983_0.18741454741479702","host":"s3://npm-registry-packages-npm-production"}},"0.44.0":{"name":"omnilane","version":"0.44.0","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"author":{"name":"Seraphim0916"},"license":"MIT","_id":"omnilane@0.44.0","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"homepage":"https://github.com/Seraphim0916/omnilane#readme","bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"os":["darwin","linux"],"bin":{"omnilane":"bin/omnilane"},"dist":{"shasum":"aecb8f9479c0aca32f9aa1dd1c95b0bbf4cf6d64","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.44.0.tgz","fileCount":84,"integrity":"sha512-7BOrMpAt/rGz1pk33y4gvqAksWAYKUUf9IWZR+el6x0U08He3TJ5lMT0wf1s6N9C45oMeKLF/qaIGxr67dcZXg==","signatures":[{"sig":"MEUCIERVb3pmP0QoEADQWJlbwfcuP0yNjz+yQMwWwV1wxRH1AiEAzZHoLV7/ajO4hstP7//wlIMTV9zF+LKW92yeKsvAwxA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCbp7wBgHOT4QOSqEdIgHiOqmcExyA842747+//PkljNQIgRrmPetqdNlMpMFKP9LGdI6wJOi5dPbGp42/6VCC2YVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2518807},"gitHead":"78e440e9622e56a7f35505e0bc5aeb50e1f815a1","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/omnilane_0.44.0_1789928983991_0.6890771405853895","host":"s3://npm-registry-packages-npm-production"}},"0.45.0":{"os":["darwin","linux"],"_id":"omnilane@0.45.0","bin":{"omnilane":"bin/omnilane"},"bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"dist":{"shasum":"c6b7ab780989b04b67f276602d4edcdb1709d542","tarball":"https://registry.npmjs.org/omnilane/-/omnilane-0.45.0.tgz","fileCount":85,"integrity":"sha512-L6UWX5EV21pmCYIGnw5R6EiFKGaoqifjK3T8+KFfbF377qt+HwJkWjoMwpHox28ox59krCp/idBiakxFeqdicQ==","signatures":[{"sig":"MEQCIFNdUBDSoTi6NjKyFHupUndU5n3VY5UkPEMfr5ZnnGkxAiAX07lho04vgcbEeiIPmnURzjRy4TVUemm34X+e7/UCrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGpa/YnWaaVvKdRLeE6jI7q/KsxH4O7qDUPRAw0VtZDiAiAWCZbYkVPyDb7qTuRMM9d4nFiJROMYtml+Ys7rojLLRA=="}],"unpackedSize":2584811},"name":"omnilane","author":{"name":"Seraphim0916"},"gitHead":"c196c7158fd2d4aa15b4a06f6537b62de62dbd78","license":"MIT","version":"0.45.0","_npmUser":{"name":"seraphim0916","email":"Seraphim0916@me.com"},"homepage":"https://github.com/Seraphim0916/omnilane#readme","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"_npmVersion":"11.16.0","description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","directories":{},"maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/omnilane_0.45.0_1790024716182_0.11798379810279358"}}},"time":{"created":"2026-07-17T13:25:59.978Z","modified":"2026-09-21T21:05:16.474Z","0.7.0":"2026-07-17T13:26:00.180Z","0.7.1":"2026-07-18T01:28:48.394Z","0.8.0":"2026-07-18T02:15:32.703Z","0.8.1":"2026-07-18T03:02:23.937Z","0.8.2":"2026-07-18T04:25:31.269Z","0.8.3":"2026-07-18T06:15:10.046Z","0.9.0":"2026-07-19T03:57:17.083Z","0.9.1":"2026-07-19T07:59:35.002Z","0.10.1":"2026-07-26T00:22:45.042Z","0.10.2":"2026-07-26T01:21:55.861Z","0.10.3":"2026-07-26T07:51:30.309Z","0.10.4":"2026-07-26T13:58:13.635Z","0.11.0":"2026-07-27T05:23:53.605Z","0.12.0":"2026-08-03T03:36:18.226Z","0.13.0":"2026-08-03T05:28:27.479Z","0.14.0":"2026-08-10T05:24:44.237Z","0.15.0":"2026-08-28T04:01:10.020Z","0.20.0":"2026-08-30T08:15:37.488Z","0.21.0":"2026-08-30T13:48:33.277Z","0.31.0":"2026-09-01T01:04:50.543Z","0.32.0":"2026-09-02T07:14:33.311Z","0.33.0":"2026-09-03T04:23:54.527Z","0.34.0":"2026-09-03T08:52:39.627Z","0.41.1":"2026-09-06T12:29:39.068Z","0.42.1":"2026-09-07T00:20:59.503Z","0.42.2":"2026-09-07T04:46:43.416Z","0.42.4":"2026-09-07T23:14:57.462Z","0.42.5":"2026-09-09T18:26:18.012Z","0.42.6":"2026-09-10T05:51:50.678Z","0.42.7":"2026-09-10T10:19:26.813Z","0.42.8":"2026-09-12T09:18:26.290Z","0.42.9":"2026-09-13T09:15:32.210Z","0.44.0":"2026-09-20T18:29:44.107Z","0.45.0":"2026-09-21T21:05:16.290Z"},"bugs":{"url":"https://github.com/Seraphim0916/omnilane/issues"},"author":{"name":"Seraphim0916"},"license":"MIT","homepage":"https://github.com/Seraphim0916/omnilane#readme","keywords":["agentic","cli","llm","routing","dispatch","codex","claude","gemini","grok","multi-model","orchestration"],"repository":{"url":"git+https://github.com/Seraphim0916/omnilane.git","type":"git"},"description":"One routing table, every harness — classify subtasks into lanes and delegate each lane through a compatible caller-owned native agent or vendor CLI.","maintainers":[{"name":"seraphim0916","email":"Seraphim0916@me.com"}],"readme":"<div align=\"center\">\n\n# omnilane\n\n### 一張路由表,四個執行框架通用。\n\n*讓主迴圈不再猜要用哪個模型。*<br/>\n從 **Claude Code · Codex · Grok Build · Antigravity** 任一框架開車,每個子任務都派給<br/>\n真正最擅長它的模型——Codex、Claude、Grok、Gemini、Kimi、Qwen、OpenCode,<br/>\n或經 OpenRouter 直達任何託管模型——用你已經在付的訂閱,或一把 API 金鑰。\n\n<img src=\"docs/hero.zh-TW.png\" alt=\"omnilane 把每個子任務派給 Claude Code、Codex、Grok、Antigravity 中最擅長的模型\" width=\"820\"/>\n\n[![ci](https://github.com/Seraphim0916/omnilane/actions/workflows/ci.yml/badge.svg)](https://github.com/Seraphim0916/omnilane/actions/workflows/ci.yml)\n[![license](https://img.shields.io/github/license/Seraphim0916/omnilane)](LICENSE)\n[![version](https://img.shields.io/github/v/tag/Seraphim0916/omnilane?label=version)](https://github.com/Seraphim0916/omnilane/tags)\n\n[English](README.md) · **繁體中文** · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md)\n\n</div>\n\n---\n\n## 🤔 omnilane 是什麼?\n\n**問題在哪。** 你已經在用某個 AI 寫程式助手——**Claude Code、Codex、Cursor、\nGemini CLI** 之類。每一個都只接一個模型家族,所以你交代的每件事都跑在那同一個\n模型上,不管它適不適合:隨手改個檔名燒掉最貴的模型,真正難的架構問題卻剛好落在\n你當下開著的那個。\n\n**omnilane 做什麼。** 它給你的助手一張路由表。工作被分進**通道**——最難的實作、\n機械粗活、初篩、硬判斷、文字終審——每條通道指名對那件事最強(也最省)的模型。\n助手依通道解析目標模型，再委派給能力相符的原生子代理或既有 CLI；同模型也仍須派工。\n\n**它不是什麼。** 不是 proxy、不是另一筆訂閱、不是又一個要顧的服務。它就是一張表\n加一支派工腳本,躲在你現有工具背後跑。`./install.sh --uninstall` 可完全清除。\n\n**你不需要每一家訂閱。** 每條通道都是候選鏈,派工時自動採用本機實際裝了的第一個\n候選。裝一家或七家都行,整條鏈都沒有的通道就自動關閉,而不是報錯。只有一份訂閱\n時,整張預設表會收斂到那一家。\n\n**[⬇ 直接跳到 60 秒上手](#-60-秒上手)** · **[❓ 看常見問題](#-常見問題)**\n\n## ⚡ 60 秒上手\n\n你本人坐在終端機前，現在就可以派工。\n\n**1. 安裝。**\n\n```bash\nnpm i -g omnilane\n```\n\n或是把專案抓下來，順便拿到可以自訂的路由表與技能檔：\n\n```bash\ngit clone https://github.com/Seraphim0916/omnilane && cd omnilane\n./install.sh          # finds your CLIs, links the skill, speaks your language\n```\n\n**2. 看看手上有什麼。** `doctor` 會列出 omnilane 找得到哪些模型 CLI 與 API 金鑰，讓你知道實際會跑哪一個。它不會改任何東西。\n\n```bash\nomnilane doctor\nomnilane list         # the routing table this machine resolves\n```\n\n**3. 表明你是操作者，然後派工。**\n\n```bash\nexport OMNILANE_AA_OPERATOR_ASSERTED_HUMAN=1\nomnilane route hardest-coding \"fix the flaky auth token refresh\"\nomnilane ui start     # optional: watch jobs live in your browser\n```\n\n> **為什麼要那行 export?** omnilane 每次派工都會拿「發問者的能力分數」去比對，所以派工時得說清楚是誰在問。真人說一次就好：`OMNILANE_AA_OPERATOR_ASSERTED_HUMAN=1`（或每次帶 `--operator-asserted-human`）。模型不能替自己這樣宣稱，它的身分是從啟動它的 CLI 讀出來的。兩者都沒有的話，派工會在建立任何工作之前就被拒絕，代碼是 `missing-caller-context`。\n\n真人用到這裡就夠了。下面這一節講更實用的用法：讓你的 AI 助理自己派工。\n\n## 🤖 讓你的 AI 助理來開 omnilane\n\n助理（Claude Code、Codex、Grok Build 或 Antigravity）會讀一份技能檔，裡面教它怎麼選通道、怎麼派工。每台機器做一次，共四步。\n\n### 第 1 步：把技能交給助理\n\n`./install.sh` 會替它找到的每個 CLI 建好連結。要手動的話：\n\n| 助理 | 做法 |\n|---|---|\n| Claude Code | `claude plugin marketplace add <本專案路徑>`，再 `claude plugin install omnilane@omnilane`（同時附上 `/route`、`/route-jobs` 與完工收件匣）；或把 `skills/omnilane` 連結進 `~/.claude/skills/` |\n| Codex | 把 `skills/omnilane` 連結進 `~/.codex/skills/` |\n| Grok Build | `grok plugin install <本專案路徑> --trust` |\n| Antigravity | `agy plugin install <本專案路徑>`（先用 `agy plugin validate <本專案路徑>` 檢查） |\n\n### 第 2 步：證明一次「每個 CLI 真的會選到你指定的模型」\n\n模型來派工時，只能派給這台機器**證明過**的目標：例如 `codex -m gpt-5.6-sol` 真的跑的是 Sol。這份證明是一個本機檔案，叫**傳輸覆蓋檔（transport overlay）**。安裝包裡不會附。沒有它，每條通道都會用 `runtime-mapping-unverified` 拒絕模型呼叫者，`omnilane doctor` 也會警告 `no overlay configured`。\n\n請在一般的桌面終端機裡建立。（用 ssh 登入的工作階段讀不到 CLI 登入用的鑰匙圈，會把每一家都報成沒登入。）\n\n```bash\ncd \"$(npm root -g)/omnilane\"            # or your clone\nROOT=~/.omnilane/transport-evidence/first-sweep\npython3 scripts/lib/probe_sweep.py --root \"$ROOT\"     # one tiny prompt per selector, about 55 calls\npython3 scripts/lib/build_overlay.py --root \"$ROOT\"\ncp \"$ROOT/transport-contracts.local.json\" ~/.omnilane/transport-contracts.local.json\necho 'export OMNILANE_AA_TRANSPORT_OVERLAY=\"$HOME/.omnilane/transport-contracts.local.json\"' >> ~/.omnilane/local.sh\nomnilane doctor | grep transport-overlay              # PASS, with a count per vendor\n```\n\n沒登入的那一家會被標成 `unprobeable`，就只是維持未驗證，其他家照常可用。\n\n### 第 3 步：讓這份證明自己保持最新，不用你動手\n\n覆蓋檔是用雜湊值釘住每個 CLI 執行檔的，而**這些 CLI 會自己更新**，常常一週一次。更新之後，那一家的通道就會被拒，直到覆蓋檔重簽為止。`omnilane resign` 一個指令做完全部：找出哪裡變了、只重新探測那一家、檢查結果、換上新檔、送一筆真實派工確認，失敗就自動還原舊檔。\n\n它不是什麼都簽。變動過的 CLI 只有在「簽署者跟紀錄上的相同、而且裝在同一類位置」時，才會**無人值守**地重簽。所以先告訴它一次你接受哪些簽署者：\n\n```bash\nomnilane resign --record-signers     # once, right after Step 2\n```\n\n如果你每次更新後都會自己修補某家 CLI、再用 adhoc 重新簽署，也要告訴它一次（每家各一次）；之後同一個安裝目錄裡的 adhoc 新版也會無人值守地重簽：\n\n```bash\nomnilane resign --trust-adhoc claude   # 只有你自己會把 claude 簽成 adhoc 時才需要\n```\n\n接著讓它每天跑一次。用什麼排程器都行，但一定要跑在**你的桌面登入工作階段裡**（CLI 需要鑰匙圈）。macOS 可以用 LaunchAgent：\n\n```bash\ncat > ~/Library/LaunchAgents/dev.omnilane.resign.plist <<'EOF'\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\"><dict>\n  <key>Label</key><string>dev.omnilane.resign</string>\n  <key>ProgramArguments</key><array><string>/bin/zsh</string><string>-lc</string><string>omnilane resign</string></array>\n  <key>StartCalendarInterval</key><dict><key>Hour</key><integer>9</integer><key>Minute</key><integer>0</integer></dict>\n  <key>StandardOutPath</key><string>/tmp/omnilane-resign.log</string>\n  <key>StandardErrorPath</key><string>/tmp/omnilane-resign.log</string>\n</dict></plist>\nEOF\nlaunchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/dev.omnilane.resign.plist\n```\n\n本版實測過從桌面終端機執行 `omnilane resign`，包含一次真實的、無人值守的 Codex 自動升級重簽；上面這個 LaunchAgent 包裝只是範例，本身沒有實測過。請在你的機器上用 `launchctl kickstart gui/$(id -u)/dev.omnilane.resign` 確認。\n\n`omnilane resign` 的結束碼：\n\n| 結束碼 | 意思 | 你要做的事 |\n|---|---|---|\n| 0 | 沒有東西變動，或變動的都已重簽 | 不用做 |\n| 10 | 只有 `--check` 會出現：有東西變了 | 執行 `omnilane resign` |\n| 20 | 有一家需要你：簽署者是新的或沒紀錄、執行檔沒簽章或在本機被改過、換了安裝目錄，或供應商這次拒絕了上次通過的探測 | 讀訊息。它會印「稍後重試」，或印出你看過之後該執行的那一行 `omnilane resign --vendor V --approve V` |\n| 30 | 重簽後的覆蓋檔沒通過真實派工，已還原成前一份 | 沒有東西壞掉，讀紀錄即可 |\n| 2 | 沒有設定覆蓋檔 | 做第 2 步 |\n\n兩個限制要知道。簽署者檢查用的是 macOS 的程式碼簽章，所以在 Linux 上，每次 CLI 變動都會停在結束碼 20 等你 `--approve`。另外，沒有真正簽章的執行檔（例如在本機修補過的 CLI）一定會停下來等核准：沒有任何東西能證明它來自原廠，而這正是這項檢查存在的理由。\n\n### 第 4 步：在助理裡面試試看\n\n請你的助理執行 `omnilane whoami`。它應該回報自己是哪個模型、哪個強度，以及一個分數。接著請它派一件小事：「用 omnilane 讓 triage 通道數一數這個專案裡有幾個 TODO 註解」。\n\n如果被拒絕，拒絕訊息會說是哪一關沒過、該怎麼辦：\n\n| `failed_gate` | 白話 | 怎麼修 |\n|---|---|---|\n| `caller-identity` | omnilane 看不出是哪個模型在問 | 讓它把 `omnilane whoami` 當成那次工具呼叫裡的**唯一一條指令**。Codex 尤其如此：後面接了 `; echo $?`、`&&` 或管線就讀不到 |\n| `target-transport` | 這台機器還沒證明過那個目標，或 CLI 之後更新過 | `omnilane resign`（第 3 步） |\n| `downward-ceiling` | 目標模型的分數比發問的模型高；模型只能平派或往下派 | 從拒絕訊息列出的 `eligible_lanes` 挑一條，或用更高的強度啟動助理 |\n\nCodex 的排程喚醒既有對話串時不會記錄強度。omnilane 這時會把該呼叫者限制在它那個模型的最低分，而不是直接拒絕：便宜的通道照常可用，貴的通道會告訴你要哪個強度才派得動。\n\n## 🧭 運作方式\n\nomnilane 讓**任何**一個 agentic CLI 的主迴圈把子任務分類到通道(lane),\n再以無頭方式把每條通道派工給該項工作最強的廠商——直接沿用你既有的訂閱登入\n(`openrouter` vendor 例外:免裝任何 CLI,一把 API 金鑰直連):\n\n```mermaid\nflowchart LR\n    M[\"主迴圈<br/><i>你在用的任一 CLI</i>\"] --> T{{\"routing.yaml<br/>一張共用路由表\"}}\n    T -->|hardest-coding| C1[\"Claude — Fable 5.1\"]\n    T -->|bulk-mechanical| C2[\"Codex — GPT-5.6 Sol\"]\n    T -->|taste-final| C3[\"Claude — Fable 5.1\"]\n    T -->|long-context| C4[\"Gemini — 3.7 Flash\"]\n    T -->|live-search| C5[\"Grok — 4.6\"]\n    T -->|\"arbitrate(選配)\"| C6[\"vote — 1-4 模型評審團\"]\n```\n\n- **`routing.yaml`** — 通道 → 廠商+模型+推理檔位。一個檔案,四個執行框架共用。\n- **候選鏈** — 一條通道可以列多個候選(`codex … | claude … | off`),\n  派工時自動採用本機**實際裝了**的第一個廠商 CLI。只訂一、兩家也能用同一張表。\n- **`scripts/dispatch.sh [--vendor V] <通道> \"<任務>\"`** — 查表後以無頭方式\n  呼叫對應廠商的 CLI。`--vendor` 會鎖定點名廠商，不做降級。\n- **`skills/omnilane/SKILL.md`** — 一份技能四個框架都能載入:\n  先解析通道的目標模型，再透過相符的原生子代理或 CLI 派工。\n- **`omnilane mcp`** — 同一套路由改以 MCP stdio server 提供,\n  給走 MCP 而非 skill 整合的宿主。\n\n<div align=\"center\">\n\n| | | |\n|:---:|:---:|:---:|\n| 🧭 **一張表**<br/>四個執行框架共用 | 🪂 **候選鏈**<br/>自動降級到你有裝的 CLI | 🗳️ **意見評審團**<br/>重大決定多模型投票 |\n| 🔒 **安全機制**<br/>排隊鎖 · 看門狗 · 禁巢狀 | 🌏 **五種語言**<br/>安裝器說你的母語 | ↩️ **完全可逆**<br/>`--uninstall` 一鍵還原 |\n\n</div>\n\n## 🛤️ 通道一覽(預設值;實際生效值跑 `scripts/dispatch.sh --list` 看)\n\n| 通道 | 首選模型 | 備選模型 | 用途 |\n|---|---|---|---|\n| 🔥 hardest-coding | GPT-6 Astra（xhigh） | Claude Fable 5.1（xhigh）→ GPT-6 Astra（high）→ Claude Fable 5.1（high）→ GPT-6 Astra（medium）→ Claude Opus 5（high）→ GPT-6 Astra（low）→ GPT-5.6 Sol（xhigh）→ Grok 4.7 → Grok 4.6 → Gemini 3.8 Flash（High） | 最難的實作、深度除錯、正確性攸關的修改 |\n| 🏗️ bulk-mechanical | GPT-6 Astra（low） | GPT-5.6 Sol（high）→ Gemini 3.8 Flash（High）→ Claude Opus 5（medium） | 重構、搬遷、測試、大面積掃描等耐力工作 |\n| 🧹 triage | GPT-5.6 Luna（high） | Gemini 3.8 Flash（Low）→ Claude Sonnet 5（low）→ Claude Haiku 4.5 | 大量掃描、第一輪篩選 |\n| ⚖️ hard-judgment | Claude Fable 5.1（xhigh） | GPT-6 Astra（xhigh）→ Claude Opus 5（max）→ GPT-6 Astra（high）→ Claude Opus 5（xhigh）→ Claude Opus 5（high）→ Grok 4.7 → Grok 4.6 → Gemini 3.8 Flash（High） | 架構裁決、深度推理、第二意見 |\n| ✒️ taste-final | Claude Opus 5（max） | Claude Fable 5.1（xhigh）→ Claude Opus 5（xhigh）→ Grok 4.7 → GPT-6 Astra（xhigh）→ Claude Opus 5（high）→ Grok 4.6 → Gemini 3.8 Flash（High） | 對外文字與風格裁決；評測不等於審美證明 |\n| 💬 consult | GPT-6 Astra（xhigh） | Claude Fable 5.1（xhigh）→ Grok 4.7 → Grok 4.6 → Gemini 3.8 Flash（High） | 直接點名模型諮詢；保留 `--vendor` 避免降級 |\n| 🎨 ui-draft | GPT-6 Astra（high） | Claude Opus 5（high）→ GPT-6 Astra（low）→ Gemini 3.8 Flash（High） | 只有附設計系統／參考圖時做 UI 草稿；不把評測誇大成審美證明 |\n| 📚 long-context | Claude Opus 5（high） | Claude Opus 5（medium）→ Claude Opus 5（low）→ GPT-5.6 Terra（max）→ Gemini 3.8 Flash（High） | 長文件整合；上下文容量本身不證明任務品質 |\n| ⚡ fast-agentic | GPT-6 Astra（low） | Gemini 3.8 Flash（Medium）→ GPT-5.6 Sol（medium）→ Claude Opus 5（low） | 高速多步驟工具迴圈、多模態檢查 |\n| 📡 live-search | Grok 4.7 | Grok 4.6 → Gemini 3.8 Flash（High）→ Claude Opus 5（medium） | 即時 X／網頁搜尋；備援只有一般網搜，不等同 X 脈絡 |\n| 🚰 coding-overflow | Grok 4.7 | Grok 4.6 → Gemini 3.8 Flash（High）→ Kimi K3 → Qwen3 Coder Plus → OpenCode | 顯式 Codex 額度卸載；供應商失敗後不自動跨家重試 |\n| 🗳️ arbitrate | `off`（選配模型評審團） | — | 重大決定的內建意見評審團；預設停用，在 `routing.local.yaml` 啟用，每位評審每輪一次呼叫 |\n\n**備選模型**是候選鏈的下一位——首選那家的廠商 CLI 沒裝時,派工就降到它。每條\n通道都是這樣一條鏈;整條都沒裝時,通道自動降為 `off`。\n\n> **Fable 5.1 與 Astra 現在領頭困難工作。** 同條件證據見[常見問題](#-常見問題)。\n\n### 自然語言諮詢\n\n透過 `omnilane` 技能或 `/route`,你可以直接說: **「請 Opus 挑戰這個架構。」**\n自然語言是由 Agent Skill 判讀,不是在 `dispatch.sh` 裡做自由文字 shell 解析。\n\n- 只問「哪個模型適合」時,回答相符通道目前第一個可用模型,不發出模型呼叫。\n- 只點廠商名時,使用該廠商在 `consult` 通道裡設定的候選模型。\n- 點標準模型別名(例如 Opus)時,會鎖定技能表裡的確切模型家族。明確目標\n  不存在或 CLI 不可用時會清楚失敗,不會暗中換廠商或模型家族。\n\n## 用助理自己的子代理\n\nomnilane 預設把工作交給廠商的命令列工具。當該做這件事的模型就是助理**自己那一家**的時候，再繞出去叫另一個 CLI 是多走一趟：多一次登入、多一個程序，那個 CLI 一更新又多一個會壞的地方。多數助理自己就能開子代理，omnilane 可以改成替它規劃這種工作。有兩種做法。\n\n**跟助理跑一模一樣東西的工人（`--inherit`）。** 助理開子代理時*不指定模型、也不指定強度*，工人就是呼叫者的分身。分身不可能比本尊強，而 omnilane 的分數檢查要防的就只有這件事，所以這條路不需要廠商 CLI、不需要傳輸覆蓋檔；呼叫者的強度讀不到、或覆蓋檔過期時，它照樣能用。\n\n```sh\nomnilane native-context --workdir /absolute/repo --inherits-caller-runtime   # prints a capability file\nomnilane route --inherit --native-context /path/printed/above --workdir /absolute/repo triage \"Count the TODO comments\"\n# -> a PENDING handoff (JSON). The assistant now starts its own sub-agent with no\n#    model argument, checks the result, and records it:\nomnilane jobs --json complete-native JOB_ID /absolute/completion.json\nomnilane jobs --json status JOB_ID\n```\n\n老實的部分：交接單上標著 `satisfies_lane_target: false`。通道在這裡只是「這是哪一類工作」的標籤。這樣做出來的結果是「助理自己的子代理」做的，絕不是「hardest-coding 那個模型」做的；需要比呼叫者更強模型的通道，照樣會被拒。`--inherits-caller-runtime` 是助理自己聲明「我的子代理工具就是這樣運作」，omnilane 觀察不到。各家目前已知的狀況：\n\n| 助理 | 不帶模型參數的子代理 |\n|---|---|\n| Claude Code | 官方文件寫明會用主對話的模型，強度沿用工作階段（除非代理定義另有設定）。內建 general-purpose 代理、且沒設 `CLAUDE_CODE_SUBAGENT_MODEL` 時成立。本版完整跑通過 |\n| Codex | `collaboration.spawn_agent` 不帶模型、不帶強度。本版完整跑通過 |\n| Grok Build | 文件寫明沿用上層的模型（內建 `general-purpose` 代理是 `model: inherit`）；強度沒有文件說明。本版沒跑過 |\n| Antigravity | `agy` 1.2.7 找不到子代理工具。不適用 |\n\n**助理的工具能指定的特定模型。** 把工具真正接受的東西寫進能力聲明檔（從 `omnilane native-context` 產生的檔開始，每組確切的模型與強度加一列），再用一般的 `omnilane route` 帶上 `--native-context FILE`。只有某一列完全相符時 omnilane 才會用子代理：模型、強度、模式、工作目錄、工具、隔離方式、生命週期都要對上。同一家廠商不等於同一個模型，也不會從你裝了哪些 CLI 去猜。`--executor native` 不符就失敗、不回退；`--executor cli` 強制走外部 CLI。如果同廠商的目標只因為沒給檔案而走了 CLI，派工現在會明說。\n\n不管哪一種，子代理都共用助理的工具與檔案系統：沒有作業系統層級的沙箱，`advise`／`work` 是意圖，不是強制。背景、常駐、具名對話串、多輪、投票與 `sysops` 工作仍走 CLI。協定處理需要 Python 3.9 以上。結構定義、完成檔、代理重用與取消：見 [docs/native-executor.md](docs/native-executor.md)。\n\n<details>\n<summary><b>模型角色指引：仍須派工</b></summary>\n\n<br/>\n\n通道的最佳模型不因主控是誰而改變。以下是角色指引，不是親自執行的豁免：\n即使模型相同，也要委派給子代理。呼叫端明示模型、推理強度、任務模式與工作目錄，\n並以空工具陣列及 `shared-inherited` 隔離和生命週期能力同列相符時，才採原生代理；否則走 CLI。\n主控負責編排與驗收，工作代理執行任務且不得再派工。\n\n- **Claude Code · Fable 5.1**——品質敏感工作建議的提示詞層主控；這是角色，不是新通道或自動選模器。最難編碼用 max，判斷／文字用 xhigh；獨立 Codex 複核用 Astra，bulk 用 Sol，長文／高速工作用 Gemini 3.8 Flash，即時搜尋用 Grok。\n- **Claude Code · Opus 5**——顯式點名時可做均衡型提示詞層主控與獨立複核（一般用 `high`，更深複核可選 `xhigh`），也保留為 long-context 備援；這是選配角色，不是新通道或 hard-judgment 預設。\n- **Codex · Sol**——bulk-mechanical 與有參考限制的 ui-draft 委派並使用 high；最難編碼／判斷升級 Fable 或 Astra，長文／高速工作交 Gemini 3.8 Flash，即時搜尋交 Grok。\n- **Codex · Astra**——提示詞層主控備位與獨立複核者；最難編碼／判斷與 consult／taste 預設用 xhigh，需要時可明確指定 `--vendor codex --effort max`；顯式 model／effort 永遠優先。\n- **Codex · Terra**——用 max 接 Codex 的 long-context 備援；bulk 留給 Sol high，困難工作升級 Fable／Astra。\n- **Grok Build · Grok 4.7／4.6**——委派 live-search、coding-overflow，並兼任 hardest-coding、hard-judgment、taste-final 的備援。首選人手在的話，最難的編碼／判斷／文字交給 Codex、Claude、Gemini；仍要驗證 API 簽章與引用事實。\n- **Antigravity · Gemini 3.8 Flash**——long-context 用 Medium，fast-agentic／triage 用 Low，bulk／overflow／網搜備援用 High。不要把代理／編碼評測推論成審美或主控權。\n\n</details>\n\n## 🖥️ Live Board\n\n每一次派工——不論前景或 `--background`——都是落盤的一筆 job。Live Board\n是架在這個 job 儲存上、選配且唯讀的本機工作台:每個模型被問了什麼、答了\n什麼、怎麼路由、是否還在執行,一眼看完。\n\n<div align=\"center\">\n\n<img src=\"docs/live-board.png\" alt=\"Omnilane Live Board 桌面版——左側為工作清單,右側為選定工作的任務、公開結果與模型路徑\" width=\"820\"/>\n\n<img src=\"docs/live-board-mobile.png\" alt=\"Omnilane Live Board 手機版——可搜尋的工作清單與狀態篩選\" width=\"280\"/>\n\n</div>\n\n```bash\nomnilane ui start    # 啟動或沿用伺服器，印出通過驗證的網址\nomnilane ui status   # 查看本機伺服器狀態\nomnilane ui url      # 印出目前通過驗證的網址\nomnilane ui stop     # 正常停止\n```\n\n桌機版的工作清單與詳細內容可各自捲動;手機版使用清單／詳細內容切換，支援返回\n鍵與 Esc。伺服器傳送事件(SSE)會即時更新，又不會重建目前聚焦的工作列;短暫\n斷線時保留最後畫面並自動重連。可把任何已載入的工作釘成參考，再選另一筆工作，\n並排比較模型路徑與公開結果;參考快照只留在瀏覽器記憶體，關頁即消失。服務只綁\n`127.0.0.1`、用隨機 token 保護、全程唯讀。畫面只顯示 `task.txt` 與公開的\n`out.txt`，不顯示工作端或廠商原始 log。\n\n搜尋與狀態篩選會套用到最近保留的 50 筆工作歷史。按「匯出目前結果」只會把畫面上\n目前可見的公開中繼資料下載成 JSON；不含 token、任務本文、結果本文、工作目錄與原始 log。\n\n畫面提供英文、日文、韓文、繁體中文與簡體中文。首次載入依瀏覽器語言決定，可用標題列\n的切換器覆寫，選擇會記在本機。\n\n核心路由不需要 Python;只有這個介面需要 Python 3.9 以上。\n\n## 📦 安裝\n\n前置需求:想路由到的廠商 CLI(`codex`、`claude`、`grok`、`agy`,另可選\n`kimi`、`qwen`、`opencode`)已登入且在 `PATH` 上——**有幾家裝幾家就好**,\n缺的通道會自動降級。`openrouter` vendor 是例外:不需要任何 CLI,只要\n`curl` 和環境變數裡的 `OPENROUTER_API_KEY`。\n\n最快:`./install.sh` — 自動偵測本機的 CLI、接好技能、列出其餘的外掛安裝指令、\n印出這台機器的生效路由表,最後問你要不要進入互動設定選單(`--uninstall` 可逆)。\n安裝介面依系統語言自動切換(英/繁中/簡中/日/韓,可用 `OMNILANE_LANG=zh-TW`\n強制)。另提供選配的各 CLI **常駐路由提示**:在各 CLI 指令檔尾端加一段有\n標記、可逆的區塊(`~/.claude/CLAUDE.md`、`~/.codex/AGENTS.md`、\n`~/.grok/Agents.md`、`~/.gemini/GEMINI.md`——路徑可能隨 CLI 版本不同),\n讓主迴圈記得查路由表;非互動安裝可帶 `OMNILANE_HOOKS=all|none|claude,codex`。\n`./install.sh --check` 可唯讀檢查漂移；安裝或 `--uninstall` 加上\n`--dry-run`，可先預覽每個由這份 checkout 擁有的檔案動作。\n手動接線:\n\n要回滾安裝器擁有的連結與標記提示，執行 `./install.sh --uninstall`。\n\n- **Claude Code**:以外掛安裝(附 `/route`、`/route-jobs` 指令,並內建\n  `SessionStart` hook,開場自動注入路由提醒,不必修改 CLAUDE.md),\n  或把 `skills/omnilane` 放進 `~/.claude/skills/`。\n- **Codex**:把 `skills/omnilane` 放進或連結到 `~/.codex/skills/`。\n- **Grok Build**:`grok plugin install <本 repo 路徑> --trust`\n- **Antigravity**:`agy plugin install <本 repo 路徑>`(先用\n  `agy plugin validate` 檢查)\n\n### MCP server\n\n`omnilane mcp` 會啟動零依賴、跑在本機的 MCP stdio server,讓任何支援 MCP\n的宿主不必安裝 skill、也不用加路由提醒,就能發現並呼叫 omnilane。在宿主\n設定裡指向已安裝的 CLI 即可:\n\n```json\n{\n  \"mcpServers\": {\n    \"omnilane\": {\n      \"command\": \"omnilane\",\n      \"args\": [\"mcp\"]\n    }\n  }\n}\n```\n\nServer 提供 `route`,以及一組唯讀查詢工具:`list_lanes`、`explain`、`validate`、`dry_run`、`jobs_list`、`jobs_status`、`jobs_result`、`jobs_stats`、`jobs_recommend`、`jobs_audit`、`doctor`,以及必須明確選用的 `provider_probe`。\n`route` 預設唯讀 `advise` 模式;選 `work` 的呼叫必須同時提供明確的\n`workdir`。\n\n唯一的執行需求是 Node.js(不裝任何 npm 套件);也可以直接\n`npm install -g omnilane`,CLI 連同 MCP server 一起裝好。\n\n## ⚙️ 自訂設定\n\n三層,全部選用:\n\n1. **互動選單** — `scripts/configure.sh` 列出可設定的通道,讓你逐條選\n   廠商 → 模型 → 推理檔位(有建議清單,也可自由輸入未來的新模型名),\n   寫進 `~/.omnilane/routing.local.yaml`。多廠商 `consult` 會刻意略過,\n   要改請手動編輯。`install.sh` 裝完會主動問要不要跑。\n2. **`~/.omnilane/routing.local.yaml`** — 手改覆寫檔,格式同 `routing.yaml`,\n   本機優先。參考 `routing.local.yaml.example`。\n3. **`~/.omnilane/local.sh`** — 機器專屬的執行檔路徑、proxy、認證包裝;\n   每個執行器都會載入,永不進版控。參考 `local.sh.example`。\n\n隨時檢查結果:\n\n```\nscripts/dispatch.sh --list     # 生效表,標出候選鏈降級與關閉的通道\n```\n\n## 📖 指令參考\n\n```\nomnilane list | route … | jobs … | configure   # 全域指令,任何目錄都能用\n                                               # (install.sh 會連結進 ~/.local/bin)\neval \"$(omnilane completion bash)\"             # 在目前 Bash 啟用補全\nsource <(omnilane completion zsh)               # 在目前 Zsh 啟用補全\nomnilane completion fish | source              # 在目前 Fish 啟用補全\nomnilane ui start                              # 啟動或沿用本機 Live UI,印出網址\nomnilane ui status                             # 查看 Live UI 是否運作中\nomnilane ui url                                # 印出目前通過驗證的本機網址\nomnilane ui stop                               # 停止 Live UI\nomnilane doctor [--json] [--strict] [--probe V] [--probe-timeout SEC]  # 實際探測必須明確選用\nomnilane benchmark [--json] [--run] [--vendor V] [--cost-per-call V=USD] # 預設只乾跑\ndispatch.sh [--background] [--dry-run] [--thread NAME] [--mode advise|work|sysops] [--workdir 目錄]\n            [--vendor V] [--model M] [--effort E] [--timeout SEC] [--job-timeout SEC]\n            [--caller-context FILE | --operator-asserted-human]   # who is asking\n            通道 \"任務\"                              # \"-\" 表示從 stdin 讀任務\ndispatch.sh [--json] --list [--json]\ndispatch.sh [--json] --explain 通道 [--json]       # 離線逐候選解釋路由決策\ndispatch.sh [--json] --validate [--json]           # 離線檢查生效路由，不呼叫模型\njobs.sh [--json] {list | status 工作ID | result 工作ID} # JSON 結果只回中繼資料，不回本文\njobs.sh [--json] list [--lane L] [--vendor V] [--status running|done]  # 過濾清單\njobs.sh wait 工作ID [--timeout N]                  # 工作結束碼；124 逾時；125 工作者消失\njobs.sh cancel 工作ID                              # 停止執行中的工作:整組 SIGTERM,再 SIGKILL\njobs.sh rm 工作ID                                  # 刪除單一已完成/已死工作(執行中會被拒絕)\njobs.sh [--json] stats [--last N] [--lane L] [--vendor V]  # 本機成功率與路由彙整\njobs.sh [--json] recommend [--last N] [--lane L] [--min-samples N]  # 有證據門檻的廠商建議\njobs.sh audit [--last N] [--json]                  # 唯讀檢查工作完整性與隱私\njobs.sh prune [--keep N] [--apply]                # 預設只預覽；只清理已完成工作\nomnilane mcp                                   # MCP stdio server(需 Node.js)\nomnilane release-audit [--target 版本] [--json]     # 離線、唯讀的發布閘門\nconfigure.sh                                        # 互動通道選單\nconfigure.sh set|get|unset|list|diff LANE [SPEC]    # 非互動編輯/檢視 routing.local.yaml\n```\n\n`--thread NAME` 會在多次單次派工間延續命名的 Claude、Codex、Grok 或 Gemini\n對話。0.33.0 會固定供應商、模型、effort 與實體工作目錄；可用\n`jobs.sh threads`、`threads show NAME`、`threads rm NAME` 管理本機狀態，\n移除狀態不會刪除供應商端工作階段。\n\n`jobs recommend` 只讀取通過驗證的公開中繼資料與退出碼。候選達到最低樣本數後，\n依成功率、樣本數、廠商名稱排序；預設至少三筆已完成工作。它不讀任務／結果本文，\n也不修改路由。\n\n`doctor --probe V` 只會做一次有逾時上限的 advise 模式供應商呼叫，回傳可用性、\n選到的模型、耗時與回應位元組數，不回傳回答本文；未帶 `--probe` 時仍完全離線。\n`benchmark` 使用 `benchmarks/workloads.tsv` 的固定題組，預設只解析路由、不呼叫供應商；\n`--run` 才是實際呼叫閘門，成本總額也只依 `--cost-per-call` 明確提供的估值計算。\n\n**重大決定可以開評審團,不是問一個人。**`arbitrate` 通道**預設關閉**——\n評審團每評審每輪燒一次額度,所以做成選配。要用就在 `routing.local.yaml`\n寫 `arbitrate: vote codex,claude,grok -`,或跑設定選單,從\ncodex/claude/grok/gemini 自選 1-4 個評審。開了之後,同一個問題丟給每個\n評審,意見並排回來,由發問的主控模型當主席下裁決。檔位欄填 `2` 開辯論輪\n——每個評審看完整個評審團的意見,只針對分歧互駁。進階使用者可用\n`exec` 廠商換成自己的閘門:`arbitrate: exec /路徑/腳本 -`,腳本收\n`MODE WORKDIR EFFORT PROMPT_FILE OUTPUT_FILE`、把裁決寫進 `OUTPUT_FILE`\n(見 `scripts/runners/run-exec.sh`)。\n\n退出碼:`2` 用法錯誤(包含廠商值不合法,或指定廠商不在該通道)、`3` 通道已關閉、\n`4` 候選鏈沒有可用 CLI,或指定廠商已設定但其 CLI 不可用、\n`5` 第一輪成功評審太少、`6` 第二輪沒有任何反駁成功、`86` 拒絕巢狀派工、\n`87` 等鎖逾時、`124` 整體任務逾時;\n其餘直接透傳工作端自己的退出碼。\n\n## 🎭 模式\n\n- **advise（預設）**：本機唯讀分析；供應商支援時可用原生網頁／搜尋工具。模型連線保留，修改工具受限；不同供應商的 X／網搜能力不視為等同。\n- **work**：檔案與命令操作限制在明示的 `--workdir`，關閉代理工具對外連線，但保留模型連線。尚未支援的強制邊界會在呼叫模型前停止，不偷偷變成 sysops。\n- **sysops**：每次派工明示選用，開放代理工具、檔案與網路存取；永遠不是通道預設值，任務須列明可執行操作。\n\nCLI 省略 `--workdir` 時預設為呼叫端目前目錄；任務書仍應明示工作目錄。MCP `route`／`dry_run` 的 work 介面則另行要求明示 `workdir`。\n\nCodex 與 Claude 的三種模式使用不同政策。Agy advise／sysops 使用獨立的每工作階段原生設定，不替換訂閱認證；Agy 1.1.27 work 已以四個經驗證工具及原生終端沙箱完成限定的新建／續接驗收：工作目錄內讀寫、修改、編譯及越界寫入拒絕通過。外部暫存／快取讀取也受限；每次啟動重寫明示設定，不宣稱設定全程不可變。另一次正式 work 即時／FIFO 兩輪驗收已通過前輪讀回、越界寫入拒絕及正常關閉，來源保持不變。Grok advise 使用原生工具允許／拒絕規則；Grok 1.0.13 的完整一次性 `plain` 路徑已驗證原生關鍵字搜尋、抓頁及寫入拒絕，使用內部網頁工具 ID 與每筆工作的 MCP 就緒狀態隔離，不關閉掛鉤。若 `CONTEXT_MODE_MCP_SENTINEL_DIR` 已設為非空值，會在呼叫模型前明確回報衝突，不覆寫原設定。原生子程序網路隔離僅支援 Linux，因此 macOS Grok work 仍保留閘門；Grok 即時模式仍須明示 sysops，此次 advise 結果不擴張到其他路徑。OpenRouter 維持僅 advise；其餘供應商不自動納入這份四供應商契約。證據範圍見[日期化執行驗收表](docs/model-capabilities-2026-09.md#f-mode-runtime-gate-2026-09-06)。\n\n## 🔒 內建安全機制\n\n- **禁止巢狀派工** — 工作端不得再往外派(`OMNILANE_DEPTH` 守衛,退出碼 86),\n  杜絕 AI 叫 AI 的額度連環燒。\n- **Codex 排隊鎖** — 同一目標目錄的 codex 派工自動序列化(鎖以正規化後的\n  workdir 為鍵);崩潰殘留的鎖以擁有者 PID 偵測後安全接管。\n- **看門狗** — 每個工作端跑在 `timeout`/`gtimeout` 之下,兩者皆無時退到\n  perl-alarm 後備(原生 macOS 就是這情況),卡死的 CLI 不會掛整晚。\n  上限作用於**每次 CLI 呼叫**,優先序由高到低:`--timeout SECONDS` > 單一通道\n  `OMNILANE_TIMEOUT_<LANE>`(通道名大寫、`-` 換成 `_`,如\n  `OMNILANE_TIMEOUT_HARD_JUDGMENT`) > 全域 `OMNILANE_TIMEOUT`(預設 600 秒)。\n  它是單次呼叫的防卡死看門狗,不是整個任務的時間預算:會重試的 vendor(grok)\n  或 vote 面板(評審 × 輪次)會發起多次呼叫,總耗時可能是該值的數倍。\n- **整體任務保險絲** — 選配的 `--job-timeout SECONDS` 用同一個程序群組監工,\n  一次涵蓋等鎖、重試、所有評審與輪次。優先序為旗標 >\n  `OMNILANE_JOB_TIMEOUT_<LANE>` > `OMNILANE_JOB_TIMEOUT` > 關閉；唯一的自動例外\n  是 Codex 在 Git worktree 外執行 `work` 時，若未設定整體上限，就沿用解析後的\n  單次呼叫看門狗作為整體保險絲，上限為監工支援的 999999999 秒。到期會清掉\n  受監工的程序群組並回傳 124。這個自動保險絲需要內附的 Perl 監工；若環境\n  無法使用，派工會警告但仍透過原有單次呼叫看門狗路徑執行非 Git 工作；若連\n  單次看門狗工具都沒有，該路徑會另外警告。\n  像 fubon-autotrade 規模的完整深度審查,建議先從\n  2–4 小時(7200–14400 秒)起跳,單次呼叫看門狗可先設 30 分鐘;這只是建議值,\n  不會寫死成預設。\n- **背景工作生命週期** — `--background` 的工作端跑在自己的 process group,\n  呼叫端退出也不受影響;被殺會落盤退出碼,`jobs.sh status` 會報 `dead`\n  而不是永遠顯示 `running`。\n- **任務酬載上限** — 過大的任務文字自動頭尾截斷,防止撐爆工作端脈絡。\n\n## 📬 即時信箱\n\n即時信箱是常駐背景派工，不是一次性派工。Claude 與 Gemini 保留 `--background` 自動使用即時信箱的既有行為；Codex 與 Grok 預設維持一次性派工，只有明示 `--background --live` 才啟用，Grok 另須指定 `--mode sysops --workdir DIR`。派工者能補傳指示，並負責用 `jobs.sh close ID` 收尾；閒置上限或設定的整體工作逾時（`--job-timeout`）仍會使工作結束。\n\n```bash\nscripts/dispatch.sh --background --vendor claude hard-judgment \"檢查逾時測試失敗的原因\"\n# 將 dispatch 顯示的工作 ID 存成 $ID\nscripts/jobs.sh send \"$ID\" \"再確認重試路徑。\"\nscripts/jobs.sh watch \"$ID\"\nscripts/jobs.sh tail \"$ID\" --lines 20\nscripts/jobs.sh close \"$ID\"\nscripts/jobs.sh retry \"$ID\" --background\n```\n\n`watch` 追隨 `$JOB_DIR/events.jsonl`；`tail` 讀取公開的 `out.txt`。Claude、Gemini、Codex 與 Grok 都支援即時信箱，但 Codex／Grok 自動選擇時仍是一次性派工，必須明示 `--live`。Grok 的 advise／work 即時請求會在啟動前停止，因為 ACP 未強制這些受限模式的邊界；一般 advise 採用一次性原生工具允許／拒絕規則。供應商不支援 `--live` 時立即失敗。`--single-shot` 對所有供應商強制一次性派工。`--idle-timeout SECONDS` 設定閒置上限，預設 900 秒，設為 `0` 則停用。\n\n閒置時不會發出 API 呼叫，也不會增加 API 費用。預設若 900 秒內沒有新信箱訊息或新結果事件，工作程序會自動收尾；整體工作逾時仍是外層上限。處理完成可提早執行 `close`。對已結束或不是即時信箱的工作使用 `jobs.sh send`，會明確報錯並失敗。送出後不需追蹤的工作、沒有即時支援的供應商，或必須從乾淨狀態重跑的情況都不適用；請使用新的派工，或在工作完成後使用 `retry`。\n\n## 🎯 目標編排\n\n`omnilane goal` 是工頭式工作台帳。迴圈由呼叫端負責，也就是開啟目標的代理工作階段或終端機前的人：派出一份工作，從完成信箱或 `omnilane jobs wait` 收回結果，判斷下一份工作，再重複執行。工作數與秒數預算預設都不設上限；只有傳入 `--budget-jobs N` 或 `--budget-seconds S` 時，才會啟用對應的硬上限。omnilane 只負責記帳；每次 goal dispatch 前會檢查呼叫端設定的上限與預設啟用的重複失敗熔斷器，工頭關閉目標時才彙整報告。\n\n```bash\nGOAL_ID=\"$(omnilane goal open \"修好不穩定的結帳整合\" \\\n  --budget-jobs 4 --budget-seconds 900 --workdir /path/to/repo)\"\nJOB_ID=\"$(omnilane goal dispatch \"$GOAL_ID\" --mode work hardest-coding \\\n  \"重現結帳失敗，完成最小修正並驗證\")\"\nomnilane jobs wait \"$JOB_ID\" --timeout 900\nomnilane goal note \"$GOAL_ID\" \"結帳整合測試已通過\"\nomnilane goal close \"$GOAL_ID\" --summary \"結帳整合已穩定\"\n```\n\n目標狀態存放在 `$OMNILANE_HOME/goals/<goal-id>/`。用 `goal status` 可查看預算用量、熔斷次數，以及每份工作陸續寫入的中繼資料與結束狀態。`goal close` 會寫入 `report.md` 並印出路徑。單一而且作法明確的工作直接派工即可；有傳入預算旗標時，該上限是硬限制，不代表保證完成。\n\n## ❓ 常見問題\n\n<details>\n<summary><b>這些訂閱我全都要有嗎?</b></summary>\n\n<br/>\n\n不用。每條通道都是候選鏈,派工時採用本機實際裝了的第一個候選。只有一份訂閱時,\n整張表會收斂到那一家;整條鏈都沒有的通道自動關閉,不會報錯。跑\n`omnilane doctor` 可以看到這台機器現在實際接得到什麼,`routing.local.yaml.example`\n也附了常見情境的起手設定檔(只有 Claude、以 Codex 為主、沒有 Codex)。\n\n</details>\n\n<details>\n<summary><b>omnilane 會不會把我的程式碼送到新的地方?</b></summary>\n\n<br/>\n\n不會多出新的去處。派工是呼叫你早就裝好也登入過的廠商 CLI,所以程式碼只會到達\n你本來就在用的那幾家。執行器在呼叫訂閱制 CLI 前會剝掉 API 金鑰環境變數,避免\n一把殘留的金鑰把你悄悄切到按 token 計費。唯一的例外是 direct-API vendor 家族\n(`openrouter`、`deepseek`、`zai`、`mistral`、`groq`、`cerebras`),它們本來就是\n拿你設定的金鑰直呼該供應商的 API——這幾家只做 advise,不會改檔。\n\n</details>\n\n<details>\n<summary><b>為什麼困難工作現在由 Fable 5.1 與 Astra 領頭？</b></summary>\n\n<br/>\n\n2026-09-05 更新用 AA v4.2 同檔位比較兩者：Fable／Astra 在 max 為\n57／55、xhigh 為 54／54；AA Briefcase 在 max 為 1666／1566、xhigh\n為 1657／1540。原生編碼代理比較中，Fable max 完成 70、每題 $9.18、\n耗時 24 分鐘；Astra max 完成 67、每題 $4.72、耗時 26.8 分鐘。因此\n`hardest-coding` 用 Fable max，`hard-judgment`／`taste-final` 用 Fable\nxhigh，Astra 則是 Codex 家族備援與獨立複核者。\n\n品質優先的提示詞層主控首選是 Fable max；Opus high／xhigh 是均衡型主控與\n獨立複核選項；Astra 則是沿用 Codex 額度的備位與複核者。這些都是角色建議，\n不是新增通道或自動主控選模器。Opus 也保留為 Claude 的 `long-context` 備援。\n\n</details>\n\n<details>\n<summary><b>為什麼最難編碼用 <code>max</code>，其他 Claude 通道用 <code>xhigh</code>？</b></summary>\n\n<br/>\n\n推理檔位依任務選，不預設越高一定越好。目前同條件比較與原生編碼證據支持\n正確性優先的 `hardest-coding` 用 max；`hard-judgment`、`taste-final`\n及具名 Fable 諮詢則以 xhigh 平衡品質與成本。顯式 `--model`／`--effort`\n永遠覆蓋這些通道路由預設。\n\n</details>\n\n<details>\n<summary><b>通道首選的 CLI 沒裝會怎樣?</b></summary>\n\n<br/>\n\n派工會沿著候選鏈往下走,用你手上有的第一家。不花任何額度就能先看決策:\n\n```bash\nscripts/dispatch.sh --explain hardest-coding   # 逐候選解釋\nscripts/dispatch.sh --list                     # 整張生效表\nscripts/dispatch.sh --dry-run hardest-coding \"…\"   # 完整解析後的計畫,不呼叫模型\n```\n\n</details>\n\n<details>\n<summary><b>被派工的模型會不會亂改我的檔案?</b></summary>\n\n<br/>\n\n除非你明講要它改。派工預設是 `advise`，以各廠商的唯讀沙箱或原生工具權限\n維持唯讀，並保留支援的網搜。一般修改使用 `--mode work` 與明確的 `--workdir`，\n關閉代理工具網路，但保留模型連線。`--mode sysops` 是 Codex、Claude、Grok、Agy\n各自獨立的完整權限政策，不是 work 的別名；只有任務明示允許超出 work 邊界的\n操作，例如服務管理，才逐次選用，永遠不是通道預設值。\n工作端也不能再往外派——深度守衛會用退出碼 86 拒絕巢狀派工,一道\n指令不可能失控變成一整串 AI 燒你的額度。\n\n</details>\n\n<details>\n<summary><b>派工被拒了，是哪一種拒絕？</b></summary>\n\n<br/>\n\n三個代碼，三種不同的修法。先跑 `omnilane doctor`——它的 `transport-overlay`\n檢查會直接告訴你問題出在本機設定還是你的請求。\n\n`missing-caller-context`——沒有身分送到閘門。真人加上\n`OMNILANE_AA_OPERATOR_ASSERTED_HUMAN=1` 或 `--operator-asserted-human`。\n模型通常什麼都不用做：dispatch 會從啟動它的 CLI 讀取身分。讀不到時跑\n`omnilane whoami`，它會印出可以帶的 `--caller-context FILE`，或說明讀不到的確切原因\n（缺 `--effort`、模型別名、查無評分列）。模型不得替自己主張真人豁免。\n\n`runtime-mapping-unverified`——你的身分沒問題，但**目標**沒有已驗證的本機請求\n選擇器。可能從未探測過，也可能探測失敗；`omnilane doctor` 會回報這類設定的數量，\noverlay 的 `unproven[]` 記錄每一條失敗的原因。因供應商額度上限造成的拒絕，\n在額度恢復前不會自行解除。\n\n`invalid-policy-input` 搭配 \"transport contract evidence changed\"——以上皆非。\n是 overlay 本身載不起來，因此**所有廠商**都會被拒。常見成因是廠商 CLI 升級：\noverlay 釘住每家的執行檔與 runner 腳本雜湊，而 Codex 與 Claude 的證據路徑內嵌\n版本目錄，升級後是檔案消失而非雜湊改變。帶標籤的證據只降級自己那一家；\n未標籤的證據（例如探測清單）仍會關閉整個閘門。doctor 會指名檔案與廠商，\n重簽流程寫在派工技能裡。\n\n</details>\n\n<details>\n<summary><b>映射上的證據等級是什麼意思？</b></summary>\n\n<br/>\n\n它說明這次探測把「誰回答的」釘到多緊。它**不影響**你能不能派工。\n\n`billed-model`——供應商自己說出它計費的模型。claude 放在 `modelUsage`；\ngrok 在 `--output-format json` 下也一樣。這是供應商開的收據。\n\n`client-echo`——CLI 記下自己送出的模型，而且那筆紀錄與你的請求相符。\ncodex 記在 session rollout，agy 寫進 `cli.log`。這是 CLI 自己抄的訂單，\n不是收據：它證明請求照原樣送出去了，不能證明是誰接的。\n\n`selector-only`——CLI 收下選擇器，其餘不表態。v0.42.6 之前探測的每一條映射\n都是這一級。它照樣能派工，只是三級裡最弱的一級；`omnilane doctor` 會點名\n哪幾家值得重探。\n\n三者都不能證明上游供應商身分，也都不會讓任何車道被拒。等級是從探測產出的\n東西推導出來的，不是按廠商指定，所以哪支 CLI 開始回報計費模型，下一次重探\n就會自動升級，omnilane 不用改。\n\n</details>\n\n## 📊 預設值與資料來源\n\n預設通道配置依據 Artificial Analysis 2026-07 快照(已對 AA 站上原始紀錄與\n各廠官方定價頁交叉核對)加上公開對比評測;這些是意見不是定律——\n設定選單和 `routing.local.yaml` 就是讓你不同意用的。完整工作筆記(含各評測的\n但書)見 [`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md)。\n\n## ⚠️ 已知限制\n\n- **Antigravity 的 print 模式工具呼叫在現行 CLI 版本不穩定**(可能被拒或\n  回無效引數)。long-context 通道的設計本來就是「把內容貼進任務」的長文\n  整合,不受影響;要*讀取 repo* 的諮詢請用 claude/codex 候選。\n- **Grok 沒有推理檔位開關**;effort 欄位僅為介面一致而保留,實際忽略。\n- **非 Git 的 Codex work 仍受支援。** 部分 Codex CLI 版本可能在 Git worktree\n  外卡住，因此上面的自動保險絲會限制這個情境並清掉受監工的程序群組。Omnilane\n  不會自動執行 `git init`，也不要求使用者建立 repo。\n\n## 📜 版本歷程\n\n## v0.45.0 新功能\n\n- **升級後請跑一次 `omnilane resign`。** 分數政策檔換了新快照，而傳輸覆蓋檔綁的是快照；覆蓋檔重建之前，模型身分的派工在每條車道都會被拒，訊息是 `transport overlay snapshot mismatch`。\n- **分數改採 Artificial Analysis Intelligence Index v4.3.2。** v4.2 與 v4.3.2 是不同的量尺，各家落差也不一樣（Fable 5.1 max 57 → 53、Grok 4.6 high 51 → 44、Sol high 48 → 42），所以是整份重新計分，不是只加一列。上限跟著變：Fable 5.1 max、Fable 5.1 xhigh、Astra max 現在同為 53 分；以前在 `hard-judgment` 什麼都派不到的中階主控，現在派得到了。`scripts/aa_rebaseline.py` 會從存下來的 AA 抽取檔重建政策檔，下次指數改版重跑即可。\n- **車道表是重寫，不是修補。** 每條車道先講明「這類工作該看哪些量測」，候選再依那些量測由強到弱排：`hardest-coding` 看高難度終端編碼（Terminal-Bench 4.0，頂尖模型還沒把它做滿的那個編碼評測），`hard-judgment` 看專家級推理與文件的分析品質評分，`taste-final` 看文件呈現品質評分，`fast-agentic` 看自動化正確率與每步耗時，`long-context` 看較難的那個長上下文評測，`ui-draft` 看圖像理解。有八條車道換了首選：`hardest-coding` 由 Astra（xhigh）領先，`bulk-mechanical` 與 `fast-agentic` 由 Astra（low）領先，`ui-draft` 由 Astra（high）領先，`taste-final` 由 Opus 5（max）領先，`long-context` 由 Opus 5（high）領先，`coding-overflow` 和 `live-search` 一樣由 Grok 4.7 領先。每條車道鏈同時沿著分數往下排，所以不論主控的上限在哪，它第一個派得到的就是它派得到的最好的。Fable max 與 Astra max 不在任何車道鏈裡：xhigh 與它們持平或更好，花費少得多。數字都在 `docs/model-capabilities-2026-09.md`。\n- **Grok 服務的每條車道都加入 Grok 4.7**，排在 Grok 4.6 前面，4.6 留在後面：車道會跳過本機尚未驗證的候選，所以在 `resign` 探測過 4.7 之前仍由 4.6 服務。帶 `--vendor grok` 時不會往下找；在那之前請指定 `--model grok-4.6`。\n- **修掉一個失效的備援。** `claude claude-sonnet-5 high` 在舊政策檔下永遠派不出去；現在探測通過後就能解析。\n- 升級：`npm i -g omnilane@0.45.0`，接著 `omnilane resign`。要用 Grok 4.7，重簽時 `grok` CLI 必須是登入狀態。\n\n## v0.44.0 新功能\n\n- **你自己修補過的 CLI 也能無人值守重簽。** 如果本機有個步驟會在每次更新後修補某家 CLI、再用 adhoc 重新簽署，以前簽署者檢查會把每一次這種更新都擋下來等 `--approve`。現在對該家跑一次 `omnilane resign --trust-adhoc VENDOR`，同一個安裝目錄裡的 adhoc 新版就會跟同簽署者的更新一樣，走每日 `omnilane resign` 自動重簽。未簽章的執行檔、換了目錄的 adhoc、其他廠商，仍然會停下來等你。信任記在覆蓋檔上，之後任何一家重簽都會保留，而且是操作者動作，模型不會執行。四家都適用。\n- **登入過期會叫你「先登入」，不再說「稍後重試」。** `Failed to authenticate`、`OAuth session expired`、`Invalid API key`、`Unauthorized`、`401` 現在都會把該家標成無法探測，被擋下來的訊息會叫你先登入。\n- 升級：`npm i -g omnilane@0.44.0`。若是從 0.42.x 升上來，另外跑一次 `omnilane resign --record-signers`（見 0.43.0 說明）。\n\n## v0.43.1 新功能\n\n請裝這一版，不要裝 0.43.0。0.43.0 的 `build_overlay.py` 與 `probe.py` 在 Python 3.9 上一匯入就會出錯，導致該版本上首次安裝的覆蓋檔建立步驟與 `omnilane resign` 無法執行。其餘沒有變動，下面 0.43.0 的說明全部適用。升級：`npm i -g omnilane@0.43.1`，然後執行一次 `omnilane resign --record-signers`。\n\n## v0.43.0 新功能\n\n十天之內，0.42.x 有四次把所有模型呼叫者全部拒絕，每一次都是因為 omnilane 管不到的事實：啟動器改了名、runner 腳本改了卻沒重簽、四家廠商 CLI 在同一週各自更新、Codex 排程不記錄強度。每一件都變成「什麼都派不出去」。這一版把它們各自縮小成講得清楚的結果，最常見的那一種還會自己修好。\n\n- **廠商 CLI 更新了？`omnilane resign`。** 它會找出哪裡變了、只重探那一家、檢查結果、換上去、用一筆真實派工確認，失敗就還原舊的覆蓋檔。只有新執行檔的簽署者相同、位置也相同時，才會**無人值守**地重簽；其他情況會停下來，印出你該執行的那一行 `--approve` 指令。先跑一次 `omnilane resign --record-signers`，再把 `omnilane resign` 排成每天執行，之後 CLI 更新就不再是你的事。已用一次真實的 Codex 自動升級（0.155.0 → 0.155.1）驗證：不需核准、映射全數保留、結束碼 0。\n- **拒絕訊息會告訴模型該怎麼辦。** 每一筆被拒的派工都帶著 `failed_gate`、`reason`、`next_command`、`required_caller_effort`，以及 `eligible_lanes`（這個呼叫者現在*派得動*的通道）。\n- **沒記錄強度改成縮小範圍，不再全拒。** Codex 心跳排程會被限制在它那個模型的最低分，而不是每條通道都拒。便宜的通道照常可用，貴的會說需要哪個強度。\n- **助理自己的子代理。** `omnilane native-context` 會寫出以前得手寫的能力聲明檔；`omnilane route --inherit` 規劃一個「呼叫者分身」工人：不經外部 CLI、不看覆蓋檔、連呼叫者身分讀不到時也能用，而且老實標明*不是*該通道的目標模型。已在 Claude Code 與 Codex 桌面版完整跑通。\n- **Codex：每次工具呼叫只下一條 omnilane 指令。** `omnilane whoami; echo $?` 讀不到身分，單獨的 `omnilane whoami` 讀得到。拒絕訊息現在會直接這樣提示。\n- **doctor 看得到搬了家的 CLI**（新版裝在舊檔旁邊），完全沒有覆蓋檔時會警告並附上步驟。\n- **技能檔與教學重寫。** 技能檔現在是模型照著走的五個步驟；這份 README 一步步帶你讓助理來開 omnilane。\n- **限制。** 無人值守重簽靠的是 macOS 程式碼簽章；在 Linux 上，以及任何沒簽章或在本機改過的 CLI，每次更新都會要你 `--approve`。`--inherit` 還沒在 Grok Build 裡跑過，Antigravity 沒有提供子代理工具。完整細節見 [CHANGELOG](CHANGELOG.md)。\n- **升級。** `npm i -g omnilane@0.43.0`，然後執行一次：`omnilane resign --record-signers`。\n\n## v0.42.9 新功能\n\n- **經啟動器帶起的 Codex 桌面版。** ChatGPT.app 若透過 codex-profile-switch 啟動 app-server，\n  程序名稱是 `codex-modified`；0.42.8 只找名為 `codex` 的程序，會直接跳過它，該對話串的每一次派工\n  都被拒為 `missing-caller-context`。現在認得這個名稱；同目錄的 `codex-code-mode-host` 仍不視為 CLI。\n- **實機驗收。** 2026-09-13 在經啟動器帶起的 Codex 桌面版對話串執行 `whoami`，退出 0，\n  讀出 `codex/gpt-5-6-sol-medium (score 46)`，來源是 `codex-modified` 程序。\n  升級：`npm i -g omnilane@0.42.9`。\n\n## v0.42.8 新功能\n\n- **Codex 本輪身分。** `app-server` 一律忽略啟動參數的模型與強度預設值。\n  其他 Codex 啟動保留明確的 `-m` / `--model` / `-c model=...` / `--config`；\n  沒有指定模型（包括只指定 profile）時，改讀本輪記錄。TOML 模型覆寫需要 Python 3.11+。\n- **證據不明就拒絕。** 本程序的現行環境與 Codex 直屬子程序的初始環境，必須有相同且符合 UUID 形狀的\n  `CODEX_THREAD_ID`。記錄檔在 `$CODEX_HOME/sessions`（預設 `~/.codex`）底下找\n  `rollout-*-<對話串>.jsonl`，對話串續用之後還會有 `rollout-*-<對話串>_<工作階段>.jsonl`；\n  取最後寫入的那一份，`session_meta.id` 必須一致。最後一筆 `turn_context` 必須有模型、強度與回合 ID；\n  後面若出現**同一個回合 ID** 的 `task_complete` / `turn_complete`（讀取別名）/ `turn_aborted`，\n  就拒絕沿用過期身分，並在訊息裡寫出兩個回合 ID，以及那份記錄多久沒有被寫入。\n- **Codex 沙箱拒絕。** 仍會先查詢祖先程序；若在 `CODEX_SANDBOX=seatbelt` 下查詢失敗，\n  `whoami` 會說明程序查詢、寫入 `~/.omnilane` 與連網都必須把指令移到沙箱外重新執行。\n- **隱私與相容。** 逐行讀取 JSONL，不把訊息內容放進診斷；`whoami` 會回報對話串與回合 ID。\n  不從設定預設值、模型清單、封存或其他對話推斷。其他廠商、明確或繼承的身分、真人聲明\n  的優先順序不變；`OMNILANE_AA_CALLER_FROM_PROCESS=0` 同時關閉兩條讀取路徑。\n- **測試自己清環境。** 測試不再沿用派工工人帶進來的 `OMNILANE_AA_*`；在工人裡跑時，\n  授權者身分與傳輸對照表的雜湊釘選會蓋掉各夾具自己的真人豁免，害 6 個測試失敗。\n- **實機驗收。** 2026-09-12 在 Codex 桌面版實測：新開的對話串與續用的對話串（原始記錄檔\n  前一天就停筆）各跑一次，`whoami` 與 `dispatch.sh --dry-run` 都退出 0，讀出\n  `codex/gpt-6-astra-xhigh (score 54)`、`\"allowed\":true`，而且沒有建立任何工作。\n  升級：`npm i -g omnilane@0.42.8`。\n\n## v0.42.7 新功能\n\n- **模型 session 派工不再需要身分檔。** 沒給 `--caller-context` 時，dispatch 會沿行程樹往上找到最近的廠商 CLI，讀它啟動時帶的模型與強度。以前不在 omnilane 目錄下的 session 會卡在 `missing-caller-context`，把問題丟回給操作者——2026-09-08 與 2026-09-10 就有三個 session 這樣停下來。\n- **`omnilane whoami`** 會把這個身分印成 caller-context 檔，讀不到時說明確切原因（缺 `--effort`、模型別名、claude 那個強度只剩 non-reasoning 列），絕不猜。\n- **比手寫的檔案更難作假。** 閘門只檢查身分檔的格式，不核對它和實際在跑的模型是否一致。啟動旗標是 harness 設的，模型改不了，而且每個 session 各算各的：同一個模型分別開 `high` 和 `max`，上限就是 52 和 54。\n- **明確指定仍然優先。** `--caller-context` 檔、worker 繼承的環境、`--operator-asserted-human` 都優先於自動讀取。`OMNILANE_AA_CALLER_FROM_PROCESS=0` 可以恢復「只認檔案」的規則。\n- **被拒時會告訴你出路。** `missing-caller-context` 和重試被拒的訊息都改成指向 `omnilane whoami`，不再只給模型兩條走不通的路。\n- **`omnilane --version` 恢復正確。** 0.42.6 發版時漏改了 `VERSION`，會回報 0.42.5。\n- **升級。** npm 發布後執行 `npm i -g omnilane@0.42.7`。既有的 repo symlink 安裝更新檢出後確認 `omnilane --version` 即可，不需重跑安裝。\n\n## v0.42.6 新功能\n\n- **「已驗證」現在會說明是怎麼驗的。** 每條 overlay 映射帶一個 `evidence_tier`：`billed-model` 是供應商自己說出計費的模型（claude、grok），`client-echo` 是 CLI 記下自己送出的模型（codex、agy），`selector-only` 是 CLI 收下選擇器、其餘不表態。白話說：`client-echo` 是 CLI 自己抄的訂單，`billed-model` 是供應商開的收據。\n- **只回報，不擋人。** 派工照舊只看 `runtime_verified`，等級低不會讓原本跑得動的車道被拒。已有測試確認三種等級下每個判定都不變。\n- **等級跟著證據走，不跟著廠商走。** 本次發布之前的探測會重判為 `selector-only`；哪天某支 CLI 開始回報計費模型，不改程式就自動升級。\n- **`omnilane doctor` 顯示分佈**，並點名哪幾家值得重探。\n- **overlay 錨定的是真正在跑的執行檔。** 過去路徑寫死在 `build_overlay.py` 裡，會無聲地錨到沒在用的版本——線上 overlay 雜湊的是 claude `2.1.263`，但每次派工跑的都是 `2.1.266`。現在改用 runner 實際解析到的執行檔。\n- **抓到三條已死的車道。** `gpt-5.4-mini` 在 2026-09-07 探測還會過，現在回 HTTP 400——「ChatGPT 帳號使用 Codex 時不支援此模型」。簽好的 overlay 永遠不會發現某條車道在上游死掉，重探才會。那三條移進 `unproven[]` 並附上原因，映射剩 46 條。\n- **升級。** npm 發布後執行 `npm i -g omnilane@0.42.6`。既有的 repo symlink 安裝更新檢出後確認 `omnilane --version` 即可，不需重跑安裝。\n\n## v0.42.5 新功能\n\n- **升級一支 CLI 不再擋掉所有廠商。** overlay 的證據項目可帶 `vendor` 標籤；帶標籤的項目雜湊漂移或檔案消失時，只讓該廠商降級為 `unknown-target-runtime`。未標籤的證據維持全域 fail-closed。\n- **`omnilane doctor` 會載入 overlay。** 新增 `transport-overlay` 檢查，失敗時指名是哪個檔案、哪一家廠商，成功時回報各廠商的已驗證映射數——先前 doctor 全綠可以和「閘門拒絕所有派工」同時成立。\n- **探測會記錄判定。** `probe.py` 以計費的 `modelUsage` 判斷 Claude 回應，並在 CLI 靜默改用預設強度時判為失敗。`build_overlay.py` 拒簽未通過的探測，改記進 overlay 的 `unproven[]`，不再無聲丟棄。\n- **重建工具納入版控。** `build_overlay.py` 與 `probe.py` 移入 `scripts/lib/`，並接受 `--root`。\n- **升級。** npm 發布後執行 `npm i -g omnilane@0.42.5`。既有的 repo symlink 安裝更新檢出後確認 `omnilane --version` 即可，不需重跑安裝。\n\n## v0.42.4 新功能\n\n- **快速上手現在真的跑得起來。** `omnilane route` 必須知道「是誰在問」,但 60 秒上手漏了這件事,新安裝照抄會直接吃到 `missing-caller-context` 且沒有任何指引。現在會先用 `OMNILANE_AA_OPERATOR_ASSERTED_HUMAN=1` 表明操作者身分,並說明模型主控該改用什麼。\n- **指令參考。** `dispatch.sh` 的用法摘要補上 `[--caller-context FILE | --operator-asserted-human]`。\n\n## v0.42.3 新功能\n\n- **純文件更新。** 路由、評分、閘門與執行器行為皆未變更。\n- **`--caller-context` 進入快速參考。** 派工指令簽名現在明列這個參數，並說明模型主控未帶時會在建立工作前被 `missing-caller-context` 拒絕。\n- **完整的 caller-context 範例。** 凍結 exact-AA 下行閘章節補上可直接複製的 JSON 範例，並要求在第一次派工前就建好，而非被拒絕後才補。\n- **自己查強度，不要猜。** 當執行環境只給模型名稱而沒有強度時，走自己的祖先行程鏈讀出確切旗標；要比對整條鏈，不要抓主機上第一個同名行程。宣告最低分設定是查不到時的退路，不是第一步，因為過低的上限會靜默關掉車道。\n- **兩個拒絕碼，兩種修法。** `missing-caller-context` 是沒有提供檔案；`runtime-mapping-unverified` 是目標缺少已驗證的本機選擇器，須以有真實證據支撐的 `--transport-overlay` 條目修正，絕不可透過修改凍結登錄檔解決。\n- **升級。** npm 發布後執行 `npm i -g omnilane@0.42.3`。既有的 repo 符號連結安裝可更新檢出並確認 `omnilane --version`，不需重跑安裝。\n\n## v0.42.2 新功能\n\n- **Grok 強度確實傳入 CLI。** 明示的 `low`、`medium`、`high`、`xhigh` 透過 `--reasoning-effort` 傳遞；Grok 4.6 預設路由指定 `high`。\n- **本機映射以證據驗證。** 主機本機覆寫檔證明精確 CLI 選擇器契約，不調整固定 AA 分數或核准的登錄表 SHA。缺少或錯誤映射仍拒絕派工；即時 ACP 的明示強度在驗證完成前仍封鎖。\n- **升級。** npm 發布後執行 `npm i -g omnilane@0.42.2`。既有 repo-symlink 安裝更新 checkout 並確認 `omnilane --version`，不需重跑安裝。\n\n## v0.42.1 新功能\n\n- **修復 CI 測試資料。** 完整 Python discovery 現在會讓舊 routing 與 Grok readiness 測試明示 synthetic-human caller；production 的缺少身分拒絕、核准 registry SHA、向下分數閘、重試 lineage 與 skip 斷言都維持不變。\n- **可攜式 lineage 證據。** encoded-effort Gemini spy 改用可攜式 Python 解譯器選擇，並驗證精確的 `--model gemini-3.8-flash-high` 參數組。AA 涵蓋仍是 78 個 scored target、1 個 scored reference-only 項目與 10 個 unknown configuration。\n- **修補版升級。** npm 上架後可執行 `npm i -g omnilane@0.42.1`。既有 repo-symlink 安裝只要更新 checkout 並執行 `omnilane --version`；除非刻意重新接線，否則不要重跑 `./install.sh`。GitHub release 與 npm 上架仍是兩件事。\n\n## v0.42.0 新功能\n\n- **原生優先執行。** 路由與執行已拆開：`--executor auto` 只在主機提供精確且相容的能力內容時使用呼叫端擁有的原生代理，否則維持同一組供應商／模型／努力程度走 CLI。原生 handoff 只是待辦工作，不代表任務完成；呼叫端仍須實際執行並另行寫入已驗證結果。\n- **凍結的 exact-AA 向下派工。** 內附的 AA v4.2 政策會在每次供應商嘗試前，以目前 caller 與繼承上限進行閘控，產生精確子 caller 內容，並在重試時重新驗證，不繼承模型先前取得的人類豁免。78 個評分配置是政策輸入，不代表 78 個配置都能實際執行。\n- **明示原生重用。** 重用既有 Codex 代理需要呼叫端已觀察到閒置、同意保留內容，且 runtime 身分完全相符；新代理容量耗盡時不會偷偷改成重用。完成紀錄是 caller attestation，不是上游模型身分認證，也不保證 cold start 一定有容量。\n- **Codex 完成續驗。** `scripts/completion-wakeup.py` 將 run 綁定主控 thread 與 job 白名單，記錄排程器登錄、輪詢終態事件，並把送達與驗收分開後再關閉。這是定期 heartbeat 輪詢，不是即時 push；沒有支援的 callback 時，主控會直接持續等待。\n- **封裝與升級。** npm 套件現在包含 AA 政策、原生／AA／喚醒輔助程式及兩份公開協定文件。npm 發布後可執行 `npm i -g omnilane@0.42.0`；既有程式庫連結式安裝只需更新至已發布版本並核對 `omnilane --version`，首次安裝或需要重新接線時才審核及執行 `./install.sh`。只有 GitHub 發布不代表 npm 已可下載。\n\n## v0.41.1 新功能\n\n- **Astra 預設 xhigh。** `hardest-coding` 與 `hard-judgment` 的 Astra 預設改用 `xhigh`；需要時可明確指定 `--vendor codex --effort max`。供應商順序與其他模型的努力程度維持原樣；這不代表已實測節省 CLI 訂閱額度。\n\n- **Python 3.9 相容性。** Agy 工作目錄政策的建立與清理改用 `Path.lstat()`，保留符號連結、inode 與並行替換保護。\n- **隔離 CI 測試資料。** 嚴格 doctor 驗收補齊明示啟用外掛與目錄來源設定；設定缺少、停用或路徑不符仍會失敗。\n- **可攜式離線 CI 測試資料。** 測試移除對操作者 HOME 的依賴，採用跨平台權限模式檢查，並依實際平台驗證 Linux／macOS 的即時工作限制。\n- **Bash 3.2 的 Gemini 任務。** 保護空任務參數展開，同時保留 `set -u`、有值時的續接參數，以及既有模式與權限政策。\n- **有時間上限的 Codex 即時關閉。** FIFO 背壓與部分寫入會保留位元組順序及未送出尾段，供限時關閉排空處理；若執行器提前退出，已接受但尚未轉送的排隊輸入仍會保留並回報失敗，不會靜默丟棄。其他供應商沿用原有轉送路徑。\n- **npm 上架後升級。** 執行 `npm i -g omnilane@0.41.1`，或更新 checkout 後再跑 `./install.sh`。npm 另行發布，GitHub 發布不代表 npm 已上架。\n\n## v0.40.0 新功能\n\n- **明確區分模式並修復 Grok 網頁工具。** advise 唯讀且保留支援的原生搜尋；work 限定明示 `--workdir` 並關閉代理工具網路；sysops 每次明示完整權限。Grok 完整一次性 `plain` advise 已取得真實搜尋、抓頁及寫入拒絕證據；macOS work 與受限即時模式仍保留閘門。\n- **Codex 與 Grok 明示即時工作階段。** Codex work 與 Grok sysops 工作可用 `--background --live` 接續補傳與明確關閉；Codex／Grok 自動派工仍維持一次性，Claude／Gemini 則保留既有自動即時行為。Grok advise 因 ACP 沒有強制唯讀邊界，所以拒絕 `--live`。\n- **有界且可觀察的關閉流程。** 能辨識 EOF 的能力探測、每筆工作的不可變 worker 快照、直譯器／SHA 來源、關閉期限與程序群組清理，能約束卡住或被終止的即時工作，但不宣稱是作業系統沙箱隔離。\n- **完成通知與閒置判定修正。** 完成通知可處理截斷的 UTF-8 尾端；終態以持久 exit 紀錄為準；閒置時間只在完整結果事件後推進，不受任意串流流量干擾。\n- **AA 驅動的模型覆蓋。** 12 條通道預設已納入 Fable 5.1、GPT-6 Astra 與 Gemini 3.8 Flash，同時保留既有供應商與明示模型覆寫。日期化 AA v4.2 覆蓋快照記錄 643 個榜單設定；模型出現在目錄不等於執行環境已驗證支援。\n- **升級。** 執行 `npm i -g omnilane@0.40.0`，或更新 checkout 後再跑 `./install.sh`。\n\n## v0.33.0\n\n- **四供應商續談派工。** `--thread NAME` 可讓固定供應商、模型、effort 與\n  工作目錄的 Claude、Codex、Grok 或 Gemini 對話跨前景或背景單次工作延續；\n  direct-API 供應商、`exec`、即時模式與釘選衝突都會以清楚的退出碼 2 提示停止。\n- **續談狀態管理。** `jobs.sh threads`、`threads show NAME`、`threads rm NAME`\n  可列出、查看或移除本機續談狀態。\n\n## v0.32.0\n\n- **依 AA 2026-09 快照全面重評路由。** Fable 5.1 與 Gemini 3.7 Flash 進入預設，數據集中在新的日期化文件。\n- **模型目錄同步實際 CLI 軟體介面。** 加入 Fable 5.1，移除 agy 已下架的 Gemini 3.5 Flash 項目，並同步投票程式。\n- **Opus 5 仍可使用。** 它留在 `long-context`，也能透過 `routing.local.yaml` 覆寫任何通道。\n\n## v0.31.0 新功能\n\n- **目標預算預設無上限。** `budget_jobs` 與 `budget_seconds` 現在會以 JSON `null` 儲存並顯示為 `unlimited`；原先隱含的 8 個工作與 900 秒上限已移除。使用 `--budget-jobs N` 或 `--budget-seconds S` 才會啟用硬性上限；重複失敗保險絲不是預算，預設仍會啟用。\n- **管線中的目標狀態不再誤判失敗。** `omnilane goal status` 的消費端提早關閉管線時，現在會以狀態碼 0 結束，不再引發 `BrokenPipeError`，因此 `| head` 與 `| grep -q` 可在 `pipefail` 下正常運作。\n\n## v0.30.0 新功能\n\n- **目標台帳。** `omnilane goal open` 建立預設不限制工作數與秒數的目標台帳；`goal dispatch` 會在每份工作執行前檢查呼叫端設定的工作數或總經過時間上限，以及預設啟用的重複失敗熔斷器。`goal note` 保留呼叫端敘事，`goal status` 顯示預算與各工作紀錄，`goal close` 會寫入 `goals/<id>/report.md`。\n- **迴圈由呼叫端掌握。** 開啟目標的工作階段或使用者負責選擇、派工、檢視與收尾；omnilane 不會執行內建的規劃模型。\n- **doctor 檢查。** `omnilane doctor` 現在會檢查目標編排功能。\n\n## v0.21.0 新功能\n\n- **明確選擇工作階段模式。** 可用 `dispatch --live` 要求常駐工作階段，或以 `--single-shot` 強制單次派工；對不支援即時工作階段的供應商，`--live` 會立即失敗並列出可用供應商。\n- **Gemini 加入即時信箱。** Gemini 透過 `agy` 串流協定加入常駐即時工作，與 Claude 並列支援。\n- **即時工作的閒置上限。** `--idle-timeout N` 會自動關閉無人處理的即時工作階段，並在關閉原因與 `meta.json` 留下逾時資訊。\n\n## v0.20.0 新功能\n\n- **Foreman 完成收件匣。** 背景派工完成後會寫入私有完成紀錄，內建的 Claude\n  Code 外掛會在 Foreman 的下一個提示中遞交相符紀錄。輸出尾段已做提示注入防護：\n  移除控制字元與 `U+2028`／`U+2029`，並把工作者輸出框成縮排資料。\n- **可安裝的 Claude Code 外掛。** `.claude-plugin/marketplace.json` 使用自指\n  來源，已發布的 npm tarball 也會包含 `hooks/`、`skills/` 和\n  `.claude-plugin/`。\n- **Claude 即時信箱。** 常駐背景 Claude 工作可在執行時接收訊息，並寫入\n  `events.jsonl`。操作方式請見 [📬 即時信箱](#-即時信箱)；其他供應商會明確\n  退化成單次模式，留下 `stderr` 與 `mode-notice.txt` 通知；`jobs.sh wait`\n  最後會印出 `done exit=N`。\n- **Foreman 工作階段身分。** `SessionStart` hook 會把 Claude `session_id` 綁定\n  至 PID 與開始時間，避免 PID 重用誤判。派工會往上走訪父程序，將\n  `foreman_session` 寫入 `meta.json` 與完成紀錄；收件匣先比對工作階段，舊紀錄\n  才回退到 `workdir`，避免同一 repository 的兩個 Foreman 互拿通知。\n\n## v0.15.0 新功能\n\n- **串流保留 Codex 進度證據**：`codex exec --json` 會把 JSONL 事件逐筆寫入\n  `out.txt.progress.log`，即使逾時也能留下最後做到哪一步。`out.txt` 與工作清單顯示維持不變。\n- **逾時診斷回到證據**：逾時訊息明示它本身不足以判定原因，提供三步檢查清單，並說明空的\n  進度日誌不是 Codex 未曾前進的證據。\n- **直接指出 rollout 記錄位置**：逾時輸出會依第一筆進度事件的 `thread_id`，印出\n  ${CODEX_HOME:-$HOME/.codex}/sessions 下對應 `rollout-*.jsonl` 的絕對路徑，方便查看\n  被中斷而未回報的完整對話歷程。\n\n## v0.14.0 新功能\n\n- **依證據產生路由建議**：`jobs recommend` 與 MCP `jobs_recommend` 只用已完成工作的\n  公開中繼資料排序供應商，設有最低樣本門檻，也不會自動修改路由。\n- **選配實際能力探測**：`doctor --probe V` 與 MCP `provider_probe` 可分辨「CLI 已安裝」\n  和「供應商呼叫真的可用」。doctor 預設仍離線，探測報告不含回答本文。\n- **Live Board 歷史搜尋、篩選與匯出**：搜尋與狀態篩選涵蓋最近 50 筆工作；\n  「匯出目前結果」只下載篩選後的公開中繼資料。\n- **可重現的品質／成本基準**：`omnilane benchmark` 內建固定題組，預設不呼叫供應商；\n  `--run` 才會實際執行，成本也只依明確提供的 `--cost-per-call` 估值計算。\n- **嚴格安裝驗收**：CI 以隔離環境執行 `omnilane doctor --strict --json`，\n  不接觸供應商也能抓出 runtime 接線不完整。\n\n## v0.13.0 新功能\n\n- **`long-context` 改用 AA-LCR 排序**——那是 Artificial Analysis 的長脈絡推理基準,\n  量的正是這條通道的工作。Gemini 3.1 Pro 在該榜領先兩個備援,因此它的第一順位\n  從「未複審」升格為「有據」。\n- **這條通道原本的建議是反的,已移除。** 它原先要人把多跳整合改派給 Claude 候選,\n  依據是上一代模型的二手數字;以第一手當代數據看,Claude 反而是三個候選裡最弱的。\n  備援因此換位,GPT-5.6 Sol (high) 排在 Claude Opus 5 (high) 前面。\n- **`release-audit --require-tag` 會標出沒有 GitHub release 的 tag。** 只警告不中斷,\n  `gh` 缺席或離線時自動跳過(CI 仍可跑),且只看最近幾個 tag。\n- **範圍註記:** AA-LCR 測的是 10k–100k token 的文件,所以它能定「長文整合誰強」,\n  定不了 1M 的行為。GPT-5.6 Luna 在該榜居首且便宜得多,**刻意不升**——這條通道的\n  招牌工作是 1M 掃讀,而該基準涵蓋不到。\n\n## v0.12.0 新功能\n\n以下保留當時版本的歷史說明。目前三種模式的契約以[模式](#-模式)為準，包含 0.40.0 獨立的完整權限 sysops 政策。\n\n- **`hardest-coding` 的 Sol 從 `max` 降到 `xhigh`**——在 AA 分檔位的 Coding Index\n  上,Sol 的 xhigh 不但勝過自己的 max,也勝過所有 Claude 檔位,成本還少約三分之一。\n  這種工作超過 xhigh 之後,多加的 effort 買到的是過度思考,不是正確率。\n- **`fast-agentic` 改由 GPT-5.6 Luna 領頭**,Gemini 3.6 Flash 退居第二。Luna 在 AA\n  的 Agentic Index 上大幅領先 Flash,而且 2026-07-30 砍價後每任務成本只剩零頭。\n  Flash 只剩吞吐量優勢——若你的迴圈受延遲限制,可在本機覆寫把它調回第一。\n- **lane 註解不再放數字。**`routing.yaml` 只說明每條排序「為什麼」成立;所有分數、\n  價格與吞吐量連同取數日期,一律住在 `docs/model-capabilities-2026-09.md`。數字過期\n  不再需要動路由表。\n- **新增 value profile**(在 `routing.local.yaml.example`):用約一個 Intelligence\n  Index 分數,換每任務成本降三到四成。\n- **新增 `--mode sysops`**——等於 `work` 拿掉 vendor 沙箱,用於沙箱會擋掉的服務操作。\n  它會把整台機器的存取權交給工作端,因此只能逐次指定,永遠不能設成 lane 預設。\n- **價格與基準數據刷新**至 2026-07-30 OpenAI 砍價後的版本,並記錄 AA 的 Coding Index\n  **不是** Coding Agent Index——兩者成分完全不同,數值卻會撞在一起。\n\n## v0.11.0 新功能\n\n- **Live Board 提供五種語言** —— 英文、日文、韓文、繁體中文與簡體中文。首次載入依\n  瀏覽器語言決定,可用標題列的切換器覆寫,選擇會記在本機。標題、搜尋提示文字、\n  篩選按鈕、空狀態與錯誤狀態、內容標記,以及螢幕閱讀器會朗讀的 `aria-label` 全部\n  涵蓋,`<html lang>` 也跟著切換。\n- **工作狀態有翻譯,但讀取狀態的地方不受影響** —— `state-` 的 CSS class 仍是原始值,\n  狀態配色不變;搜尋索引同時收錄兩種寫法,打 `running` 或譯文都找得到同一筆工作。\n- **路由沒有任何變更。** 派工行為與 v0.10.4 相同。\n\n## v0.10.4 新功能\n\n- **`long-context` 不再把多跳任務指向錯的模型**——這條通道原本自稱長文*整合*,\n  首選卻是 Gemini;但公開的百萬 token 多針分數顯示 Claude 領先約三倍,Gemini\n  強的是單針檢索。通道說明已改為掃讀與檢索,跨來源整合請改用 Claude 候選。\n  排序刻意不動:那批證據是二手且測的是上一代模型,不足以移動已出貨的預設。\n- **Coding Agent Index 不再被當數字引用**——同一個模型在不同版本與 harness 下\n  讀出 80、78、67 三種值。現在只用來看排序,並記錄每個觀測值的出處。\n- **`taste-final` 補上寫作專項證據**——先前完全靠不測文筆的通用與 agentic 指標\n  排序。已加入 EQ-Bench Creative Writing v3、EQ-Bench Longform 與 Lech Mazur\n  三個榜,全部取自發布者第一手。\n- **補上逐檔位成本與吞吐**,說明預設為何用 `xhigh`:拿到與 `max` 相同的指數\n  分數,每任務卻便宜 30-53%。\n\n## v0.10.3 新功能\n\n- **五種語言的 README 全面重整**——文件開頭改成先講清楚「這是什麼、我為什麼會\n  想要它」,版本歷程全部收攏到最下方,不再打斷開頭的介紹;新增常見問題,回答\n  一直被問到的幾件事:是不是每家訂閱都要有、程式碼會被送去哪、為什麼預設表沒有\n  Fable 5、為什麼用 `xhigh` 而不是 `max`、首選 CLI 沒裝會怎樣、被派工的模型會不會\n  改檔。\n- **修正:外掛資訊檔的版本號沒跟上**——`plugin.json` 與\n  `.claude-plugin/plugin.json` 在 0.10.1、0.10.2 發布後仍寫著 `0.10.0`,導致外掛\n  安裝顯示錯誤版本。\n- **修正:`routing.local.yaml.example` 還指著已退場的模型**——起手設定檔裡的\n  `claude-opus-4-8` 全數改為 `claude-opus-5`(並依通道給對應檔位),Gemini 3.5\n  Flash 候選改為 3.6 Flash,與 0.10.0 以來的預設值一致。\n- **對照原始資料修正智慧指數數字**(`docs/model-capabilities-2026-09.md`):\n  那是指數點數不是百分比;補上 AA-Briefcase / GDPval-AA v2 對照,並記下兩項與\n  預設值相反的結果:Fable 5 在事實知識領先、GPT-5.6 Sol 在呈現品質領先。\n\n## v0.10.2 新功能\n\n- **`hardest-coding` 與 `hard-judgment` 的 Claude 檔位由 `max` 降為 `xhigh`**,\n  對齊 Anthropic 對 Claude Opus 5 的官方建議:編碼與 agentic 工作從 `xhigh` 起跳,\n  `high` 是其他吃智力任務的下限,`max` 保留給正確性重於成本的場合。要拉回去用\n  `omnilane configure set <通道> \"<設定>\"`。\n- **修掉兩條死的 CHANGELOG 比較連結**——它們指向從未發布的 `v0.10.0` tag。\n\n## v0.10.1 新功能\n\n- **預設路由加入 `claude-opus-5`**:成為 `hard-judgment`、`taste-final` 第一順位,\n  也納入最高難度程式任務的備援。\n- **`omnilane configure` 已擴充全部 13 個供應商**:共 106 個可選模型,完整收錄\n  Codex、Claude Code、Grok Build、Antigravity 即時清單,並加入已驗證的\n  OpenRouter／OpenCode 捷徑;仍可用 `c` 輸入自訂模型 ID。\n\n<details>\n<summary>舊版本(v0.10.0 以前)</summary>\n\n## v0.10.0 新功能\n\n- **Gemini 3.6 Flash 預設路由**——`fast-agentic`、`triage`、`bulk-mechanical`\n  的 gemini 候選(與 `Gemini Flash` 別名)改用 Gemini 3.6 Flash:輸出 token\n  更少、輸出單價更低、Artificial Analysis 實測輸出速度第一。\n- **證據重稽核**——路由註解、模型能力筆記與 Gemini 價格表對官方來源刷新。\n\n## v0.9.1 新功能\n\n- **修正**:`configure set` 不再刪掉 `routing.local.yaml` 裡手寫的註解——\n  只改寫自身的戳記行與被取代的 lane。\n\n## v0.9.0 新功能\n\n- **五個 OpenAI-compatible direct-API vendor** — `deepseek`、`zai`(GLM)、\n  `mistral`、`groq`、`cerebras`,與 `openrouter` 同為免 CLI 通道(curl 加一把\n  `<VENDOR>_API_KEY`);`lib/common.sh` registry 一行即加一個。詳見\n  [`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md)。\n- **fish shell 補全** — `omnilane completion fish | source`。\n\n## v0.8.3 新功能\n\n- **MCP server** — `omnilane mcp` 啟動零依賴的 stdio MCP server,任何支援\n  MCP 的宿主(Claude Code、Codex、Gemini CLI、Cursor、OpenCode……)不必安裝\n  skill 就能發現並呼叫 omnilane:提供 `route`、`jobs_status`、`jobs_result`、\n  `list_lanes` 四個工具。`route` 預設唯讀 advise 模式;work 模式必須明確\n  指定 workdir。\n\n## v0.8.2 新功能\n\n- **`openrouter` vendor** — 只要 `curl` 加一把 `OPENROUTER_API_KEY`,\n  就能直連 OpenRouter API 派工:任何 omnilane 安裝都摸得到數百個\n  託管模型,不必再裝任何代理 CLI。僅限 advise/consult(不能改檔,\n  work 模式會明確報錯指路),模型 slug 必填,例如\n  `dispatch.sh --vendor openrouter --model anthropic/claude-sonnet-5 consult \"...\"`。\n- **`deepseek`、`zai`、`mistral`、`groq`、`cerebras` vendor** — 與 `openrouter`\n  同一條免 CLI 直連 API 路徑,對應 OpenAI-compatible 供應商:DeepSeek、Z.ai GLM、\n  Mistral、Groq、Cerebras。各只要 `curl` 加自己那把 `<VENDOR>_API_KEY`;僅限\n  advise/consult。端點、金鑰、預設模型由 `lib/common.sh` 一行 registry 定義。\n  詳見 [`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md)。\n- **`opencode` vendor** — 透過 OpenCode 多供應商聚合 CLI 無頭派工\n  (`opencode run`)。advise 模式鎖定內建唯讀 `plan` agent;work 模式\n  用 `--auto`。加入預設 `coding-overflow` 鏈作為最後備援。\n\n## v0.8.1 新功能\n\n- **Claude Code 外掛開場自動載入路由提醒** — 外掛新增 `SessionStart`\n  hook(`hooks/hooks.json`),於開場(`startup|resume|clear`)自動注入\n  路由提醒,裝外掛即生效,不必修改 `~/.claude/CLAUDE.md`。其他 CLI\n  仍走 `install.sh` 的指令檔提醒。\n\n## v0.8.0 新功能\n\n- **兩個新派工 vendor** — `kimi`(Moonshot Kimi Code CLI)與 `qwen`\n  (Alibaba Qwen Code CLI)加入,沿用統一 runner 契約:advise 唯讀、\n  work 自動核准、剝除 API key 環境變數改用 CLI 自身訂閱登入、空輸出\n  視為失敗。可用 `--vendor kimi|qwen` 直接點名。\n- **coding-overflow 長出備援鏈** — 額度溢流道改為 grok → kimi → qwen\n  再到 `off`,三家裝任一家即可用。runner 以假執行檔完成契約測試;\n  歡迎回報真實模型實測結果。\n\n## v0.7.1 新功能\n\n- **路由表更新(2026-07 模型數據)** — hardest-coding 首選改為 GPT-5.6 Sol\n  **max** 檔位:Artificial Analysis Coding Agent Index v1.1 測得 Sol (max)\n  80 分為現任最高,汰換舊的「xhigh 勝 max」快照。\n- **Claude 備援升檔** — hardest-coding 與 hard-judgment 的 Claude Opus 4.8\n  備援改為 **xhigh**,依 Anthropic 官方對困難任務與長時間工作的建議。\n\n## v0.7.0 新功能\n\n- **先預覽再派工** — `--dry-run` 印出完整解析後的派工計畫(vendor、模型、\n  模式、逾時、副作用判定),不呼叫模型、不建立工作狀態。\n- **版本化 JSON 自動化** — `--list`/`--explain`/`--validate` 與\n  `jobs list|status|result|stats` 都有 `--json` 信封;另有唯讀 `jobs wait`、\n  `jobs audit`,以及帶可重現 manifest 的離線 `omnilane release-audit` 發佈稽核。\n- **本機工作一條龍** — `jobs tail` 窺看即時輸出、`jobs retry` 以 fail-closed\n  方式重派已完成工作、`prune --older-than` 依時間清理,`--help` 覆蓋所有指令。\n- **安裝與補全更安全** — `install.sh --check`/`--dry-run` 唯讀回報漂移,\n  `omnilane completion bash|zsh` 提供安全的 tab 補全,並修復五個 macOS 原生\n  Bash 3.2 崩潰。\n\n## v0.6.0 新功能\n\n- **離線看懂並驗證路由** — 用 `--explain` 查看每個備援候選，或用\n  `--validate` 檢查完整生效路由表；都不會呼叫模型或建立工作狀態。\n- **用機器可讀資料觀察本機狀態** — `jobs.sh stats` 提供有界統計，\n  `omnilane doctor --json` 提供健康檢查，又不會洩漏任務或結果正文。\n- **在 Live Board 比較兩筆工作** — 把一筆已載入工作釘成只存在記憶體的\n  參考快照，並排比較模型路徑與公開結果。\n- **讓鎖恢復更安靜** — 擁有者檔案在檢查與讀取間消失時，不再洩漏容易誤判的\n  缺檔診斷，同時維持 fail-closed。\n\n## v0.5.1 新功能\n\n- **在非 Git 目錄使用 Codex work** — 一般資料夾仍完整支援；Omnilane 不要求、\n  也絕不會自動執行 `git init`。\n- **乾淨停止非 Git 卡死** — 未設定整體上限時，解析後的單次看門狗會自動成為\n  程序群組保險絲，同時保留手動 timeout 的優先序與退出碼語意。\n- **讓版本顯示可信** — `VERSION` 現在統一供應 `omnilane --version` 與兩份\n  plugin manifest，CI 會檢查變更紀錄和五語 README 是否一致。\n\n</details>\n\n## 🌱 狀態\n\nomnilane 現有十三個派工 vendor——四個框架原生(codex、claude、grok、gemini)、\n三個聚合/溢流 CLI(kimi、qwen、opencode),加上六個免 CLI 的 OpenAI-compatible\n直連 API vendor(openrouter、deepseek、zai、mistral、groq、cerebras)——全部走\n統一 runner 契約並附 contract 測試,另有 Claude Code `SessionStart` 自動提醒與\nMCP stdio server 介面(`omnilane mcp`)。直連 API 與聚合 runner 皆以假\n執行檔做過契約測試;歡迎回報真實模型使用經驗。Grok/Antigravity 指令殼行為\n仍可能隨 CLI 版本變動。歡迎回報 issue 與 PR。\n\n專案文件：[貢獻指南](CONTRIBUTING.md) · [安全政策](SECURITY.md) ·\n[變更紀錄](CHANGELOG.md)\n","readmeFilename":"README.zh-TW.md"}