Dependency integration contracts
September 17, 2026 ยท View on GitHub
See DEPENDENCIES.md for the generated package inventory and bundled license notices. This guide describes behavior that dependency upgrades must preserve.
Results and patch review
Pierre Diffs renders highlighted unified and split patches with wrapping and virtualization. Preserve access to the original patch when parsing or loading fails. Rendering must not change integration approval or Git mutation safeguards.
Streamdown renders incomplete streaming Markdown in task results. Preserve safe external-link handling and HTML exclusion. Static release notes and connection documentation use react-markdown.
Images in task Markdown render as explicit Open image actions. They do not load remote resources while rendering results. Only HTTP(S) image links can be opened, through the existing external-link handler; data and file images remain text. Preserve this boundary when changing Markdown plugins or components.
The pinned @streamdown/code patch keys highlighted results by the complete input
tuple. The upstream key used the language, themes, length and ends of a block,
allowing different middle content to reuse stale tokens. Keep the regression test
that reconstructs highlighted text after an equal-length middle edit. Remove the
patch only when an upgraded dependency passes that test.
Shiki uses its JavaScript regex engine under the production script-src 'self'
policy. Do not add eval or WebAssembly permissions for highlighting. Use the
resolved brand appearance for code colors, including previews and clock changes.
Keep one compatible Shiki version across renderers. Grammars load on demand but
still increase distribution size; measure packaged size when changing bundles.
The desktop bundle retains every language and only its existing GitHub light/dark code themes. Markdown uses a view-owned worker with a shared highlighter and a bounded renderer cache keyed by complete options. Large patch parsing and diff highlighting use workers; retain original-patch access on failure. The upstream cache regression stays as a dependency check, and the production browser fixture checks the active renderer. See performance checks.
Repository analysis
The notify watcher invalidates an open codebase view after debounced source changes. Preserve generated-file filtering, subscription bounds and cleanup. Manual refresh and focus invalidation remain available when watching fails. Branch monitors continue to observe committed Git content.
gix performs read-only readiness checks with isolated configuration and repository trust checks. Preserve Git CLI fallback and tests for SHA-1, SHA-256, packed refs, detached HEAD and linked worktrees. Mutations, integration and worktree cleanup continue through the existing guarded Git command paths.
Browser accessibility
The bundled agent-browser exposes axe-core through browser_inspect with
kind: "accessibility". MCP and HTTP calls retain bounded reports as validation
evidence. Preserve axe-core's bundled license and corresponding-source notice;
see browser automation.
Verification
Keep @types/node aligned with the Node 26 runtime declared in package.json
and CI. The Cloudflare Vitest plugin requires Vitest 4; upgrade the test runner
only when the plugin's peer dependencies support the new major.
Dependabot groups npm and Actions minor/patch updates and Rust patch updates to
reduce competing lockfile changes. Review larger upgrades separately. Keep the
direct windows, windows-collections and windows-future crates on the same
Windows bindings generation; they exchange types through windows-core.
Update @pierre/diffs manually together with its version-specific pnpm patch;
Dependabot cannot rebase that patch. Keyring major upgrades also require manual
review of platform features and saved-credential compatibility. Dependabot skips
these version updates; dependency audits still check the installed versions.
The server's Workers and D1 integration tests have a 30-second per-test timeout to accommodate hosted Windows runner overhead while retaining a bounded failure for stalled requests. Test assertions and concurrent-delivery coverage still run.
pnpm check:dependencies checks JavaScript and Rust advisories. Install
cargo-audit 0.22.2 with cargo install cargo-audit --version 0.22.2 --locked.
The check fails on vulnerabilities and unreviewed warnings. The exact package,
version and advisory exceptions in scripts/security/dependency-policy.json
cover six upstream maintenance warnings in GTK and Unicode
tables. Reassess them when those dependency chains change.
The Linux GTK stack uses the local GLib patch for RUSTSEC-2024-0429 while retaining its compatible 0.18 API. Verification checks every retained file against its provenance manifest and checks that Cargo selects the patched source. CI also runs its iterator tests in an optimized Linux build. Remove the patch only when the resolved GTK dependency graph contains the fix.
Run the affected renderer, watcher, readiness and browser tests when upgrading
these dependencies, then pnpm verify. Check the production CSP, keyboard access,
themes, reduced motion and incomplete Markdown in the component lab. Native
platform and installed-agent acceptance require their separate checks.