@iowarp/clio-coder 0.4.9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +11 -3
- package/CHANGELOG.md +153 -0
- package/CODE_OF_CONDUCT.md +10 -0
- package/CONTRIBUTING.md +208 -382
- package/NOTICE +8 -2
- package/README.md +199 -418
- package/ROADMAP.md +82 -0
- package/SECURITY.md +14 -11
- package/dist/acp-KS7ARGV6.js +132 -0
- package/dist/agents-YOGJ2YEJ.js +163 -0
- package/dist/assets/codewiki.json +1 -1
- package/dist/auth-CEDCO6O6.js +557 -0
- package/dist/background-YWTBPSQU.js +39 -0
- package/dist/builtins-GDYO4RTR.js +23 -0
- package/dist/chunk-27YTM2CV.js +175 -0
- package/dist/chunk-2AF6YC7Q.js +75 -0
- package/dist/chunk-2DTIWSAW.js +381 -0
- package/dist/chunk-2EMLKSCX.js +262 -0
- package/dist/chunk-2OJ3YZQP.js +665 -0
- package/dist/chunk-2VLYHHFT.js +35 -0
- package/dist/chunk-2WVPJF3Z.js +204 -0
- package/dist/chunk-33OASOS6.js +176 -0
- package/dist/chunk-3BD2LXYJ.js +19 -0
- package/dist/chunk-3JHUFKG7.js +30 -0
- package/dist/chunk-3JLTRPN7.js +711 -0
- package/dist/chunk-3LT34CAM.js +2796 -0
- package/dist/chunk-3O5JWP4L.js +1670 -0
- package/dist/chunk-3UW3KU4A.js +21 -0
- package/dist/chunk-4A6YRGV4.js +569 -0
- package/dist/chunk-4D2BRCZ3.js +67 -0
- package/dist/chunk-4SYHGVDE.js +668 -0
- package/dist/chunk-4VDHLCF5.js +66 -0
- package/dist/chunk-4WOOTKFD.js +637 -0
- package/dist/chunk-4WV4PI66.js +80 -0
- package/dist/chunk-53OXPRI6.js +195 -0
- package/dist/chunk-55RMDDFM.js +1347 -0
- package/dist/chunk-56XP4FJU.js +2025 -0
- package/dist/chunk-5B3RTYAK.js +123 -0
- package/dist/chunk-5CD243WE.js +45 -0
- package/dist/chunk-5JQR5B4D.js +709 -0
- package/dist/chunk-5KQEUIWM.js +597 -0
- package/dist/chunk-5LP5FNNR.js +915 -0
- package/dist/chunk-62UK7AGW.js +9344 -0
- package/dist/chunk-6CTHLZFB.js +563 -0
- package/dist/chunk-6EJYVCTN.js +23 -0
- package/dist/chunk-6OWUM2NC.js +12289 -0
- package/dist/chunk-6RJMYYIE.js +1023 -0
- package/dist/chunk-6W75D37F.js +643 -0
- package/dist/chunk-733ZBT5P.js +1721 -0
- package/dist/chunk-77DCC6JZ.js +3710 -0
- package/dist/chunk-7QXCO3AF.js +156 -0
- package/dist/chunk-7RET77VB.js +481 -0
- package/dist/chunk-A4MVRV4C.js +65 -0
- package/dist/chunk-ALJWT6O6.js +93 -0
- package/dist/chunk-AVSR2HKI.js +232 -0
- package/dist/chunk-B7GY6QER.js +42 -0
- package/dist/chunk-BFOSV5EZ.js +178 -0
- package/dist/chunk-BGOIM7NB.js +103 -0
- package/dist/chunk-BJH6WFIB.js +372 -0
- package/dist/chunk-BOBCCDJ6.js +1533 -0
- package/dist/chunk-BRCOSE7O.js +117 -0
- package/dist/chunk-BYFHHCFV.js +601 -0
- package/dist/chunk-C2CPOIH2.js +83 -0
- package/dist/chunk-C7AQTPCE.js +694 -0
- package/dist/chunk-CBAQPTDU.js +165 -0
- package/dist/chunk-CDQ2UC6W.js +125 -0
- package/dist/chunk-CN6SW5DC.js +177 -0
- package/dist/chunk-CRHPCPZP.js +132 -0
- package/dist/chunk-CTFPFW3H.js +44 -0
- package/dist/chunk-D3KWFOUT.js +103 -0
- package/dist/chunk-D65E25JG.js +185 -0
- package/dist/chunk-DCGHJQ2U.js +236 -0
- package/dist/chunk-DE2LU267.js +106 -0
- package/dist/chunk-DF6PI6GN.js +97 -0
- package/dist/chunk-DGC6X6XR.js +53 -0
- package/dist/chunk-DOUISWEE.js +526 -0
- package/dist/chunk-DR3TAEUA.js +188 -0
- package/dist/chunk-DVTBERFY.js +33 -0
- package/dist/chunk-DXSETN72.js +1051 -0
- package/dist/chunk-DZLR4UEH.js +128 -0
- package/dist/chunk-E6IPKW2E.js +77 -0
- package/dist/chunk-EG4ARXPC.js +139 -0
- package/dist/chunk-EKV4UBCM.js +652 -0
- package/dist/chunk-EOJPDNUP.js +1325 -0
- package/dist/chunk-EX57VVWW.js +4157 -0
- package/dist/chunk-EYTLV3W3.js +5937 -0
- package/dist/chunk-EZD2BXGP.js +475 -0
- package/dist/chunk-EZDCA34W.js +314 -0
- package/dist/chunk-FD2I4KBR.js +33 -0
- package/dist/chunk-FD3IAHQM.js +27 -0
- package/dist/chunk-FFYTC2KQ.js +416 -0
- package/dist/chunk-FGSQHUCK.js +110 -0
- package/dist/chunk-GCQFN7YI.js +32 -0
- package/dist/chunk-GGPF6LLE.js +38 -0
- package/dist/chunk-GGWI3OVM.js +215 -0
- package/dist/chunk-GLIQT7SU.js +172 -0
- package/dist/chunk-GN7QBEEI.js +95 -0
- package/dist/chunk-GRHOXDKB.js +1104 -0
- package/dist/chunk-HMN2C6YL.js +54 -0
- package/dist/chunk-HOEDA42N.js +310 -0
- package/dist/chunk-HOYZUKG7.js +192 -0
- package/dist/chunk-HQVN7G4F.js +1021 -0
- package/dist/chunk-HSQQFDB3.js +519 -0
- package/dist/chunk-I4ELN5BX.js +47 -0
- package/dist/chunk-I4Y4WKZR.js +386 -0
- package/dist/chunk-IFPDAD7R.js +797 -0
- package/dist/chunk-IN7DGBVS.js +582 -0
- package/dist/chunk-ISHUS7HC.js +396 -0
- package/dist/chunk-JPXLJSGR.js +191 -0
- package/dist/chunk-JQCLXSFI.js +69 -0
- package/dist/chunk-KBUTSJSR.js +61 -0
- package/dist/chunk-KW5HXKLJ.js +56 -0
- package/dist/chunk-L4APUGCT.js +139 -0
- package/dist/chunk-L7G7K4I2.js +505 -0
- package/dist/chunk-LAR7DX5E.js +1840 -0
- package/dist/chunk-LAVUQX3B.js +462 -0
- package/dist/chunk-LJRBX7QR.js +116 -0
- package/dist/chunk-LNOXCGN2.js +1864 -0
- package/dist/chunk-LTWH2ACR.js +23002 -0
- package/dist/chunk-LYJJ6546.js +661 -0
- package/dist/chunk-M2IPMWCN.js +457 -0
- package/dist/chunk-MGLRTOCK.js +101 -0
- package/dist/chunk-MZF5IKZT.js +160 -0
- package/dist/chunk-N24R6KWS.js +386 -0
- package/dist/chunk-NASYVWDB.js +604 -0
- package/dist/chunk-NBXFPI7U.js +195 -0
- package/dist/chunk-NDPF2N2L.js +400 -0
- package/dist/chunk-NFSK2VNU.js +446 -0
- package/dist/chunk-NG3QQSXY.js +43 -0
- package/dist/chunk-NOCSM22Y.js +63 -0
- package/dist/chunk-NVPXXW2H.js +1143 -0
- package/dist/chunk-O63U2I6I.js +30 -0
- package/dist/chunk-OJXOA6YU.js +98 -0
- package/dist/chunk-OPD7GL6F.js +1196 -0
- package/dist/chunk-OQ2EOAHA.js +14399 -0
- package/dist/chunk-OV62D6KO.js +688 -0
- package/dist/chunk-OZ76TLGU.js +740 -0
- package/dist/chunk-P4GNZPXO.js +1156 -0
- package/dist/chunk-PS6JAWJZ.js +78 -0
- package/dist/chunk-PXRCXGLK.js +1865 -0
- package/dist/chunk-QDUUOZ3S.js +108 -0
- package/dist/chunk-QG6I2T5E.js +1416 -0
- package/dist/chunk-QHSBROEW.js +308 -0
- package/dist/chunk-QNUQ7K7D.js +46 -0
- package/dist/chunk-QZTTRSJE.js +333 -0
- package/dist/chunk-R2UUNSNQ.js +1605 -0
- package/dist/chunk-R7FGRZNF.js +1794 -0
- package/dist/chunk-RNDCROSG.js +199 -0
- package/dist/chunk-S36CXHO2.js +302 -0
- package/dist/chunk-SJGS3GDI.js +575 -0
- package/dist/chunk-SQZHXUB3.js +510 -0
- package/dist/chunk-SUTLW6ND.js +686 -0
- package/dist/chunk-SYF7FVBL.js +179 -0
- package/dist/chunk-T2MDZES3.js +1577 -0
- package/dist/chunk-T33IYTZM.js +1146 -0
- package/dist/chunk-TDGYTWM6.js +49 -0
- package/dist/chunk-TGL5FZVD.js +132 -0
- package/dist/chunk-TGWZXJ7L.js +1205 -0
- package/dist/chunk-TKDRT2DF.js +114 -0
- package/dist/chunk-TV2EBCSQ.js +152 -0
- package/dist/chunk-U26XXPJS.js +367 -0
- package/dist/chunk-U5QU5ZOD.js +419 -0
- package/dist/chunk-U6YTUVOX.js +1011 -0
- package/dist/chunk-UCINIRHW.js +188 -0
- package/dist/chunk-UJD5MPP6.js +52 -0
- package/dist/chunk-URCXX7WJ.js +146 -0
- package/dist/chunk-UX2L5CUD.js +898 -0
- package/dist/chunk-UZVYEF57.js +114 -0
- package/dist/chunk-V35KZDUZ.js +218 -0
- package/dist/chunk-VESL6DQY.js +1058 -0
- package/dist/chunk-VKHLUZNO.js +986 -0
- package/dist/chunk-VOYUCAQF.js +584 -0
- package/dist/chunk-VYRQHORQ.js +414 -0
- package/dist/chunk-W53XSRQE.js +245 -0
- package/dist/chunk-X4CEFOSG.js +226 -0
- package/dist/chunk-XDHUDE5K.js +380 -0
- package/dist/chunk-XISLDHEL.js +1290 -0
- package/dist/chunk-XM34YQ2Y.js +169 -0
- package/dist/chunk-XMDBTYCH.js +661 -0
- package/dist/chunk-XS2QPZJE.js +449 -0
- package/dist/chunk-YBUECLAF.js +618 -0
- package/dist/chunk-YQ6XEFVK.js +332 -0
- package/dist/chunk-YYLCPDCC.js +990 -0
- package/dist/chunk-Z4GLJ6J4.js +1035 -0
- package/dist/chunk-ZARZ4POR.js +210 -0
- package/dist/chunk-ZJPORZTC.js +119 -0
- package/dist/chunk-ZNUZ3EXD.js +243 -0
- package/dist/chunk-ZPST2KQO.js +49 -0
- package/dist/chunk-ZR5YA6ZF.js +512 -0
- package/dist/chunk-ZU4JPCPR.js +319 -0
- package/dist/chunk-ZUKUCZYZ.js +39 -0
- package/dist/cli/index.js +56 -45
- package/dist/clio-K2PBVCEM.js +27 -0
- package/dist/clio-context-tools-GR4OHFSO.js +145 -0
- package/dist/code-nav-4X3OI6DK.js +715 -0
- package/dist/codewiki/build-worker.js +4 -4
- package/dist/compile-cache-YRB6QRO7.js +18 -0
- package/dist/components-RQOJ6NUR.js +675 -0
- package/dist/config-Q5J7UBAB.js +291 -0
- package/dist/config-XE7XYZLU.js +38 -0
- package/dist/config-graph-P3555574.js +175 -0
- package/dist/configure-KIJ32ZO6.js +104 -0
- package/dist/context-LFBQOSXT.js +344 -0
- package/dist/context-NNLBES2Y.js +82 -0
- package/dist/context-WBH3KSVR.js +302 -0
- package/dist/context-clear-YOHMQ6SQ.js +208 -0
- package/dist/context-index-X2N5UAIF.js +120 -0
- package/dist/context-map-HOSMGUG2.js +555 -0
- package/dist/context-working-set-MRAEVDNV.js +1564 -0
- package/dist/data-tool-JJPBGMQJ.js +2986 -0
- package/dist/detail-RHJOTGN4.js +139 -0
- package/dist/dispatch-runner-NC7PYNIO.js +2477 -0
- package/dist/docs-K4GBWRUX.js +342 -0
- package/dist/doctor-S5KZ2GTN.js +1138 -0
- package/dist/doctor-deep-2EJQSHIZ.js +130 -0
- package/dist/domain-loader-MB34FDPD.js +13 -0
- package/dist/eval-3D6M36N7.js +5220 -0
- package/dist/eval-inventory-SM3HNM47.js +260 -0
- package/dist/evals-FO6JEUCN.js +104 -0
- package/dist/evidence-6IYN52ET.js +262 -0
- package/dist/evidence-JVECPI3F.js +250 -0
- package/dist/evidence-XNVPPLVK.js +410 -0
- package/dist/evolve-TLPUDJDM.js +634 -0
- package/dist/extensions-ROZJ5X3J.js +311 -0
- package/dist/fleet-6RJWIOEO.js +284 -0
- package/dist/fleet-WKVBF5SZ.js +942 -0
- package/dist/fleet-commands-L6WFT7KZ.js +76 -0
- package/dist/fleet-decisions-BTQMWU5A.js +55 -0
- package/dist/fleet-graph-553DZ67Q.js +141 -0
- package/dist/fleet-inspect-236FZPRB.js +329 -0
- package/dist/fleet-new-CKUXP3CO.js +48 -0
- package/dist/fleet-preflight-NZQHABWO.js +95 -0
- package/dist/fleet-validate-7NLAE26R.js +96 -0
- package/dist/fleet-verify-E3RO6A5W.js +226 -0
- package/dist/fleet-view-KMZQY7YJ.js +144 -0
- package/dist/gui/client/assets/abnfDiagram-VCTEODGH-DPBWQwNn.js +1 -0
- package/dist/gui/client/assets/architecture-7GRP2DOG-D1w8FrFW.js +1 -0
- package/dist/gui/client/assets/architectureDiagram-5GKGNRK7-CVPgKd1-.js +36 -0
- package/dist/gui/client/assets/blockDiagram-I7D4REHJ-BLmnqkK5.js +129 -0
- package/dist/gui/client/assets/c4Diagram-7LVT6UL2-4AU9cfM7.js +38 -0
- package/dist/gui/client/assets/channel-DwFZ0m8S.js +1 -0
- package/dist/gui/client/assets/chunk-4HAMMTFA-EOWkKCav.js +62 -0
- package/dist/gui/client/assets/chunk-75Z2AOVW-CygeoIMl.js +2 -0
- package/dist/gui/client/assets/chunk-DU6HZSFF-s27fViLb.js +125 -0
- package/dist/gui/client/assets/chunk-F27PBJKO-BrHvwLsZ.js +1 -0
- package/dist/gui/client/assets/chunk-GMAD6QVW-DzPh-7jt.js +72 -0
- package/dist/gui/client/assets/chunk-GVQU2GXP-pIaQkIzm.js +1 -0
- package/dist/gui/client/assets/chunk-IMKFNOWR-BGJVE_Br.js +231 -0
- package/dist/gui/client/assets/chunk-L3NEJ4N5-B3YLuhww.js +1 -0
- package/dist/gui/client/assets/chunk-OSK3NFVY-BRj61HHU.js +10 -0
- package/dist/gui/client/assets/chunk-P2QGCYS3-Sno90KxP.js +1 -0
- package/dist/gui/client/assets/chunk-POPQ4Y6H-Cw8NTbxr.js +1 -0
- package/dist/gui/client/assets/chunk-PWAF6VOD-BIhHgz37.js +1 -0
- package/dist/gui/client/assets/chunk-SHT3W25Y-Cqv7npBj.js +168 -0
- package/dist/gui/client/assets/chunk-SVP7TREG-Hxzl6Dee.js +88 -0
- package/dist/gui/client/assets/chunk-TICWLB2K-CIFVyVP2.js +206 -0
- package/dist/gui/client/assets/classDiagram-ZZMXUADV-BJbAiI_w.js +1 -0
- package/dist/gui/client/assets/classDiagram-v2-VYDZK3BY-BJbAiI_w.js +1 -0
- package/dist/gui/client/assets/cynefin-OW5HDTMX-DecLWZ-y.js +1 -0
- package/dist/gui/client/assets/cynefinDiagram-5FMLGOSQ-CK-T2N-D.js +62 -0
- package/dist/gui/client/assets/dagre-GXQ25YYZ-C0dfg-OS.js +4 -0
- package/dist/gui/client/assets/diagram-S7CK7UJ4-EaJukVh-.js +30 -0
- package/dist/gui/client/assets/diagram-UQ7AKVKN-xcOucEtP.js +41 -0
- package/dist/gui/client/assets/diagram-VSXAHHWV-3AUJACMf.js +3 -0
- package/dist/gui/client/assets/diagram-VX7I27RA-TPknLqam.js +24 -0
- package/dist/gui/client/assets/diagram-Z3DM3KII-wa1q3YMF.js +24 -0
- package/dist/gui/client/assets/ebnfDiagram-PWID7BFC-JBCF2-s7.js +1 -0
- package/dist/gui/client/assets/erDiagram-RLTQ6QDP-CmXjXPc4.js +99 -0
- package/dist/gui/client/assets/eventmodeling-NTZA5JFV-D_1aJWYl.js +1 -0
- package/dist/gui/client/assets/flowDiagram-HODETNUW-BQtZlael.js +1 -0
- package/dist/gui/client/assets/framework-Bq-znqwW.js +9 -0
- package/dist/gui/client/assets/ganttDiagram-EL5Y4UJY-IPaL_kaa.js +292 -0
- package/dist/gui/client/assets/gitGraph-4MIJSDKK-Oy0Q3hoc.js +1 -0
- package/dist/gui/client/assets/gitGraphDiagram-WWUBYQGX-jtAuBmbc.js +106 -0
- package/dist/gui/client/assets/index-CuFuBEdL.css +1 -0
- package/dist/gui/client/assets/index-hMbEIsX0.js +87 -0
- package/dist/gui/client/assets/info-A6RAGUB7-UtEs1tv7.js +1 -0
- package/dist/gui/client/assets/infoDiagram-27XIBGKW-hlwR1pBW.js +2 -0
- package/dist/gui/client/assets/ishikawaDiagram-5VMMS53U-C6vMtfsd.js +70 -0
- package/dist/gui/client/assets/journeyDiagram-3NMN7TZE-EAwAl_PS.js +139 -0
- package/dist/gui/client/assets/kanban-definition-UXKFOSKX-CQOhRKHW.js +89 -0
- package/dist/gui/client/assets/line-DbcwGZTW.js +1 -0
- package/dist/gui/client/assets/mermaid-parser.core-C2QfVcHd.js +7 -0
- package/dist/gui/client/assets/mermaid.core-N9qUTre1.js +44 -0
- package/dist/gui/client/assets/mindmap-definition-YA3MSWOX-BR_FL9gK.js +96 -0
- package/dist/gui/client/assets/packet-AYTQ26CC-CbBJ2oAa.js +1 -0
- package/dist/gui/client/assets/pegDiagram-XKGWAZYB-BruU0IHM.js +1 -0
- package/dist/gui/client/assets/pie-WAS4IAKB-BWdSng4H.js +1 -0
- package/dist/gui/client/assets/pieDiagram-E7YTZNPT-CR3ljgdU.js +39 -0
- package/dist/gui/client/assets/quadrantDiagram-AXDQQJYC-C-boKslr.js +7 -0
- package/dist/gui/client/assets/radar-RG4KPBEZ-CGlOnAKG.js +1 -0
- package/dist/gui/client/assets/railroad-74A4TZTK-CDvuAlyC.js +1 -0
- package/dist/gui/client/assets/railroad-abnf-HS5TGJTU-CQUA9crC.js +1 -0
- package/dist/gui/client/assets/railroad-ebnf-LZEXJU2U-CD857gxq.js +1 -0
- package/dist/gui/client/assets/railroad-peg-WCYAUIDC-DUV4k35E.js +1 -0
- package/dist/gui/client/assets/railroadDiagram-O6MQD6OU-DMR4LXmA.js +1 -0
- package/dist/gui/client/assets/requirementDiagram-BXWQKSXE-DVltaF6c.js +84 -0
- package/dist/gui/client/assets/sankeyDiagram-P5KCCOFB-CHdNz472.js +40 -0
- package/dist/gui/client/assets/sequenceDiagram-WJ2MYXX4-DaMafIty.js +162 -0
- package/dist/gui/client/assets/stateDiagram-D77RDMKH-CEbBHqn3.js +1 -0
- package/dist/gui/client/assets/stateDiagram-v2-MP3YSRHH-B3JgDdFg.js +1 -0
- package/dist/gui/client/assets/swimlanes-42K2YHIH-BlPHndnJ.js +1 -0
- package/dist/gui/client/assets/swimlanesDiagram-VR7AAH4N-BPabHwsZ.js +8 -0
- package/dist/gui/client/assets/timeline-definition-24CTP7MA-E4Y1lPBI.js +120 -0
- package/dist/gui/client/assets/treeView-Q6P3EWNA-DrY0uhTN.js +1 -0
- package/dist/gui/client/assets/treemap-WGGIJYW6-CVotnLHf.js +1 -0
- package/dist/gui/client/assets/vennDiagram-4TSXK5OY-DJNrLIOF.js +34 -0
- package/dist/gui/client/assets/wardley-WFR3VGLG-ClOpAp5S.js +1 -0
- package/dist/gui/client/assets/wardleyDiagram-VM6X3IG4-qhMoKOXc.js +78 -0
- package/dist/gui/client/assets/xychartDiagram-S5SC5T6Z-CTuXoo9R.js +7 -0
- package/dist/gui/client/index.html +6 -0
- package/dist/gui/ops-worker.js +167 -0
- package/dist/gui/reads-worker.js +473 -0
- package/dist/gui/server.js +9780 -0
- package/dist/gui-QJS7XQMV.js +16 -0
- package/dist/init-DV5B6HQG.js +354 -0
- package/dist/install-6C45YXFP.js +19 -0
- package/dist/install-O7NSRU2W.js +13 -0
- package/dist/interactive-OXGYZYAS.js +22381 -0
- package/dist/interop-J7UOBOSF.js +254 -0
- package/dist/inventory-OEGIL6PY.js +144 -0
- package/dist/library-B3UPGY4V.js +83 -0
- package/dist/library-MXQA5DLT.js +309 -0
- package/dist/library-ROZAMUIL.js +496 -0
- package/dist/library-import-2LTWOVBD.js +190 -0
- package/dist/library-inventory-LJ3XHLWO.js +60 -0
- package/dist/library-validation-DARHHUNW.js +46 -0
- package/dist/mcp-2GSPYQ54.js +28 -0
- package/dist/memory-J3STUUIK.js +537 -0
- package/dist/models-Y3GMFJ2V.js +314 -0
- package/dist/monitor-LHNH577J.js +811 -0
- package/dist/orchestrator-DTAPXULA.js +12117 -0
- package/dist/panes-A743ONZ5.js +103 -0
- package/dist/panes-CTNO57ZY.js +76 -0
- package/dist/paths-3SBYJQDP.js +68 -0
- package/dist/preload-OJBMAIXF.js +140 -0
- package/dist/providers-CMETPZNS.js +232 -0
- package/dist/registry-37T4U6X2.js +15 -0
- package/dist/reset-O7EUCYWO.js +346 -0
- package/dist/resources-FY6XYFN2.js +189 -0
- package/dist/run-H64MEVTA.js +1067 -0
- package/dist/run-script-PQ5NRU3X.js +42 -0
- package/dist/settings-SNIQNXCW.js +73 -0
- package/dist/settings-controls-X6GMCPVG.js +202 -0
- package/dist/share-CAFMMQLM.js +299 -0
- package/dist/skills-ERKQUC7L.js +114 -0
- package/dist/skills-eval-CQ23MYQK.js +1099 -0
- package/dist/skills-inventory-TVUYJDVN.js +142 -0
- package/dist/slash-commands-ROG3KIFJ.js +107 -0
- package/dist/startup-background-KDWCQMWT.js +247 -0
- package/dist/steer-KKYXJSH4.js +77 -0
- package/dist/support-M3RCUUEL.js +40 -0
- package/dist/system-ZDW44ZGX.js +142 -0
- package/dist/target-runtimes-PWA22WVW.js +73 -0
- package/dist/targets-AJWA6E7Z.js +1207 -0
- package/dist/tasks-6L2JJRC5.js +39 -0
- package/dist/terminal-lease-YFUSDPAD.js +432 -0
- package/dist/tools-5XJUABRD.js +30 -0
- package/dist/trace-LA5MVR4Y.js +527 -0
- package/dist/tree-sitter-TQW3Y52T.js +4673 -0
- package/dist/tui-primitives-IUCVWLH5.js +19 -0
- package/dist/uninstall-SAWGGXAB.js +448 -0
- package/dist/upgrade-HSNSVTZG.js +300 -0
- package/dist/usage-XSILDHKF.js +1083 -0
- package/dist/verifiers-ECA5GIHL.js +633 -0
- package/dist/verify-R6QQCCEB.js +31 -0
- package/dist/version-PLZYB5KW.js +22 -0
- package/dist/web-fetch-PVZNMBOB.js +803 -0
- package/dist/wiki-generate-RP22WP5K.js +647 -0
- package/dist/with-panes-W3PAZPRF.js +629 -0
- package/dist/worker/entry.js +324 -284
- package/dist/workspace-check-3764ZKC2.js +83 -0
- package/docs/README.md +26 -10
- package/docs/architecture/acp.md +179 -12
- package/docs/architecture/artifact-placement.md +1 -1
- package/docs/architecture/capacity-and-scheduling.md +7 -8
- package/docs/architecture/context-engine.md +350 -95
- package/docs/architecture/model-catalog.md +18 -11
- package/docs/architecture/observability.md +1 -1
- package/docs/architecture/pi-boundary.md +59 -6
- package/docs/architecture/prompt-envelope-and-tools.md +147 -39
- package/docs/architecture/provider-adapter-cookbook.md +2 -2
- package/docs/architecture/safety-model.md +18 -4
- package/docs/architecture/trace-store.md +2 -2
- package/docs/architecture/tui-design.md +41 -81
- package/docs/architecture/worker-dispatch-mechanics.md +9 -1
- package/docs/gui/README.md +69 -0
- package/docs/gui/boundary-doctrine.md +104 -0
- package/docs/gui/chat-rendering-spec.md +1440 -0
- package/docs/gui/cli-surface-routing.md +148 -0
- package/docs/gui/delivery-order.md +53 -0
- package/docs/gui/event-bus-coverage.md +103 -0
- package/docs/gui/inspector-presentation.md +71 -0
- package/docs/gui/parity/01-cli-surface.md +74 -0
- package/docs/gui/parity/02-slash-and-surfaces.md +110 -0
- package/docs/gui/parity/03-domains-and-plan.md +69 -0
- package/docs/gui/performance-baseline.md +76 -0
- package/docs/gui/settings-write-surface.md +267 -0
- package/docs/gui/workflow-coverage.md +64 -0
- package/docs/guide/built-in-agents.md +1 -1
- package/docs/guide/commands-and-modes.md +256 -99
- package/docs/guide/configuration-and-targets.md +485 -124
- package/docs/guide/configuration-reference.md +165 -82
- package/docs/guide/doctor.md +127 -0
- package/docs/guide/environment-variables.md +1 -1
- package/docs/guide/exit-codes-and-output.md +3 -1
- package/docs/guide/extensions-and-sharing.md +3 -14
- package/docs/guide/fleet-dispatch.md +231 -45
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/installation-and-lifecycle.md +27 -16
- package/docs/guide/interop.md +2 -2
- package/docs/guide/proactive-memory.md +154 -68
- package/docs/guide/resource-library.md +4 -0
- package/docs/guide/skills-marketplace.md +8 -4
- package/docs/guide/slurm.md +88 -0
- package/docs/guide/tool-usage.md +134 -11
- package/docs/guide/troubleshooting.md +4 -2
- package/docs/process/battletest-2026-09-20-fixes.md +161 -0
- package/docs/process/configure-tree-proposal.md +637 -0
- package/docs/process/documentation-coverage.md +8 -0
- package/docs/process/documentation-guide.md +18 -1
- package/docs/process/eval-runner.md +58 -14
- package/docs/process/performance-methodology.md +11 -3
- package/docs/process/release-cut-checklist.md +29 -3
- package/docs/process/tool-audit-v0.4.9.md +3 -0
- package/examples/extensions/README.md +1 -3
- package/examples/extensions/lab-status/clio-coder-extension.json +1 -1
- package/examples/extensions/measurements/clio-coder-extension.json +1 -1
- package/library/registry.yaml +30 -5
- package/library/skills/git/fix-issue/SKILL.md +2 -1
- package/library/skills/git/fix-issue/plugin.json +1 -1
- package/library/skills/git/ship/SKILL.md +2 -1
- package/library/skills/git/ship/plugin.json +1 -1
- package/library/skills/meta/clio-coder-test/SKILL.md +5 -6
- package/library/skills/meta/clio-coder-test/evals.md +2 -2
- package/library/skills/meta/clio-coder-test/references/test-map.md +2 -2
- package/library/skills/registry.yaml +9 -5
- package/library/skills/research/slurm-jobs/SKILL.md +110 -0
- package/library/skills/research/slurm-jobs/evals.md +39 -0
- package/library/skills/research/slurm-jobs/plugin.json +23 -0
- package/library/skills/skill-marketplace.json +18 -2
- package/package.json +15 -10
- package/src/cli/args.ts +59 -0
- package/src/cli/argv.ts +7 -0
- package/src/cli/clio.ts +9 -1
- package/src/cli/configure-controls.ts +136 -0
- package/src/cli/configure-onboarding.ts +24 -7
- package/src/cli/configure-quick.ts +32 -7
- package/src/cli/configure-target.ts +11 -1
- package/src/cli/configure.ts +253 -256
- package/src/cli/docs-server.ts +290 -0
- package/src/cli/docs.ts +60 -15
- package/src/cli/doctor-deep.ts +126 -0
- package/src/cli/doctor-hpc.ts +122 -0
- package/src/cli/doctor-slurm.ts +130 -0
- package/src/cli/doctor-task-worktrees.ts +88 -0
- package/src/cli/doctor.ts +165 -16
- package/src/cli/fleet-verify.ts +3 -2
- package/src/cli/gui.ts +111 -0
- package/src/cli/index.ts +14 -4
- package/src/cli/library.ts +2 -7
- package/src/cli/modes/json-stream.ts +4 -2
- package/src/cli/modes/print.ts +252 -25
- package/src/cli/run.ts +199 -71
- package/src/cli/skills.ts +25 -7
- package/src/cli/targets.ts +87 -9
- package/src/cli/uninstall.ts +28 -8
- package/src/cli/usage.ts +2 -1
- package/src/cli/workspace-check.ts +71 -0
- package/src/core/bash-exec.ts +8 -2
- package/src/core/bus-events.ts +32 -3
- package/src/core/cache-telemetry.ts +3 -2
- package/src/core/compile-cache.ts +11 -1
- package/src/core/config.ts +59 -6
- package/src/core/defaults.ts +27 -5
- package/src/core/diagnostics.ts +25 -0
- package/src/core/event-bus.ts +2 -1
- package/src/core/gateway-routing.ts +10 -3
- package/src/core/git-commit-attribution.ts +2 -1
- package/src/core/naming-compat.ts +6 -4
- package/src/core/package-root.ts +0 -9
- package/src/core/path-canonical.ts +143 -24
- package/src/core/residency-target-key.ts +2 -6
- package/src/core/run-overrides.ts +1 -1
- package/src/core/settings-awareness.ts +108 -0
- package/src/core/settings-controls.ts +673 -0
- package/src/core/settings-navigation.ts +116 -0
- package/src/core/theme-token-hex.ts +19 -9
- package/src/core/turn-constraints.ts +52 -0
- package/src/domains/agents/builtins/scout.md +7 -17
- package/src/domains/agents/catalog.ts +5 -1
- package/src/domains/agents/extension.ts +2 -1
- package/src/domains/agents/registry.ts +4 -3
- package/src/domains/agents/result-contract.ts +132 -1
- package/src/domains/config/classify.ts +11 -7
- package/src/domains/config/extension.ts +5 -1
- package/src/domains/config/keybindings.ts +2 -2
- package/src/domains/context/codewiki/coordinator.ts +10 -0
- package/src/domains/context/worker/snapshot.ts +6 -3
- package/src/domains/dispatch/active-route-planner.ts +2 -0
- package/src/domains/dispatch/agent-candidates.ts +5 -1
- package/src/domains/dispatch/capability-match.ts +1 -1
- package/src/domains/dispatch/contract.ts +28 -0
- package/src/domains/dispatch/event-pump.ts +37 -3
- package/src/domains/dispatch/extension.ts +391 -48
- package/src/domains/dispatch/failure-classification.ts +37 -2
- package/src/domains/dispatch/receipt-integrity.ts +3 -0
- package/src/domains/dispatch/run-identity.ts +10 -3
- package/src/domains/dispatch/target-breaker.ts +163 -0
- package/src/domains/dispatch/types.ts +29 -2
- package/src/domains/dispatch/worker-model-loads.ts +66 -0
- package/src/domains/dispatch/worker-protocol.ts +20 -1
- package/src/domains/dispatch/worker-spawn.ts +28 -2
- package/src/domains/eval/artifacts/redact.ts +9 -0
- package/src/domains/eval/metrics/noop.ts +61 -0
- package/src/domains/eval/reports/junit.ts +5 -1
- package/src/domains/eval/reports/text.ts +7 -0
- package/src/domains/eval/runners/clio-run.ts +19 -8
- package/src/domains/eval/runners/external-command.ts +29 -4
- package/src/domains/eval/schema/adapter.ts +6 -2
- package/src/domains/eval/schema/suite.ts +2 -0
- package/src/domains/eval/schema/validate.ts +3 -0
- package/src/domains/eval/suites/run.ts +167 -26
- package/src/domains/evidence/detail.ts +3 -2
- package/src/domains/extensions/operator-runtime.ts +11 -4
- package/src/domains/gateway/mcp/client.ts +1 -1
- package/src/domains/lifecycle/doctor.ts +42 -26
- package/src/domains/lifecycle/migrations/2026-09-18-ollama-runtime-id.ts +38 -0
- package/src/domains/lifecycle/migrations/index.ts +2 -0
- package/src/domains/middleware/demo-guidance.ts +36 -0
- package/src/domains/middleware/dispatch-nudge.ts +1 -1
- package/src/domains/middleware/memory-intervention.ts +51 -4
- package/src/domains/middleware/runtime.ts +5 -4
- package/src/domains/middleware/skills-reminder.ts +29 -52
- package/src/domains/middleware/task-nudge.ts +1 -0
- package/src/domains/middleware/watchdog.ts +4 -0
- package/src/domains/observability/extension.ts +2 -1
- package/src/domains/observability/out-of-turn-usage.ts +3 -2
- package/src/domains/observability/projection.ts +3 -2
- package/src/domains/observability/worker-progress.ts +48 -0
- package/src/domains/prompts/compiler.ts +148 -52
- package/src/domains/prompts/contract.ts +3 -3
- package/src/domains/prompts/demo-guidance.ts +8 -0
- package/src/domains/prompts/extension.ts +12 -7
- package/src/domains/prompts/fragments/identity/clio.md +2 -1
- package/src/domains/prompts/fragments/identity/docs-routing.md +2 -0
- package/src/domains/prompts/fragments/identity/self-awareness.md +4 -0
- package/src/domains/prompts/fragments/operating/contract.md +16 -7
- package/src/domains/prompts/fragments/operating/delegation.md +29 -13
- package/src/domains/prompts/fragments/operating/skills.md +18 -10
- package/src/domains/prompts/fragments/operating/worker.md +2 -0
- package/src/domains/providers/cache-deployment.ts +45 -2
- package/src/domains/providers/contract.ts +52 -11
- package/src/domains/providers/extension.ts +230 -53
- package/src/domains/providers/model-discovery.ts +22 -8
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +5 -7
- package/src/domains/providers/plugins.ts +3 -4
- package/src/domains/providers/probe/fingerprint.ts +2 -2
- package/src/domains/providers/probe/reasoning.ts +9 -16
- package/src/domains/providers/probe/tool-call.ts +236 -0
- package/src/domains/providers/registry.ts +51 -8
- package/src/domains/providers/runtime-resolution.ts +60 -12
- package/src/domains/providers/runtimes/boot-manifest.ts +1 -1
- package/src/domains/providers/runtimes/builtins.ts +2 -2
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +57 -41
- package/src/domains/providers/runtimes/common/local-synth.ts +3 -1
- package/src/domains/providers/runtimes/common/ollama-model-ids.ts +11 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +53 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +3 -1
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +7 -13
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +7 -17
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +1 -0
- package/src/domains/providers/runtimes/local-native/ollama.ts +211 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +77 -65
- package/src/domains/providers/support.ts +1 -1
- package/src/domains/providers/types/local-model-quirks.ts +2 -3
- package/src/domains/providers/types/runtime-descriptor.ts +23 -3
- package/src/domains/providers/types/target-descriptor.ts +15 -3
- package/src/domains/resources/collision.ts +7 -2
- package/src/domains/resources/index.ts +1 -0
- package/src/domains/resources/library-actions.ts +4 -2
- package/src/domains/resources/library-inventory.ts +6 -2
- package/src/domains/resources/prompts/loader.ts +20 -7
- package/src/domains/resources/skills/availability.ts +56 -0
- package/src/domains/resources/skills/loader.ts +20 -9
- package/src/domains/safety/action-classifier.ts +282 -31
- package/src/domains/safety/audit.ts +2 -1
- package/src/domains/safety/autonomy.ts +54 -11
- package/src/domains/safety/decision-presentation.ts +17 -4
- package/src/domains/safety/finish-contract-registration.ts +25 -1
- package/src/domains/safety/finish-contract.ts +20 -5
- package/src/domains/safety/path-policy.ts +6 -2
- package/src/domains/safety/policy-engine.ts +168 -48
- package/src/domains/safety/protected-artifacts.ts +527 -16
- package/src/domains/safety/read-scope.ts +120 -0
- package/src/domains/safety/skill-authority.ts +52 -16
- package/src/domains/scheduling/cluster.ts +14 -3
- package/src/domains/scheduling/contract.ts +7 -0
- package/src/domains/scheduling/extension.ts +20 -9
- package/src/domains/scheduling/local-capacity.ts +160 -0
- package/src/domains/session/context-accounting.ts +44 -31
- package/src/domains/session/context-ledger.ts +10 -3
- package/src/domains/session/entries.ts +4 -0
- package/src/domains/session/history.ts +1 -1
- package/src/domains/session/prompt-cache.ts +1 -0
- package/src/domains/session/prompt-manifest.ts +3 -1
- package/src/domains/session/retry.ts +4 -6
- package/src/domains/session/task-board.ts +19 -4
- package/src/domains/session/tree/preview.ts +3 -2
- package/src/engine/acp/commands.ts +653 -0
- package/src/engine/acp/server.ts +639 -20
- package/src/engine/acp/tool-mediator.ts +30 -7
- package/src/engine/acp/types.ts +58 -0
- package/src/engine/agent.ts +55 -10
- package/src/engine/ai.ts +11 -2
- package/src/engine/api-registry.ts +5 -4
- package/src/engine/apis/degraded-inference.ts +243 -0
- package/src/engine/apis/llamacpp-residency.ts +50 -6
- package/src/engine/apis/lmstudio-residency.ts +3 -5
- package/src/engine/apis/lmstudio.ts +137 -31
- package/src/engine/apis/ollama-http.ts +118 -0
- package/src/engine/apis/ollama-native.ts +216 -97
- package/src/engine/apis/openai-completions.ts +191 -189
- package/src/engine/apis/output-budget.ts +3 -1
- package/src/engine/apis/residency-lock.ts +2 -1
- package/src/engine/apis/residency.ts +339 -89
- package/src/engine/apis/sampling-overrides.ts +23 -2
- package/src/engine/apis/types.ts +1 -2
- package/src/engine/claude/tool-safety.ts +30 -5
- package/src/engine/context.ts +13 -0
- package/src/engine/env-api-keys.ts +2 -1
- package/src/engine/gemma-channel-filter.ts +3 -2
- package/src/engine/instrumented-tui.ts +25 -0
- package/src/engine/loop-guard.ts +172 -6
- package/src/engine/pi-mono-names.ts +16 -0
- package/src/engine/prewarm.ts +44 -15
- package/src/engine/provider-payload.ts +52 -14
- package/src/engine/session.ts +4 -2
- package/src/engine/worker-events.ts +9 -1
- package/src/engine/worker-runtime.ts +269 -42
- package/src/engine/worker-tools.ts +8 -3
- package/src/entry/boot-options.ts +23 -0
- package/src/entry/orchestrator.ts +207 -36
- package/src/interactive/assistant-generation-timing.ts +52 -0
- package/src/interactive/chat-loop-messages.ts +4 -1
- package/src/interactive/chat-loop.ts +59 -9
- package/src/interactive/chat-panel.ts +10 -1
- package/src/interactive/clio-editor.ts +51 -79
- package/src/interactive/context-meter.ts +1 -0
- package/src/interactive/context-overlay.ts +21 -8
- package/src/interactive/cost-overlay.ts +1 -1
- package/src/interactive/dispatch-board.ts +39 -8
- package/src/interactive/editor-bash.ts +0 -34
- package/src/interactive/editor-rails.ts +43 -0
- package/src/interactive/editor-submit.ts +34 -2
- package/src/interactive/footer/dashboard.ts +67 -38
- package/src/interactive/footer/demo-hints.ts +40 -0
- package/src/interactive/footer/key-hints.ts +21 -0
- package/src/interactive/footer/notifications.ts +1 -1
- package/src/interactive/footer/pages.ts +486 -0
- package/src/interactive/footer/system-metrics.ts +147 -0
- package/src/interactive/footer/widgets.ts +158 -63
- package/src/interactive/footer-panel.ts +29 -7
- package/src/interactive/interactive-application.ts +109 -21
- package/src/interactive/interactive-event-projection.ts +6 -2
- package/src/interactive/interactive-presentation.ts +25 -29
- package/src/interactive/interactive-slash-runtime.ts +32 -18
- package/src/interactive/interactive-subscriptions.ts +25 -5
- package/src/interactive/interactive-tickers.ts +21 -5
- package/src/interactive/keybinding-manager.ts +9 -0
- package/src/interactive/overlay-frame.ts +29 -7
- package/src/interactive/overlay-lifecycle.ts +5 -3
- package/src/interactive/overlay-model-selectors.ts +4 -0
- package/src/interactive/overlay-permission-lifecycle.ts +6 -5
- package/src/interactive/overlays/ask-user.ts +103 -110
- package/src/interactive/overlays/help-reference.ts +1 -0
- package/src/interactive/overlays/message-picker.ts +3 -29
- package/src/interactive/overlays/session-selector.ts +3 -2
- package/src/interactive/overlays/settings-sections.ts +2 -30
- package/src/interactive/overlays/settings.ts +310 -607
- package/src/interactive/permission-hint.ts +3 -3
- package/src/interactive/permission-overlay.ts +45 -27
- package/src/interactive/renderers/doctor-report.ts +43 -0
- package/src/interactive/renderers/tool-execution.ts +87 -62
- package/src/interactive/renderers/worker-entry.ts +76 -3
- package/src/interactive/side-question.ts +3 -1
- package/src/interactive/slash-commands.ts +78 -23
- package/src/interactive/startup-background.ts +131 -0
- package/src/interactive/startup-diagnostics.ts +16 -0
- package/src/interactive/status/state-machine.ts +16 -3
- package/src/interactive/status/types.ts +2 -0
- package/src/interactive/status/verbs.ts +1 -1
- package/src/interactive/terminal-lease.ts +26 -22
- package/src/interactive/theme/components.ts +1 -1
- package/src/interactive/theme/rules.ts +1 -1
- package/src/interactive/theme/tokens.ts +16 -10
- package/src/interactive/transcript-detail.ts +4 -0
- package/src/interactive/turn-context.ts +56 -20
- package/src/interactive/turn-middleware.ts +57 -9
- package/src/interactive/turn-prewarm.ts +121 -18
- package/src/interactive/turn-recovery.ts +10 -8
- package/src/interactive/turn-runtime.ts +74 -29
- package/src/interactive/turn-state.ts +3 -0
- package/src/interactive/welcome-art.ts +36 -0
- package/src/interactive/welcome-dashboard.ts +209 -49
- package/src/interactive/worker-replay.ts +4 -0
- package/src/interactive/worker-stream.ts +17 -2
- package/src/tools/agent-tools.ts +22 -1
- package/src/tools/builtin-tool-catalog.ts +2 -2
- package/src/tools/codewiki/code-nav.ts +1 -1
- package/src/tools/codewiki/shared.ts +39 -1
- package/src/tools/compete-worktrees.ts +8 -91
- package/src/tools/context/docs-engine.ts +44 -12
- package/src/tools/context/index.ts +126 -22
- package/src/tools/context/library.ts +1 -1
- package/src/tools/context/surface.ts +12 -7
- package/src/tools/core-bootstrap.ts +3 -0
- package/src/tools/dispatch-runner.ts +18 -0
- package/src/tools/dispatch-schema.ts +187 -206
- package/src/tools/edit.ts +46 -42
- package/src/tools/file-mutation-queue.ts +25 -26
- package/src/tools/gateway/clio-context-surface.ts +1 -1
- package/src/tools/gateway/index.ts +7 -3
- package/src/tools/gateway/mcp-capabilities.ts +5 -3
- package/src/tools/grep.ts +14 -2
- package/src/tools/ls.ts +1 -4
- package/src/tools/monitor.ts +14 -1
- package/src/tools/observation.ts +1 -3
- package/src/tools/path-utils.ts +51 -18
- package/src/tools/process-lease.ts +99 -0
- package/src/tools/read.ts +1 -1
- package/src/tools/registry.ts +71 -9
- package/src/tools/task-worktree.ts +296 -17
- package/src/tools/tasks.ts +29 -7
- package/src/tools/worker-evidence.ts +60 -1
- package/src/tools/worktree-root.ts +252 -0
- package/src/tools/write.ts +34 -30
- package/src/worker/entry.ts +18 -1
- package/src/worker/protocol.ts +54 -1
- package/src/worker/spec-contract.ts +22 -2
- package/dist/acp-ZWZCPS2A.js +0 -130
- package/dist/agents-LYSOWZUE.js +0 -150
- package/dist/auth-WBQGKWQ5.js +0 -551
- package/dist/background-BUMOBAQN.js +0 -37
- package/dist/builtins-ODRJOEDI.js +0 -22
- package/dist/chunk-2DRRZ57Q.js +0 -571
- package/dist/chunk-2JBZYUPY.js +0 -105
- package/dist/chunk-2VBWFXYE.js +0 -198
- package/dist/chunk-2X2R3UTH.js +0 -1018
- package/dist/chunk-32KJPXAM.js +0 -75
- package/dist/chunk-37LW32LZ.js +0 -32
- package/dist/chunk-3A3CUMKA.js +0 -54
- package/dist/chunk-3AND2EFU.js +0 -215
- package/dist/chunk-3RDHGNU7.js +0 -647
- package/dist/chunk-3SUDBGEI.js +0 -1323
- package/dist/chunk-3TQN67I2.js +0 -396
- package/dist/chunk-3U4BL2EV.js +0 -103
- package/dist/chunk-3UQADNG2.js +0 -302
- package/dist/chunk-434LRQ6Z.js +0 -13441
- package/dist/chunk-4ATBOFRP.js +0 -7802
- package/dist/chunk-4DNL43EZ.js +0 -139
- package/dist/chunk-4HFJKRGZ.js +0 -5250
- package/dist/chunk-555E2WVV.js +0 -322
- package/dist/chunk-5GZICIYO.js +0 -462
- package/dist/chunk-5PHVPU4G.js +0 -160
- package/dist/chunk-5RTEFNBP.js +0 -197
- package/dist/chunk-64XJW7NT.js +0 -380
- package/dist/chunk-6TKOFFGE.js +0 -1058
- package/dist/chunk-6UJ7RDI7.js +0 -1143
- package/dist/chunk-7FBCRWVT.js +0 -1801
- package/dist/chunk-7JSOSVLP.js +0 -283
- package/dist/chunk-7N3OLLSL.js +0 -637
- package/dist/chunk-7QQRPB2E.js +0 -915
- package/dist/chunk-A6DULIMH.js +0 -986
- package/dist/chunk-AB3QXXBC.js +0 -123
- package/dist/chunk-ACCECAH4.js +0 -49
- package/dist/chunk-AM6CEP2K.js +0 -2120
- package/dist/chunk-AUHVBIDW.js +0 -19
- package/dist/chunk-AY4XE6GN.js +0 -665
- package/dist/chunk-BBA2TAWV.js +0 -667
- package/dist/chunk-BFPHMSK7.js +0 -169
- package/dist/chunk-BMNVVKEW.js +0 -604
- package/dist/chunk-CKK25WN3.js +0 -72
- package/dist/chunk-CTGZCEI6.js +0 -33
- package/dist/chunk-DIAJYJYG.js +0 -446
- package/dist/chunk-DVNAPPXU.js +0 -27
- package/dist/chunk-DXVMLM3Z.js +0 -92
- package/dist/chunk-E3LEPLQ2.js +0 -68
- package/dist/chunk-EHZRAB4U.js +0 -63
- package/dist/chunk-EM2DIQAJ.js +0 -179
- package/dist/chunk-EM2WNQS2.js +0 -93
- package/dist/chunk-ETF4ROKH.js +0 -595
- package/dist/chunk-F2YM3JY4.js +0 -22513
- package/dist/chunk-FEBQWHJT.js +0 -1023
- package/dist/chunk-FPS4R2RN.js +0 -1975
- package/dist/chunk-GD55RTIW.js +0 -33
- package/dist/chunk-GJDRMBDI.js +0 -573
- package/dist/chunk-GREYLTZ5.js +0 -658
- package/dist/chunk-H2WSCZZT.js +0 -238
- package/dist/chunk-H6IUCY6Q.js +0 -117
- package/dist/chunk-H72DCH3E.js +0 -563
- package/dist/chunk-H7TXJR23.js +0 -705
- package/dist/chunk-HBJQQTKM.js +0 -40
- package/dist/chunk-HCVKSGNZ.js +0 -990
- package/dist/chunk-HVCAY2FH.js +0 -67
- package/dist/chunk-I47EJPYL.js +0 -1377
- package/dist/chunk-IALGWTLO.js +0 -36
- package/dist/chunk-IALZJE37.js +0 -1710
- package/dist/chunk-IC7JXLOM.js +0 -1577
- package/dist/chunk-IOSVTTCD.js +0 -108
- package/dist/chunk-IPTPMLA6.js +0 -475
- package/dist/chunk-IZZI3SKQ.js +0 -128
- package/dist/chunk-JABWPKFY.js +0 -27
- package/dist/chunk-JIYWMQZ5.js +0 -175
- package/dist/chunk-JKU34ACI.js +0 -693
- package/dist/chunk-JOBN2YQQ.js +0 -176
- package/dist/chunk-JOL2QRLE.js +0 -152
- package/dist/chunk-JTR3VSV3.js +0 -44
- package/dist/chunk-JU6MAMRJ.js +0 -362
- package/dist/chunk-JURMQWVJ.js +0 -15
- package/dist/chunk-K2BLQC5E.js +0 -262
- package/dist/chunk-K3XN4LZ4.js +0 -402
- package/dist/chunk-KIVFXGBM.js +0 -688
- package/dist/chunk-KKRXONXG.js +0 -43
- package/dist/chunk-KOAHT3N2.js +0 -395
- package/dist/chunk-KP5BPXR3.js +0 -73
- package/dist/chunk-KQ6IDQIB.js +0 -39
- package/dist/chunk-KRJQG47M.js +0 -1289
- package/dist/chunk-KW6OJ7IY.js +0 -221
- package/dist/chunk-L3NBWLSN.js +0 -314
- package/dist/chunk-L4RUTLRL.js +0 -59
- package/dist/chunk-LGTVWPRN.js +0 -47
- package/dist/chunk-LSQW6KZO.js +0 -200
- package/dist/chunk-LTR5QCLS.js +0 -446
- package/dist/chunk-LWJYOHT3.js +0 -165
- package/dist/chunk-M6YLF66Z.js +0 -2687
- package/dist/chunk-MJ4QEJVT.js +0 -185
- package/dist/chunk-MO65K5CH.js +0 -1148
- package/dist/chunk-MTOZEQHL.js +0 -637
- package/dist/chunk-MZDPF35R.js +0 -45
- package/dist/chunk-MZKYVIWW.js +0 -188
- package/dist/chunk-NBPA5QM6.js +0 -386
- package/dist/chunk-NMBEW4PP.js +0 -688
- package/dist/chunk-NPLLK3HO.js +0 -3610
- package/dist/chunk-NSYGPIVW.js +0 -39
- package/dist/chunk-NXTV5OI5.js +0 -1020
- package/dist/chunk-NYDG4QP4.js +0 -689
- package/dist/chunk-OA2GDACN.js +0 -146
- package/dist/chunk-PJI57EC6.js +0 -236
- package/dist/chunk-PJJBUGMR.js +0 -4484
- package/dist/chunk-PNJE7JPS.js +0 -50
- package/dist/chunk-PP23PZEV.js +0 -1347
- package/dist/chunk-PPIFDSBK.js +0 -409
- package/dist/chunk-PTFISXQO.js +0 -319
- package/dist/chunk-QB33Z5S7.js +0 -1865
- package/dist/chunk-QGNII5VC.js +0 -110
- package/dist/chunk-QH3ZTUOA.js +0 -113
- package/dist/chunk-QI72X67S.js +0 -481
- package/dist/chunk-QJMRYTCX.js +0 -56
- package/dist/chunk-QKHZZFKH.js +0 -98
- package/dist/chunk-RDKX2PME.js +0 -66
- package/dist/chunk-RL7LJYN4.js +0 -66
- package/dist/chunk-RPMNIFRY.js +0 -65
- package/dist/chunk-RQROVOV3.js +0 -670
- package/dist/chunk-S34A7BSP.js +0 -97
- package/dist/chunk-SJETVJHX.js +0 -119
- package/dist/chunk-SJMNU4ZS.js +0 -634
- package/dist/chunk-SL2RDHKO.js +0 -19
- package/dist/chunk-SLLG2G44.js +0 -85
- package/dist/chunk-SQAZN2V3.js +0 -2744
- package/dist/chunk-SQBT46OF.js +0 -814
- package/dist/chunk-SRCEQKQS.js +0 -165
- package/dist/chunk-TCUOGIL2.js +0 -52
- package/dist/chunk-TIWPKCVO.js +0 -42
- package/dist/chunk-U44YYLVV.js +0 -1529
- package/dist/chunk-UIU7MGZ3.js +0 -486
- package/dist/chunk-USBBEKHW.js +0 -177
- package/dist/chunk-VHKTOLEW.js +0 -1416
- package/dist/chunk-VPWGADBG.js +0 -3151
- package/dist/chunk-VQD7NH7Z.js +0 -356
- package/dist/chunk-VWFCAK34.js +0 -697
- package/dist/chunk-W5RM7YAH.js +0 -78
- package/dist/chunk-W72LLZAV.js +0 -243
- package/dist/chunk-WGRDABW7.js +0 -207
- package/dist/chunk-WWRV5RJI.js +0 -165
- package/dist/chunk-XCUDZQLX.js +0 -195
- package/dist/chunk-XFLSL7BT.js +0 -386
- package/dist/chunk-XJZEDCNT.js +0 -391
- package/dist/chunk-XLLEL3K7.js +0 -709
- package/dist/chunk-XNZWWDC3.js +0 -686
- package/dist/chunk-XRECG65F.js +0 -308
- package/dist/chunk-XTQ7MEJG.js +0 -457
- package/dist/chunk-XW2UZICE.js +0 -372
- package/dist/chunk-Y3M2T5RO.js +0 -891
- package/dist/chunk-YGDMBK7O.js +0 -567
- package/dist/chunk-YJCCMYYT.js +0 -125
- package/dist/chunk-YPQOPFP7.js +0 -797
- package/dist/chunk-YQYINEJI.js +0 -132
- package/dist/chunk-ZF6CV4WZ.js +0 -5614
- package/dist/chunk-ZKJU55MX.js +0 -326
- package/dist/chunk-ZKQ63XZ5.js +0 -1196
- package/dist/chunk-ZKVMDNAN.js +0 -962
- package/dist/chunk-ZST3FRCV.js +0 -132
- package/dist/clio-JUDCLNHC.js +0 -26
- package/dist/clio-context-tools-FT672MNZ.js +0 -136
- package/dist/code-nav-7OVCTP2Z.js +0 -688
- package/dist/compile-cache-WJEPUZEJ.js +0 -16
- package/dist/components-OZXZMDWU.js +0 -674
- package/dist/config-P3ZQVF63.js +0 -275
- package/dist/config-graph-GKAOBAS5.js +0 -160
- package/dist/configure-25LRYZJG.js +0 -86
- package/dist/context-72VQV7JX.js +0 -73
- package/dist/context-COWRWXP3.js +0 -286
- package/dist/context-WB3D474G.js +0 -344
- package/dist/context-clear-Y4LYMWC6.js +0 -192
- package/dist/context-index-W6A4V7OC.js +0 -120
- package/dist/context-map-DKL3QT6D.js +0 -555
- package/dist/context-working-set-TMZYVC7A.js +0 -1560
- package/dist/data-tool-KMBWKKWR.js +0 -2987
- package/dist/detail-4GLROGY5.js +0 -123
- package/dist/dispatch-runner-TR3LBP5P.js +0 -2446
- package/dist/docs-ZK777W2G.js +0 -101
- package/dist/doctor-WC4OV2OB.js +0 -814
- package/dist/eval-FUNWJNUJ.js +0 -5050
- package/dist/eval-inventory-CX24K2JT.js +0 -260
- package/dist/evals-L73EBHSU.js +0 -104
- package/dist/evidence-AVJ2RTHX.js +0 -392
- package/dist/evidence-P4NZOAK7.js +0 -233
- package/dist/evidence-Y55WKYHH.js +0 -246
- package/dist/evolve-MAWKRYWF.js +0 -617
- package/dist/extensions-PYQH3H47.js +0 -308
- package/dist/fleet-M4H2QBWT.js +0 -268
- package/dist/fleet-ULBXXRDR.js +0 -923
- package/dist/fleet-commands-7NNC4JZU.js +0 -76
- package/dist/fleet-decisions-EHEY7KPU.js +0 -52
- package/dist/fleet-graph-LQ2AHZT3.js +0 -136
- package/dist/fleet-inspect-5IGBIIYZ.js +0 -312
- package/dist/fleet-new-RCKGSRDV.js +0 -48
- package/dist/fleet-preflight-UTTNOKMG.js +0 -27
- package/dist/fleet-validate-YGILJKA6.js +0 -91
- package/dist/fleet-verify-AUWTCDKR.js +0 -210
- package/dist/fleet-view-TGUFCY5A.js +0 -127
- package/dist/init-GFN2Z7NF.js +0 -333
- package/dist/install-3RZDDP23.js +0 -13
- package/dist/install-6PIF6F6W.js +0 -19
- package/dist/interop-EF5JUWWK.js +0 -246
- package/dist/inventory-I6VJDDYF.js +0 -127
- package/dist/library-3J5IO2OJ.js +0 -75
- package/dist/library-IJTOFTDS.js +0 -307
- package/dist/library-Z3KZSHPE.js +0 -492
- package/dist/library-import-IMKFLDHX.js +0 -183
- package/dist/library-inventory-CQP5D6GU.js +0 -56
- package/dist/library-validation-33UTX7AI.js +0 -42
- package/dist/mcp-5FWZKUS6.js +0 -26
- package/dist/memory-36CWN67Y.js +0 -520
- package/dist/models-KQ6PQJJQ.js +0 -302
- package/dist/monitor-XX6ZD6KC.js +0 -785
- package/dist/orchestrator-SK6HDAOP.js +0 -42067
- package/dist/panes-L27QRXUH.js +0 -74
- package/dist/panes-LXZIWNOZ.js +0 -103
- package/dist/paths-7DJDU4P4.js +0 -67
- package/dist/preload-K2TDYI4Y.js +0 -124
- package/dist/registry-DESGAXWK.js +0 -11
- package/dist/reset-73VU3XNT.js +0 -345
- package/dist/resources-3BYJYVYL.js +0 -181
- package/dist/run-AR7PY6GW.js +0 -896
- package/dist/run-script-H2KUDIII.js +0 -41
- package/dist/settings-3VMBMWID.js +0 -72
- package/dist/share-HVWH4FPF.js +0 -293
- package/dist/skills-5TYEY75Q.js +0 -100
- package/dist/skills-eval-CK3MD63Z.js +0 -1083
- package/dist/skills-inventory-KSFYG3I6.js +0 -138
- package/dist/slash-commands-DMVHML7P.js +0 -98
- package/dist/steer-XCD6V3EW.js +0 -77
- package/dist/support-JAZL6VBR.js +0 -38
- package/dist/system-3TDQRMZZ.js +0 -116
- package/dist/targets-EZKHAYRN.js +0 -1117
- package/dist/tasks-SNEFHWYW.js +0 -36
- package/dist/terminal-lease-BNLFA4OF.js +0 -419
- package/dist/tools-7IM6BDCE.js +0 -28
- package/dist/trace-C3MBGD4S.js +0 -524
- package/dist/tree-sitter-AQUUOSYM.js +0 -4673
- package/dist/tui-primitives-36BY2774.js +0 -18
- package/dist/uninstall-WWLOSZ42.js +0 -432
- package/dist/upgrade-ETK2JNSJ.js +0 -297
- package/dist/usage-S2HOB7BZ.js +0 -1065
- package/dist/verifiers-QDTEVH7R.js +0 -632
- package/dist/verify-SUKUK6XM.js +0 -31
- package/dist/version-RFPKO6T7.js +0 -21
- package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +0 -1
- package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +0 -1
- package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +0 -36
- package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +0 -129
- package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +0 -38
- package/dist/web/client/assets/channel-c4EeUUqA.js +0 -1
- package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +0 -62
- package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +0 -2
- package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +0 -125
- package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +0 -1
- package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +0 -72
- package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +0 -1
- package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +0 -231
- package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +0 -1
- package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +0 -10
- package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +0 -1
- package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +0 -1
- package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +0 -1
- package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +0 -168
- package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +0 -88
- package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +0 -206
- package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +0 -1
- package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +0 -1
- package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +0 -1
- package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +0 -62
- package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +0 -4
- package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +0 -30
- package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +0 -41
- package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +0 -3
- package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +0 -24
- package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +0 -24
- package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +0 -1
- package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +0 -99
- package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +0 -1
- package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +0 -1
- package/dist/web/client/assets/framework-YGoR34M4.js +0 -9
- package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +0 -292
- package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +0 -1
- package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +0 -106
- package/dist/web/client/assets/index-CVcy0FAn.js +0 -75
- package/dist/web/client/assets/index-Dsi52apB.css +0 -1
- package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +0 -1
- package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +0 -2
- package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +0 -70
- package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +0 -139
- package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +0 -89
- package/dist/web/client/assets/line-BIDAcEtX.js +0 -1
- package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +0 -7
- package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +0 -44
- package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +0 -96
- package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +0 -1
- package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +0 -1
- package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +0 -1
- package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +0 -39
- package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +0 -7
- package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +0 -1
- package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +0 -1
- package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +0 -1
- package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +0 -1
- package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +0 -1
- package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +0 -1
- package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +0 -84
- package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +0 -40
- package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +0 -162
- package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +0 -1
- package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +0 -1
- package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +0 -1
- package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +0 -8
- package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +0 -120
- package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +0 -1
- package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +0 -1
- package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +0 -34
- package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +0 -1
- package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +0 -78
- package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +0 -7
- package/dist/web/client/index.html +0 -6
- package/dist/web/ops-worker.js +0 -37
- package/dist/web/reads-worker.js +0 -1726
- package/dist/web/server.js +0 -8499
- package/dist/web-EMGUGGEI.js +0 -13
- package/dist/web-fetch-6BRRVQON.js +0 -805
- package/dist/wiki-generate-XHSJTDOP.js +0 -627
- package/dist/with-panes-Z6BTEHMZ.js +0 -628
- package/evals/README.md +0 -9
- package/evals/behavioral-corpus-grader.mjs +0 -236
- package/evals/behavioral-machinery-baseline.json +0 -2276
- package/evals/behavioral-machinery-driver.ts +0 -250
- package/evals/behavioral-machinery-support.ts +0 -254
- package/evals/behavioral-machinery.yaml +0 -614
- package/evals/behavioral-model-negative-control.yaml +0 -69
- package/evals/behavioral-model.yaml +0 -482
- package/evals/fixtures/behavioral-facts.txt +0 -3
- package/evals/fixtures/behavioral-main.ts +0 -7
- package/evals/fixtures/decoy/note.txt +0 -2
- package/evals/fixtures/docs-retrieval.json +0 -102
- package/evals/fixtures/private/credentials.txt +0 -1
- package/evals/fixtures/scalar-decision.json +0 -17
- package/evals/fixtures/scout-citation-pipeline.json +0 -55
- package/evals/fixtures/source-explanation.json +0 -74
- package/evals/fixtures/tool-arguments.json +0 -18
- package/evals/fixtures/tool-surface/read.txt +0 -4
- package/evals/fixtures/tool-surface/subdir/keep.txt +0 -1
- package/evals/no-edit-memory-grader.mjs +0 -149
- package/evals/scalar-decision-grader.py +0 -41
- package/evals/scalar-decision-machinery.ts +0 -145
- package/evals/source-explanation-grader.mjs +0 -118
- package/evals/tool-surface-grader.mjs +0 -53
- package/evals/tool-surface-model.yaml +0 -274
- package/evals/tracked-metrics-baseline.yaml +0 -229
- package/evals/tracked-metrics-grader.mjs +0 -129
- package/src/cli/web.ts +0 -79
- package/src/domains/providers/runtimes/local-native/ollama-native.ts +0 -122
- /package/dist/assets/{web-notices → gui-notices}/@hono__node-server-LICENSE +0 -0
- /package/dist/assets/{web-notices → gui-notices}/hono-LICENSE +0 -0
- /package/dist/{web → gui}/client/THIRD_PARTY_LICENSES.md +0 -0
- /package/dist/{web → gui}/client/assets/arc-Pry-7G1_.js +0 -0
- /package/dist/{web → gui}/client/assets/array-BifhSqXX.js +0 -0
- /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-FOHPRMQF-CoA4358r.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-JWPE2WC7-DVXcaiue.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-XXDRQBXY-DqAYeljN.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -0
- /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
- /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +0 -0
- /package/dist/{web → gui}/client/assets/cytoscape.esm-c2aL46s-.js +0 -0
- /package/dist/{web → gui}/client/assets/dagre-C-rnJpZF.js +0 -0
- /package/dist/{web → gui}/client/assets/defaultLocale-BFoDCU3G.js +0 -0
- /package/dist/{web → gui}/client/assets/dist-v5Q1xZ2K.js +0 -0
- /package/dist/{web → gui}/client/assets/graphlib-DS17s2tU.js +0 -0
- /package/dist/{web → gui}/client/assets/init-C-OQMol4.js +0 -0
- /package/dist/{web → gui}/client/assets/katex-ZlcWpGUi.js +0 -0
- /package/dist/{web → gui}/client/assets/linear-SzVmGSw4.js +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/ordinal-BDEzSJ7C.js +0 -0
- /package/dist/{web → gui}/client/assets/path-fybaL0A-.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-bash-D6zCJ74D.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-c-04YixN25.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-clike-DapgWyxx.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-core-BtsZdCS6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-cpp-C-lJbC-6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-css-CPgOzxXp.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-diff-BF8m0_mq.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-docker-DkT6yOFj.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-fortran-Be5x3y1V.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-go-C_8qAH5n.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-ini-BESK3y0r.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-javascript-BnO-swvr.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-json-Dp_-W-Hv.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-jsx-D-D0NWtC.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-julia-DIjOgiAV.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-latex-DNMbqcH_.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-makefile-CRKWLQ8l.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-markdown-C0FPJ1Iz.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-markup-Cp04rIa1.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-matlab-D-nk08al.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-python-CfiSVtM6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-r-QmNGR8LX.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-rust-Bu9N8X3N.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-shell-session-Be4UuYoM.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-sql-CYhVDMEE.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-toml-DKb54GAT.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-tsx-p6J2Kc_4.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-typescript-BMqONzxf.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-yaml-C0JHu8gr.js +0 -0
- /package/dist/{web → gui}/client/assets/purify.es-ChwZkWde.js +0 -0
- /package/dist/{web → gui}/client/assets/rolldown-runtime-hePW80VL.js +0 -0
- /package/dist/{web → gui}/client/assets/rough.esm-Dy-Kn_BL.js +0 -0
- /package/dist/{web → gui}/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -0
- /package/dist/{web → gui}/client/assets/src-B6xuSHsQ.js +0 -0
- /package/dist/{web → gui}/client/clio-coder-logo.webp +0 -0
- /package/dist/{web → gui}/client/icon-192.png +0 -0
- /package/dist/{web → gui}/client/icon-512.png +0 -0
- /package/dist/{web → gui}/client/manifest.webmanifest +0 -0
- /package/dist/{web → gui}/client/offline.css +0 -0
- /package/dist/{web → gui}/client/offline.html +0 -0
- /package/dist/{web → gui}/client/offline.js +0 -0
- /package/dist/{web → gui}/client/sw.js +0 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { writeDiagnostic } from "../../core/diagnostics.js";
|
|
2
|
+
import { readPiMonoVersion } from "../../engine/pi-mono-names.js";
|
|
1
3
|
import { parseWorkerContextSeed } from "../../worker/context-seed.js";
|
|
2
4
|
import { WORKER_STDIN_FRAME_MAX_BYTES } from "../../worker/protocol.js";
|
|
3
5
|
import { WORKER_CONTEXT_PREAMBLE } from "../context/worker/select.js";
|
|
@@ -22,7 +24,7 @@ import { DEFAULT_SETTINGS, type DelegationToolGovernance } from "../../core/defa
|
|
|
22
24
|
import type { DomainBundle, DomainContext, DomainExtension } from "../../core/domain-loader.js";
|
|
23
25
|
import { gatewayRoutingObservationFromRecord } from "../../core/gateway-routing.js";
|
|
24
26
|
import { GUARDRAIL_DEFAULTS, resolveGuardrail } from "../../core/guardrails.js";
|
|
25
|
-
import { readClioVersion
|
|
27
|
+
import { readClioVersion } from "../../core/package-root.js";
|
|
26
28
|
import { canonicalizeExistingPath } from "../../core/path-canonical.js";
|
|
27
29
|
import { protectedResidencyModels } from "../../core/residency-protection.js";
|
|
28
30
|
import { responseModelIdObservationFromRecord } from "../../core/response-model-id.js";
|
|
@@ -34,6 +36,7 @@ import {
|
|
|
34
36
|
import { isSkillActivation, type SkillActivation } from "../../core/skill-activation.js";
|
|
35
37
|
import { rawDurationMs } from "../../core/timers.js";
|
|
36
38
|
import { isBuiltinToolName, isHarnessExtensionToolName, type ToolName, ToolNames } from "../../core/tool-names.js";
|
|
39
|
+
import { snapshotTurnConstraints, turnAllowsTool } from "../../core/turn-constraints.js";
|
|
37
40
|
import {
|
|
38
41
|
type AcpDelegationRunHandle,
|
|
39
42
|
type AcpDelegationRunInput,
|
|
@@ -52,8 +55,10 @@ import {
|
|
|
52
55
|
cleanupTaskWorktree,
|
|
53
56
|
createTaskWorktree,
|
|
54
57
|
gitCheckoutRoot,
|
|
58
|
+
settleTaskWorktree,
|
|
55
59
|
} from "../../tools/task-worktree.js";
|
|
56
60
|
import { truncateUtf8 } from "../../tools/truncate-utf8.js";
|
|
61
|
+
import { diskWorktreeParent, prepareWorktreeParent, resolveWorktreeRoot } from "../../tools/worktree-root.js";
|
|
57
62
|
import {
|
|
58
63
|
serializeWorkerRuntimeDescriptor,
|
|
59
64
|
WORKER_PROTECTED_ARTIFACT_STATE_VERSION,
|
|
@@ -63,7 +68,11 @@ import {
|
|
|
63
68
|
} from "../../worker/spec-contract.js";
|
|
64
69
|
import type { AgentsContract } from "../agents/contract.js";
|
|
65
70
|
import type { AgentRecipe } from "../agents/recipe.js";
|
|
66
|
-
import {
|
|
71
|
+
import {
|
|
72
|
+
INTERNAL_HELPER_RESULT_KINDS,
|
|
73
|
+
validateRecipeResult,
|
|
74
|
+
validateStructuredHelperResult,
|
|
75
|
+
} from "../agents/result-contract.js";
|
|
67
76
|
import { nodeResultContractFilesystem } from "../agents/result-contract-filesystem.js";
|
|
68
77
|
import {
|
|
69
78
|
type AgentAudience,
|
|
@@ -116,6 +125,7 @@ import { parseRigorOverride, type Rigor, resolveRigor } from "../safety/rigor.js
|
|
|
116
125
|
import { createRunEffectsRecorder, type RunEffectsRecorder } from "../safety/run-effects.js";
|
|
117
126
|
import type { ScopeSpec } from "../safety/scope.js";
|
|
118
127
|
import type { SchedulingContract } from "../scheduling/contract.js";
|
|
128
|
+
import { resolveGlobalConcurrency } from "../scheduling/local-capacity.js";
|
|
119
129
|
import {
|
|
120
130
|
approvedRouteObservation,
|
|
121
131
|
consumeActiveRouteApproval,
|
|
@@ -178,6 +188,7 @@ import {
|
|
|
178
188
|
classifyFailure,
|
|
179
189
|
decideRetry,
|
|
180
190
|
type FailureClass,
|
|
191
|
+
isContextOverflowFailure,
|
|
181
192
|
isInfrastructureFailure,
|
|
182
193
|
type RetryDecision,
|
|
183
194
|
} from "./failure-classification.js";
|
|
@@ -258,6 +269,7 @@ import { defaultRoutingIntent } from "./routing-intent.js";
|
|
|
258
269
|
import { attachRunEventJournalBridge, type RunEventJournalBridge } from "./run-event-journal-bridge.js";
|
|
259
270
|
import { detectRunIdentity } from "./run-identity.js";
|
|
260
271
|
import { type Ledger, newRunId, openLedger } from "./state.js";
|
|
272
|
+
import { createTargetBreaker, type TargetBreakerBlock } from "./target-breaker.js";
|
|
261
273
|
import {
|
|
262
274
|
countToolCalls,
|
|
263
275
|
hasPotentiallyMutatingAttempt,
|
|
@@ -305,12 +317,14 @@ import {
|
|
|
305
317
|
validateJobSpec,
|
|
306
318
|
} from "./validation.js";
|
|
307
319
|
import { describeUngroundedValidations, groundClaimedValidations, invalidatesQuality } from "./validation-grounding.js";
|
|
320
|
+
import { adoptWorkerModelLoad } from "./worker-model-loads.js";
|
|
308
321
|
import { prepareWorkerModelMetadata } from "./worker-model-metadata.js";
|
|
309
322
|
import {
|
|
310
323
|
type AgentLedgerBody,
|
|
311
324
|
computeSettingsFingerprint,
|
|
312
325
|
endpointIdentityHash,
|
|
313
326
|
receiptAttestationFields,
|
|
327
|
+
type WorkerModelLoad,
|
|
314
328
|
} from "./worker-protocol.js";
|
|
315
329
|
import {
|
|
316
330
|
type SpawnedWorker,
|
|
@@ -443,6 +457,12 @@ export interface DispatchBundleOptions {
|
|
|
443
457
|
|
|
444
458
|
const DEFAULT_HEARTBEAT_INTERVAL_MS = 1000;
|
|
445
459
|
const DEFAULT_RESILIENCE_COOLDOWN_MS = 15_000;
|
|
460
|
+
|
|
461
|
+
/** A half-open route this dispatch was admitted to probe, keyed by its run id. */
|
|
462
|
+
interface ProbeClaim {
|
|
463
|
+
key: string;
|
|
464
|
+
owner: string;
|
|
465
|
+
}
|
|
446
466
|
/** ACP event-inactivity stall window (Symphony §5.3.6 semantics); <= 0 disables. */
|
|
447
467
|
const DEFAULT_ACP_STALL_TIMEOUT_MS = 300_000;
|
|
448
468
|
const ADMISSION_INPUT_TOKEN_ESTIMATE = 4096;
|
|
@@ -742,7 +762,7 @@ async function awaitEventDrain(drained: Promise<void>, graceMs = DISPATCH_DRAIN_
|
|
|
742
762
|
function reportDispatchDiagnostic(scope: string, error: unknown): void {
|
|
743
763
|
const message = error instanceof Error ? error.message : String(error);
|
|
744
764
|
try {
|
|
745
|
-
|
|
765
|
+
writeDiagnostic(`[clio-coder:dispatch] ${scope}: ${message}\n`);
|
|
746
766
|
} catch {
|
|
747
767
|
// stderr itself is best-effort
|
|
748
768
|
}
|
|
@@ -1719,6 +1739,33 @@ function deniedToolNames(req: DispatchRequest): ReadonlySet<string> {
|
|
|
1719
1739
|
return new Set(req.denyTools.map((tool) => tool.trim().toLowerCase()));
|
|
1720
1740
|
}
|
|
1721
1741
|
|
|
1742
|
+
function assertTurnConstraintCompatibility(
|
|
1743
|
+
req: DispatchRequest,
|
|
1744
|
+
tools: ReadonlyArray<string>,
|
|
1745
|
+
mediated: boolean,
|
|
1746
|
+
): void {
|
|
1747
|
+
const constraints = req.turnConstraints;
|
|
1748
|
+
if (!constraints) return;
|
|
1749
|
+
if (!turnAllowsTool(constraints, "dispatch"))
|
|
1750
|
+
throw new Error("dispatch: forbidden by the parent task's explicit scope");
|
|
1751
|
+
if (!mediated && (constraints.allowedTools !== undefined || constraints.skills === "disabled")) {
|
|
1752
|
+
throw new Error(
|
|
1753
|
+
"dispatch: this external runtime cannot enforce the parent task's tool/skill constraints; use a native worker",
|
|
1754
|
+
);
|
|
1755
|
+
}
|
|
1756
|
+
const outside = tools.filter((name) => !turnAllowsTool(constraints, name));
|
|
1757
|
+
if (outside.length > 0)
|
|
1758
|
+
throw new Error(
|
|
1759
|
+
`dispatch: worker tool surface exceeds the parent task's explicit scope: ${outside.join(", ")}. Select a narrower recipe or tool profile.`,
|
|
1760
|
+
);
|
|
1761
|
+
if ((req.resolvedVerification?.length ?? 0) > 0 && !turnAllowsTool(constraints, "verify")) {
|
|
1762
|
+
throw new Error("dispatch: host verification is outside the parent task's explicit tool scope");
|
|
1763
|
+
}
|
|
1764
|
+
if (req.worktree === true && !turnAllowsTool(constraints, "write")) {
|
|
1765
|
+
throw new Error("dispatch: worktree creation requires write in the parent task's explicit tool scope");
|
|
1766
|
+
}
|
|
1767
|
+
}
|
|
1768
|
+
|
|
1722
1769
|
function assertPostRuntimeToolCompatibility(
|
|
1723
1770
|
agentId: string,
|
|
1724
1771
|
spec: ReturnType<typeof normalizeAgentSpec>,
|
|
@@ -2029,6 +2076,14 @@ function buildDispatchWorkerSpec(input: DispatchWorkerSpecInput, config?: Config
|
|
|
2029
2076
|
// the same resolver the seal uses, so the two never disagree.
|
|
2030
2077
|
const workerResultContract = dispatchResultContract(input.req, input.recipe);
|
|
2031
2078
|
if (workerResultContract) spec.resultContract = workerResultContract;
|
|
2079
|
+
if (
|
|
2080
|
+
(input.recipe?.audience === "shadow" || input.recipe?.audience === "internal") &&
|
|
2081
|
+
input.target.runtime.kind === "http" &&
|
|
2082
|
+
targetToolCapability(input.target) === true &&
|
|
2083
|
+
workerResultContract &&
|
|
2084
|
+
(INTERNAL_HELPER_RESULT_KINDS as readonly string[]).includes(workerResultContract.kind)
|
|
2085
|
+
)
|
|
2086
|
+
spec.helperResult = true;
|
|
2032
2087
|
const product = input.req.product ?? input.recipe?.product;
|
|
2033
2088
|
if (product) spec.product = product;
|
|
2034
2089
|
// The orchestrator's tool decision is the one the run was admitted under and
|
|
@@ -2052,6 +2107,7 @@ function buildDispatchWorkerSpec(input: DispatchWorkerSpecInput, config?: Config
|
|
|
2052
2107
|
}
|
|
2053
2108
|
if (input.apiKey) spec.apiKey = input.apiKey;
|
|
2054
2109
|
if (input.req.noSkills !== undefined) spec.noSkills = input.req.noSkills;
|
|
2110
|
+
if (input.req.turnConstraints !== undefined) spec.turnConstraints = input.req.turnConstraints;
|
|
2055
2111
|
const skillPaths = [...(input.req.skillPaths ?? []), ...(input.recipe?.boundSkillPaths ?? [])];
|
|
2056
2112
|
if (skillPaths.length > 0) spec.skillPaths = [...new Set(skillPaths)];
|
|
2057
2113
|
const recipeSkills = (input.recipe?.skills ?? []).map((name) => name.trim()).filter((name) => name.length > 0);
|
|
@@ -2582,6 +2638,11 @@ export function createDispatchBundle(
|
|
|
2582
2638
|
};
|
|
2583
2639
|
const now = options?.now ?? (() => Date.now());
|
|
2584
2640
|
const monotonicNow = options?.monotonicNow ?? (() => performance.now());
|
|
2641
|
+
const targetBreaker = createTargetBreaker({
|
|
2642
|
+
monotonicNow,
|
|
2643
|
+
cooldownMs: getResilienceCooldownMs,
|
|
2644
|
+
threshold: () => getEffectiveSettings()?.fleet?.retry.breakerThreshold ?? 1,
|
|
2645
|
+
});
|
|
2585
2646
|
// Durable evidence owner used by shadow observation and active readiness.
|
|
2586
2647
|
const routeObserver: RouteObserver = options?.routeObserver ?? createRouteObserver({});
|
|
2587
2648
|
|
|
@@ -2589,7 +2650,6 @@ export function createDispatchBundle(
|
|
|
2589
2650
|
let heartbeatTimer: ReturnType<typeof setInterval> | null = null;
|
|
2590
2651
|
const active = new Map<string, ActiveRun>();
|
|
2591
2652
|
const pendingCapacity = new Map<string, PendingCapacityAdmission>();
|
|
2592
|
-
const targetCooldowns = new Map<string, { until: number; reason: string }>();
|
|
2593
2653
|
const ownedReservations = new Set<string>();
|
|
2594
2654
|
/**
|
|
2595
2655
|
* Attribution from each finalized run's successful tool calls, newest last.
|
|
@@ -2614,7 +2674,7 @@ export function createDispatchBundle(
|
|
|
2614
2674
|
const capacityAdmission = createCapacityAdmissionController({
|
|
2615
2675
|
limits: () => {
|
|
2616
2676
|
const settings = getEffectiveSettings();
|
|
2617
|
-
const nodes: Record<string, number> = { local:
|
|
2677
|
+
const nodes: Record<string, number> = { local: configuredLocalCapacity(settings) };
|
|
2618
2678
|
for (const node of settings?.fleet?.nodes ?? []) nodes[node.id] = node.maxWorkers;
|
|
2619
2679
|
return { global: configuredGlobalCapacity(settings), nodes, endpoints: configuredEndpointLimits() };
|
|
2620
2680
|
},
|
|
@@ -2697,7 +2757,7 @@ export function createDispatchBundle(
|
|
|
2697
2757
|
// Read budget after the capacity lock wait too; concurrent callbacks may spend.
|
|
2698
2758
|
const preflight = scheduling.preflight();
|
|
2699
2759
|
const nodes: Record<string, { active: number; limit: number }> = {
|
|
2700
|
-
local: { active: usage.nodes.local ?? 0, limit:
|
|
2760
|
+
local: { active: usage.nodes.local ?? 0, limit: configuredLocalCapacity(settings) },
|
|
2701
2761
|
};
|
|
2702
2762
|
for (const node of settings?.fleet?.nodes ?? [])
|
|
2703
2763
|
nodes[node.id] = { active: usage.nodes[node.id] ?? 0, limit: node.maxWorkers };
|
|
@@ -2768,8 +2828,12 @@ export function createDispatchBundle(
|
|
|
2768
2828
|
}
|
|
2769
2829
|
|
|
2770
2830
|
function configuredGlobalCapacity(settings: EffectiveSettings): number {
|
|
2771
|
-
|
|
2772
|
-
|
|
2831
|
+
return scheduling.maxWorkers?.() ?? resolveGlobalConcurrency(settings?.fleet.concurrency);
|
|
2832
|
+
}
|
|
2833
|
+
|
|
2834
|
+
/** The local node alone follows host facts under `auto`; global and SSH limits do not. */
|
|
2835
|
+
function configuredLocalCapacity(settings: EffectiveSettings): number {
|
|
2836
|
+
return scheduling.localCapacity?.().limit ?? configuredGlobalCapacity(settings);
|
|
2773
2837
|
}
|
|
2774
2838
|
|
|
2775
2839
|
function publishCapacityQueued(
|
|
@@ -3048,6 +3112,8 @@ export function createDispatchBundle(
|
|
|
3048
3112
|
detail: string | null,
|
|
3049
3113
|
receipt: RunReceipt,
|
|
3050
3114
|
failureClass: FailureClass,
|
|
3115
|
+
contextOverflow = false,
|
|
3116
|
+
currentRetryReason: string | null = null,
|
|
3051
3117
|
): RetryScheduleResult {
|
|
3052
3118
|
if (draining) return { scheduled: false };
|
|
3053
3119
|
const rootRunId = run.lineage.rootRunId;
|
|
@@ -3067,7 +3133,19 @@ export function createDispatchBundle(
|
|
|
3067
3133
|
const maxRetries = assignments.get(rootRunId)?.policy.maxRetries ?? assignmentPolicyFor(run.req).maxRetries;
|
|
3068
3134
|
const baseDecision = decideRetry(failureClass, run.lineage.attempt, maxRetries);
|
|
3069
3135
|
// An exact manual route may be retried, but no route component may drift.
|
|
3070
|
-
|
|
3136
|
+
let decision = recovery.retryDecisionWithinFailover(baseDecision, failoverModeFor(run.req));
|
|
3137
|
+
let overflowRoute: DispatchFailoverCandidate | null = null;
|
|
3138
|
+
let overflowReason: string | null = null;
|
|
3139
|
+
if (contextOverflow && !decision.retry) {
|
|
3140
|
+
const plan = planOverflowRetry(run, currentRetryReason, maxRetries);
|
|
3141
|
+
if ("settlementDetail" in plan) {
|
|
3142
|
+
retryBackoff.delete(rootRunId);
|
|
3143
|
+
return { scheduled: false, settlementDetail: plan.settlementDetail };
|
|
3144
|
+
}
|
|
3145
|
+
overflowRoute = plan.route;
|
|
3146
|
+
overflowReason = plan.reason;
|
|
3147
|
+
decision = { retry: true, excludedRouteParts: [], qualityEscalation: null, reasonCode: "retry-context-overflow" };
|
|
3148
|
+
}
|
|
3071
3149
|
if (!decision.retry) {
|
|
3072
3150
|
retryBackoff.delete(rootRunId);
|
|
3073
3151
|
// Deterministic outcomes are intentionally not retried. This is a normal
|
|
@@ -3111,7 +3189,7 @@ export function createDispatchBundle(
|
|
|
3111
3189
|
// target cooldown it just created protects new work, not this chain.
|
|
3112
3190
|
const delayMs = Math.max(backoffDelayMs, decision.retryAfterMs ?? 0);
|
|
3113
3191
|
const attempt = run.lineage.attempt + 1;
|
|
3114
|
-
const reason = detail !== null ? `${outcome}: ${detail}` : outcome;
|
|
3192
|
+
const reason = overflowReason ?? (detail !== null ? `${outcome}: ${detail}` : outcome);
|
|
3115
3193
|
const dueAt = now() + delayMs;
|
|
3116
3194
|
let settleCanceled!: () => void;
|
|
3117
3195
|
let rejectContinuation!: (error: unknown) => void;
|
|
@@ -3124,7 +3202,7 @@ export function createDispatchBundle(
|
|
|
3124
3202
|
retryQueue.delete(run.runId);
|
|
3125
3203
|
// Ownership starts at scheduling, covering admission before a handle
|
|
3126
3204
|
// exists and terminal receipt work after the handle arrives.
|
|
3127
|
-
executeRetry(run, attempt, reason, decision).then(settleCanceled, rejectContinuation);
|
|
3205
|
+
executeRetry(run, attempt, reason, decision, overflowRoute).then(settleCanceled, rejectContinuation);
|
|
3128
3206
|
}, delayMs);
|
|
3129
3207
|
retryQueue.set(run.runId, {
|
|
3130
3208
|
runId: run.runId,
|
|
@@ -3154,6 +3232,8 @@ export function createDispatchBundle(
|
|
|
3154
3232
|
return { scheduled: true };
|
|
3155
3233
|
}
|
|
3156
3234
|
|
|
3235
|
+
const CONTEXT_OVERFLOW_RETRY = "context-overflow";
|
|
3236
|
+
|
|
3157
3237
|
function retryReasonKey(rootRunId: string, attempt: number): string {
|
|
3158
3238
|
return `${rootRunId}:${attempt}`;
|
|
3159
3239
|
}
|
|
@@ -3164,6 +3244,7 @@ export function createDispatchBundle(
|
|
|
3164
3244
|
outcome: RunOutcome,
|
|
3165
3245
|
detail: string | null,
|
|
3166
3246
|
failureClass: FailureClass,
|
|
3247
|
+
contextOverflow = false,
|
|
3167
3248
|
): void {
|
|
3168
3249
|
const assignment = assignments.open(run.lineage.rootRunId, assignmentPolicyFor(run.req));
|
|
3169
3250
|
persistAssignment(registerAssignment(assignment.id), `${assignment.id}:open`);
|
|
@@ -3179,7 +3260,7 @@ export function createDispatchBundle(
|
|
|
3179
3260
|
retryReason,
|
|
3180
3261
|
});
|
|
3181
3262
|
persistAssignment(recordAssignmentAttempt(assignment.id, run.runId), `${assignment.id}:attempt:${run.runId}`);
|
|
3182
|
-
const retry = maybeScheduleRetry(run, outcome, detail, receipt, failureClass);
|
|
3263
|
+
const retry = maybeScheduleRetry(run, outcome, detail, receipt, failureClass, contextOverflow, retryReason);
|
|
3183
3264
|
if (retry.scheduled) return;
|
|
3184
3265
|
const currentStatus = assignments.get(assignment.id)?.status;
|
|
3185
3266
|
const terminalStatus =
|
|
@@ -3215,6 +3296,7 @@ export function createDispatchBundle(
|
|
|
3215
3296
|
attempt: number,
|
|
3216
3297
|
reason = "retry",
|
|
3217
3298
|
decision: RetryDecision = decideRetry("internal", run.lineage.attempt, assignmentPolicyFor(run.req).maxRetries),
|
|
3299
|
+
overflowRoute: DispatchFailoverCandidate | null = null,
|
|
3218
3300
|
): Promise<void> {
|
|
3219
3301
|
if (draining || !retryChainIsLive(run)) return;
|
|
3220
3302
|
const excludesNode = decision.excludedRouteParts.includes("node");
|
|
@@ -3226,6 +3308,9 @@ export function createDispatchBundle(
|
|
|
3226
3308
|
const retryReq: DispatchRequest = {
|
|
3227
3309
|
...run.req,
|
|
3228
3310
|
...(rerouteHops !== undefined ? { reroutes: rerouteHops } : {}),
|
|
3311
|
+
// A retry that moves the target names one, which would otherwise read
|
|
3312
|
+
// as an operator pin and freeze every later retry in the chain.
|
|
3313
|
+
failover: failoverModeFor(run.req),
|
|
3229
3314
|
requestOrigin: "internal",
|
|
3230
3315
|
lineage: {
|
|
3231
3316
|
parentRunId: run.runId,
|
|
@@ -3243,7 +3328,7 @@ export function createDispatchBundle(
|
|
|
3243
3328
|
retryReasons.set(reasonKey, reason);
|
|
3244
3329
|
try {
|
|
3245
3330
|
if (failoverModeFor(run.req) === "approved") {
|
|
3246
|
-
const candidates = approvedRetryCandidates(run, decision);
|
|
3331
|
+
const candidates = overflowRoute !== null ? [overflowRoute] : approvedRetryCandidates(run, decision);
|
|
3247
3332
|
if (run.req.routeApproval === undefined) {
|
|
3248
3333
|
const candidate = candidates[0] as DispatchFailoverCandidate;
|
|
3249
3334
|
retryReq.agentId = candidate.agentId;
|
|
@@ -3290,15 +3375,26 @@ export function createDispatchBundle(
|
|
|
3290
3375
|
retryReq.model = run.wireModelId;
|
|
3291
3376
|
retryReq.node = run.node?.id ?? "local";
|
|
3292
3377
|
}
|
|
3378
|
+
if (overflowRoute !== null) {
|
|
3379
|
+
retryReq.target = overflowRoute.target;
|
|
3380
|
+
retryReq.model = overflowRoute.model;
|
|
3381
|
+
}
|
|
3293
3382
|
// Automatic placement re-selects only the failed route component.
|
|
3294
3383
|
if (excludesNode) {
|
|
3295
3384
|
delete retryReq.node;
|
|
3296
3385
|
delete retryReq.plannedNode;
|
|
3297
3386
|
}
|
|
3298
3387
|
if (decision.excludedRouteParts.includes("target")) {
|
|
3299
|
-
const
|
|
3300
|
-
if (
|
|
3301
|
-
|
|
3388
|
+
const alternate = eligibleAlternateRoute(run, retryReq);
|
|
3389
|
+
if (alternate !== null) {
|
|
3390
|
+
retryReq.target = alternate.target;
|
|
3391
|
+
retryReq.model = alternate.model;
|
|
3392
|
+
} else {
|
|
3393
|
+
// No other route can serve the request, so placement picks again.
|
|
3394
|
+
// That is usually the failed route itself, which the chain may
|
|
3395
|
+
// retry after backoff because the breaker guards new work only.
|
|
3396
|
+
delete retryReq.target;
|
|
3397
|
+
}
|
|
3302
3398
|
}
|
|
3303
3399
|
if (decision.excludedRouteParts.includes("model")) delete retryReq.model;
|
|
3304
3400
|
if (decision.excludedRouteParts.includes("runtime")) delete retryReq.workerRuntime;
|
|
@@ -3532,27 +3628,38 @@ export function createDispatchBundle(
|
|
|
3532
3628
|
return `${targetId}\0${runtimeId}\0${wireModelId}`;
|
|
3533
3629
|
}
|
|
3534
3630
|
|
|
3535
|
-
function
|
|
3536
|
-
|
|
3537
|
-
|
|
3538
|
-
|
|
3539
|
-
const remaining = cooldown.until - now();
|
|
3540
|
-
if (remaining <= 0) {
|
|
3541
|
-
targetCooldowns.delete(key);
|
|
3542
|
-
return null;
|
|
3631
|
+
function describeTargetBlock(targetId: string, block: TargetBreakerBlock | null): string | null {
|
|
3632
|
+
if (block === null) return null;
|
|
3633
|
+
if (block.kind === "probing") {
|
|
3634
|
+
return `target '${targetId}' is cooling down while one probe run tests it after ${block.reason}`;
|
|
3543
3635
|
}
|
|
3544
|
-
return `target '${targetId}' is cooling down for ${Math.ceil(
|
|
3636
|
+
return `target '${targetId}' is cooling down for ${Math.ceil(block.remainingMs / 1000)}s after ${block.reason}`;
|
|
3545
3637
|
}
|
|
3546
3638
|
|
|
3639
|
+
/** Read-only cooldown view for route planning; it never claims a half-open probe. */
|
|
3640
|
+
function targetCooldownReason(targetId: string, runtimeId: string, wireModelId: string): string | null {
|
|
3641
|
+
return describeTargetBlock(targetId, targetBreaker.blocked(cooldownKey(targetId, runtimeId, wireModelId)));
|
|
3642
|
+
}
|
|
3643
|
+
|
|
3644
|
+
/**
|
|
3645
|
+
* Admission gate for a top-level run. A half-open route admits this run as
|
|
3646
|
+
* its probe; the claim goes into probeClaims so a dispatch that fails before
|
|
3647
|
+
* its run starts can hand the probe back.
|
|
3648
|
+
*/
|
|
3547
3649
|
function assertTargetNotCoolingDown(
|
|
3548
3650
|
req: DispatchRequest,
|
|
3549
3651
|
targetId: string,
|
|
3550
3652
|
runtimeId: string,
|
|
3551
3653
|
wireModelId: string,
|
|
3654
|
+
probeClaims: ProbeClaim[],
|
|
3552
3655
|
): void {
|
|
3553
3656
|
if (req.lineage !== undefined) return;
|
|
3554
|
-
const
|
|
3657
|
+
const key = cooldownKey(targetId, runtimeId, wireModelId);
|
|
3658
|
+
const owner = req.runIdHint;
|
|
3659
|
+
const block = owner === undefined ? targetBreaker.blocked(key) : targetBreaker.admit(key, owner);
|
|
3660
|
+
const reason = describeTargetBlock(targetId, block);
|
|
3555
3661
|
if (reason !== null) throw new Error(`dispatch: ${reason}`);
|
|
3662
|
+
if (owner !== undefined) probeClaims.push({ key, owner });
|
|
3556
3663
|
}
|
|
3557
3664
|
|
|
3558
3665
|
/** The target identity a request resolves to, without composing a worker. */
|
|
@@ -3610,7 +3717,119 @@ export function createDispatchBundle(
|
|
|
3610
3717
|
return rerouted;
|
|
3611
3718
|
}
|
|
3612
3719
|
|
|
3720
|
+
/**
|
|
3721
|
+
* First configured route on another target that can serve a retry: it
|
|
3722
|
+
* resolves to that target, carries every required capability, and its
|
|
3723
|
+
* breaker is neither open nor probing. With minContextWindow the route may
|
|
3724
|
+
* also be another model on the failed target, and its effective context
|
|
3725
|
+
* window must be strictly larger than minContextWindow. allowed narrows the
|
|
3726
|
+
* routes further, as an approved envelope does.
|
|
3727
|
+
*/
|
|
3728
|
+
function eligibleAlternateRoute(
|
|
3729
|
+
run: ActiveRun,
|
|
3730
|
+
req: DispatchRequest,
|
|
3731
|
+
minContextWindow?: number,
|
|
3732
|
+
allowed?: (candidate: DispatchFailoverCandidate) => boolean,
|
|
3733
|
+
): (DispatchFailoverCandidate & { contextWindow: number }) | null {
|
|
3734
|
+
const settings = getEffectiveSettings();
|
|
3735
|
+
const failed = {
|
|
3736
|
+
targetId: run.targetId,
|
|
3737
|
+
modelId: run.wireModelId,
|
|
3738
|
+
runtimeId: run.runtimeId,
|
|
3739
|
+
endpointIdentityHash: "",
|
|
3740
|
+
};
|
|
3741
|
+
const routes = configuredJointTargets(settings?.targets ?? [], failed, endpointIdentityHash).filter((route) =>
|
|
3742
|
+
minContextWindow === undefined
|
|
3743
|
+
? route.targetId !== run.targetId
|
|
3744
|
+
: route.targetId !== run.targetId || route.modelId !== run.wireModelId,
|
|
3745
|
+
);
|
|
3746
|
+
const windows = new Map<string, number>();
|
|
3747
|
+
const probes: RouteAvailability[] = routes.map((route) => {
|
|
3748
|
+
const candidate = { agentId: req.agentId, target: route.targetId, model: route.modelId, node: req.node ?? "local" };
|
|
3749
|
+
if (allowed !== undefined && !allowed(candidate)) {
|
|
3750
|
+
return { candidate, unavailable: "route is outside the approved failover envelope" };
|
|
3751
|
+
}
|
|
3752
|
+
try {
|
|
3753
|
+
const identity = resolveTargetIdentity({ ...req, target: route.targetId, model: route.modelId }, settings);
|
|
3754
|
+
if (identity.targetId !== route.targetId) {
|
|
3755
|
+
return { candidate, unavailable: `route resolved to target '${identity.targetId}'` };
|
|
3756
|
+
}
|
|
3757
|
+
if (identity.targetId === run.targetId && identity.wireModelId === run.wireModelId) {
|
|
3758
|
+
return { candidate, unavailable: "route resolved to the failed route" };
|
|
3759
|
+
}
|
|
3760
|
+
const capabilities = capabilityInfoForModel(providers, identity.targetId, identity.wireModelId);
|
|
3761
|
+
const contextWindow = capabilities?.contextWindow ?? 0;
|
|
3762
|
+
windows.set(`${route.targetId}\0${route.modelId}`, contextWindow);
|
|
3763
|
+
const tooSmall =
|
|
3764
|
+
minContextWindow !== undefined && contextWindow <= minContextWindow
|
|
3765
|
+
? `context window ${contextWindow} is not larger than ${minContextWindow}`
|
|
3766
|
+
: null;
|
|
3767
|
+
return {
|
|
3768
|
+
candidate,
|
|
3769
|
+
unavailable:
|
|
3770
|
+
tooSmall ??
|
|
3771
|
+
requiredCapabilityFailureDetail(identity.targetId, capabilities, req.requiredCapabilities) ??
|
|
3772
|
+
targetCooldownReason(identity.targetId, identity.runtimeId, identity.wireModelId),
|
|
3773
|
+
};
|
|
3774
|
+
} catch (error) {
|
|
3775
|
+
return { candidate, unavailable: error instanceof Error ? error.message : String(error) };
|
|
3776
|
+
}
|
|
3777
|
+
});
|
|
3778
|
+
const chosen = firstAvailableRouteCandidate(probes);
|
|
3779
|
+
return chosen === null ? null : { ...chosen, contextWindow: windows.get(`${chosen.target}\0${chosen.model}`) ?? 0 };
|
|
3780
|
+
}
|
|
3781
|
+
|
|
3782
|
+
/**
|
|
3783
|
+
* A context overflow is a verdict on the prompt against one window, so it
|
|
3784
|
+
* earns one retry, and only onto a route whose window is strictly larger.
|
|
3785
|
+
* Exact failover never moves, an approved plan moves only inside its
|
|
3786
|
+
* envelope, and an overflow retry that overflows again is final.
|
|
3787
|
+
*/
|
|
3788
|
+
function planOverflowRetry(
|
|
3789
|
+
run: ActiveRun,
|
|
3790
|
+
currentRetryReason: string | null,
|
|
3791
|
+
maxRetries: number,
|
|
3792
|
+
): { route: DispatchFailoverCandidate; reason: string } | { settlementDetail: string } {
|
|
3793
|
+
const mode = failoverModeFor(run.req);
|
|
3794
|
+
if (mode === "none") {
|
|
3795
|
+
return { settlementDetail: "context overflow not retried because failover is none, which pins the route" };
|
|
3796
|
+
}
|
|
3797
|
+
if (currentRetryReason?.startsWith(`${CONTEXT_OVERFLOW_RETRY}:`) === true) {
|
|
3798
|
+
return { settlementDetail: "context overflow not retried again because this attempt was already an overflow retry" };
|
|
3799
|
+
}
|
|
3800
|
+
if (maxRetries <= 0 || run.lineage.attempt >= maxRetries) {
|
|
3801
|
+
return { settlementDetail: "context overflow not retried because the retry budget is spent" };
|
|
3802
|
+
}
|
|
3803
|
+
const failedWindow = capabilityInfoForModel(providers, run.targetId, run.wireModelId)?.contextWindow ?? 0;
|
|
3804
|
+
const failedRoute = `${run.targetId}/${run.wireModelId}`;
|
|
3805
|
+
if (failedWindow <= 0) {
|
|
3806
|
+
return {
|
|
3807
|
+
settlementDetail: `context overflow not retried because the context window of ${failedRoute} is unknown`,
|
|
3808
|
+
};
|
|
3809
|
+
}
|
|
3810
|
+
const node = run.node?.id ?? "local";
|
|
3811
|
+
const envelope = run.req.allowedCandidates ?? [];
|
|
3812
|
+
const route = eligibleAlternateRoute(
|
|
3813
|
+
run,
|
|
3814
|
+
run.req,
|
|
3815
|
+
failedWindow,
|
|
3816
|
+
mode === "approved"
|
|
3817
|
+
? (candidate) => envelope.some((entry) => recovery.sameFailoverCandidate(entry, { ...candidate, node }))
|
|
3818
|
+
: undefined,
|
|
3819
|
+
);
|
|
3820
|
+
if (route === null) {
|
|
3821
|
+
return {
|
|
3822
|
+
settlementDetail: `context overflow not retried because no eligible route has a context window larger than ${failedWindow} on ${failedRoute}`,
|
|
3823
|
+
};
|
|
3824
|
+
}
|
|
3825
|
+
return {
|
|
3826
|
+
route: { agentId: route.agentId, target: route.target, model: route.model, node },
|
|
3827
|
+
reason: `${CONTEXT_OVERFLOW_RETRY}: ${failedWindow} -> ${route.contextWindow} on ${route.target}/${route.model}`,
|
|
3828
|
+
};
|
|
3829
|
+
}
|
|
3830
|
+
|
|
3613
3831
|
function recordTargetOutcome(
|
|
3832
|
+
runId: string,
|
|
3614
3833
|
targetId: string,
|
|
3615
3834
|
runtimeId: string,
|
|
3616
3835
|
wireModelId: string,
|
|
@@ -3618,15 +3837,9 @@ export function createDispatchBundle(
|
|
|
3618
3837
|
exitCode: number,
|
|
3619
3838
|
failureClass: FailureClass,
|
|
3620
3839
|
): void {
|
|
3621
|
-
const
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
return;
|
|
3625
|
-
}
|
|
3626
|
-
if (!affectsTargetBreaker(failureClass)) return;
|
|
3627
|
-
const cooldownMs = getResilienceCooldownMs();
|
|
3628
|
-
if (cooldownMs <= 0) return;
|
|
3629
|
-
targetCooldowns.set(key, { until: now() + cooldownMs, reason: failureClass });
|
|
3840
|
+
const outcome =
|
|
3841
|
+
status === "completed" && exitCode === 0 ? "success" : affectsTargetBreaker(failureClass) ? "failure" : "neutral";
|
|
3842
|
+
targetBreaker.record(cooldownKey(targetId, runtimeId, wireModelId), runId, outcome, failureClass);
|
|
3630
3843
|
}
|
|
3631
3844
|
|
|
3632
3845
|
function publishDispatchPathScope(req: DispatchRequest, pathScope: DispatchPathScope): void {
|
|
@@ -3754,6 +3967,7 @@ export function createDispatchBundle(
|
|
|
3754
3967
|
req,
|
|
3755
3968
|
);
|
|
3756
3969
|
assertPostRuntimeToolCompatibility(req.agentId, spec, effectiveTools, target, pathScope.writeBoundaries.length > 0);
|
|
3970
|
+
assertTurnConstraintCompatibility(req, effectiveTools, target.runtime.kind === "http");
|
|
3757
3971
|
const effectiveAdmission: DispatchAdmissionStage = {
|
|
3758
3972
|
...admission,
|
|
3759
3973
|
allowedTools: effectiveTools,
|
|
@@ -3763,6 +3977,7 @@ export function createDispatchBundle(
|
|
|
3763
3977
|
const hasBoundSkills =
|
|
3764
3978
|
hasCanonicalContext && recipe.skills !== undefined && recipe.skills.length > 0 && req.noSkills !== true;
|
|
3765
3979
|
const compiledWorkerPrompt = await prompts.compileWorkerPrompt({
|
|
3980
|
+
...(req.turnConstraints ? { turnConstraints: req.turnConstraints } : {}),
|
|
3766
3981
|
autonomy: effectiveAutonomy,
|
|
3767
3982
|
providerSupportsTools: target.runtime.kind === "subprocess" ? null : targetToolCapability(target),
|
|
3768
3983
|
toolNames: effectiveTools,
|
|
@@ -3970,6 +4185,7 @@ export function createDispatchBundle(
|
|
|
3970
4185
|
settings: EffectiveSettings,
|
|
3971
4186
|
timing: RunPhaseMarks,
|
|
3972
4187
|
routeDecision: RouteDecisionV1,
|
|
4188
|
+
probeClaims: ProbeClaim[],
|
|
3973
4189
|
observer?: DispatchAdmissionObserver,
|
|
3974
4190
|
callerDeadlineAt?: number,
|
|
3975
4191
|
hostRun?: DispatchPreparationOptions["hostRun"],
|
|
@@ -3995,7 +4211,7 @@ export function createDispatchBundle(
|
|
|
3995
4211
|
const targetId = `delegation:${lifecycle.agentConfig.id}`;
|
|
3996
4212
|
const runtimeId = "acp";
|
|
3997
4213
|
const wireModelId = lifecycle.agentConfig.id;
|
|
3998
|
-
assertTargetNotCoolingDown(req, targetId, runtimeId, wireModelId);
|
|
4214
|
+
assertTargetNotCoolingDown(req, targetId, runtimeId, wireModelId, probeClaims);
|
|
3999
4215
|
|
|
4000
4216
|
if (req.contextSeed) persistWorkerContextSeed(req.contextSeed);
|
|
4001
4217
|
assertBudgetAdmitsRoute(req, { rates: null, provenance: "unknown" }, settings);
|
|
@@ -4641,12 +4857,13 @@ export function createDispatchBundle(
|
|
|
4641
4857
|
failureMessage = finalDetail;
|
|
4642
4858
|
}
|
|
4643
4859
|
const status = runStatusForOutcome(finalOutcome);
|
|
4644
|
-
const
|
|
4645
|
-
|
|
4646
|
-
|
|
4647
|
-
|
|
4648
|
-
|
|
4649
|
-
);
|
|
4860
|
+
const classifiedResult: SpawnedWorkerResult = {
|
|
4861
|
+
exitCode: result.exitCode,
|
|
4862
|
+
signal: null,
|
|
4863
|
+
...(failureMessage ? { stderrTail: failureMessage } : {}),
|
|
4864
|
+
};
|
|
4865
|
+
const failureClass = classifyFailure(evidence, classifiedResult, finalOutcome, outcomeCode);
|
|
4866
|
+
const contextOverflow = isContextOverflowFailure(failureClass, classifiedResult, outcomeCode);
|
|
4650
4867
|
const receiptDraft = buildReceiptDraft(result, endedAt, status, finalOutcome, finalDetail, capturedOutput);
|
|
4651
4868
|
const ledgerPatch: Partial<RunEnvelope> = {
|
|
4652
4869
|
status,
|
|
@@ -4676,10 +4893,17 @@ export function createDispatchBundle(
|
|
|
4676
4893
|
const receipt = ledgerRef.recordReceipt(envelope.id, sealRouteDecision(receiptDraft, routeDecision));
|
|
4677
4894
|
await ledgerRef.persist();
|
|
4678
4895
|
active.delete(envelope.id);
|
|
4679
|
-
recordTargetOutcome(targetId, runtimeId, wireModelId, status, receipt.exitCode, failureClass);
|
|
4896
|
+
recordTargetOutcome(envelope.id, targetId, runtimeId, wireModelId, status, receipt.exitCode, failureClass);
|
|
4680
4897
|
accumulateFinalizedTotals(receipt);
|
|
4681
4898
|
emitTerminalDispatchEvent(receipt, finalOutcome);
|
|
4682
|
-
completeAssignmentAttempt(
|
|
4899
|
+
completeAssignmentAttempt(
|
|
4900
|
+
activeRun,
|
|
4901
|
+
receipt,
|
|
4902
|
+
finalOutcome,
|
|
4903
|
+
receipt.outcomeDetail ?? finalDetail,
|
|
4904
|
+
failureClass,
|
|
4905
|
+
contextOverflow,
|
|
4906
|
+
);
|
|
4683
4907
|
return receipt;
|
|
4684
4908
|
} catch (error) {
|
|
4685
4909
|
// Finalization itself failed (ACP promise rejection, ledger or
|
|
@@ -4704,7 +4928,7 @@ export function createDispatchBundle(
|
|
|
4704
4928
|
}
|
|
4705
4929
|
active.delete(envelope.id);
|
|
4706
4930
|
settleAssignmentDurablyWithoutReceipt(lineage.rootRunId, envelope.id);
|
|
4707
|
-
recordTargetOutcome(targetId, runtimeId, wireModelId, "failed", 1, "internal");
|
|
4931
|
+
recordTargetOutcome(envelope.id, targetId, runtimeId, wireModelId, "failed", 1, "internal");
|
|
4708
4932
|
context.bus.emit(BusChannels.DispatchFailed, {
|
|
4709
4933
|
runId: envelope.id,
|
|
4710
4934
|
agentId: req.agentId,
|
|
@@ -4740,6 +4964,25 @@ export function createDispatchBundle(
|
|
|
4740
4964
|
observer?: DispatchAdmissionObserver,
|
|
4741
4965
|
preparation?: DispatchPreparationOptions,
|
|
4742
4966
|
settlement?: BatchVerificationGate,
|
|
4967
|
+
): ReturnType<typeof admitDispatchAttempt> {
|
|
4968
|
+
const probeClaims: ProbeClaim[] = [];
|
|
4969
|
+
try {
|
|
4970
|
+
return await admitDispatchAttempt(req, probeClaims, observer, preparation, settlement);
|
|
4971
|
+
} catch (error) {
|
|
4972
|
+
// A half-open route admitted this dispatch as its probe, but the run never
|
|
4973
|
+
// started. Without the release the route would wait on a probe outcome
|
|
4974
|
+
// that cannot arrive.
|
|
4975
|
+
for (const claim of probeClaims) targetBreaker.release(claim.key, claim.owner);
|
|
4976
|
+
throw error;
|
|
4977
|
+
}
|
|
4978
|
+
}
|
|
4979
|
+
|
|
4980
|
+
async function admitDispatchAttempt(
|
|
4981
|
+
req: DispatchRequest,
|
|
4982
|
+
probeClaims: ProbeClaim[],
|
|
4983
|
+
observer?: DispatchAdmissionObserver,
|
|
4984
|
+
preparation?: DispatchPreparationOptions,
|
|
4985
|
+
settlement?: BatchVerificationGate,
|
|
4743
4986
|
): Promise<{
|
|
4744
4987
|
runId: string;
|
|
4745
4988
|
events: AsyncIterableIterator<unknown>;
|
|
@@ -4817,6 +5060,7 @@ export function createDispatchBundle(
|
|
|
4817
5060
|
};
|
|
4818
5061
|
if (req.delegationAgentId) {
|
|
4819
5062
|
assertPlannedNodeIdentity(req, { id: "local", kind: "local" });
|
|
5063
|
+
assertTurnConstraintCompatibility(req, [], false);
|
|
4820
5064
|
assertProtectedArtifactsEnforceable("acp-delegation", false, protectedArtifactState);
|
|
4821
5065
|
if (req.responseSchema !== undefined) {
|
|
4822
5066
|
throw new UnsupportedResponseSchemaError(
|
|
@@ -4838,6 +5082,7 @@ export function createDispatchBundle(
|
|
|
4838
5082
|
settings,
|
|
4839
5083
|
timing,
|
|
4840
5084
|
routeObservation.decision,
|
|
5085
|
+
probeClaims,
|
|
4841
5086
|
observer,
|
|
4842
5087
|
preparation?.deadlineAt,
|
|
4843
5088
|
hostRun,
|
|
@@ -4866,6 +5111,7 @@ export function createDispatchBundle(
|
|
|
4866
5111
|
lifecycle.target.target.id,
|
|
4867
5112
|
lifecycle.target.runtime.id,
|
|
4868
5113
|
lifecycle.target.wireModelId,
|
|
5114
|
+
probeClaims,
|
|
4869
5115
|
);
|
|
4870
5116
|
|
|
4871
5117
|
assertBudgetAdmitsRoute(req, lifecycle.target.effectivePricing, settings);
|
|
@@ -5022,6 +5268,19 @@ export function createDispatchBundle(
|
|
|
5022
5268
|
}
|
|
5023
5269
|
appendLedgerPost(attribution, body);
|
|
5024
5270
|
};
|
|
5271
|
+
// A model this worker loaded is this process's to release at exit, and
|
|
5272
|
+
// stays out of mid-session eviction until then (#379). The report is
|
|
5273
|
+
// checked against the admitted route, and the endpoint comes from this
|
|
5274
|
+
// process's own target, so a worker can neither redirect the release nor
|
|
5275
|
+
// claim a model it was not dispatched to.
|
|
5276
|
+
const onModelLoaded = (load: WorkerModelLoad): void => {
|
|
5277
|
+
adoptWorkerModelLoad(load, {
|
|
5278
|
+
target: lifecycle.target.target,
|
|
5279
|
+
runtime: lifecycle.target.runtime,
|
|
5280
|
+
wireModelId: lifecycle.target.wireModelId,
|
|
5281
|
+
node: placed,
|
|
5282
|
+
});
|
|
5283
|
+
};
|
|
5025
5284
|
let worker: SpawnedWorker;
|
|
5026
5285
|
try {
|
|
5027
5286
|
preparation?.signal?.throwIfAborted();
|
|
@@ -5029,6 +5288,7 @@ export function createDispatchBundle(
|
|
|
5029
5288
|
cwd: lifecycle.cwd,
|
|
5030
5289
|
now,
|
|
5031
5290
|
monotonicNow,
|
|
5291
|
+
onModelLoaded,
|
|
5032
5292
|
...(agentLedgerId !== null ? { onLedgerPost } : {}),
|
|
5033
5293
|
});
|
|
5034
5294
|
} catch (error) {
|
|
@@ -5112,8 +5372,31 @@ export function createDispatchBundle(
|
|
|
5112
5372
|
let workerPolicyPermissionCounter = 0;
|
|
5113
5373
|
// The bound the receipt can seal follows the contract this run will be
|
|
5114
5374
|
// validated against; a conforming result never arrives clipped.
|
|
5375
|
+
const helperContract = dispatchResultContract(req, lifecycle.recipe);
|
|
5115
5376
|
const outputCapture = createWorkerOutputCapture({
|
|
5116
|
-
maxBytes: workerOutputCaptureBytes(
|
|
5377
|
+
maxBytes: workerOutputCaptureBytes(helperContract),
|
|
5378
|
+
...(spec.helperResult === true &&
|
|
5379
|
+
acceptsOutcomeCodeEvents &&
|
|
5380
|
+
(lifecycle.agentAudience === "shadow" || lifecycle.agentAudience === "internal") &&
|
|
5381
|
+
helperContract &&
|
|
5382
|
+
(INTERNAL_HELPER_RESULT_KINDS as readonly string[]).includes(helperContract.kind)
|
|
5383
|
+
? {
|
|
5384
|
+
helperResult: {
|
|
5385
|
+
contract: helperContract,
|
|
5386
|
+
validate: (data: unknown) =>
|
|
5387
|
+
validateStructuredHelperResult({
|
|
5388
|
+
contract: helperContract,
|
|
5389
|
+
data,
|
|
5390
|
+
cwd: lifecycle.cwd,
|
|
5391
|
+
networkAllowed:
|
|
5392
|
+
lifecycle.admission.allowedTools.includes(ToolNames.WebFetch) ||
|
|
5393
|
+
lifecycle.admission.allowedTools.includes(ToolNames.WebRead),
|
|
5394
|
+
observedRunEffects: runEffects.snapshot(),
|
|
5395
|
+
filesystem: nodeResultContractFilesystem(),
|
|
5396
|
+
}).structured,
|
|
5397
|
+
},
|
|
5398
|
+
}
|
|
5399
|
+
: {}),
|
|
5117
5400
|
});
|
|
5118
5401
|
const markObservedPhase = (field: "firstModelTokenAt" | "firstToolAt"): void => {
|
|
5119
5402
|
if (timing[field] !== undefined) return;
|
|
@@ -5984,6 +6267,7 @@ export function createDispatchBundle(
|
|
|
5984
6267
|
}
|
|
5985
6268
|
const status = runStatusForOutcome(finalOutcome);
|
|
5986
6269
|
const failureClass = classifyFailure(evidence, result, finalOutcome, outcomeCode);
|
|
6270
|
+
const contextOverflow = isContextOverflowFailure(failureClass, result, outcomeCode);
|
|
5987
6271
|
const receiptDraft = buildReceiptDraft(
|
|
5988
6272
|
result,
|
|
5989
6273
|
endedAt,
|
|
@@ -6074,9 +6358,19 @@ export function createDispatchBundle(
|
|
|
6074
6358
|
} catch (cleanupError) {
|
|
6075
6359
|
reportDispatchDiagnostic(`clean applied task worktree ${req.taskWorktree.runId}`, cleanupError);
|
|
6076
6360
|
}
|
|
6361
|
+
} else if (req.taskWorktree !== undefined) {
|
|
6362
|
+
// The run is over and its worktree stays for the operator (preserve
|
|
6363
|
+
// mode, a failed run, a refused merge). Saying so on the claim keeps
|
|
6364
|
+
// restart recovery from reading it as a crash.
|
|
6365
|
+
try {
|
|
6366
|
+
settleTaskWorktree(req.taskWorktree);
|
|
6367
|
+
} catch (settleError) {
|
|
6368
|
+
reportDispatchDiagnostic(`settle task worktree ${req.taskWorktree.runId}`, settleError);
|
|
6369
|
+
}
|
|
6077
6370
|
}
|
|
6078
6371
|
active.delete(envelope.id);
|
|
6079
6372
|
recordTargetOutcome(
|
|
6373
|
+
envelope.id,
|
|
6080
6374
|
lifecycle.target.target.id,
|
|
6081
6375
|
lifecycle.target.runtime.id,
|
|
6082
6376
|
lifecycle.target.wireModelId,
|
|
@@ -6087,7 +6381,14 @@ export function createDispatchBundle(
|
|
|
6087
6381
|
recordNodeChannelOutcome(activeRun, finalOutcome, failureClass, finalDetail);
|
|
6088
6382
|
accumulateFinalizedTotals(receipt);
|
|
6089
6383
|
emitTerminalDispatchEvent(receipt, finalOutcome);
|
|
6090
|
-
completeAssignmentAttempt(
|
|
6384
|
+
completeAssignmentAttempt(
|
|
6385
|
+
activeRun,
|
|
6386
|
+
receipt,
|
|
6387
|
+
finalOutcome,
|
|
6388
|
+
receipt.outcomeDetail ?? finalDetail,
|
|
6389
|
+
failureClass,
|
|
6390
|
+
contextOverflow,
|
|
6391
|
+
);
|
|
6091
6392
|
return receipt;
|
|
6092
6393
|
} catch (error) {
|
|
6093
6394
|
// Finalization itself failed (worker promise rejection, ledger or
|
|
@@ -6113,6 +6414,7 @@ export function createDispatchBundle(
|
|
|
6113
6414
|
active.delete(envelope.id);
|
|
6114
6415
|
settleAssignmentDurablyWithoutReceipt(lineage.rootRunId, envelope.id);
|
|
6115
6416
|
recordTargetOutcome(
|
|
6417
|
+
envelope.id,
|
|
6116
6418
|
lifecycle.target.target.id,
|
|
6117
6419
|
lifecycle.target.runtime.id,
|
|
6118
6420
|
lifecycle.target.wireModelId,
|
|
@@ -6164,6 +6466,12 @@ export function createDispatchBundle(
|
|
|
6164
6466
|
events: AsyncIterableIterator<unknown>;
|
|
6165
6467
|
finalPromise: Promise<RunReceipt>;
|
|
6166
6468
|
}> {
|
|
6469
|
+
const constraints = snapshotTurnConstraints(preparation?.turnConstraints ?? req.turnConstraints);
|
|
6470
|
+
if (constraints) {
|
|
6471
|
+
req = { ...req, turnConstraints: constraints, ...(constraints.skills === "disabled" ? { noSkills: true } : {}) };
|
|
6472
|
+
// Validate before creating worktrees or acquiring writer/capacity leases.
|
|
6473
|
+
previewFixed(req);
|
|
6474
|
+
}
|
|
6167
6475
|
let prepared =
|
|
6168
6476
|
preparation?.deadlineAt === undefined
|
|
6169
6477
|
? req
|
|
@@ -6189,7 +6497,27 @@ export function createDispatchBundle(
|
|
|
6189
6497
|
const runId = newRunId();
|
|
6190
6498
|
let taskWorktree: NonNullable<DispatchRequest["taskWorktree"]>;
|
|
6191
6499
|
try {
|
|
6192
|
-
|
|
6500
|
+
// fleet.worktrees.root moves the working tree for local placement
|
|
6501
|
+
// only: with fleet nodes the run may land on another host, which
|
|
6502
|
+
// reaches the worktree by the project-root path alone.
|
|
6503
|
+
const fleetSettings = getEffectiveSettings()?.fleet;
|
|
6504
|
+
let worktreeRoot = resolveWorktreeRoot({
|
|
6505
|
+
setting: fleetSettings?.worktrees?.root ?? "disk",
|
|
6506
|
+
projectRoot: root,
|
|
6507
|
+
remoteEligible: (fleetSettings?.nodes?.length ?? 0) > 0,
|
|
6508
|
+
});
|
|
6509
|
+
const untrusted = prepareWorktreeParent(worktreeRoot);
|
|
6510
|
+
if (untrusted !== null) {
|
|
6511
|
+
worktreeRoot = {
|
|
6512
|
+
parent: diskWorktreeParent(root),
|
|
6513
|
+
kind: "disk",
|
|
6514
|
+
notice: `${untrusted}; using the project root`,
|
|
6515
|
+
};
|
|
6516
|
+
}
|
|
6517
|
+
if (worktreeRoot.notice !== undefined) {
|
|
6518
|
+
reportDispatchDiagnostic(`task worktree root for ${runId}`, new Error(worktreeRoot.notice));
|
|
6519
|
+
}
|
|
6520
|
+
taskWorktree = createTaskWorktree(root, runId, undefined, req.apply ?? "merge", worktreeRoot.parent);
|
|
6193
6521
|
} catch (error) {
|
|
6194
6522
|
writerLease?.release();
|
|
6195
6523
|
throw error;
|
|
@@ -6276,6 +6604,7 @@ export function createDispatchBundle(
|
|
|
6276
6604
|
|
|
6277
6605
|
if (req.delegationAgentId) {
|
|
6278
6606
|
const protectedArtifactState = getProtectedArtifactState();
|
|
6607
|
+
assertTurnConstraintCompatibility(req, [], false);
|
|
6279
6608
|
assertProtectedArtifactsEnforceable("acp-delegation", false, protectedArtifactState);
|
|
6280
6609
|
if (req.responseSchema !== undefined) {
|
|
6281
6610
|
throw new UnsupportedResponseSchemaError(
|
|
@@ -6351,6 +6680,7 @@ export function createDispatchBundle(
|
|
|
6351
6680
|
target,
|
|
6352
6681
|
pathScope.writeBoundaries.length > 0,
|
|
6353
6682
|
);
|
|
6683
|
+
assertTurnConstraintCompatibility(req, effectiveTools, target.runtime.kind === "http");
|
|
6354
6684
|
assertRuntimeCanHonorWorkerPermissionMode(target.runtime, settings?.fleet.permissions.mode ?? "deny");
|
|
6355
6685
|
assertResponseSchemaEnforceable(target.runtime, target.modelCapabilities, req.responseSchema, effectiveTools.length);
|
|
6356
6686
|
assertWriteRootsEnforceable(target.runtime, pathScope.writeBoundaries);
|
|
@@ -7249,6 +7579,19 @@ export function createDispatchBundle(
|
|
|
7249
7579
|
markCollected: markDetachedBatchCollected,
|
|
7250
7580
|
},
|
|
7251
7581
|
snapshot,
|
|
7582
|
+
routeBreakers: () =>
|
|
7583
|
+
targetBreaker.snapshot().map((route) => {
|
|
7584
|
+
const [targetId = "", runtimeId = "", wireModelId = ""] = route.key.split("\0");
|
|
7585
|
+
return {
|
|
7586
|
+
targetId,
|
|
7587
|
+
runtimeId,
|
|
7588
|
+
wireModelId,
|
|
7589
|
+
state: route.state,
|
|
7590
|
+
remainingMs: route.remainingMs,
|
|
7591
|
+
reason: route.reason,
|
|
7592
|
+
consecutiveFailures: route.consecutiveFailures,
|
|
7593
|
+
};
|
|
7594
|
+
}),
|
|
7252
7595
|
drain,
|
|
7253
7596
|
};
|
|
7254
7597
|
|