@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,110 @@
|
|
|
1
|
+
# GUI parity matrix — part 2: slash-command families and interactive surfaces
|
|
2
|
+
|
|
3
|
+
> **Reference Design & Planning Blueprint**: This document is an architectural reference blueprint recovered from the deleted `apps/workbench` prototype. It specifies design doctrine, target parity, and inspection layouts for the early GUI preview (`apps/clio-coder-gui`), not verified runtime features of the core v0.5.0 terminal engine.
|
|
4
|
+
|
|
5
|
+
Extracted from `apps/workbench/PARITY.md`. Verdict and marker vocabulary is defined in part 1.
|
|
6
|
+
|
|
7
|
+
## A. Slash-command families (32 rows)
|
|
8
|
+
|
|
9
|
+
Two rows in the source are **corrupt Markdown**: an unescaped `|` inside the operation cell shifted the columns and destroyed the Gap cell. Both are reconstructed below and marked `[RECONSTRUCTED]`.
|
|
10
|
+
|
|
11
|
+
| # | Harness capability | Interactive operation | GUI verdict | Gap |
|
|
12
|
+
| -: | --- | --- | --- | --- |
|
|
13
|
+
| 1 | Quit | `/quit` | **Partial** | A browser can close or switch projects, but there is no explicit graceful child-shutdown control. |
|
|
14
|
+
| 2 | Help reference | `/help [query]` | **Partial** | A searchable desktop-app reference opens from the Observatory header and the status bar with no project and no connection: every view, every keybinding from the one typed table the handlers also read, working freedom, vocabulary, and boundaries. Clio Coder's own command list stays terminal. |
|
|
15
|
+
| 3 | Skill selection and invocation | `/skill [name] [task]` | **Partial** | Installed skills are searchable in the atlas, but explicit invocation and the selector workflow are absent. |
|
|
16
|
+
| 4 | Resource library | `/library [kind]` | **Partial** | Read-only library cards are present; install/use flows are absent. |
|
|
17
|
+
| 5 | Saved prompts | `/prompts` | **Partial** | Effective prompt roots are visible, but saved-prompt selection and expansion are absent. |
|
|
18
|
+
| 6 | Extensions | `/extensions` | **Partial** | **deferred-by-design**: Installed extensions are visible; interactive enablement and lifecycle controls are absent. |
|
|
19
|
+
| 7 | Interoperability | `/interop` | **Partial** | Settings names every detected coding agent, its version, its ACP adapter, and how far it is wired. Reviewing and wiring a peer stays an explicit terminal operation. |
|
|
20
|
+
| 8 | Worker result and archive sharing | `/share [runId]`, `/share export \| import` | **Absent** | `[RECONSTRUCTED]` — the source row is corrupt; the Gap cell was consumed by the unescaped pipe in `export \| import`. Reconstructed intent, cross-checked against the `Portable sharing` row in part 1: no archive inspection, export, dry-run import, confirmation, or conflict surface exists, and sharing a worker result is a mutation with no GUI operation. |
|
|
21
|
+
| 9 | Attributed worker run | `/run <agent> <task>` | **Partial** | ACP tools expose live attributed dispatch activity, but the operator cannot directly start an addressable worker run. |
|
|
22
|
+
| 10 | Delegation | `/delegate <agent> <task>` | **Partial** | Delegated tool calls are attributed when Clio Coder creates them; there is no direct operator control. |
|
|
23
|
+
| 11 | Side question | `/btw <question>` | **Absent** | The GUI has no isolated, non-transcript side-question round. |
|
|
24
|
+
| 12 | Oracle advisory | `/oracle <question>` | **Absent** | No read-only record-briefed advisory operation exists. |
|
|
25
|
+
| 13 | Council | `/council <task>` | **Partial** | Runs reconstructs the roster, plan approval, rounds, and synthesis shape from the ledger. Member voices are **host-only-by-design**; starting and sharing a council are absent. |
|
|
26
|
+
| 14 | Agent reference | `/agents` | **Present** | Capability atlas provides the graphical recipe reference. |
|
|
27
|
+
| 15 | Cost record | `/cost` | **Partial** | Exact tokens and historical reported cost exist, but live session cost, budget provenance, and provider-normalized totals are incomplete. |
|
|
28
|
+
| 16 | Context family | `/context view \| compact \| recall \| init \| refresh \| reset` | **Partial** | `[RECONSTRUCTED]` — the source row is corrupt for the same reason. Verified against `src/interactive/slash-commands.ts:1695-1705`, whose `kinds` are `context-view, compact, context-recall, init, context-clear, context-refresh`. Reconstructed gap, consistent with the `Project context` row in part 1 and the `Context meter and overlay` row below: effective context sources and earlier replay are visible; live window pressure, working-set state, compaction, recall, and reset have no GUI surface. |
|
|
29
|
+
| 17 | Fleet | `/fleet` settings and `/fleet run` preview/approval | **Partial** | Global dispatch status exists; fleet plan selection, variable binding, preview, approval, and run are absent. |
|
|
30
|
+
| 18 | Decision ledger | `/decisions` | **Absent** | No typed decision-board projection reaches the GUI. |
|
|
31
|
+
| 19 | Task ledger | `/tasks`, add/hand/done/drop | **Absent** | No user-task board or reviewed task mutations reach the GUI. |
|
|
32
|
+
| 20 | Memory | `/memory [seed]` | **Partial** | Configuration presence is visible, but lesson/bank/activity inspection and seeding are absent. |
|
|
33
|
+
| 21 | Fleet run board and verification | `/view [filter]`, `/view verify <runId>` | **Partial** | Recent durable runs, journals, sealed receipt trust, the fleet-root step index, and on-demand verification are present. The Runs board narrows the fixed eight-run window locally by outcome, agent, node, fleet lineage, receipt state, and prefix text, and its count sentence names the bound; nothing reaches the host and older runs stay outside the window. Terminal `/view` filters over history remain absent. |
|
|
34
|
+
| 22 | Panes and mux | `/panes`, show/open/close | **Absent** | No pane host health, inventory, presets, viewer focus, or close controls exist; status parity is **blocked-on-phase4** because the owning surface has no public typed read command. |
|
|
35
|
+
| 23 | Reasoning level | `/thinking [level]` | **Present** | The Settings instrument edits the safe next-turn thinking level. |
|
|
36
|
+
| 24 | Output verbosity | `/output [verbosity]` | **Absent** | Terminal transcript verbosity is presentation-specific and should not become a dead ACP setting. |
|
|
37
|
+
| 25 | Model picker | `/model [pattern]` | **Partial** | Settings selects configured target/model and shows offline inventory, but the richer recent/favorite/search picker is absent. |
|
|
38
|
+
| 26 | Settings center | `/settings [section]` | **Partial** | Four safe settings plus routing and recovery inventories are graphical; most root setting groups remain read-only or unavailable. |
|
|
39
|
+
| 27 | Resume | `/resume` | **Present** | The project rail lists, searches by visible labels, and resumes Clio Coder sessions with replay. |
|
|
40
|
+
| 28 | New session | `/new` | **Present** | New session creation is explicit and bound to the open project. |
|
|
41
|
+
| 29 | Handoff | `/handoff <goal>` | **Absent** | **deferred-by-design**: There is no extraction round, review editor, or new-session handoff operation. |
|
|
42
|
+
| 30 | Session tree | `/tree` | **Absent** | The GUI replays one active path but cannot inspect or switch branches. |
|
|
43
|
+
| 31 | Fork | `/fork` | **Absent** | **deferred-by-design**: No message picker or branch-from-turn operation crosses ACP. |
|
|
44
|
+
| 32 | Transcript export | `/export [path]` | **Absent** | No HTML transcript preview/export workflow exists. |
|
|
45
|
+
|
|
46
|
+
### Slash-command drift, verified against `src/interactive/slash-commands.ts` (2026-09-20)
|
|
47
|
+
|
|
48
|
+
The live registry is 40 commands: `background editor interrupt notifications quit help skill library skills prompts mcp doctor extensions share archive run delegate btw oracle council interop agents cost context fleet decisions tasks memory view panes files thinking model settings resume new handoff tree fork export`.
|
|
49
|
+
|
|
50
|
+
**Retired since the audit — delete row 24:** `/output` no longer exists. Transcript verbosity moved into the settings schema as `interface.outputDetail` (`compact|standard|detailed`), hot-reloadable, with Alt+O cycling it. The parity verdict text is now wrong in a way that matters: it says the switch "should not become a dead ACP setting", but it is a live settings key today and belongs on the settings write surface, not in this table.
|
|
51
|
+
|
|
52
|
+
**New since the audit — nine rows to add, all starting at Absent unless noted:**
|
|
53
|
+
|
|
54
|
+
| Harness capability | Interactive operation | Note for the new GUI |
|
|
55
|
+
| --- | --- | --- |
|
|
56
|
+
| Background work | `/background` | Detach the running turn. High value for a GUI that wants a non-blocking viewport. |
|
|
57
|
+
| External editor | `/editor [text]` | Deliberately out of scope for a browser app — keep Absent with the same reason as the `External editor and inline bash` row. |
|
|
58
|
+
| Steering | `/interrupt <text>` | Mid-turn steering injection. This is the missing half of "the operator can shape a running turn" and should be a first-class GUI composer affordance. |
|
|
59
|
+
| Notifications | `/notifications [dismiss [all]]` | Maps onto a GUI notification tray. |
|
|
60
|
+
| Skills (read) | `/skills` | Now distinct from `/skill`; reads the installed catalog. |
|
|
61
|
+
| MCP | `/mcp [list\|trust\|untrust] [id] [class]` | A trust mutation with a closed vocabulary — a good, bounded first write surface. |
|
|
62
|
+
| Doctor | `/doctor [deep]` | Interactive diagnostic sweep. |
|
|
63
|
+
| Archive | `/archive export\|import <path> [--dry-run] [--force]` | The reviewed transfer flow; `--dry-run` already gives the GUI a preview stage for free. |
|
|
64
|
+
| Files | `/files` | Yazi/pane file picker — **blocked-on-phase4**, same as `/panes`. |
|
|
65
|
+
|
|
66
|
+
## B. Interactive surfaces and instruments (31 rows)
|
|
67
|
+
|
|
68
|
+
This is the component-level checklist. Read it as the build list for the chat viewport, the dispatch board, and the evidence surfaces.
|
|
69
|
+
|
|
70
|
+
| # | Harness capability | TUI or harness surface | GUI verdict | Gap |
|
|
71
|
+
| -: | --- | --- | --- | --- |
|
|
72
|
+
| 1 | Main conversation | Streaming narrative, reasoning, tools, approvals, terminal outcome | **Present** | Conversation and Session Timeline project the same validated ACP evidence record. |
|
|
73
|
+
| 2 | Composer and stop | Multiline editor, submit, cancel | **Present** | The GUI has an isolated request editor, explicit send, and turn cancellation. |
|
|
74
|
+
| 3 | Tool activity | Running/completed/failed tool renderers and disclosure | **Present** | Folded activity groups preserve exact tool state and provenance. |
|
|
75
|
+
| 4 | Permission overlay | Consequential tool preview and explicit decision | **Partial** | Allow once/reject is present; richer policy, mutation diff, escalation provenance, and persistent rules are absent. |
|
|
76
|
+
| 5 | Ask-user interview | Structured options, free text, cancellation | **Partial** | Standard ACP permission is interactive, but the separate `ask_user` question protocol is not projected. |
|
|
77
|
+
| 6 | Session picker | Resume, label, delete, missing working directory recovery | **Present** | GUI sessions support resume/replay, rename, delete, close, and unknown-state disclosure. |
|
|
78
|
+
| 7 | Session tree and fork picker | Branch graph, switch, fork from message | **Absent** | ACP exposes neither branch topology nor switch/fork operations. |
|
|
79
|
+
| 8 | Welcome dashboard | Route, context, shortcuts, recent state | **Partial** | First-run guidance, current route, project atlas, and Observatory exist; command shortcuts and context health are narrower. |
|
|
80
|
+
| 9 | Footer and live status | Phase, route, context pressure, cost, tasks, notifications | **Partial** | Phase, route, autonomy, operation, tokens, and event counts exist; pressure, live cost, tasks, retry, watchdog, and capacity are absent. |
|
|
81
|
+
| 10 | Context meter and overlay | Window pressure, working set, prune/recall, compaction | **Absent** | Earlier replay is not a live context-pressure or working-set instrument. |
|
|
82
|
+
| 11 | Cost overlay | Session/model token and cost accounting | **Partial** | Visible usage, historical usage, and durable per-run and per-phase cost are present; live normalized cost and budget state are absent. |
|
|
83
|
+
| 12 | Dispatch board | Filterable run rows, progress, receipts, steering | **Partial** | ACP fleet activity, installation aggregate, durable run detail, journal, receipt trust, root step index, local filters over the durable window, and a running-only toggle on the live strip exist; steering is absent. |
|
|
84
|
+
| 13 | Run-event journal | Durable per-run NDJSON transcript and follow | **Present** | Runs renders a bounded event spine for the eight newest runs and refreshes while displayed work remains nonterminal. |
|
|
85
|
+
| 14 | Fleet root inspection | Planned step index and terminal run ids | **Present** | Runs indexes recent roots to their planned step order, terminal run ids, attribution, and failure reason, and links steps into the window. |
|
|
86
|
+
| 15 | Council | Roster preview, approval, rounds, member grid, synthesis | **Partial** | Runs groups the ledger into councils and renders the seated grid, each voice's route and rounds, and the synthesis shape. The voices are **host-only-by-design**. |
|
|
87
|
+
| 16 | Compete | Parallel candidates, judge/gate decision, winner, cleanup evidence | **Partial** | Runs renders the sealed gate verdict, the graded candidates, the winner, and the judge's independence. Candidate diffs and the judge's reasoning are host-only. |
|
|
88
|
+
| 17 | Receipt trust and verify | Sealed receipt status and `/view verify` host check | **Partial** | Runs projects sealed receipt trust, per-bundle evidence verdicts, and an on-demand re-check of the sealed bytes, all without native paths. |
|
|
89
|
+
| 18 | Task and decision boards | Inspect and mutate session ledgers | **Absent** | Neither ledger is part of protocol v4. |
|
|
90
|
+
| 19 | Memory overlay | Lessons, task bank, activity, promotion | **Absent** | Memory configuration facts do not expose records or mutations. |
|
|
91
|
+
| 20 | Resource overlays | Agents, skills, prompts, extensions, library | **Partial** | Agents, the full installed skill catalog with its verdict, extensions, and library inventories are present; prompts and reviewed mutations are incomplete. |
|
|
92
|
+
| 21 | Settings overlay | Effective values, sources, timing, routing, auth | **Partial** | Effective inspection and safe settings are strong; most settings, auth, and target authoring are absent. |
|
|
93
|
+
| 22 | Model selector | Search, recent/favorite, capability-aware selection | **Partial** | Configured model selection and offline capability search exist; recent/favorite and endpoint discovery are absent. |
|
|
94
|
+
| 23 | Auth dialog | Runtime credential connection | **Absent** | **deferred-by-design**: No typed credential mutation is exposed to the browser. |
|
|
95
|
+
| 24 | External editor and inline bash | Editor round trip and `!command` | **Absent** | The GUI intentionally does not become a terminal emulator or embedded IDE. |
|
|
96
|
+
| 25 | Notifications and retry | Notices, provider retry, stall and watchdog state | **Partial** | Command errors and operation states are visible; structured retry/watchdog/runtime notices are not public ACP facts. |
|
|
97
|
+
| 26 | Panes and mux inventory | Host detection, health, pane list, focus/open/close | **Absent** | **blocked-on-phase4**: no public fixed JSON read exists and this pane must not change `src/domains/mux` or `src/interactive`. |
|
|
98
|
+
| 27 | Yazi round trip | File picker pane, picked path return, focused context | **Absent** | The new terminal/mux round trip is not an ACP operation and is also **blocked-on-phase4** for GUI parity. |
|
|
99
|
+
| 28 | Toolchain inventory | Pinned versions, license, platform, source, resolution, install state | **Present** | Settings renders the fixed listing with version floors, found versions, licenses, platform support, resolution source, and install state. |
|
|
100
|
+
| 29 | Doctor and recovery | Categorized diagnostic sweep and repair | **Partial** | Per-check identity, section, and verdict sit under the bounded counts; finding detail and confirmed repair remain intentionally absent. |
|
|
101
|
+
| 30 | Usage and routing | Historical Usage, offline models, profiles, agent bindings | **Present** | Project scoping, independent failures, provenance, and missing-store states are explicit. |
|
|
102
|
+
| 31 | Catalog and config | Agent/skill/extension/library/check inventory and effective config | **Present** | Bounded projections and direct paths back to the conversation are present. |
|
|
103
|
+
|
|
104
|
+
### Rows verified stale against `apps/clio-coder-gui/` (2026-09-20)
|
|
105
|
+
|
|
106
|
+
- **Row 26/27 (panes, Yazi)** — still correctly `blocked-on-phase4`. `src/cli/panes.ts` has exactly one `--json`, on `panes install`. No typed status read exists. But note the settings schema now carries a full `interface.panes.*` subtree (`enabled`, `notifications`, `layout`, `workers.ratio`, `files.{enabled,mode,profile,followCwd,ratio}`), so the *configuration* half is reachable even while the *runtime status* half is not. Do not conflate them.
|
|
107
|
+
- **Row 12 (dispatch board)** — the new app already serves `/api/fleet/runs`, `/api/fleet/dispatches`, `/api/fleet/receipts/:id`, `/api/fleet/councils`, `/api/fleet/gates`. Steering remains absent, and `/interrupt` (new slash command) is the harness capability that would close it.
|
|
108
|
+
- **Row 17 (receipt trust)** — `POST /api/workspaces/:id/receipts/:runId/verify` exists in the new app.
|
|
109
|
+
- **Row 19 (memory overlay)** — still correct. `src/cli/memory.ts` has zero `--json`; the typed read remains the blocker.
|
|
110
|
+
- **Row 18 (task/decision boards)** — `/decisions` and `/tasks` are live slash commands and `src/cli/tasks.ts` is a registered CLI family, but neither emits JSON. Still correctly Absent, for the same reason.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# GUI parity matrix — part 3: runtime domain roster and implementation plan
|
|
2
|
+
|
|
3
|
+
> **Reference Design & Planning Blueprint**: This document is an architectural reference blueprint recovered from the deleted `apps/workbench` prototype. It specifies design doctrine, target parity, and inspection layouts for the early GUI preview (`apps/clio-coder-gui`), not verified runtime features of the core v0.5.0 terminal engine.
|
|
4
|
+
|
|
5
|
+
## A. Runtime domain roster (18 rows)
|
|
6
|
+
|
|
7
|
+
One row per directory under `src/domains/`. Verified: all 18 named directories still exist, plus `eval`, `evidence`, `evolution`, `gateway`, `plugins`, `user-tasks` which the audit has no rows for.
|
|
8
|
+
|
|
9
|
+
| # | Harness domain | Operator-facing responsibility | GUI verdict | Gap |
|
|
10
|
+
| -: | --- | --- | --- | --- |
|
|
11
|
+
| 1 | Config | Layered settings, sources, reload class, safe edits | **Partial** | Effective graph and four safe edits are present; most groups and live reload events are absent. |
|
|
12
|
+
| 2 | Extensions | Package resources and precedence | **Partial** | Inventory is present; lifecycle and runtime activation controls are absent. |
|
|
13
|
+
| 3 | Interop | Compatibility detection and import hints | **Partial** | Path-free detection, ACP adapter state, and standing accept/decline answers reach Settings; wiring a peer and adopting foreign context remain terminal operations. |
|
|
14
|
+
| 4 | Resources | Skills, prompts, library catalogs | **Partial** | The skill catalog crosses whole, with its validity verdict; library inventory is present; prompts and lifecycle operations are incomplete. |
|
|
15
|
+
| 5 | Share | Project/resource archives and worker-result sharing | **Absent** | **deferred-by-design**: No bounded preview or confirmed operation exists. |
|
|
16
|
+
| 6 | Context | Project context, codewiki, working set, recall, compaction inputs | **Partial** | Effective context sources and replay are present; live accounting and mutations are absent. |
|
|
17
|
+
| 7 | Providers | Targets, models, auth, capability and residency | **Partial** | Target probe, model selection, and offline inventory exist; auth, authoring, and live runtime notices are absent. |
|
|
18
|
+
| 8 | Toolchain | Pinned optional external programs | **Partial** | The machine-readable inventory is adapted without native paths; status detail, installation, and Yazi profile reset remain terminal workflows. |
|
|
19
|
+
| 9 | Safety | Autonomy, permissions, loop guard, budgets, protected artifacts | **Partial** | Autonomy, mediated approval, and loop blocks are present; wider policy and budget facts are absent. |
|
|
20
|
+
| 10 | Prompts | Saved prompt discovery and expansion | **Absent** | Effective roots alone do not provide prompt listing or invocation. |
|
|
21
|
+
| 11 | Agents | Recipe discovery and execution identity | **Partial** | Reference inventory and observed attribution exist; direct execution and status are absent. |
|
|
22
|
+
| 12 | Middleware | Hooks, safety registrations, nudges, receipts, watchdog | **Partial** | Effective hook configuration is visible; live failures, receipts, nudges, and watchdog state are absent. |
|
|
23
|
+
| 13 | Session | Lifecycle, replay, branches, task and decision ledgers | **Partial** | Core lifecycle and replay are present; branches and ledgers are absent. |
|
|
24
|
+
| 14 | Observability | Usage, cost, durable trace, run facts | **Present** | Visible tokens, historical usage, trace accounting to the phase, event and process shapes, and stored eval reports all cross through bounded fixed reads. |
|
|
25
|
+
| 15 | Scheduling | Capacity, admission, worker placement | **Partial** | Aggregate admission and heartbeat counts are present; capacity, placement, and controls are absent. |
|
|
26
|
+
| 16 | Mux | Pane host, pane inventory, viewer presets, Yazi bridge | **Absent** | **blocked-on-phase4** until the owning work exposes a fixed typed status read. |
|
|
27
|
+
| 17 | Dispatch | Worker runs, fleets, councils, compete, journals, receipts | **Partial** | Live lifecycle, aggregate status, run journals, receipt trust, fleet-root step indexes, on-demand verification, council topology, sealed gate verdicts, and local narrowing of the durable window exist; steering is absent. |
|
|
28
|
+
| 18 | Lifecycle | Boot, diagnostics, version, upgrade, reset, shutdown | **Partial** | Process state, recovery inspection, and the About version record exist; reviewed mutations are incomplete. |
|
|
29
|
+
|
|
30
|
+
### Domains with no row (add these)
|
|
31
|
+
|
|
32
|
+
`src/domains/eval`, `src/domains/evidence`, `src/domains/evolution`, `src/domains/gateway`, `src/domains/memory`, `src/domains/plugins`, `src/domains/user-tasks`. Note the audit's "Resources" row predates the split of `plugins` out of `resources`, which is what the `library` command rewrite rides on.
|
|
33
|
+
|
|
34
|
+
## B. Verdict summary (as recorded)
|
|
35
|
+
|
|
36
|
+
| Verdict | Count |
|
|
37
|
+
| --- | --: |
|
|
38
|
+
| Present | 22 |
|
|
39
|
+
| Partial | 61 |
|
|
40
|
+
| Absent | 29 |
|
|
41
|
+
| Total | 112 |
|
|
42
|
+
|
|
43
|
+
The four tables physically hold 113 rows (32 + 32 + 31 + 18). Treat the summary as approximate and recount after the stale rows above are corrected.
|
|
44
|
+
|
|
45
|
+
## C. Ordered implementation plan (8 items, verbatim, with a current verdict on each)
|
|
46
|
+
|
|
47
|
+
1. **Implemented:** bounded fixed-argv fleet-run inspection, recent durable event journals, receipt trust, explicit truncation, manual refresh, and automatic refresh while a displayed run remains active.
|
|
48
|
+
- *Now:* the shape is right and the new app should keep automatic refresh while displayed work is nonterminal. Its `/api/traces/runs/:runId/live` SSE stream is the better mechanism.
|
|
49
|
+
|
|
50
|
+
2. **Implemented:** fixed `tools list --json` projection and searchable Toolchain Settings instrument with pinned version, license, platform support, source, found and minimum versions, install state, and no native binary or install paths.
|
|
51
|
+
- *Now:* the new app went further and added install/remove. The "no native paths" clause is the part worth re-deciding rather than inheriting.
|
|
52
|
+
|
|
53
|
+
3. Add pane/mux mode, health, inventory, and status only after the phase-4 owner publishes a fixed structured read; retain `blocked-on-phase4` and do not reach into mux state, terminal environment, or process inspection.
|
|
54
|
+
- *Now:* **still blocked.** Verified: `src/cli/panes.ts` exposes `--json` only on `panes install`.
|
|
55
|
+
|
|
56
|
+
4. **Implemented:** fleet-root step indexes inside the same fixed run inspection, ordered newest first, bounded to **four roots and twenty-four steps**, linking a step only to a run inside the same window. Receipt verification is done: `fleet verify <runId> --json` re-authenticates the sealed bytes on demand, reached through the host-served-id allowlist. Council topology is done too, and by grouping rather than by a new command: a council owns no durable record, so the same fixed read scans a wider slice of the same ledger and groups rows by their council provenance into **at most four councils of five voices and three rounds each**, carrying the roster, routes, rounds, plan approval, and synthesis shape but never a member's answer. Compete and review gate outcomes are done too, through a separate fixed `fleet decisions --json` read over the sealed decision store: a gate seals an integrity-covered artifact rather than mutating the receipts it grades, and the projection carries the verdict, the graded runs, the winner, and the decider's independence from the route it graded, classifying the stored reason line instead of quoting it.
|
|
57
|
+
- *Now:* `src/cli/fleet-decisions.ts`, `fleet-verify.ts`, `fleet-inspect.ts` all still exist. **The bounds (4 roots / 24 steps / 4 councils / 5 voices / 3 rounds / 8 runs / 16 phases / 12 bundles) were workbench presentation bounds, not harness limits.** A GUI with real pagination should page rather than truncate, and should say what page it is on instead of saying it truncated.
|
|
58
|
+
|
|
59
|
+
5. **Partly implemented:** durable trace runs and phases reach the GUI through the fixed `trace inspect --json` read, bounded to **eight runs and sixteen phases**, carrying no request text, description, error prose, or database path; durable evidence bundles reach it through the fixed `evidence inventory --json` read, bounded to **twelve bundles**, carrying provenance, tags, totals, redaction counts, and a per-bundle trust verdict but no task text, working directory, or bundle file name; one bundle opens to its per-run trust axes through the host-served-id allowlist. Still to come: trace event tails and process views, through fixed read commands rather than arbitrary SQL, native paths, or raw payloads. **The tail is queued for the harness owner as a bounded, newest-first per-run event tail inside `trace inspect --json` (at most 32 events with start, end, and type, and either a closed-vocabulary class or a 64-byte sanitized name; row prose and process rows stay host-only).** That same change has to settle the Durable trace row, which calls row tails host-only-by-design while this item says they are still to come. The GUI does not build glue around `trace tail <runId>`, because the fixed-argv rule bars it. Building a bundle is a mutation and belongs with item 6.
|
|
60
|
+
- *Now:* **superseded.** The new app reads the trace store server-side (`server/services/traces.ts`) and serves full events with `payload_json` and processes with `command`. The internal contradiction the item flags is resolved in the opposite direction from the one it proposed. Keep the rowid-cursor pagination it implies (`TraceEventsQuery`/`TraceEventsPage`/`RowCursor` already exist).
|
|
61
|
+
|
|
62
|
+
6. **Partly implemented:** every doctor check crosses as its **name, section, and verdict**, so a failing check names its subject instead of adding one to a category tally. Finding detail stays on the host permanently. External coding agent detection reaches Settings through the fixed `interop inspect --json` read: which agents this machine has, the version Clio Coder last recorded for each, whether its ACP adapter can start offline, whether a delegation entry already names it, and whether the operator's standing accept or decline still holds. The read runs no foreign executable and carries no resolved binary or agent home directory. The installed skill catalog crosses whole through the fixed `skills inventory --json` read, which reports every skill rather than only the ones the model may load, says which are which, and carries the loader's own validity verdict from the rule `skills validate` shares with it. This project's verification checks reach the atlas through the fixed `verifiers inspect --json` read: which checks exist, where each was declared, the toolchain it drives, whether verify pins its argv, and whether the project catalog parses at all. A check's exact argument vector is host-only by design, because the schema permits its entries to be absolute paths, so the executable crosses as a toolchain class and the rest crosses as a count. Completed evaluations reach Runs through the fixed `eval inventory --json` read: which reports exist, when each ran, the route and serving configuration it ran under, its pass and token accounting, why its failures failed, what its behavioral judge concluded, and each scenario's trials. A report's runner attachments are the whole session transcript and are host-only by design, so they cross as a count. **Two reports carry the same ordinal exactly when `eval compare` would accept them as a baseline pair, which is the relation the compiled prompt hash establishes without the hash itself crossing.** Still to come: safe ACP settings and operations for target/auth lifecycle, memory review, resource installation, verifier authoring and dry-run, share import/export, doctor repair, and fleet admission, each with preview, confirmation, progress, and recovery.
|
|
63
|
+
- *Now:* `skills inventory --json` **moved** to `library inventory --json`. Everything else verified present. The "same ordinal = comparable baseline pair" trick is a genuinely good UI idea worth keeping: it lets the evals page group comparable reports without ever showing a hash.
|
|
64
|
+
|
|
65
|
+
7. Expand sanitized ACP events for context pressure and working-set activity, safety budgets and protected artifacts, provider retry/runtime notices, agent status, cost budgets, config reload, middleware failures, and shutdown phases.
|
|
66
|
+
- *Now:* still open. See the event-bus artifact for the exact channels and payload types.
|
|
67
|
+
|
|
68
|
+
8. Add the remaining session-native surfaces: task and decision ledgers, branch tree/fork, side questions, handoff review, saved prompts, and transcript export. **Saved prompts wait on a fixed `prompts inventory --json` read modelled on `skills inventory --json` (name, description, argument hint, scope, source, trusted, unavailable, and diagnostic counts; no bodies, paths, or diagnostic prose), owned by the harness; no Catalog stub that lists prompt roots as present is built before it.** Contextual help is implemented for the desktop app as the searchable reference; Clio Coder's own command reference stays terminal.
|
|
69
|
+
- *Now:* still open, and the `prompts inventory --json` field list is a ready-to-implement harness ticket. Note the last clause is **stale**: the new app has `/api/docs/tree|page|search` and a docs page, so Clio Coder's reference no longer stays terminal.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# GUI performance baseline and v0.5.0 regression budgets
|
|
2
|
+
|
|
3
|
+
> **Reference Design & Planning Blueprint**: This document is an architectural reference blueprint recovered from the deleted `apps/workbench` prototype. It specifies design doctrine, target parity, and inspection layouts for the early GUI preview (`apps/clio-coder-gui`), not verified runtime features of the core v0.5.0 terminal engine.
|
|
4
|
+
|
|
5
|
+
The tables below are the only measured rendering evidence this repository holds. They
|
|
6
|
+
were recorded against the retired Deno/Preact workbench, not against
|
|
7
|
+
`apps/clio-coder-gui`, so they are a starting budget rather than a current reading.
|
|
8
|
+
|
|
9
|
+
Conditions: 1600x1100 headless dark, Deno 2.9.5, headless Chrome 151.0.7922.169, 24 CPUs, WSL2 Linux 6.18, 60 Hz headless compositor, machine shared with other test lanes; before runs 2026-08-30 16:11Z prod and 16:14Z dev, after runs 17:28Z-17:30Z.
|
|
10
|
+
|
|
11
|
+
## 1. Workbench baseline, verbatim
|
|
12
|
+
|
|
13
|
+
### Production bundle (`dist/`, minified)
|
|
14
|
+
|
|
15
|
+
Columns: Run | Load | Turn | Duration ms | Tasks >50 ms (during/after stream) | Longest task ms | Frame p95/max ms | Frames >33 ms | Key→input p95 ms | Key→frame p95/max ms | Text→paint p50/p95 ms | DOM nodes | Heap peak MB | Draft kept | Scroll held / jump pill
|
|
16
|
+
|
|
17
|
+
before-prod | 6.9 | 1 | 4989 | 0 (·/·) | 26.4 | 16.7/16.8 | 0 | 1.9 | 17.1/20.1 | 22.6/34.4 | 863 | 10.4 | yes | yes/no
|
|
18
|
+
before-prod | 6.9 | 2 | 4889 | 0 (·/·) | 21.5 | 16.7/16.8 | 0 | 2 | 17.6/22.9 | 22.3/34 | 1371 | 12.1 | yes | yes/no
|
|
19
|
+
after-prod | 10.3 | 1 | 5360 | 2 (1/1) | 95.2 | 16.8/100.1 | 7 | 2.7 | 18.6/24.1 | 26.9/47.8 | 1221 | 14.4 | yes | yes/yes
|
|
20
|
+
after-prod | 10.3 | 2 | 5194 | 1 (0/1) | 75 | 16.8/50 | 1 | 2.9 | 15.6/17.1 | 25.3/33.4 | 2051 | 29.3 | yes | yes/yes
|
|
21
|
+
after-prod-r2 | 6.0 | 1 | 5122 | 1 (0/1) | 79.4 | 16.7/66.6 | 1 | 2.5 | 16.2/18.3 | 24.7/33 | 1221 | 13.3 | yes | yes/yes
|
|
22
|
+
after-prod-r2 | 6.0 | 2 | 4986 | 1 (0/1) | 55.9 | 16.8/33.4 | 1 | 2.1 | 15.7/16.5 | 26.2/33.1 | 2051 | 20.2 | yes | yes/yes
|
|
23
|
+
after-prod-r3 | 6.0 | 1 | 5089 | 1 (0/1) | 78.9 | 16.8/66.6 | 1 | 2.1 | 15.3/16.6 | 27/33.3 | 1221 | 13.3 | yes | yes/yes
|
|
24
|
+
after-prod-r3 | 6.0 | 2 | 5092 | 0 (0/0) | 49.3 | 16.7/33.4 | 1 | 2.3 | 16.8/20 | 24.5/34.3 | 2051 | 19.4 | yes | yes/yes
|
|
25
|
+
|
|
26
|
+
### Development bundle (`dist-dev/`, not minified)
|
|
27
|
+
|
|
28
|
+
Same columns:
|
|
29
|
+
before-dev | 17.7 | 1 | 4989 | 0 (·/·) | 26.6 | 16.8/33.3 | 0 | 2.1 | 16.9/22.1 | 23.3/33.2 | 863 | 10.5 | yes | yes/no
|
|
30
|
+
before-dev | 17.7 | 2 | 5085 | 0 (·/·) | 19 | 16.7/16.8 | 0 | 2.3 | 20.8/23.1 | 22.7/34.6 | 1371 | 14.4 | yes | yes/no
|
|
31
|
+
after-dev | 8.8 | 1 | 5305 | 1 (0/1) | 86.2 | 16.8/66.6 | 4 | 2.7 | 17.7/18.6 | 25.9/36.9 | 1221 | 20.2 | yes | yes/yes
|
|
32
|
+
after-dev | 8.8 | 2 | 5078 | 0 (0/0) | 46.9 | 16.8/33.4 | 1 | 2.3 | 16.3/21.7 | 26.5/32.9 | 2051 | 19.7 | yes | yes/yes
|
|
33
|
+
after-dev-r2 | 6.4 | 1 | 5019 | 1 (0/1) | 68.6 | 16.8/66.7 | 1 | 2.5 | 17/19.2 | 26.6/33.5 | 1221 | 13.6 | yes | yes/yes
|
|
34
|
+
after-dev-r2 | 6.4 | 2 | 4994 | 0 (0/0) | 44.1 | 16.7/33.3 | 0 | 2.2 | 16.6/17 | 26.2/34.7 | 2051 | 19.5 | yes | yes/yes
|
|
35
|
+
|
|
36
|
+
### Resume of a 64-turn session
|
|
37
|
+
|
|
38
|
+
Columns: Run | Load | Load ms | DOM nodes | Long tasks | Frame max ms | Heap MB
|
|
39
|
+
before-prod | 6.9 | 191 | 934 | 0 | 16.8 | 5.5
|
|
40
|
+
after-prod | 10.3 | 172 | 683 | 0 | 16.8 | 6.1
|
|
41
|
+
after-prod-r2 | 6.0 | 130 | 683 | 0 | 16.8 | 5.9
|
|
42
|
+
after-prod-r3 | 6.0 | 150 | 683 | 0 | 16.8 | 5.9
|
|
43
|
+
before-dev | 17.7 | 203 | 934 | 0 | 16.8 | 6.1
|
|
44
|
+
after-dev | 8.8 | 141 | 683 | 0 | 16.8 | 6.5
|
|
45
|
+
after-dev-r2 | 6.4 | 119 | 683 | 0 | 16.8 | 6.6
|
|
46
|
+
|
|
47
|
+
METHODOLOGY, carried over exactly:
|
|
48
|
+
- `before` = plain-text transcript, no Markdown/highlighting/diagrams/follow-latest. `after` = all of those present. The workload fixture differed between them (before at commit 3f6e140d: tool bursts every 64 chunks regardless of Markdown structure, 1,340 text events, ~1,390 messages; after: bursts between Markdown blocks, 1,358 text events, ~1,420 messages) and by nothing else.
|
|
49
|
+
- "During stream" counts long tasks whose `startTime <= lastTextAt`; "after stream" counts those that started later. That split is where diagram layout shows up.
|
|
50
|
+
- Load column is the 1-minute load average at run start. The machine was shared with other test lanes throughout; the 51 ms during-stream task in the load-10.3 run did not reproduce in the two runs that followed it and is reported rather than discarded.
|
|
51
|
+
- The 64-turn resume runs on a fresh server and a fresh home.
|
|
52
|
+
|
|
53
|
+
FINDINGS worth carrying (they are what the design decisions rest on):
|
|
54
|
+
- Streaming stays clean: in the two quiet after runs (load 6.0) no task over 50 ms started while text was arriving, in either turn.
|
|
55
|
+
- The only remaining long task is Mermaid layout, after the turn. `--keep-trace=1` attributed the first-turn task to a 76 ms microtask checkpoint immediately after the `flowDiagram` and `dagre` chunks compiled. Diagrams therefore wait until the turn settles and render one at a time with a macrotask between them (already ported: `client/render/mermaid.ts` queue, `StreamingContext` in `client/render/Markdown.tsx`). Turn 1 costs 55–79 ms including ~2.5 MB of lazy chunk loading; turn 2 costs 49–56 ms.
|
|
56
|
+
- Input stays responsive: keystroke→`input` p95 is 2–3 ms in every run; keystroke→next frame p95 is 15–19 ms after versus 17–21 ms before. The draft survived every turn.
|
|
57
|
+
- Event→paint grew ~3 ms at p50 (22–23 → 25–27 ms) and stayed 33–35 ms at p95 in the quiet runs; the 47.8 ms p95 is the load-10.3 run.
|
|
58
|
+
- DOM and heap: 1,221 nodes after turn 1 and 2,051 after turn 2, versus 863 and 1,371 for plain text; heap peak 13–20 MB versus 10–12 MB (29.3 MB is the load-10.3 run).
|
|
59
|
+
- Resume got cheaper — 119–172 ms and 683 nodes versus 191–203 ms and 934 — because settled turns render as compact conversation blocks and are memoized.
|
|
60
|
+
|
|
61
|
+
BUDGETS FOR THE NEW GUI. State them as fixed-before-measurement thresholds; the workload script should exit non-zero when a quiet-machine run (load average below 8.0) breaks one:
|
|
62
|
+
- Zero long tasks over 50 ms starting at or before the last text event, per turn.
|
|
63
|
+
- Frame p95 at or below 16.8 ms; at most 2 frames over 33.4 ms per turn.
|
|
64
|
+
- Keystroke→`input` p95 at or below 5 ms; keystroke→next frame p95 at or below 20 ms.
|
|
65
|
+
- Text→paint p50 at or below 30 ms, p95 at or below 40 ms.
|
|
66
|
+
- DOM nodes after turn 2 at or below 2,400; heap peak at or below 24 MB.
|
|
67
|
+
- `draftPreserved` true, `scrollHold.stayedPut` true, `scrollHold.jumpAffordanceVisible` true, every turn.
|
|
68
|
+
- 64-turn resume at or below 220 ms with at most 800 DOM nodes and zero long tasks.
|
|
69
|
+
- Complementary server-side budget already enforced by `tests/stream-load.test.ts`: over a 1,400-event turn, RSS growth under 128 MiB, heap growth under 64 MiB, event ring under 8 MiB.
|
|
70
|
+
|
|
71
|
+
NOT MEASURED — keep this list and extend it, do not quietly drop it:
|
|
72
|
+
- Real displays at 120 Hz or 144 Hz, and any GPU-composited path. The harness runs a 60 Hz headless compositor, so the frame figures bound work per frame and say nothing about 120 Hz behaviour. The rAF coalescing buffer is the mechanism that makes a 120 Hz display meaningful (it delivers per real frame, so a 120 Hz monitor gets ~600 commits per turn instead of ~300), but that has not been measured and must not be claimed. Measuring it needs a headed Chrome on a high-refresh display, which is a separate lane.
|
|
73
|
+
- Long code fences that never close during a stream: the tail re-lex grows with the unsettled block, and the workload's fences are short.
|
|
74
|
+
- Diagrams larger than a seven-node flowchart, or more than two per turn.
|
|
75
|
+
- A machine without concurrent load; every run above shared the CPU.
|
|
76
|
+
- Production Clio Coder output. The workload is a fixture whose shape was chosen to be representative, not recorded.
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# GUI settings write surface
|
|
2
|
+
|
|
3
|
+
> **Reference Design & Planning Blueprint**: This document is an architectural reference blueprint recovered from the deleted `apps/workbench` prototype. It specifies design doctrine, target parity, and inspection layouts for the early GUI preview (`apps/clio-coder-gui`), not verified runtime features of the core v0.5.0 terminal engine.
|
|
4
|
+
|
|
5
|
+
## 0. The correction that makes this artifact necessary
|
|
6
|
+
|
|
7
|
+
The source table in `apps/workbench/HARNESS_COVERAGE.md` has **27 rows, not 29**. More importantly, **every group name in it is a retired v1 key.** `src/core/defaults.ts:490` pins `version: 2`, and `src/core/config.ts` holds `V1_ONLY_ROOTS`, the set of roots that exist only to be migrated away from:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
identity, autonomy, runtimePlugins, orchestrator, background, memory, watchdog,
|
|
11
|
+
workers, routing, scope, modelSelector, budget, defaults, theme, terminal,
|
|
12
|
+
skills, library, attribution, delegation, keybindings, compaction, prewarm,
|
|
13
|
+
panes, retry, guardrails
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
That is 22 of the 27 audited group names. A settings form built from the extracted table would bind to keys the validator rejects.
|
|
17
|
+
|
|
18
|
+
**Settings v2 has exactly eight roots:** `version`, `targets`, `chat`, `fleet`, `context`, `safety`, `interface`, `integrations`.
|
|
19
|
+
|
|
20
|
+
Four v1 paths were **retired outright**, not moved (`SETTINGS_V1_RETIRED_PATHS`). Never resurrect them:
|
|
21
|
+
|
|
22
|
+
| Retired path | Reason (verbatim) |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| `identity` | it was accepted and ignored; no behavior is lost |
|
|
25
|
+
| `background.thinkingLevel` | proactive memory always resolves thinking off |
|
|
26
|
+
| `theme` | the only registered theme was not read by runtime rendering |
|
|
27
|
+
| `compaction.excludeLastTurns` | only the temporary legacy mask used it; `context.workingSet.protectLastTurns` remains |
|
|
28
|
+
|
|
29
|
+
## 1. Do not hand-maintain the allowlist — derive it
|
|
30
|
+
|
|
31
|
+
`src/core/settings-controls.ts` already exports a machine-generated registry over every v2 leaf:
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
export interface SettingControl {
|
|
35
|
+
path: string;
|
|
36
|
+
label: string;
|
|
37
|
+
description: string;
|
|
38
|
+
help?: string | undefined;
|
|
39
|
+
choices?: readonly string[] | undefined;
|
|
40
|
+
kind: "boolean" | "number" | "string" | "list" | "json";
|
|
41
|
+
optional: boolean;
|
|
42
|
+
readOnly: boolean;
|
|
43
|
+
}
|
|
44
|
+
export const SETTING_CONTROLS: readonly SettingControl[];
|
|
45
|
+
export function settingControl(path: string): SettingControl | undefined;
|
|
46
|
+
export function applyControlValue(settings: ClioSettings, path: string, text: string): void;
|
|
47
|
+
export function controlInstructions(control: SettingControl): string;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
It walks `DEFAULT_SETTINGS` recursively (`collectControlPaths`), treats a set of `STRUCTURED` paths as opaque JSON leaves, excludes `version` and `targets`, and attaches label/description/help from three parallel maps. `applyControlValue` runs the **cross-field** validation the GUI must not reimplement:
|
|
51
|
+
|
|
52
|
+
- a `*.target` must name an existing `targets[].id`;
|
|
53
|
+
- `chat.target` and `context.memory.target` additionally require an orchestrator-eligible runtime ("Chat and memory need an HTTP/native connection; this connection is for workers only.");
|
|
54
|
+
- changing a `*.target` **nulls the matching `*.model`**;
|
|
55
|
+
- a `*.model` without a `*.target` is rejected;
|
|
56
|
+
- `fleet.default.node` must be `local`, a configured node id, or cleared;
|
|
57
|
+
- every `fleet.profiles` entry must name an existing connection, and every `fleet.agentProfiles` value must name an existing profile;
|
|
58
|
+
- `chat.modelPicker.favorites` must survive `validateSettings` unchanged or it is rejected.
|
|
59
|
+
|
|
60
|
+
**Build the GUI form from `SETTING_CONTROLS` plus a policy overlay (this document's verdict column). Do not transcribe paths into TypeBox by hand.** A leaf added to `DEFAULT_SETTINGS` then appears in the GUI automatically, and one removed disappears, which is the drift this table exists to prevent.
|
|
61
|
+
|
|
62
|
+
## 2. Apply timing is already classified — surface it, do not guess it
|
|
63
|
+
|
|
64
|
+
`src/domains/config/classify.ts` is the authority. `settingsChangeKind(path)` returns `hotReload | nextTurn | restartRequired`, prefix-matched, **defaulting to `restartRequired` for anything unrecognized**. Every control in the GUI must render its timing. The exact sets:
|
|
65
|
+
|
|
66
|
+
**hotReload** (a running session applies it immediately): `interface.keybindings`, `safety.autonomy`, `chat.modelPicker`, `interface.outputDetail`, `interface.demo`, `interface.smoothStreaming`, `interface.panes.notifications`, `integrations.git.commitAttribution`, `interface.panes.files`, `safety.review`.
|
|
67
|
+
|
|
68
|
+
**nextTurn** (used by the next relevant request, dispatch, or explicit open): `targets`, `chat`, `fleet.default`, `fleet.profiles`, `fleet.rosters`, `fleet.agentProfiles`, `fleet.adaptiveRouting`, `fleet.nodes`, `fleet.permissions`, `fleet.retry`, `fleet.worktrees`, `fleet.limits`, `fleet.history`, `context`, `safety.limits`, `interface.terminalProgress`, `interface.desktopNotifications`, `integrations.projectResources`, `integrations.externalAgents`, `integrations.library`.
|
|
69
|
+
|
|
70
|
+
**restartRequired** (takes effect in the next session): `fleet.concurrency`, `interface.mode`, `interface.fullscreenScrollbar`, `interface.panes.enabled`, `integrations.runtimePlugins`.
|
|
71
|
+
|
|
72
|
+
The operator-facing sentences the TUI uses, from `controlInstructions`, verbatim: `"A running session can apply this immediately."` / `"Used by the next relevant request, dispatch, or explicit open."` / `"Takes effect in the next session."`
|
|
73
|
+
|
|
74
|
+
## 3. Section and group taxonomy — reuse it, do not invent one
|
|
75
|
+
|
|
76
|
+
`src/core/settings-navigation.ts` defines the eight sections the TUI and `configure` share. The GUI should use the same labels so the docs, the TUI and the GUI say the same words.
|
|
77
|
+
|
|
78
|
+
| id | Label | Description | Aliases |
|
|
79
|
+
| --- | --- | --- | --- |
|
|
80
|
+
| `targets` | Connections | Providers, endpoints, credentials, and available models. | connections, connection, auth, target, providers |
|
|
81
|
+
| `chat` | Chat | Chat model, thinking, model favorites, response length, and retries. | orchestrator, models, model, thinking, retry |
|
|
82
|
+
| `fleet` | Fleet | Worker models, profiles, routing, concurrency, retries, and run limits. | workers |
|
|
83
|
+
| `context` | Context & Memory | Context size, compaction, working set, and proactive memory. | compaction, memory |
|
|
84
|
+
| `safety` | Permissions & Limits | Autonomy, approval rules, spending limits, and safety review. | permissions, autonomy, budget, watchdog |
|
|
85
|
+
| `interface` | Appearance | Display, streaming, notifications, panes, and keyboard shortcuts. | appearance, terminal, panes, pane, layout |
|
|
86
|
+
| `integrations` | Integrations | Project skills, external agents, plugins, library, and Git attribution. | skills, skill, extensions, interop |
|
|
87
|
+
| `advanced` | Advanced | Diagnostics, configuration files, and the full settings editor. | all, settings, diagnostics, doctor, diag |
|
|
88
|
+
|
|
89
|
+
`settingsSectionForPath` routes by root with three deliberate exceptions that put policy together: `safetyNet`, `fleet.permissions.*`, and `integrations.externalAgents.defaults.toolGovernance` all route to **safety**, not to their own root. `settingsGroupForPath` supplies the sub-headings (Model picker, Recovery, Model & responses, Proactive memory, Compaction, Working set, Context limits, Worker approvals, Default model, Profiles, Agent routes, Automatic routing, Placement & capacity, Run history, Execution limits & recovery, Safety review, Spending & tool limits, External agent permissions, Autonomy, Files pane, Panes & layout, Display & keyboard, Resource library, External agents, Skills, plugins & Git).
|
|
90
|
+
|
|
91
|
+
## 4. What is writable over ACP *today*
|
|
92
|
+
|
|
93
|
+
`src/engine/acp/server.ts:1297`:
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
const ACP_SAFE_SETTINGS_KEYS = ["chat.target", "chat.model", "chat.thinkingLevel", "safety.autonomy"] as const;
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
served by `clio-coder/settings/get_safe` and `clio-coder/settings/patch_safe`, and mirrored exactly in `apps/clio-coder-gui/contracts/settings-safe.ts` as `SAFE_SETTINGS_KEYS`. **Anything wider than these four must be written by the GUI's own Hono server through the settings file, not through ACP** — which is legitimate, because the new app's server is a local process with file access, unlike the workbench's browser. That architectural difference is what unlocks the table below.
|
|
100
|
+
|
|
101
|
+
## 5. THE COVERAGE TABLE — v2 paths, with an explicit GUI verdict
|
|
102
|
+
|
|
103
|
+
Verdicts: **WRITABLE** (expose an editing control), **READ-ONLY-WITH-PROVENANCE** (show the effective value and where it came from; no control), **HIDDEN** (do not render at all).
|
|
104
|
+
|
|
105
|
+
### Root: `version` · `targets`
|
|
106
|
+
|
|
107
|
+
| v2 path | v1 row it replaces | Contains | Verdict | Reason |
|
|
108
|
+
| --- | --- | --- | --- | --- |
|
|
109
|
+
| `version` | `version` — "Hidden. Schema metadata, diagnostics only." | Literal `2`. | **HIDDEN** | Schema metadata. `SETTING_CONTROLS` already filters it out. Surface it only in a diagnostics panel. |
|
|
110
|
+
| `targets[]` | `targets` — "**Partial**. Read/probe/select plus offline model capabilities exist. URLs, secrets, authoring, conversion, and removal need typed host operations." | Array of target descriptors: id, runtime, baseUrl, models, `ollama.numCtx`, `maxConcurrentRequests`, credentials. | **READ-ONLY-WITH-PROVENANCE** for the list; **WRITABLE via dedicated flows only** for lifecycle. | Also excluded from `SETTING_CONTROLS` on purpose: a target is a record with a lifecycle, not a leaf. Drive it through `targets add/use/remove/rename/probe` equivalents (the new app already has `/use`, `/remove`, `/probe`). **Never render a credential field.** |
|
|
111
|
+
|
|
112
|
+
### Root: `chat` (replaces v1 `orchestrator`, `scope`, `modelSelector`, `defaults.maxTokens`, `prewarm`, `retry`)
|
|
113
|
+
|
|
114
|
+
| v2 path | Kind / choices | Default | Timing | Verdict | Reason |
|
|
115
|
+
| --- | --- | --- | --- | --- | --- |
|
|
116
|
+
| `chat.target` | string, optional | `null` | nextTurn | **WRITABLE** | Already in `ACP_SAFE_SETTINGS_KEYS`. Must be a select over `targets[].id` — free text will be rejected by `applyControlValue`. Changing it nulls `chat.model`; the UI must show that. |
|
|
117
|
+
| `chat.model` | string, optional | `null` | nextTurn | **WRITABLE** | Safe key. Requires `chat.target` first. |
|
|
118
|
+
| `chat.thinkingLevel` | enum `off\|minimal\|low\|medium\|high\|xhigh\|max` | `low` | nextTurn | **WRITABLE** | Safe key. The v1 row said "Target/model/thinking with next-turn timing" — still exactly right. |
|
|
119
|
+
| `chat.modelPicker.cycleSet` | list | `[]` | hotReload | **WRITABLE** | v1 `scope` — "Model-cycle scope; typed setting and model catalog required." The catalog now exists (offline model inventory), so this is buildable: a multi-select over target/model refs. |
|
|
120
|
+
| `chat.modelPicker.favorites` | list | `[]` | hotReload | **WRITABLE** | v1 `modelSelector` — "useful in the graphical picker after safe settings expand." Validated: entries must be `target-id/model-id` from an existing connection. |
|
|
121
|
+
| `chat.modelPicker.recentLimit` | number | `12` | hotReload | **WRITABLE** | Harmless bound. |
|
|
122
|
+
| `chat.maxOutputTokens` | number | `0` | nextTurn | **WRITABLE** | v1 `defaults.maxTokens` — "explain model/context clamps rather than promising the requested number." Keep that instruction: the help text says it is clamped down to each model's max-output cap and remaining window, and `0` means per-model caps only. |
|
|
123
|
+
| `chat.prewarm` | boolean | `false` | nextTurn | **WRITABLE** | v1 `prewarm.enabled` was "None — needs safe setting and reported prewarm/cache outcome." The control is safe on its own; ship it with the honest caveat from the help text (local-native targets and interactive sessions only) and **never infer a cache hit from latency** — that rule from the v1 row still stands. |
|
|
124
|
+
| `chat.retry.enabled` | boolean | `true` | nextTurn | **WRITABLE** | v1 `retry` — "needs retry status events and next-turn setting." The setting half is real today; ship the control, leave the status display blocked on the event work. |
|
|
125
|
+
| `chat.retry.maxRetries` | number | `3` | nextTurn | **WRITABLE** | |
|
|
126
|
+
| `chat.retry.baseDelayMs` | number | `2000` | nextTurn | **WRITABLE** | |
|
|
127
|
+
| `chat.retry.maxDelayMs` | number | `60000` | nextTurn | **WRITABLE** | |
|
|
128
|
+
| `chat.retry.streamStallMs` | number | `180000` | nextTurn | **WRITABLE** | Measured from the last token, not the request, so a slow-but-alive stream is never aborted. Say so in the control. |
|
|
129
|
+
| `chat.retry.firstTokenStallMs` | number | `600000` | nextTurn | **WRITABLE** | Not in `DEFAULT_SETTINGS`' walk path by accident — it is, via `SETTINGS_CENTER_V2_PATH_OVERRIDES`. `0` never aborts a call that has not started streaming. |
|
|
130
|
+
|
|
131
|
+
### Root: `fleet` (replaces v1 `workers`, `fleet.nodes`, `routing`, `budget.concurrency`, parts of `guardrails`)
|
|
132
|
+
|
|
133
|
+
| v2 path | Kind / choices | Default | Timing | Verdict | Reason |
|
|
134
|
+
| --- | --- | --- | --- | --- | --- |
|
|
135
|
+
| `fleet.default.target` | string, optional | `null` | nextTurn | **WRITABLE** | v1 `workers` — "Defaults, roster, editing, retries, permission escalation, and resilience need safe settings plus typed events." The defaults half is a plain select now. |
|
|
136
|
+
| `fleet.default.model` | string, optional | `null` | nextTurn | **WRITABLE** | |
|
|
137
|
+
| `fleet.default.thinkingLevel` | enum THINKING_LEVELS | `off` | nextTurn | **WRITABLE** | |
|
|
138
|
+
| `fleet.default.node` | string, optional | unset | nextTurn | **WRITABLE** | Must be `local`, a configured node id, or cleared. Render as a select built from `fleet.nodes`. |
|
|
139
|
+
| `fleet.profiles` | json | `{}` | nextTurn | **WRITABLE via a guided editor**, not raw JSON | Each profile must name an existing connection. A GUI has no excuse for a JSON textarea here: build the row editor the TUI's "profile actions" describe. |
|
|
140
|
+
| `fleet.rosters` | json | `{}` | nextTurn | **WRITABLE via a guided editor** | Named teams of worker profiles for council/fleet runs. Same reasoning. |
|
|
141
|
+
| `fleet.agentProfiles` | json | `{}` | nextTurn | **WRITABLE via a guided editor** | Maps native agent names to profile names; a dangling reference is rejected with "Agent X names missing profile Y". A two-column select grid. |
|
|
142
|
+
| `fleet.nodes` | json | `[]` | nextTurn | **WRITABLE with a preflight gate** | v1 `fleet.nodes` — "SSH node identity, capacity, labels, residency; secret/path handling and preflight required." **That caveat stands.** Do not accept a node without running the preflight; do not render any credential field. |
|
|
143
|
+
| `fleet.adaptiveRouting.roles` | list, values `researcher\|verifier\|reviewer\|judge` | `[]` | nextTurn | **WRITABLE** | v1 `routing` — "show shadow vs active decisions only when typed events exist." The activation list is a closed vocabulary and is safe to edit; the *live decision display* stays blocked. Keep the two apart. |
|
|
144
|
+
| `fleet.adaptiveRouting.postures` | list, values `quality\|balanced\|latency\|economy` | `[]` | nextTurn | **WRITABLE** | `manual` is deliberately not an activatable posture. |
|
|
145
|
+
| `fleet.adaptiveRouting.agentRoles` | json (pairs of `{agentId, executionRole}`) | `[]` | nextTurn | **WRITABLE via a pair editor** | Deliberately exact pairs, "because independent agent and role lists would authorize their whole cross-product." Do not render two independent multi-selects. The agentId `auto` is reserved. |
|
|
146
|
+
| `fleet.permissions.mode` | enum `deny\|escalate\|fail` | `deny` | nextTurn | **WRITABLE** | Routes to the **safety** section, not fleet. Each value has operator help text already written. |
|
|
147
|
+
| `fleet.permissions.escalation.timeoutMs` | number | `120000` | nextTurn | **WRITABLE** | Only the `escalate` posture reads it. |
|
|
148
|
+
| `fleet.permissions.escalation.fallback` | enum `deny\|fail` | `deny` | nextTurn | **WRITABLE** | |
|
|
149
|
+
| `fleet.concurrency` | `auto` or positive int | `auto` | **restartRequired** | **WRITABLE** | v1 `budget` concurrency half. Must show "Takes effect in the next session." |
|
|
150
|
+
| `fleet.worktrees.root` | string | `disk` | nextTurn | **WRITABLE** | `disk`, `tmpfs`, `auto`, or an absolute directory. |
|
|
151
|
+
| `fleet.retry.maxRetries` | number | `2` | nextTurn | **WRITABLE** | |
|
|
152
|
+
| `fleet.retry.routeCooldownMs` | number | `15000` | nextTurn | **WRITABLE** | `0` disables the cooldown. |
|
|
153
|
+
| `fleet.retry.breakerThreshold` | number | `1` | nextTurn | **WRITABLE** | Consecutive route failures before work stops going to that route. |
|
|
154
|
+
| `fleet.limits.toolCallsPerRun` | number | `GUARDRAIL_DEFAULTS.workerToolCallCap` (150) | nextTurn | **WRITABLE** | v1 `guardrails` — "Numeric behavioral backstops; safety surface with exact effective source and restart/turn timing." Bounds *admitted* calls, not attempts. |
|
|
155
|
+
| `fleet.limits.internalRunTimeoutMs` | number | `900000` | nextTurn | **WRITABLE** | 15 minutes; covers the wiki documenter and bootstrap scout. |
|
|
156
|
+
| `fleet.history.maxRuns` | number | `1000` | nextTurn | **WRITABLE — with a destructive warning** | Runs leaving the ring also lose their event journal directory. Lowering this deletes journals the GUI is rendering. Confirm it. |
|
|
157
|
+
| `fleet.history.journal` | boolean | `true` | nextTurn | **WRITABLE** | Whether every dispatched run's event tail is written to disk. Turning it off blinds the GUI's own run-journal surface; say so. |
|
|
158
|
+
|
|
159
|
+
### Root: `context` (replaces v1 `compaction`, `context.workingSet`, `background`, `memory.intervention`)
|
|
160
|
+
|
|
161
|
+
| v2 path | Kind / choices | Default | Timing | Verdict | Reason |
|
|
162
|
+
| --- | --- | --- | --- | --- | --- |
|
|
163
|
+
| `context.toolResultMaxBytes` | number | `65536` | nextTurn | **WRITABLE** | Min 4096. The 192KB per-turn observation pool remains authoritative; three full 64KB results consume it. Show that arithmetic. |
|
|
164
|
+
| `context.workingSet.enabled` | boolean | `true` | nextTurn | **WRITABLE** | v1 `context.workingSet` — "pair controls with prune/recall ledger facts." The control is safe alone; the ledger display is blocked on `context.pruned`/`context.recalled` events. |
|
|
165
|
+
| `context.workingSet.policy` | enum `structural-v1\|age-horizon` | `structural-v1` | nextTurn | **WRITABLE** | |
|
|
166
|
+
| `context.workingSet.target` | number (0..1 exclusive) | `0.6` | nextTurn | **WRITABLE** | Must sit below `context.compaction.threshold`; the GUI should warn if it does not. |
|
|
167
|
+
| `context.workingSet.protectLastTurns` | number ≥ 1 | `6` | nextTurn | **WRITABLE** | |
|
|
168
|
+
| `context.workingSet.minEvictableTokens` | number ≥ 0 | `200` | nextTurn | **WRITABLE** | Break-even is near 50 tokens; 200 is the churn guard. |
|
|
169
|
+
| `context.compaction.auto` | boolean | `true` | nextTurn | **WRITABLE** | v1 `compaction` — "needs pressure and compaction events before a calibrated control." The switch itself is not calibration; ship it, and gate only the *pressure meter* on the events. |
|
|
170
|
+
| `context.compaction.threshold` | number (0..1) | `0.8` | nextTurn | **WRITABLE** | `pressure = estimated tokens ÷ context window`. |
|
|
171
|
+
| `context.compaction.model` | string, optional | unset | nextTurn | **WRITABLE** | Blank uses the orchestrator. |
|
|
172
|
+
| `context.compaction.systemPrompt` | string (path), optional | unset | nextTurn | **READ-ONLY-WITH-PROVENANCE** | It is a filesystem path to a prompt override. A browser form that writes an arbitrary path into the config is the one control in this root worth withholding until there is a file picker bounded to the workspace. |
|
|
173
|
+
| `context.memory.enabled` | boolean | `true` | nextTurn | **WRITABLE** | v1 `memory.intervention` — "pair with observed memory steps, not controls alone." Keep that as a *presentation* requirement (show `memory.stepCompleted` activity next to it), not a reason to withhold. |
|
|
174
|
+
| `context.memory.target` | string, optional | `null` | nextTurn | **WRITABLE** | v1 `background` — "needs safe ACP settings and cost explanation." Requires an orchestrator-eligible runtime. Show the cost note. |
|
|
175
|
+
| `context.memory.model` | string, optional | `null` | nextTurn | **WRITABLE** | Small non-reasoning model, task memory steps only. |
|
|
176
|
+
| `context.memory.cadenceToolCalls` | number | `10` | nextTurn | **WRITABLE** | |
|
|
177
|
+
| `context.memory.trajectorySteps` | number | `8` | nextTurn | **WRITABLE** | |
|
|
178
|
+
| `context.memory.maxOutputTokens` | number | `2000` | nextTurn | **WRITABLE** | |
|
|
179
|
+
| `context.memory.timeoutMs` | number | `60000` | nextTurn | **WRITABLE** | |
|
|
180
|
+
|
|
181
|
+
### Root: `safety` (replaces v1 `autonomy`, `budget.sessionCeilingUsd`, `watchdog`, parts of `guardrails`)
|
|
182
|
+
|
|
183
|
+
| v2 path | Kind / choices | Default | Timing | Verdict | Reason |
|
|
184
|
+
| --- | --- | --- | --- | --- | --- |
|
|
185
|
+
| `safety.autonomy` | enum `read-only\|suggest\|auto-edit\|full-auto` | `auto-edit` | **hotReload** | **WRITABLE** | Already an ACP safe key. v1 row: "Plain-language default for the next session; bound-session autonomy stays separate." **That separation is mandatory** — the session's bound autonomy and the settings default are two different facts and the GUI must label which it is showing. Per-value help text already exists for all four levels; render it. |
|
|
186
|
+
| `safety.limits.sessionCostUsd` | number | `5` | nextTurn | **WRITABLE** | v1 `budget` — "Needs live cost provenance and restart timing before controls." Restart timing is resolved (nextTurn). Live cost provenance is still missing, so ship the control and say the alert is informational: `budget.alert` never rejects an enqueue in v0.x. |
|
|
187
|
+
| `safety.limits.chatToolCallsPerTurn` | number ≥ 1 | 60 | nextTurn | **WRITABLE** | A backstop against a model spraying calls, not a routine ceiling; a repo-wide audit legitimately runs dozens. The hard interrupt ceiling sits a fixed margin above. |
|
|
188
|
+
| `safety.limits.readBytesPerCall` | number ≥ 1 | 51200 | nextTurn | **WRITABLE** | Clamped up to a 1KB floor at use. |
|
|
189
|
+
| `safety.limits.observationBytesPerTurn` | number ≥ 1 | 196608 | nextTurn | **WRITABLE** | One pool shared by every observation-producing tool in a turn. |
|
|
190
|
+
| `safety.review.enabled` | boolean | `false` | **hotReload** | **WRITABLE** | v1 `watchdog` said: "Harness documentation says ACP runs do not fire it, so a GUI switch would currently be dead." **That verdict is now a live design question, not a fact to inherit.** The registration reads its settings live on every trigger, so it is hot-reloadable — but `src/core/settings-controls.ts` still states "Headless and ACP runs never fire it." **If the new GUI drives turns over ACP, this control IS still dead and must be rendered disabled with that exact explanation, not hidden.** A hidden dead switch is how the operator learns the GUI lies. |
|
|
191
|
+
| `safety.review.target` | string, optional | unset | hotReload | **WRITABLE (disabled with the same ACP caveat)** | Blank reuses the session's active target. |
|
|
192
|
+
| `safety.review.cadenceToolCalls` | number, optional | unset | hotReload | **WRITABLE (same caveat)** | Blank fires at turn end only. |
|
|
193
|
+
| `safetyNet` (virtual row) | — | — | — | **READ-ONLY-WITH-PROVENANCE** | Not a settings key: it is the always-on rails tuned in `.clio-coder/safety.yaml`. `settingsSectionForPath` routes it to safety. Show it as a provenance card pointing at the file; do not offer to edit YAML through a form. |
|
|
194
|
+
|
|
195
|
+
### Root: `interface` (replaces v1 `terminal`, `theme`, `keybindings`, `panes`)
|
|
196
|
+
|
|
197
|
+
The v1 table's blanket verdict was **not applicable**: "Progress, transcript verbosity, TUI mode, scrollbar, and stream pacing are terminal presentation. Never mirror dead TUI switches." **That reasoning is sound and mostly still applies, but it is not uniform.** Split it:
|
|
198
|
+
|
|
199
|
+
| v2 path | Kind / choices | Default | Timing | Verdict | Reason |
|
|
200
|
+
| --- | --- | --- | --- | --- | --- |
|
|
201
|
+
| `interface.demo` | boolean | `true` | hotReload | **WRITABLE** | Not terminal presentation. It governs capability suggestions and contextual guidance, which a GUI also wants. |
|
|
202
|
+
| `interface.outputDetail` | enum `compact\|standard\|detailed` | `standard` | hotReload | **WRITABLE** | The v1 table called this dead TUI presentation and the parity matrix retired `/output` for the same reason. **Both are wrong now**: it governs how much reasoning, tool input, and live tool output the transcript shows, which is exactly the GUI's agent-viewport density control. Bind the GUI's own density toggle to it so the TUI and GUI agree. |
|
|
203
|
+
| `interface.smoothStreaming` | enum `off\|auto\|on` | `auto` | hotReload | **HIDDEN** | Grapheme-safe pacing against a TTY with stdout backpressure. Meaningless in a browser. The GUI should own its own render pacing (see the 120Hz goal) and never write this key. |
|
|
204
|
+
| `interface.mode` | enum `regular\|fullscreen` | `regular` | restartRequired | **HIDDEN** | Terminal scrollback vs alternate screen. Genuinely not applicable. |
|
|
205
|
+
| `interface.fullscreenScrollbar` | enum `hidden\|auto\|always` | `auto` | restartRequired | **HIDDEN** | Same. |
|
|
206
|
+
| `interface.terminalProgress` | boolean | `false` | nextTurn | **HIDDEN** | OSC 9;4 taskbar badges. |
|
|
207
|
+
| `interface.desktopNotifications` | boolean | `false` | nextTurn | **READ-ONLY-WITH-PROVENANCE** | The v1 row said "Desktop notifications are GUI-local only." The key controls the *TUI's* OSC 777/OSC 9 notifications on an interactive TTY; the GUI should own its own Notification API preference separately and show this one as the terminal's setting so the two are not confused. |
|
|
208
|
+
| `interface.panes.enabled` | enum `off\|auto` | `off` | restartRequired | **READ-ONLY-WITH-PROVENANCE** | The `embedded` rung is declared and refuses. `blocked-on-phase4` covers the runtime status, not the config — but a GUI offering to change a mux host's activation it cannot observe is worse than showing the value. |
|
|
209
|
+
| `interface.panes.notifications` | enum `failures\|all\|off` | `failures` | hotReload | **READ-ONLY-WITH-PROVENANCE** | Same. |
|
|
210
|
+
| `interface.panes.layout` | enum `off\|workers\|cockpit` | `off` | restartRequired | **READ-ONLY-WITH-PROVENANCE** | Same. |
|
|
211
|
+
| `interface.panes.workers.ratio` | number | `0.34` | restartRequired | **HIDDEN** | Terminal geometry. |
|
|
212
|
+
| `interface.panes.files.enabled` | boolean | `false` | hotReload | **READ-ONLY-WITH-PROVENANCE** | Yazi bridge; `blocked-on-phase4`. |
|
|
213
|
+
| `interface.panes.files.mode` | enum `companion\|chooser` | `companion` | hotReload | **READ-ONLY-WITH-PROVENANCE** | |
|
|
214
|
+
| `interface.panes.files.profile` | enum `managed\|user` | `managed` | hotReload | **READ-ONLY-WITH-PROVENANCE** | |
|
|
215
|
+
| `interface.panes.files.followCwd` | boolean | `true` | hotReload | **READ-ONLY-WITH-PROVENANCE** | |
|
|
216
|
+
| `interface.panes.files.ratio` | number | `0.3` | hotReload | **HIDDEN** | Terminal geometry. |
|
|
217
|
+
| `interface.keybindings` | json (map) | `{}` | hotReload | **HIDDEN for the TUI map; the GUI owns its own registry** | v1 verdict, still exactly right: "Clio Coder TUI bindings are **not applicable**; GUI shortcuts need their own accessible registry." Keep the GUI's shortcuts in GUI-local storage with a visible, searchable, accessible registry. Do not write TUI keys. |
|
|
218
|
+
|
|
219
|
+
### Root: `integrations` (replaces v1 `skills.trustProjectCompatRoots`, `library`, `attribution.gitCommits`, `delegation`, `runtimePlugins`)
|
|
220
|
+
|
|
221
|
+
| v2 path | Kind / choices | Default | Timing | Verdict | Reason |
|
|
222
|
+
| --- | --- | --- | --- | --- | --- |
|
|
223
|
+
| `integrations.projectResources.trustProjectImports` | boolean | `false` | nextTurn | **WRITABLE — with an explicit trust warning** | v1 `skills.trustProjectCompatRoots` — "Trust boundary. Needs clear project/user provenance and next-turn timing." Both are now available. Enabling exposes `.claude/skills`, `.codex/skills`, `.github/…` to the model. The control must name the roots it is about to trust and must be per-project-visible, not a silent global. |
|
|
224
|
+
| `integrations.externalAgents.entries` | json (array) | `[]` | nextTurn | **WRITABLE via a guided editor only** | v1 `delegation` — "External ACP agents, timeouts, tool governance, bounded context, labels; security-sensitive Agent setup." Each entry carries `command`, `args[]`, `cwd`, `env.*` — **this is arbitrary process execution defined through a web form.** Never a raw JSON textarea in a browser. Use the guided "External agents" flow for known integrations; for a custom entry, require an explicit confirmation naming the exact argv that will run. |
|
|
225
|
+
| `integrations.externalAgents.defaults.connectTimeoutMs` | number | `DEFAULT_DELEGATION_CONNECT_TIMEOUT_MS` | nextTurn | **WRITABLE** | |
|
|
226
|
+
| `integrations.externalAgents.defaults.turnTimeoutMs` | number | `DEFAULT_DELEGATION_TURN_TIMEOUT_MS` | nextTurn | **WRITABLE** | |
|
|
227
|
+
| `integrations.externalAgents.defaults.permissionTimeoutMs` | number | `DEFAULT_DELEGATION_PERMISSION_TIMEOUT_MS` | nextTurn | **WRITABLE** | |
|
|
228
|
+
| `integrations.externalAgents.defaults.toolGovernance` | enum `clio-coder-policy\|agent-managed\|deny-all` | `clio-coder-policy` | nextTurn | **WRITABLE** | Routes to **safety**. Per-value help already written for all three. |
|
|
229
|
+
| `integrations.runtimePlugins` | list | `[]` | **restartRequired** | **WRITABLE — with a supply-chain warning** | v1 `runtimePlugins` — "Extensions/runtime setup; restart-required and supply-chain sensitive." Package names loaded at startup. Same class of risk as external agents: name what will load and require confirmation. |
|
|
230
|
+
| `integrations.library.catalog` | string (path), optional | `null` | nextTurn | **READ-ONLY-WITH-PROVENANCE** | An absolute path written through a web form. Blank uses the config-directory catalog, which is the right default. Withhold until there is a bounded picker. |
|
|
231
|
+
| `integrations.library.remote` | string (URL), optional | `null` | nextTurn | **WRITABLE** | v1 `library` — "Catalog/remote/confirmation/sync in the Resource library." Setting it is not enough to sync; the remote must also be confirmed. |
|
|
232
|
+
| `integrations.library.confirmedRemote` | string, optional | `null` | nextTurn | **READ-ONLY — hard** | `SETTING_CONTROLS` marks this the **only** `readOnly: true` control, and `parseControlValue` throws on any attempt: *"This value is recorded by its dedicated confirmation flow; it cannot be edited here."* Confirming a remote by typing it here would be the record confirming itself. Render it as a status line plus a **Confirm remote** action that runs `library remote confirm <url>`. |
|
|
233
|
+
| `integrations.library.sync` | boolean | `false` | nextTurn | **WRITABLE** | Off means `library sync` and `push` refuse before touching the network, whatever the remote says. This is the network kill switch; render it as one. |
|
|
234
|
+
| `integrations.git.commitAttribution` | boolean | `true` | **hotReload** | **WRITABLE** | v1 `attribution.gitCommits` — "Commit evidence policy; safe setting plus commit-provenance output." Role trailers are added only where Clio has trusted evidence; disabling leaves subsequent commit messages byte-for-byte unchanged. |
|
|
235
|
+
|
|
236
|
+
## 6. Summary of the allowlist this table authorizes
|
|
237
|
+
|
|
238
|
+
- **WRITABLE:** all of `chat.*` (14), most of `fleet.*` (23, four of them through guided editors and one behind preflight), all of `context.*` except `compaction.systemPrompt` (16), all of `safety.*` (8, three rendered disabled-with-reason if turns run over ACP), two of `interface.*` (`demo`, `outputDetail`), seven of `integrations.*`. **≈70 controls.**
|
|
239
|
+
- **READ-ONLY-WITH-PROVENANCE:** `targets[]` list, `context.compaction.systemPrompt`, `safetyNet`, `interface.desktopNotifications`, the six `interface.panes.*` capability rungs, `integrations.library.catalog`, `integrations.library.confirmedRemote`.
|
|
240
|
+
- **HIDDEN:** `version`, `interface.smoothStreaming`, `interface.mode`, `interface.fullscreenScrollbar`, `interface.terminalProgress`, `interface.panes.*.ratio`, `interface.keybindings`.
|
|
241
|
+
|
|
242
|
+
Every WRITABLE control goes through `applyControlValue`, which validates the whole proposed configuration, not the single field. Surface `SettingsValidationError.issues` as field-level errors.
|
|
243
|
+
|
|
244
|
+
## 7. What the app ships (v0.5.0)
|
|
245
|
+
|
|
246
|
+
`GET /api/workspaces/:id/settings/controls` returns one row per `SETTING_CONTROLS` entry minus the hidden set, each with its section and group from `settings-navigation.ts`, its timing from `settingsChangeKind`, its per-value help, its effective value in the text form `applyControlValue` parses, and the layer that set it. `PATCH` on the same path takes `{path, value, confirmed?}` and runs `updateLayeredSettings(cwd, (s) => applyControlValue(s, path, value))` in the ops lane, so every write is serial, lands in the user layer, and passes the engine's cross-field validation. The response lists every control whose value changed, which is how the page says that changing a connection also cleared its model. The adapter is `apps/clio-coder-gui/server/clio/adapters/settings-controls.ts`; its policy overlay names only the hidden, read-only, noted and confirmed paths. A test asserts the surface equals the registry minus the hidden set.
|
|
247
|
+
|
|
248
|
+
Four departures from the table above, each deliberate:
|
|
249
|
+
|
|
250
|
+
1. **Structured collections are read-only for now.** `fleet.profiles`, `fleet.rosters`, `fleet.agentProfiles`, `fleet.nodes`, `fleet.adaptiveRouting.agentRoles` and `integrations.externalAgents.entries` cross as an entry count with the reason that a guided editor does not exist yet. No JSON textarea ships. The guided editors remain open work.
|
|
251
|
+
2. **`safety.review.*` is writable with a caveat, not disabled.** The switch is dead for conversations in this app and live for terminal sessions that share the same file. The row says exactly that. A disabled control would have stopped an operator from configuring the terminal from here for no safety gain.
|
|
252
|
+
3. **A value set by a project, local project or command-line layer is read-only.** The write lands in the user layer, which those layers outrank, and `updateLayeredSettings` refuses such a write anyway. The row names the layer instead of offering an editor that answers 409.
|
|
253
|
+
4. **Origin is the exact leaf's source.** `settingsSourceFor` walks up to parent objects, and a parent recorded as a project source does not set its absent children. Using it marked all of `chat.*` project-owned when one project file set `chat.model`.
|
|
254
|
+
|
|
255
|
+
Confirmation is enforced by the server, not the page: `fleet.history.maxRuns`, `integrations.projectResources.trustProjectImports` and `integrations.runtimePlugins` answer 422 without `confirmed: true`, and the page shows the named consequence beside the checkbox.
|
|
256
|
+
|
|
257
|
+
The earlier effective-values list moved to `/settings/effective`. The `Confirm remote` action and the GUI-local notification and shortcut preferences are not part of this change.
|
|
258
|
+
|
|
259
|
+
## 8. Provider onboarding (v0.5.0)
|
|
260
|
+
|
|
261
|
+
Targets has an **Add a connection** form. `GET /api/target-runtimes` is an in-process read of `listProviderSupportEntries` with the authentication vocabulary `configure --list` prints (`none`, `login`, `connected`, `credential`, `needs-key`, `key-optional`), a configured-target count, model hints, and `modelRequired` for runtimes whose ids come from a provider catalog. Status crosses; no credential does.
|
|
262
|
+
|
|
263
|
+
`POST /api/workspaces/:id/targets` admits `{id, runtime, url?, model?, apiKeyEnv?, useForChat?}` and runs `clio-coder configure --id … --runtime …` through the closed command table as a `targets.add` operation. The CLI stays the authority: it greets LM Studio, fingerprints native runtimes, lists the endpoint's models and refuses a catalog runtime without a model. The command table marks this command `explain`, so the runner keeps the first 2 KiB of stderr. A refusal reaches the page as the CLI wrote it, and a save the CLI could not verify says so instead of reading as a clean success. Before this, every failed CLI operation read "exited with exit code 2".
|
|
264
|
+
|
|
265
|
+
**There is no key field, and the command table has no credential flag.** `--api-key` would put a secret in a process argv. A key is named by environment variable, or stored from a terminal with `clio-coder auth login <runtime>`; the form says which applies for the chosen runtime. The contract rejects an `apiKey` property, a non-http(s)/ws(s) URL, and any value that starts with a dash.
|
|
266
|
+
|
|
267
|
+
Still terminal-only: OAuth sign-in, stored keys, `convert`, `rename`, capability overrides, fleet profiles and gateway or lifecycle flags.
|