@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,653 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The operator command catalog, projected onto ACP.
|
|
3
|
+
*
|
|
4
|
+
* Two methods ride the `_meta` seam: `clio-coder/commands/list` hands a client
|
|
5
|
+
* the grammar it needs to build an argument UI, and
|
|
6
|
+
* `clio-coder/commands/invoke` runs one of them headlessly. Neither adds a
|
|
7
|
+
* `sessionUpdate` kind or a top-level response field, so protocolVersion stays
|
|
8
|
+
* at 1.
|
|
9
|
+
*
|
|
10
|
+
* The registry in `src/interactive/slash-commands.ts` owns 40 commands. Most of
|
|
11
|
+
* them exist to open a full-screen overlay and have no result a wire client
|
|
12
|
+
* could render, and several reach `ctx.keyboardActions`, which a process with
|
|
13
|
+
* no TUI does not have. So this module does not forward what a client asks for:
|
|
14
|
+
* it forwards what {@link ACP_COMMAND_RULES} names, and refuses everything
|
|
15
|
+
* else before a line is ever handed to the parser. An allowlist is the whole
|
|
16
|
+
* security posture here, because `dispatchSlashCommand` on peer-chosen text
|
|
17
|
+
* would reach `/quit`, `/archive import --force`, and the editor.
|
|
18
|
+
*/
|
|
19
|
+
import type { PendingSkillRequest } from "../../core/skill-activation.js";
|
|
20
|
+
import type { NoticeLevel } from "../../interactive/command-output.js";
|
|
21
|
+
import type { SlashCommand, SlashCommandContext, SlashCommandKind } from "../../interactive/slash-commands.js";
|
|
22
|
+
import {
|
|
23
|
+
BUILTIN_SLASH_COMMANDS,
|
|
24
|
+
commandReference,
|
|
25
|
+
dispatchSlashCommand,
|
|
26
|
+
parseSlashCommand,
|
|
27
|
+
} from "../../interactive/slash-commands.js";
|
|
28
|
+
import type { CommandArgsSpec, CommandFlagSpec, CommandPositionalSpec } from "../../interactive/slash-spec.js";
|
|
29
|
+
import { AcpRequestError } from "./errors.js";
|
|
30
|
+
import { ACP_COMMANDS_INVOKE_METHOD, ACP_COMMANDS_LIST_METHOD, ACP_COMMANDS_META_KEY } from "./types.js";
|
|
31
|
+
|
|
32
|
+
export { ACP_COMMANDS_INVOKE_METHOD, ACP_COMMANDS_LIST_METHOD, ACP_COMMANDS_META_KEY };
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Bounds on the catalog and on one invocation's result (CONTRACT C001 §3).
|
|
36
|
+
* A client renders every line it receives; a command that streams a worker's
|
|
37
|
+
* output through `io.stderr` can produce thousands of them, and a `values`
|
|
38
|
+
* array comes from a settings-derived list that grows with the install.
|
|
39
|
+
*/
|
|
40
|
+
const ACP_MAX_COMMAND_NAME_BYTES = 64;
|
|
41
|
+
const ACP_MAX_COMMAND_TEXT_BYTES = 512;
|
|
42
|
+
const ACP_MAX_COMMAND_VALUES = 64;
|
|
43
|
+
const ACP_MAX_COMMAND_FLAGS = 32;
|
|
44
|
+
const ACP_MAX_COMMAND_POSITIONALS = 8;
|
|
45
|
+
const ACP_MAX_COMMAND_SUBCOMMANDS = 16;
|
|
46
|
+
const ACP_MAX_COMMAND_ARGV = 32;
|
|
47
|
+
const ACP_MAX_COMMAND_ARGV_BYTES = 4096;
|
|
48
|
+
const ACP_MAX_COMMAND_RESULT_LINES = 200;
|
|
49
|
+
const ACP_MAX_COMMAND_RESULT_LINE_BYTES = 1024;
|
|
50
|
+
|
|
51
|
+
const ACP_TRUNCATION_SUFFIX = "…[truncated]";
|
|
52
|
+
|
|
53
|
+
/** UTF-8-safe prefix; `Buffer.write` stops before a partial sequence, so no lone surrogate escapes. */
|
|
54
|
+
function bounded(value: string, maxBytes: number): string {
|
|
55
|
+
if (Buffer.byteLength(value, "utf8") <= maxBytes) return value;
|
|
56
|
+
const budget = maxBytes - Buffer.byteLength(ACP_TRUNCATION_SUFFIX, "utf8");
|
|
57
|
+
if (budget <= 0) {
|
|
58
|
+
const flat = Buffer.allocUnsafe(maxBytes);
|
|
59
|
+
return flat.toString("utf8", 0, flat.write(value, 0, maxBytes, "utf8"));
|
|
60
|
+
}
|
|
61
|
+
const buffer = Buffer.allocUnsafe(budget);
|
|
62
|
+
return `${buffer.toString("utf8", 0, buffer.write(value, 0, budget, "utf8"))}${ACP_TRUNCATION_SUFFIX}`;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* How a command behaves once it is running, beyond its return value. Both
|
|
67
|
+
* flags exist because the honest answer is "this control does something you
|
|
68
|
+
* will not see here", and a client that does not know that renders a button
|
|
69
|
+
* that looks broken.
|
|
70
|
+
*/
|
|
71
|
+
export interface AcpCommandRule {
|
|
72
|
+
name: string;
|
|
73
|
+
/**
|
|
74
|
+
* Only these subcommands are admitted. Present for the three commands whose
|
|
75
|
+
* bare form opens an overlay (`/context`, `/tasks`, `/memory`): the verbs are
|
|
76
|
+
* wire-shaped, the browser they share a name with is not.
|
|
77
|
+
*/
|
|
78
|
+
subcommands?: ReadonlyArray<string>;
|
|
79
|
+
/**
|
|
80
|
+
* The command dispatches a worker and returns before it finishes. Its result
|
|
81
|
+
* is "started"; everything interesting arrives as `clio-coder/event` dispatch
|
|
82
|
+
* kinds. A client not consuming those sees a control that appears to do
|
|
83
|
+
* nothing.
|
|
84
|
+
*/
|
|
85
|
+
streams?: "dispatch";
|
|
86
|
+
/**
|
|
87
|
+
* The command puts operator-authored text into the session as a user turn,
|
|
88
|
+
* outside any `session/prompt`. A client will observe a turn it never
|
|
89
|
+
* prompted; that is the contract, not a protocol violation.
|
|
90
|
+
*/
|
|
91
|
+
injectsUserTurn?: true;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* The 13 commands whose whole result is text, plus the verbs of the three
|
|
96
|
+
* hub commands. Everything absent from this list is either TUI-bound (it
|
|
97
|
+
* reaches `keyboardActions`, an overlay, or the editor) or already reachable
|
|
98
|
+
* over ACP by other means, and is refused by name.
|
|
99
|
+
*/
|
|
100
|
+
export const ACP_COMMAND_RULES: ReadonlyArray<AcpCommandRule> = [
|
|
101
|
+
{ name: "mcp" },
|
|
102
|
+
{ name: "doctor" },
|
|
103
|
+
// `/share` and `/oracle` both end in `submitOperatorNote`.
|
|
104
|
+
{ name: "share", injectsUserTurn: true },
|
|
105
|
+
{ name: "archive" },
|
|
106
|
+
{ name: "run", streams: "dispatch" },
|
|
107
|
+
{ name: "delegate", streams: "dispatch" },
|
|
108
|
+
{ name: "oracle", streams: "dispatch", injectsUserTurn: true },
|
|
109
|
+
{ name: "council", streams: "dispatch" },
|
|
110
|
+
// `/skill <name>` submits the expanded skill as a user turn; `/skill off` does not.
|
|
111
|
+
{ name: "skill", injectsUserTurn: true },
|
|
112
|
+
{ name: "context", subcommands: ["compact", "recall", "init", "refresh", "reset"] },
|
|
113
|
+
// `/tasks hand` submits the handoff text as a user turn; add/done/drop do not.
|
|
114
|
+
{ name: "tasks", subcommands: ["add", "hand", "done", "drop"], injectsUserTurn: true },
|
|
115
|
+
{ name: "memory", subcommands: ["seed"] },
|
|
116
|
+
{ name: "export" },
|
|
117
|
+
];
|
|
118
|
+
|
|
119
|
+
/** Host capabilities required by each advertised operation. Grammar stays in the slash registry. */
|
|
120
|
+
const COMMAND_REQUIREMENTS: Record<string, ReadonlyArray<keyof AcpCommandHost>> = {
|
|
121
|
+
doctor: ["runDoctor"],
|
|
122
|
+
share: ["listWorkerRuns", "submitOperatorNote"],
|
|
123
|
+
archive: ["exportShareArchive", "importShareArchive"],
|
|
124
|
+
oracle: ["oracleBriefing", "submitOperatorNote"],
|
|
125
|
+
council: ["runCouncilDispatch", "getWorkerRosters"],
|
|
126
|
+
skill: ["submitTurn", "parsePendingSkillRequests", "clearSkillSurface"],
|
|
127
|
+
tasks: ["userTasks", "submitTurn"],
|
|
128
|
+
memory: ["seedTaskMemory"],
|
|
129
|
+
export: ["exportTranscript"],
|
|
130
|
+
};
|
|
131
|
+
const CONTEXT_REQUIREMENTS: Record<string, keyof AcpCommandHost> = {
|
|
132
|
+
compact: "runCompact",
|
|
133
|
+
recall: "runContextRecall",
|
|
134
|
+
init: "runInit",
|
|
135
|
+
refresh: "runContextRefresh",
|
|
136
|
+
reset: "runContextClear",
|
|
137
|
+
};
|
|
138
|
+
function availableRules(host?: AcpCommandHost): ReadonlyArray<AcpCommandRule> {
|
|
139
|
+
if (!host) return ACP_COMMAND_RULES;
|
|
140
|
+
return ACP_COMMAND_RULES.flatMap((rule) => {
|
|
141
|
+
if (!(COMMAND_REQUIREMENTS[rule.name] ?? []).every((key) => host[key] !== undefined)) return [];
|
|
142
|
+
if (rule.name !== "context") return [rule];
|
|
143
|
+
const subcommands =
|
|
144
|
+
rule.subcommands?.filter(
|
|
145
|
+
(name) => CONTEXT_REQUIREMENTS[name] !== undefined && host[CONTEXT_REQUIREMENTS[name]] !== undefined,
|
|
146
|
+
) ?? [];
|
|
147
|
+
return subcommands.length ? [{ ...rule, subcommands }] : [];
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const RULE_BY_NAME = new Map(ACP_COMMAND_RULES.map((rule) => [rule.name, rule]));
|
|
152
|
+
|
|
153
|
+
/** A registry name in the allowlist that the registry does not own is a build mistake, not a runtime one. */
|
|
154
|
+
for (const rule of ACP_COMMAND_RULES) {
|
|
155
|
+
if (!BUILTIN_SLASH_COMMANDS.some((entry) => entry.name === rule.name)) {
|
|
156
|
+
throw new Error(`ACP_COMMAND_RULES: "${rule.name}" is not a registered slash command`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export const ACP_COMMANDS_CAPABILITY = {
|
|
161
|
+
version: 1,
|
|
162
|
+
list: ACP_COMMANDS_LIST_METHOD,
|
|
163
|
+
invoke: ACP_COMMANDS_INVOKE_METHOD,
|
|
164
|
+
count: ACP_COMMAND_RULES.length,
|
|
165
|
+
} as const;
|
|
166
|
+
|
|
167
|
+
/* -------------------------------------------------------------------------- */
|
|
168
|
+
/* Catalog projection */
|
|
169
|
+
/* -------------------------------------------------------------------------- */
|
|
170
|
+
|
|
171
|
+
export interface AcpCommandFlagSpec {
|
|
172
|
+
name: string;
|
|
173
|
+
takesValue?: boolean;
|
|
174
|
+
repeatable?: boolean;
|
|
175
|
+
values?: string[];
|
|
176
|
+
valueName?: string;
|
|
177
|
+
completionSlot?: string;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export interface AcpCommandPositionalSpec {
|
|
181
|
+
name: string;
|
|
182
|
+
required: boolean;
|
|
183
|
+
values?: string[];
|
|
184
|
+
rest?: boolean;
|
|
185
|
+
completionSlot?: string;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export interface AcpCommandArgsSpec {
|
|
189
|
+
flags?: AcpCommandFlagSpec[];
|
|
190
|
+
positionals?: AcpCommandPositionalSpec[];
|
|
191
|
+
subcommands?: Record<string, AcpCommandArgsSpec>;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export interface AcpCommandDescriptor {
|
|
195
|
+
name: string;
|
|
196
|
+
summary: string;
|
|
197
|
+
/** The registry's own usage line, already rendered from the grammar below. */
|
|
198
|
+
usage: string;
|
|
199
|
+
group: string;
|
|
200
|
+
args: AcpCommandArgsSpec;
|
|
201
|
+
subcommandSummaries?: Record<string, string>;
|
|
202
|
+
/** The bare command is refused; only the projected subcommands are admitted. */
|
|
203
|
+
requiresSubcommand?: true;
|
|
204
|
+
streams?: "dispatch";
|
|
205
|
+
injectsUserTurn?: true;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export interface AcpCommandCatalog {
|
|
209
|
+
version: 1;
|
|
210
|
+
commands: AcpCommandDescriptor[];
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function projectValues(values: ReadonlyArray<string> | undefined): string[] | undefined {
|
|
214
|
+
if (values === undefined || values.length === 0) return undefined;
|
|
215
|
+
return values.slice(0, ACP_MAX_COMMAND_VALUES).map((value) => bounded(value, ACP_MAX_COMMAND_NAME_BYTES));
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function projectFlag(flag: CommandFlagSpec): AcpCommandFlagSpec {
|
|
219
|
+
const values = projectValues(flag.values);
|
|
220
|
+
return {
|
|
221
|
+
name: bounded(flag.name, ACP_MAX_COMMAND_NAME_BYTES),
|
|
222
|
+
...(flag.takesValue === true ? { takesValue: true } : {}),
|
|
223
|
+
...(flag.repeatable === true ? { repeatable: true } : {}),
|
|
224
|
+
...(values ? { values } : {}),
|
|
225
|
+
...(flag.valueName !== undefined ? { valueName: bounded(flag.valueName, ACP_MAX_COMMAND_NAME_BYTES) } : {}),
|
|
226
|
+
...(flag.completionSlot !== undefined ? { completionSlot: flag.completionSlot } : {}),
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
function projectPositional(positional: CommandPositionalSpec): AcpCommandPositionalSpec {
|
|
231
|
+
const values = projectValues(positional.values);
|
|
232
|
+
return {
|
|
233
|
+
name: bounded(positional.name, ACP_MAX_COMMAND_NAME_BYTES),
|
|
234
|
+
required: positional.required,
|
|
235
|
+
...(values ? { values } : {}),
|
|
236
|
+
...(positional.rest === true ? { rest: true } : {}),
|
|
237
|
+
...(positional.completionSlot !== undefined ? { completionSlot: positional.completionSlot } : {}),
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* The grammar, minus the two parser-internal switches. `parseFlagsBeforeRest`
|
|
243
|
+
* and `parseFlagsInRest` describe how this process tokenizes a line, and a
|
|
244
|
+
* client that never builds the line has no use for them; `invokeAcpCommand`
|
|
245
|
+
* takes argv and does the joining itself.
|
|
246
|
+
*
|
|
247
|
+
* `admitted` narrows the subcommand map to the verbs the allowlist exposes, so
|
|
248
|
+
* a palette built from this projection cannot offer a control the server will
|
|
249
|
+
* refuse.
|
|
250
|
+
*/
|
|
251
|
+
function projectArgs(spec: CommandArgsSpec | undefined, admitted?: ReadonlyArray<string>): AcpCommandArgsSpec {
|
|
252
|
+
if (spec === undefined) return {};
|
|
253
|
+
const flags = (spec.flags ?? []).slice(0, ACP_MAX_COMMAND_FLAGS).map(projectFlag);
|
|
254
|
+
const positionals = (spec.positionals ?? []).slice(0, ACP_MAX_COMMAND_POSITIONALS).map(projectPositional);
|
|
255
|
+
const subcommandEntries = Object.entries(spec.subcommands ?? {})
|
|
256
|
+
.filter(([name]) => admitted === undefined || admitted.includes(name))
|
|
257
|
+
.slice(0, ACP_MAX_COMMAND_SUBCOMMANDS);
|
|
258
|
+
const subcommands: Record<string, AcpCommandArgsSpec> = {};
|
|
259
|
+
for (const [name, sub] of subcommandEntries) {
|
|
260
|
+
subcommands[bounded(name, ACP_MAX_COMMAND_NAME_BYTES)] = projectArgs(sub);
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
...(flags.length > 0 ? { flags } : {}),
|
|
264
|
+
...(positionals.length > 0 ? { positionals } : {}),
|
|
265
|
+
...(subcommandEntries.length > 0 ? { subcommands } : {}),
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* The catalog a GUI palette builds its argument UI from. It is derived from
|
|
271
|
+
* `commandReference()` rather than from a second table, because a hand-written
|
|
272
|
+
* copy of 13 grammars drifts on the first flag anyone adds.
|
|
273
|
+
*/
|
|
274
|
+
export function acpCommandCatalog(host?: AcpCommandHost): AcpCommandCatalog {
|
|
275
|
+
const reference = new Map(commandReference().map((entry) => [entry.name, entry]));
|
|
276
|
+
const commands: AcpCommandDescriptor[] = [];
|
|
277
|
+
for (const rule of availableRules(host)) {
|
|
278
|
+
const entry = reference.get(rule.name);
|
|
279
|
+
if (entry === undefined) continue;
|
|
280
|
+
const summaries: Record<string, string> = {};
|
|
281
|
+
for (const [name, text] of Object.entries(entry.subcommandDescriptions ?? {})) {
|
|
282
|
+
if (rule.subcommands !== undefined && !rule.subcommands.includes(name)) continue;
|
|
283
|
+
summaries[bounded(name, ACP_MAX_COMMAND_NAME_BYTES)] = bounded(text, ACP_MAX_COMMAND_TEXT_BYTES);
|
|
284
|
+
}
|
|
285
|
+
commands.push({
|
|
286
|
+
name: bounded(entry.name, ACP_MAX_COMMAND_NAME_BYTES),
|
|
287
|
+
summary: bounded(entry.description, ACP_MAX_COMMAND_TEXT_BYTES),
|
|
288
|
+
usage: bounded(
|
|
289
|
+
rule.subcommands ? `/${entry.name} <${rule.subcommands.join("|")}> …` : entry.usage,
|
|
290
|
+
ACP_MAX_COMMAND_TEXT_BYTES,
|
|
291
|
+
),
|
|
292
|
+
group: entry.group,
|
|
293
|
+
args: projectArgs(entry.args, rule.subcommands),
|
|
294
|
+
...(Object.keys(summaries).length > 0 ? { subcommandSummaries: summaries } : {}),
|
|
295
|
+
...(rule.subcommands !== undefined ? { requiresSubcommand: true as const } : {}),
|
|
296
|
+
...(rule.streams !== undefined ? { streams: rule.streams } : {}),
|
|
297
|
+
...(rule.injectsUserTurn === true ? { injectsUserTurn: true as const } : {}),
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
return { version: 1, commands };
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/* -------------------------------------------------------------------------- */
|
|
304
|
+
/* Headless invocation */
|
|
305
|
+
/* -------------------------------------------------------------------------- */
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* What this process must supply for an allowlisted command to do its work.
|
|
309
|
+
*
|
|
310
|
+
* Three members are required because the composition root always has them and
|
|
311
|
+
* four commands dispatch through them. Everything else is optional in exactly
|
|
312
|
+
* the way `SlashCommandContext` already declares it optional: an absent member
|
|
313
|
+
* omits its command from the bound ACP catalog and refuses wire invocation.
|
|
314
|
+
* Direct slash dispatch retains the TUI-style not-wired diagnostic. The TUI-only members (`echoOperatorCommand`, `showReference`,
|
|
315
|
+
* `showDoctor`, `render`) are deliberately never supplied; each has a
|
|
316
|
+
* documented non-TUI fallback in the registry.
|
|
317
|
+
*/
|
|
318
|
+
export type AcpCommandHost = Pick<SlashCommandContext, "dispatch" | "bus" | "providers"> &
|
|
319
|
+
Partial<
|
|
320
|
+
Pick<
|
|
321
|
+
SlashCommandContext,
|
|
322
|
+
| "clearSkillSurface"
|
|
323
|
+
| "exportShareArchive"
|
|
324
|
+
| "exportTranscript"
|
|
325
|
+
| "getAgentRoleFacts"
|
|
326
|
+
| "getDecisionBoard"
|
|
327
|
+
| "importShareArchive"
|
|
328
|
+
| "isTurnInFlight"
|
|
329
|
+
| "listWorkerRuns"
|
|
330
|
+
| "oracleBriefing"
|
|
331
|
+
| "getWorkerRosters"
|
|
332
|
+
| "runCompact"
|
|
333
|
+
| "runContextClear"
|
|
334
|
+
| "runContextRecall"
|
|
335
|
+
| "runContextRefresh"
|
|
336
|
+
| "runCouncilDispatch"
|
|
337
|
+
| "runDoctor"
|
|
338
|
+
| "runInit"
|
|
339
|
+
| "runLocalOperation"
|
|
340
|
+
| "seedTaskMemory"
|
|
341
|
+
| "submitOperatorNote"
|
|
342
|
+
| "userTasks"
|
|
343
|
+
>
|
|
344
|
+
> & {
|
|
345
|
+
cwd?: string;
|
|
346
|
+
/**
|
|
347
|
+
* Submit a user turn. `pendingSkillRequests` arrives already expanded, so
|
|
348
|
+
* this is `chat.submit(text, {pendingSkillRequests})` and nothing more.
|
|
349
|
+
*/
|
|
350
|
+
submitTurn?: (text: string, options: { pendingSkillRequests?: ReadonlyArray<PendingSkillRequest> }) => void;
|
|
351
|
+
/**
|
|
352
|
+
* `resources.parsePendingSkillRequests`. Skill expansion happens here, in
|
|
353
|
+
* the caller of submit, exactly as `interactive-slash-runtime.ts` does it:
|
|
354
|
+
* `chat.submit` does not expand, so without this an ACP client sending
|
|
355
|
+
* `/skill foo` would put the literal five-character command into the
|
|
356
|
+
* model's context as prose.
|
|
357
|
+
*/
|
|
358
|
+
parsePendingSkillRequests?: (
|
|
359
|
+
text: string,
|
|
360
|
+
cwd?: string,
|
|
361
|
+
) => { text: string; pendingSkillRequests: PendingSkillRequest[] };
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
export interface AcpCommandResult {
|
|
365
|
+
level: NoticeLevel;
|
|
366
|
+
lines: string[];
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/** A result's level is the loudest notice the command emitted, so the levels need an order. */
|
|
370
|
+
const NOTICE_LEVELS: ReadonlyArray<NoticeLevel> = ["info", "success", "warn", "error"];
|
|
371
|
+
|
|
372
|
+
/** A handler that reaches one of these was dispatched by mistake; failing loudly beats handing it undefined. */
|
|
373
|
+
function unreachable(member: string): never {
|
|
374
|
+
throw new Error(`acp commands: ${member} is not reachable from an allowlisted command`);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/** Every refusal on this surface is the client's mistake, so they all carry one shape. */
|
|
378
|
+
function invalid(reason: string, message: string): AcpRequestError {
|
|
379
|
+
return new AcpRequestError(-32602, message, { code: "invalid_params", reason });
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Rebuild the command line the registry parses.
|
|
384
|
+
*
|
|
385
|
+
* Nothing is quoted. A rest positional is taken verbatim to end of line
|
|
386
|
+
* (`slash-spec.ts:305`), so a quoted task would arrive with its quotes inside
|
|
387
|
+
* the task text, and a client cannot know from the catalog which of its
|
|
388
|
+
* arguments lands in a rest slot. The tokenizer's own metacharacters are
|
|
389
|
+
* therefore refused rather than escaped, and whitespace is admitted only in the
|
|
390
|
+
* final element, which is the one that can be rest text.
|
|
391
|
+
*/
|
|
392
|
+
function joinArgv(command: string, argv: ReadonlyArray<string>): string {
|
|
393
|
+
if (argv.length > ACP_MAX_COMMAND_ARGV) throw invalid("argv_too_long", "too many command arguments");
|
|
394
|
+
for (const [index, value] of argv.entries()) {
|
|
395
|
+
if (typeof value !== "string") throw invalid("argv_invalid", "command arguments must be strings");
|
|
396
|
+
if (Buffer.byteLength(value, "utf8") > ACP_MAX_COMMAND_ARGV_BYTES) {
|
|
397
|
+
throw invalid("argv_too_long", "a command argument is too long");
|
|
398
|
+
}
|
|
399
|
+
// biome-ignore lint/suspicious/noControlCharactersInRegex: a control character in a command line is the refusal.
|
|
400
|
+
if (/[\u0000-\u001f\u007f"']/u.test(value)) {
|
|
401
|
+
throw invalid("argv_invalid", "a command argument contains a quote or control character");
|
|
402
|
+
}
|
|
403
|
+
if (index < argv.length - 1 && /\s/u.test(value)) {
|
|
404
|
+
throw invalid("argv_invalid", "only the last command argument may contain whitespace");
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
return argv.length === 0 ? `/${command}` : `/${command} ${argv.join(" ")}`;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/** The parse must land on a kind the allowlisted entry itself declares, or on that entry's usage error. */
|
|
411
|
+
function parsedBelongsTo(parsed: SlashCommand, name: string, kinds: ReadonlyArray<SlashCommandKind>): boolean {
|
|
412
|
+
if (parsed.kind === "usage-error") return parsed.command === name;
|
|
413
|
+
return kinds.includes(parsed.kind);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Run one allowlisted command with no TUI behind it.
|
|
418
|
+
*
|
|
419
|
+
* Doctor completes before replying. Dispatch commands acknowledge admission and
|
|
420
|
+
* keep reporting progress through their existing event stream.
|
|
421
|
+
*/
|
|
422
|
+
export function invokeAcpCommand(
|
|
423
|
+
request: { command: unknown; argv: unknown },
|
|
424
|
+
host: AcpCommandHost,
|
|
425
|
+
): Promise<AcpCommandResult> {
|
|
426
|
+
if (typeof request.command !== "string") throw invalid("invalid_params", "command must be a string");
|
|
427
|
+
const rule = RULE_BY_NAME.get(request.command);
|
|
428
|
+
if (rule === undefined) throw invalid("command_not_exposed", "command is not exposed over ACP");
|
|
429
|
+
const entry = BUILTIN_SLASH_COMMANDS.find((candidate) => candidate.name === rule.name);
|
|
430
|
+
if (entry === undefined) throw invalid("command_not_exposed", "command is not exposed over ACP");
|
|
431
|
+
|
|
432
|
+
const argv: string[] = [];
|
|
433
|
+
if (request.argv !== undefined) {
|
|
434
|
+
if (!Array.isArray(request.argv)) throw invalid("argv_invalid", "argv must be an array of strings");
|
|
435
|
+
for (const value of request.argv) argv.push(value as string);
|
|
436
|
+
}
|
|
437
|
+
if (rule.subcommands !== undefined && !rule.subcommands.includes(argv[0] ?? "")) {
|
|
438
|
+
throw invalid("subcommand_not_exposed", "this command is exposed only through its subcommands");
|
|
439
|
+
}
|
|
440
|
+
// The registry submits `/skill <name>` as chat text and expects the caller to
|
|
441
|
+
// have expanded it first. Without the expander the model would receive the
|
|
442
|
+
// command line as prose, which reads like an answer and is not one.
|
|
443
|
+
// `off` is the reserved name only when it stands alone; `/skill off x` invokes
|
|
444
|
+
// a skill called `off` and still submits.
|
|
445
|
+
const clearsSkillSurface = argv.length === 1 && argv[0] === "off";
|
|
446
|
+
if (rule.name === "skill" && !clearsSkillSurface && host.parsePendingSkillRequests === undefined) {
|
|
447
|
+
throw invalid("not_wired", "skill expansion is not wired in this session");
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
const line = joinArgv(rule.name, argv);
|
|
451
|
+
const parsed = parseSlashCommand(line);
|
|
452
|
+
if (!parsedBelongsTo(parsed, rule.name, entry.kinds)) {
|
|
453
|
+
throw invalid("command_not_exposed", "command is not exposed over ACP");
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
const lines: string[] = [];
|
|
457
|
+
let rank = 0;
|
|
458
|
+
let truncated = false;
|
|
459
|
+
const push = (text: string): void => {
|
|
460
|
+
for (const raw of text.replace(/\r/gu, "").split("\n")) {
|
|
461
|
+
const trimmed = raw.trimEnd();
|
|
462
|
+
if (trimmed.length === 0) continue;
|
|
463
|
+
if (lines.length >= ACP_MAX_COMMAND_RESULT_LINES) {
|
|
464
|
+
truncated = true;
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
lines.push(bounded(trimmed, ACP_MAX_COMMAND_RESULT_LINE_BYTES));
|
|
468
|
+
}
|
|
469
|
+
};
|
|
470
|
+
const notice = (next: NoticeLevel, text: string): void => {
|
|
471
|
+
rank = Math.max(rank, NOTICE_LEVELS.indexOf(next));
|
|
472
|
+
push(text);
|
|
473
|
+
};
|
|
474
|
+
|
|
475
|
+
const finish = (): AcpCommandResult => {
|
|
476
|
+
if (truncated) lines.push(`…output truncated at ${ACP_MAX_COMMAND_RESULT_LINES} lines`);
|
|
477
|
+
return { level: NOTICE_LEVELS[rank] ?? "info", lines };
|
|
478
|
+
};
|
|
479
|
+
const runDoctor = host.runDoctor;
|
|
480
|
+
if (parsed.kind === "doctor" && runDoctor) {
|
|
481
|
+
return Promise.resolve()
|
|
482
|
+
.then(() => runDoctor({ deep: parsed.deep }))
|
|
483
|
+
.then(
|
|
484
|
+
(report) => {
|
|
485
|
+
notice(report.level, report.text);
|
|
486
|
+
return finish();
|
|
487
|
+
},
|
|
488
|
+
(error: unknown) => {
|
|
489
|
+
notice("error", `doctor failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
490
|
+
return finish();
|
|
491
|
+
},
|
|
492
|
+
);
|
|
493
|
+
}
|
|
494
|
+
const ctx = headlessContext(host, notice, push);
|
|
495
|
+
const outcome = dispatchSlashCommand(parsed, ctx);
|
|
496
|
+
if (outcome === "rejected") rank = NOTICE_LEVELS.length - 1;
|
|
497
|
+
// A dispatch command returns before its worker produces anything, and a
|
|
498
|
+
// silent success would read as a control that did nothing.
|
|
499
|
+
if (rule.streams === "dispatch" && lines.length === 0 && outcome === "accepted") {
|
|
500
|
+
push(`${rule.name} started; progress arrives as clio-coder/event dispatch kinds`);
|
|
501
|
+
}
|
|
502
|
+
return Promise.resolve(finish());
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* A `SlashCommandContext` with no terminal behind it.
|
|
507
|
+
*
|
|
508
|
+
* `echoOperatorCommand`, `showReference` and `showDoctor` are left undefined on
|
|
509
|
+
* purpose: each is optional precisely so a host without a chat panel can omit
|
|
510
|
+
* it, and the registry falls back to `io.stdout` or to nothing. `render` is a
|
|
511
|
+
* required member rather than an optional one, so it is a no-op here: there is
|
|
512
|
+
* no frame to schedule. The members below that call `unreachable` belong to
|
|
513
|
+
* commands the allowlist does not expose; they are typed as required by the
|
|
514
|
+
* context, not reachable by any line this module will build.
|
|
515
|
+
*/
|
|
516
|
+
function headlessContext(
|
|
517
|
+
host: AcpCommandHost,
|
|
518
|
+
notice: (level: NoticeLevel, text: string) => void,
|
|
519
|
+
push: (text: string) => void,
|
|
520
|
+
): SlashCommandContext {
|
|
521
|
+
const submitTurn = host.submitTurn;
|
|
522
|
+
return {
|
|
523
|
+
io: { stdout: push, stderr: push },
|
|
524
|
+
notice,
|
|
525
|
+
dispatch: host.dispatch,
|
|
526
|
+
bus: host.bus,
|
|
527
|
+
providers: host.providers,
|
|
528
|
+
...(host.getDecisionBoard ? { getDecisionBoard: host.getDecisionBoard } : {}),
|
|
529
|
+
...(host.getAgentRoleFacts ? { getAgentRoleFacts: host.getAgentRoleFacts } : {}),
|
|
530
|
+
...(host.submitOperatorNote ? { submitOperatorNote: host.submitOperatorNote } : {}),
|
|
531
|
+
...(host.listWorkerRuns ? { listWorkerRuns: host.listWorkerRuns } : {}),
|
|
532
|
+
...(host.exportShareArchive ? { exportShareArchive: host.exportShareArchive } : {}),
|
|
533
|
+
...(host.importShareArchive ? { importShareArchive: host.importShareArchive } : {}),
|
|
534
|
+
...(host.runDoctor ? { runDoctor: host.runDoctor } : {}),
|
|
535
|
+
...(host.oracleBriefing ? { oracleBriefing: host.oracleBriefing } : {}),
|
|
536
|
+
...(host.isTurnInFlight ? { isTurnInFlight: host.isTurnInFlight } : {}),
|
|
537
|
+
...(host.getWorkerRosters ? { getWorkerRosters: host.getWorkerRosters } : {}),
|
|
538
|
+
...(host.runCouncilDispatch ? { runCouncilDispatch: host.runCouncilDispatch } : {}),
|
|
539
|
+
...(host.runContextRecall ? { runContextRecall: host.runContextRecall } : {}),
|
|
540
|
+
...(host.runContextRefresh ? { runContextRefresh: host.runContextRefresh } : {}),
|
|
541
|
+
...(host.runLocalOperation ? { runLocalOperation: host.runLocalOperation } : {}),
|
|
542
|
+
...(host.clearSkillSurface ? { clearSkillSurface: host.clearSkillSurface } : {}),
|
|
543
|
+
...(host.seedTaskMemory ? { seedTaskMemory: host.seedTaskMemory } : {}),
|
|
544
|
+
...(host.userTasks ? { userTasks: host.userTasks } : {}),
|
|
545
|
+
runInit: (options) => {
|
|
546
|
+
if (!host.runInit) {
|
|
547
|
+
notice("error", "context init is not wired in this session");
|
|
548
|
+
return;
|
|
549
|
+
}
|
|
550
|
+
host.runInit(options);
|
|
551
|
+
},
|
|
552
|
+
runContextClear: (options) => {
|
|
553
|
+
if (!host.runContextClear) {
|
|
554
|
+
notice("error", "context reset is not wired in this session");
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
host.runContextClear(options);
|
|
558
|
+
},
|
|
559
|
+
runCompact: (instructions) => {
|
|
560
|
+
if (!host.runCompact) {
|
|
561
|
+
notice("error", "context compact is not wired in this session");
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
host.runCompact(instructions);
|
|
565
|
+
},
|
|
566
|
+
exportTranscript: (path) => {
|
|
567
|
+
if (!host.exportTranscript) {
|
|
568
|
+
notice("error", "export is not wired in this session; no session is bound to this process");
|
|
569
|
+
return;
|
|
570
|
+
}
|
|
571
|
+
host.exportTranscript(path);
|
|
572
|
+
},
|
|
573
|
+
submitChat: (text) => {
|
|
574
|
+
if (!submitTurn) {
|
|
575
|
+
notice("error", "this command submits a user turn, and no chat loop is bound to this process");
|
|
576
|
+
return;
|
|
577
|
+
}
|
|
578
|
+
const expansion = host.parsePendingSkillRequests?.(text, host.cwd);
|
|
579
|
+
if (expansion === undefined) {
|
|
580
|
+
submitTurn(text, {});
|
|
581
|
+
return;
|
|
582
|
+
}
|
|
583
|
+
submitTurn(
|
|
584
|
+
expansion.text,
|
|
585
|
+
expansion.pendingSkillRequests.length > 0 ? { pendingSkillRequests: expansion.pendingSkillRequests } : {},
|
|
586
|
+
);
|
|
587
|
+
},
|
|
588
|
+
render: () => {},
|
|
589
|
+
listPrompts: () => unreachable("listPrompts"),
|
|
590
|
+
listAgents: () => unreachable("listAgents"),
|
|
591
|
+
listDelegationAgents: () => unreachable("listDelegationAgents"),
|
|
592
|
+
shutdown: () => unreachable("shutdown"),
|
|
593
|
+
openCost: () => unreachable("openCost"),
|
|
594
|
+
openSideQuestion: () => unreachable("openSideQuestion"),
|
|
595
|
+
startHandoff: () => unreachable("startHandoff"),
|
|
596
|
+
openContextView: () => unreachable("openContextView"),
|
|
597
|
+
openTasks: () => unreachable("openTasks"),
|
|
598
|
+
openDecisions: () => unreachable("openDecisions"),
|
|
599
|
+
openMemory: () => unreachable("openMemory"),
|
|
600
|
+
openView: () => unreachable("openView"),
|
|
601
|
+
openModel: () => unreachable("openModel"),
|
|
602
|
+
applyModelRef: () => unreachable("applyModelRef"),
|
|
603
|
+
openSettings: () => unreachable("openSettings"),
|
|
604
|
+
openResume: () => unreachable("openResume"),
|
|
605
|
+
startNewSession: () => unreachable("startNewSession"),
|
|
606
|
+
openTree: () => unreachable("openTree"),
|
|
607
|
+
openMessagePicker: () => unreachable("openMessagePicker"),
|
|
608
|
+
openHelp: () => unreachable("openHelp"),
|
|
609
|
+
openExtensions: () => unreachable("openExtensions"),
|
|
610
|
+
verifyReceipt: () => unreachable("verifyReceipt"),
|
|
611
|
+
};
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
/* -------------------------------------------------------------------------- */
|
|
615
|
+
/* Control surface */
|
|
616
|
+
/* -------------------------------------------------------------------------- */
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* What `src/engine/acp/server.ts` is handed instead of this module.
|
|
620
|
+
*
|
|
621
|
+
* The server is a declared Stage 0 seam and the instant shell's chunk budget is
|
|
622
|
+
* measured on its closure (rule6, tests/boundaries/check-boundaries.ts). This
|
|
623
|
+
* module value-imports the whole slash registry, so a direct import would drag
|
|
624
|
+
* the registry into that budget. The composition root already reaches the
|
|
625
|
+
* registry, so it builds the control; the server never learns that a slash
|
|
626
|
+
* command exists.
|
|
627
|
+
*/
|
|
628
|
+
export interface AcpCommandControl {
|
|
629
|
+
/** Pure and rebuilt per call, so the server memoizes it for a polling client. */
|
|
630
|
+
catalog(): AcpCommandCatalog;
|
|
631
|
+
/** Refusals throw {@link AcpRequestError} with the reason already attached. */
|
|
632
|
+
invoke(request: { command: unknown; argv: unknown }): AcpCommandResult | Promise<AcpCommandResult>;
|
|
633
|
+
/** True when this command name submits a user turn, which a live prompt owns. */
|
|
634
|
+
injectsUserTurn(command: unknown): boolean;
|
|
635
|
+
/** Announced verbatim under `clio-coder/commands`. */
|
|
636
|
+
capability: Readonly<Record<string, unknown>>;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
/** Binds one host to the control the ACP server takes. */
|
|
640
|
+
export function acpCommandControl(host: AcpCommandHost): AcpCommandControl {
|
|
641
|
+
return {
|
|
642
|
+
catalog: () => acpCommandCatalog(host),
|
|
643
|
+
invoke: (request) => {
|
|
644
|
+
const rule = availableRules(host).find((entry) => entry.name === request.command);
|
|
645
|
+
if (!rule) throw invalid("command_unavailable", "command is not available in this host");
|
|
646
|
+
if (rule.subcommands && (!Array.isArray(request.argv) || !rule.subcommands.includes(request.argv[0])))
|
|
647
|
+
throw invalid("subcommand_not_exposed", "subcommand is not available in this host");
|
|
648
|
+
return invokeAcpCommand(request, host);
|
|
649
|
+
},
|
|
650
|
+
injectsUserTurn: (command) => typeof command === "string" && RULE_BY_NAME.get(command)?.injectsUserTurn === true,
|
|
651
|
+
capability: { ...ACP_COMMANDS_CAPABILITY, count: availableRules(host).length },
|
|
652
|
+
};
|
|
653
|
+
}
|