@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,8 +1,11 @@
|
|
|
1
|
+
import { globSync, lstatSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
1
3
|
import path from "node:path";
|
|
2
4
|
import { artifactDefaultPath } from "../../core/artifact-paths.js";
|
|
3
|
-
import { canonicalizeExistingPath } from "../../core/path-canonical.js";
|
|
5
|
+
import { canonicalizeExistingPath, canonicalizePath, canonicalizeRawPath } from "../../core/path-canonical.js";
|
|
4
6
|
import { isHarnessExtensionToolName, ToolNames } from "../../core/tool-names.js";
|
|
5
|
-
import {
|
|
7
|
+
import { normalizeToolPath } from "../../tools/path-utils.js";
|
|
8
|
+
import { type CommandPathEvent, extractCommandPathWalks } from "./protected-artifacts.js";
|
|
6
9
|
|
|
7
10
|
/**
|
|
8
11
|
* Deterministic action classifier for tool calls. Pure function, no I/O, no
|
|
@@ -174,19 +177,47 @@ function matchFirst(patterns: ReadonlyArray<NamedPattern>, haystack: string): Na
|
|
|
174
177
|
return null;
|
|
175
178
|
}
|
|
176
179
|
|
|
177
|
-
|
|
180
|
+
/**
|
|
181
|
+
* The directory a bash call runs in. The bash tool resolves its cwd argument
|
|
182
|
+
* lexically (resolveSafeCwd) and the kernel follows links on chdir, so this
|
|
183
|
+
* reads it the same way.
|
|
184
|
+
*/
|
|
185
|
+
function candidateBase(baseCwd?: string): string {
|
|
186
|
+
return canonicalizeExistingPath(path.resolve(baseCwd ?? process.cwd()));
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Where a write through a model-supplied path lands. The kernel resolves an
|
|
191
|
+
* open or a redirect one component at a time, so `data/link/../x` lands beside
|
|
192
|
+
* the link's target, not in `data`. Null when the path cannot be canonicalized.
|
|
193
|
+
*/
|
|
194
|
+
function resolveCandidate(p: string, baseCwd?: string): string | null {
|
|
178
195
|
// ~ expansion is not performed here; any ~-prefixed path is treated as an
|
|
179
196
|
// absolute user-home reference. We keep it as-is so the caller-visible
|
|
180
197
|
// string drives the escape check, and classify conservatively as modify.
|
|
181
198
|
if (p.startsWith("~")) return p;
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
199
|
+
return canonicalizeRawPath(p, candidateBase(baseCwd));
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Where a shell `cd` lands, under both readings. A shell `cd` is logical by
|
|
204
|
+
* default: it collapses `link/..` against the path it names and then follows
|
|
205
|
+
* links. `cd -P` and `set -P` walk physically instead. Null for a reading that
|
|
206
|
+
* cannot be canonicalized.
|
|
207
|
+
*/
|
|
208
|
+
function resolveCdCandidates(target: string, baseCwd?: string): Array<string | null> {
|
|
209
|
+
const base = candidateBase(baseCwd);
|
|
210
|
+
const logical = canonicalizePath(path.resolve(base, target));
|
|
211
|
+
const physical = canonicalizeRawPath(target, base);
|
|
212
|
+
return logical === physical ? [logical] : [logical, physical];
|
|
185
213
|
}
|
|
186
214
|
|
|
215
|
+
// A path that cannot be canonicalized (a link loop, too many links) is
|
|
216
|
+
// outside, never inside: nothing proves where a write through it lands.
|
|
187
217
|
function isInsideCwd(abs: string): boolean {
|
|
188
|
-
const cwd =
|
|
189
|
-
const candidate =
|
|
218
|
+
const cwd = canonicalizePath(path.resolve(process.cwd()));
|
|
219
|
+
const candidate = canonicalizePath(abs);
|
|
220
|
+
if (cwd === null || candidate === null) return false;
|
|
190
221
|
const rel = path.relative(cwd, candidate);
|
|
191
222
|
return rel === "" || (!rel.startsWith("..") && !path.isAbsolute(rel));
|
|
192
223
|
}
|
|
@@ -196,6 +227,8 @@ function writePathClass(pathArg: string, baseCwd?: string): { cls: "system_modif
|
|
|
196
227
|
return { cls: "system_modify", reason: `write-path-home-escape: ${pathArg}` };
|
|
197
228
|
}
|
|
198
229
|
const abs = resolveCandidate(pathArg, baseCwd);
|
|
230
|
+
// Nothing proves where a write through an unresolvable path lands.
|
|
231
|
+
if (abs === null) return { cls: "system_modify", reason: `write-path-outside-cwd: ${pathArg}` };
|
|
199
232
|
const exempt = SYSTEM_WRITE_EXEMPT_PREFIXES.some((prefix) => isUnderPrefix(abs, prefix));
|
|
200
233
|
if (!exempt) {
|
|
201
234
|
for (const prefix of SYSTEM_WRITE_ROOT_PREFIXES) {
|
|
@@ -210,6 +243,201 @@ function writePathClass(pathArg: string, baseCwd?: string): { cls: "system_modif
|
|
|
210
243
|
return { cls: "write" };
|
|
211
244
|
}
|
|
212
245
|
|
|
246
|
+
/** More directories than this after a run of cds is treated as an unknown base. */
|
|
247
|
+
const MAX_SHELL_BASES = 32;
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* A word the shell expands at run time: a variable, a substitution, a glob, or
|
|
251
|
+
* a brace expansion (`{a,b}`, `{1..3}`). A lone `{}` is literal to the shell.
|
|
252
|
+
*/
|
|
253
|
+
function isDynamicShellPath(p: string): boolean {
|
|
254
|
+
return /[$`*?[]/u.test(p) || /\{[^{}]*(?:,|\.\.)[^{}]*\}/u.test(p);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function expandShellHome(p: string): string | null {
|
|
258
|
+
if (p === "~") return homedir();
|
|
259
|
+
if (p.startsWith("~/")) return path.join(homedir(), p.slice(2));
|
|
260
|
+
return p.startsWith("~") ? null : p;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/** Where the shell can be; null once a cd leaves it unknown. */
|
|
264
|
+
type ShellBases = string[] | null;
|
|
265
|
+
|
|
266
|
+
function mergeBases(left: ShellBases, right: ShellBases): ShellBases {
|
|
267
|
+
if (left === null || right === null) return null;
|
|
268
|
+
const merged = [...new Set([...left, ...right])];
|
|
269
|
+
return merged.length > MAX_SHELL_BASES ? null : merged;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Reasons a bash command reaches outside the workspace through the paths it
|
|
274
|
+
* names. The walk keeps every directory the shell can be in and resolves each
|
|
275
|
+
* relative write, cd, and link from all of them. A cd adds where it lands under
|
|
276
|
+
* both readings and never removes a directory, because the cd may fail, run in
|
|
277
|
+
* a pipeline, or be something the scanner misreads as a cd (a heredoc line, a
|
|
278
|
+
* backtick script), and a later command then runs where the shell already
|
|
279
|
+
* was. So the call's cwd is always a base, and nothing is judged from fewer
|
|
280
|
+
* directories than before cds were followed. A subshell's cds end at its `)`.
|
|
281
|
+
* A cd the shell expands at run time, or one a loop, a function, or CDPATH can
|
|
282
|
+
* repeat or redirect, leaves the base unknown, and a relative write after it
|
|
283
|
+
* cannot be placed.
|
|
284
|
+
*/
|
|
285
|
+
function bashPathReasons(command: string, argCwd: string | undefined): string[] {
|
|
286
|
+
const reasons = new Set<string>();
|
|
287
|
+
for (const walk of extractCommandPathWalks(command)) {
|
|
288
|
+
for (const reason of walkPathReasons(walk, argCwd)) reasons.add(reason);
|
|
289
|
+
}
|
|
290
|
+
return [...reasons];
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
function walkPathReasons(walk: ReadonlyArray<CommandPathEvent>, argCwd: string | undefined): string[] {
|
|
294
|
+
const writeReasons = new Set<string>();
|
|
295
|
+
const cdReasons = new Set<string>();
|
|
296
|
+
let bases: ShellBases = [candidateBase(argCwd)];
|
|
297
|
+
const subshells: ShellBases[] = [];
|
|
298
|
+
for (const event of walk) {
|
|
299
|
+
if (event.kind === "subshell") {
|
|
300
|
+
if (event.open) subshells.push(bases);
|
|
301
|
+
else if (subshells.length > 0) bases = subshells.pop() as ShellBases;
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
if (event.kind === "write") {
|
|
305
|
+
const target = event.target;
|
|
306
|
+
// `> $HOME/x`, `> ${OUT}`, and `tee {a,b}` land where the shell says.
|
|
307
|
+
if (isDynamicShellPath(target) && !target.startsWith("/dev/")) {
|
|
308
|
+
writeReasons.add(`write-path-unknown-base: ${target}`);
|
|
309
|
+
} else if (target.startsWith("~") || path.isAbsolute(target)) {
|
|
310
|
+
const decision = writePathClass(target);
|
|
311
|
+
if (decision.cls === "system_modify") writeReasons.add(decision.reason ?? `bash-write-target: ${target}`);
|
|
312
|
+
} else if (bases === null) {
|
|
313
|
+
writeReasons.add(`write-path-unknown-base: ${target}`);
|
|
314
|
+
} else {
|
|
315
|
+
for (const base of bases) {
|
|
316
|
+
const decision = writePathClass(target, base);
|
|
317
|
+
if (decision.cls === "system_modify") writeReasons.add(decision.reason ?? `bash-write-target: ${target}`);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
322
|
+
if (event.kind === "link") {
|
|
323
|
+
for (const reason of linkReasons(event, bases)) writeReasons.add(reason);
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
const target = event.target;
|
|
327
|
+
if (target.startsWith("~")) {
|
|
328
|
+
cdReasons.add(`bash-cd-home-escape: ${target}`);
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
if (isDynamicShellPath(target)) {
|
|
332
|
+
bases = null;
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
const from = path.isAbsolute(target) ? [undefined] : (bases ?? []);
|
|
336
|
+
const landed: string[] = [];
|
|
337
|
+
for (const base of from) {
|
|
338
|
+
for (const landing of resolveCdCandidates(target, base)) {
|
|
339
|
+
// Inside means inside under the logical and the physical reading.
|
|
340
|
+
if (landing === null || !isInsideCwd(landing)) cdReasons.add(`bash-cd-outside-workspace: ${landing ?? target}`);
|
|
341
|
+
else landed.push(landing);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
// A relative cd from an unknown base lands somewhere unknown too.
|
|
345
|
+
bases = event.unmodeled || bases === null ? null : mergeBases(bases, landed);
|
|
346
|
+
}
|
|
347
|
+
return [...writeReasons, ...cdReasons];
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* A link a command creates is followed by every later path through it, which
|
|
352
|
+
* static admission cannot model. A symbolic link whose text, resolved from the
|
|
353
|
+
* link's directory, leaves the workspace escalates the command, and so does a
|
|
354
|
+
* hard link to a file outside it, since a write through the link changes that
|
|
355
|
+
* file. A link whose target or directory the shell expands at run time counts
|
|
356
|
+
* as outside. `mv` and a link-keeping `cp` escalate when a source is an
|
|
357
|
+
* existing link that resolves outside, and a link made from `xargs` or `find
|
|
358
|
+
* -exec` input always escalates.
|
|
359
|
+
*/
|
|
360
|
+
function linkReasons(event: Extract<CommandPathEvent, { kind: "link" }>, bases: ShellBases): string[] {
|
|
361
|
+
const reasons: string[] = [];
|
|
362
|
+
const label = event.symbolic ? "bash-symlink-outside-workspace" : "bash-hardlink-outside-workspace";
|
|
363
|
+
if (event.origin === "input") return event.sources.map((source) => `${label}: ${source}`);
|
|
364
|
+
if (event.origin === "copied") {
|
|
365
|
+
for (const base of bases ?? [null]) {
|
|
366
|
+
for (const source of event.sources) {
|
|
367
|
+
const landing = copiedLinkOutside(source, base);
|
|
368
|
+
if (landing !== null) reasons.push(`${label}: ${landing}`);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
return [...new Set(reasons)];
|
|
372
|
+
}
|
|
373
|
+
const outside = (source: string, from: string | null): string | null => {
|
|
374
|
+
const expanded = expandShellHome(source);
|
|
375
|
+
if (expanded === null || isDynamicShellPath(source)) return source;
|
|
376
|
+
if (!path.isAbsolute(expanded) && from === null) return source;
|
|
377
|
+
const landing = canonicalizeRawPath(expanded, from ?? process.cwd());
|
|
378
|
+
return landing !== null && isInsideCwd(landing) ? null : (landing ?? source);
|
|
379
|
+
};
|
|
380
|
+
const dirsFrom = (base: string | null): Array<string | null> => {
|
|
381
|
+
if (!event.symbolic) return [base];
|
|
382
|
+
return event.linkDirs.map((dir) => {
|
|
383
|
+
const expanded = expandShellHome(dir);
|
|
384
|
+
if (expanded === null || isDynamicShellPath(dir)) return null;
|
|
385
|
+
if (!path.isAbsolute(expanded) && base === null) return null;
|
|
386
|
+
return canonicalizeRawPath(expanded, base ?? process.cwd());
|
|
387
|
+
});
|
|
388
|
+
};
|
|
389
|
+
for (const base of bases ?? [null]) {
|
|
390
|
+
for (const from of dirsFrom(base)) {
|
|
391
|
+
for (const source of event.sources) {
|
|
392
|
+
const landing = outside(source, from);
|
|
393
|
+
if (landing !== null) reasons.push(`${label}: ${landing}`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
return [...new Set(reasons)];
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/** More matches than this for a moved or copied glob count as outside. */
|
|
401
|
+
const MAX_COPIED_LINK_MATCHES = 256;
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Where an existing link a command moves or copies points, when that is
|
|
405
|
+
* outside the workspace; null when the source is not a link or points inside.
|
|
406
|
+
* A glob or brace source is matched now, from the base; a variable or a
|
|
407
|
+
* substitution cannot be, so it counts as outside.
|
|
408
|
+
*/
|
|
409
|
+
function copiedLinkOutside(source: string, base: string | null): string | null {
|
|
410
|
+
const expanded = expandShellHome(source);
|
|
411
|
+
if (expanded === null || /[$`]/u.test(source)) return source;
|
|
412
|
+
if (!path.isAbsolute(expanded) && base === null) return source;
|
|
413
|
+
const from = base ?? process.cwd();
|
|
414
|
+
let matches = [expanded];
|
|
415
|
+
if (isDynamicShellPath(source)) {
|
|
416
|
+
try {
|
|
417
|
+
matches = globSync(expanded, { cwd: from });
|
|
418
|
+
} catch {
|
|
419
|
+
return source;
|
|
420
|
+
}
|
|
421
|
+
if (matches.length > MAX_COPIED_LINK_MATCHES) return source;
|
|
422
|
+
}
|
|
423
|
+
for (const match of matches) {
|
|
424
|
+
// The kernel follows every component but the last, which is the link itself.
|
|
425
|
+
const parent = canonicalizeRawPath(path.dirname(match), from);
|
|
426
|
+
if (parent === null) return source;
|
|
427
|
+
const entry = path.join(parent, path.basename(match));
|
|
428
|
+
let isLink = false;
|
|
429
|
+
try {
|
|
430
|
+
isLink = lstatSync(entry).isSymbolicLink();
|
|
431
|
+
} catch {
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
if (!isLink) continue;
|
|
435
|
+
const landing = canonicalizeRawPath(entry, "/");
|
|
436
|
+
if (landing === null || !isInsideCwd(landing)) return landing ?? source;
|
|
437
|
+
}
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
440
|
+
|
|
213
441
|
/**
|
|
214
442
|
* The artifact tool writes a default file name when the call names no path, so
|
|
215
443
|
* a classifier that only reads the path argument saw no target at all and
|
|
@@ -232,7 +460,51 @@ export function webFetchIsOutward(args: Record<string, unknown> | undefined): bo
|
|
|
232
460
|
return (method !== "GET" && method !== "HEAD") || args?.body !== undefined;
|
|
233
461
|
}
|
|
234
462
|
|
|
235
|
-
|
|
463
|
+
/** Tools that resolve their path through path-utils, against the process cwd. */
|
|
464
|
+
const PATH_UTILS_TOOLS: ReadonlySet<string> = new Set([
|
|
465
|
+
ToolNames.Read,
|
|
466
|
+
ToolNames.Ls,
|
|
467
|
+
ToolNames.Grep,
|
|
468
|
+
ToolNames.Find,
|
|
469
|
+
ToolNames.Write,
|
|
470
|
+
ToolNames.Edit,
|
|
471
|
+
ToolNames.Artifact,
|
|
472
|
+
]);
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* The call as its tool reads it. The file tools drop a leading `@` and fold
|
|
476
|
+
* Unicode spaces before they resolve a path, and they resolve it against the
|
|
477
|
+
* process cwd whatever `cwd` the call carries; bash does the same spelling
|
|
478
|
+
* change to its `cwd`. Judging the raw arguments judged a different path:
|
|
479
|
+
* `@../x` read as a directory named `@..` inside the workspace, and a `cwd`
|
|
480
|
+
* padded with missing levels pulled `../../x` back inside it. Idempotent, so
|
|
481
|
+
* the policy engine normalizes once and classify can do it again.
|
|
482
|
+
*/
|
|
483
|
+
export function normalizeCallPaths(call: ClassifierCall): ClassifierCall {
|
|
484
|
+
const args = call.args;
|
|
485
|
+
if (!args) return call;
|
|
486
|
+
if (call.tool === ToolNames.Bash) {
|
|
487
|
+
if (typeof args.cwd !== "string") return call;
|
|
488
|
+
const cwd = normalizeToolPath(args.cwd);
|
|
489
|
+
return cwd === args.cwd ? call : { ...call, args: { ...args, cwd } };
|
|
490
|
+
}
|
|
491
|
+
if (!PATH_UTILS_TOOLS.has(call.tool)) return call;
|
|
492
|
+
let next: Record<string, unknown> | null = null;
|
|
493
|
+
for (const key of ["path", "file_path", "filePath"]) {
|
|
494
|
+
const value = args[key];
|
|
495
|
+
if (typeof value !== "string") continue;
|
|
496
|
+
const normalized = normalizeToolPath(value);
|
|
497
|
+
if (normalized !== value) next = { ...(next ?? args), [key]: normalized };
|
|
498
|
+
}
|
|
499
|
+
if ("cwd" in args) {
|
|
500
|
+
next = { ...(next ?? args) };
|
|
501
|
+
delete next.cwd;
|
|
502
|
+
}
|
|
503
|
+
return next === null ? call : { ...call, args: next };
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
export function classify(rawCall: ClassifierCall): Classification {
|
|
507
|
+
const call = normalizeCallPaths(rawCall);
|
|
236
508
|
if (call.tool === ToolNames.WebFetch && webFetchIsOutward(call.args)) {
|
|
237
509
|
return { actionClass: "write", reasons: ["web-fetch:outward"] };
|
|
238
510
|
}
|
|
@@ -264,28 +536,7 @@ export function classify(call: ClassifierCall): Classification {
|
|
|
264
536
|
const command = typeof call.args?.command === "string" ? call.args.command : null;
|
|
265
537
|
const argCwd = typeof call.args?.cwd === "string" && call.args.cwd.length > 0 ? call.args.cwd : undefined;
|
|
266
538
|
if (command !== null) {
|
|
267
|
-
const targetReasons
|
|
268
|
-
for (const target of extractCommandWriteTargets(command)) {
|
|
269
|
-
const decision = writePathClass(target, argCwd);
|
|
270
|
-
if (decision.cls === "system_modify") {
|
|
271
|
-
targetReasons.push(decision.reason ?? `bash-write-target: ${target}`);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
// A `cd` outside the workspace re-bases every relative path after it,
|
|
275
|
-
// so static write-target extraction stops describing what the command
|
|
276
|
-
// touches. Escalate through the same system_modify confirm gate as an
|
|
277
|
-
// out-of-workspace write target; inside-workspace `cd` stays plain
|
|
278
|
-
// execute.
|
|
279
|
-
for (const target of extractCommandCdTargets(command)) {
|
|
280
|
-
if (target.startsWith("~")) {
|
|
281
|
-
targetReasons.push(`bash-cd-home-escape: ${target}`);
|
|
282
|
-
continue;
|
|
283
|
-
}
|
|
284
|
-
const abs = resolveCandidate(target, argCwd);
|
|
285
|
-
if (!isInsideCwd(abs)) {
|
|
286
|
-
targetReasons.push(`bash-cd-outside-workspace: ${abs}`);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
539
|
+
const targetReasons = bashPathReasons(command, argCwd);
|
|
289
540
|
if (targetReasons.length > 0) {
|
|
290
541
|
return { actionClass: "system_modify", reasons: targetReasons };
|
|
291
542
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
2
|
import { closeSync, fsyncSync, mkdirSync, openSync, writeSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
+
import { writeDiagnostic } from "../../core/diagnostics.js";
|
|
4
5
|
import { clioStateDir, stateRootRemoved } from "../../core/xdg.js";
|
|
5
6
|
import type { SafetyPolicyDecision } from "./policy-engine.js";
|
|
6
7
|
|
|
@@ -404,7 +405,7 @@ interface OpenFile {
|
|
|
404
405
|
function logAuditError(err: unknown, path?: string): void {
|
|
405
406
|
const msg = err instanceof Error ? err.message : String(err);
|
|
406
407
|
const where = path ? ` (${path})` : "";
|
|
407
|
-
|
|
408
|
+
writeDiagnostic(`[clio-coder:audit] ${msg}${where}\n`);
|
|
408
409
|
}
|
|
409
410
|
|
|
410
411
|
/** Cadence of the background safety flush that bounds how long rows can sit unfsynced. */
|
|
@@ -49,8 +49,8 @@ export const DEFAULT_AUTONOMY_EXPOSURE: AutonomyExposure = "local";
|
|
|
49
49
|
export interface AutonomyMappingOptions {
|
|
50
50
|
/**
|
|
51
51
|
* Execute-class calls only: true when the command is in the no-prompt set
|
|
52
|
-
* (built-in allowlist
|
|
53
|
-
*
|
|
52
|
+
* (built-in allowlist or approved project policy command). Typed verify
|
|
53
|
+
* calls also pass their underlying command through the safety net.
|
|
54
54
|
*/
|
|
55
55
|
executeRecognized?: boolean;
|
|
56
56
|
/**
|
|
@@ -66,6 +66,12 @@ export interface AutonomyMappingOptions {
|
|
|
66
66
|
* behavior every call had before the tier existed.
|
|
67
67
|
*/
|
|
68
68
|
exposure?: AutonomyExposure;
|
|
69
|
+
/**
|
|
70
|
+
* Read-class path tools only (read, ls, grep, find): true when the path the
|
|
71
|
+
* call names resolves outside the workspace and outside Clio's own readable
|
|
72
|
+
* roots. The policy engine decides it and carries it as `readScope`.
|
|
73
|
+
*/
|
|
74
|
+
readOutsideWorkspace?: boolean;
|
|
69
75
|
}
|
|
70
76
|
|
|
71
77
|
/**
|
|
@@ -104,6 +110,12 @@ export function mapAutonomy(
|
|
|
104
110
|
// level it describes is "inspect and answer" and the outward effect it is
|
|
105
111
|
// confirming is itself denied there.
|
|
106
112
|
if ((level === "auto-edit" || level === "suggest") && options.exposure === "outward") return "ask";
|
|
113
|
+
// The workspace is what the operator handed over. A read, listing, or
|
|
114
|
+
// search aimed outside it asks at every supervised level and runs at
|
|
115
|
+
// full-auto. `read-only` never invokes approvals, so the ask is its deny.
|
|
116
|
+
if (actionClass === "read" && options.readOutsideWorkspace === true && level !== "full-auto") {
|
|
117
|
+
return level === "read-only" ? "deny" : "ask";
|
|
118
|
+
}
|
|
107
119
|
if (actionClass === "read") return "allow";
|
|
108
120
|
if (level === "read-only") return "deny";
|
|
109
121
|
if (level === "suggest") return "ask";
|
|
@@ -131,9 +143,27 @@ export function mapAutonomy(
|
|
|
131
143
|
|
|
132
144
|
/**
|
|
133
145
|
* Rejection text for autonomy `deny` dispositions. Only `read-only` produces
|
|
134
|
-
* denies, so the message is the propose-instead contract from §2.3
|
|
146
|
+
* denies, so the message is the propose-instead contract from §2.3, or the
|
|
147
|
+
* search-scope text when the denied call is a read outside the workspace.
|
|
135
148
|
*/
|
|
136
|
-
export function autonomyDenyRejection(
|
|
149
|
+
export function autonomyDenyRejection(
|
|
150
|
+
level: AutonomyLevel,
|
|
151
|
+
tool: string,
|
|
152
|
+
actionClass: ActionClass,
|
|
153
|
+
readOutsideWorkspace = false,
|
|
154
|
+
): RejectionMessage {
|
|
155
|
+
if (readOutsideWorkspace) {
|
|
156
|
+
return {
|
|
157
|
+
short: `${tool} denied: the path is outside the workspace at autonomy ${level}`,
|
|
158
|
+
detail:
|
|
159
|
+
`The path resolves outside the workspace. Autonomy ${level} reads, lists, and searches inside the workspace ` +
|
|
160
|
+
"and denies a path outside it without prompting.",
|
|
161
|
+
hints: [
|
|
162
|
+
"Work from paths inside the workspace, or name the outside path to the operator as text.",
|
|
163
|
+
"The operator can raise the level in interactive /settings or with clio-coder run --autonomy <level>.",
|
|
164
|
+
],
|
|
165
|
+
};
|
|
166
|
+
}
|
|
137
167
|
return {
|
|
138
168
|
short: `${tool} denied: autonomy level is ${level}`,
|
|
139
169
|
detail:
|
|
@@ -162,7 +192,20 @@ export function autonomyAskRejection(
|
|
|
162
192
|
tool: string,
|
|
163
193
|
actionClass: ActionClass,
|
|
164
194
|
exposure: AutonomyExposure = DEFAULT_AUTONOMY_EXPOSURE,
|
|
195
|
+
readOutsideWorkspace = false,
|
|
165
196
|
): RejectionMessage {
|
|
197
|
+
if (readOutsideWorkspace && exposure !== "outward") {
|
|
198
|
+
return {
|
|
199
|
+
short: `${tool} needs approval: the path is outside the workspace at autonomy ${level}`,
|
|
200
|
+
detail:
|
|
201
|
+
`The path resolves outside the workspace, through a link, a \`..\`, or an absolute path. ` +
|
|
202
|
+
`Autonomy ${level} reads, lists, and searches inside the workspace without asking and parks a path outside it for the operator.`,
|
|
203
|
+
hints: [
|
|
204
|
+
"Approving resumes only this call.",
|
|
205
|
+
"Autonomy full-auto reads outside the workspace without asking; zero-access paths stay refused at every level.",
|
|
206
|
+
],
|
|
207
|
+
};
|
|
208
|
+
}
|
|
166
209
|
if (exposure === "outward") {
|
|
167
210
|
return {
|
|
168
211
|
short: `${tool} needs approval: outward-facing gate at autonomy ${level}`,
|
|
@@ -182,15 +225,15 @@ export function autonomyAskRejection(
|
|
|
182
225
|
"The call is parked until the operator approves it once or cancels it.",
|
|
183
226
|
hints: [
|
|
184
227
|
"Approving resumes only this call.",
|
|
185
|
-
"
|
|
186
|
-
//
|
|
187
|
-
//
|
|
188
|
-
// and models otherwise stall retrying denied bash for checks or
|
|
189
|
-
// directory listings.
|
|
228
|
+
"The operator can approve command declarations in .clio-coder/safety.yaml; declarations do not bypass the autonomy level or safety net.",
|
|
229
|
+
// Offer available tools without promising that changing the tool
|
|
230
|
+
// spelling bypasses the execution approval or a safety-net rail.
|
|
190
231
|
...(actionClass === "execute"
|
|
191
232
|
? [
|
|
192
|
-
|
|
193
|
-
|
|
233
|
+
level === "suggest"
|
|
234
|
+
? 'Declared checks can use verify(check="<id>"), but execution still requires approval at autonomy suggest.'
|
|
235
|
+
: 'For a declared check, use verify(check="<id>"). Recognized test commands can run without an autonomy prompt; other checks may still require safety-net confirmation.',
|
|
236
|
+
"Workspace inspection can use the ls, read, grep, and find tools; path protections and safety-net rules still apply.",
|
|
194
237
|
]
|
|
195
238
|
: []),
|
|
196
239
|
],
|
|
@@ -173,6 +173,9 @@ function authorizationCopy(facts: TrustedDecisionFacts): string {
|
|
|
173
173
|
}
|
|
174
174
|
const tool = facts.tool ?? "the presented tool";
|
|
175
175
|
const actionClass = facts.actionClass ?? "unknown";
|
|
176
|
+
if (facts.origin.kind === "worker") {
|
|
177
|
+
return `Approval authorizes this ${actionClass} call to ${tool} and identical calls under the same permission conditions for this worker run. Each call still passes the safety net. The autonomy level does not change.`;
|
|
178
|
+
}
|
|
176
179
|
if (tool === "ask_user" && facts.exposure === "outward") {
|
|
177
180
|
return "Approval opens this one outward-decision interview. It does not publish or send anything by itself.";
|
|
178
181
|
}
|
|
@@ -194,7 +197,7 @@ function consequenceCopy(facts: TrustedDecisionFacts, tier: DecisionTier): strin
|
|
|
194
197
|
case "system":
|
|
195
198
|
return "The call can change state outside the workspace or state the classifier cannot safely bound.";
|
|
196
199
|
case "worker":
|
|
197
|
-
return "A dispatched worker is parked.
|
|
200
|
+
return "A dispatched worker is parked. This run remembers your answer for the same tool, arguments, approval axis, and safety classification; other runs are unaffected.";
|
|
198
201
|
}
|
|
199
202
|
}
|
|
200
203
|
|
|
@@ -234,7 +237,7 @@ function requiredActions(facts: TrustedDecisionFacts, tier: DecisionTier): Reado
|
|
|
234
237
|
: tier === "safety-net"
|
|
235
238
|
? "Approve guarded action once"
|
|
236
239
|
: tier === "worker"
|
|
237
|
-
? "Approve worker
|
|
240
|
+
? "Approve matching calls in this worker run"
|
|
238
241
|
: tier === "outward"
|
|
239
242
|
? "Approve outward decision once"
|
|
240
243
|
: "Approve workspace action once";
|
|
@@ -246,9 +249,19 @@ function requiredActions(facts: TrustedDecisionFacts, tier: DecisionTier): Reado
|
|
|
246
249
|
{
|
|
247
250
|
id: "approve-once",
|
|
248
251
|
label: approveLabel,
|
|
249
|
-
consequence:
|
|
252
|
+
consequence:
|
|
253
|
+
facts.origin.kind === "worker"
|
|
254
|
+
? "Runs this request and remembers approval for identical calls under the same permission conditions in this worker run."
|
|
255
|
+
: "Runs only the presented request and does not change the autonomy level.",
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
id: "deny",
|
|
259
|
+
label: "Deny this request",
|
|
260
|
+
consequence:
|
|
261
|
+
facts.origin.kind === "worker"
|
|
262
|
+
? "Denies this request and remembers denial for identical calls under the same permission conditions in this worker run."
|
|
263
|
+
: "Denies only the presented request and advances the queue.",
|
|
250
264
|
},
|
|
251
|
-
{ id: "deny", label: "Deny this request", consequence: "Denies only the presented request and advances the queue." },
|
|
252
265
|
{ id: "stop", label: "Deny and stop", consequence: stopConsequence },
|
|
253
266
|
];
|
|
254
267
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* model request. Every decision is also written to the audit ledger.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
import { type TurnConstraints, turnAllowsContinuation, turnAllowsTool } from "../../core/turn-constraints.js";
|
|
13
14
|
import { VERIFICATION_SCRIPT_FAMILY_HINT } from "../../core/verification-scripts.js";
|
|
14
15
|
import type { MiddlewareEffect, MiddlewareHookInput, MiddlewareHookRegistration } from "../middleware/index.js";
|
|
15
16
|
import type { UserTaskAcceptance } from "../user-tasks/acceptance.js";
|
|
@@ -38,6 +39,7 @@ export const HIGH_RIGOR_REVALIDATION_MESSAGE =
|
|
|
38
39
|
`and reason of what could not be verified. Do not end the turn until you have validated or recorded the limitation.`;
|
|
39
40
|
|
|
40
41
|
export interface CreateFinishContractRegistrationOptions {
|
|
42
|
+
getTurnConstraints?: () => TurnConstraints | undefined;
|
|
41
43
|
/**
|
|
42
44
|
* Current session entries for evidence collection, or null when no session
|
|
43
45
|
* is active. A null return disables assessment for the turn, matching the
|
|
@@ -102,10 +104,32 @@ export function createFinishContractRegistration(
|
|
|
102
104
|
recordDecision(options, input.turnId ?? null, assessment, rigor);
|
|
103
105
|
if (assessment.kind !== "engage") return [];
|
|
104
106
|
if (rigor === "high") {
|
|
107
|
+
const constraints = options.getTurnConstraints?.();
|
|
108
|
+
const attached =
|
|
109
|
+
typeof input.metadata?.activeToolNames === "string" ? input.metadata.activeToolNames.split(",") : undefined;
|
|
110
|
+
const available = (name: string) =>
|
|
111
|
+
turnAllowsTool(constraints, name) && (attached === undefined || attached.includes(name));
|
|
112
|
+
const verificationTools = ["verify", "bash", "run_script"].filter(available);
|
|
113
|
+
const canRecordLimitation = available("limitation");
|
|
114
|
+
if (!turnAllowsContinuation(constraints) || (verificationTools.length === 0 && !canRecordLimitation)) {
|
|
115
|
+
return [
|
|
116
|
+
{
|
|
117
|
+
kind: "inject_reminder",
|
|
118
|
+
severity: "warn",
|
|
119
|
+
message:
|
|
120
|
+
"[Clio Coder] validation evidence is missing. Report the change as unverified and name outstanding acceptance checks. The current task scope does not permit automatic validation recovery; this notice grants no additional authority.",
|
|
121
|
+
},
|
|
122
|
+
];
|
|
123
|
+
}
|
|
105
124
|
// Withhold the completion and force a re-prompt: a continuation
|
|
106
125
|
// request carries the turn onward, and the paired reminder gives
|
|
107
126
|
// the directive its own visible system-reminder line.
|
|
108
|
-
const message =
|
|
127
|
+
const message =
|
|
128
|
+
verificationTools.length > 0 && canRecordLimitation
|
|
129
|
+
? activeAcceptance?.verification.length
|
|
130
|
+
? assessment.message
|
|
131
|
+
: HIGH_RIGOR_REVALIDATION_MESSAGE
|
|
132
|
+
: `[Clio Coder] high-rigor finish gate: validation evidence is missing. ${verificationTools.length > 0 ? `Use an authorized check through ${verificationTools.join(" or ")}; if the operator excluded validation, report the blocker without running it.` : "Record the unavailable validation with limitation."} Do not claim checks passed without evidence.`;
|
|
109
133
|
return [
|
|
110
134
|
{ kind: "request_continuation", message },
|
|
111
135
|
{ kind: "inject_reminder", message, severity: "warn" },
|
|
@@ -3,6 +3,7 @@ import { ToolNames } from "../../core/tool-names.js";
|
|
|
3
3
|
import { isProjectVerifierCheckId, isVerificationScriptName } from "../../core/verification-scripts.js";
|
|
4
4
|
import { effectiveToolCall } from "../../tools/surface.js";
|
|
5
5
|
import { type DeclaredCheckSourceRef, PROJECT_VERIFIER_CATALOG_RELATIVE_PATH } from "../../tools/verify/catalog.js";
|
|
6
|
+
import { validateTrustStatus } from "../evidence/trust-status.js";
|
|
6
7
|
import type { UserTaskAcceptance } from "../user-tasks/acceptance.js";
|
|
7
8
|
import {
|
|
8
9
|
detectValidationCommand,
|
|
@@ -13,7 +14,7 @@ import {
|
|
|
13
14
|
import type { Rigor } from "./rigor.js";
|
|
14
15
|
|
|
15
16
|
export const FINISH_CONTRACT_ADVISORY_MESSAGE =
|
|
16
|
-
"[Clio Coder] finish-contract advisory: you changed files this turn without recording validation evidence or a limitation receipt.
|
|
17
|
+
"[Clio Coder] finish-contract advisory: you changed files this turn without recording validation evidence or a limitation receipt. Report the change as unverified. Run checks only within the operator's authorized scope; this advisory does not authorize tests, scripts, or additional tools.";
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* The recent-window cap (entries since the last user message). Exported so a
|
|
@@ -573,8 +574,9 @@ function dispatchReceiptEvidence(
|
|
|
573
574
|
* (`{mode, runIds, receiptCount, failedCount, runs:[{runId, agentId, exitCode}]}`
|
|
574
575
|
* where exit codes live per-run) as well as the legacy single-run shape
|
|
575
576
|
* (`{exitCode, runId, agentId}`). A batch counts only when it has at least one
|
|
576
|
-
* run and every run exited cleanly
|
|
577
|
-
*
|
|
577
|
+
* run and every run exited cleanly. Current results must also carry verified
|
|
578
|
+
* integrity and validated evidence on their canonical trust axes, so failed or
|
|
579
|
+
* ungrounded checks never become validation evidence through process success.
|
|
578
580
|
*/
|
|
579
581
|
function passedDispatchReceiptSummary(
|
|
580
582
|
details: Record<string, unknown>,
|
|
@@ -582,7 +584,7 @@ function passedDispatchReceiptSummary(
|
|
|
582
584
|
): string | null {
|
|
583
585
|
if (Array.isArray(details.runs)) {
|
|
584
586
|
const runs = details.runs.map(asRecord);
|
|
585
|
-
if (runs.length === 0 || runs.some((run) => run === null || run
|
|
587
|
+
if (runs.length === 0 || runs.some((run) => run === null || !passedDispatchRun(run))) return null;
|
|
586
588
|
if (typeof details.failedCount === "number" && details.failedCount !== 0) return null;
|
|
587
589
|
const first = runs[0];
|
|
588
590
|
const runId = typeof first?.runId === "string" && first.runId.length > 0 ? first.runId : "unknown";
|
|
@@ -590,7 +592,7 @@ function passedDispatchReceiptSummary(
|
|
|
590
592
|
const extra = runs.length > 1 ? ` (+${runs.length - 1} more)` : "";
|
|
591
593
|
return `dispatch receipt passed: run ${runId} agent ${agentId}${extra}`;
|
|
592
594
|
}
|
|
593
|
-
if (details
|
|
595
|
+
if (passedDispatchRun(details)) {
|
|
594
596
|
const runId = typeof details.runId === "string" && details.runId.length > 0 ? details.runId : "unknown";
|
|
595
597
|
const agentId = dispatchReceiptAgentId(typeof details.agentId === "string" ? details.agentId : undefined, candidate);
|
|
596
598
|
return `dispatch receipt passed: run ${runId} agent ${agentId}`;
|
|
@@ -598,6 +600,19 @@ function passedDispatchReceiptSummary(
|
|
|
598
600
|
return null;
|
|
599
601
|
}
|
|
600
602
|
|
|
603
|
+
function passedDispatchRun(run: Record<string, unknown>): boolean {
|
|
604
|
+
if (run.exitCode !== 0) return false;
|
|
605
|
+
// Historical results predate canonical trust status. For current results,
|
|
606
|
+
// a clean process exit cannot overrule failed, absent, or ungrounded validation.
|
|
607
|
+
if (!("trustStatus" in run)) return true;
|
|
608
|
+
const trust = validateTrustStatus(run.trustStatus);
|
|
609
|
+
return (
|
|
610
|
+
trust.ok &&
|
|
611
|
+
trust.status.artifactIntegrity.state === "verified" &&
|
|
612
|
+
trust.status.validationGrounding.state === "validated"
|
|
613
|
+
);
|
|
614
|
+
}
|
|
615
|
+
|
|
601
616
|
/** Prefer the receipt's own agent id, then the dispatch call's, then unknown. */
|
|
602
617
|
function dispatchReceiptAgentId(
|
|
603
618
|
receiptAgentId: string | undefined,
|