@joshuafolkken/kit 1.872.0 → 1.881.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/.github/workflows/publish.yml +39 -2
- package/README.md +3 -3
- package/dist/hooks/batch-guard.js +4 -4
- package/dist/hooks/{chunk-KABG6AEW.js → chunk-264QY6KS.js} +7 -0
- package/dist/hooks/{chunk-I4D3NVUD.js → chunk-36UE53LS.js} +2 -2
- package/dist/hooks/{chunk-WCYPBPJC.js → chunk-4OXFU3MK.js} +8 -8
- package/dist/hooks/{chunk-ABVEVV2M.js → chunk-6MQCXEEA.js} +1 -1
- package/dist/hooks/{chunk-46EEEHC3.js → chunk-FNFOLFFV.js} +1 -1
- package/dist/hooks/{chunk-5U5EZYG6.js → chunk-FRJKVSK3.js} +2 -2
- package/dist/hooks/{chunk-2RUPMGGV.js → chunk-PRDCNGA6.js} +4 -4
- package/dist/hooks/{chunk-WMN4TSVF.js → chunk-VGYSA2NT.js} +2 -2
- package/dist/hooks/{chunk-A5YJ3H7E.js → chunk-Y5OYCU2F.js} +3 -3
- package/dist/hooks/{chunk-4QHBNAI4.js → chunk-ZBK4XRAS.js} +3 -3
- package/dist/hooks/codex-hook-adapter.js +10 -10
- package/dist/hooks/duplicate-read-guard.js +5 -5
- package/dist/hooks/format-edited.js +2 -2
- package/dist/hooks/investigation-guard.js +5 -5
- package/dist/hooks/pretool-guard.js +9 -9
- package/dist/hooks/stop-guard.js +3 -3
- package/dist/josh.js +7 -0
- package/package.json +6 -2
- package/scripts/init/distributed-paths.ts +14 -11
- package/scripts/init/hook-command-bootstrap.ts +51 -0
- package/scripts/init/hook-command-rewrite.ts +9 -1
- package/scripts/init/init-logic.ts +2 -8
- package/scripts/josh/__snapshots__/josh-command-map.test.ts.snap +10 -0
- package/scripts/josh/josh-command-map.ts +1 -0
- package/scripts/josh/josh-commands-project.ts +6 -0
- package/scripts/registry-migration/migrate-logic.ts +229 -0
- package/scripts/registry-migration/migrate.ts +280 -0
- package/scripts/registry-migration/user-npmrc.ts +15 -0
- package/templates/workflows/ci.yml +6 -2
- package/dist/hooks/chunk-25JL6FMS.js +0 -4970
- package/dist/hooks/chunk-2ANGT3XM.js +0 -375
- package/dist/hooks/chunk-2EI5GBSW.js +0 -42
- package/dist/hooks/chunk-2OT5XE2N.js +0 -5014
- package/dist/hooks/chunk-2XIGZQMQ.js +0 -3299
- package/dist/hooks/chunk-33ELOKEV.js +0 -910
- package/dist/hooks/chunk-33YRTKM7.js +0 -230
- package/dist/hooks/chunk-36JQU5NN.js +0 -77
- package/dist/hooks/chunk-3EJBTWVS.js +0 -1769
- package/dist/hooks/chunk-3FK5SFAC.js +0 -432
- package/dist/hooks/chunk-3PWPYDD2.js +0 -240
- package/dist/hooks/chunk-3TQU7TDH.js +0 -375
- package/dist/hooks/chunk-3TVLSFZ6.js +0 -432
- package/dist/hooks/chunk-3VXYCB4E.js +0 -77
- package/dist/hooks/chunk-44M6JXGV.js +0 -3398
- package/dist/hooks/chunk-4A7UVP2P.js +0 -364
- package/dist/hooks/chunk-4LFQEZS4.js +0 -137
- package/dist/hooks/chunk-4OCX3V2T.js +0 -469
- package/dist/hooks/chunk-4OHA5DE7.js +0 -49
- package/dist/hooks/chunk-4PMDW3YD.js +0 -68
- package/dist/hooks/chunk-4SSB3FEE.js +0 -3273
- package/dist/hooks/chunk-5A2WQ2CQ.js +0 -5390
- package/dist/hooks/chunk-5EVA2JQB.js +0 -5390
- package/dist/hooks/chunk-5P7VF5VE.js +0 -3230
- package/dist/hooks/chunk-5QWJGGZP.js +0 -49
- package/dist/hooks/chunk-5VUUF3ZV.js +0 -240
- package/dist/hooks/chunk-5WA7UBT3.js +0 -374
- package/dist/hooks/chunk-6EBGRQ3Q.js +0 -301
- package/dist/hooks/chunk-6TVHWMD3.js +0 -432
- package/dist/hooks/chunk-6VAGLEMB.js +0 -68
- package/dist/hooks/chunk-75BTXKFJ.js +0 -3424
- package/dist/hooks/chunk-75RHN67S.js +0 -137
- package/dist/hooks/chunk-76KC3BDD.js +0 -3414
- package/dist/hooks/chunk-76SLS7CZ.js +0 -898
- package/dist/hooks/chunk-7DHZ4DWT.js +0 -5015
- package/dist/hooks/chunk-7INSJDGE.js +0 -458
- package/dist/hooks/chunk-7VJ4FTDX.js +0 -268
- package/dist/hooks/chunk-7XCYNHQK.js +0 -77
- package/dist/hooks/chunk-AAEXXUUL.js +0 -268
- package/dist/hooks/chunk-ACN3YXFL.js +0 -68
- package/dist/hooks/chunk-AD3XE3QZ.js +0 -397
- package/dist/hooks/chunk-AENFZPZH.js +0 -230
- package/dist/hooks/chunk-AFKRFQ6W.js +0 -68
- package/dist/hooks/chunk-AHD5IPWI.js +0 -375
- package/dist/hooks/chunk-AMK5JGV7.js +0 -77
- package/dist/hooks/chunk-ARN7NCQI.js +0 -425
- package/dist/hooks/chunk-AUFY653N.js +0 -3425
- package/dist/hooks/chunk-AXQBNFEF.js +0 -375
- package/dist/hooks/chunk-AYC7R6U4.js +0 -3316
- package/dist/hooks/chunk-AYEA2FJ7.js +0 -5015
- package/dist/hooks/chunk-B2LIXYFL.js +0 -77
- package/dist/hooks/chunk-B4HPNY2I.js +0 -375
- package/dist/hooks/chunk-B4YNCUGB.js +0 -469
- package/dist/hooks/chunk-B57S3VWT.js +0 -922
- package/dist/hooks/chunk-BINZ3PLI.js +0 -364
- package/dist/hooks/chunk-BIWLABFK.js +0 -432
- package/dist/hooks/chunk-BODUSXKK.js +0 -410
- package/dist/hooks/chunk-BQBAT2YK.js +0 -375
- package/dist/hooks/chunk-BUJEBW75.js +0 -391
- package/dist/hooks/chunk-BVNWORKA.js +0 -72
- package/dist/hooks/chunk-BWI47LQS.js +0 -5205
- package/dist/hooks/chunk-C25HRMJX.js +0 -137
- package/dist/hooks/chunk-CBFZNC74.js +0 -375
- package/dist/hooks/chunk-CECYXS4Y.js +0 -3424
- package/dist/hooks/chunk-CELGUP5F.js +0 -49
- package/dist/hooks/chunk-CMHANU3F.js +0 -3442
- package/dist/hooks/chunk-CMN372LI.js +0 -68
- package/dist/hooks/chunk-CPGZLMMK.js +0 -3299
- package/dist/hooks/chunk-CTQKXDC7.js +0 -268
- package/dist/hooks/chunk-CYAT4RIT.js +0 -68
- package/dist/hooks/chunk-CYTWYCH2.js +0 -5014
- package/dist/hooks/chunk-CZSOLRBA.js +0 -77
- package/dist/hooks/chunk-D2PIDYJR.js +0 -3438
- package/dist/hooks/chunk-DE57HI6T.js +0 -137
- package/dist/hooks/chunk-DGXDGAPG.js +0 -5306
- package/dist/hooks/chunk-DNYRSYQG.js +0 -5014
- package/dist/hooks/chunk-DTAXH2A2.js +0 -240
- package/dist/hooks/chunk-E2IZUWI5.js +0 -375
- package/dist/hooks/chunk-E4L2K2BL.js +0 -397
- package/dist/hooks/chunk-E55NKX5F.js +0 -68
- package/dist/hooks/chunk-ECXVCCVD.js +0 -3079
- package/dist/hooks/chunk-EPHO443D.js +0 -68
- package/dist/hooks/chunk-EUFK2BI2.js +0 -375
- package/dist/hooks/chunk-EYCD5ZAV.js +0 -137
- package/dist/hooks/chunk-F2SDYJU4.js +0 -240
- package/dist/hooks/chunk-F4B5D5TF.js +0 -68
- package/dist/hooks/chunk-FGEO3NDX.js +0 -432
- package/dist/hooks/chunk-FJYI52RE.js +0 -137
- package/dist/hooks/chunk-FYTZHIY4.js +0 -3085
- package/dist/hooks/chunk-G7JL2A5K.js +0 -375
- package/dist/hooks/chunk-GA3ITDBW.js +0 -42
- package/dist/hooks/chunk-GDR4H4SV.js +0 -469
- package/dist/hooks/chunk-GFKDXPSM.js +0 -2855
- package/dist/hooks/chunk-GIMRTKFU.js +0 -566
- package/dist/hooks/chunk-GOPHRLGO.js +0 -240
- package/dist/hooks/chunk-GX4HO7SJ.js +0 -230
- package/dist/hooks/chunk-GXKKK23T.js +0 -240
- package/dist/hooks/chunk-GZ6FUVIK.js +0 -566
- package/dist/hooks/chunk-H5HPY5M5.js +0 -2869
- package/dist/hooks/chunk-HCF3OGEE.js +0 -1829
- package/dist/hooks/chunk-HDEXAOUM.js +0 -469
- package/dist/hooks/chunk-HM2TY3TN.js +0 -469
- package/dist/hooks/chunk-HOA7NXA2.js +0 -55
- package/dist/hooks/chunk-HOFEWH6H.js +0 -240
- package/dist/hooks/chunk-HUUI6S5J.js +0 -2669
- package/dist/hooks/chunk-I4Q6WAJE.js +0 -68
- package/dist/hooks/chunk-IB6N4CR2.js +0 -432
- package/dist/hooks/chunk-IFLDYJMD.js +0 -469
- package/dist/hooks/chunk-IGU466YD.js +0 -77
- package/dist/hooks/chunk-IJCQUHKY.js +0 -375
- package/dist/hooks/chunk-IKUMBDJB.js +0 -230
- package/dist/hooks/chunk-IM3BDIBJ.js +0 -5005
- package/dist/hooks/chunk-IMYMAODK.js +0 -3431
- package/dist/hooks/chunk-IN2ZVGXA.js +0 -5005
- package/dist/hooks/chunk-ITVJ2MKQ.js +0 -18
- package/dist/hooks/chunk-J5RIJYTM.js +0 -2669
- package/dist/hooks/chunk-JFLMH4K5.js +0 -3460
- package/dist/hooks/chunk-JR25IFML.js +0 -77
- package/dist/hooks/chunk-JT5AUXFI.js +0 -432
- package/dist/hooks/chunk-JY5YVN6N.js +0 -3234
- package/dist/hooks/chunk-K5Q4ETVI.js +0 -391
- package/dist/hooks/chunk-K67V2F24.js +0 -137
- package/dist/hooks/chunk-KATZESEC.js +0 -3273
- package/dist/hooks/chunk-KFH4H7W7.js +0 -469
- package/dist/hooks/chunk-KMUEI6RX.js +0 -910
- package/dist/hooks/chunk-KMV4OY77.js +0 -3438
- package/dist/hooks/chunk-KQAZNWEY.js +0 -137
- package/dist/hooks/chunk-KZZR6JER.js +0 -5015
- package/dist/hooks/chunk-LAR6DREP.js +0 -77
- package/dist/hooks/chunk-LNCJWEZD.js +0 -5015
- package/dist/hooks/chunk-LRYD2GLM.js +0 -6
- package/dist/hooks/chunk-LXBKYHDV.js +0 -77
- package/dist/hooks/chunk-LYLKIUNE.js +0 -5024
- package/dist/hooks/chunk-LZKCFOVC.js +0 -432
- package/dist/hooks/chunk-M4FCIYRI.js +0 -77
- package/dist/hooks/chunk-M5M7327Q.js +0 -3425
- package/dist/hooks/chunk-MF72MHSX.js +0 -3455
- package/dist/hooks/chunk-MK56LKDO.js +0 -397
- package/dist/hooks/chunk-N3MJADY7.js +0 -240
- package/dist/hooks/chunk-NFQSUDBN.js +0 -458
- package/dist/hooks/chunk-NHREKY45.js +0 -137
- package/dist/hooks/chunk-NP5TTAAW.js +0 -375
- package/dist/hooks/chunk-NQTLTKTJ.js +0 -2993
- package/dist/hooks/chunk-NVRCZPBZ.js +0 -391
- package/dist/hooks/chunk-O46HMMLJ.js +0 -469
- package/dist/hooks/chunk-OFJGH2L4.js +0 -240
- package/dist/hooks/chunk-OLFMCZH5.js +0 -240
- package/dist/hooks/chunk-OMCZS46I.js +0 -49
- package/dist/hooks/chunk-OQZEZW5G.js +0 -469
- package/dist/hooks/chunk-P2MDAT2Y.js +0 -1897
- package/dist/hooks/chunk-P3M2JJIF.js +0 -68
- package/dist/hooks/chunk-PDVHQITQ.js +0 -3453
- package/dist/hooks/chunk-PNT2AMDH.js +0 -391
- package/dist/hooks/chunk-PR2LVSY6.js +0 -3445
- package/dist/hooks/chunk-PRR5R4JK.js +0 -137
- package/dist/hooks/chunk-PXT44QVN.js +0 -566
- package/dist/hooks/chunk-PZLWJLAP.js +0 -469
- package/dist/hooks/chunk-Q2FEAZJ2.js +0 -77
- package/dist/hooks/chunk-Q32WETDO.js +0 -3265
- package/dist/hooks/chunk-Q45DUBLE.js +0 -3600
- package/dist/hooks/chunk-Q7NZSWQ5.js +0 -240
- package/dist/hooks/chunk-QH2JNAMK.js +0 -3085
- package/dist/hooks/chunk-QNNWYQ2R.js +0 -375
- package/dist/hooks/chunk-QPU5H2OS.js +0 -68
- package/dist/hooks/chunk-QRAHZ5TO.js +0 -1829
- package/dist/hooks/chunk-QUZ5HPIE.js +0 -469
- package/dist/hooks/chunk-QVCRG34O.js +0 -2893
- package/dist/hooks/chunk-R3MY4E3S.js +0 -1675
- package/dist/hooks/chunk-R6TXJJXP.js +0 -77
- package/dist/hooks/chunk-REJU6VT7.js +0 -1829
- package/dist/hooks/chunk-REQAQLRC.js +0 -2993
- package/dist/hooks/chunk-RFCXPAHH.js +0 -391
- package/dist/hooks/chunk-RHI6Y22X.js +0 -137
- package/dist/hooks/chunk-RKZVOBBS.js +0 -469
- package/dist/hooks/chunk-RL57TT2Y.js +0 -566
- package/dist/hooks/chunk-RORDOD4S.js +0 -3321
- package/dist/hooks/chunk-RZKYW5P2.js +0 -77
- package/dist/hooks/chunk-SJPJ6VSI.js +0 -391
- package/dist/hooks/chunk-SKSIJQQQ.js +0 -432
- package/dist/hooks/chunk-SSQDZKXG.js +0 -268
- package/dist/hooks/chunk-SYHFKE4C.js +0 -77
- package/dist/hooks/chunk-TCGNI2ZY.js +0 -42
- package/dist/hooks/chunk-TG3WXJF5.js +0 -137
- package/dist/hooks/chunk-TH7IJAY5.js +0 -77
- package/dist/hooks/chunk-TLZ27PCY.js +0 -240
- package/dist/hooks/chunk-U652FXTN.js +0 -566
- package/dist/hooks/chunk-UEK47YUF.js +0 -268
- package/dist/hooks/chunk-UIO45H3O.js +0 -432
- package/dist/hooks/chunk-UNLZEEVH.js +0 -5005
- package/dist/hooks/chunk-UNRVF3SZ.js +0 -432
- package/dist/hooks/chunk-USLFAFOI.js +0 -3453
- package/dist/hooks/chunk-VAEELMLL.js +0 -442
- package/dist/hooks/chunk-VALSWLDQ.js +0 -3453
- package/dist/hooks/chunk-VC5JEPNY.js +0 -3398
- package/dist/hooks/chunk-VEZVK6C7.js +0 -230
- package/dist/hooks/chunk-VK5JKFAR.js +0 -49
- package/dist/hooks/chunk-VNF2KP7Z.js +0 -469
- package/dist/hooks/chunk-VWWCUMW6.js +0 -2669
- package/dist/hooks/chunk-W4JARUQV.js +0 -137
- package/dist/hooks/chunk-WEOBMNJG.js +0 -2993
- package/dist/hooks/chunk-WKJU3J5Y.js +0 -5390
- package/dist/hooks/chunk-WNON54PT.js +0 -3469
- package/dist/hooks/chunk-WOVKBPPX.js +0 -137
- package/dist/hooks/chunk-WRVFORYJ.js +0 -432
- package/dist/hooks/chunk-WUBVYGQZ.js +0 -240
- package/dist/hooks/chunk-WWULTUOM.js +0 -68
- package/dist/hooks/chunk-WXHKKB45.js +0 -4962
- package/dist/hooks/chunk-XAI3YTHJ.js +0 -469
- package/dist/hooks/chunk-XFZH6JZJ.js +0 -77
- package/dist/hooks/chunk-XGPWX6IA.js +0 -137
- package/dist/hooks/chunk-XIXXIVGY.js +0 -566
- package/dist/hooks/chunk-XKDOYJGA.js +0 -922
- package/dist/hooks/chunk-YALTVBHM.js +0 -432
- package/dist/hooks/chunk-YEBEPBFK.js +0 -5014
- package/dist/hooks/chunk-YI2BQ3DK.js +0 -3441
- package/dist/hooks/chunk-YVNBCFGG.js +0 -1829
- package/dist/hooks/chunk-YXBN3RGG.js +0 -432
- package/dist/hooks/chunk-Z2OOJSW3.js +0 -3163
- package/dist/hooks/chunk-ZA3HVBOY.js +0 -2644
- package/dist/hooks/chunk-ZKID46U3.js +0 -137
- package/dist/hooks/chunk-ZPMU2JV6.js +0 -49
- package/dist/hooks/chunk-ZRKY4W7O.js +0 -432
- package/dist/hooks/chunk-ZTMRB7LJ.js +0 -268
- package/dist/hooks/chunk-ZVPPBQ3L.js +0 -3413
|
@@ -5,7 +5,7 @@ on:
|
|
|
5
5
|
types: [new-tag-created]
|
|
6
6
|
|
|
7
7
|
jobs:
|
|
8
|
-
publish:
|
|
8
|
+
publish-github:
|
|
9
9
|
runs-on: ubuntu-latest
|
|
10
10
|
timeout-minutes: 10
|
|
11
11
|
permissions:
|
|
@@ -13,6 +13,8 @@ jobs:
|
|
|
13
13
|
packages: write
|
|
14
14
|
steps:
|
|
15
15
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
16
|
+
with:
|
|
17
|
+
ref: ${{ github.event.client_payload.tag }}
|
|
16
18
|
|
|
17
19
|
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
18
20
|
with:
|
|
@@ -34,6 +36,41 @@ jobs:
|
|
|
34
36
|
|
|
35
37
|
- run: pnpm install --frozen-lockfile --ignore-scripts
|
|
36
38
|
|
|
37
|
-
- run: pnpm publish --no-git-checks --tag latest
|
|
39
|
+
- run: pnpm publish --no-git-checks --tag latest --registry https://npm.pkg.github.com
|
|
38
40
|
env:
|
|
39
41
|
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
42
|
+
|
|
43
|
+
publish-npm:
|
|
44
|
+
runs-on: ubuntu-latest
|
|
45
|
+
timeout-minutes: 10
|
|
46
|
+
permissions:
|
|
47
|
+
contents: read
|
|
48
|
+
id-token: write
|
|
49
|
+
steps:
|
|
50
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
51
|
+
with:
|
|
52
|
+
ref: ${{ github.event.client_payload.tag }}
|
|
53
|
+
|
|
54
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
55
|
+
with:
|
|
56
|
+
node-version: 24
|
|
57
|
+
registry-url: 'https://registry.npmjs.org'
|
|
58
|
+
|
|
59
|
+
- name: Resolve pnpm version
|
|
60
|
+
id: pnpm-version
|
|
61
|
+
run: |
|
|
62
|
+
version=$(node -p "const m = require('./package.json'); m.packageManager?.match(/^pnpm@([^+]+)/)?.[1] ?? (m.devEngines?.packageManager?.name === 'pnpm' ? m.devEngines.packageManager.version?.split('+')[0] : 'latest') ?? 'latest'")
|
|
63
|
+
test -n "$version"
|
|
64
|
+
echo "version=$version" >> "$GITHUB_OUTPUT"
|
|
65
|
+
|
|
66
|
+
- uses: pnpm/setup@fbda4c85fc2e1e08721cd8763afea8f48d60f024 # v3.0.0
|
|
67
|
+
with:
|
|
68
|
+
version: ${{ steps.pnpm-version.outputs.version }}
|
|
69
|
+
install: false
|
|
70
|
+
|
|
71
|
+
- run: pnpm install --frozen-lockfile --ignore-scripts
|
|
72
|
+
|
|
73
|
+
- run: pnpm pack --out "$RUNNER_TEMP/kit.tgz"
|
|
74
|
+
|
|
75
|
+
- name: Publish to npm
|
|
76
|
+
run: cd "$RUNNER_TEMP" && npm publish kit.tgz --access public --tag latest --registry https://registry.npmjs.org --userconfig /dev/null
|
package/README.md
CHANGED
|
@@ -8,12 +8,11 @@ Shared toolchain config and CLI for TypeScript projects — ESLint, Prettier, Ty
|
|
|
8
8
|
## Prerequisites
|
|
9
9
|
|
|
10
10
|
- [Node.js](https://nodejs.org/) with [pnpm](https://pnpm.io/)
|
|
11
|
-
- [gh CLI](https://cli.github.com/)
|
|
11
|
+
- [gh CLI](https://cli.github.com/) for `josh version` and existing GitHub Packages consumers. It is not required to install kit from public npm; see [authentication.md](./docs/authentication.md) for setup when needed.
|
|
12
12
|
|
|
13
13
|
## Quick start
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
gh auth login --scopes read:packages # see docs/authentication.md for the full setup
|
|
17
16
|
pnpm add -g @joshuafolkken/kit # install the josh CLI globally
|
|
18
17
|
josh help
|
|
19
18
|
```
|
|
@@ -25,9 +24,10 @@ Using the kit inside a project? See [docs/package.md](./docs/package.md).
|
|
|
25
24
|
| Guide | What it covers |
|
|
26
25
|
| ----------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
27
26
|
| [why.md](./docs/why.md) | Why kit exists — the AI-development problems it solves, for practitioners |
|
|
28
|
-
| [authentication.md](./docs/authentication.md) |
|
|
27
|
+
| [authentication.md](./docs/authentication.md) | GitHub Packages auth for existing projects |
|
|
29
28
|
| [cli.md](./docs/cli.md) | Install and use the global `josh` CLI |
|
|
30
29
|
| [package.md](./docs/package.md) | Use the kit as a project devDependency — configs, prompts, scripts, `josh init` |
|
|
30
|
+
| [publishing.md](./docs/publishing.md) | First public npm release and trusted publishing setup |
|
|
31
31
|
| [josh-commands.md](./docs/josh-commands.md) | Full `josh` CLI command reference |
|
|
32
32
|
| [overview.md](./docs/overview.md) | What the kit provides and how it works |
|
|
33
33
|
| [troubleshooting.md](./docs/troubleshooting.md) | `401`/`404` auth errors, `josh: command not found`, stale shim, version mismatch |
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
load_environment_file,
|
|
10
10
|
notice_refusal_path,
|
|
11
11
|
refusal_path
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-FRJKVSK3.js";
|
|
13
|
+
import "./chunk-36UE53LS.js";
|
|
14
|
+
import "./chunk-FNFOLFFV.js";
|
|
15
|
+
import "./chunk-264QY6KS.js";
|
|
16
16
|
import "./chunk-FXAKJKTB.js";
|
|
17
17
|
import "./chunk-SSX23SJ2.js";
|
|
18
18
|
export {
|
|
@@ -1016,6 +1016,12 @@ var PROJECT_COMMANDS = {
|
|
|
1016
1016
|
category: "Project",
|
|
1017
1017
|
reference: ["", "developer", ["files"]]
|
|
1018
1018
|
},
|
|
1019
|
+
"registry:migrate": {
|
|
1020
|
+
script: "scripts/registry-migration/migrate.ts",
|
|
1021
|
+
description: "Migrate a kit-only project from GitHub Packages to public npm",
|
|
1022
|
+
category: "Project",
|
|
1023
|
+
reference: ["", "developer", ["files", "network", "processes"]]
|
|
1024
|
+
},
|
|
1019
1025
|
"sync:scope": {
|
|
1020
1026
|
script: "scripts/sync/managed-config-scope-cli.ts",
|
|
1021
1027
|
description: "Say whether this change touches a file josh sync distributes",
|
|
@@ -1237,6 +1243,7 @@ var ALIASES = {
|
|
|
1237
1243
|
pt: "port",
|
|
1238
1244
|
i: "init",
|
|
1239
1245
|
sy: "sync",
|
|
1246
|
+
rmi: "registry:migrate",
|
|
1240
1247
|
sys: "sync:scope",
|
|
1241
1248
|
g: "git",
|
|
1242
1249
|
gp: "pr",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
lane_child_marker
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FNFOLFFV.js";
|
|
4
4
|
import {
|
|
5
5
|
time_bundle_call,
|
|
6
6
|
time_format,
|
|
7
7
|
time_round_trips,
|
|
8
8
|
time_spans,
|
|
9
9
|
time_transcript_line
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-264QY6KS.js";
|
|
11
11
|
|
|
12
12
|
// scripts/lane/lane-guard-policy.ts
|
|
13
13
|
var DEFAULT_MODE = "refuse";
|
|
@@ -29,28 +29,28 @@ import {
|
|
|
29
29
|
run_watcher_guard,
|
|
30
30
|
shell_segments,
|
|
31
31
|
tail_commands
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-VGYSA2NT.js";
|
|
33
33
|
import {
|
|
34
34
|
batch_outcome
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-FRJKVSK3.js";
|
|
36
36
|
import {
|
|
37
37
|
investigation_refusal
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-ZBK4XRAS.js";
|
|
39
39
|
import {
|
|
40
40
|
duplicate_read_outcome
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-PRDCNGA6.js";
|
|
42
42
|
import {
|
|
43
43
|
investigation_reads
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-Y5OYCU2F.js";
|
|
45
45
|
import {
|
|
46
46
|
lane_guard_policy,
|
|
47
47
|
time_batch_guard
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-36UE53LS.js";
|
|
49
49
|
import {
|
|
50
50
|
hook_decision,
|
|
51
51
|
lane_child_marker,
|
|
52
52
|
run_issue_number
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-FNFOLFFV.js";
|
|
54
54
|
import {
|
|
55
55
|
PLATFORM_TEMP_ROOT,
|
|
56
56
|
cost_attribute,
|
|
@@ -61,7 +61,7 @@ import {
|
|
|
61
61
|
lane_paths,
|
|
62
62
|
stamp_file,
|
|
63
63
|
time_shell
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-264QY6KS.js";
|
|
65
65
|
|
|
66
66
|
// scripts/hooks/pretool-guard.ts
|
|
67
67
|
import { text } from "node:stream/consumers";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
lane_guard_policy,
|
|
3
3
|
time_batch_guard
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-36UE53LS.js";
|
|
5
5
|
import {
|
|
6
6
|
hook_decision
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-FNFOLFFV.js";
|
|
8
8
|
|
|
9
9
|
// scripts/hooks/batch-guard.ts
|
|
10
10
|
import { text } from "node:stream/consumers";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
investigation_reads
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-Y5OYCU2F.js";
|
|
4
4
|
import {
|
|
5
5
|
lane_guard_policy
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-36UE53LS.js";
|
|
7
7
|
import {
|
|
8
8
|
hook_decision
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-FNFOLFFV.js";
|
|
10
10
|
import {
|
|
11
11
|
json_value,
|
|
12
12
|
time_spans
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-264QY6KS.js";
|
|
14
14
|
|
|
15
15
|
// scripts/delegation/duplicate-read-guard.ts
|
|
16
16
|
import { statSync } from "node:fs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
lane_child_marker,
|
|
3
3
|
run_issue_number
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FNFOLFFV.js";
|
|
5
5
|
import {
|
|
6
6
|
PLATFORM_TEMP_ROOT,
|
|
7
7
|
cost_blocks,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
time_density_hook,
|
|
12
12
|
time_shell,
|
|
13
13
|
time_transcript_line
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-264QY6KS.js";
|
|
15
15
|
import {
|
|
16
16
|
ENV_FILE_NAME,
|
|
17
17
|
LANE_SEAT_KEY,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
time_batch_guard
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-36UE53LS.js";
|
|
4
4
|
import {
|
|
5
5
|
hook_decision
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FNFOLFFV.js";
|
|
7
7
|
import {
|
|
8
8
|
cost_blocks,
|
|
9
9
|
cost_transcript,
|
|
10
10
|
time_bundle_call,
|
|
11
11
|
time_shell,
|
|
12
12
|
time_spans
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-264QY6KS.js";
|
|
14
14
|
|
|
15
15
|
// scripts/delegation/investigation-reads.ts
|
|
16
16
|
import path from "node:path";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
investigation_reads
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-Y5OYCU2F.js";
|
|
4
4
|
import {
|
|
5
5
|
lane_guard_policy
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-36UE53LS.js";
|
|
7
7
|
import {
|
|
8
8
|
hook_decision
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-FNFOLFFV.js";
|
|
10
10
|
|
|
11
11
|
// scripts/delegation/investigation-guard.ts
|
|
12
12
|
import { text } from "node:stream/consumers";
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
2
|
import {
|
|
3
3
|
pretool_guard
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-4OXFU3MK.js";
|
|
5
|
+
import "./chunk-VGYSA2NT.js";
|
|
6
6
|
import {
|
|
7
7
|
build_envelope,
|
|
8
8
|
compose_context,
|
|
9
9
|
format_edited_payload
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-6MQCXEEA.js";
|
|
11
|
+
import "./chunk-FRJKVSK3.js";
|
|
12
|
+
import "./chunk-ZBK4XRAS.js";
|
|
13
|
+
import "./chunk-PRDCNGA6.js";
|
|
14
|
+
import "./chunk-Y5OYCU2F.js";
|
|
15
|
+
import "./chunk-36UE53LS.js";
|
|
16
16
|
import {
|
|
17
17
|
hook_decision
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-FNFOLFFV.js";
|
|
19
19
|
import {
|
|
20
20
|
time_density_hook
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-264QY6KS.js";
|
|
22
22
|
import "./chunk-FXAKJKTB.js";
|
|
23
23
|
import "./chunk-SSX23SJ2.js";
|
|
24
24
|
|
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
is_enabled,
|
|
10
10
|
notice_refusal_path,
|
|
11
11
|
refusal_path
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-PRDCNGA6.js";
|
|
13
|
+
import "./chunk-Y5OYCU2F.js";
|
|
14
|
+
import "./chunk-36UE53LS.js";
|
|
15
|
+
import "./chunk-FNFOLFFV.js";
|
|
16
|
+
import "./chunk-264QY6KS.js";
|
|
17
17
|
import "./chunk-FXAKJKTB.js";
|
|
18
18
|
import "./chunk-SSX23SJ2.js";
|
|
19
19
|
export {
|
|
@@ -15,8 +15,8 @@ import {
|
|
|
15
15
|
relative_to_root,
|
|
16
16
|
resolve_invocations,
|
|
17
17
|
select_invocation
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-6MQCXEEA.js";
|
|
19
|
+
import "./chunk-264QY6KS.js";
|
|
20
20
|
import "./chunk-SSX23SJ2.js";
|
|
21
21
|
export {
|
|
22
22
|
ESLINT_DAEMON,
|
|
@@ -10,11 +10,11 @@ import {
|
|
|
10
10
|
is_enabled,
|
|
11
11
|
load_environment_file,
|
|
12
12
|
refusal_path
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-ZBK4XRAS.js";
|
|
14
|
+
import "./chunk-Y5OYCU2F.js";
|
|
15
|
+
import "./chunk-36UE53LS.js";
|
|
16
|
+
import "./chunk-FNFOLFFV.js";
|
|
17
|
+
import "./chunk-264QY6KS.js";
|
|
18
18
|
import "./chunk-FXAKJKTB.js";
|
|
19
19
|
import "./chunk-SSX23SJ2.js";
|
|
20
20
|
export {
|
|
@@ -3,15 +3,15 @@ import {
|
|
|
3
3
|
pretool_guard,
|
|
4
4
|
pretool_outcome,
|
|
5
5
|
pretool_outcome_async
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-4OXFU3MK.js";
|
|
7
|
+
import "./chunk-VGYSA2NT.js";
|
|
8
|
+
import "./chunk-FRJKVSK3.js";
|
|
9
|
+
import "./chunk-ZBK4XRAS.js";
|
|
10
|
+
import "./chunk-PRDCNGA6.js";
|
|
11
|
+
import "./chunk-Y5OYCU2F.js";
|
|
12
|
+
import "./chunk-36UE53LS.js";
|
|
13
|
+
import "./chunk-FNFOLFFV.js";
|
|
14
|
+
import "./chunk-264QY6KS.js";
|
|
15
15
|
import "./chunk-FXAKJKTB.js";
|
|
16
16
|
import "./chunk-SSX23SJ2.js";
|
|
17
17
|
export {
|
package/dist/hooks/stop-guard.js
CHANGED
|
@@ -15,20 +15,20 @@ import {
|
|
|
15
15
|
run_hold,
|
|
16
16
|
run_invocation,
|
|
17
17
|
run_watcher_guard
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-VGYSA2NT.js";
|
|
19
19
|
import {
|
|
20
20
|
session_language
|
|
21
21
|
} from "./chunk-6V5OPIUU.js";
|
|
22
22
|
import {
|
|
23
23
|
hook_decision,
|
|
24
24
|
lane_child_marker
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-FNFOLFFV.js";
|
|
26
26
|
import {
|
|
27
27
|
PROJECT_ROOT,
|
|
28
28
|
stamp_file,
|
|
29
29
|
time_density_hook,
|
|
30
30
|
time_hook_transcript
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-264QY6KS.js";
|
|
32
32
|
import "./chunk-FXAKJKTB.js";
|
|
33
33
|
import "./chunk-SSX23SJ2.js";
|
|
34
34
|
|
package/dist/josh.js
CHANGED
|
@@ -1173,6 +1173,12 @@ var PROJECT_COMMANDS = {
|
|
|
1173
1173
|
category: "Project",
|
|
1174
1174
|
reference: ["", "developer", ["files"]]
|
|
1175
1175
|
},
|
|
1176
|
+
"registry:migrate": {
|
|
1177
|
+
script: "scripts/registry-migration/migrate.ts",
|
|
1178
|
+
description: "Migrate a kit-only project from GitHub Packages to public npm",
|
|
1179
|
+
category: "Project",
|
|
1180
|
+
reference: ["", "developer", ["files", "network", "processes"]]
|
|
1181
|
+
},
|
|
1176
1182
|
"sync:scope": {
|
|
1177
1183
|
script: "scripts/sync/managed-config-scope-cli.ts",
|
|
1178
1184
|
description: "Say whether this change touches a file josh sync distributes",
|
|
@@ -1403,6 +1409,7 @@ var ALIASES = {
|
|
|
1403
1409
|
pt: "port",
|
|
1404
1410
|
i: "init",
|
|
1405
1411
|
sy: "sync",
|
|
1412
|
+
rmi: "registry:migrate",
|
|
1406
1413
|
sys: "sync:scope",
|
|
1407
1414
|
g: "git",
|
|
1408
1415
|
gp: "pr",
|
package/package.json
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.881.0",
|
|
3
3
|
"name": "@joshuafolkken/kit",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/joshuafolkken/kit.git"
|
|
9
|
+
},
|
|
6
10
|
"engines": {
|
|
7
11
|
"node": ">=22.19.0"
|
|
8
12
|
},
|
|
@@ -166,4 +170,4 @@
|
|
|
166
170
|
"build": "tsx scripts/build/build-bin.ts && tsx scripts/build/build-hooks.ts && tsx scripts/build/build-version.ts && tsx scripts/build/build-config-merge.ts && tsx scripts/build/build-managed-marker.ts && tsx scripts/build/build-self-sync-guard.ts && tsx scripts/build/build-claude-md.ts",
|
|
167
171
|
"josh": "tsx scripts/josh/josh.ts"
|
|
168
172
|
}
|
|
169
|
-
}
|
|
173
|
+
}
|
|
@@ -17,11 +17,11 @@ const ESLINT_PACKAGE_PREFIX = `${KIT_PACKAGE_PATH_PREFIX}eslint/`
|
|
|
17
17
|
const GITHUB_REPO_BLOB_BASE = 'https://github.com/joshuafolkken/kit/blob/main/'
|
|
18
18
|
const GITHUB_REPO_TREE_BASE = 'https://github.com/joshuafolkken/kit/tree/main/'
|
|
19
19
|
|
|
20
|
-
// The
|
|
21
|
-
//
|
|
22
|
-
// dist/CLAUDE.md (build-claude-md.ts) rather than byte-copied at sync time, so a package update alone
|
|
23
|
-
// keeps the rules current (joshuafolkken/kit#1878).
|
|
20
|
+
// The consumer imports kit's published, already path-transformed rules. A tracked bootstrap note
|
|
21
|
+
// remains readable before installation, while the rule body stays in the package (kit#1878).
|
|
24
22
|
const CLAUDE_MD_IMPORT_LINE = '@node_modules/@joshuafolkken/kit/dist/CLAUDE.md'
|
|
23
|
+
const CLAUDE_MD_BOOTSTRAP =
|
|
24
|
+
'> Fresh checkout: if kit is not installed, run `pnpm install` first, then reread this file before doing any other work.'
|
|
25
25
|
|
|
26
26
|
// A span containing `*` is excluded: it is a **glob**, not a reference to a file a consumer can
|
|
27
27
|
// open. A distributed document that writes a directory set as `prompts/**` means "anything beneath
|
|
@@ -79,15 +79,18 @@ function transform_distributed_paths(content: string): string {
|
|
|
79
79
|
return transform_documentation_paths(with_tests)
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
// the line alone, a file already carrying it is returned untouched, and any other file keeps all its
|
|
85
|
-
// content with the import prepended. The substring check makes it idempotent.
|
|
82
|
+
// Keep the bootstrap note ahead of the import so an agent can read it in a fresh checkout. Preserve
|
|
83
|
+
// project additions and update older one-line files without duplicating either line.
|
|
86
84
|
function ensure_claude_md_import(existing: string | undefined): string {
|
|
87
|
-
if (existing === undefined) return `${CLAUDE_MD_IMPORT_LINE}\n`
|
|
88
|
-
if (existing.includes(CLAUDE_MD_IMPORT_LINE)) return existing
|
|
85
|
+
if (existing === undefined) return `${CLAUDE_MD_BOOTSTRAP}\n\n${CLAUDE_MD_IMPORT_LINE}\n`
|
|
89
86
|
|
|
90
|
-
|
|
87
|
+
if (existing.includes(CLAUDE_MD_IMPORT_LINE)) {
|
|
88
|
+
if (existing.includes(CLAUDE_MD_BOOTSTRAP)) return existing
|
|
89
|
+
|
|
90
|
+
return `${CLAUDE_MD_BOOTSTRAP}\n\n${existing}`
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return `${CLAUDE_MD_BOOTSTRAP}\n\n${CLAUDE_MD_IMPORT_LINE}\n\n${existing}`
|
|
91
94
|
}
|
|
92
95
|
|
|
93
96
|
const distributed_paths = {
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process'
|
|
2
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs'
|
|
3
|
+
import { tmpdir } from 'node:os'
|
|
4
|
+
import path from 'node:path'
|
|
5
|
+
import { git_location_environment } from '#scripts/git/git-location-environment'
|
|
6
|
+
|
|
7
|
+
interface HookResult {
|
|
8
|
+
status: number | null
|
|
9
|
+
stdout: string
|
|
10
|
+
stderr: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function create_partial_install(temporary_root: string): void {
|
|
14
|
+
const package_root = path.join(temporary_root, 'node_modules/@joshuafolkken/kit')
|
|
15
|
+
const hook_path = path.join(package_root, 'dist/hooks/pretool-guard.js')
|
|
16
|
+
|
|
17
|
+
mkdirSync(path.dirname(hook_path), { recursive: true })
|
|
18
|
+
writeFileSync(path.join(package_root, 'package.json'), '{}')
|
|
19
|
+
writeFileSync(hook_path, "process.stdout.write('guard ran')")
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function run_in_temporary_checkout(command: string, is_partial_install = false): HookResult {
|
|
23
|
+
const temporary_root = mkdtempSync(path.join(tmpdir(), 'kit-hook-bootstrap-'))
|
|
24
|
+
const git_environment = {
|
|
25
|
+
...process.env,
|
|
26
|
+
...git_location_environment.location_free_environment(),
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
try {
|
|
30
|
+
spawnSync('git', ['init', '-q'], {
|
|
31
|
+
cwd: temporary_root,
|
|
32
|
+
env: git_environment,
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
if (is_partial_install) create_partial_install(temporary_root)
|
|
36
|
+
|
|
37
|
+
const { status, stdout, stderr } = spawnSync('sh', ['-c', command], {
|
|
38
|
+
cwd: temporary_root,
|
|
39
|
+
encoding: 'utf8',
|
|
40
|
+
env: git_environment,
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
return { status, stdout, stderr }
|
|
44
|
+
} finally {
|
|
45
|
+
rmSync(temporary_root, { recursive: true, force: true })
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const hook_command_bootstrap = { run_in_temporary_checkout }
|
|
50
|
+
|
|
51
|
+
export { hook_command_bootstrap }
|
|
@@ -21,6 +21,9 @@ const BUNDLE_INVOCATION = `node ${claude_plugin_config.MARKETPLACE_PATH}/dist/jo
|
|
|
21
21
|
// The per-hook bundle directory a fresh clone builds, and where it lives inside the installed package.
|
|
22
22
|
const HOOK_BUNDLE_DIR = `${hook_launch.HOOK_DIST_DIR}/`
|
|
23
23
|
const CONSUMER_HOOK_BUNDLE_DIR = `${claude_plugin_config.MARKETPLACE_PATH}/${HOOK_BUNDLE_DIR}`
|
|
24
|
+
const CONSUMER_PACKAGE_MANIFEST = `${claude_plugin_config.MARKETPLACE_PATH}/package.json`
|
|
25
|
+
const MISSING_INSTALL_NOTICE = 'kit hooks inactive: run pnpm install, then reread CLAUDE.md'
|
|
26
|
+
const MISSING_INSTALL_GUARD = `if [ ! -f ${CONSUMER_PACKAGE_MANIFEST} ]; then echo '${MISSING_INSTALL_NOTICE}' >&2; exit 0; fi; `
|
|
24
27
|
const CODEX_ADAPTER_BUNDLE = `node ${CONSUMER_HOOK_BUNDLE_DIR}codex-hook-adapter.js`
|
|
25
28
|
const CODEX_HOOKS_DESTINATION = '.codex/hooks.json'
|
|
26
29
|
const CODEX_ROOT_PREFIX = String.raw`cd \"$(git rev-parse --show-toplevel)\" && `
|
|
@@ -43,11 +46,16 @@ function rebase_bundle_directory(value: string): string {
|
|
|
43
46
|
// independent whichever order they run. The fallback rewrite is idempotent too (`BUNDLE_INVOCATION`
|
|
44
47
|
// holds no `pnpm josh `), so the whole rewrite is safe to run more than once.
|
|
45
48
|
function rewrite_command_value(value: string): string {
|
|
46
|
-
|
|
49
|
+
const rewritten = rebase_bundle_directory(value)
|
|
47
50
|
.split(PNPM_JOSH_PREFIX)
|
|
48
51
|
.join(BUNDLE_INVOCATION)
|
|
49
52
|
.split(CODEX_ADAPTER_SOURCE)
|
|
50
53
|
.join(CODEX_ADAPTER_BUNDLE)
|
|
54
|
+
|
|
55
|
+
if (!rewritten.includes(claude_plugin_config.MARKETPLACE_PATH)) return rewritten
|
|
56
|
+
if (rewritten.includes(MISSING_INSTALL_GUARD)) return rewritten
|
|
57
|
+
|
|
58
|
+
return `${MISSING_INSTALL_GUARD}${rewritten}`
|
|
51
59
|
}
|
|
52
60
|
|
|
53
61
|
function rewrite_hook_commands(content: string, is_codex = false): string {
|
|
@@ -13,15 +13,9 @@ const DEV_ENGINES_VALUE = {
|
|
|
13
13
|
packageManager: { name: 'pnpm', version: '>=12.1.0', onFail: 'error' },
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
//
|
|
17
|
-
//
|
|
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.
|
|
16
|
+
// New projects resolve kit from public npm. Existing registry and auth lines remain untouched
|
|
17
|
+
// by merge_npmrc so consumers of other GitHub Packages can migrate separately.
|
|
23
18
|
const NPMRC_LINES: ReadonlyArray<string> = [
|
|
24
|
-
'@joshuafolkken:registry=https://npm.pkg.github.com',
|
|
25
19
|
'engine-strict=true',
|
|
26
20
|
'minimum-release-age=1440',
|
|
27
21
|
'confirmModulesPurge=false',
|
|
@@ -102,6 +102,7 @@ exports[`COMMAND_MAP — reference metadata > keeps every canonical command and
|
|
|
102
102
|
"rh": "run:hold",
|
|
103
103
|
"rl": "report:lint",
|
|
104
104
|
"rmg": "run:merge",
|
|
105
|
+
"rmi": "registry:migrate",
|
|
105
106
|
"rn": "run:next",
|
|
106
107
|
"rp": "run:prep",
|
|
107
108
|
"rpy": "repo:party",
|
|
@@ -787,6 +788,15 @@ exports[`COMMAND_MAP — reference metadata > keeps every canonical command and
|
|
|
787
788
|
"processes",
|
|
788
789
|
],
|
|
789
790
|
],
|
|
791
|
+
"registry:migrate": [
|
|
792
|
+
"",
|
|
793
|
+
"developer",
|
|
794
|
+
[
|
|
795
|
+
"files",
|
|
796
|
+
"network",
|
|
797
|
+
"processes",
|
|
798
|
+
],
|
|
799
|
+
],
|
|
790
800
|
"release": [
|
|
791
801
|
"[version]",
|
|
792
802
|
"maintainer",
|