Skip to content

update rust and node dependencies - #925

Merged
i386 merged 4 commits into
mainfrom
jd/update-rust-node-dependencies
Jun 30, 2026
Merged

update rust and node dependencies#925
i386 merged 4 commits into
mainfrom
jd/update-rust-node-dependencies

Conversation

@i386

@i386 i386 commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Refreshes Rust dependencies through Cargo's resolver and updates the workspace Cargo.lock.
  • Updates the maintained Node dependency surfaces for the public website and console UI, including npm and pnpm lockfiles.
  • Carries compatibility fixes for the updated UI/Rust dependency APIs: pdf.js render typing, widened TanStack AI message parts, scoped RMCP deprecation allowances, and updated ChatPage test synchronization.
  • Applies formatting changes produced by the newer Prettier version.

Impact

This keeps the project current on compatible Rust packages and latest Node packages for the website/UI while preserving existing behavior. The UI lockfile audits are clean for both pnpm and npm lock surfaces.

Validation

  • just website-build
  • just build
  • cargo fmt --all --check
  • cargo check -p mesh-llm-plugin
  • cargo clippy -p mesh-llm-plugin --all-targets -- -D warnings
  • cargo check -p mesh-llm-host-runtime
  • cargo clippy -p mesh-llm-host-runtime --all-targets -- -D warnings
  • cargo check -p mesh-llm
  • cargo clippy -p mesh-llm --all-targets -- -D warnings
  • pnpm run validate in crates/mesh-llm-ui
  • npm audit in website
  • pnpm audit in crates/mesh-llm-ui
  • npm audit --legacy-peer-deps in crates/mesh-llm-ui

Note: just build completed successfully but macOS local codesign trust setup still printed the existing local identity warning.

Summary by CodeRabbit

  • Bug Fixes

    • Improved PDF document cleanup and page rendering behavior for more reliable outputs.
    • Hardened chat rendering to safely handle unexpected (non-string) message content.
    • Fixed a configuration defaults mismatch so supported text controls work consistently.
  • Chores

    • Updated UI and website dependencies/tooling versions.
    • Included minor test, typing, and lint/formatting cleanups for consistency.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request is currently a draft. Reviews will not take place until the PR is marked as ready for review.

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@i386, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 31 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 39e157c2-3e95-42e5-bb9b-6e1704a20886

📥 Commits

Reviewing files that changed from the base of the PR and between a9f6021 and 694b1d4.

📒 Files selected for processing (2)
  • .github/workflows/pr_builds.yml
  • crates/mesh-llm-ui/src/features/chat/pages/ChatPage.test.tsx
📝 Walkthrough

Walkthrough

Adds deprecation-warning suppressions in Rust plugin code, updates UI type definitions and test helpers, adjusts PDF.js cleanup and rendering, and bumps package versions in the UI and website manifests.

Changes

Maintenance updates across Rust and UI code

Layer / File(s) Summary
#[allow(deprecated)] on MCP and plugin methods
crates/mesh-llm-host-runtime/src/plugin/mcp.rs, crates/mesh-llm-plugin/src/helpers.rs
Adds #[allow(deprecated)] before handle_request, handle_notification, get_info, and plugin_server_info_full to suppress deprecation warnings without changing logic.
TypeScript type corrections and union reformatting
crates/mesh-llm-ui/src/features/configuration/.../ConfigurationDefaultsControl.tsx, crates/mesh-llm-ui/src/features/chat/pages/ChatPage.tsx, crates/mesh-llm-ui/src/features/app-tabs/types.ts, crates/mesh-llm-ui/src/lib/api/types.ts, crates/mesh-llm-ui/src/features/dashboard/.../useTopologyCanvas.test.tsx, crates/mesh-llm-ui/src/features/dashboard/.../line-mesh.ts
Adds 'text' to SchemaControlKind; widens getMessageTextContent content typing to unknown; reformats several string-literal unions to single-line form; and adjusts a for-loop header’s whitespace.
PDF.js safe destruction and render fix
crates/mesh-llm-ui/src/lib/pdf.ts
Adds DestroyablePdfDocument and destroyPdfDocument for conditional cleanup, and includes canvas in page.render options.
ChatPage test mock state and assertion helper
crates/mesh-llm-ui/src/features/chat/pages/ChatPage.test.tsx
Updates sendMessage and reload mocks to keep conversation maps in sync, adds expectPartialAssistantReply() plus afterEach(cleanup), and replaces repeated placeholder assertions with the helper.
app-tabs test mock typing
crates/mesh-llm-ui/src/features/app-tabs/app-tabs.test.tsx
Updates createMatchMedia to use an explicitly typed MediaQueryList arrow function stub.
npm dependency bumps
crates/mesh-llm-ui/package.json, website/package.json
Bumps package versions in both manifests; no dependencies are added or removed.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

