@iowarp/clio-coder 0.4.1 → 0.4.3
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 +127 -0
- package/CONTRIBUTING.md +142 -52
- package/README.md +434 -473
- package/SECURITY.md +2 -1
- package/dist/{acp-ZILU3AUO.js → acp-H2NGRPWO.js} +12 -12
- package/dist/{agents-HYWGBGQR.js → agents-TL5LLUQP.js} +56 -55
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-N3QT7CBO.js → auth-E5SW4HMS.js} +23 -21
- package/dist/builtins-IA7V7FUC.js +22 -0
- package/dist/{chunk-7RY5VZPH.js → chunk-2APPQIER.js} +8 -8
- package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
- package/dist/{chunk-JA5QWE4Z.js → chunk-2UG5F4C5.js} +1973 -1664
- package/dist/{chunk-5YHDIDBP.js → chunk-2UH2KFUP.js} +2 -2
- package/dist/{chunk-CTJ4RNAA.js → chunk-2VIKGWFZ.js} +2 -2
- package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
- package/dist/{chunk-GIZNH63R.js → chunk-35MSIRKH.js} +9 -4
- package/dist/chunk-3EBYEESD.js +314 -0
- package/dist/{chunk-J5LZHVIT.js → chunk-3M6DQK6S.js} +113 -35
- package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
- package/dist/{chunk-6FN3E6KX.js → chunk-4O6MANBS.js} +2 -2
- package/dist/chunk-4UVU7BJ5.js +39 -0
- package/dist/{chunk-VKRH2TCS.js → chunk-4WR7VSYB.js} +2 -2
- package/dist/{chunk-BBTJOK6Y.js → chunk-54CBCGIR.js} +5 -5
- package/dist/{chunk-AP73CFDC.js → chunk-5ICU3EUH.js} +2 -2
- package/dist/chunk-5MEZN6CB.js +1334 -0
- package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
- package/dist/{chunk-ABLSQ6JX.js → chunk-64I3JVYM.js} +8 -2
- package/dist/{chunk-AFKWHWXF.js → chunk-6PTFB5VS.js} +39 -22
- package/dist/{chunk-VN3SHNBN.js → chunk-7DICMOS6.js} +2 -2
- package/dist/chunk-7DRAWPTZ.js +360 -0
- package/dist/chunk-7E7I3WLS.js +3762 -0
- package/dist/{chunk-BJGUKIG4.js → chunk-7ZYNNDKC.js} +7 -7
- package/dist/{chunk-XKA2ICR3.js → chunk-AF4YM7Z4.js} +652 -252
- package/dist/{chunk-GVQJ5CCZ.js → chunk-AX2THNSA.js} +12 -12
- package/dist/{chunk-IG7BCQBA.js → chunk-B4OAX3SI.js} +65 -3
- package/dist/{chunk-TD3PGPQA.js → chunk-B4VEBZKF.js} +3 -3
- package/dist/{chunk-74YWRRU5.js → chunk-BEPZRGGU.js} +10 -10
- package/dist/{chunk-FEFIFZTL.js → chunk-CE5AX47J.js} +2 -2
- package/dist/{chunk-UAPGZHYC.js → chunk-DWUOQKRU.js} +25 -11
- package/dist/{chunk-THYWACCR.js → chunk-E3TPLWFX.js} +3 -3
- package/dist/{chunk-7EPLI7VL.js → chunk-EKCHAPYA.js} +2 -2
- package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
- package/dist/{chunk-PJJ6MY27.js → chunk-F5JHEYZM.js} +7 -7
- package/dist/{chunk-6CCS4G3W.js → chunk-FTMGRKEF.js} +3 -3
- package/dist/{chunk-SINK3QR6.js → chunk-G76U63X4.js} +17 -17
- package/dist/{chunk-EIMVLWB3.js → chunk-GHS5EBTQ.js} +64 -9
- package/dist/{chunk-QMXC4JB7.js → chunk-GI7YYQ3F.js} +187 -1419
- package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
- package/dist/{chunk-6HMJX2VU.js → chunk-GWZNEVM2.js} +44 -12
- package/dist/chunk-GYV6VZOC.js +26 -0
- package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
- package/dist/{chunk-UXN6JT4W.js → chunk-HEQY7ZFI.js} +3 -3
- package/dist/{chunk-7PWAODYW.js → chunk-I7XBWTYH.js} +2 -2
- package/dist/{chunk-GCSMB2KY.js → chunk-I7ZPNEJM.js} +145 -102
- package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
- package/dist/{chunk-QTFGO774.js → chunk-IGLP3ODT.js} +29 -16
- package/dist/chunk-IJNZMHLA.js +101 -0
- package/dist/{chunk-BDPT6GTK.js → chunk-INY6HTFL.js} +7 -7
- package/dist/{chunk-PBP4B7XR.js → chunk-IUE3Y34X.js} +2 -2
- package/dist/{chunk-6NJQITNH.js → chunk-IWT4SF4R.js} +6 -3
- package/dist/{chunk-R23Z6K6I.js → chunk-JDAY6FIL.js} +19 -19
- package/dist/chunk-JEQ3XTHC.js +42 -0
- package/dist/{chunk-FSP7CMNU.js → chunk-JGRC33J2.js} +50 -4
- package/dist/{chunk-TVH4ONAM.js → chunk-JKKCYP3C.js} +10 -10
- package/dist/{chunk-HJWWJ6IL.js → chunk-JSC3U7TI.js} +16 -4
- package/dist/{chunk-C537JADH.js → chunk-KK4JZPBQ.js} +19 -141
- package/dist/{chunk-K6BF4U2H.js → chunk-KKOJXO6R.js} +62 -14
- package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
- package/dist/{chunk-6DWBAZ5U.js → chunk-L47TF46W.js} +5 -7
- package/dist/{chunk-HUAS7ITX.js → chunk-LDJG7DW3.js} +91 -42
- package/dist/{chunk-CDNVLKUX.js → chunk-LLDJM5XK.js} +13 -7
- package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
- package/dist/{chunk-Y4CAGMM6.js → chunk-MNJGS2IN.js} +5 -6
- package/dist/{chunk-VKFQTNDV.js → chunk-MUW2BDDH.js} +4 -4
- package/dist/{chunk-E67WX76H.js → chunk-MWUZBSAQ.js} +104 -152
- package/dist/{chunk-OJTRZGR3.js → chunk-N2Z7HLVY.js} +21 -21
- package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
- package/dist/{chunk-FYUN5KZ3.js → chunk-NIQJ66N4.js} +21 -21
- package/dist/{chunk-U2WB7TZS.js → chunk-NMJXSHBJ.js} +97 -85
- package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
- package/dist/{chunk-VEGN6WIQ.js → chunk-O5CVSAG5.js} +3 -3
- package/dist/{chunk-MOPSG2X7.js → chunk-OML5D5V5.js} +8 -8
- package/dist/{chunk-2VG7KLYV.js → chunk-PAJQJ7BS.js} +5816 -3255
- package/dist/{chunk-ZW55JB7N.js → chunk-PUVDKJ2Y.js} +2 -2
- package/dist/{chunk-BTGG6BG2.js → chunk-QWGDJJYJ.js} +158 -19
- package/dist/chunk-R6Q67RJH.js +134 -0
- package/dist/{chunk-ZJLUDYFY.js → chunk-RRNP2ANY.js} +6 -6
- package/dist/{chunk-PVAMAVBB.js → chunk-RSJ25QSL.js} +102 -2
- package/dist/{chunk-NLFAQR7Z.js → chunk-S66XZJOF.js} +3 -23
- package/dist/chunk-SKHCAU7K.js +385 -0
- package/dist/chunk-SZAA6XDG.js +30 -0
- package/dist/{chunk-J4HBWF6Y.js → chunk-TM6LQDI3.js} +131 -28
- package/dist/chunk-UOIZ7DA4.js +41 -0
- package/dist/{chunk-MA3H6DM5.js → chunk-UPZU6GE4.js} +25 -3
- package/dist/{chunk-BWW4HLO4.js → chunk-UXCU4E3T.js} +8 -6
- package/dist/{chunk-N5UK64DP.js → chunk-V2ANDPVT.js} +4 -4
- package/dist/{chunk-AK5XEFVZ.js → chunk-VA5FNYMT.js} +26 -13
- package/dist/{chunk-6VC4OV3Z.js → chunk-VIA6RFQZ.js} +3 -11
- package/dist/{chunk-ZAZB4JMW.js → chunk-VKPAQYEB.js} +27 -8
- package/dist/{chunk-QKIFBZKT.js → chunk-VW6DOEDG.js} +497 -81
- package/dist/{chunk-SCYB3HA4.js → chunk-W6RRQCPQ.js} +63 -19
- package/dist/{chunk-2NM363SV.js → chunk-WBKFA554.js} +10 -10
- package/dist/{chunk-R32CLGZ6.js → chunk-WCXUNS7U.js} +82 -21
- package/dist/{chunk-GPPB3JBE.js → chunk-WRBAGUNF.js} +3 -3
- package/dist/{chunk-IXJT6DCX.js → chunk-XIVNBFZS.js} +85 -30
- package/dist/{chunk-UEDMSP56.js → chunk-XPWWI35G.js} +417 -201
- package/dist/chunk-XRZT5WY5.js +47 -0
- package/dist/{chunk-3QSOM6PA.js → chunk-Y3CBHOR6.js} +2 -2
- package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
- package/dist/{chunk-AKB4GYDL.js → chunk-YQWYVTMC.js} +5 -5
- package/dist/{chunk-6I5ILFOF.js → chunk-ZA4VCIGV.js} +3 -3
- package/dist/{chunk-7OBGU7UB.js → chunk-ZDN3Y73Y.js} +12 -18
- package/dist/{chunk-3I5NY75V.js → chunk-ZWPRK62N.js} +8 -5
- package/dist/cli/index.js +41 -39
- package/dist/{clio-IT3G3VQH.js → clio-CMMK4KRR.js} +9 -9
- package/dist/{code-nav-RK6S7F6E.js → code-nav-MDZNQS33.js} +89 -21
- package/dist/{components-UBWCQSRW.js → components-UCUQ4QXW.js} +4 -4
- package/dist/{config-3QZRWZJF.js → config-SVM5P5YI.js} +131 -84
- package/dist/{configure-FL7Y3KJF.js → configure-LE3IK2TJ.js} +28 -26
- package/dist/{context-5HE7ODYK.js → context-2OHRKS42.js} +69 -64
- package/dist/{context-KYQFRVDC.js → context-E3VC7RX5.js} +15 -11
- package/dist/{context-XNHL75JV.js → context-VNCR7KAG.js} +93 -65
- package/dist/{context-clear-N545L53A.js → context-clear-BW4O37TG.js} +64 -60
- package/dist/context-map-COB37XXN.js +505 -0
- package/dist/{context-working-set-QHKXSV2F.js → context-working-set-VDS25HXZ.js} +19 -18
- package/dist/{dispatch-runner-RGIE5PCT.js → dispatch-runner-5AHT53RF.js} +93 -82
- package/dist/{docs-5NAF6AU7.js → docs-PD3EXDKU.js} +21 -20
- package/dist/{doctor-ZGPEGHIP.js → doctor-WNNVO6FY.js} +48 -47
- package/dist/{eval-GXLL44RD.js → eval-7G7SGAYO.js} +287 -115
- package/dist/{eval-inventory-HBWSWQOK.js → eval-inventory-Y6QRFOH5.js} +4 -4
- package/dist/{evidence-HWLBRH3Q.js → evidence-VD6736FQ.js} +67 -64
- package/dist/{evolve-FTZBMNVW.js → evolve-AL3NGVRL.js} +65 -62
- package/dist/{extensions-VHRBEID7.js → extensions-MOVJ32NM.js} +9 -7
- package/dist/{fleet-CKZHJWZJ.js → fleet-QZHUMAGI.js} +114 -111
- package/dist/{fleet-commands-EXDXBMV6.js → fleet-commands-BAYT5FJZ.js} +10 -10
- package/dist/{fleet-decisions-OTHB6KRL.js → fleet-decisions-IREVMRU4.js} +7 -6
- package/dist/{fleet-graph-YTEZUCUT.js → fleet-graph-YCTT3HTI.js} +22 -19
- package/dist/{fleet-inspect-SS6YMDCK.js → fleet-inspect-QVJTDAVB.js} +58 -55
- package/dist/{fleet-preflight-PBY4VYOM.js → fleet-preflight-25QAFPK4.js} +4 -4
- package/dist/{fleet-validate-KMEM5L3S.js → fleet-validate-5O57AAJ7.js} +26 -23
- package/dist/{fleet-verify-QD5M7E7Q.js → fleet-verify-CPH2W2T6.js} +59 -56
- package/dist/{fleet-view-WAMJYNDT.js → fleet-view-SWBR3VGQ.js} +58 -55
- package/dist/{init-5XQRBOFV.js → init-J477LKZH.js} +82 -79
- package/dist/{interop-34TVO25M.js → interop-3FCM6XLG.js} +11 -11
- package/dist/{library-3QY6KF57.js → library-QUQEIUG6.js} +30 -27
- package/dist/{memory-L4UTIIIW.js → memory-SGGSEP65.js} +67 -64
- package/dist/{models-ZVX3QOWE.js → models-HEKUAXXK.js} +53 -46
- package/dist/{monitor-CEKVSYTS.js → monitor-HKU57TYQ.js} +63 -60
- package/dist/{orchestrator-77BAP6BC.js → orchestrator-VDFAEFAI.js} +1831 -1057
- package/dist/{panes-7STHOAUJ.js → panes-DN2SSFOH.js} +5 -5
- package/dist/{panes-SHAUIRXY.js → panes-TALGNPZT.js} +29 -14
- package/dist/{paths-L7LGY6RN.js → paths-NBMFAIEZ.js} +5 -5
- package/dist/reset-EAJFFJVB.js +344 -0
- package/dist/{resources-74GKTLSF.js → resources-OVKSEFVE.js} +29 -20
- package/dist/{run-HBAUJNNZ.js → run-7DP7ZF2J.js} +120 -115
- package/dist/{share-G3APVLVP.js → share-WML67FT3.js} +32 -27
- package/dist/{skills-35HHUKCR.js → skills-SG662R2K.js} +41 -31
- package/dist/{skills-eval-QN4HSHDC.js → skills-eval-VVZEUU46.js} +78 -77
- package/dist/{skills-inventory-J357J34F.js → skills-inventory-I2E23GET.js} +23 -20
- package/dist/{slash-commands-JZZCQA32.js → slash-commands-S7MBJDQK.js} +40 -36
- package/dist/{steer-XAVHJM22.js → steer-2LQOMCPB.js} +3 -3
- package/dist/{support-U7QOWY26.js → support-CC2UJBJ6.js} +6 -6
- package/dist/{targets-DSM6CY3M.js → targets-4QC3HIEW.js} +54 -54
- package/dist/{terminal-lease-JOPFUVEM.js → terminal-lease-TUHIJ6Y2.js} +5 -5
- package/dist/{tools-MKNWVPBH.js → tools-TFGJICCU.js} +10 -10
- package/dist/{trace-ECQ7TIYZ.js → trace-FXMXUZUF.js} +55 -7
- package/dist/uninstall-5PEVOE5B.js +408 -0
- package/dist/upgrade-M4WXY6KN.js +303 -0
- package/dist/{usage-X52N3IDJ.js → usage-N7ZNVLEM.js} +151 -104
- package/dist/{verifiers-EJTVVSMA.js → verifiers-DJTP4XX6.js} +15 -15
- package/dist/{verify-YJL6XET2.js → verify-RWE4PPEK.js} +9 -9
- package/dist/{web-fetch-MPIFL3LL.js → web-fetch-MPARV2K7.js} +2 -2
- package/dist/{wiki-generate-4NDZTQ4B.js → wiki-generate-C7IQOXSP.js} +89 -86
- package/dist/{with-panes-OBOBFIIR.js → with-panes-4GCGSL7J.js} +53 -257
- package/dist/worker/entry.js +90 -74
- package/docs/README.md +176 -81
- package/docs/{acp.md → architecture/acp.md} +36 -20
- package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
- package/docs/{architecture.md → architecture/architecture.md} +43 -22
- package/docs/{artifact-placement.md → architecture/artifact-placement.md} +27 -23
- package/docs/architecture/artifact-versions.md +90 -0
- package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
- package/docs/{context-engine.md → architecture/context-engine.md} +29 -25
- package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
- package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
- package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
- package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
- package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
- package/docs/{model-catalog.md → architecture/model-catalog.md} +61 -27
- package/docs/{observability.md → architecture/observability.md} +38 -14
- package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
- package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +57 -20
- package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +99 -25
- package/docs/{safety-model.md → architecture/safety-model.md} +35 -20
- package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
- package/docs/architecture/time-conventions.md +125 -0
- package/docs/{trace-store.md → architecture/trace-store.md} +13 -5
- package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
- package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
- package/docs/{built-in-agents.md → guide/built-in-agents.md} +65 -35
- package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +66 -61
- package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -297
- package/docs/guide/configuration-reference.md +1163 -0
- package/docs/{environment-variables.md → guide/environment-variables.md} +33 -28
- package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +6 -3
- package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
- package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +39 -43
- package/docs/{glossary.md → guide/glossary.md} +14 -11
- package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +81 -17
- package/docs/guide/panes-and-files.md +290 -0
- package/docs/{proactive-memory.md → guide/proactive-memory.md} +131 -107
- package/docs/{resource-library.md → guide/resource-library.md} +13 -4
- package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +25 -3
- package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
- package/docs/{troubleshooting.md → guide/troubleshooting.md} +9 -4
- package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +11 -11
- package/docs/{release-cut-checklist.md → history/release-cut-checklist.md} +29 -2
- package/docs/process/development-pipeline.md +152 -0
- package/docs/process/documentation-coverage.md +100 -0
- package/docs/process/documentation-guide.md +187 -0
- package/docs/{eval-runner.md → process/eval-runner.md} +108 -53
- package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
- package/docs/{evolution.md → process/evolution.md} +2 -2
- package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +11 -7
- package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
- package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
- package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
- package/evals/README.md +2 -2
- package/evals/behavioral-model.yaml +3 -2
- package/package.json +10 -8
- package/skills/README.md +52 -41
- package/skills/coding/ast-grep/SKILL.md +102 -31
- package/skills/coding/ast-grep/evals.md +26 -0
- package/skills/coding/coding-standards/SKILL.md +41 -6
- package/skills/coding/coding-standards/evals.md +23 -0
- package/skills/coding/prototype/SKILL.md +88 -29
- package/skills/coding/prototype/evals.md +19 -0
- package/skills/coding/tdd/SKILL.md +81 -54
- package/skills/coding/tdd/evals.md +20 -0
- package/skills/context/context-handoff/SKILL.md +44 -3
- package/skills/context/context-handoff/evals.md +44 -0
- package/skills/context/context-prime/SKILL.md +46 -16
- package/skills/context/context-prime/evals.md +45 -0
- package/skills/git/branch-closeout/SKILL.md +132 -0
- package/skills/git/branch-closeout/evals.md +133 -0
- package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
- package/skills/git/file-ticket/SKILL.md +78 -64
- package/skills/git/file-ticket/assets/issue-template.md +22 -0
- package/skills/git/file-ticket/evals.md +31 -26
- package/skills/git/file-ticket/references/issue-discovery.md +49 -0
- package/skills/git/fix-issue/SKILL.md +88 -65
- package/skills/git/fix-issue/evals.md +35 -31
- package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
- package/skills/git/resolve-merge-conflicts/SKILL.md +101 -52
- package/skills/git/resolve-merge-conflicts/evals.md +52 -25
- package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
- package/skills/git/ship/SKILL.md +103 -67
- package/skills/git/ship/assets/pr-template.md +21 -0
- package/skills/git/ship/evals.md +44 -28
- package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
- package/skills/git/worktree-create/SKILL.md +80 -50
- package/skills/git/worktree-create/evals.md +40 -33
- package/skills/git/worktree-create/references/worktree-setup.md +62 -66
- package/skills/git/worktree-merge/SKILL.md +112 -65
- package/skills/git/worktree-merge/evals.md +42 -34
- package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
- package/skills/meta/clio-coder-dev/SKILL.md +9 -5
- package/skills/meta/clio-coder-dev/evals.md +3 -2
- package/skills/meta/clio-coder-test/SKILL.md +102 -95
- package/skills/meta/clio-coder-test/evals.md +9 -4
- package/skills/meta/clio-coder-test/references/harness.md +100 -124
- package/skills/meta/clio-coder-test/references/test-map.md +77 -50
- package/skills/meta/credentials/SKILL.md +2 -2
- package/skills/meta/find-skills/SKILL.md +2 -2
- package/skills/meta/herdr/SKILL.md +2 -2
- package/skills/meta/skill-craft/SKILL.md +22 -16
- package/skills/planning/archify/SKILL.md +196 -0
- package/skills/planning/archify/evals.md +65 -0
- package/skills/planning/architecture/SKILL.md +62 -13
- package/skills/planning/architecture/evals.md +65 -0
- package/skills/planning/backlog/SKILL.md +131 -15
- package/skills/planning/backlog/evals.md +142 -0
- package/skills/planning/prd/SKILL.md +47 -7
- package/skills/planning/prd/evals.md +54 -0
- package/skills/planning/product-intent/SKILL.md +58 -3
- package/skills/planning/product-intent/evals.md +70 -0
- package/skills/planning/tech-spec/SKILL.md +54 -3
- package/skills/planning/tech-spec/evals.md +73 -0
- package/skills/registry.yaml +70 -62
- package/skills/remote.yaml +13 -0
- package/skills/research/arxiv-literature/SKILL.md +77 -19
- package/skills/research/arxiv-literature/evals.md +50 -0
- package/skills/research/experiment-protocol/SKILL.md +21 -2
- package/skills/research/experiment-protocol/evals.md +23 -0
- package/skills/research/scientific-debugging/SKILL.md +24 -2
- package/skills/research/scientific-debugging/evals.md +18 -0
- package/skills/research/scientific-modernization/SKILL.md +27 -2
- package/skills/research/scientific-modernization/evals.md +27 -0
- package/skills/skill-marketplace.json +97 -62
- package/skills/workflow/cut-it/SKILL.md +66 -6
- package/skills/workflow/cut-it/evals.md +101 -0
- package/skills/workflow/design-council/SKILL.md +118 -28
- package/skills/workflow/design-council/evals.md +161 -0
- package/skills/workflow/grill-me/SKILL.md +87 -11
- package/skills/workflow/grill-me/evals.md +153 -0
- package/skills/workflow/workflow-distiller/SKILL.md +77 -18
- package/skills/workflow/workflow-distiller/evals.md +118 -0
- package/src/cli/args.ts +2 -2
- package/src/cli/bootstrap-generate.ts +1 -1
- package/src/cli/config-inspect.ts +65 -12
- package/src/cli/configure-interop.ts +105 -13
- package/src/cli/configure-oauth.ts +57 -0
- package/src/cli/configure-onboarding.ts +980 -0
- package/src/cli/configure-target.ts +594 -0
- package/src/cli/configure.ts +1082 -532
- package/src/cli/context-map.ts +114 -0
- package/src/cli/context.ts +4 -0
- package/src/cli/docs.ts +22 -14
- package/src/cli/doctor-naming.ts +5 -5
- package/src/cli/doctor-toolchain.ts +3 -3
- package/src/cli/eval.ts +1 -2
- package/src/cli/extensions.ts +2 -1
- package/src/cli/fleet.ts +1 -1
- package/src/cli/index.ts +3 -1
- package/src/cli/internal-dispatch.ts +3 -4
- package/src/cli/lifecycle-presenter.ts +436 -0
- package/src/cli/models.ts +10 -2
- package/src/cli/modes/print.ts +5 -1
- package/src/cli/panes.ts +19 -5
- package/src/cli/reset.ts +228 -106
- package/src/cli/run.ts +9 -4
- package/src/cli/select.ts +664 -0
- package/src/cli/share.ts +5 -1
- package/src/cli/skills-eval.ts +3 -3
- package/src/cli/skills.ts +9 -2
- package/src/cli/targets.ts +5 -6
- package/src/cli/trace.ts +55 -4
- package/src/cli/uninstall.ts +233 -165
- package/src/cli/upgrade.ts +204 -149
- package/src/cli/usage.ts +86 -27
- package/src/cli/validate-model.ts +3 -3
- package/src/cli/wiki-generate.ts +1 -1
- package/src/core/artifact-paths.ts +1 -1
- package/src/core/bash-exec.ts +131 -86
- package/src/core/bus-events.ts +51 -6
- package/src/core/config.ts +61 -1
- package/src/core/defaults.ts +7 -4
- package/src/core/dispatch-outcome.ts +16 -0
- package/src/core/external-diagnostic.ts +44 -0
- package/src/core/gateway-routing.ts +157 -0
- package/src/core/guardrails.ts +10 -49
- package/src/core/prompt-hint.ts +9 -0
- package/src/core/safe-exec.ts +17 -2
- package/src/core/skill-activation.ts +89 -2
- package/src/domains/agents/builtins/architect.md +2 -3
- package/src/domains/agents/builtins/coder.md +3 -2
- package/src/domains/agents/builtins/debugger.md +2 -2
- package/src/domains/agents/builtins/documenter.md +2 -2
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/oracle.md +1 -1
- package/src/domains/agents/builtins/provenance.md +1 -1
- package/src/domains/agents/builtins/researcher.md +1 -1
- package/src/domains/agents/builtins/scout.md +1 -1
- package/src/domains/agents/builtins/tester.md +2 -2
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +1 -1
- package/src/domains/agents/builtins/world-knowledge.md +31 -0
- package/src/domains/agents/catalog.ts +13 -15
- package/src/domains/agents/contract.ts +2 -0
- package/src/domains/agents/extension.ts +23 -1
- package/src/domains/agents/result-contract.ts +70 -0
- package/src/domains/config/keybindings.ts +8 -0
- package/src/domains/context/extension.ts +0 -3
- package/src/domains/context/wiki/map-seed.ts +589 -0
- package/src/domains/context/wiki/plan.ts +2 -2
- package/src/domains/context/working-set/path-index.ts +1 -0
- package/src/domains/dispatch/admission.ts +29 -0
- package/src/domains/dispatch/agent-candidates.ts +10 -0
- package/src/domains/dispatch/budget-envelope.ts +86 -1
- package/src/domains/dispatch/capability-match.ts +11 -0
- package/src/domains/dispatch/capacity-lease.ts +17 -0
- package/src/domains/dispatch/contract.ts +11 -1
- package/src/domains/dispatch/extension.ts +237 -49
- package/src/domains/dispatch/host-verification.ts +435 -39
- package/src/domains/dispatch/intent-requirements.ts +10 -0
- package/src/domains/dispatch/intent.ts +18 -1
- package/src/domains/dispatch/path-scope.ts +235 -24
- package/src/domains/dispatch/run-event-journal.ts +4 -15
- package/src/domains/dispatch/state.ts +2 -3
- package/src/domains/dispatch/transport.ts +45 -21
- package/src/domains/dispatch/types.ts +58 -3
- package/src/domains/dispatch/worker-model-metadata.ts +38 -0
- package/src/domains/eval/artifacts/store.ts +5 -0
- package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
- package/src/domains/eval/metrics/token-stream.ts +201 -31
- package/src/domains/eval/metrics/tracked.ts +40 -4
- package/src/domains/eval/runners/clio-run.ts +5 -2
- package/src/domains/eval/schema/suite.ts +28 -0
- package/src/domains/eval/schema/verdict.ts +2 -2
- package/src/domains/eval/store.ts +8 -1
- package/src/domains/eval/suites/resolve.ts +13 -1
- package/src/domains/eval/suites/run.ts +24 -3
- package/src/domains/evidence/trust-status.ts +10 -1
- package/src/domains/extensions/contract.ts +15 -1
- package/src/domains/extensions/discovery.ts +238 -41
- package/src/domains/extensions/extension.ts +105 -6
- package/src/domains/extensions/index.ts +24 -0
- package/src/domains/extensions/integrity.ts +189 -0
- package/src/domains/extensions/manager.ts +17 -1
- package/src/domains/extensions/resource-path.ts +27 -0
- package/src/domains/extensions/resources.ts +18 -38
- package/src/domains/extensions/snapshot-store.ts +39 -0
- package/src/domains/extensions/snapshot.ts +180 -0
- package/src/domains/extensions/state.ts +385 -57
- package/src/domains/extensions/types.ts +118 -1
- package/src/domains/interop/registry.ts +6 -2
- package/src/domains/interop/types.ts +4 -0
- package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
- package/src/domains/lifecycle/migrations/index.ts +6 -0
- package/src/domains/lifecycle/naming-resources.ts +19 -4
- package/src/domains/lifecycle/naming-yazi.ts +10 -5
- package/src/domains/memory/task-memory-policy.ts +70 -26
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/contract.ts +26 -0
- package/src/domains/middleware/extension.ts +24 -24
- package/src/domains/middleware/hook-receipts.ts +27 -4
- package/src/domains/middleware/hooks-io.ts +65 -32
- package/src/domains/middleware/hooks.ts +64 -0
- package/src/domains/middleware/index.ts +28 -5
- package/src/domains/middleware/marketplace-offer.ts +3 -35
- package/src/domains/middleware/memory-intervention.ts +127 -32
- package/src/domains/middleware/memory-step-endpoint.ts +3 -2
- package/src/domains/middleware/registrations.ts +326 -0
- package/src/domains/middleware/runtime.ts +28 -0
- package/src/domains/middleware/skills-reminder.ts +31 -2
- package/src/domains/middleware/snapshot.ts +20 -7
- package/src/domains/mux/contract.ts +38 -0
- package/src/domains/mux/detect.ts +6 -13
- package/src/domains/mux/index.ts +1 -1
- package/src/domains/mux/operations.ts +44 -5
- package/src/domains/mux/yazi/assets/yazi.toml +2 -2
- package/src/domains/mux/yazi/session.ts +53 -4
- package/src/domains/mux/yazi/theme.ts +117 -17
- package/src/domains/observability/compaction-usage.ts +118 -0
- package/src/domains/observability/contract.ts +10 -11
- package/src/domains/observability/cost.ts +1 -1
- package/src/domains/observability/extension.ts +17 -4
- package/src/domains/observability/out-of-turn-usage.ts +52 -21
- package/src/domains/observability/projection.ts +14 -90
- package/src/domains/observability/trace-store.ts +43 -7
- package/src/domains/prompts/compiler.ts +73 -53
- package/src/domains/prompts/contract.ts +15 -3
- package/src/domains/prompts/extension.ts +97 -9
- package/src/domains/prompts/fragments/identity/clio-worker.md +1 -3
- package/src/domains/prompts/fragments/identity/clio.md +6 -12
- package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
- package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
- package/src/domains/prompts/fragments/operating/contract.md +7 -15
- package/src/domains/prompts/fragments/operating/delegation.md +32 -34
- package/src/domains/prompts/fragments/operating/skills.md +10 -24
- package/src/domains/prompts/fragments/operating/worker.md +1 -8
- package/src/domains/providers/contract.ts +4 -1
- package/src/domains/providers/extension.ts +40 -9
- package/src/domains/providers/index.ts +1 -1
- package/src/domains/providers/model-capabilities.ts +9 -0
- package/src/domains/providers/model-discovery.ts +2 -0
- package/src/domains/providers/model-runtime-capabilities.ts +99 -25
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +699 -114
- package/src/domains/providers/runtime-resolution.ts +31 -0
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
- package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +7 -2
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
- package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
- package/src/domains/providers/support.ts +11 -5
- package/src/domains/providers/target-model-cache.ts +25 -2
- package/src/domains/providers/types/capability-flags.ts +2 -0
- package/src/domains/providers/types/cost-provenance.ts +19 -0
- package/src/domains/providers/types/local-model-quirks.ts +85 -37
- package/src/domains/providers/types/runtime-descriptor.ts +20 -1
- package/src/domains/providers/types/target-descriptor.ts +19 -0
- package/src/domains/resources/index.ts +3 -0
- package/src/domains/resources/skills/install.ts +72 -7
- package/src/domains/resources/skills/loader.ts +23 -19
- package/src/domains/resources/skills/marketplace.ts +63 -11
- package/src/domains/safety/autonomy.ts +15 -0
- package/src/domains/safety/call-target.ts +1 -1
- package/src/domains/safety/index.ts +1 -0
- package/src/domains/safety/loop-detector.ts +7 -4
- package/src/domains/safety/path-policy.ts +1 -1
- package/src/domains/safety/policy-engine.ts +34 -11
- package/src/domains/safety/protected-artifacts.ts +191 -88
- package/src/domains/safety/run-effects.ts +2 -22
- package/src/domains/safety/skill-authority.ts +55 -0
- package/src/domains/session/compaction/compact.ts +72 -22
- package/src/domains/session/entries.ts +6 -0
- package/src/domains/session/task-board.ts +10 -9
- package/src/domains/session/usage.ts +3 -3
- package/src/domains/share/archive.ts +164 -7
- package/src/engine/acp/server.ts +62 -9
- package/src/engine/agent.ts +13 -3
- package/src/engine/ai.ts +26 -8
- package/src/engine/antigravity/subprocess-runtime.ts +386 -120
- package/src/engine/api-registry.ts +3 -0
- package/src/engine/apis/llamacpp-residency.ts +3 -4
- package/src/engine/apis/lmstudio.ts +3 -3
- package/src/engine/apis/ollama-native.ts +6 -6
- package/src/engine/apis/openai-completions.ts +145 -39
- package/src/engine/apis/output-budget.ts +8 -18
- package/src/engine/apis/residency.ts +8 -27
- package/src/engine/external-subprocess.ts +114 -6
- package/src/engine/gemma-channel-filter.ts +19 -0
- package/src/engine/loop-guard.ts +92 -12
- package/src/engine/worker-runtime.ts +40 -11
- package/src/engine/worker-tools.ts +3 -1
- package/src/entry/background-model-metadata.ts +18 -0
- package/src/entry/compaction-prompt.ts +57 -0
- package/src/entry/extension-hook-sources.ts +28 -0
- package/src/entry/extension-reload.ts +309 -0
- package/src/entry/orchestrator.ts +464 -251
- package/src/entry/task-memory-lifecycle.ts +35 -0
- package/src/interactive/application-controller.ts +2 -1
- package/src/interactive/bus-notices.ts +8 -1
- package/src/interactive/chat-loop-messages.ts +16 -17
- package/src/interactive/chat-loop.ts +75 -3
- package/src/interactive/chat-panel.ts +36 -13
- package/src/interactive/chat-renderer.ts +72 -7
- package/src/interactive/cost-overlay.ts +26 -2
- package/src/interactive/dispatch-board.ts +6 -11
- package/src/interactive/footer/widgets.ts +13 -0
- package/src/interactive/interactive-application.ts +39 -4
- package/src/interactive/interactive-input-runtime.ts +4 -0
- package/src/interactive/interactive-presentation.ts +2 -2
- package/src/interactive/interactive-slash-runtime.ts +4 -1
- package/src/interactive/overlays/extensions.ts +9 -1
- package/src/interactive/overlays/help-reference.ts +13 -0
- package/src/interactive/overlays/settings.ts +27 -16
- package/src/interactive/panes-runtime.ts +111 -35
- package/src/interactive/prompt-cache-identity.ts +88 -0
- package/src/interactive/renderers/worker-entry.ts +32 -0
- package/src/interactive/slash-commands.ts +153 -20
- package/src/interactive/stream-pacing-policy.ts +0 -23
- package/src/interactive/theme/labels.ts +19 -13
- package/src/interactive/turn-context.ts +39 -20
- package/src/interactive/turn-recovery.ts +8 -0
- package/src/interactive/turn-runtime.ts +27 -11
- package/src/interactive/turn-state.ts +7 -0
- package/src/interactive/worker-receipts.ts +1 -0
- package/src/interactive/worker-stream.ts +6 -1
- package/src/interactive/yazi-bridge.ts +60 -6
- package/src/tools/agent-tools.ts +30 -1
- package/src/tools/artifact.ts +2 -2
- package/src/tools/ask-user.ts +3 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +52 -22
- package/src/tools/codewiki/code-nav-surface.ts +6 -0
- package/src/tools/codewiki/code-nav.ts +99 -13
- package/src/tools/context/docs-engine.ts +20 -7
- package/src/tools/context/index.ts +59 -21
- package/src/tools/core-bootstrap.ts +28 -6
- package/src/tools/credential-present.ts +1 -2
- package/src/tools/dispatch-arguments.ts +6 -1
- package/src/tools/dispatch-event-text.ts +10 -0
- package/src/tools/dispatch-plan.ts +49 -4
- package/src/tools/dispatch-run-events.ts +1 -1
- package/src/tools/dispatch-runner.ts +12 -0
- package/src/tools/dispatch-schema.ts +338 -0
- package/src/tools/dispatch-types.ts +3 -0
- package/src/tools/dispatch.ts +9 -254
- package/src/tools/ledger.ts +3 -5
- package/src/tools/monitor-surface.ts +5 -13
- package/src/tools/observation.ts +4 -5
- package/src/tools/panes-surface.ts +4 -11
- package/src/tools/panes.ts +4 -2
- package/src/tools/policy.ts +15 -2
- package/src/tools/read.ts +5 -6
- package/src/tools/registry.ts +41 -12
- package/src/tools/result-shaping.ts +18 -14
- package/src/tools/steer-surface.ts +1 -1
- package/src/tools/tasks.ts +1 -1
- package/src/tools/truncate.ts +6 -5
- package/src/tools/verify/surface.ts +6 -12
- package/src/tools/web-fetch-surface.ts +1 -3
- package/src/tools/worker-evidence.ts +3 -1
- package/src/worker/spec-contract.ts +4 -0
- package/dist/builtins-UJLMOVOV.js +0 -17
- package/dist/chunk-5QIAJV2D.js +0 -48
- package/dist/chunk-JZWT5J3Y.js +0 -814
- package/dist/chunk-K7VKOLQQ.js +0 -15
- package/dist/chunk-PMZCIOCJ.js +0 -25
- package/dist/chunk-SUW5DORT.js +0 -819
- package/dist/chunk-UOV2BYIW.js +0 -107
- package/dist/chunk-WR6U3OVP.js +0 -45
- package/dist/chunk-Y45G3AXC.js +0 -1558
- package/dist/reset-EOLM7GVE.js +0 -230
- package/dist/uninstall-N34PCTGJ.js +0 -331
- package/dist/upgrade-H7TOM7YL.js +0 -323
- package/docs/artifact-versions.md +0 -67
- package/docs/development-pipeline.md +0 -121
- package/docs/documentation-coverage.md +0 -46
- package/docs/documentation-guide.md +0 -167
- package/docs/time-conventions.md +0 -101
|
@@ -6,7 +6,7 @@ import type { ToolSurface } from "./lazy-tool.js";
|
|
|
6
6
|
export const monitorToolSurface = {
|
|
7
7
|
name: ToolNames.Monitor,
|
|
8
8
|
description:
|
|
9
|
-
"Inspect
|
|
9
|
+
"Inspect dispatched runs: list enumerates them; status, peek, receipt, and tools observe one run; wait blocks on one run without collecting; collect is the terminal operation for a detached batch or run list, required before final synthesis.",
|
|
10
10
|
parameters: Type.Object({
|
|
11
11
|
run_id: Type.Optional(
|
|
12
12
|
Type.String({ description: "Run id from dispatch output or monitor list; omit with mode=list." }),
|
|
@@ -14,21 +14,13 @@ export const monitorToolSurface = {
|
|
|
14
14
|
mode: Type.Optional(
|
|
15
15
|
StringEnum(["status", "peek", "receipt", "list", "wait", "collect", "tools"], {
|
|
16
16
|
description:
|
|
17
|
-
"
|
|
18
|
-
}),
|
|
19
|
-
),
|
|
20
|
-
batch_id: Type.Optional(Type.String({ description: "Detached batch id from dispatch detach:true (mode=collect)." })),
|
|
21
|
-
run_ids: Type.Optional(
|
|
22
|
-
Type.Array(Type.String(), {
|
|
23
|
-
description:
|
|
24
|
-
"Explicit run ids for mode=collect; a one-element array is also accepted by single-run modes when run_id is absent.",
|
|
17
|
+
"Defaults to status with run_id and list without. tools lists a run's tool calls with outcomes and per-tool totals.",
|
|
25
18
|
}),
|
|
26
19
|
),
|
|
20
|
+
batch_id: Type.Optional(Type.String({ description: "Detached batch id (mode=collect)." })),
|
|
21
|
+
run_ids: Type.Optional(Type.Array(Type.String(), { description: "Run ids to collect (mode=collect)." })),
|
|
27
22
|
timeout_ms: Type.Optional(
|
|
28
|
-
Type.Number({
|
|
29
|
-
description:
|
|
30
|
-
"mode=wait: max ms to block (default 60000, capped at 600000); mode=collect never blocks and ignores this value with a notice.",
|
|
31
|
-
}),
|
|
23
|
+
Type.Number({ description: "mode=wait: max ms to block (default 60000, max 600000); collect never blocks." }),
|
|
32
24
|
),
|
|
33
25
|
}),
|
|
34
26
|
baseActionClass: "read",
|
package/src/tools/observation.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GUARDRAIL_DEFAULTS,
|
|
1
|
+
import { GUARDRAIL_DEFAULTS, resolveGuardrail } from "../core/guardrails.js";
|
|
2
2
|
import type { ToolInvokeOptions, ToolResult } from "./registry.js";
|
|
3
3
|
import { offloadPointer, writeToolOffload } from "./result-shaping.js";
|
|
4
4
|
import { formatSize } from "./truncate.js";
|
|
@@ -64,9 +64,8 @@ export const OBSERVE_SELF_CAPS = {
|
|
|
64
64
|
|
|
65
65
|
// Per-turn observation budget pool. One pool per sessionId:turnId shared by
|
|
66
66
|
// every OBSERVE tool; LRU-pruned so abandoned turns cannot grow the map.
|
|
67
|
-
//
|
|
67
|
+
// The configurable value lives at safety.limits.observationBytesPerTurn.
|
|
68
68
|
export const DEFAULT_OBSERVATION_TURN_BUDGET_BYTES = GUARDRAIL_DEFAULTS.observationTurnBudgetBytes;
|
|
69
|
-
export const OBSERVATION_TURN_BUDGET_ENV = GUARDRAIL_ENV_VARS.observationTurnBudgetBytes;
|
|
70
69
|
const MIN_BUDGET_SLICE_BYTES = 1024;
|
|
71
70
|
const BUDGET_TRACK_LIMIT = 256;
|
|
72
71
|
|
|
@@ -130,8 +129,8 @@ function boundContinuation(next: string | undefined): string | undefined {
|
|
|
130
129
|
return `${Array.from(next).slice(0, MAX_CONTINUATION_CHARS).join("")}…`;
|
|
131
130
|
}
|
|
132
131
|
|
|
133
|
-
function observationTurnBudgetLimit(
|
|
134
|
-
return Math.max(MIN_BUDGET_SLICE_BYTES, resolveGuardrail("observationTurnBudgetBytes"
|
|
132
|
+
function observationTurnBudgetLimit(): number {
|
|
133
|
+
return Math.max(MIN_BUDGET_SLICE_BYTES, resolveGuardrail("observationTurnBudgetBytes"));
|
|
135
134
|
}
|
|
136
135
|
|
|
137
136
|
function budgetKey(options: ToolInvokeOptions | undefined): string | null {
|
|
@@ -15,23 +15,16 @@ import type { ToolSurface } from "./lazy-tool.js";
|
|
|
15
15
|
export const panesToolSurface = {
|
|
16
16
|
name: ToolNames.Panes,
|
|
17
17
|
description:
|
|
18
|
-
"
|
|
18
|
+
"Manage the terminal panes Clio owns beside this session: show focuses a dispatched run's viewer pane, open starts a fixed utility preset (files, logs, or shell; never an arbitrary command) or focuses it when it is already open, close removes a Clio-created pane, list reports the inventory and the pane layer's health.",
|
|
19
19
|
parameters: Type.Object({
|
|
20
|
-
action: StringEnum(["show", "open", "close", "list"], {
|
|
21
|
-
description:
|
|
22
|
-
"show focuses a run's viewer pane; open starts a preset utility pane; close removes a Clio-owned pane; list reports the inventory.",
|
|
23
|
-
}),
|
|
20
|
+
action: StringEnum(["show", "open", "close", "list"], { description: "Pane action." }),
|
|
24
21
|
target: Type.Optional(
|
|
25
22
|
Type.String({
|
|
26
23
|
description:
|
|
27
|
-
'
|
|
28
|
-
}),
|
|
29
|
-
),
|
|
30
|
-
preset: Type.Optional(
|
|
31
|
-
StringEnum([...PANES_PRESET_IDS], {
|
|
32
|
-
description: "action=open: which fixed utility pane to start.",
|
|
24
|
+
'show: an agent id or run id prefix, most recent match wins. close: a pane id, label, agent id, or "all".',
|
|
33
25
|
}),
|
|
34
26
|
),
|
|
27
|
+
preset: Type.Optional(StringEnum([...PANES_PRESET_IDS], { description: "open: which utility pane to start." })),
|
|
35
28
|
}),
|
|
36
29
|
baseActionClass: "read",
|
|
37
30
|
executionMode: "sequential",
|
package/src/tools/panes.ts
CHANGED
|
@@ -78,8 +78,10 @@ export function createPanesTool(deps: PanesToolDeps): ToolSpec {
|
|
|
78
78
|
kind: "ok",
|
|
79
79
|
output:
|
|
80
80
|
result.paneId === null
|
|
81
|
-
? `completed the ${result.label}
|
|
82
|
-
:
|
|
81
|
+
? `completed the ${result.label} pick.`
|
|
82
|
+
: result.existing
|
|
83
|
+
? `the ${result.label} pane was already open and is now focused (${result.paneId}).`
|
|
84
|
+
: `opened the ${result.label} pane (${result.paneId}).`,
|
|
83
85
|
details: { action: "open", preset, paneId: result.paneId },
|
|
84
86
|
};
|
|
85
87
|
}
|
package/src/tools/policy.ts
CHANGED
|
@@ -81,6 +81,13 @@ const DISPATCH_BOUND_TOOLS = new Set<ToolName>([ToolNames.Dispatch, ToolNames.Mo
|
|
|
81
81
|
const INTERACTIVE_BOUND_TOOLS = new Set<ToolName>([ToolNames.AskUser]);
|
|
82
82
|
/** Registered only when a pane host answered detection and the mux is live. */
|
|
83
83
|
const PANES_BOUND_TOOLS = new Set<ToolName>([ToolNames.Panes]);
|
|
84
|
+
/**
|
|
85
|
+
* Registered only when a dispatch bound an agent-ledger port to this registry,
|
|
86
|
+
* which only a worker process does. The session has no peers to coordinate
|
|
87
|
+
* with, so on that surface the tool could only answer "no ledger" and its
|
|
88
|
+
* schema was 444 tokens of every first turn for nothing.
|
|
89
|
+
*/
|
|
90
|
+
const LEDGER_BOUND_TOOLS = new Set<ToolName>([ToolNames.Ledger]);
|
|
84
91
|
/** The RETRIEVE plane, omitted wholesale by a hermetic run (tools/network-policy.ts). */
|
|
85
92
|
const NETWORK_BOUND_TOOLS = new Set<ToolName>([ToolNames.WebFetch]);
|
|
86
93
|
|
|
@@ -89,15 +96,19 @@ export interface BuiltinToolPolicyOptions {
|
|
|
89
96
|
includeDispatchTools?: boolean;
|
|
90
97
|
includeInteractiveTools?: boolean;
|
|
91
98
|
includePanesTools?: boolean;
|
|
99
|
+
includeLedgerTools?: boolean;
|
|
92
100
|
/**
|
|
93
|
-
* Unlike the
|
|
101
|
+
* Unlike the others, this defaults to true: every registry registers
|
|
94
102
|
* the network plane unless a run explicitly asked to be hermetic, so an
|
|
95
103
|
* unset option must keep demanding it.
|
|
96
104
|
*/
|
|
97
105
|
includeNetworkTools?: boolean;
|
|
98
106
|
}
|
|
99
107
|
|
|
100
|
-
function validateBuiltinToolPolicy(
|
|
108
|
+
export function validateBuiltinToolPolicy(
|
|
109
|
+
specs: ReadonlyArray<ToolSpec>,
|
|
110
|
+
options: BuiltinToolPolicyOptions = {},
|
|
111
|
+
): string[] {
|
|
101
112
|
const errors: string[] = [];
|
|
102
113
|
const registered = new Map<ToolName, ToolSpec>();
|
|
103
114
|
|
|
@@ -140,6 +151,7 @@ function validateBuiltinToolPolicy(specs: ReadonlyArray<ToolSpec>, options: Buil
|
|
|
140
151
|
const includeDispatchTools = options.includeDispatchTools ?? false;
|
|
141
152
|
const includeInteractiveTools = options.includeInteractiveTools ?? false;
|
|
142
153
|
const includePanesTools = options.includePanesTools ?? false;
|
|
154
|
+
const includeLedgerTools = options.includeLedgerTools ?? false;
|
|
143
155
|
const includeNetworkTools = options.includeNetworkTools ?? true;
|
|
144
156
|
const required = new Set<ToolName>(Object.values(ToolNames));
|
|
145
157
|
for (const tool of [...required]) {
|
|
@@ -147,6 +159,7 @@ function validateBuiltinToolPolicy(specs: ReadonlyArray<ToolSpec>, options: Buil
|
|
|
147
159
|
if (!includeDispatchTools && DISPATCH_BOUND_TOOLS.has(tool)) required.delete(tool);
|
|
148
160
|
if (!includeInteractiveTools && INTERACTIVE_BOUND_TOOLS.has(tool)) required.delete(tool);
|
|
149
161
|
if (!includePanesTools && PANES_BOUND_TOOLS.has(tool)) required.delete(tool);
|
|
162
|
+
if (!includeLedgerTools && LEDGER_BOUND_TOOLS.has(tool)) required.delete(tool);
|
|
150
163
|
if (!includeNetworkTools && NETWORK_BOUND_TOOLS.has(tool)) required.delete(tool);
|
|
151
164
|
}
|
|
152
165
|
for (const tool of required) {
|
package/src/tools/read.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync, statSync } from "node:fs";
|
|
2
2
|
import { Type } from "typebox";
|
|
3
|
-
import { GUARDRAIL_DEFAULTS,
|
|
3
|
+
import { GUARDRAIL_DEFAULTS, resolveGuardrail } from "../core/guardrails.js";
|
|
4
4
|
import { ToolNames } from "../core/tool-names.js";
|
|
5
5
|
import { finalizeObservation, observationBudgetExhausted, reserveObservation } from "./observation.js";
|
|
6
6
|
import { resolveReadPath } from "./path-utils.js";
|
|
@@ -19,14 +19,13 @@ import { truncateUtf8 } from "./truncate-utf8.js";
|
|
|
19
19
|
// Per-call read cap. Raised from the 16KB per-observation source cap toward
|
|
20
20
|
// pi's 50KB so large source/generated files finish in fewer calls (a 144KB file
|
|
21
21
|
// took ~9 sequential 16KB reads before). The per-turn observation budget
|
|
22
|
-
// (src/tools/observation.ts) still bounds the aggregate.
|
|
23
|
-
//
|
|
22
|
+
// (src/tools/observation.ts) still bounds the aggregate. The configurable
|
|
23
|
+
// value lives at safety.limits.readBytesPerCall.
|
|
24
24
|
export const DEFAULT_READ_MAX_BYTES = GUARDRAIL_DEFAULTS.readMaxBytes;
|
|
25
|
-
export const READ_MAX_BYTES_ENV = GUARDRAIL_ENV_VARS.readMaxBytes;
|
|
26
25
|
const MIN_READ_CAP_BYTES = 1024;
|
|
27
26
|
|
|
28
|
-
export function readMaxBytes(
|
|
29
|
-
return Math.max(MIN_READ_CAP_BYTES, resolveGuardrail("readMaxBytes"
|
|
27
|
+
export function readMaxBytes(): number {
|
|
28
|
+
return Math.max(MIN_READ_CAP_BYTES, resolveGuardrail("readMaxBytes"));
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
export const readTool: ToolSpec = {
|
package/src/tools/registry.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { createHash, randomBytes } from "node:crypto";
|
|
|
2
2
|
import type { TSchema } from "typebox";
|
|
3
3
|
import { isWorkerToolCallCapExceededReason } from "../core/guardrails.js";
|
|
4
4
|
import { HEADLESS_PERMISSION_DENIED_MARKER } from "../core/headless-permission.js";
|
|
5
|
+
import { normalizePromptHint } from "../core/prompt-hint.js";
|
|
5
6
|
import {
|
|
6
7
|
evaluateSkillToolSurface,
|
|
7
8
|
type PendingSkillToolPolicy,
|
|
@@ -49,6 +50,27 @@ export type ToolExecutionMode = "sequential" | "parallel";
|
|
|
49
50
|
export type ToolSourceScope = "core" | "domain";
|
|
50
51
|
export type ToolRetrySafety = "idempotent" | "retry_safe" | "not_retry_safe" | "unknown";
|
|
51
52
|
export type ToolCostLatencyClass = "local_fast" | "local_medium" | "local_slow" | "network" | "agent";
|
|
53
|
+
export type ToolPromptHintRole = "session" | "worker" | "bound-worker";
|
|
54
|
+
|
|
55
|
+
export interface ToolPromptHintVariants {
|
|
56
|
+
session?: string;
|
|
57
|
+
worker?: string;
|
|
58
|
+
boundWorker?: string;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export type ToolPromptHintMetadata = string | ToolPromptHintVariants;
|
|
62
|
+
|
|
63
|
+
/** Resolve one tool's guidance for the exact prompt role being compiled. */
|
|
64
|
+
export function resolveToolPromptHint(
|
|
65
|
+
hint: ToolPromptHintMetadata | undefined,
|
|
66
|
+
role: ToolPromptHintRole,
|
|
67
|
+
): string | undefined {
|
|
68
|
+
if (typeof hint === "string") return normalizePromptHint(hint);
|
|
69
|
+
if (!hint) return undefined;
|
|
70
|
+
const selected =
|
|
71
|
+
role === "session" ? hint.session : role === "bound-worker" ? (hint.boundWorker ?? hint.worker) : hint.worker;
|
|
72
|
+
return normalizePromptHint(selected);
|
|
73
|
+
}
|
|
52
74
|
|
|
53
75
|
export interface ToolSourceInfo {
|
|
54
76
|
path: string;
|
|
@@ -77,12 +99,11 @@ export interface ToolMetadata {
|
|
|
77
99
|
/** Coarse cost/latency bucket for dashboard diagnostics. */
|
|
78
100
|
costLatency: ToolCostLatencyClass;
|
|
79
101
|
/**
|
|
80
|
-
* One sentence of usage guidance rendered
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* need none; the schema description covers them.
|
|
102
|
+
* One sentence of usage guidance rendered when this tool is on the frozen
|
|
103
|
+
* surface. A string applies to every role; variants keep session consent
|
|
104
|
+
* rules out of ordinary and recipe-bound workers. Most tools need none.
|
|
84
105
|
*/
|
|
85
|
-
promptHint?:
|
|
106
|
+
promptHint?: ToolPromptHintMetadata;
|
|
86
107
|
/**
|
|
87
108
|
* How transcript surfaces present this tool's block under `/output default`.
|
|
88
109
|
* Optional: tools that declare nothing fold like every other tool.
|
|
@@ -199,6 +220,8 @@ export interface ToolInvokeOptions {
|
|
|
199
220
|
turnId?: string;
|
|
200
221
|
toolCallId?: string;
|
|
201
222
|
correlationId?: string;
|
|
223
|
+
/** Session-effective ceiling for one tool result, read again before every invocation. */
|
|
224
|
+
toolResultMaxBytes?: number;
|
|
202
225
|
pendingSkillPolicy?: PendingSkillToolPolicy;
|
|
203
226
|
askUserPolicy?: AskUserToolPolicy;
|
|
204
227
|
/** Host-derived display copy for an ask_user round. It has no admission authority. */
|
|
@@ -442,14 +465,14 @@ export function createRegistry(deps: RegistryDeps): ToolRegistry {
|
|
|
442
465
|
const preparedArgs = prepareToolArgs(spec, call.args ?? {});
|
|
443
466
|
resultDisposition = resolveToolResultDisposition(spec, preparedArgs);
|
|
444
467
|
const result = await spec.run(preparedArgs, options);
|
|
445
|
-
const digest = toolResultDigestFor(spec, result, resultDisposition);
|
|
468
|
+
const digest = toolResultDigestFor(spec, result, resultDisposition, options);
|
|
446
469
|
const afterEffects = runToolHook("after_tool", spec, call, decision, options, result, digest);
|
|
447
470
|
const finalResult = shapeToolResult(spec, applyToolResultEffects(result, afterEffects), options, resultDisposition);
|
|
448
471
|
return { kind: "ok", result: finalResult, decision };
|
|
449
472
|
} catch (err) {
|
|
450
473
|
const message = err instanceof Error ? err.message : String(err);
|
|
451
474
|
const result: ToolResult = { kind: "error", message };
|
|
452
|
-
const digest = toolResultDigestFor(spec, result, resultDisposition);
|
|
475
|
+
const digest = toolResultDigestFor(spec, result, resultDisposition, options);
|
|
453
476
|
const afterEffects = runToolHook("after_tool", spec, call, decision, options, result, digest);
|
|
454
477
|
return {
|
|
455
478
|
kind: "ok",
|
|
@@ -504,9 +527,12 @@ export function createRegistry(deps: RegistryDeps): ToolRegistry {
|
|
|
504
527
|
}
|
|
505
528
|
// Stage 1.5, the skill tool surface: a loaded SKILL.md that declares
|
|
506
529
|
// allowed-tools or disallowed-tools narrows the surface until the
|
|
507
|
-
// policy's lifetime ends
|
|
508
|
-
//
|
|
509
|
-
//
|
|
530
|
+
// policy's lifetime ends. Interactively that is the session: the
|
|
531
|
+
// narrowing stays armed across the operator's later turns until a
|
|
532
|
+
// different skill replaces it, `/skill off` clears it, or the session
|
|
533
|
+
// ends. A worker keeps the run-scoped lifetime. Narrowing only blocks;
|
|
534
|
+
// it never grants, and an out-of-surface call blocks terminally
|
|
535
|
+
// instead of parking for confirmation.
|
|
510
536
|
const surfaceViolation = evaluateSkillToolSurface(options?.pendingSkillPolicy, call.tool);
|
|
511
537
|
if (surfaceViolation) {
|
|
512
538
|
const verdict = skillSurfaceBlockedVerdict(decision, call.tool, surfaceViolation);
|
|
@@ -1067,10 +1093,13 @@ function skillSurfaceBlockedVerdict(
|
|
|
1067
1093
|
tool: string,
|
|
1068
1094
|
violation: SkillToolSurfaceViolation,
|
|
1069
1095
|
): Extract<RegistryVerdict, { kind: "blocked" }> {
|
|
1096
|
+
const lifetime = violation.carriedSurface
|
|
1097
|
+
? "The narrowing stays active for the rest of the session, across the operator's later turns, until a different skill replaces it or the operator clears it with /skill off."
|
|
1098
|
+
: "The narrowing ends when the skill policy's turn or worker run ends.";
|
|
1070
1099
|
const reason =
|
|
1071
1100
|
violation.disallowedBy.length > 0
|
|
1072
|
-
? `${tool} is disallowed by the active skill(s) ${violation.disallowedBy.join(", ")} (disallowed-tools).
|
|
1073
|
-
: `${tool} is outside the tool surface declared by the active skill(s) ${violation.skills.join(", ")}. Tools are narrowed to: ${(violation.mergedAllowedTools ?? []).join(", ")} (plus context and ask_user).
|
|
1101
|
+
? `${tool} is disallowed by the active skill(s) ${violation.disallowedBy.join(", ")} (disallowed-tools). ${lifetime} Work within the skill workflow; if it genuinely needs this step, use ask_user when available or state the blocker in your reply.`
|
|
1102
|
+
: `${tool} is outside the tool surface declared by the active skill(s) ${violation.skills.join(", ")}. Tools are narrowed to: ${(violation.mergedAllowedTools ?? []).join(", ")} (plus context and ask_user). ${lifetime} Work within the skill workflow; if it genuinely needs this step, use ask_user when available or state the blocker in your reply.`;
|
|
1074
1103
|
const blocked: SafetyDecision = {
|
|
1075
1104
|
kind: "block",
|
|
1076
1105
|
classification: decision.classification,
|
|
@@ -16,27 +16,30 @@ import {
|
|
|
16
16
|
import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, truncateTail } from "./truncate.js";
|
|
17
17
|
import { byteLength, truncateUtf8 } from "./truncate-utf8.js";
|
|
18
18
|
|
|
19
|
-
// Backstop for tools without an explicit resultSizePolicy.
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
// being cut again and replaced by a generic hint.
|
|
23
|
-
export const DEFAULT_TOOL_RESULT_MAX_BYTES = DEFAULT_MAX_BYTES + 2 * 1024;
|
|
19
|
+
// Backstop for tools without an explicit resultSizePolicy. Session settings may
|
|
20
|
+
// lower or raise this fallback, while explicit per-tool policies remain tighter.
|
|
21
|
+
export const DEFAULT_TOOL_RESULT_MAX_BYTES = DEFAULT_MAX_BYTES;
|
|
24
22
|
const RESULT_TRUNCATION_MARKER = "\n[tool result truncated]";
|
|
25
23
|
const RESULT_OFFLOAD_MAX_BYTES = 10 * 1024 * 1024;
|
|
26
24
|
const TAIL_NOTICE_RESERVE_BYTES = 512;
|
|
27
25
|
export const TOOL_OFFLOAD_MAX_AGE_MS = 14 * 24 * 60 * 60 * 1000;
|
|
28
26
|
|
|
29
|
-
type ToolResultShapeContext = Pick<ToolInvokeOptions, "sessionId" | "toolCallId">;
|
|
27
|
+
type ToolResultShapeContext = Pick<ToolInvokeOptions, "sessionId" | "toolCallId" | "toolResultMaxBytes">;
|
|
30
28
|
|
|
31
29
|
function mergeDetails(details: ToolResultDetails | undefined, resultSize: Record<string, unknown>): ToolResultDetails {
|
|
32
30
|
return { ...(details ?? {}), resultSize };
|
|
33
31
|
}
|
|
34
32
|
|
|
35
|
-
function maxBytesFor(spec: ToolSpec): number {
|
|
33
|
+
function maxBytesFor(spec: ToolSpec, context?: ToolResultShapeContext): number {
|
|
36
34
|
const configured = spec.metadata?.resultSizePolicy?.maxBytes;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
const policyMax =
|
|
36
|
+
typeof configured === "number" && Number.isFinite(configured) && configured > 0
|
|
37
|
+
? Math.floor(configured)
|
|
38
|
+
: DEFAULT_TOOL_RESULT_MAX_BYTES;
|
|
39
|
+
const sessionMax = context?.toolResultMaxBytes;
|
|
40
|
+
return typeof sessionMax === "number" && Number.isFinite(sessionMax) && sessionMax > 0
|
|
41
|
+
? Math.min(policyMax, Math.floor(sessionMax))
|
|
42
|
+
: policyMax;
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
function followUpHint(spec: ToolSpec): string {
|
|
@@ -61,11 +64,12 @@ export function toolResultDigestFor(
|
|
|
61
64
|
spec: ToolSpec,
|
|
62
65
|
result: ToolResult,
|
|
63
66
|
requestedDisposition?: ToolResultDisposition,
|
|
67
|
+
context?: ToolResultShapeContext,
|
|
64
68
|
): ToolResultDigest {
|
|
65
69
|
const text = resultText(result);
|
|
66
|
-
const disposition = normalizeToolResultDisposition(spec, maxBytesFor(spec), requestedDisposition);
|
|
70
|
+
const disposition = normalizeToolResultDisposition(spec, maxBytesFor(spec, context), requestedDisposition);
|
|
67
71
|
if (disposition === null) {
|
|
68
|
-
const projected = shapeLegacyToolResult(spec, result);
|
|
72
|
+
const projected = shapeLegacyToolResult(spec, result, context);
|
|
69
73
|
return legacyToolResultDigest(resultText(projected), { outcome: result.kind });
|
|
70
74
|
}
|
|
71
75
|
const capturedBytes = capturedBytesFor(result, text);
|
|
@@ -298,7 +302,7 @@ function shapeLegacyToolResult(
|
|
|
298
302
|
overflow: "head" | "tail" = "head",
|
|
299
303
|
): ToolResult {
|
|
300
304
|
if (existingOffloadPath(result.details) !== null) return result;
|
|
301
|
-
const maxBytes = maxBytesFor(spec);
|
|
305
|
+
const maxBytes = maxBytesFor(spec, context);
|
|
302
306
|
const offloadMaxBytes = offloadMaxBytesFor(spec);
|
|
303
307
|
const text = result.kind === "ok" ? result.output : result.message;
|
|
304
308
|
const bytes = byteLength(text);
|
|
@@ -410,7 +414,7 @@ export function shapeToolResult(
|
|
|
410
414
|
requestedDisposition?: ToolResultDisposition,
|
|
411
415
|
): ToolResult {
|
|
412
416
|
if (existingDisposition(result.details) !== null) return result;
|
|
413
|
-
const hardMaxBytes = maxBytesFor(spec);
|
|
417
|
+
const hardMaxBytes = maxBytesFor(spec, context);
|
|
414
418
|
const disposition = normalizeToolResultDisposition(spec, hardMaxBytes, requestedDisposition);
|
|
415
419
|
if (disposition === null) return shapeLegacyToolResult(spec, result, context);
|
|
416
420
|
|
|
@@ -6,7 +6,7 @@ import type { ToolSurface } from "./lazy-tool.js";
|
|
|
6
6
|
export const steerToolSurface = {
|
|
7
7
|
name: ToolNames.Steer,
|
|
8
8
|
description:
|
|
9
|
-
"
|
|
9
|
+
"Guide or cancel a running native worker by run id. Only a detached run can be steered from here, because an ordinary dispatch auto-waits; ACP runs have no input channel.",
|
|
10
10
|
parameters: Type.Object({
|
|
11
11
|
run_id: Type.String({ description: "Run id from dispatch output or monitor list." }),
|
|
12
12
|
action: StringEnum(["guide", "cancel"], { description: "What to do." }),
|
package/src/tools/tasks.ts
CHANGED
|
@@ -139,7 +139,7 @@ export function createTasksTool(deps: TasksToolDeps): ToolSpec {
|
|
|
139
139
|
description:
|
|
140
140
|
"Session task board. plan declares a titled board (replaces any prior board); add appends tasks; " +
|
|
141
141
|
"pick moves one operator task uN onto the board; start marks one task active (the current focus); " +
|
|
142
|
-
"done completes a started
|
|
142
|
+
"done completes a task (started or still pending) and requires note as the " +
|
|
143
143
|
"evidence the work actually finished; block parks it with a required reason; drop cancels it; list shows the board. " +
|
|
144
144
|
"Work that did not happen is blocked or dropped, never done.",
|
|
145
145
|
parameters: Type.Object({
|
package/src/tools/truncate.ts
CHANGED
|
@@ -8,12 +8,13 @@ import {
|
|
|
8
8
|
truncateTail as truncatePiTail,
|
|
9
9
|
} from "../engine/truncate.js";
|
|
10
10
|
|
|
11
|
-
// Per-observation source cap. Pi defaults to 50 KiB; Clio
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
11
|
+
// Per-observation source cap. Pi defaults to 50 KiB; Clio allows 64 KiB while
|
|
12
|
+
// its default 192 KiB turn pool remains authoritative across calls. Three full
|
|
13
|
+
// results consume that pool, so a fourth finds it filled. The wrappers below
|
|
14
|
+
// retain only that product-level delta while Pi owns UTF-8-safe head/tail
|
|
15
|
+
// truncation, line limits, grep-line clipping, and size formatting.
|
|
15
16
|
export const DEFAULT_MAX_LINES = 2000;
|
|
16
|
-
export const DEFAULT_MAX_BYTES =
|
|
17
|
+
export const DEFAULT_MAX_BYTES = 64 * 1024;
|
|
17
18
|
export type { TruncationResult };
|
|
18
19
|
export { formatSize, GREP_MAX_LINE_LENGTH, truncateLine };
|
|
19
20
|
|
|
@@ -28,20 +28,14 @@ export const verifyToolSurface = {
|
|
|
28
28
|
parameters: Type.Object({
|
|
29
29
|
check: Type.Optional(
|
|
30
30
|
Type.String({
|
|
31
|
-
description: `
|
|
31
|
+
description: `Check id, package script (${VERIFICATION_SCRIPT_FAMILY_HINT}), or "frontend"; omit to list.`,
|
|
32
32
|
}),
|
|
33
33
|
),
|
|
34
|
-
path: Type.Optional(Type.String({ description: "
|
|
35
|
-
args: Type.Optional(
|
|
36
|
-
|
|
37
|
-
),
|
|
38
|
-
|
|
39
|
-
StringEnum(BROWSER_MODES, { description: "check=frontend: headless browser mode (default auto)." }),
|
|
40
|
-
),
|
|
41
|
-
cwd: Type.Optional(Type.String({ description: "Package-script working directory; ignored by project checks." })),
|
|
42
|
-
timeout_ms: Type.Optional(
|
|
43
|
-
Type.Number({ description: "Package/frontend timeout in ms; project checks use their declared timeoutMs." }),
|
|
44
|
-
),
|
|
34
|
+
path: Type.Optional(Type.String({ description: "frontend: artifact file under the workspace root." })),
|
|
35
|
+
args: Type.Optional(Type.Array(Type.String(), { description: "Package scripts only: arguments after --." })),
|
|
36
|
+
browser: Type.Optional(StringEnum(BROWSER_MODES, { description: "frontend: headless browser mode (default auto)." })),
|
|
37
|
+
cwd: Type.Optional(Type.String({ description: "Package scripts only: working directory." })),
|
|
38
|
+
timeout_ms: Type.Optional(Type.Number({ description: "Package and frontend checks only: timeout in ms." })),
|
|
45
39
|
max_output_bytes: Type.Optional(Type.Number({ description: "Output cap in bytes (default 600000)." })),
|
|
46
40
|
}),
|
|
47
41
|
baseActionClass: "execute",
|
|
@@ -13,9 +13,7 @@ export const webFetchToolSurface = {
|
|
|
13
13
|
timeout_ms: Type.Optional(Type.Number({ description: "Timeout ms (default 30000)." })),
|
|
14
14
|
max_bytes: Type.Optional(Type.Number({ description: "Max bytes returned (default 600000)." })),
|
|
15
15
|
format: Type.Optional(
|
|
16
|
-
Type.String({
|
|
17
|
-
description: "auto (default: HTML is cleaned to Markdown, other content passes through) or raw (no conversion).",
|
|
18
|
-
}),
|
|
16
|
+
Type.String({ description: "auto (default) converts HTML to Markdown; raw returns the body unconverted." }),
|
|
19
17
|
),
|
|
20
18
|
}),
|
|
21
19
|
baseActionClass: "read",
|
|
@@ -9,7 +9,7 @@ import type { ReceiptIntegrityResult } from "../domains/dispatch/receipt-integri
|
|
|
9
9
|
import type { RunReceipt, RunReceiptVerification } from "../domains/dispatch/types.js";
|
|
10
10
|
import { formatTrustAxes, formatTrustSummary } from "../domains/evidence/trust-projection.js";
|
|
11
11
|
import { adaptRunReceiptTrustStatus, type CanonicalTrustStatus } from "../domains/evidence/trust-status.js";
|
|
12
|
-
import { receiptResponseModelIdObservationLabel } from "./dispatch-event-text.js";
|
|
12
|
+
import { receiptGatewayRoutingLabel, receiptResponseModelIdObservationLabel } from "./dispatch-event-text.js";
|
|
13
13
|
|
|
14
14
|
/** Matches a source citation the parent can independently spot-check. */
|
|
15
15
|
const SOURCE_CITATION_PATTERN = /([\w./~-]+):(\d+)/g;
|
|
@@ -145,6 +145,7 @@ export function receiptEvidenceLabels(
|
|
|
145
145
|
}${receipt.projectContext.contentHash !== undefined ? ` sha256:${receipt.projectContext.contentHash}` : ""}`;
|
|
146
146
|
}
|
|
147
147
|
const responseModelIdObservation = receiptResponseModelIdObservationLabel(receipt);
|
|
148
|
+
const gatewayRouting = receiptGatewayRoutingLabel(receipt);
|
|
148
149
|
const budget =
|
|
149
150
|
receipt.budget === undefined
|
|
150
151
|
? []
|
|
@@ -160,6 +161,7 @@ export function receiptEvidenceLabels(
|
|
|
160
161
|
`evidence_verification=${verification.state}/${verification.basis}`,
|
|
161
162
|
`host_verification=${receipt.hostVerification?.status ?? "not_requested"}`,
|
|
162
163
|
...(responseModelIdObservation ? [responseModelIdObservation] : []),
|
|
164
|
+
...(gatewayRouting ? [gatewayRouting] : []),
|
|
163
165
|
...budget,
|
|
164
166
|
...receiptAdmissionLabels(receipt),
|
|
165
167
|
...receiptActivityLabels(receipt, status),
|
|
@@ -213,6 +213,7 @@ const RUNTIME_API_FAMILIES = [
|
|
|
213
213
|
"embeddings-http",
|
|
214
214
|
"claude-agent-sdk",
|
|
215
215
|
"claude-code-subprocess",
|
|
216
|
+
"external-agent-subprocess",
|
|
216
217
|
] as const satisfies ReadonlyArray<RuntimeApiFamily>;
|
|
217
218
|
const RUNTIME_AUTHS = [
|
|
218
219
|
"api-key",
|
|
@@ -412,6 +413,9 @@ function validateCapabilityPatch(value: unknown, source: string): void {
|
|
|
412
413
|
for (const key of ["contextWindow", "maxTokens"] as const) {
|
|
413
414
|
readOptionalNumber(caps, key, source);
|
|
414
415
|
}
|
|
416
|
+
if (caps.thinkingControlRuntime !== undefined) {
|
|
417
|
+
readEnum(caps.thinkingControlRuntime, `${source}.thinkingControlRuntime`, ["lmstudio", "llamacpp"]);
|
|
418
|
+
}
|
|
415
419
|
for (const key of ["toolCallFormat", "thinkingFormat", "structuredOutputs"] as const) {
|
|
416
420
|
readOptionalString(caps, key, source);
|
|
417
421
|
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
BUILTIN_RUNTIMES,
|
|
4
|
-
registerBuiltinRuntimes
|
|
5
|
-
} from "./chunk-QKIFBZKT.js";
|
|
6
|
-
import "./chunk-BWW4HLO4.js";
|
|
7
|
-
import "./chunk-LL4KHSZI.js";
|
|
8
|
-
import "./chunk-NLFAQR7Z.js";
|
|
9
|
-
import "./chunk-O42A54GG.js";
|
|
10
|
-
import "./chunk-VXMFAE2W.js";
|
|
11
|
-
import "./chunk-YXLYO42X.js";
|
|
12
|
-
import "./chunk-3R73A4XB.js";
|
|
13
|
-
export {
|
|
14
|
-
BUILTIN_RUNTIMES,
|
|
15
|
-
registerBuiltinRuntimes
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=builtins-UJLMOVOV.js.map
|
package/dist/chunk-5QIAJV2D.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
typebox_exports
|
|
4
|
-
} from "./chunk-5B2AEOW5.js";
|
|
5
|
-
import {
|
|
6
|
-
ToolNames
|
|
7
|
-
} from "./chunk-K6BSR66V.js";
|
|
8
|
-
import {
|
|
9
|
-
StringEnum
|
|
10
|
-
} from "./chunk-VXMFAE2W.js";
|
|
11
|
-
import {
|
|
12
|
-
init_esm_shims
|
|
13
|
-
} from "./chunk-3R73A4XB.js";
|
|
14
|
-
|
|
15
|
-
// src/tools/monitor-surface.ts
|
|
16
|
-
init_esm_shims();
|
|
17
|
-
var monitorToolSurface = {
|
|
18
|
-
name: ToolNames.Monitor,
|
|
19
|
-
description: "Inspect known dispatched runs. Parent-model mid-run observation requires detach:true because ordinary dispatch auto-waits. wait observes without collecting. collect is the authoritative terminal batch operation; collect detached runs before final synthesis. receipt exposes stored evidence. Receipt integrity, evidence verification, briefing provenance, and project-context provenance are separate fields.",
|
|
20
|
-
parameters: typebox_exports.Object({
|
|
21
|
-
run_id: typebox_exports.Optional(
|
|
22
|
-
typebox_exports.String({ description: "Run id from dispatch output or monitor list; omit with mode=list." })
|
|
23
|
-
),
|
|
24
|
-
mode: typebox_exports.Optional(
|
|
25
|
-
StringEnum(["status", "peek", "receipt", "list", "wait", "collect", "tools"], {
|
|
26
|
-
description: "What to return. Defaults to status when run_id is present and list when it is absent. status, peek, receipt, tools, and wait each observe one run and require a run_id; list takes none. tools answers what a run executed: its tool calls with outcomes, plus per-tool totals from the receipt."
|
|
27
|
-
})
|
|
28
|
-
),
|
|
29
|
-
batch_id: typebox_exports.Optional(typebox_exports.String({ description: "Detached batch id from dispatch detach:true (mode=collect)." })),
|
|
30
|
-
run_ids: typebox_exports.Optional(
|
|
31
|
-
typebox_exports.Array(typebox_exports.String(), {
|
|
32
|
-
description: "Explicit run ids for mode=collect; a one-element array is also accepted by single-run modes when run_id is absent."
|
|
33
|
-
})
|
|
34
|
-
),
|
|
35
|
-
timeout_ms: typebox_exports.Optional(
|
|
36
|
-
typebox_exports.Number({
|
|
37
|
-
description: "mode=wait: max ms to block (default 60000, capped at 600000); mode=collect never blocks and ignores this value with a notice."
|
|
38
|
-
})
|
|
39
|
-
)
|
|
40
|
-
}),
|
|
41
|
-
baseActionClass: "read",
|
|
42
|
-
executionMode: "parallel"
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export {
|
|
46
|
-
monitorToolSurface
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=chunk-5QIAJV2D.js.map
|