Skip to content

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

Draft
raphaelvigee wants to merge 1 commit into
masterfrom
raphaelvigee/feat-plugin-js-m0-m1-install
Draft

feat(plugin-js): scaffold JS/TS plugin, hermetic js_install driver#361
raphaelvigee wants to merge 1 commit 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 💬

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 changed the title raphaelvigee/feat plugin js m0 m1 install feat(plugin-js): scaffold JS/TS plugin, hermetic js_install driver Aug 5, 2026
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