@iowarp/clio-coder 0.4.9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +11 -3
- package/CHANGELOG.md +153 -0
- package/CODE_OF_CONDUCT.md +10 -0
- package/CONTRIBUTING.md +208 -382
- package/NOTICE +8 -2
- package/README.md +199 -418
- package/ROADMAP.md +82 -0
- package/SECURITY.md +14 -11
- package/dist/acp-KS7ARGV6.js +132 -0
- package/dist/agents-YOGJ2YEJ.js +163 -0
- package/dist/assets/codewiki.json +1 -1
- package/dist/auth-CEDCO6O6.js +557 -0
- package/dist/background-YWTBPSQU.js +39 -0
- package/dist/builtins-GDYO4RTR.js +23 -0
- package/dist/chunk-27YTM2CV.js +175 -0
- package/dist/chunk-2AF6YC7Q.js +75 -0
- package/dist/chunk-2DTIWSAW.js +381 -0
- package/dist/chunk-2EMLKSCX.js +262 -0
- package/dist/chunk-2OJ3YZQP.js +665 -0
- package/dist/chunk-2VLYHHFT.js +35 -0
- package/dist/chunk-2WVPJF3Z.js +204 -0
- package/dist/chunk-33OASOS6.js +176 -0
- package/dist/chunk-3BD2LXYJ.js +19 -0
- package/dist/chunk-3JHUFKG7.js +30 -0
- package/dist/chunk-3JLTRPN7.js +711 -0
- package/dist/chunk-3LT34CAM.js +2796 -0
- package/dist/chunk-3O5JWP4L.js +1670 -0
- package/dist/chunk-3UW3KU4A.js +21 -0
- package/dist/chunk-4A6YRGV4.js +569 -0
- package/dist/chunk-4D2BRCZ3.js +67 -0
- package/dist/chunk-4SYHGVDE.js +668 -0
- package/dist/chunk-4VDHLCF5.js +66 -0
- package/dist/chunk-4WOOTKFD.js +637 -0
- package/dist/chunk-4WV4PI66.js +80 -0
- package/dist/chunk-53OXPRI6.js +195 -0
- package/dist/chunk-55RMDDFM.js +1347 -0
- package/dist/chunk-56XP4FJU.js +2025 -0
- package/dist/chunk-5B3RTYAK.js +123 -0
- package/dist/chunk-5CD243WE.js +45 -0
- package/dist/chunk-5JQR5B4D.js +709 -0
- package/dist/chunk-5KQEUIWM.js +597 -0
- package/dist/chunk-5LP5FNNR.js +915 -0
- package/dist/chunk-62UK7AGW.js +9344 -0
- package/dist/chunk-6CTHLZFB.js +563 -0
- package/dist/chunk-6EJYVCTN.js +23 -0
- package/dist/chunk-6OWUM2NC.js +12289 -0
- package/dist/chunk-6RJMYYIE.js +1023 -0
- package/dist/chunk-6W75D37F.js +643 -0
- package/dist/chunk-733ZBT5P.js +1721 -0
- package/dist/chunk-77DCC6JZ.js +3710 -0
- package/dist/chunk-7QXCO3AF.js +156 -0
- package/dist/chunk-7RET77VB.js +481 -0
- package/dist/chunk-A4MVRV4C.js +65 -0
- package/dist/chunk-ALJWT6O6.js +93 -0
- package/dist/chunk-AVSR2HKI.js +232 -0
- package/dist/chunk-B7GY6QER.js +42 -0
- package/dist/chunk-BFOSV5EZ.js +178 -0
- package/dist/chunk-BGOIM7NB.js +103 -0
- package/dist/chunk-BJH6WFIB.js +372 -0
- package/dist/chunk-BOBCCDJ6.js +1533 -0
- package/dist/chunk-BRCOSE7O.js +117 -0
- package/dist/chunk-BYFHHCFV.js +601 -0
- package/dist/chunk-C2CPOIH2.js +83 -0
- package/dist/chunk-C7AQTPCE.js +694 -0
- package/dist/chunk-CBAQPTDU.js +165 -0
- package/dist/chunk-CDQ2UC6W.js +125 -0
- package/dist/chunk-CN6SW5DC.js +177 -0
- package/dist/chunk-CRHPCPZP.js +132 -0
- package/dist/chunk-CTFPFW3H.js +44 -0
- package/dist/chunk-D3KWFOUT.js +103 -0
- package/dist/chunk-D65E25JG.js +185 -0
- package/dist/chunk-DCGHJQ2U.js +236 -0
- package/dist/chunk-DE2LU267.js +106 -0
- package/dist/chunk-DF6PI6GN.js +97 -0
- package/dist/chunk-DGC6X6XR.js +53 -0
- package/dist/chunk-DOUISWEE.js +526 -0
- package/dist/chunk-DR3TAEUA.js +188 -0
- package/dist/chunk-DVTBERFY.js +33 -0
- package/dist/chunk-DXSETN72.js +1051 -0
- package/dist/chunk-DZLR4UEH.js +128 -0
- package/dist/chunk-E6IPKW2E.js +77 -0
- package/dist/chunk-EG4ARXPC.js +139 -0
- package/dist/chunk-EKV4UBCM.js +652 -0
- package/dist/chunk-EOJPDNUP.js +1325 -0
- package/dist/chunk-EX57VVWW.js +4157 -0
- package/dist/chunk-EYTLV3W3.js +5937 -0
- package/dist/chunk-EZD2BXGP.js +475 -0
- package/dist/chunk-EZDCA34W.js +314 -0
- package/dist/chunk-FD2I4KBR.js +33 -0
- package/dist/chunk-FD3IAHQM.js +27 -0
- package/dist/chunk-FFYTC2KQ.js +416 -0
- package/dist/chunk-FGSQHUCK.js +110 -0
- package/dist/chunk-GCQFN7YI.js +32 -0
- package/dist/chunk-GGPF6LLE.js +38 -0
- package/dist/chunk-GGWI3OVM.js +215 -0
- package/dist/chunk-GLIQT7SU.js +172 -0
- package/dist/chunk-GN7QBEEI.js +95 -0
- package/dist/chunk-GRHOXDKB.js +1104 -0
- package/dist/chunk-HMN2C6YL.js +54 -0
- package/dist/chunk-HOEDA42N.js +310 -0
- package/dist/chunk-HOYZUKG7.js +192 -0
- package/dist/chunk-HQVN7G4F.js +1021 -0
- package/dist/chunk-HSQQFDB3.js +519 -0
- package/dist/chunk-I4ELN5BX.js +47 -0
- package/dist/chunk-I4Y4WKZR.js +386 -0
- package/dist/chunk-IFPDAD7R.js +797 -0
- package/dist/chunk-IN7DGBVS.js +582 -0
- package/dist/chunk-ISHUS7HC.js +396 -0
- package/dist/chunk-JPXLJSGR.js +191 -0
- package/dist/chunk-JQCLXSFI.js +69 -0
- package/dist/chunk-KBUTSJSR.js +61 -0
- package/dist/chunk-KW5HXKLJ.js +56 -0
- package/dist/chunk-L4APUGCT.js +139 -0
- package/dist/chunk-L7G7K4I2.js +505 -0
- package/dist/chunk-LAR7DX5E.js +1840 -0
- package/dist/chunk-LAVUQX3B.js +462 -0
- package/dist/chunk-LJRBX7QR.js +116 -0
- package/dist/chunk-LNOXCGN2.js +1864 -0
- package/dist/chunk-LTWH2ACR.js +23002 -0
- package/dist/chunk-LYJJ6546.js +661 -0
- package/dist/chunk-M2IPMWCN.js +457 -0
- package/dist/chunk-MGLRTOCK.js +101 -0
- package/dist/chunk-MZF5IKZT.js +160 -0
- package/dist/chunk-N24R6KWS.js +386 -0
- package/dist/chunk-NASYVWDB.js +604 -0
- package/dist/chunk-NBXFPI7U.js +195 -0
- package/dist/chunk-NDPF2N2L.js +400 -0
- package/dist/chunk-NFSK2VNU.js +446 -0
- package/dist/chunk-NG3QQSXY.js +43 -0
- package/dist/chunk-NOCSM22Y.js +63 -0
- package/dist/chunk-NVPXXW2H.js +1143 -0
- package/dist/chunk-O63U2I6I.js +30 -0
- package/dist/chunk-OJXOA6YU.js +98 -0
- package/dist/chunk-OPD7GL6F.js +1196 -0
- package/dist/chunk-OQ2EOAHA.js +14399 -0
- package/dist/chunk-OV62D6KO.js +688 -0
- package/dist/chunk-OZ76TLGU.js +740 -0
- package/dist/chunk-P4GNZPXO.js +1156 -0
- package/dist/chunk-PS6JAWJZ.js +78 -0
- package/dist/chunk-PXRCXGLK.js +1865 -0
- package/dist/chunk-QDUUOZ3S.js +108 -0
- package/dist/chunk-QG6I2T5E.js +1416 -0
- package/dist/chunk-QHSBROEW.js +308 -0
- package/dist/chunk-QNUQ7K7D.js +46 -0
- package/dist/chunk-QZTTRSJE.js +333 -0
- package/dist/chunk-R2UUNSNQ.js +1605 -0
- package/dist/chunk-R7FGRZNF.js +1794 -0
- package/dist/chunk-RNDCROSG.js +199 -0
- package/dist/chunk-S36CXHO2.js +302 -0
- package/dist/chunk-SJGS3GDI.js +575 -0
- package/dist/chunk-SQZHXUB3.js +510 -0
- package/dist/chunk-SUTLW6ND.js +686 -0
- package/dist/chunk-SYF7FVBL.js +179 -0
- package/dist/chunk-T2MDZES3.js +1577 -0
- package/dist/chunk-T33IYTZM.js +1146 -0
- package/dist/chunk-TDGYTWM6.js +49 -0
- package/dist/chunk-TGL5FZVD.js +132 -0
- package/dist/chunk-TGWZXJ7L.js +1205 -0
- package/dist/chunk-TKDRT2DF.js +114 -0
- package/dist/chunk-TV2EBCSQ.js +152 -0
- package/dist/chunk-U26XXPJS.js +367 -0
- package/dist/chunk-U5QU5ZOD.js +419 -0
- package/dist/chunk-U6YTUVOX.js +1011 -0
- package/dist/chunk-UCINIRHW.js +188 -0
- package/dist/chunk-UJD5MPP6.js +52 -0
- package/dist/chunk-URCXX7WJ.js +146 -0
- package/dist/chunk-UX2L5CUD.js +898 -0
- package/dist/chunk-UZVYEF57.js +114 -0
- package/dist/chunk-V35KZDUZ.js +218 -0
- package/dist/chunk-VESL6DQY.js +1058 -0
- package/dist/chunk-VKHLUZNO.js +986 -0
- package/dist/chunk-VOYUCAQF.js +584 -0
- package/dist/chunk-VYRQHORQ.js +414 -0
- package/dist/chunk-W53XSRQE.js +245 -0
- package/dist/chunk-X4CEFOSG.js +226 -0
- package/dist/chunk-XDHUDE5K.js +380 -0
- package/dist/chunk-XISLDHEL.js +1290 -0
- package/dist/chunk-XM34YQ2Y.js +169 -0
- package/dist/chunk-XMDBTYCH.js +661 -0
- package/dist/chunk-XS2QPZJE.js +449 -0
- package/dist/chunk-YBUECLAF.js +618 -0
- package/dist/chunk-YQ6XEFVK.js +332 -0
- package/dist/chunk-YYLCPDCC.js +990 -0
- package/dist/chunk-Z4GLJ6J4.js +1035 -0
- package/dist/chunk-ZARZ4POR.js +210 -0
- package/dist/chunk-ZJPORZTC.js +119 -0
- package/dist/chunk-ZNUZ3EXD.js +243 -0
- package/dist/chunk-ZPST2KQO.js +49 -0
- package/dist/chunk-ZR5YA6ZF.js +512 -0
- package/dist/chunk-ZU4JPCPR.js +319 -0
- package/dist/chunk-ZUKUCZYZ.js +39 -0
- package/dist/cli/index.js +56 -45
- package/dist/clio-K2PBVCEM.js +27 -0
- package/dist/clio-context-tools-GR4OHFSO.js +145 -0
- package/dist/code-nav-4X3OI6DK.js +715 -0
- package/dist/codewiki/build-worker.js +4 -4
- package/dist/compile-cache-YRB6QRO7.js +18 -0
- package/dist/components-RQOJ6NUR.js +675 -0
- package/dist/config-Q5J7UBAB.js +291 -0
- package/dist/config-XE7XYZLU.js +38 -0
- package/dist/config-graph-P3555574.js +175 -0
- package/dist/configure-KIJ32ZO6.js +104 -0
- package/dist/context-LFBQOSXT.js +344 -0
- package/dist/context-NNLBES2Y.js +82 -0
- package/dist/context-WBH3KSVR.js +302 -0
- package/dist/context-clear-YOHMQ6SQ.js +208 -0
- package/dist/context-index-X2N5UAIF.js +120 -0
- package/dist/context-map-HOSMGUG2.js +555 -0
- package/dist/context-working-set-MRAEVDNV.js +1564 -0
- package/dist/data-tool-JJPBGMQJ.js +2986 -0
- package/dist/detail-RHJOTGN4.js +139 -0
- package/dist/dispatch-runner-NC7PYNIO.js +2477 -0
- package/dist/docs-K4GBWRUX.js +342 -0
- package/dist/doctor-S5KZ2GTN.js +1138 -0
- package/dist/doctor-deep-2EJQSHIZ.js +130 -0
- package/dist/domain-loader-MB34FDPD.js +13 -0
- package/dist/eval-3D6M36N7.js +5220 -0
- package/dist/eval-inventory-SM3HNM47.js +260 -0
- package/dist/evals-FO6JEUCN.js +104 -0
- package/dist/evidence-6IYN52ET.js +262 -0
- package/dist/evidence-JVECPI3F.js +250 -0
- package/dist/evidence-XNVPPLVK.js +410 -0
- package/dist/evolve-TLPUDJDM.js +634 -0
- package/dist/extensions-ROZJ5X3J.js +311 -0
- package/dist/fleet-6RJWIOEO.js +284 -0
- package/dist/fleet-WKVBF5SZ.js +942 -0
- package/dist/fleet-commands-L6WFT7KZ.js +76 -0
- package/dist/fleet-decisions-BTQMWU5A.js +55 -0
- package/dist/fleet-graph-553DZ67Q.js +141 -0
- package/dist/fleet-inspect-236FZPRB.js +329 -0
- package/dist/fleet-new-CKUXP3CO.js +48 -0
- package/dist/fleet-preflight-NZQHABWO.js +95 -0
- package/dist/fleet-validate-7NLAE26R.js +96 -0
- package/dist/fleet-verify-E3RO6A5W.js +226 -0
- package/dist/fleet-view-KMZQY7YJ.js +144 -0
- package/dist/gui/client/assets/abnfDiagram-VCTEODGH-DPBWQwNn.js +1 -0
- package/dist/gui/client/assets/architecture-7GRP2DOG-D1w8FrFW.js +1 -0
- package/dist/gui/client/assets/architectureDiagram-5GKGNRK7-CVPgKd1-.js +36 -0
- package/dist/gui/client/assets/blockDiagram-I7D4REHJ-BLmnqkK5.js +129 -0
- package/dist/gui/client/assets/c4Diagram-7LVT6UL2-4AU9cfM7.js +38 -0
- package/dist/gui/client/assets/channel-DwFZ0m8S.js +1 -0
- package/dist/gui/client/assets/chunk-4HAMMTFA-EOWkKCav.js +62 -0
- package/dist/gui/client/assets/chunk-75Z2AOVW-CygeoIMl.js +2 -0
- package/dist/gui/client/assets/chunk-DU6HZSFF-s27fViLb.js +125 -0
- package/dist/gui/client/assets/chunk-F27PBJKO-BrHvwLsZ.js +1 -0
- package/dist/gui/client/assets/chunk-GMAD6QVW-DzPh-7jt.js +72 -0
- package/dist/gui/client/assets/chunk-GVQU2GXP-pIaQkIzm.js +1 -0
- package/dist/gui/client/assets/chunk-IMKFNOWR-BGJVE_Br.js +231 -0
- package/dist/gui/client/assets/chunk-L3NEJ4N5-B3YLuhww.js +1 -0
- package/dist/gui/client/assets/chunk-OSK3NFVY-BRj61HHU.js +10 -0
- package/dist/gui/client/assets/chunk-P2QGCYS3-Sno90KxP.js +1 -0
- package/dist/gui/client/assets/chunk-POPQ4Y6H-Cw8NTbxr.js +1 -0
- package/dist/gui/client/assets/chunk-PWAF6VOD-BIhHgz37.js +1 -0
- package/dist/gui/client/assets/chunk-SHT3W25Y-Cqv7npBj.js +168 -0
- package/dist/gui/client/assets/chunk-SVP7TREG-Hxzl6Dee.js +88 -0
- package/dist/gui/client/assets/chunk-TICWLB2K-CIFVyVP2.js +206 -0
- package/dist/gui/client/assets/classDiagram-ZZMXUADV-BJbAiI_w.js +1 -0
- package/dist/gui/client/assets/classDiagram-v2-VYDZK3BY-BJbAiI_w.js +1 -0
- package/dist/gui/client/assets/cynefin-OW5HDTMX-DecLWZ-y.js +1 -0
- package/dist/gui/client/assets/cynefinDiagram-5FMLGOSQ-CK-T2N-D.js +62 -0
- package/dist/gui/client/assets/dagre-GXQ25YYZ-C0dfg-OS.js +4 -0
- package/dist/gui/client/assets/diagram-S7CK7UJ4-EaJukVh-.js +30 -0
- package/dist/gui/client/assets/diagram-UQ7AKVKN-xcOucEtP.js +41 -0
- package/dist/gui/client/assets/diagram-VSXAHHWV-3AUJACMf.js +3 -0
- package/dist/gui/client/assets/diagram-VX7I27RA-TPknLqam.js +24 -0
- package/dist/gui/client/assets/diagram-Z3DM3KII-wa1q3YMF.js +24 -0
- package/dist/gui/client/assets/ebnfDiagram-PWID7BFC-JBCF2-s7.js +1 -0
- package/dist/gui/client/assets/erDiagram-RLTQ6QDP-CmXjXPc4.js +99 -0
- package/dist/gui/client/assets/eventmodeling-NTZA5JFV-D_1aJWYl.js +1 -0
- package/dist/gui/client/assets/flowDiagram-HODETNUW-BQtZlael.js +1 -0
- package/dist/gui/client/assets/framework-Bq-znqwW.js +9 -0
- package/dist/gui/client/assets/ganttDiagram-EL5Y4UJY-IPaL_kaa.js +292 -0
- package/dist/gui/client/assets/gitGraph-4MIJSDKK-Oy0Q3hoc.js +1 -0
- package/dist/gui/client/assets/gitGraphDiagram-WWUBYQGX-jtAuBmbc.js +106 -0
- package/dist/gui/client/assets/index-CuFuBEdL.css +1 -0
- package/dist/gui/client/assets/index-hMbEIsX0.js +87 -0
- package/dist/gui/client/assets/info-A6RAGUB7-UtEs1tv7.js +1 -0
- package/dist/gui/client/assets/infoDiagram-27XIBGKW-hlwR1pBW.js +2 -0
- package/dist/gui/client/assets/ishikawaDiagram-5VMMS53U-C6vMtfsd.js +70 -0
- package/dist/gui/client/assets/journeyDiagram-3NMN7TZE-EAwAl_PS.js +139 -0
- package/dist/gui/client/assets/kanban-definition-UXKFOSKX-CQOhRKHW.js +89 -0
- package/dist/gui/client/assets/line-DbcwGZTW.js +1 -0
- package/dist/gui/client/assets/mermaid-parser.core-C2QfVcHd.js +7 -0
- package/dist/gui/client/assets/mermaid.core-N9qUTre1.js +44 -0
- package/dist/gui/client/assets/mindmap-definition-YA3MSWOX-BR_FL9gK.js +96 -0
- package/dist/gui/client/assets/packet-AYTQ26CC-CbBJ2oAa.js +1 -0
- package/dist/gui/client/assets/pegDiagram-XKGWAZYB-BruU0IHM.js +1 -0
- package/dist/gui/client/assets/pie-WAS4IAKB-BWdSng4H.js +1 -0
- package/dist/gui/client/assets/pieDiagram-E7YTZNPT-CR3ljgdU.js +39 -0
- package/dist/gui/client/assets/quadrantDiagram-AXDQQJYC-C-boKslr.js +7 -0
- package/dist/gui/client/assets/radar-RG4KPBEZ-CGlOnAKG.js +1 -0
- package/dist/gui/client/assets/railroad-74A4TZTK-CDvuAlyC.js +1 -0
- package/dist/gui/client/assets/railroad-abnf-HS5TGJTU-CQUA9crC.js +1 -0
- package/dist/gui/client/assets/railroad-ebnf-LZEXJU2U-CD857gxq.js +1 -0
- package/dist/gui/client/assets/railroad-peg-WCYAUIDC-DUV4k35E.js +1 -0
- package/dist/gui/client/assets/railroadDiagram-O6MQD6OU-DMR4LXmA.js +1 -0
- package/dist/gui/client/assets/requirementDiagram-BXWQKSXE-DVltaF6c.js +84 -0
- package/dist/gui/client/assets/sankeyDiagram-P5KCCOFB-CHdNz472.js +40 -0
- package/dist/gui/client/assets/sequenceDiagram-WJ2MYXX4-DaMafIty.js +162 -0
- package/dist/gui/client/assets/stateDiagram-D77RDMKH-CEbBHqn3.js +1 -0
- package/dist/gui/client/assets/stateDiagram-v2-MP3YSRHH-B3JgDdFg.js +1 -0
- package/dist/gui/client/assets/swimlanes-42K2YHIH-BlPHndnJ.js +1 -0
- package/dist/gui/client/assets/swimlanesDiagram-VR7AAH4N-BPabHwsZ.js +8 -0
- package/dist/gui/client/assets/timeline-definition-24CTP7MA-E4Y1lPBI.js +120 -0
- package/dist/gui/client/assets/treeView-Q6P3EWNA-DrY0uhTN.js +1 -0
- package/dist/gui/client/assets/treemap-WGGIJYW6-CVotnLHf.js +1 -0
- package/dist/gui/client/assets/vennDiagram-4TSXK5OY-DJNrLIOF.js +34 -0
- package/dist/gui/client/assets/wardley-WFR3VGLG-ClOpAp5S.js +1 -0
- package/dist/gui/client/assets/wardleyDiagram-VM6X3IG4-qhMoKOXc.js +78 -0
- package/dist/gui/client/assets/xychartDiagram-S5SC5T6Z-CTuXoo9R.js +7 -0
- package/dist/gui/client/index.html +6 -0
- package/dist/gui/ops-worker.js +167 -0
- package/dist/gui/reads-worker.js +473 -0
- package/dist/gui/server.js +9780 -0
- package/dist/gui-QJS7XQMV.js +16 -0
- package/dist/init-DV5B6HQG.js +354 -0
- package/dist/install-6C45YXFP.js +19 -0
- package/dist/install-O7NSRU2W.js +13 -0
- package/dist/interactive-OXGYZYAS.js +22381 -0
- package/dist/interop-J7UOBOSF.js +254 -0
- package/dist/inventory-OEGIL6PY.js +144 -0
- package/dist/library-B3UPGY4V.js +83 -0
- package/dist/library-MXQA5DLT.js +309 -0
- package/dist/library-ROZAMUIL.js +496 -0
- package/dist/library-import-2LTWOVBD.js +190 -0
- package/dist/library-inventory-LJ3XHLWO.js +60 -0
- package/dist/library-validation-DARHHUNW.js +46 -0
- package/dist/mcp-2GSPYQ54.js +28 -0
- package/dist/memory-J3STUUIK.js +537 -0
- package/dist/models-Y3GMFJ2V.js +314 -0
- package/dist/monitor-LHNH577J.js +811 -0
- package/dist/orchestrator-DTAPXULA.js +12117 -0
- package/dist/panes-A743ONZ5.js +103 -0
- package/dist/panes-CTNO57ZY.js +76 -0
- package/dist/paths-3SBYJQDP.js +68 -0
- package/dist/preload-OJBMAIXF.js +140 -0
- package/dist/providers-CMETPZNS.js +232 -0
- package/dist/registry-37T4U6X2.js +15 -0
- package/dist/reset-O7EUCYWO.js +346 -0
- package/dist/resources-FY6XYFN2.js +189 -0
- package/dist/run-H64MEVTA.js +1067 -0
- package/dist/run-script-PQ5NRU3X.js +42 -0
- package/dist/settings-SNIQNXCW.js +73 -0
- package/dist/settings-controls-X6GMCPVG.js +202 -0
- package/dist/share-CAFMMQLM.js +299 -0
- package/dist/skills-ERKQUC7L.js +114 -0
- package/dist/skills-eval-CQ23MYQK.js +1099 -0
- package/dist/skills-inventory-TVUYJDVN.js +142 -0
- package/dist/slash-commands-ROG3KIFJ.js +107 -0
- package/dist/startup-background-KDWCQMWT.js +247 -0
- package/dist/steer-KKYXJSH4.js +77 -0
- package/dist/support-M3RCUUEL.js +40 -0
- package/dist/system-ZDW44ZGX.js +142 -0
- package/dist/target-runtimes-PWA22WVW.js +73 -0
- package/dist/targets-AJWA6E7Z.js +1207 -0
- package/dist/tasks-6L2JJRC5.js +39 -0
- package/dist/terminal-lease-YFUSDPAD.js +432 -0
- package/dist/tools-5XJUABRD.js +30 -0
- package/dist/trace-LA5MVR4Y.js +527 -0
- package/dist/tree-sitter-TQW3Y52T.js +4673 -0
- package/dist/tui-primitives-IUCVWLH5.js +19 -0
- package/dist/uninstall-SAWGGXAB.js +448 -0
- package/dist/upgrade-HSNSVTZG.js +300 -0
- package/dist/usage-XSILDHKF.js +1083 -0
- package/dist/verifiers-ECA5GIHL.js +633 -0
- package/dist/verify-R6QQCCEB.js +31 -0
- package/dist/version-PLZYB5KW.js +22 -0
- package/dist/web-fetch-PVZNMBOB.js +803 -0
- package/dist/wiki-generate-RP22WP5K.js +647 -0
- package/dist/with-panes-W3PAZPRF.js +629 -0
- package/dist/worker/entry.js +324 -284
- package/dist/workspace-check-3764ZKC2.js +83 -0
- package/docs/README.md +26 -10
- package/docs/architecture/acp.md +179 -12
- package/docs/architecture/artifact-placement.md +1 -1
- package/docs/architecture/capacity-and-scheduling.md +7 -8
- package/docs/architecture/context-engine.md +350 -95
- package/docs/architecture/model-catalog.md +18 -11
- package/docs/architecture/observability.md +1 -1
- package/docs/architecture/pi-boundary.md +59 -6
- package/docs/architecture/prompt-envelope-and-tools.md +147 -39
- package/docs/architecture/provider-adapter-cookbook.md +2 -2
- package/docs/architecture/safety-model.md +18 -4
- package/docs/architecture/trace-store.md +2 -2
- package/docs/architecture/tui-design.md +41 -81
- package/docs/architecture/worker-dispatch-mechanics.md +9 -1
- package/docs/gui/README.md +69 -0
- package/docs/gui/boundary-doctrine.md +104 -0
- package/docs/gui/chat-rendering-spec.md +1440 -0
- package/docs/gui/cli-surface-routing.md +148 -0
- package/docs/gui/delivery-order.md +53 -0
- package/docs/gui/event-bus-coverage.md +103 -0
- package/docs/gui/inspector-presentation.md +71 -0
- package/docs/gui/parity/01-cli-surface.md +74 -0
- package/docs/gui/parity/02-slash-and-surfaces.md +110 -0
- package/docs/gui/parity/03-domains-and-plan.md +69 -0
- package/docs/gui/performance-baseline.md +76 -0
- package/docs/gui/settings-write-surface.md +267 -0
- package/docs/gui/workflow-coverage.md +64 -0
- package/docs/guide/built-in-agents.md +1 -1
- package/docs/guide/commands-and-modes.md +256 -99
- package/docs/guide/configuration-and-targets.md +485 -124
- package/docs/guide/configuration-reference.md +165 -82
- package/docs/guide/doctor.md +127 -0
- package/docs/guide/environment-variables.md +1 -1
- package/docs/guide/exit-codes-and-output.md +3 -1
- package/docs/guide/extensions-and-sharing.md +3 -14
- package/docs/guide/fleet-dispatch.md +231 -45
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/installation-and-lifecycle.md +27 -16
- package/docs/guide/interop.md +2 -2
- package/docs/guide/proactive-memory.md +154 -68
- package/docs/guide/resource-library.md +4 -0
- package/docs/guide/skills-marketplace.md +8 -4
- package/docs/guide/slurm.md +88 -0
- package/docs/guide/tool-usage.md +134 -11
- package/docs/guide/troubleshooting.md +4 -2
- package/docs/process/battletest-2026-09-20-fixes.md +161 -0
- package/docs/process/configure-tree-proposal.md +637 -0
- package/docs/process/documentation-coverage.md +8 -0
- package/docs/process/documentation-guide.md +18 -1
- package/docs/process/eval-runner.md +58 -14
- package/docs/process/performance-methodology.md +11 -3
- package/docs/process/release-cut-checklist.md +29 -3
- package/docs/process/tool-audit-v0.4.9.md +3 -0
- package/examples/extensions/README.md +1 -3
- package/examples/extensions/lab-status/clio-coder-extension.json +1 -1
- package/examples/extensions/measurements/clio-coder-extension.json +1 -1
- package/library/registry.yaml +30 -5
- package/library/skills/git/fix-issue/SKILL.md +2 -1
- package/library/skills/git/fix-issue/plugin.json +1 -1
- package/library/skills/git/ship/SKILL.md +2 -1
- package/library/skills/git/ship/plugin.json +1 -1
- package/library/skills/meta/clio-coder-test/SKILL.md +5 -6
- package/library/skills/meta/clio-coder-test/evals.md +2 -2
- package/library/skills/meta/clio-coder-test/references/test-map.md +2 -2
- package/library/skills/registry.yaml +9 -5
- package/library/skills/research/slurm-jobs/SKILL.md +110 -0
- package/library/skills/research/slurm-jobs/evals.md +39 -0
- package/library/skills/research/slurm-jobs/plugin.json +23 -0
- package/library/skills/skill-marketplace.json +18 -2
- package/package.json +15 -10
- package/src/cli/args.ts +59 -0
- package/src/cli/argv.ts +7 -0
- package/src/cli/clio.ts +9 -1
- package/src/cli/configure-controls.ts +136 -0
- package/src/cli/configure-onboarding.ts +24 -7
- package/src/cli/configure-quick.ts +32 -7
- package/src/cli/configure-target.ts +11 -1
- package/src/cli/configure.ts +253 -256
- package/src/cli/docs-server.ts +290 -0
- package/src/cli/docs.ts +60 -15
- package/src/cli/doctor-deep.ts +126 -0
- package/src/cli/doctor-hpc.ts +122 -0
- package/src/cli/doctor-slurm.ts +130 -0
- package/src/cli/doctor-task-worktrees.ts +88 -0
- package/src/cli/doctor.ts +165 -16
- package/src/cli/fleet-verify.ts +3 -2
- package/src/cli/gui.ts +111 -0
- package/src/cli/index.ts +14 -4
- package/src/cli/library.ts +2 -7
- package/src/cli/modes/json-stream.ts +4 -2
- package/src/cli/modes/print.ts +252 -25
- package/src/cli/run.ts +199 -71
- package/src/cli/skills.ts +25 -7
- package/src/cli/targets.ts +87 -9
- package/src/cli/uninstall.ts +28 -8
- package/src/cli/usage.ts +2 -1
- package/src/cli/workspace-check.ts +71 -0
- package/src/core/bash-exec.ts +8 -2
- package/src/core/bus-events.ts +32 -3
- package/src/core/cache-telemetry.ts +3 -2
- package/src/core/compile-cache.ts +11 -1
- package/src/core/config.ts +59 -6
- package/src/core/defaults.ts +27 -5
- package/src/core/diagnostics.ts +25 -0
- package/src/core/event-bus.ts +2 -1
- package/src/core/gateway-routing.ts +10 -3
- package/src/core/git-commit-attribution.ts +2 -1
- package/src/core/naming-compat.ts +6 -4
- package/src/core/package-root.ts +0 -9
- package/src/core/path-canonical.ts +143 -24
- package/src/core/residency-target-key.ts +2 -6
- package/src/core/run-overrides.ts +1 -1
- package/src/core/settings-awareness.ts +108 -0
- package/src/core/settings-controls.ts +673 -0
- package/src/core/settings-navigation.ts +116 -0
- package/src/core/theme-token-hex.ts +19 -9
- package/src/core/turn-constraints.ts +52 -0
- package/src/domains/agents/builtins/scout.md +7 -17
- package/src/domains/agents/catalog.ts +5 -1
- package/src/domains/agents/extension.ts +2 -1
- package/src/domains/agents/registry.ts +4 -3
- package/src/domains/agents/result-contract.ts +132 -1
- package/src/domains/config/classify.ts +11 -7
- package/src/domains/config/extension.ts +5 -1
- package/src/domains/config/keybindings.ts +2 -2
- package/src/domains/context/codewiki/coordinator.ts +10 -0
- package/src/domains/context/worker/snapshot.ts +6 -3
- package/src/domains/dispatch/active-route-planner.ts +2 -0
- package/src/domains/dispatch/agent-candidates.ts +5 -1
- package/src/domains/dispatch/capability-match.ts +1 -1
- package/src/domains/dispatch/contract.ts +28 -0
- package/src/domains/dispatch/event-pump.ts +37 -3
- package/src/domains/dispatch/extension.ts +391 -48
- package/src/domains/dispatch/failure-classification.ts +37 -2
- package/src/domains/dispatch/receipt-integrity.ts +3 -0
- package/src/domains/dispatch/run-identity.ts +10 -3
- package/src/domains/dispatch/target-breaker.ts +163 -0
- package/src/domains/dispatch/types.ts +29 -2
- package/src/domains/dispatch/worker-model-loads.ts +66 -0
- package/src/domains/dispatch/worker-protocol.ts +20 -1
- package/src/domains/dispatch/worker-spawn.ts +28 -2
- package/src/domains/eval/artifacts/redact.ts +9 -0
- package/src/domains/eval/metrics/noop.ts +61 -0
- package/src/domains/eval/reports/junit.ts +5 -1
- package/src/domains/eval/reports/text.ts +7 -0
- package/src/domains/eval/runners/clio-run.ts +19 -8
- package/src/domains/eval/runners/external-command.ts +29 -4
- package/src/domains/eval/schema/adapter.ts +6 -2
- package/src/domains/eval/schema/suite.ts +2 -0
- package/src/domains/eval/schema/validate.ts +3 -0
- package/src/domains/eval/suites/run.ts +167 -26
- package/src/domains/evidence/detail.ts +3 -2
- package/src/domains/extensions/operator-runtime.ts +11 -4
- package/src/domains/gateway/mcp/client.ts +1 -1
- package/src/domains/lifecycle/doctor.ts +42 -26
- package/src/domains/lifecycle/migrations/2026-09-18-ollama-runtime-id.ts +38 -0
- package/src/domains/lifecycle/migrations/index.ts +2 -0
- package/src/domains/middleware/demo-guidance.ts +36 -0
- package/src/domains/middleware/dispatch-nudge.ts +1 -1
- package/src/domains/middleware/memory-intervention.ts +51 -4
- package/src/domains/middleware/runtime.ts +5 -4
- package/src/domains/middleware/skills-reminder.ts +29 -52
- package/src/domains/middleware/task-nudge.ts +1 -0
- package/src/domains/middleware/watchdog.ts +4 -0
- package/src/domains/observability/extension.ts +2 -1
- package/src/domains/observability/out-of-turn-usage.ts +3 -2
- package/src/domains/observability/projection.ts +3 -2
- package/src/domains/observability/worker-progress.ts +48 -0
- package/src/domains/prompts/compiler.ts +148 -52
- package/src/domains/prompts/contract.ts +3 -3
- package/src/domains/prompts/demo-guidance.ts +8 -0
- package/src/domains/prompts/extension.ts +12 -7
- package/src/domains/prompts/fragments/identity/clio.md +2 -1
- package/src/domains/prompts/fragments/identity/docs-routing.md +2 -0
- package/src/domains/prompts/fragments/identity/self-awareness.md +4 -0
- package/src/domains/prompts/fragments/operating/contract.md +16 -7
- package/src/domains/prompts/fragments/operating/delegation.md +29 -13
- package/src/domains/prompts/fragments/operating/skills.md +18 -10
- package/src/domains/prompts/fragments/operating/worker.md +2 -0
- package/src/domains/providers/cache-deployment.ts +45 -2
- package/src/domains/providers/contract.ts +52 -11
- package/src/domains/providers/extension.ts +230 -53
- package/src/domains/providers/model-discovery.ts +22 -8
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +5 -7
- package/src/domains/providers/plugins.ts +3 -4
- package/src/domains/providers/probe/fingerprint.ts +2 -2
- package/src/domains/providers/probe/reasoning.ts +9 -16
- package/src/domains/providers/probe/tool-call.ts +236 -0
- package/src/domains/providers/registry.ts +51 -8
- package/src/domains/providers/runtime-resolution.ts +60 -12
- package/src/domains/providers/runtimes/boot-manifest.ts +1 -1
- package/src/domains/providers/runtimes/builtins.ts +2 -2
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +57 -41
- package/src/domains/providers/runtimes/common/local-synth.ts +3 -1
- package/src/domains/providers/runtimes/common/ollama-model-ids.ts +11 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +53 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +3 -1
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +7 -13
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +7 -17
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +1 -0
- package/src/domains/providers/runtimes/local-native/ollama.ts +211 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +77 -65
- package/src/domains/providers/support.ts +1 -1
- package/src/domains/providers/types/local-model-quirks.ts +2 -3
- package/src/domains/providers/types/runtime-descriptor.ts +23 -3
- package/src/domains/providers/types/target-descriptor.ts +15 -3
- package/src/domains/resources/collision.ts +7 -2
- package/src/domains/resources/index.ts +1 -0
- package/src/domains/resources/library-actions.ts +4 -2
- package/src/domains/resources/library-inventory.ts +6 -2
- package/src/domains/resources/prompts/loader.ts +20 -7
- package/src/domains/resources/skills/availability.ts +56 -0
- package/src/domains/resources/skills/loader.ts +20 -9
- package/src/domains/safety/action-classifier.ts +282 -31
- package/src/domains/safety/audit.ts +2 -1
- package/src/domains/safety/autonomy.ts +54 -11
- package/src/domains/safety/decision-presentation.ts +17 -4
- package/src/domains/safety/finish-contract-registration.ts +25 -1
- package/src/domains/safety/finish-contract.ts +20 -5
- package/src/domains/safety/path-policy.ts +6 -2
- package/src/domains/safety/policy-engine.ts +168 -48
- package/src/domains/safety/protected-artifacts.ts +527 -16
- package/src/domains/safety/read-scope.ts +120 -0
- package/src/domains/safety/skill-authority.ts +52 -16
- package/src/domains/scheduling/cluster.ts +14 -3
- package/src/domains/scheduling/contract.ts +7 -0
- package/src/domains/scheduling/extension.ts +20 -9
- package/src/domains/scheduling/local-capacity.ts +160 -0
- package/src/domains/session/context-accounting.ts +44 -31
- package/src/domains/session/context-ledger.ts +10 -3
- package/src/domains/session/entries.ts +4 -0
- package/src/domains/session/history.ts +1 -1
- package/src/domains/session/prompt-cache.ts +1 -0
- package/src/domains/session/prompt-manifest.ts +3 -1
- package/src/domains/session/retry.ts +4 -6
- package/src/domains/session/task-board.ts +19 -4
- package/src/domains/session/tree/preview.ts +3 -2
- package/src/engine/acp/commands.ts +653 -0
- package/src/engine/acp/server.ts +639 -20
- package/src/engine/acp/tool-mediator.ts +30 -7
- package/src/engine/acp/types.ts +58 -0
- package/src/engine/agent.ts +55 -10
- package/src/engine/ai.ts +11 -2
- package/src/engine/api-registry.ts +5 -4
- package/src/engine/apis/degraded-inference.ts +243 -0
- package/src/engine/apis/llamacpp-residency.ts +50 -6
- package/src/engine/apis/lmstudio-residency.ts +3 -5
- package/src/engine/apis/lmstudio.ts +137 -31
- package/src/engine/apis/ollama-http.ts +118 -0
- package/src/engine/apis/ollama-native.ts +216 -97
- package/src/engine/apis/openai-completions.ts +191 -189
- package/src/engine/apis/output-budget.ts +3 -1
- package/src/engine/apis/residency-lock.ts +2 -1
- package/src/engine/apis/residency.ts +339 -89
- package/src/engine/apis/sampling-overrides.ts +23 -2
- package/src/engine/apis/types.ts +1 -2
- package/src/engine/claude/tool-safety.ts +30 -5
- package/src/engine/context.ts +13 -0
- package/src/engine/env-api-keys.ts +2 -1
- package/src/engine/gemma-channel-filter.ts +3 -2
- package/src/engine/instrumented-tui.ts +25 -0
- package/src/engine/loop-guard.ts +172 -6
- package/src/engine/pi-mono-names.ts +16 -0
- package/src/engine/prewarm.ts +44 -15
- package/src/engine/provider-payload.ts +52 -14
- package/src/engine/session.ts +4 -2
- package/src/engine/worker-events.ts +9 -1
- package/src/engine/worker-runtime.ts +269 -42
- package/src/engine/worker-tools.ts +8 -3
- package/src/entry/boot-options.ts +23 -0
- package/src/entry/orchestrator.ts +207 -36
- package/src/interactive/assistant-generation-timing.ts +52 -0
- package/src/interactive/chat-loop-messages.ts +4 -1
- package/src/interactive/chat-loop.ts +59 -9
- package/src/interactive/chat-panel.ts +10 -1
- package/src/interactive/clio-editor.ts +51 -79
- package/src/interactive/context-meter.ts +1 -0
- package/src/interactive/context-overlay.ts +21 -8
- package/src/interactive/cost-overlay.ts +1 -1
- package/src/interactive/dispatch-board.ts +39 -8
- package/src/interactive/editor-bash.ts +0 -34
- package/src/interactive/editor-rails.ts +43 -0
- package/src/interactive/editor-submit.ts +34 -2
- package/src/interactive/footer/dashboard.ts +67 -38
- package/src/interactive/footer/demo-hints.ts +40 -0
- package/src/interactive/footer/key-hints.ts +21 -0
- package/src/interactive/footer/notifications.ts +1 -1
- package/src/interactive/footer/pages.ts +486 -0
- package/src/interactive/footer/system-metrics.ts +147 -0
- package/src/interactive/footer/widgets.ts +158 -63
- package/src/interactive/footer-panel.ts +29 -7
- package/src/interactive/interactive-application.ts +109 -21
- package/src/interactive/interactive-event-projection.ts +6 -2
- package/src/interactive/interactive-presentation.ts +25 -29
- package/src/interactive/interactive-slash-runtime.ts +32 -18
- package/src/interactive/interactive-subscriptions.ts +25 -5
- package/src/interactive/interactive-tickers.ts +21 -5
- package/src/interactive/keybinding-manager.ts +9 -0
- package/src/interactive/overlay-frame.ts +29 -7
- package/src/interactive/overlay-lifecycle.ts +5 -3
- package/src/interactive/overlay-model-selectors.ts +4 -0
- package/src/interactive/overlay-permission-lifecycle.ts +6 -5
- package/src/interactive/overlays/ask-user.ts +103 -110
- package/src/interactive/overlays/help-reference.ts +1 -0
- package/src/interactive/overlays/message-picker.ts +3 -29
- package/src/interactive/overlays/session-selector.ts +3 -2
- package/src/interactive/overlays/settings-sections.ts +2 -30
- package/src/interactive/overlays/settings.ts +310 -607
- package/src/interactive/permission-hint.ts +3 -3
- package/src/interactive/permission-overlay.ts +45 -27
- package/src/interactive/renderers/doctor-report.ts +43 -0
- package/src/interactive/renderers/tool-execution.ts +87 -62
- package/src/interactive/renderers/worker-entry.ts +76 -3
- package/src/interactive/side-question.ts +3 -1
- package/src/interactive/slash-commands.ts +78 -23
- package/src/interactive/startup-background.ts +131 -0
- package/src/interactive/startup-diagnostics.ts +16 -0
- package/src/interactive/status/state-machine.ts +16 -3
- package/src/interactive/status/types.ts +2 -0
- package/src/interactive/status/verbs.ts +1 -1
- package/src/interactive/terminal-lease.ts +26 -22
- package/src/interactive/theme/components.ts +1 -1
- package/src/interactive/theme/rules.ts +1 -1
- package/src/interactive/theme/tokens.ts +16 -10
- package/src/interactive/transcript-detail.ts +4 -0
- package/src/interactive/turn-context.ts +56 -20
- package/src/interactive/turn-middleware.ts +57 -9
- package/src/interactive/turn-prewarm.ts +121 -18
- package/src/interactive/turn-recovery.ts +10 -8
- package/src/interactive/turn-runtime.ts +74 -29
- package/src/interactive/turn-state.ts +3 -0
- package/src/interactive/welcome-art.ts +36 -0
- package/src/interactive/welcome-dashboard.ts +209 -49
- package/src/interactive/worker-replay.ts +4 -0
- package/src/interactive/worker-stream.ts +17 -2
- package/src/tools/agent-tools.ts +22 -1
- package/src/tools/builtin-tool-catalog.ts +2 -2
- package/src/tools/codewiki/code-nav.ts +1 -1
- package/src/tools/codewiki/shared.ts +39 -1
- package/src/tools/compete-worktrees.ts +8 -91
- package/src/tools/context/docs-engine.ts +44 -12
- package/src/tools/context/index.ts +126 -22
- package/src/tools/context/library.ts +1 -1
- package/src/tools/context/surface.ts +12 -7
- package/src/tools/core-bootstrap.ts +3 -0
- package/src/tools/dispatch-runner.ts +18 -0
- package/src/tools/dispatch-schema.ts +187 -206
- package/src/tools/edit.ts +46 -42
- package/src/tools/file-mutation-queue.ts +25 -26
- package/src/tools/gateway/clio-context-surface.ts +1 -1
- package/src/tools/gateway/index.ts +7 -3
- package/src/tools/gateway/mcp-capabilities.ts +5 -3
- package/src/tools/grep.ts +14 -2
- package/src/tools/ls.ts +1 -4
- package/src/tools/monitor.ts +14 -1
- package/src/tools/observation.ts +1 -3
- package/src/tools/path-utils.ts +51 -18
- package/src/tools/process-lease.ts +99 -0
- package/src/tools/read.ts +1 -1
- package/src/tools/registry.ts +71 -9
- package/src/tools/task-worktree.ts +296 -17
- package/src/tools/tasks.ts +29 -7
- package/src/tools/worker-evidence.ts +60 -1
- package/src/tools/worktree-root.ts +252 -0
- package/src/tools/write.ts +34 -30
- package/src/worker/entry.ts +18 -1
- package/src/worker/protocol.ts +54 -1
- package/src/worker/spec-contract.ts +22 -2
- package/dist/acp-ZWZCPS2A.js +0 -130
- package/dist/agents-LYSOWZUE.js +0 -150
- package/dist/auth-WBQGKWQ5.js +0 -551
- package/dist/background-BUMOBAQN.js +0 -37
- package/dist/builtins-ODRJOEDI.js +0 -22
- package/dist/chunk-2DRRZ57Q.js +0 -571
- package/dist/chunk-2JBZYUPY.js +0 -105
- package/dist/chunk-2VBWFXYE.js +0 -198
- package/dist/chunk-2X2R3UTH.js +0 -1018
- package/dist/chunk-32KJPXAM.js +0 -75
- package/dist/chunk-37LW32LZ.js +0 -32
- package/dist/chunk-3A3CUMKA.js +0 -54
- package/dist/chunk-3AND2EFU.js +0 -215
- package/dist/chunk-3RDHGNU7.js +0 -647
- package/dist/chunk-3SUDBGEI.js +0 -1323
- package/dist/chunk-3TQN67I2.js +0 -396
- package/dist/chunk-3U4BL2EV.js +0 -103
- package/dist/chunk-3UQADNG2.js +0 -302
- package/dist/chunk-434LRQ6Z.js +0 -13441
- package/dist/chunk-4ATBOFRP.js +0 -7802
- package/dist/chunk-4DNL43EZ.js +0 -139
- package/dist/chunk-4HFJKRGZ.js +0 -5250
- package/dist/chunk-555E2WVV.js +0 -322
- package/dist/chunk-5GZICIYO.js +0 -462
- package/dist/chunk-5PHVPU4G.js +0 -160
- package/dist/chunk-5RTEFNBP.js +0 -197
- package/dist/chunk-64XJW7NT.js +0 -380
- package/dist/chunk-6TKOFFGE.js +0 -1058
- package/dist/chunk-6UJ7RDI7.js +0 -1143
- package/dist/chunk-7FBCRWVT.js +0 -1801
- package/dist/chunk-7JSOSVLP.js +0 -283
- package/dist/chunk-7N3OLLSL.js +0 -637
- package/dist/chunk-7QQRPB2E.js +0 -915
- package/dist/chunk-A6DULIMH.js +0 -986
- package/dist/chunk-AB3QXXBC.js +0 -123
- package/dist/chunk-ACCECAH4.js +0 -49
- package/dist/chunk-AM6CEP2K.js +0 -2120
- package/dist/chunk-AUHVBIDW.js +0 -19
- package/dist/chunk-AY4XE6GN.js +0 -665
- package/dist/chunk-BBA2TAWV.js +0 -667
- package/dist/chunk-BFPHMSK7.js +0 -169
- package/dist/chunk-BMNVVKEW.js +0 -604
- package/dist/chunk-CKK25WN3.js +0 -72
- package/dist/chunk-CTGZCEI6.js +0 -33
- package/dist/chunk-DIAJYJYG.js +0 -446
- package/dist/chunk-DVNAPPXU.js +0 -27
- package/dist/chunk-DXVMLM3Z.js +0 -92
- package/dist/chunk-E3LEPLQ2.js +0 -68
- package/dist/chunk-EHZRAB4U.js +0 -63
- package/dist/chunk-EM2DIQAJ.js +0 -179
- package/dist/chunk-EM2WNQS2.js +0 -93
- package/dist/chunk-ETF4ROKH.js +0 -595
- package/dist/chunk-F2YM3JY4.js +0 -22513
- package/dist/chunk-FEBQWHJT.js +0 -1023
- package/dist/chunk-FPS4R2RN.js +0 -1975
- package/dist/chunk-GD55RTIW.js +0 -33
- package/dist/chunk-GJDRMBDI.js +0 -573
- package/dist/chunk-GREYLTZ5.js +0 -658
- package/dist/chunk-H2WSCZZT.js +0 -238
- package/dist/chunk-H6IUCY6Q.js +0 -117
- package/dist/chunk-H72DCH3E.js +0 -563
- package/dist/chunk-H7TXJR23.js +0 -705
- package/dist/chunk-HBJQQTKM.js +0 -40
- package/dist/chunk-HCVKSGNZ.js +0 -990
- package/dist/chunk-HVCAY2FH.js +0 -67
- package/dist/chunk-I47EJPYL.js +0 -1377
- package/dist/chunk-IALGWTLO.js +0 -36
- package/dist/chunk-IALZJE37.js +0 -1710
- package/dist/chunk-IC7JXLOM.js +0 -1577
- package/dist/chunk-IOSVTTCD.js +0 -108
- package/dist/chunk-IPTPMLA6.js +0 -475
- package/dist/chunk-IZZI3SKQ.js +0 -128
- package/dist/chunk-JABWPKFY.js +0 -27
- package/dist/chunk-JIYWMQZ5.js +0 -175
- package/dist/chunk-JKU34ACI.js +0 -693
- package/dist/chunk-JOBN2YQQ.js +0 -176
- package/dist/chunk-JOL2QRLE.js +0 -152
- package/dist/chunk-JTR3VSV3.js +0 -44
- package/dist/chunk-JU6MAMRJ.js +0 -362
- package/dist/chunk-JURMQWVJ.js +0 -15
- package/dist/chunk-K2BLQC5E.js +0 -262
- package/dist/chunk-K3XN4LZ4.js +0 -402
- package/dist/chunk-KIVFXGBM.js +0 -688
- package/dist/chunk-KKRXONXG.js +0 -43
- package/dist/chunk-KOAHT3N2.js +0 -395
- package/dist/chunk-KP5BPXR3.js +0 -73
- package/dist/chunk-KQ6IDQIB.js +0 -39
- package/dist/chunk-KRJQG47M.js +0 -1289
- package/dist/chunk-KW6OJ7IY.js +0 -221
- package/dist/chunk-L3NBWLSN.js +0 -314
- package/dist/chunk-L4RUTLRL.js +0 -59
- package/dist/chunk-LGTVWPRN.js +0 -47
- package/dist/chunk-LSQW6KZO.js +0 -200
- package/dist/chunk-LTR5QCLS.js +0 -446
- package/dist/chunk-LWJYOHT3.js +0 -165
- package/dist/chunk-M6YLF66Z.js +0 -2687
- package/dist/chunk-MJ4QEJVT.js +0 -185
- package/dist/chunk-MO65K5CH.js +0 -1148
- package/dist/chunk-MTOZEQHL.js +0 -637
- package/dist/chunk-MZDPF35R.js +0 -45
- package/dist/chunk-MZKYVIWW.js +0 -188
- package/dist/chunk-NBPA5QM6.js +0 -386
- package/dist/chunk-NMBEW4PP.js +0 -688
- package/dist/chunk-NPLLK3HO.js +0 -3610
- package/dist/chunk-NSYGPIVW.js +0 -39
- package/dist/chunk-NXTV5OI5.js +0 -1020
- package/dist/chunk-NYDG4QP4.js +0 -689
- package/dist/chunk-OA2GDACN.js +0 -146
- package/dist/chunk-PJI57EC6.js +0 -236
- package/dist/chunk-PJJBUGMR.js +0 -4484
- package/dist/chunk-PNJE7JPS.js +0 -50
- package/dist/chunk-PP23PZEV.js +0 -1347
- package/dist/chunk-PPIFDSBK.js +0 -409
- package/dist/chunk-PTFISXQO.js +0 -319
- package/dist/chunk-QB33Z5S7.js +0 -1865
- package/dist/chunk-QGNII5VC.js +0 -110
- package/dist/chunk-QH3ZTUOA.js +0 -113
- package/dist/chunk-QI72X67S.js +0 -481
- package/dist/chunk-QJMRYTCX.js +0 -56
- package/dist/chunk-QKHZZFKH.js +0 -98
- package/dist/chunk-RDKX2PME.js +0 -66
- package/dist/chunk-RL7LJYN4.js +0 -66
- package/dist/chunk-RPMNIFRY.js +0 -65
- package/dist/chunk-RQROVOV3.js +0 -670
- package/dist/chunk-S34A7BSP.js +0 -97
- package/dist/chunk-SJETVJHX.js +0 -119
- package/dist/chunk-SJMNU4ZS.js +0 -634
- package/dist/chunk-SL2RDHKO.js +0 -19
- package/dist/chunk-SLLG2G44.js +0 -85
- package/dist/chunk-SQAZN2V3.js +0 -2744
- package/dist/chunk-SQBT46OF.js +0 -814
- package/dist/chunk-SRCEQKQS.js +0 -165
- package/dist/chunk-TCUOGIL2.js +0 -52
- package/dist/chunk-TIWPKCVO.js +0 -42
- package/dist/chunk-U44YYLVV.js +0 -1529
- package/dist/chunk-UIU7MGZ3.js +0 -486
- package/dist/chunk-USBBEKHW.js +0 -177
- package/dist/chunk-VHKTOLEW.js +0 -1416
- package/dist/chunk-VPWGADBG.js +0 -3151
- package/dist/chunk-VQD7NH7Z.js +0 -356
- package/dist/chunk-VWFCAK34.js +0 -697
- package/dist/chunk-W5RM7YAH.js +0 -78
- package/dist/chunk-W72LLZAV.js +0 -243
- package/dist/chunk-WGRDABW7.js +0 -207
- package/dist/chunk-WWRV5RJI.js +0 -165
- package/dist/chunk-XCUDZQLX.js +0 -195
- package/dist/chunk-XFLSL7BT.js +0 -386
- package/dist/chunk-XJZEDCNT.js +0 -391
- package/dist/chunk-XLLEL3K7.js +0 -709
- package/dist/chunk-XNZWWDC3.js +0 -686
- package/dist/chunk-XRECG65F.js +0 -308
- package/dist/chunk-XTQ7MEJG.js +0 -457
- package/dist/chunk-XW2UZICE.js +0 -372
- package/dist/chunk-Y3M2T5RO.js +0 -891
- package/dist/chunk-YGDMBK7O.js +0 -567
- package/dist/chunk-YJCCMYYT.js +0 -125
- package/dist/chunk-YPQOPFP7.js +0 -797
- package/dist/chunk-YQYINEJI.js +0 -132
- package/dist/chunk-ZF6CV4WZ.js +0 -5614
- package/dist/chunk-ZKJU55MX.js +0 -326
- package/dist/chunk-ZKQ63XZ5.js +0 -1196
- package/dist/chunk-ZKVMDNAN.js +0 -962
- package/dist/chunk-ZST3FRCV.js +0 -132
- package/dist/clio-JUDCLNHC.js +0 -26
- package/dist/clio-context-tools-FT672MNZ.js +0 -136
- package/dist/code-nav-7OVCTP2Z.js +0 -688
- package/dist/compile-cache-WJEPUZEJ.js +0 -16
- package/dist/components-OZXZMDWU.js +0 -674
- package/dist/config-P3ZQVF63.js +0 -275
- package/dist/config-graph-GKAOBAS5.js +0 -160
- package/dist/configure-25LRYZJG.js +0 -86
- package/dist/context-72VQV7JX.js +0 -73
- package/dist/context-COWRWXP3.js +0 -286
- package/dist/context-WB3D474G.js +0 -344
- package/dist/context-clear-Y4LYMWC6.js +0 -192
- package/dist/context-index-W6A4V7OC.js +0 -120
- package/dist/context-map-DKL3QT6D.js +0 -555
- package/dist/context-working-set-TMZYVC7A.js +0 -1560
- package/dist/data-tool-KMBWKKWR.js +0 -2987
- package/dist/detail-4GLROGY5.js +0 -123
- package/dist/dispatch-runner-TR3LBP5P.js +0 -2446
- package/dist/docs-ZK777W2G.js +0 -101
- package/dist/doctor-WC4OV2OB.js +0 -814
- package/dist/eval-FUNWJNUJ.js +0 -5050
- package/dist/eval-inventory-CX24K2JT.js +0 -260
- package/dist/evals-L73EBHSU.js +0 -104
- package/dist/evidence-AVJ2RTHX.js +0 -392
- package/dist/evidence-P4NZOAK7.js +0 -233
- package/dist/evidence-Y55WKYHH.js +0 -246
- package/dist/evolve-MAWKRYWF.js +0 -617
- package/dist/extensions-PYQH3H47.js +0 -308
- package/dist/fleet-M4H2QBWT.js +0 -268
- package/dist/fleet-ULBXXRDR.js +0 -923
- package/dist/fleet-commands-7NNC4JZU.js +0 -76
- package/dist/fleet-decisions-EHEY7KPU.js +0 -52
- package/dist/fleet-graph-LQ2AHZT3.js +0 -136
- package/dist/fleet-inspect-5IGBIIYZ.js +0 -312
- package/dist/fleet-new-RCKGSRDV.js +0 -48
- package/dist/fleet-preflight-UTTNOKMG.js +0 -27
- package/dist/fleet-validate-YGILJKA6.js +0 -91
- package/dist/fleet-verify-AUWTCDKR.js +0 -210
- package/dist/fleet-view-TGUFCY5A.js +0 -127
- package/dist/init-GFN2Z7NF.js +0 -333
- package/dist/install-3RZDDP23.js +0 -13
- package/dist/install-6PIF6F6W.js +0 -19
- package/dist/interop-EF5JUWWK.js +0 -246
- package/dist/inventory-I6VJDDYF.js +0 -127
- package/dist/library-3J5IO2OJ.js +0 -75
- package/dist/library-IJTOFTDS.js +0 -307
- package/dist/library-Z3KZSHPE.js +0 -492
- package/dist/library-import-IMKFLDHX.js +0 -183
- package/dist/library-inventory-CQP5D6GU.js +0 -56
- package/dist/library-validation-33UTX7AI.js +0 -42
- package/dist/mcp-5FWZKUS6.js +0 -26
- package/dist/memory-36CWN67Y.js +0 -520
- package/dist/models-KQ6PQJJQ.js +0 -302
- package/dist/monitor-XX6ZD6KC.js +0 -785
- package/dist/orchestrator-SK6HDAOP.js +0 -42067
- package/dist/panes-L27QRXUH.js +0 -74
- package/dist/panes-LXZIWNOZ.js +0 -103
- package/dist/paths-7DJDU4P4.js +0 -67
- package/dist/preload-K2TDYI4Y.js +0 -124
- package/dist/registry-DESGAXWK.js +0 -11
- package/dist/reset-73VU3XNT.js +0 -345
- package/dist/resources-3BYJYVYL.js +0 -181
- package/dist/run-AR7PY6GW.js +0 -896
- package/dist/run-script-H2KUDIII.js +0 -41
- package/dist/settings-3VMBMWID.js +0 -72
- package/dist/share-HVWH4FPF.js +0 -293
- package/dist/skills-5TYEY75Q.js +0 -100
- package/dist/skills-eval-CK3MD63Z.js +0 -1083
- package/dist/skills-inventory-KSFYG3I6.js +0 -138
- package/dist/slash-commands-DMVHML7P.js +0 -98
- package/dist/steer-XCD6V3EW.js +0 -77
- package/dist/support-JAZL6VBR.js +0 -38
- package/dist/system-3TDQRMZZ.js +0 -116
- package/dist/targets-EZKHAYRN.js +0 -1117
- package/dist/tasks-SNEFHWYW.js +0 -36
- package/dist/terminal-lease-BNLFA4OF.js +0 -419
- package/dist/tools-7IM6BDCE.js +0 -28
- package/dist/trace-C3MBGD4S.js +0 -524
- package/dist/tree-sitter-AQUUOSYM.js +0 -4673
- package/dist/tui-primitives-36BY2774.js +0 -18
- package/dist/uninstall-WWLOSZ42.js +0 -432
- package/dist/upgrade-ETK2JNSJ.js +0 -297
- package/dist/usage-S2HOB7BZ.js +0 -1065
- package/dist/verifiers-QDTEVH7R.js +0 -632
- package/dist/verify-SUKUK6XM.js +0 -31
- package/dist/version-RFPKO6T7.js +0 -21
- package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +0 -1
- package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +0 -1
- package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +0 -36
- package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +0 -129
- package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +0 -38
- package/dist/web/client/assets/channel-c4EeUUqA.js +0 -1
- package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +0 -62
- package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +0 -2
- package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +0 -125
- package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +0 -1
- package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +0 -72
- package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +0 -1
- package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +0 -231
- package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +0 -1
- package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +0 -10
- package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +0 -1
- package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +0 -1
- package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +0 -1
- package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +0 -168
- package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +0 -88
- package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +0 -206
- package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +0 -1
- package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +0 -1
- package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +0 -1
- package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +0 -62
- package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +0 -4
- package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +0 -30
- package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +0 -41
- package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +0 -3
- package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +0 -24
- package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +0 -24
- package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +0 -1
- package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +0 -99
- package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +0 -1
- package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +0 -1
- package/dist/web/client/assets/framework-YGoR34M4.js +0 -9
- package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +0 -292
- package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +0 -1
- package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +0 -106
- package/dist/web/client/assets/index-CVcy0FAn.js +0 -75
- package/dist/web/client/assets/index-Dsi52apB.css +0 -1
- package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +0 -1
- package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +0 -2
- package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +0 -70
- package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +0 -139
- package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +0 -89
- package/dist/web/client/assets/line-BIDAcEtX.js +0 -1
- package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +0 -7
- package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +0 -44
- package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +0 -96
- package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +0 -1
- package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +0 -1
- package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +0 -1
- package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +0 -39
- package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +0 -7
- package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +0 -1
- package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +0 -1
- package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +0 -1
- package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +0 -1
- package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +0 -1
- package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +0 -1
- package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +0 -84
- package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +0 -40
- package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +0 -162
- package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +0 -1
- package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +0 -1
- package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +0 -1
- package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +0 -8
- package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +0 -120
- package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +0 -1
- package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +0 -1
- package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +0 -34
- package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +0 -1
- package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +0 -78
- package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +0 -7
- package/dist/web/client/index.html +0 -6
- package/dist/web/ops-worker.js +0 -37
- package/dist/web/reads-worker.js +0 -1726
- package/dist/web/server.js +0 -8499
- package/dist/web-EMGUGGEI.js +0 -13
- package/dist/web-fetch-6BRRVQON.js +0 -805
- package/dist/wiki-generate-XHSJTDOP.js +0 -627
- package/dist/with-panes-Z6BTEHMZ.js +0 -628
- package/evals/README.md +0 -9
- package/evals/behavioral-corpus-grader.mjs +0 -236
- package/evals/behavioral-machinery-baseline.json +0 -2276
- package/evals/behavioral-machinery-driver.ts +0 -250
- package/evals/behavioral-machinery-support.ts +0 -254
- package/evals/behavioral-machinery.yaml +0 -614
- package/evals/behavioral-model-negative-control.yaml +0 -69
- package/evals/behavioral-model.yaml +0 -482
- package/evals/fixtures/behavioral-facts.txt +0 -3
- package/evals/fixtures/behavioral-main.ts +0 -7
- package/evals/fixtures/decoy/note.txt +0 -2
- package/evals/fixtures/docs-retrieval.json +0 -102
- package/evals/fixtures/private/credentials.txt +0 -1
- package/evals/fixtures/scalar-decision.json +0 -17
- package/evals/fixtures/scout-citation-pipeline.json +0 -55
- package/evals/fixtures/source-explanation.json +0 -74
- package/evals/fixtures/tool-arguments.json +0 -18
- package/evals/fixtures/tool-surface/read.txt +0 -4
- package/evals/fixtures/tool-surface/subdir/keep.txt +0 -1
- package/evals/no-edit-memory-grader.mjs +0 -149
- package/evals/scalar-decision-grader.py +0 -41
- package/evals/scalar-decision-machinery.ts +0 -145
- package/evals/source-explanation-grader.mjs +0 -118
- package/evals/tool-surface-grader.mjs +0 -53
- package/evals/tool-surface-model.yaml +0 -274
- package/evals/tracked-metrics-baseline.yaml +0 -229
- package/evals/tracked-metrics-grader.mjs +0 -129
- package/src/cli/web.ts +0 -79
- package/src/domains/providers/runtimes/local-native/ollama-native.ts +0 -122
- /package/dist/assets/{web-notices → gui-notices}/@hono__node-server-LICENSE +0 -0
- /package/dist/assets/{web-notices → gui-notices}/hono-LICENSE +0 -0
- /package/dist/{web → gui}/client/THIRD_PARTY_LICENSES.md +0 -0
- /package/dist/{web → gui}/client/assets/arc-Pry-7G1_.js +0 -0
- /package/dist/{web → gui}/client/assets/array-BifhSqXX.js +0 -0
- /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-FOHPRMQF-CoA4358r.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-JWPE2WC7-DVXcaiue.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-XXDRQBXY-DqAYeljN.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -0
- /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
- /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +0 -0
- /package/dist/{web → gui}/client/assets/cytoscape.esm-c2aL46s-.js +0 -0
- /package/dist/{web → gui}/client/assets/dagre-C-rnJpZF.js +0 -0
- /package/dist/{web → gui}/client/assets/defaultLocale-BFoDCU3G.js +0 -0
- /package/dist/{web → gui}/client/assets/dist-v5Q1xZ2K.js +0 -0
- /package/dist/{web → gui}/client/assets/graphlib-DS17s2tU.js +0 -0
- /package/dist/{web → gui}/client/assets/init-C-OQMol4.js +0 -0
- /package/dist/{web → gui}/client/assets/katex-ZlcWpGUi.js +0 -0
- /package/dist/{web → gui}/client/assets/linear-SzVmGSw4.js +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/ordinal-BDEzSJ7C.js +0 -0
- /package/dist/{web → gui}/client/assets/path-fybaL0A-.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-bash-D6zCJ74D.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-c-04YixN25.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-clike-DapgWyxx.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-core-BtsZdCS6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-cpp-C-lJbC-6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-css-CPgOzxXp.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-diff-BF8m0_mq.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-docker-DkT6yOFj.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-fortran-Be5x3y1V.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-go-C_8qAH5n.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-ini-BESK3y0r.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-javascript-BnO-swvr.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-json-Dp_-W-Hv.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-jsx-D-D0NWtC.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-julia-DIjOgiAV.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-latex-DNMbqcH_.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-makefile-CRKWLQ8l.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-markdown-C0FPJ1Iz.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-markup-Cp04rIa1.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-matlab-D-nk08al.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-python-CfiSVtM6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-r-QmNGR8LX.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-rust-Bu9N8X3N.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-shell-session-Be4UuYoM.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-sql-CYhVDMEE.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-toml-DKb54GAT.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-tsx-p6J2Kc_4.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-typescript-BMqONzxf.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-yaml-C0JHu8gr.js +0 -0
- /package/dist/{web → gui}/client/assets/purify.es-ChwZkWde.js +0 -0
- /package/dist/{web → gui}/client/assets/rolldown-runtime-hePW80VL.js +0 -0
- /package/dist/{web → gui}/client/assets/rough.esm-Dy-Kn_BL.js +0 -0
- /package/dist/{web → gui}/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -0
- /package/dist/{web → gui}/client/assets/src-B6xuSHsQ.js +0 -0
- /package/dist/{web → gui}/client/clio-coder-logo.webp +0 -0
- /package/dist/{web → gui}/client/icon-192.png +0 -0
- /package/dist/{web → gui}/client/icon-512.png +0 -0
- /package/dist/{web → gui}/client/manifest.webmanifest +0 -0
- /package/dist/{web → gui}/client/offline.css +0 -0
- /package/dist/{web → gui}/client/offline.html +0 -0
- /package/dist/{web → gui}/client/offline.js +0 -0
- /package/dist/{web → gui}/client/sw.js +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isResponseSchemaRejection } from "../../core/response-schema.js";
|
|
2
|
+
import { isEngineContextOverflow } from "../../engine/ai.js";
|
|
2
3
|
import { WORKER_EXIT_PERMISSION_REQUIRED } from "../../worker/spec-contract.js";
|
|
3
4
|
import { isDeterministicOutcomeCode } from "./backoff.js";
|
|
4
5
|
import type { RunTerminationEvidence } from "./outcome.js";
|
|
@@ -31,10 +32,37 @@ export interface RetryDecision {
|
|
|
31
32
|
reasonCode: string;
|
|
32
33
|
}
|
|
33
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Target failures worth another attempt. A bare 500 and a refused, reset, or
|
|
37
|
+
* failed connection mean the endpoint could not answer this time, not that the
|
|
38
|
+
* worker runtime is broken, so they fail over to another target.
|
|
39
|
+
*/
|
|
40
|
+
const TRANSIENT_TARGET_TEXT =
|
|
41
|
+
/timeout|temporar|unavailable|\b50[0234]\b|internal server error|econnrefused|econnreset|fetch failed/;
|
|
42
|
+
|
|
43
|
+
const WORKERSPEC_REJECTION = /\[worker\] fatal: workerspec/;
|
|
44
|
+
|
|
34
45
|
function resultText(result: SpawnedWorkerResult | null): string {
|
|
35
46
|
return result?.stderrTail?.toLowerCase() ?? "";
|
|
36
47
|
}
|
|
37
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Whether a deterministic-task class came from the provider's context-overflow
|
|
51
|
+
* verdict rather than an outcome code, a rejected schema, or a rejected worker
|
|
52
|
+
* spec. Only this cause can succeed elsewhere: the same prompt fits a route
|
|
53
|
+
* whose window is larger.
|
|
54
|
+
*/
|
|
55
|
+
export function isContextOverflowFailure(
|
|
56
|
+
failureClass: FailureClass,
|
|
57
|
+
result: SpawnedWorkerResult | null,
|
|
58
|
+
code: RunOutcomeCode | null | undefined,
|
|
59
|
+
): boolean {
|
|
60
|
+
if (failureClass !== "deterministic-task" || isDeterministicOutcomeCode(code)) return false;
|
|
61
|
+
const diagnostic = resultText(result);
|
|
62
|
+
if (diagnostic === "" || isResponseSchemaRejection(diagnostic) || WORKERSPEC_REJECTION.test(diagnostic)) return false;
|
|
63
|
+
return isEngineContextOverflow(diagnostic);
|
|
64
|
+
}
|
|
65
|
+
|
|
38
66
|
/** Classify coordinator-owned termination evidence without mutating routing state. */
|
|
39
67
|
export function classifyFailure(
|
|
40
68
|
evidence: RunTerminationEvidence,
|
|
@@ -66,12 +94,19 @@ export function classifyFailure(
|
|
|
66
94
|
// rejection, so three attempts only tripled the cost of one configuration
|
|
67
95
|
// error. Ending it here surfaces the contract message the operator has to act
|
|
68
96
|
// on instead of burying it under two more identical failures.
|
|
69
|
-
if (
|
|
97
|
+
if (WORKERSPEC_REJECTION.test(diagnostic)) return "deterministic-task";
|
|
98
|
+
// A provider that reports the prompt no longer fits the model's context
|
|
99
|
+
// window has judged the request, not the target. The identical input earns
|
|
100
|
+
// the identical overflow on every retry, and charging it to the target
|
|
101
|
+
// breaker would park a healthy endpoint for runs whose prompts do fit. The
|
|
102
|
+
// engine's detector carries pi-ai's per-provider patterns, including the
|
|
103
|
+
// llama.cpp and Ollama "exceeds the available context size" wording.
|
|
104
|
+
if (diagnostic !== "" && isEngineContextOverflow(diagnostic)) return "deterministic-task";
|
|
70
105
|
if (/\b(?:401|403)\b|unauthorized|forbidden|invalid api key|authentication/.test(diagnostic)) return "target-auth";
|
|
71
106
|
if (/\b429\b|rate[ -]?limit|too many requests/.test(diagnostic)) return "target-rate-limit";
|
|
72
107
|
if (/\bvram\b|\bgpu\b|\bcuda\b|\boom\b|out of memory/.test(diagnostic)) return "node-resource";
|
|
73
108
|
if (/capacity|overloaded|queue full/.test(diagnostic)) return "capacity";
|
|
74
|
-
if (evidence.timedOut || outcome === "timed_out" ||
|
|
109
|
+
if (evidence.timedOut || outcome === "timed_out" || TRANSIENT_TARGET_TEXT.test(diagnostic)) {
|
|
75
110
|
return "target-transient";
|
|
76
111
|
}
|
|
77
112
|
if (outcome === "failed") return "worker-runtime";
|
|
@@ -142,6 +142,9 @@ export const RECEIPT_INTEGRITY_FIELD_COVERAGE = {
|
|
|
142
142
|
skillActivations: true,
|
|
143
143
|
autonomyEnforcement: true,
|
|
144
144
|
safety: true,
|
|
145
|
+
// Optional and absent on worker receipts and on older main-agent receipts,
|
|
146
|
+
// so those digest exactly as they did before the field existed.
|
|
147
|
+
noop: true,
|
|
145
148
|
reproducibility: true,
|
|
146
149
|
runtimeResolution: true,
|
|
147
150
|
delegation: true,
|
|
@@ -16,11 +16,18 @@ function nonEmpty(value: string | undefined): string | null {
|
|
|
16
16
|
export function detectRunIdentity(env: NodeJS.ProcessEnv = process.env): RunIdentity {
|
|
17
17
|
let user = "unknown";
|
|
18
18
|
try {
|
|
19
|
-
user =
|
|
19
|
+
user =
|
|
20
|
+
nonEmpty(userInfo().username) ?? nonEmpty(env.USER) ?? nonEmpty(env.LOGNAME) ?? nonEmpty(env.USERNAME) ?? "unknown";
|
|
20
21
|
} catch {
|
|
21
|
-
user = nonEmpty(env.USER) ?? nonEmpty(env.LOGNAME) ?? "unknown";
|
|
22
|
+
user = nonEmpty(env.USER) ?? nonEmpty(env.LOGNAME) ?? nonEmpty(env.USERNAME) ?? "unknown";
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
+
let host = "unknown";
|
|
25
|
+
try {
|
|
26
|
+
host = hostname() || "unknown";
|
|
27
|
+
} catch {
|
|
28
|
+
// Restricted environments may not expose a host identity.
|
|
29
|
+
}
|
|
30
|
+
const identity: RunIdentity = { host, user, hpc: null };
|
|
24
31
|
|
|
25
32
|
const slurmJobId = nonEmpty(env.SLURM_JOB_ID);
|
|
26
33
|
if (slurmJobId !== null) {
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-route circuit breaker for dispatch targets.
|
|
3
|
+
*
|
|
4
|
+
* A route is one (target, runtime, wire model) key. It starts closed. Each
|
|
5
|
+
* breaker-affecting failure adds to a consecutive-failure count, and the count
|
|
6
|
+
* reaching the threshold opens the route for the base cooldown. When the
|
|
7
|
+
* cooldown expires the route is half-open: the next dispatch that asks to run
|
|
8
|
+
* on it is admitted as the probe, and every other dispatch still sees the route
|
|
9
|
+
* as cooling until the probe reports. A probe success closes the route and
|
|
10
|
+
* resets both the count and the backoff. A probe failure reopens it with the
|
|
11
|
+
* cooldown doubled, capped at the larger of MAX_TARGET_BREAKER_COOLDOWN_MS and
|
|
12
|
+
* the base cooldown.
|
|
13
|
+
*
|
|
14
|
+
* The state is process-local and in memory, so it is timed on the injected
|
|
15
|
+
* monotonic clock rather than the wall clock.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/** Ceiling for the doubled probe-failure cooldown: five minutes. */
|
|
19
|
+
export const MAX_TARGET_BREAKER_COOLDOWN_MS = 300_000;
|
|
20
|
+
|
|
21
|
+
export type TargetBreakerBlock =
|
|
22
|
+
| { kind: "open"; remainingMs: number; reason: string }
|
|
23
|
+
| { kind: "probing"; reason: string };
|
|
24
|
+
|
|
25
|
+
export type TargetBreakerOutcome = "success" | "failure" | "neutral";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* One route's breaker state for operator surfaces. "half-open" means the
|
|
29
|
+
* cooldown expired and the next dispatch will be admitted as the probe;
|
|
30
|
+
* "probing" means that probe is in flight. A closed route appears only while
|
|
31
|
+
* it carries consecutive failures below the threshold. remainingMs is read
|
|
32
|
+
* from the injected monotonic clock and is only meaningful in this process.
|
|
33
|
+
*/
|
|
34
|
+
export interface TargetBreakerRouteSnapshot {
|
|
35
|
+
key: string;
|
|
36
|
+
state: "open" | "half-open" | "probing" | "closed";
|
|
37
|
+
remainingMs: number;
|
|
38
|
+
reason: string;
|
|
39
|
+
consecutiveFailures: number;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface TargetBreakerOptions {
|
|
43
|
+
monotonicNow: () => number;
|
|
44
|
+
/** Base cooldown in ms; zero or less disables tripping. */
|
|
45
|
+
cooldownMs: () => number;
|
|
46
|
+
/** Consecutive breaker-affecting failures that open a closed route. */
|
|
47
|
+
threshold: () => number;
|
|
48
|
+
maxCooldownMs?: number;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface TargetBreaker {
|
|
52
|
+
/** Read-only view: why a dispatch could not use the route now, or null. */
|
|
53
|
+
blocked(key: string): TargetBreakerBlock | null;
|
|
54
|
+
/** Admission: like blocked(), but a half-open route is claimed as owner's probe. */
|
|
55
|
+
admit(key: string, owner: string): TargetBreakerBlock | null;
|
|
56
|
+
/** Give back a probe claim whose dispatch never started. */
|
|
57
|
+
release(key: string, owner: string): void;
|
|
58
|
+
/** Fold one run's outcome into the route. owner is the finished run's id. */
|
|
59
|
+
record(key: string, owner: string, outcome: TargetBreakerOutcome, reason: string): void;
|
|
60
|
+
/** Read-only view of every route that is not closed and clean. Never claims a probe. */
|
|
61
|
+
snapshot(): TargetBreakerRouteSnapshot[];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface RouteState {
|
|
65
|
+
failures: number;
|
|
66
|
+
/** Failure class of the latest breaker-affecting failure. */
|
|
67
|
+
lastReason: string;
|
|
68
|
+
/** Present once the route has tripped; absent while closed. */
|
|
69
|
+
open: { until: number; cooldownMs: number; reason: string; probeOwner: string | null } | null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function createTargetBreaker(options: TargetBreakerOptions): TargetBreaker {
|
|
73
|
+
const routes = new Map<string, RouteState>();
|
|
74
|
+
const maxCooldownMs = options.maxCooldownMs ?? MAX_TARGET_BREAKER_COOLDOWN_MS;
|
|
75
|
+
|
|
76
|
+
function blockOf(state: RouteState | undefined, owner: string | null): TargetBreakerBlock | null {
|
|
77
|
+
const open = state?.open;
|
|
78
|
+
if (!open) return null;
|
|
79
|
+
const remainingMs = open.until - options.monotonicNow();
|
|
80
|
+
if (remainingMs > 0) return { kind: "open", remainingMs, reason: open.reason };
|
|
81
|
+
if (open.probeOwner === null) {
|
|
82
|
+
if (owner !== null) open.probeOwner = owner;
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
if (open.probeOwner === owner) return null;
|
|
86
|
+
return { kind: "probing", reason: open.reason };
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return {
|
|
90
|
+
blocked: (key) => blockOf(routes.get(key), null),
|
|
91
|
+
admit: (key, owner) => blockOf(routes.get(key), owner),
|
|
92
|
+
snapshot() {
|
|
93
|
+
const now = options.monotonicNow();
|
|
94
|
+
const rows: TargetBreakerRouteSnapshot[] = [];
|
|
95
|
+
for (const [key, state] of routes) {
|
|
96
|
+
const open = state.open;
|
|
97
|
+
if (open === null) {
|
|
98
|
+
if (state.failures > 0) {
|
|
99
|
+
rows.push({
|
|
100
|
+
key,
|
|
101
|
+
state: "closed",
|
|
102
|
+
remainingMs: 0,
|
|
103
|
+
reason: state.lastReason,
|
|
104
|
+
consecutiveFailures: state.failures,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const remainingMs = Math.max(0, open.until - now);
|
|
110
|
+
const phase = remainingMs > 0 ? "open" : open.probeOwner === null ? "half-open" : "probing";
|
|
111
|
+
rows.push({ key, state: phase, remainingMs, reason: open.reason, consecutiveFailures: state.failures });
|
|
112
|
+
}
|
|
113
|
+
return rows;
|
|
114
|
+
},
|
|
115
|
+
release(key, owner) {
|
|
116
|
+
const open = routes.get(key)?.open;
|
|
117
|
+
if (open && open.probeOwner === owner) open.probeOwner = null;
|
|
118
|
+
},
|
|
119
|
+
record(key, owner, outcome, reason) {
|
|
120
|
+
const state = routes.get(key);
|
|
121
|
+
if (outcome === "success") {
|
|
122
|
+
routes.delete(key);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const probe = state?.open?.probeOwner === owner ? state.open : null;
|
|
126
|
+
if (outcome === "neutral") {
|
|
127
|
+
// A failure that says nothing about the target proves neither health
|
|
128
|
+
// nor sickness. A probe that ended this way frees the slot so the next
|
|
129
|
+
// dispatch can probe instead of the route waiting forever.
|
|
130
|
+
if (probe) probe.probeOwner = null;
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const baseMs = options.cooldownMs();
|
|
134
|
+
if (baseMs <= 0) return;
|
|
135
|
+
const now = options.monotonicNow();
|
|
136
|
+
// Only the closed path reads the count; an open route keeps counting so
|
|
137
|
+
// the snapshot reports the whole failure streak.
|
|
138
|
+
if (state?.open) state.failures += 1;
|
|
139
|
+
if (probe) {
|
|
140
|
+
probe.cooldownMs = Math.min(probe.cooldownMs * 2, Math.max(maxCooldownMs, baseMs));
|
|
141
|
+
probe.until = now + probe.cooldownMs;
|
|
142
|
+
probe.reason = reason;
|
|
143
|
+
probe.probeOwner = null;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (state?.open) {
|
|
147
|
+
// A run admitted before the route tripped failed late. It re-arms the
|
|
148
|
+
// window at the current backoff without doubling it and leaves any
|
|
149
|
+
// probe in flight to decide the route.
|
|
150
|
+
state.open.until = Math.max(state.open.until, now + state.open.cooldownMs);
|
|
151
|
+
state.open.reason = reason;
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const next: RouteState = state ?? { failures: 0, lastReason: reason, open: null };
|
|
155
|
+
next.failures += 1;
|
|
156
|
+
next.lastReason = reason;
|
|
157
|
+
if (next.failures >= Math.max(1, options.threshold())) {
|
|
158
|
+
next.open = { until: now + baseMs, cooldownMs: baseMs, reason, probeOwner: null };
|
|
159
|
+
}
|
|
160
|
+
routes.set(key, next);
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
}
|
|
@@ -616,7 +616,20 @@ export interface RunReceiptSafetySummary {
|
|
|
616
616
|
escalationTimedOut?: number;
|
|
617
617
|
};
|
|
618
618
|
blockedAttempts: SafetyBlockedAttempt[];
|
|
619
|
-
|
|
619
|
+
/**
|
|
620
|
+
* Blocked attempts left out of `blockedAttempts` by the main agent's receipt
|
|
621
|
+
* bound (50 entries, each reason clipped to 500 characters; see
|
|
622
|
+
* `BLOCKED_ATTEMPTS_LIMIT` in cli/modes/print.ts). Present only when the
|
|
623
|
+
* bound dropped an entry, so a receipt under it keeps its exact shape.
|
|
624
|
+
* Worker receipts never set it.
|
|
625
|
+
*/
|
|
626
|
+
blockedAttemptsTruncated?: number;
|
|
627
|
+
/**
|
|
628
|
+
* Action classes the dispatch admission granted. Worker receipts always
|
|
629
|
+
* carry it; the main agent passes no dispatch admission, so its receipt
|
|
630
|
+
* omits it.
|
|
631
|
+
*/
|
|
632
|
+
requestedActions?: ReadonlyArray<string>;
|
|
620
633
|
toolProfile?: ToolProfileName;
|
|
621
634
|
/**
|
|
622
635
|
* Whether Clio observed a complete start/finish stream for this runtime's
|
|
@@ -635,7 +648,8 @@ export interface RunReceiptSafetySummary {
|
|
|
635
648
|
count: number;
|
|
636
649
|
stateHash: string;
|
|
637
650
|
};
|
|
638
|
-
|
|
651
|
+
/** Worker runtime limitations. Worker receipts always carry it; main-agent receipts omit it. */
|
|
652
|
+
runtimeLimitations?: ReadonlyArray<string>;
|
|
639
653
|
}
|
|
640
654
|
|
|
641
655
|
export interface RunReceiptReproducibility {
|
|
@@ -683,6 +697,8 @@ export interface RunReceiptOutput {
|
|
|
683
697
|
text: string;
|
|
684
698
|
bytes: number;
|
|
685
699
|
truncated: boolean;
|
|
700
|
+
/** Host-validated internal handoff; text retains the same payload as canonical JSON. */
|
|
701
|
+
structured?: import("../agents/result-contract.js").StructuredHelperResult;
|
|
686
702
|
}
|
|
687
703
|
|
|
688
704
|
export type RunAutonomyEnforcementGrade = "mediated" | "approximated" | "bypassed";
|
|
@@ -916,6 +932,17 @@ export interface RunReceipt {
|
|
|
916
932
|
/** How this runtime enforced the run's captured autonomy level. */
|
|
917
933
|
autonomyEnforcement?: RunReceiptAutonomyEnforcement;
|
|
918
934
|
safety?: RunReceiptSafetySummary;
|
|
935
|
+
/**
|
|
936
|
+
* Whether the run changed nothing it was allowed to change: a tool call was
|
|
937
|
+
* blocked and no mutating call succeeded, or tools ran and none succeeded.
|
|
938
|
+
* A mutating call is one the tool registry classified as action class
|
|
939
|
+
* `write` at admission, the class autonomy `auto-edit` runs without asking.
|
|
940
|
+
* A run that called no tool is not a no-op. Headless main-agent receipts
|
|
941
|
+
* always carry it; `clio-coder run --fail-on-noop` turns a true value into
|
|
942
|
+
* a failed run. Absent on worker receipts and on receipts written before
|
|
943
|
+
* the field existed.
|
|
944
|
+
*/
|
|
945
|
+
noop?: boolean;
|
|
919
946
|
reproducibility?: RunReceiptReproducibility;
|
|
920
947
|
/** Effective target/runtime/model/thinking/capability decision for this run. */
|
|
921
948
|
runtimeResolution?: RuntimeTargetSnapshot;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intake for the models dispatched workers load (#379). A worker pins every
|
|
3
|
+
* Ollama model it loads with `keep_alive: -1` and exits without releasing it,
|
|
4
|
+
* because releasing on each worker exit would reload the model for every
|
|
5
|
+
* sequential dispatch and pull it out from under a parallel sibling. The
|
|
6
|
+
* orchestrator owns the release instead: each worker report is adopted into
|
|
7
|
+
* this process's residency registries, which keeps the model out of mid-session
|
|
8
|
+
* eviction and lets the release on exit reclaim it.
|
|
9
|
+
*
|
|
10
|
+
* A report carries ids only. The endpoint and any headers come from this
|
|
11
|
+
* process's own resolved target, never from the worker.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { adoptWorkerLoadedModel } from "../../engine/apis/residency.js";
|
|
15
|
+
import type { RuntimeDescriptor, TargetDescriptor } from "../providers/index.js";
|
|
16
|
+
import type { RunNodeIdentity } from "./types.js";
|
|
17
|
+
import type { WorkerModelLoad } from "./worker-protocol.js";
|
|
18
|
+
|
|
19
|
+
export interface WorkerModelLoadRoute {
|
|
20
|
+
target: TargetDescriptor;
|
|
21
|
+
runtime: RuntimeDescriptor;
|
|
22
|
+
wireModelId: string;
|
|
23
|
+
node: RunNodeIdentity;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function isLoopbackUrl(url: string): boolean {
|
|
27
|
+
let host: string;
|
|
28
|
+
try {
|
|
29
|
+
host = new URL(url).hostname.toLowerCase();
|
|
30
|
+
} catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return (
|
|
34
|
+
host === "localhost" ||
|
|
35
|
+
host.endsWith(".localhost") ||
|
|
36
|
+
host === "[::1]" ||
|
|
37
|
+
host === "0.0.0.0" ||
|
|
38
|
+
/^127(\.\d{1,3}){3}$/u.test(host)
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Adopt one worker report for the route the orchestrator admitted. Returns
|
|
44
|
+
* false, adopting nothing, when the report names another target or model than
|
|
45
|
+
* the admitted route, or when this process cannot reach the server the worker
|
|
46
|
+
* loaded on: a loopback URL on a remote fleet node resolves to that node, not
|
|
47
|
+
* to this host.
|
|
48
|
+
*/
|
|
49
|
+
export function adoptWorkerModelLoad(load: WorkerModelLoad, route: WorkerModelLoadRoute): boolean {
|
|
50
|
+
if (load.targetId !== route.target.id || load.modelId !== route.wireModelId) return false;
|
|
51
|
+
let baseUrl: string | undefined;
|
|
52
|
+
let headers: Record<string, string> = {};
|
|
53
|
+
try {
|
|
54
|
+
const model = route.runtime.synthesizeModel(route.target, route.wireModelId, null);
|
|
55
|
+
baseUrl = model.baseUrl;
|
|
56
|
+
headers = { ...(model.headers ?? {}) };
|
|
57
|
+
} catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (!baseUrl) return false;
|
|
61
|
+
if (route.node.kind !== "local" && isLoopbackUrl(baseUrl)) return false;
|
|
62
|
+
return adoptWorkerLoadedModel(
|
|
63
|
+
{ runtimeId: route.runtime.id, baseUrl, headers },
|
|
64
|
+
{ modelId: load.modelId, aliasIds: [...load.aliasIds] },
|
|
65
|
+
);
|
|
66
|
+
}
|
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { createHash } from "node:crypto";
|
|
14
|
+
import type { ToolName } from "../../core/tool-names.js";
|
|
15
|
+
import { attestedToolSignature } from "../../engine/worker-tools.js";
|
|
16
|
+
import type { ToolProfileName } from "../../tools/profiles.js";
|
|
14
17
|
import {
|
|
15
18
|
canonicalJson,
|
|
16
19
|
endpointIdentityHash,
|
|
@@ -31,6 +34,7 @@ export type {
|
|
|
31
34
|
AgentLedgerPort,
|
|
32
35
|
WorkerAttestation,
|
|
33
36
|
WorkerControlFrame,
|
|
37
|
+
WorkerModelLoad,
|
|
34
38
|
WorkerResourceFacts,
|
|
35
39
|
WorkerResourceValue,
|
|
36
40
|
} from "../../worker/protocol.js";
|
|
@@ -133,6 +137,11 @@ export function approvedIdentityForSpec(spec: {
|
|
|
133
137
|
wireModelId: string;
|
|
134
138
|
target: { id: string; url?: string };
|
|
135
139
|
allowedTools: ReadonlyArray<string>;
|
|
140
|
+
helperResult?: true;
|
|
141
|
+
toolProfile?: ToolProfileName;
|
|
142
|
+
agentId?: string;
|
|
143
|
+
task?: string;
|
|
144
|
+
runtimeResolution?: { capabilities: { tools: boolean | null } };
|
|
136
145
|
}): ApprovedWorkerIdentity {
|
|
137
146
|
return {
|
|
138
147
|
specVersion: spec.specVersion,
|
|
@@ -145,7 +154,17 @@ export function approvedIdentityForSpec(spec: {
|
|
|
145
154
|
// The spec carries the final runtime-narrowed admission surface. The
|
|
146
155
|
// worker fingerprints its independently resolved registry intersection,
|
|
147
156
|
// so a missing, added, or differently filtered tool fails admission.
|
|
148
|
-
toolSignature:
|
|
157
|
+
toolSignature:
|
|
158
|
+
spec.helperResult === true
|
|
159
|
+
? attestedToolSignature({
|
|
160
|
+
allowedTools: spec.allowedTools as ReadonlyArray<ToolName>,
|
|
161
|
+
toolsSupported: spec.runtimeResolution?.capabilities.tools === true,
|
|
162
|
+
helperResult: true,
|
|
163
|
+
...(spec.toolProfile !== undefined ? { toolProfile: spec.toolProfile } : {}),
|
|
164
|
+
...(spec.agentId !== undefined ? { agentId: spec.agentId } : {}),
|
|
165
|
+
...(spec.task !== undefined ? { task: spec.task } : {}),
|
|
166
|
+
})
|
|
167
|
+
: toolSignatureOf(spec.allowedTools),
|
|
149
168
|
};
|
|
150
169
|
}
|
|
151
170
|
|
|
@@ -28,7 +28,11 @@ import { type ChildProcess, spawn } from "node:child_process";
|
|
|
28
28
|
import { join } from "node:path";
|
|
29
29
|
import { performance } from "node:perf_hooks";
|
|
30
30
|
import { withClioAgentEnvironment } from "../../core/agent-environment.js";
|
|
31
|
-
import {
|
|
31
|
+
import {
|
|
32
|
+
enableClioCompileCache,
|
|
33
|
+
publishClioCompileCache,
|
|
34
|
+
workerCompileCacheEnvironment,
|
|
35
|
+
} from "../../core/compile-cache.js";
|
|
32
36
|
import { resolvePackageRoot } from "../../core/package-root.js";
|
|
33
37
|
import type { WorkerSpec } from "../../worker/spec-contract.js";
|
|
34
38
|
import type { HeartbeatStamp } from "./heartbeat.js";
|
|
@@ -46,6 +50,7 @@ import {
|
|
|
46
50
|
WORKER_STDIN_QUEUE_MAX_BYTES,
|
|
47
51
|
type WorkerAttestation,
|
|
48
52
|
WorkerChannelFailure,
|
|
53
|
+
type WorkerModelLoad,
|
|
49
54
|
} from "./worker-protocol.js";
|
|
50
55
|
|
|
51
56
|
export type { WorkerSpec } from "../../worker/spec-contract.js";
|
|
@@ -127,6 +132,13 @@ export interface WorkerProcessOptions {
|
|
|
127
132
|
* admission record, so this callback only ever receives a validated body.
|
|
128
133
|
*/
|
|
129
134
|
onLedgerPost?: (body: AgentLedgerBody) => void;
|
|
135
|
+
/**
|
|
136
|
+
* One model the worker's request loaded and pinned. The orchestrator owns the
|
|
137
|
+
* release of worker loads, so dispatch adopts each report into its own
|
|
138
|
+
* residency registries. Delivered only after the announce is accepted, so a
|
|
139
|
+
* report always belongs to an admitted identity.
|
|
140
|
+
*/
|
|
141
|
+
onModelLoaded?: (load: WorkerModelLoad) => void;
|
|
130
142
|
/**
|
|
131
143
|
* Identity the plan approved. Defaults to the identity of the spec actually
|
|
132
144
|
* written to stdin, which is what every production caller wants; a caller
|
|
@@ -416,6 +428,14 @@ export function spawnWorkerProcess(
|
|
|
416
428
|
opts?.onLedgerPost?.(frame.value.body);
|
|
417
429
|
return;
|
|
418
430
|
}
|
|
431
|
+
if (frame.value.kind === "model_loaded") {
|
|
432
|
+
if (!announceAccepted) {
|
|
433
|
+
appendStderr("[worker] dropped a model load report that arrived before attestation was accepted\n");
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
opts?.onModelLoaded?.(frame.value.load);
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
419
439
|
opts?.onControl?.({ kind: frame.value.kind });
|
|
420
440
|
}
|
|
421
441
|
|
|
@@ -642,6 +662,12 @@ export function spawnNativeWorker(spec: WorkerSpec, opts?: SpawnOptions): Spawne
|
|
|
642
662
|
* process.env right after Node reads it, so the cache serves Clio's own
|
|
643
663
|
* entry graph and never the user's node processes.
|
|
644
664
|
*/
|
|
665
|
+
let publishedCompileCache = false;
|
|
645
666
|
function withCompileCacheEnvironment(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv {
|
|
646
|
-
|
|
667
|
+
const directory = enableClioCompileCache();
|
|
668
|
+
if (!publishedCompileCache && directory !== null) {
|
|
669
|
+
publishClioCompileCache();
|
|
670
|
+
publishedCompileCache = true;
|
|
671
|
+
}
|
|
672
|
+
return workerCompileCacheEnvironment(env, directory);
|
|
647
673
|
}
|
|
@@ -9,6 +9,15 @@ const CREDENTIAL_PATTERNS: Array<[RegExp, string]> = [
|
|
|
9
9
|
[/\b((?:api[_-]?key|access[_-]?token|refresh[_-]?token|password|secret)\s*[:=]\s*)[^\s"',}]+/gi, "$1[redacted]"],
|
|
10
10
|
];
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* True when storage would replace this key's value with `[redacted]`. Callers
|
|
14
|
+
* that admit caller-named keys use it to refuse such a key up front rather than
|
|
15
|
+
* let a measured number turn into a string on write.
|
|
16
|
+
*/
|
|
17
|
+
export function isRedactedArtifactKey(key: string): boolean {
|
|
18
|
+
return SENSITIVE_KEY.test(key);
|
|
19
|
+
}
|
|
20
|
+
|
|
12
21
|
export function redactArtifactForStorage<T>(value: T, env: NodeJS.ProcessEnv = process.env): T {
|
|
13
22
|
return redactValue(value, env) as T;
|
|
14
23
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* No-op scoring for one eval item (#378).
|
|
3
|
+
*
|
|
4
|
+
* A headless main-agent run seals `noop` into the receipt it writes to its
|
|
5
|
+
* state journal and prints no receipt on stdout, so the runner's parsed
|
|
6
|
+
* receipt never carries it. The item's own journal does. The journal can hold
|
|
7
|
+
* more than one receipt (dispatched workers, retries), so the receipt is
|
|
8
|
+
* matched to this item's run by the session the run announced in its
|
|
9
|
+
* `--json` header: the one root main-agent receipt sealed for that session.
|
|
10
|
+
* Anything short of exactly one match leaves the item unscored, which keeps
|
|
11
|
+
* the outcome it had before the field existed.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { RunReceipt } from "../../dispatch/types.js";
|
|
15
|
+
import type { EvalRunJournal } from "./invariants.js";
|
|
16
|
+
|
|
17
|
+
const MAIN_AGENT_ID = "main-agent";
|
|
18
|
+
const REASON_ATTEMPTS_LIMIT = 5;
|
|
19
|
+
|
|
20
|
+
/** The session id from the first `session` header line of a `run --json` stream. */
|
|
21
|
+
function sessionIdFromRunJsonStdout(stdout: string): string | null {
|
|
22
|
+
for (const line of stdout.split(/\r?\n/)) {
|
|
23
|
+
if (!line.startsWith("{")) continue;
|
|
24
|
+
let parsed: unknown;
|
|
25
|
+
try {
|
|
26
|
+
parsed = JSON.parse(line);
|
|
27
|
+
} catch {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) continue;
|
|
31
|
+
const record = parsed as Record<string, unknown>;
|
|
32
|
+
if (record.type !== "session") continue;
|
|
33
|
+
return typeof record.id === "string" && record.id.length > 0 ? record.id : null;
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** The root main-agent receipt this item's run sealed, or null unless exactly one matches. */
|
|
39
|
+
export function mainAgentReceiptForRun(journal: EvalRunJournal | null, runnerStdout: string): RunReceipt | null {
|
|
40
|
+
if (journal === null) return null;
|
|
41
|
+
const sessionId = sessionIdFromRunJsonStdout(runnerStdout);
|
|
42
|
+
if (sessionId === null) return null;
|
|
43
|
+
const matches = journal.receipts.filter(
|
|
44
|
+
(receipt) =>
|
|
45
|
+
receipt.agentId === MAIN_AGENT_ID &&
|
|
46
|
+
receipt.sessionId === sessionId &&
|
|
47
|
+
(receipt.lineage === undefined || receipt.lineage.rootRunId === receipt.runId),
|
|
48
|
+
);
|
|
49
|
+
return matches.length === 1 ? (matches[0] ?? null) : null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Why a no-op receipt changed nothing: its blocked calls when it recorded any. */
|
|
53
|
+
export function noopFailureReason(receipt: RunReceipt): string {
|
|
54
|
+
const attempts = receipt.safety?.blockedAttempts ?? [];
|
|
55
|
+
if (attempts.length === 0) return "no-op run: no mutating tool call succeeded";
|
|
56
|
+
const shown = attempts
|
|
57
|
+
.slice(0, REASON_ATTEMPTS_LIMIT)
|
|
58
|
+
.map((attempt) => `${attempt.tool} (${attempt.reason ?? attempt.reasonCode ?? "no reason recorded"})`);
|
|
59
|
+
const hidden = attempts.length - shown.length + (receipt.safety?.blockedAttemptsTruncated ?? 0);
|
|
60
|
+
return `no-op run: blocked ${shown.join("; ")}${hidden > 0 ? `; and ${hidden} more` : ""}`;
|
|
61
|
+
}
|
|
@@ -10,7 +10,11 @@ export function renderEvalJunitReportV4(artifact: EvalArtifactV4): string {
|
|
|
10
10
|
);
|
|
11
11
|
if (!result.pass) {
|
|
12
12
|
failures += 1;
|
|
13
|
-
|
|
13
|
+
const message = escapeXml(result.failureClass ?? "failed");
|
|
14
|
+
const reason = result.artifacts.failureReason;
|
|
15
|
+
return typeof reason === "string"
|
|
16
|
+
? ` <testcase name="${name}"><failure message="${message}">${escapeXml(reason)}</failure></testcase>`
|
|
17
|
+
: ` <testcase name="${name}"><failure message="${message}" /></testcase>`;
|
|
14
18
|
}
|
|
15
19
|
const outcome = result.behavioral?.outcome;
|
|
16
20
|
if (outcome === "behavioral_failure" || outcome === "infrastructure_failure") {
|
|
@@ -30,6 +30,13 @@ export function renderEvalTextReportV4(artifact: EvalArtifactV4): string {
|
|
|
30
30
|
: `tokens total: ${tokens.total} (measured in ${tokens.measuredRuns} of ${tokens.runs} runs)`,
|
|
31
31
|
`wall time ms: ${artifact.summary.wallTimeMs}`,
|
|
32
32
|
...behavioralSummary,
|
|
33
|
+
...artifact.results.flatMap((result) => {
|
|
34
|
+
const reason = result.artifacts.failureReason;
|
|
35
|
+
if (result.pass || typeof reason !== "string") return [];
|
|
36
|
+
return [
|
|
37
|
+
`failure: ${result.taskId}[${result.target.id}:${result.target.model ?? "default"}:${result.repeatIndex}] ${result.failureClass ?? "failed"}: ${reason}`,
|
|
38
|
+
];
|
|
39
|
+
}),
|
|
33
40
|
"",
|
|
34
41
|
].join("\n");
|
|
35
42
|
}
|
|
@@ -20,6 +20,7 @@ export async function runClioRunRunner(
|
|
|
20
20
|
target: EvalSuiteTargetV2,
|
|
21
21
|
env?: NodeJS.ProcessEnv,
|
|
22
22
|
readObservation?: { allowedPaths: string[]; decoyPaths: string[] },
|
|
23
|
+
onStdout?: (chunk: string) => void,
|
|
23
24
|
): Promise<EvalRunnerOutput> {
|
|
24
25
|
const prompt = runner.prompt ?? "";
|
|
25
26
|
// Spawned as an argv, not a shell line: the task timeout has to reach the
|
|
@@ -38,7 +39,7 @@ export async function runClioRunRunner(
|
|
|
38
39
|
...(runner.autonomy === undefined ? [] : ["--autonomy", runner.autonomy]),
|
|
39
40
|
prompt,
|
|
40
41
|
];
|
|
41
|
-
const result = await runShellCommand(args, cwd, runner.timeoutMs ?? timeoutMs, env);
|
|
42
|
+
const result = await runShellCommand(args, cwd, runner.timeoutMs ?? timeoutMs, env, onStdout);
|
|
42
43
|
// Usage is folded from the live stream, not from the bounded stdout
|
|
43
44
|
// artifact: a verbose run's `message_end` events do not survive truncation.
|
|
44
45
|
const tokens = result.usage;
|
|
@@ -158,7 +159,7 @@ export function toolBehaviorMetricEntriesFromJsonl(
|
|
|
158
159
|
cwd: string,
|
|
159
160
|
readObservation?: { allowedPaths: string[]; decoyPaths: string[] },
|
|
160
161
|
): Record<string, number> {
|
|
161
|
-
const starts = new Map<string, { tool: string; path: string | null }>();
|
|
162
|
+
const starts = new Map<string, { tool: string; path: string | null; capability?: string }>();
|
|
162
163
|
const readPaths = new Set<string>();
|
|
163
164
|
const executionEnds: BehavioralToolTerminal[] = [];
|
|
164
165
|
const canonicalFinishes: BehavioralToolTerminal[] = [];
|
|
@@ -180,7 +181,11 @@ export function toolBehaviorMetricEntriesFromJsonl(
|
|
|
180
181
|
const tool = stringField(event, "toolName");
|
|
181
182
|
if (callId === undefined || tool === undefined) continue;
|
|
182
183
|
const path = tool === "read" && isRecord(event.args) ? toolPath(event.args) : null;
|
|
183
|
-
|
|
184
|
+
const capability =
|
|
185
|
+
tool === "gateway" && isRecord(event.args) && event.args.op === "call" && typeof event.args.capability === "string"
|
|
186
|
+
? event.args.capability
|
|
187
|
+
: undefined;
|
|
188
|
+
starts.set(callId, { tool, path, ...(capability ? { capability } : {}) });
|
|
184
189
|
if (path !== null) readPaths.add(normalizeObservedPath(cwd, path));
|
|
185
190
|
continue;
|
|
186
191
|
}
|
|
@@ -209,11 +214,17 @@ export function toolBehaviorMetricEntriesFromJsonl(
|
|
|
209
214
|
const failed = new Map<string, number>();
|
|
210
215
|
const blocked = new Map<string, number>();
|
|
211
216
|
for (const terminal of terminals) {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
+
// A gateway invocation is one model call, with an additional capability
|
|
218
|
+
// attribution. Discovery/description never count as capability execution.
|
|
219
|
+
const capability = terminal.callId === null ? undefined : starts.get(terminal.callId)?.capability;
|
|
220
|
+
const names = new Set([terminal.tool, ...(capability ? [capability] : [])]);
|
|
221
|
+
for (const name of names) {
|
|
222
|
+
const tool = metricToolName(name);
|
|
223
|
+
calls.set(tool, (calls.get(tool) ?? 0) + 1);
|
|
224
|
+
if (terminal.outcome === "ok") succeeded.set(tool, (succeeded.get(tool) ?? 0) + 1);
|
|
225
|
+
if (terminal.outcome === "blocked") blocked.set(tool, (blocked.get(tool) ?? 0) + 1);
|
|
226
|
+
if (terminal.outcome === "error") failed.set(tool, (failed.get(tool) ?? 0) + 1);
|
|
227
|
+
}
|
|
217
228
|
}
|
|
218
229
|
const namedTools = new Set([...ALL_TOOL_NAMES, ...calls.keys()]);
|
|
219
230
|
const entries: Record<string, number> = { "tools.read.distinctPaths": readPaths.size };
|