Repository navigation
feat(browser): integrate Chrome companion runtime and production setup - #1877
TerminallyLazy wants to merge 1 commit into
Conversation
|
Added 8b7579d: production WebSocket decoder now strips only manager-owned correlation metadata; strict payload and auth checks remain. Browser setup now supports one protected global Chrome default without requiring an open chat, preserves project/profile overrides, and refreshes readiness automatically. Consolidated three empty approval error rows into one recovery control; known pending approvals remain visible but disabled on failed refreshes. Focused checks: 3 transport, 6 default-selection, 11 WebUI tests passed, plus narrow/wide synthetic previews. Scoped source deployed to the local Docker instance; default selection saved through protected UI, companion status/doctor INSTALL_VERIFIED. Live control is still waiting for Chrome and is NOT claimed accepted. No store submission or cross-platform release claim. |
|
Live acceptance update: the existing production pairing has now reconnected after the deployed transport/default-selection fix. In actual host Chrome, opening Browser plugin settings with no chat active reports: Chrome is connected. This browser is the default for your chats. This is the strict default-selection runtime-readiness projection, not inferred from pairing or installation. No new pairing code, manual extension reconnection, or site grant was used. Browser operation acceptance and broader platform releases remain separate. |
|
Connection follow-up: 1d25de0 composes production reconciliation and keeps transport admission provisional until exact snapshot settlement; first repeated authenticated hello starts reconciliation after native consumed its initial ACK. This also prevents initial finalization controls racing the ACK. Browser readiness now reflects reconciliation, not just transport registration. Removed the composer recovery button entirely; automatic polling remains and outages use one quiet notification-center entry. Focused regression: 8 tests passed (production reconciliation and composer inbox); earlier targeted runtime/default-selection checks also passed. Scoped files are deployed to the local Docker instance with backups and pairing/site permissions unchanged. Live fixed-symbol diagnostics confirm initial hello, renewal and a settled negative reconciliation reply: UNSUPPORTED_CAPABILITY. Extension startup separately has an impossible wrong-direction artifact-method readiness requirement; that fix is in progress in the extension PR. End-to-end READY is not yet verified. No merge, store publication or Actions dispatch. |
|
Current source-integration status: the production extension is now user-confirmed loading conversation content, and Core independently recorded RECONCILIATION_SUCCEEDED after the paired/selected native handshake and renewal. The user has explicitly requested commit, push and merge of the coordinated changes. Browser-operation acceptance, Chrome Web Store publication, Linux release availability and Windows implementation/distribution remain separate incomplete release gates; source integration must not be represented as full cross-platform production completion. Latest Core head is 1d25de0. Matching extension PR #1 includes ongoing chat continuity, inert Markdown and explicit title/link-only tab references; those do not grant tab control. This account has pull access but no push/maintain/admin permission to agent0ai/agent-zero, so a maintainer may be required to merge into ready. |
|
Merge attempt outcome: PR marked ready for review; exact-head merge of 1d25de0 was refused by GitHub because TerminallyLazy lacks MergePullRequest permission. No admin bypass or force operation was attempted. A repository maintainer needs to merge this PR into ready. Companion CLI PR #26 has the same permission boundary. |
|
Follow-up c9fac7e fixes the real first-open ORIGIN_BLOCKED gap: a bounded production-only server-owned WebUI consent request now precedes Chrome open dispatch. Allow once binds subsequent access to the exact successful resulting lease; allow turn stays exact route/context/session/turn/origin scoped. No native challenge/receipt fabrication or saved policy changes. Deny/expiry guidance explicitly forbids alternate-tool workarounds. 19 focused authority/runtime/UI tests plus 5 tool/prompt regressions passed in an offline disposable framework container. Deployed nine exact source files to the named local Docker instance with recoverable backups; source compilation and HTTP 200 verified. Live consent-to-Chrome effects remain unverified. Extension blue-group and transient-activity changes are separately merged as agent-zero-browser-extension PRs #2/#3. Base remains ready; maintainer merge is still required. No GitHub Actions requested. |
bb171df to
576d2af
Compare
9170e54 to
37df780
Compare
37df780 to
9d23a49
Compare
Summary
Adds the Chrome extension bridge through the bundled
_browserand_a0_connectorplugins: protected pairing and default selection, signed restricted transport, exact runtime admission, site/action policy, chat and artifact relay, and owned-tab finalization. The native companion runs on the Chrome host, never inside Agent Zero's Docker container.Coordinated changes: extension setup PR #11, native companion and CLI PR #26.
Production-only scope and cleanup
ready:9d23a49d75fd524316020e681b9436be59b2aa73. Scoped backup refs retain earlier versions; no upstream history was rewritten. No Actions run requested.Why shared Core changes remain
Feature implementations remain plugin-owned. Shared changes total 439 added / 48 removed / 391 net lines across seven source files, excluding tests and DOX.
helpers/ws.pyhelpers/ws_manager.pyhelpers/ws_principal.pyhelpers/tool.pyget_display_args()hook allows typed-input redaction before base-tool terminal logging. The existing browser log-object override protects a different output path.helpers/persist_chat.pyhelpers/ui_server.py@extensibleconstruction hook plus a fresh localAsyncExitStackandwebui_server_startdispatch inside each ASGI lifespan. Uvicorn retries reinstall services after prior cleanup; hook failure and shutdown await exact-owner retirement. No browser-specific imports remain in the shared server.extensions/python/_functions/helpers/ui_server/UiServerRuntime/create/end/_05_legacy_browser_guard.pyNo changes to
agent.py,initialize.pyormodels.py. Matching helper DOX and owning contracts document the boundaries. Exact legacy fixture bytes remain because retirement tests verify their digests; they are inert fixtures, not an active development runtime.frdel review and simplification
Aligned in the reviewed boundaries, inferred from actual local diffs rather than a claim of maintainer approval:
89d4b891consolidates helpers while preserving compatibility;7eb6d5b1preserves activated WebSocket handler identity;b94d4b79owns server construction/lifespan;b6be345amoves feature behavior into plugin hooks;93d1131cstandardizes browser UI components.webui_server_starthook. Removed the stored server-lifetime shutdown stack: startup retries on the same server object install afresh after retirement. A later startup-hook failure also awaits cleanup. Plugin disablement does not suppress registered cleanup; exact manager checks and the mandatory legacy HTTP guard remain.Across the initial review and approved follow-ups: 45 fewer total lines and 220 fewer production-source lines. The lifetime-capacity fix deliberately retains replay receipts instead of deleting safety state to reduce size. Latest backup:
backup/core-before-frdel-second-review-20260906.Verification
Release and deployment limits
nhliclifilepdkoolioacpjpijomfplj. Published macOS 13+ Intel/Apple Silicon companion is signed/notarized 2.12.3. Core separately requires publisher-signed exact-version policy for 0.1.1 + 2.12.3; that operator policy is not committed here. This follow-up changes no wire protocol, native binary or extension package.b0dd656a7888e27dd67ca2d091b6cb7955073daa. Linux production packaging/catalog/provenance and desktop acceptance remain incomplete. Windows candidate verification/HKCU installation, genuine signing and native platform acceptance remain incomplete. Extension portability is not end-to-end OS support.