@iowarp/clio-coder 0.4.9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +11 -3
- package/CHANGELOG.md +153 -0
- package/CODE_OF_CONDUCT.md +10 -0
- package/CONTRIBUTING.md +208 -382
- package/NOTICE +8 -2
- package/README.md +199 -418
- package/ROADMAP.md +82 -0
- package/SECURITY.md +14 -11
- package/dist/acp-KS7ARGV6.js +132 -0
- package/dist/agents-YOGJ2YEJ.js +163 -0
- package/dist/assets/codewiki.json +1 -1
- package/dist/auth-CEDCO6O6.js +557 -0
- package/dist/background-YWTBPSQU.js +39 -0
- package/dist/builtins-GDYO4RTR.js +23 -0
- package/dist/chunk-27YTM2CV.js +175 -0
- package/dist/chunk-2AF6YC7Q.js +75 -0
- package/dist/chunk-2DTIWSAW.js +381 -0
- package/dist/chunk-2EMLKSCX.js +262 -0
- package/dist/chunk-2OJ3YZQP.js +665 -0
- package/dist/chunk-2VLYHHFT.js +35 -0
- package/dist/chunk-2WVPJF3Z.js +204 -0
- package/dist/chunk-33OASOS6.js +176 -0
- package/dist/chunk-3BD2LXYJ.js +19 -0
- package/dist/chunk-3JHUFKG7.js +30 -0
- package/dist/chunk-3JLTRPN7.js +711 -0
- package/dist/chunk-3LT34CAM.js +2796 -0
- package/dist/chunk-3O5JWP4L.js +1670 -0
- package/dist/chunk-3UW3KU4A.js +21 -0
- package/dist/chunk-4A6YRGV4.js +569 -0
- package/dist/chunk-4D2BRCZ3.js +67 -0
- package/dist/chunk-4SYHGVDE.js +668 -0
- package/dist/chunk-4VDHLCF5.js +66 -0
- package/dist/chunk-4WOOTKFD.js +637 -0
- package/dist/chunk-4WV4PI66.js +80 -0
- package/dist/chunk-53OXPRI6.js +195 -0
- package/dist/chunk-55RMDDFM.js +1347 -0
- package/dist/chunk-56XP4FJU.js +2025 -0
- package/dist/chunk-5B3RTYAK.js +123 -0
- package/dist/chunk-5CD243WE.js +45 -0
- package/dist/chunk-5JQR5B4D.js +709 -0
- package/dist/chunk-5KQEUIWM.js +597 -0
- package/dist/chunk-5LP5FNNR.js +915 -0
- package/dist/chunk-62UK7AGW.js +9344 -0
- package/dist/chunk-6CTHLZFB.js +563 -0
- package/dist/chunk-6EJYVCTN.js +23 -0
- package/dist/chunk-6OWUM2NC.js +12289 -0
- package/dist/chunk-6RJMYYIE.js +1023 -0
- package/dist/chunk-6W75D37F.js +643 -0
- package/dist/chunk-733ZBT5P.js +1721 -0
- package/dist/chunk-77DCC6JZ.js +3710 -0
- package/dist/chunk-7QXCO3AF.js +156 -0
- package/dist/chunk-7RET77VB.js +481 -0
- package/dist/chunk-A4MVRV4C.js +65 -0
- package/dist/chunk-ALJWT6O6.js +93 -0
- package/dist/chunk-AVSR2HKI.js +232 -0
- package/dist/chunk-B7GY6QER.js +42 -0
- package/dist/chunk-BFOSV5EZ.js +178 -0
- package/dist/chunk-BGOIM7NB.js +103 -0
- package/dist/chunk-BJH6WFIB.js +372 -0
- package/dist/chunk-BOBCCDJ6.js +1533 -0
- package/dist/chunk-BRCOSE7O.js +117 -0
- package/dist/chunk-BYFHHCFV.js +601 -0
- package/dist/chunk-C2CPOIH2.js +83 -0
- package/dist/chunk-C7AQTPCE.js +694 -0
- package/dist/chunk-CBAQPTDU.js +165 -0
- package/dist/chunk-CDQ2UC6W.js +125 -0
- package/dist/chunk-CN6SW5DC.js +177 -0
- package/dist/chunk-CRHPCPZP.js +132 -0
- package/dist/chunk-CTFPFW3H.js +44 -0
- package/dist/chunk-D3KWFOUT.js +103 -0
- package/dist/chunk-D65E25JG.js +185 -0
- package/dist/chunk-DCGHJQ2U.js +236 -0
- package/dist/chunk-DE2LU267.js +106 -0
- package/dist/chunk-DF6PI6GN.js +97 -0
- package/dist/chunk-DGC6X6XR.js +53 -0
- package/dist/chunk-DOUISWEE.js +526 -0
- package/dist/chunk-DR3TAEUA.js +188 -0
- package/dist/chunk-DVTBERFY.js +33 -0
- package/dist/chunk-DXSETN72.js +1051 -0
- package/dist/chunk-DZLR4UEH.js +128 -0
- package/dist/chunk-E6IPKW2E.js +77 -0
- package/dist/chunk-EG4ARXPC.js +139 -0
- package/dist/chunk-EKV4UBCM.js +652 -0
- package/dist/chunk-EOJPDNUP.js +1325 -0
- package/dist/chunk-EX57VVWW.js +4157 -0
- package/dist/chunk-EYTLV3W3.js +5937 -0
- package/dist/chunk-EZD2BXGP.js +475 -0
- package/dist/chunk-EZDCA34W.js +314 -0
- package/dist/chunk-FD2I4KBR.js +33 -0
- package/dist/chunk-FD3IAHQM.js +27 -0
- package/dist/chunk-FFYTC2KQ.js +416 -0
- package/dist/chunk-FGSQHUCK.js +110 -0
- package/dist/chunk-GCQFN7YI.js +32 -0
- package/dist/chunk-GGPF6LLE.js +38 -0
- package/dist/chunk-GGWI3OVM.js +215 -0
- package/dist/chunk-GLIQT7SU.js +172 -0
- package/dist/chunk-GN7QBEEI.js +95 -0
- package/dist/chunk-GRHOXDKB.js +1104 -0
- package/dist/chunk-HMN2C6YL.js +54 -0
- package/dist/chunk-HOEDA42N.js +310 -0
- package/dist/chunk-HOYZUKG7.js +192 -0
- package/dist/chunk-HQVN7G4F.js +1021 -0
- package/dist/chunk-HSQQFDB3.js +519 -0
- package/dist/chunk-I4ELN5BX.js +47 -0
- package/dist/chunk-I4Y4WKZR.js +386 -0
- package/dist/chunk-IFPDAD7R.js +797 -0
- package/dist/chunk-IN7DGBVS.js +582 -0
- package/dist/chunk-ISHUS7HC.js +396 -0
- package/dist/chunk-JPXLJSGR.js +191 -0
- package/dist/chunk-JQCLXSFI.js +69 -0
- package/dist/chunk-KBUTSJSR.js +61 -0
- package/dist/chunk-KW5HXKLJ.js +56 -0
- package/dist/chunk-L4APUGCT.js +139 -0
- package/dist/chunk-L7G7K4I2.js +505 -0
- package/dist/chunk-LAR7DX5E.js +1840 -0
- package/dist/chunk-LAVUQX3B.js +462 -0
- package/dist/chunk-LJRBX7QR.js +116 -0
- package/dist/chunk-LNOXCGN2.js +1864 -0
- package/dist/chunk-LTWH2ACR.js +23002 -0
- package/dist/chunk-LYJJ6546.js +661 -0
- package/dist/chunk-M2IPMWCN.js +457 -0
- package/dist/chunk-MGLRTOCK.js +101 -0
- package/dist/chunk-MZF5IKZT.js +160 -0
- package/dist/chunk-N24R6KWS.js +386 -0
- package/dist/chunk-NASYVWDB.js +604 -0
- package/dist/chunk-NBXFPI7U.js +195 -0
- package/dist/chunk-NDPF2N2L.js +400 -0
- package/dist/chunk-NFSK2VNU.js +446 -0
- package/dist/chunk-NG3QQSXY.js +43 -0
- package/dist/chunk-NOCSM22Y.js +63 -0
- package/dist/chunk-NVPXXW2H.js +1143 -0
- package/dist/chunk-O63U2I6I.js +30 -0
- package/dist/chunk-OJXOA6YU.js +98 -0
- package/dist/chunk-OPD7GL6F.js +1196 -0
- package/dist/chunk-OQ2EOAHA.js +14399 -0
- package/dist/chunk-OV62D6KO.js +688 -0
- package/dist/chunk-OZ76TLGU.js +740 -0
- package/dist/chunk-P4GNZPXO.js +1156 -0
- package/dist/chunk-PS6JAWJZ.js +78 -0
- package/dist/chunk-PXRCXGLK.js +1865 -0
- package/dist/chunk-QDUUOZ3S.js +108 -0
- package/dist/chunk-QG6I2T5E.js +1416 -0
- package/dist/chunk-QHSBROEW.js +308 -0
- package/dist/chunk-QNUQ7K7D.js +46 -0
- package/dist/chunk-QZTTRSJE.js +333 -0
- package/dist/chunk-R2UUNSNQ.js +1605 -0
- package/dist/chunk-R7FGRZNF.js +1794 -0
- package/dist/chunk-RNDCROSG.js +199 -0
- package/dist/chunk-S36CXHO2.js +302 -0
- package/dist/chunk-SJGS3GDI.js +575 -0
- package/dist/chunk-SQZHXUB3.js +510 -0
- package/dist/chunk-SUTLW6ND.js +686 -0
- package/dist/chunk-SYF7FVBL.js +179 -0
- package/dist/chunk-T2MDZES3.js +1577 -0
- package/dist/chunk-T33IYTZM.js +1146 -0
- package/dist/chunk-TDGYTWM6.js +49 -0
- package/dist/chunk-TGL5FZVD.js +132 -0
- package/dist/chunk-TGWZXJ7L.js +1205 -0
- package/dist/chunk-TKDRT2DF.js +114 -0
- package/dist/chunk-TV2EBCSQ.js +152 -0
- package/dist/chunk-U26XXPJS.js +367 -0
- package/dist/chunk-U5QU5ZOD.js +419 -0
- package/dist/chunk-U6YTUVOX.js +1011 -0
- package/dist/chunk-UCINIRHW.js +188 -0
- package/dist/chunk-UJD5MPP6.js +52 -0
- package/dist/chunk-URCXX7WJ.js +146 -0
- package/dist/chunk-UX2L5CUD.js +898 -0
- package/dist/chunk-UZVYEF57.js +114 -0
- package/dist/chunk-V35KZDUZ.js +218 -0
- package/dist/chunk-VESL6DQY.js +1058 -0
- package/dist/chunk-VKHLUZNO.js +986 -0
- package/dist/chunk-VOYUCAQF.js +584 -0
- package/dist/chunk-VYRQHORQ.js +414 -0
- package/dist/chunk-W53XSRQE.js +245 -0
- package/dist/chunk-X4CEFOSG.js +226 -0
- package/dist/chunk-XDHUDE5K.js +380 -0
- package/dist/chunk-XISLDHEL.js +1290 -0
- package/dist/chunk-XM34YQ2Y.js +169 -0
- package/dist/chunk-XMDBTYCH.js +661 -0
- package/dist/chunk-XS2QPZJE.js +449 -0
- package/dist/chunk-YBUECLAF.js +618 -0
- package/dist/chunk-YQ6XEFVK.js +332 -0
- package/dist/chunk-YYLCPDCC.js +990 -0
- package/dist/chunk-Z4GLJ6J4.js +1035 -0
- package/dist/chunk-ZARZ4POR.js +210 -0
- package/dist/chunk-ZJPORZTC.js +119 -0
- package/dist/chunk-ZNUZ3EXD.js +243 -0
- package/dist/chunk-ZPST2KQO.js +49 -0
- package/dist/chunk-ZR5YA6ZF.js +512 -0
- package/dist/chunk-ZU4JPCPR.js +319 -0
- package/dist/chunk-ZUKUCZYZ.js +39 -0
- package/dist/cli/index.js +56 -45
- package/dist/clio-K2PBVCEM.js +27 -0
- package/dist/clio-context-tools-GR4OHFSO.js +145 -0
- package/dist/code-nav-4X3OI6DK.js +715 -0
- package/dist/codewiki/build-worker.js +4 -4
- package/dist/compile-cache-YRB6QRO7.js +18 -0
- package/dist/components-RQOJ6NUR.js +675 -0
- package/dist/config-Q5J7UBAB.js +291 -0
- package/dist/config-XE7XYZLU.js +38 -0
- package/dist/config-graph-P3555574.js +175 -0
- package/dist/configure-KIJ32ZO6.js +104 -0
- package/dist/context-LFBQOSXT.js +344 -0
- package/dist/context-NNLBES2Y.js +82 -0
- package/dist/context-WBH3KSVR.js +302 -0
- package/dist/context-clear-YOHMQ6SQ.js +208 -0
- package/dist/context-index-X2N5UAIF.js +120 -0
- package/dist/context-map-HOSMGUG2.js +555 -0
- package/dist/context-working-set-MRAEVDNV.js +1564 -0
- package/dist/data-tool-JJPBGMQJ.js +2986 -0
- package/dist/detail-RHJOTGN4.js +139 -0
- package/dist/dispatch-runner-NC7PYNIO.js +2477 -0
- package/dist/docs-K4GBWRUX.js +342 -0
- package/dist/doctor-S5KZ2GTN.js +1138 -0
- package/dist/doctor-deep-2EJQSHIZ.js +130 -0
- package/dist/domain-loader-MB34FDPD.js +13 -0
- package/dist/eval-3D6M36N7.js +5220 -0
- package/dist/eval-inventory-SM3HNM47.js +260 -0
- package/dist/evals-FO6JEUCN.js +104 -0
- package/dist/evidence-6IYN52ET.js +262 -0
- package/dist/evidence-JVECPI3F.js +250 -0
- package/dist/evidence-XNVPPLVK.js +410 -0
- package/dist/evolve-TLPUDJDM.js +634 -0
- package/dist/extensions-ROZJ5X3J.js +311 -0
- package/dist/fleet-6RJWIOEO.js +284 -0
- package/dist/fleet-WKVBF5SZ.js +942 -0
- package/dist/fleet-commands-L6WFT7KZ.js +76 -0
- package/dist/fleet-decisions-BTQMWU5A.js +55 -0
- package/dist/fleet-graph-553DZ67Q.js +141 -0
- package/dist/fleet-inspect-236FZPRB.js +329 -0
- package/dist/fleet-new-CKUXP3CO.js +48 -0
- package/dist/fleet-preflight-NZQHABWO.js +95 -0
- package/dist/fleet-validate-7NLAE26R.js +96 -0
- package/dist/fleet-verify-E3RO6A5W.js +226 -0
- package/dist/fleet-view-KMZQY7YJ.js +144 -0
- package/dist/gui/client/assets/abnfDiagram-VCTEODGH-DPBWQwNn.js +1 -0
- package/dist/gui/client/assets/architecture-7GRP2DOG-D1w8FrFW.js +1 -0
- package/dist/gui/client/assets/architectureDiagram-5GKGNRK7-CVPgKd1-.js +36 -0
- package/dist/gui/client/assets/blockDiagram-I7D4REHJ-BLmnqkK5.js +129 -0
- package/dist/gui/client/assets/c4Diagram-7LVT6UL2-4AU9cfM7.js +38 -0
- package/dist/gui/client/assets/channel-DwFZ0m8S.js +1 -0
- package/dist/gui/client/assets/chunk-4HAMMTFA-EOWkKCav.js +62 -0
- package/dist/gui/client/assets/chunk-75Z2AOVW-CygeoIMl.js +2 -0
- package/dist/gui/client/assets/chunk-DU6HZSFF-s27fViLb.js +125 -0
- package/dist/gui/client/assets/chunk-F27PBJKO-BrHvwLsZ.js +1 -0
- package/dist/gui/client/assets/chunk-GMAD6QVW-DzPh-7jt.js +72 -0
- package/dist/gui/client/assets/chunk-GVQU2GXP-pIaQkIzm.js +1 -0
- package/dist/gui/client/assets/chunk-IMKFNOWR-BGJVE_Br.js +231 -0
- package/dist/gui/client/assets/chunk-L3NEJ4N5-B3YLuhww.js +1 -0
- package/dist/gui/client/assets/chunk-OSK3NFVY-BRj61HHU.js +10 -0
- package/dist/gui/client/assets/chunk-P2QGCYS3-Sno90KxP.js +1 -0
- package/dist/gui/client/assets/chunk-POPQ4Y6H-Cw8NTbxr.js +1 -0
- package/dist/gui/client/assets/chunk-PWAF6VOD-BIhHgz37.js +1 -0
- package/dist/gui/client/assets/chunk-SHT3W25Y-Cqv7npBj.js +168 -0
- package/dist/gui/client/assets/chunk-SVP7TREG-Hxzl6Dee.js +88 -0
- package/dist/gui/client/assets/chunk-TICWLB2K-CIFVyVP2.js +206 -0
- package/dist/gui/client/assets/classDiagram-ZZMXUADV-BJbAiI_w.js +1 -0
- package/dist/gui/client/assets/classDiagram-v2-VYDZK3BY-BJbAiI_w.js +1 -0
- package/dist/gui/client/assets/cynefin-OW5HDTMX-DecLWZ-y.js +1 -0
- package/dist/gui/client/assets/cynefinDiagram-5FMLGOSQ-CK-T2N-D.js +62 -0
- package/dist/gui/client/assets/dagre-GXQ25YYZ-C0dfg-OS.js +4 -0
- package/dist/gui/client/assets/diagram-S7CK7UJ4-EaJukVh-.js +30 -0
- package/dist/gui/client/assets/diagram-UQ7AKVKN-xcOucEtP.js +41 -0
- package/dist/gui/client/assets/diagram-VSXAHHWV-3AUJACMf.js +3 -0
- package/dist/gui/client/assets/diagram-VX7I27RA-TPknLqam.js +24 -0
- package/dist/gui/client/assets/diagram-Z3DM3KII-wa1q3YMF.js +24 -0
- package/dist/gui/client/assets/ebnfDiagram-PWID7BFC-JBCF2-s7.js +1 -0
- package/dist/gui/client/assets/erDiagram-RLTQ6QDP-CmXjXPc4.js +99 -0
- package/dist/gui/client/assets/eventmodeling-NTZA5JFV-D_1aJWYl.js +1 -0
- package/dist/gui/client/assets/flowDiagram-HODETNUW-BQtZlael.js +1 -0
- package/dist/gui/client/assets/framework-Bq-znqwW.js +9 -0
- package/dist/gui/client/assets/ganttDiagram-EL5Y4UJY-IPaL_kaa.js +292 -0
- package/dist/gui/client/assets/gitGraph-4MIJSDKK-Oy0Q3hoc.js +1 -0
- package/dist/gui/client/assets/gitGraphDiagram-WWUBYQGX-jtAuBmbc.js +106 -0
- package/dist/gui/client/assets/index-CuFuBEdL.css +1 -0
- package/dist/gui/client/assets/index-hMbEIsX0.js +87 -0
- package/dist/gui/client/assets/info-A6RAGUB7-UtEs1tv7.js +1 -0
- package/dist/gui/client/assets/infoDiagram-27XIBGKW-hlwR1pBW.js +2 -0
- package/dist/gui/client/assets/ishikawaDiagram-5VMMS53U-C6vMtfsd.js +70 -0
- package/dist/gui/client/assets/journeyDiagram-3NMN7TZE-EAwAl_PS.js +139 -0
- package/dist/gui/client/assets/kanban-definition-UXKFOSKX-CQOhRKHW.js +89 -0
- package/dist/gui/client/assets/line-DbcwGZTW.js +1 -0
- package/dist/gui/client/assets/mermaid-parser.core-C2QfVcHd.js +7 -0
- package/dist/gui/client/assets/mermaid.core-N9qUTre1.js +44 -0
- package/dist/gui/client/assets/mindmap-definition-YA3MSWOX-BR_FL9gK.js +96 -0
- package/dist/gui/client/assets/packet-AYTQ26CC-CbBJ2oAa.js +1 -0
- package/dist/gui/client/assets/pegDiagram-XKGWAZYB-BruU0IHM.js +1 -0
- package/dist/gui/client/assets/pie-WAS4IAKB-BWdSng4H.js +1 -0
- package/dist/gui/client/assets/pieDiagram-E7YTZNPT-CR3ljgdU.js +39 -0
- package/dist/gui/client/assets/quadrantDiagram-AXDQQJYC-C-boKslr.js +7 -0
- package/dist/gui/client/assets/radar-RG4KPBEZ-CGlOnAKG.js +1 -0
- package/dist/gui/client/assets/railroad-74A4TZTK-CDvuAlyC.js +1 -0
- package/dist/gui/client/assets/railroad-abnf-HS5TGJTU-CQUA9crC.js +1 -0
- package/dist/gui/client/assets/railroad-ebnf-LZEXJU2U-CD857gxq.js +1 -0
- package/dist/gui/client/assets/railroad-peg-WCYAUIDC-DUV4k35E.js +1 -0
- package/dist/gui/client/assets/railroadDiagram-O6MQD6OU-DMR4LXmA.js +1 -0
- package/dist/gui/client/assets/requirementDiagram-BXWQKSXE-DVltaF6c.js +84 -0
- package/dist/gui/client/assets/sankeyDiagram-P5KCCOFB-CHdNz472.js +40 -0
- package/dist/gui/client/assets/sequenceDiagram-WJ2MYXX4-DaMafIty.js +162 -0
- package/dist/gui/client/assets/stateDiagram-D77RDMKH-CEbBHqn3.js +1 -0
- package/dist/gui/client/assets/stateDiagram-v2-MP3YSRHH-B3JgDdFg.js +1 -0
- package/dist/gui/client/assets/swimlanes-42K2YHIH-BlPHndnJ.js +1 -0
- package/dist/gui/client/assets/swimlanesDiagram-VR7AAH4N-BPabHwsZ.js +8 -0
- package/dist/gui/client/assets/timeline-definition-24CTP7MA-E4Y1lPBI.js +120 -0
- package/dist/gui/client/assets/treeView-Q6P3EWNA-DrY0uhTN.js +1 -0
- package/dist/gui/client/assets/treemap-WGGIJYW6-CVotnLHf.js +1 -0
- package/dist/gui/client/assets/vennDiagram-4TSXK5OY-DJNrLIOF.js +34 -0
- package/dist/gui/client/assets/wardley-WFR3VGLG-ClOpAp5S.js +1 -0
- package/dist/gui/client/assets/wardleyDiagram-VM6X3IG4-qhMoKOXc.js +78 -0
- package/dist/gui/client/assets/xychartDiagram-S5SC5T6Z-CTuXoo9R.js +7 -0
- package/dist/gui/client/index.html +6 -0
- package/dist/gui/ops-worker.js +167 -0
- package/dist/gui/reads-worker.js +473 -0
- package/dist/gui/server.js +9780 -0
- package/dist/gui-QJS7XQMV.js +16 -0
- package/dist/init-DV5B6HQG.js +354 -0
- package/dist/install-6C45YXFP.js +19 -0
- package/dist/install-O7NSRU2W.js +13 -0
- package/dist/interactive-OXGYZYAS.js +22381 -0
- package/dist/interop-J7UOBOSF.js +254 -0
- package/dist/inventory-OEGIL6PY.js +144 -0
- package/dist/library-B3UPGY4V.js +83 -0
- package/dist/library-MXQA5DLT.js +309 -0
- package/dist/library-ROZAMUIL.js +496 -0
- package/dist/library-import-2LTWOVBD.js +190 -0
- package/dist/library-inventory-LJ3XHLWO.js +60 -0
- package/dist/library-validation-DARHHUNW.js +46 -0
- package/dist/mcp-2GSPYQ54.js +28 -0
- package/dist/memory-J3STUUIK.js +537 -0
- package/dist/models-Y3GMFJ2V.js +314 -0
- package/dist/monitor-LHNH577J.js +811 -0
- package/dist/orchestrator-DTAPXULA.js +12117 -0
- package/dist/panes-A743ONZ5.js +103 -0
- package/dist/panes-CTNO57ZY.js +76 -0
- package/dist/paths-3SBYJQDP.js +68 -0
- package/dist/preload-OJBMAIXF.js +140 -0
- package/dist/providers-CMETPZNS.js +232 -0
- package/dist/registry-37T4U6X2.js +15 -0
- package/dist/reset-O7EUCYWO.js +346 -0
- package/dist/resources-FY6XYFN2.js +189 -0
- package/dist/run-H64MEVTA.js +1067 -0
- package/dist/run-script-PQ5NRU3X.js +42 -0
- package/dist/settings-SNIQNXCW.js +73 -0
- package/dist/settings-controls-X6GMCPVG.js +202 -0
- package/dist/share-CAFMMQLM.js +299 -0
- package/dist/skills-ERKQUC7L.js +114 -0
- package/dist/skills-eval-CQ23MYQK.js +1099 -0
- package/dist/skills-inventory-TVUYJDVN.js +142 -0
- package/dist/slash-commands-ROG3KIFJ.js +107 -0
- package/dist/startup-background-KDWCQMWT.js +247 -0
- package/dist/steer-KKYXJSH4.js +77 -0
- package/dist/support-M3RCUUEL.js +40 -0
- package/dist/system-ZDW44ZGX.js +142 -0
- package/dist/target-runtimes-PWA22WVW.js +73 -0
- package/dist/targets-AJWA6E7Z.js +1207 -0
- package/dist/tasks-6L2JJRC5.js +39 -0
- package/dist/terminal-lease-YFUSDPAD.js +432 -0
- package/dist/tools-5XJUABRD.js +30 -0
- package/dist/trace-LA5MVR4Y.js +527 -0
- package/dist/tree-sitter-TQW3Y52T.js +4673 -0
- package/dist/tui-primitives-IUCVWLH5.js +19 -0
- package/dist/uninstall-SAWGGXAB.js +448 -0
- package/dist/upgrade-HSNSVTZG.js +300 -0
- package/dist/usage-XSILDHKF.js +1083 -0
- package/dist/verifiers-ECA5GIHL.js +633 -0
- package/dist/verify-R6QQCCEB.js +31 -0
- package/dist/version-PLZYB5KW.js +22 -0
- package/dist/web-fetch-PVZNMBOB.js +803 -0
- package/dist/wiki-generate-RP22WP5K.js +647 -0
- package/dist/with-panes-W3PAZPRF.js +629 -0
- package/dist/worker/entry.js +324 -284
- package/dist/workspace-check-3764ZKC2.js +83 -0
- package/docs/README.md +26 -10
- package/docs/architecture/acp.md +179 -12
- package/docs/architecture/artifact-placement.md +1 -1
- package/docs/architecture/capacity-and-scheduling.md +7 -8
- package/docs/architecture/context-engine.md +350 -95
- package/docs/architecture/model-catalog.md +18 -11
- package/docs/architecture/observability.md +1 -1
- package/docs/architecture/pi-boundary.md +59 -6
- package/docs/architecture/prompt-envelope-and-tools.md +147 -39
- package/docs/architecture/provider-adapter-cookbook.md +2 -2
- package/docs/architecture/safety-model.md +18 -4
- package/docs/architecture/trace-store.md +2 -2
- package/docs/architecture/tui-design.md +41 -81
- package/docs/architecture/worker-dispatch-mechanics.md +9 -1
- package/docs/gui/README.md +69 -0
- package/docs/gui/boundary-doctrine.md +104 -0
- package/docs/gui/chat-rendering-spec.md +1440 -0
- package/docs/gui/cli-surface-routing.md +148 -0
- package/docs/gui/delivery-order.md +53 -0
- package/docs/gui/event-bus-coverage.md +103 -0
- package/docs/gui/inspector-presentation.md +71 -0
- package/docs/gui/parity/01-cli-surface.md +74 -0
- package/docs/gui/parity/02-slash-and-surfaces.md +110 -0
- package/docs/gui/parity/03-domains-and-plan.md +69 -0
- package/docs/gui/performance-baseline.md +76 -0
- package/docs/gui/settings-write-surface.md +267 -0
- package/docs/gui/workflow-coverage.md +64 -0
- package/docs/guide/built-in-agents.md +1 -1
- package/docs/guide/commands-and-modes.md +256 -99
- package/docs/guide/configuration-and-targets.md +485 -124
- package/docs/guide/configuration-reference.md +165 -82
- package/docs/guide/doctor.md +127 -0
- package/docs/guide/environment-variables.md +1 -1
- package/docs/guide/exit-codes-and-output.md +3 -1
- package/docs/guide/extensions-and-sharing.md +3 -14
- package/docs/guide/fleet-dispatch.md +231 -45
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/installation-and-lifecycle.md +27 -16
- package/docs/guide/interop.md +2 -2
- package/docs/guide/proactive-memory.md +154 -68
- package/docs/guide/resource-library.md +4 -0
- package/docs/guide/skills-marketplace.md +8 -4
- package/docs/guide/slurm.md +88 -0
- package/docs/guide/tool-usage.md +134 -11
- package/docs/guide/troubleshooting.md +4 -2
- package/docs/process/battletest-2026-09-20-fixes.md +161 -0
- package/docs/process/configure-tree-proposal.md +637 -0
- package/docs/process/documentation-coverage.md +8 -0
- package/docs/process/documentation-guide.md +18 -1
- package/docs/process/eval-runner.md +58 -14
- package/docs/process/performance-methodology.md +11 -3
- package/docs/process/release-cut-checklist.md +29 -3
- package/docs/process/tool-audit-v0.4.9.md +3 -0
- package/examples/extensions/README.md +1 -3
- package/examples/extensions/lab-status/clio-coder-extension.json +1 -1
- package/examples/extensions/measurements/clio-coder-extension.json +1 -1
- package/library/registry.yaml +30 -5
- package/library/skills/git/fix-issue/SKILL.md +2 -1
- package/library/skills/git/fix-issue/plugin.json +1 -1
- package/library/skills/git/ship/SKILL.md +2 -1
- package/library/skills/git/ship/plugin.json +1 -1
- package/library/skills/meta/clio-coder-test/SKILL.md +5 -6
- package/library/skills/meta/clio-coder-test/evals.md +2 -2
- package/library/skills/meta/clio-coder-test/references/test-map.md +2 -2
- package/library/skills/registry.yaml +9 -5
- package/library/skills/research/slurm-jobs/SKILL.md +110 -0
- package/library/skills/research/slurm-jobs/evals.md +39 -0
- package/library/skills/research/slurm-jobs/plugin.json +23 -0
- package/library/skills/skill-marketplace.json +18 -2
- package/package.json +15 -10
- package/src/cli/args.ts +59 -0
- package/src/cli/argv.ts +7 -0
- package/src/cli/clio.ts +9 -1
- package/src/cli/configure-controls.ts +136 -0
- package/src/cli/configure-onboarding.ts +24 -7
- package/src/cli/configure-quick.ts +32 -7
- package/src/cli/configure-target.ts +11 -1
- package/src/cli/configure.ts +253 -256
- package/src/cli/docs-server.ts +290 -0
- package/src/cli/docs.ts +60 -15
- package/src/cli/doctor-deep.ts +126 -0
- package/src/cli/doctor-hpc.ts +122 -0
- package/src/cli/doctor-slurm.ts +130 -0
- package/src/cli/doctor-task-worktrees.ts +88 -0
- package/src/cli/doctor.ts +165 -16
- package/src/cli/fleet-verify.ts +3 -2
- package/src/cli/gui.ts +111 -0
- package/src/cli/index.ts +14 -4
- package/src/cli/library.ts +2 -7
- package/src/cli/modes/json-stream.ts +4 -2
- package/src/cli/modes/print.ts +252 -25
- package/src/cli/run.ts +199 -71
- package/src/cli/skills.ts +25 -7
- package/src/cli/targets.ts +87 -9
- package/src/cli/uninstall.ts +28 -8
- package/src/cli/usage.ts +2 -1
- package/src/cli/workspace-check.ts +71 -0
- package/src/core/bash-exec.ts +8 -2
- package/src/core/bus-events.ts +32 -3
- package/src/core/cache-telemetry.ts +3 -2
- package/src/core/compile-cache.ts +11 -1
- package/src/core/config.ts +59 -6
- package/src/core/defaults.ts +27 -5
- package/src/core/diagnostics.ts +25 -0
- package/src/core/event-bus.ts +2 -1
- package/src/core/gateway-routing.ts +10 -3
- package/src/core/git-commit-attribution.ts +2 -1
- package/src/core/naming-compat.ts +6 -4
- package/src/core/package-root.ts +0 -9
- package/src/core/path-canonical.ts +143 -24
- package/src/core/residency-target-key.ts +2 -6
- package/src/core/run-overrides.ts +1 -1
- package/src/core/settings-awareness.ts +108 -0
- package/src/core/settings-controls.ts +673 -0
- package/src/core/settings-navigation.ts +116 -0
- package/src/core/theme-token-hex.ts +19 -9
- package/src/core/turn-constraints.ts +52 -0
- package/src/domains/agents/builtins/scout.md +7 -17
- package/src/domains/agents/catalog.ts +5 -1
- package/src/domains/agents/extension.ts +2 -1
- package/src/domains/agents/registry.ts +4 -3
- package/src/domains/agents/result-contract.ts +132 -1
- package/src/domains/config/classify.ts +11 -7
- package/src/domains/config/extension.ts +5 -1
- package/src/domains/config/keybindings.ts +2 -2
- package/src/domains/context/codewiki/coordinator.ts +10 -0
- package/src/domains/context/worker/snapshot.ts +6 -3
- package/src/domains/dispatch/active-route-planner.ts +2 -0
- package/src/domains/dispatch/agent-candidates.ts +5 -1
- package/src/domains/dispatch/capability-match.ts +1 -1
- package/src/domains/dispatch/contract.ts +28 -0
- package/src/domains/dispatch/event-pump.ts +37 -3
- package/src/domains/dispatch/extension.ts +391 -48
- package/src/domains/dispatch/failure-classification.ts +37 -2
- package/src/domains/dispatch/receipt-integrity.ts +3 -0
- package/src/domains/dispatch/run-identity.ts +10 -3
- package/src/domains/dispatch/target-breaker.ts +163 -0
- package/src/domains/dispatch/types.ts +29 -2
- package/src/domains/dispatch/worker-model-loads.ts +66 -0
- package/src/domains/dispatch/worker-protocol.ts +20 -1
- package/src/domains/dispatch/worker-spawn.ts +28 -2
- package/src/domains/eval/artifacts/redact.ts +9 -0
- package/src/domains/eval/metrics/noop.ts +61 -0
- package/src/domains/eval/reports/junit.ts +5 -1
- package/src/domains/eval/reports/text.ts +7 -0
- package/src/domains/eval/runners/clio-run.ts +19 -8
- package/src/domains/eval/runners/external-command.ts +29 -4
- package/src/domains/eval/schema/adapter.ts +6 -2
- package/src/domains/eval/schema/suite.ts +2 -0
- package/src/domains/eval/schema/validate.ts +3 -0
- package/src/domains/eval/suites/run.ts +167 -26
- package/src/domains/evidence/detail.ts +3 -2
- package/src/domains/extensions/operator-runtime.ts +11 -4
- package/src/domains/gateway/mcp/client.ts +1 -1
- package/src/domains/lifecycle/doctor.ts +42 -26
- package/src/domains/lifecycle/migrations/2026-09-18-ollama-runtime-id.ts +38 -0
- package/src/domains/lifecycle/migrations/index.ts +2 -0
- package/src/domains/middleware/demo-guidance.ts +36 -0
- package/src/domains/middleware/dispatch-nudge.ts +1 -1
- package/src/domains/middleware/memory-intervention.ts +51 -4
- package/src/domains/middleware/runtime.ts +5 -4
- package/src/domains/middleware/skills-reminder.ts +29 -52
- package/src/domains/middleware/task-nudge.ts +1 -0
- package/src/domains/middleware/watchdog.ts +4 -0
- package/src/domains/observability/extension.ts +2 -1
- package/src/domains/observability/out-of-turn-usage.ts +3 -2
- package/src/domains/observability/projection.ts +3 -2
- package/src/domains/observability/worker-progress.ts +48 -0
- package/src/domains/prompts/compiler.ts +148 -52
- package/src/domains/prompts/contract.ts +3 -3
- package/src/domains/prompts/demo-guidance.ts +8 -0
- package/src/domains/prompts/extension.ts +12 -7
- package/src/domains/prompts/fragments/identity/clio.md +2 -1
- package/src/domains/prompts/fragments/identity/docs-routing.md +2 -0
- package/src/domains/prompts/fragments/identity/self-awareness.md +4 -0
- package/src/domains/prompts/fragments/operating/contract.md +16 -7
- package/src/domains/prompts/fragments/operating/delegation.md +29 -13
- package/src/domains/prompts/fragments/operating/skills.md +18 -10
- package/src/domains/prompts/fragments/operating/worker.md +2 -0
- package/src/domains/providers/cache-deployment.ts +45 -2
- package/src/domains/providers/contract.ts +52 -11
- package/src/domains/providers/extension.ts +230 -53
- package/src/domains/providers/model-discovery.ts +22 -8
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +5 -7
- package/src/domains/providers/plugins.ts +3 -4
- package/src/domains/providers/probe/fingerprint.ts +2 -2
- package/src/domains/providers/probe/reasoning.ts +9 -16
- package/src/domains/providers/probe/tool-call.ts +236 -0
- package/src/domains/providers/registry.ts +51 -8
- package/src/domains/providers/runtime-resolution.ts +60 -12
- package/src/domains/providers/runtimes/boot-manifest.ts +1 -1
- package/src/domains/providers/runtimes/builtins.ts +2 -2
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +57 -41
- package/src/domains/providers/runtimes/common/local-synth.ts +3 -1
- package/src/domains/providers/runtimes/common/ollama-model-ids.ts +11 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +53 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +3 -1
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +7 -13
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +7 -17
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +1 -0
- package/src/domains/providers/runtimes/local-native/ollama.ts +211 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +77 -65
- package/src/domains/providers/support.ts +1 -1
- package/src/domains/providers/types/local-model-quirks.ts +2 -3
- package/src/domains/providers/types/runtime-descriptor.ts +23 -3
- package/src/domains/providers/types/target-descriptor.ts +15 -3
- package/src/domains/resources/collision.ts +7 -2
- package/src/domains/resources/index.ts +1 -0
- package/src/domains/resources/library-actions.ts +4 -2
- package/src/domains/resources/library-inventory.ts +6 -2
- package/src/domains/resources/prompts/loader.ts +20 -7
- package/src/domains/resources/skills/availability.ts +56 -0
- package/src/domains/resources/skills/loader.ts +20 -9
- package/src/domains/safety/action-classifier.ts +282 -31
- package/src/domains/safety/audit.ts +2 -1
- package/src/domains/safety/autonomy.ts +54 -11
- package/src/domains/safety/decision-presentation.ts +17 -4
- package/src/domains/safety/finish-contract-registration.ts +25 -1
- package/src/domains/safety/finish-contract.ts +20 -5
- package/src/domains/safety/path-policy.ts +6 -2
- package/src/domains/safety/policy-engine.ts +168 -48
- package/src/domains/safety/protected-artifacts.ts +527 -16
- package/src/domains/safety/read-scope.ts +120 -0
- package/src/domains/safety/skill-authority.ts +52 -16
- package/src/domains/scheduling/cluster.ts +14 -3
- package/src/domains/scheduling/contract.ts +7 -0
- package/src/domains/scheduling/extension.ts +20 -9
- package/src/domains/scheduling/local-capacity.ts +160 -0
- package/src/domains/session/context-accounting.ts +44 -31
- package/src/domains/session/context-ledger.ts +10 -3
- package/src/domains/session/entries.ts +4 -0
- package/src/domains/session/history.ts +1 -1
- package/src/domains/session/prompt-cache.ts +1 -0
- package/src/domains/session/prompt-manifest.ts +3 -1
- package/src/domains/session/retry.ts +4 -6
- package/src/domains/session/task-board.ts +19 -4
- package/src/domains/session/tree/preview.ts +3 -2
- package/src/engine/acp/commands.ts +653 -0
- package/src/engine/acp/server.ts +639 -20
- package/src/engine/acp/tool-mediator.ts +30 -7
- package/src/engine/acp/types.ts +58 -0
- package/src/engine/agent.ts +55 -10
- package/src/engine/ai.ts +11 -2
- package/src/engine/api-registry.ts +5 -4
- package/src/engine/apis/degraded-inference.ts +243 -0
- package/src/engine/apis/llamacpp-residency.ts +50 -6
- package/src/engine/apis/lmstudio-residency.ts +3 -5
- package/src/engine/apis/lmstudio.ts +137 -31
- package/src/engine/apis/ollama-http.ts +118 -0
- package/src/engine/apis/ollama-native.ts +216 -97
- package/src/engine/apis/openai-completions.ts +191 -189
- package/src/engine/apis/output-budget.ts +3 -1
- package/src/engine/apis/residency-lock.ts +2 -1
- package/src/engine/apis/residency.ts +339 -89
- package/src/engine/apis/sampling-overrides.ts +23 -2
- package/src/engine/apis/types.ts +1 -2
- package/src/engine/claude/tool-safety.ts +30 -5
- package/src/engine/context.ts +13 -0
- package/src/engine/env-api-keys.ts +2 -1
- package/src/engine/gemma-channel-filter.ts +3 -2
- package/src/engine/instrumented-tui.ts +25 -0
- package/src/engine/loop-guard.ts +172 -6
- package/src/engine/pi-mono-names.ts +16 -0
- package/src/engine/prewarm.ts +44 -15
- package/src/engine/provider-payload.ts +52 -14
- package/src/engine/session.ts +4 -2
- package/src/engine/worker-events.ts +9 -1
- package/src/engine/worker-runtime.ts +269 -42
- package/src/engine/worker-tools.ts +8 -3
- package/src/entry/boot-options.ts +23 -0
- package/src/entry/orchestrator.ts +207 -36
- package/src/interactive/assistant-generation-timing.ts +52 -0
- package/src/interactive/chat-loop-messages.ts +4 -1
- package/src/interactive/chat-loop.ts +59 -9
- package/src/interactive/chat-panel.ts +10 -1
- package/src/interactive/clio-editor.ts +51 -79
- package/src/interactive/context-meter.ts +1 -0
- package/src/interactive/context-overlay.ts +21 -8
- package/src/interactive/cost-overlay.ts +1 -1
- package/src/interactive/dispatch-board.ts +39 -8
- package/src/interactive/editor-bash.ts +0 -34
- package/src/interactive/editor-rails.ts +43 -0
- package/src/interactive/editor-submit.ts +34 -2
- package/src/interactive/footer/dashboard.ts +67 -38
- package/src/interactive/footer/demo-hints.ts +40 -0
- package/src/interactive/footer/key-hints.ts +21 -0
- package/src/interactive/footer/notifications.ts +1 -1
- package/src/interactive/footer/pages.ts +486 -0
- package/src/interactive/footer/system-metrics.ts +147 -0
- package/src/interactive/footer/widgets.ts +158 -63
- package/src/interactive/footer-panel.ts +29 -7
- package/src/interactive/interactive-application.ts +109 -21
- package/src/interactive/interactive-event-projection.ts +6 -2
- package/src/interactive/interactive-presentation.ts +25 -29
- package/src/interactive/interactive-slash-runtime.ts +32 -18
- package/src/interactive/interactive-subscriptions.ts +25 -5
- package/src/interactive/interactive-tickers.ts +21 -5
- package/src/interactive/keybinding-manager.ts +9 -0
- package/src/interactive/overlay-frame.ts +29 -7
- package/src/interactive/overlay-lifecycle.ts +5 -3
- package/src/interactive/overlay-model-selectors.ts +4 -0
- package/src/interactive/overlay-permission-lifecycle.ts +6 -5
- package/src/interactive/overlays/ask-user.ts +103 -110
- package/src/interactive/overlays/help-reference.ts +1 -0
- package/src/interactive/overlays/message-picker.ts +3 -29
- package/src/interactive/overlays/session-selector.ts +3 -2
- package/src/interactive/overlays/settings-sections.ts +2 -30
- package/src/interactive/overlays/settings.ts +310 -607
- package/src/interactive/permission-hint.ts +3 -3
- package/src/interactive/permission-overlay.ts +45 -27
- package/src/interactive/renderers/doctor-report.ts +43 -0
- package/src/interactive/renderers/tool-execution.ts +87 -62
- package/src/interactive/renderers/worker-entry.ts +76 -3
- package/src/interactive/side-question.ts +3 -1
- package/src/interactive/slash-commands.ts +78 -23
- package/src/interactive/startup-background.ts +131 -0
- package/src/interactive/startup-diagnostics.ts +16 -0
- package/src/interactive/status/state-machine.ts +16 -3
- package/src/interactive/status/types.ts +2 -0
- package/src/interactive/status/verbs.ts +1 -1
- package/src/interactive/terminal-lease.ts +26 -22
- package/src/interactive/theme/components.ts +1 -1
- package/src/interactive/theme/rules.ts +1 -1
- package/src/interactive/theme/tokens.ts +16 -10
- package/src/interactive/transcript-detail.ts +4 -0
- package/src/interactive/turn-context.ts +56 -20
- package/src/interactive/turn-middleware.ts +57 -9
- package/src/interactive/turn-prewarm.ts +121 -18
- package/src/interactive/turn-recovery.ts +10 -8
- package/src/interactive/turn-runtime.ts +74 -29
- package/src/interactive/turn-state.ts +3 -0
- package/src/interactive/welcome-art.ts +36 -0
- package/src/interactive/welcome-dashboard.ts +209 -49
- package/src/interactive/worker-replay.ts +4 -0
- package/src/interactive/worker-stream.ts +17 -2
- package/src/tools/agent-tools.ts +22 -1
- package/src/tools/builtin-tool-catalog.ts +2 -2
- package/src/tools/codewiki/code-nav.ts +1 -1
- package/src/tools/codewiki/shared.ts +39 -1
- package/src/tools/compete-worktrees.ts +8 -91
- package/src/tools/context/docs-engine.ts +44 -12
- package/src/tools/context/index.ts +126 -22
- package/src/tools/context/library.ts +1 -1
- package/src/tools/context/surface.ts +12 -7
- package/src/tools/core-bootstrap.ts +3 -0
- package/src/tools/dispatch-runner.ts +18 -0
- package/src/tools/dispatch-schema.ts +187 -206
- package/src/tools/edit.ts +46 -42
- package/src/tools/file-mutation-queue.ts +25 -26
- package/src/tools/gateway/clio-context-surface.ts +1 -1
- package/src/tools/gateway/index.ts +7 -3
- package/src/tools/gateway/mcp-capabilities.ts +5 -3
- package/src/tools/grep.ts +14 -2
- package/src/tools/ls.ts +1 -4
- package/src/tools/monitor.ts +14 -1
- package/src/tools/observation.ts +1 -3
- package/src/tools/path-utils.ts +51 -18
- package/src/tools/process-lease.ts +99 -0
- package/src/tools/read.ts +1 -1
- package/src/tools/registry.ts +71 -9
- package/src/tools/task-worktree.ts +296 -17
- package/src/tools/tasks.ts +29 -7
- package/src/tools/worker-evidence.ts +60 -1
- package/src/tools/worktree-root.ts +252 -0
- package/src/tools/write.ts +34 -30
- package/src/worker/entry.ts +18 -1
- package/src/worker/protocol.ts +54 -1
- package/src/worker/spec-contract.ts +22 -2
- package/dist/acp-ZWZCPS2A.js +0 -130
- package/dist/agents-LYSOWZUE.js +0 -150
- package/dist/auth-WBQGKWQ5.js +0 -551
- package/dist/background-BUMOBAQN.js +0 -37
- package/dist/builtins-ODRJOEDI.js +0 -22
- package/dist/chunk-2DRRZ57Q.js +0 -571
- package/dist/chunk-2JBZYUPY.js +0 -105
- package/dist/chunk-2VBWFXYE.js +0 -198
- package/dist/chunk-2X2R3UTH.js +0 -1018
- package/dist/chunk-32KJPXAM.js +0 -75
- package/dist/chunk-37LW32LZ.js +0 -32
- package/dist/chunk-3A3CUMKA.js +0 -54
- package/dist/chunk-3AND2EFU.js +0 -215
- package/dist/chunk-3RDHGNU7.js +0 -647
- package/dist/chunk-3SUDBGEI.js +0 -1323
- package/dist/chunk-3TQN67I2.js +0 -396
- package/dist/chunk-3U4BL2EV.js +0 -103
- package/dist/chunk-3UQADNG2.js +0 -302
- package/dist/chunk-434LRQ6Z.js +0 -13441
- package/dist/chunk-4ATBOFRP.js +0 -7802
- package/dist/chunk-4DNL43EZ.js +0 -139
- package/dist/chunk-4HFJKRGZ.js +0 -5250
- package/dist/chunk-555E2WVV.js +0 -322
- package/dist/chunk-5GZICIYO.js +0 -462
- package/dist/chunk-5PHVPU4G.js +0 -160
- package/dist/chunk-5RTEFNBP.js +0 -197
- package/dist/chunk-64XJW7NT.js +0 -380
- package/dist/chunk-6TKOFFGE.js +0 -1058
- package/dist/chunk-6UJ7RDI7.js +0 -1143
- package/dist/chunk-7FBCRWVT.js +0 -1801
- package/dist/chunk-7JSOSVLP.js +0 -283
- package/dist/chunk-7N3OLLSL.js +0 -637
- package/dist/chunk-7QQRPB2E.js +0 -915
- package/dist/chunk-A6DULIMH.js +0 -986
- package/dist/chunk-AB3QXXBC.js +0 -123
- package/dist/chunk-ACCECAH4.js +0 -49
- package/dist/chunk-AM6CEP2K.js +0 -2120
- package/dist/chunk-AUHVBIDW.js +0 -19
- package/dist/chunk-AY4XE6GN.js +0 -665
- package/dist/chunk-BBA2TAWV.js +0 -667
- package/dist/chunk-BFPHMSK7.js +0 -169
- package/dist/chunk-BMNVVKEW.js +0 -604
- package/dist/chunk-CKK25WN3.js +0 -72
- package/dist/chunk-CTGZCEI6.js +0 -33
- package/dist/chunk-DIAJYJYG.js +0 -446
- package/dist/chunk-DVNAPPXU.js +0 -27
- package/dist/chunk-DXVMLM3Z.js +0 -92
- package/dist/chunk-E3LEPLQ2.js +0 -68
- package/dist/chunk-EHZRAB4U.js +0 -63
- package/dist/chunk-EM2DIQAJ.js +0 -179
- package/dist/chunk-EM2WNQS2.js +0 -93
- package/dist/chunk-ETF4ROKH.js +0 -595
- package/dist/chunk-F2YM3JY4.js +0 -22513
- package/dist/chunk-FEBQWHJT.js +0 -1023
- package/dist/chunk-FPS4R2RN.js +0 -1975
- package/dist/chunk-GD55RTIW.js +0 -33
- package/dist/chunk-GJDRMBDI.js +0 -573
- package/dist/chunk-GREYLTZ5.js +0 -658
- package/dist/chunk-H2WSCZZT.js +0 -238
- package/dist/chunk-H6IUCY6Q.js +0 -117
- package/dist/chunk-H72DCH3E.js +0 -563
- package/dist/chunk-H7TXJR23.js +0 -705
- package/dist/chunk-HBJQQTKM.js +0 -40
- package/dist/chunk-HCVKSGNZ.js +0 -990
- package/dist/chunk-HVCAY2FH.js +0 -67
- package/dist/chunk-I47EJPYL.js +0 -1377
- package/dist/chunk-IALGWTLO.js +0 -36
- package/dist/chunk-IALZJE37.js +0 -1710
- package/dist/chunk-IC7JXLOM.js +0 -1577
- package/dist/chunk-IOSVTTCD.js +0 -108
- package/dist/chunk-IPTPMLA6.js +0 -475
- package/dist/chunk-IZZI3SKQ.js +0 -128
- package/dist/chunk-JABWPKFY.js +0 -27
- package/dist/chunk-JIYWMQZ5.js +0 -175
- package/dist/chunk-JKU34ACI.js +0 -693
- package/dist/chunk-JOBN2YQQ.js +0 -176
- package/dist/chunk-JOL2QRLE.js +0 -152
- package/dist/chunk-JTR3VSV3.js +0 -44
- package/dist/chunk-JU6MAMRJ.js +0 -362
- package/dist/chunk-JURMQWVJ.js +0 -15
- package/dist/chunk-K2BLQC5E.js +0 -262
- package/dist/chunk-K3XN4LZ4.js +0 -402
- package/dist/chunk-KIVFXGBM.js +0 -688
- package/dist/chunk-KKRXONXG.js +0 -43
- package/dist/chunk-KOAHT3N2.js +0 -395
- package/dist/chunk-KP5BPXR3.js +0 -73
- package/dist/chunk-KQ6IDQIB.js +0 -39
- package/dist/chunk-KRJQG47M.js +0 -1289
- package/dist/chunk-KW6OJ7IY.js +0 -221
- package/dist/chunk-L3NBWLSN.js +0 -314
- package/dist/chunk-L4RUTLRL.js +0 -59
- package/dist/chunk-LGTVWPRN.js +0 -47
- package/dist/chunk-LSQW6KZO.js +0 -200
- package/dist/chunk-LTR5QCLS.js +0 -446
- package/dist/chunk-LWJYOHT3.js +0 -165
- package/dist/chunk-M6YLF66Z.js +0 -2687
- package/dist/chunk-MJ4QEJVT.js +0 -185
- package/dist/chunk-MO65K5CH.js +0 -1148
- package/dist/chunk-MTOZEQHL.js +0 -637
- package/dist/chunk-MZDPF35R.js +0 -45
- package/dist/chunk-MZKYVIWW.js +0 -188
- package/dist/chunk-NBPA5QM6.js +0 -386
- package/dist/chunk-NMBEW4PP.js +0 -688
- package/dist/chunk-NPLLK3HO.js +0 -3610
- package/dist/chunk-NSYGPIVW.js +0 -39
- package/dist/chunk-NXTV5OI5.js +0 -1020
- package/dist/chunk-NYDG4QP4.js +0 -689
- package/dist/chunk-OA2GDACN.js +0 -146
- package/dist/chunk-PJI57EC6.js +0 -236
- package/dist/chunk-PJJBUGMR.js +0 -4484
- package/dist/chunk-PNJE7JPS.js +0 -50
- package/dist/chunk-PP23PZEV.js +0 -1347
- package/dist/chunk-PPIFDSBK.js +0 -409
- package/dist/chunk-PTFISXQO.js +0 -319
- package/dist/chunk-QB33Z5S7.js +0 -1865
- package/dist/chunk-QGNII5VC.js +0 -110
- package/dist/chunk-QH3ZTUOA.js +0 -113
- package/dist/chunk-QI72X67S.js +0 -481
- package/dist/chunk-QJMRYTCX.js +0 -56
- package/dist/chunk-QKHZZFKH.js +0 -98
- package/dist/chunk-RDKX2PME.js +0 -66
- package/dist/chunk-RL7LJYN4.js +0 -66
- package/dist/chunk-RPMNIFRY.js +0 -65
- package/dist/chunk-RQROVOV3.js +0 -670
- package/dist/chunk-S34A7BSP.js +0 -97
- package/dist/chunk-SJETVJHX.js +0 -119
- package/dist/chunk-SJMNU4ZS.js +0 -634
- package/dist/chunk-SL2RDHKO.js +0 -19
- package/dist/chunk-SLLG2G44.js +0 -85
- package/dist/chunk-SQAZN2V3.js +0 -2744
- package/dist/chunk-SQBT46OF.js +0 -814
- package/dist/chunk-SRCEQKQS.js +0 -165
- package/dist/chunk-TCUOGIL2.js +0 -52
- package/dist/chunk-TIWPKCVO.js +0 -42
- package/dist/chunk-U44YYLVV.js +0 -1529
- package/dist/chunk-UIU7MGZ3.js +0 -486
- package/dist/chunk-USBBEKHW.js +0 -177
- package/dist/chunk-VHKTOLEW.js +0 -1416
- package/dist/chunk-VPWGADBG.js +0 -3151
- package/dist/chunk-VQD7NH7Z.js +0 -356
- package/dist/chunk-VWFCAK34.js +0 -697
- package/dist/chunk-W5RM7YAH.js +0 -78
- package/dist/chunk-W72LLZAV.js +0 -243
- package/dist/chunk-WGRDABW7.js +0 -207
- package/dist/chunk-WWRV5RJI.js +0 -165
- package/dist/chunk-XCUDZQLX.js +0 -195
- package/dist/chunk-XFLSL7BT.js +0 -386
- package/dist/chunk-XJZEDCNT.js +0 -391
- package/dist/chunk-XLLEL3K7.js +0 -709
- package/dist/chunk-XNZWWDC3.js +0 -686
- package/dist/chunk-XRECG65F.js +0 -308
- package/dist/chunk-XTQ7MEJG.js +0 -457
- package/dist/chunk-XW2UZICE.js +0 -372
- package/dist/chunk-Y3M2T5RO.js +0 -891
- package/dist/chunk-YGDMBK7O.js +0 -567
- package/dist/chunk-YJCCMYYT.js +0 -125
- package/dist/chunk-YPQOPFP7.js +0 -797
- package/dist/chunk-YQYINEJI.js +0 -132
- package/dist/chunk-ZF6CV4WZ.js +0 -5614
- package/dist/chunk-ZKJU55MX.js +0 -326
- package/dist/chunk-ZKQ63XZ5.js +0 -1196
- package/dist/chunk-ZKVMDNAN.js +0 -962
- package/dist/chunk-ZST3FRCV.js +0 -132
- package/dist/clio-JUDCLNHC.js +0 -26
- package/dist/clio-context-tools-FT672MNZ.js +0 -136
- package/dist/code-nav-7OVCTP2Z.js +0 -688
- package/dist/compile-cache-WJEPUZEJ.js +0 -16
- package/dist/components-OZXZMDWU.js +0 -674
- package/dist/config-P3ZQVF63.js +0 -275
- package/dist/config-graph-GKAOBAS5.js +0 -160
- package/dist/configure-25LRYZJG.js +0 -86
- package/dist/context-72VQV7JX.js +0 -73
- package/dist/context-COWRWXP3.js +0 -286
- package/dist/context-WB3D474G.js +0 -344
- package/dist/context-clear-Y4LYMWC6.js +0 -192
- package/dist/context-index-W6A4V7OC.js +0 -120
- package/dist/context-map-DKL3QT6D.js +0 -555
- package/dist/context-working-set-TMZYVC7A.js +0 -1560
- package/dist/data-tool-KMBWKKWR.js +0 -2987
- package/dist/detail-4GLROGY5.js +0 -123
- package/dist/dispatch-runner-TR3LBP5P.js +0 -2446
- package/dist/docs-ZK777W2G.js +0 -101
- package/dist/doctor-WC4OV2OB.js +0 -814
- package/dist/eval-FUNWJNUJ.js +0 -5050
- package/dist/eval-inventory-CX24K2JT.js +0 -260
- package/dist/evals-L73EBHSU.js +0 -104
- package/dist/evidence-AVJ2RTHX.js +0 -392
- package/dist/evidence-P4NZOAK7.js +0 -233
- package/dist/evidence-Y55WKYHH.js +0 -246
- package/dist/evolve-MAWKRYWF.js +0 -617
- package/dist/extensions-PYQH3H47.js +0 -308
- package/dist/fleet-M4H2QBWT.js +0 -268
- package/dist/fleet-ULBXXRDR.js +0 -923
- package/dist/fleet-commands-7NNC4JZU.js +0 -76
- package/dist/fleet-decisions-EHEY7KPU.js +0 -52
- package/dist/fleet-graph-LQ2AHZT3.js +0 -136
- package/dist/fleet-inspect-5IGBIIYZ.js +0 -312
- package/dist/fleet-new-RCKGSRDV.js +0 -48
- package/dist/fleet-preflight-UTTNOKMG.js +0 -27
- package/dist/fleet-validate-YGILJKA6.js +0 -91
- package/dist/fleet-verify-AUWTCDKR.js +0 -210
- package/dist/fleet-view-TGUFCY5A.js +0 -127
- package/dist/init-GFN2Z7NF.js +0 -333
- package/dist/install-3RZDDP23.js +0 -13
- package/dist/install-6PIF6F6W.js +0 -19
- package/dist/interop-EF5JUWWK.js +0 -246
- package/dist/inventory-I6VJDDYF.js +0 -127
- package/dist/library-3J5IO2OJ.js +0 -75
- package/dist/library-IJTOFTDS.js +0 -307
- package/dist/library-Z3KZSHPE.js +0 -492
- package/dist/library-import-IMKFLDHX.js +0 -183
- package/dist/library-inventory-CQP5D6GU.js +0 -56
- package/dist/library-validation-33UTX7AI.js +0 -42
- package/dist/mcp-5FWZKUS6.js +0 -26
- package/dist/memory-36CWN67Y.js +0 -520
- package/dist/models-KQ6PQJJQ.js +0 -302
- package/dist/monitor-XX6ZD6KC.js +0 -785
- package/dist/orchestrator-SK6HDAOP.js +0 -42067
- package/dist/panes-L27QRXUH.js +0 -74
- package/dist/panes-LXZIWNOZ.js +0 -103
- package/dist/paths-7DJDU4P4.js +0 -67
- package/dist/preload-K2TDYI4Y.js +0 -124
- package/dist/registry-DESGAXWK.js +0 -11
- package/dist/reset-73VU3XNT.js +0 -345
- package/dist/resources-3BYJYVYL.js +0 -181
- package/dist/run-AR7PY6GW.js +0 -896
- package/dist/run-script-H2KUDIII.js +0 -41
- package/dist/settings-3VMBMWID.js +0 -72
- package/dist/share-HVWH4FPF.js +0 -293
- package/dist/skills-5TYEY75Q.js +0 -100
- package/dist/skills-eval-CK3MD63Z.js +0 -1083
- package/dist/skills-inventory-KSFYG3I6.js +0 -138
- package/dist/slash-commands-DMVHML7P.js +0 -98
- package/dist/steer-XCD6V3EW.js +0 -77
- package/dist/support-JAZL6VBR.js +0 -38
- package/dist/system-3TDQRMZZ.js +0 -116
- package/dist/targets-EZKHAYRN.js +0 -1117
- package/dist/tasks-SNEFHWYW.js +0 -36
- package/dist/terminal-lease-BNLFA4OF.js +0 -419
- package/dist/tools-7IM6BDCE.js +0 -28
- package/dist/trace-C3MBGD4S.js +0 -524
- package/dist/tree-sitter-AQUUOSYM.js +0 -4673
- package/dist/tui-primitives-36BY2774.js +0 -18
- package/dist/uninstall-WWLOSZ42.js +0 -432
- package/dist/upgrade-ETK2JNSJ.js +0 -297
- package/dist/usage-S2HOB7BZ.js +0 -1065
- package/dist/verifiers-QDTEVH7R.js +0 -632
- package/dist/verify-SUKUK6XM.js +0 -31
- package/dist/version-RFPKO6T7.js +0 -21
- package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +0 -1
- package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +0 -1
- package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +0 -36
- package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +0 -129
- package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +0 -38
- package/dist/web/client/assets/channel-c4EeUUqA.js +0 -1
- package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +0 -62
- package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +0 -2
- package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +0 -125
- package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +0 -1
- package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +0 -72
- package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +0 -1
- package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +0 -231
- package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +0 -1
- package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +0 -10
- package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +0 -1
- package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +0 -1
- package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +0 -1
- package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +0 -168
- package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +0 -88
- package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +0 -206
- package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +0 -1
- package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +0 -1
- package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +0 -1
- package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +0 -62
- package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +0 -4
- package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +0 -30
- package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +0 -41
- package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +0 -3
- package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +0 -24
- package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +0 -24
- package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +0 -1
- package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +0 -99
- package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +0 -1
- package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +0 -1
- package/dist/web/client/assets/framework-YGoR34M4.js +0 -9
- package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +0 -292
- package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +0 -1
- package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +0 -106
- package/dist/web/client/assets/index-CVcy0FAn.js +0 -75
- package/dist/web/client/assets/index-Dsi52apB.css +0 -1
- package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +0 -1
- package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +0 -2
- package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +0 -70
- package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +0 -139
- package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +0 -89
- package/dist/web/client/assets/line-BIDAcEtX.js +0 -1
- package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +0 -7
- package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +0 -44
- package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +0 -96
- package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +0 -1
- package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +0 -1
- package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +0 -1
- package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +0 -39
- package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +0 -7
- package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +0 -1
- package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +0 -1
- package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +0 -1
- package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +0 -1
- package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +0 -1
- package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +0 -1
- package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +0 -84
- package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +0 -40
- package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +0 -162
- package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +0 -1
- package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +0 -1
- package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +0 -1
- package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +0 -8
- package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +0 -120
- package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +0 -1
- package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +0 -1
- package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +0 -34
- package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +0 -1
- package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +0 -78
- package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +0 -7
- package/dist/web/client/index.html +0 -6
- package/dist/web/ops-worker.js +0 -37
- package/dist/web/reads-worker.js +0 -1726
- package/dist/web/server.js +0 -8499
- package/dist/web-EMGUGGEI.js +0 -13
- package/dist/web-fetch-6BRRVQON.js +0 -805
- package/dist/wiki-generate-XHSJTDOP.js +0 -627
- package/dist/with-panes-Z6BTEHMZ.js +0 -628
- package/evals/README.md +0 -9
- package/evals/behavioral-corpus-grader.mjs +0 -236
- package/evals/behavioral-machinery-baseline.json +0 -2276
- package/evals/behavioral-machinery-driver.ts +0 -250
- package/evals/behavioral-machinery-support.ts +0 -254
- package/evals/behavioral-machinery.yaml +0 -614
- package/evals/behavioral-model-negative-control.yaml +0 -69
- package/evals/behavioral-model.yaml +0 -482
- package/evals/fixtures/behavioral-facts.txt +0 -3
- package/evals/fixtures/behavioral-main.ts +0 -7
- package/evals/fixtures/decoy/note.txt +0 -2
- package/evals/fixtures/docs-retrieval.json +0 -102
- package/evals/fixtures/private/credentials.txt +0 -1
- package/evals/fixtures/scalar-decision.json +0 -17
- package/evals/fixtures/scout-citation-pipeline.json +0 -55
- package/evals/fixtures/source-explanation.json +0 -74
- package/evals/fixtures/tool-arguments.json +0 -18
- package/evals/fixtures/tool-surface/read.txt +0 -4
- package/evals/fixtures/tool-surface/subdir/keep.txt +0 -1
- package/evals/no-edit-memory-grader.mjs +0 -149
- package/evals/scalar-decision-grader.py +0 -41
- package/evals/scalar-decision-machinery.ts +0 -145
- package/evals/source-explanation-grader.mjs +0 -118
- package/evals/tool-surface-grader.mjs +0 -53
- package/evals/tool-surface-model.yaml +0 -274
- package/evals/tracked-metrics-baseline.yaml +0 -229
- package/evals/tracked-metrics-grader.mjs +0 -129
- package/src/cli/web.ts +0 -79
- package/src/domains/providers/runtimes/local-native/ollama-native.ts +0 -122
- /package/dist/assets/{web-notices → gui-notices}/@hono__node-server-LICENSE +0 -0
- /package/dist/assets/{web-notices → gui-notices}/hono-LICENSE +0 -0
- /package/dist/{web → gui}/client/THIRD_PARTY_LICENSES.md +0 -0
- /package/dist/{web → gui}/client/assets/arc-Pry-7G1_.js +0 -0
- /package/dist/{web → gui}/client/assets/array-BifhSqXX.js +0 -0
- /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-FOHPRMQF-CoA4358r.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-JWPE2WC7-DVXcaiue.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-XXDRQBXY-DqAYeljN.js +0 -0
- /package/dist/{web → gui}/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -0
- /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
- /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +0 -0
- /package/dist/{web → gui}/client/assets/cytoscape.esm-c2aL46s-.js +0 -0
- /package/dist/{web → gui}/client/assets/dagre-C-rnJpZF.js +0 -0
- /package/dist/{web → gui}/client/assets/defaultLocale-BFoDCU3G.js +0 -0
- /package/dist/{web → gui}/client/assets/dist-v5Q1xZ2K.js +0 -0
- /package/dist/{web → gui}/client/assets/graphlib-DS17s2tU.js +0 -0
- /package/dist/{web → gui}/client/assets/init-C-OQMol4.js +0 -0
- /package/dist/{web → gui}/client/assets/katex-ZlcWpGUi.js +0 -0
- /package/dist/{web → gui}/client/assets/linear-SzVmGSw4.js +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
- /package/dist/{web → gui}/client/assets/ordinal-BDEzSJ7C.js +0 -0
- /package/dist/{web → gui}/client/assets/path-fybaL0A-.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-bash-D6zCJ74D.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-c-04YixN25.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-clike-DapgWyxx.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-core-BtsZdCS6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-cpp-C-lJbC-6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-css-CPgOzxXp.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-diff-BF8m0_mq.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-docker-DkT6yOFj.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-fortran-Be5x3y1V.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-go-C_8qAH5n.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-ini-BESK3y0r.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-javascript-BnO-swvr.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-json-Dp_-W-Hv.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-jsx-D-D0NWtC.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-julia-DIjOgiAV.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-latex-DNMbqcH_.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-makefile-CRKWLQ8l.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-markdown-C0FPJ1Iz.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-markup-Cp04rIa1.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-matlab-D-nk08al.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-python-CfiSVtM6.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-r-QmNGR8LX.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-rust-Bu9N8X3N.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-shell-session-Be4UuYoM.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-sql-CYhVDMEE.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-toml-DKb54GAT.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-tsx-p6J2Kc_4.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-typescript-BMqONzxf.js +0 -0
- /package/dist/{web → gui}/client/assets/prism-yaml-C0JHu8gr.js +0 -0
- /package/dist/{web → gui}/client/assets/purify.es-ChwZkWde.js +0 -0
- /package/dist/{web → gui}/client/assets/rolldown-runtime-hePW80VL.js +0 -0
- /package/dist/{web → gui}/client/assets/rough.esm-Dy-Kn_BL.js +0 -0
- /package/dist/{web → gui}/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -0
- /package/dist/{web → gui}/client/assets/src-B6xuSHsQ.js +0 -0
- /package/dist/{web → gui}/client/clio-coder-logo.webp +0 -0
- /package/dist/{web → gui}/client/icon-192.png +0 -0
- /package/dist/{web → gui}/client/icon-512.png +0 -0
- /package/dist/{web → gui}/client/manifest.webmanifest +0 -0
- /package/dist/{web → gui}/client/offline.css +0 -0
- /package/dist/{web → gui}/client/offline.html +0 -0
- /package/dist/{web → gui}/client/offline.js +0 -0
- /package/dist/{web → gui}/client/sw.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type TaskBoardSnapshot, type TaskBoardStore, taskBoardCounts } from "../domains/session/task-board.js";
|
|
2
|
-
import { Text, type TUI, visibleWidth } from "../engine/tui.js";
|
|
2
|
+
import { Text, type TUI, visibleWidth, wrapTextWithAnsi } from "../engine/tui.js";
|
|
3
3
|
import {
|
|
4
4
|
CONTEXT_ISLAND_WIDTH,
|
|
5
5
|
type ContextActivitySnapshot,
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
} from "./context-activity.js";
|
|
8
8
|
import { type DispatchBoardRow, formatTaskIslandLines, TASK_ISLAND_WIDTH } from "./dispatch-board.js";
|
|
9
9
|
import { clioTheme, frame, GLYPH } from "./theme/index.js";
|
|
10
|
+
import { isHelperRun } from "./worker-stream.js";
|
|
10
11
|
|
|
11
12
|
export interface InteractiveTickerHandle {
|
|
12
13
|
unref?(): void;
|
|
@@ -49,7 +50,15 @@ function formatTaskBoardIslandLines(board: TaskBoardSnapshot): string[] {
|
|
|
49
50
|
const glyph = active ? theme.fg("accent", GLYPH.running) : theme.fg("dim", GLYPH.queued);
|
|
50
51
|
body.push(`${glyph} ${theme.fg("dim", next.id)} ${theme.fg("muted", next.title)}`);
|
|
51
52
|
}
|
|
52
|
-
return frame(
|
|
53
|
+
return frame(
|
|
54
|
+
theme,
|
|
55
|
+
"Tasks",
|
|
56
|
+
[
|
|
57
|
+
...body.flatMap((line) => wrapTextWithAnsi(line, TASK_ISLAND_WIDTH)).slice(0, 7),
|
|
58
|
+
theme.fg("dim", "/tasks · full task board"),
|
|
59
|
+
],
|
|
60
|
+
TASK_ISLAND_WIDTH + 4,
|
|
61
|
+
);
|
|
53
62
|
}
|
|
54
63
|
|
|
55
64
|
export interface InteractiveTickers {
|
|
@@ -69,13 +78,17 @@ export function createInteractiveTickers(deps: InteractiveTickersDeps): Interact
|
|
|
69
78
|
((handle: InteractiveTickerHandle) => clearInterval(handle as ReturnType<typeof setInterval>));
|
|
70
79
|
const taskIsland = new Text("", 0, 0);
|
|
71
80
|
const contextIsland = new Text("", 0, 0);
|
|
81
|
+
let taskIslandHeight = 24;
|
|
72
82
|
const taskIslandWidth = formatTaskIslandLines([]).reduce((max, line) => Math.max(max, visibleWidth(line)), 0);
|
|
73
83
|
const taskIslandHandle = deps.tui.showOverlay(taskIsland, {
|
|
74
84
|
anchor: "top-right",
|
|
75
85
|
width: taskIslandWidth,
|
|
76
86
|
margin: { top: 1, right: 1 },
|
|
77
87
|
nonCapturing: true,
|
|
78
|
-
visible: (width, height) =>
|
|
88
|
+
visible: (width, height) => {
|
|
89
|
+
taskIslandHeight = height;
|
|
90
|
+
return width >= 80 && height >= 18;
|
|
91
|
+
},
|
|
79
92
|
});
|
|
80
93
|
taskIslandHandle.setHidden(true);
|
|
81
94
|
const contextIslandHandle = deps.tui.showOverlay(contextIsland, {
|
|
@@ -94,7 +107,7 @@ export function createInteractiveTickers(deps: InteractiveTickersDeps): Interact
|
|
|
94
107
|
let taskIslandHidden = true;
|
|
95
108
|
|
|
96
109
|
const renderTaskIsland = (): boolean => {
|
|
97
|
-
const rows = deps.dispatchBoardStore.activeRows();
|
|
110
|
+
const rows = deps.dispatchBoardStore.activeRows().filter((row) => !isHelperRun(row));
|
|
98
111
|
const board = rows.length === 0 ? (deps.getTaskBoard?.() ?? null) : null;
|
|
99
112
|
const boardHasOpenTasks = board !== null && taskBoardCounts(board).open > 0;
|
|
100
113
|
const contextActive = deps.contextActivityStore.active();
|
|
@@ -111,7 +124,10 @@ export function createInteractiveTickers(deps: InteractiveTickersDeps): Interact
|
|
|
111
124
|
// leaves the last text in place, which is unreachable while hidden.
|
|
112
125
|
if (hidden && taskIslandHidden && rows.length === 0 && !boardHasOpenTasks) return visibilityChanged;
|
|
113
126
|
taskIslandHidden = hidden;
|
|
114
|
-
if (rows.length > 0)
|
|
127
|
+
if (rows.length > 0)
|
|
128
|
+
taskIsland.setText(
|
|
129
|
+
formatTaskIslandLines(rows, Math.max(1, Math.min(4, Math.floor((taskIslandHeight - 8) / 9)))).join("\n"),
|
|
130
|
+
);
|
|
115
131
|
else if (board) taskIsland.setText(formatTaskBoardIslandLines(board).join("\n"));
|
|
116
132
|
taskIsland.invalidate();
|
|
117
133
|
return visibilityChanged || !hidden;
|
|
@@ -571,3 +571,12 @@ export function createKeybindingManagerForTesting(
|
|
|
571
571
|
): ClioKeybindingManager {
|
|
572
572
|
return buildManager(overrides, env, false);
|
|
573
573
|
}
|
|
574
|
+
|
|
575
|
+
/** Title-case a KeyId for compact chrome hints, preserving each caller's fallback. */
|
|
576
|
+
export function formatKeyLabel(keyId: string | undefined, fallback = "unbound"): string {
|
|
577
|
+
if (!keyId || keyId.length === 0) return fallback;
|
|
578
|
+
return keyId
|
|
579
|
+
.split("+")
|
|
580
|
+
.map((segment) => (segment.length === 0 ? segment : segment.charAt(0).toUpperCase() + segment.slice(1)))
|
|
581
|
+
.join("+");
|
|
582
|
+
}
|
|
@@ -386,6 +386,7 @@ export class ClioOverlayFrame implements Component {
|
|
|
386
386
|
* decision treatment only while it is actually holding a decision.
|
|
387
387
|
*/
|
|
388
388
|
private readonly tone?: OverlayTone,
|
|
389
|
+
private readonly fullscreen = false,
|
|
389
390
|
) {}
|
|
390
391
|
|
|
391
392
|
setRowBudget(rows: number): void {
|
|
@@ -418,11 +419,21 @@ export class ClioOverlayFrame implements Component {
|
|
|
418
419
|
}
|
|
419
420
|
const label = titleText.length > 0 ? `─ ${titleText} ` : "─ ";
|
|
420
421
|
const side = clioFrame("│", tone ?? "frame");
|
|
421
|
-
const
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
422
|
+
const body = [...fitBody(childLines, this.rowBudget, contentWidth)];
|
|
423
|
+
if (this.fullscreen) {
|
|
424
|
+
while (body.length < Math.max(0, this.rowBudget - 2)) body.push("");
|
|
425
|
+
}
|
|
426
|
+
const boxLines = this.fullscreen
|
|
427
|
+
? [
|
|
428
|
+
padAnsi(` ${clioTitle(titleText, tone)}`, boxWidth),
|
|
429
|
+
...body.map((line) => ` ${padAnsi(line, contentWidth)} `),
|
|
430
|
+
padAnsi(` ${clioTheme().fg("muted", hint ?? "")}`, boxWidth),
|
|
431
|
+
]
|
|
432
|
+
: [
|
|
433
|
+
brandedTopBorder(label, contentWidth + 2, tone),
|
|
434
|
+
...body.map((line) => `${side} ${padAnsi(line, contentWidth)} ${side}`),
|
|
435
|
+
brandedBottomBorder(contentWidth + 2, hint, tone),
|
|
436
|
+
];
|
|
426
437
|
const slack = Math.max(0, width - boxWidth);
|
|
427
438
|
const lines = ((): string[] => {
|
|
428
439
|
if (slack === 0) return boxLines;
|
|
@@ -500,11 +511,22 @@ export function showClioOverlayFrame(
|
|
|
500
511
|
* really is fixed and surface-specific.
|
|
501
512
|
*/
|
|
502
513
|
markerId: string;
|
|
514
|
+
/** Cover the viewport, including unused rows, while background content updates. */
|
|
515
|
+
fullscreen?: boolean;
|
|
503
516
|
},
|
|
504
517
|
): OverlayHandle {
|
|
505
|
-
const { title, footerHint, tone, width, visible, maxHeight, margin, markerId, ...overlayOptions } =
|
|
518
|
+
const { title, footerHint, tone, width, visible, maxHeight, margin, markerId, fullscreen, ...overlayOptions } =
|
|
519
|
+
options;
|
|
506
520
|
const boxWidth = typeof width === "number" ? width : 0;
|
|
507
|
-
const frame = new ClioOverlayFrame(
|
|
521
|
+
const frame = new ClioOverlayFrame(
|
|
522
|
+
child,
|
|
523
|
+
title,
|
|
524
|
+
footerHint,
|
|
525
|
+
boxWidth,
|
|
526
|
+
frameAlignForAnchor(options.anchor),
|
|
527
|
+
tone,
|
|
528
|
+
fullscreen,
|
|
529
|
+
);
|
|
508
530
|
const handle = tui.showOverlay(frame, {
|
|
509
531
|
...overlayOptions,
|
|
510
532
|
...(margin !== undefined ? { margin } : {}),
|
|
@@ -36,6 +36,7 @@ export type OverlayLifecycleApplicationDeps = Pick<
|
|
|
36
36
|
| "dataDir"
|
|
37
37
|
| "dispatch"
|
|
38
38
|
| "getFleetNodes"
|
|
39
|
+
| "getRouteBreakers"
|
|
39
40
|
| "getSessionId"
|
|
40
41
|
| "getSettings"
|
|
41
42
|
| "getTaskBoard"
|
|
@@ -271,9 +272,9 @@ export function createOverlayLifecycle(deps: OverlayLifecycleRuntimeDeps): Overl
|
|
|
271
272
|
dispatch: deps.app.dispatch,
|
|
272
273
|
getAutonomy: () => deps.app.getSettings?.().safety.autonomy ?? "auto-edit",
|
|
273
274
|
getOverlayState: () => overlayTransitions.state,
|
|
274
|
-
openPermissionOverlay: (view, inspect) => {
|
|
275
|
+
openPermissionOverlay: (view, inspect, invocation) => {
|
|
275
276
|
if (overlayTransitions.state === "permission-confirm") return false;
|
|
276
|
-
const body = createPermissionOverlayBody(view, inspect);
|
|
277
|
+
const body = createPermissionOverlayBody(view, inspect, invocation);
|
|
277
278
|
permissionBody = body;
|
|
278
279
|
const handle = showOverlayFrame(tui, body, {
|
|
279
280
|
...permissionOverlayPlacement(tui, editor, footer.view),
|
|
@@ -360,6 +361,7 @@ export function createOverlayLifecycle(deps: OverlayLifecycleRuntimeDeps): Overl
|
|
|
360
361
|
...(deps.app.onSelectModel ? { onSelectModel: deps.app.onSelectModel } : {}),
|
|
361
362
|
...(deps.app.onSetThinkingLevel ? { onSetThinkingLevel: deps.app.onSetThinkingLevel } : {}),
|
|
362
363
|
...(deps.app.getFleetNodes ? { getFleetNodes: deps.app.getFleetNodes } : {}),
|
|
364
|
+
...(deps.app.getRouteBreakers ? { getRouteBreakers: deps.app.getRouteBreakers } : {}),
|
|
363
365
|
connectTarget: (targetId) => overlayAuth.openConnectFlow(targetId),
|
|
364
366
|
...(deps.app.interop ? { getInteropProposals: interopProposalsFor(deps.app.interop) } : {}),
|
|
365
367
|
...(openModelOverlayFactory ? { openModelOverlay: openModelOverlayFactory } : {}),
|
|
@@ -419,7 +421,7 @@ export function createOverlayLifecycle(deps: OverlayLifecycleRuntimeDeps): Overl
|
|
|
419
421
|
getContextLedger: () => deps.app.chat.contextLedger(),
|
|
420
422
|
contextChat: deps.app.chat,
|
|
421
423
|
bus: deps.app.bus,
|
|
422
|
-
...(deps.app.onContextClear ? { onContextClear: deps.app.onContextClear } : {}),
|
|
424
|
+
...(deps.app.onContextClear ? { onContextClear: (options) => deps.app.onContextClear?.(options, deps.io) } : {}),
|
|
423
425
|
stderr: (text) => io.stderr(text),
|
|
424
426
|
refreshFooter: () => footer.refresh(),
|
|
425
427
|
toggleFooter: () => footer.toggleExpanded(),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ClioSettings } from "../core/config.js";
|
|
2
2
|
import type { ThinkingLevel } from "../core/defaults.js";
|
|
3
3
|
import type { SafeEventBus } from "../core/event-bus.js";
|
|
4
|
+
import type { RouteBreakerView } from "../domains/dispatch/contract.js";
|
|
4
5
|
import type { InteropProposal } from "../domains/interop/index.js";
|
|
5
6
|
import type { ProvidersContract } from "../domains/providers/index.js";
|
|
6
7
|
import type { FleetNodeSnapshot } from "../domains/scheduling/cluster.js";
|
|
@@ -33,6 +34,8 @@ export interface OverlayModelSelectorsDeps {
|
|
|
33
34
|
onSetThinkingLevel?: (level: ThinkingLevel, scope?: ModelScopeChoice) => void;
|
|
34
35
|
/** Settings → Fleet shows live node placement health when the scheduler exposes it. */
|
|
35
36
|
getFleetNodes?: () => ReadonlyArray<FleetNodeSnapshot>;
|
|
37
|
+
/** Settings → Targets shows this process's dispatch breaker state per route. */
|
|
38
|
+
getRouteBreakers?: () => ReadonlyArray<RouteBreakerView>;
|
|
36
39
|
/** Settings → Targets "connect" runs the auth flow over the open settings overlay. */
|
|
37
40
|
connectTarget?: (targetId: string) => Promise<void> | void;
|
|
38
41
|
/** Settings → Advanced offers detected agents on the delegation.agents row. */
|
|
@@ -121,6 +124,7 @@ export function createOverlayModelSelectors(deps: OverlayModelSelectorsDeps): Ov
|
|
|
121
124
|
...(section ? { section } : {}),
|
|
122
125
|
...(rowId ? { rowId } : {}),
|
|
123
126
|
...(deps.getFleetNodes ? { getFleetNodes: deps.getFleetNodes } : {}),
|
|
127
|
+
...(deps.getRouteBreakers ? { getRouteBreakers: deps.getRouteBreakers } : {}),
|
|
124
128
|
...(deps.connectTarget ? { connectTarget: deps.connectTarget } : {}),
|
|
125
129
|
...(deps.getInteropProposals ? { getInteropProposals: deps.getInteropProposals } : {}),
|
|
126
130
|
writeSettings: (next) => {
|
|
@@ -50,7 +50,7 @@ export interface OverlayPermissionLifecycleDeps {
|
|
|
50
50
|
* mutation text and is the only channel that does; it is process-local by
|
|
51
51
|
* construction, so it is passed here rather than folded into the view.
|
|
52
52
|
*/
|
|
53
|
-
openPermissionOverlay(view: ApprovalRequestView, inspect?: MutationInspector): boolean;
|
|
53
|
+
openPermissionOverlay(view: ApprovalRequestView, inspect?: MutationInspector, invocation?: () => unknown): boolean;
|
|
54
54
|
closeOverlay(): void;
|
|
55
55
|
appendNotice(level: NoticeLevel, text: string): void;
|
|
56
56
|
applyApprovalState(event: ToolApprovalStateEvent): void;
|
|
@@ -58,7 +58,7 @@ export interface OverlayPermissionLifecycleDeps {
|
|
|
58
58
|
/** End the in-flight run, carrying the text the operator will see. */
|
|
59
59
|
stopActiveTurn(reason: string): void;
|
|
60
60
|
/**
|
|
61
|
-
* A
|
|
61
|
+
* A permission request parked waiting for the operator. Fired once per
|
|
62
62
|
* request, on the same dedup the operator-facing surfaces use, so a
|
|
63
63
|
* re-presented dialog does not notify twice.
|
|
64
64
|
*/
|
|
@@ -292,6 +292,7 @@ export function createOverlayPermissionLifecycle(deps: OverlayPermissionLifecycl
|
|
|
292
292
|
// could not mount, when it is the operator's only additional signal.
|
|
293
293
|
const announceParked = (): void => {
|
|
294
294
|
if (!markPermissionRequestSurfaced(announcedRequestIds, meta.requestId)) return;
|
|
295
|
+
deps.onOperatorParked?.();
|
|
295
296
|
const notice = approvalParkedNotice(call.tool, decision, autonomy);
|
|
296
297
|
deps.appendNotice(notice.level, notice.text);
|
|
297
298
|
};
|
|
@@ -303,11 +304,11 @@ export function createOverlayPermissionLifecycle(deps: OverlayPermissionLifecycl
|
|
|
303
304
|
view,
|
|
304
305
|
});
|
|
305
306
|
}
|
|
306
|
-
if (!deps.openPermissionOverlay(view, mainMutationInspector(call, view))) {
|
|
307
|
+
if (!deps.openPermissionOverlay(view, mainMutationInspector(call, view), () => call.args)) {
|
|
307
308
|
announceParked();
|
|
308
309
|
return;
|
|
309
310
|
}
|
|
310
|
-
markPermissionRequestSurfaced(announcedRequestIds, meta.requestId);
|
|
311
|
+
if (markPermissionRequestSurfaced(announcedRequestIds, meta.requestId)) deps.onOperatorParked?.();
|
|
311
312
|
pendingPermission = { call, decision, meta };
|
|
312
313
|
pendingWorker = null;
|
|
313
314
|
confirmed = false;
|
|
@@ -398,7 +399,7 @@ export function createOverlayPermissionLifecycle(deps: OverlayPermissionLifecycl
|
|
|
398
399
|
// here printed the same guidance twice in one payload.
|
|
399
400
|
const cancellationReason = stopping
|
|
400
401
|
? "User denied this tool call and stopped the turn from the permission confirmation prompt. The turn is over."
|
|
401
|
-
: "User
|
|
402
|
+
: "User denied this invocation from the permission confirmation prompt. This call will not run; no approval is pending.";
|
|
402
403
|
deps.bus.emit(BusChannels.PermissionResolved, {
|
|
403
404
|
status: "denied",
|
|
404
405
|
...(permission?.meta ? { requestId: permission.meta.requestId } : {}),
|
|
@@ -40,38 +40,17 @@ export const ASK_USER_DECISION_TONE: ClioToken = DEFAULT_ASK_USER_PRESENTATION.s
|
|
|
40
40
|
export const ASK_USER_DECISION_TITLE = DEFAULT_ASK_USER_PRESENTATION.title;
|
|
41
41
|
export const ASK_USER_WAITING_TITLE = "Ask User";
|
|
42
42
|
|
|
43
|
-
/**
|
|
44
|
-
* One box for every request shape.
|
|
45
|
-
*
|
|
46
|
-
* Three surfaces used to answer three request shapes: a fixed 68-column bar for
|
|
47
|
-
* a short question, a fixed 88-column panel for a longer option list, and a
|
|
48
|
-
* full-screen workspace for an interview. The bar cut Daisy's four-part research
|
|
49
|
-
* question to two parts at every terminal width, and the workspace put twelve
|
|
50
|
-
* empty rows between the question and its options. The box now sizes itself to
|
|
51
|
-
* what it has to say, sits above the composer where the operator was typing,
|
|
52
|
-
* and takes a readable measure from the terminal rather than a constant.
|
|
53
|
-
*/
|
|
54
|
-
export const ASK_USER_MAX_BOX_WIDTH = 100;
|
|
55
|
-
export const ASK_USER_MIN_BOX_WIDTH = 40;
|
|
56
|
-
const ASK_USER_MARGIN = { top: 1, right: 2, bottom: 1, left: 2 };
|
|
57
|
-
/** Two border rows plus the one-row margin above and below. */
|
|
43
|
+
/** An interview owns the viewport for every round, including one-question rounds. */
|
|
58
44
|
const ASK_USER_FRAME_AND_MARGIN_ROWS = 4;
|
|
59
45
|
const MIN_INNER_ROWS = 6;
|
|
60
46
|
/** The question region keeps at least this many rows before the options window shrinks. */
|
|
61
47
|
const MIN_QUESTION_ROWS = 3;
|
|
62
|
-
/** Below this width an option's description goes under its label instead of beside it. */
|
|
63
|
-
const STACKED_OPTION_WIDTH = 56;
|
|
64
48
|
const MAX_LABEL_COLUMN = 30;
|
|
65
49
|
const MIN_LABEL_COLUMN = 12;
|
|
66
50
|
const ELLIPSIS = "…";
|
|
67
51
|
const CONTINUATION_INDENT = " ";
|
|
68
52
|
const TEXT_ASKING_DESCRIPTION = "opens a text field for your answer";
|
|
69
53
|
|
|
70
|
-
export function askUserBoxWidth(columns: number): number {
|
|
71
|
-
if (!Number.isFinite(columns) || columns <= 0) return ASK_USER_MAX_BOX_WIDTH;
|
|
72
|
-
return Math.max(ASK_USER_MIN_BOX_WIDTH, Math.min(ASK_USER_MAX_BOX_WIDTH, Math.floor(columns) - 4));
|
|
73
|
-
}
|
|
74
|
-
|
|
75
54
|
export interface OpenAskUserOverlayDeps {
|
|
76
55
|
onCancel: () => void;
|
|
77
56
|
}
|
|
@@ -366,62 +345,25 @@ interface OptionRowLayout {
|
|
|
366
345
|
rows: string[][];
|
|
367
346
|
}
|
|
368
347
|
|
|
369
|
-
/**
|
|
370
|
-
* Every option, with its whole description.
|
|
371
|
-
*
|
|
372
|
-
* A description is what the operator is choosing between: "+Latency,
|
|
373
|
-
* +Simplicity. Good for: Financial, Auth" is the trade-off, and the old table
|
|
374
|
-
* cut it to its first clause on every row the cursor was not on. Every row now
|
|
375
|
-
* wraps its description beside the label, or under it when the box is too
|
|
376
|
-
* narrow for two columns, and the row carries no key: the footer does.
|
|
377
|
-
*/
|
|
348
|
+
/** Full-width labels and explanations; selection never hides another option's explanation. */
|
|
378
349
|
function layoutOptionRows(items: ReadonlyArray<SelectItem>, focusedIndex: number, width: number): OptionRowLayout {
|
|
379
350
|
const theme = clioTheme();
|
|
380
351
|
const safeWidth = Math.max(8, width);
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
if (description.length === 0) {
|
|
397
|
-
rows.push(
|
|
398
|
-
wrapTextWithAnsi(paint(item.label), Math.max(4, safeWidth - 2)).map(
|
|
399
|
-
(line, at) => `${at === 0 ? prefix : " "}${line}`,
|
|
400
|
-
),
|
|
401
|
-
);
|
|
402
|
-
continue;
|
|
403
|
-
}
|
|
404
|
-
if (stacked || visibleWidth(item.label) > labelColumn - 1) {
|
|
405
|
-
const labelRows = wrapTextWithAnsi(paint(item.label), Math.max(4, safeWidth - 2)).map(
|
|
406
|
-
(line, at) => `${at === 0 ? prefix : " "}${line}`,
|
|
407
|
-
);
|
|
408
|
-
const descriptionRows = wrapTextWithAnsi(
|
|
409
|
-
describe(description),
|
|
410
|
-
Math.max(4, safeWidth - CONTINUATION_INDENT.length),
|
|
411
|
-
).map((line) => `${CONTINUATION_INDENT}${line}`);
|
|
412
|
-
rows.push([...labelRows, ...descriptionRows]);
|
|
413
|
-
continue;
|
|
414
|
-
}
|
|
415
|
-
const spacing = " ".repeat(Math.max(1, labelColumn - visibleWidth(item.label)));
|
|
416
|
-
const descriptionWidth = Math.max(4, safeWidth - 2 - labelColumn);
|
|
417
|
-
const wrapped = wrapTextWithAnsi(describe(description), descriptionWidth);
|
|
418
|
-
const indent = " ".repeat(2 + labelColumn);
|
|
419
|
-
rows.push([
|
|
420
|
-
`${prefix}${paint(item.label)}${spacing}${wrapped[0] ?? ""}`,
|
|
421
|
-
...wrapped.slice(1).map((line) => `${indent}${line}`),
|
|
422
|
-
]);
|
|
423
|
-
}
|
|
424
|
-
return { rows };
|
|
352
|
+
return {
|
|
353
|
+
rows: items.map((item, index) => {
|
|
354
|
+
const focused = index === focusedIndex;
|
|
355
|
+
const label = theme.paint(item.label, { bold: true, ...(focused ? { fg: "accent" as const } : {}) });
|
|
356
|
+
const prefix = focused ? theme.fg("accent", `${GLYPH.cursor} `) : " ";
|
|
357
|
+
const labels = wrapTextWithAnsi(label, safeWidth - 2).map((line, at) => `${at === 0 ? prefix : " "}${line}`);
|
|
358
|
+
const description = item.description?.trim();
|
|
359
|
+
const explanation = description
|
|
360
|
+
? formatAskUserQuestion(description, Math.max(4, safeWidth - CONTINUATION_INDENT.length)).map(
|
|
361
|
+
(line) => `${CONTINUATION_INDENT}${line}`,
|
|
362
|
+
)
|
|
363
|
+
: [];
|
|
364
|
+
return [...labels, ...explanation];
|
|
365
|
+
}),
|
|
366
|
+
};
|
|
425
367
|
}
|
|
426
368
|
|
|
427
369
|
/**
|
|
@@ -549,7 +491,10 @@ class AskUserOverlayView implements Component {
|
|
|
549
491
|
return true;
|
|
550
492
|
}
|
|
551
493
|
handleInput(data: string): void {
|
|
552
|
-
if (this.phase !== "asking")
|
|
494
|
+
if (this.phase !== "asking") {
|
|
495
|
+
if (matchesKey(data, "escape")) this.deps.onCancel();
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
553
498
|
const question = this.currentQuestion();
|
|
554
499
|
const state = this.currentState();
|
|
555
500
|
if (!question || !state) return;
|
|
@@ -558,6 +503,20 @@ class AskUserOverlayView implements Component {
|
|
|
558
503
|
// options, so the region has keys of its own that neither control claims.
|
|
559
504
|
if (this.handleScrollInput(data, state.mode)) return;
|
|
560
505
|
|
|
506
|
+
// Question navigation must work from both choices and the answer editor.
|
|
507
|
+
// Bare arrows browse an empty answer; once typing starts they edit text.
|
|
508
|
+
const canBrowseWithArrows = state.mode !== "text" || !(this.text?.getText() ?? state.inputValue);
|
|
509
|
+
if (this.questions.length > 1) {
|
|
510
|
+
if (matchesKey(data, "shift+tab") || (canBrowseWithArrows && matchesKey(data, "left"))) {
|
|
511
|
+
this.goToRelativeQuestion(-1);
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
if (matchesKey(data, "tab") || (canBrowseWithArrows && matchesKey(data, "right"))) {
|
|
515
|
+
this.goToRelativeQuestion(1);
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
|
|
561
520
|
if (state.mode === "text") {
|
|
562
521
|
if (matchesKey(data, "escape")) {
|
|
563
522
|
this.escapeFromTextInput(question, state);
|
|
@@ -567,14 +526,6 @@ class AskUserOverlayView implements Component {
|
|
|
567
526
|
return;
|
|
568
527
|
}
|
|
569
528
|
|
|
570
|
-
if (this.isPreviousQuestionKey(data)) {
|
|
571
|
-
this.goToRelativeQuestion(-1);
|
|
572
|
-
return;
|
|
573
|
-
}
|
|
574
|
-
if (this.isNextQuestionKey(data)) {
|
|
575
|
-
this.goToRelativeQuestion(1);
|
|
576
|
-
return;
|
|
577
|
-
}
|
|
578
529
|
if (question.multi_select === true && data === " ") {
|
|
579
530
|
this.toggleCurrentSelection(question, state);
|
|
580
531
|
return;
|
|
@@ -608,17 +559,55 @@ class AskUserOverlayView implements Component {
|
|
|
608
559
|
* rows it needs.
|
|
609
560
|
*/
|
|
610
561
|
render(width: number): string[] {
|
|
562
|
+
const wide = width >= 120 && this.maxInnerRows() >= 24 && this.phase === "asking" && this.questions.length > 1;
|
|
563
|
+
const menuWidth = 28;
|
|
564
|
+
const bodyWidth = Math.min(104, Math.max(1, width - (wide ? menuWidth + 5 : 0)));
|
|
565
|
+
const body = this.renderBody(bodyWidth, wide);
|
|
566
|
+
if (!wide) return body;
|
|
567
|
+
const theme = clioTheme();
|
|
568
|
+
const menu = [theme.style("accent", "QUESTIONS", { bold: true }), ""];
|
|
569
|
+
this.questions.forEach((question, index) => {
|
|
570
|
+
const active = index === this.index;
|
|
571
|
+
const answered = Boolean(this.states[index]?.answer.trim());
|
|
572
|
+
const prefix = active ? "› " : answered ? "✓ " : "○ ";
|
|
573
|
+
menu.push(
|
|
574
|
+
...wrapLabeledValue(
|
|
575
|
+
prefix,
|
|
576
|
+
theme.paint(`${index + 1}. ${compactTitle(question)}`, { fg: active ? "accent" : "muted", bold: active }),
|
|
577
|
+
menuWidth,
|
|
578
|
+
),
|
|
579
|
+
"",
|
|
580
|
+
);
|
|
581
|
+
});
|
|
582
|
+
menu.push(theme.fg("muted", "Tab / Shift+Tab to browse"));
|
|
583
|
+
return Array.from({ length: Math.min(this.maxInnerRows(), Math.max(menu.length, body.length)) }, (_, index) => {
|
|
584
|
+
const left = menu[index] ?? "";
|
|
585
|
+
return `${left}${" ".repeat(Math.max(0, menuWidth - visibleWidth(left)))} ${theme.fg("frame", "│")} ${body[index] ?? ""}`;
|
|
586
|
+
});
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
private renderBody(width: number, hasMenu: boolean): string[] {
|
|
611
590
|
const safeWidth = Math.max(1, width);
|
|
612
591
|
const maxRows = this.maxInnerRows();
|
|
613
592
|
if (this.phase !== "asking") return this.renderWaiting(safeWidth, maxRows);
|
|
614
593
|
const question = this.currentQuestion();
|
|
615
594
|
if (!question) return [clioTheme().fg("muted", "No questions.")];
|
|
616
595
|
|
|
617
|
-
const
|
|
596
|
+
const theme = clioTheme();
|
|
597
|
+
const strip = [
|
|
598
|
+
fitLine(
|
|
599
|
+
theme.style("accent", `Question ${this.index + 1} of ${this.questions.length} · Round ${this.roundsAnswered + 1}`, {
|
|
600
|
+
bold: true,
|
|
601
|
+
}),
|
|
602
|
+
safeWidth,
|
|
603
|
+
),
|
|
604
|
+
"",
|
|
605
|
+
...(hasMenu ? [] : this.renderQuestionStrip(safeWidth)),
|
|
606
|
+
];
|
|
618
607
|
const header = this.renderQuestionHeader(question, safeWidth);
|
|
619
608
|
const details = this.renderDecisionContext(safeWidth);
|
|
620
609
|
const status = this.status.length > 0 ? wrapTextWithAnsi(clioTheme().fg("dim", this.status), safeWidth) : [];
|
|
621
|
-
const body = formatAskUserQuestion(question.question, safeWidth);
|
|
610
|
+
const body = formatAskUserQuestion(question.question, safeWidth).map((line) => theme.paint(line, { bold: true }));
|
|
622
611
|
const fixedTop = [...strip, ...header, ...details];
|
|
623
612
|
// The control is sized after the question has claimed its minimum, so a
|
|
624
613
|
// long option list cannot push a short question off the box.
|
|
@@ -701,12 +690,14 @@ class AskUserOverlayView implements Component {
|
|
|
701
690
|
// back; a question without one has nothing behind it and the key still
|
|
702
691
|
// leaves the interview. The footer says which one this is.
|
|
703
692
|
const escapeVerb: OverlayEscVerb = questionHasOptions(question) ? "back" : "close";
|
|
704
|
-
const entries: HintEntry[] = [
|
|
693
|
+
const entries: HintEntry[] = [];
|
|
694
|
+
if (this.questions.length > 1) entries.push({ key: "Tab/Shift+Tab", verb: "question" });
|
|
695
|
+
entries.push({ key: "Enter", verb: recordAnswer });
|
|
705
696
|
if (this.deps.tui) entries.push({ key: getKeybindings().getKeys("tui.input.newLine").join("/"), verb: "newline" });
|
|
706
697
|
return buildHint([...entries, ...scroll], escapeVerb);
|
|
707
698
|
}
|
|
708
699
|
const entries: HintEntry[] = [];
|
|
709
|
-
if (this.questions.length > 1) entries.push({ key: "
|
|
700
|
+
if (this.questions.length > 1) entries.push({ key: "←/→ or Tab", verb: "question" });
|
|
710
701
|
if (question.multi_select === true) entries.push({ key: "Space", verb: "toggle" });
|
|
711
702
|
// `t` is on every select footer because the operator cannot tell from a
|
|
712
703
|
// label whether the option needs a figure attached until they read it.
|
|
@@ -797,14 +788,6 @@ class AskUserOverlayView implements Component {
|
|
|
797
788
|
return this.states[this.index] ?? null;
|
|
798
789
|
}
|
|
799
790
|
|
|
800
|
-
private isPreviousQuestionKey(data: string): boolean {
|
|
801
|
-
return this.questions.length > 1 && matchesKey(data, "left");
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
private isNextQuestionKey(data: string): boolean {
|
|
805
|
-
return this.questions.length > 1 && matchesKey(data, "right");
|
|
806
|
-
}
|
|
807
|
-
|
|
808
791
|
/**
|
|
809
792
|
* The key that adds typed text to the option under the cursor.
|
|
810
793
|
*
|
|
@@ -843,7 +826,7 @@ class AskUserOverlayView implements Component {
|
|
|
843
826
|
*/
|
|
844
827
|
private renderQuestionHeader(question: AskUserQuestion, width: number): string[] {
|
|
845
828
|
const theme = clioTheme();
|
|
846
|
-
const parts: string[] = [];
|
|
829
|
+
const parts: string[] = [theme.fg("accent", "Clio-Coder asks you")];
|
|
847
830
|
if (question.header) parts.push(screenTitle(theme, question.header));
|
|
848
831
|
if (this.questions.length <= 1 && this.roundsAnswered > 0) {
|
|
849
832
|
parts.push(theme.fg("dim", `Round ${this.roundsAnswered + 1}`));
|
|
@@ -941,6 +924,10 @@ class AskUserOverlayView implements Component {
|
|
|
941
924
|
items.findIndex((item) => item.value === selectedItem.value),
|
|
942
925
|
);
|
|
943
926
|
const layout = layoutOptionRows(items, focusedIndex, width);
|
|
927
|
+
const totalRows = layout.rows.reduce((sum, rows) => sum + rows.length, 0);
|
|
928
|
+
if (totalRows + items.length <= rowBudget) {
|
|
929
|
+
for (const rows of layout.rows) rows.push("");
|
|
930
|
+
}
|
|
944
931
|
if ((layout.rows[focusedIndex]?.length ?? 0) >= rowBudget) {
|
|
945
932
|
this.optionDetailRows = [
|
|
946
933
|
"",
|
|
@@ -1303,13 +1290,7 @@ export function createAskUserViewForTesting(deps: {
|
|
|
1303
1290
|
};
|
|
1304
1291
|
}
|
|
1305
1292
|
|
|
1306
|
-
/**
|
|
1307
|
-
* Show the ask_user overlay.
|
|
1308
|
-
*
|
|
1309
|
-
* One frame for the whole interview: it sits above the composer, takes its
|
|
1310
|
-
* width from the terminal, and its height from what the round has to say. A
|
|
1311
|
-
* shape change between rounds is just the next render; nothing is remounted.
|
|
1312
|
-
*/
|
|
1293
|
+
/** Keep one full-screen interview mounted across questions and background work. */
|
|
1313
1294
|
export function openAskUserOverlay(tui: TUI, deps: OpenAskUserOverlayDeps): AskUserOverlaySession {
|
|
1314
1295
|
let closed = false;
|
|
1315
1296
|
|
|
@@ -1321,25 +1302,37 @@ export function openAskUserOverlay(tui: TUI, deps: OpenAskUserOverlayDeps): AskU
|
|
|
1321
1302
|
});
|
|
1322
1303
|
|
|
1323
1304
|
const handle = showClioOverlayFrame(tui, view, {
|
|
1324
|
-
anchor: "
|
|
1325
|
-
width:
|
|
1326
|
-
margin:
|
|
1305
|
+
anchor: "top-left",
|
|
1306
|
+
width: "100%",
|
|
1307
|
+
margin: 0,
|
|
1308
|
+
fullscreen: true,
|
|
1327
1309
|
// Not derived from the title: this modal swaps between a waiting title
|
|
1328
1310
|
// and a classified decision title without ever changing hands.
|
|
1329
1311
|
markerId: "ask-user",
|
|
1330
|
-
title: () => (view.isDecisionPending() ? view.decisionTitle() :
|
|
1312
|
+
title: () => (view.isDecisionPending() ? `Clio-Coder interview · ${view.decisionTitle()}` : "Clio-Coder interview"),
|
|
1331
1313
|
tone: () => (view.isDecisionPending() ? view.decisionTone() : undefined),
|
|
1332
|
-
footerHint: () => view.footerHint()
|
|
1314
|
+
footerHint: () => `${view.footerHint()} · drag to select/copy`,
|
|
1333
1315
|
});
|
|
1316
|
+
const selectionTui = tui as TUI & { useTerminalSelection?: () => () => void };
|
|
1317
|
+
let releaseSelection = selectionTui.useTerminalSelection?.();
|
|
1334
1318
|
|
|
1335
1319
|
const close = (): void => {
|
|
1336
1320
|
if (closed) return;
|
|
1337
1321
|
closed = true;
|
|
1338
1322
|
view.close();
|
|
1323
|
+
releaseSelection?.();
|
|
1324
|
+
releaseSelection = undefined;
|
|
1339
1325
|
handle.hide();
|
|
1340
1326
|
};
|
|
1341
1327
|
return {
|
|
1342
|
-
setHidden: (hidden) =>
|
|
1328
|
+
setHidden: (hidden) => {
|
|
1329
|
+
if (closed) return;
|
|
1330
|
+
if (hidden) {
|
|
1331
|
+
releaseSelection?.();
|
|
1332
|
+
releaseSelection = undefined;
|
|
1333
|
+
} else releaseSelection ??= selectionTui.useTerminalSelection?.();
|
|
1334
|
+
handle.setHidden(hidden);
|
|
1335
|
+
},
|
|
1343
1336
|
isHidden: () => (closed ? true : handle.isHidden()),
|
|
1344
1337
|
focus: () => handle.focus(),
|
|
1345
1338
|
unfocus: (options) => (options ? handle.unfocus(options) : handle.unfocus()),
|
|
@@ -134,6 +134,7 @@ export function openHelpOverlay(
|
|
|
134
134
|
group: "Topics",
|
|
135
135
|
detail: () => [
|
|
136
136
|
"# Fleet runs & steering",
|
|
137
|
+
"**Internal helpers**: Scout and other shadow agents appear as Clio → agent cards. Compact shows identity/status, standard adds task/progress, and detailed shows the fuller worker report. `/view` opens the complete report. Helpers remain inspectable and steerable/cancellable through this board using the same supported actions, without floating fleet cards.",
|
|
137
138
|
`**Fleet Runs board**: ${manager.actionLabel("clio-coder.dispatchBoard.toggle")}. Use Up/Down or j/k to select a live or recent run.`,
|
|
138
139
|
"**Enter**: on a live run in a `--with-panes` session, Enter opens (or retargets) the watch pane beside Clio, rendering that run's stream; the arrow keys then move it between runs. On a finished run, or without panes, Enter toggles the inline worker-progress detail instead.",
|
|
139
140
|
"**Steer**: press `s` on a live native run to close the board and prefill `@<runId> `. Add guidance and submit it normally. The first notice means queued; a received notice confirms worker delivery.",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { collectSessionEntries } from "../../domains/session/compaction/session-entries.js";
|
|
2
2
|
import type { SessionContract } from "../../domains/session/contract.js";
|
|
3
3
|
import type { MessageEntry } from "../../domains/session/entries.js";
|
|
4
|
+
import { buildTurnPreview } from "../../domains/session/tree/preview.js";
|
|
4
5
|
import { openSession, sessionPaths } from "../../engine/session.js";
|
|
5
6
|
import {
|
|
6
7
|
type Component,
|
|
@@ -21,7 +22,7 @@ const PREVIEW_WIDTH = 60;
|
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* /fork picker. Lists the current session's assistant turns, most-recent first,
|
|
24
|
-
* with
|
|
25
|
+
* with a structured assistant preview as the row label. Selecting a row
|
|
25
26
|
* calls onFork(parentTurnId); the caller wires that through
|
|
26
27
|
* SessionContract.fork(parentTurnId).
|
|
27
28
|
*
|
|
@@ -38,33 +39,6 @@ function shortTurnId(id: string): string {
|
|
|
38
39
|
return id.length > 8 ? id.slice(0, 8) : id;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
|
-
/**
|
|
42
|
-
* Coerce a structured message payload into a preview string. Handles raw
|
|
43
|
-
* strings, text properties, and pi-ai content blocks.
|
|
44
|
-
*/
|
|
45
|
-
function payloadPreview(payload: unknown): string {
|
|
46
|
-
if (typeof payload === "string") return payload;
|
|
47
|
-
if (!payload || typeof payload !== "object") return "";
|
|
48
|
-
const p = payload as Record<string, unknown>;
|
|
49
|
-
if (typeof p.text === "string") return p.text;
|
|
50
|
-
if (Array.isArray(p.content)) {
|
|
51
|
-
for (const block of p.content) {
|
|
52
|
-
if (block && typeof block === "object") {
|
|
53
|
-
const b = block as Record<string, unknown>;
|
|
54
|
-
if (b.type === "text" && typeof b.text === "string") return b.text;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return "";
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function firstLineClamped(text: string, max: number): string {
|
|
62
|
-
const firstLine = text.split("\n", 1)[0] ?? "";
|
|
63
|
-
const trimmed = firstLine.trim();
|
|
64
|
-
if (trimmed.length === 0) return "(no text)";
|
|
65
|
-
return trimmed.length > max ? `${trimmed.slice(0, max - 1)}…` : trimmed;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
42
|
export interface MessagePickerRow {
|
|
69
43
|
turnId: string;
|
|
70
44
|
shortId: string;
|
|
@@ -87,7 +61,7 @@ function buildMessagePickerRows(turns: ReadonlyArray<MessageEntry>): MessagePick
|
|
|
87
61
|
turnId: turn.turnId,
|
|
88
62
|
shortId: shortTurnId(turn.turnId),
|
|
89
63
|
at: turn.timestamp,
|
|
90
|
-
preview:
|
|
64
|
+
preview: buildTurnPreview({ kind: "assistant", payload: turn.payload }, PREVIEW_WIDTH),
|
|
91
65
|
});
|
|
92
66
|
}
|
|
93
67
|
return rows;
|