@iowarp/clio-coder 0.4.3 → 0.4.4
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 +63 -0
- package/README.md +1 -1
- package/dist/{acp-H2NGRPWO.js → acp-WNAYYF4F.js} +4 -5
- package/dist/{agents-TL5LLUQP.js → agents-3OKXHLOI.js} +33 -31
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-E5SW4HMS.js → auth-VKNNMGPU.js} +10 -11
- package/dist/{builtins-IA7V7FUC.js → builtins-WGALA46I.js} +4 -4
- package/dist/{chunk-F5JHEYZM.js → chunk-23L32XTI.js} +10 -7
- package/dist/{chunk-DWUOQKRU.js → chunk-25QBEXRS.js} +2 -2
- package/dist/{chunk-LLDJM5XK.js → chunk-26QSH3EJ.js} +2 -2
- package/dist/{chunk-N2Z7HLVY.js → chunk-2ASED4PZ.js} +10 -10
- package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
- package/dist/chunk-2DSOYNFC.js +108 -0
- package/dist/{chunk-LDJG7DW3.js → chunk-2ZSONWVL.js} +4 -4
- package/dist/{chunk-GI7YYQ3F.js → chunk-36CT5VVL.js} +324 -41
- package/dist/{chunk-4UVU7BJ5.js → chunk-3GY4F45V.js} +2 -2
- package/dist/{chunk-PUVDKJ2Y.js → chunk-3ODX73FK.js} +3 -5
- package/dist/{chunk-IUE3Y34X.js → chunk-3UNOLWNZ.js} +2 -2
- package/dist/{chunk-6PTFB5VS.js → chunk-3UUXNFEX.js} +8 -4
- package/dist/{chunk-2APPQIER.js → chunk-4M6Z5QVF.js} +4 -4
- package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
- package/dist/{chunk-JGRC33J2.js → chunk-54X7T7DK.js} +12 -3
- package/dist/{chunk-YQWYVTMC.js → chunk-5636DCO5.js} +4 -4
- package/dist/{chunk-7E7I3WLS.js → chunk-57XXR6DR.js} +23 -22
- package/dist/{chunk-7ZYNNDKC.js → chunk-5TUB6SLS.js} +2 -2
- package/dist/{chunk-VW6DOEDG.js → chunk-6OSVSQL5.js} +11 -2
- package/dist/{chunk-L47TF46W.js → chunk-6PAZTBPA.js} +14 -2
- package/dist/{chunk-XIVNBFZS.js → chunk-6Q3CYFD3.js} +34 -16
- package/dist/{chunk-RSJ25QSL.js → chunk-6QOTUPRG.js} +155 -36
- package/dist/{chunk-JKKCYP3C.js → chunk-6UINWWS6.js} +10 -4
- package/dist/{chunk-WBKFA554.js → chunk-72YIHOZQ.js} +2 -2
- package/dist/{chunk-PAJQJ7BS.js → chunk-75W7L2E2.js} +246 -697
- package/dist/{chunk-RRNP2ANY.js → chunk-7UGL4MB5.js} +4 -4
- package/dist/{chunk-EKCHAPYA.js → chunk-AUPNRN7C.js} +2 -2
- package/dist/{chunk-ZDN3Y73Y.js → chunk-BJVFZO5U.js} +6 -48
- package/dist/{chunk-IWT4SF4R.js → chunk-CUSRQKPU.js} +64 -2
- package/dist/{chunk-SKHCAU7K.js → chunk-DQOVN6KV.js} +3 -2
- package/dist/{chunk-ZWPRK62N.js → chunk-DT3LWJOB.js} +4 -4
- package/dist/chunk-DXKJURES.js +671 -0
- package/dist/{chunk-BEPZRGGU.js → chunk-EL24TAU4.js} +2 -2
- package/dist/{chunk-OML5D5V5.js → chunk-ELWDPP3Y.js} +5 -5
- package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
- package/dist/chunk-EXLD33WO.js +381 -0
- package/dist/{chunk-IJNZMHLA.js → chunk-FEAXX7B6.js} +2 -2
- package/dist/{chunk-TM6LQDI3.js → chunk-FFUPXJC4.js} +74 -323
- package/dist/chunk-GX5WYQO4.js +59 -0
- package/dist/chunk-I2DWJ4GM.js +390 -0
- package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
- package/dist/chunk-IRXAATOX.js +539 -0
- package/dist/chunk-IXIY2H4R.js +44 -0
- package/dist/{chunk-KK4JZPBQ.js → chunk-IZXGRF7P.js} +76 -10
- package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
- package/dist/{chunk-INY6HTFL.js → chunk-JEIYHLOR.js} +2 -2
- package/dist/{chunk-MUW2BDDH.js → chunk-JQLNNIKT.js} +2 -2
- package/dist/{chunk-XPWWI35G.js → chunk-JSD46VO2.js} +19 -8
- package/dist/{chunk-VA5FNYMT.js → chunk-JT2RFCC5.js} +39 -2
- package/dist/{chunk-V2ANDPVT.js → chunk-K6T2ZAMZ.js} +168 -6
- package/dist/{chunk-B4OAX3SI.js → chunk-KFV5L5SK.js} +13 -6
- package/dist/{chunk-JEQ3XTHC.js → chunk-LLXSDWXS.js} +2 -2
- package/dist/{chunk-E3TPLWFX.js → chunk-LTIKRKFL.js} +3 -3
- package/dist/{chunk-NIQJ66N4.js → chunk-N56KALIC.js} +17 -17
- package/dist/{chunk-JDAY6FIL.js → chunk-NAI6ZFCY.js} +13 -9
- package/dist/{chunk-AF4YM7Z4.js → chunk-NRO2BJRH.js} +2490 -2182
- package/dist/{chunk-WRBAGUNF.js → chunk-NXIMQY5W.js} +2 -2
- package/dist/{chunk-I7ZPNEJM.js → chunk-NXYCB2VD.js} +5 -5
- package/dist/chunk-ODGTEFFI.js +50 -0
- package/dist/{chunk-2VIKGWFZ.js → chunk-OEJSLEPW.js} +2 -2
- package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
- package/dist/{chunk-54CBCGIR.js → chunk-Q4WO54TA.js} +132 -77
- package/dist/{chunk-B4VEBZKF.js → chunk-QUFRYSWI.js} +12 -6
- package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
- package/dist/{chunk-HEQY7ZFI.js → chunk-RAY4OVGZ.js} +2 -2
- package/dist/{chunk-G76U63X4.js → chunk-RQCKCSRL.js} +7 -7
- package/dist/{chunk-64I3JVYM.js → chunk-RXTN6AKH.js} +2 -2
- package/dist/{chunk-UPZU6GE4.js → chunk-RZDWV63N.js} +3 -3
- package/dist/{chunk-2UH2KFUP.js → chunk-S6PYF2XF.js} +2 -2
- package/dist/{chunk-JSC3U7TI.js → chunk-TOIVGRUX.js} +2 -2
- package/dist/{chunk-7DRAWPTZ.js → chunk-TQAHXW6Y.js} +1 -1
- package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
- package/dist/{chunk-AX2THNSA.js → chunk-UEPWCCTY.js} +4 -4
- package/dist/{chunk-QWGDJJYJ.js → chunk-USR47QNF.js} +4 -4
- package/dist/{chunk-Y3CBHOR6.js → chunk-V6HJFQZE.js} +2 -2
- package/dist/chunk-V76WTFTW.js +318 -0
- package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
- package/dist/{chunk-2UG5F4C5.js → chunk-XULDXHTN.js} +24 -12
- package/dist/chunk-XXYSBZIQ.js +283 -0
- package/dist/{chunk-MWUZBSAQ.js → chunk-Y55JBDO5.js} +331 -51
- package/dist/{chunk-W6RRQCPQ.js → chunk-YD5GIKET.js} +4 -4
- package/dist/{chunk-CE5AX47J.js → chunk-YECAMM3D.js} +2 -2
- package/dist/{chunk-WCXUNS7U.js → chunk-YNFKXPEC.js} +6 -6
- package/dist/cli/index.js +36 -35
- package/dist/{clio-CMMK4KRR.js → clio-QLICPCF5.js} +2 -2
- package/dist/{code-nav-MDZNQS33.js → code-nav-IJR2DBPR.js} +6 -6
- package/dist/{components-UCUQ4QXW.js → components-2TGAI2RC.js} +3 -4
- package/dist/{config-SVM5P5YI.js → config-IUA6OYNS.js} +52 -47
- package/dist/{configure-LE3IK2TJ.js → configure-VEPX4NMX.js} +14 -15
- package/dist/{context-VNCR7KAG.js → context-2DKHWH2T.js} +23 -23
- package/dist/{context-2OHRKS42.js → context-4MPR7WKB.js} +48 -42
- package/dist/{context-E3VC7RX5.js → context-BOYF5EJM.js} +11 -11
- package/dist/{context-clear-BW4O37TG.js → context-clear-S4ZJCQUX.js} +48 -42
- package/dist/{context-working-set-VDS25HXZ.js → context-working-set-3I3FYX6Y.js} +8 -8
- package/dist/detail-A7JAVSIG.js +98 -0
- package/dist/{dispatch-runner-5AHT53RF.js → dispatch-runner-RJ5I2F2O.js} +71 -58
- package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
- package/dist/{doctor-WNNVO6FY.js → doctor-DKICC2SN.js} +54 -31
- package/dist/{eval-7G7SGAYO.js → eval-OQOQUDHK.js} +47 -56
- package/dist/{evidence-VD6736FQ.js → evidence-4DQ25GUQ.js} +53 -150
- package/dist/evidence-4F5USFKH.js +208 -0
- package/dist/{evolve-AL3NGVRL.js → evolve-GSS52E5J.js} +44 -41
- package/dist/{extensions-MOVJ32NM.js → extensions-G7MFLYHT.js} +4 -5
- package/dist/{fleet-QZHUMAGI.js → fleet-Q37YHHAQ.js} +74 -68
- package/dist/{fleet-commands-BAYT5FJZ.js → fleet-commands-G7E4N7SM.js} +14 -11
- package/dist/{fleet-decisions-IREVMRU4.js → fleet-decisions-O7M6QBA2.js} +6 -6
- package/dist/{fleet-graph-YCTT3HTI.js → fleet-graph-TOUBW6OW.js} +13 -13
- package/dist/{fleet-inspect-QVJTDAVB.js → fleet-inspect-SW33JJNI.js} +43 -39
- package/dist/{fleet-preflight-25QAFPK4.js → fleet-preflight-CV2655TW.js} +2 -3
- package/dist/{fleet-validate-5O57AAJ7.js → fleet-validate-KESZX2YH.js} +16 -16
- package/dist/{fleet-verify-CPH2W2T6.js → fleet-verify-UQPMTVE3.js} +42 -38
- package/dist/{fleet-view-SWBR3VGQ.js → fleet-view-MN2VG4MR.js} +43 -39
- package/dist/{init-J477LKZH.js → init-PXEXQSBF.js} +60 -54
- package/dist/{interop-3FCM6XLG.js → interop-ZG5T62U3.js} +6 -7
- package/dist/inventory-C26CFDRR.js +101 -0
- package/dist/{library-QUQEIUG6.js → library-B2W4N74O.js} +16 -17
- package/dist/{memory-SGGSEP65.js → memory-YCANYS5A.js} +45 -42
- package/dist/{models-HEKUAXXK.js → models-GERTU3YI.js} +20 -22
- package/dist/{monitor-HKU57TYQ.js → monitor-CPNIUULB.js} +50 -44
- package/dist/{orchestrator-VDFAEFAI.js → orchestrator-J4BSH4WQ.js} +491 -1182
- package/dist/{panes-DN2SSFOH.js → panes-BOHAEGYC.js} +3 -3
- package/dist/{panes-TALGNPZT.js → panes-NXSLDQZ2.js} +5 -6
- package/dist/{paths-NBMFAIEZ.js → paths-VSUWNC22.js} +3 -4
- package/dist/{reset-EAJFFJVB.js → reset-TNWTB5LU.js} +5 -6
- package/dist/{resources-OVKSEFVE.js → resources-4PXNMD5G.js} +14 -14
- package/dist/{run-7DP7ZF2J.js → run-D6XJ34CN.js} +79 -83
- package/dist/{share-WML67FT3.js → share-2NWMJJEE.js} +14 -15
- package/dist/{skills-SG662R2K.js → skills-KR7WON5G.js} +18 -19
- package/dist/{skills-eval-VVZEUU46.js → skills-eval-O2ZNOLDS.js} +49 -46
- package/dist/{skills-inventory-I2E23GET.js → skills-inventory-ZZOUBK7O.js} +14 -14
- package/dist/{slash-commands-S7MBJDQK.js → slash-commands-ZXPJD64J.js} +32 -23
- package/dist/{steer-2LQOMCPB.js → steer-XA25PSCS.js} +3 -3
- package/dist/{support-CC2UJBJ6.js → support-7EMVWYG2.js} +2 -2
- package/dist/{targets-4QC3HIEW.js → targets-OMH2XCSN.js} +25 -27
- package/dist/tasks-IPAGMEIX.js +36 -0
- package/dist/{terminal-lease-TUHIJ6Y2.js → terminal-lease-C2J3JYRE.js} +4 -4
- package/dist/{tools-TFGJICCU.js → tools-EFFEAIDP.js} +5 -6
- package/dist/{uninstall-5PEVOE5B.js → uninstall-HALS6BLF.js} +7 -8
- package/dist/{upgrade-M4WXY6KN.js → upgrade-MS72RJEP.js} +14 -11
- package/dist/{usage-N7ZNVLEM.js → usage-NHG6MCJM.js} +60 -51
- package/dist/{verifiers-DJTP4XX6.js → verifiers-7AUNVXDY.js} +150 -17
- package/dist/{verify-RWE4PPEK.js → verify-FWYGPKMR.js} +12 -10
- package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
- package/dist/{wiki-generate-C7IQOXSP.js → wiki-generate-743CIGJW.js} +63 -56
- package/dist/{with-panes-4GCGSL7J.js → with-panes-BDQEWBRT.js} +2 -2
- package/dist/worker/entry.js +36 -33
- package/docs/README.md +3 -2
- package/docs/architecture/acp.md +17 -0
- package/docs/architecture/artifact-versions.md +1 -1
- package/docs/architecture/dispatch-typed-intent.md +1 -1
- package/docs/architecture/evidence-and-memory.md +1 -1
- package/docs/architecture/observability.md +7 -1
- package/docs/architecture/prompt-envelope-and-tools.md +15 -5
- package/docs/architecture/safety-model.md +10 -17
- package/docs/architecture/tui-design.md +1 -1
- package/docs/guide/built-in-agents.md +8 -8
- package/docs/guide/commands-and-modes.md +17 -2
- package/docs/guide/configuration-and-targets.md +3 -1
- package/docs/guide/configuration-reference.md +10 -5
- package/docs/guide/environment-variables.md +2 -2
- package/docs/guide/tool-usage.md +78 -3
- package/docs/history/config-knobs-audit.md +2 -2
- package/docs/process/development-pipeline.md +6 -1
- package/docs/process/git-commit-provenance.md +15 -0
- package/docs/process/release-cut-checklist.md +207 -0
- package/docs/process/scientific-validation.md +18 -17
- package/evals/behavioral-machinery-support.ts +1 -0
- package/evals/behavioral-machinery.yaml +1 -1
- package/package.json +1 -1
- package/skills/coding/coding-standards/SKILL.md +14 -4
- package/skills/context/context-handoff/SKILL.md +3 -3
- package/skills/context/context-prime/SKILL.md +3 -3
- package/skills/planning/architecture/SKILL.md +5 -5
- package/skills/planning/backlog/SKILL.md +4 -4
- package/skills/planning/prd/SKILL.md +4 -3
- package/skills/planning/product-intent/SKILL.md +8 -8
- package/skills/planning/tech-spec/SKILL.md +4 -4
- package/skills/registry.yaml +32 -32
- package/skills/research/arxiv-literature/SKILL.md +3 -3
- package/skills/research/experiment-protocol/SKILL.md +3 -3
- package/skills/research/scientific-debugging/SKILL.md +3 -2
- package/skills/research/scientific-modernization/SKILL.md +3 -3
- package/skills/skill-marketplace.json +16 -16
- package/skills/workflow/cut-it/SKILL.md +3 -4
- package/skills/workflow/design-council/SKILL.md +5 -10
- package/skills/workflow/grill-me/SKILL.md +14 -15
- package/skills/workflow/workflow-distiller/SKILL.md +4 -4
- package/src/cli/args.ts +0 -8
- package/src/cli/configure.ts +2 -1
- package/src/cli/doctor-state-size.ts +1 -12
- package/src/cli/doctor-validation-contract.ts +28 -0
- package/src/cli/doctor.ts +5 -0
- package/src/cli/evidence-detail.ts +1 -75
- package/src/cli/evidence-inventory.ts +1 -167
- package/src/cli/index.ts +2 -0
- package/src/cli/run.ts +0 -2
- package/src/cli/targets.ts +1 -1
- package/src/cli/tasks.ts +84 -0
- package/src/cli/upgrade.ts +10 -5
- package/src/cli/usage.ts +6 -0
- package/src/cli/verifiers.ts +147 -1
- package/src/cli/wiki-generate.ts +1 -0
- package/src/core/commit-attribution.ts +41 -1
- package/src/core/git-commit-attribution.ts +46 -3
- package/src/core/run-overrides.ts +0 -5
- package/src/core/skill-activation.ts +3 -0
- package/src/core/tool-names.ts +5 -2
- package/src/domains/agents/builtins/architect.md +1 -1
- package/src/domains/agents/builtins/coder.md +1 -1
- package/src/domains/agents/builtins/documenter.md +1 -1
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/provenance.md +7 -7
- package/src/domains/agents/builtins/tester.md +1 -1
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +4 -3
- package/src/domains/context/extension.ts +31 -7
- package/src/domains/context/refresh.ts +3 -0
- package/src/domains/context/wiki/frontmatter.ts +5 -2
- package/src/domains/context/wiki/generate.ts +6 -0
- package/src/domains/context/wiki/prompts.ts +43 -0
- package/src/domains/dispatch/active-route-planner.ts +4 -0
- package/src/domains/dispatch/code-step.ts +11 -4
- package/src/domains/dispatch/contract.ts +31 -7
- package/src/domains/dispatch/execution-scheduler.ts +2 -0
- package/src/domains/dispatch/extension.ts +50 -27
- package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
- package/src/domains/dispatch/fleet-run.ts +1 -0
- package/src/domains/dispatch/host-verification.ts +114 -13
- package/src/domains/dispatch/intent.ts +28 -18
- package/src/domains/dispatch/orphan-recovery.ts +2 -0
- package/src/domains/dispatch/receipt-integrity.ts +4 -0
- package/src/domains/dispatch/reservation-store.ts +5 -3
- package/src/domains/dispatch/state.ts +15 -2
- package/src/domains/dispatch/types.ts +17 -2
- package/src/domains/eval/runners/clio-run.ts +12 -9
- package/src/domains/eval/runners/context-index.ts +2 -7
- package/src/domains/eval/runners/context-init.ts +3 -6
- package/src/domains/eval/runners/external-command.ts +29 -11
- package/src/domains/evidence/build.ts +102 -15
- package/src/domains/evidence/detail.ts +69 -0
- package/src/domains/evidence/eval.ts +13 -1
- package/src/domains/evidence/finish-contract-map.ts +5 -1
- package/src/domains/evidence/inventory.ts +167 -0
- package/src/domains/evidence/store.ts +16 -0
- package/src/domains/evidence/types.ts +12 -0
- package/src/domains/extensions/resources.ts +7 -0
- package/src/domains/middleware/marketplace-offer.ts +20 -1
- package/src/domains/middleware/runtime.ts +7 -3
- package/src/domains/mux/detect.ts +3 -6
- package/src/domains/observability/accountability.ts +15 -1
- package/src/domains/observability/contract.ts +52 -7
- package/src/domains/observability/evidence-index.ts +10 -0
- package/src/domains/observability/extension.ts +9 -5
- package/src/domains/observability/projection.ts +394 -45
- package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
- package/src/domains/prompts/fragments/operating/contract.md +2 -0
- package/src/domains/prompts/fragments/wiki/page.md +8 -0
- package/src/domains/providers/model-discovery.ts +1 -4
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +16 -14
- package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
- package/src/domains/providers/support.ts +1 -1
- package/src/domains/providers/types/runtime-descriptor.ts +1 -1
- package/src/domains/safety/action-classifier.ts +7 -0
- package/src/domains/safety/default-path-policy.ts +2 -0
- package/src/domains/safety/finish-contract-registration.ts +29 -14
- package/src/domains/safety/finish-contract.ts +252 -40
- package/src/domains/safety/index.ts +20 -1
- package/src/domains/safety/policy-engine.ts +26 -6
- package/src/domains/safety/rigor.ts +53 -39
- package/src/domains/safety/validation-contract.ts +388 -0
- package/src/domains/session/archive-readers.ts +10 -1
- package/src/domains/session/decision-board.ts +101 -2
- package/src/domains/session/entries.ts +44 -7
- package/src/domains/session/extension.ts +4 -4
- package/src/domains/session/handoff.ts +2 -1
- package/src/domains/session/manager.ts +2 -3
- package/src/domains/session/task-board.ts +14 -1
- package/src/domains/session/tree/fork.ts +1 -2
- package/src/domains/session/tree/navigator.ts +1 -1
- package/src/domains/user-tasks/acceptance.ts +56 -0
- package/src/domains/user-tasks/active-acceptance.ts +40 -0
- package/src/domains/user-tasks/store.ts +34 -3
- package/src/engine/acp/adapter.ts +24 -6
- package/src/engine/acp/server.ts +21 -4
- package/src/engine/acp/transport.ts +53 -8
- package/src/engine/acp/types.ts +4 -0
- package/src/engine/apis/ollama-native.ts +15 -0
- package/src/engine/claude/subprocess-runtime.ts +107 -60
- package/src/engine/external-subprocess.ts +12 -4
- package/src/entry/orchestrator.ts +11 -2
- package/src/interactive/dispatch-board.ts +46 -717
- package/src/interactive/fleet-run-preview.ts +2 -1
- package/src/interactive/interactive-application.ts +3 -2
- package/src/interactive/interactive-presentation.ts +55 -12
- package/src/interactive/interactive-slash-runtime.ts +2 -1
- package/src/interactive/oracle.ts +5 -2
- package/src/interactive/overlays/fleet-run-approval.ts +3 -2
- package/src/interactive/overlays/message-picker.ts +2 -2
- package/src/interactive/overlays/settings.ts +2 -2
- package/src/interactive/overlays/tree-selector.ts +2 -2
- package/src/interactive/renderers/branch-summary.ts +1 -1
- package/src/interactive/slash-autocomplete.ts +4 -6
- package/src/interactive/slash-commands.ts +25 -39
- package/src/interactive/slash-spec.ts +28 -0
- package/src/interactive/view/artifacts.ts +2 -0
- package/src/interactive/worker-stream.ts +7 -3
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +31 -0
- package/src/tools/compete-worktrees.ts +7 -1
- package/src/tools/core-bootstrap.ts +16 -0
- package/src/tools/decide.ts +136 -0
- package/src/tools/dispatch-admission.ts +21 -0
- package/src/tools/dispatch-plan.ts +5 -2
- package/src/tools/dispatch-runner.ts +15 -1
- package/src/tools/dispatch-types.ts +6 -0
- package/src/tools/evidence.ts +96 -0
- package/src/tools/limitation.ts +76 -0
- package/src/tools/policy.ts +9 -0
- package/src/tools/presentation.ts +3 -0
- package/src/tools/registry.ts +1 -1
- package/src/tools/result-shaping.ts +17 -5
- package/src/tools/task-worktree.ts +13 -3
- package/src/tools/tasks.ts +10 -1
- package/src/tools/verify/authoring.ts +170 -83
- package/src/tools/verify/catalog.ts +122 -5
- package/src/tools/verify/index.ts +2 -1
- package/src/tools/verify/numeric.ts +298 -0
- package/src/tools/verify/perf.ts +143 -0
- package/src/tools/verify/scripts.ts +229 -2
- package/dist/chunk-7DICMOS6.js +0 -313
- package/dist/chunk-RVG5JXAL.js +0 -41
- package/dist/chunk-T56WDKA5.js +0 -183
- package/dist/chunk-VPKWYKEY.js +0 -169
|
@@ -5,14 +5,16 @@ import {
|
|
|
5
5
|
} from "./chunk-BMS5RKQY.js";
|
|
6
6
|
import {
|
|
7
7
|
webFetchToolSurface
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-2CU2H6KE.js";
|
|
9
9
|
import {
|
|
10
|
-
gitTool,
|
|
11
10
|
verifyToolSurface
|
|
12
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-GX5WYQO4.js";
|
|
13
12
|
import {
|
|
14
13
|
codeNavToolSurface
|
|
15
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-RXTN6AKH.js";
|
|
15
|
+
import {
|
|
16
|
+
contextToolSurface
|
|
17
|
+
} from "./chunk-3UNOLWNZ.js";
|
|
16
18
|
import {
|
|
17
19
|
compileGlobRegex,
|
|
18
20
|
fallbackIgnoredDirs,
|
|
@@ -20,9 +22,6 @@ import {
|
|
|
20
22
|
normalizeGlobInput,
|
|
21
23
|
rgIgnoreArgs
|
|
22
24
|
} from "./chunk-VG7TBQIY.js";
|
|
23
|
-
import {
|
|
24
|
-
contextToolSurface
|
|
25
|
-
} from "./chunk-IUE3Y34X.js";
|
|
26
25
|
import {
|
|
27
26
|
RESPONSE_SCHEMA_RUNTIME_ID,
|
|
28
27
|
bashTool,
|
|
@@ -32,39 +31,25 @@ import {
|
|
|
32
31
|
readMaxBytes,
|
|
33
32
|
readTool,
|
|
34
33
|
renderAgentLedger
|
|
35
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-75W7L2E2.js";
|
|
35
|
+
import {
|
|
36
|
+
hashToolCall
|
|
37
|
+
} from "./chunk-6QOTUPRG.js";
|
|
36
38
|
import {
|
|
37
39
|
createTaskBoardStore,
|
|
38
40
|
taskBoardCounts
|
|
39
|
-
} from "./chunk-
|
|
40
|
-
import {
|
|
41
|
-
hashToolCall
|
|
42
|
-
} from "./chunk-RSJ25QSL.js";
|
|
41
|
+
} from "./chunk-6PAZTBPA.js";
|
|
43
42
|
import {
|
|
44
43
|
formatModelRejection
|
|
45
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-6Q3CYFD3.js";
|
|
46
45
|
import {
|
|
47
46
|
describeCallAction
|
|
48
47
|
} from "./chunk-NEDJ26B5.js";
|
|
49
|
-
import {
|
|
50
|
-
applyToolProfile
|
|
51
|
-
} from "./chunk-42FMPA75.js";
|
|
52
48
|
import {
|
|
53
49
|
resolveReadPath,
|
|
54
50
|
resolveToCwd,
|
|
55
51
|
toPosixPath
|
|
56
52
|
} from "./chunk-OQE5J4C6.js";
|
|
57
|
-
import {
|
|
58
|
-
classify
|
|
59
|
-
} from "./chunk-B4OAX3SI.js";
|
|
60
|
-
import {
|
|
61
|
-
protectArtifact,
|
|
62
|
-
protectedArtifactMutationBlockReason
|
|
63
|
-
} from "./chunk-I7ZPNEJM.js";
|
|
64
|
-
import {
|
|
65
|
-
CLIO_ARTIFACT_DIR,
|
|
66
|
-
artifactDefaultPath
|
|
67
|
-
} from "./chunk-GYV6VZOC.js";
|
|
68
53
|
import {
|
|
69
54
|
OBSERVATION_POLICY_SLACK_BYTES,
|
|
70
55
|
OBSERVE_SELF_CAPS,
|
|
@@ -76,14 +61,28 @@ import {
|
|
|
76
61
|
reserveObservation,
|
|
77
62
|
toolResultContextText,
|
|
78
63
|
truncateHead
|
|
79
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-NAI6ZFCY.js";
|
|
80
65
|
import {
|
|
81
66
|
GREP_MAX_LINE_LENGTH,
|
|
82
67
|
truncateLine
|
|
83
68
|
} from "./chunk-OZNBF4L3.js";
|
|
84
69
|
import {
|
|
85
|
-
|
|
86
|
-
} from "./chunk-
|
|
70
|
+
applyToolProfile
|
|
71
|
+
} from "./chunk-QZWQA4DE.js";
|
|
72
|
+
import {
|
|
73
|
+
classify
|
|
74
|
+
} from "./chunk-KFV5L5SK.js";
|
|
75
|
+
import {
|
|
76
|
+
protectArtifact,
|
|
77
|
+
protectedArtifactMutationBlockReason
|
|
78
|
+
} from "./chunk-NXYCB2VD.js";
|
|
79
|
+
import {
|
|
80
|
+
gitTool
|
|
81
|
+
} from "./chunk-BJVFZO5U.js";
|
|
82
|
+
import {
|
|
83
|
+
CLIO_ARTIFACT_DIR,
|
|
84
|
+
artifactDefaultPath
|
|
85
|
+
} from "./chunk-GYV6VZOC.js";
|
|
87
86
|
import {
|
|
88
87
|
typebox_exports
|
|
89
88
|
} from "./chunk-5B2AEOW5.js";
|
|
@@ -91,21 +90,26 @@ import {
|
|
|
91
90
|
parseAgentLedgerBody
|
|
92
91
|
} from "./chunk-VAVR4IJY.js";
|
|
93
92
|
import {
|
|
93
|
+
decisionRef,
|
|
94
94
|
skillActivationFromToolDetails
|
|
95
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-54X7T7DK.js";
|
|
96
|
+
import {
|
|
97
|
+
byteLength,
|
|
98
|
+
truncateUtf8
|
|
99
|
+
} from "./chunk-6XLNIQDB.js";
|
|
96
100
|
import {
|
|
97
101
|
ToolNames,
|
|
98
102
|
isBuiltinToolName
|
|
99
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-4NSRCOYP.js";
|
|
104
|
+
import {
|
|
105
|
+
assertSafeId
|
|
106
|
+
} from "./chunk-R346GLFC.js";
|
|
100
107
|
import {
|
|
101
108
|
BusChannels
|
|
102
109
|
} from "./chunk-F4EKGO4N.js";
|
|
103
110
|
import {
|
|
104
111
|
incompleteInstallationAdvice
|
|
105
112
|
} from "./chunk-65DEGPJ6.js";
|
|
106
|
-
import {
|
|
107
|
-
buildSafeToolEnv
|
|
108
|
-
} from "./chunk-JSC3U7TI.js";
|
|
109
113
|
import {
|
|
110
114
|
GUARDRAIL_DEFAULTS,
|
|
111
115
|
resolveGuardrail,
|
|
@@ -114,10 +118,17 @@ import {
|
|
|
114
118
|
workerToolCallCapExceededReason,
|
|
115
119
|
workerToolCallCapSynthesisReason
|
|
116
120
|
} from "./chunk-S66XZJOF.js";
|
|
121
|
+
import {
|
|
122
|
+
buildSafeToolEnv
|
|
123
|
+
} from "./chunk-TOIVGRUX.js";
|
|
117
124
|
import {
|
|
118
125
|
StringEnum,
|
|
119
126
|
engineStreamSimple
|
|
120
127
|
} from "./chunk-YPC6ZR5L.js";
|
|
128
|
+
import {
|
|
129
|
+
clioDataDir,
|
|
130
|
+
clioStateDir
|
|
131
|
+
} from "./chunk-BYP5D4HI.js";
|
|
121
132
|
import {
|
|
122
133
|
init_esm_shims
|
|
123
134
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -1486,6 +1497,115 @@ var credentialPresentTool = {
|
|
|
1486
1497
|
}
|
|
1487
1498
|
};
|
|
1488
1499
|
|
|
1500
|
+
// src/tools/decide.ts
|
|
1501
|
+
init_esm_shims();
|
|
1502
|
+
var DECIDE_CAPS = Object.freeze({
|
|
1503
|
+
keyBytes: 64,
|
|
1504
|
+
valueBytes: 512,
|
|
1505
|
+
alternatives: 6,
|
|
1506
|
+
alternativeBytes: 256,
|
|
1507
|
+
rationaleBytes: 1024,
|
|
1508
|
+
labelBytes: 128
|
|
1509
|
+
});
|
|
1510
|
+
var KEBAB_KEY = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
|
|
1511
|
+
function boundedText(value, field, cap) {
|
|
1512
|
+
if (typeof value !== "string") return new Error(`decide: ${field} must be a string`);
|
|
1513
|
+
const trimmed = value.trim();
|
|
1514
|
+
if (trimmed.length === 0) return new Error(`decide: ${field} is required`);
|
|
1515
|
+
if (byteLength(trimmed) > cap) return new Error(`decide: ${field} exceeds the ${cap}-byte cap`);
|
|
1516
|
+
return trimmed;
|
|
1517
|
+
}
|
|
1518
|
+
function boundedAlternatives(value) {
|
|
1519
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
1520
|
+
return new Error("decide: alternatives must list at least one option you rejected");
|
|
1521
|
+
}
|
|
1522
|
+
if (value.length > DECIDE_CAPS.alternatives) {
|
|
1523
|
+
return new Error(`decide: alternatives exceeds the ${DECIDE_CAPS.alternatives}-entry cap`);
|
|
1524
|
+
}
|
|
1525
|
+
const alternatives = [];
|
|
1526
|
+
for (const [index, entry] of value.entries()) {
|
|
1527
|
+
const text = boundedText(entry, `alternatives[${index}]`, DECIDE_CAPS.alternativeBytes);
|
|
1528
|
+
if (text instanceof Error) return text;
|
|
1529
|
+
alternatives.push(text);
|
|
1530
|
+
}
|
|
1531
|
+
return alternatives;
|
|
1532
|
+
}
|
|
1533
|
+
function createDecideTool(deps = {}) {
|
|
1534
|
+
return {
|
|
1535
|
+
name: ToolNames.Decide,
|
|
1536
|
+
description: "Record a design decision you made between two or more viable options, with the alternatives you rejected and why. Call it before implementing the choice; a later call with the same key supersedes the earlier record.",
|
|
1537
|
+
parameters: typebox_exports.Object({
|
|
1538
|
+
key: typebox_exports.String({
|
|
1539
|
+
description: `Stable kebab-case name for the decision, e.g. "cache-key-shape" (at most ${DECIDE_CAPS.keyBytes} bytes).`
|
|
1540
|
+
}),
|
|
1541
|
+
value: typebox_exports.String({ description: `The option you chose (at most ${DECIDE_CAPS.valueBytes} bytes).` }),
|
|
1542
|
+
alternatives: typebox_exports.Array(typebox_exports.String(), {
|
|
1543
|
+
description: `Options you considered and rejected, 1 to ${DECIDE_CAPS.alternatives} entries.`
|
|
1544
|
+
}),
|
|
1545
|
+
rationale: typebox_exports.String({
|
|
1546
|
+
description: `Why the chosen option won over the alternatives (at most ${DECIDE_CAPS.rationaleBytes} bytes).`
|
|
1547
|
+
}),
|
|
1548
|
+
label: typebox_exports.Optional(typebox_exports.String({ description: "Short human-readable title for the decision." }))
|
|
1549
|
+
}),
|
|
1550
|
+
// Read class on purpose: the only effect is one session-ledger append,
|
|
1551
|
+
// so it must stay available at every autonomy level without a prompt.
|
|
1552
|
+
baseActionClass: "read",
|
|
1553
|
+
executionMode: "sequential",
|
|
1554
|
+
async run(args) {
|
|
1555
|
+
const key = boundedText(args.key, "key", DECIDE_CAPS.keyBytes);
|
|
1556
|
+
if (key instanceof Error) return { kind: "error", message: key.message };
|
|
1557
|
+
if (!KEBAB_KEY.test(key)) {
|
|
1558
|
+
return { kind: "error", message: "decide: key must be kebab-case (lowercase letters, digits, single hyphens)" };
|
|
1559
|
+
}
|
|
1560
|
+
const value = boundedText(args.value, "value", DECIDE_CAPS.valueBytes);
|
|
1561
|
+
if (value instanceof Error) return { kind: "error", message: value.message };
|
|
1562
|
+
const alternatives = boundedAlternatives(args.alternatives);
|
|
1563
|
+
if (alternatives instanceof Error) return { kind: "error", message: alternatives.message };
|
|
1564
|
+
const rationale = boundedText(args.rationale, "rationale", DECIDE_CAPS.rationaleBytes);
|
|
1565
|
+
if (rationale instanceof Error) return { kind: "error", message: rationale.message };
|
|
1566
|
+
let label;
|
|
1567
|
+
if (args.label !== void 0 && args.label !== null) {
|
|
1568
|
+
const bounded = boundedText(args.label, "label", DECIDE_CAPS.labelBytes);
|
|
1569
|
+
if (bounded instanceof Error) return { kind: "error", message: bounded.message };
|
|
1570
|
+
label = bounded;
|
|
1571
|
+
}
|
|
1572
|
+
if (deps.decisionBoard === void 0) {
|
|
1573
|
+
return { kind: "error", message: "decide: no session decision board is available in this context" };
|
|
1574
|
+
}
|
|
1575
|
+
let outcome;
|
|
1576
|
+
try {
|
|
1577
|
+
outcome = deps.decisionBoard.recordAgentDecision({
|
|
1578
|
+
key,
|
|
1579
|
+
value,
|
|
1580
|
+
alternatives,
|
|
1581
|
+
rationale,
|
|
1582
|
+
...label !== void 0 ? { label } : {}
|
|
1583
|
+
});
|
|
1584
|
+
} catch (error) {
|
|
1585
|
+
return { kind: "error", message: error instanceof Error ? error.message : String(error) };
|
|
1586
|
+
}
|
|
1587
|
+
const ref = decisionRef(outcome.entry.interviewId, key);
|
|
1588
|
+
const supersededNote = outcome.superseded === null ? "" : ` (supersedes ${decisionRef(outcome.superseded.interviewId, outcome.superseded.key)})`;
|
|
1589
|
+
return {
|
|
1590
|
+
kind: "ok",
|
|
1591
|
+
output: `decision recorded: ${key} = ${value} [${ref}]${supersededNote}
|
|
1592
|
+
`,
|
|
1593
|
+
details: {
|
|
1594
|
+
decision: {
|
|
1595
|
+
ref,
|
|
1596
|
+
key,
|
|
1597
|
+
value,
|
|
1598
|
+
alternatives,
|
|
1599
|
+
rationale,
|
|
1600
|
+
...label !== void 0 ? { label } : {},
|
|
1601
|
+
...outcome.superseded !== null ? { superseded: decisionRef(outcome.superseded.interviewId, outcome.superseded.key) } : {}
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
1604
|
+
};
|
|
1605
|
+
}
|
|
1606
|
+
};
|
|
1607
|
+
}
|
|
1608
|
+
|
|
1489
1609
|
// src/tools/edit.ts
|
|
1490
1610
|
init_esm_shims();
|
|
1491
1611
|
import { readFileSync, writeFileSync as writeFileSync2 } from "node:fs";
|
|
@@ -2515,6 +2635,88 @@ var editTool = {
|
|
|
2515
2635
|
}
|
|
2516
2636
|
};
|
|
2517
2637
|
|
|
2638
|
+
// src/tools/evidence.ts
|
|
2639
|
+
init_esm_shims();
|
|
2640
|
+
var EVIDENCE_TOOL_MAX_BYTES = 16384;
|
|
2641
|
+
function boundedResult(value) {
|
|
2642
|
+
const serialized = JSON.stringify(value, null, 2);
|
|
2643
|
+
if (Buffer.byteLength(serialized, "utf8") <= EVIDENCE_TOOL_MAX_BYTES) {
|
|
2644
|
+
return { kind: "ok", output: serialized, details: { truncated: false } };
|
|
2645
|
+
}
|
|
2646
|
+
const hint = "Inspect one run to narrow the output; this preview is incomplete JSON text.";
|
|
2647
|
+
let preview = truncateUtf8(serialized, EVIDENCE_TOOL_MAX_BYTES, "");
|
|
2648
|
+
let output = JSON.stringify({ truncated: true, hint, preview });
|
|
2649
|
+
while (Buffer.byteLength(output, "utf8") > EVIDENCE_TOOL_MAX_BYTES) {
|
|
2650
|
+
const excess = Buffer.byteLength(output, "utf8") - EVIDENCE_TOOL_MAX_BYTES;
|
|
2651
|
+
preview = truncateUtf8(preview, Math.max(0, Buffer.byteLength(preview, "utf8") - excess), "");
|
|
2652
|
+
output = JSON.stringify({ truncated: true, hint, preview });
|
|
2653
|
+
}
|
|
2654
|
+
return { kind: "ok", output, details: { truncated: true } };
|
|
2655
|
+
}
|
|
2656
|
+
var evidenceTool = {
|
|
2657
|
+
name: ToolNames.Evidence,
|
|
2658
|
+
description: "Read canonical evidence as JSON. List recent bundles, inspect a bundle's overview, trust axes and tier, gate decisions, and findings, or build/read evidence for a run.",
|
|
2659
|
+
parameters: typebox_exports.Object({
|
|
2660
|
+
mode: StringEnum(["list", "inspect", "run"]),
|
|
2661
|
+
id: typebox_exports.Optional(typebox_exports.String({ description: "Evidence bundle id for inspect." })),
|
|
2662
|
+
runId: typebox_exports.Optional(typebox_exports.String({ description: "Run id for run." }))
|
|
2663
|
+
}),
|
|
2664
|
+
baseActionClass: "read",
|
|
2665
|
+
// Run mode may materialize a derived bundle in Clio's data directory.
|
|
2666
|
+
executionMode: "sequential",
|
|
2667
|
+
async run(args) {
|
|
2668
|
+
const mode = args.mode;
|
|
2669
|
+
if (mode !== "list" && mode !== "inspect" && mode !== "run") {
|
|
2670
|
+
return { kind: "error", message: "evidence: mode must be list, inspect, or run" };
|
|
2671
|
+
}
|
|
2672
|
+
try {
|
|
2673
|
+
const dataDir = clioDataDir();
|
|
2674
|
+
if (mode === "list") {
|
|
2675
|
+
const { evidenceInventorySnapshot } = await import("./inventory-C26CFDRR.js");
|
|
2676
|
+
return boundedResult(await evidenceInventorySnapshot(Date.now, dataDir));
|
|
2677
|
+
}
|
|
2678
|
+
const id = mode === "inspect" ? args.id : args.runId;
|
|
2679
|
+
if (typeof id !== "string" || id.length === 0) {
|
|
2680
|
+
return { kind: "error", message: `evidence: ${mode} requires ${mode === "inspect" ? "id" : "runId"}` };
|
|
2681
|
+
}
|
|
2682
|
+
assertSafeId(id, mode === "inspect" ? "evidence" : "run");
|
|
2683
|
+
const { buildEvidence, EvidenceNotFoundError, inspectEvidence, loadEvidenceGateDecisions } = await import("./evidence-4F5USFKH.js");
|
|
2684
|
+
const { evidenceDetailSnapshot } = await import("./detail-A7JAVSIG.js");
|
|
2685
|
+
let evidenceId = mode === "run" ? `run-${id}` : id;
|
|
2686
|
+
let inspected;
|
|
2687
|
+
try {
|
|
2688
|
+
inspected = await inspectEvidence(dataDir, evidenceId);
|
|
2689
|
+
} catch (error) {
|
|
2690
|
+
if (mode !== "run" || !(error instanceof EvidenceNotFoundError)) throw error;
|
|
2691
|
+
try {
|
|
2692
|
+
evidenceId = (await buildEvidence({ dataDir, stateDir: clioStateDir(), runId: id })).evidenceId;
|
|
2693
|
+
} catch (buildError) {
|
|
2694
|
+
if (buildError instanceof Error && (buildError.message === "run ledger not found" || buildError.message === `run not found: ${id}`))
|
|
2695
|
+
throw new EvidenceNotFoundError(evidenceId);
|
|
2696
|
+
throw buildError;
|
|
2697
|
+
}
|
|
2698
|
+
inspected = await inspectEvidence(dataDir, evidenceId);
|
|
2699
|
+
}
|
|
2700
|
+
return boundedResult({
|
|
2701
|
+
...inspected,
|
|
2702
|
+
...await evidenceDetailSnapshot(evidenceId, Date.now, dataDir),
|
|
2703
|
+
gateDecisions: await loadEvidenceGateDecisions(dataDir, evidenceId)
|
|
2704
|
+
});
|
|
2705
|
+
} catch (error) {
|
|
2706
|
+
const absent = error instanceof Error && error.name === "EvidenceNotFoundError";
|
|
2707
|
+
return {
|
|
2708
|
+
kind: "error",
|
|
2709
|
+
message: truncateUtf8(
|
|
2710
|
+
`evidence: ${error instanceof Error ? error.message : String(error)}`,
|
|
2711
|
+
EVIDENCE_TOOL_MAX_BYTES - 3,
|
|
2712
|
+
"..."
|
|
2713
|
+
),
|
|
2714
|
+
details: { code: absent ? "artifact_absent" : "evidence_error", artifactAbsent: absent }
|
|
2715
|
+
};
|
|
2716
|
+
}
|
|
2717
|
+
}
|
|
2718
|
+
};
|
|
2719
|
+
|
|
2518
2720
|
// src/tools/find.ts
|
|
2519
2721
|
init_esm_shims();
|
|
2520
2722
|
import { existsSync, statSync } from "node:fs";
|
|
@@ -3370,6 +3572,59 @@ ${output}`,
|
|
|
3370
3572
|
};
|
|
3371
3573
|
}
|
|
3372
3574
|
|
|
3575
|
+
// src/tools/limitation.ts
|
|
3576
|
+
init_esm_shims();
|
|
3577
|
+
var LIMITATION_REASONS = ["no-runner", "blocked", "out-of-scope", "environment", "other"];
|
|
3578
|
+
function isLimitationReason(value) {
|
|
3579
|
+
return typeof value === "string" && LIMITATION_REASONS.includes(value);
|
|
3580
|
+
}
|
|
3581
|
+
function trimString2(value) {
|
|
3582
|
+
if (typeof value !== "string") return null;
|
|
3583
|
+
const trimmed = value.trim();
|
|
3584
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
3585
|
+
}
|
|
3586
|
+
function normalizePaths(value) {
|
|
3587
|
+
if (value === void 0 || value === null) return [];
|
|
3588
|
+
if (!Array.isArray(value)) return null;
|
|
3589
|
+
const paths = [];
|
|
3590
|
+
for (const item of value) {
|
|
3591
|
+
const path4 = trimString2(item);
|
|
3592
|
+
if (path4 === null) return null;
|
|
3593
|
+
if (!paths.includes(path4)) paths.push(path4);
|
|
3594
|
+
}
|
|
3595
|
+
return paths;
|
|
3596
|
+
}
|
|
3597
|
+
var limitationTool = {
|
|
3598
|
+
name: ToolNames.Limitation,
|
|
3599
|
+
description: "Record what this turn could not verify and why. Call it once, before your final reply, when you changed files but could not run validation; the receipt stands in for validation evidence at the finish gate.",
|
|
3600
|
+
parameters: typebox_exports.Object({
|
|
3601
|
+
scope: typebox_exports.String({ description: "What could not be verified, in one sentence." }),
|
|
3602
|
+
reason: StringEnum(LIMITATION_REASONS, {
|
|
3603
|
+
description: "no-runner: no test or build runner is available; blocked: a safety gate or denial stopped the check; out-of-scope: verification was excluded by the task; environment: the environment cannot run the check; other."
|
|
3604
|
+
}),
|
|
3605
|
+
paths: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String(), { description: "Repository-relative paths left unverified." }))
|
|
3606
|
+
}),
|
|
3607
|
+
baseActionClass: "read",
|
|
3608
|
+
executionMode: "parallel",
|
|
3609
|
+
async run(args) {
|
|
3610
|
+
const scope = trimString2(args.scope);
|
|
3611
|
+
if (scope === null) return { kind: "error", message: "limitation: scope is required" };
|
|
3612
|
+
if (!isLimitationReason(args.reason)) {
|
|
3613
|
+
return { kind: "error", message: `limitation: reason must be one of ${LIMITATION_REASONS.join(", ")}` };
|
|
3614
|
+
}
|
|
3615
|
+
const paths = normalizePaths(args.paths);
|
|
3616
|
+
if (paths === null) return { kind: "error", message: "limitation: paths must be an array of non-empty strings" };
|
|
3617
|
+
const limitation = { scope, reason: args.reason, paths };
|
|
3618
|
+
const pathSuffix = paths.length > 0 ? ` paths=${paths.join(",")}` : "";
|
|
3619
|
+
return {
|
|
3620
|
+
kind: "ok",
|
|
3621
|
+
output: `limitation recorded: ${scope} (reason=${limitation.reason}${pathSuffix})
|
|
3622
|
+
`,
|
|
3623
|
+
details: { limitation }
|
|
3624
|
+
};
|
|
3625
|
+
}
|
|
3626
|
+
};
|
|
3627
|
+
|
|
3373
3628
|
// src/tools/ls.ts
|
|
3374
3629
|
init_esm_shims();
|
|
3375
3630
|
import { readdirSync as readdirSync2, statSync as statSync3 } from "node:fs";
|
|
@@ -3467,6 +3722,7 @@ var lsTool = {
|
|
|
3467
3722
|
// src/tools/policy.ts
|
|
3468
3723
|
init_esm_shims();
|
|
3469
3724
|
var TOOL_PLANES = {
|
|
3725
|
+
[ToolNames.Evidence]: { plane: "observe", actionClass: "read", executionMode: "sequential" },
|
|
3470
3726
|
[ToolNames.Read]: { plane: "observe", actionClass: "read", executionMode: "parallel" },
|
|
3471
3727
|
[ToolNames.Grep]: { plane: "observe", actionClass: "read", executionMode: "parallel" },
|
|
3472
3728
|
[ToolNames.Find]: { plane: "observe", actionClass: "read", executionMode: "parallel" },
|
|
@@ -3499,6 +3755,14 @@ var TOOL_PLANES = {
|
|
|
3499
3755
|
// panes. It mutates no workspace, so it stays read class; sequential because
|
|
3500
3756
|
// two pane operations in one batch would race the same pane registry.
|
|
3501
3757
|
[ToolNames.Panes]: { plane: "orchestrate", actionClass: "read", executionMode: "sequential" },
|
|
3758
|
+
// limitation records a typed receipt in the session ledger and nothing
|
|
3759
|
+
// else: no filesystem, no shell. Read class so it never trips a safety
|
|
3760
|
+
// gate; parallel because the call is pure and idempotent.
|
|
3761
|
+
[ToolNames.Limitation]: { plane: "orchestrate", actionClass: "read", executionMode: "parallel" },
|
|
3762
|
+
// decide appends one decision-board entry to the session ledger and
|
|
3763
|
+
// nothing else. Read class so it never trips a safety gate; sequential so
|
|
3764
|
+
// two decisions in one batch never race the supersede lookup.
|
|
3765
|
+
[ToolNames.Decide]: { plane: "orchestrate", actionClass: "read", executionMode: "sequential" },
|
|
3502
3766
|
[ToolNames.WebFetch]: { plane: "retrieve", actionClass: "read", executionMode: "parallel" },
|
|
3503
3767
|
[ToolNames.AskUser]: { plane: "interact", actionClass: "read", executionMode: "sequential" },
|
|
3504
3768
|
[ToolNames.Artifact]: { plane: "artifact", actionClass: "write", executionMode: "sequential" }
|
|
@@ -3605,6 +3869,10 @@ function renderTaskBoardText(board, userTasks = []) {
|
|
|
3605
3869
|
if (task.status === "blocked" && task.reason) line += ` \u2014 blocked: ${task.reason}`;
|
|
3606
3870
|
if (task.status === "cancelled" && task.reason) line += ` \u2014 dropped: ${task.reason}`;
|
|
3607
3871
|
lines.push(line);
|
|
3872
|
+
const outputs = userTasks.find((item) => item.id === task.userTaskId)?.acceptance?.expectedOutputs;
|
|
3873
|
+
if (outputs?.length) lines.push(` expected outputs: ${outputs.join(", ")}`);
|
|
3874
|
+
for (const item of task.requiredValidationEvidence ?? [])
|
|
3875
|
+
lines.push(` acceptance: ${item.command} (${item.status}; ${item.notes})`);
|
|
3608
3876
|
}
|
|
3609
3877
|
if (counts.open > 0 && counts.active === 0) {
|
|
3610
3878
|
lines.push(`next: start a task with action="start" before working it`);
|
|
@@ -3738,7 +4006,12 @@ function createTasksTool(deps) {
|
|
|
3738
4006
|
if (userTask.status !== "open" && userTask.status !== "handed") {
|
|
3739
4007
|
return { kind: "error", message: `tasks: operator task ${id} is ${userTask.status}; it cannot be picked` };
|
|
3740
4008
|
}
|
|
3741
|
-
const result2 = deps.board.apply({
|
|
4009
|
+
const result2 = deps.board.apply({
|
|
4010
|
+
op: "pick",
|
|
4011
|
+
title: userTask.title,
|
|
4012
|
+
userTaskId: userTask.id,
|
|
4013
|
+
...userTask.acceptance ? { verification: userTask.acceptance.verification } : {}
|
|
4014
|
+
});
|
|
3742
4015
|
if (!result2.ok) return { kind: "error", message: `tasks: ${result2.message}` };
|
|
3743
4016
|
const picked = result2.board.tasks.find((task) => task.userTaskId === userTask.id && task.status === "pending");
|
|
3744
4017
|
if (!picked) return { kind: "error", message: `tasks: durable pickup for ${id} did not produce a board row` };
|
|
@@ -3840,6 +4113,7 @@ note: ${pathArg} no longer ends with a newline; the previous content did`;
|
|
|
3840
4113
|
// src/tools/core-bootstrap.ts
|
|
3841
4114
|
function registerCoreTools(registry, deps = {}) {
|
|
3842
4115
|
const includeNetworkTools = !networkToolsDisabled();
|
|
4116
|
+
registry.register(builtin(evidenceTool, { path: "src/tools/evidence.ts", scope: "core" }));
|
|
3843
4117
|
registry.register({
|
|
3844
4118
|
...builtin(readTool, { path: "src/tools/read.ts", scope: "core" })
|
|
3845
4119
|
});
|
|
@@ -3864,7 +4138,7 @@ function registerCoreTools(registry, deps = {}) {
|
|
|
3864
4138
|
if (includeNetworkTools) {
|
|
3865
4139
|
registry.register({
|
|
3866
4140
|
...builtin(
|
|
3867
|
-
lazyTool(webFetchToolSurface, async () => (await import("./web-fetch-
|
|
4141
|
+
lazyTool(webFetchToolSurface, async () => (await import("./web-fetch-V4FKSDAV.js")).webFetchTool),
|
|
3868
4142
|
{ path: "src/tools/web-fetch.ts", scope: "core" }
|
|
3869
4143
|
)
|
|
3870
4144
|
});
|
|
@@ -3874,13 +4148,13 @@ function registerCoreTools(registry, deps = {}) {
|
|
|
3874
4148
|
});
|
|
3875
4149
|
registry.register({
|
|
3876
4150
|
...builtin(
|
|
3877
|
-
lazyTool(verifyToolSurface, async () => (await import("./verify-
|
|
4151
|
+
lazyTool(verifyToolSurface, async () => (await import("./verify-FWYGPKMR.js")).verifyTool),
|
|
3878
4152
|
{ path: "src/tools/verify/index.ts", scope: "core" }
|
|
3879
4153
|
)
|
|
3880
4154
|
});
|
|
3881
4155
|
registry.register({
|
|
3882
4156
|
...builtin(
|
|
3883
|
-
lazyTool(codeNavToolSurface, async () => (await import("./code-nav-
|
|
4157
|
+
lazyTool(codeNavToolSurface, async () => (await import("./code-nav-IJR2DBPR.js")).codeNavTool),
|
|
3884
4158
|
{ path: "src/tools/codewiki/code-nav.ts", scope: "core" }
|
|
3885
4159
|
)
|
|
3886
4160
|
});
|
|
@@ -3900,12 +4174,21 @@ function registerCoreTools(registry, deps = {}) {
|
|
|
3900
4174
|
registry.register({
|
|
3901
4175
|
...builtin(credentialPresentTool, { path: "src/tools/credential-present.ts", scope: "core" })
|
|
3902
4176
|
});
|
|
4177
|
+
registry.register({
|
|
4178
|
+
...builtin(limitationTool, { path: "src/tools/limitation.ts", scope: "core" })
|
|
4179
|
+
});
|
|
4180
|
+
registry.register({
|
|
4181
|
+
...builtin(createDecideTool(deps.decisionBoard ? { decisionBoard: deps.decisionBoard } : {}), {
|
|
4182
|
+
path: "src/tools/decide.ts",
|
|
4183
|
+
scope: "core"
|
|
4184
|
+
})
|
|
4185
|
+
});
|
|
3903
4186
|
const session = deps.session;
|
|
3904
4187
|
const readSessionEntries = deps.readSessionEntries;
|
|
3905
4188
|
registry.register({
|
|
3906
4189
|
...builtin(
|
|
3907
4190
|
lazyTool(contextToolSurface, async () => {
|
|
3908
|
-
const { createContextTool } = await import("./context-
|
|
4191
|
+
const { createContextTool } = await import("./context-2DKHWH2T.js");
|
|
3909
4192
|
if (!session) return createContextTool(skillToolDeps);
|
|
3910
4193
|
const { probeWorkspace } = await import("./workspace-ZJ6BFM3Q.js");
|
|
3911
4194
|
return createContextTool({
|
|
@@ -4003,4 +4286,4 @@ export {
|
|
|
4003
4286
|
registerCoreTools,
|
|
4004
4287
|
assertRegisteredBuiltinTools
|
|
4005
4288
|
};
|
|
4006
|
-
//# sourceMappingURL=chunk-
|
|
4289
|
+
//# sourceMappingURL=chunk-36CT5VVL.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-5B2AEOW5.js";
|
|
8
8
|
import {
|
|
9
9
|
ToolNames
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-4NSRCOYP.js";
|
|
11
11
|
import {
|
|
12
12
|
StringEnum
|
|
13
13
|
} from "./chunk-YPC6ZR5L.js";
|
|
@@ -36,4 +36,4 @@ var panesToolSurface = {
|
|
|
36
36
|
export {
|
|
37
37
|
panesToolSurface
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-3GY4F45V.js.map
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
printError
|
|
4
|
-
} from "./chunk-VPKWYKEY.js";
|
|
5
|
-
import {
|
|
3
|
+
printError,
|
|
6
4
|
source_default
|
|
7
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-JCI2ROMZ.js";
|
|
8
6
|
import {
|
|
9
7
|
authStoragePath
|
|
10
8
|
} from "./chunk-ID64D7PE.js";
|
|
@@ -35,4 +33,4 @@ export {
|
|
|
35
33
|
printPlaintextCredentialWarning,
|
|
36
34
|
credentialWriteFailed
|
|
37
35
|
};
|
|
38
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-3ODX73FK.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-4NSRCOYP.js";
|
|
8
8
|
import {
|
|
9
9
|
StringEnum
|
|
10
10
|
} from "./chunk-YPC6ZR5L.js";
|
|
@@ -32,4 +32,4 @@ var contextToolSurface = {
|
|
|
32
32
|
export {
|
|
33
33
|
contextToolSurface
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
35
|
+
//# sourceMappingURL=chunk-3UNOLWNZ.js.map
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
shellQuote
|
|
4
|
-
} from "./chunk-TXOTCRLG.js";
|
|
5
2
|
import {
|
|
6
3
|
WORKER_BULK_FRAME_MAX_BYTES,
|
|
7
4
|
WORKER_EVENT_QUEUE_MAX_FRAMES,
|
|
@@ -42,6 +39,12 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
42
39
|
import { join as join2 } from "node:path";
|
|
43
40
|
import { performance as performance2 } from "node:perf_hooks";
|
|
44
41
|
|
|
42
|
+
// src/core/shell-quote.ts
|
|
43
|
+
init_esm_shims();
|
|
44
|
+
function shellQuote(value) {
|
|
45
|
+
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
46
|
+
}
|
|
47
|
+
|
|
45
48
|
// src/domains/dispatch/route-facts.ts
|
|
46
49
|
init_esm_shims();
|
|
47
50
|
var ROUTE_FACT_FRESHNESS_MS = 15 * 60 * 1e3;
|
|
@@ -929,6 +932,7 @@ async function runFleetNodePreflight(node, projectRoot, options) {
|
|
|
929
932
|
}
|
|
930
933
|
|
|
931
934
|
export {
|
|
935
|
+
shellQuote,
|
|
932
936
|
computeSettingsFingerprint,
|
|
933
937
|
receiptAttestationFields,
|
|
934
938
|
spawnNativeWorker,
|
|
@@ -940,4 +944,4 @@ export {
|
|
|
940
944
|
routeFactVerdict,
|
|
941
945
|
runFleetNodePreflight
|
|
942
946
|
};
|
|
943
|
-
//# sourceMappingURL=chunk-
|
|
947
|
+
//# sourceMappingURL=chunk-3UUXNFEX.js.map
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
openLedger,
|
|
9
9
|
readFleetRun
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-NRO2BJRH.js";
|
|
11
11
|
import {
|
|
12
12
|
WRITE_BOUNDARY_VIOLATION_REASON
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-QUFRYSWI.js";
|
|
14
14
|
import {
|
|
15
15
|
formatTrustSummaryLine,
|
|
16
16
|
inspectRunReceiptTrustStatus
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-CUSRQKPU.js";
|
|
18
18
|
import {
|
|
19
19
|
readRunEventJournal,
|
|
20
20
|
runEventJournalPath
|
|
@@ -570,4 +570,4 @@ export {
|
|
|
570
570
|
loadFleetRunViewModel,
|
|
571
571
|
runFleetView
|
|
572
572
|
};
|
|
573
|
-
//# sourceMappingURL=chunk-
|
|
573
|
+
//# sourceMappingURL=chunk-4M6Z5QVF.js.map
|
|
@@ -8,6 +8,7 @@ init_esm_shims();
|
|
|
8
8
|
var ToolNames = {
|
|
9
9
|
// OBSERVE
|
|
10
10
|
Read: "read",
|
|
11
|
+
Evidence: "evidence",
|
|
11
12
|
Grep: "grep",
|
|
12
13
|
Find: "find",
|
|
13
14
|
Ls: "ls",
|
|
@@ -28,6 +29,8 @@ var ToolNames = {
|
|
|
28
29
|
Tasks: "tasks",
|
|
29
30
|
Ledger: "ledger",
|
|
30
31
|
Panes: "panes",
|
|
32
|
+
Limitation: "limitation",
|
|
33
|
+
Decide: "decide",
|
|
31
34
|
// RETRIEVE
|
|
32
35
|
WebFetch: "web_fetch",
|
|
33
36
|
// INTERACT
|
|
@@ -52,4 +55,4 @@ export {
|
|
|
52
55
|
ToolNames,
|
|
53
56
|
isBuiltinToolName
|
|
54
57
|
};
|
|
55
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-4NSRCOYP.js.map
|