@shriyanss/js-recon 1.4.1-alpha.6 → 1.4.1-alpha.7
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.
|
@@ -55,13 +55,20 @@ jobs:
|
|
|
55
55
|
prettier:
|
|
56
56
|
runs-on: ubuntu-latest
|
|
57
57
|
needs: audit
|
|
58
|
+
environment: commit-signing
|
|
58
59
|
steps:
|
|
59
60
|
- name: Checkout
|
|
60
61
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
61
62
|
with:
|
|
62
63
|
# Make sure the action checks out the repository to the pull request branch
|
|
63
64
|
ref: ${{ github.ref_name }}
|
|
64
|
-
|
|
65
|
+
|
|
66
|
+
- name: Configure SSH commit signing
|
|
67
|
+
uses: shriyanss/verified-commit-action@v1
|
|
68
|
+
with:
|
|
69
|
+
ssh-private-key: ${{ secrets.JS_RECON_SIGNING_KEY }}
|
|
70
|
+
commit-name: "js-recon-bot"
|
|
71
|
+
commit-email: ${{ secrets.JS_RECON_SIGNING_EMAIL }}
|
|
65
72
|
|
|
66
73
|
- name: Set up Node.js
|
|
67
74
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
@@ -77,14 +84,12 @@ jobs:
|
|
|
77
84
|
|
|
78
85
|
- name: Run Prettier
|
|
79
86
|
run: prettier --write . --config .prettierrc
|
|
80
|
-
|
|
87
|
+
|
|
81
88
|
- name: Remove node_modules
|
|
82
89
|
run: rm -rf node_modules
|
|
83
90
|
|
|
84
91
|
- name: Commit and push changes
|
|
85
92
|
run: |
|
|
86
|
-
git config user.name "github-actions[bot]"
|
|
87
|
-
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
88
93
|
git add .
|
|
89
94
|
git commit -m "chore: prettify code" || echo "No changes to commit"
|
|
90
95
|
git push
|
|
@@ -31,7 +31,6 @@ jobs:
|
|
|
31
31
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
32
32
|
with:
|
|
33
33
|
repository: shriyanss/homebrew-tap
|
|
34
|
-
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
|
|
35
34
|
path: homebrew-tap
|
|
36
35
|
|
|
37
36
|
- name: Update formula fields
|
|
@@ -57,6 +56,7 @@ jobs:
|
|
|
57
56
|
|
|
58
57
|
publish-docker:
|
|
59
58
|
runs-on: ubuntu-latest
|
|
59
|
+
environment: docker-publish
|
|
60
60
|
steps:
|
|
61
61
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
62
62
|
- name: Build and push to dockerhub
|
|
@@ -89,15 +89,19 @@ jobs:
|
|
|
89
89
|
needs:
|
|
90
90
|
- publish-npm
|
|
91
91
|
runs-on: ubuntu-latest
|
|
92
|
+
environment: commit-signing
|
|
92
93
|
steps:
|
|
93
94
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
94
95
|
with:
|
|
95
|
-
ssh-key: ${{ secrets.DEPLOY_KEY }}
|
|
96
96
|
fetch-depth: 0
|
|
97
|
+
- name: Configure SSH commit signing
|
|
98
|
+
uses: shriyanss/verified-commit-action@v1
|
|
99
|
+
with:
|
|
100
|
+
ssh-private-key: ${{ secrets.JS_RECON_SIGNING_KEY }}
|
|
101
|
+
commit-name: "js-recon-bot"
|
|
102
|
+
commit-email: ${{ secrets.JS_RECON_SIGNING_EMAIL }}
|
|
97
103
|
- name: Merge main and dev
|
|
98
104
|
run: |
|
|
99
|
-
git config --global user.name 'github-actions[bot]'
|
|
100
|
-
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
|
|
101
105
|
git fetch origin main:main
|
|
102
106
|
git fetch origin dev:dev
|
|
103
107
|
git checkout dev
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 1.4.1-alpha.7 - (unreleased)
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- CI: bot commits (`chore: prettify code`, `chore: merge changes after release vX.Y.Z`) are now cryptographically signed via SSH (using [`shriyanss/verified-commit-action`](https://github.com/shriyanss/verified-commit-action)) and show as "Verified" on GitHub, under a dedicated `js-recon-bot` identity. The signing key is scoped to a `commit-signing` GitHub Environment so it's only readable by the jobs that need it, not the whole repo. `promote-js-recon.yml`'s Docker/GHCR publish job now reads `DOCKER_SECRET` from a similarly scoped `docker-publish` environment, and the Homebrew tap job no longer references a token secret. (`ci`)
|
|
8
|
+
|
|
3
9
|
## 1.4.1-alpha.6 - 2026-07-13
|
|
4
10
|
|
|
5
11
|
### Changed
|
package/CLAUDE.md
CHANGED
|
@@ -350,6 +350,16 @@ Releasing a new version touches three repos. Work on `dev` (js-recon, js-recon-r
|
|
|
350
350
|
|
|
351
351
|
**Ordering is critical**: release js-recon first (including the GitHub release so CI publishes it to npm), then snapshot and PR js-recon-docs. This ensures the docs `version_check` CI step passes instead of failing due to a missing npm package.
|
|
352
352
|
|
|
353
|
+
### Overview: automated stage → human approve → human-triggered promote
|
|
354
|
+
|
|
355
|
+
npm's OIDC trusted publishing for this package is scoped to **`npm stage publish`**, not direct `npm publish`. That means every js-recon release has three distinct phases, only the first of which Claude can execute unattended:
|
|
356
|
+
|
|
357
|
+
1. **Automated (Claude does this end-to-end):** bump version, update CHANGELOG, open and merge the `dev`→`main` PR (after CI is green and the user gives merge approval — never merge without it), create the GitHub release. That release triggers `publish-js-recon.yml`, which runs `version_check` → `audit` → `build` → `publish-npm` (stages to npm via OIDC, no token) → `merge_main_and_dev` — all fully automatic, no human input needed.
|
|
358
|
+
2. **Human-only (cannot be scripted or delegated):** npm requires interactive 2FA to promote a staged package to actually live on the registry. Claude reports the stage id and waits; the user runs `npm stage approve <stage-id>` (or clicks "Approve" on npmjs.com) themselves, on their own machine or browser.
|
|
359
|
+
3. **Human-triggered, then Claude drives it:** once the user confirms the package is live (e.g. "I've published on npm" / "go ahead"), Claude runs `gh workflow run promote-js-recon.yml -f version=<version>` and watches it to completion. This workflow (Homebrew tap, Docker, GHCR) installs from the published npm artifact rather than git source, so it can only run correctly after step 2 — that's why it's a separate manually-triggered workflow instead of chained onto `publish-js-recon.yml`.
|
|
360
|
+
|
|
361
|
+
The detailed step-by-step is below; the numbering restarts at 10 for the docs phase since it's a separate concern from the npm/GitHub release phase.
|
|
362
|
+
|
|
353
363
|
### When a user asks to prepare a release
|
|
354
364
|
|
|
355
365
|
Before writing any files, gather the current state:
|
package/build/globalConfig.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const githubURL = "https://github.com/shriyanss/js-recon";
|
|
2
2
|
const modulesDocs = "https://js-recon.io/docs/category/modules";
|
|
3
|
-
const version = "1.4.1-alpha.
|
|
3
|
+
const version = "1.4.1-alpha.7";
|
|
4
4
|
const toolDesc = "JavaScript Enumeration and SAST";
|
|
5
5
|
const axiosNonHttpMethods = ["isAxiosError"]; // methods available in axios, which are not for making HTTP requests
|
|
6
6
|
let CONFIG = {
|