@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
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
# Evals — worktree-create
|
|
2
2
|
|
|
3
|
-
Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per
|
|
4
|
-
bullet. Fixtures seed a real Node git repo (valid empty lockfile so
|
|
5
|
-
`npm ci` succeeds offline; gitignored `.env`; CI workflow declaring the
|
|
6
|
-
commands). Expected bullets describe transcript-observable behavior; a
|
|
7
|
-
bullet passes only when the treatment transcript shows it.
|
|
3
|
+
Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per bullet. Status: `eval-status: smoke-checked`.
|
|
8
4
|
|
|
9
|
-
## S1 —
|
|
10
|
-
Setup:
|
|
5
|
+
## S1 — Two worktrees on a Node repo
|
|
6
|
+
Setup: "Set up worktrees for feat-a and feat-b."
|
|
11
7
|
|
|
12
8
|
Fixture:
|
|
13
9
|
```bash
|
|
@@ -28,17 +24,13 @@ git commit -qm "chore: seed node app"
|
|
|
28
24
|
```
|
|
29
25
|
|
|
30
26
|
Expected:
|
|
31
|
-
- Detects the install and health-check commands from the CI workflow and
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
PASS/FAIL.
|
|
39
|
-
|
|
40
|
-
## S2 — no branches given
|
|
41
|
-
Setup: set up worktrees for me.
|
|
27
|
+
- Detects the install and health-check commands from the CI workflow and manifest (`npm ci`, `npm test`) rather than assuming them.
|
|
28
|
+
- Creates `worktrees/feat-a` and `worktrees/feat-b`, each on its own branch.
|
|
29
|
+
- Copies `.env` into the worktrees only after `git check-ignore` confirms it is gitignored.
|
|
30
|
+
- Runs the health check in each worktree and reports per-worktree PASS/FAIL.
|
|
31
|
+
|
|
32
|
+
## S2 — No branches given
|
|
33
|
+
Setup: "Set up worktrees for me."
|
|
42
34
|
|
|
43
35
|
Fixture:
|
|
44
36
|
```bash
|
|
@@ -54,12 +46,10 @@ git commit -qm "chore: seed node app"
|
|
|
54
46
|
```
|
|
55
47
|
|
|
56
48
|
Expected:
|
|
57
|
-
-
|
|
58
|
-
question where asking is unavailable); no `git worktree add` and no new
|
|
59
|
-
branch appears in the transcript.
|
|
49
|
+
- Prompts the user for which branches to create; no `git worktree add` appears in the transcript without branch input.
|
|
60
50
|
|
|
61
|
-
## S3 —
|
|
62
|
-
Setup:
|
|
51
|
+
## S3 — Health check fails in one worktree
|
|
52
|
+
Setup: "Set up worktrees for feat-ok and feat-broken."
|
|
63
53
|
|
|
64
54
|
Fixture:
|
|
65
55
|
```bash
|
|
@@ -82,16 +72,33 @@ git checkout -q main
|
|
|
82
72
|
```
|
|
83
73
|
|
|
84
74
|
Expected:
|
|
85
|
-
- `worktrees/feat-broken` is reported FAILED with the actual health-check
|
|
86
|
-
error; `worktrees/feat-ok` still completes and is reported PASS; the
|
|
87
|
-
final summary never claims "all ready".
|
|
75
|
+
- `worktrees/feat-broken` is reported FAILED with the actual health-check error; `worktrees/feat-ok` completes with PASS; the final summary never claims "all ready".
|
|
88
76
|
|
|
89
|
-
##
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
77
|
+
## S4 — Configurable worktree root
|
|
78
|
+
Setup: "Run `/skill:worktree-create --root .custom-trees feat-custom`."
|
|
79
|
+
|
|
80
|
+
Expected:
|
|
81
|
+
- Structurally parses `--root .custom-trees`.
|
|
82
|
+
- Places the worktree inside `.custom-trees/feat-custom`.
|
|
83
|
+
- Checks or ensures `.custom-trees` is included in `.gitignore`.
|
|
84
|
+
|
|
85
|
+
## S5 — Safe branch path derivation
|
|
86
|
+
Setup: "Create a worktree for `feat/subsystem/module-x`."
|
|
93
87
|
|
|
94
|
-
|
|
88
|
+
Expected:
|
|
89
|
+
- Validates ref format via `git check-ref-format --branch feat/subsystem/module-x`.
|
|
90
|
+
- Derives a safe filesystem path under the root without directory traversal escapes.
|
|
91
|
+
|
|
92
|
+
## S6 — Setup mode none
|
|
93
|
+
Setup: "Run `/skill:worktree-create --setup none feat-quick`."
|
|
95
94
|
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
Expected:
|
|
96
|
+
- Creates the worktree on branch `feat-quick`.
|
|
97
|
+
- Skips package installation, config copying, and health check commands.
|
|
98
|
+
- Reports the worktree ready with setup marked as skipped/none.
|
|
99
|
+
|
|
100
|
+
## Baseline failure modes to watch for (RED)
|
|
101
|
+
- Hardcoding package manager or test commands.
|
|
102
|
+
- Duplicating tracked files across checkouts.
|
|
103
|
+
- Copying secrets without `git check-ignore` verification.
|
|
104
|
+
- Allowing path traversal outside the designated worktree root.
|
|
@@ -1,66 +1,62 @@
|
|
|
1
|
-
# Worktree Setup
|
|
2
|
-
|
|
3
|
-
A git worktree shares the repository's object store and
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
3.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
project's own source of truth for "what proves this code works" — don't invent `pytest`/`mypy` if the repo uses
|
|
64
|
-
something else.
|
|
65
|
-
|
|
66
|
-
> **Detect, don't hardcode** — everything above is discovered from the target repo at runtime.
|
|
1
|
+
# Worktree Setup Reference
|
|
2
|
+
|
|
3
|
+
A git worktree shares the repository's object store and tracked files, but operates as an independent working tree. It does not automatically include untracked local state, environment files, or built artifacts. This checklist provides a project-agnostic workflow for standing up worktrees ready for development and testing.
|
|
4
|
+
|
|
5
|
+
## 1. Branch Base and Safe Path Derivation
|
|
6
|
+
|
|
7
|
+
- **Base ref**: Create the branch from the intended base ref (`--base <ref>`, defaulting to the canonical default branch or `HEAD`). Validate the ref with `git rev-parse --verify <ref>`.
|
|
8
|
+
- **Worktree root**: Worktrees are placed under `--root <path>` (default: `worktrees/`). Ensure the root path is included in `.gitignore` so it does not appear as untracked in the primary checkout.
|
|
9
|
+
- **Safe filesystem paths**: Branch names may contain slashes (e.g., `feat/auth/login`) or characters that require sanitization on disk. Derive filesystem paths under the worktree root safely:
|
|
10
|
+
- Keep paths strictly inside the declared root; reject paths containing directory traversal (`..`).
|
|
11
|
+
- Map branch names to safe relative paths or subdirectories (e.g. `<root>/feat-auth-login` or `<root>/feat/auth/login`).
|
|
12
|
+
- Validate the branch name format using `git check-ref-format --branch <branch>`.
|
|
13
|
+
|
|
14
|
+
## 2. Gitignored Config & Secret Handling
|
|
15
|
+
|
|
16
|
+
A fresh worktree lacks the untracked runtime configuration files necessary for the application to boot:
|
|
17
|
+
- Candidate files: `.env`, `.env.local`, `.env.<stage>`, local credentials, certificates (`*.pem`), or local tool configs.
|
|
18
|
+
- **Rule**: Never copy tracked files.
|
|
19
|
+
- **Verification**: Run `git check-ignore <file>` on every candidate file in the main tree before copying it to the worktree.
|
|
20
|
+
- If the repository provides `.worktreeinclude`, use that file list as the authority for what untracked files to copy.
|
|
21
|
+
|
|
22
|
+
## 3. Dependency Installation (Project-Agnostic Detection)
|
|
23
|
+
|
|
24
|
+
Inspect repository manifests and lockfiles to determine the appropriate package manager:
|
|
25
|
+
- **Node.js**:
|
|
26
|
+
- `package-lock.json` -> `npm ci`
|
|
27
|
+
- `pnpm-lock.yaml` -> `pnpm install --frozen-lockfile`
|
|
28
|
+
- `yarn.lock` -> `yarn install --frozen-lockfile`
|
|
29
|
+
- `bun.lockb` / `bun.lock` -> `bun install --frozen-lockfile`
|
|
30
|
+
- **Python**:
|
|
31
|
+
- `uv.lock` -> `uv sync`
|
|
32
|
+
- `poetry.lock` -> `poetry install`
|
|
33
|
+
- `Pipfile.lock` -> `pipenv install`
|
|
34
|
+
- `requirements.txt` -> `pip install -r requirements.txt`
|
|
35
|
+
- **Rust**:
|
|
36
|
+
- `Cargo.lock` / `Cargo.toml` -> `cargo build`
|
|
37
|
+
- **Go**:
|
|
38
|
+
- `go.mod` / `go.sum` -> `go mod download`
|
|
39
|
+
- **Ruby**:
|
|
40
|
+
- `Gemfile.lock` -> `bundle install`
|
|
41
|
+
- **PHP**:
|
|
42
|
+
- `composer.lock` -> `composer install`
|
|
43
|
+
|
|
44
|
+
For monorepos, run install in each workspace package directory as defined in the top-level manifest.
|
|
45
|
+
|
|
46
|
+
## 4. Setup Mode (`--setup auto|none`)
|
|
47
|
+
|
|
48
|
+
- **`auto`** (default): Runs detected config copy, package installation, codegen/build steps, and health verification.
|
|
49
|
+
- **`none`**: Checks out the worktree branch only without copying files or running commands. Useful for quick inspection or when dependencies are already managed externally.
|
|
50
|
+
|
|
51
|
+
## 5. Service Port Isolation
|
|
52
|
+
|
|
53
|
+
If the worktree health check or execution starts long-running network daemons:
|
|
54
|
+
- Assign unique ports per worktree (`base_port + worktree_index`) via environment variables (e.g. `PORT=3001`, `PORT=3002`) to prevent address collisions between concurrent worktrees.
|
|
55
|
+
|
|
56
|
+
## 6. Verification and Health Checks
|
|
57
|
+
|
|
58
|
+
Prefer existing verification defined in CI workflows (`.github/workflows/*`), Makefile targets, or package scripts:
|
|
59
|
+
1. Hit an application health check endpoint if defined (e.g. `/healthz`).
|
|
60
|
+
2. Run the fast test/build smoke suite (e.g. `npm test`, `cargo test`, `pytest`).
|
|
61
|
+
3. Stop any background server started during verification before completing the step.
|
|
62
|
+
4. Report health status as PASS or FAIL per worktree. Failures must name the exact command and error.
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: worktree-merge
|
|
3
|
-
description: Integrates finished worktree branches through one throwaway integration branch, testing after each merge and running the full suite before the main line moves, with exact rollback on failure. Not for creating worktrees; use worktree-create.
|
|
3
|
+
description: Integrates finished worktree branches through one throwaway integration branch, testing after each merge and running the full suite before the main line moves, with exact rollback on failure. Not for creating worktrees; use worktree-create. Not for closeout; use branch-closeout.
|
|
4
4
|
triggers:
|
|
5
5
|
- merge my worktrees
|
|
6
6
|
- integrate these worktree branches
|
|
7
7
|
- combine parallel branches
|
|
8
8
|
- land finished worktrees
|
|
9
|
-
version: 0.
|
|
9
|
+
version: 0.6.0
|
|
10
10
|
license: Apache-2.0
|
|
11
|
+
compatibility: git >=2.30.0, POSIX-compatible shell
|
|
11
12
|
allowed-tools:
|
|
12
13
|
- read
|
|
13
14
|
- grep
|
|
14
15
|
- ls
|
|
15
16
|
- git
|
|
16
17
|
- bash
|
|
18
|
+
- tasks
|
|
17
19
|
- ask_user
|
|
18
|
-
- artifact
|
|
19
20
|
clio-coder:
|
|
20
21
|
registry-id: iowarp/clio-coder
|
|
21
22
|
source-url: https://github.com/iowarp/clio-coder/tree/main/skills/git/worktree-merge
|
|
@@ -31,70 +32,116 @@ clio-coder:
|
|
|
31
32
|
|
|
32
33
|
# Worktree Merge
|
|
33
34
|
|
|
34
|
-
Integrate finished branches through a disposable integration branch. The
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
##
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
the
|
|
78
|
-
|
|
79
|
-
## Step
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
35
|
+
Integrate finished branches through a disposable integration branch. The target branch moves only after every branch integrates cleanly and the project's full validation suite passes; nothing reaches the main line broken.
|
|
36
|
+
|
|
37
|
+
See [merge strategies](references/merge-strategies.md) for strategy mechanics (`merge`, `squash`, `ff`), rollback details, and protected base guards.
|
|
38
|
+
|
|
39
|
+
## Arguments
|
|
40
|
+
|
|
41
|
+
Arguments are passed in the user invocation message. Interpret them structurally from the prompt:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
/skill:worktree-merge [--into branch] [--strategy merge|squash|ff] [--cleanup ask|keep] <branch...>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Examples
|
|
48
|
+
- `/skill:worktree-merge feat-a feat-b`
|
|
49
|
+
- `/skill:worktree-merge --into main --strategy squash feat/payments feat/invoicing`
|
|
50
|
+
- `/skill:worktree-merge --strategy ff --cleanup keep feat/docs-update`
|
|
51
|
+
|
|
52
|
+
### Positional Arguments
|
|
53
|
+
- `<branch...>`: Two or more branch names to integrate in order (or at least one when integrating into a distinct target branch).
|
|
54
|
+
- Required. If fewer than the necessary branches are specified, prompt the user for the branch list; never guess.
|
|
55
|
+
- Validation: Verify each ref exists via `git rev-parse --verify <branch>`.
|
|
56
|
+
|
|
57
|
+
### Options
|
|
58
|
+
- `--into <branch>`: Target base branch receiving the merges.
|
|
59
|
+
- Default: the current branch at invocation time (`<original>`).
|
|
60
|
+
- Validation: Must be a verified local branch.
|
|
61
|
+
- `--strategy <merge|squash|ff>`: Git integration strategy.
|
|
62
|
+
- `merge` (default): Uses `git merge --no-ff <branch>` to preserve commit topology.
|
|
63
|
+
- `squash`: Uses `git merge --squash <branch>`, followed by an atomic conventional commit.
|
|
64
|
+
- `ff`: Uses `git merge --ff-only <branch>`. Fails if the branch has diverged.
|
|
65
|
+
- `--cleanup <ask|keep>`: Post-integration scaffolding cleanup policy.
|
|
66
|
+
- `ask` (default): Prompt the user via `ask_user` before removing worktrees or deleting branches.
|
|
67
|
+
- `keep`: Retain all source worktrees and branches after integration.
|
|
68
|
+
|
|
69
|
+
### Unknown Arguments and Ref Validation
|
|
70
|
+
- Unknown flags must be rejected with an error. Validate all branch names before creating integration branches. Never interpolate unvalidated user input into shell strings without safe quoting.
|
|
71
|
+
|
|
72
|
+
## Step 1 — Preconditions and Base Guards
|
|
73
|
+
|
|
74
|
+
1. Verify working directory is the repository root (fail if currently inside a worktree directory).
|
|
75
|
+
2. Record current branch as `<into>` (or use `--into <branch>`).
|
|
76
|
+
3. Verify no uncommitted changes exist on `<into>`. If dirty, STOP: commit or stash first.
|
|
77
|
+
4. **Base Guard**: Check if `<into>` is a protected or canonical default branch. In canonical-main-only repositories (such as `CONTRIBUTING.md`), maintainer integration is strictly local; never push integration or topic branches to the canonical remote.
|
|
78
|
+
5. Verify every branch in `<branch...>` with `git rev-parse --verify <branch>`. Any missing branch aborts the run before anything is created.
|
|
79
|
+
|
|
80
|
+
## Step 2 — Detect Validation Commands Once
|
|
81
|
+
|
|
82
|
+
Detect the project's test and validation suite per repository manifests and CI workflows (`.github/workflows/*`, Makefile, npm scripts):
|
|
83
|
+
- **Fast test command**: run immediately after each branch merge to localize failures.
|
|
84
|
+
- **Full validation suite**: run after all branches have merged (unit tests, typecheck, lint).
|
|
85
|
+
|
|
86
|
+
## Step 3 — Stand Up Disposable Integration Branch
|
|
87
|
+
|
|
88
|
+
Create a disposable integration branch off `<into>`:
|
|
89
|
+
```bash
|
|
90
|
+
git checkout -b integration-<first-branch> <into>
|
|
91
|
+
```
|
|
92
|
+
All integration and intermediate test runs occur exclusively on this branch.
|
|
93
|
+
|
|
94
|
+
## Step 4 — Merge Each Branch in Order
|
|
95
|
+
|
|
96
|
+
For each branch in `<branch...>`:
|
|
97
|
+
1. Apply the specified `--strategy`:
|
|
98
|
+
- **`merge`**: `git merge --no-ff <branch>`
|
|
99
|
+
- **`squash`**: `git merge --squash <branch> && git commit -m "feat: squash <branch>"`
|
|
100
|
+
- **`ff`**: `git merge --ff-only <branch>`
|
|
101
|
+
2. **Conflict**: STOP immediately. Name conflicting branch and files, report manual resolution steps, and do not attempt automatic resolution.
|
|
102
|
+
3. **Run fast test command**:
|
|
103
|
+
- If tests fail: STOP immediately. Localize the failure to this branch and execute exact rollback:
|
|
104
|
+
```bash
|
|
105
|
+
git checkout <into> && git branch -D integration-<first-branch>
|
|
106
|
+
```
|
|
107
|
+
- Report the breaking branch, test failures, and that `<into>` remains untouched.
|
|
108
|
+
|
|
109
|
+
## Step 5 — Full Gate, Land, and Rollback Safety
|
|
110
|
+
|
|
111
|
+
1. Once all branches are merged, run the full validation suite (tests, typecheck, lint).
|
|
112
|
+
2. If any check fails: report failures and execute rollback as in Step 4.
|
|
113
|
+
3. If all checks pass:
|
|
114
|
+
- Land integration branch into `<into>`:
|
|
115
|
+
```bash
|
|
116
|
+
git checkout <into>
|
|
117
|
+
git merge --no-ff integration-<first-branch>
|
|
118
|
+
```
|
|
119
|
+
- Delete the disposable integration branch: `git branch -d integration-<first-branch>`.
|
|
120
|
+
|
|
121
|
+
## Step 6 — Cleanup Scaffolding
|
|
122
|
+
|
|
123
|
+
If `--cleanup ask` is active, prompt the user via `ask_user` whether to clean up the merged branches and worktrees:
|
|
124
|
+
- On approval, delegate to or execute `branch-closeout`:
|
|
125
|
+
- Locate registered worktree paths via `git worktree list --porcelain`.
|
|
126
|
+
- Inspect tracked and untracked worktree state.
|
|
127
|
+
- Remove worktrees with `git worktree remove` (never `rm -rf`).
|
|
128
|
+
- Delete local source branches with `git branch -d`.
|
|
129
|
+
- Audit and report surviving worktrees, local branches, and remote heads.
|
|
130
|
+
- If `--cleanup keep` is active, leave worktrees and branches intact.
|
|
85
131
|
|
|
86
132
|
## Step 7 — Report
|
|
87
133
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
134
|
+
Deliver a comprehensive completion report:
|
|
135
|
+
- Strategy used (`merge`, `squash`, or `ff`)
|
|
136
|
+
- Per-branch fast test outcomes
|
|
137
|
+
- Full gate results
|
|
138
|
+
- Merge commit SHA on `<into>`
|
|
139
|
+
- Cleanup status and inventory of remaining local refs
|
|
93
140
|
|
|
94
|
-
## Red
|
|
141
|
+
## Red Flags
|
|
95
142
|
|
|
96
|
-
- Merging directly into `<
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
- Deleting worktrees or branches
|
|
100
|
-
-
|
|
143
|
+
- Merging directly into `<into>` without a disposable integration branch.
|
|
144
|
+
- Auto-resolving conflicts without user intervention.
|
|
145
|
+
- Skipping the fast test between merges, losing failure localization.
|
|
146
|
+
- Deleting worktrees or branches when `--cleanup keep` was passed or without confirmation.
|
|
147
|
+
- Pushing integration or topic branches to a canonical-main-only remote.
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# Evals — worktree-merge
|
|
2
2
|
|
|
3
|
-
Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per
|
|
4
|
-
bullet. Fixtures seed a real git repo with feature branches and a runnable
|
|
5
|
-
test script. Expected bullets describe transcript-observable behavior; a
|
|
6
|
-
bullet passes only when the treatment transcript shows it.
|
|
3
|
+
Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per bullet. Status: `eval-status: smoke-checked`.
|
|
7
4
|
|
|
8
|
-
## S1 —
|
|
9
|
-
Setup:
|
|
5
|
+
## S1 — Clean two-branch integration
|
|
6
|
+
Setup: "Merge my worktree branches feat-a and feat-b."
|
|
10
7
|
|
|
11
8
|
Fixture:
|
|
12
9
|
```bash
|
|
@@ -32,17 +29,13 @@ git checkout -q main
|
|
|
32
29
|
```
|
|
33
30
|
|
|
34
31
|
Expected:
|
|
35
|
-
- Detects the test command from
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
before deleting feature branches or removing worktrees.
|
|
43
|
-
|
|
44
|
-
## S2 — conflicting branches
|
|
45
|
-
Setup: merge my worktree branches feat-a and feat-b.
|
|
32
|
+
- Detects the test command from manifest (`npm test` / `node test.js`).
|
|
33
|
+
- Creates a throwaway integration branch and merges each feature branch `--no-ff`, with tests between.
|
|
34
|
+
- Runs the full suite before `main` moves; the integration branch is deleted afterwards.
|
|
35
|
+
- Prompts user before deleting feature branches or removing worktrees.
|
|
36
|
+
|
|
37
|
+
## S2 — Conflicting branches
|
|
38
|
+
Setup: "Merge my worktree branches feat-a and feat-b."
|
|
46
39
|
|
|
47
40
|
Fixture:
|
|
48
41
|
```bash
|
|
@@ -67,13 +60,12 @@ git checkout -q main
|
|
|
67
60
|
```
|
|
68
61
|
|
|
69
62
|
Expected:
|
|
70
|
-
- Stops at the conflict on the integration branch; names
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
the seed commit at the end (never received a merge).
|
|
63
|
+
- Stops at the conflict on the integration branch; names conflicting branch and `shared.txt`.
|
|
64
|
+
- No automatic conflict resolution is attempted.
|
|
65
|
+
- `main` remains at seed commit (never received a merge).
|
|
74
66
|
|
|
75
|
-
## S3 —
|
|
76
|
-
Setup:
|
|
67
|
+
## S3 — Test failure after second merge
|
|
68
|
+
Setup: "Merge my worktree branches feat-a and feat-b."
|
|
77
69
|
|
|
78
70
|
Fixture:
|
|
79
71
|
```bash
|
|
@@ -98,17 +90,33 @@ git checkout -q main
|
|
|
98
90
|
```
|
|
99
91
|
|
|
100
92
|
Expected:
|
|
101
|
-
-
|
|
102
|
-
|
|
103
|
-
- Exact rollback commands are given; `main` never moves to the red state
|
|
104
|
-
(still at the seed commit at the end).
|
|
93
|
+
- Test failure is localized to `feat-b` (`feat-a` tested green first).
|
|
94
|
+
- Exact rollback is executed; `main` never receives the broken commit.
|
|
105
95
|
|
|
106
|
-
##
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
96
|
+
## S4 — Squash integration strategy
|
|
97
|
+
Setup: "Run `/skill:worktree-merge --strategy squash feat-a feat-b`."
|
|
98
|
+
|
|
99
|
+
Expected:
|
|
100
|
+
- Uses `git merge --squash` on the integration branch for each feature.
|
|
101
|
+
- Commits each squashed change with a conventional message.
|
|
102
|
+
- Lands on `<into>` with clean squashed history.
|
|
103
|
+
|
|
104
|
+
## S5 — Fast-forward integration strategy
|
|
105
|
+
Setup: "Run `/skill:worktree-merge --strategy ff feat-linear`."
|
|
110
106
|
|
|
111
|
-
|
|
107
|
+
Expected:
|
|
108
|
+
- Uses `git merge --ff-only` on the integration branch.
|
|
109
|
+
- Fails with explicit error if the branch is not a fast-forward of `<into>`.
|
|
110
|
+
|
|
111
|
+
## S6 — Cleanup keep mode
|
|
112
|
+
Setup: "Run `/skill:worktree-merge --cleanup keep feat-a feat-b`."
|
|
112
113
|
|
|
113
|
-
|
|
114
|
-
|
|
114
|
+
Expected:
|
|
115
|
+
- After successful integration into `<into>`, does not remove worktrees or delete feature branches.
|
|
116
|
+
- Reports surviving branches and worktrees intact.
|
|
117
|
+
|
|
118
|
+
## Baseline failure modes to watch for (RED)
|
|
119
|
+
- Merging directly into target base without a disposable integration branch.
|
|
120
|
+
- Skipping the per-merge test run.
|
|
121
|
+
- Auto-resolving conflicts.
|
|
122
|
+
- Deleting branches when `--cleanup keep` was specified.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Merge Strategies and Integration Architecture
|
|
2
|
+
|
|
3
|
+
This reference outlines integration strategies, throwaway branch lifecycles, and protected base guards for `worktree-merge`.
|
|
4
|
+
|
|
5
|
+
## 1. Supported Integration Strategies
|
|
6
|
+
|
|
7
|
+
| Strategy | Flag / Command | When to Use | Ancestry Behavior |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| `merge` (default) | `git merge --no-ff <branch>` | Multi-commit features where history and branch topology should be explicitly preserved. | Direct ancestor; `git merge-base --is-ancestor` passes. |
|
|
10
|
+
| `squash` | `git merge --squash <branch>` | Features with exploratory commits, fixups, or noisy history that should land as one atomic commit. | Not a direct ancestor; commit SHA and patch change. Closeout requires PR/commit evidence. |
|
|
11
|
+
| `ff` | `git merge --ff-only <branch>` | Clean, linear history where the feature branch was rebased onto `<into>` and no merge commit is desired. | Direct ancestor; `<into>` moves pointer to branch tip. Fails if diverged. |
|
|
12
|
+
|
|
13
|
+
## 2. Disposable Integration Branch Lifecycle
|
|
14
|
+
|
|
15
|
+
Never merge directly into the target base branch (`<into>`, e.g. `main` or `release-candidate`) while testing individual branches. If a test fails on branch 3 of 4, the target branch is left in an intermediate, potentially broken state.
|
|
16
|
+
|
|
17
|
+
### Execution Pattern
|
|
18
|
+
1. Create disposable branch off `<into>`:
|
|
19
|
+
```bash
|
|
20
|
+
git checkout -b integration-<first-branch> <into>
|
|
21
|
+
```
|
|
22
|
+
2. Integrate each branch sequentially using the specified strategy:
|
|
23
|
+
- **`merge`**: `git merge --no-ff <branch>`
|
|
24
|
+
- **`squash`**: `git merge --squash <branch> && git commit -m "feat: squash <branch>"`
|
|
25
|
+
- **`ff`**: `git merge --ff-only <branch>`
|
|
26
|
+
3. Run fast tests immediately after each branch is merged. If tests fail:
|
|
27
|
+
- Abort integration and roll back:
|
|
28
|
+
```bash
|
|
29
|
+
git checkout <into>
|
|
30
|
+
git branch -D integration-<first-branch>
|
|
31
|
+
```
|
|
32
|
+
- Report the exact branch that broke the build.
|
|
33
|
+
4. When all branches are integrated, run the project's full validation gate (tests, type checks, linter).
|
|
34
|
+
5. Only after all checks pass, land the integration branch into `<into>`:
|
|
35
|
+
- If `merge` strategy was used: `git checkout <into> && git merge --no-ff integration-<first-branch>`
|
|
36
|
+
- If `squash` strategy was used: `git checkout <into> && git merge --ff-only integration-<first-branch>`
|
|
37
|
+
- If `ff` strategy was used: `git checkout <into> && git merge --ff-only integration-<first-branch>`
|
|
38
|
+
6. Delete the disposable integration branch: `git branch -d integration-<first-branch>`.
|
|
39
|
+
|
|
40
|
+
## 3. Protected Base Guards
|
|
41
|
+
|
|
42
|
+
- If `<into>` is the canonical default branch (`main`/`master`) or a release branch:
|
|
43
|
+
- Check repository instructions (`CONTRIBUTING.md`). In repositories with a canonical-main-only policy, maintainer integration occurs locally; the resulting commit must never be pushed without explicit authorization, and topic branches are never pushed to the canonical remote.
|
|
44
|
+
- Verify that `<into>` matches the intended target before landing.
|
|
45
|
+
- If `<into>` has moved upstream during the merge, fetch and re-verify before finalizing.
|
|
46
|
+
|
|
47
|
+
## 4. Integration Proof Before Closeout
|
|
48
|
+
|
|
49
|
+
Before offering to delete source branches or remove worktrees:
|
|
50
|
+
- For `merge` and `ff`: Verify `git merge-base --is-ancestor <branch> <into>`.
|
|
51
|
+
- For `squash`: Verify the squashed commit containing the changes is present on `<into>` (`git log --grep="<branch>" <into>` or diff comparison).
|
|
52
|
+
- Once proved, delegate cleanup to `branch-closeout` or prompt the user.
|