@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
|
@@ -4,33 +4,27 @@ import {
|
|
|
4
4
|
extractCommandDeleteTargets,
|
|
5
5
|
extractCommandWriteTargets,
|
|
6
6
|
toolMutationPaths
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-NXYCB2VD.js";
|
|
8
|
+
import {
|
|
9
|
+
PROJECT_VERIFIER_CATALOG_RELATIVE_PATH
|
|
10
|
+
} from "./chunk-DXKJURES.js";
|
|
8
11
|
import {
|
|
9
12
|
isProjectVerifierCheckId,
|
|
10
13
|
isVerificationScriptName
|
|
11
14
|
} from "./chunk-UL3WSD3F.js";
|
|
12
15
|
import {
|
|
13
16
|
ToolNames
|
|
14
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-4NSRCOYP.js";
|
|
15
18
|
import {
|
|
16
19
|
init_esm_shims
|
|
17
20
|
} from "./chunk-3R73A4XB.js";
|
|
18
21
|
|
|
19
22
|
// src/domains/safety/finish-contract.ts
|
|
20
23
|
init_esm_shims();
|
|
21
|
-
|
|
24
|
+
import { resolve } from "node:path";
|
|
25
|
+
var FINISH_CONTRACT_ADVISORY_MESSAGE = "[Clio Coder] finish-contract advisory: you changed files this turn without recording validation evidence or a limitation receipt. Run a verification command or call limitation with the scope and reason.";
|
|
22
26
|
var DEFAULT_RECENT_ENTRY_LIMIT = 80;
|
|
23
|
-
var LIMITATION_PATTERNS = [
|
|
24
|
-
/\b(?:blocked by|blocker|blockers|unable to|not able to|could not|couldn't|cannot|can't)\b/i,
|
|
25
|
-
/\b(?:did not|didn't|have not|haven't|has not|hasn't|was not able|wasn't able)\b/i,
|
|
26
|
-
/\b(?:not complete|incomplete)\b/i,
|
|
27
|
-
/\b(?:not|un)(?:\s|-)?(?:validated|verified|tested)\b/i,
|
|
28
|
-
/^\s*Tests\s*:\s*(?:not run|not executed|not available|failed|blocked|skipped)\b/im,
|
|
29
|
-
/^\s*Known gaps?\s*:\s*(?!\s*(?:none|no\b|n\/a|not applicable)\b).+/im,
|
|
30
|
-
/\bremaining(?:\s+\w+){0,3}\s+(?:work|issue|issues|gap|gaps|blocker|blockers)\b/i
|
|
31
|
-
];
|
|
32
27
|
function assessFinishContract(input) {
|
|
33
|
-
const assistantText = input.assistantText.trim();
|
|
34
28
|
const sessionEntries = input.sessionEntries ?? [];
|
|
35
29
|
const assistantTurnId = input.assistantTurnId ?? null;
|
|
36
30
|
const window = recentEntries(sessionEntries, assistantTurnId, input.recentEntryLimit ?? DEFAULT_RECENT_ENTRY_LIMIT);
|
|
@@ -38,12 +32,38 @@ function assessFinishContract(input) {
|
|
|
38
32
|
if (mutatedPaths.length === 0) {
|
|
39
33
|
return { kind: "ok", reason: "no_mutation", evidence: [], mutatedPaths };
|
|
40
34
|
}
|
|
41
|
-
const
|
|
35
|
+
const acceptanceChecks = new Set(input.activeAcceptance?.verification.map((item) => item.check) ?? []);
|
|
36
|
+
const evidence = collectValidationEvidence(window, acceptanceChecks, input.workspaceRoot);
|
|
37
|
+
const limitations = collectLimitationEvidence(window);
|
|
38
|
+
const required = input.rigor === "high" ? input.activeAcceptance?.verification ?? [] : [];
|
|
39
|
+
if (required.length > 0) {
|
|
40
|
+
const passes = new Set(
|
|
41
|
+
required.filter((check) => evidence.some((item) => acceptanceCheckPassed(item, check, input.workspaceRoot)))
|
|
42
|
+
);
|
|
43
|
+
const limited = new Set(limitations.flatMap((item) => item.paths ?? []));
|
|
44
|
+
const missing = [
|
|
45
|
+
...new Set(required.filter((check) => !passes.has(check) && !limited.has(check.check)).map((item) => item.check))
|
|
46
|
+
];
|
|
47
|
+
if (missing.length > 0)
|
|
48
|
+
return {
|
|
49
|
+
kind: "engage",
|
|
50
|
+
reason: "unvalidated_mutation",
|
|
51
|
+
message: `[Clio Coder] high-rigor finish gate: operator acceptance still requires passing validation for: ${missing.join(", ")}. Run each named check or include its exact id in limitation.paths.`,
|
|
52
|
+
evidence: [...evidence, ...limitations],
|
|
53
|
+
mutatedPaths
|
|
54
|
+
};
|
|
55
|
+
return {
|
|
56
|
+
kind: "ok",
|
|
57
|
+
reason: passes.size === required.length ? "validation_evidence" : "explicit_limitation",
|
|
58
|
+
evidence: [...evidence, ...limitations],
|
|
59
|
+
mutatedPaths
|
|
60
|
+
};
|
|
61
|
+
}
|
|
42
62
|
if (evidence.length > 0) {
|
|
43
63
|
return { kind: "ok", reason: "validation_evidence", evidence, mutatedPaths };
|
|
44
64
|
}
|
|
45
|
-
if (
|
|
46
|
-
return { kind: "ok", reason: "explicit_limitation", evidence:
|
|
65
|
+
if (limitations.length > 0) {
|
|
66
|
+
return { kind: "ok", reason: "explicit_limitation", evidence: limitations, mutatedPaths };
|
|
47
67
|
}
|
|
48
68
|
return {
|
|
49
69
|
kind: "engage",
|
|
@@ -53,10 +73,59 @@ function assessFinishContract(input) {
|
|
|
53
73
|
mutatedPaths
|
|
54
74
|
};
|
|
55
75
|
}
|
|
56
|
-
function
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
76
|
+
function acceptanceCheckPassed(evidence, required, workspaceRoot) {
|
|
77
|
+
if (evidence.kind !== "validation_command" || evidence.check !== required.check || !workspaceRoot || !evidence.source)
|
|
78
|
+
return false;
|
|
79
|
+
if (evidence.durationMs !== void 0 && evidence.durationMs > required.timeoutMs) return false;
|
|
80
|
+
const root = resolve(workspaceRoot);
|
|
81
|
+
if (evidence.source.kind === "project-catalog")
|
|
82
|
+
return evidence.source.path === resolve(root, PROJECT_VERIFIER_CATALOG_RELATIVE_PATH);
|
|
83
|
+
return evidence.source.path === resolve(root, "package.json") && evidence.cwd === root && validationCheckId(evidence.argv?.join(" ") ?? "") === required.check;
|
|
84
|
+
}
|
|
85
|
+
function collectLimitationEvidence(recent) {
|
|
86
|
+
const evidence = [];
|
|
87
|
+
const calls = /* @__PURE__ */ new Map();
|
|
88
|
+
const seen = /* @__PURE__ */ new Set();
|
|
89
|
+
for (const entry of recent) {
|
|
90
|
+
const call = limitationToolCall(entry);
|
|
91
|
+
if (call !== null) {
|
|
92
|
+
calls.set(call.toolCallId, call);
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const resultId = successfulToolResultId(entry);
|
|
96
|
+
if (resultId === null) continue;
|
|
97
|
+
const candidate = calls.get(resultId);
|
|
98
|
+
if (candidate === void 0) continue;
|
|
99
|
+
const item = {
|
|
100
|
+
kind: "limitation",
|
|
101
|
+
summary: candidate.command,
|
|
102
|
+
...candidate.paths ? { paths: candidate.paths } : {}
|
|
103
|
+
};
|
|
104
|
+
if (candidate.turnId !== void 0) item.turnId = candidate.turnId;
|
|
105
|
+
pushEvidence(evidence, seen, item);
|
|
106
|
+
}
|
|
107
|
+
return evidence;
|
|
108
|
+
}
|
|
109
|
+
function limitationToolCall(entry) {
|
|
110
|
+
const record = asRecord(entry);
|
|
111
|
+
if (record?.kind !== "message" || record.role !== "tool_call") return null;
|
|
112
|
+
const payload = asRecord(record.payload);
|
|
113
|
+
if (payload === null) return null;
|
|
114
|
+
const toolName = stringFromFirst(payload, ["name", "toolName", "tool"]);
|
|
115
|
+
if (toolName !== ToolNames.Limitation) return null;
|
|
116
|
+
const toolCallId = stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]) ?? turnIdOf(entry);
|
|
117
|
+
if (toolCallId === null) return null;
|
|
118
|
+
const args = asRecord(payload.args ?? payload.arguments ?? payload.input);
|
|
119
|
+
const scope = typeof args?.scope === "string" ? args.scope.trim() : "";
|
|
120
|
+
const reason = typeof args?.reason === "string" ? args.reason.trim() : "";
|
|
121
|
+
const candidate = {
|
|
122
|
+
toolCallId,
|
|
123
|
+
paths: Array.isArray(args?.paths) ? args.paths.filter((item) => typeof item === "string").map((item) => item.trim()) : [],
|
|
124
|
+
command: `limitation recorded: ${scope.length > 0 ? scope : "unspecified"} (reason=${reason.length > 0 ? reason : "unspecified"})`
|
|
125
|
+
};
|
|
126
|
+
const turnId = turnIdOf(entry);
|
|
127
|
+
if (turnId !== null) candidate.turnId = turnId;
|
|
128
|
+
return candidate;
|
|
60
129
|
}
|
|
61
130
|
function mutatingReceipts(recent) {
|
|
62
131
|
const mutationCalls = /* @__PURE__ */ new Map();
|
|
@@ -117,7 +186,7 @@ function pushPath(paths, seen, path) {
|
|
|
117
186
|
seen.add(path);
|
|
118
187
|
paths.push(path);
|
|
119
188
|
}
|
|
120
|
-
function collectValidationEvidence(recent) {
|
|
189
|
+
function collectValidationEvidence(recent, acceptanceChecks, workspaceRoot) {
|
|
121
190
|
const evidence = [];
|
|
122
191
|
const toolCalls = /* @__PURE__ */ new Map();
|
|
123
192
|
const dispatchCalls = /* @__PURE__ */ new Map();
|
|
@@ -128,7 +197,7 @@ function collectValidationEvidence(recent) {
|
|
|
128
197
|
pushEvidence(evidence, seen, protectedArtifact);
|
|
129
198
|
continue;
|
|
130
199
|
}
|
|
131
|
-
const call = bashValidationCall(entry);
|
|
200
|
+
const call = bashValidationCall(entry, acceptanceChecks, workspaceRoot);
|
|
132
201
|
if (call !== null) {
|
|
133
202
|
toolCalls.set(call.toolCallId, call);
|
|
134
203
|
continue;
|
|
@@ -153,11 +222,11 @@ function collectValidationEvidence(recent) {
|
|
|
153
222
|
}
|
|
154
223
|
const candidate = toolCalls.get(resultId);
|
|
155
224
|
if (candidate !== void 0) {
|
|
156
|
-
pushEvidence(evidence, seen, validationEvidence(candidate));
|
|
225
|
+
pushEvidence(evidence, seen, validationEvidence(candidate, entry));
|
|
157
226
|
}
|
|
158
227
|
continue;
|
|
159
228
|
}
|
|
160
|
-
const bashExecution = bashExecutionEvidence(entry);
|
|
229
|
+
const bashExecution = bashExecutionEvidence(entry, acceptanceChecks, workspaceRoot);
|
|
161
230
|
if (bashExecution !== null) pushEvidence(evidence, seen, bashExecution);
|
|
162
231
|
}
|
|
163
232
|
return evidence;
|
|
@@ -175,7 +244,7 @@ function recentEntries(entries, assistantTurnId, recentEntryLimit) {
|
|
|
175
244
|
}
|
|
176
245
|
return entries.slice(startInclusive, endExclusive);
|
|
177
246
|
}
|
|
178
|
-
function bashValidationCall(entry) {
|
|
247
|
+
function bashValidationCall(entry, acceptanceChecks, workspaceRoot) {
|
|
179
248
|
const record = asRecord(entry);
|
|
180
249
|
if (record?.kind !== "message" || record.role !== "tool_call") return null;
|
|
181
250
|
const payload = asRecord(record.payload);
|
|
@@ -185,13 +254,15 @@ function bashValidationCall(entry) {
|
|
|
185
254
|
const args = asRecord(payload.args ?? payload.arguments ?? payload.input);
|
|
186
255
|
const command = typeof args?.command === "string" ? args.command : null;
|
|
187
256
|
if (command === null) return null;
|
|
188
|
-
const detected =
|
|
257
|
+
const detected = acceptanceValidationCommand(command, acceptanceChecks);
|
|
189
258
|
if (detected.kind !== "validation") return null;
|
|
190
259
|
const toolCallId = stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]) ?? turnIdOf(entry);
|
|
191
260
|
if (toolCallId === null) return null;
|
|
192
261
|
const candidate = {
|
|
193
262
|
toolCallId,
|
|
194
|
-
command: detected.matched
|
|
263
|
+
command: detected.matched,
|
|
264
|
+
...validationCheckFields(detected.matched),
|
|
265
|
+
execution: packageCommandExecution(command, args?.cwd, workspaceRoot)
|
|
195
266
|
};
|
|
196
267
|
const turnId = turnIdOf(entry);
|
|
197
268
|
if (turnId !== null) candidate.turnId = turnId;
|
|
@@ -245,7 +316,8 @@ function validationToolCall(entry) {
|
|
|
245
316
|
if (toolCallId === null) return null;
|
|
246
317
|
const candidate = {
|
|
247
318
|
toolCallId,
|
|
248
|
-
command: summary
|
|
319
|
+
command: summary,
|
|
320
|
+
...validationCheckFields(summary)
|
|
249
321
|
};
|
|
250
322
|
const turnId = turnIdOf(entry);
|
|
251
323
|
if (turnId !== null) candidate.turnId = turnId;
|
|
@@ -273,7 +345,8 @@ function successfulToolResultId(entry) {
|
|
|
273
345
|
if (payload.isError === true || payload.error === true) return null;
|
|
274
346
|
const result = asRecord(payload.result);
|
|
275
347
|
const details = asRecord(result?.details);
|
|
276
|
-
if (details?.kind === "error") return null;
|
|
348
|
+
if (result?.kind === "error" || details?.kind === "error") return null;
|
|
349
|
+
if (typeof details?.exitCode === "number" && details.exitCode !== 0) return null;
|
|
277
350
|
return stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]);
|
|
278
351
|
}
|
|
279
352
|
function dispatchReceiptEvidence(entry, candidate) {
|
|
@@ -318,18 +391,20 @@ function dispatchReceiptAgentId(receiptAgentId, candidate) {
|
|
|
318
391
|
if (receiptAgentId !== void 0 && receiptAgentId.length > 0) return receiptAgentId;
|
|
319
392
|
return candidate?.command.match(/^agent=([^\s]+)/)?.[1] ?? "unknown";
|
|
320
393
|
}
|
|
321
|
-
function bashExecutionEvidence(entry) {
|
|
394
|
+
function bashExecutionEvidence(entry, acceptanceChecks, workspaceRoot) {
|
|
322
395
|
const record = asRecord(entry);
|
|
323
396
|
if (record?.kind !== "bashExecution") return null;
|
|
324
397
|
if (typeof record.command !== "string") return null;
|
|
325
398
|
if (record.cancelled === true) return null;
|
|
326
399
|
if (record.exitCode !== 0) return null;
|
|
327
|
-
const detected =
|
|
400
|
+
const detected = acceptanceValidationCommand(record.command, acceptanceChecks);
|
|
328
401
|
if (detected.kind !== "validation") return null;
|
|
329
402
|
const contextMarker = record.excludeFromContext === true ? " [not sent to model]" : "";
|
|
330
403
|
const evidence = {
|
|
331
404
|
kind: "validation_command",
|
|
332
|
-
summary: `validation command passed: ${detected.matched}${contextMarker}
|
|
405
|
+
summary: `validation command passed: ${detected.matched}${contextMarker}`,
|
|
406
|
+
...validationCheckFields(detected.matched),
|
|
407
|
+
...packageCommandExecution(record.command, record.cwd, workspaceRoot)
|
|
333
408
|
};
|
|
334
409
|
const turnId = turnIdOf(entry);
|
|
335
410
|
if (turnId !== null) evidence.turnId = turnId;
|
|
@@ -349,16 +424,46 @@ function protectedArtifactEvidence(entry) {
|
|
|
349
424
|
if (turnId !== null) evidence.turnId = turnId;
|
|
350
425
|
return evidence;
|
|
351
426
|
}
|
|
352
|
-
function validationEvidence(candidate) {
|
|
427
|
+
function validationEvidence(candidate, entry) {
|
|
353
428
|
const evidence = {
|
|
354
429
|
kind: "validation_command",
|
|
355
|
-
summary: `validation command passed: ${candidate.command}
|
|
430
|
+
summary: `validation command passed: ${candidate.command}`,
|
|
431
|
+
...candidate.check ? { check: candidate.check } : {},
|
|
432
|
+
...candidate.execution ?? declaredCheckExecution(entry, candidate.check)
|
|
356
433
|
};
|
|
357
434
|
if (candidate.turnId !== void 0) evidence.turnId = candidate.turnId;
|
|
358
435
|
return evidence;
|
|
359
436
|
}
|
|
437
|
+
function declaredCheckExecution(entry, check) {
|
|
438
|
+
const payload = asRecord(asRecord(entry)?.payload);
|
|
439
|
+
const details = asRecord(asRecord(payload?.result)?.details);
|
|
440
|
+
const source = asRecord(details?.source);
|
|
441
|
+
if (!details || details.check !== check || details.exitCode !== 0 || details.aborted === true || details.timedOut === true || details.outputCapped === true || source?.kind !== "package.json" && source?.kind !== "project-catalog" || typeof source.path !== "string" || typeof details.cwd !== "string" || !Array.isArray(details.argv) || !details.argv.every((arg) => typeof arg === "string"))
|
|
442
|
+
return {};
|
|
443
|
+
if (source.kind === "project-catalog") {
|
|
444
|
+
const argv = details.argv;
|
|
445
|
+
if (!Array.isArray(details.declaredCommand) || details.declaredCommand.length !== details.argv.length || !details.declaredCommand.every((arg, index) => arg === argv[index]) || typeof details.declaredCwd !== "string" || typeof details.declaredTimeoutMs !== "number" || typeof details.durationMs !== "number" || details.durationMs > details.declaredTimeoutMs || resolve(source.path, "../..", details.declaredCwd) !== details.cwd)
|
|
446
|
+
return {};
|
|
447
|
+
}
|
|
448
|
+
return {
|
|
449
|
+
source: { kind: source.kind, path: source.path },
|
|
450
|
+
cwd: details.cwd,
|
|
451
|
+
argv: details.argv,
|
|
452
|
+
...typeof details.durationMs === "number" ? { durationMs: details.durationMs } : {}
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
function packageCommandExecution(command, cwd, workspaceRoot) {
|
|
456
|
+
if (!workspaceRoot || !/^(?:npm|pnpm|yarn|bun) /u.test(command.trim()) || validationCheckId(command.trim()) === void 0)
|
|
457
|
+
return {};
|
|
458
|
+
const executionCwd = resolve(workspaceRoot, typeof cwd === "string" ? cwd : ".");
|
|
459
|
+
return {
|
|
460
|
+
source: { kind: "package.json", path: resolve(executionCwd, "package.json") },
|
|
461
|
+
cwd: executionCwd,
|
|
462
|
+
argv: command.trim().split(/\s+/u)
|
|
463
|
+
};
|
|
464
|
+
}
|
|
360
465
|
function pushEvidence(evidence, seen, item) {
|
|
361
|
-
const key =
|
|
466
|
+
const key = JSON.stringify(item);
|
|
362
467
|
if (seen.has(key)) return;
|
|
363
468
|
seen.add(key);
|
|
364
469
|
evidence.push(item);
|
|
@@ -383,6 +488,19 @@ function stringFromFirst(record, keys) {
|
|
|
383
488
|
function asRecord(value) {
|
|
384
489
|
return value !== null && typeof value === "object" ? value : null;
|
|
385
490
|
}
|
|
491
|
+
function validationCheckId(command) {
|
|
492
|
+
return /^(?:npm|pnpm|yarn|bun) (?:run )?([a-z0-9][a-z0-9._:-]*)$/.exec(command)?.[1] ?? /^verify ([a-z0-9][a-z0-9._:-]*)$/.exec(command)?.[1];
|
|
493
|
+
}
|
|
494
|
+
function validationCheckFields(command) {
|
|
495
|
+
const check = validationCheckId(command);
|
|
496
|
+
return check ? { check } : {};
|
|
497
|
+
}
|
|
498
|
+
function acceptanceValidationCommand(command, checks) {
|
|
499
|
+
const exact = command.trim();
|
|
500
|
+
const check = /^npm run ([a-z0-9][a-z0-9._:-]*)$/.exec(exact)?.[1];
|
|
501
|
+
if (check && checks.has(check)) return { kind: "validation", matched: exact };
|
|
502
|
+
return detectValidationCommand(command);
|
|
503
|
+
}
|
|
386
504
|
|
|
387
505
|
// src/domains/safety/loop-detector.ts
|
|
388
506
|
init_esm_shims();
|
|
@@ -487,6 +605,7 @@ export {
|
|
|
487
605
|
observe,
|
|
488
606
|
DEFAULT_RECENT_ENTRY_LIMIT,
|
|
489
607
|
assessFinishContract,
|
|
608
|
+
recentEntries,
|
|
490
609
|
typedValidationSummary
|
|
491
610
|
};
|
|
492
|
-
//# sourceMappingURL=chunk-
|
|
611
|
+
//# sourceMappingURL=chunk-6QOTUPRG.js.map
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
} from "./chunk-HVDIIIQW.js";
|
|
8
8
|
import {
|
|
9
9
|
protectArtifact
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-NXYCB2VD.js";
|
|
11
11
|
import {
|
|
12
12
|
isSessionEntry,
|
|
13
13
|
isSessionHeader
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-54X7T7DK.js";
|
|
15
15
|
import {
|
|
16
16
|
stripTokenizerSentinels
|
|
17
17
|
} from "./chunk-CFGTUFWB.js";
|
|
@@ -1400,7 +1400,13 @@ async function readSessionEntriesForId(stateDir, sessionId) {
|
|
|
1400
1400
|
return { entries: [], missing: false, errors: [`${currentPath}: ${err.message ?? String(err)}`] };
|
|
1401
1401
|
}
|
|
1402
1402
|
}
|
|
1403
|
-
|
|
1403
|
+
const result = parseSessionEntries(raw, source);
|
|
1404
|
+
try {
|
|
1405
|
+
const meta = JSON.parse(await readFile(join3(root, cwdHash2, sessionId, "meta.json"), "utf8"));
|
|
1406
|
+
if (isRecord(meta) && typeof meta.pinnedLeafTurnId === "string") result.leafTurnId = meta.pinnedLeafTurnId;
|
|
1407
|
+
} catch {
|
|
1408
|
+
}
|
|
1409
|
+
return result;
|
|
1404
1410
|
}
|
|
1405
1411
|
return { entries: [], missing: true, errors: [] };
|
|
1406
1412
|
}
|
|
@@ -1481,4 +1487,4 @@ export {
|
|
|
1481
1487
|
ledgerUsageCalls,
|
|
1482
1488
|
SessionDomainModule
|
|
1483
1489
|
};
|
|
1484
|
-
//# sourceMappingURL=chunk-
|
|
1490
|
+
//# sourceMappingURL=chunk-6UINWWS6.js.map
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
} from "./chunk-F4EKGO4N.js";
|
|
24
24
|
import {
|
|
25
25
|
setGitCommitAttributionEnabled
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-U6TMQNSI.js";
|
|
27
27
|
import {
|
|
28
28
|
init_esm_shims
|
|
29
29
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -377,4 +377,4 @@ export {
|
|
|
377
377
|
ConfigDomainModule,
|
|
378
378
|
createConfigDomainModule
|
|
379
379
|
};
|
|
380
|
-
//# sourceMappingURL=chunk-
|
|
380
|
+
//# sourceMappingURL=chunk-72YIHOZQ.js.map
|