Suggested reviewers

  • michaelneale
  • ndizazzo
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 23.53% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: updating Rust and Node dependencies.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jd/update-rust-node-dependencies

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@i386 i386 changed the title [codex] update rust and node dependencies update rust and node dependencies Jun 30, 2026
@i386
i386 marked this pull request as ready for review June 30, 2026 02:29
@github-actions
github-actions Bot requested a review from ndizazzo June 30, 2026 02:29

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (4)
crates/mesh-llm-host-runtime/src/plugin/mcp.rs (3)

454-454: 📐 Maintainability & Code Quality | 🔵 Trivial

Add inline comment documenting the rmcp deprecation scope.

Same consideration as handle_request at Line 382. Document the specific rmcp deprecation being suppressed and the migration/ removal plan.

+    // TODO: Remove when rmcp <version> deprecated APIs are migrated (see PR #<number>)
     #[allow(deprecated)]
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/mesh-llm-host-runtime/src/plugin/mcp.rs` at line 454, The
#[allow(deprecated)] on the MCP plugin path needs an inline comment explaining
the specific rmcp deprecation being suppressed and the expected
migration/removal plan, matching the documentation style used in handle_request.
Update the surrounding code in mcp.rs near the relevant rmcp usage so the
suppression is clearly scoped and future maintainers can see what should replace
it and when it can be removed.

Source: Coding guidelines


382-382: 📐 Maintainability & Code Quality | 🔵 Trivial

Add inline comment documenting the rmcp deprecation scope.

The #[allow(deprecated)] suppression is justified for rmcp API compatibility, but future maintainers need context on what is deprecated and when it can be removed. As per coding guidelines, silencing warnings requires a clear reason documented in code. As per coding guidelines, Do not silence Rust warnings with #[allow(...)] unless there is a clear reason and the developer has asked for that tradeoff. The PR explicitly requests this tradeoff, but the code should still document the specific rmcp APIs involved and the migration path.

+    // TODO: Remove when rmcp <version> deprecated APIs are migrated (see PR #<number>)
     #[allow(deprecated)]
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/mesh-llm-host-runtime/src/plugin/mcp.rs` at line 382, Add a brief
inline comment directly above the `#[allow(deprecated)]` in `mcp.rs` explaining
that the suppression is only for rmcp compatibility, naming the deprecated rmcp
API surface being used in `McpHostPlugin`/related rmcp calls and noting the
condition for removal once the replacement API is adopted. Keep the allow scoped
as narrowly as possible and document the migration path so future maintainers
know exactly why the warning is silenced and when it can be deleted.

Source: Coding guidelines


1335-1335: 📐 Maintainability & Code Quality | 🔵 Trivial

Add inline comment documenting the rmcp ServerHandler trait deprecation.

This implements a deprecated rmcp::ServerHandler::get_info trait method; document the rmcp version and whether this is a temporary backward-compatibility measure or a permanent protocol-level requirement. As per coding guidelines, Do not silence Rust warnings with #[allow(...)] unless there is a clear reason and the developer has asked for that tradeoff. The PR requests this tradeoff, but the code should preserve the rationale for future protocol evolution decisions.

