Parent epic: #698
Depends on: #699 and merged/superseding PR #697 baseline.
Context
PR #697 places the owned Python bridge in Workbench resources. That removes the archived-repo dependency but still leaves Workbench packaging as the source layout. Mac Access and Workbench need one reusable package with one digest, one contract suite, and no copied runtime tree.
Required change
Create packages/mac-connector-core as the canonical connector source and packaging boundary. Move the PR #697 runtime into that package, then make existing Workbench resource preparation consume the package rather than a second source tree.
The mature Python implementation may remain for v0.1. If it does, expose it as an embedded runtime component with deterministic entry points and no dependency on system Python, Homebrew, or a customer-managed environment.
Implementation requirements
- Preserve the current audited command, readiness, policy, queue, state, redaction, CUA adapter, kill-switch, and canary behavior.
- Separate pure contracts/policy from filesystem, process, Keychain/native-host, HTTP, and WebSocket IO.
- Provide a versioned manifest containing connector-core version, source commit, content digest, schema versions, supported engine capabilities, and build provenance.
- Make
scripts/prepareEvaosDesktopBridgeResource.js and Workbench packaging consume the core package deterministically.
- Add a host interface so Mac Access can own lifecycle and native custody without importing Electron renderer or Workbench UI code.
- Keep raw secrets, tokens, private endpoints, selected customer data, and screenshots out of default logs and fixtures.
Acceptance criteria
packages/mac-connector-core is the only repository source of connector runtime modules.
resources/evaos-beta/bridge is generated/copied from the package at build time or removed as a source location; tests fail if the two can drift.
- Workbench packages the same core digest reported by the package manifest.
- Core behavior and contract tests run without Electron UI and cover readiness, pairing envelopes, selected scope, CUA dispatch, audit, stop/revoke, kill switch, redaction, corrupt state, and restart recovery.
- A clean supported Mac can run the packaged core through a bundled runtime without
/usr/bin/python3, Homebrew Python, pip, or a separately installed bridge.
- The package exposes a narrow host API for status, pair/unpair, connect/disconnect, access mode, action dispatch, audit summary, pause/revoke/kill, and shutdown.
- Existing Workbench focused tests remain green and no archived-repo checkout or runtime reference returns.
- Directory layout obeys repository architecture rules and no directory exceeds 10 direct children.
Testing plan
| Layer |
Proof |
| Unit |
contract, policy, state, redaction, replay/expiry, and manifest digest fixtures |
| Integration |
host starts core, loopback/local IPC request, action response, stop, restart, corrupt state recovery |
| Packaging |
Workbench and Mac Access fixtures resolve the identical core digest |
| Regression |
existing PR #697 bridge/resource preparation and canary suites |
Rollback
Revert the extraction while keeping the PR #697 vendored source and v2.1.36 publication gates intact. Never restore the archived repository as a build source.
Non-goals
- no full Swift rewrite;
- no menu-bar UI;
- no live broker mutation;
- no standalone release or customer-ready claim.
Parent epic: #698
Depends on: #699 and merged/superseding PR #697 baseline.
Context
PR #697 places the owned Python bridge in Workbench resources. That removes the archived-repo dependency but still leaves Workbench packaging as the source layout. Mac Access and Workbench need one reusable package with one digest, one contract suite, and no copied runtime tree.
Required change
Create
packages/mac-connector-coreas the canonical connector source and packaging boundary. Move the PR #697 runtime into that package, then make existing Workbench resource preparation consume the package rather than a second source tree.The mature Python implementation may remain for v0.1. If it does, expose it as an embedded runtime component with deterministic entry points and no dependency on system Python, Homebrew, or a customer-managed environment.
Implementation requirements
scripts/prepareEvaosDesktopBridgeResource.jsand Workbench packaging consume the core package deterministically.Acceptance criteria
packages/mac-connector-coreis the only repository source of connector runtime modules.resources/evaos-beta/bridgeis generated/copied from the package at build time or removed as a source location; tests fail if the two can drift./usr/bin/python3, Homebrew Python,pip, or a separately installed bridge.Testing plan
Rollback
Revert the extraction while keeping the PR #697 vendored source and v2.1.36 publication gates intact. Never restore the archived repository as a build source.
Non-goals