Skip to content

chore(proof-interceptor): install from the root npm workspace - #1008

Open
ofir-starkware wants to merge 2 commits into
ofir/npm-workspace-sdk-clientfrom
ofir/npm-workspace-proof-interceptor
Open

ofir-starkware wants to merge 2 commits into
ofir/npm-workspace-sdk-clientfrom
ofir/npm-workspace-proof-interceptor

Conversation

@ofir-starkware

@ofir-starkware ofir-starkware commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Stacked on #1007 (PR 2 of the npm-workspace stack).

What

  • Adds proof-interceptor to the root workspace. Its SDK dependency changes from file:../sdk to ^0.14.3-rc.8, which npm resolves by linking the local sdk/.
  • Merges proof-interceptor/package-lock.json into the root lockfile, adding no package versions that weren't already locked. starknet stays a single shared copy. 100 entries that conflict with versions already hoisted at the root stay under proof-interceptor/node_modules.
  • Dockerfile: one npm ci -w sdk -w proof-interceptor, then build and prune both. The image drops from 339 MB to 291 MB.
  • CI:
    • proxy-ci installs from the root.
    • e2e-devnet builds the interceptor with npm run build -w proof-interceptor.
    • The path filters in proxy-ci and proof-interceptor-docker now include the root package.json and lockfile.

Why

Verification

  • Fresh root npm ci works.
  • sdk: build and lint pass, and test:fast passes 27/27 files.
  • client: build and lint pass, and tests pass 66/66.
  • proof-interceptor: build and lint pass, and tests pass 200/200.
  • Docker image builds, /health returns 200, and dev dependencies are confirmed pruned.
  • E2E devnet suite, run locally: 15/15 files, 28/28 tests.

🤖 Generated with Claude Code


This change is Reviewable

Comment thread package-lock.json
"dev": true,
"license": "MIT"
},
"proof-interceptor/node_modules/vite": {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

High severity vulnerability may affect your project—review required:
Line 9625 lists a dependency (vite) with a known High severity vulnerability.

ℹ️ Why this matters

Affected versions of vite and vite-plus are vulnerable to Exposure of Sensitive Information to an Unauthorized Actor / Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'). Vite's server.fs.deny blocklist—which protects sensitive files such as .env and certificate files from being served—can be bypassed on Windows using alternate path representations (NTFS Alternate Data Stream syntax like /.env::$DATA?raw, or 8.3 short filenames), allowing an attacker to read otherwise-denied files when the dev server is exposed to the network.

References: https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-38303, GHSA, CVE

To resolve this comment:
Check if you expose the Vite dev server or vite-plus to the network by configuring a non-loopback address using the --host CLI flag on Windows.

  • If you're affected, upgrade this dependency to at least version 6.4.3 at package-lock.json.
  • If you're not affected, comment /fp we don't use this [condition]
💬 Ignore this finding

To ignore this, reply with:

  • /fp <comment> for false positive
  • /ar <comment> for acceptable risk
  • /other <comment> for all other reasons

You can view more details on this finding in the Semgrep AppSec Platform here.

Comment thread package-lock.json
@@ -6160,6 +7302,16 @@
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
"node_modules/tinypool": {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Critical severity vulnerability introduced by a package you're using:
Line 7305 lists a dependency (tinypool) with a known Critical severity vulnerability. Fixing requires upgrading or replacing the dependency.

ℹ️ Why this matters

Affected versions of tinypool are vulnerable to Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution'). Tinypool builds worker options by spreading them into a plain object, so inherited properties from a polluted Object.prototype (such as execArgv or env.NODE_OPTIONS) are passed to every spawned worker. An attacker who can pollute Object.prototype anywhere in the process can gain arbitrary code execution in all pool workers, including those created internally by Vitest.

References: https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-91718, GHSA, CVE

To resolve this comment:
Upgrade this dependency to at least version 2.1.1 at package-lock.json.

💬 Ignore this finding

To ignore this, reply with:

  • /fp <comment> for false positive
  • /ar <comment> for acceptable risk
  • /other <comment> for all other reasons

You can view more details on this finding in the Semgrep AppSec Platform here.

Comment thread package-lock.json
}
}
},
"proof-interceptor/node_modules/vitest": {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Critical severity vulnerability may affect your project—review required:
Line 9701 lists a dependency (vitest) with a known Critical severity vulnerability.

ℹ️ Why this matters

Affected versions of vitest are vulnerable to Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') / Missing Authorization. When the Vitest UI server is listening, the deprecated isFileServingAllowed check is applied without normalizing the URL before filesystem operations, allowing path traversal that lets an attacker read, write, and execute arbitrary files outside the project directory.

References: https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-44391, GHSA, CVE

To resolve this comment:
Check if you run the Vitest UI on Windows, or you expose the Vitest UI server to the network with the --api.host flag or api.host config option.

  • If you're affected, upgrade this dependency to at least version 3.2.6 at package-lock.json.
  • If you're not affected, comment /fp we don't use this [condition]
💬 Ignore this finding

To ignore this, reply with:

  • /fp <comment> for false positive
  • /ar <comment> for acceptable risk
  • /other <comment> for all other reasons

You can view more details on this finding in the Semgrep AppSec Platform here.

@ofir-starkware
ofir-starkware added this pull request to stack #1010 October 19, 2026 11:25
@ofir-starkware
ofir-starkware force-pushed the ofir/npm-workspace-proof-interceptor branch from 689d756 to 4112d0b Compare October 19, 2026 12:03
@ofir-starkware
ofir-starkware force-pushed the ofir/npm-workspace-proof-interceptor branch from 4112d0b to 29b2d96 Compare October 19, 2026 12:24
Add proof-interceptor to the root workspace: its SDK dependency becomes a
semver range linked to the local sdk/, and its lockfile merges into the root
one without introducing new package versions.

The Docker image now installs sdk and proof-interceptor with one workspace
npm ci. proxy-ci and e2e-devnet install from the root, and the proxy-ci and
proof-interceptor-docker path filters cover the root manifests the build reads.

(via claude code)
…he image's install layer

proof-interceptor is private and only ever consumes the in-repo SDK, so it
depends on it with "*", which links sdk/ whatever version it carries.

The Dockerfile copies only the root, sdk and proof-interceptor manifests
before `npm ci`, then the sources, so a source edit no longer reruns the
install. The other members' manifests turned out to be unnecessary, so the
client manifest copy is dropped. proxy-ci installs only the sdk and
proof-interceptor members.

(via claude code)
@ofir-starkware
ofir-starkware force-pushed the ofir/npm-workspace-proof-interceptor branch from 29b2d96 to 1960724 Compare October 19, 2026 12:41
@ofir-starkware
ofir-starkware marked this pull request as ready for review October 19, 2026 12:55
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