From 3efcd497de7ebe93b9cf71dba5f4ef43a3c0112a Mon Sep 17 00:00:00 2001 From: Vaibhaav Tiwari <155460282+Vaibhaav-Tiwari@users.noreply.github.com> Date: Fri, 26 Jun 2026 17:28:07 +0530 Subject: [PATCH] docs: refresh repository readme [skip ci] (#2190) --- README.md | 356 +++++----- ao-dashboard-preview.png | Bin 0 -> 213677 bytes ao-logo.svg | 25 + docs/agent/README.md | 1019 +++++++++++++++++++++++++--- docs/architecture.md | 903 ++++++++++++++++++++++-- docs/backend-code-structure.md | 1168 +++++++++++++++++++++++--------- docs/telemetry.md | 90 +++ screenshots/first.png | Bin 0 -> 804324 bytes screenshots/image.png | Bin 0 -> 147317 bytes screenshots/second.png | Bin 0 -> 502751 bytes screenshots/third.png | Bin 0 -> 187409 bytes 11 files changed, 2901 insertions(+), 660 deletions(-) create mode 100644 ao-dashboard-preview.png create mode 100644 ao-logo.svg create mode 100644 docs/telemetry.md create mode 100644 screenshots/first.png create mode 100644 screenshots/image.png create mode 100644 screenshots/second.png create mode 100644 screenshots/third.png diff --git a/README.md b/README.md index 27398e1a8..2d9f4dd2a 100644 --- a/README.md +++ b/README.md @@ -1,221 +1,223 @@ -# ReverbCode +
-The orchestration layer for parallel AI coding agents. ReverbCode is a -Go-backed daemon that supervises many coding-agent sessions at once, each in -its own `git worktree`, and routes the feedback they need (CI failures, review -comments, merge conflicts) back to the right agent automatically. It ships with -an `ao` CLI and an Electron supervisor that both drive the same daemon over -loopback. +

+ Agent Orchestrator +

-The Go module and packages remain `agent-orchestrator`; "ReverbCode" is the -public name. +

Agent Orchestrator

-See [`docs/architecture.md`](docs/architecture.md) for the backend mental model -and [`AGENTS.md`](AGENTS.md) for the contributor / worker contract. For current -progress (what's shipped vs. in flight) see [`docs/STATUS.md`](docs/STATUS.md). +

The orchestration layer for parallel AI coding agents

-## What it does +

+ Stars + Contributors + Twitter + Discord + License: Apache-2.0 +

-- **Agent-agnostic.** A 23-adapter platform under - `backend/internal/adapters/agent/` (`claude-code`, `codex`, `cursor`, - `opencode`, `aider`, `amp`, `goose`, `copilot`, `grok`, `qwen`, `kimi`, - `crush`, `cline`, `droid`, `devin`, `auggie`, `continue`, `kiro`, `kilocode`, - and more), registered through a shared registry with common - activity-dispatch / hook utilities. Worker and orchestrator defaults are set - per project. -- **Isolated workspaces.** Worker and orchestrator sessions spawn into their own - `git worktree` (`backend/internal/adapters/workspace/gitworktree/`), launched - inside a `zellij` runtime adapter (`backend/internal/adapters/runtime/`) so - every session has its own attachable terminal. -- **Live PR observation.** The provider-neutral SCM observer - (`backend/internal/observe/scm/`) polls each session's PR with ETag guards and - semantic diffing, tracking CI/check runs and review threads, and feeds those - facts into the lifecycle manager, which sends the owning agent nudges for CI - failures, review feedback, and merge conflicts. GitHub is the implemented - provider today. -- **Durable facts, derived status.** The SQLite store - (`backend/internal/storage/sqlite/`) persists a small set of session facts - plus PR/check/comment rows; display status is computed at read time, never - stored. DB triggers append every user-visible change to `change_log`, and a - CDC poller/broadcaster (`backend/internal/cdc/`) feeds in-process subscribers - and an SSE replay endpoint. -- **Loopback-only daemon.** The HTTP daemon (`backend/internal/httpd`) controls - projects, sessions, orchestrators, and hook callbacks over `127.0.0.1` with no - auth, CORS, or TLS by design. -- **Lifecycle manager + reaper** (`backend/internal/lifecycle/`, - `backend/internal/observe/reaper/`) reduce runtime/activity/PR observations - into the durable session state and reclaim dead sessions. +

An Agentic IDE that supervises parallel AI coding agents in isolated workspaces, with complete control and automatic feedback loops from CI failures, review comments, and merge conflicts.

-## How it works +

+ Agent Orchestrator Dashboard +

-1. Register a local git repo as a project (`ao project add`). -2. Spawn a worker session (`ao spawn`), or an orchestrator that fans work out - across sessions. Each session gets its own `git worktree` and a `zellij` - pane. -3. The agent develops, tests, and opens a PR from inside its worktree. -4. The SCM observer watches that PR and routes feedback back to the agent: a CI - failure, a requested change, or a merge conflict becomes a nudge to the agent - that owns the PR. -5. You inspect, attach a terminal, and merge from the CLI or the Electron app; - human attention is needed only where the loop can't resolve on its own. +### See AO in Action (before the re-write) -## Extensibility + + + + + + + + + +
+First

+Visit +
+Second

+Visit +
+Third

+Visit +
+Fourth

+Visit +
-The backend is organized around inbound/outbound port contracts -(`backend/internal/ports/`) with swappable adapters under -`backend/internal/adapters/`: +[Features](#features) • [Quick Start](#quick-start) • [Architecture](#architecture) • [Documentation](#documentation) • [Contributing](#contributing) -| Port | Implemented adapters | -| --------- | --------------------------------------------- | -| Agent | 23 harnesses (see above) | -| Runtime | `zellij` | -| Workspace | `git worktree` | -| SCM | GitHub | -| Tracker | GitHub (adapter present; no runtime loop yet) | -| Reviewer | `claude-code` | -| Notifier | port defined; no shipped adapter yet | +
-See [`docs/STATUS.md`](docs/STATUS.md) for which lanes are live at runtime. +--- -## Quick start +## Features -Requirements: Go 1.25+, [`zellij`](https://zellij.dev/) on `PATH` for the -runtime adapter, and `gh` (or `GITHUB_TOKEN`) if you want the SCM observer to -authenticate against GitHub. The SQLite driver is the pure-Go -`modernc.org/sqlite` — no system SQLite library is required. +| Feature | Description | +| :--- | :--- | +| **Agent-Agnostic Platform** | 23+ agent adapters including [Claude Code](https://code.claude.com/docs/en/overview), [OpenAI Codex](https://openai.com/), [Cursor](https://cursor.com/), [OpenCode](https://opencode.ai/), [Aider](https://aider.chat/), [Amp](https://ampcode.com/manual), [Goose](https://goose-docs.ai/), [GitHub Copilot](https://github.com/features/copilot), [Grok](https://x.ai/grok), [Qwen Code](https://github.com/QwenLM/qwen-code), [Kimi Code](https://www.kimi.com/code), [Cline](https://cline.bot/), [Continue](https://www.continue.dev/), [Kiro](https://kiro.dev/), and more | +| **Isolated Workspaces** | Each session spawns into its own git worktree with dedicated runtime | +| **Platform-Native Runtimes** | tmux on Darwin/Linux, conpty on Windows for optimal performance | +| **Live PR Observation** | Provider-neutral SCM observer with automatic feedback routing | +| **Automatic Feedback Routing** | CI failures, review comments, and merge conflicts routed to the owning agent | +| **Durable Facts Storage** | SQLite persists immutable facts with display status derived at read time | +| **CDC Broadcasting** | DB triggers append changes to change_log, broadcasted via SSE | +| **Desktop Experience** | Native Electron app with React UI and live terminal streaming | +| **Loopback-Only Daemon** | HTTP control over 127.0.0.1 with no auth, CORS, or TLS by design | -```bash -cd backend -go build -o /tmp/ao ./cmd/ao +### Supported Agents -# Start the daemon and wait for /readyz. -/tmp/ao start +Works with 23+ CLI-based coding agents including Claude Code, OpenAI Codex, Cursor, OpenCode, Aider, Amp, Goose, GitHub Copilot, Grok, Qwen Code, Kimi Code, Crush, Cline, Droid, Devin, Auggie, Continue, Kiro, and Kilo Code. -# Register a local git repo as a project. The id defaults to the lowercased -# base of --path; pass --id explicitly when the directory name doesn't match. -/tmp/ao project add --path /path/to/your/repo --id your-repo --name your-repo \ - --worker-agent codex --orchestrator-agent codex +**If it runs in a terminal, it runs on Agent Orchestrator.** -# Spawn a worker session running the project's worker agent. -/tmp/ao spawn --project your-repo --prompt "Refactor the auth module" +--- -# Inspect what's running. -/tmp/ao status -/tmp/ao session ls -``` +## Quick Start -### Electron app (dev) +### Prerequisites -The desktop supervisor lives under `frontend/` and is started separately: +| Requirement | Minimum | Recommended | +|-------------|---------|-------------| +| Go | 1.25+ | Latest | +| Node.js | 20+ | Latest LTS | +| Git | Any | Latest | +| pnpm | Any | Latest | -```bash -cd frontend -npm install -npm run dev # electron-forge start -``` +**Optional:** +- `tmux` (Darwin/Linux) - For Unix runtime +- `gh` (GitHub CLI) - For authenticated GitHub API calls -Heads-up: `npm run dev` does **not** start the daemon for you. Start it first -(`ao start`, see above) — the renderer attaches to the running daemon over -loopback (`127.0.0.1:3001` by default, the `AO_PORT` from the table below). -Without a daemon the app opens but shows its daemon-not-ready state. +### Installation -For renderer-only UI work without the Electron shell, use -`npm run dev:web` (Vite in a regular browser). +Download the latest release for your platform: -## CLI surface +| Platform | Download | +|----------|----------| +| **Windows** | [Setup.exe](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) | +| **macOS** | [Agent Orchestrator.dmg](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) | +| **Linux** | [Agent Orchestrator.AppImage](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) | -The CLI is intentionally thin: every product command resolves to a daemon HTTP -route. Run `ao --help` for the authoritative flag shape; the table -below groups what's on `main` today. +**Direct Download:** [Latest Release](https://github.com/AgentWrapper/agent-orchestrator/releases/latest) -| Lane | Command | Purpose | -| ------------ | ------------------------------------ | ---------------------------------------------------------------------------------- | -| Daemon | `ao start` | Start the daemon in the background and wait for `/readyz`. | -| Daemon | `ao stop` | Graceful shutdown via loopback `POST /shutdown`. | -| Daemon | `ao status` | Report PID/port/health/readiness from `running.json`. | -| Daemon | `ao daemon` | Hidden internal entrypoint used by `ao start`. | -| Project | `ao project add` | Register a local git repo as a project. | -| Project | `ao project ls` | List registered projects. | -| Project | `ao project get ` | Fetch one project. | -| Project | `ao project set-config ` | Update per-project config. | -| Project | `ao project rm ` | Remove a project. | -| Session | `ao spawn` | Spawn a worker session in a registered project. | -| Session | `ao session ls` | List sessions (filter by project, include terminated). | -| Session | `ao session get ` | Fetch one session. | -| Session | `ao session kill ` | Terminate a session. | -| Session | `ao session rename ` | Rename a session. | -| Session | `ao session restore ` | Relaunch a terminated session. | -| Session | `ao session cleanup` | Reclaim eligible workspaces for terminated sessions. | -| Session | `ao session claim-pr ` | Attach an existing PR to a session. | -| Orchestrator | `ao orchestrator ls` | List orchestrator sessions. | -| Messaging | `ao send` | Send a message to a running agent session. | -| Preview | `ao preview [url]` | Open a URL (or the workspace `index.html`) in the session's desktop browser panel. | -| Utility | `ao doctor` | Local health checks (config, data dir, DB, `git`, `zellij`). | -| Utility | `ao completion ` | Generate bash/zsh/fish/powershell completions. | -| Utility | `ao version` | Print build metadata. | -| Internal | `ao hooks ` | Hidden adapter hook callback. | +--- -See [`docs/cli/`](docs/cli/) for the daemon-control intent and command shape. +## Telemetry -## Configuration +Agent Orchestrator collects minimal telemetry for reliability and product understanding. Data is stored locally by default; remote transmission is opt-in via environment variables. [Read the full telemetry policy](docs/telemetry.md). -All configuration is env-driven; the daemon takes no config file. The bind -host is hard-coded to `127.0.0.1` — the daemon has no auth, CORS, or TLS, and -exposing it beyond loopback would be a security regression. - -| Var | Default | Purpose | -| --------------------- | ------------------------------------------------- | --------------------------------------------------------------------------- | -| `AO_PORT` | `3001` | Bind port; daemon fails fast if taken. | -| `AO_REQUEST_TIMEOUT` | `60s` | Per-request timeout (Go duration). | -| `AO_SHUTDOWN_TIMEOUT` | `10s` | Graceful-shutdown hard cap. | -| `AO_RUN_FILE` | `/agent-orchestrator/running.json` | PID + port handshake path. | -| `AO_DATA_DIR` | `/agent-orchestrator/data` | SQLite DB, WAL files, managed state. | -| `AO_AGENT` | `claude-code` | Compatibility agent adapter id validated at daemon startup. | -| `AO_SESSION_ID` | _(unset)_ | Set inside spawned sessions; read by `ao send` and `ao hooks`. | -| `GITHUB_TOKEN` | _(unset)_ | Used by the GitHub SCM and tracker adapters. Falls back to `gh auth token`. | - -Health check: - -```bash -curl localhost:3001/healthz -curl localhost:3001/readyz -``` +--- ## Architecture -The daemon is a long-running supervisor. Adapters observe external facts (PR -state, agent activity, runtime liveness); the lifecycle manager reduces those -into a small set of durable session facts (`activity_state`, `is_terminated`, -PR rows). Display status is _derived_ from those facts at read time — it is -never stored. SQLite triggers append every user-visible change to `change_log`, -and the CDC poller broadcasts those events to in-process subscribers and an -SSE stream. +Agent Orchestrator is a long-running Go daemon built around **inbound/outbound port contracts** with swappable adapters. -Full mental model and load-bearing rules: [`docs/architecture.md`](docs/architecture.md). -Package-by-package ownership: [`docs/backend-code-structure.md`](docs/backend-code-structure.md). +**Core mental model:** OBSERVE external facts → UPDATE durable facts → DERIVE display status / ACT + +**Key components:** +- **Frontend** - Electron + React UI with TanStack Router/Query and shadcn/ui +- **Backend Daemon** - Go-based HTTP server with controllers, services, and adapters +- **Runtime** - Platform-specific: `tmux` on Darwin/Linux, `conpty` on Windows +- **Storage** - SQLite with change-data-capture (CDC) for real-time updates +- **Adapters** - 23+ agent adapters, git worktree workspace, GitHub SCM integration + +For detailed architecture diagrams, data flows, and load-bearing rules, see [architecture.md](docs/architecture.md). + +--- + +## Documentation + +| Document | Description | +|----------|-------------| +| [Architecture](docs/architecture.md) | System architecture, data flows, and load-bearing rules | +| [Backend Code Structure](docs/backend-code-structure.md) | Package-by-package ownership and dependency rules | +| [AGENTS.md](AGENTS.md) | Contributor and worker-agent contract | +| [Agent Adapter Contract](docs/agent/README.md) | Agent adapter interface and hook behavior | + +--- ## Testing -The local gate is the backend Go build and race-enabled test suite: - ```bash -cd backend && go build ./... && go test -race ./... +# Backend tests +cd backend +go test -race ./... + +# Frontend tests +cd frontend +pnpm test + +# Full CI validation locally +npx @redwoodjs/agent-ci run --all ``` -GitHub Actions is the authoritative pre-merge gate; mirror its commands here -when in doubt. See [`AGENTS.md`](AGENTS.md) for the regen workflow when -touching the daemon API surface (`npm run sqlc`, `npm run api`). +--- -## Status and roadmap +## Configuration -Progress tracking lives in [`docs/STATUS.md`](docs/STATUS.md): what is shipped -on `main` today, what is still in flight, and the linked -[`rewrite`](https://github.com/aoagents/agent-orchestrator/milestone/1) -milestone on GitHub. +All configuration is environment-driven. The daemon takes no config file. + +| Variable | Default | Purpose | +|----------|---------|---------| +| `AO_PORT` | `3001` | HTTP bind port | +| `AO_REQUEST_TIMEOUT` | `60s` | Per-request timeout | +| `AO_SHUTDOWN_TIMEOUT` | `10s` | Graceful shutdown cap | +| `AO_RUN_FILE` | `~/.ao/running.json` | PID/port handshake | +| `AO_DATA_DIR` | `~/.ao/data` | SQLite data directory | +| `AO_AGENT` | `claude-code` | Compatibility agent adapter | +| `GITHUB_TOKEN` | - | GitHub auth token | + +### Health Checks + +```bash +curl localhost:3001/healthz # Liveness probe +curl localhost:3001/readyz # Readiness probe +``` + +--- ## Contributing -Repo layout and the worker contract live in [`AGENTS.md`](AGENTS.md). Keep -changes surgical, follow the package boundaries documented in -[`docs/backend-code-structure.md`](docs/backend-code-structure.md), and prefer -adding daemon HTTP routes over leaking storage / runtime into the CLI. +We love contributions! Join our community on Discord to get started. + +### Join us on Discord + +[![Discord](https://img.shields.io/badge/Discord-join%20the%20community-5865F2?style=for-the-badge&logo=discord&logoColor=white&logoSize=auto)](https://discord.com/invite/UZv7JjxbwG) + +**Daily contributor sync:** Every day at **10:00 PM IST** + +Get your issues verified by core contributors, ask questions, share progress, and learn from the community. New contributors are always welcome! + +**Why join Discord?** + +- Get your issues and PRs verified by core contributors before investing time +- Learn from experienced contributors in daily sync calls +- Share your progress and get feedback +- Get help troubleshooting in real-time +- Stay updated on the latest developments and roadmap + +### Quick Start + +1. **Join the Discord** - Connect with the community and get guidance +2. **Read the contributor contract** - See [AGENTS.md](AGENTS.md) for repo layout, daemon/API boundaries, and coding conventions +3. **Pick a focused problem** - Browse [open issues](https://github.com/AgentWrapper/agent-orchestrator/issues) and choose one small enough for a focused PR +4. **Open a clear PR** - Keep changes narrow, explain user-visible impact, link issues, include tests +5. **Iterate with contributors** - Use review feedback to tighten the PR until verified + +--- + +## License + +Apache License 2.0 - see [LICENSE](LICENSE) for details. + +--- + +
+ +**[Star us on GitHub](https://github.com/AgentWrapper/agent-orchestrator)** • **[Report Issues](https://github.com/AgentWrapper/agent-orchestrator/issues)** • **[Discussions](https://github.com/AgentWrapper/agent-orchestrator/discussions)** + +Made with love by the Agent Orchestrator community + +
diff --git a/ao-dashboard-preview.png b/ao-dashboard-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..27832975e0c89c5920f3fd4520f79b85b2d57886 GIT binary patch literal 213677 zcmeFZc{r5)`#(%2#f?fROSUL`8?s~BH2Rr zWsIGPVa7ffGxJ>c=l8vj-*G(0r|$26&p*#UI9%6U*ZY0G&-Hb_&UtgsSdWc`mxY0W zfz3c)$Bco2`56PlF}@SWf&aJ@5Lnq z#v2i@oHRI*pm8Lp2I@+j^dmNr(mP4?O_e?+P1C5@FDz_~$4+T5{P9O_GwU&)J(Zc` z|8^trm`n!7D}u-V^^r6Dr-c~Q^rrN^kN)x1e=kgkVd?rah9f70{`ezP^vJPhd3(qHEp!ybQ#Xan27Zb#_skw4udbT8Me6kFic6kG5(!2iu<``e04 zOx~^y%`Ev{{n{#v8k4HyRbg+vvZ)*H(*{qU*1ufF{7iUol7&TSjrNNn(%)1_Ufw1t z>Hfv5!kTBc9YJ-uMJ>Abw+=3Dzx#t=_8oJ*sNMON6&OSF<&1s$!-keY?wgICab*|C zWvkY^^9E!tUT$&I#Kfe`Iac@?PEIlTl#b zKb_v_ajZE+%nW3!A4NiAI2|j)Lv{}(TVWogQ z-|Sb`N@$@Vom_^KWA84p=;<1Sg*Ecu3cX=co~iU~>t%}Z>E9~l<(o$=_YL>#e5WcV z(Pj|R+VzBF*V&XP3^P0b#lxPH=O{u6n$42XHOixDQHt84t|&twIBO- z8dIf>jYc2I<7%wqaNjJ<(9&T~cY|S#iaPex&9q~y5a;Pj6wqQ2ur9Faf%c!)^&S@d zgb`^gD=)`nylr!0Fjw-bu&|t5B>MEtiesx3=jqZ(?_6{fa{* zd_VPRJ=U+h=rJq;SiYZLGumXgscS8ja%*XqYe4W1R<@9?p)-3eWJFPbM>>)-ocsB6 zt&8&V@CUfFRN$Z9Xo<=(1>Jtrsy>$gst;Q5}O`C?`8PUy!>FhM`TcP*^rC+Ba z{cVJ{?a>Wevr`u$_WA}IL;T4;KXWzD@bN*^CKbr9f9C}5F))2<(Ph7sNsHnL*SKg# zu|+v7^t~7)Ta|z4$W_r{7vO53VV3K-hOFN0oL)9JS-_qbaXbXwBZ=Tgapl^VitP(Z z8p*qu{6JLv0Nlc~e>R(`@ z+-Vni#DX!i?krOcIZqqYuWqEW5G@!XbSU$|N7yRvH=E2=3C*Vup9LT9&CEGZO@#R6B2!p`@-=YF0+^ z>J;3t%c|(Iz>OPhEVA`JmJNQ3i*GP$mu`iEF6QOsRlE3S@~b}8C^3&qL=gop*Wp6w z?oAwS2Qxy{GxAmA#gtmB|0Q5a&$1&|MG-Vq!Rk<~R(T4y2Pb;3u9Qm^WA?1Sq*wlaV-Npt& z@@qv*d^#~_&osaY5`nFn`_?n_98-x43(o0Ryx;yvzqR$g;s(;pCD`ke8*#3TQfKxGB+AYuTg2Zgu)v3~E93M~E!I1_t#<20l zwC>z@YJOJ!?ODNH??i9cFWPxG=uSPIXR8aNQ_0~wabE!^WyJxrPdMUh|n!J-^p{wE8Zo&9=@Pw?L@Cq%IE@cK^)NUR*BBNgXIK>=uL` z3R~GfiNfN6#iXE!NW&8IViCP~{zTna?#`M%H7UbX>BLbG~fPUbe%!|0|GSeJc9kS)>;Jvh46}_tJKTqAvdCl~D$Jd+GoZBf< zF)cJufbQsH)lL285-xm;H^#oCRaY-<+XCPFjw@uEMHKG5w}sMek-r)OVxG)wni_3a zFXwVE8lPPaL`Ky6I6wsE_6=a04o!C#66L}Pt5?6g?Xaukhfv|Yre3gVI}wZRu%M|4 zE}bqOau#+;mgb7=80bM$S2s#5MY003r+=A=oDP*y*(Ef^ov}eLj;T#0;ad4Zr=vu5 z)G{w_-X|LEtOP=hZ?%Ibei1L(Fl(sm{p4K7eI&=spSC z=%NbqBI|yp?@%MEuDA(5eittM61DS7?CP-RihYZV1ER)ByX-A>nVCl%yWVE`HRHnv zA!vwm?vk0oLkn2N;g(ERaDBqtbGva+*?FmQv?ZX1c3+Hm3#ldv7|eFYk8CCF-PLh1 zm~CB3i*8KUs~yip3JIOs<4!*H^lKnN(N`|b{fo1W*>?q}No#i;;)Uydm;5qzuBJy6 zg^;BvD=}47d-R3FbbII)gTyENIhD}-xBY~=pw2}rgYHyt{?j)}p(GWT#Tb`mNmnqP zv2I!lP8dm<$$emhbWRLY+?EQwxe#AhvN9Deo01Bf&_5}F#9nJ$#?U3_zppSW!N$XS zVOT_(-=Y-KbG!+X7Pk2ny7;)obe~Wo7lP^}&?EX})UU03yMNx&!18}nkJ|&4j24Np z@yho*wQw%H(Gz^no`uvObd{M*m@+jr^?pri@OSO3zbfi5OwJ)Tnq$E48`7RtF`Fv7hxIVX)l+<~@NzQ41o7BdNZ&;f;Y){X^PE8+9_=z#l+!ss^ zA}8m+JCVk!KC3gJ*IQVrWN=;u4@249DkCkRy2r}nVY}x(AFAjvq_1|k zuFW%LocRHLgIXe0u}!uEvdxD5rH{AzXl zjgIG)?@~`k?6{G)=Q|PybX%AA_MXxuRy?12I(dJHcw7b^tNeP)?k4ru=XXfC#m&WT zhntfP{%$-*A7}A7P~wpXs9mX@h~pd=R^w3zE2UY32r$-pp+nGtVO8OnYG%h)z;wm4 z`&GY<)6bf1ILAIW43cg6Lm%lSLQt`)>mf^Neor`YQ`*j3-ic3Gbz^jwp`)We>z$nv zG2xf0^{=<24(n!^?=Uq-ZL2Sj8h(_mO?=gyCoE#iD&7--g4=k8^-ay2_C!jbEw`Ae zbB#ORC}I1>i!N>L?Qq{2tCnajqajm(_c}d~C8JGrcRllclR$S!#7eC+gh4M_1GysBYxSI;0gC%h0ok!T5Wf#gLXXj zSCh$27UODmxd&LeZJ zJ}4$5{}h1$6S%ER?RCg(UR+YTo*(Ru723f`T^1z`{UKY7<&8o7&{j;20jVBi6^X}!#m+r68#_#&&J}KCZn4)l1 zQ}Sa~sr@!J6a>S_^K}v3*sg3G%4K@0Nx3YTYk83Dck3SX?6oDm9^pEVQ%zPeJaWPm zGRdE^HsFi36~mEd=@7Hkc1DCrrSTLPkJ-v*UZ4g~y>~e{zhUc&-$g98yHT${Ip~QH za}ow)BB=QmhK@1bO$g6Xo%~GG(w9B%6YFlMA-n@eCHLR7g`?CXV1*VJBmdy)#c5ZIYo@+gZ zOX^!mqF~s%=4i0DsuvD9>_Bdbimg3DX0%GQZwd|E-^!s&S2S+M(9gET@&pT$-EzXk zOLsVu1gv1T@>Ma9J%gvi>)u|tW!t)Nd4C^YWmW;YWyN*4*)7-ooQXBxeelb`XFU!m zgO?^!zEr2TWbxZpz*I$9Z+GbLgPM_$r2WFY3Os2zZFtXA>xFJPNyyIuLYJ(&;#b~L zi234}hLe(+*pYYGyM1)VI8e95gNrx})BRGuu5bZD9Q|H**kvL@7~HImvDL-amRK%% zJf^fuIx^U+Pt-ZKPbgbefjl!^Usxt$^HMu1CVX0J*D%uRBXu(1@zO0iJJ-If%&R?u zV*3&U2%&p)CHUQ%4h9sHAP#hcR_l&g+&IuU@{azhg?`j(uEjTm2p_aj758cTga0d&MMl8);oK zTDI8Ij98QNP06Q6%nQ;&B4LK5E%5ySm_zv54ljRjTCW2tmZ_N!K0)qmk9WCixp6Rx z2l-hb;5XLcCH-x&OR+l+dM^xEpYh3$cv!$rs1({b5>_OIN7(=$;X*Xt!DO_4Jnn*8;Z$7jwK|g&`0l6*B zAjeQHO*t@J6VU_rnyp|e=FXnT?9SsY!t7QA=a;f;gBg9}Y!BK76d+4C&Tq5^mkZX3 ztj$jQG>XteDM!gGYl@DBie+$E?S3xi{59*Po~(jAB<+Y6HkUjV)HkKA2U~AK(C-dd zZ^^Sh(~CPN9@Qc`$=}S1@7swUM$iLCr&n7XONnqo4aT%e{B}cry^dRNNxM zM%1r24BqzGDP?MAl*J-^x;XN#NM}>;THjq|Pg)cuRh$Hr#7+mxQJmODx6c2{l6TSi*&akfr&pKr6(tret! zk~ZesQHwl|VORASE7`IRzcQmatY+N7zaEzw?`E*AsRpfDlQ%mr<-7-?5wgUE?~L-J zn)MLkWCLyZ=<&aNhg%g^Yb>Y}>Ylr^RU?&7qU6I?4)uD5u@-+mk=)1qBD^J(2@l9emoS>X3YdgPI4&f06isjrI8w@9!;VG}`BG*+*1HXMJwqieUN*j_gK z#e>a2k(j^(YA9egUjcR=2Tsd`hq@OlzX(eVXhEeKXpH>PmUnq4K zdFL=!I^)pT$$A?|iTYS)hkkJe(M z?|NJvE}$|w)Q(jkOBrPCt<^Oq%6P{zEVgYK>`_4uWMuiP(o(DP1OXKUN~pmmHkH;j zDP}A7vC3x86TJ0>tvq9_#Lm!tChIE0)aOXww?jX@?y8?kuLaD(-2x_eyjF6oSpiVj z4`9Of=lri;0(Bw#0|hp(Fo@QvCdgslnjc%D3Fg z-)oB>Ml3yQz2ClaYLxp2HnWZUTuu>qwEqc=!}FwjD+o&o(JUAuwnhWJnl1g2I{`T*E~n6W^-`t2M=2L+`KHkvmCJ1E;Xek@Q?thUpzlq zp=;;(Z1D#_c7>ZY)4R* zonqySB2=Hgq$3d47JKc{-I@MNAY$(L#5}JER{pO+ zjo@T%zX{(y`7QyKpvI9LYPD8=xQu{<1s&c`s1z;&>;H19d1t}kGw50IsqK@cu2<`A zjLNLFp!A|qvlhBvG#d5xyCeiGJ5iRwb7$gS*9fnIw|MYmIHuG{Kym3(mRwMceOW6T zMDx?yBjK&Ti@sBx{T3x28g{p(#}FZ5Yhi33Zw#-SL51_cy{oI36P@RmB!ZX=Zk5@< z%`y~y#Ny!Ur9xAs+78SJR>*dc9IR_hGPuSwQ5jbPUoCla{X$NDs~odJ=>ef6!%|PWOk9S-UQ_54AxIvmDnv9OszVDgGp;}j2D((dLpXuSFK`xjYU5w*P@iU z_E^~JhpRNDNN|L`olj5c4+m5bj4sWgepvZ_u&VVaeR%jyevPNtPFyV&*7p7Tod?js zmA#0n1l-2?y1Ut`O1S+d&vbPk(07Nyrt;KXsmMS=JkA6ua0K+NZJ93L?<)9fNye5x z7)>ZAkPxJ4jH9^GI&}we52y9ObDD#1Df>F)L?eAw)ntd-wVGM>d+2V)i}lc?6-U(z zYgNX=kG--X1n-rXYu2)>qk0t=YS<`V^wo2og8}0cVm-AnSMQJq>61QNw26D&ZSaTW zfhF`B#?=(!+F&|S)JS|fJ*7Nd@v2?9tK4XmhUstY>rF4B9!JF3);?~x6Wc6RHrg?9 zPkgC(5nkuBY7ApBW*vbjo^BALoM=;7ZHz#iwp4Lnx7CU^-L*A0Kg|YyG}--j_Hk59 z3hq>o<^ki%SaB@Y?V~Zt9p?1;yEn_gzVfk+ZyS%CJLj0ZCC%%uu6=#p%d~~Bra*5i$0xS4n7+rbJmv%LvQz z`_ERpC}ZWvDb?_k%C#GBCYE{*SXsb3d^eIFx^vZDQWl@zy=z^-xz)r-m(Mm5s#D$tkM0 zV|B`Mk#9`dlkOP4lfrjr;#CNu#DPyOr14e3$TTvLFxfzC+%irF64Enyk02c9d_5oV zcq<7D_hZVv#;avDb}MdveQt5xF=&7Bns)SaG(H;=aAA&{_}T|U-94rk^J8dZe(k7N z%1^oFpF{7|4vJET2##Pdc%rs{%^ljb1H>BW+L9u10$v(%^-c$XQMq&^2zyWexM2K! z%Y3ThM{lR{?^E4gL^FuZ4|AZskWFlNd;^1`b1IM{OVbXu2Kh<7j9$qEnoE%n^keL3 zJlK5P>hvMRR>Thjb4|1<_x#Sr|0Rv5weX@Ai(j56_a2*R1bFy0OL;d{aSX*a#6kxppRF#P|#VL{S+8FGThit*{ghD{A%Tv)n;>`0&KiHA6Q)MN=(Gi!u zZn{#;Lb<-Cj+taGP=t5}tD1R!sW$Tkl!Gd4UVHW&nRC2R2|x9;|C6rli6#IlX~Z4& zDP(T%u3=re-b)NrJ<_X-SfBYyb4r{J8&qrvFwEk7+R)3@_~2_;mB-lIo~7-$ckhBr z!Sya5yA=yz&Yelu0FY!da0*JN($vbH@9BUy=GtVN5!8e2WzpTxiCXva(EY-kh@_x3 z>^|yBD_HqU1JiR5rd1hc_KkJQCchzyls4x4x z290|!j0GBOE^5_O5qZCl3?@S5Yj&(yuvdO=jZnOu(ur=`3U-u7J5`GSE<&gdJ$zVF z@u|L+TMkh~WDNzMz!yA0i%QqS8=};+lhD!O(cz;m+Uj*Bc_~Rze^-8NbT5bpW0mLB z79qoi*#Ds6b^IjdaZYU<({|@83pDKuBii)79b#l@?extsdKE>vH=LD<#j?)0l%f|LSnN1CAeO z*xX^&3X+m{SkKNcY?-JBq!a{I8*qN_$QV8_WCX)khPYT0Fq9=JvhupqPS;{Jl&)6i z(K#1IyQ`pHIl9!Fy(p8tS<}OL*cIDXKbx%B4i502vE4)Y?f8g$Flf`# zb5E)I8_??r$zRFt3RYW{KG7XZ^>@oz>YI))x&)q`J{wpUbgwnI^py8Ne#4Cs0Nv<+ zc+G9(FCKmf{`}QdyQ*CD%OzhnK7|b{4+!>X&KmV_m+&=XN8pJ+hgIyG#EnOKonPXr zB2k^sL;P!5An~Z2S8*Ayd%C^A6C_Lr51pbvH&pdd40bp|ABOuvZ?@;Cm}3h zwhxEvEd@L+S_Rn-^l3X4(1viC8;A#ET5~ii1(la9!%romNDG4WJv}5%IglvLF$vA7 z1!FCb4y|p@MhhO08z@AS%ij8|H(g5JDB^IVy}-362)v; z(WJUFrtMdAyvgFm(@a{sPkGEX(BqNf*=f>J{&lK}d)wyJ;hew8vVG&-g|1Rc_dLfm zezRz@KKmo{q?jd@GWePVzqb9YRUH3aY56E4XGbi_qMW&Te+TCANo<-^{B3ZWo3=Tm z)hK6mCln}6TMvI~b7ZZ~uKu2^pn*PfGnvsBjeH_2en0ZM07ISosHS)0Vvr3YAd$Uk z(%QA>gKUi(ZC3J`Rk`)jt8h@AEBr4yjW1+w8Ph!>Uz#6~UTu3fR09OrZ!jXwnp>V> z$cf=?UwEYfI@bKP;fd3J)jK<%CJPoGi8)!=`(Bm9!!2lVx8>Eal3AaKMw9ZBzbzDi z3zv(IDA3C+aJO&YZrF!L|3xz|B-@Kjvr`9v*3rGfeg4D!LT_(tzVgxAZVs3T7&}g- zD0k}GXq-ki>&vD6^Sv!6J%);eD=;)9C2eE7?-tqqyG7&e-**20zHrmaCB z%x}7-|EE9h3pyFLf#HCc?6q#KWH*faTg^14AKjY_XKlFtI~8L*X6*1x>6rinTmJuCz^7}hhXi3JWq%JLoXF?Yze|qc!PhY4L~ZTk z@Kb#PKzH6B-?U)-d-Bmu_sGxDLD}0^`F*`vGJn-1WMoKdYHH$_diQ)W*q@ zb$pDz-m!mTI56qYXiPR934q&sfd2EC_n9J2PEH{qC%5AO*2{zcHECnjTI~yigG^dR z+L22K(ig=q>RUg33IZJo7X{=#M(#vgHQ-J>^S66X`~99SYaIFL29=HuhDrQ~M-%ld z{P=23f`j4DT*-?!t+k4e^v1sdpIFduM(gc{SCcHf6_3nJau=xo{`govG_O4AJr(i7q35CbonGZd*_;AuKKZFK1K>{jNE}X3F+5rX%Wrtj*b5V;f3)S%d6(u zEUAmj9Uut@l-t+(2j$nSm@MOIv0mwPm-quCgN+_5+j`&k7YWs5Wj*E^&Lb!4Sq?;W zSq#I%!m|IOdwm0#SU-O+1PzT{p9~r1I@!ceDH(UH%_Vetj{*dpknz{d{`|Dii=CaF zvWIaoZv&hx6TF2^>;^o&J@Yg&H&^K7=zaw2a))OSj=nHZ%8M^<>twj;o!ImUEVI>7kH82%7Y z+`Fmy3uk!_mfA8g=XFm$yB@R7`zNRJpCrJ{?UBKaP#O1x!)7R{)crC`CL+i!T#Q~QaRthioZih zgCUdgW!k^XNs~*6LAHp*Kl(c!%Kr!y5Wh1(S?pzKG5l9K<>s=yOucMcoeNU=Up!Xm zl+dZO=WTAv&&bCD>(xM?y$t&Fa&;P`?g--JiTaaPEbuVCde$pPIyM^lr`!Ish0HGu zjO*@4{BHjHi8vlR@ocMG*Y9Bvx>3jFJ#G`q8$ zV#pB}iWdDR#{Bjp`?`SkU>Z5?ng4ZLz8Qd>6`t&v{q4j4xu6jNuvq_pvHpK6R*hfo z7jo8SJ3EU-B#?$4CHcsx2Pdo3+`Ff~q64R-Acz-X;{o>)yocKoPGMtT{j2^7C8TI% zA8VG#nEoPOXiX$!$RT%H9PLuj>tjJ%a}LwO?TA9#OPvSw+CCw+$QSRxe&JjHs(vSg zW;i=`7{;P729{q5o}fy?EePSdTA@qZc`MXt9xn&a0Q;HyX7a2fOj7pK$XDO*ZdmLH(=z>z&Tajik)3?+{kf!1!dLzm{B9s-+Os_a_d3dD z!`BsRTu5gcn@2&+vW3$`f|zP`k&Z=~7a)>n$@?m7Rvo}J-f*ioO9u7xW^~$o5Mi_;NBs(%E6v`|0Da;az%A8U4)52k_HSqZ zy9};wDgfB1nji>uCxGn4Y+eC!0EI2v>U|99mCI-T@#+w+Y924kK(#(0cLeL3Ut8~lx zaX^!@Q3PkQhTGK=q#eUIHIEC(3H4SgN6X1PSOq9g`70lW<(l?B9p3cIe=lug2DI5^ zIRlI4pZ`409@cC@BaS4LS6IsVOrvoQyP4xPZL}ytV`rK}L<4IQ9e^&XjiOOseow;w zKkf>kjr)cgcyKGUzj8+un4cVpX-={zxw9`0%lDeMG()~&=fqYPoGl*J5?N75OPJ`n zSbzJv0c^zlA~H{ZcAy;J(b1BW$uE6UkHh83m-}|%i^Eoij~^FF+ca7OW+7fxRaO2O z9ZtD0nrAUW%cFb)Pf2g_NGDv%3B41szhgCC?|vT{4%-acd@peZC2VO~VI!*k_M9*q z-%3-y{73EJ?h%;ZMjKD}x?n^C+!l`V8oP>=A& zHi9TMSo9;4yga9YCcWUgxp~bOhqI)rTRNcd9eKE6P|8T!@?rA`C}hWCw6N#A*Va)V z9O5p5aBuKd=(aBwivUY~zWpwhOUkP2RUDtoK)%6dhv>U{@RauQH5ccOgbEjc5LzA9 z#uBpCqevYkt@(?vqNWRn`Wt`r69<0~8!6rm08_?ga_&TMe)E{54*h_BQ9rR~amX*c2T}seb$CVAh<@-I2`lz{lHhIuoOr zR3gRhu}C6*?&Q5mOk%6z%QtGe?RWXA1-n>&SK`aFZ|soPA~7k6`T0U@viA!DQh5Dv z)OTGA2L40e{8rxE*ECqS+Im6{H=-fg<(iIgkKueP(i9O+_65977lytiNGj0L)1w^i z|C>B_03dDM(5cYwCQw@?^Gc*LBAM|N&R&H=GnzlM0Y*u_3!1%Az|dW5tqcox{}1uUCyOl#&`4+njqvZfZA68Y6>mKwDB@rD$MWr`T{*01$JqR z;c9E~V{L)KhS%#|x>L*N_Sa{%tM43LW#N+2k7gHGK#|b?c-x}9s;pA|{!eC~bWV;J z3wzt!XO@AQCU%^Lr(a+W2dGz?VLzj7;hw0Ujb$LL6n!tcZsHd7V7V}&)taix9C2Y_ zt%LQC-iGm5Z>~nU6$A4t440&3(yJaj1DJTv#ZNlt$3K1$iRF<=B+)3@tFb1DNA=_x z)Jn9q1P$IdXk!xU+hQ*oM8A}^M^_IK!(Y5i^$}^CuopXXMgoM{U6sj+NoI<(Tz2n~ zw1?T~R>=E2er(6i&Yr3#7(T@9Qp}#?)hdl`tonRA&X3T@%qpA%on@+{1LWpQI8++zlB=Gv%o!R`s^7T6N5_K{WPBX&AEFB_@5*a7{Dn!ALNYJi^>qS*(YB^~S# z7P;91rIsOXSoNQk3Y9YbC3d8P_ILq;fYeZzDW3oIyi!pL zy6w@5KIJ1Zq4kZ(#(}ctB}U_cJ2T2W4pOta-TL?RUz!shYhR7-C~4BH4xYCa&{fuC zPTJjpcs*UNP0n0MwkWdw8T{*~X1Z!fwMyuZUssbpeE4&polMGtm$Vokml?iwJeovGQuk%T!-uKepE<72CmePPQ74yJEhwCLXG!g znqx%NS%89B8Y|_gyCUvW=as|3e{*IURBR?j_xm0NSP{x1a<~T3a%2rprv=lAmQ;JY zQU}<0Q>ZL<;D|Fl9(lzeT4T4IzSXDB!$)kWKR&Q1Wu9=Yz!2Z@u=rI+mU3_^MvYp# zJt~agaStS}3*PP+nhw(po7u0njo4pIqf+dCdV+^bQi$W_g?ENasvqvN6qoc3mskW6 zYC?g|{iRyv2}lL~#)D^kyV#}s#G>JEgupTHitt;`ui2w+eQQ#Ex;{pk1>?{E_k8T1 zY%Q`zIDx=e$wQmy(RnW^WjZX+Fg%;Xap}z~wDMd3{v@-K2m__ES)WhrC$owONdXNy zM&aScsm|2kJ^cj!sT#xGGJBzq5tKV-_ixA;dydeTUp8}F+tvubuLDmLQ;!Okg$`vz zJqLZ1@3xX(X<`p6PvSmedxY4RP(u6w+q5==OKp4M|S{b1{? zQtlS@!hloG{JV>t{d>+zC0|LVY>_aQn@Xm1v1P=IXlH7Eh09kcDHSd{o$wiJwI|nq zu)R~ExhZj@G!>lZ-{v}6;^{k4>7@N8E^dc3Qeq+Xx7syR%Ljztbf-!r6LTyQmx8bu zpB$qcHC!O25bNzf+Osw;YfTa=&;aTVt{}5Z~8kaG?ma&G&v>l5u zxwZ2?pkHz(NSVJ*@%=WHLp1?R9|wo6?TjvwQ*=a@N<7q6+sqW~S4<@KMlW+mqC%cB*JNPjsygi#P_ zYHj4!{sL!t^%yn}u=J^i@i`n9ZvNVp`ON5=rxjJLN`zZEa9x&O|2_}6=lMFXzQ~lH<2z1RKaVGI zppQLrUf`Y#`D;Nx&eeI5;^5(wU8EbN$n?5fWI(d`-N~z%<*?qtFL(XB6B84OO6#*f zXSIngOaj#to)6uO-qjD|KzQrXR9#GSbOr|3c=IoHQAkbr z1JVc#CGCi||6-ga$@A;fu)@%8>`J3aX}SA9aM*9MQDC}FmF?N+-E-m?HE5wUbxxiw z^j*g+RnNKaJ6riCxnqi24Z-n_7glhx3nYHF-GTUG#j{9O(IF$Xis3VmxBVl`Sr3^i zdlWsv+rLbSO7pFICpjlefJk-cE=-lGFQvi!YqAzYr=d#ur|O@4KBV+0;?#BUHh`vUI}?m)>oaCFw?OlRDL~=kKc*!TnU+NiP{`{^v*qH+qBpgUh?gmc{0%G zbwQ$f(mY!Q{w^V9Yqytn;US*D)R;`eZic6rnwr|+qwD3hF>`J?A>Vf%MHX2!+X|_P zf{T{lQrvb9bhv>MWHZH5tS>`p&?bE+l&yOjLUIUM=`1|NO@*`zc++rZ1$PV{!H7LK zD=MJvwNY+?v>9RTR~_*JDzzT|bDZGCl!w_n^e6fLt6hv9(M(K?s_C*dIcNc2 zcB^B<-j`m0|JD`EzTsGA#AtT!?n0#_nG)n?e zHY0HqYXuXkw1eY$xobC6O=<|zBq}J&ZFe7^lQvvxWk?BHtDbzv2DBt1SL6x$(Y-k5 z{zE0dU%5W|o5$~F+v%gxK}$4whc)KBaKbbynre*kjNYDE5=Y;t7{d#4LmfL6f2p>UK~C&7md6JgMW3yu%`?T)sxE`eC3_y{M&`S+YFCi0!lxzzpdewL5q= z9+*?earNrea;;%wvqEEs25qVPu$~;nzFS+*nj6F`y?gEypSkbAtLPar34^0@yPpt_ zSV@C!Dw?!RH~TLvZXV@O73zB|7G}AYa2y-UEfb^-;}BF+EyY>?z9$ZtQ>Ogi$ec_m zTsRYEbC1B`$vNjT|E&UN->eX@`N?9?-k6`4U%WUvxZ{;6ePa#wNWFp<8tHAAl8}3f zAP(Dq?o8-QeSRna!EP-z0K*cSTlG(>13J%~eD^v57;|jM%au76Dh8gKZdAJ7B;p&y z6p^)8b5_pOOr3;QKkYQ@qq@4DrnH_{*nj9e zeFsuI|KfR#QX*z>(D7!#uY|uSG>H2!63)jvyfora`5|YaDy$4r+zneBe^?b$l6NUHRuKUU}?g)8Ib06?`@Jrd}@FOSz0(!XoV zA47wia~9IwauV0qee2M6b*u&V^0dz6+;yqN9R2f)uM0ikTwU^DW$7&IZay`-vkBF_`qisDDJ2%v3Y-5jY5RY- z+KbR|bzgILxL>(@?yLs~NKte7)6|cL)AOwlNMq03*7^?Mw7Q^&6NAA^O@`1lolc(HYyI{j7>{H6>F}-BIe5y6{ zB_@Ik*#C_5$)OU9LFm%?>#iMRj`Eb(&#{D%n#j%o%yI@5(d0FacHou+NdwG? z%=dCuvc6Vz_P_*C2v8ckY%X-3;o-sW);;nH0YH&~I#NNqz*h57jy*EuS6+1f>5RKLGVW&I26qQ4o|`kG_*C zE%xGg_{A*cKxJ<`CAJ7KXyb3f5^>~bV9as&$lqhwfC0W?lgO%yTApkLMmye{sO?)* z1TF#zr}=k>NdhqS)=^~oIUm3uXlpvMhy7;RpOAbcwsq6N^7`?A&Bd`w1 z=y1qInm&!C zVe19-^Ov3i^YrR#UcVlk>=#r&mXjyBeLavQpzLrNm=%BTh(0v`6mwRoqGfs>z0UNw zE&U+utk4-*uK(gsav6ZGBu}$qoZ)ST$QrqyHEtaH0F8GM$hQ*Uo})1*4<~4T3z~FA+Y&nbs#RZzxc{|tz z^hibto&&J{G}zPae!azwc0n>&Rr{T%r7R~UxV+AoCn#9i2KozuEf^p>WQeG{~8lA?*U(~^HOIOfTHoG&A=?*01nAEYY*_R>B^-) z;Z7+kL94$;c1Y9H7;u*5=oEz1L@U9(fA6f=?$ezL3(&`Ndt(4g*(VF$3ay2X+f~j! zl=-oSL)F=bET(t|0yT0|Px~#qb721iSFdmiXwK1P)TPygnO&FiozJIU2vyCldslnL z=;Sfx=PZ3KN(hejY1hV9fN4sSvk>=9lz#pV*W3O?~$3Wfkgl@AO)ocY{(&8pa}t%sHW zoHCCbXcFTy^W4G5b+%&dejTwYB(ers-i+@3=GU;9lHaZy?(%EKB;PU%IZ&(1x9{D7 zf2i3oTHd&H+ot|Oyd{fVnpUFeKsA`T_#XO`wSF}i%bl(QLGmm6He+#guT~aCuSuh_ zmK&<7TDz+gVyv|pS9~vfU<+MJcY$7%`x|v$Ild8C%0%Ewr->+fD_Zudyoce7?{^Cx z_s{vwG^^P(guN*P%>s;Yf)BPT+3U5#C5w{p`sU_N<8c2%OA1YvvP%pa_3L3fIys3@ zI9o~mczr9_rpoILT^THVQ3wCj8)w{QS(J;H_(JBEX5Fz(lg_~Js`Q8J5gG_1o|nbo zpHxLe1|0Bv{i3+a31GZ1NnFNu88Kj%?`vxClag8DU+s-Mb19P6*=azu@3$y5m=~8R zc=~3}4=5kT^R?6ZvgCW{+13_cqWttYIk&@$@<%Ux%E8^e201XNyWK(&o?J43)NilQ z%xd+oN;u|y8iGw*_i%Kr`(Rim+c259z+qtO0^@@@Fp`=HC->)?UUwgrlcpf5HYz2-lmMf&`(pzF+q)3QKIG$o|Q zZBM;s3J-p?8d_XNy6+UOPF|gmz!;yG8}=MYod_hv_AEE~>mBsvqF&cVmsSADdYO&H z7TmF7hX9R@zgcPWJ?_FREQuAln{Y9!W^Bm`LCOdjDRR(LpVwWO`AR(yu+AX*XAa-m zR~d>*NVvB=jK8MzNjuLZ{fdI`;FE4<_SLkjqS1zRpzwUpcd?T+OR;Pl!W6}fnpu9o z?y-bbUXs_uIVtF&vIG{x69kQ7(Op^J7Nt6HkMw<8wAx7%L<`QLr6O}UuoCMe-RBXC za|$cL+H~3&9&c_>z0_OzfUE?nD1DUXJ+L*`JxNI#Uf-C)D`=MD*C5XRXrGC*QZ--h z4wH141s-BzUjFLfeDZ{EFkBCOBj&p@Jyf2$${ln0A|#092lYpQajWIu58xQxpsAGu z#Va;+aV+_}tugv&B*pm4 z(SwIUZ#fJJ0;aih>OK%d0H3oAvOD3$SjqG?C*t7EjnQXHb#?%Za_B(poS-dJdlo=aV(|Yk_m*L8ZQH*vTHJ~iZ=n>I;_mM5T8e9N*8(l> z?rs5!yA})X5`wh2I|RMy-simUz4yPL=bVrC$@;)b!kS~wIp)yc7*PWHmTjw<14j_E zeTMBY%DJnJY0QDzaZSg3Z4_@6Ui=~sLF7Oi7~y~uh4jjPJ^cWSnIbQe&Y^OL>iwhY zq4n>~I#xEDV54j*kBKqspv)Pj+`TrgDt#)z${rT{9IJzP75~B-16q5fM&vnCPjaQk z>}H7v&=ezs31(ucuAK$6xZ~_lnUfRSev8Iuc{JGBl<(7hen zK~!bXH1|Ynx_e{qpg%MLUfuPs3oAtVE?sO|xI-Lh#7GrzH~2z@^w3d!@bV#=f@#wf zXGU*5SDtfjt?Ws8!A(^3oz1k-iuH?dEOE|B)=gjEZ&Yszqk5HPJ!oqrYOxn7(&$)^ z8U~H3_p|;l^Gy18`sx89Y=^PypHndx4FTRvx1BOFGD&X4AAFeVeJ+}oJ$`ltq-;L( zS$8z^fh^e{z2>lHT5Xm0R{^Qy+{~kL8x~CZqbr(~pI00cuP?VA&L!Q~GaI2b`zAtS z{mKtMCV;lJ)K0>1EOIAUr;P#Ky!Ap4V_lAbrbjOG;G`)E{RXv%L0KmA=PaVqE#jqs zLGuTkF~`KA!&q)TTV&tz=kZwz*UulrTl^e$ZSow21?UXhvKkgAix8KgH48});jyVx zE4o`U`?-eD=d^xqOTSAk`zyhkx3lwyJX&g z#8VNaX9tT8W21ixj&4OmF@tL@GYn9#w;!&1Z?#*NxJY*(xp78M(&l(Lp6XvVOz)@*XkJ^r^hp(%^kPDETuEfq^zr@?+jD>sd& z^BR7FVriF5hV+Wvy)X>J10ITnzh-kjabti+<^2FLH$tUNr@tUB;N9a|(xd^josm#M z7I)2+wYZbZM(@W0`RXZ~jlTO^+9%RFu9~V&ZHvz?%-Yj(zo5Y(8OP69-^^W&Ef*ms~)1$5wat4wQFe{@HM}xg8#F1%gck0 zT|2bFjQ)wMaLI7XnvY?#Kb3BmYy2%6__B@Dwjsg0A^`loi~D9-h&bST)$;B_raZU;ym)|RL9ba&IZD9d)UL02nvu+4fY^-KbMsVX*c|lGJA7lW4;Dh( z8A~GOv}x^zYUqopeE3hoQpk3^5X`NsQwx)B#{YZ(RQcvApgAXdhm|cfgvDw@DrjcQ z#lzte4&*dW#Nfd1A*97=_23BVGCY~#_3AWP2+o2+Eo=fkr&!XU?M#e?k`dA33prux z7xKl!6>1JO?#IW?7Hl~4p{3~}rtfMr^TuV+P9sujH#_XhmZO*oRK9lGFgax+>Y9&g z&e=>BICxrs2&$927vz$e3t`WdnzQCZ5Uq@q9~GrD zDU5#EyrOsqnp+tNtk>Bh7oOHcFJVj5cKW0@-lE`Be}{L`U!un zo#Jml9PzYMGTPm0<8m-4?f+(r3;;N9+c0M}0>4zEGZ&hkIgr71*tMeSjqgKJ;A=*1Mynj*^H(@B8KMB7=LNP+DZnhs<0H`SlKj?CjC@t%Kd%~7{anPv; z>e^~eL;IaH^{fRev+LEsx=Lc8+NW7E(cgsj@-?_ngPSx%BpxtVYKL+7G%hB{K!&+% z{Y^}nMJ1RhWJ_#oiOqnVup$db&2uBS@@A$pui;$^#4cATC3%;jf`;>#5$2Jxpc8 z&~yePq0!Pf)Zx5^HjIe#IcZhCDZ-Gy|B0*I;Y68#F8}`n=@Dh<_*2%32Q_~JMetd{z zDL6O;&X~M8D^GKTp|Q;^UQ1)gyk2hmwEJ0%L8Oo~?yt5yjf{p3J>#%hi4QqkZgrWb z4SLta)s)j=?M-slXt)5iMYv@vjO$OXKK+Ld&f=phq&-BLI~}j_64u^x9)~08Ds*T3 zK)dCGvf))AZq?X`+knj-SZvp&sX{xG#WT@ATkXEJZrBRNv^yr36pIR(jpxKF=j!u`syT&QGn=7@N zTe)lMH0jr+)ZY#Kmnd`Nv1(Rxc`&vnVkMg6}XNyd5TjH1Ty2L;XCRZ8X2S!Wo zN0*)xUZVy`BtY@agL+#$yz@%$_bzzLgHsEon$)NNKdAWczk)7xp=>hGpG)210fnr* z6?rQW-c1H|W52xYOr%pm>y|qMCgb@uE}@V@@F5En{$h+_$H0hgRL~#xd;@ain>(=a z+KQKc9D1tgm+6M0)=sXgbccd*&_bkQ9#y-D_~z_$x$HAsp&h>hR?8XDiLbu29Ud&# zhcnKbmXt!XP?xSsX6+RGr^|K(^vkTHTzK|T6GPVc-bVFtb8A?cL!2~#7)%%2{yJvu zhp71=_eTe^iAHFh*s^=0bfq;w?V=&`l_yO?qtALpzue@UX~6EjQx&wKfy=41(kZCo zxvFh(N1^fdhZ5MV|20UZo2%-Oh41UpPD}Jm?U#B5$B~^Orpn9US4}{^twux8T4$G+ zCVaDba~Amevxk8N$l2LY>$*)oWK8bmpJ^gp(C+U9xDg{+RO9JW>Oa-A<+%4Q6>`2s0 zM}7u|CA9aAGc?|NpKZ6agZN_Vp2idS4(p=7ULAJ7xA zAJT}5D}yG(?3v2@1wE$UCG^jP1vEWrGaK)mwA+VI@Ci77#8``vncdkB_ckifY~k9n zZbxft?moA#SP%Jtw{nTvq5vOxpX)%hhD$^^riJI8% z5TYrabk3DT+bwrf>{f=lAa1RqDG#}0uh6KtZT42m<*^7kpnY@*;8q%aE+=vn0+x^4 zH3JZ^^VdT&8V?WR7KXyun<*5as5`mv`?Z7I)8%_z)_@oe$7MbEkvG~*`Zc0v+_7gf zl9zS-iakwlxpQkZUz!e=bi+fKDQcM_C7%Qwr|GYaucgs$1bLR-3r?dK*S(*5zmNYW z(WRB!?N~c|Im$*dF&JpPjcquXPp}&WC-|I#2V15x6%}RRf<#tQ;|TlYjl@uknp5LC z@YDjoCQK=^z6oKdUK%uXsM})Jt@A$J=C`!iJpm^-=#4N`J`F8QWDDJT>`shjvk&NS zPb*(8FEuvKcaUAX+3?$XtrwBU-S?C=Idg7i%rfZ69G)h3-?)CZMBqj97RYsR__`9} zmuB#Llz&REllRk>PGfRYO(N_OWRMd%5aypQ5fHKo+FsLnup>51kde~HT)FytefrUg zH7JATp+wJ?D$hb2`0PdcR@WehNZv7k2qQbI;QSwso2{W{oMNBfd8BcHG&$7F*7*?} zRy)NlKp8w~&y)`>qMpK477%@TzU{V#ract) zr$fO%2jpuu@2-im69y;jnT6L*_$eu~KAiF9qY<*Ge~GA7&{ECi^Aby!jv|&vOG`$s zk{EICez@^1sum1DO`mKUKeQgqf^fLp2)KQ)KloATx>aigKH2Z)b+Lt5Ge?zXBWI-= z`QU;t_mQmUD_Ih1APG=i?t)1s_p%hBhOns1cy=_jD{2hvvRZE571K%v)@O0KFsJr= z(HqyTsD41X6F=U%5OkcLZ}<$sz{7r1ruC!R$I&eln85;xV@nuOc!fdUXD&30>Krpk zmCIvIZ0?OLw(T|iIeytUr!EW0K+Qk`BxEoNcUZ5bW6T^=*Tcj7E{Mj=K-qTPZ}gC8 zxlZxCx3k^vdy}N_+8PP2%mi5~TcSVPd}W^QLFBcq_NC89<7`<*(t`sV>z6e{8*bR| zH2?!e@{C!mb7mN_@+~{3Wjz6}Ijamlvy=>hgvo9GhhGC09tx~p=i6jw+MU)jUoqj{ z!u-=UU+;oYvdeJle5&t)_y&0PBTZ!rAEF;UNd$N z|CD|X#|iE~4nTw5L)0U6ZQXd!C(;D-ohdWwr_}wru@Tt{?k8* zk^*{0jTmhC%o2KU_h~GB9u(%y%kr)c@(L|9+Mg7L+QGIELweO%&Q|X!R$W z5Z-5$|90jp;!vt?RK(x>w?yp)LnnR`jD@HR_isA?)68$Mp;Z09w;gYXbG;50h2yK+ zA?^&og94J+1I*rl&8I8ZljX6Hof1W5?0>#8f|Q`#OyH^lkE`)Hivtz z-W7Fd$jBz97jhAi$|moenGMHyl>Ht)%$ya)CrvdAceWpJR@8V5SW2$;4YbzpYiQ|N zw5H(U>n%Eev_3#5z?;mks6Yh*fhzuzQ`=5FN!@6clPa=bezYl(e@y7p!FGSNieOt@ zn4>lHCt&Fgy1zM8E}cPfe z#Q!F)bH?&VvAc6SYemzK&pK43!iuK~qx(aCDUR!-v7~F3$eC zLkIWEI+w!_Y?a<-_dn^H1&m;Qd7p{)cHk)@C6vziUL{C^rD)FDDn;B8Uiy2a1nA;HA|CIs@yW*Z)3KaKtC0h?$*vk$SXjbgmZI_g3#zAh5mt+<{ek_( z^17~0rw+NF_}#a#qceHFmndXPmMZ0JT>6n{w9IxS*C7X5jvGsWxB&IPGRAjAglcYA z_gzOP48ESD8mZ<~Mo0U|->1)(TD?ZgA5zQ`+nvlQN%&Qe($QqY!jQ?p08Hxc3pU^j z*ufj(Plkgh1%!nnVeiQyd}jOUQ@QRmno#wKzgbh-nMw2JzhPv)=s$}Ma^|j+bk#ff zlEG?C9KG9J7=By1VX520&tZ*#K_V3Fp!bD)yH15S-!VXLZ!uTS)6MDNoJxz$WrwAN zIL1;(jV-rPfBi@f6mK?|P<6&xQB)QO{T&SYLS#GPXDg&}{f0D$j$|GVmug!a%tgY#em+HO)bvF*m!)T(N>w!Q4N0h*U&9QO~`Yrq7?V~kVc%*5l z*3mFDltlD8*?rwE`ODPG&Tiw8;sY;@+g8~R4MTNFLftf9&zB($W8>3J5~=^zSU6(| z3OqX--iaBzcBKD?fgqA6jlDOc3dV4Q@Cc*dy+wZ^+Q`sZdN1oup?ZSO2f``9E(3Lq$xKTX9yA z{Bhr@=sy?Gt@fb`#4MtdLsm{K2OUvtC#7t??;#1sex;o2RhCE(BcTQLMp znIMHC@Y3?o29gHB;=KuM<*+wLe)%(%DI5f1Vv@41{CJx~;_{N}oC@1ReoCU;-{_k+ zl(e*Qphywat(!ia9#M#LgOnc%8L0~SnNS{iOW(Cfr$)~s&9S7RA$&6thQ{p3acDn| z1ZH>xeh^;IIsq&!>>O0JxK7yDqn>O~Z5L68UIam3o4L2*YsFH}gH~1>r%~RJO56R$ zcFLQWIFsitCzZD^h)$WC8{T=nDRogwy+?3xb%2K&PK#{M=V=I1l z-)HD0`j+m)Zf?e3K;RMoER11>h+VFbhML-pwHNx9lG|q;*3j_bz^IVRpnRWitZ(~z zeFDAnDi`5bZ%gD(oKm&tRYTrX2PWK5GBSSa6C<->&6SS)CVjVaO;@dw+TsmMAyuc;FChCjWCPifJOOo&xbPjKZDofOvs1B|F*>Unhx*k!yb;H`1VL|6*18zVI^S&q{OZOZ7Rwu9LihV z(gYED$ifJ4LST^Z5=AVL1I<&+?LH%iR_H?B)cuSz*QThGcz&xVA~>%ns5!2GhL`#f zuv6SXIIX&B^z{rAX93lC7B!>1S&4l$n<21Q8dn4|rCxvTPYYK@(WdaEVyLcMY)&?7 zG>po;d_jcz*MZM_z>QULg(P~V%@zY(f>Yj|*o zkOM`eaat1KOdw|p-!Q4e`3jX!hGm%b+W1=zlT$Zl1z`Vd(!NS_k%|ysq3@haIDhxm z1(J19=eKCge3S4jj7jy_R&d;eZ(w=>7Q1Jjz=ofQ-xT0*$eTQs?n2!MXRy!Mnmg}r zW$8^0i({m%c^>#|UX76APATwVhKqduQfD*f&*yo~xN#rLfe9C*4(z_0$gs66NgGJe zw`WldWMQ2sj36YGArL8Mc*9Z49$3<`pCWr@6y73!D*gJWc$x-l5Qe%7?)N%3B*FjU z!g44VlFZ3%jJ9@9O{wHiZ8_n>WF|X&FiN{d)j69&P$5?#Kf;w#A#aoRiaX9Tr#{;* ztF{_E7wqRh=Ls2JKmtVG7us-R+E9q)g0 z3iw+^D8bDq&ugf=dEtiZg`mJX*?!%CMvbPZkqw|XZyg(FxutSP=cyft)Bkph_nhFo zsFUZW1_3LdC8Z1)Yj)};eOP%pFT+h15PJHbWZs>@V3l)6iFxgDZHvahGBY|nOvBC? zr2%rsQH9zaB7*PgK_u*}oUr}<>PQr4IB+@JeQByfP{yeA)zH#v@X}YNYsUGZs+Q*^ z2*=Gg)eE}~a|(M9WTc9vftT9YI?n1xYV3*}=$DTm44p!@(uN#zAXR?|U4k}@_}@O` z6*=5?2V6^*He9o$q>~R0P8eW$r4QZzkGqoBj$2k%Q5wP3MELIAJ3PFvr;#VmNAZ8F zAhaN;&sYKNnj(+gc%iKY1KLf^@cJ~Ri#g2E3rnhkc}9Nq(_2If1`4u?QR8W-DjcRX zg2v7qq~8WNTdE7nSu36)y`qKx^Xe=>FKg?LX410yrg+D&{j=JnX?Dtd*a2S1op>YU zBJje5W@=zm+^QCE(!2{AbyHD^<194Rx{CL{_`@)AtV+gOtHI z(BKj6ZRC-lI>8{#p>^g7X>*f(4Y8cSQ2gS%!+tQffHEJYPKRv#8OP`xNIr3yQvDNrfccacUPjlDkQDZc%~b zXrhyhz|GC_5Ue|7*hy#8u|FapTU$sD=&6|+dmM@kBPQPIYn)bqPWHF(8^S58t}eO1 z=gU1A#p!FGmJHL+9pAY`=F{rZFWF;}(8ujwb!n&)5`pa1orcdr8r|5= zOWp8ENq^qH!zKK;D4__FB7k|g@x$qZGYNMQsJQ*oM+Vg!Pz#8Ii$kR|)=bU5I26Cf zp8C}vJ0x2yuTUFiNHSDS1{*E#W3hsK3siOOg|1SmSBOv-1*mhV1l#yC`5Az)uj8E#AhgBWRiaflMY3^ zlnQ~3^Eih;qP`$sr4hEBRsI^|ybfCT(aqIVJq8ijZ_XI8LcxvrZ~3}K`mp{#o$%de{=o*C`iH!~ zSL%uxj*VGg-*EOFcQk$vSulQlFjVtqib&VMoKTSDzdF4s z)w9}}#X>Grjvn4F}Gc`FMf6Qw_&_t33r3v?H@xt{V#b%3-|cN z^r1_oP|BW@Jr*Wj&DjK{A}l8>N?`mNHX3hf;cj!C{>!nq&<2vf5*)3t0Da7D{>Z~y zDmSuXKDLt>Ap0-GKPu$~*JKlr6E_=tGGK_YQ{S#p2D|kZ$uh2&;|`+eW>$zF^+E!(sq9bMHe@d)HmD3Vu$8TYOeO>UY5*$ zuLkY6KA0O6;UTj--92ypj!nR6@XLZKtGwj?p{*D{LbX|{eI5bDSRNimIg?1fJwwl3 z1->n*NF5X>0!6+e|BB@Wb|cI1AF9Dle5A4r&+UHI(RSIANN(%w_jb4$K0sz~F!CB^ ze~Xr1R#FP^xhjH5BTnm=Ba>f?Pk_({yij$jerLeF-_7}x6lC9gdk9c_Hy+3y_!RaU z2l{;1_dzj2@H}h^QrpF_DXltP`_5X*Fv^u%#`t1mK>~?tQje00C(PMQOBC((4s_`$ zmr^nGfJjgeGPrz^YXCnc_ z`Jtwd2YIq)SN8rJQc^}qlz&-_sjtf_FOMH6c^EbPkUV2hiR^N21{s603KeYntf&HL z%N$XjQB=&-F2KD%c!o;n7Q=kCWOy7_=Vb_t)9wVWwProM&(JN$kZVxhkmvB-1;%2Z zF%k|&T}(d!rS0)2V7Ru)`Jk2=%X=qk=#5Ts03*Di6sM(Dr_0S-hq@W zgfk`E?IBK`N#@7y9DUbwv!<}w#n+KB>SI!zsY0t5WM^U!t0%vKhv3@*?6aG$JO5Ws zUn>rajZ*o#ISpsD>d#u&u#(I>s-S_kg=NO`Z|QE<+y?_=Qqu!(13#Y9>NU1Yzd zfDt-aW&N(qe)d`G3Mipooa7LxT-3#AV}sZEBggG}pm&kYe}IA%B=+hU-wWYNwT`KhpL-}$3-y&iQ-Dv*`sN16iHn%9XSl!Mtw*Dn4o2ol_U95(& z)sOB;sQfhKj(L(6x!im6i}}gvyyoRSN2SGIY?!%==uazb9}sZX8Z zaQ?eLYqF`uQYP1XD*VSEr6=khibDQl6!pX+@cAM-QLJ0;*}_&|WnV|h3l+q-kNd`; z9@Y`30j_fmcr@W}i;CF+FT_xvD4O}gcx@%|33!vE^0!1*M2R95P7aIB5XoHgYAr9M zuyc;^&CI7*54-8(fVaUOT;>{XL=G_LthHgelU~99t-XR`jaKCzk_xv-=hazB7SAP~ zq<+~Crh?W+K@*102&AHz#O$Vg)R?3|T-)ICx2La*$wAWF=H~vLt#D8+S_N~%;4bl3 zz{H95GH$$^UyQBx?A zF$u`~zIZ78PG4*=dkbF7waG3C5u38u6;q;Im5!LdHvUyl~d74h{ICLa2&`o-^8 zc}HE;M7E%$rBdnr)8G%drBfN4cYhQ{3$n~ms!wkPJY&fjgT%Ym>YjZN<-#RS@ANoJ(CEpFvz6TEywcJX<}#F8ej4|vg|Utt>`4BBq6-i>jmtIe17xu zyK&@kYJJ8KBh(H1kgds0r`i*!nqk4)KrRqjfS0s<5c#3a@MfvTH)|NyqH4dqmV+Ds65{@pbhPAf7ZJhey<++Xr z?r&KslAYT3MuS3UUtndeirLWi`8TZB`QgTX%1nT}leGTVt~&ct0)$H~{$JB{Tgk8T zV|->m5tiwNix?p?g6$T(nu@CsZ0+K3{Bfk}N^Z8_-Jc&*?M>)D?cI_vPpu1$X<5rP z`1rF%Qi_vZU8l}kKTV5m8zUf61O$A@o~$Xt58$Ey&hQ}W7rbBU5tFC-)KAC9_{~|) z#>&$BMHLD=P812-yDmqDgDh_f!>fs9sP046$!fyd)9HH7{@n{eMMctQ zGNo=k(pR{V{^i$X>Tc;%8934K5bX`5?4yayrHq%(rhGcyIs6Vh~pmwfqK?o1`p z=d=&w239`nPou`dotSsq5yl7hU<)Szi#_7YJ~XU_m2y(2ibDV1%^Gd%aoyYK#`b{2 znu(N6-uUrHzA7>9e3%S!YTN0~^ObQfxtwHiqwA2Fba_z}7OH#2u0K!8AUam5Bo--$ z)>Y<^)YLrtZ^rsoo@7BuX=>y%I95GcgpxfHbwGs)|QJqOe zFsnpbf~dVN(fh7fL;v^Dl{@&zcsh&v!-tu|^?PzM;S{k+;RkMp<5NKhdqhM`$@Sq{ zVKhZmL_9SOm!Ao{CTEPw6Zb z9t~p2c|2(@tEfmIf734c5-F1sY?9behp`mtd5Bl* z)m%+L$+P&>=#wF;_`{hW`!c!<9T`V}?XYJ`6`Vz(zR(E-Oh_v**lJ5Yq^YGMr#mz;9mL(F?xvfZY|I_NhkEVf zERTBZZ(6vmeBua<@Zz{`@&fve$G%7+TDpK&hYb0%EdnlV7*g5}^ypb=3+pLL)qwo% zyz5!YF*H1ENe(ZN5Ij<11xLS!T#a5!D|-LOa?b~4ioCt9k5@Oh#(6VGlr`u2D7-8& z0Fd;95x7L*^?H&1?$j^@mzGi};=uNxjH5XXv!gYnE;idEQX8)9D*JxkxHU9v{EcM0 z(W;C!MTyQiQNUur1NnilH#Xqqm>wwPZPcpVGV!#QTzt8kTqC5|m^=^M8U&5H#6Mn< zaDKB`ZTxm0P1>{lHV&As{tO}ItJ^UH3InveBD>pj>I7}|`*w&TlAoSUUd84Zkr$Xf zs5m$fkO@~0sj@L=l|akpRei;Tfx|q9x3|4FE0E*Ya3YAET4i2w-ob>zL!;I@MrkfjD3mM^0SN931$()EfQl*r&tP#JIK5P!aTb(Zn z%|S7(&hoZawl+9|^~s1WHpxF+Tg*Fu(8fqVFTD*m=B1W!Eo{nWga)&$#S52>&?GHC zNHT2J+_l;$pab{|koqmD2g;JoD6*MNyZPL4(z@;-=Xki}68g#n>i)VIOmFbzJtj|- z6T>BD$N~gDCH!LL+ni;*0{21i8=bw4y|3=`J1WxmCY4M9=QKpgu3P>ucl*fYpLf45Bavn*I(d@}4GOCOAOg&Z$HE>YMqq?+GTujpjd-^4`Wd7haapO8gkx5ovrUum9jRO%3GO|MTyfX z-b=ger{BM>L7x~dqD)uV0>(xJ2HZ;^%?9|{us+>6?%G4wpMC)k=rXqz&lw+SA ziH~_ys#*r55NBTeEIA~au={&IKN)@> z%mk6U5v+A&HRNZ>QF6(Fe&un!fi@=RQH^c4IH&1LMjgXY$H>R4d1cJ}peM0?%gL<9 zoZQxcX+_WJW1z$7s7rW&wiiOp!XZi$;Y&)YE5TicGa(L+qS>HwY2PDhMR|48QS`(1 z-VNU`IpcNTL%9qA`&ZZdxYCl6p-Ik8!T_&bVgJd&8S};IE^xaBv3<0_(-sO4*d_xF z%gGJj?@tOT1O(jQy51)dG^E`{37Zjgb{U}^sH;Uc)+Bx5QdF za^n=f6>N8JY0c&@ymY$w`7ybPP&@AHQjI;Wj=Kpdy~5wyEzwuOCdx zkrF~TUOP$T;Nv3CxA&y4iGfcSCKVN1&mJ^ouQ&;)*3sDLe@X5-&<7BlVLjl&vIJnA z5r#Hxox(MmVPnaSe4Ul$o+uGbOrR}Ley@p_tZo4$lGCjZhdUr$J>5Qg9bXS(c=Aa` ze0EUPQoQI#Bi4b*yw6vNLdk>u9X7L9`9W1fj05nn-n=xi1p?>(n3V0_%WAiI$Pl9vvtFwDnB?(cks$VN_TX2%i$+?yd_2kz4wEBnY7Qk*_B5fp`OKrBZfRh} zJ}cT+NgaWw>d=N`$5Vy}RkRPP3NJ#gpJw0DPb7RdJu$ePFeoUbIMTfN2>;u9FX=Oo z&p!us;?VbV?(l}d;p0TRBVDv1U$PuC{&ae*lFECuAS5MHrA7bWm@5~Hw|htA))cG1 zxh-615*;!M5qj8?tXi%p1XWN12Bfevu9DINn8~+&CgWtQ`6vn&=NH-`m)ouAZ-l>A z`(3$nii({4;3!QicoLKD?!0U&L~Vf3FW zClZSb3+K56XKrq+Y}lU2)Hz<}C#cU7tqzsF6&*8M8aYIp*q(1f%utD) z@qJv5pA(}Z34vs;iRhWF&v;L3S4~3}>izW!y5;@Akq0SS^uyF_rkB>+@I^RerC?m_ z%|R^f59K}&i`DWCJ0`IDqk%O1nbsx;qhcNW5NDMUAC0t-{+K+LPN#&YNRj^XxzLH1 z;P`2|I|i}+@RxMC)CfC#dpZ0dlVlNEH2$ZjOzv-pdz7t>_G@Yf|3He!od z)wf{f$;mlUz+ObM2B%u7*R&*0+`bnj(EwMy-Gm$UZl+{A zgEdzWRC6E%?S$){5|*Bg)rPvy8YivxygCvuMhx(jC%`*g5StOk<6LBVO1O{Xo^&i& zII8Qib<=f-J4Vgkkjjv=K30$J@${Bu+R=Ep_AvtuH`h?PTSd0Ad1o3({j`U>cw3md zK3UAN&aPu$_>`H-T$cAs_+t(YrQk4b*xfUQCuK5Q-SyF(DZKbTk&&eD!%Wu|@PYTh zNb!-W7?jY7f&}(~KvNU(9%c2w-WigU&!R@}lT!$0a*jzJbFkEf4XmF=V+G{;6Qy)U zpnOw7J!%a_R|r0Zmoh$#cE;hin3_V#1?Lv+K0mu=7V^7ugt|MdSM-fQQss5h1l(7D zet`ZWyzrz16vHLHXy8MY+srjRE<09CP0bi3xNotZmETqou~0?OE1{kYgfmGm6ZpL3 zH2URg>HI+NBw%arW6IO;bm9Cp3P|qrD9#@-2F?kLavU?PO#?-}29DaVEOt_I4|_S? zkZL$Ty3KZ^3(BT;#Xoe;3<8@&ea(h-l8;#NhJSn1&0lI7x5WPnzpk%i7Bj(F8pJwO z)_SY0>YHnL3cX*^WMYl@ZRmz>EZIDy@=6{UYl}(!~imeVc|zqGOIC zXELYjnJ|TH_|Iei_s;?Za-+FrTcNl~Fgjnyht}3hFGp`Kz?_~3P?IfBlN{ z>UZQ(X_oY=(4HgZ)lxv(WVg})IkjLr zkjFJljhnpT!mL&IwlFtxlkDf@wi3uCUYeAcOiDWdVliPvW&e0hlH|fREAPwahck8> zV4s<^cg?+MXKnmwi;JICy^MB9?9=p?Bmz-87BH8Ix@MOiIuh(h`>jcJxuyCWdh?$)f**~*yY7nYqts^pQPkH ztxu~v;0Ql)LK&$R)RRm9GSvK#HAga!!|pyM4O{P!yF?baO29^2PV~W;rx1h42TZV=y)gG? zjjSO;pNHYBGS-&U8(uw;6|()7L;RKkTl2~AA3o37cH~PAMMD(C6FIK_*=w0w?bJRD zMwW8UBn6Bq`fotEcUDPmV z3Fqt+aVz_z`7yj~AShj6x@qz9+?~723AQO;OO}qe0Z$>U*Zs+J=G!%fcecv#uDXKJo<%dx@kQm-vI!Ofl3uEh5Y_GU2dkNvId z>nQl_zm5v;ZWa=9(FNT#@Dof8dv&0Z*E}aD_tr@^THcSRE9%+28FhattjQ^w0X-aO zRs3%1Z^;FvDiLC4m(Z?#(reOo*oV-OlZM!33dU=jqdCe73wgm{WU)qR3-QO6nZ_+V?|uy{K#7o@ zeQ&w@`A3MFXv5nn7v$llNv3j@92_D09nu3~6KqW_Ew%gag}&~nlb*JsvId3$3|5^5 z3itdoSPrtOYso|~s+FxRmme%o<;bXZVMd!K*OFRBz1rB?6Jis80r*=d$Fm)l>Gbb6 zqU+$6sGee#k`wGs1sp%4n_r+VjffZQB@3qRNoXO0S?PjOl%on=^lhy!HfZnf?7s8y zt9f4(>cTJ{DCATfILF?;$!*jb&ECR!>f;gIjWCo=o8SA1e7_Uj59!ztY4iUStQYjy zhdEMzLr9x|tR?8YFW4pK={dp@f!uv~iAT+9-r`{X?CrN{OmrpxEh zX~nrt0%ME;DH-EfIQ^35pr;iz`FSos-W6Qrc?iiGDKFx_89}wsZzF#c@akK2hP;wa zDy)9=-)obwLD2X6HFRtE=|-{~7WZZ;!vO$eQFfvH;RV?^J)foRi2S2<(b`RGtE;)Z zRk>901V)^F&hlH3bftYR#2mj~q2YWi{AaRPdDwH~&1*rYLzw#`0Q^40gSnhz0KofF z^RnU>I!|FdQadr4+!2|O+;L$!=T6Y&|Fl?Ibr;oX`B<0SSY<<=ODY>aOKXyA1aIdU1P7JGV>%pT z&VH~wik{nN1QhSuS!{fPeLVElmTsMCIn!y%%^2nn5GuJ^3o`=MS@xMZOHg*yVWa-~ z6?*=vJmFJ{GSt?PHEi;`DftP`)fa^pK#_1b^hvbYZ-ZTfo8=naVJ=coN;B<1jJsBY zm+PKg%nVG$ogLW?rESMI?Xu5N39iqOBjf1!7*Zh_Xl%6@3JRVXh$P~$2D)y$J9XPF zFSormJ!kR1MB}LX!*&;#FU&M9rbIz%d9-_ZEhGk*@Pv6qgk)ZE5*%*LFFtt z2!tg0DSdYT^VekuoW4JCWqT9^CkmgF4#|#d7i9b8TCHQFMO|()EiLEBgE297J`Y}v z?yT%0rIb^Y>G|7WU*lm^lLaJ2r3-J85E`0GttpC2-fn?61AS{!&s{2JymfFoGrO)l zT<(chIv(`P6<#+qg!S4&ZK2u&5s;|^LwdjV?%@{N`y-dw3=_G4+mQg(O+;Noz;F2+ z_L#{_rs9M#xHiu%MvP5?*fimZR#ctfmYL*-hRYGfNsV=pI{W&}rxA3%W?@6X*zr)G z=5jUUXV?=tg#Enjuq1lcdU+O0CHOND5+l!OqU=D3njQ;JsEOTdw1@c(=&6<=a9vC0C6dW9DS=XnpK_zo^c1S4F96u4@3FRHtgBaRSSijR`@@lf0vPt=&tD}5^Fa&tt=@zx zJija!(-hUEx>l;zqm_i*0CAI%N}o&0GSRfYOz*$sf3S0>Canvv?fpUoH`b>%GPTc` zAb|H`2w$0oN9!fxaaCu}!`nFcai|oEe&>ob2ei`PE=$7f1ef__TgwNkx-WXfq#24l zZI5F(^G=wbs#xb0uGqEZ1UZLq8{bC? z{pR_H27hC-=P}H7dUXv?qoHY*($jPN;q>C!>`3xdVo5xfp~@z??|W2(yx9&@bFQYG zgFG2pbs>t419QuRvhMrcC2Z9r!C<}tlKG>^oG8<|45AM#fd)j^iSyqMmzr#@o8n;) z+ALhCr9n1Vz*>zqibMd^9G-;4L0s*(0^UWq2uvLcBdCH4mzFL1BP^?t(&?J@4mWVO z;5vhhy&ULsaba=JW4l`zVIy7i*{`)sggdl6(K7-8Wx$c3*8Sv?|b)s*WJ+wmRkI(zX6KxY9f@o#k4fwW~7cwMm#j-5Y^c! zmbu;J%bMI!mebT+T-eJz?&#JK9^~zN#%K=ok1qCFSyyyx=$M?O^FSCBPb$y#QI)omVeTIXJAxL(PS?6C z%n{4LwjbY^J#?uiI;WL2^_s}@|LJ1hY)(!X8!Dr6bu$;Xe{vdTCzMUHTyRuoa`BthsZqmveHf+ic)O$lkSGkv!f#-xQac z&?f-YUjlWz@`TRQl1>782qiP2X?^X=keM!1bElW=zH(muSVY(Cdaq*%kj{9nDw8GgG;8{65lp1L{D>~chTH2a07TKt!^yqf=3+GERqY? zP!kz1gV~$wg_42;qD(v)-Zncpf?dVFllc}Ch$ppZxy`0^$$7P$ z)QIcBlQL`q#8~17X-i|uZH$T2lPRRs4ok%>M2J5rteJjNJx_iDnmla2^5=9;x(vG9 zEGAOF5gCY&L|BuieB6TnGz81c!ZHg!)es@;m)z=FS6!R>1@zshxRX~zSH3SOER1S> z11a%_Y)O!7FiZjEk;bi4H_aTd_Z@_f-`{>@3lb0*Yw&j? zwlabW1#D%LHd{Z_z9mTLrEw7bx!(R{yc~$PN_L@p>4;DXH`1I`G!Dk^--nWLDcZFt zmboa_Rym|u795!a==FyyQ{l7Q4oZkyLsD-KEaCJ8e&{P;m8o4h7NB^saB8-V;7l>a zKetL=nrG8Q%88By92^PyJp~6`MZ$M~=-Y(|?g!!B6(UxLwmFB#!F4>0*kPn)>(><@f;!WjdW0cQS5q-9Y9^EZ9D6L| zjP7Cgh9W?r;ywb>-Ozkew%n#BD0A=ayUVH4qnz#!2g=cT=`lYN-XDUjnF+FUpS@p`o-^MJiYJi;-a;;M z;68ohN`_<%+`~Tj0&MIxBBxf-XH)1`bqQy-f+=hblvsvbBGu$m$1RmJ(s{S&pY^f- zAn%8XavnRUN_ZhwoP6Lvn6j~{1*Rc+QAED2f28@vy6m@jhk~>y z(}>ICfpN2es@AU7)SIo87etzvofsZA(sX{ij?W&uLNZpvxyWnp_BKlpWKlDV7ScK* zWfCXsmg(j63;mw2lV!1JqgjIiy;k-F9T#`^cm*FK8R&2e@ztMJ5tc?vGKD-xpob5#kt1dham*VfP){Tt&!Dh~COo0Z3Z06+aF&&vD`8zlB zDuE-VZbc()M={*Dj zt5d91?5DgO3gTu?JJZ#RHm%&%c2H{>R%kC{Ymugh9R6+^X~`xVTr=*JV3t!j4@GY_vXc zGmqNJgrVg>TH$5+mMx}OEoSa1j%Hh`bz9^zJ^TMcl)}T5f?SS&DTtz&RcbDOyp+T- z{EZ~7)C5V-ZoRa=-k@iZbr=qVuQgtzGcCyWXlW?y`qaULQ^ZzYDbC)wZWaOw3*Mge zUECyU?NqOdNmMlPKiWFXwE0g-AFp{Szll{|y9ic#s^1~moq+x@aO$*P(t5J~Xd|Jy zY>=6dB7X74!^Po3pTljh7UNl5sAwQEx)dpc$?DG%VKXtHE>@%kLx32PxlAuiY_p*q z5)_mj@8p$Y*|EQ=}g08(8WvbhOg8eD01?l)Y+c^h~NRGRlGJW*CTRkh0Rm_GSFZ51&6@o)R5bPLlB8oY~dZu22 zR1Wkuf*NQZRGYUgxxV1M7Pz_GyEcS&cDrws5h>;5*8bh?e0sMXKmNgcER4gaO@-M-w)Gt znl58DJaHDsXXH~1!*NE*r~|f26->#Ov2{G|0F39yEtrkZ(LZrok_H3@%8T^7xNZ`8 z6@b;-SPGr7y>P}eb8s>qOFqmk2bin5-L>6K_72HYg&6%F0(GUby7Ogv97tRrC=)6f zr9i57#YQSxWXIk?Fhq&s<1bJ%YMEW#W@)%2>Z33oZVD(p!4mPKWi&uiQ0$dn#>1>k zSuPHpipWTUmW;>NR$*n9H_uXg00iB$WCi%Ll4yKXdw5+Y`jYAJ+w=<{>#5J`rFVaF zXG+HNoPZ|d*BbWGK*v2D_sfZvb4m8q+Ex5Sr0038)>O)DiSg=^QyJUN7G(#R;B>tu zRjKW{I+YuhSep_Z6HjKusxg2QS%19vk|gY}Ml^_xmn-#+6d?<#wO z1$k3RpBL$9**=|1#$t-pHlpwp-1C*f0DS_D6Yd17fZpuf^0vHBN`41fo4=AIP}J|i ze`=%^S*e6i)hjot-IIj=~ z-R`;6)qy{~lpWN^XUmN=Da9qnTd2;{h&I)2m>e%<))L6QT)A{|vB?7l-n3ScB<_@I z%{u}(EL5HzIa-1@l>4=3GMTUy8#qdolfRy-LZ3(~XQMkA@pwJzBG9E^OMH#ySLlm% z4Qm@}aP9!k3Dv>Zj#J8d>b&I!l=wP)d$=pc^)S}%`00Swzn-Zzw!@}zC?d>ufafl4 zZT%A}93P{6{CR9I9iQ-}Ltd$Qo<67m$jg-$kwLG#EEc&_<4wur*FB}WRNt|1X>_?? z#F@xl$*WSeG0xji7~y#Xc6m4x{Bga4HZV!QR^MEl?}IHJp0`j)>>3OBB;7*14|{BF zWjUB5vzjLMH>+r;YtudkkgCN@mJrE`ls({?Y6zOXJAQWOzJh1E&q{0Th)nOwNpPa% za5P3Ea8UA-+ZX5II&K^B(4v4usXOlLIzNV(xlDv&a{=kxr}I}{r*C$4b|&V~SSREN zD~wAxJg&E>6DueR<*SIu#I z$Px-|?s;lwNMBNH<%9*le$%2(~-+MjGsd+cPf#llDQEsZh={ z3pUKUJI1PaYn-%5Q~Sm0ZrjL^Ofu63s9*JK$=%%my%qi!>utmtUK`@ExeJ#C`s%cIT1VQi$lfq`(#2KPCLfyU?Zwk-8P zw;x{fFi9xWW#h`yX6U=n-;+aFE=(3y*3=l0u-v9AoM=DgF7CT|URfKR_fI!69XS9m zkXfzK{5uYNZK5lxnyp6DLl%2VfZ^&G%t>u*(UCeHJ40i0zKDgDeGt%OF0F|<1u(&G zqt0Ux47u&-`e5z-fOM2ONCbhEs^hMSxuSVTz}5*O+-K1udc;SMYO?>0`^^G2=~XbKMgWjmR28ZX|eC_RT*{~BK{ z+g?Lcwo)}7eLo_}e&|f2ksU=dX>n-9qcqs2BKPL+eq4c-gx(Pr30I z2f)kFiEZ$~i(p)oV^`rX>hi)oFLOY4!JN_g_cYRp?{@_liKxFWc-ugvLq}W7 zM%Ot;>@P-F`gL))l=$R#*@P~^loF_#Uo0kc5DQTg)WNl)H#^3uwfXChYpsWJI& z6EXE9WZg3vR5V_vwDwkWq*Z2$4D5(7MKto%hS2A$JxR?x_h^p=XP1=@f7ZJK=kB(? z%eOph>t5%F@b0oP}}o?cVuz#9XBgVGd1b8ER@b_JCqqb zQcfDnT5tF%masHIkNpq$;@oOQM+cC^Pns5G6T}e6LwZclhiyVcXB>vp)WP~caNM`CR|q2?pKN)MPhIrh{%T( zR{GI9igCdeDjF>4TR(msd>=dmrlVbbIW>ppZnPyHOGB5kne4LPl>5N_q>2E^ANtJQ zw8gL;EUmR=7ueysj-JB!Ed~R#5zW0aDMQ5}nqFU-ro-{&)?OR9g+$+6=q(7`$^zaF zKl4ED_7C>dl&5w~m}VR&s!wbFA~;x!7Kd}Odr((EG)l(U?i;W|rL14TQd{RpXH8gK zi4)g=mu6wXLjA5i6{@kcR6SgcJo2NksQl9Bp!nb`WsSB`p|Wd8^))N>`Gp=8EtAOx zfd~v0#jf|RGTb@{9)baGagx^r)O_5bBh}Y_$mD$e8g)CNdrwU_D}x&V*B~D_t=PoDUU@|3^{#0 zQG{&o_-YdXl-a*`2*dFDp#*JpII2d6CY@FIT&2*xjD^QyJZ0S;xv7w*A*Mp>9v@%6 zKYKgA6gW&Ypfkm~d2%sQhU;XhFM3FzOCB7Ml9Y+SR9@K3Q_eZXkw?E$9-G zrPNkok(Us)B{MoSV_`^(f$kLaqdwalApT>$od>wdkRtFM6X~lYdsHg!myU>rH z=Ad=7g@$~)G#;k2qq6)(`Zp;-i8PehbG<}u=8DywoDN_Y&_~Zg8vx&FqSXA^BhT)$ zq%*7AJ4C17P&{9VcxHi@`3_;oNNAA?4t={K3^d-S0vqtkbc)^U4VsVhyCSF9ns9Mi zPY}Wov+?icLWs%)-L*jhfPm@JM-EM*D?gVi?^F8PHd@UMu%fCJ z0Umxj((?jusmcMRqSs@(`sLb)D0?S5XXZ!~gbv!3_fjhH9Sd0j@LWUotEGDU=k`mD zXWSCrkBlhEf&#vWfR2~&4~b9ROj@Mw?Z+81lbDfSvC1?fi*JN7n}PhFxa`@U9*ktD znLJ$?e1d|446QVIaz(?_J29EwslZlXewN8ONcy$Z=EwPtt}rCzR;rhAvhVg#kb=V1 zHn{4lV2wcuh0q~w#m*7=JNMYPN2$HJV0siC0(TMt6+|t>&@-eBx`aCRp9C4%dQldc z!rnCdx7DR-rcKIphHamc?Bdl8MVJ7$QjRbLZovoX438?+&)I zNr{r@w)0$5UM`sx@P}Jc9&VIF^ps}d_nt)&xC`V(?e@J@3J}B3mSY5wI>c}1a)7tL z%|YrTOnt{Yk#DQr{KF=LT2Q46bK7zOKitNMR=Nh%K*Fy@p&Q?{Gv^uv7X-v>Io9aP{-SR$>K2LELr!?kxJHqYNrRvE#6aQh`u;?TM=R3j>80iWkKtlhHM8GBhlL3XFDD zMcFJ3!j9^U%B|DcsL7}Av_F!UADAq``o;P_@f!CuHZyZ`^`8_)`q`0@k+VIYFsWDv z%x9OFlgw2JK71Hs`l-Pr)u&8daUEY{D8xrg<0^yCDUjoWXD(ZP=>+Z#zMkUE+(lU9 zkIk2?f$OYRyydiNfg6G}A01%Qa&r;BJazK)H3Xy=z)fQ`l+v%A`$&jcphQTZ|AZ?p zDKYtC#r?Skep=>|9QEwu?J;i@y(ZUs*_)<2t30F82EDrDvpo^bx(~!^J73IJ`4i4D zdb@aUz}p*#R?yH~;=nM`mD%r;=6Mc;qed+VXYQdmXGSy{o(f^QivkaZ6r?N3(OWyu zklI8p`zAh!bdcN_p+e(zEMz~_q4fhYX z+M0%#0=Ep~Tm7N(FklG!uW;O8zXx&* zl1g{w!Epgwx`fMtd2>fs`917u<@VMcv@=O4_n)4PAMY=DwmrHYr*hkW26O{?Ju#sq z#>3DXOLJ>imwDXQbR^A*R2z-ogyZsNG&o9U8Dl4fU_hIhQ8O?^0^UiRPcGkiUfb1$ zSFiSDdcAa*mh9f&vr*ICSk!Gs>GYToT0PR1IO;in&{wEkBLr+B)r+p~aQFaFu_6vh)J|8$_PhY;PkU5W7w}6#Lled_|;OQ!ZCXy zig4Rk0d9)3Uv5HVfPpar)8((rwQE=0`>4_E;_Slh_NqP2Esq42$XV`+qg8&9$xmS= zN%<<_K{QCla%4=`ULGrpr(`LO+A*F_*s0D6R9g0SBxKseiJ|R70_`iW(GR ziOr}{@#Tco}OwHtYA*Rvf5Zf?D+ zp@&r1_#!%sar<3njquk1VL2VVO*KN6`h|p%+^NS{yG+bvLp$$MBYFRf*SYNGc}?Y= z&{BZik7NL~*a}T|!N-Ci7gw|GJs9w|m5jV~WlPj|PKohYa_TRG1-PxdrK2e^2vrmm zMh9yzO$-w)FD`;*y>wJmN+rg;FT0|u$hwQ6S?Y0V?@vy-Qehu&r`qng2TME(rha07 zC*pNf7+c^-v5nGa*}G1*qiVN;N#}L?9bn_iNv(BNXEZPEdM}}s$7Ayb0^lTAz-BImUG` z%3JfE_lmWS2@P*P_C_lT`e832oF`b2PQ2X^@uoa0xfS?)5GtwMM-~~eU1awi!&HDr zt3(fTFY|E>MuR}eL&9Yw(%r0Uwf`-oa{Yd_YK<%oF%FSv#IM-j<9>1-wHnsn zos$m{F%GsBu@KQ!jeA2-{!g12qDEbJY4STah_=s26& z?D9HdN%t)&~md33G!hx{z|P({b3)f)1mN2n3N9svz^xO)ZNjOG9uQoV5*BwKqF zuFTb@x;GkjHCMMU41xM;2Gw)M{j>*WXe87WbUHtbvYV#vqp_AXfSH|Sm6b(x2#ugL z*u0c1E?S+3Y%5^27ZEt(m6an1c!PhxC6Xp;y^9bRs6S=1z4yjI6&>h3zagP9(Ym78 z92pijxlMCn4hGnGY|kc^vROmJw1s%v+olg60bRdJ6#QZZjH9{S(hwM~S|V0PC9;C; z`>9gwLi0xSvG!<{lf=CUjauOi=`Q zwe$f0;|rzHYF*_wF6m5H!m+_Z;ou(mxAFYaZ_)EqF)WFlsiO&#qPuWS7-tqx9~D0c zEKga{d08U@>f?;!aN-izG&SulRv#*mT7>xjk8wuaS)ZV_Ja>9J%elhl0t3e)-DQ#p zgCCR_Evpy!V1kJI%Hw3)X%=E$6h3AoQJ3I;3Y+NL$*H^Ew4@vkQA^z<$;At`muN z{r-8MHaFu%2iEgWePV(gFuxC91$h=n&%?My;&8SKlUi|?+wEkQf8)x{UYDE6eBM>5 zJwf_S$<`*(A!q?9~8Np?aGrgLW0;&<3@32;8a#}zo3bqo`S(JGWXte zw*pT7UH!EJkGY|vmBceS$9r8fje*GX?}QLY6rVfT8^2;i^&2ug4>`lU)C<&_3^o+P z6sTd?VZZmt62W{f2aCI1Gj4Q8#a`>aC7_LS`#r{Qx8$N@gNVLMLn`g~LUZ&wak_rU zfZJ@gFjTEWlt~ACj8frQxrfhCD<7o&a)RISY)og|En|_#Wv*#>O0qXfwn?CPqY*4f zv^bjQHKCMetF#KRuv{NMD3npyMD zPoy4aC@%oIDlhIARF5tBOhtjCr6mqma7RbJ(o4BYTS!2i0khGwz(d8rb0Fa2t^9?# z>Px%Yy@#8V-Tfog>CT(tU5m_cj(&k71VXIQkr7!KD?OlDd+!URx5y0l=~`1dB1QU$ zjHD1GgQ5XFN~BJhg8Lw!Tesw`a?N8Mr&EW+%Mu;Ea%fr4fsesOA>w78{2H^TGS*lD znv)=udkRhF?}%p@A&~9Gd8+`3A9Qi+>70O5UOpB=Ul41;L%Zstlf0NYbMwta%)cx9 zx-(Rhlh%)!6d(I#>*P9{FtmMc0P(;{MZnA;Qp=pS=BoRf+e2UrDGX1uHuI)8q_DXQ zE+q~{LtTOUb7I@-YH*I?SS?OJ+33{1EfpjrQ#RRf?OW{l=E#`io>Wcj>coI{>t=Gh z#9TVYf$W`tzZ1*vn8`$_9xLWR{5)R8LtlzQfQu+gCa-JZ+YpDkqDHD$b$tX4Zr$Ps zT}2?eyRv60S+3*kLy-H#BC$IYwKYZnPMKg_h~13PbUv#f$f#OAYYfZ>Bnk6^*BUsu z%4p&{H%NL8yxQ*sA9}33`e639m8n&7r~BUcUr=9n^4+#0IX(^M1}n_5|apicno z&{JIiKwD!58oSajuN`x&xUCcc{t)L4(nLF z&e!Yr-)L^kCfpJ2<{8B&w#FdKQ@G7OTD$2`fsz{Tay=MZJYH(Lrp>qHG5yUiTv8MX z&CeK_pwEr%T$p#??jr6Y0?`toiH@(bG1lA7cHG4Mu?-D~?AyB0@H?S_@J9h_a%c)l z4-j~p_jr9{mH5zPEklbA(``4ktcIyA@<_B27;!&;9qzeFF(@+LLi%7i%v7H7q~3Em zsDUj(-<~(#c}{tJ`#&HZ;MS@nFLk*BBa7@m91J;G1xy+2}qj3b`?Fol$?D#)p$ zZd%E>7J4=&E-k6@_Gagt8>xGa#EA-#p6ouCf;k-4N2x!}W}9u&-?`bNiTbzc0>qCw zcx;sQBuK#y&Byj05|JKtR9@$3nqRaoHMgHkWgyYt5n7R^hn%`oi6T-q=ZKQpsA{|R z5^4dx#c%R)3qgsqOVs7q3}ng@Q*=V`lB}kzCq2*uv4e0JP|)A)0z6T!dq2_DbwUiI z(Z=u0pdf<>6h`wRayO@MY{}v{8atSB9`qtwq4@e7^>ZI|nK$Qh=#vICOTH=AGRVuh z=6*K3>Uz&=W_5|;bbe6<{;n4B)AOgNs|sk7bp5^f9UBMf9wGXED}3lI_5{RS=eeNZ zOwYGpScHU!=dhHlA3-}6Sdn-e1woKl0|C!ZjRPx~mc6`i`kdB_sN?C*R1(j*y4%D z^PKON30BA#CH5A^i7GrY`o!Xg_?ZPD+ig*2Pa$MquM8Y#U&`Uwnzbvzr}@=&N)uQP zK7ObZcvD$f=x_qw=rgyCEBn(MR#`~8)^!e%dum8%XsiE`rZkfgASWnDY^lb~=x&(J z)=d}*vN8S1lF3d7J8hweA<`|5zsg@U9A%WIQC@x)zilGbv0{&&@#b;U#fOY78(+h- zZC-wjOvC2!oTetWDqCr`>sRz>9?>o|5cbG#O_}I^LLmsJ)LMZX&iY`J248j@@>#D_ zUw>Rsw|0`_h&$?#5B!T+bWhj$m{kljgV>hOb6z)ToYO&QgJ6vZ#9jM~Tu92RjVC20H`WRz/=YWkTFEV(@D~*W3XVRKPi-8ky)_Q~(|_0`oS22h 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

B%Go1vU42 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

mx!i0MYCCMqYl8LOg0_Buj) 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%0D@)z7*O&AuR_DB4C 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 XJMD6Oi`kJ0{9Vz~zf^ef_PzfLO}k;n literal 0 HcmV?d00001 diff --git a/ao-logo.svg b/ao-logo.svg new file mode 100644 index 000000000..cfe33f5df --- /dev/null +++ b/ao-logo.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/agent/README.md b/docs/agent/README.md index 89385c054..6ddc3424c 100644 --- a/docs/agent/README.md +++ b/docs/agent/README.md @@ -1,124 +1,945 @@ -# Agent Adapter PRD +# Agent Adapter Contract -## Goal +This document defines the contract between Agent Orchestrator and CLI-based coding agent adapters. Every agent must implement the contract defined in `backend/internal/ports/agent.go` to be usable by AO. -Agent adapters let AO run and observe different CLI coding agents without hardcoding agent-specific behavior into the spawn engine. Every CLI coding agent must implement the contract in `backend/internal/ports/agent.go`. +## Table of Contents -The important current slice is hook-derived session info. AO should know a running worker's native agent session id, title, and summary from agent hooks installed in the per-session worktree, not from scanning agent transcript/cache files. +- [Overview](#overview) +- [Agent Contract](#agent-contract) +- [Hook System](#hook-system) +- [Session Metadata](#session-metadata) +- [Agent Lifecycle](#agent-lifecycle) +- [Implementation Guide](#implementation-guide) +- [Supported Agents](#supported-agents) +- [Testing](#testing) -## Current Decisions +--- -- AO only needs to derive session info for AO-managed sessions. -- Hook installation happens at worktree/session creation time. -- `SessionInfo` reads normalized metadata persisted in AO's session store. -- `SessionInfo` must not infer display info by reading agent transcript/cache files. -- `SummaryIsFallback` is removed from `ports.SessionInfo`. -- `TranscriptPath` is removed from `ports.SessionInfo`. -- `Title` and `Summary` are both first-class fields. -- `Title` is derived from the user prompt hook. -- `Summary` is derived from the stop/final assistant hook. -- Agent adapter `Metadata` should stay nil/empty unless an adapter has a real extra field that does not belong in the normalized contract. +## Overview + +Agent adapters let AO run and observe different CLI coding agents without hardcoding agent-specific behavior into the spawn engine. The adapter contract provides: + +- **Agent discovery** — Find and validate the agent binary +- **Launch configuration** — Build the native agent command +- **Session restoration** — Resume existing sessions +- **Hook integration** — Install and manage agent hooks +- **Metadata extraction** — Surface session title, summary, and native session ID + +```mermaid +graph TB + AO[Agent Orchestrator] -->|uses| Adapter[Agent Adapter] + Adapter -->|implements| Contract[ports.Agent Contract] + + Contract --> Methods[Required Methods] + Methods --> GetConfig[GetConfigSpec] + Methods --> GetLaunch[GetLaunchCommand] + Methods --> GetStrategy[GetPromptDeliveryStrategy] + Methods --> GetHooks[GetAgentHooks] + Methods --> GetRestore[GetRestoreCommand] + Methods --> SessionInfo[SessionInfo] + Methods --> Uninstall[UninstallHooks] + + Adapter --> Agent[Native CLI Agent] + Adapter --> Hooks[Agent Hook Config] + +``` + +--- ## Agent Contract -The shared contract lives in `backend/internal/ports/agent.go`. +### Port Interface -Required adapter behavior: +The `ports.Agent` interface (defined in `backend/internal/ports/agent.go`) specifies the required adapter methods: -- `GetConfigSpec` describes user-facing agent config. -- `GetLaunchCommand` builds the native agent command. -- `GetPromptDeliveryStrategy` says whether the prompt is passed in argv or sent after launch. -- `GetAgentHooks` installs or merges AO hooks into the agent's workspace-local hook config. -- `GetRestoreCommand` builds a native resume command when restore is supported. -- `SessionInfo` returns normalized metadata: - - `AgentSessionID` - - `Title` - - `Summary` - - optional adapter-specific `Metadata` +```go +// Agent is the interface all coding agent adapters must implement. +type Agent interface { + // GetConfigSpec describes user-facing agent configuration. + GetConfigSpec() ConfigSpec -Implementation layout: + // GetLaunchCommand builds the native agent command for spawning a new session. + GetLaunchCommand(ctx context.Context, cfg LaunchConfig) ([]string, error) -- Agent-specific hook installation should live beside the agent adapter in `backend/internal/adapters/agent//hooks.go`; the hook commands are defined in code, not embedded template files. -- Launch, restore, and session-info behavior can stay in the main agent implementation unless the file grows enough to justify another split. -- Every file an adapter writes into the session worktree must be covered by a sibling self-ignoring `.gitignore` written via `hookutil.EnsureWorkspaceGitignore`. Hook files are untracked, and `git worktree remove` (never run with `--force`) refuses on any untracked file — an uncovered hook file makes every session workspace permanently undeletable. The registry conformance test (`registry.TestGetAgentHooksFootprintIsGitignored`) enforces this for all adapters. + // GetPromptDeliveryStrategy reports how the prompt is delivered. + GetPromptDeliveryStrategy() PromptDeliveryStrategy -## Metadata Keys + // GetAgentHooks installs or merges AO hooks into the agent's workspace-local config. + GetAgentHooks(ctx context.Context, cfg WorkspaceHookConfig) error -Hook callbacks persist these normalized keys in the session metadata JSON blob: + // GetRestoreCommand builds a command to resume an existing session. + GetRestoreCommand(ctx context.Context, cfg RestoreConfig) ([]string, bool, error) -- `agentSessionId`: native agent session id. -- `title`: display title, derived from the first user prompt hook for the session. -- `summary`: display summary, derived from the final assistant message exposed to the stop hook. + // SessionInfo returns normalized session metadata from the session record. + SessionInfo(ctx context.Context, session SessionRef) (SessionInfo, bool, error) -The original spawn prompt may remain in metadata as `prompt` for launch/debug fallback, but `title` is the preferred display title once hook metadata lands. - -## Hook Methodology - -Agent adapters install hooks into the worktree-local config owned by the native agent. - -Codex is the exception: Codex (0.136+) only loads project-local `.codex/` hook config from trusted directories, and for linked git worktrees it sources hook declarations from the matching folder in the root checkout — never from AO's per-session worktree. The Codex adapter therefore passes its hooks on the launch command as `-c 'hooks.=[...]'` session-flag config (plus `--dangerously-bypass-hook-trust`, since session-flag hooks have no persisted trust hash), and marks the worktree as a trusted project for the invocation with `-c 'projects={""={trust_level="trusted"}}'` so spawns into never-before-trusted repos don't hang on Codex's interactive directory-trust prompt. Its `GetAgentHooks` writes nothing; it only strips entries older AO versions left in the worktree-local `.codex/hooks.json`. - -Hook callbacks run through hidden AO CLI commands: - -```text -ao hooks + // UninstallHooks removes AO hooks from the workspace. + UninstallHooks(ctx context.Context, workspacePath string) error +} ``` -The callback: +### Method Details -1. Reads the native hook JSON payload from stdin. -2. Reads the AO session id from `AO_SESSION_ID` (exits 0 immediately for non-AO sessions). -3. Derives a normalized activity state from the agent + event (`activitydispatch.Derive`); events with no activity meaning report nothing. -4. POSTs the state to the daemon at `POST /api/v1/sessions/{id}/activity`; the daemon owns the store and fans out `session.updated` via CDC. -5. Always exits 0 — a failed delivery must never break the user's agent. Failures are appended to `hooks.log` under `AO_DATA_DIR` and surfaced by the `hooks-log` check in `ao doctor`. +#### GetConfigSpec() -The daemon also records the FIRST callback per spawn/restore (`first_signal_at`); a live session that has never signaled past a grace period derives the `no_signal` display status instead of a confident `idle`, so a broken hook pipeline is visible on the dashboard. The downgrade only applies to harnesses with a registered activity deriver (`activitydispatch.SupportsHarness`, injected into the session service at daemon wiring) — for a hook-less adapter, permanent silence is normal and stays `idle`. Known limitation: neither Codex nor Claude Code derives an activity state from `SessionStart`, so a restored session the user never prompts has nothing to signal and shows `no_signal` once the grace passes; a receipt-only session-start signal would close that gap. +Returns a specification of user-facing configuration options: -Persisting hook-derived metadata (`agentSessionId`, `title`, `summary`) into the session row is **not implemented yet** — until it is, adapters whose restore needs the native session id (e.g. `codex resume`) fall back to a fresh launch. +```go +type ConfigSpec struct { + // Permissions is the permission mode the agent supports. + Permissions PermissionMode -The spawn engine inserts the AO session row before launching the durability provider so early startup hooks can update an existing row. If launch fails after insertion, spawn deletes the row during rollback. + // Model is the optional model identifier (e.g., "claude-3-5-sonnet-20241022"). + Model string -The hook commands are a bare `ao hooks ...` on purpose: worktree-committed hook files stay machine-portable, and adapters recognize their own entries by command prefix for install/dedup/uninstall. To make the bare `ao` resolve to the daemon that installed the hooks (not a foreign or legacy `ao` earlier on the user's PATH), the session manager pins each spawned session's `PATH` with the daemon executable's directory first. When the pin cannot be applied (executable unresolvable or not named `ao`), the daemon logs a warning at spawn. Hook delivery failures are best-effort appended to `hooks.log` under `AO_DATA_DIR` (agents swallow hook stderr), and `ao doctor` warns when the `ao` on PATH is not the running binary. + // SupportsSystemPrompt indicates the agent accepts a system prompt. + SupportsSystemPrompt bool -## Restore Boundary - -Session display info and native restore are separate concerns. - -Some agents may still need transcript-derived or deterministic native ids for `GetRestoreCommand` until restore is redesigned for that agent. Do not remove restore support just because `SessionInfo` stops reading transcripts. - -For `SessionInfo`, transcript/cache files are not an acceptable source of title or summary. - -## UI And Events - -The workspace adapter prefers: - -- `metadata.title` as session title. -- `metadata.summary` as session description. -- `metadata.prompt` only as fallback. - -Hook metadata changes publish `session.updated`. The frontend listens to `session.created`, `session.terminated`, and `session.updated` and invalidates the workspace query. - -## Acceptance Criteria - -Agent adapter behavior: - -- Agent hook installation preserves user hooks and deduplicates AO hooks. -- Hook callbacks persist native session id, title, and summary. -- `SessionInfo` returns normalized fields from persisted metadata. -- `SessionInfo` does not read transcripts or caches for title/summary. -- Adapter-specific metadata stays nil/empty unless a concrete feature requires it. - -Engine and UI: - -- Spawn installs hooks before launching the native agent. -- The session row exists before launch so hooks can merge metadata. -- Launch failure after row insertion deletes the row. -- Metadata updates publish `session.updated`. -- The dashboard refreshes title/summary without a manual reload. - -Verification: - -```sh -(cd backend && go test ./...) -(cd frontend && npm run typecheck) + // SupportsRestore indicates the agent supports session restoration. + SupportsRestore bool +} ``` + +#### GetLaunchCommand() + +Builds the native agent launch command: + +```mermaid +flowchart LR + Input[LaunchConfig] --> Validate[Validate Config] + Validate --> Resolve[Resolve Binary] + Resolve --> Build[Build Command] + Build --> Apply[Apply Permissions] + Apply --> Model[Add Model Flag] + Model --> System[Add System Prompt] + System --> Prompt[Add Prompt] + Prompt --> Output[Launch Command] + +``` + +**Input (`LaunchConfig`):** +- `SessionID` — AO session identifier +- `ProjectID` — AO project identifier +- `Prompt` — User prompt to send +- `Config` — Agent-specific configuration +- `Permissions` — Permission mode override +- `WorkspacePath` — Path to session worktree + +**Output:** Executable command line as argv array + +#### GetPromptDeliveryStrategy() + +Reports how the prompt is delivered to the agent: + +```go +type PromptDeliveryStrategy string + +const ( + // StrategyArgv means the prompt is passed as a command-line argument. + StrategyArgv PromptDeliveryStrategy = "argv" + + // StrategyStdin means the prompt is written to stdin after launch. + StrategyStdin PromptDeliveryStrategy = "stdin" +) +``` + +#### GetAgentHooks() + +Installs AO hooks into the agent's workspace-local configuration: + +```mermaid +flowchart TD + Input[WorkspaceHookConfig] --> Read[Read Existing Config] + Read --> Merge[Merge AO Hooks] + Merge --> Dedup[Deduplicate Entries] + Dedupe --> Preserve[Preserve User Hooks] + Preserve --> Write[Write Updated Config] + Write --> Gitignore[Update .gitignore] + +``` + +**Requirements:** +- Preserve all user hooks +- Deduplicate AO hook entries +- Make AO hooks machine-portable (use `ao hooks ...` command) +- Ensure all written files are covered by `.gitignore` + +#### GetRestoreCommand() + +Builds a command to resume an existing session: + +**Input (`RestoreConfig`):** +- `Session` — Complete session record with metadata +- `Permissions` — Permission mode to apply +- `SystemPrompt` — System prompt to re-apply + +**Output:** +- `cmd` — Restore command argv +- `ok` — True if restore is supported +- `err` — Error if restore fails + +#### SessionInfo() + +Returns normalized session metadata from the stored session record: + +```go +type SessionInfo struct { + // AgentSessionID is the native agent's session identifier. + AgentSessionID string + + // Title is the display title derived from the first user prompt. + Title string + + // Summary is the display summary derived from the final assistant message. + Summary string + + // Metadata contains adapter-specific extra fields. + Metadata map[string]any +} +``` + +**Important:** `SessionInfo` must read from the `session.Metadata` map (populated by hooks), not from scanning agent transcript/cache files. + +#### UninstallHooks() + +Removes AO hooks from the workspace while preserving user hooks. + +--- + +## Hook System + +### Hook Overview + +AO uses agent hooks to receive activity signals and session metadata from running agents: + +```mermaid +sequenceDiagram + participant AO as AO Daemon + participant Adapter as Agent Adapter + participant Agent as Native Agent + participant Hook as Hook Command + + Note over AO: Spawning session + AO->>Adapter: GetAgentHooks(config) + Adapter->>Hook: Write hook config + Hook-->>Adapter: Config written + + AO->>Agent: Launch agent + Agent->>Agent: Running in worktree + + Note over Agent: Agent triggers event + Agent->>Hook: Execute hook callback + Hook->>Hook: Read stdin payload + Hook->>AO: POST /api/v1/sessions/{id}/activity + AO->>AO: Update activity_state + AO->>Hook: 200 OK + Hook-->>Agent: Exit 0 + + Agent->>Agent: Continue work +``` + +### Hook Events + +AO supports hooks for these agent events: + +| Event | Purpose | Activity State | +|-------|---------|----------------| +| `SessionStart` | Session initialized | - | +| `UserPromptSubmit` | User submitted prompt | `active` | +| `AssistantMessage` | Assistant response | - | +| `ToolUse` | Agent used a tool | `active` | +| `Stop` | Session stopped | `idle` or `exited` | + +### Hook Contract + +All hook callbacks follow this contract: + +```bash +# Hook command format +ao hooks + +# Input (stdin) +# JSON payload from agent (agent-specific format) + +# Output (stdout) +# None (discarded) + +# Exit code +# 0 = success (always, even on delivery failure) +``` + +### Hook Behavior + +```mermaid +flowchart TD + Trigger[Agent Event Triggered] --> Execute[Execute Hook Command] + Execute --> ReadEnv[Read AO_SESSION_ID
from environment] + ReadEnv --> CheckSession{Is AO Session?} + CheckSession -->|No| Exit[Exit 0 - ignore] + CheckSession -->|Yes| ReadStdin[Read JSON Payload
from stdin] + ReadStdin --> Derive[Derive Activity State
from event] + Derive --> Post[POST to Daemon
/api/v1/sessions/{id}/activity] + Post --> Success{Success?} + Success -->|Yes| Update[Daemon updates
activity_state] + Success -->|No| Log[Log to hooks.log
under AO_DATA_DIR] + Update --> Exit + Log --> Exit + +``` + +**Critical rules:** +1. **Always exit 0** — Hook failure must never break the user's agent +2. **Log failures** — Append to `hooks.log` under `AO_DATA_DIR` +3. **Best-effort delivery** — The daemon may be temporarily unavailable +4. **Idempotent** — Duplicate hook deliveries are safe + +### Hook Installation Patterns + +Different agents use different hook mechanisms: + +#### Claude Code / Compatible Agents + +```json +// .claude/hooks.json +{ + "SessionStart": ["ao hooks claude-code SessionStart"], + "UserPromptSubmit": ["ao hooks claude-code UserPromptSubmit"], + "Stop": ["ao hooks claude-code Stop"] +} +``` + +#### Factory Droid + +```json +// .factory/hooks.json +{ + "hooks": [ + { + "event": "agent:beforeThinking", + "command": "ao hooks droid beforeThinking" + }, + { + "event": "agent:afterThinking", + "command": "ao hooks droid afterThinking" + } + ] +} +``` + +#### Codex (Session Flags) + +```bash +# Codex passes hooks as session flags +codex -c 'hooks.SessionStart=["ao hooks codex SessionStart"]' \ + -c 'hooks.Stop=["ao hooks codex Stop"]' \ + --dangerously-bypass-hook-trust +``` + +--- + +## Session Metadata + +### Metadata Keys + +Hook callbacks persist normalized keys in the session metadata JSON blob: + +```go +const ( + // MetadataKeyAgentSessionID is the native agent's session identifier. + MetadataKeyAgentSessionID = "agentSessionId" + + // MetadataKeyTitle is the display title from the first user prompt. + MetadataKeyTitle = "title" + + // MetadataKeySummary is the display summary from the final assistant message. + MetadataKeySummary = "summary" +) +``` + +### Metadata Flow + +```mermaid +sequenceDiagram + participant Hook as Hook Callback + participant Daemon as AO Daemon + participant Store as SQLite Store + participant UI as Dashboard + + Note over Hook: User submits first prompt + Hook->>Daemon: POST /activity
{state: "active", title: "..."} + Daemon->>Store: Update session metadata
metadata.title = "..." + Store->>Store: CDC: session.updated + Store->>UI: SSE: session.updated + UI->>UI: Update session title + + Note over Hook: Agent finishes work + Hook->>Daemon: POST /activity
{state: "idle", summary: "..."} + Daemon->>Store: Update session metadata
metadata.summary = "..." + Store->>Store: CDC: session.updated + Store->>UI: SSE: session.updated + UI->>UI: Update session summary +``` + +### Metadata Persistence + +```mermaid +flowchart LR + Hook[Hook Callback] --> POST[POST Activity] + POST --> LCM[Lifecycle Manager] + LCM --> Update[Update Session Record] + Update --> Metadata[Set Metadata Fields] + Metadata --> CDC[CDC Broadcast] + CDC --> UI[Dashboard Updates] + +``` + +--- + +## Agent Lifecycle + +### Spawn Flow + +```mermaid +sequenceDiagram + participant User as User + participant UI as Dashboard + participant API as HTTP API + participant Mgr as Session Manager + participant Adapter as Agent Adapter + participant Runtime as Runtime + participant Agent as Agent Process + + User->>UI: Click "Spawn Session" + UI->>API: POST /sessions + API->>Mgr: Spawn(config) + + Note over Mgr: 1. Create session row + Mgr->>Mgr: Insert session with empty metadata + + Note over Mgr: 2. Prepare workspace + Mgr->>Adapter: GetAgentHooks(config) + Adapter->>Adapter: Write hook config + Adapter-->>Mgr: Hooks installed + + Note over Mgr: 3. Build launch command + Mgr->>Adapter: GetLaunchCommand(config) + Adapter-->>Mgr: Launch command argv + + Note over Mgr: 4. Execute in runtime + Mgr->>Runtime: Execute(agent command) + Runtime->>Agent: Spawn process + + Note over Agent: Agent starts + Agent->>Agent: Execute SessionStart hook + Agent->>API: POST /activity (agentSessionId) + API->>API: Update metadata + + Agent-->>Runtime: Running + Runtime-->>Mgr: Session active + Mgr-->>API: Session response + API-->>UI: Session created +``` + +### Restore Flow + +```mermaid +sequenceDiagram + participant User as User + participant UI as Dashboard + participant API as HTTP API + participant Mgr as Session Manager + participant Adapter as Agent Adapter + participant Runtime as Runtime + participant Agent as Agent Process + + User->>UI: Click "Restore Session" + UI->>API: POST /sessions/{id}/restore + API->>Mgr: Restore(session) + + Note over Mgr: Check adapter supports restore + Mgr->>Adapter: GetRestoreCommand(config) + + alt Restore supported + Adapter-->>Mgr: Restore command + Mgr->>Runtime: Execute(restore command) + Runtime->>Agent: Spawn process + Agent-->>Mgr: Running + Mgr-->>API: Session restored + else Restore not supported + Adapter-->>Mgr: (cmd, false, nil) + Mgr->>Mgr: Fresh spawn instead + Mgr-->>API: Session created (new) + end + + API-->>UI: Session response +``` + +### Activity Flow + +```mermaid +stateDiagram-v2 + [*] --> Spawning: Spawn() + Spawning --> Idle: Agent starts + Idle --> Active: User prompt + Active --> Active: Agent working + Active --> Waiting: Needs input + Waiting --> Active: User responds + Active --> Idle: Agent completes + Idle --> Exited: Agent exits + Active --> Exited: Agent crashes + Exited --> [*] + + note right of Active + Hook: UserPromptSubmit + Hook: ToolUse + activity_state = "active" + end note + + note right of Waiting + Hook: WaitingForInput + activity_state = "waiting_input" + end note + + note right of Idle + Hook: Stop + activity_state = "idle" + end note + + note right of Exited + Hook: Stop + activity_state = "exited" + is_terminated = true + end note +``` + +--- + +## Implementation Guide + +### Adapter Template + +```go +package myagent + +import ( + "context" + "fmt" +) + +// Plugin is the MyAgent adapter. +type Plugin struct { + // Adapter state (e.g., resolved binary path) +} + +// New returns a ready-to-register MyAgent adapter. +func New() *Plugin { + return &Plugin{} +} + +// GetConfigSpec describes the agent configuration. +func (p *Plugin) GetConfigSpec() ports.ConfigSpec { + return ports.ConfigSpec{ + Permissions: ports.PermissionReadWrite, // or ReadOnly, WriteOnly + SupportsSystemPrompt: true, + SupportsRestore: true, + } +} + +// GetLaunchCommand builds the native agent command. +func (p *Plugin) GetLaunchCommand(ctx context.Context, cfg ports.LaunchConfig) ([]string, error) { + // 1. Validate config + if err := cfg.Config.Validate(); err != nil { + return nil, fmt.Errorf("myagent: %w", err) + } + + // 2. Resolve binary + binary, err := p.resolveBinary(ctx) + if err != nil { + return nil, err + } + + // 3. Build command + cmd := []string{binary} + + // Add flags (model, permissions, etc.) + if cfg.Config.Model != "" { + cmd = append(cmd, "--model", cfg.Config.Model) + } + + // Add system prompt if supported + if cfg.SystemPrompt != "" { + cmd = append(cmd, "--system-prompt", cfg.SystemPrompt) + } + + // Add prompt + if cfg.Prompt != "" { + cmd = append(cmd, "--prompt", cfg.Prompt) + } + + return cmd, nil +} + +// GetPromptDeliveryStrategy reports how the prompt is delivered. +func (p *Plugin) GetPromptDeliveryStrategy() ports.PromptDeliveryStrategy { + return ports.StrategyArgv // or StrategyStdin +} + +// GetAgentHooks installs AO hooks. +func (p *Plugin) GetAgentHooks(ctx context.Context, cfg ports.WorkspaceHookConfig) error { + // 1. Read existing config + config, err := p.readConfig(cfg.WorkspacePath) + if err != nil { + return err + } + + // 2. Add AO hooks (preserving user hooks) + config = p.addHooks(config, cfg.SessionID) + + // 3. Write updated config + if err := p.writeConfig(cfg.WorkspacePath, config); err != nil { + return err + } + + // 4. Ensure .gitignore coverage + if err := p.ensureGitignore(cfg.WorkspacePath); err != nil { + return err + } + + return nil +} + +// GetRestoreCommand builds a restore command. +func (p *Plugin) GetRestoreCommand(ctx context.Context, cfg ports.RestoreConfig) ([]string, bool, error) { + // 1. Extract native session ID from metadata + sessionID := cfg.Session.Metadata[ports.MetadataKeyAgentSessionID] + if sessionID == "" { + return nil, false, nil // Restore not supported + } + + // 2. Build restore command + binary, err := p.resolveBinary(ctx) + if err != nil { + return nil, false, err + } + + cmd := []string{ + binary, + "--resume", sessionID, + // Re-apply permissions and system prompt + } + + return cmd, true, nil +} + +// SessionInfo returns normalized metadata. +func (p *Plugin) SessionInfo(ctx context.Context, session ports.SessionRef) (ports.SessionInfo, bool, error) { + info := ports.SessionInfo{ + AgentSessionID: session.Metadata[ports.MetadataKeyAgentSessionID], + Title: session.Metadata[ports.MetadataKeyTitle], + Summary: session.Metadata[ports.MetadataKeySummary], + } + + // Return hasData=true if any field is populated + hasData := info.AgentSessionID != "" || info.Title != "" || info.Summary != "" + + return info, hasData, nil +} + +// UninstallHooks removes AO hooks. +func (p *Plugin) UninstallHooks(ctx context.Context, workspacePath string) error { + // Remove AO hook entries while preserving user hooks + config, err := p.readConfig(workspacePath) + if err != nil { + return err + } + + config = p.removeHooks(config) + + return p.writeConfig(workspacePath, config) +} +``` + +### Hook Implementation + +```go +// Add hooks to the agent's config +func (p *Plugin) addHooks(config map[string]any, sessionID string) map[string]any { + // Define AO hook commands + aoHooks := map[string]string{ + "SessionStart": "ao hooks myagent SessionStart", + "UserPromptSubmit": "ao hooks myagent UserPromptSubmit", + "Stop": "ao hooks myagent Stop", + } + + // Merge with existing config, preserving user hooks + for event, command := range aoHooks { + if config[event] == nil { + config[event] = []string{command} + } else { + // Deduplicate: check if AO hook already exists + hooks := config[event].([]string) + found := false + for _, h := range hooks { + if strings.HasPrefix(h, "ao hooks myagent") { + found = true + break + } + } + if !found { + config[event] = append(hooks, command) + } + } + } + + return config +} +``` + +### Gitignore Enforcement + +```go +import "github.com/aoagents/agent-orchestrator/backend/internal/adapters/agent/hookutil" + +func (p *Plugin) ensureGitignore(workspacePath string) error { + // Every file the adapter writes must be gitignored + filesToIgnore := []string{ + ".myagent/config.json", + ".myagent/hooks.json", + } + + return hookutil.EnsureWorkspaceGitignore(workspacePath, ".myagent/") +} +``` + +--- + +## Supported Agents + +### Current Adapters + +AO currently supports 23+ agent adapters: + +```mermaid +mindmap + root((Agent Adapters)) + Anthropic + Claude Code + OpenAI + Codex + Cursor + Cursor + OpenCode + OpenCode + Aider + Aider + Amp + Amp Code + Goose + Goose + GitHub + Copilot + xAI + Grok + Alibaba + Qwen Code + Moonshot + Kimi Code + Reverb + Crush + Cline + Cline + Factory + Droid + Devin + Augment + Auggie + Continue + Continue + Kiro + Kiro + Kilo + Kilo Code + Agy + Agy + Roo + Roo Code + Windsurf + Windsurf +``` + +### Adapter Locations + +``` +backend/internal/adapters/agent/ +├── agy/ +├── aider/ +├── amp/ +├── augie/ +├── claudecode/ +├── clone/ +├── codex/ +├── continue/ +├── cursor/ +├── devin/ +├── droid/ +├── grok/ +├── goose/ +├── kilo/ +├── kimi/ +├── kiro/ +├── opencode/ +├── qwen/ +├── roo/ +├── crush/ +├── windsurf/ +└── ... +``` + +### Adapter Capabilities + +| Agent | Permissions | System Prompt | Restore | Hooks | +|-------|-------------|---------------|---------|-------| +| Claude Code | ✓ | ✓ | ✓ | ✓ | +| Codex | ✓ | ✓ | ✓ | ✓ (session flags) | +| Cursor | ✓ | ✓ | ✗ | ✗ | +| OpenCode | ✓ | ✓ | ✗ | ✗ | +| Aider | ✓ | ✓ | ✓ | ✓ | +| Amp | ✓ | ✓ | ✓ | ✓ | +| Grok | ✓ | ✓ | ✓ | ✓ (Claude compat) | +| ... | ... | ... | ... | ... | + +--- + +## Testing + +### Unit Tests + +```go +func TestGetLaunchCommand(t *testing.T) { + p := New() + cfg := ports.LaunchConfig{ + SessionID: "test-session", + Prompt: "Write a function", + Config: domain.AgentConfig{ + Model: "gpt-4", + }, + } + + cmd, err := p.GetLaunchCommand(context.Background(), cfg) + assert.NoError(t, err) + assert.Contains(t, cmd, "myagent") + assert.Contains(t, cmd, "--model", "gpt-4") + assert.Contains(t, cmd, "Write a function") +} +``` + +### Integration Tests + +```go +func TestAgentE2E(t *testing.T) { + // Skip if agent not installed + if !agentInstalled(t) { + t.Skip("myagent not installed") + } + + // Create test project + ctx := context.Background() + project := createTestProject(t) + + // Spawn session + session := spawnSession(t, ctx, project.ID, "myagent", "Hello") + + // Wait for activity + waitForActivity(t, ctx, session.ID, "active") + + // Verify metadata + info := getSessionInfo(t, ctx, session.ID) + assert.NotEmpty(t, info.AgentSessionID) + assert.NotEmpty(t, info.Title) + + // Kill session + killSession(t, ctx, session.ID) +} +``` + +### Conformance Tests + +```go +// TestGetAgentHooksFootprintIsGitignored verifies all adapter-written +// files are covered by .gitignore. +func TestGetAgentHooksFootprintIsGitignored(t *testing.T) { + registry := agentRegistry.New() + for _, adapter := range registry.List() { + t.Run(adapter, func(t *testing.T) { + tmpDir := t.TempDir() + cfg := ports.WorkspaceHookConfig{ + WorkspacePath: tmpDir, + SessionID: "test-session", + } + + agent := registry.Get(adapter) + err := agent.GetAgentHooks(context.Background(), cfg) + assert.NoError(t, err) + + // Verify all written files are gitignored + verifyGitignore(t, tmpDir) + }) + } +} +``` + +### Hook Tests + +```go +func TestHookDelivery(t *testing.T) { + // Mock daemon endpoint + server := mockActivityServer(t) + defer server.Close() + + // Simulate hook callback + payload := map[string]any{ + "state": "active", + "title": "Test session", + } + + cmd := exec.Command("ao", "hooks", "myagent", "UserPromptSubmit", "test-session") + cmd.Env = append(cmd.Env, + fmt.Sprintf("AO_SESSION_ID=%s", "test-session"), + fmt.Sprintf("AO_DAEMON_URL=%s", server.URL), + ) + + stdin, _ := cmd.StdinPipe() + json.NewEncoder(stdin).Encode(payload) + stdin.Close() + + err := cmd.Run() + assert.NoError(t, err) + + // Verify daemon received the activity + assert.ActivityReceived(t, server, "active") +} +``` + +--- + +## Summary + +**Key points:** + +1. **Port contract** — All agents implement `ports.Agent` +2. **Hooks are critical** — Activity signals and metadata flow through hooks +3. **Always gitignore** — Every adapter-written file must be covered +4. **Metadata from hooks** — `SessionInfo` reads from metadata, not files +5. **Preserve user hooks** — Never delete user configuration +6. **Exit 0 always** — Hook failure must never break the agent + +**Implementation checklist:** + +- [ ] Implement `ports.Agent` interface +- [ ] Write hook installation/removal +- [ ] Ensure all files are gitignored +- [ ] Implement `SessionInfo` from metadata +- [ ] Add unit tests +- [ ] Add integration tests +- [ ] Add conformance tests +- [ ] Register in daemon wiring diff --git a/docs/architecture.md b/docs/architecture.md index 8e5b6ffcc..4d6ea9901 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,103 +1,856 @@ -# Agent Orchestrator backend architecture +# Agent Orchestrator Architecture -The backend is a long-running Go daemon that supervises coding-agent sessions. -The current model is intentionally small: session rows persist only durable facts, -and display status is derived at read time. +Agent Orchestrator is a long-running Go daemon that supervises multiple parallel AI coding agent sessions. Each session runs in an isolated git worktree with its own runtime, while the daemon coordinates lifecycle, observes external state, and routes feedback. -## Mental model +## Table of Contents + +- [Mental Model](#mental-model) +- [System Overview](#system-overview) +- [Core Architectural Principles](#core-architectural-principles) +- [Component Architecture](#component-architecture) +- [Data Flows](#data-flows) +- [Persistence and CDC](#persistence-and-cdc) +- [Status Derivation](#status-derivation) +- [Lifecycle Management](#lifecycle-management) +- [Observation Loops](#observation-loops) +- [HTTP Layer](#http-layer) +- [Terminal Multiplexing](#terminal-multiplexing) + +--- + +## Mental Model + +The fundamental architecture follows a simple three-stage pipeline: + +```mermaid +flowchart LR + A[OBSERVE
External Facts] --> B[UPDATE
Durable Facts] + B --> C[DERIVE
Display Status / ACT] -``` -OBSERVE external facts → UPDATE durable facts → DERIVE display status / ACT ``` -The durable session facts are: +**Key insight:** Display status is never stored. It is computed at read time from durable facts. -- `activity_state` — what the agent last reported or what the runtime observer - can safely conclude (`active`, `idle`, `waiting_input`, `exited`). -- `is_terminated` — whether the session should be treated as over. -- PR facts in the `pr`, `pr_checks`, and `pr_comment` tables. +### Durable Session Facts -The UI status is not stored. `service.Session` computes it from the session -record plus PR facts while assembling controller-facing read models. +The only persistent session state is: -## Package layout +- `activity_state` — What the agent last reported (`active`, `idle`, `waiting_input`, `exited`) +- `is_terminated` — Whether the session should be treated as over +- PR facts — `pr`, `pr_checks`, `pr_comment` tables + +### What is NOT Durable + +Display status like `working`, `needs_input`, `ci_failed`, `mergeable` are **computed at read time** by the service layer from the durable facts above. + +--- + +## System Overview + +```mermaid +graph TB + subgraph Frontend + FE[Electron + React UI] + CLI[ao CLI] + end + + subgraph HTTP["HTTP Daemon (127.0.0.1)"] + Controllers[REST Controllers] + SSE[SSE Events] + Terminal[Terminal WebSocket] + end + + subgraph Core["Core Services"] + SessionSvc[Session Service] + ProjectSvc[Project Service] + PRSvc[PR Service] + ReviewSvc[Review Service] + SessionMgr[Session Manager] + LCM[Lifecycle Manager] + end + + subgraph Observe["Observation Layer"] + SCMObserver[SCM Observer] + Reaper[Runtime Reaper] + end + + subgraph Storage["Persistence Layer"] + SQLite[(SQLite DB)] + CDC[CDC Poller] + Broadcaster[Event Broadcaster] + end + + subgraph Adapters["Adapters"] + AgentAdapter[Agent Adapters] + RuntimeAdapter[Runtime tmux/conpty] + WorkspaceAdapter[Workspace git worktree] + SCMAdapter[SCM GitHub] + end + + FE -->|REST/SSE| Controllers + CLI -->|REST| Controllers + Controllers --> SessionSvc + Controllers --> ProjectSvc + Controllers --> PRSvc + + SessionSvc --> SessionMgr + SessionMgr --> LCM + SessionMgr --> AgentAdapter + SessionMgr --> RuntimeAdapter + SessionMgr --> WorkspaceAdapter + + LCM --> SQLite + LCM --> AgentAdapter + + SCMObserver --> SCMAdapter + SCMObserver --> SQLite + SCMObserver --> LCM + + Reaper --> RuntimeAdapter + Reaper --> SQLite + Reaper --> LCM + + CDC -->|poll| SQLite + CDC --> Broadcaster + Broadcaster --> SSE + + Terminal --> RuntimeAdapter ``` -backend/internal/domain shared vocabulary and API status value types -backend/internal/ports inbound/outbound interfaces -backend/internal/service/{project,session,pr,review} - controller-facing services and read-model assembly -backend/internal/session_manager internal session command manager -backend/internal/lifecycle runtime/activity/spawn/termination session fact reducer -backend/internal/observe/scm SCM (GitHub) observer loop feeding PR facts -backend/internal/observe/reaper runtime liveness observation loop -backend/internal/storage SQLite persistence and DB-triggered CDC -backend/internal/cdc change-log poller and broadcaster -backend/internal/httpd daemon HTTP surface (REST + SSE + terminal mux) -backend/internal/terminal WebSocket terminal multiplexer -backend/internal/adapters agent/tmux+conpty runtime/git-worktree/GitHub SCM + tracker adapters -backend/internal/daemon production wiring and shutdown -backend/internal/config daemon env/default config + +--- + +## Core Architectural Principles + +### 1. Port-Based Design + +Core code never depends on concrete implementations. All external systems are accessed through port interfaces defined in `backend/internal/ports/`: + +```mermaid +graph LR + Core[Core Services] -->|consumes| Ports[Port Interfaces] + Adapters[Adapters] -->|implement| Ports + External[External Systems] -->|wrapped by| Adapters + ``` -## Status derivation +### 2. Durable Facts, Derived Status -`service.Session` selects the display PR from all PR snapshots for a session, then -applies this rough precedence: +Storage layer persists minimal facts. Service layer computes display status on-demand: -1. `is_terminated` → `terminated`, except merged PRs display `merged`. -2. `activity_state=waiting_input` → `needs_input`. -3. Open PR facts drive PR pipeline statuses: `ci_failed`, `draft`, - `changes_requested`, `mergeable`, `approved`, `review_pending`, `pr_open`. -4. `activity_state=active` → `working`. -5. A signal-capable harness that has never sent a hook callback past the - ~90s spawn grace → `no_signal` (a broken hook pipeline is visible rather - than reported as a confident `idle`). Hook-less harnesses stay `idle`. -6. Everything else → `idle`. +```mermaid +flowchart LR + SQLite[(SQLite)] -->|raw facts| Service[Session Service] + Service -->|compute| Status[Display Status] + Service -->|enrich| UI[Dashboard/UI] -## Lifecycle manager + SQLite -->|activity_state| Service + SQLite -->|is_terminated| Service + SQLite -->|PR facts| Service + SQLite -->|runtime_handle| Service -`lifecycle.Manager` is the write path for session lifecycle facts and lifecycle-owned agent nudges: +``` -- runtime observations can mark a session terminated only when runtime and - process are both clearly dead and recent activity does not contradict that; - failed/unknown probes do not persist a special state. -- activity signals update `activity_state`; `exited` also marks the session - terminated. -- PR observations do not write PR rows here, but after the PR service persists - them lifecycle sends actionable agent nudges for CI failures, review feedback, - and merge conflicts. +### 3. Observer Pattern -## PR manager +Observation is separated from action: -`pr.Manager` records SCM observations into the PR/check/comment tables, then -forwards the observation to lifecycle for agent nudges. A merged PR marks the -owning session terminated through the lifecycle manager; other PR facts are -consumed at read time for display status. +- **Observe layer** — SCM Observer, Runtime Reaper poll external state +- **Lifecycle layer** — Reduces observations into durable facts +- **Service layer** — Computes display status from facts -## Session manager +### 4. Change Data Capture -`session_manager.Manager` performs internal session mutations: +All durable changes flow through a CDC pipeline: -- `Spawn` creates a row, creates workspace/runtime resources, and reports the - handles to the lifecycle manager. -- `Kill` marks the row terminated, then tears down runtime/workspace resources. -- `Restore` relaunches a terminated session and clears `is_terminated` via the - spawn-completed path. +```mermaid +flowchart LR + DB[(SQLite)] -->|triggers| ChangeLog[change_log table] + ChangeLog -->|tail| Poller[CDC Poller] + Poller -->|Event| Broadcaster[Event Broadcaster] + Broadcaster -->|fan-out| Subscribers[Subscribers] + Subscribers -->|SSE| Clients[Dashboard Clients] -`service.Session` is the controller-facing boundary. It delegates commands to -`session_manager.Manager` and attaches derived display status on read paths. +``` + +--- + +## Component Architecture + +### Package Layout + +``` +backend/internal/ +├── domain/ # Shared vocabulary and durable fact records +├── ports/ # Inbound/outbound interfaces +├── service/ # Controller-facing services +│ ├── project/ # Project CRUD +│ ├── session/ # Session read-model assembly +│ ├── pr/ # PR observation service +│ └── review/ # Code review service +├── session_manager/ # Internal session command engine +├── lifecycle/ # Durable session fact reducer +├── observe/ # Observation loops +│ ├── scm/ # SCM (GitHub) observer +│ └── reaper/ # Runtime liveness observer +├── storage/ # SQLite persistence +│ └── sqlite/ # DB, migrations, queries, stores +├── cdc/ # Change-log poller and broadcaster +├── httpd/ # HTTP API, controllers, terminal mux +├── terminal/ # Terminal session protocol +├── adapters/ # Concrete adapter implementations +│ ├── agent/ # 23+ agent harnesses +│ ├── runtime/ # tmux/conpty runtimes +│ ├── workspace/ # git worktree +│ ├── scm/ # GitHub +│ └── tracker/ # GitHub tracker +├── daemon/ # Production wiring +└── config/ # Environment-based configuration +``` + +### Core Data Flow + +```mermaid +sequenceDiagram + participant UI as Dashboard + participant HTTP as HTTP Controller + participant Svc as Session Service + participant Mgr as Session Manager + participant LCM as Lifecycle Manager + participant Agent as Agent Adapter + participant Runtime as Runtime Adapter + participant WS as Workspace Adapter + participant DB as SQLite + participant CDC as CDC Broadcaster + + UI->>HTTP: POST /sessions + HTTP->>Svc: Spawn(config) + Svc->>Mgr: Spawn(config) + + Note over Mgr: 1. Create session row + Mgr->>DB: Insert session + DB->>CDC: trigger change_log + CDC->>UI: SSE session.created + + Note over Mgr: 2. Create workspace + Mgr->>WS: Create(project, branch) + WS->>WS: git worktree add + + Note over Mgr: 3. Launch runtime + Mgr->>Runtime: Create(session) + Runtime->>Runtime: Start tmux/conpty + + Note over Mgr: 4. Start agent + Mgr->>Agent: GetLaunchCommand() + Agent-->>Mgr: launch command + Mgr->>Runtime: Execute(agent command) + + Note over Mgr: 5. Mark spawned + Mgr->>LCM: MarkSpawned(handle) + LCM->>DB: Update activity_state + DB->>CDC: trigger change_log + CDC->>UI: SSE session.updated + + Mgr-->>Svc: Session(created) + Svc-->>HTTP: Session response + HTTP-->>UI: 201 Created +``` + +--- + +## Data Flows + +### Session Spawn Flow + +```mermaid +flowchart TD + Start([User spawns session]) --> Validate[Validate project config] + Validate --> CreateRow[Create session row in SQLite] + CreateRow --> CreateWS[Create git worktree] + CreateWS --> CreateRT[Launch runtime tmux/conpty] + CreateRT --> GetCmd[Get agent launch command] + GetCmd --> ExecAgent[Execute agent in runtime] + ExecAgent --> MarkSpawned[MarkSpawned in LCM] + MarkSpawned --> Trigger1[CDC: session.created] + Trigger1 --> Trigger2[CDC: session.updated] + Trigger2 --> Done([Session running]) + +``` + +### Observation Flow + +```mermaid +flowchart TD + subgraph SCM["SCM Observer Loop"] + Poll1[Poll PRs every 30s] + Poll1 --> Fetch[Fetch from GitHub API] + Fetch --> Diff[Semantic diff vs local] + Diff --> Changed{Changed?} + Changed -->|Yes| WritePR[Write PR/check/comment] + Changed -->|No| Wait1[Wait for tick] + WritePR --> NotifyLCM[Notify Lifecycle Manager] + NotifyLCM --> Trigger1[CDC event] + Trigger1 --> Wait1 + Wait1 --> Poll1 + end + + subgraph Reaper["Runtime Reaper Loop"] + Poll2[Poll every 5s] + Poll2 --> Probe[Probe each runtime] + Probe --> Report[Report fact to LCM] + Report --> Trigger2[CDC event] + Trigger2 --> Wait2[Wait for tick] + Wait2 --> Poll2 + end + + LCM[Lifecycle Manager] -->|consumes| NotifyLCM + LCM -->|consumes| Report + +``` + +### Feedback Routing Flow + +```mermaid +sequenceDiagram + participant SCM as SCM Observer + participant LCM as Lifecycle Manager + participant Agent as Agent Adapter + participant Runtime as Runtime Adapter + + SCM->>SCM: Observe PR comment + SCM->>LCM: ApplySCMObservation() + LCM->>LCM: Detect actionable feedback + LCM->>Agent: SendNudge(feedback) + + SCM->>SCM: Observe CI failure + SCM->>LCM: ApplySCMObservation() + LCM->>LCM: Detect actionable feedback + LCM->>Agent: SendNudge(CI failure) + + SCM->>SCM: Observe merge conflict + SCM->>LCM: ApplySCMObservation() + LCM->>LCM: Detect actionable feedback + LCM->>Agent: SendNudge(merge conflict) + + Note over Agent,Runtime: Agent receives nudges via
runtime messages or hooks +``` + +--- ## Persistence and CDC -SQLite is the durable store. User-visible table changes are captured by database -triggers into `change_log`; the Go store does not manually emit CDC events. A -poller tails `change_log` and publishes live events to in-process subscribers. +### SQLite Schema -## Load-bearing rules +```mermaid +erDiagram + projects ||--o{ sessions : owns + sessions ||--o{ pull_requests : owns + pull_requests ||--o{ pr_checks : has + pull_requests ||--o{ pr_review_threads : has + pull_requests ||--o{ pr_comments : has + sessions ||--o{ notifications : has + change_log }|--|| projects : tracks + change_log }|--|| sessions : tracks + change_log }|--|| pull_requests : tracks -- Do not store display status. -- Keep session status facts small: `activity_state`, `is_terminated`, and PR - facts are the durable inputs. -- Do not treat failed probes as death. -- Do not force-delete registered dirty worktrees. + projects { + string id PK + string name + string repo + jsonb config + } + + sessions { + string id PK + string project_id FK + string harness + string activity_state + boolean is_terminated + jsonb metadata + } + + pull_requests { + string id PK + string session_id FK + integer number + string state + string title + boolean draft + boolean mergeable + } + + pr_checks { + string id PK + string pr_id FK + string name + string status + string conclusion + } + + change_log { + bigint seq PK + string table_name + string row_id + string operation + jsonb old_data + jsonb new_data + } +``` + +### CDC Pipeline + +```mermaid +flowchart LR + DB[(SQLite)] -->|INSERT/UPDATE/DELETE| Trigger[DB Trigger] + Trigger -->|append| ChangeLog[change_log] + ChangeLog -->|poll| Poller[CDC Poller] + Poller -->|decode| Decoder[Event Decoder] + Decoder -->|Event| Broadcaster[Broadcaster] + Broadcaster -->|callback| Sub1[Terminal Fanout] + Broadcaster -->|callback| Sub2[SSE Writer] + Broadcaster -->|callback| Sub3[Cache Invalidation] + + Poller -->|watermark| Watermark[seq tracking] + Watermark -->|resume position| Poller + +``` + +--- + +## Status Derivation + +### Display Status Precedence + +The `service.Session` computes display status from durable facts using this precedence (highest to lowest): + +```mermaid +flowchart TD + CheckTerm{is_terminated?} + CheckTerm -->|Yes| PRMerged{PR merged?} + CheckTerm -->|No| CheckWait{activity_state
== waiting_input?} + + PRMerged -->|Yes| Merged[merged] + PRMerged -->|No| Terminated[terminated] + + CheckWait -->|Yes| NeedsInput[needs_input] + CheckWait -->|No| CheckPR{Has PR facts?} + + CheckPR -->|Yes| PRPipeline[PR Pipeline Check] + CheckPR -->|No| CheckActive{activity_state
== active?} + + PRPipeline --> PRState{PR State} + PRState -->|ci failed| CIFailed[ci_failed] + PRState -->|draft| Draft[draft] + PRState -->|changes requested| Changes[changes_requested] + PRState -->|not mergeable| Conflict[merge_conflict] + PRState -->|mergeable| Mergeable[mergeable] + PRState -->|approved| Approved[approved] + PRState -->|review pending| ReviewPending[review_pending] + PRState -->|open| PROpen[pr_open] + + CheckActive -->|Yes| Working[working] + CheckActive -->|No| CheckSignal{Signal capable
&& no signal?} + + CheckSignal -->|Yes| NoSignal[no_signal] + CheckSignal -->|No| Idle[idle] + +``` + +### PR Pipeline States + +```mermaid +flowchart LR + PR[Open PR] --> CI{CI Status} + CI -->|failing| CIFailed[ci_failed] + CI -->|pending| CIPending[ci_pending] + CI -->|passing| Review{Reviews} + + Review -->|changes requested| Changes[changes_requested] + Review -->|approved| Mergeable{Mergeable?} + + Mergeable -->|conflict| Conflict[merge_conflict] + Mergeable -->|yes| Merged[Mergeable] + + PR -.->|draft| Draft[Draft State] + +``` + +--- + +## Lifecycle Management + +### Lifecycle Manager Responsibilities + +The `lifecycle.Manager` is the **canonical write path** for all session lifecycle facts: + +```mermaid +flowchart TD + subgraph Inputs["Observation Inputs"] + RuntimeObs[Runtime Observations] + ActivitySignals[Agent Activity Signals] + SCMObs[SCM Observations] + end + + subgraph LCM["Lifecycle Manager"] + Reducer[Fact Reducer] + StateMachine[Activity State Machine] + Termination[Termination Logic] + Nudge[Agent Nudge Engine] + end + + subgraph Outputs["Durable Facts"] + ActivityState[activity_state] + IsTerminated[is_terminated] + PRFacts[PR Facts Table] + end + + RuntimeObs --> Reducer + ActivitySignals --> Reducer + SCMObs --> Reducer + + Reducer --> StateMachine + StateMachine --> Termination + Termination --> ActivityState + Termination --> IsTerminated + + SCMObs --> Nudge + Nudge -->|route| Agent[Agent Adapter] + +``` + +### Session State Machine + +```mermaid +stateDiagram-v2 + [*] --> Spawning: Spawn() + Spawning --> Active: MarkSpawned + Active --> Idle: activity_state = idle + Active --> Working: activity_state = active + Active --> Waiting: activity_state = waiting_input + Active --> Exited: activity_state = exited + Working --> Active: work completes + Waiting --> Active: user responds + Idle --> Active: agent starts work + Exited --> Terminated: process exit + Active --> Terminated: Kill() + Waiting --> Terminated: Kill() + Idle --> Terminated: Kill() + Terminated --> [*] + + note right of Active + Agent is working + Runtime alive + end note + + note right of Waiting + Agent needs input + Waiting for user + end note + + note right of Terminated + Session over + Runtime cleaned up + end note +``` + +### Termination Guardrails + +The lifecycle manager only terminates when **all** conditions are met: + +```mermaid +flowchart TD + Check{Can terminate?} + Check -->|No| Keep[Keep running] + + Check -->|Yes| AllDead{Runtime AND
process dead?} + AllDead -->|No| Keep + AllDead -->|Yes| NoRecent{No recent
activity?} + NoRecent -->|No| Keep + NoRecent -->|Yes| NoPR{No merged PR
ownership?} + NoPR -->|No| Keep + NoPR -->|Yes| Terminate[Mark terminated] + + Terminate --> Cleanup[Trigger cleanup] + Cleanup --> CDC[CDC event] + CDC --> UI[Dashboard update] + +``` + +**Key principle:** Failed probes are NOT proof of death. A session is only terminated when the runtime and process are **both** clearly dead and recent activity doesn't contradict that. + +--- + +## Observation Loops + +### SCM Observer + +```mermaid +flowchart TD + Start([Observer Start]) --> Immediate[Immediate Poll] + Immediate --> Loop{Tick every 30s} + + Loop --> ListRepos[List active repos] + ListRepos --> CheckCreds{Credentials
available?} + CheckCreds -->|No| Disabled[Disabled mode] + CheckCreds -->|Yes| Fetch[Fetch PRs via ETags] + + Fetch --> ListPRs[List open PRs] + ListPRs --> Discover[Discover new PRs] + Discover --> FetchDetailed[Fetch detailed PR data] + FetchDetailed --> FetchChecks[Fetch CI checks] + FetchChecks --> FetchReviews[Fetch review threads] + + FetchReviews --> Write[Write to SQLite] + Write --> Notify[Notify Lifecycle] + Notify --> Trigger[CDC event] + + Disabled --> Loop + Trigger --> Loop + +``` + +### Runtime Reaper + +```mermaid +flowchart TD + Start([Reaper Start]) --> Loop{Tick every 5s} + + Loop --> List[List non-terminated
sessions] + List --> ForEach[For each session] + + ForEach --> GetHandle{Has runtime
handle?} + GetHandle -->|No| Skip[Skip session] + GetHandle -->|Yes| Probe[Probe runtime] + + Probe --> Result{Probe result} + Result -->|Error| ReportFailed[Report ProbeFailed] + Result -->|Alive| ReportAlive[Report ProbeAlive] + Result -->|Dead| ReportDead[Report ProbeDead] + + ReportFailed --> Apply[ApplyRuntimeObservation] + ReportAlive --> Apply + ReportDead --> Apply + + Apply --> LCM[Lifecycle Manager] + LCM --> Update[Update facts] + Update --> CDC[CDC event] + + Skip --> NextSession{More sessions?} + CDC --> NextSession + NextSession -->|Yes| ForEach + NextSession -->|No| Loop + +``` + +### Observation Integration + +```mermaid +flowchart LR + subgraph External["External State"] + GitHub[GitHub API] + Runtimes[tmux/conpty] + end + + subgraph Observers["Observation Layer"] + SCM[SCM Observer] + Reaper[Runtime Reaper] + end + + subgraph Core["Core Processing"] + LCM[Lifecycle Manager] + PRMgr[PR Manager] + end + + subgraph Storage["Persistence"] + SQLite[(SQLite)] + end + + GitHub --> SCM + Runtimes --> Reaper + + SCM --> PRMgr + PRMgr --> SQLite + PRMgr --> LCM + + Reaper --> LCM + LCM --> SQLite + +``` + +--- + +## HTTP Layer + +### API Structure + +```mermaid +flowchart TD + subgraph HTTPD["HTTP Daemon"] + Router[Router + Middleware] + + Router --> API[REST API] + Router --> Events[SSE Events] + Router --> Terminal[Terminal WebSocket] + end + + subgraph Controllers["Controllers"] + Sessions[Sessions Controller] + Projects[Projects Controller] + PRs[PRs Controller] + Reviews[Reviews Controller] + end + + subgraph Services["Services"] + SessionSvc[Session Service] + ProjectSvc[Project Service] + PRSvc[PR Service] + ReviewSvc[Review Service] + end + + API --> Sessions + API --> Projects + API --> PRs + API --> Reviews + + Sessions --> SessionSvc + Projects --> ProjectSvc + PRs --> PRSvc + Reviews --> ReviewSvc + + Events -->|subscribe| CDC[CDC Broadcaster] + Terminal --> TerminalMux[Terminal Manager] + +``` + +### Request Flow + +```mermaid +sequenceDiagram + participant Client + participant Router + participant Controller + participant Service + participant Manager + participant Store + participant DB + + Client->>Router: POST /api/v1/sessions + Router->>Router: Middleware (auth, logging) + Router->>Controller: handler(w, r) + Controller->>Controller: decode JSON + Controller->>Service: Spawn(config) + Service->>Manager: Spawn(config) + Manager->>Store: Create session + Store->>DB: INSERT INTO sessions + DB->>Store: session record + Store->>Manager: session record + Manager->>Manager: Create workspace + Manager->>Manager: Launch runtime + Manager->>Service: Session response + Service->>Controller: enriched session + Controller->>Controller: encode JSON + Controller->>Client: 201 Created + Session +``` + +--- + +## Terminal Multiplexing + +### Terminal Architecture + +```mermaid +flowchart TD + subgraph Frontend + Browser[Browser Terminal] + end + + subgraph HTTPD + WS[WebSocket Handler] + end + + subgraph Terminal + Mux[Terminal Mux] + Sessions[Session States] + end + + subgraph Runtime + TMux[tmux Runtime] + ConPTY[conpty Runtime] + end + + Browser -->|WebSocket| WS + WS -->|attach| Mux + Mux --> Sessions + Sessions -->|create| TMux + Sessions -->|create| ConPTY + + TMux -->|PTY attach| Mux + ConPTY -->|loopback dial| Mux + + Mux -->|frame| WS + WS -->|binary| Browser + +``` + +### Attach Flow + +```mermaid +sequenceDiagram + participant Client as Browser + participant WS as WebSocket Handler + participant Mux as Terminal Mux + participant Runtime as tmux/conpty + + Client->>WS: WebSocket upgrade + WS->>Mux: Attach(session, rows, cols) + Mux->>Runtime: Attach(handle, rows, cols) + + Runtime->>Runtime: Create PTY + Runtime->>Runtime: Spawn tmux attach + + loop Data Loop + Runtime->>Mux: PTY output + Mux->>WS: Binary frame + WS->>Client: WebSocket message + + Client->>WS: User input + WS->>Mux: Input frame + Mux->>Runtime: Write to PTY + end + + Client->>WS: Close + WS->>Mux: Detach + Mux->>Runtime: Close PTY +``` + +--- + +## Load-Bearing Rules + +These rules are **load-bearing** — changing them breaks fundamental architectural assumptions: + +1. **Never store display status** — Status is derived from durable facts at read time +2. **Never treat failed probes as death** — A failed probe is a fact, not a termination signal +3. **Never force-delete dirty worktrees** — User data safety over cleanup convenience +4. **All app state under ~/.ao** — No OS-default app-data locations +5. **Daemon binds to 127.0.0.1 only** — No network exposure, ever +6. **CLI is thin** — All logic lives in the daemon, CLI is just an HTTP client +7. **CDC is source-truth for events** — DB triggers write to change_log, poller fans out +8. **Adapters are leaves** — Adapters never import core packages, only ports and domain +9. **Hooks are gitignored** — Every file an adapter writes must be in .gitignore +10. **Migrations never change** — Add new migrations, never modify existing ones + +--- + +## Summary + +Agent Orchestrator's architecture is designed around: + +- **Separation of concerns** — Observation, persistence, and display are distinct layers +- **Port-based design** — Core code depends on interfaces, not implementations +- **Durable minimalism** — Store only facts, compute everything else +- **Event-driven updates** — CDC broadcasts changes to all subscribers +- **Isolation** — Each session in its own worktree with its own runtime +- **Safety** — Conservative termination, path validation, gitignored hooks + +This architecture enables parallel AI agents to work safely while maintaining complete visibility and control. diff --git a/docs/backend-code-structure.md b/docs/backend-code-structure.md index 2fc1a7db8..1910cb2b7 100644 --- a/docs/backend-code-structure.md +++ b/docs/backend-code-structure.md @@ -1,392 +1,942 @@ # Backend Code Structure -This document describes package ownership for the Go backend. It is about where -code belongs. See [architecture.md](architecture.md) for lifecycle behavior, -status derivation, persistence, CDC, and invariants. +This document describes package ownership for the Go backend. It defines where code belongs, how packages interact, and the architectural boundaries that keep the system maintainable. -## Goal +## Table of Contents -The backend is a local daemon that supervises coding-agent sessions. The code -needs clear homes for product workflows, protocol surfaces, persistence, and -replaceable external systems without turning any single package into a catch-all. +- [Overview](#overview) +- [Architecture Layers](#architecture-layers) +- [Package-by-Package Ownership](#package-by-package-ownership) +- [Interface Placement Rules](#interface-placement-rules) +- [Import Graph](#import-graph) +- [Adding New Code](#adding-new-code) +- [Examples](#examples) -The current structure is a layered hybrid: +--- -- `domain` holds shared product vocabulary and durable fact records. -- `service/*` owns controller-facing product use cases and read models. -- `session_manager` owns internal session mutations and resource orchestration. -- `lifecycle` owns the durable session fact reducer. -- `ports` defines narrow capability interfaces consumed by core code. -- `adapters/*` implements those capabilities with real external systems. -- `storage/sqlite` and `cdc` own persistence and change delivery. -- `httpd` and `cli` own protocol concerns. -- `daemon` wires the production graph together. +## Overview -## Package Roles +The backend is a **layered hybrid** architecture with clear separation between core business logic and external concerns: + +```mermaid +graph TB + subgraph CLI["CLI Layer"] + CLI[internal/cli] + end + + subgraph HTTP["HTTP Layer"] + HTTPD[internal/httpd] + end + + subgraph Services["Service Layer"] + Project[internal/service/project] + Session[internal/service/session] + PR[internal/service/pr] + Review[internal/service/review] + end + + subgraph Core["Core Layer"] + SessionMgr[internal/session_manager] + Lifecycle[internal/lifecycle] + Observe[internal/observe/*] + end + + subgraph Data["Data Layer"] + Domain[internal/domain] + Ports[internal/ports] + Storage[internal/storage/sqlite] + CDC[internal/cdc] + end + + subgraph Infra["Infrastructure Layer"] + Terminal[internal/terminal] + Adapters[internal/adapters/*] + Daemon[internal/daemon] + Config[internal/config] + end + + CLI -->|calls| HTTPD + HTTPD -->|calls| Services + Services -->|calls| Core + Services -->|uses| Data + Core -->|uses| Data + Core -->|uses| Infra + HTTPD -->|uses| Data + +``` + +### Key Architectural Principles + +1. **Domain stays pure** — No infrastructure dependencies +2. **Ports define contracts** — Interfaces consumed by core, implemented by adapters +3. **Services orchestrate** — Controller-facing use cases over core and data +4. **Adapters are leaves** — Implement ports, don't import core +5. **CLI/HTTP stay thin** — Just protocol handling, all logic in daemon + +--- + +## Architecture Layers + +### Layer Interactions + +```mermaid +flowchart LR + Protocol[Protocol Layer
CLI + HTTP] -->|uses| Services[Service Layer
Use Cases] + Services -->|commands| Core[Core Layer
Session Manager + Lifecycle] + Services -->|queries| Data[Data Layer
Domain + Ports + Storage] + Core -->|reads/writes| Data + Core -->|invokes| Infra[Infrastructure
Adapters + Terminal] + Infra -->|implements| Ports + +``` + +### Dependency Rules + +```mermaid +graph TD + Direction[Dependency Direction] + Direction --> Down["Top-down only"] + Direction --> No["No upward dependencies"] + + CLI[CLI] -->|OK| HTTP[HTTP] + HTTP -->|OK| Services[Services] + Services -->|OK| Core[Core] + Services -->|OK| Storage[Storage] + Core -->|OK| Adapters[Adapters] + + Bad1[Adapters] -.->|FORBIDDEN| Services + Bad2[Storage] -.->|FORBIDDEN| HTTP + Bad3[Core] -.->|FORBIDDEN| CLI + +``` + +--- + +## Package-by-Package Ownership ### `internal/domain` -`domain` is AO's shared product language. Keep it stable and free of -infrastructure imports. +**Purpose:** Shared product vocabulary and durable fact records. The single source of truth for domain concepts. -Belongs here: +```mermaid +graph TD + Domain[internal/domain] --> Contains[Contains] + Contains --> IDs[Shared IDs
ProjectID, SessionID, IssueID] + Contains --> Enums[Status Enums
SessionStatus, ActivityState] + Contains --> Records[Durable Records
SessionRecord, PRRecord] + Contains --> Vocab[Product Vocabulary
PR, Project, Review concepts] -- shared IDs such as `ProjectID`, `SessionID`, and `IssueID`; -- shared enums and status vocabulary; -- durable fact records that multiple packages must agree on; -- PR, tracker, project, and session vocabulary that is not transport-specific. + DoesNot[Does NOT Contain] --> HTTP[HTTP DTOs] + DoesNot --> CLI[CLI Output] + DoesNot --> Generated[sqlc Generated Rows] + DoesNot --> External[External Payloads
GitHub, Claude, etc.] -Does not belong here: - -- HTTP request/response DTOs; -- CLI output shapes; -- OpenAPI wrapper/envelope types; -- sqlc generated rows; -- GitHub, tmux, Claude, Codex, or OpenCode payloads; -- one-resource controller helper types. - -Rule of thumb: if AO would still use the concept after replacing HTTP, the CLI, -SQLite, GitHub, the tmux/conpty runtime, and every agent adapter, and more than one package needs -the exact vocabulary, it may belong in `domain`. - -### `internal/service/*` - -`service` packages are the controller-facing application boundary. - -Current examples: - -```txt -internal/service/project -internal/service/session -internal/service/pr -internal/service/review ``` -Belongs here: +**Belongs here:** +- Shared IDs: `ProjectID`, `SessionID`, `IssueID` +- Enums and status vocabulary +- Durable fact records used across packages +- PR, tracker, project, session vocabulary -- resource use cases called by HTTP controllers and CLI-backed API flows; -- resource read models and command/result types; -- display-model assembly, such as session status derived from session and PR - facts; -- resource-specific validation and user-facing errors; -- small store interfaces consumed by the service. +**Does NOT belong here:** +- HTTP request/response DTOs +- CLI output shapes +- OpenAPI wrapper types +- sqlc generated rows +- External system payloads (GitHub, tmux, agent-specific) -Does not belong here: +**Rule of thumb:** If AO would still use the concept after replacing HTTP, CLI, SQLite, GitHub, tmux, and every agent adapter, it belongs in domain. -- low-level runtime/workspace/agent process control; -- raw sqlc generated rows as public service results; -- HTTP routing, path parsing, status-code decisions, or OpenAPI generation; -- concrete external adapter details. - -For example, project API concepts live in `internal/service/project`, not in -`domain` and not in a top-level `internal/project` package. - -### `internal/session_manager` - -`session_manager` owns internal session commands: spawn, restore, kill, cleanup, -and send-related orchestration over runtime, workspace, agent, storage, -messenger, and lifecycle dependencies. - -Belongs here: - -- multi-step session mutations; -- rollback/cleanup sequencing when spawn partially succeeds; -- resource teardown safety; -- internal errors such as not found, terminated, or not restorable. - -Does not belong here: - -- HTTP request decoding; -- CLI formatting; -- controller-facing list/get read-model assembly; -- terminal WebSocket framing. - -The split is intentional: `service/session` is the product/API boundary; -`session_manager` is the internal command engine. - -### `internal/lifecycle` - -`lifecycle` is the canonical write path for durable session lifecycle facts. It -reduces runtime observations, activity signals, spawn completion, termination, -and PR observations into small persisted facts. - -Belongs here: - -- updates to lifecycle-owned session facts; -- guardrails around runtime/activity observations; -- lifecycle-triggered agent nudges for actionable PR facts. - -Does not belong here: - -- display status persistence; -- HTTP/CLI DTOs; -- direct adapter implementation details; -- PR row persistence. - -The UI status is derived at read time by service code. Do not store display -status in lifecycle or SQLite. +--- ### `internal/ports` -`ports` contains narrow capability interfaces and shared adapter-facing structs. -It connects core code to replaceable systems. +**Purpose:** Narrow capability interfaces that connect core code to replaceable external systems. -Current capability examples: +```mermaid +graph LR + Core[Core Code] -->|consumes| Ports[Ports Interfaces] + Adapters[Adapters] -->|implement| Ports -- `Runtime` -- `Workspace` -- `Agent` -- `AgentResolver` -- `AgentMessenger` -- `PRWriter` + Ports --> Examples[Examples] + Examples --> Runtime[Runtime
Create, Destroy, IsAlive, Attach] + Examples --> Workspace[Workspace
Create, Destroy, ValidatePath] + Examples --> Agent[Agent
GetLaunchCommand, GetAgentHooks] + Examples --> SCM[SCM
ListPRs, FetchPR, FetchChecks] + Examples --> PR[PR
WriteSCMObservation] -Belongs here: - -- interfaces consumed by core packages and implemented by adapters; -- capability structs such as `RuntimeConfig`, `WorkspaceConfig`, and - `SpawnConfig`; -- vocabulary needed at the boundary between core orchestration and adapters. - -Does not belong here: - -- resource read models like project/session API responses; -- HTTP request/response DTOs; -- sqlc rows; -- concrete adapter options; -- one-off interfaces that only a single package needs internally. - -Keep `ports` capability-oriented. It should not become the dumping ground for -every manager, DTO, and resource contract. - -### `internal/adapters/*` - -Adapters are concrete implementations of external systems. - -Current examples: - -```txt -internal/adapters/agent/claudecode -internal/adapters/agent/codex -internal/adapters/agent/opencode -internal/adapters/runtime/tmux -internal/adapters/runtime/conpty -internal/adapters/runtime/runtimeselect -internal/adapters/runtime/ptyexec -internal/adapters/workspace/gitworktree -internal/adapters/scm/github -internal/adapters/tracker/github ``` -Adapters should be leaves in the import graph. They translate external behavior -into AO ports and domain concepts; they should not own product workflows. +**Belongs here:** +- Interfaces consumed by core packages, implemented by adapters +- Capability structs: `RuntimeConfig`, `WorkspaceConfig`, `SpawnConfig` +- Vocabulary at the boundary between core and adapters -Good: +**Does NOT belong here:** +- Resource read models (belongs in `service/*`) +- HTTP request/response DTOs (belongs in `httpd`) +- sqlc rows (belongs in `storage/sqlite`) +- One-off internal interfaces + +**Key Port Interfaces:** + +| Port | Purpose | Implementations | +|------|---------|-----------------| +| `Runtime` | Process isolation | `tmux`, `conpty` | +| `Workspace` | Git worktree management | `gitworktree` | +| `Agent` | Agent launching | 23+ agent adapters | +| `SCM` | PR/CI observation | `github` | +| `Tracker` | Issue tracking | `github` (adapter only) | +| `AgentMessenger` | Agent communication | Agent hooks | +| `PRWriter` | PR persistence | `pr.Manager` | + +--- + +### `internal/service/*` + +**Purpose:** Controller-facing application boundary. Owns product use cases and read-model assembly. + +```mermaid +graph TD + subgraph Services + Project[project] + Session[session] + PR[pr] + Review[review] + end + + subgraph Responsibilities + UseCases[Use Cases] + ReadModels[Read Models] + Validation[Validation] + Errors[User-Facing Errors] + end + + Project --> Responsibilities + Session --> Responsibilities + PR --> Responsibilities + Review --> Responsibilities + + subgraph NotHere + LowLevel[Low-level runtime control] + RawSQL[Raw sqlc rows] + HTTP[HTTP routing] + end -```txt -session_manager -> ports.Runtime -adapters/runtime/tmux -> ports + domain -adapters/workspace/gitworktree -> ports + domain -daemon -> adapters + services + storage ``` -Avoid: +**Current service packages:** + +```mermaid +graph LR + Controllers[HTTP Controllers] -->|call| Services + + Services --> Project[internal/service/project
Project CRUD] + Services --> Session[internal/service/session
Session read-model assembly] + Services --> PR[internal/service/pr
PR observation/actions] + Services --> Review[internal/service/review
Code review] + + Services -->|delegate to| SessionMgr[session_manager] + Services -->|query| Store[storage stores] -```txt -domain -> adapters -service/session -> adapters/runtime/tmux -httpd/controllers -> storage/sqlite/store -adapters/* -> httpd ``` +**Belongs here:** +- Resource use cases called by HTTP controllers and CLI +- Resource read models and command/result types +- Display-model assembly (e.g., session status derivation) +- Resource-specific validation and user-facing errors +- Small store interfaces consumed by the service + +**Does NOT belong here:** +- Low-level runtime/workspace/agent process control +- Raw sqlc generated rows as public results +- HTTP routing, path parsing, status-code decisions +- Concrete external adapter details + +**Example:** Project concepts live in `internal/service/project`, not in `domain` and not in `internal/project`. + +--- + +### `internal/session_manager` + +**Purpose:** Internal session command engine. Owns multi-step session mutations and resource orchestration. + +```mermaid +graph TD + Service[service/session] -->|commands| Mgr[session_manager] + Mgr -->|orchestrates| Resources[Resources] + + Resources --> Workspace[Workspace Adapter] + Resources --> Runtime[Runtime Adapter] + Resources --> Agent[Agent Adapter] + Resources --> Storage[Storage Store] + Resources --> Lifecycle[Lifecycle Manager] + Resources --> Messenger[Agent Messenger] + + Mgr -->|owns| Operations[Operations] + Operations --> Spawn[Spawn
Create all resources] + Operations --> Kill[Kill
Teardown all resources] + Operations --> Restore[Restore
Relaunch terminated session] + Operations --> Send[Send
Message to agent] + +``` + +**Belongs here:** +- Multi-step session mutations with rollback +- Resource sequencing (workspace → runtime → agent) +- Resource teardown safety and cleanup +- Internal errors: not found, terminated, not restorable + +**Does NOT belong here:** +- HTTP request decoding +- CLI formatting +- Controller-facing list/get read-model assembly +- Terminal WebSocket framing + +**Intentional split:** `service/session` is the product/API boundary; `session_manager` is the internal command engine. + +--- + +### `internal/lifecycle` + +**Purpose:** Canonical write path for durable session lifecycle facts. Reduces observations into minimal persisted state. + +```mermaid +graph LR + subgraph Inputs + RuntimeObs[Runtime Observations
from Reaper] + ActivitySignals[Activity Signals
from Agent Hooks] + SCMObs[SCM Observations
from SCM Observer] + end + + subgraph Lifecycle + LCM[Lifecycle Manager] + Reducer[Fact Reducer] + StateMachine[State Machine] + Nudge[Agent Nudge Engine] + end + + subgraph Outputs + ActivityState[activity_state] + IsTerminated[is_terminated] + PRFacts[PR Facts] + Nudges[Agent Nudges] + end + + RuntimeObs --> LCM + ActivitySignals --> LCM + SCMObs --> LCM + + LCM --> Reducer + Reducer --> StateMachine + StateMachine --> ActivityState + StateMachine --> IsTerminated + + SCMObs --> Nudge + Nudge --> Nudges + +``` + +**Belongs here:** +- Updates to lifecycle-owned session facts +- Guardrails around runtime/activity observations +- Lifecycle-triggered agent nudges for actionable PR facts + +**Does NOT belong here:** +- Display status persistence (use service layer instead) +- HTTP/CLI DTOs +- Direct adapter implementation details +- PR row persistence (use `pr.Manager`) + +**Key invariant:** The UI status is derived at read time by service code. Do not store display status in lifecycle or SQLite. + +--- + +### `internal/observe/*` + +**Purpose:** Observation loops that poll external state and report facts to lifecycle. + +```mermaid +graph TD + subgraph Observe + SCM[observe/scm
SCM Observer] + Reaper[observe/reaper
Runtime Reaper] + end + + subgraph External + GitHub[GitHub API] + Runtimes[tmux/conpty] + end + + subgraph Internal + LCM[Lifecycle Manager] + Store[SQLite Store] + end + + SCM -->|polls| GitHub + SCM -->|writes| Store + SCM -->|notifies| LCM + + Reaper -->|probes| Runtimes + Reaper -->|reports to| LCM + +``` + +**Current observation packages:** +- `internal/observe/scm` — SCM (GitHub) observer loop +- `internal/observe/reaper` — Runtime liveness observation loop + +**Belongs here:** +- Polling loops and observation logic +- External state transformation into domain facts +- Observation error handling and retry logic + +**Does NOT belong here:** +- Product workflow decisions (belongs in service layer) +- Direct storage writes (use lifecycle instead) + +--- + ### `internal/storage/sqlite` -`storage/sqlite` owns SQLite setup, migrations, sqlc generated code, and store -implementations. +**Purpose:** SQLite setup, migrations, queries, and store implementations. -Belongs here: +```mermaid +graph TD + Storage[storage/sqlite] --> Components[Components] -- connection setup and PRAGMAs; -- goose migrations; -- sqlc queries and generated code; -- table-specific store methods; -- transactions and CDC-triggered persistence behavior. + Components --> Setup[Connection Setup
PRAGMAs] + Components --> Migrations[Goose Migrations] + Components --> SQLC[sqlc Queries + Generated Code] + Components --> Stores[Table-specific Stores] + Components --> Trans[Transactions + CDC] -Does not belong here: + Components -->|NOT| HTTP[HTTP Response Types] + Components -->|NOT| CLI[CLI Formatting] + Components -->|NOT| Product[Product Display Status Rules] -- HTTP response types; -- CLI output formatting; -- product display status rules; -- external adapter logic. +``` -Generated sqlc types should stay behind store methods. Services and lifecycle -code should work with domain records or service read models, not generated rows. +**Belongs here:** +- Connection setup and PRAGMAs +- Goose migrations +- sqlc queries and generated code +- Table-specific store methods +- Transactions and CDC-triggered persistence behavior + +**Does NOT belong here:** +- HTTP response types +- CLI output formatting +- Product display status rules +- External adapter logic + +**Rule:** Generated sqlc types should stay behind store methods. Services should work with domain records or service read models, not generated rows. + +--- ### `internal/cdc` -`cdc` owns `change_log` polling and event broadcasting. SQLite triggers append -durable events to `change_log`; the poller tails that table and fans events out -to subscribers. +**Purpose:** Change-log polling and event broadcasting. -Belongs here: +```mermaid +graph LR + SQLite[(SQLite)] -->|triggers| ChangeLog[change_log] + ChangeLog -->|tail| Poller[CDC Poller] + Poller -->|Event| Broadcaster[Broadcaster] + Broadcaster -->|fan-out| Subs[Subscribers] -- event type definitions for the CDC stream; -- poller and broadcaster logic; -- subscriber fan-out behavior. + Subs --> SSE[SSE Writer] + Subs --> Term[Terminal Fanout] + Subs --> Cache[Cache Invalidation] -Does not belong here: +``` -- terminal byte streams; -- product workflow decisions; -- database schema ownership. +**Belongs here:** +- Event type definitions for the CDC stream +- Poller and broadcaster logic +- Subscriber fan-out behavior + +**Does NOT belong here:** +- Terminal byte streams (belongs in `internal/terminal`) +- Product workflow decisions (belongs in service layer) +- Database schema ownership (belongs in `storage/sqlite`) + +--- ### `internal/terminal` -`terminal` owns the terminal session protocol and PTY attach management used by -the HTTP mux. The runtime is selected by `runtimeselect`: tmux on Darwin/Linux, -conpty on Windows. Every client that opens a pane gets its own attach Stream. On -unix, tmux spawns `tmux attach` on a local PTY via ptyexec; on Windows, conpty -dials the session's loopback pty-host directly. Either way the runtime owns -screen state and scrollback and replays its init handshake plus a full repaint -per attach, so there is no shared per-pane buffer. +**Purpose:** Terminal session protocol and PTY attach management used by the HTTP terminal mux. -Belongs here: +```mermaid +graph TD + HTTP[httpd] -->|WebSocket| Terminal[terminal] + Terminal -->|creates| Attach[Attach Streams] + Attach -->|wraps| PTY[PTY Sessions] -- per-client attachment lifecycle (liveness gating, re-attach backoff); -- input/output framing independent of HTTP; -- PTY-backed attach handling and terminal protocol tests. + PTY --> Unix[Unix: tmux attach
via ptyexec] + PTY --> Windows[Windows: conpty
loopback dial] -`httpd` adapts WebSocket connections to terminal interfaces; `terminal` should -not import `httpd`. + Terminal -->|manages| State[Session States] + State --> Liveness[Liveness gating] + State --> Backoff[Re-attach backoff] + +``` + +**Belongs here:** +- Per-client attachment lifecycle +- Input/output framing independent of HTTP +- PTY-backed attach handling and terminal protocol tests + +**Does NOT belong here:** +- HTTP-specific concerns (belongs in `httpd`) +- HTTP routing or WebSocket upgrade logic + +**Note:** `httpd` adapts WebSocket connections to terminal interfaces. `terminal` should not import `httpd`. + +--- ### `internal/httpd` -`httpd` is the HTTP protocol adapter. +**Purpose:** HTTP protocol adapter. Handles routing, middleware, and request/response encoding. -Belongs here: +```mermaid +graph TD + HTTPD[httpd] --> Components[Components] -- routing and middleware; -- HTTP request decoding and response encoding; -- path/query parameter handling; -- status-code mapping; -- API error envelopes; -- OpenAPI generation and serving; -- WebSocket upgrade handling for terminal mux. + Components --> Routing[Routing + Middleware] + Components --> Decode[Request Decoding] + Components --> Encode[Response Encoding] + Components --> Errors[API Error Envelopes] + Components --> OpenAPI[OpenAPI Generation] + Components --> WS[WebSocket for Terminal] -Controllers call service managers and translate service results/errors into HTTP -responses. Controllers should not reach directly into concrete adapters or the -SQLite store. + Components -->|calls| Services[service/*] -HTTP-only request/response wrappers belong in `httpd` or -`httpd/controllers`. Application read models shared by controller and CLI flows -belong in the owning `service/*` package. + Services -->|NOT| Adapters[Direct Adapter Access] + Services -->|NOT| Storage[Direct SQLite Access] + +``` + +**Belongs here:** +- Routing and middleware +- HTTP request decoding and response encoding +- Path/query parameter handling +- Status-code mapping +- API error envelopes +- OpenAPI generation and serving +- WebSocket upgrade handling for terminal mux + +**Does NOT belong here:** +- Direct adapter or SQLite store access +- Application read models shared with CLI (belongs in `service/*`) + +**Rule:** Controllers call service managers and translate service results/errors into HTTP responses. + +--- ### `internal/cli` -`cli` owns the user-facing `ao` command. It should stay thin: +**Purpose:** User-facing `ao` command. Thin client over the daemon HTTP API. -- discover the local daemon; -- call the daemon's loopback HTTP API; -- format command output; -- start/stop/status/doctor process control. +```mermaid +graph LR + CLI[cli] --> Operations[Operations] -The CLI should not duplicate daemon business logic. If a command needs product -behavior, put the behavior in the daemon service/API path and have the CLI call -that path. + Operations --> Discover[Discover Daemon] + Operations --> Call[Call HTTP API] + Operations --> Format[Format Output] + Operations --> Control[Process Control
start/stop/status/doctor] + + Operations -->|NOT| Direct[Direct Storage/DB Access] + Operations -->|NOT| Runtime[Direct Runtime Control] + Operations -->|NOT| Adapters[Direct Adapter Calls] + +``` + +**Belongs here:** +- Daemon discovery +- HTTP API calls +- Command output formatting +- Process control: start/stop/status/doctor + +**Does NOT belong here:** +- Duplicate daemon business logic (put in daemon service/API) +- Direct storage, runtime, or adapter access + +**Rule:** If a command needs product behavior, put it in the daemon and have the CLI call that API path. + +--- + +### `internal/adapters/*` + +**Purpose:** Concrete implementations of ports interfaces. Wraps external systems. + +```mermaid +graph TD + Ports[Ports Interfaces] -->|implemented by| Adapters[Adapters] + + Adapters --> Agent[agent/*
23+ harnesses] + Adapters --> Runtime[runtime/*
tmux, conpty] + Adapters --> Workspace[workspace/*
gitworktree] + Adapters --> SCM[scm/*
github] + Adapters --> Tracker[tracker/*
github] + + Agent --> Codex[codex] + Agent --> Claude[claude-code] + Agent --> Cursor[cursor] + Agent --> Aider[aider] + Agent -->|... 20+| More[more agents] + +``` + +**Adapter principles:** +- Adapters are leaves in the import graph +- Adapters translate external behavior into AO ports/domain concepts +- Adapters should not own product workflows +- All adapter-written files must be gitignored + +**Good dependencies:** +``` +session_manager → ports.Runtime +adapters/runtime/tmux → ports + domain +adapters/workspace/gitworktree → ports + domain +daemon → adapters + services + storage +``` + +**Avoid:** +``` +domain → adapters +service/session → adapters/runtime/tmux +httpd/controllers → storage/sqlite/store +adapters/* → httpd +``` + +--- ### `internal/daemon` -`daemon` is the production composition root. It wires config, logging, SQLite, -CDC, lifecycle, reaper, runtime, terminal manager, services, HTTP, and shutdown. +**Purpose:** Production composition root. Wires all dependencies together. -Belongs here: +```mermaid +graph TD + Daemon[daemon] --> Responsibilities[Responsibilities] -- production dependency construction; -- adapter registration; -- startup/shutdown sequencing; -- cross-component wiring. + Responsibilities --> Wire[Dependency Construction] + Responsibilities --> Register[Adapter Registration] + Responsibilities --> Startup[Startup Sequencing] + Responsibilities --> Shutdown[Shutdown Sequencing] + Responsibilities --> Cross[Cross-component Wiring] -Does not belong here: + Responsibilities -->|NOT| Business[Business Logic
(put in service/lifecycle)] + Responsibilities -->|NOT| Adapter[Adapter Implementation
(put in adapters/*)] -- business logic that should be testable in service, lifecycle, or manager - packages; -- adapter implementation details. - -## Interface Placement - -Prefer interfaces near their consumers, except for shared capabilities. - -- If only one package consumes an abstraction, define the smallest interface in - that package. -- If multiple core packages consume a replaceable capability, define it in - `ports`. -- If HTTP controllers need a resource service, use the owning `service/*` - manager interface. -- Return concrete types from constructors unless callers genuinely need an - interface. - -## Current Tree - -The current main-line shape is: - -```txt -backend/ - cmd/ao/ # CLI entrypoint - main.go # daemon entrypoint compatibility - sqlc.yaml - - internal/domain/ # shared product vocabulary and durable facts - internal/ports/ # capability interfaces - internal/service/ - project/ # project API/use-case boundary - session/ # session API/use-case boundary - pr/ # PR observation/action service - review/ # code-review API/use-case boundary - internal/session_manager/ # internal session command engine - internal/lifecycle/ # durable lifecycle fact reducer - internal/observe/scm/ # SCM (GitHub) observer loop - internal/observe/reaper/ # runtime liveness observation loop - internal/storage/sqlite/ # DB, migrations, queries, generated sqlc, stores - internal/cdc/ # change_log poller and broadcaster - internal/terminal/ # terminal session protocol and PTY handling - internal/httpd/ # HTTP API, controllers, OpenAPI, terminal mux - internal/cli/ # user-facing ao command - internal/daemon/ # production wiring and shutdown - internal/config/ # daemon env/default config - internal/adapters/ # concrete agent/runtime/workspace/SCM/tracker adapters ``` +**Belongs here:** +- Production dependency construction +- Adapter registration +- Startup/shutdown sequencing +- Cross-component wiring + +**Does NOT belong here:** +- Business logic (belongs in service, lifecycle, or manager packages) +- Adapter implementation details (belongs in adapters/*) + +--- + +### `internal/config` + +**Purpose:** Environment-based daemon configuration. + +```mermaid +graph LR + Config[config] --> Sources[Sources] + + Sources --> Env[Environment Variables] + Sources --> Defaults[Built-in Defaults] + Sources --> Validate[Validation] + + Config -->|provides| Settings[Settings] + + Settings --> Port[AO_PORT] + Settings --> Timeout[AO_REQUEST_TIMEOUT] + Settings --> DataDir[AO_DATA_DIR] + Settings --> RunFile[AO_RUN_FILE] + Settings --> Agent[AO_AGENT] + +``` + +**Key environment variables:** +- `AO_PORT` — HTTP bind port (default: 3001) +- `AO_REQUEST_TIMEOUT` — Per-request timeout (default: 60s) +- `AO_SHUTDOWN_TIMEOUT` — Graceful shutdown cap (default: 10s) +- `AO_RUN_FILE` — PID/port handshake (default: ~/.ao/running.json) +- `AO_DATA_DIR` — SQLite data directory (default: ~/.ao/data) +- `AO_AGENT` — Compatibility agent adapter (default: claude-code) +- `GITHUB_TOKEN` — GitHub authentication + +--- + +## Interface Placement Rules + +```mermaid +graph TD + Question{Where to define
interface?} + + Question --> Single{Only one package
consumes it?} + Single -->|Yes| InPackage[Define in consuming
package] + Single -->|No| Multiple{Multiple core packages
need it?} + + Multiple -->|Yes| Ports[Define in ports] + Multiple -->|No| HTTP{HTTP controllers
need it?} + + HTTP -->|Yes| Service[Define in service/*] + HTTP -->|No| Concrete[Return concrete type
from constructor] + +``` + +**Rules:** + +1. **Single consumer** → Define in the consuming package (smallest interface) +2. **Multiple core consumers** → Define in `ports` (shared capability) +3. **HTTP controllers need resource** → Use `service/*` manager interface +4. **Return from constructor** → Return concrete type unless genuinely needed + +**Examples:** + +```go +// Good: Interface near single consumer +type sessionGetter interface { + GetSession(ctx context.Context, id SessionID) (SessionRecord, bool, error) +} + +// Good: Shared capability in ports +type Runtime interface { + Create(ctx context.Context, cfg RuntimeConfig) (RuntimeHandle, error) + Destroy(ctx context.Context, handle RuntimeHandle) error + IsAlive(ctx context.Context, handle RuntimeHandle) (bool, error) +} + +// Good: Service interface for controllers +type Manager interface { + List(ctx context.Context) ([]Project, error) + Add(ctx context.Context, cfg Config) (Project, error) + Remove(ctx context.Context, id string) error +} +``` + +--- + +## Import Graph + +```mermaid +graph TD + CLI[cli] --> HTTPD[httpd] + HTTPD --> Services[service/*] + HTTPD --> Terminal[terminal] + + Services --> SessionMgr[session_manager] + Services --> Lifecycle[lifecycle] + Services --> Storage[storage/sqlite] + Services --> Domain[domain] + Services --> Ports[ports] + + SessionMgr --> Ports + SessionMgr --> Adapters[adapters/*] + SessionMgr --> Lifecycle + + Lifecycle --> Ports + Lifecycle --> Storage + Lifecycle --> Domain + + Observe[observe/*] --> Ports + Observe --> Storage + Observe --> Lifecycle + + Storage --> Domain + Storage --> Ports + + Adapters --> Ports + Adapters --> Domain + + CDC[cdc] --> Storage + Terminal --> Ports + + Daemon[daemon] --> All[All packages] + +``` + +**Key patterns:** +- All arrows point downward (no cycles) +- Adapters and domain are leaves +- CLI and HTTPD don't touch storage directly +- Everything depends on ports and domain + +--- + ## Adding New Code -Use these defaults: +### New HTTP Route -- New HTTP route: add controller/API code in `httpd`, call a `service/*` - package, and update OpenAPI generation/spec tests. -- New product resource: put shared IDs/vocabulary in `domain`, use cases and - read models in `service/`, storage in `storage/sqlite`, and external - system seams in `ports`. -- New adapter: implement a `ports` interface under `adapters//` - and wire it in `daemon`. -- New persisted fact: add a migration, sqlc query, store method, domain record or - event vocabulary, and CDC behavior when the UI/API must observe it. -- New CLI command: keep command parsing/formatting in `cli`; call the daemon API - rather than reimplementing daemon behavior. +```mermaid +flowchart LR + AddRoute[Add HTTP Route] --> Route[Register in httpd] + Route --> Call[Call service/*] + Call --> Update[Update OpenAPI] + Update --> Test[Add tests] -## Project Routes Example +``` -Project-owned concepts live in `internal/service/project`: +**Steps:** +1. Add controller in `httpd/controllers/` +2. Call a `service/*` package +3. Update OpenAPI generation +4. Add spec tests -- project read models; -- project add/remove command types; -- project validation and user-facing errors; -- the `Manager` contract consumed by HTTP controllers. +### New Product Resource -`internal/httpd/controllers` remains responsible for: +```mermaid +flowchart TD + NewResource[New Resource] --> Domain[Add IDs/vocab to domain] + Domain --> Service[Create service/resource] + Service --> Storage[Add storage queries] + Storage --> Ports[Add ports if needed] + Ports --> Adapter[Implement adapter if needed] -- route registration; -- JSON decoding/encoding; -- HTTP status codes and error envelopes; -- mapping service errors to responses. +``` -When a type is ambiguous, ask whether it is a product use-case/read model or an -HTTP wire wrapper. Product use-case/read models belong in `service/project`; -HTTP wire wrappers belong in `httpd`. +**Steps:** +1. Add shared IDs/vocabulary to `domain` +2. Create use cases in `service/` +3. Add storage in `storage/sqlite` +4. Add ports if external system needed +5. Implement adapter in `adapters//` +6. Wire in `daemon` + +### New Adapter + +```mermaid +flowchart LR + NewAdapter[New Adapter] --> Port[Implement port interface] + Port --> Hooks[Implement hooks if agent] + Hooks --> Gitignore[Add .gitignore entries] + Gitignore --> Wire[Wire in daemon] + Wire --> Test[Add conformance tests] + +``` + +**Steps:** +1. Implement a `ports` interface under `adapters//` +2. For agents: implement hooks with gitignored files +3. Wire in `daemon` +4. Add conformance tests + +--- + +## Examples + +### Example: Adding a Session Command + +```go +// In internal/service/session/service.go +func (s *Service) MyNewCommand(ctx context.Context, id SessionID) (Result, error) { + // 1. Validate input + // 2. Call session_manager + // 3. Enrich result + // 4. Return read model +} + +// In internal/httpd/controllers/sessions.go +func (c *SessionsController) myNewCommand(w http.ResponseWriter, r *http.Request) { + // 1. Decode request + // 2. Call service + // 3. Encode response +} +``` + +### Example: Adding a Port Interface + +```go +// In internal/ports/myfeature.go +package ports + +type MyFeature interface { + DoSomething(ctx context.Context, cfg Config) (Result, error) +} + +// In internal/adapters/myfeature/impl.go +package impl + +import "github.com/aoagents/agent-orchestrator/backend/internal/ports" + +type Impl struct { ... } + +func (i *Impl) DoSomething(ctx context.Context, cfg ports.Config) (ports.Result, error) { + // Implementation +} +``` + +### Example: Service Layer Pattern + +```go +// In internal/service/myresource/service.go +package service + +// Service is the controller-facing boundary +type Service struct { + manager *manager.Manager // Internal command engine + store Store // Storage interface +} + +// New constructs the service +func New(mgr *manager.Manager, store Store) *Service { + return &Service{manager: mgr, store: store} +} + +// List returns enriched read models +func (s *Service) List(ctx context.Context) ([]MyResource, error) { + records, err := s.store.List(ctx) + if err != nil { + return nil, err + } + return s.enrich(records), nil +} + +// Create performs a use case +func (s *Service) Create(ctx context.Context, cfg Config) (MyResource, error) { + // Business logic + result, err := s.manager.Create(ctx, cfg) + if err != nil { + return MyResource{}, err + } + return s.enrichOne(result), nil +} +``` + +--- + +## Summary + +**Key takeaways:** + +1. **Domain** stays pure — shared vocabulary only +2. **Ports** define contracts — interfaces for external systems +3. **Services** orchestrate — controller-facing use cases +4. **Adapters** are leaves — implement ports, no core imports +5. **CLI/HTTP** stay thin — protocol handling only +6. **Daemon** wires it all — composition root + +**Always ask:** +- Does this belong in domain (shared concept)? +- Does this belong in ports (shared capability)? +- Does this belong in service (use case)? +- Does this belong in adapters (external system)? + +**Never:** +- Put HTTP types in domain +- Put display status in storage +- Put business logic in CLI +- Import core from adapters +- Import adapters from services diff --git a/docs/telemetry.md b/docs/telemetry.md new file mode 100644 index 000000000..37a961fad --- /dev/null +++ b/docs/telemetry.md @@ -0,0 +1,90 @@ +# Telemetry + +Agent Orchestrator includes telemetry for understanding product usage, reliability, and failure modes. Telemetry is implemented as **best-effort structured events** and is controlled by environment variables. + +## What We Collect + +Telemetry events are structured records that capture: + +- **Event Name** — The type of event (e.g., session lifecycle events, daemon operations, errors) +- **Source** — The component that emitted the event +- **Timestamp** — When the event occurred +- **Level** — Severity level (Debug, Info, Warn, Error) +- **Context** — Project ID, Session ID, and Request ID when applicable +- **Payload** — Event-specific metadata + +**We do not collect:** + +- Code from your repositories +- File contents or workspace data +- Authentication credentials or API keys +- Personal information beyond what is necessary for operational analytics + +## Storage and Transmission + +### Local Storage (Default) + +By default, all telemetry events are stored locally in a SQLite database at: + +``` +~/.ao/data/telemetry.db +``` + +No data leaves your machine unless you explicitly configure remote telemetry. + +### Remote Telemetry (Opt-In) + +You may optionally configure remote telemetry via PostHog by setting the `POSTHOG_API_KEY` environment variable. When configured: + +- Events are transmitted to PostHog for aggregate analytics +- Transmission is best-effort — failures do not affect daemon operation +- Events are batched to minimize network overhead + +## Configuration + +Telemetry behavior is controlled by these environment variables: + +| Variable | Default | Purpose | +| -------------------- | ------------------------- | ------------------------------------------------------ | +| `AO_TELEMETRY_LEVEL` | `info` | Minimum event level to emit (debug, info, warn, error) | +| `POSTHOG_API_KEY` | unset | PostHog API key for remote telemetry | +| `POSTHOG_HOST` | `https://app.posthog.com` | PostHog host endpoint | +| `AO_DATA_DIR` | `~/.ao/data` | Directory for local telemetry database | + +## Disabling Telemetry + +To completely disable telemetry: + +```bash +export AO_TELEMETRY_LEVEL=none +``` + +This prevents both local storage and any remote transmission of telemetry events. + +## Event Examples + +Typical telemetry events include: + +- Session spawned, terminated, or restored +- Daemon started or stopped +- Agent harness lifecycle events +- HTTP request errors +- Runtime failures +- SCM observation errors + +These events help us understand: + +- How agents are being used +- Where failures occur +- How to improve reliability +- Which features need attention + +## Privacy Commitment + +- Local telemetry is stored on your machine only +- Remote telemetry is opt-in via explicit environment variable configuration +- We do not collect code, file contents, or credentials +- Events are designed for aggregate product analytics, not individual surveillance +- PostHog configuration respects your privacy settings and data retention policies + +For questions or concerns about telemetry, please open an issue on GitHub or join our Discord community. diff --git a/screenshots/first.png b/screenshots/first.png new file mode 100644 index 0000000000000000000000000000000000000000..c6e15750665040af0b3fd9de898a279a839af473 GIT binary patch literal 804324 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

k|{o)GFtjI*9#rtx8)iO-uUv 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