+    // TODO: Remove when rmcp ServerHandler no longer requires get_info or we bump minimum rmcp version
     #[allow(deprecated)]
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/mesh-llm-host-runtime/src/plugin/mcp.rs` at line 1335, The deprecated
rmcp ServerHandler::get_info usage is currently silenced without explaining the
tradeoff. In mcp.rs near the ServerHandler implementation, add an inline comment
documenting the rmcp version/deprecation context and whether this is a temporary
backward-compatibility shim or a permanent protocol requirement. Keep the
rationale close to the #[allow(deprecated)] on get_info so future maintainers
can understand why the warning is intentionally suppressed.

Source: Coding guidelines

crates/mesh-llm-plugin/src/helpers.rs (1)

188-188: 📐 Maintainability & Code Quality | 🔵 Trivial

Add inline comment documenting the rmcp deprecation scope.

The #[allow(deprecated)] on plugin_server_info_full suppresses warnings from deprecated rmcp builder APIs used in the function body. Document the specific rmcp APIs and the plan for migration or removal. As per coding guidelines, Do not silence Rust warnings with #[allow(...)] unless there is a clear reason and the developer has asked for that tradeoff. The PR requests this tradeoff, but the code should preserve the rationale for future maintainers, especially at this protocol boundary.

+    // TODO: Remove when rmcp <version> deprecated builder APIs are migrated (see PR #<number>)
     #[allow(deprecated)]
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/mesh-llm-plugin/src/helpers.rs` at line 188, The #[allow(deprecated)]
on plugin_server_info_full is suppressing warnings from deprecated rmcp builder
APIs inside this function, so add an inline comment explaining exactly which
rmcp calls are affected and why the allowance is temporary. Reference
plugin_server_info_full and the rmcp builder usage in its body, and note the
intended migration/removal plan so future maintainers understand the scope of
the deprecation tradeoff at this protocol boundary.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/mesh-llm-ui/src/lib/pdf.ts`:
- Line 34: The teardown path in DestroyablePdfDocument is using the wrong
object, so cleanup is skipped. Update the PDF handling in pdf.ts to stop relying
on doc.destroy?.() and instead keep the loading task returned by the PDF.js load
flow, then call loadingTask.destroy() for teardown. Make sure the relevant
PDFDocumentProxy usage and any helper that wraps document loading are adjusted
so the loading task is available where cleanup happens.

---

Nitpick comments:
In `@crates/mesh-llm-host-runtime/src/plugin/mcp.rs`:
- Line 454: The #[allow(deprecated)] on the MCP plugin path needs an inline
comment explaining the specific rmcp deprecation being suppressed and the
expected migration/removal plan, matching the documentation style used in
handle_request. Update the surrounding code in mcp.rs near the relevant rmcp
usage so the suppression is clearly scoped and future maintainers can see what
should replace it and when it can be removed.
- Line 382: Add a brief inline comment directly above the `#[allow(deprecated)]`
in `mcp.rs` explaining that the suppression is only for rmcp compatibility,
naming the deprecated rmcp API surface being used in `McpHostPlugin`/related
rmcp calls and noting the condition for removal once the replacement API is
adopted. Keep the allow scoped as narrowly as possible and document the
migration path so future maintainers know exactly why the warning is silenced
and when it can be deleted.
- Line 1335: The deprecated rmcp ServerHandler::get_info usage is currently
silenced without explaining the tradeoff. In mcp.rs near the ServerHandler
implementation, add an inline comment documenting the rmcp version/deprecation
context and whether this is a temporary backward-compatibility shim or a
permanent protocol requirement. Keep the rationale close to the
#[allow(deprecated)] on get_info so future maintainers can understand why the
warning is intentionally suppressed.

In `@crates/mesh-llm-plugin/src/helpers.rs`:
- Line 188: The #[allow(deprecated)] on plugin_server_info_full is suppressing
warnings from deprecated rmcp builder APIs inside this function, so add an
inline comment explaining exactly which rmcp calls are affected and why the
allowance is temporary. Reference plugin_server_info_full and the rmcp builder
usage in its body, and note the intended migration/removal plan so future
maintainers understand the scope of the deprecation tradeoff at this protocol
boundary.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8b0a3983-5ed3-4192-892d-fe3a6d079d45

