@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
|
@@ -1,35 +1,41 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
createWorkerProgressFold
|
|
4
|
+
} from "./chunk-XXYSBZIQ.js";
|
|
2
5
|
import {
|
|
3
6
|
PANES_PRESETS,
|
|
4
7
|
PANES_PRESET_IDS,
|
|
5
8
|
resolvePanesPresetId
|
|
6
9
|
} from "./chunk-35MSIRKH.js";
|
|
10
|
+
import {
|
|
11
|
+
acceptanceFromTaskFlags
|
|
12
|
+
} from "./chunk-EXLD33WO.js";
|
|
7
13
|
import {
|
|
8
14
|
AdmissionCanceledError,
|
|
9
15
|
WORKER_OUTPUT_MAX_BYTES,
|
|
10
|
-
|
|
11
|
-
} from "./chunk-
|
|
16
|
+
decisionRationale
|
|
17
|
+
} from "./chunk-I2DWJ4GM.js";
|
|
12
18
|
import {
|
|
13
19
|
SKILL_SURFACE_CLEAR_ARG,
|
|
14
20
|
parseSkillCommand
|
|
15
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-2ZSONWVL.js";
|
|
16
22
|
import {
|
|
17
23
|
TOOL_PROFILE_NAMES,
|
|
18
24
|
isToolProfileName
|
|
19
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-QZWQA4DE.js";
|
|
20
26
|
import {
|
|
21
27
|
requestExecutionRole
|
|
22
28
|
} from "./chunk-H7IXIC72.js";
|
|
23
29
|
import {
|
|
24
30
|
parseCouncilReport,
|
|
25
31
|
parseOracleResult
|
|
26
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-KFV5L5SK.js";
|
|
27
33
|
import {
|
|
28
34
|
truncateUtf8
|
|
29
35
|
} from "./chunk-6XLNIQDB.js";
|
|
30
36
|
import {
|
|
31
37
|
resolveModelReference
|
|
32
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-JSD46VO2.js";
|
|
33
39
|
import {
|
|
34
40
|
BusChannels
|
|
35
41
|
} from "./chunk-F4EKGO4N.js";
|
|
@@ -106,12 +112,15 @@ function clamp(text, maxBytes) {
|
|
|
106
112
|
return { text: `${buffer.subarray(0, cut).toString("utf8")}${ORACLE_TRUNCATION_MARKER}`, truncated: true };
|
|
107
113
|
}
|
|
108
114
|
function decisionLine(decision) {
|
|
115
|
+
const argument = decisionRationale(decision);
|
|
116
|
+
const details = argument ? `
|
|
117
|
+
${argument}` : "";
|
|
109
118
|
const label = decision.label ? ` (${decision.label})` : "";
|
|
110
119
|
if (decision.status === "superseded") {
|
|
111
120
|
const correction = decision.correction ? `; corrected to ${decision.correction}` : "";
|
|
112
|
-
return `- ${decision.key}${label}: ${decision.value} [superseded${correction}]`;
|
|
121
|
+
return `- ${decision.key}${label}: ${decision.value} [superseded${correction}]${details}`;
|
|
113
122
|
}
|
|
114
|
-
return `- ${decision.key}${label}: ${decision.value}`;
|
|
123
|
+
return `- ${decision.key}${label}: ${decision.value}${details}`;
|
|
115
124
|
}
|
|
116
125
|
function taskLine(task) {
|
|
117
126
|
return `- ${task.id} [${task.status}] ${task.title}`;
|
|
@@ -368,6 +377,32 @@ function parseArgs(spec, argsLine) {
|
|
|
368
377
|
while (index < argsLine.length) {
|
|
369
378
|
const currentPositionalSpec = positionalSpecs[positionalIndex];
|
|
370
379
|
if (currentPositionalSpec?.rest) {
|
|
380
|
+
if (currentSpec.parseFlagsInRest) {
|
|
381
|
+
const text = [];
|
|
382
|
+
while (index < argsLine.length) {
|
|
383
|
+
const start = index;
|
|
384
|
+
const read2 = readToken();
|
|
385
|
+
if (!read2) break;
|
|
386
|
+
if (read2.token === "--") {
|
|
387
|
+
text.push(argsLine.slice(index).trim());
|
|
388
|
+
index = argsLine.length;
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
const flag = flagSpecs.find((item) => item.name === read2.token);
|
|
392
|
+
if (flag) {
|
|
393
|
+
const error = consumeFlag(flag, read2.token);
|
|
394
|
+
if (error) return errorResult(error);
|
|
395
|
+
} else if (read2.token.startsWith("--")) return errorResult(`Unknown flag: ${read2.token}`);
|
|
396
|
+
else text.push(argsLine.slice(start, index));
|
|
397
|
+
skipWhitespace();
|
|
398
|
+
}
|
|
399
|
+
const restVal2 = text.join(" ").trim();
|
|
400
|
+
if (!restVal2) return errorResult(`Missing required argument: ${currentPositionalSpec.name}`);
|
|
401
|
+
positionals.push(restVal2);
|
|
402
|
+
rest = restVal2;
|
|
403
|
+
positionalIndex++;
|
|
404
|
+
break;
|
|
405
|
+
}
|
|
371
406
|
if (currentSpec.parseFlagsBeforeRest) {
|
|
372
407
|
while (index < argsLine.length) {
|
|
373
408
|
const tokenStart = index;
|
|
@@ -601,278 +636,10 @@ init_esm_shims();
|
|
|
601
636
|
|
|
602
637
|
// src/interactive/worker-stream.ts
|
|
603
638
|
init_esm_shims();
|
|
604
|
-
|
|
605
|
-
// src/interactive/worker-progress.ts
|
|
606
|
-
init_esm_shims();
|
|
607
|
-
var WORKER_LIVE_TAIL_LINES = 40;
|
|
608
|
-
var WORKER_LIVE_TAIL_MAX_BYTES = 4096;
|
|
609
|
-
var WORKER_TOOL_NAME_LIMIT = 8;
|
|
610
|
-
var WORKER_ACTION_TRAIL_LIMIT = 4;
|
|
611
|
-
var WORKER_PROGRESS_WINDOW_MS = 250;
|
|
612
|
-
var WORKER_PROGRESS_WINDOW_BYTES = 16384;
|
|
613
|
-
var TAIL_TRUNCATION_MARKER = "";
|
|
614
|
-
function isRecord(value) {
|
|
615
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
616
|
-
}
|
|
617
|
-
function nonEmptyString(value) {
|
|
618
|
-
return typeof value === "string" && value.trim().length > 0 ? value : void 0;
|
|
619
|
-
}
|
|
620
|
-
function workerTextDelta(event) {
|
|
621
|
-
if (!isRecord(event)) return "";
|
|
622
|
-
if (event.type === "message_update") {
|
|
623
|
-
const assistantEvent = isRecord(event.assistantMessageEvent) ? event.assistantMessageEvent : null;
|
|
624
|
-
if (assistantEvent?.type !== "text_delta") return "";
|
|
625
|
-
return typeof assistantEvent.delta === "string" ? assistantEvent.delta : "";
|
|
626
|
-
}
|
|
627
|
-
if (event.type !== "text_delta") return "";
|
|
628
|
-
if (typeof event.delta === "string") return event.delta;
|
|
629
|
-
return typeof event.text === "string" ? event.text : "";
|
|
630
|
-
}
|
|
631
|
-
function isThinkingEvent(event) {
|
|
632
|
-
if (event.type === "thinking_delta") return true;
|
|
633
|
-
if (event.type !== "message_update") return false;
|
|
634
|
-
const assistantEvent = isRecord(event.assistantMessageEvent) ? event.assistantMessageEvent : null;
|
|
635
|
-
return assistantEvent?.type === "thinking_delta";
|
|
636
|
-
}
|
|
637
|
-
function toolEventAction(event) {
|
|
638
|
-
if (event.type !== "clio_coder_tool_start" && event.type !== "clio_coder_tool_finish") return null;
|
|
639
|
-
const payload = isRecord(event.payload) ? event.payload : null;
|
|
640
|
-
const tool = nonEmptyString(payload?.tool);
|
|
641
|
-
if (tool === void 0) return null;
|
|
642
|
-
const toolCallId = nonEmptyString(payload?.toolCallId);
|
|
643
|
-
const raw = isRecord(payload?.action) ? payload.action : void 0;
|
|
644
|
-
const verb = nonEmptyString(raw?.verb);
|
|
645
|
-
if (verb === void 0) return { tool, ...toolCallId !== void 0 ? { toolCallId } : {} };
|
|
646
|
-
const object = nonEmptyString(raw?.object);
|
|
647
|
-
return {
|
|
648
|
-
tool,
|
|
649
|
-
...toolCallId !== void 0 ? { toolCallId } : {},
|
|
650
|
-
descriptor: {
|
|
651
|
-
verb,
|
|
652
|
-
...object !== void 0 ? { object } : {},
|
|
653
|
-
...raw?.truncated === true ? { truncated: true } : {}
|
|
654
|
-
}
|
|
655
|
-
};
|
|
656
|
-
}
|
|
657
|
-
function lineCount(text) {
|
|
658
|
-
if (text.length === 0) return 0;
|
|
659
|
-
let lines = 1;
|
|
660
|
-
for (let index = 0; index < text.length; index += 1) {
|
|
661
|
-
if (text[index] === "\n") lines += 1;
|
|
662
|
-
}
|
|
663
|
-
return lines;
|
|
664
|
-
}
|
|
665
|
-
function keepTailBytes(text, maxBytes) {
|
|
666
|
-
const buffer = Buffer.from(text, "utf8");
|
|
667
|
-
if (buffer.byteLength <= maxBytes) return text;
|
|
668
|
-
let cut = buffer.byteLength - maxBytes;
|
|
669
|
-
while (cut < buffer.byteLength) {
|
|
670
|
-
const byte = buffer[cut];
|
|
671
|
-
if (byte === void 0 || (byte & 192) !== 128) break;
|
|
672
|
-
cut += 1;
|
|
673
|
-
}
|
|
674
|
-
return buffer.subarray(cut).toString("utf8");
|
|
675
|
-
}
|
|
676
|
-
function boundLiveTail(text) {
|
|
677
|
-
const lines = text.split("\n");
|
|
678
|
-
let droppedLines = 0;
|
|
679
|
-
if (lines.length > WORKER_LIVE_TAIL_LINES) {
|
|
680
|
-
droppedLines = lines.length - WORKER_LIVE_TAIL_LINES;
|
|
681
|
-
lines.splice(0, droppedLines);
|
|
682
|
-
}
|
|
683
|
-
while (lines.length > 1 && Buffer.byteLength(lines.join("\n"), "utf8") > WORKER_LIVE_TAIL_MAX_BYTES) {
|
|
684
|
-
lines.shift();
|
|
685
|
-
droppedLines += 1;
|
|
686
|
-
}
|
|
687
|
-
const joined = lines.join("\n");
|
|
688
|
-
const bytes = Buffer.byteLength(joined, "utf8");
|
|
689
|
-
if (bytes <= WORKER_LIVE_TAIL_MAX_BYTES) return { text: joined, droppedLines, droppedBytes: 0 };
|
|
690
|
-
const kept = keepTailBytes(joined, WORKER_LIVE_TAIL_MAX_BYTES);
|
|
691
|
-
return { text: kept, droppedLines, droppedBytes: bytes - Buffer.byteLength(kept, "utf8") };
|
|
692
|
-
}
|
|
693
|
-
function boundSettledText(text) {
|
|
694
|
-
const bounded = truncateUtf8(text, WORKER_OUTPUT_MAX_BYTES, TAIL_TRUNCATION_MARKER);
|
|
695
|
-
if (bounded === text) return { text, dropped: 0 };
|
|
696
|
-
return { text: bounded, dropped: Math.max(0, lineCount(text) - lineCount(bounded)) };
|
|
697
|
-
}
|
|
698
|
-
var EMPTY_SNAPSHOT = {
|
|
699
|
-
revision: 0,
|
|
700
|
-
phase: "starting",
|
|
701
|
-
tailText: "",
|
|
702
|
-
droppedLines: 0,
|
|
703
|
-
droppedBytes: 0,
|
|
704
|
-
currentAction: null,
|
|
705
|
-
recentActions: [],
|
|
706
|
-
toolNames: [],
|
|
707
|
-
settled: false
|
|
708
|
-
};
|
|
709
|
-
function createWorkerProgressFold() {
|
|
710
|
-
let revision = 0;
|
|
711
|
-
let phase = "starting";
|
|
712
|
-
let tailText = "";
|
|
713
|
-
let droppedLines = 0;
|
|
714
|
-
let droppedBytes = 0;
|
|
715
|
-
let currentAction = null;
|
|
716
|
-
const recentActions = [];
|
|
717
|
-
const toolNames = [];
|
|
718
|
-
let settled = false;
|
|
719
|
-
let durable = "";
|
|
720
|
-
let betweenAssistantMessages = false;
|
|
721
|
-
const pendingActions = [];
|
|
722
|
-
const pendingActionsById = /* @__PURE__ */ new Map();
|
|
723
|
-
let windowStartMs = 0;
|
|
724
|
-
let windowBytes = 0;
|
|
725
|
-
let cached = EMPTY_SNAPSHOT;
|
|
726
|
-
const touch = () => {
|
|
727
|
-
revision += 1;
|
|
728
|
-
cached = null;
|
|
729
|
-
return true;
|
|
730
|
-
};
|
|
731
|
-
const setPhase = (next) => {
|
|
732
|
-
if (phase === next) return false;
|
|
733
|
-
phase = next;
|
|
734
|
-
return touch();
|
|
735
|
-
};
|
|
736
|
-
const admitDelta = (delta, nowMs) => {
|
|
737
|
-
if (nowMs - windowStartMs >= WORKER_PROGRESS_WINDOW_MS) {
|
|
738
|
-
windowStartMs = nowMs;
|
|
739
|
-
windowBytes = 0;
|
|
740
|
-
}
|
|
741
|
-
const bytes = Buffer.byteLength(delta, "utf8");
|
|
742
|
-
if (windowBytes + bytes <= WORKER_PROGRESS_WINDOW_BYTES) {
|
|
743
|
-
windowBytes += bytes;
|
|
744
|
-
return delta;
|
|
745
|
-
}
|
|
746
|
-
windowBytes = WORKER_PROGRESS_WINDOW_BYTES;
|
|
747
|
-
droppedBytes += bytes;
|
|
748
|
-
return "";
|
|
749
|
-
};
|
|
750
|
-
const appendTail = (text) => {
|
|
751
|
-
if (text.length === 0) return false;
|
|
752
|
-
const bounded = boundLiveTail(tailText + text);
|
|
753
|
-
tailText = bounded.text;
|
|
754
|
-
droppedLines += bounded.droppedLines;
|
|
755
|
-
droppedBytes += bounded.droppedBytes;
|
|
756
|
-
return touch();
|
|
757
|
-
};
|
|
758
|
-
const noteToolName = (tool) => {
|
|
759
|
-
if (toolNames.includes(tool) || toolNames.length >= WORKER_TOOL_NAME_LIMIT) return false;
|
|
760
|
-
toolNames.push(tool);
|
|
761
|
-
return touch();
|
|
762
|
-
};
|
|
763
|
-
const removePendingAction = (action) => {
|
|
764
|
-
const index = pendingActions.lastIndexOf(action);
|
|
765
|
-
if (index >= 0) pendingActions.splice(index, 1);
|
|
766
|
-
if (action.toolCallId !== void 0 && pendingActionsById.get(action.toolCallId) === action) {
|
|
767
|
-
pendingActionsById.delete(action.toolCallId);
|
|
768
|
-
}
|
|
769
|
-
};
|
|
770
|
-
const lastPendingActionForTool = (tool) => {
|
|
771
|
-
for (let index = pendingActions.length - 1; index >= 0; index -= 1) {
|
|
772
|
-
const candidate = pendingActions[index];
|
|
773
|
-
if (candidate?.tool === tool) return candidate;
|
|
774
|
-
}
|
|
775
|
-
return void 0;
|
|
776
|
-
};
|
|
777
|
-
return {
|
|
778
|
-
observe(event, nowMs = Date.now()) {
|
|
779
|
-
if (!isRecord(event) || settled) return false;
|
|
780
|
-
let changed = false;
|
|
781
|
-
const delta = workerTextDelta(event);
|
|
782
|
-
if (delta.length > 0) {
|
|
783
|
-
const separator = betweenAssistantMessages && tailText.length > 0 && !tailText.endsWith("\n") ? "\n\n" : "";
|
|
784
|
-
betweenAssistantMessages = false;
|
|
785
|
-
changed = appendTail(admitDelta(`${separator}${delta}`, nowMs)) || changed;
|
|
786
|
-
changed = setPhase("writing") || changed;
|
|
787
|
-
} else if (isThinkingEvent(event)) {
|
|
788
|
-
changed = setPhase("thinking") || changed;
|
|
789
|
-
}
|
|
790
|
-
const durableText = durableAssistantTextFromEvent(event);
|
|
791
|
-
if (durableText.trim().length > 0) {
|
|
792
|
-
durable = durableText;
|
|
793
|
-
if (delta.length === 0 && tailText.trim().length === 0) {
|
|
794
|
-
changed = appendTail(durableText) || changed;
|
|
795
|
-
}
|
|
796
|
-
betweenAssistantMessages = true;
|
|
797
|
-
}
|
|
798
|
-
const action = toolEventAction(event);
|
|
799
|
-
if (action !== null && event.type === "clio_coder_tool_start") {
|
|
800
|
-
if (action.toolCallId !== void 0) {
|
|
801
|
-
const duplicate = pendingActionsById.get(action.toolCallId);
|
|
802
|
-
if (duplicate !== void 0) removePendingAction(duplicate);
|
|
803
|
-
pendingActionsById.set(action.toolCallId, action);
|
|
804
|
-
}
|
|
805
|
-
pendingActions.push(action);
|
|
806
|
-
currentAction = action;
|
|
807
|
-
noteToolName(action.tool);
|
|
808
|
-
touch();
|
|
809
|
-
setPhase("tool");
|
|
810
|
-
changed = true;
|
|
811
|
-
} else if (action !== null && event.type === "clio_coder_tool_finish") {
|
|
812
|
-
const finished = (action.toolCallId !== void 0 ? pendingActionsById.get(action.toolCallId) : void 0) ?? lastPendingActionForTool(action.tool) ?? action;
|
|
813
|
-
removePendingAction(finished);
|
|
814
|
-
currentAction = pendingActions[pendingActions.length - 1] ?? null;
|
|
815
|
-
recentActions.unshift(finished);
|
|
816
|
-
if (recentActions.length > WORKER_ACTION_TRAIL_LIMIT) recentActions.length = WORKER_ACTION_TRAIL_LIMIT;
|
|
817
|
-
noteToolName(finished.tool);
|
|
818
|
-
touch();
|
|
819
|
-
setPhase(currentAction === null ? "waiting" : "tool");
|
|
820
|
-
changed = true;
|
|
821
|
-
}
|
|
822
|
-
if (event.type === "agent_start") changed = setPhase("starting") || changed;
|
|
823
|
-
return changed;
|
|
824
|
-
},
|
|
825
|
-
settle(text) {
|
|
826
|
-
const sealed = nonEmptyString(text) ?? nonEmptyString(durable);
|
|
827
|
-
if (sealed !== void 0) {
|
|
828
|
-
const bounded = boundSettledText(sealed);
|
|
829
|
-
tailText = bounded.text;
|
|
830
|
-
droppedLines = bounded.dropped;
|
|
831
|
-
}
|
|
832
|
-
currentAction = null;
|
|
833
|
-
pendingActions.length = 0;
|
|
834
|
-
pendingActionsById.clear();
|
|
835
|
-
settled = true;
|
|
836
|
-
phase = "settled";
|
|
837
|
-
touch();
|
|
838
|
-
return true;
|
|
839
|
-
},
|
|
840
|
-
restart() {
|
|
841
|
-
currentAction = null;
|
|
842
|
-
pendingActions.length = 0;
|
|
843
|
-
pendingActionsById.clear();
|
|
844
|
-
durable = "";
|
|
845
|
-
betweenAssistantMessages = false;
|
|
846
|
-
settled = false;
|
|
847
|
-
phase = "starting";
|
|
848
|
-
touch();
|
|
849
|
-
},
|
|
850
|
-
snapshot() {
|
|
851
|
-
if (cached !== null) return cached;
|
|
852
|
-
cached = {
|
|
853
|
-
revision,
|
|
854
|
-
phase,
|
|
855
|
-
tailText,
|
|
856
|
-
droppedLines,
|
|
857
|
-
droppedBytes,
|
|
858
|
-
currentAction: currentAction === null ? null : { ...currentAction },
|
|
859
|
-
recentActions: recentActions.map((entry) => ({ ...entry })),
|
|
860
|
-
toolNames: [...toolNames],
|
|
861
|
-
settled
|
|
862
|
-
};
|
|
863
|
-
return cached;
|
|
864
|
-
},
|
|
865
|
-
durableText() {
|
|
866
|
-
return durable;
|
|
867
|
-
}
|
|
868
|
-
};
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
// src/interactive/worker-stream.ts
|
|
872
639
|
function workerAskedByModel(state) {
|
|
873
640
|
return state.parentToolCallId !== void 0 || state.origin === "agent";
|
|
874
641
|
}
|
|
875
|
-
function
|
|
642
|
+
function nonEmptyString(value) {
|
|
876
643
|
return typeof value === "string" && value.trim().length > 0 ? value : void 0;
|
|
877
644
|
}
|
|
878
645
|
function finiteNumber(value) {
|
|
@@ -887,11 +654,11 @@ function workerRuntimeKind(runtimeKind, runtimeId) {
|
|
|
887
654
|
function runtimeIdentity(payload) {
|
|
888
655
|
const kind = workerRuntimeKind(payload.runtimeKind, payload.runtimeId);
|
|
889
656
|
if (kind === "acp") {
|
|
890
|
-
const peerId =
|
|
657
|
+
const peerId = nonEmptyString(payload.agentId);
|
|
891
658
|
return { kind, ...peerId !== void 0 ? { peerId } : {} };
|
|
892
659
|
}
|
|
893
|
-
const targetId =
|
|
894
|
-
const wireModelId =
|
|
660
|
+
const targetId = nonEmptyString(payload.targetId);
|
|
661
|
+
const wireModelId = nonEmptyString(payload.wireModelId);
|
|
895
662
|
return {
|
|
896
663
|
kind,
|
|
897
664
|
...targetId !== void 0 ? { targetId } : {},
|
|
@@ -906,7 +673,7 @@ function workerTargetLabel(runtime) {
|
|
|
906
673
|
return runtime.targetId ?? runtime.wireModelId ?? "unknown";
|
|
907
674
|
}
|
|
908
675
|
function terminalFacts(payload) {
|
|
909
|
-
const detail =
|
|
676
|
+
const detail = nonEmptyString(payload.outcomeDetail);
|
|
910
677
|
const tokenCount = finiteNumber(payload.tokenCount);
|
|
911
678
|
const durationMs = finiteNumber(payload.durationMs);
|
|
912
679
|
const exitCode = finiteNumber(payload.exitCode);
|
|
@@ -938,7 +705,7 @@ function createWorkerStream(options = {}) {
|
|
|
938
705
|
entry.progress = snapshot;
|
|
939
706
|
};
|
|
940
707
|
const currentEntryForRun = (runId) => {
|
|
941
|
-
const id =
|
|
708
|
+
const id = nonEmptyString(runId);
|
|
942
709
|
if (id === void 0) return void 0;
|
|
943
710
|
const assignmentId = assignmentByRun.get(id);
|
|
944
711
|
const entry = assignmentId === void 0 ? void 0 : byAssignment.get(assignmentId);
|
|
@@ -952,15 +719,15 @@ function createWorkerStream(options = {}) {
|
|
|
952
719
|
if (attempt !== void 0) attempt.outcome = facts.outcome;
|
|
953
720
|
const fold = progressByAssignment.get(entry.assignmentId);
|
|
954
721
|
if (fold !== void 0) {
|
|
955
|
-
fold.settle(
|
|
722
|
+
fold.settle(nonEmptyString(facts.text));
|
|
956
723
|
applyProgress(entry, fold);
|
|
957
724
|
}
|
|
958
725
|
return { kind: "updated", entry };
|
|
959
726
|
};
|
|
960
727
|
return {
|
|
961
728
|
started(payload) {
|
|
962
|
-
const runId =
|
|
963
|
-
const assignmentId =
|
|
729
|
+
const runId = nonEmptyString(payload.runId);
|
|
730
|
+
const assignmentId = nonEmptyString(payload.assignmentId) ?? runId;
|
|
964
731
|
if (runId === void 0 || assignmentId === void 0) return null;
|
|
965
732
|
const runtime = runtimeIdentity(payload);
|
|
966
733
|
const existing = byAssignment.get(assignmentId);
|
|
@@ -1025,7 +792,7 @@ function createWorkerStream(options = {}) {
|
|
|
1025
792
|
const entry = currentEntryForRun(payload.runId);
|
|
1026
793
|
if (entry === void 0 || !entry.pending) return null;
|
|
1027
794
|
const durationMs = finiteNumber(payload.elapsedMs);
|
|
1028
|
-
const failureMessage =
|
|
795
|
+
const failureMessage = nonEmptyString(payload.reason);
|
|
1029
796
|
entry.pending = false;
|
|
1030
797
|
entry.receipt = {
|
|
1031
798
|
outcome: "canceled",
|
|
@@ -1342,7 +1109,8 @@ function formatReceiptVerificationBlock(runId, result) {
|
|
|
1342
1109
|
}
|
|
1343
1110
|
function formatUserTaskHandoff(task) {
|
|
1344
1111
|
const note = task.note ? ` ${task.note}.` : "";
|
|
1345
|
-
|
|
1112
|
+
const acceptance = task.acceptance ? ` Acceptance: ${JSON.stringify(task.acceptance)}.` : "";
|
|
1113
|
+
return `Operator task ${task.id}: ${task.title}.${note}${acceptance} Pick it up with tasks action="pick" id="${task.id}" and work it when appropriate.`;
|
|
1346
1114
|
}
|
|
1347
1115
|
var SLASH_COMMAND_GROUPS = ["Work", "Inspect", "Configure", "Session"];
|
|
1348
1116
|
var RUN_THINKING_LEVELS = THINKING_LEVELS;
|
|
@@ -2005,7 +1773,14 @@ ${usage}` : usage);
|
|
|
2005
1773
|
},
|
|
2006
1774
|
args: {
|
|
2007
1775
|
subcommands: {
|
|
2008
|
-
add: {
|
|
1776
|
+
add: {
|
|
1777
|
+
parseFlagsInRest: true,
|
|
1778
|
+
flags: [
|
|
1779
|
+
{ name: "--expect", takesValue: true, repeatable: true, valueName: "path" },
|
|
1780
|
+
{ name: "--verify", takesValue: true, repeatable: true, valueName: "checkId[:timeoutMs]" }
|
|
1781
|
+
],
|
|
1782
|
+
positionals: [{ name: "text", required: true, rest: true }]
|
|
1783
|
+
},
|
|
2009
1784
|
hand: { positionals: [{ name: "id", required: true }] },
|
|
2010
1785
|
done: { positionals: [{ name: "id", required: true }] },
|
|
2011
1786
|
drop: { positionals: [{ name: "id", required: true }] }
|
|
@@ -2015,7 +1790,12 @@ ${usage}` : usage);
|
|
|
2015
1790
|
if (parsed.error) return { kind: "usage-error", command: "tasks", reason: parsed.error };
|
|
2016
1791
|
switch (parsed.subcommand) {
|
|
2017
1792
|
case "add":
|
|
2018
|
-
return parsed.rest ? {
|
|
1793
|
+
return parsed.rest ? {
|
|
1794
|
+
kind: "tasks-add",
|
|
1795
|
+
text: parsed.rest,
|
|
1796
|
+
...parsed.flagValues.has("--expect") ? { expectedOutputs: parsed.flagValues.get("--expect") ?? [] } : {},
|
|
1797
|
+
...parsed.flagValues.has("--verify") ? { verification: parsed.flagValues.get("--verify") ?? [] } : {}
|
|
1798
|
+
} : { kind: "usage-error", command: "tasks", reason: "add requires task text" };
|
|
2019
1799
|
case "hand":
|
|
2020
1800
|
case "done":
|
|
2021
1801
|
case "drop": {
|
|
@@ -2042,7 +1822,10 @@ ${usage}` : usage);
|
|
|
2042
1822
|
}
|
|
2043
1823
|
try {
|
|
2044
1824
|
if (command.kind === "tasks-add") {
|
|
2045
|
-
const task = ctx.userTasks.add(
|
|
1825
|
+
const task = ctx.userTasks.add(
|
|
1826
|
+
command.text,
|
|
1827
|
+
acceptanceFromTaskFlags(process.cwd(), command.expectedOutputs ?? [], command.verification ?? [])
|
|
1828
|
+
);
|
|
2046
1829
|
ctx.notice("success", `logged operator task ${task.id}: ${task.title}`);
|
|
2047
1830
|
return;
|
|
2048
1831
|
}
|
|
@@ -2568,30 +2351,6 @@ for (const entry of BUILTIN_SLASH_COMMANDS) {
|
|
|
2568
2351
|
}
|
|
2569
2352
|
var COMMAND_SHAPED_TOKEN = /^[A-Za-z][A-Za-z0-9:-]*$/u;
|
|
2570
2353
|
var COMMAND_ESCAPE = "\\/";
|
|
2571
|
-
var RETIRED_COMMAND_HINTS = Object.freeze({
|
|
2572
|
-
status: "Use the footer or Alt+U for status; /cost, /context, and /fleet inspect their own domains.",
|
|
2573
|
-
receipts: "Use /view or /view verify <run-id>.",
|
|
2574
|
-
"context-init": "Use /context init.",
|
|
2575
|
-
"context-clear": "Use /context reset for project context or /new for a fresh session.",
|
|
2576
|
-
"context-view": "Use /context.",
|
|
2577
|
-
compact: "Use /context compact [instructions].",
|
|
2578
|
-
skills: "Use /skill or /resources skills.",
|
|
2579
|
-
exit: "Use /quit.",
|
|
2580
|
-
config: "Use /settings.",
|
|
2581
|
-
ctx: "Use /context.",
|
|
2582
|
-
models: "Use /model.",
|
|
2583
|
-
clear: "Use /new for a fresh session or /context reset for project context.",
|
|
2584
|
-
library: "Use /resources library [kind].",
|
|
2585
|
-
prompts: "Use /resources prompts.",
|
|
2586
|
-
extensions: "Use /resources extensions.",
|
|
2587
|
-
interop: "Use /agents connect.",
|
|
2588
|
-
targets: "Use /settings targets.",
|
|
2589
|
-
"scoped-models": "Use /settings chat model-picker."
|
|
2590
|
-
});
|
|
2591
|
-
function retiredCommandHint(token) {
|
|
2592
|
-
if (/^skills?:[^\s]+$/u.test(token)) return "Use /skill <name> [task].";
|
|
2593
|
-
return RETIRED_COMMAND_HINTS[token];
|
|
2594
|
-
}
|
|
2595
2354
|
function formatExtensionReloadNotice(outcome) {
|
|
2596
2355
|
if (outcome.status !== "committed") {
|
|
2597
2356
|
return ["error", `extensions: reload rejected (${outcome.reason}); generation ${outcome.generation} stays active`];
|
|
@@ -2637,12 +2396,6 @@ function dispatchSlashCommand(command, ctx) {
|
|
|
2637
2396
|
return "accepted";
|
|
2638
2397
|
}
|
|
2639
2398
|
if (command.kind === "unknown-command") {
|
|
2640
|
-
const retiredHint = retiredCommandHint(command.token);
|
|
2641
|
-
if (retiredHint) {
|
|
2642
|
-
ctx.notice("error", `/${command.token} is retired and did not run. ${retiredHint}`);
|
|
2643
|
-
ctx.render();
|
|
2644
|
-
return "rejected";
|
|
2645
|
-
}
|
|
2646
2399
|
const expansion = ctx.expandPromptTemplate?.(command.text);
|
|
2647
2400
|
if (expansion?.expanded === true) {
|
|
2648
2401
|
ctx.submitChat(command.text);
|
|
@@ -2714,8 +2467,6 @@ function commandReference() {
|
|
|
2714
2467
|
|
|
2715
2468
|
export {
|
|
2716
2469
|
COUNCIL_SYNTHESIS_LABEL,
|
|
2717
|
-
boundSettledText,
|
|
2718
|
-
createWorkerProgressFold,
|
|
2719
2470
|
workerAskedByModel,
|
|
2720
2471
|
workerTargetLabel,
|
|
2721
2472
|
workerReceiptSummary,
|
|
@@ -2735,4 +2486,4 @@ export {
|
|
|
2735
2486
|
dispatchSlashCommand,
|
|
2736
2487
|
commandReference
|
|
2737
2488
|
};
|
|
2738
|
-
//# sourceMappingURL=chunk-
|
|
2489
|
+
//# sourceMappingURL=chunk-FFUPXJC4.js.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
VERIFICATION_SCRIPT_FAMILY_HINT
|
|
4
|
+
} from "./chunk-UL3WSD3F.js";
|
|
5
|
+
import {
|
|
6
|
+
typebox_exports
|
|
7
|
+
} from "./chunk-5B2AEOW5.js";
|
|
8
|
+
import {
|
|
9
|
+
ToolNames
|
|
10
|
+
} from "./chunk-4NSRCOYP.js";
|
|
11
|
+
import {
|
|
12
|
+
StringEnum
|
|
13
|
+
} from "./chunk-YPC6ZR5L.js";
|
|
14
|
+
import {
|
|
15
|
+
init_esm_shims
|
|
16
|
+
} from "./chunk-3R73A4XB.js";
|
|
17
|
+
|
|
18
|
+
// src/tools/verify/surface.ts
|
|
19
|
+
init_esm_shims();
|
|
20
|
+
var BROWSER_MODES = ["auto", "required", "off"];
|
|
21
|
+
function prepareVerifyArguments(args) {
|
|
22
|
+
if (!args || typeof args !== "object" || Array.isArray(args)) return args;
|
|
23
|
+
const next = { ...args };
|
|
24
|
+
if (typeof next.args === "string") {
|
|
25
|
+
try {
|
|
26
|
+
const parsed = JSON.parse(next.args);
|
|
27
|
+
if (Array.isArray(parsed)) next.args = parsed;
|
|
28
|
+
} catch {
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return next;
|
|
32
|
+
}
|
|
33
|
+
var verifyToolSurface = {
|
|
34
|
+
name: ToolNames.Verify,
|
|
35
|
+
description: 'Run a declared verification check: no arguments lists package scripts and .clio-coder/verifiers.yaml entries, check=<id> runs one, and check="frontend" with path validates an HTML/CSS/JS artifact.',
|
|
36
|
+
parameters: typebox_exports.Object({
|
|
37
|
+
check: typebox_exports.Optional(
|
|
38
|
+
typebox_exports.String({
|
|
39
|
+
description: `Check id, package script (${VERIFICATION_SCRIPT_FAMILY_HINT}), or "frontend"; omit to list.`
|
|
40
|
+
})
|
|
41
|
+
),
|
|
42
|
+
path: typebox_exports.Optional(typebox_exports.String({ description: "frontend: artifact file under the workspace root." })),
|
|
43
|
+
args: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String(), { description: "Package scripts only: arguments after --." })),
|
|
44
|
+
browser: typebox_exports.Optional(StringEnum(BROWSER_MODES, { description: "frontend: headless browser mode (default auto)." })),
|
|
45
|
+
cwd: typebox_exports.Optional(typebox_exports.String({ description: "Package scripts only: working directory." })),
|
|
46
|
+
timeout_ms: typebox_exports.Optional(typebox_exports.Number({ description: "Package and frontend checks only: timeout in ms." })),
|
|
47
|
+
max_output_bytes: typebox_exports.Optional(typebox_exports.Number({ description: "Output cap in bytes (default 600000)." }))
|
|
48
|
+
}),
|
|
49
|
+
baseActionClass: "execute",
|
|
50
|
+
executionMode: "sequential",
|
|
51
|
+
prepareArguments: prepareVerifyArguments
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export {
|
|
55
|
+
BROWSER_MODES,
|
|
56
|
+
prepareVerifyArguments,
|
|
57
|
+
verifyToolSurface
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=chunk-GX5WYQO4.js.map
|