Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/_ci-relay.yml
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,8 @@ jobs:
--archive-file target/ci/postgres-tests.tar.zst

desktop-e2e-integration-shard:
env:
COMPOSE_FILE: docker-compose.yml:docker-compose.ci.yml
name: Desktop E2E Integration (${{ matrix.shard }}/2)
runs-on: ubuntu-latest
timeout-minutes: 20
Expand Down Expand Up @@ -400,6 +402,8 @@ jobs:
echo "Desktop E2E Integration shards passed"

backend-integration:
env:
COMPOSE_FILE: docker-compose.yml:docker-compose.ci.yml
name: Backend Integration (relay e2e)
runs-on: ubuntu-latest
timeout-minutes: 20
Expand Down Expand Up @@ -562,6 +566,8 @@ jobs:
if-no-files-found: ignore

relay-e2e:
env:
COMPOSE_FILE: docker-compose.yml:docker-compose.ci.yml
name: Relay E2E
runs-on: ubuntu-latest
timeout-minutes: 20
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ jobs:
- 'deny.toml'
- '.github/workflows/ci.yml'
- '.github/workflows/_ci-*.yml'
- 'docker-compose.yml'
- 'docker-compose.ci.yml'
- 'scripts/run-tests.sh'
- 'scripts/model-capabilities.json'
- 'scripts/normative-corpus.json'
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/mesh-lifecycle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ on:
- 'desktop/src-tauri/src/mesh_llm/**'
- 'scripts/ci-mesh-lifecycle-smoke.sh'
- 'scripts/start-relay-for-tests.sh'
- 'docker-compose.yml'
- 'docker-compose.ci.yml'
- '.github/workflows/mesh-lifecycle.yml'
pull_request:
paths:
Expand All @@ -33,6 +35,8 @@ on:
- 'desktop/src-tauri/src/mesh_llm/**'
- 'scripts/ci-mesh-lifecycle-smoke.sh'
- 'scripts/start-relay-for-tests.sh'
- 'docker-compose.yml'
- 'docker-compose.ci.yml'
- '.github/workflows/mesh-lifecycle.yml'
workflow_dispatch:

Expand All @@ -45,6 +49,8 @@ env:

jobs:
lifecycle-smoke:
env:
COMPOSE_FILE: docker-compose.yml:docker-compose.ci.yml
name: Relay-Driven Mesh Lifecycle Smoke
runs-on: ubuntu-24.04
timeout-minutes: 45
Expand Down
32 changes: 0 additions & 32 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions crates/buzz-acp/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ path = "src/main.rs"
[dependencies]
# Internal
buzz-core = { workspace = true }
# Agent-gateway control-plane client, revision-pinned for reproducible builds.
gateway-api = { git = "https://github.com/OldNorthRepository/agent-gateway.git", rev = "4f16e23", version = "0.1.0" }
buzz-sdk = { workspace = true }
buzz-persona = { path = "../buzz-persona" }

Expand Down
30 changes: 30 additions & 0 deletions crates/buzz-acp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,36 @@ Each channel has at most one prompt in flight. Multiple channels can be processe

> **Note:** On startup, the harness replays all unprocessed @mentions since the last run. Expect a burst of activity if there are stale events in the channel.

### Shared gateway backend

For a daemon-owned Claude or Codex session, configure `BUZZ_ACP_BACKEND=shared`,
`BUZZ_ACP_GATEWAY_SOCKET` to the gateway's **shared** Unix socket, and
`BUZZ_ACP_GATEWAY_ROUTE` to the Buzz ingress route admitted for that agent.
Run one Buzz identity per process and give each identity its own admitted route.
The existing `gateway` backend continues to use the legacy control socket.

Every shared submit declares the route's policy, and the daemon refuses a
mismatch. Set `BUZZ_ACP_GATEWAY_PERMISSION_PROFILE` (`repository_read` or
`restricted`) and `BUZZ_ACP_GATEWAY_SIDE_EFFECT_CLASS` (`pure_read` or
`external_effects`) to exactly the values in the gateway's route
configuration. The shared backend is read-only; write profiles fail at startup.

The shared backend derives a stable submission ID from the queued Buzz event
IDs, looks up that ID before submitting, and never resubmits after a lost
acknowledgment. It attaches to the daemon's ACP stream, reconnects by task ID
and sequence, and sends an owner's `!cancel` through the active attachment.
It collects streamed text into one threaded Buzz reply after the turn completes.
Permission requests are canceled because Buzz has no interactive approval UI
for this backend. A missed stream segment or uncertain relay publish is
reported for operator reconciliation; the harness does not replay the prompt
or publish a guessed reply. A request the daemon provably never admitted, such
as one still refused as `busy` at the turn deadline or refused by policy, is
reported as failed rather than uncertain. A route session whose policy binding
no longer matches the route (`session_policy_mismatch`) refuses every submit
until the operator raises that route's `route_generation`. Keep the old Buzz
consumer disabled
when enabling its replacement so one identity has one subscriber.

## Bring Your Own Harness (BYOH)

Buzz Desktop supports registering any ACP-speaking agent tool as a selectable runtime without a PR.
Expand Down
Loading
Loading