@iowarp/clio-coder 0.4.2 → 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 +98 -0
- package/CONTRIBUTING.md +86 -19
- package/README.md +35 -6
- package/dist/{acp-TMDQZDIG.js → acp-WNAYYF4F.js} +12 -13
- package/dist/{agents-5N5NG3XG.js → agents-3OKXHLOI.js} +60 -57
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-Z5CCBXKQ.js → auth-VKNNMGPU.js} +21 -19
- package/dist/{builtins-K6TNDT24.js → builtins-WGALA46I.js} +9 -4
- package/dist/{chunk-XE3PCIXH.js → chunk-23L32XTI.js} +12 -9
- package/dist/{chunk-I64IFBLB.js → chunk-25QBEXRS.js} +18 -11
- package/dist/{chunk-CDNVLKUX.js → chunk-26QSH3EJ.js} +13 -7
- package/dist/{chunk-QQLGQY2A.js → chunk-2ASED4PZ.js} +22 -22
- package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
- package/dist/chunk-2DSOYNFC.js +108 -0
- package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
- package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
- package/dist/{chunk-O3YUNJZ2.js → chunk-2ZSONWVL.js} +82 -25
- package/dist/{chunk-2NHR3NAY.js → chunk-36CT5VVL.js} +331 -42
- package/dist/{chunk-2X4RYJTJ.js → chunk-3GY4F45V.js} +3 -3
- package/dist/{chunk-ZW55JB7N.js → chunk-3ODX73FK.js} +4 -6
- package/dist/{chunk-PBP4B7XR.js → chunk-3UNOLWNZ.js} +3 -3
- package/dist/{chunk-4JDLP6ZS.js → chunk-3UUXNFEX.js} +14 -10
- package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
- package/dist/{chunk-ZW4HH5JJ.js → chunk-4M6Z5QVF.js} +6 -6
- package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
- package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
- package/dist/{chunk-FSP7CMNU.js → chunk-54X7T7DK.js} +61 -6
- package/dist/{chunk-54ODD65L.js → chunk-5636DCO5.js} +4 -4
- package/dist/chunk-57XXR6DR.js +3763 -0
- package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
- package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
- package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
- package/dist/{chunk-YJISEZKC.js → chunk-5TUB6SLS.js} +6 -6
- package/dist/{chunk-IMXMHHMQ.js → chunk-6OSVSQL5.js} +341 -57
- package/dist/{chunk-Q4XWMHX6.js → chunk-6PAZTBPA.js} +14 -2
- package/dist/{chunk-FVDGR2ZL.js → chunk-6Q3CYFD3.js} +112 -39
- package/dist/{chunk-IDNA72AH.js → chunk-6QOTUPRG.js} +155 -36
- package/dist/{chunk-X7IARSHT.js → chunk-6UINWWS6.js} +16 -10
- package/dist/{chunk-CYZW7JHJ.js → chunk-72YIHOZQ.js} +9 -9
- package/dist/{chunk-IKSLQ4XV.js → chunk-75W7L2E2.js} +752 -861
- package/dist/{chunk-CRFOIAX3.js → chunk-7UGL4MB5.js} +6 -6
- package/dist/{chunk-HIICAHCJ.js → chunk-AUPNRN7C.js} +2 -2
- package/dist/{chunk-7BHIY2MW.js → chunk-BJVFZO5U.js} +8 -50
- package/dist/{chunk-B74PXLU7.js → chunk-CUSRQKPU.js} +65 -3
- package/dist/chunk-DQOVN6KV.js +386 -0
- package/dist/{chunk-E7GT7O5N.js → chunk-DT3LWJOB.js} +7 -4
- package/dist/chunk-DXKJURES.js +671 -0
- package/dist/{chunk-JBCS7CRR.js → chunk-EL24TAU4.js} +10 -10
- package/dist/{chunk-TPEQIQIE.js → chunk-ELWDPP3Y.js} +8 -8
- package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
- package/dist/chunk-EXLD33WO.js +381 -0
- package/dist/chunk-FEAXX7B6.js +101 -0
- package/dist/{chunk-RLYRBIYQ.js → chunk-FFUPXJC4.js} +90 -331
- package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
- package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
- package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
- package/dist/chunk-GX5WYQO4.js +59 -0
- package/dist/chunk-GYV6VZOC.js +26 -0
- package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
- package/dist/chunk-I2DWJ4GM.js +390 -0
- package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
- package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
- package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
- package/dist/chunk-IRXAATOX.js +539 -0
- package/dist/chunk-IXIY2H4R.js +44 -0
- package/dist/{chunk-SSEYRH53.js → chunk-IZXGRF7P.js} +92 -147
- package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
- package/dist/{chunk-JWJGP5DQ.js → chunk-JEIYHLOR.js} +7 -7
- package/dist/{chunk-F2I26BDK.js → chunk-JQLNNIKT.js} +4 -4
- package/dist/{chunk-BYMNWQ7O.js → chunk-JSD46VO2.js} +315 -63
- package/dist/{chunk-AK5XEFVZ.js → chunk-JT2RFCC5.js} +64 -14
- package/dist/{chunk-MCMZMDAC.js → chunk-K6T2ZAMZ.js} +168 -6
- package/dist/{chunk-PGF63K6I.js → chunk-KFV5L5SK.js} +73 -4
- package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
- package/dist/{chunk-PJX3WQUQ.js → chunk-LLXSDWXS.js} +3 -3
- package/dist/{chunk-DZAW46HP.js → chunk-LTIKRKFL.js} +3 -3
- package/dist/{chunk-DZEK6CJN.js → chunk-N56KALIC.js} +21 -21
- package/dist/{chunk-B7HM5Z7T.js → chunk-NAI6ZFCY.js} +9 -5
- package/dist/{chunk-I66ZTYNP.js → chunk-NRO2BJRH.js} +2656 -2213
- package/dist/{chunk-ZGNYYXQ6.js → chunk-NXIMQY5W.js} +3 -3
- package/dist/{chunk-IKOZFYBN.js → chunk-NXYCB2VD.js} +149 -106
- package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
- package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
- package/dist/chunk-ODGTEFFI.js +50 -0
- package/dist/{chunk-3F7VUY77.js → chunk-OEJSLEPW.js} +2 -2
- package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
- package/dist/{chunk-5KW52TEP.js → chunk-Q4WO54TA.js} +132 -77
- package/dist/{chunk-W6NIE6OW.js → chunk-QUFRYSWI.js} +13 -7
- package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
- package/dist/chunk-R6Q67RJH.js +134 -0
- package/dist/{chunk-W4YEMFBX.js → chunk-RAY4OVGZ.js} +3 -3
- package/dist/{chunk-ZNT2M6TG.js → chunk-RQCKCSRL.js} +17 -17
- package/dist/{chunk-LJID3DYZ.js → chunk-RXTN6AKH.js} +3 -3
- package/dist/{chunk-P75RZCJW.js → chunk-RZDWV63N.js} +3 -3
- package/dist/{chunk-UH632ZYL.js → chunk-S6PYF2XF.js} +2 -2
- package/dist/{chunk-HJWWJ6IL.js → chunk-TOIVGRUX.js} +17 -5
- package/dist/{chunk-HLAFFSEK.js → chunk-TQAHXW6Y.js} +2 -2
- package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
- package/dist/{chunk-2HFQNRV3.js → chunk-UEPWCCTY.js} +12 -12
- package/dist/chunk-UOIZ7DA4.js +41 -0
- package/dist/{chunk-UH347SHR.js → chunk-USR47QNF.js} +11 -11
- package/dist/{chunk-AZ4WMN4W.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-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
- package/dist/{chunk-UBRFI4HS.js → chunk-XULDXHTN.js} +142 -50
- package/dist/chunk-XXYSBZIQ.js +283 -0
- package/dist/{chunk-HKMD33FO.js → chunk-Y55JBDO5.js} +405 -122
- package/dist/{chunk-XOXV5GKE.js → chunk-YD5GIKET.js} +17 -8
- package/dist/{chunk-XGDPUNND.js → chunk-YECAMM3D.js} +2 -2
- package/dist/{chunk-BO7Y52RY.js → chunk-YNFKXPEC.js} +7 -7
- package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
- package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
- package/dist/cli/index.js +42 -40
- package/dist/{clio-7VB377CC.js → clio-QLICPCF5.js} +7 -7
- package/dist/{code-nav-YVLCYA7V.js → code-nav-IJR2DBPR.js} +9 -9
- package/dist/{components-UBWCQSRW.js → components-2TGAI2RC.js} +5 -6
- package/dist/{config-4HVOS65E.js → config-IUA6OYNS.js} +88 -81
- package/dist/{configure-PIWO7B24.js → configure-VEPX4NMX.js} +26 -25
- package/dist/{context-KQYIWPWT.js → context-2DKHWH2T.js} +60 -45
- package/dist/{context-IYEHL3WQ.js → context-4MPR7WKB.js} +78 -69
- package/dist/{context-N6ZE3LGJ.js → context-BOYF5EJM.js} +15 -11
- package/dist/{context-clear-G4OGZJDS.js → context-clear-S4ZJCQUX.js} +73 -65
- package/dist/context-map-COB37XXN.js +505 -0
- package/dist/{context-working-set-BWLF6LJP.js → context-working-set-3I3FYX6Y.js} +18 -17
- package/dist/detail-A7JAVSIG.js +98 -0
- package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-RJ5I2F2O.js} +99 -75
- package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
- package/dist/{doctor-LHBD36VU.js → doctor-DKICC2SN.js} +71 -48
- package/dist/{eval-C45FYRJ6.js → eval-OQOQUDHK.js} +308 -146
- package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
- package/dist/{evidence-6SHONYAF.js → evidence-4DQ25GUQ.js} +79 -175
- package/dist/evidence-4F5USFKH.js +208 -0
- package/dist/{evolve-KRKMV72X.js → evolve-GSS52E5J.js} +71 -67
- package/dist/{extensions-KPZ2UHBB.js → extensions-G7MFLYHT.js} +8 -9
- package/dist/{fleet-IVTCKDHT.js → fleet-Q37YHHAQ.js} +126 -118
- package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-G7E4N7SM.js} +16 -13
- package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-O7M6QBA2.js} +9 -8
- package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-TOUBW6OW.js} +21 -20
- package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-SW33JJNI.js} +65 -60
- package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-CV2655TW.js} +4 -5
- package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-KESZX2YH.js} +25 -24
- package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-UQPMTVE3.js} +66 -61
- package/dist/{fleet-view-TWHJKCN6.js → fleet-view-MN2VG4MR.js} +65 -60
- package/dist/{init-T2QORQ3Y.js → init-PXEXQSBF.js} +90 -82
- package/dist/{interop-IN5I2A66.js → interop-ZG5T62U3.js} +12 -13
- package/dist/inventory-C26CFDRR.js +101 -0
- package/dist/{library-LSCATDLZ.js → library-B2W4N74O.js} +29 -29
- package/dist/{memory-HYOKAGGJ.js → memory-YCANYS5A.js} +73 -69
- package/dist/{models-2GPMFYCM.js → models-GERTU3YI.js} +51 -47
- package/dist/{monitor-E4ASVUJH.js → monitor-CPNIUULB.js} +74 -67
- package/dist/{orchestrator-DDMPR3PY.js → orchestrator-J4BSH4WQ.js} +1288 -1606
- package/dist/{panes-E3RUXOW5.js → panes-BOHAEGYC.js} +4 -4
- package/dist/{panes-IXKLOKA2.js → panes-NXSLDQZ2.js} +10 -11
- package/dist/{paths-L7LGY6RN.js → paths-VSUWNC22.js} +6 -7
- package/dist/reset-TNWTB5LU.js +343 -0
- package/dist/{resources-OTRSN34L.js → resources-4PXNMD5G.js} +29 -22
- package/dist/{run-5DEYH5QK.js → run-D6XJ34CN.js} +132 -132
- package/dist/{share-IHWTLO3M.js → share-2NWMJJEE.js} +27 -27
- package/dist/{skills-IYMXMKW4.js → skills-KR7WON5G.js} +40 -33
- package/dist/{skills-eval-DROHSJAR.js → skills-eval-O2ZNOLDS.js} +81 -77
- package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-ZZOUBK7O.js} +23 -22
- package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-ZXPJD64J.js} +47 -37
- package/dist/{steer-Z5DO23FJ.js → steer-XA25PSCS.js} +4 -4
- package/dist/{support-U7QOWY26.js → support-7EMVWYG2.js} +6 -6
- package/dist/{targets-P2FUC4IL.js → targets-OMH2XCSN.js} +50 -49
- package/dist/tasks-IPAGMEIX.js +36 -0
- package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-C2J3JYRE.js} +4 -4
- package/dist/{tools-5B7RO6MV.js → tools-EFFEAIDP.js} +8 -9
- package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
- package/dist/uninstall-HALS6BLF.js +407 -0
- package/dist/upgrade-MS72RJEP.js +306 -0
- package/dist/{usage-ME5MPXGX.js → usage-NHG6MCJM.js} +162 -108
- package/dist/{verifiers-BVZ7IWOO.js → verifiers-7AUNVXDY.js} +155 -22
- package/dist/{verify-5K7ZKQFC.js → verify-FWYGPKMR.js} +14 -12
- package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
- package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-743CIGJW.js} +99 -90
- package/dist/{with-panes-BYOJCLAM.js → with-panes-BDQEWBRT.js} +10 -10
- package/dist/worker/entry.js +72 -68
- package/docs/README.md +3 -2
- package/docs/architecture/acp.md +17 -0
- package/docs/architecture/artifact-placement.md +1 -0
- package/docs/architecture/artifact-versions.md +2 -2
- package/docs/architecture/context-engine.md +4 -0
- package/docs/architecture/dispatch-typed-intent.md +1 -1
- package/docs/architecture/evidence-and-memory.md +1 -1
- package/docs/architecture/middleware-and-components.md +1 -1
- package/docs/architecture/model-catalog.md +21 -10
- package/docs/architecture/observability.md +19 -2
- package/docs/architecture/prompt-envelope-and-tools.md +17 -5
- package/docs/architecture/provider-adapter-cookbook.md +63 -0
- package/docs/architecture/safety-model.md +25 -22
- package/docs/architecture/tui-design.md +1 -1
- package/docs/guide/built-in-agents.md +25 -11
- package/docs/guide/commands-and-modes.md +18 -3
- package/docs/guide/configuration-and-targets.md +100 -10
- package/docs/guide/configuration-reference.md +17 -7
- package/docs/guide/environment-variables.md +4 -2
- package/docs/guide/installation-and-lifecycle.md +37 -4
- package/docs/guide/proactive-memory.md +66 -55
- package/docs/guide/skills-marketplace.md +18 -0
- package/docs/guide/tool-usage.md +78 -3
- package/docs/history/config-knobs-audit.md +2 -2
- package/docs/process/development-pipeline.md +40 -2
- package/docs/process/eval-runner.md +67 -3
- 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/evals/behavioral-model.yaml +3 -2
- package/package.json +2 -2
- package/skills/README.md +7 -5
- package/skills/coding/ast-grep/SKILL.md +101 -30
- package/skills/coding/ast-grep/evals.md +26 -0
- package/skills/coding/coding-standards/SKILL.md +47 -2
- package/skills/coding/coding-standards/evals.md +23 -0
- package/skills/coding/prototype/SKILL.md +87 -28
- package/skills/coding/prototype/evals.md +19 -0
- package/skills/coding/tdd/SKILL.md +80 -53
- package/skills/coding/tdd/evals.md +20 -0
- package/skills/context/context-handoff/SKILL.md +43 -2
- package/skills/context/context-handoff/evals.md +44 -0
- package/skills/context/context-prime/SKILL.md +45 -15
- package/skills/context/context-prime/evals.md +45 -0
- package/skills/git/branch-closeout/SKILL.md +132 -0
- package/skills/git/branch-closeout/evals.md +133 -0
- package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
- package/skills/git/file-ticket/SKILL.md +77 -63
- package/skills/git/file-ticket/assets/issue-template.md +22 -0
- package/skills/git/file-ticket/evals.md +31 -26
- package/skills/git/file-ticket/references/issue-discovery.md +49 -0
- package/skills/git/fix-issue/SKILL.md +87 -64
- package/skills/git/fix-issue/evals.md +35 -31
- package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
- package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
- package/skills/git/resolve-merge-conflicts/evals.md +52 -25
- package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
- package/skills/git/ship/SKILL.md +103 -67
- package/skills/git/ship/assets/pr-template.md +21 -0
- package/skills/git/ship/evals.md +44 -28
- package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
- package/skills/git/worktree-create/SKILL.md +80 -50
- package/skills/git/worktree-create/evals.md +40 -33
- package/skills/git/worktree-create/references/worktree-setup.md +62 -66
- package/skills/git/worktree-merge/SKILL.md +112 -65
- package/skills/git/worktree-merge/evals.md +42 -34
- package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
- package/skills/planning/archify/SKILL.md +196 -0
- package/skills/planning/archify/evals.md +65 -0
- package/skills/planning/architecture/SKILL.md +61 -12
- package/skills/planning/architecture/evals.md +65 -0
- package/skills/planning/backlog/SKILL.md +130 -14
- package/skills/planning/backlog/evals.md +142 -0
- package/skills/planning/prd/SKILL.md +47 -6
- package/skills/planning/prd/evals.md +54 -0
- package/skills/planning/product-intent/SKILL.md +57 -2
- package/skills/planning/product-intent/evals.md +70 -0
- package/skills/planning/tech-spec/SKILL.md +53 -2
- package/skills/planning/tech-spec/evals.md +73 -0
- package/skills/registry.yaml +58 -50
- package/skills/remote.yaml +13 -0
- package/skills/research/arxiv-literature/SKILL.md +76 -18
- package/skills/research/arxiv-literature/evals.md +50 -0
- package/skills/research/experiment-protocol/SKILL.md +20 -1
- package/skills/research/experiment-protocol/evals.md +23 -0
- package/skills/research/scientific-debugging/SKILL.md +24 -1
- package/skills/research/scientific-debugging/evals.md +18 -0
- package/skills/research/scientific-modernization/SKILL.md +26 -1
- package/skills/research/scientific-modernization/evals.md +27 -0
- package/skills/skill-marketplace.json +63 -28
- package/skills/workflow/cut-it/SKILL.md +64 -5
- package/skills/workflow/cut-it/evals.md +101 -0
- package/skills/workflow/design-council/SKILL.md +112 -27
- package/skills/workflow/design-council/evals.md +161 -0
- package/skills/workflow/grill-me/SKILL.md +85 -10
- package/skills/workflow/grill-me/evals.md +153 -0
- package/skills/workflow/workflow-distiller/SKILL.md +76 -17
- package/skills/workflow/workflow-distiller/evals.md +118 -0
- package/src/cli/args.ts +0 -8
- package/src/cli/configure-interop.ts +105 -13
- package/src/cli/configure-oauth.ts +57 -0
- package/src/cli/configure-onboarding.ts +980 -0
- package/src/cli/configure-target.ts +594 -0
- package/src/cli/configure.ts +1084 -529
- package/src/cli/context-map.ts +114 -0
- package/src/cli/context.ts +4 -0
- 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 +3 -0
- package/src/cli/lifecycle-presenter.ts +436 -0
- package/src/cli/models.ts +10 -2
- package/src/cli/modes/print.ts +5 -1
- package/src/cli/reset.ts +228 -106
- package/src/cli/run.ts +7 -4
- package/src/cli/select.ts +664 -0
- package/src/cli/skills.ts +9 -2
- package/src/cli/targets.ts +3 -0
- package/src/cli/tasks.ts +84 -0
- package/src/cli/uninstall.ts +233 -165
- package/src/cli/upgrade.ts +210 -150
- package/src/cli/usage.ts +92 -27
- package/src/cli/validate-model.ts +3 -3
- 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/config.ts +56 -0
- package/src/core/external-diagnostic.ts +44 -0
- package/src/core/gateway-routing.ts +157 -0
- package/src/core/git-commit-attribution.ts +46 -3
- package/src/core/run-overrides.ts +0 -5
- package/src/core/safe-exec.ts +17 -2
- package/src/core/skill-activation.ts +92 -2
- 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/agents/builtins/world-knowledge.md +31 -0
- package/src/domains/agents/catalog.ts +1 -1
- package/src/domains/agents/result-contract.ts +70 -0
- 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/map-seed.ts +589 -0
- package/src/domains/context/wiki/plan.ts +2 -2
- package/src/domains/context/wiki/prompts.ts +43 -0
- package/src/domains/dispatch/active-route-planner.ts +4 -0
- package/src/domains/dispatch/admission.ts +29 -0
- package/src/domains/dispatch/agent-candidates.ts +10 -0
- package/src/domains/dispatch/budget-envelope.ts +86 -1
- package/src/domains/dispatch/capability-match.ts +1 -0
- package/src/domains/dispatch/capacity-lease.ts +17 -0
- package/src/domains/dispatch/code-step.ts +11 -4
- package/src/domains/dispatch/contract.ts +42 -8
- package/src/domains/dispatch/execution-scheduler.ts +2 -0
- package/src/domains/dispatch/extension.ts +184 -56
- 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 +20 -2
- package/src/domains/dispatch/worker-model-metadata.ts +38 -0
- package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
- package/src/domains/eval/metrics/token-stream.ts +201 -31
- package/src/domains/eval/metrics/tracked.ts +40 -4
- package/src/domains/eval/runners/clio-run.ts +17 -11
- 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/eval/schema/suite.ts +28 -0
- package/src/domains/eval/schema/verdict.ts +2 -2
- package/src/domains/eval/suites/resolve.ts +13 -1
- package/src/domains/eval/suites/run.ts +24 -3
- 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/interop/registry.ts +6 -2
- package/src/domains/interop/types.ts +4 -0
- package/src/domains/lifecycle/migrations/index.ts +4 -0
- package/src/domains/memory/task-memory-policy.ts +70 -26
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/index.ts +0 -1
- package/src/domains/middleware/marketplace-offer.ts +22 -35
- package/src/domains/middleware/memory-intervention.ts +127 -32
- package/src/domains/middleware/memory-step-endpoint.ts +3 -2
- package/src/domains/middleware/runtime.ts +7 -3
- package/src/domains/middleware/skills-reminder.ts +31 -2
- package/src/domains/mux/detect.ts +3 -6
- package/src/domains/observability/accountability.ts +15 -1
- package/src/domains/observability/compaction-usage.ts +118 -0
- package/src/domains/observability/contract.ts +52 -7
- package/src/domains/observability/cost.ts +1 -1
- package/src/domains/observability/evidence-index.ts +10 -0
- package/src/domains/observability/extension.ts +15 -6
- package/src/domains/observability/out-of-turn-usage.ts +52 -21
- 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/contract.ts +4 -1
- package/src/domains/providers/extension.ts +40 -9
- package/src/domains/providers/model-capabilities.ts +9 -0
- package/src/domains/providers/model-discovery.ts +3 -4
- package/src/domains/providers/model-runtime-capabilities.ts +15 -5
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +48 -26
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
- package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
- package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
- package/src/domains/providers/support.ts +11 -5
- package/src/domains/providers/target-model-cache.ts +25 -2
- package/src/domains/providers/types/capability-flags.ts +2 -0
- package/src/domains/providers/types/runtime-descriptor.ts +20 -1
- package/src/domains/providers/types/target-descriptor.ts +19 -0
- package/src/domains/resources/index.ts +3 -0
- package/src/domains/resources/skills/install.ts +72 -7
- package/src/domains/resources/skills/loader.ts +7 -0
- package/src/domains/resources/skills/marketplace.ts +63 -11
- package/src/domains/safety/action-classifier.ts +7 -0
- package/src/domains/safety/autonomy.ts +15 -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 +21 -1
- package/src/domains/safety/path-policy.ts +1 -1
- package/src/domains/safety/policy-engine.ts +60 -17
- package/src/domains/safety/protected-artifacts.ts +191 -88
- package/src/domains/safety/rigor.ts +53 -39
- package/src/domains/safety/run-effects.ts +2 -22
- package/src/domains/safety/skill-authority.ts +55 -0
- package/src/domains/safety/validation-contract.ts +388 -0
- package/src/domains/session/archive-readers.ts +10 -1
- package/src/domains/session/compaction/compact.ts +72 -22
- package/src/domains/session/decision-board.ts +101 -2
- package/src/domains/session/entries.ts +50 -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/session/usage.ts +3 -3
- 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/agent.ts +13 -3
- package/src/engine/ai.ts +26 -8
- package/src/engine/antigravity/subprocess-runtime.ts +386 -120
- package/src/engine/api-registry.ts +3 -0
- package/src/engine/apis/ollama-native.ts +15 -0
- package/src/engine/apis/openai-completions.ts +117 -14
- package/src/engine/claude/subprocess-runtime.ts +107 -60
- package/src/engine/external-subprocess.ts +122 -6
- package/src/entry/background-model-metadata.ts +18 -0
- package/src/entry/compaction-prompt.ts +57 -0
- package/src/entry/orchestrator.ts +416 -218
- package/src/entry/task-memory-lifecycle.ts +35 -0
- package/src/interactive/chat-loop-messages.ts +13 -4
- package/src/interactive/chat-loop.ts +65 -2
- package/src/interactive/chat-renderer.ts +1 -0
- package/src/interactive/cost-overlay.ts +26 -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 +4 -2
- 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/renderers/worker-entry.ts +32 -0
- package/src/interactive/slash-autocomplete.ts +4 -6
- package/src/interactive/slash-commands.ts +49 -45
- package/src/interactive/slash-spec.ts +28 -0
- package/src/interactive/theme/labels.ts +19 -13
- package/src/interactive/turn-context.ts +9 -5
- package/src/interactive/turn-recovery.ts +8 -0
- package/src/interactive/turn-runtime.ts +27 -11
- package/src/interactive/turn-state.ts +7 -0
- package/src/interactive/view/artifacts.ts +2 -0
- package/src/interactive/worker-receipts.ts +1 -0
- package/src/interactive/worker-stream.ts +13 -4
- 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/context/index.ts +30 -9
- 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-arguments.ts +1 -0
- package/src/tools/dispatch-event-text.ts +10 -0
- package/src/tools/dispatch-plan.ts +6 -2
- package/src/tools/dispatch-runner.ts +27 -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 +11 -5
- 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/src/tools/worker-evidence.ts +3 -1
- package/src/worker/spec-contract.ts +4 -0
- package/dist/chunk-2Z2IKEXI.js +0 -1554
- package/dist/chunk-RVG5JXAL.js +0 -41
- package/dist/chunk-T56WDKA5.js +0 -183
- package/dist/chunk-VN3SHNBN.js +0 -313
- package/dist/chunk-VPKWYKEY.js +0 -169
- package/dist/reset-OAQP3W4O.js +0 -230
- package/dist/uninstall-N34PCTGJ.js +0 -331
- package/dist/upgrade-PXK3S2YM.js +0 -325
package/dist/chunk-RVG5JXAL.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
init_esm_shims
|
|
4
|
-
} from "./chunk-3R73A4XB.js";
|
|
5
|
-
|
|
6
|
-
// src/domains/safety/rigor.ts
|
|
7
|
-
init_esm_shims();
|
|
8
|
-
import { existsSync } from "node:fs";
|
|
9
|
-
import path from "node:path";
|
|
10
|
-
var VALIDATION_CONTRACT_FILES = [
|
|
11
|
-
path.join(".clio-coder", "validation.yaml"),
|
|
12
|
-
path.join(".clio-coder", "validation.yml"),
|
|
13
|
-
"validation.yaml",
|
|
14
|
-
"validation.yml",
|
|
15
|
-
"VALIDATION.md"
|
|
16
|
-
];
|
|
17
|
-
function resolveRigor(options) {
|
|
18
|
-
if (options.override === "high" || options.override === "normal") return options.override;
|
|
19
|
-
const cwd = options.cwd ?? process.cwd();
|
|
20
|
-
return hasValidationContract(cwd) ? "high" : "normal";
|
|
21
|
-
}
|
|
22
|
-
function parseRigorOverride(value) {
|
|
23
|
-
if (typeof value !== "string") return null;
|
|
24
|
-
const normalized = value.trim().toLowerCase();
|
|
25
|
-
if (normalized === "high") return "high";
|
|
26
|
-
if (normalized === "normal") return "normal";
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
function hasValidationContract(cwd) {
|
|
30
|
-
try {
|
|
31
|
-
return VALIDATION_CONTRACT_FILES.some((relative) => existsSync(path.join(cwd, relative)));
|
|
32
|
-
} catch {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export {
|
|
38
|
-
resolveRigor,
|
|
39
|
-
parseRigorOverride
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=chunk-RVG5JXAL.js.map
|
package/dist/chunk-T56WDKA5.js
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
truncateUtf8
|
|
4
|
-
} from "./chunk-6XLNIQDB.js";
|
|
5
|
-
import {
|
|
6
|
-
init_esm_shims
|
|
7
|
-
} from "./chunk-3R73A4XB.js";
|
|
8
|
-
|
|
9
|
-
// src/domains/dispatch/event-pump.ts
|
|
10
|
-
init_esm_shims();
|
|
11
|
-
var EVENT_TEE_LIMIT = 1024;
|
|
12
|
-
function startDispatchEventPump(source, fold, options = {}) {
|
|
13
|
-
const limit = options.limit ?? EVENT_TEE_LIMIT;
|
|
14
|
-
const pending = [...options.prelude ?? []];
|
|
15
|
-
const waiters = [];
|
|
16
|
-
let finished = false;
|
|
17
|
-
let abandoned = false;
|
|
18
|
-
let dropped = 0;
|
|
19
|
-
const push = (value) => {
|
|
20
|
-
if (abandoned) return;
|
|
21
|
-
const waiter = waiters.shift();
|
|
22
|
-
if (waiter) {
|
|
23
|
-
waiter({ value, done: false });
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
pending.push(value);
|
|
27
|
-
while (pending.length > limit) {
|
|
28
|
-
pending.shift();
|
|
29
|
-
dropped += 1;
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
const end = () => {
|
|
33
|
-
finished = true;
|
|
34
|
-
while (waiters.length > 0) {
|
|
35
|
-
waiters.shift()?.({ value: void 0, done: true });
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
const notify = (event) => {
|
|
39
|
-
try {
|
|
40
|
-
options.onEvent?.(event);
|
|
41
|
-
} catch (error) {
|
|
42
|
-
options.onError?.(error);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
const done = (async () => {
|
|
46
|
-
try {
|
|
47
|
-
for (const event of options.prelude ?? []) notify(event);
|
|
48
|
-
for await (const event of source) {
|
|
49
|
-
try {
|
|
50
|
-
fold(event);
|
|
51
|
-
} catch (error) {
|
|
52
|
-
options.onError?.(error);
|
|
53
|
-
}
|
|
54
|
-
notify(event);
|
|
55
|
-
push(event);
|
|
56
|
-
}
|
|
57
|
-
} catch (error) {
|
|
58
|
-
options.onError?.(error);
|
|
59
|
-
} finally {
|
|
60
|
-
end();
|
|
61
|
-
}
|
|
62
|
-
})();
|
|
63
|
-
const events = {
|
|
64
|
-
next() {
|
|
65
|
-
if (pending.length > 0) {
|
|
66
|
-
return Promise.resolve({ value: pending.shift(), done: false });
|
|
67
|
-
}
|
|
68
|
-
if (finished || abandoned) return Promise.resolve({ value: void 0, done: true });
|
|
69
|
-
return new Promise((resolve) => {
|
|
70
|
-
waiters.push(resolve);
|
|
71
|
-
});
|
|
72
|
-
},
|
|
73
|
-
return() {
|
|
74
|
-
abandoned = true;
|
|
75
|
-
pending.length = 0;
|
|
76
|
-
while (waiters.length > 0) {
|
|
77
|
-
waiters.shift()?.({ value: void 0, done: true });
|
|
78
|
-
}
|
|
79
|
-
return Promise.resolve({ value: void 0, done: true });
|
|
80
|
-
},
|
|
81
|
-
[Symbol.asyncIterator]() {
|
|
82
|
-
return this;
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
return { events, done, droppedEvents: () => dropped };
|
|
86
|
-
}
|
|
87
|
-
var WORKER_OUTPUT_MAX_BYTES = 8192;
|
|
88
|
-
var WORKER_OUTPUT_TRUNCATION_MARKER = "\n[worker output truncated]";
|
|
89
|
-
function isRecord(value) {
|
|
90
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
91
|
-
}
|
|
92
|
-
function assistantTextFromContent(content) {
|
|
93
|
-
if (typeof content === "string") return content;
|
|
94
|
-
if (!Array.isArray(content)) return "";
|
|
95
|
-
return content.map((block) => {
|
|
96
|
-
if (typeof block === "string") return block;
|
|
97
|
-
if (!isRecord(block)) return "";
|
|
98
|
-
return typeof block.text === "string" ? block.text : "";
|
|
99
|
-
}).join("");
|
|
100
|
-
}
|
|
101
|
-
function isDurableAssistantMessage(message) {
|
|
102
|
-
const stopReason = message.stopReason;
|
|
103
|
-
if (stopReason === "toolUse" || stopReason === "error" || stopReason === "aborted" || stopReason === "cancelled") {
|
|
104
|
-
return false;
|
|
105
|
-
}
|
|
106
|
-
if (!Array.isArray(message.content)) return true;
|
|
107
|
-
return !message.content.some((block) => isRecord(block) && block.type === "toolCall");
|
|
108
|
-
}
|
|
109
|
-
function durableAssistantTextFromEvent(event) {
|
|
110
|
-
if (!isRecord(event) || event.type !== "message_end" || !isRecord(event.message)) return "";
|
|
111
|
-
if (event.message.role !== "assistant" || !isDurableAssistantMessage(event.message)) return "";
|
|
112
|
-
return assistantTextFromContent(event.message.content);
|
|
113
|
-
}
|
|
114
|
-
function boundedOutput(state, text) {
|
|
115
|
-
const bytes = Buffer.byteLength(text, "utf8");
|
|
116
|
-
const bounded = truncateUtf8(text, WORKER_OUTPUT_MAX_BYTES, WORKER_OUTPUT_TRUNCATION_MARKER);
|
|
117
|
-
return { state, text: bounded, bytes, truncated: bounded !== text };
|
|
118
|
-
}
|
|
119
|
-
function createWorkerOutputCapture() {
|
|
120
|
-
let finalText = null;
|
|
121
|
-
let partialText = "";
|
|
122
|
-
let partialBytes = 0;
|
|
123
|
-
let partialStored = 0;
|
|
124
|
-
return {
|
|
125
|
-
observe(event) {
|
|
126
|
-
if (!isRecord(event)) return;
|
|
127
|
-
if (event.type === "message_end") {
|
|
128
|
-
const message = isRecord(event.message) ? event.message : null;
|
|
129
|
-
partialText = "";
|
|
130
|
-
partialBytes = 0;
|
|
131
|
-
partialStored = 0;
|
|
132
|
-
if (message === null || message.role !== "assistant") return;
|
|
133
|
-
if (!isDurableAssistantMessage(message)) return;
|
|
134
|
-
const text = assistantTextFromContent(message.content).trim();
|
|
135
|
-
if (text.length > 0) finalText = text;
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
if (event.type !== "message_update") return;
|
|
139
|
-
const assistantEvent = isRecord(event.assistantMessageEvent) ? event.assistantMessageEvent : null;
|
|
140
|
-
if (assistantEvent === null || assistantEvent.type !== "text_delta") return;
|
|
141
|
-
const delta = assistantEvent.delta;
|
|
142
|
-
if (typeof delta !== "string" || delta.length === 0) return;
|
|
143
|
-
partialBytes += Buffer.byteLength(delta, "utf8");
|
|
144
|
-
if (partialStored < WORKER_OUTPUT_MAX_BYTES) {
|
|
145
|
-
partialText += delta;
|
|
146
|
-
partialStored += Buffer.byteLength(delta, "utf8");
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
snapshot() {
|
|
150
|
-
if (partialBytes > 0 && partialText.trim().length > 0) {
|
|
151
|
-
const bounded = truncateUtf8(partialText.trim(), WORKER_OUTPUT_MAX_BYTES, WORKER_OUTPUT_TRUNCATION_MARKER);
|
|
152
|
-
return {
|
|
153
|
-
state: "partial",
|
|
154
|
-
text: bounded,
|
|
155
|
-
bytes: partialBytes,
|
|
156
|
-
truncated: bounded !== partialText.trim() || partialBytes > partialStored
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
if (finalText !== null) return boundedOutput("final", finalText);
|
|
160
|
-
return void 0;
|
|
161
|
-
}
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// src/domains/dispatch/admission-error.ts
|
|
166
|
-
init_esm_shims();
|
|
167
|
-
var AdmissionCanceledError = class extends Error {
|
|
168
|
-
code = "admission_canceled";
|
|
169
|
-
constructor(message = "dispatch: admission canceled before a capacity slot opened") {
|
|
170
|
-
super(message);
|
|
171
|
-
this.name = "AdmissionCanceledError";
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
export {
|
|
176
|
-
EVENT_TEE_LIMIT,
|
|
177
|
-
startDispatchEventPump,
|
|
178
|
-
WORKER_OUTPUT_MAX_BYTES,
|
|
179
|
-
durableAssistantTextFromEvent,
|
|
180
|
-
createWorkerOutputCapture,
|
|
181
|
-
AdmissionCanceledError
|
|
182
|
-
};
|
|
183
|
-
//# sourceMappingURL=chunk-T56WDKA5.js.map
|
package/dist/chunk-VN3SHNBN.js
DELETED
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
isProjectVerifierCheckId
|
|
4
|
-
} from "./chunk-UL3WSD3F.js";
|
|
5
|
-
import {
|
|
6
|
-
SAFE_EXEC_DEFAULT_TIMEOUT_MS,
|
|
7
|
-
resolveSafeCwd
|
|
8
|
-
} from "./chunk-HJWWJ6IL.js";
|
|
9
|
-
import {
|
|
10
|
-
require_dist
|
|
11
|
-
} from "./chunk-APJ265NV.js";
|
|
12
|
-
import {
|
|
13
|
-
__toESM,
|
|
14
|
-
init_esm_shims
|
|
15
|
-
} from "./chunk-3R73A4XB.js";
|
|
16
|
-
|
|
17
|
-
// src/tools/verify/catalog.ts
|
|
18
|
-
init_esm_shims();
|
|
19
|
-
var import_yaml = __toESM(require_dist(), 1);
|
|
20
|
-
import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
21
|
-
import path from "node:path";
|
|
22
|
-
|
|
23
|
-
// src/domains/evidence/ordering.ts
|
|
24
|
-
init_esm_shims();
|
|
25
|
-
function compareCodepoints(left, right) {
|
|
26
|
-
return left < right ? -1 : left > right ? 1 : 0;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// src/tools/verify/catalog.ts
|
|
30
|
-
var PROJECT_VERIFIER_CATALOG_RELATIVE_PATH = ".clio-coder/verifiers.yaml";
|
|
31
|
-
var PROJECT_VERIFIER_CATALOG_VERSION = 1;
|
|
32
|
-
var PROJECT_VERIFIER_CATALOG_CAPS = Object.freeze({
|
|
33
|
-
fileBytes: 256 * 1024,
|
|
34
|
-
checks: 128,
|
|
35
|
-
idBytes: 64,
|
|
36
|
-
descriptionBytes: 512,
|
|
37
|
-
argvEntries: 64,
|
|
38
|
-
argumentBytes: 4096,
|
|
39
|
-
cwdBytes: 512,
|
|
40
|
-
timeoutMs: 9e5,
|
|
41
|
-
tags: 16,
|
|
42
|
-
tagBytes: 32
|
|
43
|
-
});
|
|
44
|
-
var ROOT_FIELDS = /* @__PURE__ */ new Set(["version", "checks"]);
|
|
45
|
-
var CHECK_FIELDS = /* @__PURE__ */ new Set(["id", "description", "command", "cwd", "timeoutMs", "tags"]);
|
|
46
|
-
var TAG_PATTERN = /^[a-z0-9][a-z0-9._-]*$/;
|
|
47
|
-
var SHELL_EXECUTABLES = /* @__PURE__ */ new Set([
|
|
48
|
-
"bash",
|
|
49
|
-
"cmd",
|
|
50
|
-
"command.com",
|
|
51
|
-
"dash",
|
|
52
|
-
"fish",
|
|
53
|
-
"ksh",
|
|
54
|
-
"powershell",
|
|
55
|
-
"pwsh",
|
|
56
|
-
"sh",
|
|
57
|
-
"tcsh",
|
|
58
|
-
"zsh"
|
|
59
|
-
]);
|
|
60
|
-
function isRecord(value) {
|
|
61
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
62
|
-
}
|
|
63
|
-
function utf8Bytes(value) {
|
|
64
|
-
return Buffer.byteLength(value, "utf8");
|
|
65
|
-
}
|
|
66
|
-
function hasControlCharacter(value) {
|
|
67
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
68
|
-
const code = value.charCodeAt(index);
|
|
69
|
-
if (code <= 31 || code === 127) return true;
|
|
70
|
-
}
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
function catalogDiagnostic(message) {
|
|
74
|
-
return { ok: false, reason: `${PROJECT_VERIFIER_CATALOG_RELATIVE_PATH}: ${message}` };
|
|
75
|
-
}
|
|
76
|
-
function unknownFields(record, allowed) {
|
|
77
|
-
return Object.keys(record).filter((key) => !allowed.has(key)).sort(compareCodepoints);
|
|
78
|
-
}
|
|
79
|
-
function relativeCwd(workspaceRoot, resolved) {
|
|
80
|
-
const relative = path.relative(workspaceRoot, resolved);
|
|
81
|
-
return relative.length === 0 ? "." : relative.split(path.sep).join("/");
|
|
82
|
-
}
|
|
83
|
-
function safelyResolveCatalogCwd(rawCwd, workspaceRoot, location) {
|
|
84
|
-
if (path.isAbsolute(rawCwd) || path.win32.isAbsolute(rawCwd)) {
|
|
85
|
-
return new Error(`${location} must be repository-relative; absolute cwd '${rawCwd}' is not allowed`);
|
|
86
|
-
}
|
|
87
|
-
let resolved;
|
|
88
|
-
try {
|
|
89
|
-
resolved = resolveSafeCwd(rawCwd, workspaceRoot);
|
|
90
|
-
} catch {
|
|
91
|
-
return new Error(`${location} escapes the workspace root: '${rawCwd}'`);
|
|
92
|
-
}
|
|
93
|
-
let realCwd;
|
|
94
|
-
try {
|
|
95
|
-
const cwdStat = statSync(resolved);
|
|
96
|
-
if (!cwdStat.isDirectory()) return new Error(`${location} is not a directory: '${rawCwd}'`);
|
|
97
|
-
const realRoot = realpathSync(workspaceRoot);
|
|
98
|
-
realCwd = realpathSync(resolved);
|
|
99
|
-
resolveSafeCwd(realCwd, realRoot);
|
|
100
|
-
} catch (error) {
|
|
101
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
102
|
-
if (message.includes("escapes workspace root")) {
|
|
103
|
-
return new Error(`${location} escapes the workspace root through a symbolic link: '${rawCwd}'`);
|
|
104
|
-
}
|
|
105
|
-
return new Error(`${location} cannot be resolved as a repository directory: '${rawCwd}' (${message})`);
|
|
106
|
-
}
|
|
107
|
-
return { declared: relativeCwd(workspaceRoot, resolved), execution: realCwd };
|
|
108
|
-
}
|
|
109
|
-
function resolveProjectVerifierExecutionCwd(rawCwd, workspaceRoot) {
|
|
110
|
-
const resolution = safelyResolveCatalogCwd(rawCwd, workspaceRoot, "project check cwd");
|
|
111
|
-
return resolution instanceof Error ? resolution : resolution.execution;
|
|
112
|
-
}
|
|
113
|
-
function validateId(value, location) {
|
|
114
|
-
if (typeof value !== "string" || value.length === 0) return new Error(`${location} must be a non-empty string`);
|
|
115
|
-
if (utf8Bytes(value) > PROJECT_VERIFIER_CATALOG_CAPS.idBytes) {
|
|
116
|
-
return new Error(`${location} exceeds the ${PROJECT_VERIFIER_CATALOG_CAPS.idBytes}-byte cap`);
|
|
117
|
-
}
|
|
118
|
-
if (!isProjectVerifierCheckId(value)) {
|
|
119
|
-
return new Error(`${location} must match /^[a-z0-9][a-z0-9._:-]*$/`);
|
|
120
|
-
}
|
|
121
|
-
if (value === "frontend") return new Error(`${location} uses reserved built-in check id 'frontend'`);
|
|
122
|
-
return value;
|
|
123
|
-
}
|
|
124
|
-
function validateDescription(value, location) {
|
|
125
|
-
if (typeof value !== "string" || value.length === 0) return new Error(`${location} must be a non-empty string`);
|
|
126
|
-
if (value.trim() !== value || hasControlCharacter(value)) {
|
|
127
|
-
return new Error(`${location} must be trimmed, single-line text without control characters`);
|
|
128
|
-
}
|
|
129
|
-
if (utf8Bytes(value) > PROJECT_VERIFIER_CATALOG_CAPS.descriptionBytes) {
|
|
130
|
-
return new Error(`${location} exceeds the ${PROJECT_VERIFIER_CATALOG_CAPS.descriptionBytes}-byte cap`);
|
|
131
|
-
}
|
|
132
|
-
return value;
|
|
133
|
-
}
|
|
134
|
-
function validateCommand(value, location) {
|
|
135
|
-
if (!Array.isArray(value) || value.length === 0) {
|
|
136
|
-
return new Error(`${location} must be a non-empty argv string array; shell command strings are not allowed`);
|
|
137
|
-
}
|
|
138
|
-
if (value.length > PROJECT_VERIFIER_CATALOG_CAPS.argvEntries) {
|
|
139
|
-
return new Error(`${location} exceeds the ${PROJECT_VERIFIER_CATALOG_CAPS.argvEntries}-entry cap`);
|
|
140
|
-
}
|
|
141
|
-
const command = [];
|
|
142
|
-
for (const [index, entry] of value.entries()) {
|
|
143
|
-
const entryLocation = `${location}[${index}]`;
|
|
144
|
-
if (typeof entry !== "string" || entry.length === 0) {
|
|
145
|
-
return new Error(`${entryLocation} must be a non-empty string`);
|
|
146
|
-
}
|
|
147
|
-
if (entry.includes("\0")) return new Error(`${entryLocation} must not contain a NUL byte`);
|
|
148
|
-
if (utf8Bytes(entry) > PROJECT_VERIFIER_CATALOG_CAPS.argumentBytes) {
|
|
149
|
-
return new Error(`${entryLocation} exceeds the ${PROJECT_VERIFIER_CATALOG_CAPS.argumentBytes}-byte cap`);
|
|
150
|
-
}
|
|
151
|
-
command.push(entry);
|
|
152
|
-
}
|
|
153
|
-
const executable = command[0] ?? "";
|
|
154
|
-
if (/\s/u.test(executable)) {
|
|
155
|
-
return new Error(`${location}[0] must be one executable token, not a shell command string`);
|
|
156
|
-
}
|
|
157
|
-
const executableName = path.basename(executable).toLowerCase().replace(/\.exe$/u, "");
|
|
158
|
-
if (SHELL_EXECUTABLES.has(executableName)) {
|
|
159
|
-
return new Error(`${location}[0] may not invoke shell executable '${executable}'`);
|
|
160
|
-
}
|
|
161
|
-
return command;
|
|
162
|
-
}
|
|
163
|
-
function validateTimeout(value, location) {
|
|
164
|
-
if (!Number.isInteger(value) || typeof value !== "number" || value <= 0) {
|
|
165
|
-
return new Error(`${location} must be a positive integer number of milliseconds`);
|
|
166
|
-
}
|
|
167
|
-
if (value > PROJECT_VERIFIER_CATALOG_CAPS.timeoutMs) {
|
|
168
|
-
return new Error(`${location} exceeds the ${PROJECT_VERIFIER_CATALOG_CAPS.timeoutMs}ms cap`);
|
|
169
|
-
}
|
|
170
|
-
return value;
|
|
171
|
-
}
|
|
172
|
-
function validateTags(value, location) {
|
|
173
|
-
if (!Array.isArray(value)) return new Error(`${location} must be an array of bounded tag strings`);
|
|
174
|
-
if (value.length > PROJECT_VERIFIER_CATALOG_CAPS.tags) {
|
|
175
|
-
return new Error(`${location} exceeds the ${PROJECT_VERIFIER_CATALOG_CAPS.tags}-tag cap`);
|
|
176
|
-
}
|
|
177
|
-
const tags = [];
|
|
178
|
-
const seen = /* @__PURE__ */ new Set();
|
|
179
|
-
for (const [index, entry] of value.entries()) {
|
|
180
|
-
const entryLocation = `${location}[${index}]`;
|
|
181
|
-
if (typeof entry !== "string" || entry.length === 0) {
|
|
182
|
-
return new Error(`${entryLocation} must be a non-empty string`);
|
|
183
|
-
}
|
|
184
|
-
if (utf8Bytes(entry) > PROJECT_VERIFIER_CATALOG_CAPS.tagBytes) {
|
|
185
|
-
return new Error(`${entryLocation} exceeds the ${PROJECT_VERIFIER_CATALOG_CAPS.tagBytes}-byte cap`);
|
|
186
|
-
}
|
|
187
|
-
if (!TAG_PATTERN.test(entry)) return new Error(`${entryLocation} must match /^[a-z0-9][a-z0-9._-]*$/`);
|
|
188
|
-
if (seen.has(entry)) return new Error(`${location} contains duplicate tag '${entry}'`);
|
|
189
|
-
seen.add(entry);
|
|
190
|
-
tags.push(entry);
|
|
191
|
-
}
|
|
192
|
-
return tags;
|
|
193
|
-
}
|
|
194
|
-
function sourcePathInsideWorkspace(catalogPath, workspaceRoot) {
|
|
195
|
-
try {
|
|
196
|
-
const realRoot = realpathSync(workspaceRoot);
|
|
197
|
-
const realCatalogPath = realpathSync(catalogPath);
|
|
198
|
-
resolveSafeCwd(realCatalogPath, realRoot);
|
|
199
|
-
return realCatalogPath;
|
|
200
|
-
} catch (error) {
|
|
201
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
202
|
-
return new Error(`catalog file must resolve inside the workspace root (${message})`);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
function loadProjectVerifierCatalog(workspaceRoot) {
|
|
206
|
-
const catalogPath = path.join(workspaceRoot, PROJECT_VERIFIER_CATALOG_RELATIVE_PATH);
|
|
207
|
-
if (!existsSync(catalogPath)) return { ok: true, source: null };
|
|
208
|
-
const safeSourcePath = sourcePathInsideWorkspace(catalogPath, workspaceRoot);
|
|
209
|
-
if (safeSourcePath instanceof Error) return catalogDiagnostic(safeSourcePath.message);
|
|
210
|
-
let text;
|
|
211
|
-
try {
|
|
212
|
-
const stats = statSync(safeSourcePath);
|
|
213
|
-
if (!stats.isFile()) return catalogDiagnostic("catalog path must be a regular file");
|
|
214
|
-
if (stats.size > PROJECT_VERIFIER_CATALOG_CAPS.fileBytes) {
|
|
215
|
-
return catalogDiagnostic(`file exceeds the ${PROJECT_VERIFIER_CATALOG_CAPS.fileBytes}-byte cap`);
|
|
216
|
-
}
|
|
217
|
-
text = readFileSync(safeSourcePath, "utf8");
|
|
218
|
-
} catch (error) {
|
|
219
|
-
return catalogDiagnostic(`cannot read catalog (${error instanceof Error ? error.message : String(error)})`);
|
|
220
|
-
}
|
|
221
|
-
return parseProjectVerifierCatalogText(text, workspaceRoot, catalogPath);
|
|
222
|
-
}
|
|
223
|
-
function parseProjectVerifierCatalogText(text, workspaceRoot, catalogPath = path.join(workspaceRoot, PROJECT_VERIFIER_CATALOG_RELATIVE_PATH)) {
|
|
224
|
-
const document = (0, import_yaml.parseDocument)(text, { prettyErrors: false, strict: true, uniqueKeys: true });
|
|
225
|
-
if (document.errors.length > 0) {
|
|
226
|
-
return catalogDiagnostic(`invalid YAML: ${document.errors.map((error) => error.message).join("; ")}`);
|
|
227
|
-
}
|
|
228
|
-
let parsed;
|
|
229
|
-
try {
|
|
230
|
-
parsed = document.toJS({ maxAliasCount: 0 });
|
|
231
|
-
} catch (error) {
|
|
232
|
-
return catalogDiagnostic(`invalid YAML: ${error instanceof Error ? error.message : String(error)}`);
|
|
233
|
-
}
|
|
234
|
-
if (!isRecord(parsed)) return catalogDiagnostic("root must be an object with version and checks fields");
|
|
235
|
-
const rootUnknown = unknownFields(parsed, ROOT_FIELDS);
|
|
236
|
-
if (rootUnknown.length > 0) return catalogDiagnostic(`root has unknown field(s): ${rootUnknown.join(", ")}`);
|
|
237
|
-
if (!Object.hasOwn(parsed, "version")) return catalogDiagnostic("root.version is required");
|
|
238
|
-
if (parsed.version !== PROJECT_VERIFIER_CATALOG_VERSION) {
|
|
239
|
-
return catalogDiagnostic(
|
|
240
|
-
`unsupported version ${JSON.stringify(parsed.version)}; supported version is ${PROJECT_VERIFIER_CATALOG_VERSION}`
|
|
241
|
-
);
|
|
242
|
-
}
|
|
243
|
-
if (!Object.hasOwn(parsed, "checks")) return catalogDiagnostic("root.checks is required");
|
|
244
|
-
if (!Array.isArray(parsed.checks)) return catalogDiagnostic("root.checks must be an array");
|
|
245
|
-
if (parsed.checks.length > PROJECT_VERIFIER_CATALOG_CAPS.checks) {
|
|
246
|
-
return catalogDiagnostic(`root.checks exceeds the ${PROJECT_VERIFIER_CATALOG_CAPS.checks}-check cap`);
|
|
247
|
-
}
|
|
248
|
-
const sourceRef = { kind: "project-catalog", path: catalogPath };
|
|
249
|
-
const checks = [];
|
|
250
|
-
const ids = /* @__PURE__ */ new Map();
|
|
251
|
-
for (const [index, value] of parsed.checks.entries()) {
|
|
252
|
-
const location = `checks[${index}]`;
|
|
253
|
-
if (!isRecord(value)) return catalogDiagnostic(`${location} must be an object`);
|
|
254
|
-
const checkUnknown = unknownFields(value, CHECK_FIELDS);
|
|
255
|
-
if (checkUnknown.length > 0) {
|
|
256
|
-
return catalogDiagnostic(`${location} has unknown field(s): ${checkUnknown.join(", ")}`);
|
|
257
|
-
}
|
|
258
|
-
for (const field of CHECK_FIELDS) {
|
|
259
|
-
if (!Object.hasOwn(value, field)) return catalogDiagnostic(`${location}.${field} is required`);
|
|
260
|
-
}
|
|
261
|
-
const id = validateId(value.id, `${location}.id`);
|
|
262
|
-
if (id instanceof Error) return catalogDiagnostic(id.message);
|
|
263
|
-
const duplicateIndex = ids.get(id);
|
|
264
|
-
if (duplicateIndex !== void 0) {
|
|
265
|
-
return catalogDiagnostic(`${location}.id duplicates '${id}' from checks[${duplicateIndex}].id`);
|
|
266
|
-
}
|
|
267
|
-
const description = validateDescription(value.description, `${location}.description`);
|
|
268
|
-
if (description instanceof Error) return catalogDiagnostic(description.message);
|
|
269
|
-
const command = validateCommand(value.command, `${location}.command`);
|
|
270
|
-
if (command instanceof Error) return catalogDiagnostic(command.message);
|
|
271
|
-
if (typeof value.cwd !== "string" || value.cwd.length === 0) {
|
|
272
|
-
return catalogDiagnostic(`${location}.cwd must be a non-empty repository-relative string`);
|
|
273
|
-
}
|
|
274
|
-
if (value.cwd.includes("\0")) return catalogDiagnostic(`${location}.cwd must not contain a NUL byte`);
|
|
275
|
-
if (utf8Bytes(value.cwd) > PROJECT_VERIFIER_CATALOG_CAPS.cwdBytes) {
|
|
276
|
-
return catalogDiagnostic(`${location}.cwd exceeds the ${PROJECT_VERIFIER_CATALOG_CAPS.cwdBytes}-byte cap`);
|
|
277
|
-
}
|
|
278
|
-
const cwdResolution = safelyResolveCatalogCwd(value.cwd, workspaceRoot, `${location}.cwd`);
|
|
279
|
-
if (cwdResolution instanceof Error) return catalogDiagnostic(cwdResolution.message);
|
|
280
|
-
const cwd = cwdResolution.declared;
|
|
281
|
-
const timeoutMs = validateTimeout(value.timeoutMs, `${location}.timeoutMs`);
|
|
282
|
-
if (timeoutMs instanceof Error) return catalogDiagnostic(timeoutMs.message);
|
|
283
|
-
const tags = validateTags(value.tags, `${location}.tags`);
|
|
284
|
-
if (tags instanceof Error) return catalogDiagnostic(tags.message);
|
|
285
|
-
ids.set(id, index);
|
|
286
|
-
checks.push({ id, description, command, cwd, timeoutMs, tags, source: { ...sourceRef } });
|
|
287
|
-
}
|
|
288
|
-
checks.sort((left, right) => compareCodepoints(left.id, right.id));
|
|
289
|
-
return { ok: true, source: { ...sourceRef, checks } };
|
|
290
|
-
}
|
|
291
|
-
function packageDeclaredCheck(id, packagePath, cwd, tags) {
|
|
292
|
-
return {
|
|
293
|
-
id,
|
|
294
|
-
description: `Run package.json script '${id}'.`,
|
|
295
|
-
command: ["npm", "run", id],
|
|
296
|
-
cwd,
|
|
297
|
-
timeoutMs: SAFE_EXEC_DEFAULT_TIMEOUT_MS,
|
|
298
|
-
tags,
|
|
299
|
-
source: { kind: "package.json", path: packagePath }
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
export {
|
|
304
|
-
compareCodepoints,
|
|
305
|
-
PROJECT_VERIFIER_CATALOG_RELATIVE_PATH,
|
|
306
|
-
PROJECT_VERIFIER_CATALOG_VERSION,
|
|
307
|
-
PROJECT_VERIFIER_CATALOG_CAPS,
|
|
308
|
-
resolveProjectVerifierExecutionCwd,
|
|
309
|
-
loadProjectVerifierCatalog,
|
|
310
|
-
parseProjectVerifierCatalogText,
|
|
311
|
-
packageDeclaredCheck
|
|
312
|
-
};
|
|
313
|
-
//# sourceMappingURL=chunk-VN3SHNBN.js.map
|