@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,26 @@
|
|
|
1
1
|
import { runOverrides } from "../../core/run-overrides.js";
|
|
2
|
-
import type { SamplingProfile } from "../../domains/providers/types/local-model-quirks.js";
|
|
2
|
+
import type { LocalModelQuirks, SamplingProfile } from "../../domains/providers/types/local-model-quirks.js";
|
|
3
|
+
|
|
4
|
+
export function pickSamplingProfile(
|
|
5
|
+
quirks: LocalModelQuirks | undefined,
|
|
6
|
+
thinkingActive: boolean,
|
|
7
|
+
): SamplingProfile | undefined {
|
|
8
|
+
const sampling = quirks?.sampling;
|
|
9
|
+
return mergeSamplingOverride(thinkingActive ? (sampling?.thinking ?? sampling?.instruct) : sampling?.instruct);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Pi passes these keys through; native Ollama uses the same sampler names as llama.cpp. */
|
|
13
|
+
export function samplingParamsFromProfile(profile: SamplingProfile, runtimeId: string): Record<string, number> {
|
|
14
|
+
const repeatPenaltyKey = runtimeId === "vllm" || runtimeId === "sglang" ? "repetition_penalty" : "repeat_penalty";
|
|
15
|
+
return {
|
|
16
|
+
...(profile.topP !== undefined ? { top_p: profile.topP } : {}),
|
|
17
|
+
...(profile.topK !== undefined ? { top_k: profile.topK } : {}),
|
|
18
|
+
...(profile.minP !== undefined ? { min_p: profile.minP } : {}),
|
|
19
|
+
...(profile.repeatPenalty !== undefined ? { [repeatPenaltyKey]: profile.repeatPenalty } : {}),
|
|
20
|
+
...(profile.presencePenalty !== undefined ? { presence_penalty: profile.presencePenalty } : {}),
|
|
21
|
+
...(profile.frequencyPenalty !== undefined ? { frequency_penalty: profile.frequencyPenalty } : {}),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
3
24
|
|
|
4
25
|
function numberField(record: Record<string, number | undefined>, key: keyof SamplingProfile): number | undefined {
|
|
5
26
|
const value = record[key];
|
|
@@ -29,7 +50,7 @@ function runSamplingOverrides(env: NodeJS.ProcessEnv = process.env): SamplingPro
|
|
|
29
50
|
return Object.keys(out).length > 0 ? out : undefined;
|
|
30
51
|
}
|
|
31
52
|
|
|
32
|
-
|
|
53
|
+
function mergeSamplingOverride(
|
|
33
54
|
profile: SamplingProfile | undefined,
|
|
34
55
|
override: SamplingProfile | undefined = runSamplingOverrides(),
|
|
35
56
|
): SamplingProfile | undefined {
|
package/src/engine/apis/types.ts
CHANGED
|
@@ -4,13 +4,12 @@ import type {
|
|
|
4
4
|
Context,
|
|
5
5
|
Model,
|
|
6
6
|
SimpleStreamOptions,
|
|
7
|
-
StreamFunction,
|
|
8
7
|
StreamOptions,
|
|
9
8
|
} from "@earendil-works/pi-ai";
|
|
10
9
|
|
|
11
10
|
/** Engine-owned API implementation shape; avoids the deprecated compat registry type. */
|
|
12
11
|
export interface EngineApiProvider<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> {
|
|
13
12
|
api: TApi;
|
|
14
|
-
stream:
|
|
13
|
+
stream(model: Model<TApi>, context: Context, options?: TOptions): AssistantMessageEventStream;
|
|
15
14
|
streamSimple(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;
|
|
16
15
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import nodePath from "node:path";
|
|
1
2
|
import { performance } from "node:perf_hooks";
|
|
2
3
|
import { ToolNames } from "../../core/tool-names.js";
|
|
3
4
|
import type { ClassifierCall } from "../../domains/safety/action-classifier.js";
|
|
@@ -90,6 +91,25 @@ function pathArgs(input: Record<string, unknown>): Record<string, unknown> {
|
|
|
90
91
|
return path ? { ...input, path } : { ...input };
|
|
91
92
|
}
|
|
92
93
|
|
|
94
|
+
/**
|
|
95
|
+
* Arguments for the SDK's search tools. They search `path`, so that key wins
|
|
96
|
+
* over the file keys a model may add. Their glob can also leave the search
|
|
97
|
+
* directory, by an absolute pattern or a `..` segment, and then the literal
|
|
98
|
+
* directory prefix of the glob is where the search reaches and the path the
|
|
99
|
+
* policy judges.
|
|
100
|
+
*/
|
|
101
|
+
function searchArgs(input: Record<string, unknown>, globKey: "pattern" | "glob" | null): Record<string, unknown> {
|
|
102
|
+
const base = stringField(input, "path", "file_path", "filePath");
|
|
103
|
+
const glob = globKey === null ? undefined : stringField(input, globKey);
|
|
104
|
+
if (glob !== undefined && (nodePath.isAbsolute(glob) || glob.split("/").includes(".."))) {
|
|
105
|
+
const literal = glob.split("/");
|
|
106
|
+
const firstMagic = literal.findIndex((segment) => /[*?[\]{}]/u.test(segment));
|
|
107
|
+
const prefix = (firstMagic === -1 ? literal.slice(0, -1) : literal.slice(0, firstMagic)).join("/") || "/";
|
|
108
|
+
return { ...input, path: base === undefined || nodePath.isAbsolute(prefix) ? prefix : nodePath.join(base, prefix) };
|
|
109
|
+
}
|
|
110
|
+
return base === undefined ? { ...input } : { ...input, path: base };
|
|
111
|
+
}
|
|
112
|
+
|
|
93
113
|
function commandArgs(input: Record<string, unknown>, cwd: string): Record<string, unknown> {
|
|
94
114
|
const command = stringField(input, "command", "cmd", "shell", "input", "description") ?? JSON.stringify(input);
|
|
95
115
|
return { ...input, command, cwd: stringField(input, "cwd") ?? cwd };
|
|
@@ -157,12 +177,12 @@ function mapClaudeToolCall(toolName: string, input: Record<string, unknown>, cwd
|
|
|
157
177
|
case "Write":
|
|
158
178
|
return { claudeToolName: toolName, clioToolName: ToolNames.Write, args: pathArgs(input), known: true };
|
|
159
179
|
case "Grep":
|
|
160
|
-
return { claudeToolName: toolName, clioToolName: ToolNames.Grep, args:
|
|
180
|
+
return { claudeToolName: toolName, clioToolName: ToolNames.Grep, args: searchArgs(input, "glob"), known: true };
|
|
161
181
|
case "Glob":
|
|
162
|
-
return { claudeToolName: toolName, clioToolName: ToolNames.Find, args:
|
|
182
|
+
return { claudeToolName: toolName, clioToolName: ToolNames.Find, args: searchArgs(input, "pattern"), known: true };
|
|
163
183
|
case "LS":
|
|
164
184
|
case "Ls":
|
|
165
|
-
return { claudeToolName: toolName, clioToolName: ToolNames.Ls, args:
|
|
185
|
+
return { claudeToolName: toolName, clioToolName: ToolNames.Ls, args: searchArgs(input, null), known: true };
|
|
166
186
|
case "WebFetch":
|
|
167
187
|
case "WebSearch":
|
|
168
188
|
return { claudeToolName: toolName, clioToolName: ToolNames.WebFetch, args: { ...input }, known: true };
|
|
@@ -175,12 +195,16 @@ function mapClaudeToolCall(toolName: string, input: Record<string, unknown>, cwd
|
|
|
175
195
|
}
|
|
176
196
|
}
|
|
177
197
|
|
|
198
|
+
function readsOutsideWorkspace(decision: SafetyDecision): boolean {
|
|
199
|
+
return decision.policy?.readScope === "outside-workspace";
|
|
200
|
+
}
|
|
201
|
+
|
|
178
202
|
function toAutonomyBlock(decision: SafetyDecision, level: AutonomyLevel, call: ClassifierCall): SafetyDecision {
|
|
179
203
|
const actionClass = decision.classification.actionClass;
|
|
180
204
|
return {
|
|
181
205
|
kind: "block",
|
|
182
206
|
classification: decision.classification,
|
|
183
|
-
rejection: autonomyDenyRejection(level, call.tool, actionClass),
|
|
207
|
+
rejection: autonomyDenyRejection(level, call.tool, actionClass, readsOutsideWorkspace(decision)),
|
|
184
208
|
...(decision.policy !== undefined ? { policy: decision.policy } : {}),
|
|
185
209
|
};
|
|
186
210
|
}
|
|
@@ -190,7 +214,7 @@ function toAutonomyAsk(decision: SafetyDecision, level: AutonomyLevel, call: Cla
|
|
|
190
214
|
return {
|
|
191
215
|
kind: "ask",
|
|
192
216
|
classification: decision.classification,
|
|
193
|
-
rejection: autonomyAskRejection(level, call.tool, actionClass),
|
|
217
|
+
rejection: autonomyAskRejection(level, call.tool, actionClass, undefined, readsOutsideWorkspace(decision)),
|
|
194
218
|
...(decision.policy !== undefined ? { policy: decision.policy } : {}),
|
|
195
219
|
};
|
|
196
220
|
}
|
|
@@ -285,6 +309,7 @@ function evaluateClaudeToolPermission(input: EvaluateClaudeToolPermissionInput):
|
|
|
285
309
|
const actionClass = decision.classification.actionClass;
|
|
286
310
|
const disposition = mapAutonomy(level, actionClass, {
|
|
287
311
|
executeRecognized: decision.policy?.execRecognition !== "unrecognized",
|
|
312
|
+
...(readsOutsideWorkspace(decision) ? { readOutsideWorkspace: true } : {}),
|
|
288
313
|
});
|
|
289
314
|
if (disposition === "allow") {
|
|
290
315
|
const admission = input.budgetGate?.admit(mapped.clioToolName);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Pi owns transcript replay. Clio's local transports consume its resolved snapshot. */
|
|
2
|
+
import { type Context, getCurrentSystemPrompt, getCurrentTools, normalizeContext } from "@earendil-works/pi-ai";
|
|
3
|
+
|
|
4
|
+
export { normalizeContext };
|
|
5
|
+
|
|
6
|
+
export function resolvedRequestContext(context: Context): Context {
|
|
7
|
+
const { messages } = normalizeContext(context);
|
|
8
|
+
return {
|
|
9
|
+
systemPrompt: getCurrentSystemPrompt(messages),
|
|
10
|
+
tools: getCurrentTools(messages),
|
|
11
|
+
messages: messages.filter((message) => message.role !== "system"),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -14,6 +14,7 @@ const ENV_KEYS: Readonly<Record<string, string>> = {
|
|
|
14
14
|
"qwen-token-plan-cn": "QWEN_TOKEN_PLAN_CN_API_KEY",
|
|
15
15
|
"qwen-token-plan-individual": "QWEN_TOKEN_PLAN_API_KEY",
|
|
16
16
|
openai: "OPENAI_API_KEY",
|
|
17
|
+
meta: "META_API_KEY",
|
|
17
18
|
"azure-openai-responses": "AZURE_OPENAI_API_KEY",
|
|
18
19
|
nvidia: "NVIDIA_API_KEY",
|
|
19
20
|
deepseek: "DEEPSEEK_API_KEY",
|
|
@@ -60,7 +61,7 @@ function apiKeyEnvVars(provider: string): readonly string[] | undefined {
|
|
|
60
61
|
return name ? [name] : undefined;
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
/** Synchronous provider-key discovery pinned to pi-ai 0.
|
|
64
|
+
/** Synchronous provider-key discovery pinned to pi-ai 0.86.1's public behavior. */
|
|
64
65
|
export function findEngineEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined {
|
|
65
66
|
const names = apiKeyEnvVars(provider);
|
|
66
67
|
if (!names) return undefined;
|
|
@@ -140,6 +140,7 @@ type ReplacementBlock = TextContent | ThinkingContent;
|
|
|
140
140
|
export function filterGemmaChannelStream(
|
|
141
141
|
source: AssistantMessageEventStream,
|
|
142
142
|
enabled: boolean,
|
|
143
|
+
fail: (stream: AssistantMessageEventStream, error: unknown) => void,
|
|
143
144
|
): AssistantMessageEventStream {
|
|
144
145
|
if (!enabled) return source;
|
|
145
146
|
const filtered = createAssistantMessageEventStream();
|
|
@@ -234,8 +235,8 @@ export function filterGemmaChannelStream(
|
|
|
234
235
|
} else filtered.push(event as AssistantMessageEvent);
|
|
235
236
|
}
|
|
236
237
|
filtered.end();
|
|
237
|
-
} catch {
|
|
238
|
-
filtered
|
|
238
|
+
} catch (error) {
|
|
239
|
+
fail(filtered, error);
|
|
239
240
|
}
|
|
240
241
|
})();
|
|
241
242
|
return filtered;
|
|
@@ -126,6 +126,30 @@ export class InstrumentedTuiMainScreen extends TuiMainScreen {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
export class InstrumentedTuiAltScreen extends TuiAltScreen {
|
|
129
|
+
private terminalSelectionUsers = 0;
|
|
130
|
+
private readonly capturesMouse: boolean;
|
|
131
|
+
|
|
132
|
+
/** pi-tui selects transcript text, but capturing overlays consume its mouse path.
|
|
133
|
+
* Let the terminal select the stable interview screen until it closes. */
|
|
134
|
+
useTerminalSelection(): () => void {
|
|
135
|
+
if (!this.capturesMouse) return () => {};
|
|
136
|
+
if (this.terminalSelectionUsers++ === 0) this.terminal.write("\x1b[?1006l\x1b[?1003l\x1b[?1002l\x1b[?1000l");
|
|
137
|
+
let released = false;
|
|
138
|
+
return () => {
|
|
139
|
+
if (released) return;
|
|
140
|
+
released = true;
|
|
141
|
+
if (--this.terminalSelectionUsers !== 0) return;
|
|
142
|
+
// Match pi-tui's negotiated tracking mode; focus reporting was never disabled.
|
|
143
|
+
const term = process.env.TERM?.toLowerCase() ?? "";
|
|
144
|
+
const multiplexed =
|
|
145
|
+
process.env.TMUX !== undefined ||
|
|
146
|
+
process.env.ZELLIJ !== undefined ||
|
|
147
|
+
process.env.STY !== undefined ||
|
|
148
|
+
term.startsWith("tmux") ||
|
|
149
|
+
term.startsWith("screen");
|
|
150
|
+
this.terminal.write(`\x1b[?1000h\x1b[?1002h${multiplexed ? "" : "\x1b[?1003h"}\x1b[?1006h`);
|
|
151
|
+
};
|
|
152
|
+
}
|
|
129
153
|
private currentFrame: unknown | undefined;
|
|
130
154
|
|
|
131
155
|
constructor(
|
|
@@ -137,6 +161,7 @@ export class InstrumentedTuiAltScreen extends TuiAltScreen {
|
|
|
137
161
|
renderAdmission?: TuiRenderAdmission,
|
|
138
162
|
) {
|
|
139
163
|
super(terminal, showHardwareCursor, logDirectory, options);
|
|
164
|
+
this.capturesMouse = options?.mouse ?? true;
|
|
140
165
|
this.deferredAdmission = new DeferredRenderAdmission(renderAdmission, (force) => super.requestRender(force));
|
|
141
166
|
}
|
|
142
167
|
|
package/src/engine/loop-guard.ts
CHANGED
|
@@ -35,6 +35,7 @@ import type { MiddlewareHookRegistration } from "../domains/middleware/runtime.j
|
|
|
35
35
|
import type { MiddlewareEffect, MiddlewareHookInput } from "../domains/middleware/types.js";
|
|
36
36
|
import type { SafetyContract } from "../domains/safety/contract.js";
|
|
37
37
|
import { hashToolCall } from "../domains/safety/loop-detector.js";
|
|
38
|
+
import { resolveReadPath } from "../tools/path-utils.js";
|
|
38
39
|
import type { AgentMessage } from "./types.js";
|
|
39
40
|
|
|
40
41
|
export const LOOP_GUARD_REGISTRATION_ID = "guard.loop";
|
|
@@ -200,6 +201,16 @@ export function isLockedSynthesisFallbackOnly(message: AgentMessage | undefined)
|
|
|
200
201
|
|
|
201
202
|
export const LOCKED_SYNTHESIS_REPROMPT_TOOL = "clio_synthesis_reprompt";
|
|
202
203
|
|
|
204
|
+
/** Preserve the task and safety contract while retiring the earlier tool-use phase. */
|
|
205
|
+
export function lockedSynthesisSystemPrompt(systemPrompt: string, requiredResult?: string): string {
|
|
206
|
+
return [
|
|
207
|
+
systemPrompt,
|
|
208
|
+
"# Current execution phase: final synthesis",
|
|
209
|
+
"Tools are disabled for the rest of this run. Earlier instructions to use tools apply only to the completed tool phase. Do not emit tool calls or tool-call markup. Return the final result now using the evidence already observed; preserve all safety rules and the required result format. Do not invent missing evidence.",
|
|
210
|
+
...(requiredResult ? [`Required terminal result: ${requiredResult}`] : []),
|
|
211
|
+
].join("\n\n");
|
|
212
|
+
}
|
|
213
|
+
|
|
203
214
|
/**
|
|
204
215
|
* One bounded re-prompt after a locked round came back as tool-call markup
|
|
205
216
|
* only. Delivered as a paired synthetic tool exchange, never a user turn, for
|
|
@@ -210,6 +221,7 @@ export const LOCKED_SYNTHESIS_REPROMPT_TOOL = "clio_synthesis_reprompt";
|
|
|
210
221
|
export function lockedSynthesisRepromptMessages(
|
|
211
222
|
attempt: number,
|
|
212
223
|
origin: { provider: string; api: string; model: string },
|
|
224
|
+
requiredResult?: string,
|
|
213
225
|
): ReadonlyArray<AgentMessage> {
|
|
214
226
|
const id = `clio-synthesis-reprompt-${attempt}`;
|
|
215
227
|
const timestamp = Date.now();
|
|
@@ -239,8 +251,9 @@ export function lockedSynthesisRepromptMessages(
|
|
|
239
251
|
text:
|
|
240
252
|
"Your previous reply contained only tool-call markup, which cannot run: tool calls are disabled for " +
|
|
241
253
|
"the rest of this run. Everything you gathered is already in the conversation above. Write the " +
|
|
242
|
-
"final answer now
|
|
243
|
-
"markup of any kind."
|
|
254
|
+
"final answer now in the required result format (JSON when a result contract requires it; otherwise prose), with no tool-call " +
|
|
255
|
+
"markup of any kind." +
|
|
256
|
+
(requiredResult ? `\nRequired terminal result: ${requiredResult}` : ""),
|
|
244
257
|
},
|
|
245
258
|
],
|
|
246
259
|
isError: true,
|
|
@@ -259,7 +272,7 @@ function synthesisLockoutDirective(): string {
|
|
|
259
272
|
return (
|
|
260
273
|
"loop guard: this turn reached its tool-call limit after repeated identical calls, so tool calls are now " +
|
|
261
274
|
"disabled for the rest of this turn. Everything you retrieved is already in the conversation above. Answer " +
|
|
262
|
-
"
|
|
275
|
+
"now from what you have gathered, preserving the required result format (JSON for a JSON result contract; otherwise prose). Do not write tool-call markup such as " +
|
|
263
276
|
"<tool_call> blocks; tool calls are disabled and will not run."
|
|
264
277
|
);
|
|
265
278
|
}
|
|
@@ -276,7 +289,7 @@ function synthesisBackstopReason(tool: string): string {
|
|
|
276
289
|
function workerExplorationSynthesisDirective(limit: number): string {
|
|
277
290
|
return (
|
|
278
291
|
`worker exploration budget reached (${limit}); exploration tools are now disabled for this run. ` +
|
|
279
|
-
"
|
|
292
|
+
"Return the required result format from the evidence already gathered: keep JSON when the result contract requires JSON, and keep citations grounded in actual reads. Do not retry or " +
|
|
280
293
|
"substitute another tool call."
|
|
281
294
|
);
|
|
282
295
|
}
|
|
@@ -431,6 +444,8 @@ export function readOrchTurnToolCallBudget(): OrchTurnToolCallBudget {
|
|
|
431
444
|
|
|
432
445
|
export interface CreateLoopGuardRegistrationOptions {
|
|
433
446
|
safety: SafetyContract;
|
|
447
|
+
/** Enables returned-read coverage only when the caller supplies its result-shaping cap. */
|
|
448
|
+
readResultMaxBytes?: number;
|
|
434
449
|
/** Orchestrator only: LoopBlocked events for the interactive layer. */
|
|
435
450
|
bus?: SafeEventBus;
|
|
436
451
|
/** Loop blocks tolerated per turn before the block reason announces a stop. */
|
|
@@ -626,6 +641,11 @@ export function createLoopGuardRegistration(options: CreateLoopGuardRegistration
|
|
|
626
641
|
* differently answered call resets it.
|
|
627
642
|
*/
|
|
628
643
|
const stagnationByTurn = new Map<string, { reducedFingerprint: string; resultFingerprint: string; streak: number }>();
|
|
644
|
+
const eofByTurn = new Map<string, { identity: string; streak: number }>();
|
|
645
|
+
// Actual returned line coverage, not requested limits. File stamps retire old
|
|
646
|
+
// coverage after external changes; successful writes/edits clear it as well.
|
|
647
|
+
const readCoverage = new Map<string, { bytes: number; mtimeMs: number; ranges: Array<[number, number]> }>();
|
|
648
|
+
const redundantReadsByTurn = new Map<string, number>();
|
|
629
649
|
const crossArgumentResultsByTurn = new Map<
|
|
630
650
|
string,
|
|
631
651
|
{ tool: string; resultFingerprint: string; argumentFingerprints: Set<string>; warned: boolean }
|
|
@@ -670,6 +690,8 @@ export function createLoopGuardRegistration(options: CreateLoopGuardRegistration
|
|
|
670
690
|
if (input.metadata?.resultKind !== "ok") return;
|
|
671
691
|
if (input.toolName === ToolNames.Write || input.toolName === ToolNames.Edit) {
|
|
672
692
|
bumpBoundedCounter(mutationEpochByTurn, input.turnId ?? NO_TURN_BUCKET);
|
|
693
|
+
readCoverage.clear();
|
|
694
|
+
redundantReadsByTurn.clear();
|
|
673
695
|
}
|
|
674
696
|
if (!resultCarriesEvidence(input.toolResultDetails)) return;
|
|
675
697
|
const tool = input.toolName;
|
|
@@ -878,7 +900,7 @@ export function createLoopGuardRegistration(options: CreateLoopGuardRegistration
|
|
|
878
900
|
reason:
|
|
879
901
|
`tool-call budget: you have made ${callsThisTurn} tool calls in this turn (soft budget ${turnBudget.soft}). ` +
|
|
880
902
|
`Every further tool call this turn will be blocked, so do not retry this call and do not substitute ` +
|
|
881
|
-
`another one. Summarize what you have found so far in
|
|
903
|
+
`another one. Summarize what you have found so far in the required result format, state the single next step you ` +
|
|
882
904
|
`propose, and wait for the operator.`,
|
|
883
905
|
severity: "hard-block",
|
|
884
906
|
},
|
|
@@ -920,6 +942,147 @@ export function createLoopGuardRegistration(options: CreateLoopGuardRegistration
|
|
|
920
942
|
return [{ kind: "block_tool", reason, severity: "hard-block" }];
|
|
921
943
|
};
|
|
922
944
|
|
|
945
|
+
const readCoverageEffects = (input: MiddlewareHookInput): ReadonlyArray<MiddlewareEffect> => {
|
|
946
|
+
const turnKey = input.turnId ?? NO_TURN_BUCKET;
|
|
947
|
+
const reset = () => {
|
|
948
|
+
redundantReadsByTurn.delete(turnKey);
|
|
949
|
+
return [];
|
|
950
|
+
};
|
|
951
|
+
const details = input.toolResultDetails;
|
|
952
|
+
const file = details?.file as { bytes?: unknown; mtimeMs?: unknown } | undefined;
|
|
953
|
+
const observation = details?.observation as
|
|
954
|
+
| { tool?: unknown; unit?: unknown; format?: unknown; shownCount?: unknown; truncated?: unknown }
|
|
955
|
+
| undefined;
|
|
956
|
+
const path = input.toolArgs?.path;
|
|
957
|
+
const offset = input.toolArgs?.offset ?? 1;
|
|
958
|
+
const resultBytes = input.metadata?.resultBytes;
|
|
959
|
+
// after_tool precedes the registry's final shaping pass. If that pass
|
|
960
|
+
// could shorten the source, its pre-shaping line count is not evidence.
|
|
961
|
+
const deliveredCap = Math.min(options.readResultMaxBytes ?? 0, resolveGuardrail("readMaxBytes"));
|
|
962
|
+
if (
|
|
963
|
+
!Number.isFinite(deliveredCap) ||
|
|
964
|
+
deliveredCap <= 0 ||
|
|
965
|
+
typeof resultBytes !== "number" ||
|
|
966
|
+
!Number.isFinite(resultBytes) ||
|
|
967
|
+
resultBytes > deliveredCap ||
|
|
968
|
+
input.toolName !== ToolNames.Read ||
|
|
969
|
+
input.metadata?.resultKind !== "ok" ||
|
|
970
|
+
typeof path !== "string" ||
|
|
971
|
+
input.toolArgs?.tail !== undefined ||
|
|
972
|
+
typeof offset !== "number" ||
|
|
973
|
+
!Number.isSafeInteger(offset) ||
|
|
974
|
+
offset < 1 ||
|
|
975
|
+
typeof file?.bytes !== "number" ||
|
|
976
|
+
!Number.isFinite(file.bytes) ||
|
|
977
|
+
typeof file.mtimeMs !== "number" ||
|
|
978
|
+
!Number.isFinite(file.mtimeMs) ||
|
|
979
|
+
details?.fileChange !== undefined ||
|
|
980
|
+
observation?.tool !== ToolNames.Read ||
|
|
981
|
+
observation.unit !== "lines" ||
|
|
982
|
+
observation.format !== "text" ||
|
|
983
|
+
typeof observation.shownCount !== "number" ||
|
|
984
|
+
!Number.isSafeInteger(observation.shownCount) ||
|
|
985
|
+
observation.shownCount <= 0
|
|
986
|
+
)
|
|
987
|
+
return reset();
|
|
988
|
+
// A byte-truncated final line may only be a prefix. Conservatively exclude
|
|
989
|
+
// the last line of any truncated window from previously observed coverage.
|
|
990
|
+
const end = offset + observation.shownCount - 1;
|
|
991
|
+
const coveredEnd = end - (observation.truncated === true ? 1 : 0);
|
|
992
|
+
if (!Number.isSafeInteger(end)) return reset();
|
|
993
|
+
// Use the same path resolution as read (including symlinks and aliases).
|
|
994
|
+
// Numbered output is separate evidence: the first citation reread is useful.
|
|
995
|
+
let canonicalPath: string;
|
|
996
|
+
try {
|
|
997
|
+
canonicalPath = resolveReadPath(path);
|
|
998
|
+
} catch {
|
|
999
|
+
return reset();
|
|
1000
|
+
}
|
|
1001
|
+
const key = `${turnKey}\0${canonicalPath}\0${input.toolArgs?.line_numbers === true}`;
|
|
1002
|
+
let entry = readCoverage.get(key);
|
|
1003
|
+
if (!entry || entry.bytes !== file.bytes || entry.mtimeMs !== file.mtimeMs) {
|
|
1004
|
+
entry = { bytes: file.bytes, mtimeMs: file.mtimeMs, ranges: [] };
|
|
1005
|
+
}
|
|
1006
|
+
const redundant = entry.ranges.some(([start, stop]) => start <= offset && stop >= end);
|
|
1007
|
+
// Even a possibly partial one-line result is redundant when an earlier
|
|
1008
|
+
// complete read already covered that line. It need not add new coverage.
|
|
1009
|
+
const ranges: Array<[number, number]> = [...entry.ranges];
|
|
1010
|
+
if (coveredEnd >= offset) ranges.push([offset, coveredEnd]);
|
|
1011
|
+
ranges.sort((a, b) => a[0] - b[0]);
|
|
1012
|
+
entry.ranges = [];
|
|
1013
|
+
for (const range of ranges) {
|
|
1014
|
+
const last = entry.ranges.at(-1);
|
|
1015
|
+
if (last && range[0] <= last[1] + 1) last[1] = Math.max(last[1], range[1]);
|
|
1016
|
+
else entry.ranges.push(range);
|
|
1017
|
+
}
|
|
1018
|
+
// Forget excess evidence conservatively instead of retaining unbounded state.
|
|
1019
|
+
entry.ranges = entry.ranges.slice(-SUCCEEDED_FINGERPRINT_LIMIT);
|
|
1020
|
+
readCoverage.delete(key);
|
|
1021
|
+
if (readCoverage.size >= SUCCEEDED_FINGERPRINT_LIMIT) {
|
|
1022
|
+
const oldest = readCoverage.keys().next().value;
|
|
1023
|
+
if (oldest !== undefined) readCoverage.delete(oldest);
|
|
1024
|
+
}
|
|
1025
|
+
readCoverage.set(key, entry);
|
|
1026
|
+
if (!redundant) return reset();
|
|
1027
|
+
const streak = bumpBoundedCounter(redundantReadsByTurn, turnKey);
|
|
1028
|
+
if (streak < RESULT_STAGNATION_THRESHOLD || lockoutByTurn.has(turnKey)) return [];
|
|
1029
|
+
const reason = `loop detected: ${streak} consecutive read calls returned only source lines already observed from unchanged files. Reuse the evidence above and return the required result format; do not page through it again.`;
|
|
1030
|
+
// The read already ran and remains successful. Reuse the existing loop
|
|
1031
|
+
// budget/lock transition, delivering its reason as a result annotation.
|
|
1032
|
+
return blockAsLoop(input, turnKey, ToolNames.Read, streak, reason, options.now?.() ?? Date.now()).map((effect) =>
|
|
1033
|
+
effect.kind === "block_tool"
|
|
1034
|
+
? { kind: "annotate_tool_result" as const, message: effect.reason, severity: "warn" as const }
|
|
1035
|
+
: effect,
|
|
1036
|
+
);
|
|
1037
|
+
};
|
|
1038
|
+
|
|
1039
|
+
// Read's typed EOF result proves that changing offsets cannot reveal more
|
|
1040
|
+
// content in this file version. Error strings contain offsets and therefore
|
|
1041
|
+
// cannot use the byte-identical successful-result detector.
|
|
1042
|
+
const readEofEffects = (input: MiddlewareHookInput): ReadonlyArray<MiddlewareEffect> => {
|
|
1043
|
+
const turnKey = input.turnId ?? NO_TURN_BUCKET;
|
|
1044
|
+
const details = input.toolResultDetails;
|
|
1045
|
+
const file = details?.file as { bytes?: unknown; mtimeMs?: unknown } | undefined;
|
|
1046
|
+
if (
|
|
1047
|
+
input.toolName !== ToolNames.Read ||
|
|
1048
|
+
input.metadata?.resultKind !== "error" ||
|
|
1049
|
+
details?.code !== "read_past_eof" ||
|
|
1050
|
+
typeof input.toolArgs?.path !== "string" ||
|
|
1051
|
+
typeof file?.bytes !== "number" ||
|
|
1052
|
+
!Number.isFinite(file.bytes) ||
|
|
1053
|
+
typeof file.mtimeMs !== "number" ||
|
|
1054
|
+
!Number.isFinite(file.mtimeMs) ||
|
|
1055
|
+
typeof details.totalLines !== "number" ||
|
|
1056
|
+
!Number.isSafeInteger(details.totalLines) ||
|
|
1057
|
+
details.totalLines < 0
|
|
1058
|
+
) {
|
|
1059
|
+
eofByTurn.delete(turnKey);
|
|
1060
|
+
return [];
|
|
1061
|
+
}
|
|
1062
|
+
let path: string;
|
|
1063
|
+
try {
|
|
1064
|
+
path = resolveReadPath(input.toolArgs.path);
|
|
1065
|
+
} catch {
|
|
1066
|
+
eofByTurn.delete(turnKey);
|
|
1067
|
+
return [];
|
|
1068
|
+
}
|
|
1069
|
+
const identity = JSON.stringify([path, file.bytes, file.mtimeMs, details.totalLines]);
|
|
1070
|
+
const previous = eofByTurn.get(turnKey);
|
|
1071
|
+
const streak = previous?.identity === identity ? previous.streak + 1 : 1;
|
|
1072
|
+
if (!eofByTurn.has(turnKey) && eofByTurn.size >= LOOP_GUARD_TURN_LIMIT) {
|
|
1073
|
+
const oldest = eofByTurn.keys().next().value;
|
|
1074
|
+
if (oldest !== undefined) eofByTurn.delete(oldest);
|
|
1075
|
+
}
|
|
1076
|
+
eofByTurn.set(turnKey, { identity, streak });
|
|
1077
|
+
if (streak < 2 || lockoutByTurn.has(turnKey)) return [];
|
|
1078
|
+
const reason = `loop detected: ${streak} consecutive reads went past the end of the same unchanged file. Changing offset or limit cannot reveal more content. Reuse the evidence already returned and synthesize the answer.`;
|
|
1079
|
+
return blockAsLoop(input, turnKey, ToolNames.Read, streak, reason, options.now?.() ?? Date.now()).map((effect) =>
|
|
1080
|
+
effect.kind === "block_tool"
|
|
1081
|
+
? { kind: "annotate_tool_result" as const, message: effect.reason, severity: "warn" as const }
|
|
1082
|
+
: effect,
|
|
1083
|
+
);
|
|
1084
|
+
};
|
|
1085
|
+
|
|
923
1086
|
return {
|
|
924
1087
|
id: LOOP_GUARD_REGISTRATION_ID,
|
|
925
1088
|
description:
|
|
@@ -927,7 +1090,10 @@ export function createLoopGuardRegistration(options: CreateLoopGuardRegistration
|
|
|
927
1090
|
hooks: ["before_tool", "after_tool"],
|
|
928
1091
|
callCount: () => count,
|
|
929
1092
|
extendWorkerToolCallPhase(phase): boolean {
|
|
1093
|
+
// A repair may extend a soft work phase, never a sealed loop or hard-cap lock.
|
|
930
1094
|
if (
|
|
1095
|
+
lockoutByTurn.size > 0 ||
|
|
1096
|
+
capLockout !== null ||
|
|
931
1097
|
softLimit === undefined ||
|
|
932
1098
|
!Number.isSafeInteger(phase.toolCalls) ||
|
|
933
1099
|
!Number.isSafeInteger(phase.readReserve) ||
|
|
@@ -959,7 +1125,7 @@ export function createLoopGuardRegistration(options: CreateLoopGuardRegistration
|
|
|
959
1125
|
if (input.hook === "after_tool") {
|
|
960
1126
|
recordSuccessfulResult(input);
|
|
961
1127
|
recordResultForStagnation(input);
|
|
962
|
-
const effects = [...crossArgumentResultEffects(input)];
|
|
1128
|
+
const effects = [...crossArgumentResultEffects(input), ...readCoverageEffects(input), ...readEofEffects(input)];
|
|
963
1129
|
if (
|
|
964
1130
|
options.toolBudgetAdvisory &&
|
|
965
1131
|
!advisoryEmitted &&
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { resolvePackageRoot } from "../core/package-root.js";
|
|
4
|
+
|
|
1
5
|
/**
|
|
2
6
|
* Canonical pi-mono package names. The engine barrel is the sole place in
|
|
3
7
|
* the codebase where the literal `@earendil-works/*` strings are allowed to
|
|
@@ -11,3 +15,15 @@ export const PI_MONO_PACKAGES = {
|
|
|
11
15
|
} as const;
|
|
12
16
|
|
|
13
17
|
export type PiMonoPackageName = (typeof PI_MONO_PACKAGES)[keyof typeof PI_MONO_PACKAGES];
|
|
18
|
+
|
|
19
|
+
let cachedPiMonoVersion: string | null = null;
|
|
20
|
+
|
|
21
|
+
/** Engine dependency metadata is outside the instant terminal's package/version path. */
|
|
22
|
+
export function readPiMonoVersion(): string {
|
|
23
|
+
if (cachedPiMonoVersion) return cachedPiMonoVersion;
|
|
24
|
+
const pkg = JSON.parse(readFileSync(join(resolvePackageRoot(), "package.json"), "utf8")) as {
|
|
25
|
+
dependencies?: Record<string, string>;
|
|
26
|
+
};
|
|
27
|
+
cachedPiMonoVersion = pkg.dependencies?.[PI_MONO_PACKAGES.agentCore] ?? "unknown";
|
|
28
|
+
return cachedPiMonoVersion;
|
|
29
|
+
}
|
package/src/engine/prewarm.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createInitialSystemMessage,
|
|
3
|
+
getCurrentTools,
|
|
4
|
+
getToolStateChanges,
|
|
5
|
+
toToolDeclaration,
|
|
6
|
+
} from "@earendil-works/pi-ai";
|
|
7
|
+
import { normalizeContext } from "./context.js";
|
|
1
8
|
/**
|
|
2
9
|
* One bounded-output warm through the eventual caller's engine request path.
|
|
3
10
|
* Copies portable context, applies public Pi transforms and payload hooks,
|
|
@@ -38,7 +45,7 @@ export interface PrewarmContext {
|
|
|
38
45
|
* filter so its message array is the one a turn would send, not the agent's
|
|
39
46
|
* internal list.
|
|
40
47
|
*/
|
|
41
|
-
const LLM_MESSAGE_ROLES: ReadonlySet<string> = new Set(["user", "assistant", "toolResult"]);
|
|
48
|
+
const LLM_MESSAGE_ROLES: ReadonlySet<string> = new Set(["system", "user", "assistant", "toolResult"]);
|
|
42
49
|
|
|
43
50
|
export interface PrewarmRoundInput {
|
|
44
51
|
model: EngineModel;
|
|
@@ -53,6 +60,8 @@ export interface PrewarmRoundInput {
|
|
|
53
60
|
signal?: AbortSignal;
|
|
54
61
|
/** Admission bound on the engine's input estimate, after context selection. */
|
|
55
62
|
maxInputTokens?: number;
|
|
63
|
+
/** Recheck foreground ownership after asynchronous context transforms. */
|
|
64
|
+
canSend?: () => boolean;
|
|
56
65
|
/** Public Pi preparation hooks of the eventual caller. No tools or agent loop are executed. */
|
|
57
66
|
agent?: Pick<
|
|
58
67
|
Agent,
|
|
@@ -156,6 +165,16 @@ export async function runPrewarmRound(input: PrewarmRoundInput): Promise<Prewarm
|
|
|
156
165
|
}
|
|
157
166
|
}
|
|
158
167
|
|
|
168
|
+
if (metadata?.runtimeId === "litellm") {
|
|
169
|
+
const onPayload = input.agent?.onPayload;
|
|
170
|
+
options.onPayload = async (payload: unknown, currentModel: EngineModel) => {
|
|
171
|
+
const patched = (await onPayload?.(payload, currentModel)) ?? payload;
|
|
172
|
+
// Warming is authorized for the verified local route only. A gateway
|
|
173
|
+
// must not turn an unavailable local model into a billed fallback.
|
|
174
|
+
return { ...(patched as Record<string, unknown>), num_retries: 0, disable_fallbacks: true };
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
159
178
|
const send = input.streamFn ?? input.agent?.streamFunction ?? streamSimple;
|
|
160
179
|
const startedAt = performance.now();
|
|
161
180
|
let firstDeltaAt: number | null = null;
|
|
@@ -164,28 +183,38 @@ export async function runPrewarmRound(input: PrewarmRoundInput): Promise<Prewarm
|
|
|
164
183
|
|
|
165
184
|
try {
|
|
166
185
|
input.signal?.throwIfAborted();
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
]
|
|
186
|
+
// Match Agent's initial baseline and pre-request tool reconciliation, using
|
|
187
|
+
// Pi's public declaration diff. Never clone executable AgentTool objects.
|
|
188
|
+
let messages: AgentMessage[] = structuredClone([...input.state.messages]);
|
|
189
|
+
if (messages[0]?.role !== "system") {
|
|
190
|
+
const initial = createInitialSystemMessage(input.state.systemPrompt, input.state.tools.map(toToolDeclaration));
|
|
191
|
+
if (initial) messages.unshift(initial);
|
|
192
|
+
}
|
|
193
|
+
const changes = getToolStateChanges(getCurrentTools(messages), input.state.tools.map(toToolDeclaration));
|
|
194
|
+
if (changes.toolsAdded.length || changes.toolsRemoved.length) {
|
|
195
|
+
messages.push({
|
|
196
|
+
role: "system",
|
|
197
|
+
content: "",
|
|
198
|
+
timestamp: Date.now(),
|
|
199
|
+
...(changes.toolsAdded.length ? { toolsAdded: changes.toolsAdded } : {}),
|
|
200
|
+
...(changes.toolsRemoved.length ? { toolsRemoved: changes.toolsRemoved } : {}),
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
messages.push({ role: "user", content: [{ type: "text", text: PREWARM_USER_TEXT }], timestamp: Date.now() });
|
|
171
204
|
if (input.agent?.transformContext) messages = await input.agent.transformContext(messages, input.signal);
|
|
172
205
|
const converted = input.agent
|
|
173
206
|
? await input.agent.convertToLlm(messages)
|
|
174
207
|
: messages.filter((message) => LLM_MESSAGE_ROLES.has(message.role));
|
|
175
208
|
input.signal?.throwIfAborted();
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
messages: converted,
|
|
179
|
-
tools: [...input.state.tools],
|
|
180
|
-
} as Parameters<typeof streamSimple>[1];
|
|
209
|
+
// Transforms own the final prompt and declarations, just as on a real turn.
|
|
210
|
+
const context = normalizeContext({ messages: converted as Parameters<typeof streamSimple>[1]["messages"] });
|
|
181
211
|
if (input.maxInputTokens !== undefined && estimateInputTokensFromContext(context) > input.maxInputTokens) {
|
|
182
212
|
throw new Error("pre-warm input estimate exceeds its token budget");
|
|
183
213
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
);
|
|
214
|
+
if (input.canSend?.() === false) {
|
|
215
|
+
return { aborted: true, usage: null, backend: null, timing: { ttftMs: null, apiMs: elapsed() }, errorMessage: null };
|
|
216
|
+
}
|
|
217
|
+
const events = await send(model, context, options as unknown as Parameters<typeof streamSimple>[2]);
|
|
189
218
|
for await (const event of events) {
|
|
190
219
|
const hasDelta =
|
|
191
220
|
event.type === "toolcall_start" ||
|