You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Keep AI Micro bridge running independently of App sessions - #3
Move HID ownership, device reconnection, configuration and URI navigation into a separately launched Windows daemon so recycling the hosting CLI disconnects only the App status feed.
Connect the extension through authenticated, bounded Windows named-pipe request/reply transport with a per-user singleton service and one status producer.
Keep Agent-key, previous/next and focus navigation working from verified cached App URLs while offline. Mark LEDs unknown on feed loss or expiry; require fresh App data for waiting-session actions, session creation and configuration changes.
Automatically restore status publishing when the extension loads again without reopening HID. Explicit stop remains stopped after feed recovery.
Document startup, shutdown, local configuration, runtime credentials and limitations; ignore runtime credential files.
Validation
Windows npm test: 56 tests passed, no failures or skips.
npm run check: passed.
Unstaged and staged git -c core.whitespace=cr-at-eol diff --check: passed.
Real separate Node-process and Windows named-pipe tests cover producer termination, cached navigation, unknown LEDs, status recovery, explicit stop, feed expiry, invalid catalogue rejection and authentication.
Existing bounded-output and real PowerShell URL-validation regressions remain passing.
The active hardware bridge was not restarted and extensions were not reloaded during submission.
Operational notes
Run npm run daemon in an independent terminal or explicitly detached process, then configure and start through the extension. No Windows autostart is installed; computer restart or daemon exit still requires service startup and explicit bridge start.
Keep or migrate personal config.json locally in the hosting extension directory. It is not distributed through Git. Never copy or share .bridge-runtime.json.
Cached targets may have been deleted; URLs are validated and never substituted. Navigation does not guarantee immediate loading of the App status extension.
Sleep/wake, Bluetooth-adapter toggling and long-running hardware stability still need separate validation. Forced daemon termination can leave the last hardware LED colors visible.
No firmware changes, automatic approvals or agent prompt sending.
Only source, tests and documentation are included. Personal configuration, device/session bindings, dependencies and runtime credentials are excluded.
Separate HID lifetime from the session status feed with an authenticated local daemon, cached navigation and automatic feed recovery.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the 1 MiB RPC guard while allowing large App catalogues, new bindings and regular status updates. Add a real named-pipe regression with over 12000 sessions.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Seal pipe admission and close clients before draining controls and stopping HID. Cover late starts, in-flight starts and concurrent shutdown with real named-pipe regressions.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The background poll runs publish() inside the same serialization queue as every tool request. readSessions()/callApp() have no deadline, so a stalled App status call permanently holds this queue; subsequent status and explicit stop requests never reach the still-responsive daemon. This defeats the feed-expiry path precisely when it is needed. Keep feed polling from blocking management controls, or bound/cancel the App calls so the queue is always released.
RPC deadline is shorter than the valid start sequence
The default RPC deadline is shorter than a valid start sequence: URI-helper startup may take almost 10 seconds, followed by four sequential firmware requests that may each succeed just under their 3-second deadline. The client can therefore close the peer at 15 seconds while the service continues and ultimately starts HID, reporting failure even though the bridge is running. Give start a deadline longer than its composed sub-operation limits, or propagate timeout cancellation to the server operation.
Keep rejecting traffic while draining HID and removing discovery, then release the named pipe. Verify blocked replacement claims and safe runtime handoff with real Windows pipes.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The size check runs before newline-delimited frames are consumed, so a valid near-limit frame followed by part of another frame makes the aggregate buffer exceed 1 MiB and closes the connection even though neither frame exceeds the documented limit. Apply the limit to each complete line, then separately reject only an oversized unterminated remainder; add a regression with split/coalesced frames.
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
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
Validation
npm test: 56 tests passed, no failures or skips.npm run check: passed.git -c core.whitespace=cr-at-eol diff --check: passed.Operational notes
npm run daemonin an independent terminal or explicitly detached process, then configure and start through the extension. No Windows autostart is installed; computer restart or daemon exit still requires service startup and explicit bridge start.config.jsonlocally in the hosting extension directory. It is not distributed through Git. Never copy or share.bridge-runtime.json.Only source, tests and documentation are included. Personal configuration, device/session bindings, dependencies and runtime credentials are excluded.