@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,474 @@
|
|
|
1
|
+
import { json_format } from '#scripts/config-merge/json-format'
|
|
2
|
+
import { vscode_settings_schema } from '#scripts/lib/schemas'
|
|
3
|
+
import { distributed_paths } from './distributed-paths'
|
|
4
|
+
import { init_logic_deploy_vps } from './init-logic-deploy-vps'
|
|
5
|
+
import { init_logic_json_merge } from './init-logic-json-merge'
|
|
6
|
+
import { init_logic_secretlint } from './init-logic-secretlint'
|
|
7
|
+
import { init_logic_sonar } from './init-logic-sonar'
|
|
8
|
+
import { init_logic_templates } from './init-logic-templates'
|
|
9
|
+
import { init_logic_workspace } from './init-logic-workspace'
|
|
10
|
+
import { init_logic_yaml_merge } from './init-logic-yaml-merge'
|
|
11
|
+
|
|
12
|
+
const DEV_ENGINES_VALUE = {
|
|
13
|
+
packageManager: { name: 'pnpm', version: '>=12.1.0', onFail: 'error' },
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// The `@joshuafolkken:registry` mapping stays — it is a registry mapping, not a credential,
|
|
17
|
+
// and pnpm honors it from a project .npmrc unconditionally. The matching `_authToken` line is
|
|
18
|
+
// deliberately absent: by default pnpm >= 11.6 refuses to expand environment variables in
|
|
19
|
+
// credentials read from a project .npmrc (the file is committed, so expansion could leak the
|
|
20
|
+
// token to an attacker-controlled registry), so distributing the line would only add an
|
|
21
|
+
// `Ignored project-level auth setting` warning on every command. Not distributing it is not the
|
|
22
|
+
// same as removing it — see merge_npmrc.
|
|
23
|
+
const NPMRC_LINES: ReadonlyArray<string> = [
|
|
24
|
+
'@joshuafolkken:registry=https://npm.pkg.github.com',
|
|
25
|
+
'engine-strict=true',
|
|
26
|
+
'minimum-release-age=1440',
|
|
27
|
+
'confirmModulesPurge=false',
|
|
28
|
+
// Pin full GitHub Packages tarball URLs in the lockfile so pnpm >=11.5 frozen-lockfile
|
|
29
|
+
// installs hit the correct authenticated download path (avoids ERR_PNPM_FETCH_401 on CI).
|
|
30
|
+
'lockfile-include-tarball-url=true',
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
const CSPELL_IMPORT = '@joshuafolkken/kit/cspell'
|
|
34
|
+
|
|
35
|
+
const LEFTHOOK_INSTALL_CMD = 'lefthook install'
|
|
36
|
+
const SAFE_CHAIN_CMD = 'pnpm dlx @aikidosec/safe-chain setup-ci'
|
|
37
|
+
const FIX_GH_PACKAGES_CMD = 'tsx node_modules/@joshuafolkken/kit/scripts/gh/fix-gh-packages.ts'
|
|
38
|
+
// Marker identifying a consumer script that already runs the fix-gh-packages command.
|
|
39
|
+
const FIX_GH_PACKAGES_MARKER = 'fix-gh-packages'
|
|
40
|
+
const PREPARE_KEY = 'prepare'
|
|
41
|
+
// Legacy key: earlier `josh init` runs injected the lifecycle commands here. We now
|
|
42
|
+
// migrate a kit-managed `postinstall` (one containing fix-gh-packages) to `prepare`.
|
|
43
|
+
const LEGACY_POSTINSTALL_KEY = 'postinstall'
|
|
44
|
+
// Guard each command so a missing binary (production / CI installs without dev deps,
|
|
45
|
+
// global installs outside a git repo) does not abort `pnpm install`. These are
|
|
46
|
+
// developer-only hooks, so they live in `prepare` (local install + pack/publish)
|
|
47
|
+
// rather than `postinstall`, which also runs when the package is a consumer dependency.
|
|
48
|
+
// A failing `lefthook install` used to be indistinguishable from a missing binary: `|| true` swallowed
|
|
49
|
+
// both, so an install that left **zero** hooks in place still exited 0 and said nothing. The way it
|
|
50
|
+
// happens in practice is `core.hooksPath` — lefthook refuses to install while any custom hooks path is
|
|
51
|
+
// set — and the developer then commits and pushes for weeks with no pre-commit or pre-push check
|
|
52
|
+
// running at all, believing they are (joshuafolkken/kit#1503).
|
|
53
|
+
//
|
|
54
|
+
// **The `|| true` stays**: a consumer's `pnpm install` must not die over a developer-only hook, which
|
|
55
|
+
// is what it was added for. What changes is that the failure is named on standard error. The warning
|
|
56
|
+
// sits **inside the branch the binary check already gates**, which is what separates the two cases —
|
|
57
|
+
// the ordinary production or CI install, where lefthook is simply absent, stays exactly as silent as
|
|
58
|
+
// it was, and only "lefthook is here and could not install" speaks up.
|
|
59
|
+
// **It names a likely cause rather than asserting one, and links a URL rather than a path.** A set
|
|
60
|
+
// `core.hooksPath` is much the commonest reason, but not the only one — a dev-dependency install in a
|
|
61
|
+
// container with no `.git` fails here too — so a message that diagnosed would misdiagnose that build
|
|
62
|
+
// on every run. And `docs/` is not among the files `josh init` copies, so a consumer told to read
|
|
63
|
+
// `docs/init.md` is told to open a file their repository does not contain.
|
|
64
|
+
const HOOK_INSTALL_WARNING =
|
|
65
|
+
'lefthook install failed: git hooks are NOT installed. A set core.hooksPath is the usual cause. See https://github.com/joshuafolkken/kit/blob/main/docs/init.md#corehookspath-stops-lefthook-installing-anything'
|
|
66
|
+
const LEFTHOOK_BINARY_GUARD = 'command -v lefthook >/dev/null 2>&1'
|
|
67
|
+
const GUARDED_LEFTHOOK_CMD = `${LEFTHOOK_BINARY_GUARD} && { ${LEFTHOOK_INSTALL_CMD} || echo '${HOOK_INSTALL_WARNING}' >&2; }`
|
|
68
|
+
// What every already-initialized consumer has in `prepare` today, and what the upgrade below rewrites.
|
|
69
|
+
const LEGACY_GUARDED_LEFTHOOK_CMD = `${LEFTHOOK_BINARY_GUARD} && ${LEFTHOOK_INSTALL_CMD}`
|
|
70
|
+
const GUARDED_FIX_GH_PACKAGES_CMD = `command -v tsx >/dev/null 2>&1 && ${FIX_GH_PACKAGES_CMD}`
|
|
71
|
+
// Tolerate each optional hook individually with `|| true` and chain them with `&&`,
|
|
72
|
+
// rather than a blanket trailing `; true`. A blanket `; true` is reached
|
|
73
|
+
// unconditionally, so it masks failures of the core steps this command is appended
|
|
74
|
+
// to (e.g. `pnpm gen && svelte-kit sync`). Per-command tolerance keeps those core
|
|
75
|
+
// steps fail-fast while a missing `lefthook`/`tsx` (or a failing optional hook) still
|
|
76
|
+
// exits zero.
|
|
77
|
+
const PREPARE_CMD = `(${GUARDED_LEFTHOOK_CMD} || true) && (${GUARDED_FIX_GH_PACKAGES_CMD} || true)`
|
|
78
|
+
|
|
79
|
+
// CLAUDE.md is deliberately absent: it is no longer byte-copied. A consumer's CLAUDE.md is a single
|
|
80
|
+
// @import of kit's published, path-transformed rules (ensure_claude_md_import), so a package update
|
|
81
|
+
// alone keeps it current (joshuafolkken/kit#1878). AGENTS.md / GEMINI.md / .cursorrules stay copies
|
|
82
|
+
// here — they are for other tools that do not read CLAUDE.md's import.
|
|
83
|
+
const AI_COPY_FILES: ReadonlyArray<string> = [
|
|
84
|
+
'AGENTS.md',
|
|
85
|
+
'GEMINI.md',
|
|
86
|
+
'CODE_OF_CONDUCT.md',
|
|
87
|
+
'.cursorrules',
|
|
88
|
+
'.coderabbit.yaml',
|
|
89
|
+
'.gitattributes',
|
|
90
|
+
'.mcp.json',
|
|
91
|
+
'.ncurc.json',
|
|
92
|
+
'.prettierignore',
|
|
93
|
+
'SECURITY.md',
|
|
94
|
+
'pnpm-workspace.yaml',
|
|
95
|
+
'tsconfig.sonar.json',
|
|
96
|
+
'.github/workflows/auto-tag.yml',
|
|
97
|
+
'.github/workflows/production.yml',
|
|
98
|
+
'.github/workflows/sonar-qube.yml',
|
|
99
|
+
'.github/pull_request_template.md',
|
|
100
|
+
'.github/release.yml',
|
|
101
|
+
'.github/dependabot.yml',
|
|
102
|
+
'.claude/settings.json',
|
|
103
|
+
'.codex/config.toml',
|
|
104
|
+
'.codex/hooks.json',
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
interface FileCopyMapping {
|
|
108
|
+
src: string
|
|
109
|
+
dest: string
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// `.gitignore` is intentionally NOT a byte-copy mapping — it is union-merged via
|
|
113
|
+
// merge_gitignore (init-actions build_file_actions + sync_configs.sync_gitignore) so
|
|
114
|
+
// consumer-local entries survive a sync. Only fully-managed files consumers never
|
|
115
|
+
// hand-edit stay here.
|
|
116
|
+
const AI_COPY_FILE_MAPPINGS: ReadonlyArray<FileCopyMapping> = [
|
|
117
|
+
{ src: 'templates/workflows/ci.yml', dest: '.github/workflows/ci.yml' },
|
|
118
|
+
// The counterpart to the distributed `.github/dependabot.yml`: without it a consumer receives
|
|
119
|
+
// the machinery that opens Dependabot pull requests and none of the machinery that closes them,
|
|
120
|
+
// so every github-actions bump sits green and unmerged (joshuafolkken/kit#834).
|
|
121
|
+
{
|
|
122
|
+
src: 'templates/workflows/dependabot-auto-merge.yml',
|
|
123
|
+
dest: '.github/workflows/dependabot-auto-merge.yml',
|
|
124
|
+
},
|
|
125
|
+
]
|
|
126
|
+
|
|
127
|
+
// Empty since joshuafolkken/kit#1879: the five skill directories kit used to copy whole
|
|
128
|
+
// (`workflow-commands`, `epic-commands`, `dependency-update`, `verify-ui`, `diag`) now ship as the
|
|
129
|
+
// `kit` Claude Code plugin and load from the package, so nothing is copied into a consumer's tree.
|
|
130
|
+
// The copy-and-transform machinery (directory-copy-guard.ts → transform_copied_tree) is kept intact
|
|
131
|
+
// for any future distributed directory; the migration that removes a consumer's stale skill copies
|
|
132
|
+
// lives in `scripts/sync/skill-migration.ts`.
|
|
133
|
+
const AI_COPY_DIRECTORIES: ReadonlyArray<string> = []
|
|
134
|
+
|
|
135
|
+
const LEFTHOOK_EXTENDS = 'node_modules/@joshuafolkken/kit/lefthook/vanilla.yml'
|
|
136
|
+
|
|
137
|
+
// The preset MUST keep a `.json` extension: Playwright (>= 1.62) appends `.json` to any tsconfig
|
|
138
|
+
// `extends` entry that does not already end in it, then hard-throws when the resulting path is
|
|
139
|
+
// missing — so a `.jsonc` preset resolves to `*.jsonc.json` and takes down the whole E2E suite
|
|
140
|
+
// before a single test runs. A tsconfig is parsed as JSONC regardless of extension, so comments in
|
|
141
|
+
// the preset still work. See joshuafolkken/kit#681.
|
|
142
|
+
const TSCONFIG_EXTENDS = './node_modules/@joshuafolkken/kit/tsconfig/base.json'
|
|
143
|
+
|
|
144
|
+
// Preset file basename within the package's tsconfig/ directory, used to read the base
|
|
145
|
+
// compilerOptions when normalizing a consumer tsconfig.json during sync.
|
|
146
|
+
const TSCONFIG_PRESET_FILENAME = 'base.json'
|
|
147
|
+
|
|
148
|
+
const TSCONFIG_EXCLUDE_FIELD = 'exclude'
|
|
149
|
+
|
|
150
|
+
// Directories the kit-distributed configs generate, plus the usual build outputs. `playwright.config.ts`
|
|
151
|
+
// points the html reporter at `playwright-report/` and Playwright writes `test-results/` — the report
|
|
152
|
+
// holds Playwright's own minified trace-viewer bundle, so a consumer with a broad `include` gets
|
|
153
|
+
// thousands of tsc errors from third-party output right after running the E2E suite kit ships the
|
|
154
|
+
// config for. The two directories must stay disjoint (Playwright refuses an html output folder nested
|
|
155
|
+
// in the tests output folder, and vice versa), so both are excluded rather than consolidated. These
|
|
156
|
+
// belong in the CONSUMER file: a consumer `exclude` overrides the extended preset's instead of merging
|
|
157
|
+
// with it, so shipping them only in a preset would have no effect. See joshuafolkken/kit#712.
|
|
158
|
+
const TSCONFIG_GENERATED_OUTPUT_EXCLUDE: ReadonlyArray<string> = [
|
|
159
|
+
'node_modules',
|
|
160
|
+
'build',
|
|
161
|
+
'dist',
|
|
162
|
+
'playwright-report',
|
|
163
|
+
'test-results',
|
|
164
|
+
]
|
|
165
|
+
|
|
166
|
+
// The service-worker globs `.svelte-kit/tsconfig.json` excludes, rewritten relative to the consumer
|
|
167
|
+
// root (SvelteKit writes them `../`-prefixed from inside `.svelte-kit/`). They must be repeated here
|
|
168
|
+
// for the same reason the entries above live in the consumer file, read in the other direction: a
|
|
169
|
+
// consumer `exclude` REPLACES the extended config's array rather than merging with it, so the moment
|
|
170
|
+
// kit writes any `exclude` key, every one of SvelteKit's own exclusions is discarded. SvelteKit keeps
|
|
171
|
+
// the service worker out of the app program deliberately — it runs in a worker context with its own
|
|
172
|
+
// `lib` (`WebWorker`, not `DOM`) and its own generated `$service-worker` ambient types, so
|
|
173
|
+
// type-checking it under the app config produces errors with no correct fix from inside that config.
|
|
174
|
+
// Carrying them forward makes kit's array additive. They are written unconditionally: these are pure
|
|
175
|
+
// string transforms with no view of the project, kit has no SvelteKit detection anywhere, and at
|
|
176
|
+
// `josh init` time the generated config does not exist yet to be read. The cost lands on a
|
|
177
|
+
// NON-SvelteKit consumer that keeps its own `src/service-worker.ts` — a program root nothing imports,
|
|
178
|
+
// so excluding it drops it from `tsc --noEmit`, and a re-sync re-adds the globs if they are deleted.
|
|
179
|
+
// Such a project needs a separate tsconfig for that file regardless, since worker code wants
|
|
180
|
+
// `lib: WebWorker` rather than the app's `DOM`. `../node_modules/**` is the one entry not repeated —
|
|
181
|
+
// `node_modules` above already covers it.
|
|
182
|
+
//
|
|
183
|
+
// Limit: these are the DEFAULT paths. A project that moves the worker with `kit.files.serviceWorker`
|
|
184
|
+
// in `svelte.config.js` gets globs that match nothing, and its real exclusion is still replaced — the
|
|
185
|
+
// #796 failure, unfixed for that shape. Covering it means reading `svelte.config.js`, which is the
|
|
186
|
+
// same project detection kit does not have; such a project should add its own path to `exclude`
|
|
187
|
+
// (the merge appends, so a hand-added entry survives). See joshuafolkken/kit#796.
|
|
188
|
+
const TSCONFIG_SVELTEKIT_EXCLUDE: ReadonlyArray<string> = [
|
|
189
|
+
'src/service-worker.js',
|
|
190
|
+
'src/service-worker/**/*.js',
|
|
191
|
+
'src/service-worker.ts',
|
|
192
|
+
'src/service-worker/**/*.ts',
|
|
193
|
+
'src/service-worker.d.ts',
|
|
194
|
+
'src/service-worker/**/*.d.ts',
|
|
195
|
+
]
|
|
196
|
+
|
|
197
|
+
const TSCONFIG_EXCLUDE: ReadonlyArray<string> = [
|
|
198
|
+
...TSCONFIG_GENERATED_OUTPUT_EXCLUDE,
|
|
199
|
+
...TSCONFIG_SVELTEKIT_EXCLUDE,
|
|
200
|
+
]
|
|
201
|
+
|
|
202
|
+
// extensions.json is distributed in common across project styles, so it is not keyed by type.
|
|
203
|
+
const VSCODE_EXTENSIONS_FILENAME = 'extensions.json'
|
|
204
|
+
|
|
205
|
+
const VSCODE_SETTINGS_FILENAME = 'settings.json'
|
|
206
|
+
|
|
207
|
+
// Keys that exist in the kit's own .vscode/settings.json for kit development but must
|
|
208
|
+
// never be distributed to consumer projects (e.g. SonarLint connected-mode points at the
|
|
209
|
+
// kit's own SonarQube project under the kit author's connection id).
|
|
210
|
+
const KIT_ONLY_VSCODE_SETTINGS_KEYS: ReadonlySet<string> = new Set([
|
|
211
|
+
'sonarlint.connectedMode.project',
|
|
212
|
+
])
|
|
213
|
+
|
|
214
|
+
const SUGGESTED_SCRIPTS_COMMON: Record<string, string> = {
|
|
215
|
+
preinstall: SAFE_CHAIN_CMD,
|
|
216
|
+
prepare: PREPARE_CMD,
|
|
217
|
+
josh: 'josh',
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// prettier resolves its `plugins[]` from the consumer project, not transitively through the kit,
|
|
221
|
+
// so every package that uses the kit prettier preset must declare these as devDependencies. The
|
|
222
|
+
// preset references all three unconditionally (prettier/index.js → plugins), hence all three are
|
|
223
|
+
// added regardless of project — omitting any breaks `prettier`/`josh lint` with a
|
|
224
|
+
// "Cannot find package" error. Versions mirror the kit's own devDependencies.
|
|
225
|
+
const SORT_IMPORTS_PLUGIN_KEY = '@ianvs/prettier-plugin-sort-imports'
|
|
226
|
+
const PRETTIER_SVELTE_PLUGIN_KEY = 'prettier-plugin-svelte'
|
|
227
|
+
const PRETTIER_TAILWIND_PLUGIN_KEY = 'prettier-plugin-tailwindcss'
|
|
228
|
+
const PRETTIER_PLUGIN_DEV_DEPS: Record<string, string> = {
|
|
229
|
+
[SORT_IMPORTS_PLUGIN_KEY]: '^4.7.1',
|
|
230
|
+
[PRETTIER_SVELTE_PLUGIN_KEY]: '^4.1.1',
|
|
231
|
+
[PRETTIER_TAILWIND_PLUGIN_KEY]: '^0.8.0',
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// format_json rather than JSON.stringify: it lays arrays out the way prettier does — inline while
|
|
235
|
+
// they fit within printWidth, one element per line once they do not — so the file kit writes is
|
|
236
|
+
// `prettier --check`-clean in the consumer whatever the entry count happens to be (#660).
|
|
237
|
+
function generate_tsconfig(): string {
|
|
238
|
+
return json_format.format_json({
|
|
239
|
+
extends: TSCONFIG_EXTENDS,
|
|
240
|
+
[TSCONFIG_EXCLUDE_FIELD]: TSCONFIG_EXCLUDE,
|
|
241
|
+
})
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Union-merge kit's generated-output entries into an existing consumer `exclude`: entries the
|
|
245
|
+
// consumer authored are kept verbatim and only the missing ones are appended, so an already-merged
|
|
246
|
+
// file is a no-op. Insert-if-absent on the file as a whole would never repair the installed base,
|
|
247
|
+
// which is the whole point here — every current consumer has a tsconfig already.
|
|
248
|
+
function merge_tsconfig_exclude(content: string): string {
|
|
249
|
+
const field = TSCONFIG_EXCLUDE_FIELD
|
|
250
|
+
|
|
251
|
+
return init_logic_json_merge.merge_json_array_field(content, field, TSCONFIG_EXCLUDE)
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function generate_lefthook_config(): string {
|
|
255
|
+
return `extends:\n - ${LEFTHOOK_EXTENDS}\n`
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
function generate_cspell_config(): string {
|
|
259
|
+
return `version: "0.2"\nimport:\n - "${CSPELL_IMPORT}"\nwords: []\nignorePaths: []\n`
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function generate_npmrc(): string {
|
|
263
|
+
return `${NPMRC_LINES.join('\n')}\n`
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// Append `missing` lines to `existing`, inserting a separating newline when the base is
|
|
267
|
+
// non-empty and lacks a trailing one. Returns `existing` untouched when nothing is missing.
|
|
268
|
+
function append_missing_lines(existing: string, missing: ReadonlyArray<string>): string {
|
|
269
|
+
if (missing.length === 0) return existing
|
|
270
|
+
const prefix = existing.length > 0 && !existing.endsWith('\n') ? `${existing}\n` : existing
|
|
271
|
+
|
|
272
|
+
return `${prefix}${missing.join('\n')}\n`
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Insert-only: every existing line survives verbatim, including a `_authToken` line the consumer
|
|
276
|
+
// added themselves. Kit removed the env-var form until #759, on the premise that pnpm always
|
|
277
|
+
// ignores it in a project .npmrc — true only while `npmrcAuthFile` is unset. A consumer that
|
|
278
|
+
// declares the project file its trusted auth file (Cloudflare Workers Builds via
|
|
279
|
+
// `PNPM_CONFIG_NPMRC_AUTH_FILE`, for instance) gets the credential expanded, and that setting can
|
|
280
|
+
// live in a deploy platform's dashboard — so no reading of the repository tells an inert line
|
|
281
|
+
// apart from a live one. Deleting it took down a working production deploy; leaving it costs at
|
|
282
|
+
// most the warning pnpm already prints. See docs/authentication.md §4(d).
|
|
283
|
+
function merge_npmrc(content: string): string {
|
|
284
|
+
const missing = NPMRC_LINES.filter((line) => !content.includes(line))
|
|
285
|
+
|
|
286
|
+
return append_missing_lines(content, missing)
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// A gitignore line worth appending during a union merge: real ignore patterns only.
|
|
290
|
+
// Comments and blank lines are skipped so re-syncing never accumulates orphaned section
|
|
291
|
+
// headers detached from their entries.
|
|
292
|
+
function is_gitignore_pattern(line: string): boolean {
|
|
293
|
+
const trimmed = line.trim()
|
|
294
|
+
|
|
295
|
+
return trimmed.length > 0 && !trimmed.startsWith('#')
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Union-merge the kit .gitignore template into an existing consumer file: keep every
|
|
299
|
+
// consumer line verbatim and append only the template patterns not already present.
|
|
300
|
+
// Matching is per-line (not substring) so `.env` is still appended when only `.env.local`
|
|
301
|
+
// exists. Order-stable and idempotent — re-running on an already-merged file is a no-op.
|
|
302
|
+
function merge_gitignore(existing: string, template: string): string {
|
|
303
|
+
const existing_lines = new Set(existing.split('\n'))
|
|
304
|
+
const missing = template
|
|
305
|
+
.split('\n')
|
|
306
|
+
.filter((line) => is_gitignore_pattern(line) && !existing_lines.has(line))
|
|
307
|
+
|
|
308
|
+
return append_missing_lines(existing, missing)
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
function get_tsconfig_extends_entry(): string {
|
|
312
|
+
return TSCONFIG_EXTENDS
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
function get_tsconfig_preset_filename(): string {
|
|
316
|
+
return TSCONFIG_PRESET_FILENAME
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
function get_tsconfig_exclude_entries(): ReadonlyArray<string> {
|
|
320
|
+
return TSCONFIG_EXCLUDE
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
function get_lefthook_extends_value(): string {
|
|
324
|
+
return LEFTHOOK_EXTENDS
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
function get_cspell_import_value(): string {
|
|
328
|
+
return CSPELL_IMPORT
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
function get_vscode_settings_filename(): string {
|
|
332
|
+
return VSCODE_SETTINGS_FILENAME
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
function strip_kit_only_vscode_settings(
|
|
336
|
+
settings: Record<string, unknown>,
|
|
337
|
+
): Record<string, unknown> {
|
|
338
|
+
const entries = Object.entries(settings).filter(
|
|
339
|
+
([key]) => !KIT_ONLY_VSCODE_SETTINGS_KEYS.has(key),
|
|
340
|
+
)
|
|
341
|
+
|
|
342
|
+
return Object.fromEntries(entries)
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
function strip_kit_only_vscode_settings_content(raw: string): string {
|
|
346
|
+
const parsed = vscode_settings_schema.parse(JSON.parse(raw))
|
|
347
|
+
const stripped = strip_kit_only_vscode_settings(parsed)
|
|
348
|
+
if (Object.keys(stripped).length === Object.keys(parsed).length) return raw
|
|
349
|
+
|
|
350
|
+
// format_json, not plain JSON.stringify: prettier reads `.vscode/settings.json` with the `json`
|
|
351
|
+
// parser, which keeps a short array such as `eslint.validate` inline. Expanding it here wrote a
|
|
352
|
+
// file the consumer's own `prettier --check` rejects — the same defect as kit#797, which was
|
|
353
|
+
// about the opposite direction on `package.json`.
|
|
354
|
+
return json_format.format_json(stripped)
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
function get_npmrc_lines(): ReadonlyArray<string> {
|
|
358
|
+
return NPMRC_LINES
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
function get_development_engines_value(): typeof DEV_ENGINES_VALUE {
|
|
362
|
+
return DEV_ENGINES_VALUE
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
function get_ai_copy_files(): ReadonlyArray<string> {
|
|
366
|
+
return AI_COPY_FILES
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
function get_ai_copy_file_mappings(): ReadonlyArray<FileCopyMapping> {
|
|
370
|
+
return AI_COPY_FILE_MAPPINGS
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
function get_ai_copy_directories(): ReadonlyArray<string> {
|
|
374
|
+
return AI_COPY_DIRECTORIES
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
function get_suggested_scripts(): Record<string, string> {
|
|
378
|
+
return SUGGESTED_SCRIPTS_COMMON
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// Drop the suggested `prepare` when the consumer already runs fix-gh-packages in
|
|
382
|
+
// any script, so re-running `josh init` does not re-inject a duplicate hook that
|
|
383
|
+
// fights the consumer's intentional consolidation.
|
|
384
|
+
function get_suggested_scripts_for_content(content: string): Record<string, string> {
|
|
385
|
+
const scripts = get_suggested_scripts()
|
|
386
|
+
const has_fix = init_logic_json_merge.has_package_scripts_marker(content, FIX_GH_PACKAGES_MARKER)
|
|
387
|
+
if (!has_fix) return scripts
|
|
388
|
+
|
|
389
|
+
return Object.fromEntries(Object.entries(scripts).filter(([key]) => key !== PREPARE_KEY))
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// **The upgrade path for projects `josh init` has already run in.** Their `prepare` carries the
|
|
393
|
+
// fix-gh-packages marker, and that marker is exactly what makes both merges here return early — so
|
|
394
|
+
// the population joshuafolkken/kit#1503 is actually about, the consumers already installing with zero
|
|
395
|
+
// hooks and no warning, would never receive the fix however often they re-ran `josh init`; only new
|
|
396
|
+
// projects would. This rewrites the lefthook clause kit itself wrote and nothing else, because the
|
|
397
|
+
// rest of that script is the consumer's. It is idempotent by construction: the new clause does not
|
|
398
|
+
// contain the old one as a substring, since `{ ` sits between them.
|
|
399
|
+
function upgrade_prepare_lefthook_warning(content: string): string {
|
|
400
|
+
return init_logic_json_merge.replace_in_package_script(
|
|
401
|
+
content,
|
|
402
|
+
PREPARE_KEY,
|
|
403
|
+
LEGACY_GUARDED_LEFTHOOK_CMD,
|
|
404
|
+
GUARDED_LEFTHOOK_CMD,
|
|
405
|
+
)
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// Append the guarded lifecycle commands to an existing `prepare` when no script yet runs
|
|
409
|
+
// fix-gh-packages, so the dev-only hooks land in `prepare` instead of being lost when the
|
|
410
|
+
// suggested-scripts merge skips the already-present `prepare` key.
|
|
411
|
+
function merge_prepare_lifecycle_cmd(content: string): string {
|
|
412
|
+
const has_fix = init_logic_json_merge.has_package_scripts_marker(content, FIX_GH_PACKAGES_MARKER)
|
|
413
|
+
if (has_fix) return content
|
|
414
|
+
|
|
415
|
+
return init_logic_json_merge.merge_package_script_suffix(content, PREPARE_KEY, PREPARE_CMD)
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
// Migration: remove a kit-managed `postinstall` (one running the fix-gh-packages
|
|
419
|
+
// command) so the lifecycle can be re-added to `prepare`. Matching the full command
|
|
420
|
+
// rather than the bare marker avoids stripping a consumer's unrelated postinstall that
|
|
421
|
+
// merely mentions `fix-gh-packages` (e.g. `npm run my-fix-gh-packages-helper`).
|
|
422
|
+
function strip_managed_postinstall(content: string): string {
|
|
423
|
+
return init_logic_json_merge.remove_script_with_marker(
|
|
424
|
+
content,
|
|
425
|
+
LEGACY_POSTINSTALL_KEY,
|
|
426
|
+
FIX_GH_PACKAGES_CMD,
|
|
427
|
+
)
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
function merge_prettier_plugin_development_deps(content: string): string {
|
|
431
|
+
return init_logic_json_merge.merge_development_dependencies(content, PRETTIER_PLUGIN_DEV_DEPS)
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
const init_logic = {
|
|
435
|
+
...init_logic_templates,
|
|
436
|
+
...init_logic_workspace,
|
|
437
|
+
...init_logic_sonar,
|
|
438
|
+
...init_logic_json_merge,
|
|
439
|
+
...init_logic_secretlint,
|
|
440
|
+
...init_logic_yaml_merge,
|
|
441
|
+
...init_logic_deploy_vps,
|
|
442
|
+
...distributed_paths,
|
|
443
|
+
generate_tsconfig,
|
|
444
|
+
merge_tsconfig_exclude,
|
|
445
|
+
get_tsconfig_exclude_entries,
|
|
446
|
+
generate_lefthook_config,
|
|
447
|
+
generate_cspell_config,
|
|
448
|
+
generate_npmrc,
|
|
449
|
+
merge_npmrc,
|
|
450
|
+
merge_gitignore,
|
|
451
|
+
merge_prettier_plugin_development_deps,
|
|
452
|
+
get_tsconfig_extends_entry,
|
|
453
|
+
get_tsconfig_preset_filename,
|
|
454
|
+
get_lefthook_extends_value,
|
|
455
|
+
get_cspell_import_value,
|
|
456
|
+
get_vscode_settings_filename,
|
|
457
|
+
strip_kit_only_vscode_settings,
|
|
458
|
+
strip_kit_only_vscode_settings_content,
|
|
459
|
+
VSCODE_EXTENSIONS_FILENAME,
|
|
460
|
+
GUARDED_LEFTHOOK_CMD,
|
|
461
|
+
upgrade_prepare_lefthook_warning,
|
|
462
|
+
get_npmrc_lines,
|
|
463
|
+
get_development_engines_value,
|
|
464
|
+
get_ai_copy_files,
|
|
465
|
+
get_ai_copy_file_mappings,
|
|
466
|
+
get_ai_copy_directories,
|
|
467
|
+
get_suggested_scripts,
|
|
468
|
+
get_suggested_scripts_for_content,
|
|
469
|
+
merge_prepare_lifecycle_cmd,
|
|
470
|
+
strip_managed_postinstall,
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
export { init_logic }
|
|
474
|
+
export type { SonarIdentifiers } from './init-logic-sonar'
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import path from 'node:path'
|
|
2
|
+
import { fileURLToPath } from 'node:url'
|
|
3
|
+
|
|
4
|
+
const PACKAGE_DIR = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', '..')
|
|
5
|
+
const PROJECT_ROOT = process.cwd()
|
|
6
|
+
|
|
7
|
+
function package_path(relative_path: string): string {
|
|
8
|
+
return path.join(PACKAGE_DIR, relative_path)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { PACKAGE_DIR, PROJECT_ROOT, package_path }
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs'
|
|
2
|
+
import path from 'node:path'
|
|
3
|
+
import { sonar_file } from '#scripts/security/sonar-file'
|
|
4
|
+
import { init_logic } from './init-logic'
|
|
5
|
+
import { PACKAGE_DIR, PROJECT_ROOT } from './init-paths'
|
|
6
|
+
|
|
7
|
+
function copy_sonar_with_template(name_with_owner: string | undefined): void {
|
|
8
|
+
const destination = init_logic.get_sonar_template_destination()
|
|
9
|
+
|
|
10
|
+
if (name_with_owner === undefined) {
|
|
11
|
+
console.warn(` ⚠ skipped ${destination} (gh repo view failed)`)
|
|
12
|
+
|
|
13
|
+
return
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const destination_path = path.join(PROJECT_ROOT, destination)
|
|
17
|
+
const is_existing = existsSync(destination_path)
|
|
18
|
+
const identifiers = init_logic.derive_sonar_identifiers(name_with_owner)
|
|
19
|
+
|
|
20
|
+
sonar_file.merge_sonar_file(
|
|
21
|
+
path.join(PACKAGE_DIR, init_logic.get_sonar_template_source()),
|
|
22
|
+
destination_path,
|
|
23
|
+
identifiers,
|
|
24
|
+
)
|
|
25
|
+
console.info(` ✔ ${is_existing ? 'updated' : 'created'} ${destination}`)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const init_sonar = {
|
|
29
|
+
copy_sonar_with_template,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { init_sonar }
|