📥 Commits

Reviewing files that changed from the base of the PR and between 100f548 and 98c9157.

⛔ Files ignored due to path filters (4)
  • Cargo.lock is excluded by !**/*.lock
  • crates/mesh-llm-ui/package-lock.json is excluded by !**/package-lock.json
  • crates/mesh-llm-ui/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • website/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (13)
  • crates/mesh-llm-host-runtime/src/plugin/mcp.rs
  • crates/mesh-llm-plugin/src/helpers.rs
  • crates/mesh-llm-ui/package.json
  • crates/mesh-llm-ui/src/features/app-tabs/app-tabs.test.tsx
  • crates/mesh-llm-ui/src/features/app-tabs/types.ts
  • crates/mesh-llm-ui/src/features/chat/pages/ChatPage.test.tsx
  • crates/mesh-llm-ui/src/features/chat/pages/ChatPage.tsx
  • crates/mesh-llm-ui/src/features/configuration/components/settings/ConfigurationDefaultsControl.tsx
  • crates/mesh-llm-ui/src/features/dashboard/components/topology/render/line-mesh.ts
  • crates/mesh-llm-ui/src/features/dashboard/components/topology/render/useTopologyCanvas.test.tsx
  • crates/mesh-llm-ui/src/lib/api/types.ts
  • crates/mesh-llm-ui/src/lib/pdf.ts
  • website/package.json

wordCount: number
}

type DestroyablePdfDocument = PDFDocumentProxy & { destroy?: () => Promise<void> }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify the installed pdfjs-dist lifecycle API surface without relying on repo node_modules.
set -euo pipefail
tmp="$(mktemp -d)"
npm pack pdfjs-dist@6.1.200 --pack-destination "$tmp" >/dev/null
tar -xOf "$tmp"/pdfjs-dist-6.1.200.tgz package/types/src/display/api.d.ts \
  | sed -n '/class PDFDocumentProxy/,/class PDFPageProxy/p' \
  | grep -nE 'destroy|loadingTask|cleanup'

Repository: Mesh-LLM/mesh-llm

Length of output: 27609


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the relevant source and the pdfjs-dist type declarations.
sed -n '1,220p' crates/mesh-llm-ui/src/lib/pdf.ts

echo '--- api.d.ts (PDFDocumentProxy / PDFDocumentLoadingTask) ---'
tmp="$(mktemp -d)"
npm pack pdfjs-dist@6.1.200 --pack-destination "$tmp" >/dev/null
tar -xOf "$tmp"/pdfjs-dist-6.1.200.tgz package/types/src/display/api.d.ts \
  | awk '
      /interface PDFDocumentLoadingTask|class PDFDocumentLoadingTask|interface PDFDocumentProxy|class PDFDocumentProxy/ {show=1}
      show {print}
      /interface PDFPageProxy|class PDFPageProxy/ && show {exit}
    '

Repository: Mesh-LLM/mesh-llm

Length of output: 50373


Destroy the loading task instead of calling doc.destroy?.(). PDFDocumentProxy in pdfjs-dist@6.1.200 exposes loadingTask.destroy() for teardown, while destroy lives on the loading task—not the proxy—so this path currently skips cleanup.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/mesh-llm-ui/src/lib/pdf.ts` at line 34, The teardown path in
DestroyablePdfDocument is using the wrong object, so cleanup is skipped. Update
the PDF handling in pdf.ts to stop relying on doc.destroy?.() and instead keep
the loading task returned by the PDF.js load flow, then call
loadingTask.destroy() for teardown. Make sure the relevant PDFDocumentProxy
usage and any helper that wraps document loading are adjusted so the loading
task is available where cleanup happens.

@ndizazzo ndizazzo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I was just thinking about this today, and you read my mind

@i386
i386 merged commit 0931e3d into main Jun 30, 2026
32 checks passed
@i386
i386 deleted the jd/update-rust-node-dependencies branch June 30, 2026 04:27
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.

2 participants