fix(agentex-ui): bump sharp 0.34.3 -> 0.35.3 (GHSA-f88m-g3jw-g9cj) - #371
Merged
Merged
Conversation
sharp <0.35.0 inherits four libvips CVEs (CVE-2026-33327, CVE-2026-33328, CVE-2026-35590, CVE-2026-35591) via GHSA-f88m-g3jw-g9cj (HIGH). sharp 0.35.0+ bundles the fixed libvips 8.18.3. sharp is a transitive optionalDependency of next@15.5.18 (declared ^0.34.3). Pinned via npm overrides to ^0.35.0, which resolves to 0.35.3 (libvips 1.3.2 = 8.18.3). next 15.5.18's image-optimizer only calls sharp(buffer, { limitInputPixels, sequentialRead }); none of the APIs removed in 0.35.0 (failOnError, paletteBitDepth, format.jp2k) are used, and the app declares no direct sharp/next-image usage. npm ci and tsc --noEmit pass. Resolves GFDVR-20651 / GFDVR-20652.
scale-ballen
enabled auto-merge (squash)
July 22, 2026 16:18
deepthi-rao-scale
approved these changes
Jul 28, 2026
danielmillerp
approved these changes
Jul 28, 2026
scale-ballen
disabled auto-merge
July 28, 2026 18:29
Y4NN777
pushed a commit
to Y7-Labs/scale-agentex
that referenced
this pull request
Aug 26, 2026
…api#254) > **Stacked on [scaleapi#286](scaleapi#286 (isolate docs build from the workspace lock) — merge that first. This PR is only the doc-path changes; scaleapi#286 makes the doc build resolve `agentex-sdk>=0.12.0` in an isolated env, so `agentex.protocol.*` resolves without touching backend deps. ## Summary Updates the agentex mkdocs site to use the new canonical `agentex.protocol.acp` import paths for protocol-shape types (`RPCMethod`, `CreateTaskParams`, `SendMessageParams`, `SendEventParams`, `CancelTaskParams`). Companion to [scaleapi/scale-agentex-python#371](scaleapi/scale-agentex-python#371), which moved these types out of `agentex.lib.types.*` into the new slim-safe `agentex.protocol.*` package. The old path still works via a back-compat shim — this PR isn't fixing a breakage, it's making sure scaffolded user code following these docs starts on the canonical path. Requested in [a review comment on scaleapi#371](scaleapi/scale-agentex-python#371 (review)). ## Changes 10 markdown files in `agentex/docs/`: | Pattern | Count | |---|---| | `from agentex.lib.types.acp import ...` → `from agentex.protocol.acp import ...` | 8 code samples | | `::: agentex.lib.types.acp.X` → `::: agentex.protocol.acp.X` | 2 mkdocstrings cross-refs (in `agent_types/sync.md` and `api/types.md`) | No content / behavior changes; same classes, new import path. ## What's not touched Other `agentex.lib.types.*` modules (`tracing`, `agent_card`, `credentials`, `fastacp`, `llm_messages`, `converters`) stay on the old path because they have heavier transitive deps and weren't migrated by scaleapi#371. No doc references to those needed updates. ## Test plan - [x] Isolated `mkdocs build` renders green against `agentex-sdk` 0.12.0 (verified locally via the scaleapi#286 build path). - [x] `::: agentex.protocol.acp.*` mkdocstrings directives resolve at the new path. 🧑💻🤖 — posted via [Claude Code](https://claude.com/claude-code) <!-- claude-code --> <!-- greptile_comment --> <h3>Greptile Summary</h3> This PR updates 10 documentation markdown files to use the new canonical `agentex.protocol.acp` import paths, replacing the old `agentex.lib.types.acp` references in both Python code samples and mkdocstrings directives. - Replaces `from agentex.lib.types.acp import ...` with `from agentex.protocol.acp import ...` in 10 code sample blocks across 8 files. - Updates 13 mkdocstrings `::: agentex.lib.types.acp.X` directives to `::: agentex.protocol.acp.X` across 5 files, covering `CreateTaskParams`, `SendMessageParams`, `SendEventParams`, and `CancelTaskParams`. - A grep confirms no remaining `agentex.lib.types.acp` references exist anywhere in the docs tree after this PR. <details><summary><h3>Confidence Score: 5/5</h3></summary> Safe to merge — purely mechanical doc path updates with no remaining old-path references in the docs tree. All 23 occurrences of agentex.lib.types.acp across 10 files have been correctly replaced with agentex.protocol.acp. A grep of the entire docs directory confirms zero leftover old-path references. No logic, behavior, or non-doc files are touched. No files require special attention. </details> <h3>Important Files Changed</h3> | Filename | Overview | |----------|----------| | agentex/docs/docs/api/types.md | 4 mkdocstrings directives updated from old to new canonical path; no issues. | | agentex/docs/docs/agent_types/async/base.md | 1 import and 3 mkdocstrings directives updated; no issues. | | agentex/docs/docs/agent_types/async/temporal.md | 1 import and 2 mkdocstrings directives updated; no issues. | | agentex/docs/docs/acp/agentic/base.md | 3 mkdocstrings directives updated; no issues. | | agentex/docs/docs/getting_started/project_structure.md | 3 import statements updated across different agent-type examples; no issues. | | agentex/docs/docs/agent_types/sync.md | 1 import and 1 mkdocstrings directive updated; no issues. | | agentex/docs/docs/api/overview.md | 1 import statement updated; no issues. | | agentex/docs/docs/concepts/streaming.md | 1 import statement updated; no issues. | | agentex/docs/docs/acp/agentic/temporal.md | 1 import statement updated; no issues. | | agentex/docs/docs/temporal_development/openai_integration.md | 1 import statement updated; no issues. | </details> <details><summary><h3>Flowchart</h3></summary> ```mermaid %%{init: {'theme': 'neutral'}}%% flowchart TD A["Doc code samples & mkdocstrings refs\n(10 markdown files)"] --> B{"Import path"} B -- "Before" --> C["agentex.lib.types.acp\n(back-compat shim)"] B -- "After" --> D["agentex.protocol.acp\n(canonical path)"] D --> E["CreateTaskParams"] D --> F["SendMessageParams"] D --> G["SendEventParams"] D --> H["CancelTaskParams"] ``` </details> <sub>Reviews (5): Last reviewed commit: ["docs(agentex): use canonical agentex.pro..."](scaleapi@5a42081) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=34170925)</sub> <!-- /greptile_comment --> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Remediates GHSA-f88m-g3jw-g9cj (HIGH) in
sharp, reported by Trivy against theagentex-uiimage.sharp< 0.35.0 inherits four libvips vulnerabilities:sharp0.35.0+ bundles the fixed libvips 8.18.3.sharp@img/sharp-libvips-*)Change
sharpis a transitiveoptionalDependencyofnext@15.5.18(declared^0.34.3, which caps at<0.35.0). It is not a direct dependency and is not imported by application code. It is pinned via the existing npmoverridesblock inagentex-ui/package.json:^0.35.0resolves to the current latest0.35.3.agentex-ui/package-lock.jsonwas regenerated with npm 10 (matching CI's Node 20 toolchain); the diff is strictly thesharptransitive closure (the@img/sharp-*platform binaries,@img/sharp-libvips-*,@img/colourreplacingcolor, and sharp's ownsemver/detect-libcfloor bumps). NolockfileVersion/format migration, no file-mode changes, no application-code changes.Transitive-pin safety
next@15.5.18's image optimizer instantiates sharp assharp(buffer, { limitInputPixels, sequentialRead })— neither option was removed in 0.35.0. The APIs removed in 0.35.0 (failOnErrorconstructor prop,paletteBitDepthmetadata,format.jp2krename) are not used by next 15.5.18, and the app declares no directsharpusage nornext/imageusage. sharp 0.35.0 requires Node ≥ 20.9.0, satisfied by thenode:20-trixie-slimbuild/runtime base.Validation
npm ciinagentex-ui/— passes (lockfile in sync; CI's exact install gate)npm run typecheck(tsc --noEmit) — passessharpand its closure changed;colorfamily removed cleanly (was consumed only by sharp)Linear
Resolves GFDVR-20651 — [Trivy] Remediate sharp vulnerabilities
Covers child GFDVR-20652 — GHSA-f88m-g3jw-g9cj in sharp@0.34.3
🤖 Generated with Claude Code
Greptile Summary
Remediates GHSA-f88m-g3jw-g9cj (HIGH) by bumping the transitive
sharpdependency from 0.34.3 to 0.35.3, which bundles libvips 8.18.3 and fixes four libvips CVEs (CVE-2026-33327, -33328, -35590, -35591). The pin is applied via npmoverridesinpackage.json, which is the appropriate mechanism for transitive-only dependencies.package.json: Adds"sharp": "^0.35.0"to the existingoverridesblock alongside the existingcross-spawn,postcss, andtaroverrides.package-lock.json: All@img/sharp-*platform binaries move from 0.34.3 → 0.35.3 and@img/sharp-libvips-*from 1.2.0 → 1.3.2;coloris cleanly replaced by@img/colour; minor floor bumps todetect-libcandsemver. No application code orlockfileVersionchanges.Confidence Score: 5/5
Safe to merge — this is a targeted transitive dependency pin with no application code changes and a well-scoped lockfile diff.
The change is limited to a transitive
sharpbump via npmoverrides. No application code is touched, the lockfile diff is internally consistent (all@img/sharp-*and@img/sharp-libvips-*entries move together), and the removedcolorpackage is correctly replaced by@img/colouras expected in sharp 0.35.x. The new Node ≥ 20.9.0 engine constraint is satisfied by the project's existingnode:20runtime base.Files Needing Attention: No files require special attention.
Important Files Changed
"sharp": "^0.35.0"to the existing npmoverridesblock — the correct mechanism for pinning a transitive optional dependency without declaring it as a direct dependency.sharp0.34.3 → 0.35.3 and the full transitive closure:@img/sharp-*platform binaries bumped to 0.35.3,@img/sharp-libvips-*to 1.3.2,colorreplaced by@img/colour,detect-libc2.0.4 → 2.1.2,semver7.7.2 → 7.8.5, and new platform entries added (riscv64, freebsd-wasm32, webcontainers-wasm32). Changes are internally consistent and scoped exclusively to the sharp closure.Reviews (2): Last reviewed commit: "Merge branch 'main' into scale-prodsec/g..." | Re-trigger Greptile