@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
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-3R73A4XB.js";
|
|
5
|
+
|
|
6
|
+
// src/core/safe-id.ts
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
var InvalidIdError = class extends Error {
|
|
9
|
+
constructor(message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = "InvalidIdError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
function isSafeId(id) {
|
|
15
|
+
if (id.length === 0) return false;
|
|
16
|
+
if (id.includes("/") || id.includes("\\")) return false;
|
|
17
|
+
if (id.includes("\0")) return false;
|
|
18
|
+
if (id === "." || id === "..") return false;
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
function assertSafeId(id, kind) {
|
|
22
|
+
if (!isSafeId(id)) {
|
|
23
|
+
throw new InvalidIdError(`invalid ${kind} id '${id}': must not contain path separators or path segments`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
InvalidIdError,
|
|
29
|
+
assertSafeId
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=chunk-R346GLFC.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-H7IXIC72.js";
|
|
6
6
|
import {
|
|
7
7
|
isAgentCapabilityClass
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DYJP44XW.js";
|
|
9
9
|
import {
|
|
10
10
|
init_esm_shims
|
|
11
11
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -995,4 +995,4 @@ export {
|
|
|
995
995
|
routingIntentRejection,
|
|
996
996
|
explainRouteDecision
|
|
997
997
|
};
|
|
998
|
-
//# sourceMappingURL=chunk-
|
|
998
|
+
//# sourceMappingURL=chunk-SJ5ZKQ4S.js.map
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
INTEROP_AGENT_KINDS,
|
|
4
4
|
interopAgentKind
|
|
5
5
|
} from "./chunk-IHXBNWMM.js";
|
|
6
|
-
import {
|
|
7
|
-
runCommandVector
|
|
8
|
-
} from "./chunk-B5CSFE7B.js";
|
|
9
6
|
import {
|
|
10
7
|
readSettings,
|
|
11
8
|
updateSettings
|
|
12
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-VFA6GDY5.js";
|
|
10
|
+
import {
|
|
11
|
+
runCommandVector
|
|
12
|
+
} from "./chunk-BBVJUZHB.js";
|
|
13
13
|
import {
|
|
14
14
|
withStateFileLockSync
|
|
15
15
|
} from "./chunk-IKCO5N3L.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
} from "./chunk-APJ265NV.js";
|
|
19
19
|
import {
|
|
20
20
|
clioStateDir
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-BYP5D4HI.js";
|
|
22
22
|
import {
|
|
23
23
|
safeResourceWrite
|
|
24
24
|
} from "./chunk-WEPFGWHJ.js";
|
|
@@ -27,53 +27,6 @@ import {
|
|
|
27
27
|
init_esm_shims
|
|
28
28
|
} from "./chunk-3R73A4XB.js";
|
|
29
29
|
|
|
30
|
-
// src/domains/providers/probe/fingerprint.ts
|
|
31
|
-
init_esm_shims();
|
|
32
|
-
async function fetchWithTimeout(url, timeoutMs) {
|
|
33
|
-
const controller = new AbortController();
|
|
34
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
35
|
-
try {
|
|
36
|
-
return await fetch(url, { signal: controller.signal });
|
|
37
|
-
} catch {
|
|
38
|
-
return null;
|
|
39
|
-
} finally {
|
|
40
|
-
clearTimeout(timer);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
async function fingerprintNativeRuntime(baseUrl) {
|
|
44
|
-
const normalized = baseUrl.replace(/^ws:/u, "http:").replace(/^wss:/u, "https:");
|
|
45
|
-
const trimmed = normalized.endsWith("/") ? normalized.slice(0, -1) : normalized;
|
|
46
|
-
const greeting = await fetchWithTimeout(`${trimmed}/lmstudio-greeting`, 750);
|
|
47
|
-
if (greeting?.ok) {
|
|
48
|
-
try {
|
|
49
|
-
const data = await greeting.json();
|
|
50
|
-
if (data.lmstudio === true) return { runtimeId: "lmstudio", displayName: "LM Studio" };
|
|
51
|
-
} catch {
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
const lmStudioV0 = await fetchWithTimeout(`${trimmed}/api/v0/models`, 750);
|
|
55
|
-
if (lmStudioV0?.ok) {
|
|
56
|
-
try {
|
|
57
|
-
const data = await lmStudioV0.json();
|
|
58
|
-
if (Array.isArray(data.data) && data.data.some((entry) => typeof entry === "object" && entry !== null && "compatibility_type" in entry)) {
|
|
59
|
-
return { runtimeId: "lmstudio", displayName: "LM Studio" };
|
|
60
|
-
}
|
|
61
|
-
} catch {
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
const ollama = await fetchWithTimeout(`${trimmed}/api/version`, 750);
|
|
65
|
-
if (ollama?.ok) {
|
|
66
|
-
try {
|
|
67
|
-
const data = await ollama.json();
|
|
68
|
-
if (typeof data.version === "string") {
|
|
69
|
-
return { runtimeId: "ollama-native", displayName: "Ollama" };
|
|
70
|
-
}
|
|
71
|
-
} catch {
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
30
|
// src/domains/interop/index.ts
|
|
78
31
|
init_esm_shims();
|
|
79
32
|
|
|
@@ -467,7 +420,6 @@ var InteropDomainModule = {
|
|
|
467
420
|
};
|
|
468
421
|
|
|
469
422
|
export {
|
|
470
|
-
fingerprintNativeRuntime,
|
|
471
423
|
INHERITED_PROJECT_CONTEXT,
|
|
472
424
|
delegationEntryForKind,
|
|
473
425
|
interopProposals,
|
|
@@ -478,4 +430,4 @@ export {
|
|
|
478
430
|
detectInteropAgents,
|
|
479
431
|
InteropDomainModule
|
|
480
432
|
};
|
|
481
|
-
//# sourceMappingURL=chunk-
|
|
433
|
+
//# sourceMappingURL=chunk-SP2RXXYO.js.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
PANES_PRESET_IDS
|
|
4
|
+
} from "./chunk-YJX4SHTD.js";
|
|
5
|
+
import {
|
|
6
|
+
typebox_exports
|
|
7
|
+
} from "./chunk-5B2AEOW5.js";
|
|
8
|
+
import {
|
|
9
|
+
ToolNames
|
|
10
|
+
} from "./chunk-K6BSR66V.js";
|
|
11
|
+
import {
|
|
12
|
+
StringEnum
|
|
13
|
+
} from "./chunk-UOSL25KY.js";
|
|
14
|
+
import {
|
|
15
|
+
init_esm_shims
|
|
16
|
+
} from "./chunk-3R73A4XB.js";
|
|
17
|
+
|
|
18
|
+
// src/tools/panes-surface.ts
|
|
19
|
+
init_esm_shims();
|
|
20
|
+
var panesToolSurface = {
|
|
21
|
+
name: ToolNames.Panes,
|
|
22
|
+
description: `Look at, focus, and manage the terminal panes Clio owns beside this session. Use show to bring a dispatched run's live viewer pane to the front when the operator asks to see an agent ("show me the tester"). open starts one of the fixed utility presets; there is no way to run an arbitrary command. close removes a pane Clio created. list reports the current inventory and the pane layer's health.`,
|
|
23
|
+
parameters: typebox_exports.Object({
|
|
24
|
+
action: StringEnum(["show", "open", "close", "list"], {
|
|
25
|
+
description: "show focuses a run's viewer pane; open starts a preset utility pane; close removes a Clio-owned pane; list reports the inventory."
|
|
26
|
+
}),
|
|
27
|
+
target: typebox_exports.Optional(
|
|
28
|
+
typebox_exports.String({
|
|
29
|
+
description: 'action=show: an agent id or run id prefix, most recent match wins. action=close: a pane id, a pane label, an agent id, or "all".'
|
|
30
|
+
})
|
|
31
|
+
),
|
|
32
|
+
preset: typebox_exports.Optional(
|
|
33
|
+
StringEnum([...PANES_PRESET_IDS], {
|
|
34
|
+
description: "action=open: which fixed utility pane to start."
|
|
35
|
+
})
|
|
36
|
+
)
|
|
37
|
+
}),
|
|
38
|
+
baseActionClass: "read",
|
|
39
|
+
executionMode: "sequential"
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export {
|
|
43
|
+
panesToolSurface
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=chunk-SUCTJL45.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
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
|
safeResourceWrite
|
|
13
13
|
} from "./chunk-WEPFGWHJ.js";
|
|
@@ -816,4 +816,4 @@ export {
|
|
|
816
816
|
enabledExtensionResourceRoots,
|
|
817
817
|
ExtensionsDomainModule
|
|
818
818
|
};
|
|
819
|
-
//# sourceMappingURL=chunk-
|
|
819
|
+
//# sourceMappingURL=chunk-SUW5DORT.js.map
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
truncateUtf8
|
|
4
|
+
} from "./chunk-6XLNIQDB.js";
|
|
5
|
+
import {
|
|
6
|
+
init_esm_shims
|
|
7
|
+
} from "./chunk-3R73A4XB.js";
|
|
8
|
+
|
|
9
|
+
// src/domains/dispatch/event-pump.ts
|
|
10
|
+
init_esm_shims();
|
|
11
|
+
var EVENT_TEE_LIMIT = 1024;
|
|
12
|
+
function startDispatchEventPump(source, fold, options = {}) {
|
|
13
|
+
const limit = options.limit ?? EVENT_TEE_LIMIT;
|
|
14
|
+
const pending = [...options.prelude ?? []];
|
|
15
|
+
const waiters = [];
|
|
16
|
+
let finished = false;
|
|
17
|
+
let abandoned = false;
|
|
18
|
+
let dropped = 0;
|
|
19
|
+
const push = (value) => {
|
|
20
|
+
if (abandoned) return;
|
|
21
|
+
const waiter = waiters.shift();
|
|
22
|
+
if (waiter) {
|
|
23
|
+
waiter({ value, done: false });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
pending.push(value);
|
|
27
|
+
while (pending.length > limit) {
|
|
28
|
+
pending.shift();
|
|
29
|
+
dropped += 1;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const end = () => {
|
|
33
|
+
finished = true;
|
|
34
|
+
while (waiters.length > 0) {
|
|
35
|
+
waiters.shift()?.({ value: void 0, done: true });
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const notify = (event) => {
|
|
39
|
+
try {
|
|
40
|
+
options.onEvent?.(event);
|
|
41
|
+
} catch (error) {
|
|
42
|
+
options.onError?.(error);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const done = (async () => {
|
|
46
|
+
try {
|
|
47
|
+
for (const event of options.prelude ?? []) notify(event);
|
|
48
|
+
for await (const event of source) {
|
|
49
|
+
try {
|
|
50
|
+
fold(event);
|
|
51
|
+
} catch (error) {
|
|
52
|
+
options.onError?.(error);
|
|
53
|
+
}
|
|
54
|
+
notify(event);
|
|
55
|
+
push(event);
|
|
56
|
+
}
|
|
57
|
+
} catch (error) {
|
|
58
|
+
options.onError?.(error);
|
|
59
|
+
} finally {
|
|
60
|
+
end();
|
|
61
|
+
}
|
|
62
|
+
})();
|
|
63
|
+
const events = {
|
|
64
|
+
next() {
|
|
65
|
+
if (pending.length > 0) {
|
|
66
|
+
return Promise.resolve({ value: pending.shift(), done: false });
|
|
67
|
+
}
|
|
68
|
+
if (finished || abandoned) return Promise.resolve({ value: void 0, done: true });
|
|
69
|
+
return new Promise((resolve) => {
|
|
70
|
+
waiters.push(resolve);
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
return() {
|
|
74
|
+
abandoned = true;
|
|
75
|
+
pending.length = 0;
|
|
76
|
+
while (waiters.length > 0) {
|
|
77
|
+
waiters.shift()?.({ value: void 0, done: true });
|
|
78
|
+
}
|
|
79
|
+
return Promise.resolve({ value: void 0, done: true });
|
|
80
|
+
},
|
|
81
|
+
[Symbol.asyncIterator]() {
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
return { events, done, droppedEvents: () => dropped };
|
|
86
|
+
}
|
|
87
|
+
var WORKER_OUTPUT_MAX_BYTES = 8192;
|
|
88
|
+
var WORKER_OUTPUT_TRUNCATION_MARKER = "\n[worker output truncated]";
|
|
89
|
+
function isRecord(value) {
|
|
90
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
91
|
+
}
|
|
92
|
+
function assistantTextFromContent(content) {
|
|
93
|
+
if (typeof content === "string") return content;
|
|
94
|
+
if (!Array.isArray(content)) return "";
|
|
95
|
+
return content.map((block) => {
|
|
96
|
+
if (typeof block === "string") return block;
|
|
97
|
+
if (!isRecord(block)) return "";
|
|
98
|
+
return typeof block.text === "string" ? block.text : "";
|
|
99
|
+
}).join("");
|
|
100
|
+
}
|
|
101
|
+
function isDurableAssistantMessage(message) {
|
|
102
|
+
const stopReason = message.stopReason;
|
|
103
|
+
if (stopReason === "toolUse" || stopReason === "error" || stopReason === "aborted" || stopReason === "cancelled") {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
if (!Array.isArray(message.content)) return true;
|
|
107
|
+
return !message.content.some((block) => isRecord(block) && block.type === "toolCall");
|
|
108
|
+
}
|
|
109
|
+
function durableAssistantTextFromEvent(event) {
|
|
110
|
+
if (!isRecord(event) || event.type !== "message_end" || !isRecord(event.message)) return "";
|
|
111
|
+
if (event.message.role !== "assistant" || !isDurableAssistantMessage(event.message)) return "";
|
|
112
|
+
return assistantTextFromContent(event.message.content);
|
|
113
|
+
}
|
|
114
|
+
function boundedOutput(state, text) {
|
|
115
|
+
const bytes = Buffer.byteLength(text, "utf8");
|
|
116
|
+
const bounded = truncateUtf8(text, WORKER_OUTPUT_MAX_BYTES, WORKER_OUTPUT_TRUNCATION_MARKER);
|
|
117
|
+
return { state, text: bounded, bytes, truncated: bounded !== text };
|
|
118
|
+
}
|
|
119
|
+
function createWorkerOutputCapture() {
|
|
120
|
+
let finalText = null;
|
|
121
|
+
let partialText = "";
|
|
122
|
+
let partialBytes = 0;
|
|
123
|
+
let partialStored = 0;
|
|
124
|
+
return {
|
|
125
|
+
observe(event) {
|
|
126
|
+
if (!isRecord(event)) return;
|
|
127
|
+
if (event.type === "message_end") {
|
|
128
|
+
const message = isRecord(event.message) ? event.message : null;
|
|
129
|
+
partialText = "";
|
|
130
|
+
partialBytes = 0;
|
|
131
|
+
partialStored = 0;
|
|
132
|
+
if (message === null || message.role !== "assistant") return;
|
|
133
|
+
if (!isDurableAssistantMessage(message)) return;
|
|
134
|
+
const text = assistantTextFromContent(message.content).trim();
|
|
135
|
+
if (text.length > 0) finalText = text;
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (event.type !== "message_update") return;
|
|
139
|
+
const assistantEvent = isRecord(event.assistantMessageEvent) ? event.assistantMessageEvent : null;
|
|
140
|
+
if (assistantEvent === null || assistantEvent.type !== "text_delta") return;
|
|
141
|
+
const delta = assistantEvent.delta;
|
|
142
|
+
if (typeof delta !== "string" || delta.length === 0) return;
|
|
143
|
+
partialBytes += Buffer.byteLength(delta, "utf8");
|
|
144
|
+
if (partialStored < WORKER_OUTPUT_MAX_BYTES) {
|
|
145
|
+
partialText += delta;
|
|
146
|
+
partialStored += Buffer.byteLength(delta, "utf8");
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
snapshot() {
|
|
150
|
+
if (partialBytes > 0 && partialText.trim().length > 0) {
|
|
151
|
+
const bounded = truncateUtf8(partialText.trim(), WORKER_OUTPUT_MAX_BYTES, WORKER_OUTPUT_TRUNCATION_MARKER);
|
|
152
|
+
return {
|
|
153
|
+
state: "partial",
|
|
154
|
+
text: bounded,
|
|
155
|
+
bytes: partialBytes,
|
|
156
|
+
truncated: bounded !== partialText.trim() || partialBytes > partialStored
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
if (finalText !== null) return boundedOutput("final", finalText);
|
|
160
|
+
return void 0;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// src/domains/dispatch/admission-error.ts
|
|
166
|
+
init_esm_shims();
|
|
167
|
+
var AdmissionCanceledError = class extends Error {
|
|
168
|
+
code = "admission_canceled";
|
|
169
|
+
constructor(message = "dispatch: admission canceled before a capacity slot opened") {
|
|
170
|
+
super(message);
|
|
171
|
+
this.name = "AdmissionCanceledError";
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
export {
|
|
176
|
+
EVENT_TEE_LIMIT,
|
|
177
|
+
startDispatchEventPump,
|
|
178
|
+
WORKER_OUTPUT_MAX_BYTES,
|
|
179
|
+
durableAssistantTextFromEvent,
|
|
180
|
+
createWorkerOutputCapture,
|
|
181
|
+
AdmissionCanceledError
|
|
182
|
+
};
|
|
183
|
+
//# sourceMappingURL=chunk-T56WDKA5.js.map
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-3R73A4XB.js";
|
|
5
|
+
|
|
6
|
+
// src/domains/safety/call-target.ts
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
|
|
9
|
+
// src/domains/safety/redaction.ts
|
|
10
|
+
init_esm_shims();
|
|
11
|
+
function isPlainObject(value) {
|
|
12
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
13
|
+
}
|
|
14
|
+
var SECRET_KEY_RE = /(?:api[-_]?key|access[-_]?key|auth(?:orization)?|credential|password|private[-_]?key|secret|token)/iu;
|
|
15
|
+
var ENV_KEY_RE = /^env(?:ironment)?$/iu;
|
|
16
|
+
var SECRET_STRING_RE = /(https?:\/\/[^\s/@]+:)[^\s/@]+@/giu;
|
|
17
|
+
var SECRET_URL_PARAM_RE = /([?&](?:api[-_]?key|access[-_]?token|auth(?:orization)?|credential|password|secret|token)[^=\s]*=)[^&#\s]+/giu;
|
|
18
|
+
var SECRET_ASSIGNMENT_RE = /(?<![A-Z0-9_])((?:[A-Z0-9_]*(?:ACCESS|API|AUTH|CREDENTIAL|KEY|PASS(?:WORD)?|PRIVATE|SECRET|TOKEN)[A-Z0-9_]*)=)[^\s;&|]+/giu;
|
|
19
|
+
var SECRET_FLAG_RE = /(--?(?:[a-z0-9-]*(?:api[-_]?key|access[-_]?token|auth(?:orization)?|credential|password|secret|token)[a-z0-9-]*))(=|\s+)([^\s;&|]+)/giu;
|
|
20
|
+
function redactSecretString(value) {
|
|
21
|
+
return value.replace(SECRET_STRING_RE, "$1[redacted]@").replace(SECRET_URL_PARAM_RE, "$1[redacted]").replace(SECRET_ASSIGNMENT_RE, "$1[redacted]").replace(SECRET_FLAG_RE, "$1$2[redacted]");
|
|
22
|
+
}
|
|
23
|
+
function isSecretArgKey(key) {
|
|
24
|
+
return SECRET_KEY_RE.test(key);
|
|
25
|
+
}
|
|
26
|
+
function isEnvironmentArgKey(key) {
|
|
27
|
+
return ENV_KEY_RE.test(key);
|
|
28
|
+
}
|
|
29
|
+
function redactEnvironmentValue(value, depth) {
|
|
30
|
+
if (depth > 8) return "[redacted nested values]";
|
|
31
|
+
if (typeof value === "string") return "[redacted]";
|
|
32
|
+
if (Array.isArray(value)) return value.map((item) => redactEnvironmentValue(item, depth + 1));
|
|
33
|
+
if (!isPlainObject(value)) return value;
|
|
34
|
+
const out = {};
|
|
35
|
+
for (const [childKey, childValue] of Object.entries(value)) {
|
|
36
|
+
out[childKey] = redactEnvironmentValue(childValue, depth + 1);
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
function redactToolArgs(value, key = "", depth = 0) {
|
|
41
|
+
if (isSecretArgKey(key)) return "[redacted]";
|
|
42
|
+
if (isEnvironmentArgKey(key)) return redactEnvironmentValue(value, depth);
|
|
43
|
+
if (typeof value === "string") return redactSecretString(value);
|
|
44
|
+
if (depth > 8) return "[redacted nested values]";
|
|
45
|
+
if (Array.isArray(value)) return value.map((item) => redactToolArgs(item, key, depth + 1));
|
|
46
|
+
if (!isPlainObject(value)) return value;
|
|
47
|
+
const out = {};
|
|
48
|
+
for (const [childKey, childValue] of Object.entries(value)) {
|
|
49
|
+
out[childKey] = redactToolArgs(childValue, childKey, depth + 1);
|
|
50
|
+
}
|
|
51
|
+
return out;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// src/domains/safety/call-target.ts
|
|
55
|
+
var ESC_CHAR = String.fromCharCode(27);
|
|
56
|
+
var BEL_CHAR = String.fromCharCode(7);
|
|
57
|
+
var OSC_PATTERN = new RegExp(`${ESC_CHAR}\\][\\s\\S]*?(?:${BEL_CHAR}|${ESC_CHAR}\\\\|$)`, "g");
|
|
58
|
+
var CSI_PATTERN = new RegExp(`${ESC_CHAR}\\[[0-9;?]*[0-9A-Za-z]`, "g");
|
|
59
|
+
function sanitizeForDisplay(value) {
|
|
60
|
+
const stripped = value.replace(OSC_PATTERN, "").replace(CSI_PATTERN, "");
|
|
61
|
+
let out = "";
|
|
62
|
+
for (const ch of stripped) {
|
|
63
|
+
const code = ch.codePointAt(0) ?? 0;
|
|
64
|
+
out += code < 32 || code === 127 ? " " : ch;
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
function oneLine(value) {
|
|
69
|
+
return value.replace(/\s+/g, " ").trim();
|
|
70
|
+
}
|
|
71
|
+
var DISPLAY_TAB_WIDTH = 4;
|
|
72
|
+
var CONTROL_BYTE_PLACEHOLDER = "\xB7";
|
|
73
|
+
function sanitizeMultilineDisplayText(value) {
|
|
74
|
+
const escapesStripped = value.replace(OSC_PATTERN, "").replace(CSI_PATTERN, "");
|
|
75
|
+
let neutralized = escapesStripped.length !== value.length;
|
|
76
|
+
const stripped = escapesStripped.replace(/\r\n/g, "\n");
|
|
77
|
+
let tabsExpanded = false;
|
|
78
|
+
let out = "";
|
|
79
|
+
for (const ch of stripped) {
|
|
80
|
+
if (ch === "\n") {
|
|
81
|
+
out += ch;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (ch === " ") {
|
|
85
|
+
out += " ".repeat(DISPLAY_TAB_WIDTH);
|
|
86
|
+
tabsExpanded = true;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const code = ch.codePointAt(0) ?? 0;
|
|
90
|
+
if (code < 32 || code === 127) {
|
|
91
|
+
out += CONTROL_BYTE_PLACEHOLDER;
|
|
92
|
+
neutralized = true;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
out += ch;
|
|
96
|
+
}
|
|
97
|
+
return { text: out, neutralized, tabsExpanded };
|
|
98
|
+
}
|
|
99
|
+
function sanitizeCallTargetText(value) {
|
|
100
|
+
return oneLine(sanitizeForDisplay(value));
|
|
101
|
+
}
|
|
102
|
+
var CALL_ACTION_OBJECT_MAX_CHARS = 64;
|
|
103
|
+
var CALL_TARGET_MAX_CHARS = 120;
|
|
104
|
+
var CALL_ACTION_VOCABULARY = {
|
|
105
|
+
read: { verb: "reading", field: "path" },
|
|
106
|
+
edit: { verb: "editing", field: "path" },
|
|
107
|
+
write: { verb: "writing", field: "path" },
|
|
108
|
+
ls: { verb: "listing", field: "path" },
|
|
109
|
+
bash: { verb: "running", field: "command" },
|
|
110
|
+
grep: { verb: "searching", field: "pattern" },
|
|
111
|
+
find: { verb: "finding", field: "pattern" },
|
|
112
|
+
web_fetch: { verb: "fetching", field: "url" },
|
|
113
|
+
git: { verb: "git", field: "op" },
|
|
114
|
+
verify: { verb: "verifying", field: "check" },
|
|
115
|
+
code_nav: { verb: "navigating", field: "query" },
|
|
116
|
+
context: { verb: "context", field: "scope" },
|
|
117
|
+
artifact: { verb: "writing", field: "kind" },
|
|
118
|
+
monitor: { verb: "monitoring", field: "run_id" },
|
|
119
|
+
steer: { verb: "steering", field: "run_id" },
|
|
120
|
+
tasks: { verb: "tasks", field: "action" },
|
|
121
|
+
dispatch: { verb: "dispatching", field: "agent" },
|
|
122
|
+
// ACP tool kinds. A peer names its own argument fields, so these rely on
|
|
123
|
+
// the shared allowlist below rather than on a field this side can predict.
|
|
124
|
+
execute: { verb: "running", field: "command" },
|
|
125
|
+
search: { verb: "searching", field: "query" },
|
|
126
|
+
fetch: { verb: "fetching", field: "url" },
|
|
127
|
+
delete: { verb: "deleting", field: "path" },
|
|
128
|
+
move: { verb: "moving", field: "path" },
|
|
129
|
+
think: { verb: "thinking", field: "" }
|
|
130
|
+
};
|
|
131
|
+
var CALL_ACTION_OBJECT_FIELDS = ["path", "file_path", "command", "pattern", "query", "url"];
|
|
132
|
+
var CALL_TARGET_FIELDS = {
|
|
133
|
+
read: ["path", "offset", "limit", "tail"],
|
|
134
|
+
grep: ["pattern", "path", "mode", "glob", "ignore_case", "literal", "context", "limit", "include_ignored"],
|
|
135
|
+
find: ["pattern", "path", "order", "limit", "include_ignored"],
|
|
136
|
+
ls: ["path", "limit"],
|
|
137
|
+
code_nav: ["mode", "query", "limit"],
|
|
138
|
+
context: ["scope", "query", "name", "limit", "ref", "include_tree"],
|
|
139
|
+
credential_present: ["name", "source", "file"],
|
|
140
|
+
write: ["path"],
|
|
141
|
+
edit: ["path"],
|
|
142
|
+
bash: ["command", "cwd", "timeout_ms", "output_policy"],
|
|
143
|
+
git: ["op", "path", "cached", "stat", "name_only", "limit", "cwd", "timeout_ms", "max_output_bytes"],
|
|
144
|
+
verify: ["check", "path", "browser", "cwd", "timeout_ms", "max_output_bytes"],
|
|
145
|
+
dispatch: [
|
|
146
|
+
"list",
|
|
147
|
+
"mode",
|
|
148
|
+
"agent",
|
|
149
|
+
"target",
|
|
150
|
+
"model",
|
|
151
|
+
"node",
|
|
152
|
+
"autonomy",
|
|
153
|
+
"tool_profile",
|
|
154
|
+
"thinking_level",
|
|
155
|
+
"detach",
|
|
156
|
+
"timeout_ms"
|
|
157
|
+
],
|
|
158
|
+
monitor: ["run_id", "mode"],
|
|
159
|
+
steer: ["run_id", "action"],
|
|
160
|
+
tasks: ["action", "id"],
|
|
161
|
+
ledger: ["action", "kind", "path", "line", "target", "passed", "since"],
|
|
162
|
+
web_fetch: ["url", "method", "timeout_ms", "max_bytes", "format"],
|
|
163
|
+
ask_user: ["action", "mode", "max_rounds", "exposure"],
|
|
164
|
+
artifact: ["kind", "path", "title"],
|
|
165
|
+
// ACP tool kinds use only fields whose meaning the protocol defines.
|
|
166
|
+
execute: ["command", "cwd"],
|
|
167
|
+
search: ["query", "path"],
|
|
168
|
+
fetch: ["url", "method"],
|
|
169
|
+
delete: ["path"],
|
|
170
|
+
move: ["path", "target"]
|
|
171
|
+
};
|
|
172
|
+
function boundActionObject(value) {
|
|
173
|
+
if (typeof value !== "string") return null;
|
|
174
|
+
const clean = sanitizeCallTargetText(redactSecretString(value));
|
|
175
|
+
if (clean.length === 0) return null;
|
|
176
|
+
if (clean.length <= CALL_ACTION_OBJECT_MAX_CHARS) return { object: clean, truncated: false };
|
|
177
|
+
return { object: clean.slice(0, CALL_ACTION_OBJECT_MAX_CHARS), truncated: true };
|
|
178
|
+
}
|
|
179
|
+
function describeCallAction(tool, args) {
|
|
180
|
+
const known = CALL_ACTION_VOCABULARY[tool];
|
|
181
|
+
const candidates = known?.field ? [known.field, ...CALL_ACTION_OBJECT_FIELDS] : [...CALL_ACTION_OBJECT_FIELDS];
|
|
182
|
+
let bounded = null;
|
|
183
|
+
if (args) {
|
|
184
|
+
for (const field of candidates) {
|
|
185
|
+
if (isSecretArgKey(field)) continue;
|
|
186
|
+
bounded = boundActionObject(args[field]);
|
|
187
|
+
if (bounded !== null) break;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (known === void 0 && bounded === null) return null;
|
|
191
|
+
const verb = known?.verb ?? "calling";
|
|
192
|
+
if (bounded === null) return { verb };
|
|
193
|
+
return { verb, object: bounded.object, ...bounded.truncated ? { truncated: true } : {} };
|
|
194
|
+
}
|
|
195
|
+
function renderAllowedTargetValue(value) {
|
|
196
|
+
if (typeof value === "string") {
|
|
197
|
+
const rendered = sanitizeCallTargetText(redactSecretString(value));
|
|
198
|
+
return rendered.length > 0 ? rendered : null;
|
|
199
|
+
}
|
|
200
|
+
if (typeof value === "number" && Number.isFinite(value)) return String(value);
|
|
201
|
+
if (typeof value === "boolean") return String(value);
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
function countLabel(count, singular, plural) {
|
|
205
|
+
return `${count} ${count === 1 ? singular : plural}`;
|
|
206
|
+
}
|
|
207
|
+
function summarizeUnlistedTargetValue(value) {
|
|
208
|
+
if (typeof value === "string") {
|
|
209
|
+
return `<string ${countLabel(Buffer.byteLength(value, "utf8"), "byte", "bytes")}>`;
|
|
210
|
+
}
|
|
211
|
+
if (Array.isArray(value)) return `<array ${countLabel(value.length, "item", "items")}>`;
|
|
212
|
+
if (value !== null && typeof value === "object") {
|
|
213
|
+
return `<object ${countLabel(Object.keys(value).length, "field", "fields")}>`;
|
|
214
|
+
}
|
|
215
|
+
if (value === null) return "<null 0 values>";
|
|
216
|
+
if (typeof value === "undefined") return "<undefined 0 values>";
|
|
217
|
+
return `<${typeof value} 1 value>`;
|
|
218
|
+
}
|
|
219
|
+
function targetFieldName(value) {
|
|
220
|
+
return sanitizeCallTargetText(value).slice(0, 32) || "field";
|
|
221
|
+
}
|
|
222
|
+
function describeCallTarget(tool, args) {
|
|
223
|
+
if (!args) return "";
|
|
224
|
+
const allowedFields = CALL_TARGET_FIELDS[tool] ?? [];
|
|
225
|
+
const allowed = new Set(allowedFields);
|
|
226
|
+
const parts = [];
|
|
227
|
+
for (const field of allowedFields) {
|
|
228
|
+
if (!(field in args)) continue;
|
|
229
|
+
if (isSecretArgKey(field)) {
|
|
230
|
+
parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(args[field])}`);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const rendered = renderAllowedTargetValue(args[field]);
|
|
234
|
+
if (rendered === null) {
|
|
235
|
+
parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(args[field])}`);
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
parts.push(parts.length === 0 ? rendered : `${targetFieldName(field)}=${rendered}`);
|
|
239
|
+
}
|
|
240
|
+
for (const [field, value] of Object.entries(args)) {
|
|
241
|
+
if (allowed.has(field)) continue;
|
|
242
|
+
parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(value)}`);
|
|
243
|
+
}
|
|
244
|
+
return sanitizeCallTargetText(parts.join(" \xB7 ")).slice(0, CALL_TARGET_MAX_CHARS);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export {
|
|
248
|
+
redactSecretString,
|
|
249
|
+
redactToolArgs,
|
|
250
|
+
sanitizeMultilineDisplayText,
|
|
251
|
+
sanitizeCallTargetText,
|
|
252
|
+
describeCallAction,
|
|
253
|
+
describeCallTarget
|
|
254
|
+
};
|
|
255
|
+
//# sourceMappingURL=chunk-TVHHYFHE.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-5B2AEOW5.js";
|
|
5
5
|
import {
|
|
6
6
|
ToolNames
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-K6BSR66V.js";
|
|
8
8
|
import {
|
|
9
9
|
StringEnum
|
|
10
10
|
} from "./chunk-UOSL25KY.js";
|
|
@@ -45,4 +45,4 @@ var monitorToolSurface = {
|
|
|
45
45
|
export {
|
|
46
46
|
monitorToolSurface
|
|
47
47
|
};
|
|
48
|
-
//# sourceMappingURL=chunk-
|
|
48
|
+
//# sourceMappingURL=chunk-TZ3SGWZZ.js.map
|