@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
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { canonicalizePath, canonicalizeRawPath, type PathWalkMemo } from "../../core/path-canonical.js";
|
|
4
|
+
import { ToolNames } from "../../core/tool-names.js";
|
|
5
|
+
import { clioConfigDir, clioStateDir } from "../../core/xdg.js";
|
|
6
|
+
import { expandPath, readPathVariants } from "../../tools/path-utils.js";
|
|
7
|
+
import { INTEROP_AGENT_KINDS } from "../interop/registry.js";
|
|
8
|
+
import { isSameOrDescendant } from "./path-policy.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The read-class tools that take a path from the model. Each opens whatever
|
|
12
|
+
* the path resolves to, so each is held to the workspace the same way.
|
|
13
|
+
*/
|
|
14
|
+
const READ_SCOPE_TOOLS: ReadonlySet<string> = new Set([ToolNames.Read, ToolNames.Ls, ToolNames.Grep, ToolNames.Find]);
|
|
15
|
+
|
|
16
|
+
export function isReadScopeTool(tool: string): boolean {
|
|
17
|
+
return READ_SCOPE_TOOLS.has(tool);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ReadScopeExemptRoot {
|
|
21
|
+
path: string;
|
|
22
|
+
/** True for a tree tools can never write (skill authority, foreign agent dirs). */
|
|
23
|
+
operatorOwned: boolean;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Trees outside the workspace that Clio itself points the model at: installed
|
|
28
|
+
* skills, plugins, and extensions (a loaded SKILL.md names sibling files), the
|
|
29
|
+
* user skill roots of the agents Clio interoperates with, the offload scratch
|
|
30
|
+
* a truncation stub names, and dispatch receipts. They are operator-owned or
|
|
31
|
+
* Clio-written, the model cannot author them, and zero-access entries still
|
|
32
|
+
* apply inside them. Lexical on purpose: they are resolved again at every
|
|
33
|
+
* admission, because an operator may replace a link after the session starts.
|
|
34
|
+
*/
|
|
35
|
+
export function readScopeExemptRoots(): ReadScopeExemptRoot[] {
|
|
36
|
+
const roots: ReadScopeExemptRoot[] = [];
|
|
37
|
+
try {
|
|
38
|
+
const config = clioConfigDir();
|
|
39
|
+
for (const kind of ["skills", "plugins", "extensions"]) {
|
|
40
|
+
roots.push({ path: path.join(config, kind), operatorOwned: true });
|
|
41
|
+
}
|
|
42
|
+
const state = clioStateDir();
|
|
43
|
+
roots.push({ path: path.join(state, "scratch"), operatorOwned: false });
|
|
44
|
+
roots.push({ path: path.join(state, "receipts"), operatorOwned: false });
|
|
45
|
+
} catch {
|
|
46
|
+
// An unresolvable Clio home exempts nothing.
|
|
47
|
+
}
|
|
48
|
+
const home = homedir();
|
|
49
|
+
for (const kind of INTEROP_AGENT_KINDS) {
|
|
50
|
+
if (kind.userSkillRoot !== undefined) {
|
|
51
|
+
roots.push({ path: path.join(home, kind.userSkillRoot), operatorOwned: true });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return roots;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Every spelling a read tool can open for one path argument, already expanded
|
|
59
|
+
* the way the tool expands it and never to be expanded again (a fallback
|
|
60
|
+
* carries the narrow no-break space that expansion folds away): the path as
|
|
61
|
+
* given, then the fallbacks resolveReadPath tries on the resolved path when it
|
|
62
|
+
* does not exist. A fallback can name a link the plain spelling does not, so
|
|
63
|
+
* the path policy and the scope check judge each of them.
|
|
64
|
+
*/
|
|
65
|
+
export function readScopeSpellings(rawPath: string, callCwd: string): string[] {
|
|
66
|
+
const expanded = expandPath(rawPath);
|
|
67
|
+
const resolved = canonicalizeRawPath(expanded, callCwd) ?? path.resolve(callCwd, expanded);
|
|
68
|
+
return [expanded, ...readPathVariants(resolved)];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function hasParentSegment(rawPath: string): boolean {
|
|
72
|
+
return rawPath.split(/[\\/]/u).includes("..");
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Where a read-class path call lands when that is outside the workspace, or
|
|
77
|
+
* null when it stays inside or inside an exempt root. The target is resolved
|
|
78
|
+
* the way the read tools resolve it (resolveReadPath: physical, `link/..`
|
|
79
|
+
* steps up from the link's target). A path that cannot be canonicalized is
|
|
80
|
+
* outside: nothing proves where a read through it lands.
|
|
81
|
+
*
|
|
82
|
+
* An exempt root admits a target whose real path sits under the root's real
|
|
83
|
+
* path. An operator-owned root also admits a path that, as written, has no
|
|
84
|
+
* `..` and sits under the root as written: an operator may install one skill
|
|
85
|
+
* as a link into a dotfiles tree, and what a tree no tool can write links to
|
|
86
|
+
* is the operator's choice.
|
|
87
|
+
*/
|
|
88
|
+
export function readScopeEscape(
|
|
89
|
+
rawPath: string,
|
|
90
|
+
callCwd: string,
|
|
91
|
+
workspace: string,
|
|
92
|
+
exemptRoots: ReadonlyArray<ReadScopeExemptRoot>,
|
|
93
|
+
memo: PathWalkMemo,
|
|
94
|
+
): string | null {
|
|
95
|
+
for (const spelling of readScopeSpellings(rawPath, callCwd)) {
|
|
96
|
+
const escaped = spellingEscape(spelling, callCwd, workspace, exemptRoots, memo);
|
|
97
|
+
if (escaped !== null) return escaped;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function spellingEscape(
|
|
103
|
+
expanded: string,
|
|
104
|
+
callCwd: string,
|
|
105
|
+
workspace: string,
|
|
106
|
+
exemptRoots: ReadonlyArray<ReadScopeExemptRoot>,
|
|
107
|
+
memo: PathWalkMemo,
|
|
108
|
+
): string | null {
|
|
109
|
+
const physical = canonicalizeRawPath(expanded, callCwd, memo);
|
|
110
|
+
if (physical !== null && isSameOrDescendant(physical, workspace)) return null;
|
|
111
|
+
const lexical = path.resolve(callCwd, expanded);
|
|
112
|
+
const lexicalEligible = !hasParentSegment(expanded);
|
|
113
|
+
for (const root of exemptRoots) {
|
|
114
|
+
if (root.operatorOwned && lexicalEligible && isSameOrDescendant(lexical, root.path)) return null;
|
|
115
|
+
if (physical === null) continue;
|
|
116
|
+
const realRoot = canonicalizePath(root.path, memo);
|
|
117
|
+
if (realRoot !== null && isSameOrDescendant(physical, realRoot)) return null;
|
|
118
|
+
}
|
|
119
|
+
return physical ?? lexical;
|
|
120
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { canonicalizeExistingPath } from "../../core/path-canonical.js";
|
|
3
|
+
import { canonicalizeExistingPath, canonicalizeRawPath, type PathWalkMemo } from "../../core/path-canonical.js";
|
|
4
4
|
import { clioConfigDir } from "../../core/xdg.js";
|
|
5
5
|
import { isSameOrDescendant, type PathPolicyOperation } from "./path-policy.js";
|
|
6
6
|
import { extractCommandCdTargets } from "./protected-artifacts.js";
|
|
@@ -16,35 +16,71 @@ export function activeClioSkillRoots(cwd: string): string[] {
|
|
|
16
16
|
]);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
/** Where one mutating path target can land, lexically and physically, from one possible working directory. */
|
|
20
|
+
export interface MutationCandidate {
|
|
21
|
+
operation: PathPolicyOperation;
|
|
22
|
+
lexical: string;
|
|
23
|
+
resolved: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Resolve every mutating target once per admission, so each authority check
|
|
28
|
+
* that follows compares the same answers instead of walking the target again.
|
|
29
|
+
*/
|
|
30
|
+
export function mutationCandidates(
|
|
21
31
|
targets: ReadonlyArray<{ operation: PathPolicyOperation; path: string }>,
|
|
22
32
|
cwd: string,
|
|
23
33
|
command: string | null,
|
|
24
|
-
|
|
34
|
+
memo: PathWalkMemo,
|
|
35
|
+
): MutationCandidate[] {
|
|
25
36
|
const workingDirs = [cwd];
|
|
26
37
|
// Existing shell inspection extracts literal path-bearing operations. Include
|
|
27
38
|
// their possible cd bases so a visible cd cannot hide the protected target.
|
|
28
39
|
// This deliberately cannot interpret arbitrary programs, variables or aliases.
|
|
40
|
+
// A shell cd is logical unless `-P` makes it physical, so both chains count.
|
|
29
41
|
if (command !== null) {
|
|
42
|
+
let logical = cwd;
|
|
43
|
+
let physical = cwd;
|
|
30
44
|
for (const destination of extractCommandCdTargets(command)) {
|
|
31
|
-
|
|
45
|
+
const next = expandHome(destination);
|
|
46
|
+
logical = path.resolve(logical, next);
|
|
47
|
+
physical = canonicalizeRawPath(next, physical, memo) ?? path.resolve(physical, next);
|
|
48
|
+
workingDirs.push(logical);
|
|
49
|
+
if (physical !== logical) workingDirs.push(physical);
|
|
32
50
|
}
|
|
33
51
|
}
|
|
52
|
+
const candidates: MutationCandidate[] = [];
|
|
34
53
|
for (const target of targets) {
|
|
35
54
|
if (target.operation === "read") continue;
|
|
36
55
|
for (const directory of workingDirs) {
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
56
|
+
const raw = expandHome(target.path);
|
|
57
|
+
const lexical = path.resolve(directory, raw);
|
|
58
|
+
// Physical, as the kernel resolves `link/..` in a write target.
|
|
59
|
+
const resolved = canonicalizeRawPath(raw, directory, memo) ?? canonicalizeExistingPath(lexical, memo);
|
|
60
|
+
candidates.push({ operation: target.operation, lexical, resolved });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return candidates;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function skillMutationReason(
|
|
67
|
+
roots: ReadonlyArray<string>,
|
|
68
|
+
candidates: ReadonlyArray<MutationCandidate>,
|
|
69
|
+
memo: PathWalkMemo,
|
|
70
|
+
): string | null {
|
|
71
|
+
// Each root resolves at most once per check, and only when a candidate
|
|
72
|
+
// reaches it, in the order the candidates reach it.
|
|
73
|
+
const boundaries: Array<readonly string[] | undefined> = [];
|
|
74
|
+
for (const candidate of candidates) {
|
|
75
|
+
for (const [index, root] of roots.entries()) {
|
|
76
|
+
boundaries[index] ??= [root, canonicalizeExistingPath(root, memo)];
|
|
77
|
+
for (const boundary of boundaries[index]) {
|
|
78
|
+
for (const location of [candidate.lexical, candidate.resolved]) {
|
|
79
|
+
if (
|
|
80
|
+
isSameOrDescendant(location, boundary) ||
|
|
81
|
+
(candidate.operation === "delete" && isSameOrDescendant(boundary, location))
|
|
82
|
+
) {
|
|
83
|
+
return `active resource tree ${root} is operator-owned; draft changes outside installed resource roots and use the operator install or update interface`;
|
|
48
84
|
}
|
|
49
85
|
}
|
|
50
86
|
}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
21
|
import type { FleetNodeSettings } from "../../core/defaults.js";
|
|
22
|
+
import type { LocalCapacity, LocalCapacityBound } from "./local-capacity.js";
|
|
22
23
|
|
|
23
24
|
export type FleetNodeState = "online" | "offline";
|
|
24
25
|
|
|
@@ -30,6 +31,8 @@ export interface FleetNodeSnapshot {
|
|
|
30
31
|
stateReason: string | null;
|
|
31
32
|
activeWorkers: number;
|
|
32
33
|
maxWorkers: number;
|
|
34
|
+
/** What bound `maxWorkers`; null for SSH nodes, which declare their own. */
|
|
35
|
+
capacityBound: LocalCapacityBound | null;
|
|
33
36
|
labels: ReadonlyArray<string>;
|
|
34
37
|
lastSeenAt: string | null;
|
|
35
38
|
}
|
|
@@ -56,6 +59,8 @@ export interface FleetRegistry {
|
|
|
56
59
|
* then a snapshot reports zero rather than inventing a process-local count.
|
|
57
60
|
*/
|
|
58
61
|
bindActiveWorkers(source: (nodeId: string) => number): void;
|
|
62
|
+
/** Lease-derived active workers on one node; zero before a source is bound. */
|
|
63
|
+
activeWorkers(nodeId: string): number;
|
|
59
64
|
}
|
|
60
65
|
|
|
61
66
|
export const LOCAL_NODE_ID = "local";
|
|
@@ -72,8 +77,8 @@ interface NodeRuntimeState {
|
|
|
72
77
|
|
|
73
78
|
export interface FleetRegistryOptions {
|
|
74
79
|
now?: () => number;
|
|
75
|
-
/** Display-only
|
|
76
|
-
|
|
80
|
+
/** Display-only limit for the implicit local node and what bound it. */
|
|
81
|
+
localCapacity?: () => LocalCapacity;
|
|
77
82
|
/** Durable lease-derived usage; never a process-local counter. */
|
|
78
83
|
activeWorkers?: (nodeId: string) => number;
|
|
79
84
|
}
|
|
@@ -102,6 +107,7 @@ export function createFleetRegistry(
|
|
|
102
107
|
function snapshotFor(id: string, config: FleetNodeSettings | null): FleetNodeSnapshot {
|
|
103
108
|
const state = stateFor(id);
|
|
104
109
|
if (config === null) {
|
|
110
|
+
const capacity = options?.localCapacity?.();
|
|
105
111
|
return {
|
|
106
112
|
id: LOCAL_NODE_ID,
|
|
107
113
|
host: "localhost",
|
|
@@ -109,7 +115,8 @@ export function createFleetRegistry(
|
|
|
109
115
|
state: state.state,
|
|
110
116
|
stateReason: state.stateReason,
|
|
111
117
|
activeWorkers: activeWorkers?.(LOCAL_NODE_ID) ?? 0,
|
|
112
|
-
maxWorkers:
|
|
118
|
+
maxWorkers: capacity?.limit ?? Number.POSITIVE_INFINITY,
|
|
119
|
+
capacityBound: capacity?.bound ?? null,
|
|
113
120
|
labels: [],
|
|
114
121
|
lastSeenAt: state.lastSeenMs !== null ? new Date(state.lastSeenMs).toISOString() : null,
|
|
115
122
|
};
|
|
@@ -122,6 +129,7 @@ export function createFleetRegistry(
|
|
|
122
129
|
stateReason: state.stateReason,
|
|
123
130
|
activeWorkers: activeWorkers?.(id) ?? 0,
|
|
124
131
|
maxWorkers: config.maxWorkers,
|
|
132
|
+
capacityBound: null,
|
|
125
133
|
labels: [...(config.labels ?? [])],
|
|
126
134
|
lastSeenAt: state.lastSeenMs !== null ? new Date(state.lastSeenMs).toISOString() : null,
|
|
127
135
|
};
|
|
@@ -161,6 +169,9 @@ export function createFleetRegistry(
|
|
|
161
169
|
bindActiveWorkers(source) {
|
|
162
170
|
activeWorkers = source;
|
|
163
171
|
},
|
|
172
|
+
activeWorkers(nodeId) {
|
|
173
|
+
return activeWorkers?.(nodeId) ?? 0;
|
|
174
|
+
},
|
|
164
175
|
recordChannelSuccess(id) {
|
|
165
176
|
const state = stateFor(id);
|
|
166
177
|
state.consecutiveFailures = 0;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { BudgetVerdict } from "./budget.js";
|
|
2
2
|
import type { FleetRegistry } from "./cluster.js";
|
|
3
|
+
import type { LocalCapacity } from "./local-capacity.js";
|
|
3
4
|
|
|
4
5
|
export interface BudgetPreflight {
|
|
5
6
|
verdict: BudgetVerdict;
|
|
@@ -21,6 +22,12 @@ export interface SchedulingContract {
|
|
|
21
22
|
preflight(): BudgetPreflight;
|
|
22
23
|
/** Configured global worker capacity; durable leases own active usage. */
|
|
23
24
|
maxWorkers(): number;
|
|
25
|
+
/**
|
|
26
|
+
* Worker limit for the implicit local node and the input that bound it.
|
|
27
|
+
* Under `auto` this follows host CPU and memory; optional so minimal
|
|
28
|
+
* scheduling stubs remain valid, and dispatch then uses `maxWorkers`.
|
|
29
|
+
*/
|
|
30
|
+
localCapacity?(): LocalCapacity;
|
|
24
31
|
/**
|
|
25
32
|
* Fleet node registry backing multi-node placement: per-node states,
|
|
26
33
|
* capacity accounting, and channel-failure classification. Optional so
|
|
@@ -11,17 +11,23 @@ import type { DomainBundle, DomainContext, DomainExtension } from "../../core/do
|
|
|
11
11
|
import type { ConfigContract } from "../config/contract.js";
|
|
12
12
|
import type { ObservabilityContract } from "../observability/contract.js";
|
|
13
13
|
import { createBudgetState } from "./budget.js";
|
|
14
|
-
import { createFleetRegistry } from "./cluster.js";
|
|
14
|
+
import { createFleetRegistry, LOCAL_NODE_ID } from "./cluster.js";
|
|
15
15
|
import type { SchedulingContract } from "./contract.js";
|
|
16
|
+
import {
|
|
17
|
+
createLocalCapacitySampler,
|
|
18
|
+
type LocalCapacitySamplerOptions,
|
|
19
|
+
resolveGlobalConcurrency,
|
|
20
|
+
} from "./local-capacity.js";
|
|
16
21
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (concurrency === "auto") return DEFAULT_MAX_WORKERS;
|
|
21
|
-
return Math.max(1, concurrency);
|
|
22
|
+
export interface SchedulingBundleOptions {
|
|
23
|
+
/** Host sampling seams for `fleet.concurrency: auto`; tests inject facts and a clock. */
|
|
24
|
+
localCapacity?: Omit<LocalCapacitySamplerOptions, "activeLocalWorkers">;
|
|
22
25
|
}
|
|
23
26
|
|
|
24
|
-
export function createSchedulingBundle(
|
|
27
|
+
export function createSchedulingBundle(
|
|
28
|
+
context: DomainContext,
|
|
29
|
+
options: SchedulingBundleOptions = {},
|
|
30
|
+
): DomainBundle<SchedulingContract> {
|
|
25
31
|
const maybeConfig = context.getContract<ConfigContract>("config");
|
|
26
32
|
if (!maybeConfig) throw new Error("scheduling domain requires 'config' contract");
|
|
27
33
|
const config: ConfigContract = maybeConfig;
|
|
@@ -29,8 +35,12 @@ export function createSchedulingBundle(context: DomainContext): DomainBundle<Sch
|
|
|
29
35
|
|
|
30
36
|
const settings = config.get();
|
|
31
37
|
let budget = createBudgetState(settings.safety.limits.sessionCostUsd);
|
|
38
|
+
const localCapacity = createLocalCapacitySampler({
|
|
39
|
+
...options.localCapacity,
|
|
40
|
+
activeLocalWorkers: () => fleet.activeWorkers(LOCAL_NODE_ID),
|
|
41
|
+
});
|
|
32
42
|
const fleet = createFleetRegistry(() => config.get().fleet?.nodes ?? [], {
|
|
33
|
-
|
|
43
|
+
localCapacity: () => localCapacity.resolve(config.get().fleet.concurrency),
|
|
34
44
|
});
|
|
35
45
|
const unsubscribes: Array<() => void> = [];
|
|
36
46
|
|
|
@@ -83,7 +93,8 @@ export function createSchedulingBundle(context: DomainContext): DomainBundle<Sch
|
|
|
83
93
|
const { verdict, currentUsd } = evaluate();
|
|
84
94
|
return { verdict, currentUsd, ceilingUsd: budget.ceilingUsd };
|
|
85
95
|
},
|
|
86
|
-
maxWorkers: () =>
|
|
96
|
+
maxWorkers: () => resolveGlobalConcurrency(config.get().fleet.concurrency),
|
|
97
|
+
localCapacity: () => localCapacity.resolve(config.get().fleet.concurrency),
|
|
87
98
|
fleet,
|
|
88
99
|
};
|
|
89
100
|
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one resolver for `fleet.concurrency`.
|
|
3
|
+
*
|
|
4
|
+
* A numeric setting is the exact worker limit for both the global pool and the
|
|
5
|
+
* local node. `auto` sizes only the local node from host facts: usable CPUs,
|
|
6
|
+
* available memory, and a cgroup memory limit when one is set, so a job inside
|
|
7
|
+
* a batch allocation is not sized from the whole machine. The global pool under
|
|
8
|
+
* `auto` resolves to the upper cap, because SSH nodes carry their own
|
|
9
|
+
* `maxWorkers` and a small orchestrator host must not shrink remote work.
|
|
10
|
+
*
|
|
11
|
+
* Memory held by Clio's own running local workers is added back so the limit
|
|
12
|
+
* does not collapse as the fleet it admits starts, and host facts are sampled
|
|
13
|
+
* at most once per interval.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { availableParallelism, freemem, totalmem } from "node:os";
|
|
17
|
+
|
|
18
|
+
/** Which input decided the worker limit. */
|
|
19
|
+
export type LocalCapacityBound = "configured" | "cpu" | "memory" | "cgroup" | "cap";
|
|
20
|
+
|
|
21
|
+
export interface LocalCapacity {
|
|
22
|
+
limit: number;
|
|
23
|
+
bound: LocalCapacityBound;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface HostCapacityFacts {
|
|
27
|
+
/** Usable CPUs for this process; respects affinity masks such as a Slurm cpuset. */
|
|
28
|
+
cpus: number;
|
|
29
|
+
/** Host memory available to new processes (Linux MemAvailable). */
|
|
30
|
+
availableMemoryBytes: number;
|
|
31
|
+
/** Memory still available inside the cgroup limit; null when no limit is set. */
|
|
32
|
+
cgroupAvailableBytes: number | null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Upper bound for `auto`, and the global pool under `auto`. Inference is bounded
|
|
37
|
+
* separately by per-endpoint slot limits, so this caps process fan-out only.
|
|
38
|
+
*/
|
|
39
|
+
export const AUTO_MAX_WORKERS = 8;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Planning estimate per worker process. Observed worker RSS is 160 to 270 MB,
|
|
43
|
+
* but workers run compilers, type checkers, and test suites whose children
|
|
44
|
+
* routinely take several hundred MB more, so the estimate sits near four times
|
|
45
|
+
* the observed worker alone.
|
|
46
|
+
*/
|
|
47
|
+
export const WORKER_MEMORY_ESTIMATE_BYTES = 1024 * 1024 * 1024;
|
|
48
|
+
|
|
49
|
+
/** Memory left for the OS, the orchestrator, and local inference servers. */
|
|
50
|
+
export const OS_MEMORY_RESERVE_BYTES = 2 * 1024 * 1024 * 1024;
|
|
51
|
+
|
|
52
|
+
/** Minimum spacing between host samples. */
|
|
53
|
+
export const HOST_SAMPLE_INTERVAL_MS = 30_000;
|
|
54
|
+
|
|
55
|
+
/** Global worker pool for a `fleet.concurrency` setting. */
|
|
56
|
+
export function resolveGlobalConcurrency(configured: "auto" | number | undefined): number {
|
|
57
|
+
if (configured === undefined || configured === "auto") return AUTO_MAX_WORKERS;
|
|
58
|
+
return Math.max(1, Math.floor(configured));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function workersFor(bytes: number): number {
|
|
62
|
+
return Math.max(1, Math.floor((bytes - OS_MEMORY_RESERVE_BYTES) / WORKER_MEMORY_ESTIMATE_BYTES));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Local node limit for a `fleet.concurrency` setting. `clioHeldBytes` is memory
|
|
67
|
+
* Clio's running local workers held when the facts were sampled; it is added
|
|
68
|
+
* back so admitted workers do not count against their own fleet.
|
|
69
|
+
*/
|
|
70
|
+
export function resolveLocalConcurrency(
|
|
71
|
+
configured: "auto" | number | undefined,
|
|
72
|
+
facts: HostCapacityFacts,
|
|
73
|
+
clioHeldBytes = 0,
|
|
74
|
+
): LocalCapacity {
|
|
75
|
+
if (configured !== undefined && configured !== "auto")
|
|
76
|
+
return { limit: resolveGlobalConcurrency(configured), bound: "configured" };
|
|
77
|
+
// Ties report the earlier input, so a host that fits the cap reports the cap.
|
|
78
|
+
const candidates: LocalCapacity[] = [
|
|
79
|
+
{ limit: AUTO_MAX_WORKERS, bound: "cap" },
|
|
80
|
+
{ limit: Math.max(1, Math.floor(facts.cpus)), bound: "cpu" },
|
|
81
|
+
{ limit: workersFor(facts.availableMemoryBytes + clioHeldBytes), bound: "memory" },
|
|
82
|
+
];
|
|
83
|
+
if (facts.cgroupAvailableBytes !== null)
|
|
84
|
+
candidates.push({ limit: workersFor(facts.cgroupAvailableBytes + clioHeldBytes), bound: "cgroup" });
|
|
85
|
+
let best = candidates[0] as LocalCapacity;
|
|
86
|
+
for (const candidate of candidates) if (candidate.limit < best.limit) best = candidate;
|
|
87
|
+
return best;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* One short phrase naming what binds an `auto` limit, or null when the limit is
|
|
92
|
+
* the configured number or the cap.
|
|
93
|
+
*/
|
|
94
|
+
export function describeLocalCapacity(capacity: LocalCapacity): string | null {
|
|
95
|
+
if (capacity.bound === "configured" || capacity.bound === "cap") return null;
|
|
96
|
+
return `${capacity.bound}-bound at ${capacity.limit}`;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** Read this process's host facts. Tests inject facts instead of calling this. */
|
|
100
|
+
export function observeHostCapacityFacts(): HostCapacityFacts {
|
|
101
|
+
const available = freemem();
|
|
102
|
+
// constrainedMemory() reports an unbounded sentinel (or 0) when no cgroup
|
|
103
|
+
// limit applies; only a limit below physical memory constrains anything.
|
|
104
|
+
// availableMemory() is then the headroom left inside that limit.
|
|
105
|
+
const constrained = process.constrainedMemory();
|
|
106
|
+
const limited = Number.isFinite(constrained) && constrained > 0 && constrained < totalmem();
|
|
107
|
+
return {
|
|
108
|
+
cpus: availableParallelism(),
|
|
109
|
+
availableMemoryBytes: available,
|
|
110
|
+
cgroupAvailableBytes: limited ? process.availableMemory() : null,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export interface LocalCapacitySamplerOptions {
|
|
115
|
+
observe?: () => HostCapacityFacts;
|
|
116
|
+
/** Clio workers currently leased on the local node. */
|
|
117
|
+
activeLocalWorkers: () => number;
|
|
118
|
+
monotonicNow?: () => number;
|
|
119
|
+
intervalMs?: number;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface LocalCapacitySampler {
|
|
123
|
+
resolve(configured: "auto" | number | undefined): LocalCapacity;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
interface HostSample {
|
|
127
|
+
facts: HostCapacityFacts;
|
|
128
|
+
activeWorkers: number;
|
|
129
|
+
/** Last time host facts and the active-worker count were sampled together. */
|
|
130
|
+
checkedAtMs: number;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Rate-limited host sampling for `auto`, including while workers run. Each
|
|
135
|
+
* sample captures its active-worker count so the add-back accounts for workers
|
|
136
|
+
* included in those memory facts, not workers admitted after the sample.
|
|
137
|
+
*/
|
|
138
|
+
export function createLocalCapacitySampler(options: LocalCapacitySamplerOptions): LocalCapacitySampler {
|
|
139
|
+
const observe = options.observe ?? observeHostCapacityFacts;
|
|
140
|
+
const monotonicNow = options.monotonicNow ?? (() => performance.now());
|
|
141
|
+
const intervalMs = options.intervalMs ?? HOST_SAMPLE_INTERVAL_MS;
|
|
142
|
+
let sample: HostSample | null = null;
|
|
143
|
+
|
|
144
|
+
function current(): HostSample {
|
|
145
|
+
const atMs = monotonicNow();
|
|
146
|
+
if (sample !== null && atMs - sample.checkedAtMs < intervalMs) return sample;
|
|
147
|
+
const activeWorkers = options.activeLocalWorkers();
|
|
148
|
+
sample = { facts: observe(), activeWorkers, checkedAtMs: atMs };
|
|
149
|
+
return sample;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return {
|
|
153
|
+
resolve(configured) {
|
|
154
|
+
if (configured !== undefined && configured !== "auto")
|
|
155
|
+
return { limit: resolveGlobalConcurrency(configured), bound: "configured" };
|
|
156
|
+
const { facts, activeWorkers } = current();
|
|
157
|
+
return resolveLocalConcurrency("auto", facts, activeWorkers * WORKER_MEMORY_ESTIMATE_BYTES);
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
@@ -56,6 +56,7 @@ export interface ContextSnapshot {
|
|
|
56
56
|
categories: {
|
|
57
57
|
system: number;
|
|
58
58
|
tools: number;
|
|
59
|
+
toolResults?: number;
|
|
59
60
|
agents: number;
|
|
60
61
|
skills: number;
|
|
61
62
|
memory: number;
|
|
@@ -248,7 +249,10 @@ export function estimateAgentMessageTokens(message: MessageTokenEstimateInput):
|
|
|
248
249
|
export function estimateAgentContextBreakdown(input: AgentContextEstimateInput): ContextUsageBreakdown {
|
|
249
250
|
return {
|
|
250
251
|
systemPromptTokens: input.systemPrompt ? ceilChars(input.systemPrompt.length) : 0,
|
|
251
|
-
messageTokens: input.messages.reduce(
|
|
252
|
+
messageTokens: input.messages.reduce(
|
|
253
|
+
(sum, message) => sum + (message.role === "system" ? 0 : estimateAgentMessageTokens(message)),
|
|
254
|
+
0,
|
|
255
|
+
),
|
|
252
256
|
pendingUserTokens: input.pendingUserText ? ceilChars(input.pendingUserText.length) : 0,
|
|
253
257
|
toolSchemaTokens: (input.tools ?? []).reduce<number>((sum, tool) => sum + ceilChars(toolSchemaChars(tool)), 0),
|
|
254
258
|
};
|
|
@@ -263,7 +267,7 @@ export function estimateAgentContextTokens(input: AgentContextEstimateInput): nu
|
|
|
263
267
|
if (!usage) return projection;
|
|
264
268
|
const trailingTokens = input.messages
|
|
265
269
|
.slice(usage.index + 1)
|
|
266
|
-
.reduce((sum, message) => sum + estimateAgentMessageTokens(message), 0);
|
|
270
|
+
.reduce((sum, message) => sum + (message.role === "system" ? 0 : estimateAgentMessageTokens(message)), 0);
|
|
267
271
|
const anchored = usage.tokens + trailingTokens + breakdown.pendingUserTokens + breakdown.toolSchemaTokens;
|
|
268
272
|
return Math.max(projection, anchored);
|
|
269
273
|
}
|
|
@@ -381,6 +385,7 @@ function buildSnapshotCategories(inputs: {
|
|
|
381
385
|
const raw: {
|
|
382
386
|
system: number;
|
|
383
387
|
tools: number;
|
|
388
|
+
toolResults: number;
|
|
384
389
|
agents: number;
|
|
385
390
|
skills: number;
|
|
386
391
|
memory: number;
|
|
@@ -390,6 +395,7 @@ function buildSnapshotCategories(inputs: {
|
|
|
390
395
|
} = {
|
|
391
396
|
system: 0,
|
|
392
397
|
tools: 0,
|
|
398
|
+
toolResults: 0,
|
|
393
399
|
agents: 0,
|
|
394
400
|
skills: 0,
|
|
395
401
|
memory: 0,
|
|
@@ -414,7 +420,9 @@ function buildSnapshotCategories(inputs: {
|
|
|
414
420
|
|
|
415
421
|
if (inputs.messages) {
|
|
416
422
|
for (const msg of inputs.messages) {
|
|
417
|
-
|
|
423
|
+
const message = msg as MessageTokenEstimateInput;
|
|
424
|
+
const bucket = message.role === "toolResult" ? "toolResults" : "messages";
|
|
425
|
+
raw[bucket] += estimateAgentMessageTokens(message);
|
|
418
426
|
}
|
|
419
427
|
}
|
|
420
428
|
|
|
@@ -432,6 +440,7 @@ function buildSnapshotCategories(inputs: {
|
|
|
432
440
|
return {
|
|
433
441
|
system: raw.system,
|
|
434
442
|
tools: raw.tools,
|
|
443
|
+
toolResults: raw.toolResults,
|
|
435
444
|
agents: raw.agents,
|
|
436
445
|
skills: raw.skills,
|
|
437
446
|
memory: raw.memory,
|
|
@@ -463,7 +472,16 @@ export interface CaptureContextSnapshotInput {
|
|
|
463
472
|
toolSignature?: string | undefined;
|
|
464
473
|
}
|
|
465
474
|
|
|
466
|
-
const SNAPSHOT_SPLIT_KEYS = [
|
|
475
|
+
const SNAPSHOT_SPLIT_KEYS = [
|
|
476
|
+
"system",
|
|
477
|
+
"tools",
|
|
478
|
+
"agents",
|
|
479
|
+
"skills",
|
|
480
|
+
"memory",
|
|
481
|
+
"project",
|
|
482
|
+
"messages",
|
|
483
|
+
"toolResults",
|
|
484
|
+
] as const;
|
|
467
485
|
|
|
468
486
|
function estimatedSplitSources(): Record<string, "estimated" | "exact" | "reconciled"> {
|
|
469
487
|
const splits: Record<string, "estimated" | "exact" | "reconciled"> = {};
|
|
@@ -561,33 +579,28 @@ export function reconcileSnapshot(snapshot: ContextSnapshot, usage: Usage): Cont
|
|
|
561
579
|
}
|
|
562
580
|
|
|
563
581
|
const keys = SNAPSHOT_SPLIT_KEYS;
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
);
|
|
576
|
-
|
|
577
|
-
normalized = {};
|
|
578
|
-
let newSum = 0;
|
|
579
|
-
for (const key of keys) {
|
|
580
|
-
const val = currentCategories[key] ?? 0;
|
|
581
|
-
const norm = Math.round((val / sum) * exactInput);
|
|
582
|
-
normalized[key] = norm;
|
|
583
|
-
newSum += norm;
|
|
584
|
-
}
|
|
585
|
-
const diff = exactInput - newSum;
|
|
586
|
-
if (diff !== 0) {
|
|
587
|
-
const largestKey = keys.reduce((a, b) => ((normalized[a] ?? 0) >= (normalized[b] ?? 0) ? a : b));
|
|
588
|
-
normalized[largestKey] = (normalized[largestKey] ?? 0) + diff;
|
|
589
|
-
}
|
|
582
|
+
|
|
583
|
+
// Provider totals do not measure individual categories. Keep the compiled
|
|
584
|
+
// prefix estimates stable as conversation grows; never assign result growth
|
|
585
|
+
// to tool definitions. If the measured prompt is smaller than the prefix
|
|
586
|
+
// estimate, proportionally cap that estimate to the available total.
|
|
587
|
+
const normalized: Record<string, number> = {};
|
|
588
|
+
const staticKeys = keys.filter((key) => key !== "messages" && key !== "toolResults");
|
|
589
|
+
const staticSum = staticKeys.reduce((sum, key) => sum + (snapshot.categories[key] ?? 0), 0);
|
|
590
|
+
const scale = staticSum > exactInput ? exactInput / staticSum : 1;
|
|
591
|
+
let prefix = 0;
|
|
592
|
+
for (const key of staticKeys) {
|
|
593
|
+
normalized[key] = Math.floor((snapshot.categories[key] ?? 0) * scale);
|
|
594
|
+
prefix += normalized[key] ?? 0;
|
|
590
595
|
}
|
|
596
|
+
const remaining = exactInput - prefix;
|
|
597
|
+
const resultEstimate = snapshot.categories.toolResults ?? 0;
|
|
598
|
+
const conversationEstimate = resultEstimate + snapshot.categories.messages;
|
|
599
|
+
const conversationScale = conversationEstimate > remaining ? remaining / conversationEstimate : 1;
|
|
600
|
+
normalized.toolResults = Math.floor(resultEstimate * conversationScale);
|
|
601
|
+
// Includes unclassified provider framing / tokenizer differences; this is
|
|
602
|
+
// a residual, not a claim that the provider measured message categories.
|
|
603
|
+
normalized.messages = remaining - normalized.toolResults;
|
|
591
604
|
|
|
592
605
|
const updatedCategories = {
|
|
593
606
|
...snapshot.categories,
|
|
@@ -609,7 +622,7 @@ export function reconcileSnapshot(snapshot: ContextSnapshot, usage: Usage): Cont
|
|
|
609
622
|
|
|
610
623
|
const splitsSources = keys.reduce(
|
|
611
624
|
(acc, k) => {
|
|
612
|
-
acc[k] = "reconciled";
|
|
625
|
+
acc[k] = k === "messages" ? "reconciled" : "estimated";
|
|
613
626
|
return acc;
|
|
614
627
|
},
|
|
615
628
|
{} as Record<string, "estimated" | "exact" | "reconciled">,
|