@joshuafolkken/kit 1.872.0
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/.claude/.claude-plugin/plugin.json +11 -0
- package/.claude/settings.json +110 -0
- package/.claude/skills/dependency-update/SKILL.md +76 -0
- package/.claude/skills/epic-commands/SKILL.md +463 -0
- package/.claude/skills/verify-ui/SKILL.md +96 -0
- package/.claude/skills/workflow-commands/SKILL.md +265 -0
- package/.claude/skills/workflow-commands/background-commands.md +130 -0
- package/.claude/skills/workflow-commands/backlogrun-child.md +364 -0
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +345 -0
- package/.claude/skills/workflow-commands/backlogrun-park.md +179 -0
- package/.claude/skills/workflow-commands/backlogrun-progress.md +600 -0
- package/.claude/skills/workflow-commands/backlogrun-steps.md +604 -0
- package/.claude/skills/workflow-commands/backlogrun.md +109 -0
- package/.claude/skills/workflow-commands/chain-rule.md +98 -0
- package/.claude/skills/workflow-commands/delegation.md +52 -0
- package/.claude/skills/workflow-commands/followup-reference.md +118 -0
- package/.claude/skills/workflow-commands/followup.md +222 -0
- package/.claude/skills/workflow-commands/fullrun-steps.md +93 -0
- package/.claude/skills/workflow-commands/fullrun.md +82 -0
- package/.claude/skills/workflow-commands/halfrun.md +73 -0
- package/.claude/skills/workflow-commands/into-target.md +48 -0
- package/.claude/skills/workflow-commands/issue-comments.md +109 -0
- package/.claude/skills/workflow-commands/issue-fold-existing.md +27 -0
- package/.claude/skills/workflow-commands/issue-scout.md +45 -0
- package/.claude/skills/workflow-commands/kickoff.md +82 -0
- package/.claude/skills/workflow-commands/latest-gate.md +85 -0
- package/.claude/skills/workflow-commands/needs-human-review.md +64 -0
- package/.claude/skills/workflow-commands/observation-filing.md +349 -0
- package/.claude/skills/workflow-commands/pre-gate-cut.md +340 -0
- package/.claude/skills/workflow-commands/prerequisite.md +62 -0
- package/.claude/skills/workflow-commands/retrospective.md +81 -0
- package/.claude/skills/workflow-commands/rule-residency.md +267 -0
- package/.claude/skills/workflow-commands/split-assessment.md +130 -0
- package/.claude/skills/workflow-commands/target-repository.md +58 -0
- package/.claude/skills/workflow-commands/working-tree-hold.md +66 -0
- package/.claude-plugin/marketplace.json +15 -0
- package/.coderabbit.yaml +50 -0
- package/.codex/config.toml +8 -0
- package/.codex/hooks.json +71 -0
- package/.cursorrules +45 -0
- package/.gitattributes +7 -0
- package/.github/dependabot.yml +19 -0
- package/.github/pull_request_template.md +1 -0
- package/.github/release.yml +18 -0
- package/.github/workflows/auto-tag.yml +111 -0
- package/.github/workflows/ci.yml +681 -0
- package/.github/workflows/dependabot-auto-merge.yml +55 -0
- package/.github/workflows/production.yml +47 -0
- package/.github/workflows/publish.yml +39 -0
- package/.github/workflows/sonar-qube.yml +34 -0
- package/.mcp.json +8 -0
- package/.ncurc.json +3 -0
- package/.prettierignore +20 -0
- package/.vscode/extensions.json +21 -0
- package/.vscode/settings.json +41 -0
- package/AGENTS.md +29 -0
- package/CLAUDE.md +207 -0
- package/CODE_OF_CONDUCT.md +132 -0
- package/GEMINI.md +30 -0
- package/LICENSE +21 -0
- package/README.md +41 -0
- package/SECURITY.md +34 -0
- package/cspell/index.yaml +177 -0
- package/dist/CLAUDE.md +207 -0
- package/dist/config-merge/index.d.ts +29 -0
- package/dist/config-merge/index.js +459 -0
- package/dist/hooks/batch-guard.js +28 -0
- package/dist/hooks/chunk-25JL6FMS.js +4970 -0
- package/dist/hooks/chunk-2ANGT3XM.js +375 -0
- package/dist/hooks/chunk-2EI5GBSW.js +42 -0
- package/dist/hooks/chunk-2OT5XE2N.js +5014 -0
- package/dist/hooks/chunk-2RUPMGGV.js +137 -0
- package/dist/hooks/chunk-2XIGZQMQ.js +3299 -0
- package/dist/hooks/chunk-33ELOKEV.js +910 -0
- package/dist/hooks/chunk-33YRTKM7.js +230 -0
- package/dist/hooks/chunk-36JQU5NN.js +77 -0
- package/dist/hooks/chunk-3EJBTWVS.js +1769 -0
- package/dist/hooks/chunk-3FK5SFAC.js +432 -0
- package/dist/hooks/chunk-3PWPYDD2.js +240 -0
- package/dist/hooks/chunk-3TQU7TDH.js +375 -0
- package/dist/hooks/chunk-3TVLSFZ6.js +432 -0
- package/dist/hooks/chunk-3VXYCB4E.js +77 -0
- package/dist/hooks/chunk-44M6JXGV.js +3398 -0
- package/dist/hooks/chunk-46EEEHC3.js +240 -0
- package/dist/hooks/chunk-4A7UVP2P.js +364 -0
- package/dist/hooks/chunk-4LFQEZS4.js +137 -0
- package/dist/hooks/chunk-4OCX3V2T.js +469 -0
- package/dist/hooks/chunk-4OHA5DE7.js +49 -0
- package/dist/hooks/chunk-4PMDW3YD.js +68 -0
- package/dist/hooks/chunk-4QHBNAI4.js +68 -0
- package/dist/hooks/chunk-4SSB3FEE.js +3273 -0
- package/dist/hooks/chunk-5A2WQ2CQ.js +5390 -0
- package/dist/hooks/chunk-5EVA2JQB.js +5390 -0
- package/dist/hooks/chunk-5P7VF5VE.js +3230 -0
- package/dist/hooks/chunk-5QWJGGZP.js +49 -0
- package/dist/hooks/chunk-5U5EZYG6.js +77 -0
- package/dist/hooks/chunk-5VUUF3ZV.js +240 -0
- package/dist/hooks/chunk-5WA7UBT3.js +374 -0
- package/dist/hooks/chunk-6EBGRQ3Q.js +301 -0
- package/dist/hooks/chunk-6TVHWMD3.js +432 -0
- package/dist/hooks/chunk-6V5OPIUU.js +13 -0
- package/dist/hooks/chunk-6VAGLEMB.js +68 -0
- package/dist/hooks/chunk-75BTXKFJ.js +3424 -0
- package/dist/hooks/chunk-75RHN67S.js +137 -0
- package/dist/hooks/chunk-76KC3BDD.js +3414 -0
- package/dist/hooks/chunk-76SLS7CZ.js +898 -0
- package/dist/hooks/chunk-7DHZ4DWT.js +5015 -0
- package/dist/hooks/chunk-7INSJDGE.js +458 -0
- package/dist/hooks/chunk-7VJ4FTDX.js +268 -0
- package/dist/hooks/chunk-7XCYNHQK.js +77 -0
- package/dist/hooks/chunk-A5YJ3H7E.js +375 -0
- package/dist/hooks/chunk-AAEXXUUL.js +268 -0
- package/dist/hooks/chunk-ABVEVV2M.js +432 -0
- package/dist/hooks/chunk-ACN3YXFL.js +68 -0
- package/dist/hooks/chunk-AD3XE3QZ.js +397 -0
- package/dist/hooks/chunk-AENFZPZH.js +230 -0
- package/dist/hooks/chunk-AFKRFQ6W.js +68 -0
- package/dist/hooks/chunk-AHD5IPWI.js +375 -0
- package/dist/hooks/chunk-AMK5JGV7.js +77 -0
- package/dist/hooks/chunk-ARN7NCQI.js +425 -0
- package/dist/hooks/chunk-AUFY653N.js +3425 -0
- package/dist/hooks/chunk-AXQBNFEF.js +375 -0
- package/dist/hooks/chunk-AYC7R6U4.js +3316 -0
- package/dist/hooks/chunk-AYEA2FJ7.js +5015 -0
- package/dist/hooks/chunk-B2LIXYFL.js +77 -0
- package/dist/hooks/chunk-B4HPNY2I.js +375 -0
- package/dist/hooks/chunk-B4YNCUGB.js +469 -0
- package/dist/hooks/chunk-B57S3VWT.js +922 -0
- package/dist/hooks/chunk-BINZ3PLI.js +364 -0
- package/dist/hooks/chunk-BIWLABFK.js +432 -0
- package/dist/hooks/chunk-BODUSXKK.js +410 -0
- package/dist/hooks/chunk-BQBAT2YK.js +375 -0
- package/dist/hooks/chunk-BUJEBW75.js +391 -0
- package/dist/hooks/chunk-BVNWORKA.js +72 -0
- package/dist/hooks/chunk-BWI47LQS.js +5205 -0
- package/dist/hooks/chunk-C25HRMJX.js +137 -0
- package/dist/hooks/chunk-CBFZNC74.js +375 -0
- package/dist/hooks/chunk-CECYXS4Y.js +3424 -0
- package/dist/hooks/chunk-CELGUP5F.js +49 -0
- package/dist/hooks/chunk-CMHANU3F.js +3442 -0
- package/dist/hooks/chunk-CMN372LI.js +68 -0
- package/dist/hooks/chunk-CPGZLMMK.js +3299 -0
- package/dist/hooks/chunk-CTQKXDC7.js +268 -0
- package/dist/hooks/chunk-CYAT4RIT.js +68 -0
- package/dist/hooks/chunk-CYTWYCH2.js +5014 -0
- package/dist/hooks/chunk-CZSOLRBA.js +77 -0
- package/dist/hooks/chunk-D2PIDYJR.js +3438 -0
- package/dist/hooks/chunk-DE57HI6T.js +137 -0
- package/dist/hooks/chunk-DGXDGAPG.js +5306 -0
- package/dist/hooks/chunk-DNYRSYQG.js +5014 -0
- package/dist/hooks/chunk-DTAXH2A2.js +240 -0
- package/dist/hooks/chunk-E2IZUWI5.js +375 -0
- package/dist/hooks/chunk-E4L2K2BL.js +397 -0
- package/dist/hooks/chunk-E55NKX5F.js +68 -0
- package/dist/hooks/chunk-ECXVCCVD.js +3079 -0
- package/dist/hooks/chunk-EPHO443D.js +68 -0
- package/dist/hooks/chunk-EUFK2BI2.js +375 -0
- package/dist/hooks/chunk-EYCD5ZAV.js +137 -0
- package/dist/hooks/chunk-F2SDYJU4.js +240 -0
- package/dist/hooks/chunk-F4B5D5TF.js +68 -0
- package/dist/hooks/chunk-FGEO3NDX.js +432 -0
- package/dist/hooks/chunk-FJYI52RE.js +137 -0
- package/dist/hooks/chunk-FXAKJKTB.js +18 -0
- package/dist/hooks/chunk-FYTZHIY4.js +3085 -0
- package/dist/hooks/chunk-G7JL2A5K.js +375 -0
- package/dist/hooks/chunk-GA3ITDBW.js +42 -0
- package/dist/hooks/chunk-GDR4H4SV.js +469 -0
- package/dist/hooks/chunk-GFKDXPSM.js +2855 -0
- package/dist/hooks/chunk-GIMRTKFU.js +566 -0
- package/dist/hooks/chunk-GOPHRLGO.js +240 -0
- package/dist/hooks/chunk-GX4HO7SJ.js +230 -0
- package/dist/hooks/chunk-GXKKK23T.js +240 -0
- package/dist/hooks/chunk-GZ6FUVIK.js +566 -0
- package/dist/hooks/chunk-H5HPY5M5.js +2869 -0
- package/dist/hooks/chunk-HCF3OGEE.js +1829 -0
- package/dist/hooks/chunk-HDEXAOUM.js +469 -0
- package/dist/hooks/chunk-HM2TY3TN.js +469 -0
- package/dist/hooks/chunk-HOA7NXA2.js +55 -0
- package/dist/hooks/chunk-HOFEWH6H.js +240 -0
- package/dist/hooks/chunk-HUUI6S5J.js +2669 -0
- package/dist/hooks/chunk-I4D3NVUD.js +469 -0
- package/dist/hooks/chunk-I4Q6WAJE.js +68 -0
- package/dist/hooks/chunk-IB6N4CR2.js +432 -0
- package/dist/hooks/chunk-IFLDYJMD.js +469 -0
- package/dist/hooks/chunk-IGU466YD.js +77 -0
- package/dist/hooks/chunk-IJCQUHKY.js +375 -0
- package/dist/hooks/chunk-IKUMBDJB.js +230 -0
- package/dist/hooks/chunk-IM3BDIBJ.js +5005 -0
- package/dist/hooks/chunk-IMYMAODK.js +3431 -0
- package/dist/hooks/chunk-IN2ZVGXA.js +5005 -0
- package/dist/hooks/chunk-ITVJ2MKQ.js +18 -0
- package/dist/hooks/chunk-J5RIJYTM.js +2669 -0
- package/dist/hooks/chunk-JFLMH4K5.js +3460 -0
- package/dist/hooks/chunk-JR25IFML.js +77 -0
- package/dist/hooks/chunk-JT5AUXFI.js +432 -0
- package/dist/hooks/chunk-JY5YVN6N.js +3234 -0
- package/dist/hooks/chunk-K5Q4ETVI.js +391 -0
- package/dist/hooks/chunk-K67V2F24.js +137 -0
- package/dist/hooks/chunk-KABG6AEW.js +3460 -0
- package/dist/hooks/chunk-KATZESEC.js +3273 -0
- package/dist/hooks/chunk-KFH4H7W7.js +469 -0
- package/dist/hooks/chunk-KMUEI6RX.js +910 -0
- package/dist/hooks/chunk-KMV4OY77.js +3438 -0
- package/dist/hooks/chunk-KQAZNWEY.js +137 -0
- package/dist/hooks/chunk-KZZR6JER.js +5015 -0
- package/dist/hooks/chunk-LAR6DREP.js +77 -0
- package/dist/hooks/chunk-LNCJWEZD.js +5015 -0
- package/dist/hooks/chunk-LRYD2GLM.js +6 -0
- package/dist/hooks/chunk-LXBKYHDV.js +77 -0
- package/dist/hooks/chunk-LYLKIUNE.js +5024 -0
- package/dist/hooks/chunk-LZKCFOVC.js +432 -0
- package/dist/hooks/chunk-M4FCIYRI.js +77 -0
- package/dist/hooks/chunk-M5M7327Q.js +3425 -0
- package/dist/hooks/chunk-MF72MHSX.js +3455 -0
- package/dist/hooks/chunk-MK56LKDO.js +397 -0
- package/dist/hooks/chunk-N3MJADY7.js +240 -0
- package/dist/hooks/chunk-NFQSUDBN.js +458 -0
- package/dist/hooks/chunk-NHREKY45.js +137 -0
- package/dist/hooks/chunk-NP5TTAAW.js +375 -0
- package/dist/hooks/chunk-NQTLTKTJ.js +2993 -0
- package/dist/hooks/chunk-NVRCZPBZ.js +391 -0
- package/dist/hooks/chunk-O46HMMLJ.js +469 -0
- package/dist/hooks/chunk-OFJGH2L4.js +240 -0
- package/dist/hooks/chunk-OLFMCZH5.js +240 -0
- package/dist/hooks/chunk-OMCZS46I.js +49 -0
- package/dist/hooks/chunk-OQZEZW5G.js +469 -0
- package/dist/hooks/chunk-P2MDAT2Y.js +1897 -0
- package/dist/hooks/chunk-P3M2JJIF.js +68 -0
- package/dist/hooks/chunk-PDVHQITQ.js +3453 -0
- package/dist/hooks/chunk-PNT2AMDH.js +391 -0
- package/dist/hooks/chunk-PR2LVSY6.js +3445 -0
- package/dist/hooks/chunk-PRR5R4JK.js +137 -0
- package/dist/hooks/chunk-PXT44QVN.js +566 -0
- package/dist/hooks/chunk-PZLWJLAP.js +469 -0
- package/dist/hooks/chunk-Q2FEAZJ2.js +77 -0
- package/dist/hooks/chunk-Q32WETDO.js +3265 -0
- package/dist/hooks/chunk-Q45DUBLE.js +3600 -0
- package/dist/hooks/chunk-Q7NZSWQ5.js +240 -0
- package/dist/hooks/chunk-QH2JNAMK.js +3085 -0
- package/dist/hooks/chunk-QNNWYQ2R.js +375 -0
- package/dist/hooks/chunk-QPU5H2OS.js +68 -0
- package/dist/hooks/chunk-QRAHZ5TO.js +1829 -0
- package/dist/hooks/chunk-QUZ5HPIE.js +469 -0
- package/dist/hooks/chunk-QVCRG34O.js +2893 -0
- package/dist/hooks/chunk-R3MY4E3S.js +1675 -0
- package/dist/hooks/chunk-R6TXJJXP.js +77 -0
- package/dist/hooks/chunk-REJU6VT7.js +1829 -0
- package/dist/hooks/chunk-REQAQLRC.js +2993 -0
- package/dist/hooks/chunk-RFCXPAHH.js +391 -0
- package/dist/hooks/chunk-RHI6Y22X.js +137 -0
- package/dist/hooks/chunk-RKZVOBBS.js +469 -0
- package/dist/hooks/chunk-RL57TT2Y.js +566 -0
- package/dist/hooks/chunk-RORDOD4S.js +3321 -0
- package/dist/hooks/chunk-RZKYW5P2.js +77 -0
- package/dist/hooks/chunk-SJPJ6VSI.js +391 -0
- package/dist/hooks/chunk-SKSIJQQQ.js +432 -0
- package/dist/hooks/chunk-SSQDZKXG.js +268 -0
- package/dist/hooks/chunk-SSX23SJ2.js +89 -0
- package/dist/hooks/chunk-SYHFKE4C.js +77 -0
- package/dist/hooks/chunk-TCGNI2ZY.js +42 -0
- package/dist/hooks/chunk-TG3WXJF5.js +137 -0
- package/dist/hooks/chunk-TH7IJAY5.js +77 -0
- package/dist/hooks/chunk-TLZ27PCY.js +240 -0
- package/dist/hooks/chunk-U652FXTN.js +566 -0
- package/dist/hooks/chunk-UEK47YUF.js +268 -0
- package/dist/hooks/chunk-UIO45H3O.js +432 -0
- package/dist/hooks/chunk-UNLZEEVH.js +5005 -0
- package/dist/hooks/chunk-UNRVF3SZ.js +432 -0
- package/dist/hooks/chunk-USLFAFOI.js +3453 -0
- package/dist/hooks/chunk-VAEELMLL.js +442 -0
- package/dist/hooks/chunk-VALSWLDQ.js +3453 -0
- package/dist/hooks/chunk-VC5JEPNY.js +3398 -0
- package/dist/hooks/chunk-VEZVK6C7.js +230 -0
- package/dist/hooks/chunk-VK5JKFAR.js +49 -0
- package/dist/hooks/chunk-VNF2KP7Z.js +469 -0
- package/dist/hooks/chunk-VWWCUMW6.js +2669 -0
- package/dist/hooks/chunk-W4JARUQV.js +137 -0
- package/dist/hooks/chunk-WCYPBPJC.js +5014 -0
- package/dist/hooks/chunk-WEOBMNJG.js +2993 -0
- package/dist/hooks/chunk-WKJU3J5Y.js +5390 -0
- package/dist/hooks/chunk-WMN4TSVF.js +3299 -0
- package/dist/hooks/chunk-WNON54PT.js +3469 -0
- package/dist/hooks/chunk-WOVKBPPX.js +137 -0
- package/dist/hooks/chunk-WRVFORYJ.js +432 -0
- package/dist/hooks/chunk-WUBVYGQZ.js +240 -0
- package/dist/hooks/chunk-WWULTUOM.js +68 -0
- package/dist/hooks/chunk-WXHKKB45.js +4962 -0
- package/dist/hooks/chunk-XAI3YTHJ.js +469 -0
- package/dist/hooks/chunk-XFZH6JZJ.js +77 -0
- package/dist/hooks/chunk-XGPWX6IA.js +137 -0
- package/dist/hooks/chunk-XIXXIVGY.js +566 -0
- package/dist/hooks/chunk-XKDOYJGA.js +922 -0
- package/dist/hooks/chunk-YALTVBHM.js +432 -0
- package/dist/hooks/chunk-YEBEPBFK.js +5014 -0
- package/dist/hooks/chunk-YI2BQ3DK.js +3441 -0
- package/dist/hooks/chunk-YVNBCFGG.js +1829 -0
- package/dist/hooks/chunk-YXBN3RGG.js +432 -0
- package/dist/hooks/chunk-Z2OOJSW3.js +3163 -0
- package/dist/hooks/chunk-ZA3HVBOY.js +2644 -0
- package/dist/hooks/chunk-ZKID46U3.js +137 -0
- package/dist/hooks/chunk-ZPMU2JV6.js +49 -0
- package/dist/hooks/chunk-ZRKY4W7O.js +432 -0
- package/dist/hooks/chunk-ZTMRB7LJ.js +268 -0
- package/dist/hooks/chunk-ZVPPBQ3L.js +3413 -0
- package/dist/hooks/codex-hook-adapter.js +164 -0
- package/dist/hooks/duplicate-read-guard.js +29 -0
- package/dist/hooks/format-edited.js +37 -0
- package/dist/hooks/investigation-guard.js +31 -0
- package/dist/hooks/pretool-guard.js +21 -0
- package/dist/hooks/session-lang.js +34 -0
- package/dist/hooks/stop-guard.js +1597 -0
- package/dist/josh.js +1795 -0
- package/dist/managed-marker/index.d.ts +10 -0
- package/dist/managed-marker/index.js +32 -0
- package/dist/self-sync-guard/index.d.ts +10 -0
- package/dist/self-sync-guard/index.js +49 -0
- package/dist/version/index.d.ts +93 -0
- package/dist/version/index.js +1024 -0
- package/env/index.d.ts +7 -0
- package/env/index.js +62 -0
- package/eslint/base.js +233 -0
- package/eslint/checkout-rooted-parser.js +34 -0
- package/eslint/config-fingerprint.js +103 -0
- package/eslint/rules/code-quality.js +292 -0
- package/eslint/rules/english-only-prose.js +135 -0
- package/eslint/rules/formatting.js +44 -0
- package/eslint/rules/import.js +83 -0
- package/eslint/rules/namespace-object-export.js +107 -0
- package/eslint/rules/naming-convention.js +109 -0
- package/eslint/rules/promise.js +17 -0
- package/eslint/rules/sonarjs.js +45 -0
- package/eslint/rules/test-filename.js +91 -0
- package/eslint/rules/typescript.js +186 -0
- package/eslint/rules/unicorn.js +191 -0
- package/eslint/vanilla.js +1 -0
- package/evals/scenarios/consult-not-execute.json +20 -0
- package/evals/scenarios/no-implicit-workflow.json +26 -0
- package/evals/scenarios/overrides-both-locations.json +29 -0
- package/evals/scenarios/upstream-interrupt.json +23 -0
- package/evals/scenarios/workflow-skill-loaded.json +16 -0
- package/lefthook/base.yml +131 -0
- package/lefthook/vanilla.yml +7 -0
- package/package.json +169 -0
- package/playwright.config.ts +160 -0
- package/pnpm-workspace.yaml +41 -0
- package/ports/index.d.ts +17 -0
- package/ports/index.js +256 -0
- package/prettier/index.d.ts +3 -0
- package/prettier/index.js +31 -0
- package/prompts/agent-lint-protocol.json +79 -0
- package/prompts/agent-rules.md +63 -0
- package/prompts/coding-standards.md +382 -0
- package/prompts/collaboration-workflow/consultation-vs-execution.md +8 -0
- package/prompts/collaboration-workflow/cross-repo-epic.md +54 -0
- package/prompts/collaboration-workflow/distributed-docs.md +7 -0
- package/prompts/collaboration-workflow/durable-rules.md +24 -0
- package/prompts/collaboration-workflow/epic-audit.md +56 -0
- package/prompts/collaboration-workflow/epic-bundle.md +109 -0
- package/prompts/collaboration-workflow/file-edits.md +124 -0
- package/prompts/collaboration-workflow/gh-rest.md +57 -0
- package/prompts/collaboration-workflow/issue-citation.md +38 -0
- package/prompts/collaboration-workflow/issue-template.md +190 -0
- package/prompts/collaboration-workflow/latest-first.md +14 -0
- package/prompts/collaboration-workflow/no-clones.md +11 -0
- package/prompts/collaboration-workflow/operating-rules.md +123 -0
- package/prompts/collaboration-workflow/output-bounds.md +107 -0
- package/prompts/collaboration-workflow/overview.md +35 -0
- package/prompts/collaboration-workflow/plan-comment.md +85 -0
- package/prompts/collaboration-workflow/proposal-request.md +23 -0
- package/prompts/collaboration-workflow/report-format.md +206 -0
- package/prompts/collaboration-workflow/residency.md +94 -0
- package/prompts/collaboration-workflow/rule-delivery.md +146 -0
- package/prompts/collaboration-workflow/shell-body.md +82 -0
- package/prompts/collaboration-workflow/simplicity-first.md +9 -0
- package/prompts/collaboration-workflow/single-source-rules.md +13 -0
- package/prompts/collaboration-workflow/turn-batching.md +137 -0
- package/prompts/collaboration-workflow/upstream-interrupt.md +51 -0
- package/prompts/collaboration-workflow/wip-cap.md +118 -0
- package/prompts/collaboration-workflow.md +52 -0
- package/prompts/refactoring.md +103 -0
- package/prompts/review-rubric.md +338 -0
- package/prompts/review.md +217 -0
- package/prompts/sonar-hotspot-handling.md +77 -0
- package/prompts/testing-guide.md +277 -0
- package/scripts/adopt/adopt-logic.ts +107 -0
- package/scripts/adopt/adopt-toolkits.ts +181 -0
- package/scripts/adopt/adopt.ts +171 -0
- package/scripts/agent/agent-argv.ts +140 -0
- package/scripts/agent/agent-diagnostics.ts +120 -0
- package/scripts/agent/agent-event.ts +173 -0
- package/scripts/agent/agent-exit-record.ts +32 -0
- package/scripts/agent/agent-launch-environment.ts +71 -0
- package/scripts/agent/agent-role-profile.ts +329 -0
- package/scripts/agent/api-outage.ts +51 -0
- package/scripts/agent/claude-agent-argv.ts +151 -0
- package/scripts/agent/claude-result-event.ts +98 -0
- package/scripts/agent/codex-agent-argv.ts +94 -0
- package/scripts/agent/codex-home-source.ts +11 -0
- package/scripts/agent/interactive-ask.ts +91 -0
- package/scripts/auto-ok/auto-ok-cli.ts +516 -0
- package/scripts/backlog/backlog-arrival.ts +147 -0
- package/scripts/backlog/backlog-budget-cli.ts +220 -0
- package/scripts/backlog/backlog-budget.ts +284 -0
- package/scripts/backlog/backlog-defect-priority.ts +77 -0
- package/scripts/backlog/backlog-drive-cli.ts +377 -0
- package/scripts/backlog/backlog-drive-finish.ts +23 -0
- package/scripts/backlog/backlog-drive-named-offer.ts +81 -0
- package/scripts/backlog/backlog-drive-named.ts +101 -0
- package/scripts/backlog/backlog-drive-offer-argv.ts +29 -0
- package/scripts/backlog/backlog-drive-owner.ts +22 -0
- package/scripts/backlog/backlog-drive-restore.ts +67 -0
- package/scripts/backlog/backlog-drive.ts +322 -0
- package/scripts/backlog/backlog-named.ts +164 -0
- package/scripts/backlog/backlog-next.ts +376 -0
- package/scripts/backlog/backlog-offer-cli.ts +279 -0
- package/scripts/backlog/backlog-offer.ts +93 -0
- package/scripts/backlog/backlog-plan-cli.ts +235 -0
- package/scripts/backlog/backlog-plan.ts +231 -0
- package/scripts/backlog/backlog-pool.ts +322 -0
- package/scripts/backlog/backlog-ready.ts +146 -0
- package/scripts/backlog/backlog-scope.ts +144 -0
- package/scripts/backlog/backlog-stalled-cli.ts +30 -0
- package/scripts/backlog/backlog-stalled-detect.ts +143 -0
- package/scripts/backlog/backlog-stalled.ts +118 -0
- package/scripts/behavior/behavior-assertion.ts +87 -0
- package/scripts/behavior/behavior-cli.ts +88 -0
- package/scripts/behavior/behavior-rules.ts +128 -0
- package/scripts/build/build-bin.ts +36 -0
- package/scripts/build/build-claude-md.ts +42 -0
- package/scripts/build/build-config-merge.ts +26 -0
- package/scripts/build/build-hooks.ts +79 -0
- package/scripts/build/build-library.ts +83 -0
- package/scripts/build/build-managed-marker.ts +26 -0
- package/scripts/build/build-self-sync-guard.ts +26 -0
- package/scripts/build/build-version.ts +25 -0
- package/scripts/build/local-bin.ts +97 -0
- package/scripts/build/shim-shell.ts +25 -0
- package/scripts/bytes/bytes-command.ts +181 -0
- package/scripts/cases/cases-cli.ts +48 -0
- package/scripts/cases/cases-logic.ts +100 -0
- package/scripts/claude/skill-meta.ts +37 -0
- package/scripts/claude/workflow-destination.ts +13 -0
- package/scripts/clone/clone-aggregate.ts +76 -0
- package/scripts/clone/clone-fingerprint.ts +96 -0
- package/scripts/clone/clone-scan-cli.ts +39 -0
- package/scripts/clone/clone-scan.ts +158 -0
- package/scripts/config-merge/index.ts +19 -0
- package/scripts/config-merge/json-format.ts +128 -0
- package/scripts/config-merge/list-patch.ts +61 -0
- package/scripts/config-merge/parse-jsonc.ts +14 -0
- package/scripts/config-merge/patch-json-key.ts +439 -0
- package/scripts/config-merge/patch-json-list.ts +38 -0
- package/scripts/config-merge/patch-yaml-list.ts +107 -0
- package/scripts/cost-runtime/codex-usage.ts +119 -0
- package/scripts/cost-runtime/context-cut-payback.ts +77 -0
- package/scripts/cost-runtime/context-cut-threshold.ts +21 -0
- package/scripts/cost-runtime/cost-attribute.ts +168 -0
- package/scripts/cost-runtime/cost-blocks.ts +149 -0
- package/scripts/cost-runtime/cost-cli.ts +318 -0
- package/scripts/cost-runtime/cost-corpus.ts +278 -0
- package/scripts/cost-runtime/cost-format.ts +32 -0
- package/scripts/cost-runtime/cost-pricing.ts +176 -0
- package/scripts/cost-runtime/cost-tokens.ts +84 -0
- package/scripts/cost-runtime/cost-transcript.ts +531 -0
- package/scripts/cost-runtime/cost-usage.ts +287 -0
- package/scripts/cost-runtime/cost-verdict.ts +89 -0
- package/scripts/cost-runtime/own-session.ts +58 -0
- package/scripts/cost-runtime/transcript-cwd.ts +14 -0
- package/scripts/delegation/delegation-cli.ts +91 -0
- package/scripts/delegation/delegation-policy.ts +178 -0
- package/scripts/delegation/duplicate-read-guard.ts +244 -0
- package/scripts/delegation/fanout-cli.ts +61 -0
- package/scripts/delegation/fanout.ts +95 -0
- package/scripts/delegation/investigation-guard.ts +131 -0
- package/scripts/delegation/investigation-reads.ts +637 -0
- package/scripts/discovery/repo-discovery.ts +166 -0
- package/scripts/discovery/repo-map-logic.ts +102 -0
- package/scripts/discovery/repo-origin.ts +153 -0
- package/scripts/discovery/repo-party-cli.ts +69 -0
- package/scripts/discovery/repo-party.ts +46 -0
- package/scripts/doctor/doctor-consumer.ts +181 -0
- package/scripts/doctor/doctor-io.ts +210 -0
- package/scripts/doctor/doctor-logic.ts +122 -0
- package/scripts/doctor/doctor-ports.ts +117 -0
- package/scripts/doctor/doctor.ts +232 -0
- package/scripts/document/backlogrun-parent-read-set.ts +48 -0
- package/scripts/document/bash-output-cap.ts +45 -0
- package/scripts/document/document-byte-budget.ts +183 -0
- package/scripts/document/document-byte-check.ts +131 -0
- package/scripts/document/document-reachability.ts +131 -0
- package/scripts/document/document-read-cli.ts +82 -0
- package/scripts/document/document-scan.ts +108 -0
- package/scripts/document/document-section-cli.ts +101 -0
- package/scripts/document/document-section.ts +156 -0
- package/scripts/document/edit-files-cli.ts +280 -0
- package/scripts/document/entry-read-budget.ts +154 -0
- package/scripts/document/entry-read-set.ts +471 -0
- package/scripts/document/generate-catalog.ts +69 -0
- package/scripts/document/lane-child-read-set.ts +88 -0
- package/scripts/document/read-files-cli.ts +135 -0
- package/scripts/document/read-set-cli.ts +295 -0
- package/scripts/document/read-set-point-of-use.ts +89 -0
- package/scripts/document/read-set-pricing.ts +52 -0
- package/scripts/document/read-set-trim.ts +78 -0
- package/scripts/document/retired-phrases.ts +143 -0
- package/scripts/document/review-agent-type.ts +46 -0
- package/scripts/document/single-source.ts +73 -0
- package/scripts/epic/epic-audit-checks.ts +452 -0
- package/scripts/epic/epic-audit-cli.ts +374 -0
- package/scripts/epic/epic-audit-orphans.ts +142 -0
- package/scripts/epic/epic-audit-rationale.ts +191 -0
- package/scripts/epic/epic-audit-report.ts +101 -0
- package/scripts/epic/epic-audit.ts +240 -0
- package/scripts/epic/epic-bundle-cli.ts +472 -0
- package/scripts/epic/epic-bundle-evidence.ts +147 -0
- package/scripts/epic/epic-bundle-gaps.ts +86 -0
- package/scripts/epic/epic-bundle-referenced.ts +195 -0
- package/scripts/epic/epic-bundle.ts +309 -0
- package/scripts/epic/epic-busy.ts +204 -0
- package/scripts/epic/epic-candidate-confirm.ts +279 -0
- package/scripts/epic/epic-classify.ts +294 -0
- package/scripts/epic/epic-cross-repo.ts +366 -0
- package/scripts/epic/epic-fetch.ts +370 -0
- package/scripts/epic/epic-graph.ts +279 -0
- package/scripts/epic/epic-index.ts +209 -0
- package/scripts/epic/epic-issue.ts +172 -0
- package/scripts/epic/epic-lane-offer.ts +207 -0
- package/scripts/epic/epic-nested.ts +37 -0
- package/scripts/epic/epic-next-read.ts +141 -0
- package/scripts/epic/epic-next-views.ts +144 -0
- package/scripts/epic/epic-next.ts +477 -0
- package/scripts/epic/epic-outside-blocker.ts +113 -0
- package/scripts/epic/epic-relation-recheck.ts +108 -0
- package/scripts/epic/epic-report.ts +200 -0
- package/scripts/gate/core-budget.ts +292 -0
- package/scripts/gate/gate-log.ts +95 -0
- package/scripts/gate/gate-plan.ts +356 -0
- package/scripts/gate/gate-report.ts +207 -0
- package/scripts/gate/gate-skip.ts +123 -0
- package/scripts/gate/gate-tree.ts +49 -0
- package/scripts/gate/hook-gate-reuse.ts +130 -0
- package/scripts/gate/pre-commit-type-check.ts +187 -0
- package/scripts/gate/scoped-green.ts +260 -0
- package/scripts/gate/type-check-step.ts +90 -0
- package/scripts/gate/verification-gate.ts +531 -0
- package/scripts/gh/fix-gh-packages-logic.ts +232 -0
- package/scripts/gh/fix-gh-packages.ts +129 -0
- package/scripts/gh/gh-cli-token.ts +18 -0
- package/scripts/gh/gh-spawn.ts +44 -0
- package/scripts/git/animation-helpers.ts +81 -0
- package/scripts/git/change-base.ts +26 -0
- package/scripts/git/changed-file-scope.ts +209 -0
- package/scripts/git/changed-paths.ts +30 -0
- package/scripts/git/constants.ts +41 -0
- package/scripts/git/git-ai-review-scan.ts +154 -0
- package/scripts/git/git-animation.ts +41 -0
- package/scripts/git/git-branch.ts +127 -0
- package/scripts/git/git-command.ts +587 -0
- package/scripts/git/git-commit.ts +27 -0
- package/scripts/git/git-common-directory.ts +38 -0
- package/scripts/git/git-epic-add-body.ts +365 -0
- package/scripts/git/git-epic-add-plan.ts +421 -0
- package/scripts/git/git-epic-add.ts +249 -0
- package/scripts/git/git-epic-body.ts +150 -0
- package/scripts/git/git-epic-chains.ts +411 -0
- package/scripts/git/git-epic-close-comment.ts +199 -0
- package/scripts/git/git-epic-close.ts +393 -0
- package/scripts/git/git-epic-decision.ts +171 -0
- package/scripts/git/git-epic-parse.ts +351 -0
- package/scripts/git/git-epic-promote.ts +102 -0
- package/scripts/git/git-epic-read.ts +73 -0
- package/scripts/git/git-epic-reconcile.ts +246 -0
- package/scripts/git/git-epic-reference.ts +98 -0
- package/scripts/git/git-epic-relations.ts +78 -0
- package/scripts/git/git-epic-remove-plan.ts +152 -0
- package/scripts/git/git-epic-remove.ts +101 -0
- package/scripts/git/git-epic-run.ts +223 -0
- package/scripts/git/git-epic-sections.ts +98 -0
- package/scripts/git/git-epic-shape.ts +81 -0
- package/scripts/git/git-epic-validate.ts +155 -0
- package/scripts/git/git-error.ts +78 -0
- package/scripts/git/git-execa-error.ts +35 -0
- package/scripts/git/git-fixture-workspace.ts +88 -0
- package/scripts/git/git-followup-cleanup.ts +88 -0
- package/scripts/git/git-followup-flush.ts +63 -0
- package/scripts/git/git-followup-label.ts +67 -0
- package/scripts/git/git-followup-pending.ts +95 -0
- package/scripts/git/git-followup-stages.ts +149 -0
- package/scripts/git/git-gh-api-path.ts +118 -0
- package/scripts/git/git-gh-check.ts +21 -0
- package/scripts/git/git-gh-command.ts +17 -0
- package/scripts/git/git-gh-exec.ts +344 -0
- package/scripts/git/git-gh-failure.ts +103 -0
- package/scripts/git/git-gh-helpers.ts +44 -0
- package/scripts/git/git-gh-issue-list.ts +257 -0
- package/scripts/git/git-gh-issue-read.ts +457 -0
- package/scripts/git/git-gh-issue-rest.ts +238 -0
- package/scripts/git/git-gh-issue-write.ts +285 -0
- package/scripts/git/git-gh-issue.ts +161 -0
- package/scripts/git/git-gh-pr-auto-merge.ts +85 -0
- package/scripts/git/git-gh-pr-read.ts +322 -0
- package/scripts/git/git-gh-pr-rest.ts +172 -0
- package/scripts/git/git-gh-pr-review.ts +103 -0
- package/scripts/git/git-gh-pr-rollup.ts +91 -0
- package/scripts/git/git-gh-pr-snapshot.ts +138 -0
- package/scripts/git/git-gh-pr.ts +219 -0
- package/scripts/git/git-gh-reachability.ts +56 -0
- package/scripts/git/git-gh-repo.ts +37 -0
- package/scripts/git/git-gh-rest-state.ts +14 -0
- package/scripts/git/git-issue.ts +168 -0
- package/scripts/git/git-location-environment.ts +62 -0
- package/scripts/git/git-ls-remote.ts +28 -0
- package/scripts/git/git-next-issues.ts +98 -0
- package/scripts/git/git-notify.ts +104 -0
- package/scripts/git/git-pr-ai-review.ts +180 -0
- package/scripts/git/git-pr-checks-eval.ts +265 -0
- package/scripts/git/git-pr-checks-parse.ts +153 -0
- package/scripts/git/git-pr-checks-watch.ts +184 -0
- package/scripts/git/git-pr-checks.ts +387 -0
- package/scripts/git/git-pr-coderabbit.ts +129 -0
- package/scripts/git/git-pr-confirmation.ts +64 -0
- package/scripts/git/git-pr-error.ts +25 -0
- package/scripts/git/git-pr-followup-wrapup.ts +225 -0
- package/scripts/git/git-pr-followup.ts +436 -0
- package/scripts/git/git-pr-managed-config.ts +69 -0
- package/scripts/git/git-pr-messages.ts +37 -0
- package/scripts/git/git-pr.ts +181 -0
- package/scripts/git/git-prompt-display.ts +22 -0
- package/scripts/git/git-prompt.ts +207 -0
- package/scripts/git/git-push-transport.ts +173 -0
- package/scripts/git/git-push.ts +27 -0
- package/scripts/git/git-remote-branch.ts +40 -0
- package/scripts/git/git-spawn.ts +47 -0
- package/scripts/git/git-staging.ts +128 -0
- package/scripts/git/git-stash.ts +124 -0
- package/scripts/git/git-status.ts +198 -0
- package/scripts/git/git-worktree.ts +110 -0
- package/scripts/git/github-issue-url.ts +105 -0
- package/scripts/git/gone-branch.ts +113 -0
- package/scripts/git/issue-labels.ts +279 -0
- package/scripts/git/listing-cutoff.ts +51 -0
- package/scripts/git/main-merge-guard.ts +134 -0
- package/scripts/git/main-merge.ts +120 -0
- package/scripts/git/main-sync.ts +121 -0
- package/scripts/git/parse-json-array.ts +102 -0
- package/scripts/git/schemas.ts +166 -0
- package/scripts/git/stash-orphans.ts +91 -0
- package/scripts/git/stash-pop-args.ts +59 -0
- package/scripts/git/stash-pop-cli.ts +105 -0
- package/scripts/git/telegram-notify.ts +404 -0
- package/scripts/hooks/batch-guard.ts +144 -0
- package/scripts/hooks/check-commit-message.ts +134 -0
- package/scripts/hooks/codex-hook-adapter.ts +155 -0
- package/scripts/hooks/edited-cspell.ts +128 -0
- package/scripts/hooks/format-edited-file-fixtures.ts +109 -0
- package/scripts/hooks/format-edited-file.ts +510 -0
- package/scripts/hooks/format-rewrite-notice.ts +99 -0
- package/scripts/hooks/pre-push-unit.ts +146 -0
- package/scripts/hooks/pretool-guard.ts +96 -0
- package/scripts/hooks/prevent-main-commit.ts +38 -0
- package/scripts/hooks/prompt-hooks.ts +38 -0
- package/scripts/hooks/reserved-run.ts +90 -0
- package/scripts/hooks/stop-guard.ts +135 -0
- package/scripts/init/claude-plugin-config.ts +51 -0
- package/scripts/init/distributed-paths.ts +100 -0
- package/scripts/init/hook-command-rewrite.ts +85 -0
- package/scripts/init/hook-launch.ts +31 -0
- package/scripts/init/init-actions.ts +147 -0
- package/scripts/init/init-ai-copy.ts +235 -0
- package/scripts/init/init-copy-content.ts +50 -0
- package/scripts/init/init-logic-deploy-vps.ts +43 -0
- package/scripts/init/init-logic-json-merge.ts +340 -0
- package/scripts/init/init-logic-migrate.ts +62 -0
- package/scripts/init/init-logic-package-key-order.ts +50 -0
- package/scripts/init/init-logic-secretlint.ts +36 -0
- package/scripts/init/init-logic-sonar.ts +197 -0
- package/scripts/init/init-logic-templates.ts +142 -0
- package/scripts/init/init-logic-workspace.ts +59 -0
- package/scripts/init/init-logic-yaml-merge.ts +57 -0
- package/scripts/init/init-logic.ts +474 -0
- package/scripts/init/init-paths.ts +11 -0
- package/scripts/init/init-sonar.ts +32 -0
- package/scripts/init/init.ts +219 -0
- package/scripts/init/kit-base-preset.ts +60 -0
- package/scripts/init/plugin-install-hint.ts +47 -0
- package/scripts/init/tsconfig-preset-migration.ts +67 -0
- package/scripts/issue/baseline-measure.ts +105 -0
- package/scripts/issue/behavior-change-lint.ts +122 -0
- package/scripts/issue/defect-rate-cli.ts +167 -0
- package/scripts/issue/defect-rate.ts +145 -0
- package/scripts/issue/issue-backlinks-cli.ts +97 -0
- package/scripts/issue/issue-backlinks.ts +164 -0
- package/scripts/issue/issue-cite-cli.ts +158 -0
- package/scripts/issue/issue-cite.ts +102 -0
- package/scripts/issue/issue-comment-cli.ts +95 -0
- package/scripts/issue/issue-fold-cli.ts +104 -0
- package/scripts/issue/issue-fold-existing-cli.ts +81 -0
- package/scripts/issue/issue-fold-existing.ts +73 -0
- package/scripts/issue/issue-fold.ts +42 -0
- package/scripts/issue/issue-lint-cli.ts +60 -0
- package/scripts/issue/issue-lint.ts +26 -0
- package/scripts/issue/issue-logic.ts +50 -0
- package/scripts/issue/issue-read-cli.ts +190 -0
- package/scripts/issue/issue-read.ts +145 -0
- package/scripts/issue/issue-scout-cli.ts +482 -0
- package/scripts/issue/issue-scout.ts +244 -0
- package/scripts/issue/issue-state-cli.ts +260 -0
- package/scripts/issue/issue-state.ts +109 -0
- package/scripts/issue/markdown-section.ts +39 -0
- package/scripts/issue/measure-rerun-cli.ts +98 -0
- package/scripts/issue/reproduction-measure.ts +59 -0
- package/scripts/josh/__snapshots__/josh-command-map.test.ts.snap +1171 -0
- package/scripts/josh/agent-session-environment.ts +188 -0
- package/scripts/josh/cli-body.ts +96 -0
- package/scripts/josh/command-suggest.ts +57 -0
- package/scripts/josh/file-map-stamp.ts +264 -0
- package/scripts/josh/hook-decision.ts +479 -0
- package/scripts/josh/josh-command-map.ts +196 -0
- package/scripts/josh/josh-command-types.ts +226 -0
- package/scripts/josh/josh-commands-ai.ts +327 -0
- package/scripts/josh/josh-commands-backlog.ts +54 -0
- package/scripts/josh/josh-commands-clone.ts +18 -0
- package/scripts/josh/josh-commands-development.ts +206 -0
- package/scripts/josh/josh-commands-document.ts +45 -0
- package/scripts/josh/josh-commands-guard.ts +38 -0
- package/scripts/josh/josh-commands-hooks.ts +42 -0
- package/scripts/josh/josh-commands-issue.ts +69 -0
- package/scripts/josh/josh-commands-lane.ts +75 -0
- package/scripts/josh/josh-commands-lint.ts +37 -0
- package/scripts/josh/josh-commands-maintenance.ts +80 -0
- package/scripts/josh/josh-commands-project.ts +53 -0
- package/scripts/josh/josh-commands-split.ts +20 -0
- package/scripts/josh/josh-commands-versioning.ts +48 -0
- package/scripts/josh/josh-commands-workflow.ts +116 -0
- package/scripts/josh/josh-composite-arguments.ts +55 -0
- package/scripts/josh/josh-environment-file.ts +31 -0
- package/scripts/josh/josh-in-process.ts +80 -0
- package/scripts/josh/josh-logic.ts +308 -0
- package/scripts/josh/josh-run.ts +53 -0
- package/scripts/josh/josh-script-reader.ts +11 -0
- package/scripts/josh/josh-verdict.ts +111 -0
- package/scripts/josh/josh.ts +60 -0
- package/scripts/josh/kit-only.ts +33 -0
- package/scripts/josh/path-decision.ts +104 -0
- package/scripts/josh/platform-temporary.ts +66 -0
- package/scripts/josh/process-identity.ts +335 -0
- package/scripts/josh/session-language-cli.ts +51 -0
- package/scripts/josh/session-language.ts +30 -0
- package/scripts/josh/stamp-file.ts +194 -0
- package/scripts/lane/lane-await.ts +165 -0
- package/scripts/lane/lane-cache-run.ts +39 -0
- package/scripts/lane/lane-cache.ts +135 -0
- package/scripts/lane/lane-capacity.ts +69 -0
- package/scripts/lane/lane-child-invocation.ts +73 -0
- package/scripts/lane/lane-child-marker.ts +58 -0
- package/scripts/lane/lane-cli.ts +410 -0
- package/scripts/lane/lane-close.ts +197 -0
- package/scripts/lane/lane-dispatch-log.ts +13 -0
- package/scripts/lane/lane-dispatch.ts +458 -0
- package/scripts/lane/lane-environment.ts +253 -0
- package/scripts/lane/lane-guard-policy.ts +136 -0
- package/scripts/lane/lane-install.ts +94 -0
- package/scripts/lane/lane-launch-cli.ts +133 -0
- package/scripts/lane/lane-occupancy.ts +112 -0
- package/scripts/lane/lane-open.ts +275 -0
- package/scripts/lane/lane-output.ts +124 -0
- package/scripts/lane/lane-paths.ts +96 -0
- package/scripts/lane/lane-reap.ts +137 -0
- package/scripts/lane/lane-registry.ts +261 -0
- package/scripts/lane/lane-relaunch.ts +68 -0
- package/scripts/lane/lane-report.ts +95 -0
- package/scripts/lane/lane-resume.ts +61 -0
- package/scripts/lane/lane-seed.ts +44 -0
- package/scripts/lane/lane-start-point.ts +175 -0
- package/scripts/lane/openai-lane-supervisor-cli.ts +32 -0
- package/scripts/lane/openai-lane-supervisor-decision.ts +63 -0
- package/scripts/lane/openai-lane-supervisor.ts +337 -0
- package/scripts/lib/bounded-pool.ts +109 -0
- package/scripts/lib/buffered-process.ts +82 -0
- package/scripts/lib/caddy-logs.sh +45 -0
- package/scripts/lib/cli-flags.ts +19 -0
- package/scripts/lib/json-value.ts +24 -0
- package/scripts/lib/poll.ts +57 -0
- package/scripts/lib/read-file.ts +16 -0
- package/scripts/lib/schemas.ts +67 -0
- package/scripts/lib/spawn-exit.ts +45 -0
- package/scripts/lib/status-icons.ts +24 -0
- package/scripts/lines/effective-limit.ts +156 -0
- package/scripts/lines/line-budget.ts +404 -0
- package/scripts/lines/line-targets.ts +80 -0
- package/scripts/lines/lines-command.ts +174 -0
- package/scripts/lint/cspell-cached.ts +41 -0
- package/scripts/lint/lint-parallel.ts +72 -0
- package/scripts/lint/lint-related-scope.ts +128 -0
- package/scripts/lint/lint-related.ts +104 -0
- package/scripts/managed-marker/index.ts +5 -0
- package/scripts/managed-marker/managed-marker-logic.ts +67 -0
- package/scripts/observations/observation-ledger-home.ts +32 -0
- package/scripts/observations/observation-ledger-line.ts +93 -0
- package/scripts/observations/observation-ledger.ts +35 -0
- package/scripts/observations/observations-flush-cli.ts +42 -0
- package/scripts/observations/observations-flush-landing.ts +97 -0
- package/scripts/observations/observations-flush.ts +420 -0
- package/scripts/overrides/lockfile-overrides.ts +105 -0
- package/scripts/overrides/overrides-check.ts +84 -0
- package/scripts/overrides/overrides-files.ts +19 -0
- package/scripts/overrides/overrides-logic.ts +211 -0
- package/scripts/overrides/schemas.ts +49 -0
- package/scripts/package/package-scout-cli.ts +195 -0
- package/scripts/package/package-scout-format.ts +151 -0
- package/scripts/package/package-scout.ts +121 -0
- package/scripts/ports/port-command.ts +87 -0
- package/scripts/propagate/propagate-git-failure.ts +191 -0
- package/scripts/propagate/propagate-git.ts +224 -0
- package/scripts/propagate/propagate-publish.ts +181 -0
- package/scripts/propagate/propagate-run.ts +201 -0
- package/scripts/propagate/propagate-steps.ts +421 -0
- package/scripts/propagate/propagate-targets.ts +160 -0
- package/scripts/propagate/propagate.ts +216 -0
- package/scripts/refactor/import-graph.ts +187 -0
- package/scripts/refactor/refactor-lint.ts +250 -0
- package/scripts/refactor/refactor-scan-cli.ts +10 -0
- package/scripts/refactor/refactor-scan.ts +124 -0
- package/scripts/refactor/refactor-targets.ts +103 -0
- package/scripts/release/release-cli.ts +88 -0
- package/scripts/release/release-history.ts +132 -0
- package/scripts/release/release-plan.ts +130 -0
- package/scripts/release/release-publish.ts +152 -0
- package/scripts/release/release-scope-cli.ts +103 -0
- package/scripts/release/release-tag.ts +93 -0
- package/scripts/release/release-worktree.ts +71 -0
- package/scripts/repo/auto-merge-setting-logic.ts +100 -0
- package/scripts/repo/auto-merge-setting.ts +37 -0
- package/scripts/repo/repo-setting.ts +112 -0
- package/scripts/report/report-lint-cli.ts +49 -0
- package/scripts/report/report-lint.ts +250 -0
- package/scripts/retrospective/retrospective-cli.ts +97 -0
- package/scripts/retrospective/retrospective.ts +127 -0
- package/scripts/review/disposition-cli.ts +44 -0
- package/scripts/review/disposition-logic.ts +45 -0
- package/scripts/review/live-evidence.ts +62 -0
- package/scripts/review/review-attest-cli.ts +115 -0
- package/scripts/review/review-attest.ts +319 -0
- package/scripts/review/review-brief-cli.ts +290 -0
- package/scripts/review/review-brief.ts +440 -0
- package/scripts/review/review-checkout.ts +56 -0
- package/scripts/review/review-finding-ledger.ts +167 -0
- package/scripts/review/review-findings-cli.ts +57 -0
- package/scripts/review/review-level.ts +86 -0
- package/scripts/review/review-record-cli.ts +196 -0
- package/scripts/review/review-record.ts +74 -0
- package/scripts/review/review-round2-cli.ts +84 -0
- package/scripts/review/review-round2.ts +139 -0
- package/scripts/review/review-stamps.ts +113 -0
- package/scripts/review/review-tree.ts +58 -0
- package/scripts/rules/bash-triggers.ts +44 -0
- package/scripts/rules/decision-oracle.ts +342 -0
- package/scripts/rules/delivered-rules-harness.ts +72 -0
- package/scripts/rules/delivered-rules.ts +793 -0
- package/scripts/rules/early-heartbeat.ts +241 -0
- package/scripts/rules/file-body.ts +150 -0
- package/scripts/rules/filing-cap.ts +133 -0
- package/scripts/rules/filing-offer.ts +81 -0
- package/scripts/rules/firing-point.ts +63 -0
- package/scripts/rules/gh-api.ts +65 -0
- package/scripts/rules/git-argv.ts +129 -0
- package/scripts/rules/git-force.ts +104 -0
- package/scripts/rules/implementation-cut-verdict.ts +84 -0
- package/scripts/rules/implementation-cut.ts +202 -0
- package/scripts/rules/issue-citation.ts +242 -0
- package/scripts/rules/issue-fold.ts +73 -0
- package/scripts/rules/issue-scout.ts +64 -0
- package/scripts/rules/josh-git-bare.ts +80 -0
- package/scripts/rules/lane-carry-conflict.ts +96 -0
- package/scripts/rules/lane-interactive-ask.ts +71 -0
- package/scripts/rules/lane-park.ts +122 -0
- package/scripts/rules/lane-switch-main.ts +139 -0
- package/scripts/rules/oracle-consulted.ts +81 -0
- package/scripts/rules/oracle-firing.ts +151 -0
- package/scripts/rules/oracle-list-cli.ts +81 -0
- package/scripts/rules/piped-verification.ts +126 -0
- package/scripts/rules/poll-loop.ts +125 -0
- package/scripts/rules/pre-gate-cut.ts +207 -0
- package/scripts/rules/prior-comment-read.ts +106 -0
- package/scripts/rules/raw-field-body.ts +56 -0
- package/scripts/rules/reply-language.ts +116 -0
- package/scripts/rules/rule-body-guard.ts +206 -0
- package/scripts/rules/rule-guard.ts +23 -0
- package/scripts/rules/rule-value-cli.ts +129 -0
- package/scripts/rules/rule-value.ts +397 -0
- package/scripts/rules/run-tail.ts +178 -0
- package/scripts/rules/shell-body-trigger.ts +204 -0
- package/scripts/rules/shell-segments.ts +45 -0
- package/scripts/rules/stop-rules.ts +329 -0
- package/scripts/rules/tail-commands.ts +35 -0
- package/scripts/rules/test-declared-commit.ts +51 -0
- package/scripts/rules/third-party-write.ts +90 -0
- package/scripts/rules/top-level-scripts-guard.ts +47 -0
- package/scripts/rules/worktree-guard.ts +130 -0
- package/scripts/run/detached-launch.ts +360 -0
- package/scripts/run/run-carry-args.ts +264 -0
- package/scripts/run/run-carry-change.ts +69 -0
- package/scripts/run/run-carry-cli.ts +441 -0
- package/scripts/run/run-carry-flush.ts +63 -0
- package/scripts/run/run-carry-stash.ts +71 -0
- package/scripts/run/run-carry-streak.ts +113 -0
- package/scripts/run/run-carry.ts +550 -0
- package/scripts/run/run-cut-args.ts +132 -0
- package/scripts/run/run-cut-cli.ts +461 -0
- package/scripts/run/run-cut-handoff.ts +126 -0
- package/scripts/run/run-cut.ts +531 -0
- package/scripts/run/run-ending-cli.ts +111 -0
- package/scripts/run/run-ending.ts +239 -0
- package/scripts/run/run-entry-cli.ts +135 -0
- package/scripts/run/run-entry.ts +95 -0
- package/scripts/run/run-event-cli.ts +210 -0
- package/scripts/run/run-event-follow.ts +65 -0
- package/scripts/run/run-event-render.ts +75 -0
- package/scripts/run/run-event-scope.ts +127 -0
- package/scripts/run/run-event-stream-emit.ts +140 -0
- package/scripts/run/run-event-stream.ts +258 -0
- package/scripts/run/run-event-watch.ts +37 -0
- package/scripts/run/run-headless.ts +105 -0
- package/scripts/run/run-hold-cli.ts +310 -0
- package/scripts/run/run-hold.ts +264 -0
- package/scripts/run/run-invocation.ts +237 -0
- package/scripts/run/run-issue-number.ts +19 -0
- package/scripts/run/run-liveness-cli.ts +169 -0
- package/scripts/run/run-liveness.ts +424 -0
- package/scripts/run/run-merge-cli.ts +385 -0
- package/scripts/run/run-merge-steps.ts +326 -0
- package/scripts/run/run-merge.ts +158 -0
- package/scripts/run/run-next-cli.ts +48 -0
- package/scripts/run/run-next.ts +80 -0
- package/scripts/run/run-preflight.ts +337 -0
- package/scripts/run/run-prep-cli.ts +151 -0
- package/scripts/run/run-prep.ts +84 -0
- package/scripts/run/run-progress-args.ts +65 -0
- package/scripts/run/run-progress-cli.ts +508 -0
- package/scripts/run/run-progress-clock.ts +320 -0
- package/scripts/run/run-progress-config.ts +119 -0
- package/scripts/run/run-progress-read.ts +199 -0
- package/scripts/run/run-progress.ts +366 -0
- package/scripts/run/run-report-cli.ts +71 -0
- package/scripts/run/run-report.ts +78 -0
- package/scripts/run/run-review-cli.ts +130 -0
- package/scripts/run/run-review-steps.ts +161 -0
- package/scripts/run/run-review.ts +121 -0
- package/scripts/run/run-ship-cli.ts +431 -0
- package/scripts/run/run-ship-detach.ts +200 -0
- package/scripts/run/run-ship-probe.ts +103 -0
- package/scripts/run/run-ship-return.ts +75 -0
- package/scripts/run/run-ship-review-steps.ts +227 -0
- package/scripts/run/run-ship-review.ts +177 -0
- package/scripts/run/run-ship-stage.ts +150 -0
- package/scripts/run/run-ship.ts +78 -0
- package/scripts/run/run-status-cli.ts +175 -0
- package/scripts/run/run-status.ts +77 -0
- package/scripts/run/run-step-cli.ts +111 -0
- package/scripts/run/run-step.ts +292 -0
- package/scripts/run/run-stop-notify.ts +52 -0
- package/scripts/run/run-stranded-cli.ts +31 -0
- package/scripts/run/run-stranded-detect.ts +134 -0
- package/scripts/run/run-stranded.ts +120 -0
- package/scripts/run/run-tail-cli.ts +105 -0
- package/scripts/run/run-tail.ts +61 -0
- package/scripts/run/run-transcript.golden.txt +57 -0
- package/scripts/run/run-wake-cli.ts +428 -0
- package/scripts/run/run-wake-describe.ts +97 -0
- package/scripts/run/run-wake-driver.ts +80 -0
- package/scripts/run/run-wake-handoff.ts +29 -0
- package/scripts/run/run-wake-loop.ts +223 -0
- package/scripts/run/run-wake-session.ts +150 -0
- package/scripts/run/run-wake-work.ts +104 -0
- package/scripts/run/run-wake.ts +607 -0
- package/scripts/run/run-watcher-guard-cli.ts +37 -0
- package/scripts/run/run-watcher-guard.ts +59 -0
- package/scripts/run/run-watcher-hook.ts +86 -0
- package/scripts/security/secretlint-scan.ts +86 -0
- package/scripts/security/security-audit-logic.ts +51 -0
- package/scripts/security/security-audit-provision-logic.ts +217 -0
- package/scripts/security/security-audit-provision.ts +186 -0
- package/scripts/security/security-audit.ts +132 -0
- package/scripts/security/security-updates-logic.ts +131 -0
- package/scripts/security/security-updates.ts +38 -0
- package/scripts/security/sonar-file.ts +44 -0
- package/scripts/self-sync-guard/index.ts +5 -0
- package/scripts/self-sync-guard/self-sync-guard-logic.ts +98 -0
- package/scripts/self-sync-guard/self-sync-refusal.ts +22 -0
- package/scripts/sonar/sonar-hotspots-cli.ts +149 -0
- package/scripts/sonar/sonar-hotspots.ts +111 -0
- package/scripts/split/split-assess-cli.ts +52 -0
- package/scripts/split/split-assess.ts +124 -0
- package/scripts/sync/dependabot-pin-logic.ts +135 -0
- package/scripts/sync/directory-copy-guard.ts +187 -0
- package/scripts/sync/file-content.ts +49 -0
- package/scripts/sync/managed-config-scope-cli.ts +64 -0
- package/scripts/sync/managed-config-scope.ts +123 -0
- package/scripts/sync/plugin-skill-directories.ts +15 -0
- package/scripts/sync/reconcile-templates.ts +53 -0
- package/scripts/sync/removed-skill-manifest.ts +27 -0
- package/scripts/sync/skill-migration.ts +192 -0
- package/scripts/sync/sync-configs.ts +156 -0
- package/scripts/sync/sync-hook-safety.ts +82 -0
- package/scripts/sync/sync.ts +417 -0
- package/scripts/sync/synced-paths.ts +52 -0
- package/scripts/sync/template-source-logic.ts +122 -0
- package/scripts/sync/workflow-pin-logic.ts +240 -0
- package/scripts/test/classify-isolation.ts +149 -0
- package/scripts/test/e2e-retry-check.ts +150 -0
- package/scripts/test/http-fault-injection.ts +79 -0
- package/scripts/test/josh-harness-environment.ts +260 -0
- package/scripts/test/josh-harness.ts +96 -0
- package/scripts/test/pilot-files.ts +457 -0
- package/scripts/test/pilot-measure.ts +78 -0
- package/scripts/test/test-declared-changed.ts +99 -0
- package/scripts/test/test-declared-logic.ts +91 -0
- package/scripts/test/test-declared-match.ts +106 -0
- package/scripts/test/test-declared.ts +180 -0
- package/scripts/test/test-e2e-guard.ts +86 -0
- package/scripts/test/test-network-guard.ts +453 -0
- package/scripts/test/test-red-commit.ts +51 -0
- package/scripts/test/test-red-logic.ts +76 -0
- package/scripts/test/test-red.ts +154 -0
- package/scripts/test/test-related-scope.ts +115 -0
- package/scripts/test/test-related.ts +73 -0
- package/scripts/test/test-repository-guard.ts +317 -0
- package/scripts/test/test-state-guard.ts +85 -0
- package/scripts/test/test-stdout-guard.ts +54 -0
- package/scripts/test/test-telegram-guard.ts +90 -0
- package/scripts/test/test-type-logic.ts +31 -0
- package/scripts/test/test-unit-guard.ts +185 -0
- package/scripts/test/unit-guard-environment.ts +12 -0
- package/scripts/test/unit-projects.ts +139 -0
- package/scripts/test/unit-worker-share.ts +251 -0
- package/scripts/test/vitest-include-globs.ts +12 -0
- package/scripts/time-runtime/time-agent-bundles.ts +128 -0
- package/scripts/time-runtime/time-background.ts +300 -0
- package/scripts/time-runtime/time-batch-guard-fixtures.ts +66 -0
- package/scripts/time-runtime/time-batch-guard.ts +529 -0
- package/scripts/time-runtime/time-bundle-call.ts +575 -0
- package/scripts/time-runtime/time-bundles.ts +536 -0
- package/scripts/time-runtime/time-call-identity.ts +37 -0
- package/scripts/time-runtime/time-command-key.ts +35 -0
- package/scripts/time-runtime/time-density-hook.ts +166 -0
- package/scripts/time-runtime/time-density.ts +147 -0
- package/scripts/time-runtime/time-followup-stage.ts +107 -0
- package/scripts/time-runtime/time-format.ts +186 -0
- package/scripts/time-runtime/time-hook-transcript.ts +82 -0
- package/scripts/time-runtime/time-instant.ts +20 -0
- package/scripts/time-runtime/time-markers.ts +228 -0
- package/scripts/time-runtime/time-phase-names.ts +123 -0
- package/scripts/time-runtime/time-reported-failure.ts +227 -0
- package/scripts/time-runtime/time-round-trips.ts +279 -0
- package/scripts/time-runtime/time-shell.ts +286 -0
- package/scripts/time-runtime/time-single-check.ts +65 -0
- package/scripts/time-runtime/time-spans.ts +545 -0
- package/scripts/time-runtime/time-transcript-line.ts +253 -0
- package/scripts/time-runtime/time-writes.ts +71 -0
- package/scripts/ui/ui-routes-cli.ts +122 -0
- package/scripts/ui/ui-routes.ts +102 -0
- package/scripts/version/bump-version.ts +71 -0
- package/scripts/version/effective-upstream.ts +93 -0
- package/scripts/version/index.ts +25 -0
- package/scripts/version/kit-descriptor.ts +10 -0
- package/scripts/version/kit-version-config.ts +30 -0
- package/scripts/version/latest-corepack.ts +404 -0
- package/scripts/version/latest-lane-guard.ts +49 -0
- package/scripts/version/latest-regression.ts +93 -0
- package/scripts/version/latest-scope-cli.ts +147 -0
- package/scripts/version/latest-stamp.ts +107 -0
- package/scripts/version/latest-update.ts +198 -0
- package/scripts/version/package-manager-version.ts +95 -0
- package/scripts/version/parse-json.ts +13 -0
- package/scripts/version/preinstall-version-update.ts +84 -0
- package/scripts/version/publishable-range-check.ts +74 -0
- package/scripts/version/publishable-range.ts +123 -0
- package/scripts/version/release-age.ts +146 -0
- package/scripts/version/release-hold.ts +142 -0
- package/scripts/version/running-binary.ts +42 -0
- package/scripts/version/upgrade-command-guard.ts +49 -0
- package/scripts/version/upgrade-shell-command.ts +30 -0
- package/scripts/version/version-check-logic.ts +333 -0
- package/scripts/version/version-check.ts +14 -0
- package/scripts/version/version-command-config.ts +177 -0
- package/scripts/version/version-commands.ts +296 -0
- package/scripts/version/version-remote.ts +86 -0
- package/scripts/version/version-targets.ts +81 -0
- package/scripts/yaml/yaml-document.ts +46 -0
- package/scripts-ai/completion-gate.ts +13 -0
- package/scripts-ai/environment-loader.ts +9 -0
- package/scripts-ai/epic-check.ts +34 -0
- package/scripts-ai/epic-cli-argv.ts +77 -0
- package/scripts-ai/epic-cli-remove.ts +71 -0
- package/scripts-ai/epic-cli.ts +413 -0
- package/scripts-ai/epic.ts +192 -0
- package/scripts-ai/followup-issue-number.ts +31 -0
- package/scripts-ai/git-followup-finish.ts +217 -0
- package/scripts-ai/git-followup-workflow.ts +252 -0
- package/scripts-ai/git-workflow.ts +246 -0
- package/scripts-ai/telegram-test-logic.ts +88 -0
- package/scripts-ai/telegram-test.ts +130 -0
- package/templates/gitignore +76 -0
- package/templates/sonar-project.properties +52 -0
- package/templates/workflows/ci.yml +639 -0
- package/templates/workflows/dependabot-auto-merge.yml +428 -0
- package/tsconfig/base.json +50 -0
- package/tsconfig.sonar.json +34 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { ENV_FILE_NAME } from '#ports'
|
|
2
|
+
|
|
3
|
+
// The file, loaded only when it is there. The filename comes from the module that reads the same
|
|
4
|
+
// file from inside `playwright.config.ts`, so the two readers of `.env` cannot end up pointed at two
|
|
5
|
+
// different files (#820).
|
|
6
|
+
//
|
|
7
|
+
// **There is no mandatory counterpart any more.** `--env-file=.env` aborts before the script's first
|
|
8
|
+
// line when the file is missing, which is wrong for every command kit ships: `doctor` runs from
|
|
9
|
+
// anywhere, including a directory with no project at all (joshuafolkken/kit#869), and `notify` /
|
|
10
|
+
// `followup` run in cloud sessions that carry their credentials as environment variables and keep no
|
|
11
|
+
// `.env` at all (joshuafolkken/kit#1564). A command that needs a value to be present says so itself,
|
|
12
|
+
// where it can name what is missing.
|
|
13
|
+
const OPTIONAL_ENV_FILE_FLAGS: ReadonlyArray<string> = [`--env-file-if-exists=${ENV_FILE_NAME}`]
|
|
14
|
+
|
|
15
|
+
type CommandCategory =
|
|
16
|
+
'Development' | 'Project' | 'Workflow' | 'Versioning' | 'Maintenance' | 'Git hooks' | 'AI tools'
|
|
17
|
+
|
|
18
|
+
// The two vocabularies are runtime tuples the types are derived from, rather than bare unions. A
|
|
19
|
+
// union exists only at compile time, so the completeness test and the generated reference
|
|
20
|
+
// (joshuafolkken/kit#2064) would each have to restate the values to check or render them — two
|
|
21
|
+
// copies that drift apart silently. Deriving the type from the tuple keeps one definition.
|
|
22
|
+
const COMMAND_AUDIENCES = ['developer', 'maintainer', 'automation'] as const
|
|
23
|
+
const COMMAND_SIDE_EFFECTS = [
|
|
24
|
+
'none',
|
|
25
|
+
'files',
|
|
26
|
+
'git',
|
|
27
|
+
'network',
|
|
28
|
+
'processes',
|
|
29
|
+
'notifications',
|
|
30
|
+
'release',
|
|
31
|
+
] as const
|
|
32
|
+
|
|
33
|
+
type CommandAudience = (typeof COMMAND_AUDIENCES)[number]
|
|
34
|
+
type CommandSideEffect = (typeof COMMAND_SIDE_EFFECTS)[number]
|
|
35
|
+
// The synopsis is a claim about the command's own parser, not a summary of its description, and
|
|
36
|
+
// `josh-command-reference.test.ts` checks it against that parser. Three rules keep it honest: an
|
|
37
|
+
// empty string means the command takes no arguments at all — never "it takes some we did not list";
|
|
38
|
+
// a flag that only reformats output, `--json` among them, is named like any other; and a positional
|
|
39
|
+
// appears only where the script actually reads one.
|
|
40
|
+
type CommandReference = readonly [
|
|
41
|
+
arguments_synopsis: string,
|
|
42
|
+
audience: CommandAudience,
|
|
43
|
+
side_effects: ReadonlyArray<CommandSideEffect>,
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
interface CommandEntry {
|
|
47
|
+
script?: string
|
|
48
|
+
shell?: ReadonlyArray<string>
|
|
49
|
+
description: string
|
|
50
|
+
category: CommandCategory
|
|
51
|
+
reference: CommandReference
|
|
52
|
+
tsx_arguments?: ReadonlyArray<string>
|
|
53
|
+
default_script_arguments?: ReadonlyArray<string>
|
|
54
|
+
// Composite (`sh -c`) commands reject extra CLI arguments instead of swallowing them; this
|
|
55
|
+
// names the sub-commands that do accept them, so the refusal points somewhere useful.
|
|
56
|
+
argument_targets?: ReadonlyArray<string>
|
|
57
|
+
// A command that only makes sense inside the kit repository itself — the rule-compliance eval and
|
|
58
|
+
// the run measurements that analyze kit's own development. It is dropped from a consumer's
|
|
59
|
+
// `josh --help` and refused with guidance when run in a consumer project, so a distributed help
|
|
60
|
+
// listing carries only what a consumer can run (joshuafolkken/kit#1988). The audience in
|
|
61
|
+
// `reference` separately decides whether the command appears in the default listing.
|
|
62
|
+
is_kit_only?: boolean
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// The name `josh gate` registers under. It lives here rather than in `verification-gate.ts` so a
|
|
66
|
+
// consumer of the name — the command map, `propagate` — does not import the script module: that
|
|
67
|
+
// module carries a `process.argv[1] === import.meta.url` main guard, and esbuild bundles every
|
|
68
|
+
// import into one `dist/josh.js` where that guard matches on *any* `josh` invocation
|
|
69
|
+
// (joshuafolkken/kit#914).
|
|
70
|
+
const GATE_COMMAND = 'gate'
|
|
71
|
+
|
|
72
|
+
const PE = ['pnpm', 'exec'] as const
|
|
73
|
+
|
|
74
|
+
// joshuafolkken/kit#1256: three of the gate's four checks keep a content-addressed cache, so a
|
|
75
|
+
// second run reads only what changed. eslint had one from the start; the type check and the spell
|
|
76
|
+
// check rescanned the whole tree every time, which cost 10.5s of CPU against 2.8s cached.
|
|
77
|
+
//
|
|
78
|
+
// Neither of those two needs an invalidation rule of its own. `tsc` records the compiler options
|
|
79
|
+
// inside the build-info file and re-checks everything when they differ, and `cspell` records a
|
|
80
|
+
// content hash of every config and dictionary file it loaded as that entry's dependency — so editing
|
|
81
|
+
// `tsconfig.json` or `cspell.config.yaml` invalidates what it should. CI restores only the eslint
|
|
82
|
+
// cache (`.github/workflows/ci.yml` → "Setup ESLint cache"); the other two start every run cold.
|
|
83
|
+
//
|
|
84
|
+
// **eslint's does need one, and it is not here** (joshuafolkken/kit#1347). ESLint hashes the
|
|
85
|
+
// *serialized* config, which drops every rule's `create`, so editing `eslint/rules/*.js` left every
|
|
86
|
+
// cached entry valid on every cache file below. The fix is a content fingerprint of the rule modules
|
|
87
|
+
// carried in the shared config's `settings` — `eslint/config-fingerprint.js` — because one value
|
|
88
|
+
// there invalidates the gate's cache, the scoped one and the edit hook's at once, while a rule
|
|
89
|
+
// written per cache file would have to be repeated for each and would go stale one file at a time.
|
|
90
|
+
//
|
|
91
|
+
// Every location is passed explicitly rather than left to the tool's default, eslint's included:
|
|
92
|
+
// the ignore rules have to name the same paths, and a constant that merely copies a default is
|
|
93
|
+
// wrong the moment the default moves without anything failing. `IGNORED_CACHE_FILES` below is what
|
|
94
|
+
// the ignore rules are asserted against — `.gitignore` (which `useGitignore` also makes the spell
|
|
95
|
+
// check's exclusion) and the distributed `cspell/index.yaml`, which does not wait for a
|
|
96
|
+
// `josh sync` to reach a consumer.
|
|
97
|
+
const ESLINT_CACHE_FILE = '.eslintcache'
|
|
98
|
+
const TS_BUILD_INFO_FILE = '.tsbuildinfo'
|
|
99
|
+
const CSPELL_CACHE_FILE = '.cspellcache'
|
|
100
|
+
const ESLINT_EDIT_CACHE_FILE = '.eslintcache.edit'
|
|
101
|
+
const ESLINT_RELATED_CACHE_FILE = '.eslintcache.related'
|
|
102
|
+
|
|
103
|
+
type GateCachePortability = 'raw' | 'rooted-json'
|
|
104
|
+
|
|
105
|
+
interface GateCacheSpec {
|
|
106
|
+
cache_file: string
|
|
107
|
+
portability: GateCachePortability
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const ROOTED_JSON_PORTABILITY: GateCachePortability = 'rooted-json'
|
|
111
|
+
|
|
112
|
+
// One declaration controls both the one-time lane seed and the caches a gate keeps current across
|
|
113
|
+
// worktrees (#2060). ESLint stores absolute file paths and must be rebased; cspell stores relative
|
|
114
|
+
// keys and can move byte-for-byte. TypeScript's build info is still seeded once, but is not
|
|
115
|
+
// continuously published until its dependency-path portability is established on every project.
|
|
116
|
+
const ESLINT_CACHE_SPEC: GateCacheSpec = {
|
|
117
|
+
cache_file: ESLINT_CACHE_FILE,
|
|
118
|
+
portability: ROOTED_JSON_PORTABILITY,
|
|
119
|
+
}
|
|
120
|
+
const TS_CACHE_SPEC: GateCacheSpec = {
|
|
121
|
+
cache_file: TS_BUILD_INFO_FILE,
|
|
122
|
+
portability: 'raw',
|
|
123
|
+
}
|
|
124
|
+
const CSPELL_CACHE_SPEC: GateCacheSpec = {
|
|
125
|
+
cache_file: CSPELL_CACHE_FILE,
|
|
126
|
+
portability: 'raw',
|
|
127
|
+
}
|
|
128
|
+
const ESLINT_RELATED_CACHE_SPEC: GateCacheSpec = {
|
|
129
|
+
cache_file: ESLINT_RELATED_CACHE_FILE,
|
|
130
|
+
portability: ROOTED_JSON_PORTABILITY,
|
|
131
|
+
}
|
|
132
|
+
const GATE_CACHE_SPECS: ReadonlyArray<GateCacheSpec> = [
|
|
133
|
+
ESLINT_CACHE_SPEC,
|
|
134
|
+
TS_CACHE_SPEC,
|
|
135
|
+
CSPELL_CACHE_SPEC,
|
|
136
|
+
]
|
|
137
|
+
const SHARED_CACHE_SPECS: ReadonlyArray<GateCacheSpec> = [
|
|
138
|
+
ESLINT_CACHE_SPEC,
|
|
139
|
+
ESLINT_RELATED_CACHE_SPEC,
|
|
140
|
+
CSPELL_CACHE_SPEC,
|
|
141
|
+
]
|
|
142
|
+
const GATE_CACHE_FILES: ReadonlyArray<string> = GATE_CACHE_SPECS.map((spec) => spec.cache_file)
|
|
143
|
+
|
|
144
|
+
// joshuafolkken/kit#1332: the `PostToolUse` edit hook runs eslint too, and ESLint *deletes* the file
|
|
145
|
+
// at `--cache-location` whenever it is started without `--cache` — so every single edit wiped the
|
|
146
|
+
// cache the gate had just filled, and both gates of run joshuafolkken/kit#1326 paid a cold lint
|
|
147
|
+
// (59.4s and 54.5s, against 3.0s warm). The hook is given a location of its own rather than the
|
|
148
|
+
// gate's because the two run at the same time: `josh gate` lints the whole tree beside the review
|
|
149
|
+
// while this hook fires on every edit, and each eslint run rewrites its cache file whole from the
|
|
150
|
+
// copy it loaded at start-up — so two writers silently discard each other's entries. A file of its
|
|
151
|
+
// own makes the hook structurally unable to degrade the cache this exists to protect.
|
|
152
|
+
//
|
|
153
|
+
// **Pruning is not the reason**, though it reads like one: `file-entry-cache` defaults `noPrune` to
|
|
154
|
+
// true, and a single-file run against the gate's full cache was measured byte-identical, so a shared
|
|
155
|
+
// file would keep the entries that run never visited.
|
|
156
|
+
// joshuafolkken/kit#1347: the same reasoning, reached a second time. `josh lint:related` is what an
|
|
157
|
+
// implementation loop calls between edits, and `josh gate` lints the whole tree beside the review —
|
|
158
|
+
// so those two run at the same time as readily as the hook and the gate do, and they shared one file
|
|
159
|
+
// until this constant existed. Whichever of the pair wrote last replaced the file with "the copy I
|
|
160
|
+
// loaded at start-up plus what I visited", so a narrowed run finishing during a whole-tree run rolled
|
|
161
|
+
// the cache back to its pre-gate state, and a whole-tree run finishing second discarded the narrowed
|
|
162
|
+
// one's entries.
|
|
163
|
+
//
|
|
164
|
+
// **The warming this gives up is worth less than the entries it stops losing.** The comment this
|
|
165
|
+
// replaced argued the shared file let a narrowed run warm the gate's cache, which is true only while
|
|
166
|
+
// the two never overlap; a file of its own is warm from its own second call onwards, and the gate's
|
|
167
|
+
// stays exactly as the gate left it.
|
|
168
|
+
//
|
|
169
|
+
// **The lint's target scope is untouched.** This is where a cache is written, not what is read:
|
|
170
|
+
// `josh lint:related` narrows in front of the gate and `josh gate` still runs `josh lint` over the
|
|
171
|
+
// whole tree before any commit.
|
|
172
|
+
// What the ignore rules are asserted against: every cache file this package writes, wherever it is
|
|
173
|
+
// written from. The gate's three, the edit hook's, and the scoped lint's — a cache file that is not
|
|
174
|
+
// ignored is committed, or spell-checked, which is a red gate with nothing misspelled in the tree.
|
|
175
|
+
const IGNORED_CACHE_FILES: ReadonlyArray<string> = [
|
|
176
|
+
...GATE_CACHE_FILES,
|
|
177
|
+
ESLINT_EDIT_CACHE_FILE,
|
|
178
|
+
ESLINT_RELATED_CACHE_FILE,
|
|
179
|
+
]
|
|
180
|
+
|
|
181
|
+
// `--cache --cache-strategy content` is one convention rather than two coincidences: cspell adopted
|
|
182
|
+
// eslint's spelling for its own cache flags, so the pair is single-sourced here.
|
|
183
|
+
const CONTENT_CACHE_FLAGS = ['--cache', '--cache-strategy', 'content'] as const
|
|
184
|
+
const CACHE_LOCATION_FLAG = '--cache-location'
|
|
185
|
+
|
|
186
|
+
// Four locations are written with these same four flags — the gate's eslint cache, the scoped lint's,
|
|
187
|
+
// the edit hook's and the spell check's — so the sequence is built here once. Spelled out per
|
|
188
|
+
// location, a fix to the order would have to be made four times and each copy fails silently: a flag
|
|
189
|
+
// and its value are one unit, and a wrong order makes the tool read `--cache-strategy` as the file
|
|
190
|
+
// name rather than erroring.
|
|
191
|
+
function content_cache_flags(cache_file: string): ReadonlyArray<string> {
|
|
192
|
+
return [...CONTENT_CACHE_FLAGS, CACHE_LOCATION_FLAG, cache_file]
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const ESLINT_CACHE_FLAGS = content_cache_flags(ESLINT_CACHE_FILE)
|
|
196
|
+
const ESLINT_EDIT_CACHE_FLAGS = content_cache_flags(ESLINT_EDIT_CACHE_FILE)
|
|
197
|
+
const ESLINT_RELATED_CACHE_FLAGS = content_cache_flags(ESLINT_RELATED_CACHE_FILE)
|
|
198
|
+
const TS_CACHE_FLAGS = ['--incremental', '--tsBuildInfoFile', TS_BUILD_INFO_FILE] as const
|
|
199
|
+
const CSPELL_CACHE_FLAGS = content_cache_flags(CSPELL_CACHE_FILE)
|
|
200
|
+
|
|
201
|
+
export type { CommandCategory, CommandEntry, GateCacheSpec }
|
|
202
|
+
// The three cache files are exported one by one as well as as a list, because `josh bench` clears
|
|
203
|
+
// them per target (joshuafolkken/kit#1314): the lint step writes only the eslint one, so a target
|
|
204
|
+
// that cleared the list would report a cold type check as the lint's own cost. The edit hook's cache
|
|
205
|
+
// stays private; the scoped lint cache is exported because #2060 shares its completed file between
|
|
206
|
+
// worktrees, but it still never overlaps the gate's distinct cache location.
|
|
207
|
+
export {
|
|
208
|
+
COMMAND_AUDIENCES,
|
|
209
|
+
COMMAND_SIDE_EFFECTS,
|
|
210
|
+
CSPELL_CACHE_FILE,
|
|
211
|
+
CSPELL_CACHE_FLAGS,
|
|
212
|
+
ESLINT_CACHE_FILE,
|
|
213
|
+
ESLINT_CACHE_FLAGS,
|
|
214
|
+
ESLINT_EDIT_CACHE_FLAGS,
|
|
215
|
+
ESLINT_RELATED_CACHE_FLAGS,
|
|
216
|
+
ESLINT_RELATED_CACHE_FILE,
|
|
217
|
+
GATE_CACHE_FILES,
|
|
218
|
+
GATE_CACHE_SPECS,
|
|
219
|
+
GATE_COMMAND,
|
|
220
|
+
IGNORED_CACHE_FILES,
|
|
221
|
+
OPTIONAL_ENV_FILE_FLAGS,
|
|
222
|
+
PE,
|
|
223
|
+
SHARED_CACHE_SPECS,
|
|
224
|
+
TS_BUILD_INFO_FILE,
|
|
225
|
+
TS_CACHE_FLAGS,
|
|
226
|
+
}
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import { OPTIONAL_ENV_FILE_FLAGS, type CommandEntry } from './josh-command-types'
|
|
2
|
+
import { BACKLOG_COMMANDS } from './josh-commands-backlog'
|
|
3
|
+
import { DOCUMENT_COMMANDS } from './josh-commands-document'
|
|
4
|
+
import { GUARD_COMMANDS } from './josh-commands-guard'
|
|
5
|
+
import { ISSUE_COMMANDS } from './josh-commands-issue'
|
|
6
|
+
import { LANE_COMMANDS } from './josh-commands-lane'
|
|
7
|
+
import { SPLIT_COMMANDS } from './josh-commands-split'
|
|
8
|
+
|
|
9
|
+
// One script answers both `run:hold` and `run:release`; the flag below is what tells them apart.
|
|
10
|
+
const RUN_HOLD_SCRIPT = 'scripts/run/run-hold-cli.ts'
|
|
11
|
+
const ISSUE_WITH_OPTIONS = '<issue> [options]'
|
|
12
|
+
|
|
13
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
14
|
+
const AI_COMMANDS: Record<string, CommandEntry> = {
|
|
15
|
+
...ISSUE_COMMANDS,
|
|
16
|
+
'pkg:scout': {
|
|
17
|
+
script: 'scripts/package/package-scout-cli.ts',
|
|
18
|
+
description:
|
|
19
|
+
'Rank package candidates by measured metrics so the Package-First tier decision is read, not judged',
|
|
20
|
+
category: 'AI tools',
|
|
21
|
+
reference: ['<keywords> [--size <n>]', 'automation', ['network']],
|
|
22
|
+
},
|
|
23
|
+
'stash:pop': {
|
|
24
|
+
script: 'scripts/git/stash-pop-cli.ts',
|
|
25
|
+
description: 'Pop the stash matching this message, not whichever a shared stack has on top',
|
|
26
|
+
category: 'AI tools',
|
|
27
|
+
reference: ['<message>', 'automation', ['git']],
|
|
28
|
+
},
|
|
29
|
+
epic: {
|
|
30
|
+
script: 'scripts-ai/epic.ts',
|
|
31
|
+
description: 'Create an epic issue from its child issue numbers',
|
|
32
|
+
category: 'AI tools',
|
|
33
|
+
reference: ['<title> <issue...> [--ordered]', 'automation', ['network']],
|
|
34
|
+
},
|
|
35
|
+
'epic:next': {
|
|
36
|
+
script: 'scripts/epic/epic-next.ts',
|
|
37
|
+
description: "List an epic's runnable children, bundled per repository",
|
|
38
|
+
category: 'AI tools',
|
|
39
|
+
reference: ['<epic>', 'automation', ['network']],
|
|
40
|
+
},
|
|
41
|
+
'epic:bundle': {
|
|
42
|
+
script: 'scripts/epic/epic-bundle-cli.ts',
|
|
43
|
+
description: 'Say whether a newly filed issue belongs with ones already in the backlog',
|
|
44
|
+
category: 'AI tools',
|
|
45
|
+
reference: ['<issue>', 'automation', ['network']],
|
|
46
|
+
},
|
|
47
|
+
'epic:audit': {
|
|
48
|
+
script: 'scripts/epic/epic-audit-cli.ts',
|
|
49
|
+
description: "Audit an epic's children against each other for contradictions",
|
|
50
|
+
category: 'AI tools',
|
|
51
|
+
reference: ['<epic>', 'automation', ['network']],
|
|
52
|
+
},
|
|
53
|
+
'epic:check': {
|
|
54
|
+
script: 'scripts-ai/epic-check.ts',
|
|
55
|
+
description: 'Check an epic issue against the tracking requirements',
|
|
56
|
+
category: 'AI tools',
|
|
57
|
+
reference: ['<epic>', 'automation', ['network']],
|
|
58
|
+
},
|
|
59
|
+
'auto-ok:next': {
|
|
60
|
+
script: 'scripts/auto-ok/auto-ok-cli.ts',
|
|
61
|
+
description: 'Print the next opted-in issue an unattended run may pick up outside an epic',
|
|
62
|
+
category: 'AI tools',
|
|
63
|
+
reference: ['[--exclude <n>[,<n>...]] [--label <name>]', 'automation', ['network']],
|
|
64
|
+
},
|
|
65
|
+
...BACKLOG_COMMANDS,
|
|
66
|
+
cost: {
|
|
67
|
+
script: 'scripts/cost-runtime/cost-cli.ts',
|
|
68
|
+
description: "Report a run's token and credit cost from Claude Code's session transcripts",
|
|
69
|
+
category: 'AI tools',
|
|
70
|
+
reference: ['[--cut|--over]', 'automation', ['none']],
|
|
71
|
+
},
|
|
72
|
+
...DOCUMENT_COMMANDS,
|
|
73
|
+
time: {
|
|
74
|
+
script: 'scripts/time/time-cli.ts',
|
|
75
|
+
description: "Report where a run's wall clock went: model wait, tool execution, human wait",
|
|
76
|
+
category: 'AI tools',
|
|
77
|
+
reference: ['[options]', 'maintainer', ['none']],
|
|
78
|
+
// Kit-only: it measures kit's own development runs and its report modules live under the
|
|
79
|
+
// undistributed `scripts/time/`, so it means nothing in a consumer project and is dropped from a
|
|
80
|
+
// consumer's help (joshuafolkken/kit#1997). The runtime analysis hooks and guards rely on stays
|
|
81
|
+
// distributed under `scripts/time-runtime/`.
|
|
82
|
+
is_kit_only: true,
|
|
83
|
+
},
|
|
84
|
+
// The tool-calls-per-round-trip density the batching guard is measured on, aggregated across the
|
|
85
|
+
// recent lane sessions (joshuafolkken/kit#2405). Kit-only for the same reason `time` is: it reads
|
|
86
|
+
// kit's own lane transcripts and means nothing in a consumer project.
|
|
87
|
+
'time:density': {
|
|
88
|
+
script: 'scripts/time/time-density-cli.ts',
|
|
89
|
+
description: 'Report tool calls per round trip across the recent lane sessions',
|
|
90
|
+
category: 'AI tools',
|
|
91
|
+
reference: ['[--lanes <n>] [--path <dir>]', 'maintainer', ['none']],
|
|
92
|
+
is_kit_only: true,
|
|
93
|
+
},
|
|
94
|
+
retrospective: {
|
|
95
|
+
script: 'scripts/retrospective/retrospective-cli.ts',
|
|
96
|
+
description:
|
|
97
|
+
"Aggregate a finished run's cost, review findings, observation ledger and events into one digest",
|
|
98
|
+
category: 'AI tools',
|
|
99
|
+
reference: ['', 'maintainer', ['none']],
|
|
100
|
+
// Kit-only: it reads kit's own development run — the transcript store, the review ledger and the
|
|
101
|
+
// run event stream — so it means nothing in a consumer project and is dropped from a consumer's
|
|
102
|
+
// help (joshuafolkken/kit#2328), through the same declaration `josh time` uses for the same reason.
|
|
103
|
+
is_kit_only: true,
|
|
104
|
+
},
|
|
105
|
+
'review:brief': {
|
|
106
|
+
script: 'scripts/review/review-brief-cli.ts',
|
|
107
|
+
description:
|
|
108
|
+
'Print the whole /code-review invocation: level, what the gate already proved, target (--level-only for the level alone)',
|
|
109
|
+
category: 'AI tools',
|
|
110
|
+
reference: ['[--round <1|2>] | --level-only [--staged] [--json]', 'automation', ['files']],
|
|
111
|
+
},
|
|
112
|
+
'review:attest': {
|
|
113
|
+
script: 'scripts/review/review-attest-cli.ts',
|
|
114
|
+
description: 'Record, or verify, which checkout a /code-review actually read',
|
|
115
|
+
category: 'AI tools',
|
|
116
|
+
reference: ['<nonce> | --check', 'automation', ['files']],
|
|
117
|
+
},
|
|
118
|
+
'review:round2': {
|
|
119
|
+
script: 'scripts/review/review-round2-cli.ts',
|
|
120
|
+
description: 'Say whether the second /code-review round is due, or may be skipped entirely',
|
|
121
|
+
category: 'AI tools',
|
|
122
|
+
reference: ['[--round-1-closed] [--json]', 'automation', ['none']],
|
|
123
|
+
},
|
|
124
|
+
delegate: {
|
|
125
|
+
script: 'scripts/delegation/delegation-cli.ts',
|
|
126
|
+
description: 'Say whether a run step may go to a cheaper execution tier',
|
|
127
|
+
category: 'AI tools',
|
|
128
|
+
reference: ['<step> | --list', 'automation', ['none']],
|
|
129
|
+
},
|
|
130
|
+
fanout: {
|
|
131
|
+
script: 'scripts/delegation/fanout-cli.ts',
|
|
132
|
+
description:
|
|
133
|
+
'Say whether proposed implementation units are file-disjoint, so they may run in parallel',
|
|
134
|
+
category: 'AI tools',
|
|
135
|
+
reference: ['<unit-files> <unit-files> [<unit-files> …]', 'automation', ['none']],
|
|
136
|
+
},
|
|
137
|
+
'run:hold': {
|
|
138
|
+
script: RUN_HOLD_SCRIPT,
|
|
139
|
+
description: 'Claim this working tree for a run, or say which run already holds it',
|
|
140
|
+
category: 'AI tools',
|
|
141
|
+
reference: ['[issue]', 'automation', ['files']],
|
|
142
|
+
},
|
|
143
|
+
'run:release': {
|
|
144
|
+
script: RUN_HOLD_SCRIPT,
|
|
145
|
+
description: "Release this working tree's run record",
|
|
146
|
+
category: 'AI tools',
|
|
147
|
+
reference: ['[issue|--force]', 'automation', ['files']],
|
|
148
|
+
default_script_arguments: ['--release'],
|
|
149
|
+
},
|
|
150
|
+
'run:carry': {
|
|
151
|
+
script: 'scripts/run/run-carry-cli.ts',
|
|
152
|
+
description: 'Carry one invocation’s budget across its own session cuts',
|
|
153
|
+
category: 'AI tools',
|
|
154
|
+
reference: ['<operation> [arguments...]', 'automation', ['files']],
|
|
155
|
+
},
|
|
156
|
+
'run:wake': {
|
|
157
|
+
script: 'scripts/run/run-wake-cli.ts',
|
|
158
|
+
// `.env` rather than the ambient environment:
|
|
159
|
+
// the failure warning needs the Telegram credentials, the same
|
|
160
|
+
// reasons `notify` and `followup` carry these flags.
|
|
161
|
+
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
162
|
+
description: 'Wake the next session of a cut backlogrun from outside the conversation',
|
|
163
|
+
category: 'AI tools',
|
|
164
|
+
reference: ['[options]', 'automation', ['processes', 'notifications']],
|
|
165
|
+
},
|
|
166
|
+
'run:cut': {
|
|
167
|
+
script: 'scripts/run/run-cut-cli.ts',
|
|
168
|
+
description: 'Cut a lane child before the gate and resume a fresh process',
|
|
169
|
+
category: 'AI tools',
|
|
170
|
+
reference: ['[--resume] <issue> [--impl] [--handoff <path>]', 'automation', ['files']],
|
|
171
|
+
},
|
|
172
|
+
'run:liveness': {
|
|
173
|
+
script: 'scripts/run/run-liveness-cli.ts',
|
|
174
|
+
description: 'Say whether a delegated unit is still working, or stopped without reporting',
|
|
175
|
+
category: 'AI tools',
|
|
176
|
+
reference: ['<issue> --output <path> [options]', 'automation', ['processes']],
|
|
177
|
+
},
|
|
178
|
+
'run:ending': {
|
|
179
|
+
script: 'scripts/run/run-ending-cli.ts',
|
|
180
|
+
description: 'Classify how a dispatched lane child ended (merged, cut, abandoned, unreadable)',
|
|
181
|
+
category: 'AI tools',
|
|
182
|
+
reference: ['<issue> --output <path> [--repo <owner/repo>]', 'automation', ['network']],
|
|
183
|
+
},
|
|
184
|
+
'run:progress': {
|
|
185
|
+
script: 'scripts/run/run-progress-cli.ts',
|
|
186
|
+
description: 'Report an unattended run’s progress once it has gone quiet for an interval',
|
|
187
|
+
category: 'AI tools',
|
|
188
|
+
reference: ['[--wait|--mark]', 'automation', ['files']],
|
|
189
|
+
},
|
|
190
|
+
'run:prep': {
|
|
191
|
+
script: 'scripts/run/run-prep-cli.ts',
|
|
192
|
+
description: 'Bundle a run’s pre-edit reads: body, comments, state, dependency scope',
|
|
193
|
+
category: 'AI tools',
|
|
194
|
+
reference: ['<issue>', 'automation', ['network']],
|
|
195
|
+
},
|
|
196
|
+
// The entry sequence a lane opened on, folded into one call (joshuafolkken/kit#2372): claim the tree,
|
|
197
|
+
// read the budget, gather the issue reads and decide the pre-implementation step. `run:hold`,
|
|
198
|
+
// `cost --cut`, `run:prep` and `run:step` were four round trips re-billing a lane's full context each.
|
|
199
|
+
'run:entry': {
|
|
200
|
+
script: 'scripts/run/run-entry-cli.ts',
|
|
201
|
+
description:
|
|
202
|
+
'Open a run in one call: claim the tree, read the budget, bundle the reads, decide the pre-implementation step',
|
|
203
|
+
category: 'AI tools',
|
|
204
|
+
reference: ['<issue>', 'automation', ['git', 'network', 'files']],
|
|
205
|
+
},
|
|
206
|
+
'run:status': {
|
|
207
|
+
script: 'scripts/run/run-status-cli.ts',
|
|
208
|
+
description: 'Bundle a run’s read-only status: issue state, cost verdict, carry counters',
|
|
209
|
+
category: 'AI tools',
|
|
210
|
+
reference: ['<issue> [--repo <owner/repo>]', 'automation', ['network']],
|
|
211
|
+
},
|
|
212
|
+
'run:next': {
|
|
213
|
+
script: 'scripts/run/run-next-cli.ts',
|
|
214
|
+
description: 'Print the next step a fullrun takes, computed from the run’s state',
|
|
215
|
+
category: 'AI tools',
|
|
216
|
+
reference: ['<issue>', 'automation', ['network']],
|
|
217
|
+
},
|
|
218
|
+
'run:step': {
|
|
219
|
+
script: 'scripts/run/run-step-cli.ts',
|
|
220
|
+
description:
|
|
221
|
+
'Print the run’s next single action, computed from the event stream, carry record and issue state',
|
|
222
|
+
category: 'AI tools',
|
|
223
|
+
reference: ['<issue>', 'automation', ['network', 'files']],
|
|
224
|
+
},
|
|
225
|
+
'repo:party': {
|
|
226
|
+
script: 'scripts/discovery/repo-party-cli.ts',
|
|
227
|
+
description:
|
|
228
|
+
'Say whether a repository is first-party or third-party by owner equality (computed, not judged)',
|
|
229
|
+
category: 'AI tools',
|
|
230
|
+
reference: ['[<owner/repo>]', 'automation', ['none']],
|
|
231
|
+
},
|
|
232
|
+
'run:merge': {
|
|
233
|
+
script: 'scripts/run/run-merge-cli.ts',
|
|
234
|
+
description:
|
|
235
|
+
'Collapse a backlogrun merge event into one call: confirm the child, do the post-merge steps, offer the next child',
|
|
236
|
+
category: 'AI tools',
|
|
237
|
+
reference: [ISSUE_WITH_OPTIONS, 'automation', ['git', 'network']],
|
|
238
|
+
},
|
|
239
|
+
'run:review': {
|
|
240
|
+
script: 'scripts/run/run-review-cli.ts',
|
|
241
|
+
description:
|
|
242
|
+
'Start the gate in the background and print the /code-review brief in one call so the two overlap (--join to join the gate and check its verdict)',
|
|
243
|
+
category: 'AI tools',
|
|
244
|
+
reference: ['[--join]', 'automation', ['processes', 'files']],
|
|
245
|
+
},
|
|
246
|
+
// The post-merge sequence a run closed on, folded into one call (joshuafolkken/kit#2372): commit the
|
|
247
|
+
// observation ledger, read the completion citations and decide the release scope. `observations:flush`,
|
|
248
|
+
// `issue:cite` and `release:scope` were three round trips re-billing the run's full context each.
|
|
249
|
+
'run:tail': {
|
|
250
|
+
script: 'scripts/run/run-tail-cli.ts',
|
|
251
|
+
description:
|
|
252
|
+
'Close a run in one call: commit the observation ledger, read the citations, decide the release scope',
|
|
253
|
+
category: 'AI tools',
|
|
254
|
+
reference: ['[<issue> ...]', 'automation', ['git', 'network']],
|
|
255
|
+
},
|
|
256
|
+
// The commit-to-report region a run ships a change on, folded into one call (joshuafolkken/kit#2398):
|
|
257
|
+
// the gate, the commit/push/PR (`git -y`), the CI-wait merge (`followup`) and the report bookkeeping
|
|
258
|
+
// (`run:tail`) were four round trips re-billing the run's full context each. It stops at the first
|
|
259
|
+
// failed step and names it, so the run reads only the step to fix.
|
|
260
|
+
ship: {
|
|
261
|
+
script: 'scripts/run/run-ship-cli.ts',
|
|
262
|
+
description:
|
|
263
|
+
'Ship a change in one call: gate, commit/push/PR, the CI-wait merge and the report bookkeeping, stopping at the first failed step',
|
|
264
|
+
category: 'AI tools',
|
|
265
|
+
reference: [
|
|
266
|
+
'"<title> #<N>" [<follow-up-N> ...] [--cite <N>] [--review] [--detach] [--notify-message <text> | --notify-message-file <path>] | --log <N>',
|
|
267
|
+
'automation',
|
|
268
|
+
['git', 'network'],
|
|
269
|
+
],
|
|
270
|
+
},
|
|
271
|
+
'run:event': {
|
|
272
|
+
script: 'scripts/run/run-event-cli.ts',
|
|
273
|
+
description:
|
|
274
|
+
'Append to, read or watch the run’s append-only event stream (--append <kind> <text> | --from|--follow <n> | --watch [<n>] | --last)',
|
|
275
|
+
category: 'AI tools',
|
|
276
|
+
reference: [
|
|
277
|
+
'--append <kind> <text> | --from|--follow <n> | --watch [<n>] | --last',
|
|
278
|
+
'automation',
|
|
279
|
+
['files'],
|
|
280
|
+
],
|
|
281
|
+
},
|
|
282
|
+
'run:report': {
|
|
283
|
+
script: 'scripts/run/run-report-cli.ts',
|
|
284
|
+
description:
|
|
285
|
+
'Generate the session-facing report for this invocation from the run’s event stream (merges, parks, cuts) with the release tail — the same text josh notify sends',
|
|
286
|
+
category: 'AI tools',
|
|
287
|
+
reference: ['', 'automation', ['files', 'network']],
|
|
288
|
+
},
|
|
289
|
+
...LANE_COMMANDS,
|
|
290
|
+
...GUARD_COMMANDS,
|
|
291
|
+
'run:watcher:guard': {
|
|
292
|
+
script: 'scripts/run/run-watcher-guard-cli.ts',
|
|
293
|
+
description:
|
|
294
|
+
'Guard: exits non-zero when lane children are in-flight but the watcher has not pinged recently',
|
|
295
|
+
category: 'AI tools',
|
|
296
|
+
reference: ['', 'automation', ['none']],
|
|
297
|
+
},
|
|
298
|
+
'run:stranded': {
|
|
299
|
+
script: 'scripts/run/run-stranded-cli.ts',
|
|
300
|
+
// `.env` rather than the ambient environment: the strand notification needs the Telegram
|
|
301
|
+
// credentials, the same reason `run:wake` carries these flags.
|
|
302
|
+
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
303
|
+
description:
|
|
304
|
+
'Report whether the run is stranded — budget handed off, owner gone, and no supervisor watching',
|
|
305
|
+
category: 'AI tools',
|
|
306
|
+
reference: ['', 'automation', ['processes', 'notifications']],
|
|
307
|
+
},
|
|
308
|
+
...SPLIT_COMMANDS,
|
|
309
|
+
'oracle:list': {
|
|
310
|
+
script: 'scripts/rules/oracle-list-cli.ts',
|
|
311
|
+
description: 'Print the decision oracles — commands that answer a rule question mechanically',
|
|
312
|
+
category: 'AI tools',
|
|
313
|
+
reference: ['', 'automation', ['none']],
|
|
314
|
+
},
|
|
315
|
+
eval: {
|
|
316
|
+
script: 'scripts/eval/eval-run.ts',
|
|
317
|
+
description: 'Run the agent rule-compliance scenarios (real Claude sessions)',
|
|
318
|
+
category: 'AI tools',
|
|
319
|
+
reference: ['[scenario...]', 'maintainer', ['processes', 'network']],
|
|
320
|
+
// Kit-only: it replays kit's own distributed rules against real Claude sessions, so it means
|
|
321
|
+
// nothing in a consumer project and is dropped from a consumer's help (joshuafolkken/kit#1988).
|
|
322
|
+
is_kit_only: true,
|
|
323
|
+
},
|
|
324
|
+
}
|
|
325
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
326
|
+
|
|
327
|
+
export { AI_COMMANDS }
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { CommandEntry } from './josh-command-types'
|
|
2
|
+
|
|
3
|
+
// The `backlog:*` command registry, split out of `josh-commands-ai.ts` so that file stays under its
|
|
4
|
+
// 300-code-line limit, exactly as `LANE_COMMANDS` and `SPLIT_COMMANDS` were for the same reason
|
|
5
|
+
// (joshuafolkken/kit#2162, joshuafolkken/kit#2218). It is spread into `AI_COMMANDS` so the commands
|
|
6
|
+
// stay grouped with the other AI tools under the 'AI tools' category.
|
|
7
|
+
|
|
8
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
9
|
+
const BACKLOG_COMMANDS: Record<string, CommandEntry> = {
|
|
10
|
+
'backlog:next': {
|
|
11
|
+
script: 'scripts/backlog/backlog-next.ts',
|
|
12
|
+
description:
|
|
13
|
+
'Order the whole opted-in backlog: auto-ok issues and the descendants of auto-ok epics, transitively through nested epics',
|
|
14
|
+
category: 'AI tools',
|
|
15
|
+
reference: ['[--exclude <n>[,<n>...]] [--repo <owner/repo>]', 'automation', ['network']],
|
|
16
|
+
},
|
|
17
|
+
'backlog:offer': {
|
|
18
|
+
script: 'scripts/backlog/backlog-offer-cli.ts',
|
|
19
|
+
description:
|
|
20
|
+
'Collapse a backlogrun loop-head event into one call: read backlog:next, ask backlog:budget, return the verdict and any issues to start',
|
|
21
|
+
category: 'AI tools',
|
|
22
|
+
reference: ['[options]', 'automation', ['network']],
|
|
23
|
+
},
|
|
24
|
+
'backlog:drive': {
|
|
25
|
+
script: 'scripts/backlog/backlog-drive-cli.ts',
|
|
26
|
+
description:
|
|
27
|
+
'Drive backlogrun through offer, launch and merge; restore this run’s lanes and report when complete',
|
|
28
|
+
category: 'AI tools',
|
|
29
|
+
reference: ['--owner <pid> [options]', 'automation', ['network']],
|
|
30
|
+
},
|
|
31
|
+
'backlog:plan': {
|
|
32
|
+
script: 'scripts/backlog/backlog-plan-cli.ts',
|
|
33
|
+
description:
|
|
34
|
+
'Print the whole backlog as a plan: ready now, waiting on what, waiting on a person, out of scope',
|
|
35
|
+
category: 'AI tools',
|
|
36
|
+
reference: ['[issue...] [--only]', 'automation', ['network']],
|
|
37
|
+
},
|
|
38
|
+
'backlog:stalled': {
|
|
39
|
+
script: 'scripts/backlog/backlog-stalled-cli.ts',
|
|
40
|
+
description:
|
|
41
|
+
'Report whether ready backlog work is sitting undispatched with a free lane and no recent dispatch',
|
|
42
|
+
category: 'AI tools',
|
|
43
|
+
reference: ['', 'automation', ['network']],
|
|
44
|
+
},
|
|
45
|
+
'backlog:budget': {
|
|
46
|
+
script: 'scripts/backlog/backlog-budget-cli.ts',
|
|
47
|
+
description: 'Say whether a backlogrun may start more work, keep watching, or finish',
|
|
48
|
+
category: 'AI tools',
|
|
49
|
+
reference: ['[options]', 'automation', ['none']],
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
53
|
+
|
|
54
|
+
export { BACKLOG_COMMANDS }
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CommandEntry } from './josh-command-types'
|
|
2
|
+
|
|
3
|
+
// The clone-detection commands, kept in their own module so `josh-commands-ai.ts` stays under its
|
|
4
|
+
// line ceiling as the AI-tools set grows (joshuafolkken/kit#2217). Spread into `COMMAND_MAP` in
|
|
5
|
+
// `josh-command-map.ts` alongside the other command groups.
|
|
6
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
7
|
+
const CLONE_COMMANDS: Record<string, CommandEntry> = {
|
|
8
|
+
'clone:scan': {
|
|
9
|
+
script: 'scripts/clone/clone-scan-cli.ts',
|
|
10
|
+
description:
|
|
11
|
+
'Count code duplication across files and first-party repositories, printing each clone as file:line pairs',
|
|
12
|
+
category: 'AI tools',
|
|
13
|
+
reference: ['', 'automation', ['files']],
|
|
14
|
+
},
|
|
15
|
+
}
|
|
16
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
17
|
+
|
|
18
|
+
export { CLONE_COMMANDS }
|