Skip to content

feat(rivetkit): forward inspector tabs to native plugin actors#5359

Open
abcxff wants to merge 1 commit into
stack/feat-react-support-connecting-to-actors-by-id-in-useactor-ykouompzfrom
stack/feat-rivetkit-forward-inspector-tabs-to-native-plugin-actors-qkwmksyy
Open

feat(rivetkit): forward inspector tabs to native plugin actors#5359
abcxff wants to merge 1 commit into
stack/feat-react-support-connecting-to-actors-by-id-in-useactor-ykouompzfrom
stack/feat-rivetkit-forward-inspector-tabs-to-native-plugin-actors-qkwmksyy

Conversation

@abcxff

@abcxff abcxff commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@abcxff

abcxff commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

Stack for rivet-dev/rivet

Current stack:

Dependencies:

Get stack: forklift get 5359
Push local edits: forklift submit
Merge when ready: forklift merge 5359

@claude

claude Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Review

Clean, well-scoped change. The Rust-side refactor (extracting convert_inspector_tabs and reusing it for the native-plugin factory) is a nice simplification, and mirroring validate() on the plugin path before the actor starts is the right call (fail fast, matches the regular factory path).

Test coverage gap: the only new coverage is a pure unit test of convert_inspector_tabs (Rust) and a baseline no-tabs assertion. The actual wiring this PR adds, buildRegistryWithRuntime resolving definition.config.inspector and threading it through nativeFactoryBuilder(runtime, opts) (native.ts:4861-4867), has no coverage. The updated fixture (tests/fixtures/native-plugin-runtime-server.ts) plumbs opts?.inspectorTabs through, but nativePluginActor in that fixture has no inspector.tabs configured, so buildInspectorTabs returns undefined there and the tabs-actually-get-forwarded-and-appear path is never exercised end-to-end (e.g. via the inspector HTTP endpoint). Worth adding at least one fixture actor with a real inspector.tabs entry and asserting the tab surfaces for a native-plugin-backed actor, per the real-infra testing convention in CLAUDE.md.

Minor/non-blocking observations:

  • from_native_plugin only calls actor_config.validate() when options.inspector_tabs is Some(...) (actor_factory.rs:384-390), whereas the regular factory constructor always validates (actor_factory.rs:357-360). Harmless today since validate() only checks inspector tabs and the plugin defaults are hardcoded/trusted, but it's a latent inconsistency if validate() grows other checks later.
  • The pre-existing panic! on missing label/source in convert_inspector_tabs (now shared) is reachable from both call sites; since it asserts a TS-to-NAPI encoding invariant rather than user input, that's consistent with existing behavior and not a new issue introduced here.

No correctness, security, or performance concerns found. Rust conventions (hard tabs, anyhow usage, doc comments) and TS conventions (RuntimeInspectorTabEntry reuse, CoreRuntime.kind dispatch) look correctly followed.

@railway-app

railway-app Bot commented Jul 3, 2026

Copy link
Copy Markdown

🚅 Deployed to the rivet-pr-5359 environment in rivet-frontend

Service Status Web Updated (UTC)
frontend-cloud 😴 Sleeping (View Logs) Web Jul 4, 2026 at 5:51 pm
website 😴 Sleeping (View Logs) Web Jul 4, 2026 at 11:10 am
kitchen-sink 😴 Sleeping (View Logs) Web Jul 4, 2026 at 6:06 am
frontend-inspector 😴 Sleeping (View Logs) Web Jul 4, 2026 at 5:50 am
ladle ✅ Success (View Logs) Web Jul 3, 2026 at 1:02 am
mcp-hub ✅ Success (View Logs) Web Jul 3, 2026 at 1:00 am

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