@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
|
@@ -27,6 +27,8 @@ export interface AccountabilitySummary {
|
|
|
27
27
|
totalRuns: number;
|
|
28
28
|
firstPassRuns: number;
|
|
29
29
|
firstPassRate: number;
|
|
30
|
+
unverifiedSuccesses: number;
|
|
31
|
+
ungroundedClaims: number;
|
|
30
32
|
failureCauses: ReadonlyArray<{ tag: EvidenceTag; count: number }>;
|
|
31
33
|
}
|
|
32
34
|
|
|
@@ -38,9 +40,19 @@ export interface AccountabilitySummary {
|
|
|
38
40
|
export function summarizeEvidenceIndex(rows: ReadonlyArray<EvidenceIndexRow>): AccountabilitySummary {
|
|
39
41
|
const totalRuns = rows.length;
|
|
40
42
|
let firstPassRuns = 0;
|
|
43
|
+
let unverifiedSuccesses = 0;
|
|
44
|
+
let ungroundedClaims = 0;
|
|
41
45
|
const counts = new Map<EvidenceTag, number>();
|
|
42
46
|
for (const row of rows) {
|
|
43
47
|
if (row.firstPassSuccess) firstPassRuns += 1;
|
|
48
|
+
if (
|
|
49
|
+
row.succeeded === true &&
|
|
50
|
+
(row.tags.includes("no-validation") ||
|
|
51
|
+
row.tags.includes("proxy-validation") ||
|
|
52
|
+
row.completionEvidenceWarning === true)
|
|
53
|
+
)
|
|
54
|
+
unverifiedSuccesses += 1;
|
|
55
|
+
ungroundedClaims += row.ungroundedClaims ?? 0;
|
|
44
56
|
for (const tag of row.tags) {
|
|
45
57
|
if (!FAILURE_CAUSE_TAGS.has(tag)) continue;
|
|
46
58
|
counts.set(tag, (counts.get(tag) ?? 0) + 1);
|
|
@@ -53,6 +65,8 @@ export function summarizeEvidenceIndex(rows: ReadonlyArray<EvidenceIndexRow>): A
|
|
|
53
65
|
totalRuns,
|
|
54
66
|
firstPassRuns,
|
|
55
67
|
firstPassRate: totalRuns === 0 ? 0 : firstPassRuns / totalRuns,
|
|
68
|
+
unverifiedSuccesses,
|
|
69
|
+
ungroundedClaims,
|
|
56
70
|
failureCauses,
|
|
57
71
|
};
|
|
58
72
|
}
|
|
@@ -60,7 +74,7 @@ export function summarizeEvidenceIndex(rows: ReadonlyArray<EvidenceIndexRow>): A
|
|
|
60
74
|
/**
|
|
61
75
|
* Read the sidecar index from the state dir and summarize it. Tolerant by way of
|
|
62
76
|
* `readEvidenceIndex`: a missing or corrupt index yields the empty summary
|
|
63
|
-
*
|
|
77
|
+
* with zero counters and an empty failure-cause histogram.
|
|
64
78
|
*/
|
|
65
79
|
export function readAccountabilitySummary(stateDir: string): AccountabilitySummary {
|
|
66
80
|
return summarizeEvidenceIndex(readEvidenceIndex(stateDir));
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { ResponseModelIdObservationCounts } from "../../core/response-model-id.js";
|
|
2
|
+
import type { AgentAudience } from "../agents/spec.js";
|
|
3
|
+
import type { RunToolBudgetEnvelope } from "../dispatch/budget-envelope.js";
|
|
4
|
+
import type { DispatchSnapshot } from "../dispatch/contract.js";
|
|
5
|
+
import type { DispatchRequestOrigin, RunKind } from "../dispatch/types.js";
|
|
6
|
+
import type { TrustSummaryProjection } from "../evidence/trust-projection.js";
|
|
7
|
+
import type { CanonicalTrustStatus } from "../evidence/trust-status.js";
|
|
2
8
|
import type { TargetStatus } from "../providers/contract.js";
|
|
3
9
|
import type { CostProvenance } from "../providers/index.js";
|
|
4
10
|
import type { AccountabilitySummary } from "./accountability.js";
|
|
@@ -6,6 +12,7 @@ import type { CostAggregate, CostEntry, CostEntryLabel, UsageBreakdown } from ".
|
|
|
6
12
|
import type { MetricsView } from "./metrics.js";
|
|
7
13
|
import type { TelemetrySnapshot } from "./telemetry.js";
|
|
8
14
|
import type { SessionTurnTrace } from "./trace-store.js";
|
|
15
|
+
import type { WorkerProgressSnapshot } from "./worker-progress.js";
|
|
9
16
|
|
|
10
17
|
export interface TokenThroughputSnapshot {
|
|
11
18
|
tokensPerSecond: number;
|
|
@@ -41,9 +48,9 @@ export interface ObservabilityNotice {
|
|
|
41
48
|
|
|
42
49
|
/**
|
|
43
50
|
* Compact lifecycle summary for a recent dispatch run. Projected from the
|
|
44
|
-
* dispatch bus channels;
|
|
45
|
-
*
|
|
46
|
-
* forensic bundle for the run finalizes.
|
|
51
|
+
* dispatch bus channels; raw tool arguments and reasoning are absent. Worker
|
|
52
|
+
* progress is a bounded, redacted presentation of the live stream. `evidence`
|
|
53
|
+
* is populated asynchronously once the forensic bundle for the run finalizes.
|
|
47
54
|
*/
|
|
48
55
|
export interface ObservabilityRunSummary {
|
|
49
56
|
runId: string;
|
|
@@ -51,8 +58,29 @@ export interface ObservabilityRunSummary {
|
|
|
51
58
|
targetId?: string;
|
|
52
59
|
modelId?: string;
|
|
53
60
|
runtimeId?: string;
|
|
54
|
-
runtimeKind?:
|
|
55
|
-
status: "enqueued" | "running" | "completed" | "failed" | "aborted" | "dead" | "stale";
|
|
61
|
+
runtimeKind?: RunKind;
|
|
62
|
+
status: "enqueued" | "running" | "completed" | "failed" | "aborted" | "dead" | "stale" | "cancelling" | "retrying";
|
|
63
|
+
agentAudience?: AgentAudience;
|
|
64
|
+
requestOrigin?: DispatchRequestOrigin;
|
|
65
|
+
endpoint?: { key: string; label: string; limit: number };
|
|
66
|
+
taskSummary?: string;
|
|
67
|
+
budget?: RunToolBudgetEnvelope;
|
|
68
|
+
ttftMs?: number | null;
|
|
69
|
+
node?: string;
|
|
70
|
+
gate?: { role: string; cycle: number };
|
|
71
|
+
council?: { group: string; label: string; color?: string; round: number };
|
|
72
|
+
hostVerification?: "verified" | "rejected" | "skipped" | "not_implicated";
|
|
73
|
+
trust?: TrustSummaryProjection;
|
|
74
|
+
rerouteCount?: number;
|
|
75
|
+
failoverHops?: number;
|
|
76
|
+
contextWindow?: number;
|
|
77
|
+
lastContextTokens?: number;
|
|
78
|
+
progress?: WorkerProgressSnapshot;
|
|
79
|
+
receiptId?: string;
|
|
80
|
+
retry?: { attempt: number; dueAtMs: number; reason: string };
|
|
81
|
+
steerAcknowledgement?: { receivedAtMs: number; chars: number };
|
|
82
|
+
writeRecordDowngrade?: { reason: "opaque_tool_succeeded"; tool: string; toolCallId: string };
|
|
83
|
+
phase?: { wave: number; stepId: string };
|
|
56
84
|
startedAtMs: number;
|
|
57
85
|
updatedAtMs: number;
|
|
58
86
|
finishedAtMs: number | null;
|
|
@@ -101,7 +129,23 @@ export interface ObservabilitySnapshot {
|
|
|
101
129
|
pendingEvidenceBuildRunIds: readonly string[];
|
|
102
130
|
}
|
|
103
131
|
|
|
104
|
-
|
|
132
|
+
/** Runtime readers supplied after dispatch is composed, avoiding a domain dependency cycle. */
|
|
133
|
+
export interface ObservabilityRunReaders {
|
|
134
|
+
dispatchSnapshot?: () => DispatchSnapshot;
|
|
135
|
+
readReceipt?: (runId: string) => { text?: string; trust?: CanonicalTrustStatus } | null;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** Run projection controls shared by the contract and the in-memory projection. */
|
|
139
|
+
export interface ObservabilityRunProjection {
|
|
140
|
+
/** Bind live dispatch and receipt readers; disposal detaches this binding only. */
|
|
141
|
+
bindRunReaders(readers: ObservabilityRunReaders): () => void;
|
|
142
|
+
/** Fold retry timers and live counters from the dispatch reader. */
|
|
143
|
+
reconcileRuns(): void;
|
|
144
|
+
/** Record an explicit fleet position, including before a run's first event. */
|
|
145
|
+
setFleetPhase(runId: string, phase: NonNullable<ObservabilityRunSummary["phase"]>): void;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export interface ObservabilityContract extends ObservabilityRunProjection {
|
|
105
149
|
/** Raw counter + histogram view. */
|
|
106
150
|
telemetry(): TelemetrySnapshot;
|
|
107
151
|
/** Aggregated view the TUI consumes. */
|
|
@@ -114,7 +158,8 @@ export interface ObservabilityContract {
|
|
|
114
158
|
/** Running session cost log entries. */
|
|
115
159
|
costEntries(): ReadonlyArray<CostEntry>;
|
|
116
160
|
/**
|
|
117
|
-
* Rolling first-pass-success rate
|
|
161
|
+
* Rolling first-pass-success rate, unverified successes, ungrounded claims,
|
|
162
|
+
* and failure-cause histogram, aggregated
|
|
118
163
|
* from the sidecar evidence index on call. Read-only: it folds rows Slice 2
|
|
119
164
|
* already wrote and recomputes no evidence.
|
|
120
165
|
*/
|
|
@@ -42,6 +42,10 @@ export interface EvidenceIndexRow {
|
|
|
42
42
|
tags: EvidenceTag[];
|
|
43
43
|
firstPassSuccess: boolean;
|
|
44
44
|
findingCount: number;
|
|
45
|
+
/** Absent on historical rows; never infer success from firstPassSuccess. */
|
|
46
|
+
succeeded?: boolean;
|
|
47
|
+
completionEvidenceWarning?: boolean;
|
|
48
|
+
ungroundedClaims?: number;
|
|
45
49
|
/** ISO-8601 timestamp the row was written. */
|
|
46
50
|
generatedAt: string;
|
|
47
51
|
}
|
|
@@ -60,6 +64,12 @@ function isEvidenceIndexRow(value: unknown): value is EvidenceIndexRow {
|
|
|
60
64
|
row.tags.every((tag) => typeof tag === "string") &&
|
|
61
65
|
typeof row.firstPassSuccess === "boolean" &&
|
|
62
66
|
typeof row.findingCount === "number" &&
|
|
67
|
+
(row.succeeded === undefined || typeof row.succeeded === "boolean") &&
|
|
68
|
+
(row.completionEvidenceWarning === undefined || typeof row.completionEvidenceWarning === "boolean") &&
|
|
69
|
+
(row.ungroundedClaims === undefined ||
|
|
70
|
+
(typeof row.ungroundedClaims === "number" &&
|
|
71
|
+
Number.isSafeInteger(row.ungroundedClaims) &&
|
|
72
|
+
row.ungroundedClaims >= 0)) &&
|
|
63
73
|
typeof row.generatedAt === "string"
|
|
64
74
|
);
|
|
65
75
|
}
|
|
@@ -130,6 +130,11 @@ function evidenceIndexRow(
|
|
|
130
130
|
tags: [...tags],
|
|
131
131
|
firstPassSuccess,
|
|
132
132
|
findingCount: result.findings.length,
|
|
133
|
+
succeeded,
|
|
134
|
+
completionEvidenceWarning: result.findings.some(
|
|
135
|
+
(finding) => finding.tag === "completion-evidence" && finding.severity === "warn",
|
|
136
|
+
),
|
|
137
|
+
ungroundedClaims: result.ungroundedClaims,
|
|
133
138
|
generatedAt: new Date().toISOString(),
|
|
134
139
|
};
|
|
135
140
|
}
|
|
@@ -178,11 +183,7 @@ export function createObservabilityBundle(
|
|
|
178
183
|
projection.evidenceBuildStarted(runId);
|
|
179
184
|
const build = buildAndIndexEvidence(runId, succeeded, attempt, {
|
|
180
185
|
onReady: (id, evidence) => {
|
|
181
|
-
projection
|
|
182
|
-
// The same fact, once, for listeners outside this closure (the ACP
|
|
183
|
-
// server forwards it as the opt-in `accountability.evidenceReady`
|
|
184
|
-
// kind). The payload spreads the evidence object the projection just
|
|
185
|
-
// received rather than rebuilding it, so the two cannot drift.
|
|
186
|
+
// The projection and ACP consume the same evidence-ready event.
|
|
186
187
|
context.bus.emit(BusChannels.AccountabilityEvidenceReady, { runId: id, ...evidence });
|
|
187
188
|
},
|
|
188
189
|
onFailed: (id, message) => projection.evidenceBuildFailed(id, message),
|
|
@@ -286,6 +287,9 @@ export function createObservabilityBundle(
|
|
|
286
287
|
telemetry.record("histogram", "tokens.ttft_ms", snapshot.ttftMs ?? 0);
|
|
287
288
|
projection.refresh();
|
|
288
289
|
},
|
|
290
|
+
bindRunReaders: (readers) => projection.bindRunReaders(readers),
|
|
291
|
+
reconcileRuns: () => projection.reconcileRuns(),
|
|
292
|
+
setFleetPhase: (runId, phase) => projection.setFleetPhase(runId, phase),
|
|
289
293
|
snapshot: () => projection.snapshot(),
|
|
290
294
|
subscribe: (listener) => projection.subscribe(listener),
|
|
291
295
|
};
|