@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
|
@@ -92,6 +92,19 @@ const SINGLE_MUTATION_PATH_KEYS = [
|
|
|
92
92
|
"uri",
|
|
93
93
|
] as const;
|
|
94
94
|
|
|
95
|
+
/**
|
|
96
|
+
* A read or a search also names the directory it reaches under these keys,
|
|
97
|
+
* and that directory is judged like any other path target.
|
|
98
|
+
*/
|
|
99
|
+
const READ_PATH_KEYS = [
|
|
100
|
+
...SINGLE_MUTATION_PATH_KEYS,
|
|
101
|
+
"directory",
|
|
102
|
+
"dir",
|
|
103
|
+
"dirPath",
|
|
104
|
+
"dir_path",
|
|
105
|
+
"folder",
|
|
106
|
+
"root",
|
|
107
|
+
] as const;
|
|
95
108
|
const MULTI_MUTATION_PATH_KEYS = ["paths", "files", "filePaths", "file_paths", "targets", "targetPaths"] as const;
|
|
96
109
|
const MOVE_SOURCE_PATH_KEYS = [
|
|
97
110
|
"source",
|
|
@@ -415,7 +428,7 @@ function mapPathBearingToolCall(
|
|
|
415
428
|
targetRequired: boolean,
|
|
416
429
|
): MappedToolCall {
|
|
417
430
|
const rawInput = isRecord(toolCall?.rawInput) ? toolCall.rawInput : {};
|
|
418
|
-
const raw = extractPathFields(rawInput,
|
|
431
|
+
const raw = extractPathFields(rawInput, READ_PATH_KEYS, MULTI_MUTATION_PATH_KEYS, cwd, "rawInput");
|
|
419
432
|
const locations = extractLocationPaths(toolCall?.locations, cwd);
|
|
420
433
|
const errors = [...raw.errors, ...locations.errors];
|
|
421
434
|
if (toolCall?.rawInput !== undefined && !isRecord(toolCall.rawInput)) errors.push("rawInput must be an object");
|
|
@@ -512,10 +525,10 @@ function mapToolCall(toolCall: AcpToolCallUpdate | undefined, cwd: string): Mapp
|
|
|
512
525
|
const args = commandArgs(rawInput, cwd);
|
|
513
526
|
return { tool: ToolNames.Bash, args, evaluations: [{ tool: ToolNames.Bash, args }], known: true, displayTool };
|
|
514
527
|
}
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
return
|
|
528
|
+
// A search names where it looks as well as what it looks for, so the
|
|
529
|
+
// inferred grep keeps its path targets for the policy to judge.
|
|
530
|
+
if (stringField(rawInput, "pattern")) {
|
|
531
|
+
return mapPathBearingToolCall(toolCall, ToolNames.Grep, displayTool, cwd, false);
|
|
519
532
|
}
|
|
520
533
|
const inferredPath = stringField(rawInput, "file_path", "filePath", "path", "notebook_path");
|
|
521
534
|
if (inferredPath) {
|
|
@@ -621,6 +634,7 @@ export class AcpToolMediator {
|
|
|
621
634
|
candidate,
|
|
622
635
|
disposition: mapAutonomy(level, candidate.classification.actionClass, {
|
|
623
636
|
executeRecognized: candidate.policy?.execRecognition !== "unrecognized",
|
|
637
|
+
...(candidate.policy?.readScope === "outside-workspace" ? { readOutsideWorkspace: true } : {}),
|
|
624
638
|
}),
|
|
625
639
|
}));
|
|
626
640
|
const deniedDisposition = dispositions.find((candidate) => candidate.disposition === "deny");
|
|
@@ -628,11 +642,20 @@ export class AcpToolMediator {
|
|
|
628
642
|
if (deniedDisposition !== undefined) {
|
|
629
643
|
safetyDecision = deniedDisposition.candidate;
|
|
630
644
|
decision = "denied";
|
|
631
|
-
reason = autonomyDenyRejection(
|
|
645
|
+
reason = autonomyDenyRejection(
|
|
646
|
+
level,
|
|
647
|
+
mapped.tool,
|
|
648
|
+
deniedDisposition.candidate.classification.actionClass,
|
|
649
|
+
deniedDisposition.candidate.policy?.readScope === "outside-workspace",
|
|
650
|
+
).short;
|
|
632
651
|
} else if (askDisposition !== undefined) {
|
|
633
652
|
safetyDecision = askDisposition.candidate;
|
|
634
653
|
decision = "denied";
|
|
635
|
-
|
|
654
|
+
const asked =
|
|
655
|
+
askDisposition.candidate.policy?.readScope === "outside-workspace"
|
|
656
|
+
? "a path outside the workspace"
|
|
657
|
+
: askDisposition.candidate.classification.actionClass;
|
|
658
|
+
reason = `permission_required: autonomy ${level} requires approval for ${asked}; denied by non-stall policy (no interactive operator in delegation context)`;
|
|
636
659
|
} else {
|
|
637
660
|
decision = "approved";
|
|
638
661
|
reason = safetyDecision?.policy?.reasonCode ?? "allowed";
|
package/src/engine/acp/types.ts
CHANGED
|
@@ -15,6 +15,30 @@ export const ACP_SESSION_META_KEY = "clio-coder/session";
|
|
|
15
15
|
* client that does not read it sees exactly the frames it saw before.
|
|
16
16
|
*/
|
|
17
17
|
export const ACP_AGENT_META_KEY = "clio-coder/agent";
|
|
18
|
+
/**
|
|
19
|
+
* Opt-in key for non-terminal `tool_call_update` frames carrying a running
|
|
20
|
+
* tool's cumulative output. It is an opt-in and not a default because a client
|
|
21
|
+
* that renders every frame it receives without collapsing repeated updates for
|
|
22
|
+
* one call would redraw the whole tool segment several times a second.
|
|
23
|
+
*/
|
|
24
|
+
export const ACP_TOOL_PROGRESS_META_KEY = "clio-coder/toolProgress";
|
|
25
|
+
/**
|
|
26
|
+
* Decision facts attached to `session/request_permission`. The server already
|
|
27
|
+
* classifies the ask to pick the option labels; without this the tier, the
|
|
28
|
+
* consequence, and the reversibility it computed are discarded and a client is
|
|
29
|
+
* left re-deriving them from a tool name.
|
|
30
|
+
*/
|
|
31
|
+
export const ACP_DECISION_META_KEY = "clio-coder/decision";
|
|
32
|
+
/**
|
|
33
|
+
* Operator-command catalog and invocation. The names live here, in the leaf
|
|
34
|
+
* that holds every other wire constant, rather than beside the projection in
|
|
35
|
+
* `./commands.js`: that module value-imports the whole slash registry, and the
|
|
36
|
+
* ACP server may not drag the registry's closure into the Stage 0 chunk budget
|
|
37
|
+
* just to know what a method is called (rule6, tests/boundaries).
|
|
38
|
+
*/
|
|
39
|
+
export const ACP_COMMANDS_META_KEY = "clio-coder/commands";
|
|
40
|
+
export const ACP_COMMANDS_LIST_METHOD = "clio-coder/commands/list";
|
|
41
|
+
export const ACP_COMMANDS_INVOKE_METHOD = "clio-coder/commands/invoke";
|
|
18
42
|
|
|
19
43
|
/**
|
|
20
44
|
* Wire bounds for one prompt turn (CONTRACT C001 §3). A client renders every
|
|
@@ -31,6 +55,40 @@ export const ACP_MAX_STRING_BYTES = 4096;
|
|
|
31
55
|
export const ACP_MAX_RAW_RECORD_BYTES = 32768;
|
|
32
56
|
export const ACP_MAX_CHUNK_BYTES = 16384;
|
|
33
57
|
|
|
58
|
+
/**
|
|
59
|
+
* The one raw-record string the generic 4 KiB cap actively harmed. `edit` and
|
|
60
|
+
* `write` put a rendered unified diff on `details.diff`, already capped by the
|
|
61
|
+
* engine's own `MAX_DIFF_BYTES` (32 KiB, `src/tools/edit-diff.ts`). At four
|
|
62
|
+
* context lines and roughly 60 bytes a line, 4 KiB is about 65 diff lines, so a
|
|
63
|
+
* multi-hunk refactor arrived cut mid-hunk and a client could not tell a
|
|
64
|
+
* truncated hunk from a hunk that ended there.
|
|
65
|
+
*
|
|
66
|
+
* It sits below {@link ACP_MAX_RAW_RECORD_BYTES} rather than at it because the
|
|
67
|
+
* record cap elides the WHOLE record when it trips: a diff sized at exactly the
|
|
68
|
+
* record bound would serialize past it once JSON escaping and the rest of the
|
|
69
|
+
* result are counted, and the client would have received `{truncated:true}`
|
|
70
|
+
* instead of the 4 KiB it used to get. The reserve is one
|
|
71
|
+
* {@link ACP_MAX_STRING_BYTES} budget for everything else in the record.
|
|
72
|
+
*/
|
|
73
|
+
export const ACP_MAX_RAW_DIFF_BYTES = ACP_MAX_RAW_RECORD_BYTES - ACP_MAX_STRING_BYTES;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Per-call ceiling on non-terminal tool-progress frames. The tool's own
|
|
77
|
+
* throttle bounds the rate, not the total: a build that prints for ten minutes
|
|
78
|
+
* is a bounded stream of unbounded length, and a client holding per-call state
|
|
79
|
+
* has to be told where the stream stops.
|
|
80
|
+
*/
|
|
81
|
+
export const ACP_MAX_TOOL_PROGRESS_FRAMES_PER_CALL = 64;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Floor between two progress frames for one call, on top of the 100 ms throttle
|
|
85
|
+
* `src/core/bash-exec.ts` already applies upstream. The upstream throttle is a
|
|
86
|
+
* rendering budget for a terminal that redraws in place; a JSON-RPC peer pays
|
|
87
|
+
* serialization and a full segment re-render per frame, so the wire gets its
|
|
88
|
+
* own, slower floor.
|
|
89
|
+
*/
|
|
90
|
+
export const ACP_MIN_TOOL_PROGRESS_INTERVAL_MS = 250;
|
|
91
|
+
|
|
34
92
|
/**
|
|
35
93
|
* Upper bound on a `toolCallId` this server puts on the wire, in UTF-8 bytes
|
|
36
94
|
* (CONTRACT C001 §3). Identity is one call per id in both directions: an engine
|
package/src/engine/agent.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { createInitialSystemMessage, toToolDeclaration } from "@earendil-works/pi-ai";
|
|
2
|
+
import { resolvedRequestContext } from "./context.js";
|
|
1
3
|
/**
|
|
2
4
|
* Thin wrapper over Clio's engine Agent class.
|
|
3
5
|
*
|
|
@@ -6,16 +8,22 @@
|
|
|
6
8
|
* from options.initialState on instantiation.
|
|
7
9
|
*
|
|
8
10
|
* pi-agent-core 0.84 requires an explicit stream function on every agent.
|
|
9
|
-
* Clio's default
|
|
10
|
-
*
|
|
11
|
+
* Clio's default dispatcher preserves Pi's transcript. Production adapters can
|
|
12
|
+
* wrap that path with transcriptStreamFn; legacy custom/test delegates receive
|
|
13
|
+
* Pi's resolved prompt/tool request view through streamFn.
|
|
11
14
|
*/
|
|
12
15
|
|
|
13
16
|
import { Agent, type AgentOptions, type StreamFn } from "@earendil-works/pi-agent-core";
|
|
14
17
|
import { isDispositionedToolResultError } from "../tools/result-disposition.js";
|
|
15
18
|
import { engineStreamSimple } from "./api-registry.js";
|
|
16
19
|
|
|
20
|
+
export type EngineStreamFn = (...args: Parameters<typeof engineStreamSimple>) => ReturnType<StreamFn>;
|
|
21
|
+
|
|
17
22
|
export type EngineAgentOptions = Omit<AgentOptions, "streamFn"> & {
|
|
18
|
-
|
|
23
|
+
/** Legacy/custom request view. Explicit overrides also replace the native hook in tests. */
|
|
24
|
+
streamFn?: EngineStreamFn;
|
|
25
|
+
/** Native Pi transcript hook for production request adapters. */
|
|
26
|
+
transcriptStreamFn?: StreamFn;
|
|
19
27
|
/** Called immediately before each native stream delegate invocation. */
|
|
20
28
|
onStreamInvocation?: () => void;
|
|
21
29
|
};
|
|
@@ -38,19 +46,56 @@ function dispositionAwareAfterToolCall(
|
|
|
38
46
|
}
|
|
39
47
|
|
|
40
48
|
export function createEngineAgent(options: EngineAgentOptions = {}): EngineAgentHandle {
|
|
41
|
-
const { streamFn = engineStreamSimple, onStreamInvocation, ...agentOptions } = options;
|
|
49
|
+
const { streamFn, transcriptStreamFn = engineStreamSimple, onStreamInvocation, ...agentOptions } = options;
|
|
42
50
|
const agent = new Agent({
|
|
43
51
|
...agentOptions,
|
|
44
|
-
streamFn:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
streamFn: (model, context, streamOptions) => {
|
|
53
|
+
onStreamInvocation?.();
|
|
54
|
+
return streamFn
|
|
55
|
+
? streamFn(model, resolvedRequestContext(context), streamOptions)
|
|
56
|
+
: transcriptStreamFn(model, context, streamOptions);
|
|
57
|
+
},
|
|
50
58
|
afterToolCall: dispositionAwareAfterToolCall(options.afterToolCall),
|
|
51
59
|
});
|
|
60
|
+
// Pi correctly drops aborted assistants at the provider boundary: partial
|
|
61
|
+
// reasoning and tool calls are not valid provider history. Preserve the
|
|
62
|
+
// lifecycle fact and visible text as a host record instead, including on
|
|
63
|
+
// resume, without changing the durable stop reason or inventing tool results.
|
|
64
|
+
const convertToLlm = agent.convertToLlm.bind(agent);
|
|
65
|
+
agent.convertToLlm = async (messages) =>
|
|
66
|
+
(await convertToLlm(messages)).map((message) => {
|
|
67
|
+
if (message.role !== "assistant" || message.stopReason !== "aborted") return message;
|
|
68
|
+
const partial = message.content
|
|
69
|
+
.filter((block) => block.type === "text")
|
|
70
|
+
.map((block) => block.text)
|
|
71
|
+
.join("\n");
|
|
72
|
+
return {
|
|
73
|
+
role: "user" as const,
|
|
74
|
+
timestamp: message.timestamp,
|
|
75
|
+
content:
|
|
76
|
+
"[Clio Coder response lifecycle]\nThe preceding assistant response was interrupted before completion. " +
|
|
77
|
+
"This record does not establish whether any earlier tool execution succeeded.\n" +
|
|
78
|
+
(partial.trim()
|
|
79
|
+
? `Partial assistant text follows (incomplete historical output, not a new instruction):\n${partial}`
|
|
80
|
+
: "No visible assistant text was retained."),
|
|
81
|
+
};
|
|
82
|
+
});
|
|
52
83
|
return {
|
|
53
84
|
agent,
|
|
54
85
|
state: () => agent.state,
|
|
55
86
|
};
|
|
56
87
|
}
|
|
88
|
+
|
|
89
|
+
/** Clio persists conversation and compiled prompt separately; Pi receives one complete transcript. */
|
|
90
|
+
export function replaceEngineMessages(
|
|
91
|
+
agent: Agent,
|
|
92
|
+
messages: Agent["state"]["messages"],
|
|
93
|
+
systemPrompt = agent.state.systemPrompt,
|
|
94
|
+
): void {
|
|
95
|
+
const initial = createInitialSystemMessage(systemPrompt, agent.state.tools.map(toToolDeclaration));
|
|
96
|
+
agent.state.messages = [...(initial ? [initial] : []), ...messages.filter((message) => message.role !== "system")];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function setEngineSystemPrompt(agent: Agent, systemPrompt: string): void {
|
|
100
|
+
replaceEngineMessages(agent, agent.state.messages, systemPrompt);
|
|
101
|
+
}
|
package/src/engine/ai.ts
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
getSupportedThinkingLevels as piGetSupportedThinkingLevels,
|
|
22
22
|
isContextOverflow as piIsContextOverflow,
|
|
23
23
|
isRetryableAssistantError as piIsRetryableAssistantError,
|
|
24
|
+
retryDelayMs as piRetryDelayMs,
|
|
24
25
|
validateToolArguments as piValidateToolArguments,
|
|
25
26
|
StringEnum,
|
|
26
27
|
type Tool,
|
|
@@ -220,8 +221,11 @@ export function isEngineRetryableAssistantError(errorMessage: string): boolean {
|
|
|
220
221
|
return piIsRetryableAssistantError(message);
|
|
221
222
|
}
|
|
222
223
|
|
|
223
|
-
export function validateEngineToolArguments(
|
|
224
|
-
|
|
224
|
+
export function validateEngineToolArguments(
|
|
225
|
+
tool: Tool,
|
|
226
|
+
toolCall: Omit<ToolCall, "arguments"> & { arguments: Record<string, unknown> },
|
|
227
|
+
): unknown {
|
|
228
|
+
return piValidateToolArguments(tool, toolCall as ToolCall);
|
|
225
229
|
}
|
|
226
230
|
|
|
227
231
|
export function calculateEngineCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage["cost"] {
|
|
@@ -260,3 +264,8 @@ export function registerFauxFromEnv(): EngineModel | null {
|
|
|
260
264
|
reg.setResponses([fauxAssistantMessage(text, response)]);
|
|
261
265
|
return reg.getModel(modelId) as EngineModel;
|
|
262
266
|
}
|
|
267
|
+
|
|
268
|
+
/** Public Pi backoff primitive; Clio owns the visible countdown and local-load floor. */
|
|
269
|
+
export function engineRetryDelayMs(baseDelayMs: number, maxDelayMs: number, attempt: number): number {
|
|
270
|
+
return piRetryDelayMs({ baseDelayMs, maxAgentDelayMs: maxDelayMs }, attempt);
|
|
271
|
+
}
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
} from "@earendil-works/pi-ai/providers/faux";
|
|
26
26
|
import "@earendil-works/pi-ai/providers/images/register-builtins";
|
|
27
27
|
|
|
28
|
+
import { normalizeContext } from "./context.js";
|
|
28
29
|
import { getEngineEnvApiKey } from "./env-api-keys.js";
|
|
29
30
|
import { engineModels } from "./models.js";
|
|
30
31
|
import { instrumentProviderCall } from "./provider-diagnostics.js";
|
|
@@ -147,9 +148,9 @@ function dispatchEngineStream(
|
|
|
147
148
|
if (model.provider.startsWith("cloudflare-") && !hasCloudflareAuth(options)) {
|
|
148
149
|
return engineModels.stream(model, context, options);
|
|
149
150
|
}
|
|
150
|
-
return provider.stream(model, context, withEnvApiKey(model, options));
|
|
151
|
+
return provider.stream(model, normalizeContext(context), withEnvApiKey(model, options));
|
|
151
152
|
}
|
|
152
|
-
return resolved(model.api).stream(model, context, withEnvApiKey(model, options));
|
|
153
|
+
return resolved(model.api).stream(model, normalizeContext(context), withEnvApiKey(model, options));
|
|
153
154
|
}
|
|
154
155
|
|
|
155
156
|
function dispatchEngineStreamSimple(
|
|
@@ -164,9 +165,9 @@ function dispatchEngineStreamSimple(
|
|
|
164
165
|
if (model.provider.startsWith("cloudflare-") && !hasCloudflareAuth(options)) {
|
|
165
166
|
return engineModels.streamSimple(model, context, options);
|
|
166
167
|
}
|
|
167
|
-
return provider.streamSimple(model, context, withEnvApiKey(model, options));
|
|
168
|
+
return provider.streamSimple(model, normalizeContext(context), withEnvApiKey(model, options));
|
|
168
169
|
}
|
|
169
|
-
return resolved(model.api).streamSimple(model, context, withEnvApiKey(model, options));
|
|
170
|
+
return resolved(model.api).streamSimple(model, normalizeContext(context), withEnvApiKey(model, options));
|
|
170
171
|
}
|
|
171
172
|
|
|
172
173
|
export function engineStream(
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Degraded-inference watchdog for local runtimes.
|
|
3
|
+
*
|
|
4
|
+
* A local server whose weights or KV cache spilled to CPU does not fail: it
|
|
5
|
+
* answers, at roughly a hundredth of the speed, and the operator sees only a
|
|
6
|
+
* spinner. The observed case was 2m18s of streaming for 25 tokens with no
|
|
7
|
+
* indication that anything was wrong. This watchdog turns that silence into a
|
|
8
|
+
* notice: once a prediction has run past a grace period, a sustained token rate
|
|
9
|
+
* below the floor is reported once per turn, along with what is resident on the
|
|
10
|
+
* target so the cause is visible in the same line.
|
|
11
|
+
*
|
|
12
|
+
* The watchdog observes; it never cancels a turn. A slow model is still a
|
|
13
|
+
* working model, and the operator decides whether to abort.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import {
|
|
17
|
+
type AssistantMessage,
|
|
18
|
+
type AssistantMessageEvent,
|
|
19
|
+
type AssistantMessageEventStream,
|
|
20
|
+
createAssistantMessageEventStream,
|
|
21
|
+
} from "@earendil-works/pi-ai";
|
|
22
|
+
import { rawDurationMs } from "../../core/timers.js";
|
|
23
|
+
import { ceilChars } from "../../domains/session/context-accounting.js";
|
|
24
|
+
import { declareRuntimeNoticeProducer } from "./residency.js";
|
|
25
|
+
import type { ResidentModelInfo } from "./resident-models.js";
|
|
26
|
+
|
|
27
|
+
/** Time a prediction gets before its rate is judged. */
|
|
28
|
+
export const DEGRADED_GRACE_MS = 30_000;
|
|
29
|
+
/** Sustained output tokens per second below which inference is reported as degraded. */
|
|
30
|
+
export const DEGRADED_FLOOR_TOKENS_PER_SECOND = 2;
|
|
31
|
+
|
|
32
|
+
const emitDegradedNotice = declareRuntimeNoticeProducer("degraded-inference", ["degraded"]);
|
|
33
|
+
|
|
34
|
+
export interface DegradedInferenceReport {
|
|
35
|
+
elapsedMs: number;
|
|
36
|
+
tokens: number;
|
|
37
|
+
tokensPerSecond: number;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface DegradedInferenceTiming {
|
|
41
|
+
graceMs?: number;
|
|
42
|
+
floorTokensPerSecond?: number;
|
|
43
|
+
/** Sampling interval; the watchdog checks the rate this often. */
|
|
44
|
+
pollMs?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Monotonic clock for the turn's span, defaulting to `performance.now`. A
|
|
47
|
+
* stepped wall clock would fake a collapse on a forward step and hide one on
|
|
48
|
+
* a backward step.
|
|
49
|
+
*/
|
|
50
|
+
monotonicNow?: () => number;
|
|
51
|
+
setTimer?: (fn: () => void, ms: number) => { cancel: () => void };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface DegradedInferenceOptions extends DegradedInferenceTiming {
|
|
55
|
+
/** Called at most once, when the observed rate stays under the floor past the grace period. */
|
|
56
|
+
onDegraded: (report: DegradedInferenceReport) => void;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface DegradedInferenceWatchdog {
|
|
60
|
+
/** Record generated tokens (output plus reasoning; both are work the server did). */
|
|
61
|
+
addTokens: (count: number) => void;
|
|
62
|
+
stop: () => void;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function defaultTimer(fn: () => void, ms: number): { cancel: () => void } {
|
|
66
|
+
const handle = setInterval(fn, ms);
|
|
67
|
+
handle.unref?.();
|
|
68
|
+
return { cancel: () => clearInterval(handle) };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Start watching a prediction's token rate. Call {@link
|
|
73
|
+
* DegradedInferenceWatchdog.addTokens} as fragments arrive and `stop()` when the
|
|
74
|
+
* turn ends, in a `finally`, so a failed turn never leaves a timer behind.
|
|
75
|
+
*/
|
|
76
|
+
function startDegradedInferenceWatchdog(options: DegradedInferenceOptions): DegradedInferenceWatchdog {
|
|
77
|
+
const monotonicNow = options.monotonicNow ?? (() => performance.now());
|
|
78
|
+
const graceMs = options.graceMs ?? DEGRADED_GRACE_MS;
|
|
79
|
+
const floor = options.floorTokensPerSecond ?? DEGRADED_FLOOR_TOKENS_PER_SECOND;
|
|
80
|
+
const pollMs = options.pollMs ?? 5_000;
|
|
81
|
+
const startedAt = monotonicNow();
|
|
82
|
+
let tokens = 0;
|
|
83
|
+
let reported = false;
|
|
84
|
+
let stopped = false;
|
|
85
|
+
|
|
86
|
+
const check = (): void => {
|
|
87
|
+
if (reported || stopped) return;
|
|
88
|
+
const elapsedMs = rawDurationMs(startedAt, monotonicNow());
|
|
89
|
+
if (elapsedMs < graceMs) return;
|
|
90
|
+
const tokensPerSecond = tokens / (elapsedMs / 1000);
|
|
91
|
+
if (tokensPerSecond >= floor) return;
|
|
92
|
+
reported = true;
|
|
93
|
+
timer.cancel();
|
|
94
|
+
try {
|
|
95
|
+
options.onDegraded({ elapsedMs, tokens, tokensPerSecond });
|
|
96
|
+
} catch {
|
|
97
|
+
// A notice sink failure must never escape into the turn it describes.
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
const timer = (options.setTimer ?? defaultTimer)(check, pollMs);
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
addTokens: (count) => {
|
|
105
|
+
if (Number.isFinite(count) && count > 0) tokens += count;
|
|
106
|
+
},
|
|
107
|
+
stop: () => {
|
|
108
|
+
if (stopped) return;
|
|
109
|
+
stopped = true;
|
|
110
|
+
timer.cancel();
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export interface WatchDegradedInferenceOptions {
|
|
116
|
+
targetId: string;
|
|
117
|
+
runtimeId: string;
|
|
118
|
+
model: string;
|
|
119
|
+
signal?: AbortSignal;
|
|
120
|
+
/** Lists what is resident on the target when the notice fires. */
|
|
121
|
+
listResident?: () => Promise<ResidentModelInfo[]>;
|
|
122
|
+
timing?: DegradedInferenceTiming;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function describeResident(entry: ResidentModelInfo): string {
|
|
126
|
+
const { sizeBytes, sizeVramBytes } = entry;
|
|
127
|
+
if (sizeBytes === undefined || sizeVramBytes === undefined || sizeBytes <= 0 || sizeVramBytes >= sizeBytes) {
|
|
128
|
+
return entry.modelId;
|
|
129
|
+
}
|
|
130
|
+
return `${entry.modelId} (${Math.round((sizeVramBytes / sizeBytes) * 100)}% on GPU)`;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// A server crawling on CPU can answer its listing slowly too; the notice must
|
|
134
|
+
// not wait on it indefinitely.
|
|
135
|
+
const RESIDENT_LISTING_TIMEOUT_MS = 3_000;
|
|
136
|
+
|
|
137
|
+
async function residentSummary(options: WatchDegradedInferenceOptions): Promise<string | undefined> {
|
|
138
|
+
const listResident = options.listResident;
|
|
139
|
+
if (!listResident) return undefined;
|
|
140
|
+
let timeout: ReturnType<typeof setTimeout> | undefined;
|
|
141
|
+
try {
|
|
142
|
+
const resident = await Promise.race([
|
|
143
|
+
listResident(),
|
|
144
|
+
new Promise<never>((_, reject) => {
|
|
145
|
+
timeout = setTimeout(() => reject(new Error("resident listing timed out")), RESIDENT_LISTING_TIMEOUT_MS);
|
|
146
|
+
timeout.unref?.();
|
|
147
|
+
}),
|
|
148
|
+
]);
|
|
149
|
+
return resident.length > 0 ? resident.map(describeResident).join(", ") : "none reported";
|
|
150
|
+
} catch {
|
|
151
|
+
return undefined;
|
|
152
|
+
} finally {
|
|
153
|
+
if (timeout !== undefined) clearTimeout(timeout);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function generatedChars(event: AssistantMessageEvent): number {
|
|
158
|
+
if (event.type === "text_delta" || event.type === "thinking_delta" || event.type === "toolcall_delta") {
|
|
159
|
+
return event.delta.length;
|
|
160
|
+
}
|
|
161
|
+
return 0;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const runningWatchdogs = new Set<DegradedInferenceWatchdog>();
|
|
165
|
+
|
|
166
|
+
/** How many watchdogs currently hold a poll timer. Every finished turn returns this to zero. */
|
|
167
|
+
export function runningDegradedInferenceWatchdogs(): number {
|
|
168
|
+
return runningWatchdogs.size;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The event stream a local runtime pushes into, watched for its token rate as
|
|
173
|
+
* events go through. The producer keeps its own loop and its own `try/catch`,
|
|
174
|
+
* so a failure mid-stream reaches the consumer exactly as it did unwatched;
|
|
175
|
+
* there is no second loop between them that could swallow a throw.
|
|
176
|
+
*
|
|
177
|
+
* The clock starts at the `start` event, which both local paths push once the
|
|
178
|
+
* server has answered the request, so a model load is never judged as slow
|
|
179
|
+
* generation. Text, reasoning, and tool-call fragments all count. The watch
|
|
180
|
+
* ends at `done`, `error`, `end()`, or abort, and an abort also suppresses a
|
|
181
|
+
* notice still waiting on its resident listing.
|
|
182
|
+
*/
|
|
183
|
+
export function createDegradedInferenceStream(options: WatchDegradedInferenceOptions): AssistantMessageEventStream {
|
|
184
|
+
const stream = createAssistantMessageEventStream();
|
|
185
|
+
const push = stream.push.bind(stream);
|
|
186
|
+
const end = stream.end.bind(stream);
|
|
187
|
+
let watchdog: DegradedInferenceWatchdog | null = null;
|
|
188
|
+
let stopped = false;
|
|
189
|
+
let generated = 0;
|
|
190
|
+
const aborted = (): boolean => options.signal?.aborted === true;
|
|
191
|
+
const stop = (): void => {
|
|
192
|
+
stopped = true;
|
|
193
|
+
options.signal?.removeEventListener("abort", stop);
|
|
194
|
+
if (watchdog === null) return;
|
|
195
|
+
watchdog.stop();
|
|
196
|
+
runningWatchdogs.delete(watchdog);
|
|
197
|
+
};
|
|
198
|
+
options.signal?.addEventListener("abort", stop, { once: true });
|
|
199
|
+
const onDegraded = (report: DegradedInferenceReport): void => {
|
|
200
|
+
void residentSummary(options).then((residents) => {
|
|
201
|
+
if (stopped || aborted()) return;
|
|
202
|
+
const seconds = Math.round(report.elapsedMs / 1000);
|
|
203
|
+
const rate = report.tokensPerSecond.toFixed(2);
|
|
204
|
+
const residentLine =
|
|
205
|
+
residents === undefined
|
|
206
|
+
? "The resident models on the target could not be listed."
|
|
207
|
+
: `Resident there: ${residents}.`;
|
|
208
|
+
emitDegradedNotice({
|
|
209
|
+
kind: "degraded",
|
|
210
|
+
level: "warning",
|
|
211
|
+
targetId: options.targetId,
|
|
212
|
+
runtimeId: options.runtimeId,
|
|
213
|
+
model: options.model,
|
|
214
|
+
message: `'${options.model}' on '${options.targetId}' has generated ${report.tokens} tokens in ${seconds}s (${rate} tok/s); inference is running far below GPU speed, which is what a spill to CPU looks like. ${residentLine} Unload a co-resident model or lower the context window.`,
|
|
215
|
+
detail: {
|
|
216
|
+
tokens: report.tokens,
|
|
217
|
+
elapsedMs: report.elapsedMs,
|
|
218
|
+
tokensPerSecond: Number(rate),
|
|
219
|
+
...(residents !== undefined ? { residents } : {}),
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
};
|
|
224
|
+
stream.push = (event: AssistantMessageEvent): void => {
|
|
225
|
+
if (event.type === "start" && watchdog === null && !stopped && !aborted()) {
|
|
226
|
+
watchdog = startDegradedInferenceWatchdog({ ...options.timing, onDegraded });
|
|
227
|
+
runningWatchdogs.add(watchdog);
|
|
228
|
+
}
|
|
229
|
+
const chars = generatedChars(event);
|
|
230
|
+
if (chars > 0) {
|
|
231
|
+
const before = ceilChars(generated);
|
|
232
|
+
generated += chars;
|
|
233
|
+
watchdog?.addTokens(ceilChars(generated) - before);
|
|
234
|
+
}
|
|
235
|
+
if (event.type === "done" || event.type === "error") stop();
|
|
236
|
+
push(event);
|
|
237
|
+
};
|
|
238
|
+
stream.end = (result?: AssistantMessage): void => {
|
|
239
|
+
stop();
|
|
240
|
+
end(result);
|
|
241
|
+
};
|
|
242
|
+
return stream;
|
|
243
|
+
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { performance } from "node:perf_hooks";
|
|
2
|
+
import { setTimeout as sleep } from "node:timers/promises";
|
|
2
3
|
import { residencyTargetKey } from "../../core/residency-target-key.js";
|
|
3
|
-
import { sleep } from "../../core/timers.js";
|
|
4
4
|
import {
|
|
5
5
|
type ResidencyAdapter,
|
|
6
6
|
ResidencyPreconditionError,
|
|
7
7
|
reconcileResidency,
|
|
8
8
|
residentTagProtected,
|
|
9
9
|
} from "./residency.js";
|
|
10
|
+
import type { ResidentModelInfo } from "./resident-models.js";
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* llama.cpp router adapter for the shared residency reconciler
|
|
@@ -30,6 +31,8 @@ export interface LlamaCppResidencyInput {
|
|
|
30
31
|
* to managed for direct adapter callers.
|
|
31
32
|
*/
|
|
32
33
|
managed?: boolean;
|
|
34
|
+
signal?: AbortSignal;
|
|
35
|
+
headers?: Record<string, string>;
|
|
33
36
|
fetchImpl?: typeof fetch;
|
|
34
37
|
now?: () => number;
|
|
35
38
|
ttlMs?: number;
|
|
@@ -42,6 +45,17 @@ export interface LlamaCppResidencyInput {
|
|
|
42
45
|
const LOAD_TIMEOUT_MS = 120_000;
|
|
43
46
|
const POLL_INTERVAL_MS = 500;
|
|
44
47
|
|
|
48
|
+
function routerFetch(input: Pick<LlamaCppResidencyInput, "fetchImpl" | "headers" | "signal">): typeof fetch {
|
|
49
|
+
return (url, init) => {
|
|
50
|
+
const headers = new Headers(input.headers);
|
|
51
|
+
new Headers(init?.headers).forEach((value, name) => {
|
|
52
|
+
headers.set(name, value);
|
|
53
|
+
});
|
|
54
|
+
const signal = input.signal ? AbortSignal.any([input.signal, ...(init?.signal ? [init.signal] : [])]) : init?.signal;
|
|
55
|
+
return (input.fetchImpl ?? fetch)(url, { ...init, headers, ...(signal ? { signal } : {}) });
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
45
59
|
/**
|
|
46
60
|
* `sleeping` is a resident state, not an unloaded one. A router started with
|
|
47
61
|
* `--sleep-idle-seconds` parks an idle model's compute while it keeps the slot
|
|
@@ -136,12 +150,13 @@ async function fetchRouterProps(input: LlamaCppResidencyInput, fetchImpl: typeof
|
|
|
136
150
|
if (!response.ok) return {};
|
|
137
151
|
return parseLlamaCppRouterProps(await response.json());
|
|
138
152
|
} catch {
|
|
153
|
+
input.signal?.throwIfAborted();
|
|
139
154
|
return {};
|
|
140
155
|
}
|
|
141
156
|
}
|
|
142
157
|
|
|
143
158
|
async function fetchRouterModels(
|
|
144
|
-
input: LlamaCppResidencyInput,
|
|
159
|
+
input: Pick<LlamaCppResidencyInput, "baseUrl" | "timeoutMs">,
|
|
145
160
|
fetchImpl: typeof fetch,
|
|
146
161
|
): Promise<LlamaCppRouterModel[]> {
|
|
147
162
|
const response = await fetchImpl(modelsUrl(input.baseUrl), {
|
|
@@ -223,7 +238,7 @@ async function waitForLoaded(input: LlamaCppResidencyInput, fetchImpl: typeof fe
|
|
|
223
238
|
// the whole load timeout on an idle router.
|
|
224
239
|
if (model?.state === "loaded" || model?.state === "sleeping") return;
|
|
225
240
|
if (model?.state === "failed") throw new Error(`llama.cpp router reports '${modelId}' failed to load`);
|
|
226
|
-
await sleep(POLL_INTERVAL_MS);
|
|
241
|
+
await sleep(POLL_INTERVAL_MS, undefined, input.signal ? { signal: input.signal } : {});
|
|
227
242
|
}
|
|
228
243
|
throw new Error(`timed out waiting for '${modelId}' to load`);
|
|
229
244
|
}
|
|
@@ -275,8 +290,28 @@ async function restoreDisplacedPinned(
|
|
|
275
290
|
}
|
|
276
291
|
|
|
277
292
|
/** Ensure the selected llama.cpp router model is resident before inference. */
|
|
293
|
+
/**
|
|
294
|
+
* Models resident on a llama.cpp server now. A router reports per-model load
|
|
295
|
+
* states and only the resident ones are returned; a single-model server
|
|
296
|
+
* reports no states, so every model it lists is the one it serves. The
|
|
297
|
+
* degraded-inference watchdog calls this when a turn slows down.
|
|
298
|
+
*/
|
|
299
|
+
export async function listLlamaCppResidentModels(
|
|
300
|
+
baseUrl: string,
|
|
301
|
+
fetchImpl: typeof fetch = fetch,
|
|
302
|
+
options: Pick<LlamaCppResidencyInput, "headers" | "signal"> = {},
|
|
303
|
+
): Promise<ResidentModelInfo[]> {
|
|
304
|
+
const models = await fetchRouterModels({ baseUrl }, routerFetch({ ...options, fetchImpl }));
|
|
305
|
+
const router = models.some((entry) => entry.state !== "unknown");
|
|
306
|
+
return models
|
|
307
|
+
.filter((entry) => !router || residentModel(entry))
|
|
308
|
+
.map((entry) => ({ modelId: entry.id, tags: entry.tags }));
|
|
309
|
+
}
|
|
310
|
+
|
|
278
311
|
export async function ensureLlamaCppResidency(input: LlamaCppResidencyInput): Promise<void> {
|
|
279
|
-
|
|
312
|
+
input.signal?.throwIfAborted();
|
|
313
|
+
if (input.managed === false) return;
|
|
314
|
+
const fetchImpl = routerFetch(input);
|
|
280
315
|
let snapshot: LlamaCppRouterModel[] = [];
|
|
281
316
|
const adapter: ResidencyAdapter = {
|
|
282
317
|
targetKey: residencyTargetKey("llamacpp", input.baseUrl),
|
|
@@ -285,6 +320,7 @@ export async function ensureLlamaCppResidency(input: LlamaCppResidencyInput): Pr
|
|
|
285
320
|
keepModelId: input.keepModelId,
|
|
286
321
|
managed: input.managed ?? true,
|
|
287
322
|
strategy: "router",
|
|
323
|
+
...(input.signal ? { signal: input.signal } : {}),
|
|
288
324
|
listResident: async () => {
|
|
289
325
|
const models = await fetchRouterModels(input, fetchImpl);
|
|
290
326
|
if (!models.some((entry) => entry.state !== "unknown")) {
|
|
@@ -315,11 +351,19 @@ export async function ensureLlamaCppResidency(input: LlamaCppResidencyInput): Pr
|
|
|
315
351
|
// `snapshot` predates the eviction and still calls this model resident, so
|
|
316
352
|
// the state is deliberately not read here: the reload has to be forced.
|
|
317
353
|
reloadEvicted: async (modelId) => {
|
|
318
|
-
|
|
354
|
+
// Recovery must survive request cancellation, but has its own total deadline.
|
|
355
|
+
const recovery = { ...input, signal: AbortSignal.timeout(LOAD_TIMEOUT_MS) };
|
|
356
|
+
await ensureModelLoaded(recovery, routerFetch(recovery), modelId, undefined);
|
|
319
357
|
},
|
|
320
358
|
};
|
|
321
359
|
if (input.withLock) adapter.withLock = input.withLock;
|
|
322
360
|
if (input.now) adapter.now = input.now;
|
|
323
361
|
if (input.ttlMs !== undefined) adapter.ttlMs = input.ttlMs;
|
|
324
|
-
await reconcileResidency(adapter);
|
|
362
|
+
const plan = await reconcileResidency(adapter);
|
|
363
|
+
if (plan.decision === "decline") {
|
|
364
|
+
throw new ResidencyPreconditionError(
|
|
365
|
+
plan.notices.find((notice) => notice.level === "error")?.message ??
|
|
366
|
+
`llama.cpp residency declined loading '${input.keepModelId}' on '${input.targetId}'`,
|
|
367
|
+
);
|
|
368
|
+
}
|
|
325
369
|
}
|