@iowarp/clio-coder 0.3.9 → 0.4.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/CHANGELOG.md +53 -0
- package/NOTICE +33 -0
- package/README.md +7 -2
- package/dist/{acp-7LOELQFP.js → acp-G5WJBNCT.js} +13 -12
- package/dist/{agents-FIBG2SHA.js → agents-FMV2Q5G4.js} +39 -36
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-OI4LIH2I.js → auth-3IDSJEIK.js} +16 -15
- package/dist/{builtins-AD25UL3C.js → builtins-XCZWXSC7.js} +3 -3
- package/dist/{chunk-IFBNV6H6.js → chunk-2ANTL7MR.js} +3 -3
- package/dist/{chunk-56KB5IJP.js → chunk-2OQE55CK.js} +3 -3
- package/dist/{chunk-N3PBVRTZ.js → chunk-32KWKNSF.js} +9 -7
- package/dist/{chunk-VKBMFOYV.js → chunk-36EJLSQQ.js} +23 -27
- package/dist/{chunk-465CC7FK.js → chunk-3BT2XMV4.js} +16 -13
- package/dist/{chunk-NQ6UCCOD.js → chunk-3URVFKWK.js} +7 -7
- package/dist/{chunk-WIE7ZOSW.js → chunk-3XML7CDN.js} +2 -2
- package/dist/chunk-42FMPA75.js +101 -0
- package/dist/{chunk-A2NJGIB3.js → chunk-5LXZXPKX.js} +2 -2
- package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
- package/dist/{chunk-JEQQR47K.js → chunk-6DB53AJS.js} +168 -9
- package/dist/{chunk-KV2AOLDF.js → chunk-76ONBSIA.js} +5 -25
- package/dist/{chunk-FALJGAWU.js → chunk-7MCTRUCE.js} +2 -2
- package/dist/{chunk-5T7RBWN2.js → chunk-AB44T6BB.js} +5 -5
- package/dist/chunk-B7OBL7PK.js +1405 -0
- package/dist/{chunk-B5CSFE7B.js → chunk-BBVJUZHB.js} +2 -2
- package/dist/{chunk-EQ63NRB7.js → chunk-BBVYXMFO.js} +2 -2
- package/dist/{chunk-O6I4CIEU.js → chunk-BKFJHQCA.js} +6 -6
- package/dist/chunk-BKFM6EJV.js +462 -0
- package/dist/chunk-BMS5RKQY.js +27 -0
- package/dist/{chunk-MV2VUEJC.js → chunk-BPKCPIL7.js} +2 -2
- package/dist/{chunk-TEO2TLVN.js → chunk-BUMFYQFY.js} +964 -1120
- package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
- package/dist/chunk-C2LTL2W6.js +2447 -0
- package/dist/{chunk-EBOC7MT3.js → chunk-CODPRO7Q.js} +8 -8
- package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
- package/dist/{chunk-ODFEOB4F.js → chunk-CY6FY24N.js} +26 -8
- package/dist/{chunk-MIX5N5AC.js → chunk-DQITNCXG.js} +394 -154
- package/dist/{chunk-S4COXYBG.js → chunk-DYJP44XW.js} +129 -106
- package/dist/{chunk-N5XKWMDW.js → chunk-F4CKPOEQ.js} +6 -6
- package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
- package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
- package/dist/{chunk-7C6RYZGQ.js → chunk-GKF55TAZ.js} +3 -3
- package/dist/{chunk-B5XRQOLB.js → chunk-GR5G2PVF.js} +9 -8
- package/dist/{chunk-XDOQXGFO.js → chunk-GXNLGKAB.js} +64 -8
- package/dist/chunk-HHV2GANA.js +88 -0
- package/dist/{chunk-774ILSRL.js → chunk-HI63TFOG.js} +4 -3
- package/dist/{chunk-R7LNVMCS.js → chunk-HJJTYUHX.js} +64 -72
- package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
- package/dist/{chunk-CA42X6KT.js → chunk-HWHKMHUA.js} +6 -6
- package/dist/chunk-HZHHCK24.js +1631 -0
- package/dist/{chunk-HJB5IUKP.js → chunk-I5VEOC6I.js} +12 -12
- package/dist/chunk-IBEBSCYA.js +564 -0
- package/dist/chunk-IQ7KR472.js +362 -0
- package/dist/{chunk-4H6ULJ3H.js → chunk-J4W7KFM7.js} +921 -990
- package/dist/{chunk-4LJX2PUC.js → chunk-JDG2WCRO.js} +5 -5
- package/dist/{chunk-NZU6YDNV.js → chunk-K5C3NCBD.js} +4 -4
- package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
- package/dist/{chunk-NNNWO6F2.js → chunk-KFZI4NIL.js} +93 -3
- package/dist/chunk-KMVISBZR.js +132 -0
- package/dist/{chunk-BVDVID7E.js → chunk-LDQ2ZF2M.js} +2 -2
- package/dist/{chunk-OEDBCISO.js → chunk-LQ3DZAMX.js} +2 -2
- package/dist/{chunk-PZ4I4JE2.js → chunk-LY4S7GJC.js} +124 -116
- package/dist/{chunk-3DUR4WUA.js → chunk-MLKNTWH2.js} +19 -19
- package/dist/chunk-NEKRRTYW.js +56 -0
- package/dist/{chunk-5DQRIYDZ.js → chunk-NHCZP4K7.js} +2 -2
- package/dist/chunk-NHLBIGRH.js +1506 -0
- package/dist/chunk-NQQH3YT7.js +302 -0
- package/dist/chunk-NYS75XW5.js +15 -0
- package/dist/{chunk-TD7UE2L5.js → chunk-O4XIVISU.js} +7 -7
- package/dist/{chunk-WXCJ7VME.js → chunk-O6TL7WWY.js} +6 -6
- package/dist/chunk-OQBA45DZ.js +97 -0
- package/dist/{chunk-LU7P4LHA.js → chunk-P3FOHJT4.js} +2 -2
- package/dist/chunk-PMZCIOCJ.js +25 -0
- package/dist/{chunk-I4HZDVNP.js → chunk-PQEFIJ36.js} +2 -2
- package/dist/{chunk-HKO36JWF.js → chunk-QBJA7R7N.js} +31 -3
- package/dist/chunk-QDC3K2U3.js +262 -0
- package/dist/{chunk-5HFBWUMU.js → chunk-QLFS5GO2.js} +4 -4
- package/dist/{chunk-GAYUJ7LE.js → chunk-QLL7ILRG.js} +41 -32
- package/dist/{chunk-LXPJXFM5.js → chunk-QREDIESB.js} +7 -7
- package/dist/chunk-QSNYB6ZV.js +195 -0
- package/dist/chunk-R346GLFC.js +31 -0
- package/dist/{chunk-VPTUJU4P.js → chunk-SJ5ZKQ4S.js} +2 -2
- package/dist/{chunk-QQ7EKM72.js → chunk-SP2RXXYO.js} +6 -54
- package/dist/chunk-SUCTJL45.js +45 -0
- package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
- package/dist/chunk-T56WDKA5.js +183 -0
- package/dist/chunk-TVHHYFHE.js +255 -0
- package/dist/{chunk-IHKBWSXF.js → chunk-TZ3SGWZZ.js} +2 -2
- package/dist/{chunk-ECUO3KDP.js → chunk-U77AMWDL.js} +47 -7
- package/dist/{chunk-3UUY7R3Z.js → chunk-ULC6OTWO.js} +7 -7
- package/dist/{chunk-AEYBF3TB.js → chunk-UM7N4G5A.js} +2 -2
- package/dist/{chunk-3V5AYSEQ.js → chunk-UXMFQ54G.js} +43 -36
- package/dist/{chunk-YW7UVM5V.js → chunk-V5DHCITQ.js} +34 -1
- package/dist/{chunk-47CMYGET.js → chunk-VAZSBTKF.js} +2 -2
- package/dist/{chunk-3MRC2YSQ.js → chunk-VEO4AP2K.js} +2 -2
- package/dist/{chunk-PNY46YEY.js → chunk-VFA6GDY5.js} +47 -3
- package/dist/chunk-VO67MWHC.js +75 -0
- package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
- package/dist/{chunk-AD7Y7STJ.js → chunk-VYMXRQI6.js} +36 -22
- package/dist/{chunk-T3Z6VAAF.js → chunk-W5VSYASO.js} +19 -17
- package/dist/{chunk-5PVQ4SRS.js → chunk-WZR7K7ZX.js} +7 -123
- package/dist/{chunk-DG4M6ZUE.js → chunk-X3YGUTOB.js} +4 -4
- package/dist/chunk-X75E3D2N.js +686 -0
- package/dist/{chunk-P3JGPQFL.js → chunk-YDFRH54B.js} +4 -4
- package/dist/chunk-YJX4SHTD.js +40 -0
- package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
- package/dist/{chunk-YSEHGPCT.js → chunk-Z2RR6MAK.js} +3 -3
- package/dist/{chunk-HCBCAYZU.js → chunk-Z4TXYIEG.js} +5 -5
- package/dist/cli/index.js +47 -36
- package/dist/{clio-LT5V7SSZ.js → clio-2JXHBBY5.js} +7 -7
- package/dist/{code-nav-LMW275PA.js → code-nav-3YYRMYNF.js} +6 -6
- package/dist/{compile-cache-CVJMMODC.js → compile-cache-7FPE6PS3.js} +3 -3
- package/dist/{components-ZFA3SAER.js → components-RYZV4JGP.js} +5 -5
- package/dist/{config-RXS5T3JT.js → config-QZPCMYSO.js} +58 -50
- package/dist/{configure-2WYWSCSD.js → configure-TEGEBYCA.js} +21 -19
- package/dist/{context-I3BTOTCS.js → context-AV7OEZ4D.js} +11 -11
- package/dist/{context-MVOORGMF.js → context-E6H5RNMC.js} +49 -41
- package/dist/{context-PALKKQYL.js → context-GSXUE4CT.js} +25 -23
- package/dist/{context-clear-N2WOYZ2K.js → context-clear-SHIBYK6T.js} +48 -40
- package/dist/{context-working-set-MIEVECVZ.js → context-working-set-5ZGKPGZQ.js} +11 -10
- package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-EFMJT4LD.js} +88 -60
- package/dist/{docs-7LQ23DLM.js → docs-23KQS3XK.js} +5 -5
- package/dist/doctor-QOA5FNY5.js +313 -0
- package/dist/{eval-IJ5VEZDJ.js → eval-TFBYQH4H.js} +66 -64
- package/dist/eval-inventory-SXH7PDKX.js +316 -0
- package/dist/{evidence-L5APPXNV.js → evidence-ERGESKGN.js} +198 -44
- package/dist/{evolve-RGNKFJ52.js → evolve-VDXTSYCJ.js} +46 -38
- package/dist/{extensions-7WYWUX5A.js → extensions-7BGBHN57.js} +6 -6
- package/dist/{fleet-6CNVBZZP.js → fleet-2RRVDF2V.js} +189 -101
- package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-VJ726XIA.js} +10 -10
- package/dist/fleet-decisions-EPAPM3XJ.js +157 -0
- package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-JF5QOATM.js} +16 -15
- package/dist/fleet-inspect-VLY4S7QM.js +442 -0
- package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-AIZUEJOY.js} +6 -5
- package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-AJRPDMDV.js} +20 -18
- package/dist/fleet-verify-JFEL2L3H.js +175 -0
- package/dist/fleet-view-ZCON35AG.js +102 -0
- package/dist/{init-VBN2ACVA.js → init-DN2WWLFE.js} +64 -56
- package/dist/install-XGLBQY5E.js +13 -0
- package/dist/interop-OZBKXAYL.js +114 -0
- package/dist/{library-JHGUMLY2.js → library-YWZG7IMW.js} +19 -18
- package/dist/{memory-K4OQIYWG.js → memory-I4C4HMLW.js} +48 -40
- package/dist/{models-2NCZUWDD.js → models-CEYXJBO6.js} +30 -28
- package/dist/{monitor-MMVTJABD.js → monitor-NZ6GCI3P.js} +53 -47
- package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-GCGQ4N5I.js} +6311 -7145
- package/dist/panes-HMABYVO4.js +58 -0
- package/dist/panes-KY6W3V2E.js +103 -0
- package/dist/{paths-DBXMZMDU.js → paths-II4K7DNR.js} +5 -5
- package/dist/{reset-DD5JGOY3.js → reset-DQ6FGCSH.js} +13 -11
- package/dist/resources-BB3MVJMD.js +111 -0
- package/dist/{run-QEGNX7FL.js → run-H2GQDUER.js} +113 -82
- package/dist/{share-JKD3BQMW.js → share-GTJN6A5O.js} +18 -17
- package/dist/{skills-LMQIKDOZ.js → skills-L55TEW6R.js} +31 -24
- package/dist/{skills-eval-I7X2774U.js → skills-eval-XVXPH2JI.js} +61 -52
- package/dist/skills-inventory-S4MXPJFV.js +126 -0
- package/dist/slash-commands-ZSGASKJC.js +77 -0
- package/dist/{steer-CF5TDANS.js → steer-RZGSCY4R.js} +3 -3
- package/dist/{support-I7LOJLIF.js → support-PKEUNNQL.js} +4 -4
- package/dist/{targets-RUSR6B5Z.js → targets-NCPZ644J.js} +31 -29
- package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-44SV3YCN.js} +4 -4
- package/dist/tools-DAF3DI3C.js +27 -0
- package/dist/{trace-ODOQIVIW.js → trace-FYVW2MQA.js} +149 -7
- package/dist/tui-primitives-2AKXQNZK.js +13 -0
- package/dist/{uninstall-ZJF5H5ZN.js → uninstall-DW2PNOIC.js} +5 -5
- package/dist/{upgrade-XANW3FXB.js → upgrade-3XPP6OQL.js} +26 -24
- package/dist/{usage-4H7ZRXQT.js → usage-3NLHGTU2.js} +57 -49
- package/dist/{verifiers-UZXNBZEB.js → verifiers-SSQONKRT.js} +171 -12
- package/dist/{verify-BVKWTNDL.js → verify-3U6J7FZI.js} +9 -9
- package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-S7RR6GZ7.js} +3 -3
- package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-CEHYGPGQ.js} +67 -59
- package/dist/with-panes-MKB46MPQ.js +782 -0
- package/dist/worker/entry.js +101 -66
- package/docs/README.md +3 -2
- package/docs/acp.md +24 -3
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +2 -2
- package/docs/artifact-versions.md +4 -1
- package/docs/built-in-agents.md +1 -1
- package/docs/capacity-and-scheduling.md +43 -5
- package/docs/commands-and-modes.md +31 -2
- package/docs/configuration-and-targets.md +40 -10
- package/docs/context-engine.md +1 -1
- package/docs/development-pipeline.md +19 -0
- package/docs/dispatch-typed-intent.md +385 -0
- package/docs/documentation-coverage.md +2 -2
- package/docs/documentation-guide.md +1 -1
- package/docs/environment-variables.md +1 -0
- package/docs/eval-runner.md +1 -1
- package/docs/evals-internal.md +1 -1
- package/docs/evidence-and-memory.md +2 -2
- package/docs/evolution.md +1 -1
- package/docs/exit-codes-and-output.md +1 -1
- package/docs/extensions-and-sharing.md +25 -1
- package/docs/fleet-dispatch.md +22 -1
- package/docs/installation-and-lifecycle.md +15 -2
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +10 -1
- package/docs/observability.md +3 -3
- package/docs/proactive-memory.md +1 -1
- package/docs/prompt-envelope-and-tools.md +1 -1
- package/docs/provider-adapter-cookbook.md +1 -1
- package/docs/safety-model.md +2 -2
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +1 -1
- package/docs/skills-marketplace.md +1 -1
- package/docs/tool-usage.md +18 -8
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +1 -1
- package/docs/tui-design.md +1 -1
- package/docs/worker-dispatch-mechanics.md +1 -1
- package/package.json +4 -2
- package/src/cli/acp.ts +6 -2
- package/src/cli/argv.ts +25 -0
- package/src/cli/configure.ts +23 -21
- package/src/cli/doctor-panes.ts +124 -0
- package/src/cli/doctor-toolchain.ts +57 -0
- package/src/cli/doctor.ts +20 -1
- package/src/cli/eval-inventory.ts +436 -0
- package/src/cli/eval.ts +13 -0
- package/src/cli/evidence-detail.ts +88 -0
- package/src/cli/evidence-inventory.ts +183 -0
- package/src/cli/evidence.ts +30 -5
- package/src/cli/fleet-decisions.ts +69 -0
- package/src/cli/fleet-inspect.ts +334 -0
- package/src/cli/fleet-verify.ts +133 -0
- package/src/cli/fleet-view.ts +810 -0
- package/src/cli/fleet.ts +148 -37
- package/src/cli/index.ts +14 -2
- package/src/cli/interop-inspect.ts +128 -0
- package/src/cli/interop.ts +34 -0
- package/src/cli/panes.ts +35 -0
- package/src/cli/reset.ts +5 -2
- package/src/cli/run.ts +58 -0
- package/src/cli/skills-inventory.ts +185 -0
- package/src/cli/skills.ts +16 -13
- package/src/cli/tools.ts +321 -0
- package/src/cli/trace-inspect.ts +252 -0
- package/src/cli/trace.ts +23 -2
- package/src/cli/verifiers-inspect.ts +347 -0
- package/src/cli/verifiers.ts +9 -0
- package/src/core/bus-events.ts +4 -0
- package/src/core/config.ts +49 -0
- package/src/core/defaults.ts +93 -7
- package/src/core/response-schema.ts +44 -4
- package/src/core/theme-token-hex.ts +43 -0
- package/src/core/tool-names.ts +2 -1
- package/src/core/xdg.ts +1 -1
- package/src/domains/agents/fleets/build-review.md +0 -3
- package/src/domains/agents/fleets/build-test.md +0 -3
- package/src/domains/agents/result-contract-filesystem.ts +32 -0
- package/src/domains/agents/result-contract.ts +164 -35
- package/src/domains/config/classify.ts +3 -0
- package/src/domains/dispatch/admission-error.ts +9 -0
- package/src/domains/dispatch/admission.ts +22 -21
- package/src/domains/dispatch/capacity-lease.ts +21 -1
- package/src/domains/dispatch/council-topology.ts +398 -0
- package/src/domains/dispatch/extension.ts +222 -50
- package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
- package/src/domains/dispatch/fleet-plan.ts +7 -2
- package/src/domains/dispatch/fleet-run.ts +64 -1
- package/src/domains/dispatch/gate-decisions.ts +11 -1
- package/src/domains/dispatch/gate-role-prompts.ts +9 -0
- package/src/domains/dispatch/gate-topology.ts +289 -0
- package/src/domains/dispatch/index.ts +19 -0
- package/src/domains/dispatch/intent-compatibility.ts +330 -0
- package/src/domains/dispatch/intent.ts +85 -1
- package/src/domains/dispatch/reservation-store.ts +24 -4
- package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
- package/src/domains/dispatch/run-event-journal.ts +598 -0
- package/src/domains/dispatch/state.ts +45 -1
- package/src/domains/dispatch/types.ts +13 -0
- package/src/domains/dispatch/validation.ts +33 -8
- package/src/domains/eval/compare/compare.ts +3 -16
- package/src/domains/eval/inventory.ts +113 -0
- package/src/domains/eval/schema/serving.ts +31 -0
- package/src/domains/evidence/store.ts +6 -0
- package/src/domains/memory/index.ts +0 -1
- package/src/domains/memory/task-memory-policy.ts +6 -10
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/memory-intervention.ts +33 -21
- package/src/domains/mux/contract.ts +434 -0
- package/src/domains/mux/detect.ts +158 -0
- package/src/domains/mux/extension.ts +47 -0
- package/src/domains/mux/index.ts +96 -0
- package/src/domains/mux/manifest.ts +6 -0
- package/src/domains/mux/operations.ts +164 -0
- package/src/domains/mux/pane-registry.ts +90 -0
- package/src/domains/mux/protocol.ts +49 -0
- package/src/domains/mux/socket-client.ts +816 -0
- package/src/domains/mux/types.ts +222 -0
- package/src/domains/mux/viewer-command.ts +59 -0
- package/src/domains/mux/yazi/assets/init.lua +2 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
- package/src/domains/mux/yazi/assets/yazi.toml +17 -0
- package/src/domains/mux/yazi/event-stream.ts +180 -0
- package/src/domains/mux/yazi/profile.ts +299 -0
- package/src/domains/mux/yazi/session.ts +228 -0
- package/src/domains/mux/yazi/theme.ts +30 -0
- package/src/domains/observability/cost.ts +21 -0
- package/src/domains/observability/index.ts +2 -0
- package/src/domains/observability/trace-store.ts +42 -0
- package/src/domains/providers/endpoint-capacity.ts +154 -22
- package/src/domains/providers/endpoint-slots-store.ts +189 -0
- package/src/domains/providers/extension.ts +20 -3
- package/src/domains/providers/index.ts +22 -0
- package/src/domains/providers/model-runtime-capabilities.ts +32 -0
- package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
- package/src/domains/providers/runtimes/builtins.ts +2 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +375 -0
- package/src/domains/providers/support.ts +1 -0
- package/src/domains/providers/target-model-cache.ts +124 -0
- package/src/domains/resources/index.ts +3 -0
- package/src/domains/resources/skills/loader.ts +33 -0
- package/src/domains/safety/action-classifier.ts +6 -0
- package/src/domains/toolchain/archive.ts +175 -0
- package/src/domains/toolchain/contract.ts +28 -0
- package/src/domains/toolchain/extension.ts +47 -0
- package/src/domains/toolchain/index.ts +39 -0
- package/src/domains/toolchain/install.ts +327 -0
- package/src/domains/toolchain/manifest.ts +8 -0
- package/src/domains/toolchain/paths.ts +34 -0
- package/src/domains/toolchain/registry.ts +265 -0
- package/src/domains/toolchain/remove.ts +218 -0
- package/src/domains/toolchain/resolve.ts +182 -0
- package/src/domains/toolchain/types.ts +113 -0
- package/src/domains/toolchain/version.ts +88 -0
- package/src/engine/acp/server.ts +413 -70
- package/src/engine/acp/types.ts +19 -1
- package/src/engine/claude/sdk-module.ts +98 -0
- package/src/engine/claude/sdk-runtime.ts +19 -11
- package/src/engine/tui-primitives.ts +21 -0
- package/src/engine/tui.ts +1 -0
- package/src/engine/worker-runtime.ts +2 -13
- package/src/entry/boot-options.ts +2 -0
- package/src/entry/orchestrator.ts +103 -5
- package/src/entry/panes-activation.ts +31 -0
- package/src/entry/with-panes.ts +20 -0
- package/src/interactive/context-overlay.ts +1 -0
- package/src/interactive/cost-overlay.ts +2 -0
- package/src/interactive/council-grid.ts +1 -3
- package/src/interactive/council.ts +11 -0
- package/src/interactive/dispatch-board.ts +26 -16
- package/src/interactive/interactive-application.ts +153 -6
- package/src/interactive/interactive-input-runtime.ts +7 -0
- package/src/interactive/interactive-slash-runtime.ts +36 -6
- package/src/interactive/memory-overlay.ts +1 -0
- package/src/interactive/modal-marker.ts +170 -0
- package/src/interactive/mux-bridge.ts +214 -0
- package/src/interactive/overlay-frame.ts +58 -2
- package/src/interactive/overlay-general-openers.ts +1 -0
- package/src/interactive/overlay-key-routing.ts +14 -3
- package/src/interactive/overlay-lifecycle.ts +19 -3
- package/src/interactive/overlay-model-selectors.ts +40 -3
- package/src/interactive/overlay-permission-lifecycle.ts +90 -22
- package/src/interactive/overlay-transitions.ts +18 -4
- package/src/interactive/overlays/agents.ts +1 -0
- package/src/interactive/overlays/ask-user.ts +136 -30
- package/src/interactive/overlays/auth-dialog.ts +1 -0
- package/src/interactive/overlays/context-reset.ts +1 -0
- package/src/interactive/overlays/cwd-fallback.ts +1 -0
- package/src/interactive/overlays/decisions.ts +11 -11
- package/src/interactive/overlays/extensions.ts +1 -0
- package/src/interactive/overlays/fleet-run-approval.ts +1 -0
- package/src/interactive/overlays/handoff-review.ts +1 -0
- package/src/interactive/overlays/help-reference.ts +2 -0
- package/src/interactive/overlays/interop.ts +1 -0
- package/src/interactive/overlays/library-install-confirm.ts +1 -0
- package/src/interactive/overlays/library-tabs.ts +28 -0
- package/src/interactive/overlays/list-overlay.ts +10 -1
- package/src/interactive/overlays/message-picker.ts +1 -0
- package/src/interactive/overlays/model-scope.ts +86 -0
- package/src/interactive/overlays/model-selector.ts +1 -0
- package/src/interactive/overlays/prompts.ts +1 -0
- package/src/interactive/overlays/session-selector.ts +1 -0
- package/src/interactive/overlays/settings-sections.ts +30 -0
- package/src/interactive/overlays/settings.ts +579 -44
- package/src/interactive/overlays/side-question.ts +1 -0
- package/src/interactive/overlays/skills-hub.ts +3 -11
- package/src/interactive/overlays/tree-selector.ts +1 -0
- package/src/interactive/pane-policy.ts +46 -0
- package/src/interactive/panes-runtime.ts +292 -0
- package/src/interactive/renderers/compaction-summary.ts +29 -0
- package/src/interactive/renderers/worker-entry.ts +122 -14
- package/src/interactive/slash-commands.ts +251 -15
- package/src/interactive/tasks-overlay.ts +1 -0
- package/src/interactive/theme/tokens.ts +3 -14
- package/src/interactive/turn-context.ts +47 -2
- package/src/interactive/view/artifacts.ts +109 -1
- package/src/interactive/view/view-overlay.ts +1 -0
- package/src/interactive/watch-pane.ts +152 -0
- package/src/interactive/worker-progress.ts +7 -1
- package/src/interactive/worker-receipts.ts +19 -1
- package/src/interactive/worker-stream.ts +5 -0
- package/src/interactive/yazi-bridge.ts +444 -0
- package/src/tools/bootstrap.ts +26 -2
- package/src/tools/builtin-tool-catalog.ts +15 -0
- package/src/tools/compete-worktrees.ts +83 -2
- package/src/tools/core-bootstrap.ts +2 -1
- package/src/tools/dispatch-admission.ts +14 -3
- package/src/tools/dispatch-arguments.ts +20 -20
- package/src/tools/dispatch-run-events.ts +134 -19
- package/src/tools/dispatch-runner.ts +29 -7
- package/src/tools/dispatch-types.ts +15 -3
- package/src/tools/dispatch.ts +1 -1
- package/src/tools/executables.ts +17 -14
- package/src/tools/observation.ts +54 -4
- package/src/tools/panes-surface.ts +38 -0
- package/src/tools/panes.ts +112 -0
- package/src/tools/policy.ts +10 -1
- package/src/tools/presentation.ts +1 -0
- package/dist/chunk-D73KXYPF.js +0 -37
- package/dist/chunk-MLOK6ZOS.js +0 -2888
- package/dist/chunk-YKOFT37S.js +0 -279
- package/dist/doctor-TWBWFK5V.js +0 -165
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
artifactDefaultPath,
|
|
4
4
|
extractCommandCdTargets,
|
|
5
5
|
extractCommandWriteTargets
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GCSMB2KY.js";
|
|
7
7
|
import {
|
|
8
8
|
canonicalizeExistingPath
|
|
9
9
|
} from "./chunk-ECH6PKUQ.js";
|
|
10
10
|
import {
|
|
11
11
|
ToolNames,
|
|
12
12
|
isBuiltinToolName
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-K6BSR66V.js";
|
|
14
14
|
import {
|
|
15
15
|
init_esm_shims
|
|
16
16
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -98,6 +98,12 @@ function baseClassify(tool) {
|
|
|
98
98
|
// local mirror. Neither touches the workspace, so it is never gated
|
|
99
99
|
// behind a confirmation.
|
|
100
100
|
case ToolNames.Ledger:
|
|
101
|
+
// panes focuses, opens, and closes terminal panes Clio itself created, in
|
|
102
|
+
// a pane host that lives outside the workspace. Nothing it does writes a
|
|
103
|
+
// file, runs a model-supplied command (its schema exposes presets only),
|
|
104
|
+
// or survives the session, so it is reversible, local, and never gated
|
|
105
|
+
// behind a confirmation.
|
|
106
|
+
case ToolNames.Panes:
|
|
101
107
|
return "read";
|
|
102
108
|
case ToolNames.Write:
|
|
103
109
|
case ToolNames.Edit:
|
|
@@ -782,13 +788,24 @@ function parseChecks(value) {
|
|
|
782
788
|
}
|
|
783
789
|
return checks;
|
|
784
790
|
}
|
|
791
|
+
function citationWithinWorkspace(cwd, citedPath) {
|
|
792
|
+
const relative = path2.relative(cwd, citedPath);
|
|
793
|
+
if (relative === "") return true;
|
|
794
|
+
return !(relative === ".." || relative.startsWith(`..${path2.sep}`) || path2.isAbsolute(relative));
|
|
795
|
+
}
|
|
796
|
+
function directoryCitationDigest(cwd, citedPath) {
|
|
797
|
+
const relative = path2.relative(cwd, citedPath);
|
|
798
|
+
return createHash2("sha256").update(`directory:${relative === "" ? "." : relative}`, "utf8").digest("hex");
|
|
799
|
+
}
|
|
785
800
|
function validateScoutCitation(input, citation) {
|
|
786
801
|
const cwd = path2.resolve(input.cwd);
|
|
787
802
|
const citedPath = path2.resolve(cwd, citation.path);
|
|
788
|
-
|
|
789
|
-
if (relative === "" || relative.startsWith(`..${path2.sep}`) || relative === ".." || path2.isAbsolute(relative)) {
|
|
803
|
+
if (!citationWithinWorkspace(cwd, citedPath)) {
|
|
790
804
|
return { ok: false, reason: `Scout citation path escapes the workspace: ${citation.path}` };
|
|
791
805
|
}
|
|
806
|
+
if (input.filesystem.isDirectory?.(citedPath) === true) {
|
|
807
|
+
return { ok: true, evidence: { ...citation, contentDigest: directoryCitationDigest(cwd, citedPath) } };
|
|
808
|
+
}
|
|
792
809
|
const content = input.filesystem.readFile(citedPath);
|
|
793
810
|
if (content === null) return { ok: false, reason: `Scout citation cannot be read: ${citation.path}` };
|
|
794
811
|
const lineCount = content.split(/\r\n|\r|\n/u).length;
|
|
@@ -844,14 +861,57 @@ function groundDegradedScout(contract, input, scout, degradedReason) {
|
|
|
844
861
|
}
|
|
845
862
|
function validateVerifier(contract, output) {
|
|
846
863
|
const parsed = parseJson(output);
|
|
847
|
-
if (!parsed.ok) return failure(contract, "fail", parsed.reason);
|
|
864
|
+
if (!parsed.ok) return failure(contract, "fail", `Verifier result payload failed: ${parsed.reason}`);
|
|
848
865
|
const value = parsed.value;
|
|
849
|
-
|
|
850
|
-
|
|
866
|
+
const unknown = Object.keys(value).filter((key) => key !== "verdict" && key !== "checks");
|
|
867
|
+
if (unknown.length > 0) {
|
|
868
|
+
return failure(
|
|
869
|
+
contract,
|
|
870
|
+
"fail",
|
|
871
|
+
`Verifier result field${unknown.length === 1 ? "" : "s"} ${unknown.join(", ")} ${unknown.length === 1 ? "is" : "are"} not legal; legal top-level fields are verdict and checks`
|
|
872
|
+
);
|
|
851
873
|
}
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
874
|
+
if (value.verdict !== "pass" && value.verdict !== "fail") {
|
|
875
|
+
return failure(contract, "fail", 'Verifier field "verdict" must be one of: pass | fail');
|
|
876
|
+
}
|
|
877
|
+
if (!Array.isArray(value.checks) || value.checks.length === 0) {
|
|
878
|
+
return failure(
|
|
879
|
+
contract,
|
|
880
|
+
"fail",
|
|
881
|
+
'Verifier field "checks" must be a non-empty array of {name, passed, evidence}; each checks[].passed value must be one of: true | false'
|
|
882
|
+
);
|
|
883
|
+
}
|
|
884
|
+
const checks = [];
|
|
885
|
+
for (const [index, raw] of value.checks.entries()) {
|
|
886
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
887
|
+
return failure(contract, "fail", `Verifier field "checks[${index}]" must be an object`);
|
|
888
|
+
}
|
|
889
|
+
const check = raw;
|
|
890
|
+
const checkUnknown = Object.keys(check).filter((key) => key !== "name" && key !== "passed" && key !== "evidence");
|
|
891
|
+
if (checkUnknown.length > 0) {
|
|
892
|
+
return failure(
|
|
893
|
+
contract,
|
|
894
|
+
"fail",
|
|
895
|
+
`Verifier field "checks[${index}].${checkUnknown[0]}" is not legal; legal check fields are name, passed, and evidence`
|
|
896
|
+
);
|
|
897
|
+
}
|
|
898
|
+
if (!string(check.name)) {
|
|
899
|
+
return failure(contract, "fail", `Verifier field "checks[${index}].name" must be a non-empty string`);
|
|
900
|
+
}
|
|
901
|
+
if (typeof check.passed !== "boolean") {
|
|
902
|
+
return failure(contract, "fail", `Verifier field "checks[${index}].passed" must be one of: true | false`);
|
|
903
|
+
}
|
|
904
|
+
if (!string(check.evidence)) {
|
|
905
|
+
return failure(contract, "fail", `Verifier field "checks[${index}].evidence" must be a non-empty string`);
|
|
906
|
+
}
|
|
907
|
+
checks.push({ name: check.name, passed: check.passed, evidence: check.evidence });
|
|
908
|
+
}
|
|
909
|
+
if (value.verdict === "pass" !== checks.every((check) => check.passed)) {
|
|
910
|
+
return failure(
|
|
911
|
+
contract,
|
|
912
|
+
"fail",
|
|
913
|
+
'Verifier field "verdict" must agree with every checks[].passed value; verdict legal values are pass | fail and checks[].passed legal values are true | false'
|
|
914
|
+
);
|
|
855
915
|
}
|
|
856
916
|
const verifier = { verdict: value.verdict, checks };
|
|
857
917
|
return success(contract, value.verdict, verifier, { verifier });
|
|
@@ -944,38 +1004,80 @@ function resultContractAuthorship(contract, output) {
|
|
|
944
1004
|
}
|
|
945
1005
|
function validateDebugger(contract, output) {
|
|
946
1006
|
const parsed = parseJson(output);
|
|
947
|
-
if (!parsed.ok) return failure(contract, "unmeasured", parsed.reason);
|
|
1007
|
+
if (!parsed.ok) return failure(contract, "unmeasured", `Debugger result payload failed: ${parsed.reason}`);
|
|
948
1008
|
const value = parsed.value;
|
|
949
|
-
|
|
1009
|
+
const unknown = Object.keys(value).filter(
|
|
1010
|
+
(key) => key !== "diagnosis" && key !== "reproduction" && key !== "evidence"
|
|
1011
|
+
);
|
|
1012
|
+
if (unknown.length > 0) {
|
|
950
1013
|
return failure(
|
|
951
1014
|
contract,
|
|
952
1015
|
"unmeasured",
|
|
953
|
-
|
|
1016
|
+
`Debugger result field${unknown.length === 1 ? "" : "s"} ${unknown.join(", ")} ${unknown.length === 1 ? "is" : "are"} not legal; legal top-level fields are diagnosis, reproduction, and evidence`
|
|
954
1017
|
);
|
|
955
1018
|
}
|
|
1019
|
+
if (!string(value.diagnosis)) {
|
|
1020
|
+
return failure(contract, "unmeasured", 'Debugger field "diagnosis" must be a non-empty string');
|
|
1021
|
+
}
|
|
1022
|
+
if (value.reproduction !== "reproduced" && value.reproduction !== "not-reproduced" && value.reproduction !== "unknown") {
|
|
1023
|
+
return failure(
|
|
1024
|
+
contract,
|
|
1025
|
+
"unmeasured",
|
|
1026
|
+
'Debugger field "reproduction" must be one of: reproduced | not-reproduced | unknown'
|
|
1027
|
+
);
|
|
1028
|
+
}
|
|
1029
|
+
if (!Array.isArray(value.evidence)) {
|
|
1030
|
+
return failure(contract, "unmeasured", 'Debugger field "evidence" must be an array of strings');
|
|
1031
|
+
}
|
|
1032
|
+
const malformedEvidence = value.evidence.findIndex((entry) => !string(entry));
|
|
1033
|
+
if (malformedEvidence >= 0) {
|
|
1034
|
+
return failure(contract, "unmeasured", `Debugger field "evidence[${malformedEvidence}]" must be a non-empty string`);
|
|
1035
|
+
}
|
|
956
1036
|
return success(contract, "unmeasured", value);
|
|
957
1037
|
}
|
|
958
1038
|
function validateResearch(contract, output, networkAllowed) {
|
|
959
1039
|
const parsed = parseJson(output);
|
|
960
|
-
if (!parsed.ok) return failure(contract, "unmeasured", parsed.reason);
|
|
1040
|
+
if (!parsed.ok) return failure(contract, "unmeasured", `Research result payload failed: ${parsed.reason}`);
|
|
961
1041
|
const value = parsed.value;
|
|
962
|
-
|
|
1042
|
+
const unknown = Object.keys(value).filter((key) => key !== "source" && key !== "findings");
|
|
1043
|
+
if (unknown.length > 0) {
|
|
963
1044
|
return failure(
|
|
964
1045
|
contract,
|
|
965
1046
|
"unmeasured",
|
|
966
|
-
|
|
1047
|
+
`Research result field${unknown.length === 1 ? "" : "s"} ${unknown.join(", ")} ${unknown.length === 1 ? "is" : "are"} not legal; legal top-level fields are source and findings`
|
|
967
1048
|
);
|
|
968
1049
|
}
|
|
1050
|
+
if (value.source !== "local" && value.source !== "external") {
|
|
1051
|
+
return failure(contract, "unmeasured", 'Research field "source" must be one of: local | external');
|
|
1052
|
+
}
|
|
1053
|
+
if (!Array.isArray(value.findings)) {
|
|
1054
|
+
return failure(contract, "unmeasured", 'Research field "findings" must be an array of {claim, evidence} objects');
|
|
1055
|
+
}
|
|
969
1056
|
if (value.source === "external" && !networkAllowed) {
|
|
970
|
-
return failure(
|
|
1057
|
+
return failure(
|
|
1058
|
+
contract,
|
|
1059
|
+
"unmeasured",
|
|
1060
|
+
'Research field "source" is external but the run has no allowed network posture; legal values are local | external, and use local for workspace-only evidence'
|
|
1061
|
+
);
|
|
971
1062
|
}
|
|
972
|
-
for (const finding of value.findings) {
|
|
1063
|
+
for (const [index, finding] of value.findings.entries()) {
|
|
973
1064
|
if (finding === null || typeof finding !== "object" || Array.isArray(finding)) {
|
|
974
|
-
return failure(contract, "unmeasured",
|
|
1065
|
+
return failure(contract, "unmeasured", `Research field "findings[${index}]" must be an object`);
|
|
975
1066
|
}
|
|
976
1067
|
const record = finding;
|
|
977
|
-
|
|
978
|
-
|
|
1068
|
+
const findingUnknown = Object.keys(record).filter((key) => key !== "claim" && key !== "evidence");
|
|
1069
|
+
if (findingUnknown.length > 0) {
|
|
1070
|
+
return failure(
|
|
1071
|
+
contract,
|
|
1072
|
+
"unmeasured",
|
|
1073
|
+
`Research field "findings[${index}].${findingUnknown[0]}" is not legal; legal finding fields are claim and evidence`
|
|
1074
|
+
);
|
|
1075
|
+
}
|
|
1076
|
+
if (!string(record.claim)) {
|
|
1077
|
+
return failure(contract, "unmeasured", `Research field "findings[${index}].claim" must be a non-empty string`);
|
|
1078
|
+
}
|
|
1079
|
+
if (!string(record.evidence)) {
|
|
1080
|
+
return failure(contract, "unmeasured", `Research field "findings[${index}].evidence" must be a non-empty string`);
|
|
979
1081
|
}
|
|
980
1082
|
}
|
|
981
1083
|
return success(contract, "unmeasured", value);
|
|
@@ -1166,15 +1268,15 @@ function resultContractShape(contract) {
|
|
|
1166
1268
|
case "scout-report":
|
|
1167
1269
|
return '{"findings":[{"claim":"what you observed","path":"src/file.ts","line":1}],"needsSplit":false,"proposedSubtasks":[]} or {"findings":[],"needsSplit":true,"proposedSubtasks":[{"id":"inspect","task":"Inspect the boundary","dependencies":[],"expectedResultContract":"scout-report","requestedAuthority":"read-only"}]} or, if you cannot produce a citation you are sure of, at least {"findings":[{"claim":"what you observed"}]}, which is accepted as an ungrounded lead rather than losing the run';
|
|
1168
1270
|
case "verifier-report":
|
|
1169
|
-
return '{"verdict":"pass","checks":[{"name":"npm run typecheck","passed":true,"evidence":"exit 0"}]}';
|
|
1271
|
+
return 'one of {"verdict":"pass","checks":[{"name":"npm run typecheck","passed":true,"evidence":"exit 0"}]} or {"verdict":"fail","checks":[{"name":"npm run typecheck","passed":false,"evidence":"exit 1"}]}; verdict legal values are pass | fail and checks[].passed legal values are true | false';
|
|
1170
1272
|
case "council-report":
|
|
1171
1273
|
return '{"members":[{"label":"alpha","runId":"run-1","round":1,"answer":"..."}],"synthesis":{"kind":"none"}}';
|
|
1172
1274
|
case "council-ballot":
|
|
1173
1275
|
return COUNCIL_BALLOT_SHAPE;
|
|
1174
1276
|
case "debugger-report":
|
|
1175
|
-
return '{"diagnosis":"...","reproduction":"reproduced","evidence":["..."]}';
|
|
1277
|
+
return 'one of {"diagnosis":"...","reproduction":"reproduced","evidence":["..."]}, {"diagnosis":"...","reproduction":"not-reproduced","evidence":["..."]}, or {"diagnosis":"...","reproduction":"unknown","evidence":["..."]}; reproduction legal values are reproduced | not-reproduced | unknown';
|
|
1176
1278
|
case "research-report":
|
|
1177
|
-
return '{"source":"local","findings":[{"claim":"...","evidence":"..."}]}';
|
|
1279
|
+
return 'one of {"source":"local","findings":[{"claim":"...","evidence":"..."}]} or {"source":"external","findings":[{"claim":"...","evidence":"..."}]}; source legal values are local | external';
|
|
1178
1280
|
case "mutation-report":
|
|
1179
1281
|
return '{"mutatedPaths":["src/file.ts"],"validations":[{"name":"npm test","passed":true,"evidence":"exit 0"}],"commitMessage":"optional: the commit message for this change","summary":"optional: one line"}';
|
|
1180
1282
|
case "provenance-report":
|
|
@@ -1285,78 +1387,6 @@ function parseWorkerResultContract(value, sourcePath) {
|
|
|
1285
1387
|
return parseContract(value, sourcePath, [...RECIPE_DECLARABLE_KINDS, ...COORDINATOR_AUTHORED_KINDS]);
|
|
1286
1388
|
}
|
|
1287
1389
|
|
|
1288
|
-
// src/core/path-boundary.ts
|
|
1289
|
-
init_esm_shims();
|
|
1290
|
-
import path3 from "node:path";
|
|
1291
|
-
var PATH_BOUNDARY_MAX_ENTRIES = 32;
|
|
1292
|
-
var PathBoundaryError = class extends Error {
|
|
1293
|
-
code;
|
|
1294
|
-
constructor(code, message) {
|
|
1295
|
-
super(message);
|
|
1296
|
-
this.name = "PathBoundaryError";
|
|
1297
|
-
this.code = code;
|
|
1298
|
-
}
|
|
1299
|
-
};
|
|
1300
|
-
var GLOB_CHARACTERS = /[*?[\]{}]/u;
|
|
1301
|
-
function normalizePathBoundaryEntry(entry) {
|
|
1302
|
-
const raw = entry.trim();
|
|
1303
|
-
if (raw.length === 0) throw new PathBoundaryError("empty", "write boundary: entry must be a non-empty path");
|
|
1304
|
-
if (raw.includes("\\")) {
|
|
1305
|
-
throw new PathBoundaryError("separator", `write boundary: entry '${entry}' must use '/' separators`);
|
|
1306
|
-
}
|
|
1307
|
-
if (GLOB_CHARACTERS.test(raw)) {
|
|
1308
|
-
throw new PathBoundaryError("glob", `write boundary: entry '${entry}' looks like a glob, which v1 does not support`);
|
|
1309
|
-
}
|
|
1310
|
-
if (raw.startsWith("/") || /^[A-Za-z]:/u.test(raw)) {
|
|
1311
|
-
throw new PathBoundaryError("absolute", `write boundary: entry '${entry}' must be repository-relative, not absolute`);
|
|
1312
|
-
}
|
|
1313
|
-
const subtree = raw.endsWith("/");
|
|
1314
|
-
const segments = raw.split("/").filter((segment) => segment.length > 0);
|
|
1315
|
-
if (segments.length === 0) {
|
|
1316
|
-
throw new PathBoundaryError("empty", `write boundary: entry '${entry}' must name a path inside the repository`);
|
|
1317
|
-
}
|
|
1318
|
-
for (const segment of segments) {
|
|
1319
|
-
if (segment === "..") {
|
|
1320
|
-
throw new PathBoundaryError("parent", `write boundary: entry '${entry}' must not contain '..'`);
|
|
1321
|
-
}
|
|
1322
|
-
if (segment === ".") {
|
|
1323
|
-
throw new PathBoundaryError("dot", `write boundary: entry '${entry}' must not contain '.' segments`);
|
|
1324
|
-
}
|
|
1325
|
-
}
|
|
1326
|
-
const joined = segments.join("/");
|
|
1327
|
-
return subtree ? `${joined}/` : joined;
|
|
1328
|
-
}
|
|
1329
|
-
function normalizePathBoundary(entries) {
|
|
1330
|
-
if (entries.length > PATH_BOUNDARY_MAX_ENTRIES) {
|
|
1331
|
-
throw new Error(`write boundary: at most ${PATH_BOUNDARY_MAX_ENTRIES} entries may be declared`);
|
|
1332
|
-
}
|
|
1333
|
-
return [...new Set(entries.map(normalizePathBoundaryEntry))].sort();
|
|
1334
|
-
}
|
|
1335
|
-
function toPosixBoundaryPath(value) {
|
|
1336
|
-
return value.split("\\").join("/");
|
|
1337
|
-
}
|
|
1338
|
-
function isDirectoryPathBoundary(entry) {
|
|
1339
|
-
return toPosixBoundaryPath(entry).endsWith("/");
|
|
1340
|
-
}
|
|
1341
|
-
function asDirectoryPathBoundary(entry) {
|
|
1342
|
-
const normalized = toPosixBoundaryPath(entry);
|
|
1343
|
-
return normalized.endsWith("/") ? normalized : `${normalized}/`;
|
|
1344
|
-
}
|
|
1345
|
-
function resolvePathBoundary(cwd, entry) {
|
|
1346
|
-
const directory = isDirectoryPathBoundary(entry);
|
|
1347
|
-
const withoutMarker = directory ? entry.slice(0, -1) : entry;
|
|
1348
|
-
const resolved = toPosixBoundaryPath(path3.resolve(cwd, withoutMarker));
|
|
1349
|
-
return directory ? asDirectoryPathBoundary(resolved) : resolved;
|
|
1350
|
-
}
|
|
1351
|
-
function pathBoundaryEntryCovers(outer, inner) {
|
|
1352
|
-
const normalizedOuter = toPosixBoundaryPath(outer);
|
|
1353
|
-
const normalizedInner = toPosixBoundaryPath(inner);
|
|
1354
|
-
return normalizedOuter.endsWith("/") ? normalizedInner.startsWith(normalizedOuter) : !normalizedInner.endsWith("/") && normalizedInner === normalizedOuter;
|
|
1355
|
-
}
|
|
1356
|
-
function pathBoundaryCovers(boundary, candidate) {
|
|
1357
|
-
return boundary.some((entry) => pathBoundaryEntryCovers(entry, candidate));
|
|
1358
|
-
}
|
|
1359
|
-
|
|
1360
1390
|
export {
|
|
1361
1391
|
parseJsonObjectPayload,
|
|
1362
1392
|
classify,
|
|
@@ -1384,16 +1414,9 @@ export {
|
|
|
1384
1414
|
validateResultContract,
|
|
1385
1415
|
validateRecipeResult,
|
|
1386
1416
|
RESULT_CONTRACT_REPAIR_LIMIT,
|
|
1417
|
+
resultContractShape,
|
|
1387
1418
|
resultContractRepairMessages,
|
|
1388
1419
|
parseResultContract,
|
|
1389
|
-
parseWorkerResultContract
|
|
1390
|
-
PATH_BOUNDARY_MAX_ENTRIES,
|
|
1391
|
-
PathBoundaryError,
|
|
1392
|
-
normalizePathBoundaryEntry,
|
|
1393
|
-
normalizePathBoundary,
|
|
1394
|
-
asDirectoryPathBoundary,
|
|
1395
|
-
resolvePathBoundary,
|
|
1396
|
-
pathBoundaryEntryCovers,
|
|
1397
|
-
pathBoundaryCovers
|
|
1420
|
+
parseWorkerResultContract
|
|
1398
1421
|
};
|
|
1399
|
-
//# sourceMappingURL=chunk-
|
|
1422
|
+
//# sourceMappingURL=chunk-DYJP44XW.js.map
|
|
@@ -2,25 +2,25 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
canonicalJson,
|
|
4
4
|
sha256
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-B7OBL7PK.js";
|
|
6
6
|
import {
|
|
7
7
|
addResponseModelIdObservationCount,
|
|
8
8
|
emptyResponseModelIdObservationCounts,
|
|
9
9
|
responseModelIdObservationFromRecord
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-QREDIESB.js";
|
|
11
11
|
import {
|
|
12
12
|
uncachedPrefillTokens
|
|
13
13
|
} from "./chunk-3DPEIQKN.js";
|
|
14
14
|
import {
|
|
15
15
|
ToolNames
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-K6BSR66V.js";
|
|
17
17
|
import {
|
|
18
18
|
ceilChars,
|
|
19
19
|
extractReasoningTokens
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-UM7N4G5A.js";
|
|
21
21
|
import {
|
|
22
22
|
settingsPath
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-VFA6GDY5.js";
|
|
24
24
|
import {
|
|
25
25
|
expandConfigPath
|
|
26
26
|
} from "./chunk-SST6Z5JA.js";
|
|
@@ -1104,4 +1104,4 @@ export {
|
|
|
1104
1104
|
readFileArgsAsync,
|
|
1105
1105
|
expandInlineFileReferencesAsync
|
|
1106
1106
|
};
|
|
1107
|
-
//# sourceMappingURL=chunk-
|
|
1107
|
+
//# sourceMappingURL=chunk-F4CKPOEQ.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
enabledExtensionResourceRoots
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-SUW5DORT.js";
|
|
5
5
|
import {
|
|
6
6
|
require_dist
|
|
7
7
|
} from "./chunk-APJ265NV.js";
|
|
8
8
|
import {
|
|
9
9
|
clioConfigDir
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-BYP5D4HI.js";
|
|
11
11
|
import {
|
|
12
12
|
__toESM,
|
|
13
13
|
init_esm_shims
|
|
@@ -120,4 +120,4 @@ export {
|
|
|
120
120
|
splitYamlFrontmatter,
|
|
121
121
|
stringField
|
|
122
122
|
};
|
|
123
|
-
//# sourceMappingURL=chunk-
|
|
123
|
+
//# sourceMappingURL=chunk-FEFIFZTL.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-ECH6PKUQ.js";
|
|
8
8
|
import {
|
|
9
9
|
ToolNames
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-K6BSR66V.js";
|
|
11
11
|
import {
|
|
12
12
|
init_esm_shims
|
|
13
13
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -761,4 +761,4 @@ export {
|
|
|
761
761
|
extractCommandDeleteTargets,
|
|
762
762
|
tokenizeShellLike
|
|
763
763
|
};
|
|
764
|
-
//# sourceMappingURL=chunk-
|
|
764
|
+
//# sourceMappingURL=chunk-GCSMB2KY.js.map
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
extractCommandDeleteTargets,
|
|
5
5
|
extractCommandWriteTargets,
|
|
6
6
|
toolMutationPaths
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-GCSMB2KY.js";
|
|
8
8
|
import {
|
|
9
9
|
isProjectVerifierCheckId,
|
|
10
10
|
isVerificationScriptName
|
|
11
11
|
} from "./chunk-UL3WSD3F.js";
|
|
12
12
|
import {
|
|
13
13
|
ToolNames
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-K6BSR66V.js";
|
|
15
15
|
import {
|
|
16
16
|
init_esm_shims
|
|
17
17
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -388,4 +388,4 @@ export {
|
|
|
388
388
|
assessFinishContract,
|
|
389
389
|
typedValidationSummary
|
|
390
390
|
};
|
|
391
|
-
//# sourceMappingURL=chunk-
|
|
391
|
+
//# sourceMappingURL=chunk-GKF55TAZ.js.map
|
|
@@ -2,22 +2,22 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
readLayeredSettings,
|
|
4
4
|
readStrictLayeredSettings
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7MCTRUCE.js";
|
|
6
6
|
import {
|
|
7
7
|
formatBootTrace
|
|
8
8
|
} from "./chunk-HKIYEGME.js";
|
|
9
9
|
import {
|
|
10
10
|
initializeClioHome
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-2OQE55CK.js";
|
|
12
12
|
import {
|
|
13
13
|
readSettings
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-VFA6GDY5.js";
|
|
15
15
|
import {
|
|
16
16
|
require_dist
|
|
17
17
|
} from "./chunk-APJ265NV.js";
|
|
18
18
|
import {
|
|
19
19
|
clioConfigDir
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-BYP5D4HI.js";
|
|
21
21
|
import {
|
|
22
22
|
findEngineEnvKeys,
|
|
23
23
|
getEngineEnvApiKey
|
|
@@ -100,6 +100,7 @@ var BUILTIN_RUNTIME_BOOT_MANIFEST = [
|
|
|
100
100
|
{ id: "lmstudio", aliases: ["lmstudio-native"], kind: "http", tier: "local-native", auth: "api-key" },
|
|
101
101
|
{ id: "ollama-native", kind: "http", tier: "local-native", auth: "none" },
|
|
102
102
|
{ id: "anthropic-compat", kind: "http", tier: "protocol", auth: "api-key" },
|
|
103
|
+
{ id: "litellm", kind: "http", tier: "protocol", auth: "api-key" },
|
|
103
104
|
{ id: "openai-compat", kind: "http", tier: "protocol", auth: "api-key" },
|
|
104
105
|
{ id: "sglang", kind: "http", tier: "local-native", auth: "api-key" },
|
|
105
106
|
{ id: "vllm", kind: "http", tier: "local-native", auth: "api-key" },
|
|
@@ -158,7 +159,7 @@ Run \`clio-coder auth login ${verdict.store}\` if the endpoint requires one; loc
|
|
|
158
159
|
} else if (verdict.kind !== "usable") {
|
|
159
160
|
process.stdout.write(`${describeVerdict(verdict)} Starting \`clio-coder configure\`.
|
|
160
161
|
`);
|
|
161
|
-
const { runConfigureCommand } = await import("./configure-
|
|
162
|
+
const { runConfigureCommand } = await import("./configure-TEGEBYCA.js");
|
|
162
163
|
const configured = await runConfigureCommand([]);
|
|
163
164
|
if (configured !== 0) return configured;
|
|
164
165
|
startupSettings = readStrictLayeredSettings(process.cwd()).settings;
|
|
@@ -167,7 +168,7 @@ Run \`clio-coder auth login ${verdict.store}\` if the endpoint requires one; loc
|
|
|
167
168
|
let terminalLease;
|
|
168
169
|
try {
|
|
169
170
|
if (terminalLeaseEligible(options)) {
|
|
170
|
-
const { createProcessTerminalLease, instantShellEnabled } = await import("./terminal-lease-
|
|
171
|
+
const { createProcessTerminalLease, instantShellEnabled } = await import("./terminal-lease-44SV3YCN.js");
|
|
171
172
|
if (instantShellEnabled()) {
|
|
172
173
|
let stage0FrameId = null;
|
|
173
174
|
terminalLease = createProcessTerminalLease({
|
|
@@ -190,7 +191,7 @@ Run \`clio-coder auth login ${verdict.store}\` if the endpoint requires one; loc
|
|
|
190
191
|
throw new Error("injected Stage 1 hydration failure");
|
|
191
192
|
}
|
|
192
193
|
}
|
|
193
|
-
const { bootOrchestrator } = await import("./orchestrator-
|
|
194
|
+
const { bootOrchestrator } = await import("./orchestrator-GCGQ4N5I.js");
|
|
194
195
|
const result = await bootOrchestrator({
|
|
195
196
|
...options,
|
|
196
197
|
...startupSettings ? { startupSettings } : {},
|
|
@@ -214,4 +215,4 @@ export {
|
|
|
214
215
|
terminalLeaseEligible,
|
|
215
216
|
runClioCommand
|
|
216
217
|
};
|
|
217
|
-
//# sourceMappingURL=chunk-
|
|
218
|
+
//# sourceMappingURL=chunk-GR5G2PVF.js.map
|
|
@@ -64,16 +64,20 @@ var DEFAULT_SETTINGS = {
|
|
|
64
64
|
enabled: true,
|
|
65
65
|
everyNTools: 10,
|
|
66
66
|
windowSteps: 8,
|
|
67
|
-
|
|
67
|
+
// Budget for the answer and any reasoning tokens that precede it.
|
|
68
|
+
// An always-on-thinking 35B spent the measured 400/400 completion
|
|
69
|
+
// tokens on reasoning and stopped with finish_reason=length before it
|
|
70
|
+
// emitted content, so the old budget made a useful step unreachable.
|
|
71
|
+
maxTokens: 2e3,
|
|
68
72
|
// A memory step runs detached from the turn that triggered it, but it
|
|
69
73
|
// runs on a real inference endpoint that the operator's own turns and
|
|
70
74
|
// dispatched workers also queue against. The operator's ledger over 14
|
|
71
75
|
// days recorded 60 llm-tier steps spending 1,666 seconds of model time
|
|
72
76
|
// for 6 injections, with one step holding a local server for 102.5
|
|
73
|
-
// seconds to answer nothing.
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
timeoutMs:
|
|
77
|
+
// seconds to answer nothing. A viable output budget earns one minute,
|
|
78
|
+
// while consecutive timeouts degrade the plane to its free rules tier
|
|
79
|
+
// instead of repeatedly occupying the endpoint for that full minute.
|
|
80
|
+
timeoutMs: 6e4
|
|
77
81
|
}
|
|
78
82
|
},
|
|
79
83
|
watchdog: { enabled: false },
|
|
@@ -162,6 +166,32 @@ var DEFAULT_SETTINGS = {
|
|
|
162
166
|
prewarm: {
|
|
163
167
|
enabled: true
|
|
164
168
|
},
|
|
169
|
+
panes: {
|
|
170
|
+
/**
|
|
171
|
+
* Off: a plain `clio-coder` performs zero pane-host work, and none of the
|
|
172
|
+
* mux domain even loads. The extension is activated per session with
|
|
173
|
+
* `clio-coder --with-panes`, or durably by setting this to `auto` (guest
|
|
174
|
+
* mode when a pane host is detected). The flag beats the setting in both
|
|
175
|
+
* directions.
|
|
176
|
+
*/
|
|
177
|
+
enabled: "off",
|
|
178
|
+
/** A toast per finished run is noise; a toast per failure is the signal. */
|
|
179
|
+
notifications: "failures",
|
|
180
|
+
/**
|
|
181
|
+
* Tee every dispatched run's display event tail to
|
|
182
|
+
* `<state>/runs/<runId>/events.ndjson`. The live tail is otherwise
|
|
183
|
+
* in-process only, so this is what lets `clio-coder fleet view` follow a
|
|
184
|
+
* run from a second terminal. Written regardless of any pane host being
|
|
185
|
+
* present; turning it off costs the viewer its transcript and nothing else.
|
|
186
|
+
*/
|
|
187
|
+
journal: true,
|
|
188
|
+
yazi: {
|
|
189
|
+
enabled: true,
|
|
190
|
+
mode: "companion",
|
|
191
|
+
profile: "managed",
|
|
192
|
+
followCwd: true
|
|
193
|
+
}
|
|
194
|
+
},
|
|
165
195
|
retry: {
|
|
166
196
|
enabled: true,
|
|
167
197
|
maxRetries: 3,
|
|
@@ -243,8 +273,10 @@ memory:
|
|
|
243
273
|
enabled: true
|
|
244
274
|
everyNTools: 10
|
|
245
275
|
windowSteps: 8
|
|
246
|
-
|
|
247
|
-
|
|
276
|
+
# Covers the answer and any thinking before it. An always-on-thinking 35B
|
|
277
|
+
# spent the measured 400/400 tokens on reasoning, then stopped at length.
|
|
278
|
+
maxTokens: 2000
|
|
279
|
+
timeoutMs: 60000
|
|
248
280
|
|
|
249
281
|
# Opt-in turn-end watchdog. When enabled, a turn that changed the tree is
|
|
250
282
|
# reviewed by one read-only verifier run briefed with the turn's coalesced diff
|
|
@@ -464,6 +496,30 @@ context:
|
|
|
464
496
|
prewarm:
|
|
465
497
|
enabled: true
|
|
466
498
|
|
|
499
|
+
# The pane layer. Off by default: plain \`clio-coder\` does no pane-host work at
|
|
500
|
+
# all. Start \`clio-coder --with-panes\` to activate the extension for one
|
|
501
|
+
# session, or set enabled: auto to activate it whenever a pane host is
|
|
502
|
+
# detected (embedded, a Clio-owned private session, is not implemented yet).
|
|
503
|
+
# The command-line flag beats this setting in both directions. notifications
|
|
504
|
+
# picks which terminal run states raise a toast. journal tees every dispatched
|
|
505
|
+
# run's event tail to <state>/runs/<runId>/events.ndjson so
|
|
506
|
+
# \`clio-coder fleet view <runId> --follow\` can watch a run from a second
|
|
507
|
+
# terminal; it is written regardless of any pane host being present. Journal
|
|
508
|
+
# directories are removed when their run leaves the run ledger ring, and
|
|
509
|
+
# \`clio-coder reset --state\` clears them with the rest of the state root.
|
|
510
|
+
panes:
|
|
511
|
+
enabled: off
|
|
512
|
+
notifications: failures
|
|
513
|
+
journal: true
|
|
514
|
+
# The files pane uses a managed, reproducible Yazi profile by default.
|
|
515
|
+
# profile: user preserves the operator's Yazi configuration and therefore
|
|
516
|
+
# forces one-shot chooser mode, since that profile has no Clio pick chord.
|
|
517
|
+
yazi:
|
|
518
|
+
enabled: true
|
|
519
|
+
mode: companion
|
|
520
|
+
profile: managed
|
|
521
|
+
followCwd: true
|
|
522
|
+
|
|
467
523
|
# Transient provider/stream retry controls for interactive chat.
|
|
468
524
|
# Retryable errors include overloads, rate limits, 5xx responses, network
|
|
469
525
|
# resets, and timeouts. Context overflow uses compaction recovery instead.
|
|
@@ -512,4 +568,4 @@ export {
|
|
|
512
568
|
DEFAULT_SETTINGS,
|
|
513
569
|
DEFAULT_SETTINGS_YAML
|
|
514
570
|
};
|
|
515
|
-
//# sourceMappingURL=chunk-
|
|
571
|
+
//# sourceMappingURL=chunk-GXNLGKAB.js.map
|