Skip to content

feat: add native CNVS integration - #66

Merged
DevVig merged 1 commit into
mainfrom
feat/cnvs-adapter
Jul 20, 2026
Merged

DevVig merged 1 commit into
mainfrom
feat/cnvs-adapter

Conversation

@DevVig

@DevVig DevVig commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • add an in-process CNVS adapter using its authenticated loopback control API
  • model sessions by stable canvas/node identity and route focus/interrupt to the exact terminal
  • reconcile matching raw Codex/Claude journals while preserving other attributed hosts
  • add CNVS adapter UI state, capability disclosure, tests, and setup/security documentation

Live verification

  • discovered 9 agent terminals across 8 local CNVS canvases
  • activated ProjectHeimdall / Thor / Codex through the Microbridge Agent Key route
  • verified CNVS switched to ProjectHeimdall, selected node E23E16FA-A24D-44B0-AD0F-3854AD463294, and became frontmost

Checks

  • cargo test --workspace (76 tests)
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo fmt --all -- --check
  • npm test -- --run (9 tests)
  • npm run build
  • Tauri crate cargo check with local sidecars
  • CodeRabbit local review: 0 issues after remediation

Copilot AI review requested due to automatic review settings July 20, 2026 21:08
@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 39 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

Run ID: 70fcf2cf-6781-4818-becc-b4a9e9cba947

📥 Commits

Reviewing files that changed from the base of the PR and between 814f495 and 2a64faf.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (19)
  • INSTALL.md
  • README.md
  • adapters/README.md
  • adapters/cnvs/README.md
  • apps/microbridge-ui/src/lib/bus.ts
  • apps/microbridge-ui/src/surfaces/Settings.tsx
  • apps/microbridge-ui/src/surfaces/surfaces.test.tsx
  • crates/mb-adapters/src/claude.rs
  • crates/mb-adapters/src/codex.rs
  • crates/mb-adapters/src/lib.rs
  • crates/mb-protocol/src/lib.rs
  • crates/microbridged/Cargo.toml
  • crates/microbridged/src/app_match.rs
  • crates/microbridged/src/cnvs.rs
  • crates/microbridged/src/lib.rs
  • crates/microbridged/src/main.rs
  • crates/microbridged/src/state.rs
  • docs/adapters.md
  • docs/architecture.md

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

@DevVig
DevVig merged commit 22f7375 into main Jul 20, 2026
7 of 8 checks passed
@DevVig
DevVig deleted the feat/cnvs-adapter branch July 20, 2026 21:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Adds a first-party (in-process) CNVS integration to Microbridge by polling CNVS’s authenticated loopback control API, modeling sessions by stable canvas + node identity, and routing focus/interrupt actions back to the exact CNVS terminal. The PR also introduces reconciliation between CNVS-hosted terminals and raw Codex/Claude journal observations, plus UI/state/docs updates to disclose CNVS capabilities and setup/security constraints.

Changes:

  • Implement native CNVS adapter (discovery + focus/interrupt actions) and wire it into the daemon runtime.
  • Extend adapter observation model with ObservedSession + SessionContext and add reconciliation logic to avoid duplicating CNVS-hosted sessions.
  • Update UI snapshots/tests and documentation to reflect CNVS capabilities, privacy, and operational behavior.

Reviewed changes

Copilot reviewed 19 out of 20 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
README.md Mentions CNVS support and clarifies local-only network posture.
INSTALL.md Adds CNVS integration setup and capability notes.
docs/architecture.md Updates architecture/footprint budgets and CNVS security guarantees.
docs/adapters.md Documents CNVS as preferred official API integration and daemon-owned boundary.
crates/microbridged/src/state.rs Adds observed-session caching + hosted-claim reconciliation and CNVS adapter registration.
crates/microbridged/src/main.rs Wires CNVS internal adapter and routes observed sessions through the new API.
crates/microbridged/src/lib.rs Exposes the new cnvs module.
crates/microbridged/src/cnvs.rs New CNVS loopback API integration (polling, targeting, actions, endpoint validation).
crates/microbridged/src/app_match.rs Recognizes CNVS for app-family matching.
crates/microbridged/Cargo.toml Adds percent-encoding dependency for stable CNVS session IDs.
crates/mb-protocol/src/lib.rs Enables CNVS by default in adapter preferences.
crates/mb-adapters/src/lib.rs Introduces ObservedSession + SessionContext; updates adapter event contract.
crates/mb-adapters/src/codex.rs Emits observed sessions (session + optional runtime/cwd context).
crates/mb-adapters/src/claude.rs Emits observed sessions (session + optional runtime/cwd context).
Cargo.lock Locks new dependency additions.
apps/microbridge-ui/src/surfaces/surfaces.test.tsx Updates Settings surface expectations for CNVS adapter presence/capabilities.
apps/microbridge-ui/src/surfaces/Settings.tsx Updates adapter explanatory text and focused-app hint to include CNVS behavior.
apps/microbridge-ui/src/lib/bus.ts Adds CNVS to the demo snapshot adapter list.
adapters/README.md Reorganizes adapter catalog; lists CNVS integration.
adapters/cnvs/README.md New CNVS adapter documentation (setup, capabilities, privacy/footprint, reconciliation behavior).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +200 to +207
let normalized = SessionContext {
runtime: context.runtime.clone(),
cwd: normalize_cwd(&context.cwd),
};
self.hosted_claims
.values()
.any(|claims| claims.contains(&normalized))
}
("codex".into(), native("codex", "Codex CLI")),
("synara".into(), native("synara", "Synara")),
("conductor".into(), native("conductor", "Conductor")),
("cnvs".into(), native("cnvs", "CNVS")),
Comment on lines +112 to +116
pub fn upsert_observed_session(&mut self, mut observed: ObservedSession, owner: u64) {
if let Some(context) = observed.context.as_mut() {
context.cwd = normalize_cwd(&context.cwd);
}
let id = observed.session.id.clone();
DevVig added a commit that referenced this pull request Jul 20, 2026
## Summary
- bump Rust workspace, Tauri bundle, npm package, and lockfiles to
`0.3.1`
- add curated `v0.3.1` release notes for native CNVS support
- leave Homebrew at `0.3.0` until tagged assets pass prepublish/public
smoke tests

## Release range
- `v0.3.0..22f7375`
- includes native CNVS integration from #66
- no breaking changes or migrations

## Checks
- `cargo test --workspace` (76 tests)
- `cargo clippy --workspace --all-targets -- -D warnings`
- `cargo fmt --all -- --check`
- `npm test -- --run` (9 tests)
- `npm run build`
- Tauri crate `cargo check` with local sidecars
- version consistency across Rust, npm, Tauri, and lockfiles

## Review note
The CNVS implementation had a clean local CodeRabbit pass before #66
merged. The additional version-only release-diff review is temporarily
rate-limited by CodeRabbit; it will be retried before the public tag.
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