Skip to content

feat: unify OfferU local Agent connection - #40

Open
avabbbb wants to merge 19 commits into
mainfrom
feat/unified-local-runtime-entry
Open

avabbbb wants to merge 19 commits into
mainfrom
feat/unified-local-runtime-entry

Conversation

@avabbbb

@avabbbb avabbbb commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

Goal

Use one existing local OfferU Runtime and one existing Agent integration model across the GitHub Pages showcase, Desktop/Studio, and OfferU Skill bootstrap. The showcase remains isolated until the browser verifies the exact local OfferU identity and version.

There is no hosted Web Agent, second connector service, or parallel Career Truth / Agent connection database.

Web and Desktop

  • GitHub Pages keeps Demo as its default. Connecting checks /api/health for status=ok, service=OfferU, runtime=python, and the expected app version; it rechecks the saved choice at startup. A failed or mismatched Runtime leaves the page in Demo.
  • Web and Studio share a reactive runtime selector. Switching does not reload the page, and API requests, data hooks, Studio, settings, and Agent context sync follow the same source decision.
  • Actions requiring local Career Truth are blocked while in Demo; Desktop continues to use the same 127.0.0.1:8766 Runtime.
  • Loopback requests omit credentials and identify the loopback target. The backend permits only the exact trusted Web origin, keeps the Host-header/DNS-rebinding guard, and does not use wildcard CORS.

Skill bootstrap and Agent Bridge

  • The canonical public Skill is fetched from its raw GitHub source. /api/agent/runtime/skill serves only the installation-specific local CLI projection; it is not a public distribution URL.
  • The generic bootstrap prompt asks the active Agent to install the Skill and perform only the read-only connection_bootstrap / get_current_view operation. It does not read career data or change data, credentials, Agent settings, or external state.
  • CI checks generated projection drift and compares the public raw Skill bytes and version marker with the immutable PR commit.
  • Bridge task attachment/resume reuses the existing AgentRunRecord.run_id, pairing, and single-writer lease. It validates stable harness identity and lease capability, guards concurrent/terminal updates with compare-and-swap, and commits the lease with its event. Resume does not create a duplicate run or attach event.

Bridge run reconciliation is task-scoped; this PR does not claim a persistent global presence record for an arbitrary Skill chat session.

Verification

Local: backend 780 passed, 10 skipped, 25 subtests passed; frontend 39/39 tests; typecheck, production build, generated Skill projection check, and immutable public Skill parity passed.

GitHub Build & Release run 36338098436 completed successfully at cd71f295514cd9277200d966127836352e13561b. Backend, frontend, extension, RustSec, browser/repeatability, migration, macOS arm64/x64 packaging, Windows packaging, and installed-app smoke checks all passed. The draft-release job was skipped as expected for a pull request.

@avabbbb avabbbb changed the title feat: unify Web and Studio on one local OfferU runtime feat: unify OfferU local Agent connection Sep 27, 2026

This branch has not been deployed

No deployments
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