Skip to content

feat(plugin-js): scaffold JS/TS plugin, hermetic js_install driver - #361

Open
raphaelvigee wants to merge 6 commits into
masterfrom
raphaelvigee/feat-plugin-js-m0-m1-install
Open

feat(plugin-js): scaffold JS/TS plugin, hermetic js_install driver#361
raphaelvigee wants to merge 6 commits into
masterfrom
raphaelvigee/feat-plugin-js-m0-m1-install

Conversation

@raphaelvigee

@raphaelvigee raphaelvigee commented Aug 5, 2026

Copy link
Copy Markdown
Member

M0+M1 of the JS/TS heph plugin plan (part 1/6 of the stack).

First-party JS/TS ecosystem plugin, mirroring the plugin-go/plugin-go-cdylib two-crate split (logic crate + thin stabby cdylib wrapper — a loadable dylib, not a compiled-in builtin).

  • Provider: package.json discovery, pnpm-workspace.yaml + npm "workspaces" member resolution.
  • js_install: hermetic per-(name,version,integrity) dependency fetch, SRI verification, platform baked into the cache key, postinstall scripts off by default with an explicit allowlist enforced before any network I/O.

Reviewed by feature-quality/code-quality/hermeticity; a tar-slip symlink escape and an uncacheable (host-toolchain-dependent) lifecycle-script hash were found and fixed, each with a regression test.

Test plan

  • cargo build -p plugin-js -p plugin-js-cdylib
  • cargo test -p plugin-js
  • cargo clippy -p plugin-js -p plugin-js-cdylib --all-targets -- -D warnings
  • cargo fmt --check -p plugin-js -p plugin-js-cdylib

Stack created with GitHub Stacks CLIGive Feedback 💬

@raphaelvigee raphaelvigee changed the title raphaelvigee/feat plugin js m0 m1 install feat(plugin-js): scaffold JS/TS plugin, hermetic js_install driver Aug 5, 2026
@raphaelvigee
raphaelvigee force-pushed the raphaelvigee/feat-plugin-js-m0-m1-install branch from 10971d3 to 9eb8ec5 Compare August 7, 2026 11:21
@raphaelvigee
raphaelvigee marked this pull request as ready for review August 7, 2026 12:57
@raphaelvigee
raphaelvigee force-pushed the raphaelvigee/feat-plugin-js-m0-m1-install branch from 9eb8ec5 to 097f8a5 Compare August 7, 2026 12:58
First-party JS/TS ecosystem plugin (M0+M1), mirroring the plugin-go /
plugin-go-cdylib two-crate split (logic crate + thin stabby cdylib wrapper).

- Provider: package.json discovery, pnpm-workspace.yaml + npm "workspaces"
  member resolution.
- js_install: hermetic per-(name,version,integrity) dependency fetch, SRI
  verification, platform baked into the cache key, postinstall scripts off
  by default with an explicit allowlist enforced before any network I/O.

Reviewed by feature-quality/code-quality/hermeticity; a tar-slip symlink
escape and an uncacheable (host-toolchain-dependent) lifecycle-script hash
were found and fixed, each with a regression test.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M3wZfyPsG8stfRQuybLRjN
@raphaelvigee
raphaelvigee force-pushed the raphaelvigee/feat-plugin-js-m0-m1-install branch from 097f8a5 to 4e305ba Compare August 7, 2026 13:28
raphaelvigee and others added 5 commits August 7, 2026 16:06
Temporary, will be reverted once the real cause is identified. Prints
what `cargo update` would change in CI's actual environment before the
--locked build, since every local reproduction attempt (native darwin,
explicit --target, full --workspace, cleared cache forcing a fresh
index) succeeds while CI fails identically and fast on every retry.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M3wZfyPsG8stfRQuybLRjN
…ke --locked builds

Revert the temporary CI diagnostics now that the root cause is confirmed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant