@iowarp/clio-coder 0.4.9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +11 -3
- package/CHANGELOG.md +153 -0
- package/CODE_OF_CONDUCT.md +10 -0
- package/CONTRIBUTING.md +208 -382
- package/NOTICE +8 -2
- package/README.md +199 -418
- package/ROADMAP.md +82 -0
- package/SECURITY.md +14 -11
- package/dist/acp-KS7ARGV6.js +132 -0
- package/dist/agents-YOGJ2YEJ.js +163 -0
- package/dist/assets/codewiki.json +1 -1
- package/dist/auth-CEDCO6O6.js +557 -0
- package/dist/background-YWTBPSQU.js +39 -0
- package/dist/builtins-GDYO4RTR.js +23 -0
- package/dist/chunk-27YTM2CV.js +175 -0
- package/dist/chunk-2AF6YC7Q.js +75 -0
- package/dist/chunk-2DTIWSAW.js +381 -0
- package/dist/chunk-2EMLKSCX.js +262 -0
- package/dist/chunk-2OJ3YZQP.js +665 -0
- package/dist/chunk-2VLYHHFT.js +35 -0
- package/dist/chunk-2WVPJF3Z.js +204 -0
- package/dist/chunk-33OASOS6.js +176 -0
- package/dist/chunk-3BD2LXYJ.js +19 -0
- package/dist/chunk-3JHUFKG7.js +30 -0
- package/dist/chunk-3JLTRPN7.js +711 -0
- package/dist/chunk-3LT34CAM.js +2796 -0
- package/dist/chunk-3O5JWP4L.js +1670 -0
- package/dist/chunk-3UW3KU4A.js +21 -0
- package/dist/chunk-4A6YRGV4.js +569 -0
- package/dist/chunk-4D2BRCZ3.js +67 -0
- package/dist/chunk-4SYHGVDE.js +668 -0
- package/dist/chunk-4VDHLCF5.js +66 -0
- package/dist/chunk-4WOOTKFD.js +637 -0
- package/dist/chunk-4WV4PI66.js +80 -0
- package/dist/chunk-53OXPRI6.js +195 -0
- package/dist/chunk-55RMDDFM.js +1347 -0
- package/dist/chunk-56XP4FJU.js +2025 -0
- package/dist/chunk-5B3RTYAK.js +123 -0
- package/dist/chunk-5CD243WE.js +45 -0
- package/dist/chunk-5JQR5B4D.js +709 -0
- package/dist/chunk-5KQEUIWM.js +597 -0
- package/dist/chunk-5LP5FNNR.js +915 -0
- package/dist/chunk-62UK7AGW.js +9344 -0
- package/dist/chunk-6CTHLZFB.js +563 -0
- package/dist/chunk-6EJYVCTN.js +23 -0
- package/dist/chunk-6OWUM2NC.js +12289 -0
- package/dist/chunk-6RJMYYIE.js +1023 -0
- package/dist/chunk-6W75D37F.js +643 -0
- package/dist/chunk-733ZBT5P.js +1721 -0
- package/dist/chunk-77DCC6JZ.js +3710 -0
- package/dist/chunk-7QXCO3AF.js +156 -0
- package/dist/chunk-7RET77VB.js +481 -0
- package/dist/chunk-A4MVRV4C.js +65 -0
- package/dist/chunk-ALJWT6O6.js +93 -0
- package/dist/chunk-AVSR2HKI.js +232 -0
- package/dist/chunk-B7GY6QER.js +42 -0
- package/dist/chunk-BFOSV5EZ.js +178 -0
- package/dist/chunk-BGOIM7NB.js +103 -0
- package/dist/chunk-BJH6WFIB.js +372 -0
- package/dist/chunk-BOBCCDJ6.js +1533 -0
- package/dist/chunk-BRCOSE7O.js +117 -0
- package/dist/chunk-BYFHHCFV.js +601 -0
- package/dist/chunk-C2CPOIH2.js +83 -0
- package/dist/chunk-C7AQTPCE.js +694 -0
- package/dist/chunk-CBAQPTDU.js +165 -0
- package/dist/chunk-CDQ2UC6W.js +125 -0
- package/dist/chunk-CN6SW5DC.js +177 -0
- package/dist/chunk-CRHPCPZP.js +132 -0
- package/dist/chunk-CTFPFW3H.js +44 -0
- package/dist/chunk-D3KWFOUT.js +103 -0
- package/dist/chunk-D65E25JG.js +185 -0
- package/dist/chunk-DCGHJQ2U.js +236 -0
- package/dist/chunk-DE2LU267.js +106 -0
- package/dist/chunk-DF6PI6GN.js +97 -0
- package/dist/chunk-DGC6X6XR.js +53 -0
- package/dist/chunk-DOUISWEE.js +526 -0
- package/dist/chunk-DR3TAEUA.js +188 -0
- package/dist/chunk-DVTBERFY.js +33 -0
- package/dist/chunk-DXSETN72.js +1051 -0
- package/dist/chunk-DZLR4UEH.js +128 -0
- package/dist/chunk-E6IPKW2E.js +77 -0
- package/dist/chunk-EG4ARXPC.js +139 -0
- package/dist/chunk-EKV4UBCM.js +652 -0
- package/dist/chunk-EOJPDNUP.js +1325 -0
- package/dist/chunk-EX57VVWW.js +4157 -0
- package/dist/chunk-EYTLV3W3.js +5937 -0
- package/dist/chunk-EZD2BXGP.js +475 -0
- package/dist/chunk-EZDCA34W.js +314 -0
- package/dist/chunk-FD2I4KBR.js +33 -0
- package/dist/chunk-FD3IAHQM.js +27 -0
- package/dist/chunk-FFYTC2KQ.js +416 -0
- package/dist/chunk-FGSQHUCK.js +110 -0
- package/dist/chunk-GCQFN7YI.js +32 -0
- package/dist/chunk-GGPF6LLE.js +38 -0
- package/dist/chunk-GGWI3OVM.js +215 -0
- package/dist/chunk-GLIQT7SU.js +172 -0
- package/dist/chunk-GN7QBEEI.js +95 -0
- package/dist/chunk-GRHOXDKB.js +1104 -0
- package/dist/chunk-HMN2C6YL.js +54 -0
- package/dist/chunk-HOEDA42N.js +310 -0
- package/dist/chunk-HOYZUKG7.js +192 -0
- package/dist/chunk-HQVN7G4F.js +1021 -0
- package/dist/chunk-HSQQFDB3.js +519 -0
- package/dist/chunk-I4ELN5BX.js +47 -0
- package/dist/chunk-I4Y4WKZR.js +386 -0
- package/dist/chunk-IFPDAD7R.js +797 -0
- package/dist/chunk-IN7DGBVS.js +582 -0
- package/dist/chunk-ISHUS7HC.js +396 -0
- package/dist/chunk-JPXLJSGR.js +191 -0
- package/dist/chunk-JQCLXSFI.js +69 -0
- package/dist/chunk-KBUTSJSR.js +61 -0
- package/dist/chunk-KW5HXKLJ.js +56 -0
- package/dist/chunk-L4APUGCT.js +139 -0
- package/dist/chunk-L7G7K4I2.js +505 -0
- package/dist/chunk-LAR7DX5E.js +1840 -0
- package/dist/chunk-LAVUQX3B.js +462 -0
- package/dist/chunk-LJRBX7QR.js +116 -0
- package/dist/chunk-LNOXCGN2.js +1864 -0
- package/dist/chunk-LTWH2ACR.js +23002 -0
- package/dist/chunk-LYJJ6546.js +661 -0
- package/dist/chunk-M2IPMWCN.js +457 -0
- package/dist/chunk-MGLRTOCK.js +101 -0
- package/dist/chunk-MZF5IKZT.js +160 -0
- package/dist/chunk-N24R6KWS.js +386 -0
- package/dist/chunk-NASYVWDB.js +604 -0
- package/dist/chunk-NBXFPI7U.js +195 -0
- package/dist/chunk-NDPF2N2L.js +400 -0
- package/dist/chunk-NFSK2VNU.js +446 -0
- package/dist/chunk-NG3QQSXY.js +43 -0
- package/dist/chunk-NOCSM22Y.js +63 -0
- package/dist/chunk-NVPXXW2H.js +1143 -0
- package/dist/chunk-O63U2I6I.js +30 -0
- package/dist/chunk-OJXOA6YU.js +98 -0
- package/dist/chunk-OPD7GL6F.js +1196 -0
- package/dist/chunk-OQ2EOAHA.js +14399 -0
- package/dist/chunk-OV62D6KO.js +688 -0
- package/dist/chunk-OZ76TLGU.js +740 -0
- package/dist/chunk-P4GNZPXO.js +1156 -0
- package/dist/chunk-PS6JAWJZ.js +78 -0
- package/dist/chunk-PXRCXGLK.js +1865 -0
- package/dist/chunk-QDUUOZ3S.js +108 -0
- package/dist/chunk-QG6I2T5E.js +1416 -0
- package/dist/chunk-QHSBROEW.js +308 -0
- package/dist/chunk-QNUQ7K7D.js +46 -0
- package/dist/chunk-QZTTRSJE.js +333 -0
- package/dist/chunk-R2UUNSNQ.js +1605 -0
- package/dist/chunk-R7FGRZNF.js +1794 -0
- package/dist/chunk-RNDCROSG.js +199 -0
- package/dist/chunk-S36CXHO2.js +302 -0
- package/dist/chunk-SJGS3GDI.js +575 -0
- package/dist/chunk-SQZHXUB3.js +510 -0
- package/dist/chunk-SUTLW6ND.js +686 -0
- package/dist/chunk-SYF7FVBL.js +179 -0
- package/dist/chunk-T2MDZES3.js +1577 -0
- package/dist/chunk-T33IYTZM.js +1146 -0
- package/dist/chunk-TDGYTWM6.js +49 -0
- package/dist/chunk-TGL5FZVD.js +132 -0
- package/dist/chunk-TGWZXJ7L.js +1205 -0
- package/dist/chunk-TKDRT2DF.js +114 -0
- package/dist/chunk-TV2EBCSQ.js +152 -0
- package/dist/chunk-U26XXPJS.js +367 -0
- package/dist/chunk-U5QU5ZOD.js +419 -0
- package/dist/chunk-U6YTUVOX.js +1011 -0
- package/dist/chunk-UCINIRHW.js +188 -0
- package/dist/chunk-UJD5MPP6.js +52 -0
- package/dist/chunk-URCXX7WJ.js +146 -0
- package/dist/chunk-UX2L5CUD.js +898 -0
- package/dist/chunk-UZVYEF57.js +114 -0
- package/dist/chunk-V35KZDUZ.js +218 -0
- package/dist/chunk-VESL6DQY.js +1058 -0
- package/dist/chunk-VKHLUZNO.js +986 -0
- package/dist/chunk-VOYUCAQF.js +584 -0
- package/dist/chunk-VYRQHORQ.js +414 -0
- package/dist/chunk-W53XSRQE.js +245 -0
- package/dist/chunk-X4CEFOSG.js +226 -0
- package/dist/chunk-XDHUDE5K.js +380 -0
- package/dist/chunk-XISLDHEL.js +1290 -0
- package/dist/chunk-XM34YQ2Y.js +169 -0
- package/dist/chunk-XMDBTYCH.js +661 -0
- package/dist/chunk-XS2QPZJE.js +449 -0
- package/dist/chunk-YBUECLAF.js +618 -0
- package/dist/chunk-YQ6XEFVK.js +332 -0
- package/dist/chunk-YYLCPDCC.js +990 -0
- package/dist/chunk-Z4GLJ6J4.js +1035 -0
- package/dist/chunk-ZARZ4POR.js +210 -0
- package/dist/chunk-ZJPORZTC.js +119 -0
- package/dist/chunk-ZNUZ3EXD.js +243 -0
- package/dist/chunk-ZPST2KQO.js +49 -0
- package/dist/chunk-ZR5YA6ZF.js +512 -0
- package/dist/chunk-ZU4JPCPR.js +319 -0
- package/dist/chunk-ZUKUCZYZ.js +39 -0
- package/dist/cli/index.js +56 -45
- package/dist/clio-K2PBVCEM.js +27 -0
- package/dist/clio-context-tools-GR4OHFSO.js +145 -0
- package/dist/code-nav-4X3OI6DK.js +715 -0
- package/dist/codewiki/build-worker.js +4 -4
- package/dist/compile-cache-YRB6QRO7.js +18 -0
- package/dist/components-RQOJ6NUR.js +675 -0
- package/dist/config-Q5J7UBAB.js +291 -0
- package/dist/config-XE7XYZLU.js +38 -0
- package/dist/config-graph-P3555574.js +175 -0
- package/dist/configure-KIJ32ZO6.js +104 -0
- package/dist/context-LFBQOSXT.js +344 -0
- package/dist/context-NNLBES2Y.js +82 -0
- package/dist/context-WBH3KSVR.js +302 -0
- package/dist/context-clear-YOHMQ6SQ.js +208 -0
- package/dist/context-index-X2N5UAIF.js +120 -0
- package/dist/context-map-HOSMGUG2.js +555 -0
- package/dist/context-working-set-MRAEVDNV.js +1564 -0
- package/dist/data-tool-JJPBGMQJ.js +2986 -0
- package/dist/detail-RHJOTGN4.js +139 -0
- package/dist/dispatch-runner-NC7PYNIO.js +2477 -0
- package/dist/docs-K4GBWRUX.js +342 -0
- package/dist/doctor-S5KZ2GTN.js +1138 -0
- package/dist/doctor-deep-2EJQSHIZ.js +130 -0
- package/dist/domain-loader-MB34FDPD.js +13 -0
- package/dist/eval-3D6M36N7.js +5220 -0
- package/dist/eval-inventory-SM3HNM47.js +260 -0
- package/dist/evals-FO6JEUCN.js +104 -0
- package/dist/evidence-6IYN52ET.js +262 -0
- package/dist/evidence-JVECPI3F.js +250 -0
- package/dist/evidence-XNVPPLVK.js +410 -0
- package/dist/evolve-TLPUDJDM.js +634 -0
- package/dist/extensions-ROZJ5X3J.js +311 -0
- package/dist/fleet-6RJWIOEO.js +284 -0
- package/dist/fleet-WKVBF5SZ.js +942 -0
- package/dist/fleet-commands-L6WFT7KZ.js +76 -0
- package/dist/fleet-decisions-BTQMWU5A.js +55 -0
- package/dist/fleet-graph-553DZ67Q.js +141 -0
- package/dist/fleet-inspect-236FZPRB.js +329 -0
- package/dist/fleet-new-CKUXP3CO.js +48 -0
- package/dist/fleet-preflight-NZQHABWO.js +95 -0
- package/dist/fleet-validate-7NLAE26R.js +96 -0
- package/dist/fleet-verify-E3RO6A5W.js +226 -0
- package/dist/fleet-view-KMZQY7YJ.js +144 -0
- package/dist/gui/client/assets/abnfDiagram-VCTEODGH-DPBWQwNn.js +1 -0
- package/dist/gui/client/assets/architecture-7GRP2DOG-D1w8FrFW.js +1 -0
- package/dist/gui/client/assets/architectureDiagram-5GKGNRK7-CVPgKd1-.js +36 -0
- package/dist/gui/client/assets/blockDiagram-I7D4REHJ-BLmnqkK5.js +129 -0
- package/dist/gui/client/assets/c4Diagram-7LVT6UL2-4AU9cfM7.js +38 -0
- package/dist/gui/client/assets/channel-DwFZ0m8S.js +1 -0
- package/dist/gui/client/assets/chunk-4HAMMTFA-EOWkKCav.js +62 -0
- package/dist/gui/client/assets/chunk-75Z2AOVW-CygeoIMl.js +2 -0
- package/dist/gui/client/assets/chunk-DU6HZSFF-s27fViLb.js +125 -0
- package/dist/gui/client/assets/chunk-F27PBJKO-BrHvwLsZ.js +1 -0
- package/dist/gui/client/assets/chunk-GMAD6QVW-DzPh-7jt.js +72 -0
- package/dist/gui/client/assets/chunk-GVQU2GXP-pIaQkIzm.js +1 -0
- package/dist/gui/client/assets/chunk-IMKFNOWR-BGJVE_Br.js +231 -0
- package/dist/gui/client/assets/chunk-L3NEJ4N5-B3YLuhww.js +1 -0
- package/dist/gui/client/assets/chunk-OSK3NFVY-BRj61HHU.js +10 -0
- package/dist/gui/client/assets/chunk-P2QGCYS3-Sno90KxP.js +1 -0
- package/dist/gui/client/assets/chunk-POPQ4Y6H-Cw8NTbxr.js +1 -0
- package/dist/gui/client/assets/chunk-PWAF6VOD-BIhHgz37.js +1 -0
- package/dist/gui/client/assets/chunk-SHT3W25Y-Cqv7npBj.js +168 -0
- package/dist/gui/client/assets/chunk-SVP7TREG-Hxzl6Dee.js +88 -0
- package/dist/gui/client/assets/chunk-TICWLB2K-CIFVyVP2.js +206 -0
- package/dist/gui/client/assets/classDiagram-ZZMXUADV-BJbAiI_w.js +1 -0
- package/dist/gui/client/assets/classDiagram-v2-VYDZK3BY-BJbAiI_w.js +1 -0
- package/dist/gui/client/assets/cynefin-OW5HDTMX-DecLWZ-y.js +1 -0
- package/dist/gui/client/assets/cynefinDiagram-5FMLGOSQ-CK-T2N-D.js +62 -0
- package/dist/gui/client/assets/dagre-GXQ25YYZ-C0dfg-OS.js +4 -0
- package/dist/gui/client/assets/diagram-S7CK7UJ4-EaJukVh-.js +30 -0
- package/dist/gui/client/assets/diagram-UQ7AKVKN-xcOucEtP.js +41 -0
- package/dist/gui/client/assets/diagram-VSXAHHWV-3AUJACMf.js +3 -0
- package/dist/gui/client/assets/diagram-VX7I27RA-TPknLqam.js +24 -0
- package/dist/gui/client/assets/diagram-Z3DM3KII-wa1q3YMF.js +24 -0
- package/dist/gui/client/assets/ebnfDiagram-PWID7BFC-JBCF2-s7.js +1 -0
- package/dist/gui/client/assets/erDiagram-RLTQ6QDP-CmXjXPc4.js +99 -0
- package/dist/gui/client/assets/eventmodeling-NTZA5JFV-D_1aJWYl.js +1 -0
- package/dist/gui/client/assets/flowDiagram-HODETNUW-BQtZlael.js +1 -0
- package/dist/gui/client/assets/framework-Bq-znqwW.js +9 -0
- package/dist/gui/client/assets/ganttDiagram-EL5Y4UJY-IPaL_kaa.js +292 -0
- package/dist/gui/client/assets/gitGraph-4MIJSDKK-Oy0Q3hoc.js +1 -0
- package/dist/gui/client/assets/gitGraphDiagram-WWUBYQGX-jtAuBmbc.js +106 -0
- package/dist/gui/client/assets/index-CuFuBEdL.css +1 -0
- package/dist/gui/client/assets/index-hMbEIsX0.js +87 -0
- package/dist/gui/client/assets/info-A6RAGUB7-UtEs1tv7.js +1 -0
- package/dist/gui/client/assets/infoDiagram-27XIBGKW-hlwR1pBW.js +2 -0
- package/dist/gui/client/assets/ishikawaDiagram-5VMMS53U-C6vMtfsd.js +70 -0
- package/dist/gui/client/assets/journeyDiagram-3NMN7TZE-EAwAl_PS.js +139 -0
- package/dist/gui/client/assets/kanban-definition-UXKFOSKX-CQOhRKHW.js +89 -0
- package/dist/gui/client/assets/line-DbcwGZTW.js +1 -0
- package/dist/gui/client/assets/mermaid-parser.core-C2QfVcHd.js +7 -0
- package/dist/gui/client/assets/mermaid.core-N9qUTre1.js +44 -0
- package/dist/gui/client/assets/mindmap-definition-YA3MSWOX-BR_FL9gK.js +96 -0
- package/dist/gui/client/assets/packet-AYTQ26CC-CbBJ2oAa.js +1 -0
- package/dist/gui/client/assets/pegDiagram-XKGWAZYB-BruU0IHM.js +1 -0
- package/dist/gui/client/assets/pie-WAS4IAKB-BWdSng4H.js +1 -0
- package/dist/gui/client/assets/pieDiagram-E7YTZNPT-CR3ljgdU.js +39 -0
- package/dist/gui/client/assets/quadrantDiagram-AXDQQJYC-C-boKslr.js +7 -0
- package/dist/gui/client/assets/radar-RG4KPBEZ-CGlOnAKG.js +1 -0
- package/dist/gui/client/assets/railroad-74A4TZTK-CDvuAlyC.js +1 -0
- package/dist/gui/client/assets/railroad-abnf-HS5TGJTU-CQUA9crC.js +1 -0
- package/dist/gui/client/assets/railroad-ebnf-LZEXJU2U-CD857gxq.js +1 -0
- package/dist/gui/client/assets/railroad-peg-WCYAUIDC-DUV4k35E.js +1 -0
- package/dist/gui/client/assets/railroadDiagram-O6MQD6OU-DMR4LXmA.js +1 -0
- package/dist/gui/client/assets/requirementDiagram-BXWQKSXE-DVltaF6c.js +84 -0
- package/dist/gui/client/assets/sankeyDiagram-P5KCCOFB-CHdNz472.js +40 -0
- package/dist/gui/client/assets/sequenceDiagram-WJ2MYXX4-DaMafIty.js +162 -0
- package/dist/gui/client/assets/stateDiagram-D77RDMKH-CEbBHqn3.js +1 -0
- package/dist/gui/client/assets/stateDiagram-v2-MP3YSRHH-B3JgDdFg.js +1 -0
- package/dist/gui/client/assets/swimlanes-42K2YHIH-BlPHndnJ.js +1 -0
- package/dist/gui/client/assets/swimlanesDiagram-VR7AAH4N-BPabHwsZ.js +8 -0
- package/dist/gui/client/assets/timeline-definition-24CTP7MA-E4Y1lPBI.js +120 -0
- package/dist/gui/client/assets/treeView-Q6P3EWNA-DrY0uhTN.js +1 -0
- package/dist/gui/client/assets/treemap-WGGIJYW6-CVotnLHf.js +1 -0
- package/dist/gui/client/assets/vennDiagram-4TSXK5OY-DJNrLIOF.js +34 -0
- package/dist/gui/client/assets/wardley-WFR3VGLG-ClOpAp5S.js +1 -0
- package/dist/gui/client/assets/wardleyDiagram-VM6X3IG4-qhMoKOXc.js +78 -0
- package/dist/gui/client/assets/xychartDiagram-S5SC5T6Z-CTuXoo9R.js +7 -0
- package/dist/gui/client/index.html +6 -0
- package/dist/gui/ops-worker.js +167 -0
- package/dist/gui/reads-worker.js +473 -0
- package/dist/gui/server.js +9780 -0
- package/dist/gui-QJS7XQMV.js +16 -0
- package/dist/init-DV5B6HQG.js +354 -0
- package/dist/install-6C45YXFP.js +19 -0
- package/dist/install-O7NSRU2W.js +13 -0
- package/dist/interactive-OXGYZYAS.js +22381 -0
- package/dist/interop-J7UOBOSF.js +254 -0
- package/dist/inventory-OEGIL6PY.js +144 -0
- package/dist/library-B3UPGY4V.js +83 -0
- package/dist/library-MXQA5DLT.js +309 -0
- package/dist/library-ROZAMUIL.js +496 -0
- package/dist/library-import-2LTWOVBD.js +190 -0
- package/dist/library-inventory-LJ3XHLWO.js +60 -0
- package/dist/library-validation-DARHHUNW.js +46 -0
- package/dist/mcp-2GSPYQ54.js +28 -0
- package/dist/memory-J3STUUIK.js +537 -0
- package/dist/models-Y3GMFJ2V.js +314 -0
- package/dist/monitor-LHNH577J.js +811 -0
- package/dist/orchestrator-DTAPXULA.js +12117 -0
- package/dist/panes-A743ONZ5.js +103 -0
- package/dist/panes-CTNO57ZY.js +76 -0
- package/dist/paths-3SBYJQDP.js +68 -0
- package/dist/preload-OJBMAIXF.js +140 -0
- package/dist/providers-CMETPZNS.js +232 -0
- package/dist/registry-37T4U6X2.js +15 -0
- package/dist/reset-O7EUCYWO.js +346 -0
- package/dist/resources-FY6XYFN2.js +189 -0
- package/dist/run-H64MEVTA.js +1067 -0
- package/dist/run-script-PQ5NRU3X.js +42 -0
- package/dist/settings-SNIQNXCW.js +73 -0
- package/dist/settings-controls-X6GMCPVG.js +202 -0
- package/dist/share-CAFMMQLM.js +299 -0
- package/dist/skills-ERKQUC7L.js +114 -0
- package/dist/skills-eval-CQ23MYQK.js +1099 -0
- package/dist/skills-inventory-TVUYJDVN.js +142 -0
- package/dist/slash-commands-ROG3KIFJ.js +107 -0
- package/dist/startup-background-KDWCQMWT.js +247 -0
- package/dist/steer-KKYXJSH4.js +77 -0
- package/dist/support-M3RCUUEL.js +40 -0
- package/dist/system-ZDW44ZGX.js +142 -0
- package/dist/target-runtimes-PWA22WVW.js +73 -0
- package/dist/targets-AJWA6E7Z.js +1207 -0
- package/dist/tasks-6L2JJRC5.js +39 -0
- package/dist/terminal-lease-YFUSDPAD.js +432 -0
- package/dist/tools-5XJUABRD.js +30 -0
- package/dist/trace-LA5MVR4Y.js +527 -0
- package/dist/tree-sitter-TQW3Y52T.js +4673 -0
- package/dist/tui-primitives-IUCVWLH5.js +19 -0
- package/dist/uninstall-SAWGGXAB.js +448 -0
- package/dist/upgrade-HSNSVTZG.js +300 -0
- package/dist/usage-XSILDHKF.js +1083 -0
- package/dist/verifiers-ECA5GIHL.js +633 -0
- package/dist/verify-R6QQCCEB.js +31 -0
- package/dist/version-PLZYB5KW.js +22 -0
- package/dist/web-fetch-PVZNMBOB.js +803 -0
- package/dist/wiki-generate-RP22WP5K.js +647 -0
- package/dist/with-panes-W3PAZPRF.js +629 -0
- package/dist/worker/entry.js +324 -284
- package/dist/workspace-check-3764ZKC2.js +83 -0
- package/docs/README.md +26 -10
- package/docs/architecture/acp.md +179 -12
- package/docs/architecture/artifact-placement.md +1 -1
- package/docs/architecture/capacity-and-scheduling.md +7 -8
- package/docs/architecture/context-engine.md +350 -95
- package/docs/architecture/model-catalog.md +18 -11
- package/docs/architecture/observability.md +1 -1
- package/docs/architecture/pi-boundary.md +59 -6
- package/docs/architecture/prompt-envelope-and-tools.md +147 -39
- package/docs/architecture/provider-adapter-cookbook.md +2 -2
- package/docs/architecture/safety-model.md +18 -4
- package/docs/architecture/trace-store.md +2 -2
- package/docs/architecture/tui-design.md +41 -81
- package/docs/architecture/worker-dispatch-mechanics.md +9 -1
- package/docs/gui/README.md +69 -0
- package/docs/gui/boundary-doctrine.md +104 -0
- package/docs/gui/chat-rendering-spec.md +1440 -0
- package/docs/gui/cli-surface-routing.md +148 -0
- package/docs/gui/delivery-order.md +53 -0
- package/docs/gui/event-bus-coverage.md +103 -0
- package/docs/gui/inspector-presentation.md +71 -0
- package/docs/gui/parity/01-cli-surface.md +74 -0
- package/docs/gui/parity/02-slash-and-surfaces.md +110 -0
- package/docs/gui/parity/03-domains-and-plan.md +69 -0
- package/docs/gui/performance-baseline.md +76 -0
- package/docs/gui/settings-write-surface.md +267 -0
- package/docs/gui/workflow-coverage.md +64 -0
- package/docs/guide/built-in-agents.md +1 -1
- package/docs/guide/commands-and-modes.md +256 -99
- package/docs/guide/configuration-and-targets.md +485 -124
- package/docs/guide/configuration-reference.md +165 -82
- package/docs/guide/doctor.md +127 -0
- package/docs/guide/environment-variables.md +1 -1
- package/docs/guide/exit-codes-and-output.md +3 -1
- package/docs/guide/extensions-and-sharing.md +3 -14
- package/docs/guide/fleet-dispatch.md +231 -45
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/installation-and-lifecycle.md +27 -16
- package/docs/guide/interop.md +2 -2
- package/docs/guide/proactive-memory.md +154 -68
- package/docs/guide/resource-library.md +4 -0
- package/docs/guide/skills-marketplace.md +8 -4
- package/docs/guide/slurm.md +88 -0
- package/docs/guide/tool-usage.md +134 -11
- package/docs/guide/troubleshooting.md +4 -2
- package/docs/process/battletest-2026-09-20-fixes.md +161 -0
- package/docs/process/configure-tree-proposal.md +637 -0
- package/docs/process/documentation-coverage.md +8 -0
- package/docs/process/documentation-guide.md +18 -1
- package/docs/process/eval-runner.md +58 -14
- package/docs/process/performance-methodology.md +11 -3
- package/docs/process/release-cut-checklist.md +29 -3
- package/docs/process/tool-audit-v0.4.9.md +3 -0
- package/examples/extensions/README.md +1 -3
- package/examples/extensions/lab-status/clio-coder-extension.json +1 -1
- package/examples/extensions/measurements/clio-coder-extension.json +1 -1
- package/library/registry.yaml +30 -5
- package/library/skills/git/fix-issue/SKILL.md +2 -1
- package/library/skills/git/fix-issue/plugin.json +1 -1
- package/library/skills/git/ship/SKILL.md +2 -1
- package/library/skills/git/ship/plugin.json +1 -1
- package/library/skills/meta/clio-coder-test/SKILL.md +5 -6
- package/library/skills/meta/clio-coder-test/evals.md +2 -2
- package/library/skills/meta/clio-coder-test/references/test-map.md +2 -2
- package/library/skills/registry.yaml +9 -5
- package/library/skills/research/slurm-jobs/SKILL.md +110 -0
- package/library/skills/research/slurm-jobs/evals.md +39 -0
- package/library/skills/research/slurm-jobs/plugin.json +23 -0
- package/library/skills/skill-marketplace.json +18 -2
- package/package.json +15 -10
- package/src/cli/args.ts +59 -0
- package/src/cli/argv.ts +7 -0
- package/src/cli/clio.ts +9 -1
- package/src/cli/configure-controls.ts +136 -0
- package/src/cli/configure-onboarding.ts +24 -7
- package/src/cli/configure-quick.ts +32 -7
- package/src/cli/configure-target.ts +11 -1
- package/src/cli/configure.ts +253 -256
- package/src/cli/docs-server.ts +290 -0
- package/src/cli/docs.ts +60 -15
- package/src/cli/doctor-deep.ts +126 -0
- package/src/cli/doctor-hpc.ts +122 -0
- package/src/cli/doctor-slurm.ts +130 -0
- package/src/cli/doctor-task-worktrees.ts +88 -0
- package/src/cli/doctor.ts +165 -16
- package/src/cli/fleet-verify.ts +3 -2
- package/src/cli/gui.ts +111 -0
- package/src/cli/index.ts +14 -4
- package/src/cli/library.ts +2 -7
- package/src/cli/modes/json-stream.ts +4 -2
- package/src/cli/modes/print.ts +252 -25
- package/src/cli/run.ts +199 -71
- package/src/cli/skills.ts +25 -7
- package/src/cli/targets.ts +87 -9
- package/src/cli/uninstall.ts +28 -8
- package/src/cli/usage.ts +2 -1
- package/src/cli/workspace-check.ts +71 -0
- package/src/core/bash-exec.ts +8 -2
- package/src/core/bus-events.ts +32 -3
- package/src/core/cache-telemetry.ts +3 -2
- package/src/core/compile-cache.ts +11 -1
- package/src/core/config.ts +59 -6
- package/src/core/defaults.ts +27 -5
- package/src/core/diagnostics.ts +25 -0
- package/src/core/event-bus.ts +2 -1
- package/src/core/gateway-routing.ts +10 -3
- package/src/core/git-commit-attribution.ts +2 -1
- package/src/core/naming-compat.ts +6 -4
- package/src/core/package-root.ts +0 -9
- package/src/core/path-canonical.ts +143 -24
- package/src/core/residency-target-key.ts +2 -6
- package/src/core/run-overrides.ts +1 -1
- package/src/core/settings-awareness.ts +108 -0
- package/src/core/settings-controls.ts +673 -0
- package/src/core/settings-navigation.ts +116 -0
- package/src/core/theme-token-hex.ts +19 -9
- package/src/core/turn-constraints.ts +52 -0
- package/src/domains/agents/builtins/scout.md +7 -17
- package/src/domains/agents/catalog.ts +5 -1
- package/src/domains/agents/extension.ts +2 -1
- package/src/domains/agents/registry.ts +4 -3
- package/src/domains/agents/result-contract.ts +132 -1
- package/src/domains/config/classify.ts +11 -7
- package/src/domains/config/extension.ts +5 -1
- package/src/domains/config/keybindings.ts +2 -2
- package/src/domains/context/codewiki/coordinator.ts +10 -0
- package/src/domains/context/worker/snapshot.ts +6 -3
- package/src/domains/dispatch/active-route-planner.ts +2 -0
- package/src/domains/dispatch/agent-candidates.ts +5 -1
- package/src/domains/dispatch/capability-match.ts +1 -1
- package/src/domains/dispatch/contract.ts +28 -0
- package/src/domains/dispatch/event-pump.ts +37 -3
- package/src/domains/dispatch/extension.ts +391 -48
- package/src/domains/dispatch/failure-classification.ts +37 -2
- package/src/domains/dispatch/receipt-integrity.ts +3 -0
- package/src/domains/dispatch/run-identity.ts +10 -3
- package/src/domains/dispatch/target-breaker.ts +163 -0
- package/src/domains/dispatch/types.ts +29 -2
- package/src/domains/dispatch/worker-model-loads.ts +66 -0
- package/src/domains/dispatch/worker-protocol.ts +20 -1
- package/src/domains/dispatch/worker-spawn.ts +28 -2
- package/src/domains/eval/artifacts/redact.ts +9 -0
- package/src/domains/eval/metrics/noop.ts +61 -0
- package/src/domains/eval/reports/junit.ts +5 -1
- package/src/domains/eval/reports/text.ts +7 -0
- package/src/domains/eval/runners/clio-run.ts +19 -8
- package/src/domains/eval/runners/external-command.ts +29 -4
- package/src/domains/eval/schema/adapter.ts +6 -2
- package/src/domains/eval/schema/suite.ts +2 -0
- package/src/domains/eval/schema/validate.ts +3 -0
- package/src/domains/eval/suites/run.ts +167 -26
- package/src/domains/evidence/detail.ts +3 -2
- package/src/domains/extensions/operator-runtime.ts +11 -4
- package/src/domains/gateway/mcp/client.ts +1 -1
- package/src/domains/lifecycle/doctor.ts +42 -26
- package/src/domains/lifecycle/migrations/2026-09-18-ollama-runtime-id.ts +38 -0
- package/src/domains/lifecycle/migrations/index.ts +2 -0
- package/src/domains/middleware/demo-guidance.ts +36 -0
- package/src/domains/middleware/dispatch-nudge.ts +1 -1
- package/src/domains/middleware/memory-intervention.ts +51 -4
- package/src/domains/middleware/runtime.ts +5 -4
- package/src/domains/middleware/skills-reminder.ts +29 -52
- package/src/domains/middleware/task-nudge.ts +1 -0
- package/src/domains/middleware/watchdog.ts +4 -0
- package/src/domains/observability/extension.ts +2 -1
- package/src/domains/observability/out-of-turn-usage.ts +3 -2
- package/src/domains/observability/projection.ts +3 -2
- package/src/domains/observability/worker-progress.ts +48 -0
- package/src/domains/prompts/compiler.ts +148 -52
- package/src/domains/prompts/contract.ts +3 -3
- package/src/domains/prompts/demo-guidance.ts +8 -0
- package/src/domains/prompts/extension.ts +12 -7
- package/src/domains/prompts/fragments/identity/clio.md +2 -1
- package/src/domains/prompts/fragments/identity/docs-routing.md +2 -0
- package/src/domains/prompts/fragments/identity/self-awareness.md +4 -0
- package/src/domains/prompts/fragments/operating/contract.md +16 -7
- package/src/domains/prompts/fragments/operating/delegation.md +29 -13
- package/src/domains/prompts/fragments/operating/skills.md +18 -10
- package/src/domains/prompts/fragments/operating/worker.md +2 -0
- package/src/domains/providers/cache-deployment.ts +45 -2
- package/src/domains/providers/contract.ts +52 -11
- package/src/domains/providers/extension.ts +230 -53
- package/src/domains/providers/model-discovery.ts +22 -8
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +5 -7
- package/src/domains/providers/plugins.ts +3 -4
- package/src/domains/providers/probe/fingerprint.ts +2 -2
- package/src/domains/providers/probe/reasoning.ts +9 -16
- package/src/domains/providers/probe/tool-call.ts +236 -0
- package/src/domains/providers/registry.ts +51 -8
- package/src/domains/providers/runtime-resolution.ts +60 -12
- package/src/domains/providers/runtimes/boot-manifest.ts +1 -1
- package/src/domains/providers/runtimes/builtins.ts +2 -2
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +57 -41
- package/src/domains/providers/runtimes/common/local-synth.ts +3 -1
- package/src/domains/providers/runtimes/common/ollama-model-ids.ts +11 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +53 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +3 -1
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +7 -13
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +7 -17
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +1 -0
- package/src/domains/providers/runtimes/local-native/ollama.ts +211 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +77 -65
- package/src/domains/providers/support.ts +1 -1
- package/src/domains/providers/types/local-model-quirks.ts +2 -3
- package/src/domains/providers/types/runtime-descriptor.ts +23 -3
- package/src/domains/providers/types/target-descriptor.ts +15 -3
- package/src/domains/resources/collision.ts +7 -2
- package/src/domains/resources/index.ts +1 -0
- package/src/domains/resources/library-actions.ts +4 -2
- package/src/domains/resources/library-inventory.ts +6 -2
- package/src/domains/resources/prompts/loader.ts +20 -7
- package/src/domains/resources/skills/availability.ts +56 -0
- package/src/domains/resources/skills/loader.ts +20 -9
- package/src/domains/safety/action-classifier.ts +282 -31
- package/src/domains/safety/audit.ts +2 -1
- package/src/domains/safety/autonomy.ts +54 -11
- package/src/domains/safety/decision-presentation.ts +17 -4
- package/src/domains/safety/finish-contract-registration.ts +25 -1
- package/src/domains/safety/finish-contract.ts +20 -5
- package/src/domains/safety/path-policy.ts +6 -2
- package/src/domains/safety/policy-engine.ts +168 -48
- package/src/domains/safety/protected-artifacts.ts +527 -16
- package/src/domains/safety/read-scope.ts +120 -0
- package/src/domains/safety/skill-authority.ts +52 -16
- package/src/domains/scheduling/cluster.ts +14 -3
- package/src/domains/scheduling/contract.ts +7 -0
- package/src/domains/scheduling/extension.ts +20 -9
- package/src/domains/scheduling/local-capacity.ts +160 -0
- package/src/domains/session/context-accounting.ts +44 -31
- package/src/domains/session/context-ledger.ts +10 -3
- package/src/domains/session/entries.ts +4 -0
- package/src/domains/session/history.ts +1 -1
- package/src/domains/session/prompt-cache.ts +1 -0
- package/src/domains/session/prompt-manifest.ts +3 -1
- package/src/domains/session/retry.ts +4 -6
- package/src/domains/session/task-board.ts +19 -4
- package/src/domains/session/tree/preview.ts +3 -2
- package/src/engine/acp/commands.ts +653 -0
- package/src/engine/acp/server.ts +639 -20
- package/src/engine/acp/tool-mediator.ts +30 -7
- package/src/engine/acp/types.ts +58 -0
- package/src/engine/agent.ts +55 -10
- package/src/engine/ai.ts +11 -2
- package/src/engine/api-registry.ts +5 -4
- package/src/engine/apis/degraded-inference.ts +243 -0
- package/src/engine/apis/llamacpp-residency.ts +50 -6
- package/src/engine/apis/lmstudio-residency.ts +3 -5
- package/src/engine/apis/lmstudio.ts +137 -31
- package/src/engine/apis/ollama-http.ts +118 -0
- package/src/engine/apis/ollama-native.ts +216 -97
- package/src/engine/apis/openai-completions.ts +191 -189
- package/src/engine/apis/output-budget.ts +3 -1
- package/src/engine/apis/residency-lock.ts +2 -1
- package/src/engine/apis/residency.ts +339 -89
- package/src/engine/apis/sampling-overrides.ts +23 -2
- package/src/engine/apis/types.ts +1 -2
- package/src/engine/claude/tool-safety.ts +30 -5
- package/src/engine/context.ts +13 -0
- package/src/engine/env-api-keys.ts +2 -1
- package/src/engine/gemma-channel-filter.ts +3 -2
- package/src/engine/instrumented-tui.ts +25 -0
- package/src/engine/loop-guard.ts +172 -6
- package/src/engine/pi-mono-names.ts +16 -0
- package/src/engine/prewarm.ts +44 -15
- package/src/engine/provider-payload.ts +52 -14
- package/src/engine/session.ts +4 -2
- package/src/engine/worker-events.ts +9 -1
- package/src/engine/worker-runtime.ts +269 -42
- package/src/engine/worker-tools.ts +8 -3
- package/src/entry/boot-options.ts +23 -0
- package/src/entry/orchestrator.ts +207 -36
- package/src/interactive/assistant-generation-timing.ts +52 -0
- package/src/interactive/chat-loop-messages.ts +4 -1
- package/src/interactive/chat-loop.ts +59 -9
- package/src/interactive/chat-panel.ts +10 -1
- package/src/interactive/clio-editor.ts +51 -79
- package/src/interactive/context-meter.ts +1 -0
- package/src/interactive/context-overlay.ts +21 -8
- package/src/interactive/cost-overlay.ts +1 -1
- package/src/interactive/dispatch-board.ts +39 -8
- package/src/interactive/editor-bash.ts +0 -34
- package/src/interactive/editor-rails.ts +43 -0
- package/src/interactive/editor-submit.ts +34 -2
- package/src/interactive/footer/dashboard.ts +67 -38
- package/src/interactive/footer/demo-hints.ts +40 -0
- package/src/interactive/footer/key-hints.ts +21 -0
- package/src/interactive/footer/notifications.ts +1 -1
- package/src/interactive/footer/pages.ts +486 -0
- package/src/interactive/footer/system-metrics.ts +147 -0
- package/src/interactive/footer/widgets.ts +158 -63
- package/src/interactive/footer-panel.ts +29 -7
- package/src/interactive/interactive-application.ts +109 -21
- package/src/interactive/interactive-event-projection.ts +6 -2
- package/src/interactive/interactive-presentation.ts +25 -29
- package/src/interactive/interactive-slash-runtime.ts +32 -18
- package/src/interactive/interactive-subscriptions.ts +25 -5
- package/src/interactive/interactive-tickers.ts +21 -5
- package/src/interactive/keybinding-manager.ts +9 -0
- package/src/interactive/overlay-frame.ts +29 -7
- package/src/interactive/overlay-lifecycle.ts +5 -3
- package/src/interactive/overlay-model-selectors.ts +4 -0
- package/src/interactive/overlay-permission-lifecycle.ts +6 -5
- package/src/interactive/overlays/ask-user.ts +103 -110
- package/src/interactive/overlays/help-reference.ts +1 -0
- package/src/interactive/overlays/message-picker.ts +3 -29
- package/src/interactive/overlays/session-selector.ts +3 -2
- package/src/interactive/overlays/settings-sections.ts +2 -30
- package/src/interactive/overlays/settings.ts +310 -607
- package/src/interactive/permission-hint.ts +3 -3
- package/src/interactive/permission-overlay.ts +45 -27
- package/src/interactive/renderers/doctor-report.ts +43 -0
- package/src/interactive/renderers/tool-execution.ts +87 -62
- package/src/interactive/renderers/worker-entry.ts +76 -3
- package/src/interactive/side-question.ts +3 -1
- package/src/interactive/slash-commands.ts +78 -23
- package/src/interactive/startup-background.ts +131 -0
- package/src/interactive/startup-diagnostics.ts +16 -0
- package/src/interactive/status/state-machine.ts +16 -3
- package/src/interactive/status/types.ts +2 -0
- package/src/interactive/status/verbs.ts +1 -1
- package/src/interactive/terminal-lease.ts +26 -22
- package/src/interactive/theme/components.ts +1 -1
- package/src/interactive/theme/rules.ts +1 -1
- package/src/interactive/theme/tokens.ts +16 -10
- package/src/interactive/transcript-detail.ts +4 -0
- package/src/interactive/turn-context.ts +56 -20
- package/src/interactive/turn-middleware.ts +57 -9
- package/src/interactive/turn-prewarm.ts +121 -18
- package/src/interactive/turn-recovery.ts +10 -8
- package/src/interactive/turn-runtime.ts +74 -29
- package/src/interactive/turn-state.ts +3 -0
- package/src/interactive/welcome-art.ts +36 -0
- package/src/interactive/welcome-dashboard.ts +209 -49
- package/src/interactive/worker-replay.ts +4 -0
- package/src/interactive/worker-stream.ts +17 -2
- package/src/tools/agent-tools.ts +22 -1
- package/src/tools/builtin-tool-catalog.ts +2 -2
- package/src/tools/codewiki/code-nav.ts +1 -1
- package/src/tools/codewiki/shared.ts +39 -1
- package/src/tools/compete-worktrees.ts +8 -91
- package/src/tools/context/docs-engine.ts +44 -12
- package/src/tools/context/index.ts +126 -22
- package/src/tools/context/library.ts +1 -1
- package/src/tools/context/surface.ts +12 -7
- package/src/tools/core-bootstrap.ts +3 -0
- package/src/tools/dispatch-runner.ts +18 -0
- package/src/tools/dispatch-schema.ts +187 -206
- package/src/tools/edit.ts +46 -42
- package/src/tools/file-mutation-queue.ts +25 -26
- package/src/tools/gateway/clio-context-surface.ts +1 -1
- package/src/tools/gateway/index.ts +7 -3
- package/src/tools/gateway/mcp-capabilities.ts +5 -3
- package/src/tools/grep.ts +14 -2
- package/src/tools/ls.ts +1 -4
- package/src/tools/monitor.ts +14 -1
- package/src/tools/observation.ts +1 -3
- package/src/tools/path-utils.ts +51 -18
- package/src/tools/process-lease.ts +99 -0
- package/src/tools/read.ts +1 -1
- package/src/tools/registry.ts +71 -9
- package/src/tools/task-worktree.ts +296 -17
- package/src/tools/tasks.ts +29 -7
- package/src/tools/worker-evidence.ts +60 -1
- package/src/tools/worktree-root.ts +252 -0
- package/src/tools/write.ts +34 -30
- package/src/worker/entry.ts +18 -1
- package/src/worker/protocol.ts +54 -1
- package/src/worker/spec-contract.ts +22 -2
- package/dist/acp-ZWZCPS2A.js +0 -130
- package/dist/agents-LYSOWZUE.js +0 -150
- package/dist/auth-WBQGKWQ5.js +0 -551
- package/dist/background-BUMOBAQN.js +0 -37
- package/dist/builtins-ODRJOEDI.js +0 -22
- package/dist/chunk-2DRRZ57Q.js +0 -571
- package/dist/chunk-2JBZYUPY.js +0 -105
- package/dist/chunk-2VBWFXYE.js +0 -198
- package/dist/chunk-2X2R3UTH.js +0 -1018
- package/dist/chunk-32KJPXAM.js +0 -75
- package/dist/chunk-37LW32LZ.js +0 -32
- package/dist/chunk-3A3CUMKA.js +0 -54
- package/dist/chunk-3AND2EFU.js +0 -215
- package/dist/chunk-3RDHGNU7.js +0 -647
- package/dist/chunk-3SUDBGEI.js +0 -1323
- package/dist/chunk-3TQN67I2.js +0 -396
- package/dist/chunk-3U4BL2EV.js +0 -103
- package/dist/chunk-3UQADNG2.js +0 -302
- package/dist/chunk-434LRQ6Z.js +0 -13441
- package/dist/chunk-4ATBOFRP.js +0 -7802
- package/dist/chunk-4DNL43EZ.js +0 -139
- package/dist/chunk-4HFJKRGZ.js +0 -5250
- package/dist/chunk-555E2WVV.js +0 -322
- package/dist/chunk-5GZICIYO.js +0 -462
- package/dist/chunk-5PHVPU4G.js +0 -160
- package/dist/chunk-5RTEFNBP.js +0 -197
- package/dist/chunk-64XJW7NT.js +0 -380
- package/dist/chunk-6TKOFFGE.js +0 -1058
- package/dist/chunk-6UJ7RDI7.js +0 -1143
- package/dist/chunk-7FBCRWVT.js +0 -1801
- package/dist/chunk-7JSOSVLP.js +0 -283
- package/dist/chunk-7N3OLLSL.js +0 -637
- package/dist/chunk-7QQRPB2E.js +0 -915
- package/dist/chunk-A6DULIMH.js +0 -986
- package/dist/chunk-AB3QXXBC.js +0 -123
- package/dist/chunk-ACCECAH4.js +0 -49
- package/dist/chunk-AM6CEP2K.js +0 -2120
- package/dist/chunk-AUHVBIDW.js +0 -19
- package/dist/chunk-AY4XE6GN.js +0 -665
- package/dist/chunk-BBA2TAWV.js +0 -667
- package/dist/chunk-BFPHMSK7.js +0 -169
- package/dist/chunk-BMNVVKEW.js +0 -604
- package/dist/chunk-CKK25WN3.js +0 -72
- package/dist/chunk-CTGZCEI6.js +0 -33
- package/dist/chunk-DIAJYJYG.js +0 -446
- package/dist/chunk-DVNAPPXU.js +0 -27
- package/dist/chunk-DXVMLM3Z.js +0 -92
- package/dist/chunk-E3LEPLQ2.js +0 -68
- package/dist/chunk-EHZRAB4U.js +0 -63
- package/dist/chunk-EM2DIQAJ.js +0 -179
- package/dist/chunk-EM2WNQS2.js +0 -93
- package/dist/chunk-ETF4ROKH.js +0 -595
- package/dist/chunk-F2YM3JY4.js +0 -22513
- package/dist/chunk-FEBQWHJT.js +0 -1023
- package/dist/chunk-FPS4R2RN.js +0 -1975
- package/dist/chunk-GD55RTIW.js +0 -33
- package/dist/chunk-GJDRMBDI.js +0 -573
- package/dist/chunk-GREYLTZ5.js +0 -658
- package/dist/chunk-H2WSCZZT.js +0 -238
- package/dist/chunk-H6IUCY6Q.js +0 -117
- package/dist/chunk-H72DCH3E.js +0 -563
- package/dist/chunk-H7TXJR23.js +0 -705
- package/dist/chunk-HBJQQTKM.js +0 -40
- package/dist/chunk-HCVKSGNZ.js +0 -990
- package/dist/chunk-HVCAY2FH.js +0 -67
- package/dist/chunk-I47EJPYL.js +0 -1377
- package/dist/chunk-IALGWTLO.js +0 -36
- package/dist/chunk-IALZJE37.js +0 -1710
- package/dist/chunk-IC7JXLOM.js +0 -1577
- package/dist/chunk-IOSVTTCD.js +0 -108
- package/dist/chunk-IPTPMLA6.js +0 -475
- package/dist/chunk-IZZI3SKQ.js +0 -128
- package/dist/chunk-JABWPKFY.js +0 -27
- package/dist/chunk-JIYWMQZ5.js +0 -175
- package/dist/chunk-JKU34ACI.js +0 -693
- package/dist/chunk-JOBN2YQQ.js +0 -176
- package/dist/chunk-JOL2QRLE.js +0 -152
- package/dist/chunk-JTR3VSV3.js +0 -44
- package/dist/chunk-JU6MAMRJ.js +0 -362
- package/dist/chunk-JURMQWVJ.js +0 -15
- package/dist/chunk-K2BLQC5E.js +0 -262
- package/dist/chunk-K3XN4LZ4.js +0 -402
- package/dist/chunk-KIVFXGBM.js +0 -688
- package/dist/chunk-KKRXONXG.js +0 -43
- package/dist/chunk-KOAHT3N2.js +0 -395
- package/dist/chunk-KP5BPXR3.js +0 -73
- package/dist/chunk-KQ6IDQIB.js +0 -39
- package/dist/chunk-KRJQG47M.js +0 -1289
- package/dist/chunk-KW6OJ7IY.js +0 -221
- package/dist/chunk-L3NBWLSN.js +0 -314
- package/dist/chunk-L4RUTLRL.js +0 -59
- package/dist/chunk-LGTVWPRN.js +0 -47
- package/dist/chunk-LSQW6KZO.js +0 -200
- package/dist/chunk-LTR5QCLS.js +0 -446
- package/dist/chunk-LWJYOHT3.js +0 -165
- package/dist/chunk-M6YLF66Z.js +0 -2687
- package/dist/chunk-MJ4QEJVT.js +0 -185
- package/dist/chunk-MO65K5CH.js +0 -1148
- package/dist/chunk-MTOZEQHL.js +0 -637
- package/dist/chunk-MZDPF35R.js +0 -45
- package/dist/chunk-MZKYVIWW.js +0 -188
- package/dist/chunk-NBPA5QM6.js +0 -386
- package/dist/chunk-NMBEW4PP.js +0 -688
- package/dist/chunk-NPLLK3HO.js +0 -3610
- package/dist/chunk-NSYGPIVW.js +0 -39
- package/dist/chunk-NXTV5OI5.js +0 -1020
- package/dist/chunk-NYDG4QP4.js +0 -689
- package/dist/chunk-OA2GDACN.js +0 -146
- package/dist/chunk-PJI57EC6.js +0 -236
- package/dist/chunk-PJJBUGMR.js +0 -4484
- package/dist/chunk-PNJE7JPS.js +0 -50
- package/dist/chunk-PP23PZEV.js +0 -1347
- package/dist/chunk-PPIFDSBK.js +0 -409
- package/dist/chunk-PTFISXQO.js +0 -319
- package/dist/chunk-QB33Z5S7.js +0 -1865
- package/dist/chunk-QGNII5VC.js +0 -110
- package/dist/chunk-QH3ZTUOA.js +0 -113
- package/dist/chunk-QI72X67S.js +0 -481
- package/dist/chunk-QJMRYTCX.js +0 -56
- package/dist/chunk-QKHZZFKH.js +0 -98
- package/dist/chunk-RDKX2PME.js +0 -66
- package/dist/chunk-RL7LJYN4.js +0 -66
- package/dist/chunk-RPMNIFRY.js +0 -65
- package/dist/chunk-RQROVOV3.js +0 -670
- package/dist/chunk-S34A7BSP.js +0 -97
- package/dist/chunk-SJETVJHX.js +0 -119
- package/dist/chunk-SJMNU4ZS.js +0 -634
- package/dist/chunk-SL2RDHKO.js +0 -19
- package/dist/chunk-SLLG2G44.js +0 -85
- package/dist/chunk-SQAZN2V3.js +0 -2744
- package/dist/chunk-SQBT46OF.js +0 -814
- package/dist/chunk-SRCEQKQS.js +0 -165
- package/dist/chunk-TCUOGIL2.js +0 -52
- package/dist/chunk-TIWPKCVO.js +0 -42
- package/dist/chunk-U44YYLVV.js +0 -1529
- package/dist/chunk-UIU7MGZ3.js +0 -486
- package/dist/chunk-USBBEKHW.js +0 -177
- package/dist/chunk-VHKTOLEW.js +0 -1416
- package/dist/chunk-VPWGADBG.js +0 -3151
- package/dist/chunk-VQD7NH7Z.js +0 -356
- package/dist/chunk-VWFCAK34.js +0 -697
- package/dist/chunk-W5RM7YAH.js +0 -78
- package/dist/chunk-W72LLZAV.js +0 -243
- package/dist/chunk-WGRDABW7.js +0 -207
- package/dist/chunk-WWRV5RJI.js +0 -165
- package/dist/chunk-XCUDZQLX.js +0 -195
- package/dist/chunk-XFLSL7BT.js +0 -386
- package/dist/chunk-XJZEDCNT.js +0 -391
- package/dist/chunk-XLLEL3K7.js +0 -709
- package/dist/chunk-XNZWWDC3.js +0 -686
- package/dist/chunk-XRECG65F.js +0 -308
- package/dist/chunk-XTQ7MEJG.js +0 -457
- package/dist/chunk-XW2UZICE.js +0 -372
- package/dist/chunk-Y3M2T5RO.js +0 -891
- package/dist/chunk-YGDMBK7O.js +0 -567
- package/dist/chunk-YJCCMYYT.js +0 -125
- package/dist/chunk-YPQOPFP7.js +0 -797
- package/dist/chunk-YQYINEJI.js +0 -132
- package/dist/chunk-ZF6CV4WZ.js +0 -5614
- package/dist/chunk-ZKJU55MX.js +0 -326
- package/dist/chunk-ZKQ63XZ5.js +0 -1196
- package/dist/chunk-ZKVMDNAN.js +0 -962
- package/dist/chunk-ZST3FRCV.js +0 -132
- package/dist/clio-JUDCLNHC.js +0 -26
- package/dist/clio-context-tools-FT672MNZ.js +0 -136
- package/dist/code-nav-7OVCTP2Z.js +0 -688
- package/dist/compile-cache-WJEPUZEJ.js +0 -16
- package/dist/components-OZXZMDWU.js +0 -674
- package/dist/config-P3ZQVF63.js +0 -275
- package/dist/config-graph-GKAOBAS5.js +0 -160
- package/dist/configure-25LRYZJG.js +0 -86
- package/dist/context-72VQV7JX.js +0 -73
- package/dist/context-COWRWXP3.js +0 -286
- package/dist/context-WB3D474G.js +0 -344
- package/dist/context-clear-Y4LYMWC6.js +0 -192
- package/dist/context-index-W6A4V7OC.js +0 -120
- package/dist/context-map-DKL3QT6D.js +0 -555
- package/dist/context-working-set-TMZYVC7A.js +0 -1560
- package/dist/data-tool-KMBWKKWR.js +0 -2987
- package/dist/detail-4GLROGY5.js +0 -123
- package/dist/dispatch-runner-TR3LBP5P.js +0 -2446
- package/dist/docs-ZK777W2G.js +0 -101
- package/dist/doctor-WC4OV2OB.js +0 -814
- package/dist/eval-FUNWJNUJ.js +0 -5050
- package/dist/eval-inventory-CX24K2JT.js +0 -260
- package/dist/evals-L73EBHSU.js +0 -104
- package/dist/evidence-AVJ2RTHX.js +0 -392
- package/dist/evidence-P4NZOAK7.js +0 -233
- package/dist/evidence-Y55WKYHH.js +0 -246
- package/dist/evolve-MAWKRYWF.js +0 -617
- package/dist/extensions-PYQH3H47.js +0 -308
- package/dist/fleet-M4H2QBWT.js +0 -268
- package/dist/fleet-ULBXXRDR.js +0 -923
- package/dist/fleet-commands-7NNC4JZU.js +0 -76
- package/dist/fleet-decisions-EHEY7KPU.js +0 -52
- package/dist/fleet-graph-LQ2AHZT3.js +0 -136
- package/dist/fleet-inspect-5IGBIIYZ.js +0 -312
- package/dist/fleet-new-RCKGSRDV.js +0 -48
- package/dist/fleet-preflight-UTTNOKMG.js +0 -27
- package/dist/fleet-validate-YGILJKA6.js +0 -91
- package/dist/fleet-verify-AUWTCDKR.js +0 -210
- package/dist/fleet-view-TGUFCY5A.js +0 -127
- package/dist/init-GFN2Z7NF.js +0 -333
- package/dist/install-3RZDDP23.js +0 -13
- package/dist/install-6PIF6F6W.js +0 -19
- package/dist/interop-EF5JUWWK.js +0 -246
- package/dist/inventory-I6VJDDYF.js +0 -127
- package/dist/library-3J5IO2OJ.js +0 -75
- package/dist/library-IJTOFTDS.js +0 -307
- package/dist/library-Z3KZSHPE.js +0 -492
- package/dist/library-import-IMKFLDHX.js +0 -183
- package/dist/library-inventory-CQP5D6GU.js +0 -56
- package/dist/library-validation-33UTX7AI.js +0 -42
- package/dist/mcp-5FWZKUS6.js +0 -26
- package/dist/memory-36CWN67Y.js +0 -520
- package/dist/models-KQ6PQJJQ.js +0 -302
- package/dist/monitor-XX6ZD6KC.js +0 -785
- package/dist/orchestrator-SK6HDAOP.js +0 -42067
- package/dist/panes-L27QRXUH.js +0 -74
- package/dist/panes-LXZIWNOZ.js +0 -103
- package/dist/paths-7DJDU4P4.js +0 -67
- package/dist/preload-K2TDYI4Y.js +0 -124
- package/dist/registry-DESGAXWK.js +0 -11
- package/dist/reset-73VU3XNT.js +0 -345
- package/dist/resources-3BYJYVYL.js +0 -181
- package/dist/run-AR7PY6GW.js +0 -896
- package/dist/run-script-H2KUDIII.js +0 -41
- package/dist/settings-3VMBMWID.js +0 -72
- package/dist/share-HVWH4FPF.js +0 -293
- package/dist/skills-5TYEY75Q.js +0 -100
- package/dist/skills-eval-CK3MD63Z.js +0 -1083
- package/dist/skills-inventory-KSFYG3I6.js +0 -138
- package/dist/slash-commands-DMVHML7P.js +0 -98
- package/dist/steer-XCD6V3EW.js +0 -77
- package/dist/support-JAZL6VBR.js +0 -38
- package/dist/system-3TDQRMZZ.js +0 -116
- package/dist/targets-EZKHAYRN.js +0 -1117
- package/dist/tasks-SNEFHWYW.js +0 -36
- package/dist/terminal-lease-BNLFA4OF.js +0 -419
- package/dist/tools-7IM6BDCE.js +0 -28
- package/dist/trace-C3MBGD4S.js +0 -524
- package/dist/tree-sitter-AQUUOSYM.js +0 -4673
- package/dist/tui-primitives-36BY2774.js +0 -18
- package/dist/uninstall-WWLOSZ42.js +0 -432
- package/dist/upgrade-ETK2JNSJ.js +0 -297
- package/dist/usage-S2HOB7BZ.js +0 -1065
- package/dist/verifiers-QDTEVH7R.js +0 -632
- package/dist/verify-SUKUK6XM.js +0 -31
- package/dist/version-RFPKO6T7.js +0 -21
- package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +0 -1
- package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +0 -1
- package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +0 -36
- package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +0 -129
- package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +0 -38
- package/dist/web/client/assets/channel-c4EeUUqA.js +0 -1
- package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +0 -62
- package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +0 -2
- package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +0 -125
- package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +0 -1
- package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +0 -72
- package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +0 -1
- package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +0 -231
- package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +0 -1
- package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +0 -10
- package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +0 -1
- package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +0 -1
- package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +0 -1
- package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +0 -168
- package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +0 -88
- package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +0 -206
- package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +0 -1
- package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +0 -1
- package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +0 -1
- package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +0 -62
- package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +0 -4
- package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +0 -30
- package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +0 -41
- package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +0 -3
- package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +0 -24
- package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +0 -24
- package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +0 -1
- package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +0 -99
- package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +0 -1
- package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +0 -1
- package/dist/web/client/assets/framework-YGoR34M4.js +0 -9
- package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +0 -292
- package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +0 -1
- package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +0 -106
- package/dist/web/client/assets/index-CVcy0FAn.js +0 -75
- package/dist/web/client/assets/index-Dsi52apB.css +0 -1
- package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +0 -1
- package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +0 -2
- package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +0 -70
- package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +0 -139
- package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +0 -89
- package/dist/web/client/assets/line-BIDAcEtX.js +0 -1
- package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +0 -7
- package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +0 -44
- package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +0 -96
- package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +0 -1
- package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +0 -1
- package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +0 -1
- package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +0 -39
- package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +0 -7
- package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +0 -1
- package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +0 -1
- package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +0 -1
- package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +0 -1
- package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +0 -1
- package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +0 -1
- package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +0 -84
- package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +0 -40
- package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +0 -162
- package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +0 -1
- package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +0 -1
- package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +0 -1
- package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +0 -8
- package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +0 -120
- package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +0 -1
- package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +0 -1
- package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +0 -34
- package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +0 -1
- package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +0 -78
- package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +0 -7
- package/dist/web/client/index.html +0 -6
- package/dist/web/ops-worker.js +0 -37
- package/dist/web/reads-worker.js +0 -1726
- package/dist/web/server.js +0 -8499
- package/dist/web-EMGUGGEI.js +0 -13
- package/dist/web-fetch-6BRRVQON.js +0 -805
- package/dist/wiki-generate-XHSJTDOP.js +0 -627
- package/dist/with-panes-Z6BTEHMZ.js +0 -628
- package/evals/README.md +0 -9
- package/evals/behavioral-corpus-grader.mjs +0 -236
- package/evals/behavioral-machinery-baseline.json +0 -2276
- package/evals/behavioral-machinery-driver.ts +0 -250
- package/evals/behavioral-machinery-support.ts +0 -254
- package/evals/behavioral-machinery.yaml +0 -614
- package/evals/behavioral-model-negative-control.yaml +0 -69
- package/evals/behavioral-model.yaml +0 -482
- package/evals/fixtures/behavioral-facts.txt +0 -3
- package/evals/fixtures/behavioral-main.ts +0 -7
- package/evals/fixtures/decoy/note.txt +0 -2
- package/evals/fixtures/docs-retrieval.json +0 -102
- package/evals/fixtures/private/credentials.txt +0 -1
- package/evals/fixtures/scalar-decision.json +0 -17
- package/evals/fixtures/scout-citation-pipeline.json +0 -55
- package/evals/fixtures/source-explanation.json +0 -74
- package/evals/fixtures/tool-arguments.json +0 -18
- package/evals/fixtures/tool-surface/read.txt +0 -4
- package/evals/fixtures/tool-surface/subdir/keep.txt +0 -1
- package/evals/no-edit-memory-grader.mjs +0 -149
- package/evals/scalar-decision-grader.py +0 -41
- package/evals/scalar-decision-machinery.ts +0 -145
- package/evals/source-explanation-grader.mjs +0 -118
- package/evals/tool-surface-grader.mjs +0 -53
- package/evals/tool-surface-model.yaml +0 -274
- package/evals/tracked-metrics-baseline.yaml +0 -229
- package/evals/tracked-metrics-grader.mjs +0 -129
- package/src/cli/web.ts +0 -79
- package/src/domains/providers/runtimes/local-native/ollama-native.ts +0 -122
- /package/dist/assets/{web-notices → gui-notices}/@hono__node-server-LICENSE +0 -0
- /package/dist/assets/{web-notices → gui-notices}/hono-LICENSE +0 -0
- /package/dist/{web → gui}/client/THIRD_PARTY_LICENSES.md +0 -0
- /package/dist/{web → gui}/client/assets/arc-Pry-7G1_.js +0 -0
- /package/dist/{web → gui}/client/assets/array-BifhSqXX.js +0 -0
- /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-FOHPRMQF-CoA4358r.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-JWPE2WC7-DVXcaiue.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-XXDRQBXY-DqAYeljN.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -0
- /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
- /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +0 -0
- /package/dist/{web → gui}/client/assets/cytoscape.esm-c2aL46s-.js +0 -0
- /package/dist/{web → gui}/client/assets/dagre-C-rnJpZF.js +0 -0
- /package/dist/{web → gui}/client/assets/defaultLocale-BFoDCU3G.js +0 -0
- /package/dist/{web → gui}/client/assets/dist-v5Q1xZ2K.js +0 -0
- /package/dist/{web → gui}/client/assets/graphlib-DS17s2tU.js +0 -0
- /package/dist/{web → gui}/client/assets/init-C-OQMol4.js +0 -0
- /package/dist/{web → gui}/client/assets/katex-ZlcWpGUi.js +0 -0
- /package/dist/{web → gui}/client/assets/linear-SzVmGSw4.js +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/ordinal-BDEzSJ7C.js +0 -0
- /package/dist/{web → gui}/client/assets/path-fybaL0A-.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-bash-D6zCJ74D.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-c-04YixN25.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-clike-DapgWyxx.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-core-BtsZdCS6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-cpp-C-lJbC-6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-css-CPgOzxXp.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-diff-BF8m0_mq.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-docker-DkT6yOFj.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-fortran-Be5x3y1V.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-go-C_8qAH5n.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-ini-BESK3y0r.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-javascript-BnO-swvr.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-json-Dp_-W-Hv.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-jsx-D-D0NWtC.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-julia-DIjOgiAV.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-latex-DNMbqcH_.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-makefile-CRKWLQ8l.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-markdown-C0FPJ1Iz.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-markup-Cp04rIa1.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-matlab-D-nk08al.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-python-CfiSVtM6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-r-QmNGR8LX.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-rust-Bu9N8X3N.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-shell-session-Be4UuYoM.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-sql-CYhVDMEE.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-toml-DKb54GAT.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-tsx-p6J2Kc_4.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-typescript-BMqONzxf.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-yaml-C0JHu8gr.js +0 -0
- /package/dist/{web → gui}/client/assets/purify.es-ChwZkWde.js +0 -0
- /package/dist/{web → gui}/client/assets/rolldown-runtime-hePW80VL.js +0 -0
- /package/dist/{web → gui}/client/assets/rough.esm-Dy-Kn_BL.js +0 -0
- /package/dist/{web → gui}/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -0
- /package/dist/{web → gui}/client/assets/src-B6xuSHsQ.js +0 -0
- /package/dist/{web → gui}/client/clio-coder-logo.webp +0 -0
- /package/dist/{web → gui}/client/icon-192.png +0 -0
- /package/dist/{web → gui}/client/icon-512.png +0 -0
- /package/dist/{web → gui}/client/manifest.webmanifest +0 -0
- /package/dist/{web → gui}/client/offline.css +0 -0
- /package/dist/{web → gui}/client/offline.html +0 -0
- /package/dist/{web → gui}/client/offline.js +0 -0
- /package/dist/{web → gui}/client/sw.js +0 -0
|
@@ -0,0 +1,1205 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
SETTING_CONTROLS
|
|
4
|
+
} from "./chunk-VOYUCAQF.js";
|
|
5
|
+
import {
|
|
6
|
+
buildRecallFields,
|
|
7
|
+
recallErrorMessage,
|
|
8
|
+
recallParentTurnId,
|
|
9
|
+
recallableRefListing,
|
|
10
|
+
resolveRecall
|
|
11
|
+
} from "./chunk-EG4ARXPC.js";
|
|
12
|
+
import {
|
|
13
|
+
foldWorkingSet
|
|
14
|
+
} from "./chunk-EZD2BXGP.js";
|
|
15
|
+
import {
|
|
16
|
+
getAtPath
|
|
17
|
+
} from "./chunk-GGWI3OVM.js";
|
|
18
|
+
import {
|
|
19
|
+
resolveSettingsSection,
|
|
20
|
+
settingsSectionForPath
|
|
21
|
+
} from "./chunk-LJRBX7QR.js";
|
|
22
|
+
import {
|
|
23
|
+
checkSkillDrift
|
|
24
|
+
} from "./chunk-4WOOTKFD.js";
|
|
25
|
+
import {
|
|
26
|
+
discoverMarketplaceSkills,
|
|
27
|
+
installedSkillNames,
|
|
28
|
+
installedSkillPackages,
|
|
29
|
+
loadSkills,
|
|
30
|
+
modelVisibleSkills
|
|
31
|
+
} from "./chunk-LAR7DX5E.js";
|
|
32
|
+
import {
|
|
33
|
+
contextToolSurface
|
|
34
|
+
} from "./chunk-CTFPFW3H.js";
|
|
35
|
+
import {
|
|
36
|
+
OBSERVE_SELF_CAPS,
|
|
37
|
+
finalizeObservation,
|
|
38
|
+
observationBudgetExhausted,
|
|
39
|
+
reserveObservation
|
|
40
|
+
} from "./chunk-OPD7GL6F.js";
|
|
41
|
+
import {
|
|
42
|
+
truncateHead
|
|
43
|
+
} from "./chunk-GHXGMFQ5.js";
|
|
44
|
+
import {
|
|
45
|
+
SKILL_INSTALL_OFFER_OPTION_NEVER,
|
|
46
|
+
SKILL_INSTALL_OFFER_OPTION_NOT_NOW,
|
|
47
|
+
SKILL_INSTALL_OFFER_OPTION_PROJECT,
|
|
48
|
+
SKILL_INSTALL_OFFER_OPTION_USER,
|
|
49
|
+
SKILL_SUGGESTION_ANCHOR
|
|
50
|
+
} from "./chunk-I4Y4WKZR.js";
|
|
51
|
+
import {
|
|
52
|
+
ToolNames
|
|
53
|
+
} from "./chunk-V4XJWDHR.js";
|
|
54
|
+
import {
|
|
55
|
+
resolvePackageRoot
|
|
56
|
+
} from "./chunk-ZPST2KQO.js";
|
|
57
|
+
import {
|
|
58
|
+
init_esm_shims
|
|
59
|
+
} from "./chunk-ECBHH7LU.js";
|
|
60
|
+
|
|
61
|
+
// src/tools/context/index.ts
|
|
62
|
+
init_esm_shims();
|
|
63
|
+
import { readdirSync as readdirSync2 } from "node:fs";
|
|
64
|
+
import path from "node:path";
|
|
65
|
+
|
|
66
|
+
// src/core/settings-awareness.ts
|
|
67
|
+
init_esm_shims();
|
|
68
|
+
var AUTONOMY_HELP = {
|
|
69
|
+
"read-only": "Inspect the workspace and answer questions. Edits, execution, and dispatch are refused.",
|
|
70
|
+
suggest: "Inspect freely; ask before edits, execution, or dispatch. Useful when reviewing an unfamiliar project.",
|
|
71
|
+
"auto-edit": "Edit the workspace, run recognized checks, and delegate routine work without repeated approval. Ask for unfamiliar commands, reads outside the workspace, declared outward actions, and larger dispatch plans. Safety rules still apply.",
|
|
72
|
+
"full-auto": "Skip autonomy approvals, including unfamiliar commands and outward actions. Safety rules can still block or require approval. Choose this only for work you are prepared to let run unattended."
|
|
73
|
+
};
|
|
74
|
+
function describeSettingsPosture(settings) {
|
|
75
|
+
const worker = settings.fleet.permissions.mode === "escalate" ? "Workers ask you when a call needs approval; unanswered requests follow the configured timeout and fallback." : settings.fleet.permissions.mode === "fail" ? "Workers stop their run when a call needs approval." : "Workers follow their allowed tool and safety policy; a call needing approval is denied and the worker can continue with allowed work.";
|
|
76
|
+
const budget = settings.safety.limits.sessionCostUsd === 0 ? "Tracked spending has no session ceiling." : `Tracked session spending is capped at $${settings.safety.limits.sessionCostUsd}; unknown provider prices are not a guaranteed dollar limit.`;
|
|
77
|
+
return `${AUTONOMY_HELP[settings.safety.autonomy]} ${worker} ${budget}`;
|
|
78
|
+
}
|
|
79
|
+
var SAFE_STRING_VALUES = /* @__PURE__ */ new Set([
|
|
80
|
+
"chat.target",
|
|
81
|
+
"chat.model",
|
|
82
|
+
"fleet.default.target",
|
|
83
|
+
"fleet.default.model",
|
|
84
|
+
"context.memory.target",
|
|
85
|
+
"context.memory.model",
|
|
86
|
+
"fleet.concurrency"
|
|
87
|
+
]);
|
|
88
|
+
function settingsAwareness(settings, query = "", offset = 0, limit = 12) {
|
|
89
|
+
const area = resolveSettingsSection(query);
|
|
90
|
+
const terms = query.toLowerCase().split(/\s+/).filter(Boolean);
|
|
91
|
+
const controls = SETTING_CONTROLS.map((control, index) => {
|
|
92
|
+
const text = `${control.path} ${control.label} ${control.description}`.toLowerCase();
|
|
93
|
+
const score = terms.filter((term) => text.includes(term)).length;
|
|
94
|
+
return { control, index, score };
|
|
95
|
+
}).filter(
|
|
96
|
+
({ control, score }) => area ? settingsSectionForPath(control.path) === area : terms.length === 0 || score > 0
|
|
97
|
+
).sort((a, b) => area ? a.index - b.index : b.score - a.score || a.index - b.index).map(({ control }) => control);
|
|
98
|
+
const route = (value) => ({
|
|
99
|
+
target: value.target ?? null,
|
|
100
|
+
model: value.model ?? null,
|
|
101
|
+
thinkingLevel: value.thinkingLevel,
|
|
102
|
+
...value.node ? { node: value.node } : {}
|
|
103
|
+
});
|
|
104
|
+
const rows = controls.slice(offset, offset + limit).map((control) => {
|
|
105
|
+
const disclose = control.kind === "number" || control.kind === "boolean" || Boolean(control.choices) || SAFE_STRING_VALUES.has(control.path);
|
|
106
|
+
return {
|
|
107
|
+
path: control.path,
|
|
108
|
+
label: control.label,
|
|
109
|
+
description: control.description,
|
|
110
|
+
...disclose ? { value: getAtPath(settings, control.path) ?? null } : { valueOmitted: "Free-form or structured value; inspect through the user settings UI." },
|
|
111
|
+
...control.choices ? { choices: control.choices } : {},
|
|
112
|
+
tui: `/settings ${settingsSectionForPath(control.path)}`,
|
|
113
|
+
cli: `clio-coder configure --section ${settingsSectionForPath(control.path)}`
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
return {
|
|
117
|
+
scope: "effective settings for the running session; includes its overrides",
|
|
118
|
+
routing: {
|
|
119
|
+
chat: route(settings.chat),
|
|
120
|
+
fleetDefault: route(settings.fleet.default),
|
|
121
|
+
profiles: Object.fromEntries(Object.entries(settings.fleet.profiles).map(([name, value]) => [name, route(value)])),
|
|
122
|
+
agentProfiles: { ...settings.fleet.agentProfiles },
|
|
123
|
+
targets: settings.targets.map((target) => ({
|
|
124
|
+
id: target.id,
|
|
125
|
+
runtime: target.runtime,
|
|
126
|
+
defaultModel: target.defaultModel ?? null
|
|
127
|
+
})),
|
|
128
|
+
note: "These are configured routes, not backend health or a guarantee of a particular dispatch. Shadow helpers use fleet routing; do not substitute the chat model for the fleet default. Agent/profile bindings, explicit requests, recipe requirements and admission can affect a run. Null means not explicitly configured, not inheritance from chat."
|
|
129
|
+
},
|
|
130
|
+
posture: describeSettingsPosture(settings),
|
|
131
|
+
limits: {
|
|
132
|
+
sessionCostUsd: settings.safety.limits.sessionCostUsd,
|
|
133
|
+
chatToolCallsPerTurn: settings.safety.limits.chatToolCallsPerTurn,
|
|
134
|
+
workerToolCallsPerRun: settings.fleet.limits.toolCallsPerRun,
|
|
135
|
+
workerPermissionMode: settings.fleet.permissions.mode,
|
|
136
|
+
concurrency: settings.fleet.concurrency
|
|
137
|
+
},
|
|
138
|
+
note: "Answer current-configuration questions from this live snapshot; documentation describes behavior, not this session\u2019s configured values. For zero search matches, retry this settings scope with a short key or no query instead of reading whole guides. These are configured ceilings, not remaining budgets. This read changes nothing. Guide the user to the listed UI controls; do not edit settings files or relax safety, trust, credentials, or spending limits to get past a denial. /settings supports session-only changes where available; configure saves global defaults.",
|
|
139
|
+
rows,
|
|
140
|
+
total: controls.length,
|
|
141
|
+
nextOffset: offset + rows.length < controls.length ? offset + rows.length : null
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// src/tools/context/docs-engine.ts
|
|
146
|
+
init_esm_shims();
|
|
147
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
148
|
+
import { basename, join, relative, resolve } from "node:path";
|
|
149
|
+
var DEFAULT_LIMIT = 5;
|
|
150
|
+
var MAX_LIMIT = 12;
|
|
151
|
+
var SNIPPET_MAX = 360;
|
|
152
|
+
var SNIPPET_CONTEXT_LINES = 2;
|
|
153
|
+
var BODY_K1 = 1.2;
|
|
154
|
+
var BODY_B = 0.75;
|
|
155
|
+
var HEADING_WEIGHT = 3.5;
|
|
156
|
+
var TITLE_WEIGHT = 2;
|
|
157
|
+
var PHRASE_BODY_BOOST = 3;
|
|
158
|
+
var PHRASE_HEADING_BOOST = 7;
|
|
159
|
+
var COVERAGE_BOOST = 4;
|
|
160
|
+
var EXPANDED_TERM_WEIGHT = 0.45;
|
|
161
|
+
var NONCURRENT_REFERENCE_WEIGHT = 0.25;
|
|
162
|
+
var NONCURRENT_REFERENCE_PATH = /^docs\/(?:history\/|gui\/(?!readme\.md$)|process\/[^/]*(?:proposal|audit-v\d|battletest-\d{4})[^/]*\.md$)/iu;
|
|
163
|
+
var EXPLICIT_NONCURRENT_INTENT = /\b(?:histor(?:y|ical|ic)|archives?|archived|proposal|proposed|blueprints?|design|spec(?:ification)?s?|roadmaps?|audits?|legacy|previous|older|old)\b/iu;
|
|
164
|
+
var STOP_WORDS = /* @__PURE__ */ new Set([
|
|
165
|
+
"a",
|
|
166
|
+
"an",
|
|
167
|
+
"and",
|
|
168
|
+
"are",
|
|
169
|
+
"as",
|
|
170
|
+
"at",
|
|
171
|
+
"be",
|
|
172
|
+
"by",
|
|
173
|
+
"can",
|
|
174
|
+
"for",
|
|
175
|
+
"from",
|
|
176
|
+
"how",
|
|
177
|
+
"in",
|
|
178
|
+
"into",
|
|
179
|
+
"is",
|
|
180
|
+
"it",
|
|
181
|
+
"of",
|
|
182
|
+
"on",
|
|
183
|
+
"or",
|
|
184
|
+
"that",
|
|
185
|
+
"the",
|
|
186
|
+
"this",
|
|
187
|
+
"to",
|
|
188
|
+
"what",
|
|
189
|
+
"when",
|
|
190
|
+
"where",
|
|
191
|
+
"with"
|
|
192
|
+
]);
|
|
193
|
+
var VOCABULARY_ALIASES = [
|
|
194
|
+
{
|
|
195
|
+
triggers: ["approval", "confirm", "confirmation", "deny", "permission", "permissions", "prompt"],
|
|
196
|
+
expansions: ["autonomy", "ask", "deny", "safety", "policy", "full-auto", "read-only"]
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
triggers: ["agent", "agents", "dispatch", "fleet", "worker", "workers", "run"],
|
|
200
|
+
expansions: ["agent", "dispatch", "fleet", "profile", "worker", "receipt", "run"]
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
triggers: ["model", "models", "provider", "runtime", "target", "targets", "endpoint"],
|
|
204
|
+
expansions: ["catalog", "model", "probe", "provider", "runtime", "target", "wireModels"]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
triggers: ["auth", "credential", "credentials", "login", "oauth", "subscription"],
|
|
208
|
+
expansions: ["auth", "credential", "login", "oauth", "target", "runtime"]
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
triggers: ["memory", "evidence", "receipt", "receipts", "audit", "accountability", "provenance"],
|
|
212
|
+
expansions: ["accountability", "evidence", "findings", "memory", "receipt", "run", "audit"]
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
triggers: ["validate", "validated", "validation", "verify", "verified", "test", "tests", "rigor"],
|
|
216
|
+
expansions: ["validation", "verify", "evidence", "rigor", "finish", "contract", "check"]
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
triggers: ["bash", "command", "commands", "shell", "terminal", "tool", "tools"],
|
|
220
|
+
expansions: ["bash", "command", "tool", "registry", "safety", "result", "cap"]
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
triggers: ["context", "compact", "compaction", "token", "tokens", "cache", "prompt"],
|
|
224
|
+
expansions: ["context", "compaction", "prompt", "token", "cache", "window"]
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
triggers: ["hook", "hooks", "middleware", "component", "components", "budget"],
|
|
228
|
+
expansions: ["middleware", "hook", "effect", "component", "budget", "registration"]
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
triggers: ["install", "upgrade", "uninstall", "doctor", "lifecycle", "reset", "paths"],
|
|
232
|
+
expansions: ["install", "lifecycle", "doctor", "reset", "state", "config", "paths"]
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
triggers: ["skill", "skills", "marketplace"],
|
|
236
|
+
expansions: ["skill", "skills", "marketplace", "discovery", "context"]
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
triggers: ["docs", "documentation", "manual", "self"],
|
|
240
|
+
expansions: ["documentation", "docs", "context", "blueprint", "guide"]
|
|
241
|
+
}
|
|
242
|
+
];
|
|
243
|
+
var cachedIndex = null;
|
|
244
|
+
function normalizeText(text) {
|
|
245
|
+
return text.toLowerCase().replace(/[`'"’]/g, "").replace(/[^a-z0-9]+/g, " ").replace(/\s+/g, " ").trim();
|
|
246
|
+
}
|
|
247
|
+
function rawTokens(text) {
|
|
248
|
+
return normalizeText(text).split(" ").filter(Boolean);
|
|
249
|
+
}
|
|
250
|
+
function stemToken(token) {
|
|
251
|
+
if (token.length <= 3) return token;
|
|
252
|
+
if (token.endsWith("ies") && token.length > 4) return `${token.slice(0, -3)}y`;
|
|
253
|
+
if (token.endsWith("ing") && token.length > 5) return token.slice(0, -3);
|
|
254
|
+
if (token.endsWith("ed") && token.length > 4) return token.slice(0, -2);
|
|
255
|
+
if (token.endsWith("es") && token.length > 4) return token.slice(0, -2);
|
|
256
|
+
if (token.endsWith("s") && token.length > 4) return token.slice(0, -1);
|
|
257
|
+
return token;
|
|
258
|
+
}
|
|
259
|
+
function tokenize(text, options = {}) {
|
|
260
|
+
const tokens = rawTokens(text).map(stemToken);
|
|
261
|
+
return options.keepStopWords ? tokens : tokens.filter((token) => !STOP_WORDS.has(token));
|
|
262
|
+
}
|
|
263
|
+
function countTerms(tokens) {
|
|
264
|
+
const counts = /* @__PURE__ */ new Map();
|
|
265
|
+
for (const token of tokens) counts.set(token, (counts.get(token) ?? 0) + 1);
|
|
266
|
+
return counts;
|
|
267
|
+
}
|
|
268
|
+
function unique(items) {
|
|
269
|
+
return [...new Set(items)];
|
|
270
|
+
}
|
|
271
|
+
function slugify(heading, counts) {
|
|
272
|
+
const base = heading.replace(/<[^>]*>/g, "").replace(/[`*_~]/g, "").toLowerCase().replace(/[^\p{L}\p{N}_\s-]/gu, "").replace(/\s/g, "-");
|
|
273
|
+
const count = counts.get(base) ?? 0;
|
|
274
|
+
counts.set(base, count + 1);
|
|
275
|
+
return count > 0 ? `${base}-${count}` : base;
|
|
276
|
+
}
|
|
277
|
+
function titleFromFile(name) {
|
|
278
|
+
return basename(name, ".md").split(/[-_]+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
|
|
279
|
+
}
|
|
280
|
+
function parseSections(file, markdown) {
|
|
281
|
+
const lines = markdown.split(/\r?\n/);
|
|
282
|
+
const sections = [];
|
|
283
|
+
let title = titleFromFile(file);
|
|
284
|
+
let heading = "(overview)";
|
|
285
|
+
let level = 0;
|
|
286
|
+
let headingLine = 1;
|
|
287
|
+
let bodyStartLine = 1;
|
|
288
|
+
let buffer = [];
|
|
289
|
+
let inFence = false;
|
|
290
|
+
const stack = [];
|
|
291
|
+
const headingCounts = /* @__PURE__ */ new Map();
|
|
292
|
+
const breadcrumbFor = () => {
|
|
293
|
+
const parts = stack.map((entry) => entry.text);
|
|
294
|
+
if (heading === "(overview)") return title;
|
|
295
|
+
return parts.length > 0 ? parts.join(" > ") : heading;
|
|
296
|
+
};
|
|
297
|
+
const flush = (endLine) => {
|
|
298
|
+
const body = buffer.join("\n").trim();
|
|
299
|
+
if (body.length > 0 || heading !== "(overview)") {
|
|
300
|
+
sections.push({
|
|
301
|
+
file,
|
|
302
|
+
title,
|
|
303
|
+
heading,
|
|
304
|
+
breadcrumb: breadcrumbFor(),
|
|
305
|
+
level,
|
|
306
|
+
anchor: heading === "(overview)" ? "" : `#${slugify(heading, headingCounts)}`,
|
|
307
|
+
startLine: headingLine,
|
|
308
|
+
bodyStartLine,
|
|
309
|
+
endLine: Math.max(headingLine, endLine),
|
|
310
|
+
body,
|
|
311
|
+
bodyLines: [...buffer]
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
buffer = [];
|
|
315
|
+
};
|
|
316
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
317
|
+
const line = lines[i] ?? "";
|
|
318
|
+
if (/^\s*(```|~~~)/.test(line)) inFence = !inFence;
|
|
319
|
+
const headingMatch = inFence ? null : /^(#{1,6})\s+(.+?)\s*#*\s*$/.exec(line);
|
|
320
|
+
if (headingMatch) {
|
|
321
|
+
flush(i);
|
|
322
|
+
level = (headingMatch[1] ?? "").length;
|
|
323
|
+
heading = (headingMatch[2] ?? "").trim();
|
|
324
|
+
if (level === 1) title = heading;
|
|
325
|
+
while (stack.length > 0 && (stack[stack.length - 1]?.level ?? 0) >= level) stack.pop();
|
|
326
|
+
stack.push({ level, text: heading });
|
|
327
|
+
headingLine = i + 1;
|
|
328
|
+
bodyStartLine = i + 2;
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
buffer.push(line);
|
|
332
|
+
}
|
|
333
|
+
flush(lines.length);
|
|
334
|
+
return sections;
|
|
335
|
+
}
|
|
336
|
+
function indexSection(section) {
|
|
337
|
+
const headingText = `${section.title} ${section.breadcrumb} ${section.heading}`;
|
|
338
|
+
const bodyTokens = tokenize(section.body);
|
|
339
|
+
const headingTokens = tokenize(headingText);
|
|
340
|
+
const titleTokens = tokenize(section.title);
|
|
341
|
+
const bodyCounts = countTerms(bodyTokens);
|
|
342
|
+
const headingCounts = countTerms(headingTokens);
|
|
343
|
+
const titleCounts = countTerms(titleTokens);
|
|
344
|
+
const terms = /* @__PURE__ */ new Set([...bodyCounts.keys(), ...headingCounts.keys(), ...titleCounts.keys()]);
|
|
345
|
+
return {
|
|
346
|
+
...section,
|
|
347
|
+
bodyCounts,
|
|
348
|
+
headingCounts,
|
|
349
|
+
titleCounts,
|
|
350
|
+
bodyLength: Math.max(1, bodyTokens.length),
|
|
351
|
+
terms,
|
|
352
|
+
normalizedBody: normalizeText(section.body),
|
|
353
|
+
normalizedHeading: normalizeText(headingText)
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
function candidateDocFiles(root) {
|
|
357
|
+
const docsDir = join(root, "docs");
|
|
358
|
+
const htmlDir = join(docsDir, "html");
|
|
359
|
+
const files = [];
|
|
360
|
+
const walk = (dir) => {
|
|
361
|
+
let entries;
|
|
362
|
+
try {
|
|
363
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
364
|
+
} catch {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
for (const entry of entries.sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0)) {
|
|
368
|
+
const absolute = join(dir, entry.name);
|
|
369
|
+
if (entry.isDirectory()) {
|
|
370
|
+
if (absolute !== htmlDir) walk(absolute);
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
if (entry.isFile() && entry.name.toLowerCase().endsWith(".md")) {
|
|
374
|
+
files.push(relative(root, absolute).replaceAll("\\", "/"));
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
walk(docsDir);
|
|
379
|
+
for (const name of ["README.md", "CHANGELOG.md", "CLIO-CODER.md"]) {
|
|
380
|
+
if (existsSync(join(root, name))) files.push(name);
|
|
381
|
+
}
|
|
382
|
+
return files;
|
|
383
|
+
}
|
|
384
|
+
function buildDocumentFrequency(sections) {
|
|
385
|
+
const df = /* @__PURE__ */ new Map();
|
|
386
|
+
for (const section of sections) {
|
|
387
|
+
for (const term of section.terms) df.set(term, (df.get(term) ?? 0) + 1);
|
|
388
|
+
}
|
|
389
|
+
return df;
|
|
390
|
+
}
|
|
391
|
+
function loadDocsIndex() {
|
|
392
|
+
let root;
|
|
393
|
+
try {
|
|
394
|
+
const override = process.env.CLIO_CODER_PACKAGE_ROOT?.trim();
|
|
395
|
+
if (override) {
|
|
396
|
+
root = resolve(override);
|
|
397
|
+
} else {
|
|
398
|
+
root = resolvePackageRoot();
|
|
399
|
+
}
|
|
400
|
+
} catch (err) {
|
|
401
|
+
return { ok: false, message: err instanceof Error ? err.message : String(err) };
|
|
402
|
+
}
|
|
403
|
+
const docsDir = join(root, "docs");
|
|
404
|
+
if (cachedIndex && cachedIndex.dir === docsDir) return { ok: true, index: cachedIndex };
|
|
405
|
+
const files = candidateDocFiles(root);
|
|
406
|
+
if (files.length === 0) return { ok: false, message: `bundled docs directory not found at ${docsDir}` };
|
|
407
|
+
const sections = [];
|
|
408
|
+
const indexedFiles = [];
|
|
409
|
+
let docCount = 0;
|
|
410
|
+
for (const file of files) {
|
|
411
|
+
let raw;
|
|
412
|
+
try {
|
|
413
|
+
raw = readFileSync(join(root, file), "utf8");
|
|
414
|
+
} catch {
|
|
415
|
+
continue;
|
|
416
|
+
}
|
|
417
|
+
docCount += 1;
|
|
418
|
+
indexedFiles.push(file);
|
|
419
|
+
for (const section of parseSections(file, raw)) sections.push(indexSection(section));
|
|
420
|
+
}
|
|
421
|
+
if (sections.length === 0) return { ok: false, message: `no markdown sections found under ${docsDir}` };
|
|
422
|
+
const totalLength = sections.reduce((sum, section) => sum + section.bodyLength, 0);
|
|
423
|
+
cachedIndex = {
|
|
424
|
+
dir: docsDir,
|
|
425
|
+
files: indexedFiles,
|
|
426
|
+
sections,
|
|
427
|
+
docCount,
|
|
428
|
+
avgBodyLength: totalLength / sections.length,
|
|
429
|
+
documentFrequency: buildDocumentFrequency(sections)
|
|
430
|
+
};
|
|
431
|
+
return { ok: true, index: cachedIndex };
|
|
432
|
+
}
|
|
433
|
+
function makeQueryPlan(query) {
|
|
434
|
+
const originalTokens = unique(tokenize(query));
|
|
435
|
+
const originalSet = new Set(originalTokens);
|
|
436
|
+
const expanded = [];
|
|
437
|
+
for (const rule of VOCABULARY_ALIASES) {
|
|
438
|
+
const triggerTokens = rule.triggers.flatMap((trigger) => tokenize(trigger));
|
|
439
|
+
if (!triggerTokens.some((token) => originalSet.has(token))) continue;
|
|
440
|
+
expanded.push(...rule.expansions.flatMap((term) => tokenize(term)));
|
|
441
|
+
}
|
|
442
|
+
const expandedTerms = unique(expanded).filter((term) => !originalSet.has(term));
|
|
443
|
+
const weightedTerms = [
|
|
444
|
+
...originalTokens.map((term) => ({ term, source: "query", weight: 1 })),
|
|
445
|
+
...expandedTerms.map((term) => ({ term, source: "alias", weight: EXPANDED_TERM_WEIGHT }))
|
|
446
|
+
];
|
|
447
|
+
const normalizedQuery = normalizeText(query);
|
|
448
|
+
const phraseCandidates = [
|
|
449
|
+
normalizedQuery,
|
|
450
|
+
...rawTokens(query).slice(0, -1).map((token, index, tokens) => `${token} ${tokens[index + 1] ?? ""}`.trim())
|
|
451
|
+
];
|
|
452
|
+
const phrases = unique(phraseCandidates.filter((phrase) => phrase.includes(" ") && phrase.length >= 5));
|
|
453
|
+
return { query, originalTokens, weightedTerms, expandedTerms, phrases };
|
|
454
|
+
}
|
|
455
|
+
function idf(index, term) {
|
|
456
|
+
const df = index.documentFrequency.get(term) ?? 0;
|
|
457
|
+
return Math.log(1 + (index.sections.length - df + 0.5) / (df + 0.5));
|
|
458
|
+
}
|
|
459
|
+
function bm25(count, sectionLength, avgLength) {
|
|
460
|
+
if (count <= 0) return 0;
|
|
461
|
+
return count * (BODY_K1 + 1) / (count + BODY_K1 * (1 - BODY_B + BODY_B * (sectionLength / avgLength)));
|
|
462
|
+
}
|
|
463
|
+
function phraseSignals(section, phrases) {
|
|
464
|
+
let score = 0;
|
|
465
|
+
const signals = [];
|
|
466
|
+
for (const phrase of phrases) {
|
|
467
|
+
if (section.normalizedHeading.includes(phrase)) {
|
|
468
|
+
score += PHRASE_HEADING_BOOST;
|
|
469
|
+
signals.push(`heading phrase: ${phrase}`);
|
|
470
|
+
}
|
|
471
|
+
if (section.normalizedBody.includes(phrase)) {
|
|
472
|
+
score += PHRASE_BODY_BOOST;
|
|
473
|
+
signals.push(`body phrase: ${phrase}`);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
return { score, signals };
|
|
477
|
+
}
|
|
478
|
+
function scoreSection(index, section, plan) {
|
|
479
|
+
let score = 0;
|
|
480
|
+
const matchedTerms = [];
|
|
481
|
+
const signals = [];
|
|
482
|
+
let originalHits = 0;
|
|
483
|
+
for (const weighted of plan.weightedTerms) {
|
|
484
|
+
const bodyCount = section.bodyCounts.get(weighted.term) ?? 0;
|
|
485
|
+
const headingCount = section.headingCounts.get(weighted.term) ?? 0;
|
|
486
|
+
const titleCount = section.titleCounts.get(weighted.term) ?? 0;
|
|
487
|
+
if (bodyCount + headingCount + titleCount === 0) continue;
|
|
488
|
+
const termIdf = idf(index, weighted.term);
|
|
489
|
+
const bodyScore = termIdf * bm25(bodyCount, section.bodyLength, index.avgBodyLength);
|
|
490
|
+
const headingScore = headingCount > 0 ? termIdf * HEADING_WEIGHT : 0;
|
|
491
|
+
const titleScore = titleCount > 0 ? termIdf * TITLE_WEIGHT : 0;
|
|
492
|
+
score += weighted.weight * (bodyScore + headingScore + titleScore);
|
|
493
|
+
matchedTerms.push(weighted.term);
|
|
494
|
+
if (weighted.source === "query") originalHits += 1;
|
|
495
|
+
if (headingCount > 0) signals.push(`heading: ${weighted.term}`);
|
|
496
|
+
else if (titleCount > 0) signals.push(`title: ${weighted.term}`);
|
|
497
|
+
}
|
|
498
|
+
const phrases = phraseSignals(section, plan.phrases);
|
|
499
|
+
score += phrases.score;
|
|
500
|
+
signals.push(...phrases.signals);
|
|
501
|
+
const coverage = plan.originalTokens.length === 0 ? 0 : originalHits / plan.originalTokens.length;
|
|
502
|
+
score += coverage * COVERAGE_BOOST;
|
|
503
|
+
if (score <= 0) return null;
|
|
504
|
+
return {
|
|
505
|
+
section,
|
|
506
|
+
score,
|
|
507
|
+
matchedTerms: unique(matchedTerms).slice(0, 12),
|
|
508
|
+
signals: unique(signals).slice(0, 6),
|
|
509
|
+
coverage
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
function prioritizeCurrentGuidance(entry, query) {
|
|
513
|
+
if (!NONCURRENT_REFERENCE_PATH.test(entry.section.file) || EXPLICIT_NONCURRENT_INTENT.test(query)) return entry;
|
|
514
|
+
return {
|
|
515
|
+
...entry,
|
|
516
|
+
score: entry.score * NONCURRENT_REFERENCE_WEIGHT,
|
|
517
|
+
signals: unique(["historical/design reference demotion", ...entry.signals]).slice(0, 6)
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
function cleanSnippet(text) {
|
|
521
|
+
return text.replace(/^\s{0,3}#{1,6}\s+/gm, "").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/`([^`]+)`/g, "$1").replace(/\s+/g, " ").trim();
|
|
522
|
+
}
|
|
523
|
+
function snippetFor(section, plan) {
|
|
524
|
+
const needles = unique([...plan.phrases, ...plan.originalTokens, ...plan.expandedTerms.slice(0, 8)]).filter(
|
|
525
|
+
(needle) => needle.length > 0
|
|
526
|
+
);
|
|
527
|
+
let hitLine = -1;
|
|
528
|
+
let bestNeedleCount = 0;
|
|
529
|
+
for (let i = 0; i < section.bodyLines.length; i += 1) {
|
|
530
|
+
const normalized = normalizeText(section.bodyLines[i] ?? "");
|
|
531
|
+
let needleCount = 0;
|
|
532
|
+
for (const needle of needles) {
|
|
533
|
+
if (normalized.includes(needle)) needleCount += 1;
|
|
534
|
+
}
|
|
535
|
+
if (needleCount > bestNeedleCount) {
|
|
536
|
+
bestNeedleCount = needleCount;
|
|
537
|
+
hitLine = i;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
if (hitLine < 0) hitLine = section.bodyLines.findIndex((line) => line.trim().length > 0);
|
|
541
|
+
if (hitLine < 0) {
|
|
542
|
+
return {
|
|
543
|
+
text: section.heading === "(overview)" ? section.title : section.heading,
|
|
544
|
+
startLine: section.startLine,
|
|
545
|
+
endLine: section.startLine
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
const from = Math.max(0, hitLine - SNIPPET_CONTEXT_LINES);
|
|
549
|
+
const to = Math.min(section.bodyLines.length - 1, hitLine + SNIPPET_CONTEXT_LINES);
|
|
550
|
+
let snippet = cleanSnippet(section.bodyLines.slice(from, to + 1).join(" "));
|
|
551
|
+
if (snippet.length > SNIPPET_MAX) snippet = `${snippet.slice(0, SNIPPET_MAX - 3).trimEnd()}...`;
|
|
552
|
+
return {
|
|
553
|
+
text: snippet,
|
|
554
|
+
startLine: section.bodyStartLine + from,
|
|
555
|
+
endLine: section.bodyStartLine + to
|
|
556
|
+
};
|
|
557
|
+
}
|
|
558
|
+
function clampDocsLimit(value) {
|
|
559
|
+
if (typeof value === "number" && Number.isFinite(value) && value > 0) return Math.min(Math.floor(value), MAX_LIMIT);
|
|
560
|
+
return DEFAULT_LIMIT;
|
|
561
|
+
}
|
|
562
|
+
function resultPayload(index, plan, scored) {
|
|
563
|
+
const results = scored.map((entry, i) => {
|
|
564
|
+
const snippet = snippetFor(entry.section, plan);
|
|
565
|
+
return {
|
|
566
|
+
rank: i + 1,
|
|
567
|
+
file: entry.section.file,
|
|
568
|
+
heading: entry.section.heading,
|
|
569
|
+
breadcrumb: entry.section.breadcrumb,
|
|
570
|
+
anchor: entry.section.anchor,
|
|
571
|
+
lines: { start: entry.section.startLine, end: entry.section.endLine },
|
|
572
|
+
snippetLines: { start: snippet.startLine, end: snippet.endLine },
|
|
573
|
+
snippet: snippet.text,
|
|
574
|
+
score: Number(entry.score.toFixed(3)),
|
|
575
|
+
coverage: Number(entry.coverage.toFixed(2)),
|
|
576
|
+
matchedTerms: entry.matchedTerms,
|
|
577
|
+
signals: entry.signals
|
|
578
|
+
};
|
|
579
|
+
});
|
|
580
|
+
return {
|
|
581
|
+
version: 2,
|
|
582
|
+
query: plan.query,
|
|
583
|
+
corpus: {
|
|
584
|
+
docs: index.docCount,
|
|
585
|
+
sections: index.sections.length,
|
|
586
|
+
files: index.files,
|
|
587
|
+
excludes: ["docs/html/**"]
|
|
588
|
+
},
|
|
589
|
+
terms: {
|
|
590
|
+
query: plan.originalTokens,
|
|
591
|
+
expanded: plan.expandedTerms,
|
|
592
|
+
phrases: plan.phrases
|
|
593
|
+
},
|
|
594
|
+
resultCount: results.length,
|
|
595
|
+
results,
|
|
596
|
+
followUp: results.length > 0 ? `Cited files are Clio's bundled docs: read them from the installed documentation path named in your prompt, never by searching the workspace for them. For more depth, call gateway(op="call", capability="clio_docs", args={query:"<more specific terms>"}).` : "Try Clio vocabulary such as target, autonomy, dispatch, evidence, middleware, context, validation, install, or model catalog."
|
|
597
|
+
};
|
|
598
|
+
}
|
|
599
|
+
function listDocsCorpus() {
|
|
600
|
+
const loaded = loadDocsIndex();
|
|
601
|
+
if (!loaded.ok) return { ok: false, message: loaded.message };
|
|
602
|
+
const index = loaded.index;
|
|
603
|
+
const payload = {
|
|
604
|
+
version: 2,
|
|
605
|
+
corpus: {
|
|
606
|
+
docs: index.docCount,
|
|
607
|
+
sections: index.sections.length,
|
|
608
|
+
files: index.files,
|
|
609
|
+
excludes: ["docs/html/**"]
|
|
610
|
+
},
|
|
611
|
+
followUp: 'Call gateway(op="call", capability="clio_docs", args={query:"<terms>"}) to search these bundled docs; omit query to list the corpus. They ship with Clio and are not workspace files. Try Clio vocabulary such as target, autonomy, dispatch, evidence, middleware, context, validation, install, or model catalog.'
|
|
612
|
+
};
|
|
613
|
+
return { ok: true, payload, fileCount: index.files.length };
|
|
614
|
+
}
|
|
615
|
+
function searchDocs(query, limitArg) {
|
|
616
|
+
const plan = makeQueryPlan(query);
|
|
617
|
+
if (plan.originalTokens.length === 0) return { ok: false, message: "query has no searchable terms" };
|
|
618
|
+
const loaded = loadDocsIndex();
|
|
619
|
+
if (!loaded.ok) return { ok: false, message: loaded.message };
|
|
620
|
+
const limit = clampDocsLimit(limitArg);
|
|
621
|
+
const ranked = loaded.index.sections.map((section) => {
|
|
622
|
+
const scored = scoreSection(loaded.index, section, plan);
|
|
623
|
+
return scored === null ? null : prioritizeCurrentGuidance(scored, query);
|
|
624
|
+
}).filter((entry) => entry !== null).sort(
|
|
625
|
+
(a, b) => b.score - a.score || b.coverage - a.coverage || a.section.file.localeCompare(b.section.file) || a.section.startLine - b.section.startLine || a.section.heading.localeCompare(b.section.heading)
|
|
626
|
+
);
|
|
627
|
+
const shown = ranked.slice(0, limit);
|
|
628
|
+
const next = shown.length === 0 ? `query=${plan.expandedTerms[0] ?? "overview"}` : null;
|
|
629
|
+
const payload = {
|
|
630
|
+
...resultPayload(loaded.index, plan, shown),
|
|
631
|
+
omitted: ranked.length - shown.length,
|
|
632
|
+
...next !== null ? { next } : {}
|
|
633
|
+
};
|
|
634
|
+
return { ok: true, payload, resultCount: shown.length, rankedTotal: ranked.length, next };
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
// src/tools/context/index.ts
|
|
638
|
+
var DEFAULT_TREE_ENTRIES = 50;
|
|
639
|
+
function cwdFromDeps(deps) {
|
|
640
|
+
return deps?.getCwd?.() ?? process.cwd();
|
|
641
|
+
}
|
|
642
|
+
function buildResourceTree(baseDir, maxEntries) {
|
|
643
|
+
const out = [];
|
|
644
|
+
const walk = (dir) => {
|
|
645
|
+
if (out.length >= maxEntries) return;
|
|
646
|
+
let entries;
|
|
647
|
+
try {
|
|
648
|
+
entries = readdirSync2(dir, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name));
|
|
649
|
+
} catch {
|
|
650
|
+
return;
|
|
651
|
+
}
|
|
652
|
+
for (const entry of entries) {
|
|
653
|
+
if (out.length >= maxEntries) return;
|
|
654
|
+
if (entry.name.startsWith(".") || entry.name === "node_modules") continue;
|
|
655
|
+
const full = path.join(dir, entry.name);
|
|
656
|
+
const rel = path.relative(baseDir, full).split(path.sep).join("/");
|
|
657
|
+
if (entry.isDirectory()) {
|
|
658
|
+
out.push(`${rel}/`);
|
|
659
|
+
walk(full);
|
|
660
|
+
} else if (entry.isFile()) {
|
|
661
|
+
out.push(rel);
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
};
|
|
665
|
+
walk(baseDir);
|
|
666
|
+
return out;
|
|
667
|
+
}
|
|
668
|
+
function skillSourceOrigin(skill) {
|
|
669
|
+
return skill.sourceInfo.source ?? `${skill.source}-${skill.scope}`;
|
|
670
|
+
}
|
|
671
|
+
function skillExecutionFrame(skill, workspaceRoot) {
|
|
672
|
+
return [
|
|
673
|
+
"How to read this skill:",
|
|
674
|
+
`- Workspace root: ${workspaceRoot}. Run every command and resolve every repository path there. ${skill.baseDir} holds only this skill's own resource files; it is never the working directory.`,
|
|
675
|
+
"- This skill may name tools, subagents, or commands from another harness. Use Clio's equivalent from your own tool list; if there is no equivalent, say so and continue without that step. Never invent one, and never substitute repeated calls to a different agent for an agent the skill named.",
|
|
676
|
+
"- The skill describes a workflow. Your safety policy, permissions, and tool surface still bind it.",
|
|
677
|
+
""
|
|
678
|
+
];
|
|
679
|
+
}
|
|
680
|
+
function renderSkillBody(skill, tree) {
|
|
681
|
+
const sourceOrigin = skillSourceOrigin(skill);
|
|
682
|
+
const lines = [
|
|
683
|
+
`<skill name="${skill.name}" scope="${skill.scope}" source="${skill.source}" origin="${sourceOrigin}" hash="${skill.hash}">`,
|
|
684
|
+
`path: ${skill.filePath}`,
|
|
685
|
+
`base_dir: ${skill.baseDir}`,
|
|
686
|
+
`source_origin: ${sourceOrigin}`,
|
|
687
|
+
`disable_model_invocation: ${skill.disableModelInvocation}`
|
|
688
|
+
];
|
|
689
|
+
if (skill.allowedTools) lines.push(`allowed_tools: ${skill.allowedTools.join(", ")}`);
|
|
690
|
+
if (skill.disallowedTools) lines.push(`disallowed_tools: ${skill.disallowedTools.join(", ")}`);
|
|
691
|
+
if (skill.diagnostics.length > 0) {
|
|
692
|
+
lines.push(`diagnostics: ${skill.diagnostics.map((d) => d.message).join("; ")}`);
|
|
693
|
+
}
|
|
694
|
+
const metadataKeys = Object.keys(skill.metadata);
|
|
695
|
+
if (metadataKeys.length > 0) lines.push(`metadata: ${metadataKeys.join(", ")}`);
|
|
696
|
+
if (tree) {
|
|
697
|
+
lines.push("resources:");
|
|
698
|
+
for (const entry of tree) lines.push(` ${entry}`);
|
|
699
|
+
}
|
|
700
|
+
lines.push("", skill.content, "</skill>");
|
|
701
|
+
return lines.join("\n");
|
|
702
|
+
}
|
|
703
|
+
function policyIsRecipeBound(policy) {
|
|
704
|
+
return policy.requests.length > 0 && policy.requests.every((request) => request.source === "recipe");
|
|
705
|
+
}
|
|
706
|
+
var NO_PENDING_SKILL_DENIAL = `context: no pending skill request is active this turn; only the operator can activate a skill, so do not retry this load. If a listed skill matches the task, open your reply with the line \`${SKILL_SUGGESTION_ANCHOR}\` and continue the task without it; only the operator can run it. Otherwise continue without skills.`;
|
|
707
|
+
function pendingSkillPolicyError(name, options) {
|
|
708
|
+
const policy = options?.pendingSkillPolicy;
|
|
709
|
+
if (!policy) {
|
|
710
|
+
return NO_PENDING_SKILL_DENIAL;
|
|
711
|
+
}
|
|
712
|
+
const recipeBound = policyIsRecipeBound(policy);
|
|
713
|
+
if (policy.modelActivation === true && !recipeBound) {
|
|
714
|
+
if (!policy.loadedSkillNames.has(name)) return null;
|
|
715
|
+
const window = policy.carriedSurface === true ? "in this session" : "this turn";
|
|
716
|
+
return `context: skill ${name} already loaded ${window}; continue with the loaded workflow and call ask_user if an interview/choice is needed.`;
|
|
717
|
+
}
|
|
718
|
+
const allowed = [...new Set(policy.allowedSkillNames.map((entry) => entry.trim()).filter(Boolean))];
|
|
719
|
+
if (allowed.length === 0) {
|
|
720
|
+
return NO_PENDING_SKILL_DENIAL;
|
|
721
|
+
}
|
|
722
|
+
if (!allowed.includes(name)) {
|
|
723
|
+
if (recipeBound) return `context: this agent run may load only its declared skill(s): ${allowed.join(", ")}.`;
|
|
724
|
+
if (policy.carriedSurface === true) return NO_PENDING_SKILL_DENIAL;
|
|
725
|
+
return `context: this turn has pending skill request(s): ${allowed.join(", ")}. Load only those before doing anything else.`;
|
|
726
|
+
}
|
|
727
|
+
if (policy.loadedSkillNames.has(name)) {
|
|
728
|
+
if (recipeBound) return `context: skill ${name} is already loaded in this run; continue with its workflow.`;
|
|
729
|
+
const window = policy.carriedSurface === true ? "in this session" : "this turn";
|
|
730
|
+
return `context: pending skill ${name} already loaded ${window}; continue with the loaded workflow and call ask_user if an interview/choice is needed.`;
|
|
731
|
+
}
|
|
732
|
+
return null;
|
|
733
|
+
}
|
|
734
|
+
function pendingSkillRequestFor(name, options) {
|
|
735
|
+
return options?.pendingSkillPolicy?.requests.find((request) => request.name === name) ?? null;
|
|
736
|
+
}
|
|
737
|
+
function operatorRequestedManualSkill(skill, request) {
|
|
738
|
+
return skill.trusted && skill.disableModelInvocation && request?.installed === true && (request.source === "slash-command" || request.source === "selector");
|
|
739
|
+
}
|
|
740
|
+
function renderPendingSkillTask(name, options) {
|
|
741
|
+
const request = pendingSkillRequestFor(name, options);
|
|
742
|
+
if (!request) return [];
|
|
743
|
+
if (request.source === "recipe") return [];
|
|
744
|
+
const task = request.args.trim();
|
|
745
|
+
const lines = [
|
|
746
|
+
"Pending skill request",
|
|
747
|
+
`name: ${request.name}`,
|
|
748
|
+
`source: ${request.source}`,
|
|
749
|
+
`task: ${task.length > 0 ? task : "(none supplied)"}`
|
|
750
|
+
];
|
|
751
|
+
if (task.length > 0) {
|
|
752
|
+
lines.push(
|
|
753
|
+
"",
|
|
754
|
+
"Treat task as the user's starting subject for this skill workflow. Do not ask what the subject is again; ask_user only for missing follow-up decisions."
|
|
755
|
+
);
|
|
756
|
+
}
|
|
757
|
+
lines.push("");
|
|
758
|
+
return lines;
|
|
759
|
+
}
|
|
760
|
+
function marketplaceRowsFor(deps, installed, options) {
|
|
761
|
+
if (deps.skillMarketplace === false) return [];
|
|
762
|
+
if (deps.getSkillLoaderOptions?.().disableDiscovery === true) return [];
|
|
763
|
+
const policy = options?.pendingSkillPolicy;
|
|
764
|
+
if (policy && policyIsRecipeBound(policy)) return [];
|
|
765
|
+
const installedNames = installedSkillNames(installed, cwdFromDeps(deps));
|
|
766
|
+
try {
|
|
767
|
+
return discoverMarketplaceSkills({ cwd: cwdFromDeps(deps) }).skills.filter(
|
|
768
|
+
(entry) => !installedNames.has(entry.name)
|
|
769
|
+
);
|
|
770
|
+
} catch {
|
|
771
|
+
return [];
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
function renderSkillsList(skills, marketplace, marketplaceOffered, modelActivation, packages = []) {
|
|
775
|
+
if (skills.length === 0 && marketplace.length === 0 && packages.length === 0) {
|
|
776
|
+
return marketplaceOffered ? "No skills are available in Clio and no additional marketplace skills were found." : "No skills are available in Clio.";
|
|
777
|
+
}
|
|
778
|
+
const lines = ["Available skills.", ""];
|
|
779
|
+
const native = skills.filter((skill) => skill.source === "clio-coder" || skill.source === "plugin");
|
|
780
|
+
const discovered = skills.filter((skill) => skill.source !== "clio-coder" && skill.source !== "plugin");
|
|
781
|
+
lines.push(`Ready skills in Clio (${native.length}):`);
|
|
782
|
+
if (native.length === 0) lines.push("- none");
|
|
783
|
+
for (const skill of native) {
|
|
784
|
+
lines.push(`- ${skill.name} (source: ${skill.source}; scope: ${skill.scope}): ${skill.description}`);
|
|
785
|
+
}
|
|
786
|
+
if (discovered.length > 0) {
|
|
787
|
+
lines.push("", "Explicitly supplied session skills (not installed packages):");
|
|
788
|
+
for (const skill of discovered) {
|
|
789
|
+
lines.push(
|
|
790
|
+
`- ${skill.name} (source: ${skill.source}; scope: ${skill.scope}; file: ${skill.filePath}): ${skill.description}`
|
|
791
|
+
);
|
|
792
|
+
}
|
|
793
|
+
lines.push(
|
|
794
|
+
"These skills were explicitly supplied for this session. Preserve their source; session availability does not mean Clio installed or copied them."
|
|
795
|
+
);
|
|
796
|
+
}
|
|
797
|
+
if (packages.length > 0) {
|
|
798
|
+
lines.push("", `Installed packages providing skills (${packages.length}):`);
|
|
799
|
+
for (const pkg of packages)
|
|
800
|
+
lines.push(
|
|
801
|
+
`- ${pkg.name} (scope: ${pkg.scope}; origin: ${pkg.origin === "catalog" ? "marketplace catalog" : pkg.origin}; state: ${pkg.state}; path: ${pkg.path})`
|
|
802
|
+
);
|
|
803
|
+
}
|
|
804
|
+
lines.push(
|
|
805
|
+
"",
|
|
806
|
+
"Other-agent skill folders are discovery-only. Explicitly import into Clio before use; the trust-imports setting does not install or activate loose files."
|
|
807
|
+
);
|
|
808
|
+
if (marketplace.length > 0) {
|
|
809
|
+
lines.push("", "Marketplace (additional skills available to install; /skill <name> offers to install):");
|
|
810
|
+
for (const entry of marketplace) {
|
|
811
|
+
const category = entry.category ? ` [${entry.category}]` : "";
|
|
812
|
+
lines.push(`- ${entry.name}${category}: ${entry.description}`);
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
lines.push(
|
|
816
|
+
"",
|
|
817
|
+
modelActivation ? `If one skill above matches the current task, load it now with context(scope="skills", name="<name>") and continue in the same turn; at this autonomy level you activate installed skills yourself and do not wait for the operator. Marketplace additions still require operator approval. If none match, do not mention skills.` : `If one skill above matches the current task, begin your reply with the line \`${SKILL_SUGGESTION_ANCHOR}\` (a comma-separated sequence, in order, when several compose), then continue the task in the same turn without it; only the operator can run it. If none match, do not mention skills.`
|
|
818
|
+
);
|
|
819
|
+
if (marketplace.length > 0) {
|
|
820
|
+
lines.push(
|
|
821
|
+
`When no installed skill serves the task but a marketplace skill above genuinely does, you may instead ask the operator with ask_user (mode=single_question, header "Install skill") whether to install it, offering exactly: "${SKILL_INSTALL_OFFER_OPTION_PROJECT}", "${SKILL_INSTALL_OFFER_OPTION_USER}", "${SKILL_INSTALL_OFFER_OPTION_NOT_NOW}", "${SKILL_INSTALL_OFFER_OPTION_NEVER}". The harness handles those exact offer options. An explicit operator request or approval also authorizes the documented library install CLI. After installation, refresh the inventory; distinguish installed from ready and report /library reload when required.`
|
|
822
|
+
);
|
|
823
|
+
}
|
|
824
|
+
return lines.join("\n");
|
|
825
|
+
}
|
|
826
|
+
function runWorkspaceScope(deps, reservation, options) {
|
|
827
|
+
const workspace = deps.workspace;
|
|
828
|
+
if (!workspace?.hasSession()) {
|
|
829
|
+
return { kind: "error", message: "context: workspace scope requires a bound session; none is active here" };
|
|
830
|
+
}
|
|
831
|
+
let snap = workspace.getSnapshot();
|
|
832
|
+
if (!snap) {
|
|
833
|
+
snap = workspace.probeWorkspace();
|
|
834
|
+
workspace.saveSnapshot(snap);
|
|
835
|
+
}
|
|
836
|
+
const payload = {
|
|
837
|
+
...withSkillsPointer(deps, snap),
|
|
838
|
+
...deps.getSettings ? { configuration: 'For current autonomy, limits, and configuration guidance, call context(scope="settings").' } : {}
|
|
839
|
+
};
|
|
840
|
+
return finalizeObservation({
|
|
841
|
+
tool: ToolNames.Context,
|
|
842
|
+
unit: "results",
|
|
843
|
+
format: "json",
|
|
844
|
+
output: JSON.stringify(payload, null, 2),
|
|
845
|
+
shownCount: 1,
|
|
846
|
+
totalCount: 1,
|
|
847
|
+
truncated: false,
|
|
848
|
+
reservation,
|
|
849
|
+
...options ? { options } : {}
|
|
850
|
+
});
|
|
851
|
+
}
|
|
852
|
+
function withSkillsPointer(deps, snap) {
|
|
853
|
+
let installed = 0;
|
|
854
|
+
let installable = 0;
|
|
855
|
+
try {
|
|
856
|
+
const list = loadSkills({ cwd: cwdFromDeps(deps), ...deps.getSkillLoaderOptions?.() ?? {} });
|
|
857
|
+
const visible = modelVisibleSkills(list.items);
|
|
858
|
+
installed = visible.length;
|
|
859
|
+
installable = marketplaceRowsFor(deps, visible, void 0).length;
|
|
860
|
+
} catch {
|
|
861
|
+
return { ...snap };
|
|
862
|
+
}
|
|
863
|
+
if (installed === 0 && installable === 0) return { ...snap };
|
|
864
|
+
return {
|
|
865
|
+
...snap,
|
|
866
|
+
skills: `Skills: ${installed} available in Clio (ready workflows, not a marketplace installation count), ${installable} installable from the marketplace. If one matches this task, or the operator names a skill, list them with context(scope="skills") and suggest /skill <name> to the operator; load only on operator request.`
|
|
867
|
+
};
|
|
868
|
+
}
|
|
869
|
+
function runDocsScope(args, reservation, options, toolName = ToolNames.Context) {
|
|
870
|
+
const query = typeof args.query === "string" ? args.query.trim() : "";
|
|
871
|
+
if (query.length === 0) {
|
|
872
|
+
const corpus = listDocsCorpus();
|
|
873
|
+
if (!corpus.ok) return { kind: "error", message: `${toolName}: ${corpus.message}` };
|
|
874
|
+
return finalizeObservation({
|
|
875
|
+
tool: toolName,
|
|
876
|
+
unit: "entries",
|
|
877
|
+
format: "json",
|
|
878
|
+
output: JSON.stringify(corpus.payload),
|
|
879
|
+
shownCount: corpus.fileCount,
|
|
880
|
+
totalCount: corpus.fileCount,
|
|
881
|
+
truncated: false,
|
|
882
|
+
reservation,
|
|
883
|
+
...options ? { options } : {}
|
|
884
|
+
});
|
|
885
|
+
}
|
|
886
|
+
const outcome = searchDocs(query, args.limit);
|
|
887
|
+
if (!outcome.ok) return { kind: "error", message: `${toolName}: ${outcome.message}` };
|
|
888
|
+
return finalizeObservation({
|
|
889
|
+
tool: toolName,
|
|
890
|
+
unit: "sections",
|
|
891
|
+
format: "json",
|
|
892
|
+
output: JSON.stringify(outcome.payload),
|
|
893
|
+
shownCount: outcome.resultCount,
|
|
894
|
+
totalCount: outcome.rankedTotal,
|
|
895
|
+
truncated: outcome.resultCount < outcome.rankedTotal,
|
|
896
|
+
...outcome.next !== null ? { next: outcome.next } : {},
|
|
897
|
+
reservation,
|
|
898
|
+
...options ? { options } : {}
|
|
899
|
+
});
|
|
900
|
+
}
|
|
901
|
+
function runSkillsScope(deps, args, reservation, options) {
|
|
902
|
+
const name = typeof args.name === "string" ? args.name.trim() : "";
|
|
903
|
+
if (name.length === 0) {
|
|
904
|
+
const list2 = loadSkills({ cwd: cwdFromDeps(deps), ...deps.getSkillLoaderOptions?.() ?? {} });
|
|
905
|
+
const visible2 = modelVisibleSkills(list2.items);
|
|
906
|
+
const marketplace = marketplaceRowsFor(deps, list2.items, options);
|
|
907
|
+
const packages = deps.skillMarketplace === false || deps.getSkillLoaderOptions?.().disableDiscovery === true ? [] : installedSkillPackages(
|
|
908
|
+
list2.items,
|
|
909
|
+
cwdFromDeps(deps),
|
|
910
|
+
deps.getSkillLoaderOptions?.().trustProjectCompatRoots === true
|
|
911
|
+
);
|
|
912
|
+
const rendered = renderSkillsList(
|
|
913
|
+
visible2,
|
|
914
|
+
marketplace,
|
|
915
|
+
deps.skillMarketplace !== false,
|
|
916
|
+
options?.pendingSkillPolicy?.modelActivation === true,
|
|
917
|
+
packages
|
|
918
|
+
);
|
|
919
|
+
const truncation2 = truncateHead(rendered, { maxBytes: reservation.callCapBytes, maxLines: Number.MAX_SAFE_INTEGER });
|
|
920
|
+
const total = visible2.length + marketplace.length + packages.length;
|
|
921
|
+
return finalizeObservation({
|
|
922
|
+
tool: ToolNames.Context,
|
|
923
|
+
unit: "entries",
|
|
924
|
+
output: truncation2.content,
|
|
925
|
+
...truncation2.truncated ? { fullOutput: rendered } : {},
|
|
926
|
+
shownCount: total,
|
|
927
|
+
totalCount: total,
|
|
928
|
+
truncated: truncation2.truncated,
|
|
929
|
+
details: {
|
|
930
|
+
skills: visible2.map((skill2) => ({
|
|
931
|
+
name: skill2.name,
|
|
932
|
+
scope: skill2.scope,
|
|
933
|
+
source: skill2.source,
|
|
934
|
+
path: skill2.filePath
|
|
935
|
+
})),
|
|
936
|
+
installedPackages: packages,
|
|
937
|
+
marketplace: marketplace.map((entry) => ({
|
|
938
|
+
name: entry.name,
|
|
939
|
+
...entry.category ? { category: entry.category } : {}
|
|
940
|
+
}))
|
|
941
|
+
},
|
|
942
|
+
reservation,
|
|
943
|
+
...options ? { options } : {}
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
const policyError = pendingSkillPolicyError(name, options);
|
|
947
|
+
if (policyError) return { kind: "error", message: policyError };
|
|
948
|
+
const list = loadSkills({ cwd: cwdFromDeps(deps), ...deps.getSkillLoaderOptions?.() ?? {} });
|
|
949
|
+
const visible = modelVisibleSkills(list.items);
|
|
950
|
+
const pendingRequest = pendingSkillRequestFor(name, options);
|
|
951
|
+
const skill = visible.find((item) => item.name === name) ?? list.items.find((item) => item.name === name && operatorRequestedManualSkill(item, pendingRequest));
|
|
952
|
+
if (!skill) {
|
|
953
|
+
if (deps.skillMarketplace !== false && deps.getSkillLoaderOptions?.().disableDiscovery !== true) {
|
|
954
|
+
const installed = installedSkillPackages(
|
|
955
|
+
list.items,
|
|
956
|
+
cwdFromDeps(deps),
|
|
957
|
+
deps.getSkillLoaderOptions?.().trustProjectCompatRoots === true
|
|
958
|
+
).find((pkg) => pkg.names.includes(name));
|
|
959
|
+
if (installed && installed.state !== "ready")
|
|
960
|
+
return {
|
|
961
|
+
kind: "error",
|
|
962
|
+
message: `context: skill "${name}" is installed in ${installed.scope} scope but ${installed.state}. Inspect it in /library; do not reinstall it.`
|
|
963
|
+
};
|
|
964
|
+
}
|
|
965
|
+
const unavailable = list.items.find((item) => item.name === name);
|
|
966
|
+
if (unavailable) {
|
|
967
|
+
return {
|
|
968
|
+
kind: "error",
|
|
969
|
+
message: unavailable.trusted ? `context: skill "${name}" requires explicit operator activation with /skill ${name}; it disables model invocation. Do not retry this load.` : unavailable.source === "plugin" ? `context: skill "${name}" is imported but untrusted. Review it in /library, then enable integrations.projectResources.trustProjectImports to use it. Do not retry this load.` : `context: skill "${name}" is discovered in ${unavailable.source}/${unavailable.scope}, not imported into Clio. Use interop adopt or library import explicitly; the trust setting alone does not activate it. Do not retry this load.`
|
|
970
|
+
};
|
|
971
|
+
}
|
|
972
|
+
const installable = marketplaceRowsFor(deps, list.items, options).some((entry) => entry.name === name);
|
|
973
|
+
if (installable) {
|
|
974
|
+
return {
|
|
975
|
+
kind: "error",
|
|
976
|
+
message: `context: skill "${name}" is not installed; it is available in the marketplace. If installation has not been declined, offer /skill ${name} to install it. If the operator chose Not now or Cancel, continue without this skill and do not offer it again. Do not retry this load.`
|
|
977
|
+
};
|
|
978
|
+
}
|
|
979
|
+
const available = visible.map((item) => item.name).join(", ");
|
|
980
|
+
const suffix = available.length > 0 ? ` Available skills: ${available}.` : " No skills are currently available.";
|
|
981
|
+
return { kind: "error", message: `context: unknown skill "${name}".${suffix}` };
|
|
982
|
+
}
|
|
983
|
+
const includeTree = args.include_tree === true;
|
|
984
|
+
const tree = includeTree ? buildResourceTree(skill.baseDir, DEFAULT_TREE_ENTRIES) : null;
|
|
985
|
+
const pendingTask = pendingRequest?.args.trim() ?? "";
|
|
986
|
+
const driftReport = checkSkillDrift(skill, cwdFromDeps(deps));
|
|
987
|
+
const drift = driftReport?.verdict ?? null;
|
|
988
|
+
const driftWarning = driftReport?.verdict === "mismatch" ? `WARNING skill_drift: '${skill.name}' content (sha256 ${skill.hash.slice(0, 12)}\u2026) no longer matches the hash recorded for it ${driftReport.authority === "pinned-manifest" ? "in the audited skill catalog" : "when it was installed on this machine"} (expected ${driftReport.expected.slice(0, 12)}\u2026); the installed skill drifted from the content it claims to be.` : null;
|
|
989
|
+
const body = [
|
|
990
|
+
...driftWarning !== null ? [driftWarning] : [],
|
|
991
|
+
...renderPendingSkillTask(name, options),
|
|
992
|
+
...skillExecutionFrame(skill, cwdFromDeps(deps)),
|
|
993
|
+
renderSkillBody(skill, tree)
|
|
994
|
+
].join("\n");
|
|
995
|
+
const pendingPolicy = options?.pendingSkillPolicy;
|
|
996
|
+
if (pendingPolicy) {
|
|
997
|
+
pendingPolicy.loadedSkillNames.add(name);
|
|
998
|
+
pendingPolicy.loadedSkillPolicies.set(name, {
|
|
999
|
+
...skill.allowedTools ? { allowedTools: skill.allowedTools } : {},
|
|
1000
|
+
...skill.disallowedTools ? { disallowedTools: skill.disallowedTools } : {}
|
|
1001
|
+
});
|
|
1002
|
+
}
|
|
1003
|
+
const truncation = truncateHead(body, { maxBytes: reservation.callCapBytes, maxLines: Number.MAX_SAFE_INTEGER });
|
|
1004
|
+
return finalizeObservation({
|
|
1005
|
+
tool: ToolNames.Context,
|
|
1006
|
+
unit: "sections",
|
|
1007
|
+
output: truncation.content,
|
|
1008
|
+
...truncation.truncated ? { fullOutput: body } : {},
|
|
1009
|
+
shownCount: 1,
|
|
1010
|
+
totalCount: 1,
|
|
1011
|
+
truncated: truncation.truncated,
|
|
1012
|
+
details: {
|
|
1013
|
+
name: skill.name,
|
|
1014
|
+
description: skill.description,
|
|
1015
|
+
...pendingTask.length > 0 ? { pendingTask } : {},
|
|
1016
|
+
path: skill.filePath,
|
|
1017
|
+
baseDir: skill.baseDir,
|
|
1018
|
+
hash: skill.hash,
|
|
1019
|
+
source: skill.source,
|
|
1020
|
+
sourceOrigin: skillSourceOrigin(skill),
|
|
1021
|
+
sourceInfo: skill.sourceInfo,
|
|
1022
|
+
scope: skill.scope,
|
|
1023
|
+
disableModelInvocation: skill.disableModelInvocation,
|
|
1024
|
+
...skill.allowedTools ? { allowedTools: skill.allowedTools } : {},
|
|
1025
|
+
...skill.disallowedTools ? { disallowedTools: skill.disallowedTools } : {},
|
|
1026
|
+
diagnostics: skill.diagnostics.map((d) => d.message),
|
|
1027
|
+
metadata: skill.metadata,
|
|
1028
|
+
...skill.provenance ? { provenance: skill.provenance } : {},
|
|
1029
|
+
...drift !== null ? { drift } : {},
|
|
1030
|
+
...tree ? { tree } : {}
|
|
1031
|
+
},
|
|
1032
|
+
reservation,
|
|
1033
|
+
...options ? { options } : {}
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1036
|
+
function runRecallScope(deps, args, reservation, options) {
|
|
1037
|
+
if (deps.workerRecall) {
|
|
1038
|
+
const result2 = deps.workerRecall(args);
|
|
1039
|
+
if ("error" in result2) return { kind: "error", message: `context: ${result2.error}` };
|
|
1040
|
+
const truncated = truncateHead(result2.body, {
|
|
1041
|
+
maxBytes: reservation.callCapBytes,
|
|
1042
|
+
maxLines: Number.MAX_SAFE_INTEGER
|
|
1043
|
+
});
|
|
1044
|
+
return finalizeObservation({
|
|
1045
|
+
tool: ToolNames.Context,
|
|
1046
|
+
unit: "results",
|
|
1047
|
+
output: truncated.content,
|
|
1048
|
+
...truncated.truncated ? { fullOutput: result2.body } : {},
|
|
1049
|
+
shownCount: result2.shown,
|
|
1050
|
+
totalCount: result2.total,
|
|
1051
|
+
truncated: truncated.truncated || result2.nextOffset !== void 0,
|
|
1052
|
+
details: { workerRecall: { ref: args.ref ?? null, nextOffset: result2.nextOffset ?? null } },
|
|
1053
|
+
reservation,
|
|
1054
|
+
...options ? { options } : {}
|
|
1055
|
+
});
|
|
1056
|
+
}
|
|
1057
|
+
const session = deps.session;
|
|
1058
|
+
if (!session?.hasSession()) {
|
|
1059
|
+
return { kind: "error", message: "context: recall scope requires a bound session; none is active here" };
|
|
1060
|
+
}
|
|
1061
|
+
const ref = typeof args.ref === "string" ? args.ref.trim() : "";
|
|
1062
|
+
const entries = session.readEntries();
|
|
1063
|
+
const leaf = session.activeLeafTurnId();
|
|
1064
|
+
const view = foldWorkingSet(entries, leaf);
|
|
1065
|
+
if (args.ref === void 0) {
|
|
1066
|
+
const listing = recallableRefListing(entries, view, {
|
|
1067
|
+
...leaf === void 0 ? {} : { activeLeafTurnId: leaf },
|
|
1068
|
+
...typeof args.query === "string" ? { query: args.query } : {},
|
|
1069
|
+
...typeof args.limit === "number" ? { limit: args.limit } : {},
|
|
1070
|
+
...typeof args.offset === "number" ? { offset: args.offset } : {}
|
|
1071
|
+
});
|
|
1072
|
+
const output = [
|
|
1073
|
+
...listing.refs,
|
|
1074
|
+
listing.nextOffset === void 0 ? "End of matching recallable refs." : `More matches: repeat this query with offset=${listing.nextOffset}.`,
|
|
1075
|
+
'Recall an exact persisted body with context(scope="recall", ref="<turnId>").'
|
|
1076
|
+
].join("\n");
|
|
1077
|
+
const truncation2 = truncateHead(output, { maxBytes: reservation.callCapBytes, maxLines: Number.MAX_SAFE_INTEGER });
|
|
1078
|
+
return finalizeObservation({
|
|
1079
|
+
tool: ToolNames.Context,
|
|
1080
|
+
unit: "results",
|
|
1081
|
+
output: truncation2.content,
|
|
1082
|
+
...truncation2.truncated ? { fullOutput: output } : {},
|
|
1083
|
+
shownCount: listing.refs.length,
|
|
1084
|
+
totalCount: listing.total,
|
|
1085
|
+
truncated: truncation2.truncated || listing.remaining > 0,
|
|
1086
|
+
details: { recallDiscovery: listing },
|
|
1087
|
+
reservation,
|
|
1088
|
+
...options ? { options } : {}
|
|
1089
|
+
});
|
|
1090
|
+
}
|
|
1091
|
+
const resolved = resolveRecall(entries, view, ref, leaf);
|
|
1092
|
+
if (!resolved.ok)
|
|
1093
|
+
return { kind: "error", message: `context: ${recallErrorMessage(resolved.error, entries, view, leaf)}` };
|
|
1094
|
+
const { result } = resolved;
|
|
1095
|
+
const fields = buildRecallFields(result, {
|
|
1096
|
+
trigger: "tool",
|
|
1097
|
+
...options?.toolCallId ? { toolCallId: options.toolCallId } : {}
|
|
1098
|
+
});
|
|
1099
|
+
const parentTurnId = recallParentTurnId(entries, leaf);
|
|
1100
|
+
let recorded;
|
|
1101
|
+
try {
|
|
1102
|
+
recorded = session.appendEntry({ ...fields, parentTurnId });
|
|
1103
|
+
} catch (err) {
|
|
1104
|
+
return {
|
|
1105
|
+
kind: "error",
|
|
1106
|
+
message: `context: recall of ${result.ref.entry} could not be recorded: ${err instanceof Error ? err.message : String(err)}`
|
|
1107
|
+
};
|
|
1108
|
+
}
|
|
1109
|
+
session.onRecalled?.({ ref: result.ref.entry, trigger: "tool", tokensReadmitted: result.tokens, at: Date.now() });
|
|
1110
|
+
const evictedState = view.evicted.get(result.ref.entry);
|
|
1111
|
+
const truncation = truncateHead(result.body, {
|
|
1112
|
+
maxBytes: reservation.callCapBytes,
|
|
1113
|
+
maxLines: Number.MAX_SAFE_INTEGER
|
|
1114
|
+
});
|
|
1115
|
+
return finalizeObservation({
|
|
1116
|
+
tool: ToolNames.Context,
|
|
1117
|
+
unit: "results",
|
|
1118
|
+
output: truncation.content,
|
|
1119
|
+
...truncation.truncated ? { fullOutput: result.body } : {},
|
|
1120
|
+
shownCount: 1,
|
|
1121
|
+
totalCount: 1,
|
|
1122
|
+
truncated: truncation.truncated,
|
|
1123
|
+
details: {
|
|
1124
|
+
recall: {
|
|
1125
|
+
ref: result.ref.entry,
|
|
1126
|
+
state: result.state,
|
|
1127
|
+
tokensReadmitted: result.tokens,
|
|
1128
|
+
recallTurnId: recorded.turnId,
|
|
1129
|
+
...evictedState ? { reason: evictedState.reason, evictedAtTurnId: evictedState.evictedAtTurnId } : {},
|
|
1130
|
+
...result.offloadPath !== void 0 ? { offloadPath: result.offloadPath } : {}
|
|
1131
|
+
}
|
|
1132
|
+
},
|
|
1133
|
+
reservation,
|
|
1134
|
+
...options ? { options } : {}
|
|
1135
|
+
});
|
|
1136
|
+
}
|
|
1137
|
+
function createContextTool(deps = {}) {
|
|
1138
|
+
return {
|
|
1139
|
+
...contextToolSurface,
|
|
1140
|
+
async run(args, options) {
|
|
1141
|
+
const scope = typeof args.scope === "string" ? args.scope : "";
|
|
1142
|
+
if (scope === "docs" || scope === "library") {
|
|
1143
|
+
const capability = scope === "docs" ? ToolNames.ClioDocs : ToolNames.ClioLibrary;
|
|
1144
|
+
return {
|
|
1145
|
+
kind: "error",
|
|
1146
|
+
message: `context: scope "${scope}" is a gateway capability now: call gateway(op="call", capability="${capability}", args={...}) or gateway(op="describe", capability="${capability}") for its arguments.`
|
|
1147
|
+
};
|
|
1148
|
+
}
|
|
1149
|
+
if (scope !== "workspace" && scope !== "settings" && scope !== "skills" && scope !== "recall") {
|
|
1150
|
+
return {
|
|
1151
|
+
kind: "error",
|
|
1152
|
+
message: `context: scope must be workspace, settings, skills, or recall; got '${scope}'`
|
|
1153
|
+
};
|
|
1154
|
+
}
|
|
1155
|
+
const selfCap = scope === "skills" ? OBSERVE_SELF_CAPS.contextSkills : OBSERVE_SELF_CAPS.contextWorkspace;
|
|
1156
|
+
const reservation = reserveObservation(selfCap, options);
|
|
1157
|
+
if (reservation.exhausted) {
|
|
1158
|
+
return observationBudgetExhausted({
|
|
1159
|
+
tool: ToolNames.Context,
|
|
1160
|
+
unit: scope === "skills" ? "entries" : "results",
|
|
1161
|
+
reservation,
|
|
1162
|
+
subject: `scope=${scope}`,
|
|
1163
|
+
hint: "Continue in a follow-up turn."
|
|
1164
|
+
});
|
|
1165
|
+
}
|
|
1166
|
+
if (scope === "settings") {
|
|
1167
|
+
if (!deps.getSettings)
|
|
1168
|
+
return {
|
|
1169
|
+
kind: "error",
|
|
1170
|
+
message: "An authoritative live settings snapshot is unavailable in this run. Ask the user to open /settings or run clio-coder config inspect; do not infer current limits from defaults."
|
|
1171
|
+
};
|
|
1172
|
+
const offset = args.offset === void 0 ? 0 : args.offset;
|
|
1173
|
+
const limit = args.limit === void 0 ? 12 : args.limit;
|
|
1174
|
+
if (typeof offset !== "number" || !Number.isSafeInteger(offset) || offset < 0 || typeof limit !== "number" || !Number.isSafeInteger(limit) || limit < 1 || limit > 12)
|
|
1175
|
+
return { kind: "error", message: "Use a non-negative integer offset and a limit from 1 to 12." };
|
|
1176
|
+
const snapshot = settingsAwareness(
|
|
1177
|
+
deps.getSettings(),
|
|
1178
|
+
typeof args.query === "string" ? args.query : "",
|
|
1179
|
+
offset,
|
|
1180
|
+
limit
|
|
1181
|
+
);
|
|
1182
|
+
return finalizeObservation({
|
|
1183
|
+
tool: ToolNames.Context,
|
|
1184
|
+
unit: "entries",
|
|
1185
|
+
format: "json",
|
|
1186
|
+
output: JSON.stringify(snapshot, null, 2),
|
|
1187
|
+
shownCount: snapshot.rows.length,
|
|
1188
|
+
totalCount: snapshot.total,
|
|
1189
|
+
truncated: snapshot.nextOffset !== null,
|
|
1190
|
+
reservation,
|
|
1191
|
+
...options ? { options } : {}
|
|
1192
|
+
});
|
|
1193
|
+
}
|
|
1194
|
+
if (scope === "workspace") return runWorkspaceScope(deps, reservation, options);
|
|
1195
|
+
if (scope === "recall") return runRecallScope(deps, args, reservation, options);
|
|
1196
|
+
return runSkillsScope(deps, args, reservation, options);
|
|
1197
|
+
}
|
|
1198
|
+
};
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
export {
|
|
1202
|
+
runDocsScope,
|
|
1203
|
+
createContextTool
|
|
1204
|
+
};
|
|
1205
|
+
//# sourceMappingURL=chunk-TGWZXJ7L.js.map
|