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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ The result is a draft pull request. Merge and ready-for-review actions are inten

`agents/@wazootech/computer/computer.af` is the generated, importable declaration of this agent layer. It is a projection, not a source of truth: `scripts/export-agent-file.ts` reads the compiled manifest (`.eve/agent-summary.json`), the declaration (`agent/agent-file-declaration.json`), and the authored tool bindings, and writes the file. Nothing generated is ever read back into `agent/`.

The same exporter projects **Data's** file in *source mode*, where there is no eve build to read: `agents/data/agent/instructions.md` is the prompt, and `agents/data/agent/agent-file-declaration.json` names the GitHub tools Data may call — the read half only. Names are declared; descriptions and the read/write class still come from the SDK, so the two agents cannot disagree about what a tool is. Data's file is committed here and published to `wazootech/data/agents/@wazootech/data/data.af`: this repository's CI is the drift guard for both copies.
Data's agent source has moved to the `wazootech/data` repository, which publishes and checks its own `.af` file; this repository no longer carries a Data projection or its source-only exporter path, so the Agent File projection below covers Computer alone.

- **The system prompt is exported verbatim** from the compiled instructions. A reworded or truncated prompt fails the export rather than shipping a file that describes an agent nobody runs.
- **Memory blocks are allowlisted, block by block.** `persona` and `scope` publish; `factory_brain`, `user_preferences`, `run_history`, and `intake_state` export schema-only and each states why it stays private. An undeclared block, or a private block carrying a value, fails the export. Messages and credentials are always empty.
Expand All @@ -41,7 +41,7 @@ The same exporter projects **Data's** file in *source mode*, where there is no e
- **The model is declared, then checked.** `llm_config` is declared in the same file as the blocks, and the export cross-checks the declared handle against the model the compiled manifest actually runs, so a model change cannot leave the published declaration behind.
- **Skills export whole.** Each `agent/skills/*/SKILL.md` ships with its content and a source URL; the other eve surfaces have no counterpart.

`pnpm run export:agent-file` and `pnpm run export:data-agent-file` regenerate the two files; `pnpm run check:agent-file` and `pnpm run check:data-agent-file` fail when a committed file is out of date, which is the guard against hand edits. CI builds the manifest, then runs both checks. Export behavior is covered by `lib/agent-file.test.ts` (schema validity, byte stability, privacy, and integrity) and `lib/github-tool-catalog.test.ts` (surface completeness, description extraction, and the write/approval split).
`pnpm run export:agent-file` regenerates the file and `pnpm run check:agent-file` fails when it is out of date, which is the guard against hand edits. CI builds the manifest, then runs the check. Export behavior is covered by `lib/agent-file.test.ts` (schema validity, byte stability, privacy, and integrity) and `lib/github-tool-catalog.test.ts` (surface completeness, description extraction, and the write/approval split).

## Memory boundary

Expand Down
16 changes: 7 additions & 9 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ jobs:
run: pnpm test

# The build compiles the authored app into eve's manifest (channel routes,
# tool registry) and the committed .af files are projected from that
# manifest, so one build feeds both. Typecheck and unit tests cannot see
# tool registry) and the committed .af file is projected from that
# manifest, so one build feeds it. Typecheck and unit tests cannot see
# that layer, and it takes seconds. `agent/channels/eve.ts` refuses to
# resolve without a trusted host, so the build runs with development
# values.
Expand All @@ -52,10 +52,8 @@ jobs:
VERCEL_APP_CLIENT_ID: ci-only
VERCEL_APP_CLIENT_SECRET: ci-only

# The .af files are generated artifacts: regenerate them from source and
# fail on any diff, so a committed projection cannot drift from what the
# agent actually does.
- name: Agent files are regenerated from source
run: |
pnpm run check:agent-file
pnpm run check:data-agent-file
# The .af file is a generated artifact: regenerate it from the manifest
# and fail on any diff, so a committed projection cannot drift from what
# the agent actually does.
- name: Agent file is regenerated from the manifest
run: pnpm run check:agent-file
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,16 +168,16 @@ pnpm build:eve

## Agent File

`agents/@wazootech/computer/computer.af` is the generated [Agent File](https://github.com/letta-ai/agent-file) declaration of Computer's agent layer, and `agents/@wazootech/data/data.af` is Data's, projected from its source under `agents/data/agent/` ([#72](https://github.com/wazootech/computer/issues/72), [#73](https://github.com/wazootech/computer/issues/73)). Both are produced from source and never hand-edited:
`agents/@wazootech/computer/computer.af` is the generated [Agent File](https://github.com/letta-ai/agent-file) declaration of Computer's agent layer ([#73](https://github.com/wazootech/computer/issues/73)). It is produced from source and never hand-edited:

```bash
pnpm build:eve # Computer's projection reads the compiled manifest
pnpm build:eve # the projection reads the compiled manifest
pnpm export:agent-file # regenerate computer.af
pnpm check:agent-file # fail if the committed file is out of date
pnpm export:data-agent-file # regenerate data.af (source mode: no eve build yet)
pnpm check:data-agent-file
```

The files carry the system prompt verbatim, the allowlisted memory blocks, and the bound tool surface; see [`.github/ARCHITECTURE.md`](.github/ARCHITECTURE.md) for what is deliberately left out. Data's published copy lives in `wazootech/data` under the same gallery path, and this repository's CI is what keeps the two from drifting: regenerate here, then copy the file across.
The file carries the system prompt verbatim, the allowlisted memory blocks, and the bound tool surface; see [`.github/ARCHITECTURE.md`](.github/ARCHITECTURE.md) for what is deliberately left out.

Data's agent source lives in `wazootech/data`, and that repository publishes and checks its own `.af` file. This repository no longer carries Data's source or a Data projection.

The factory evals are under `evals/`. Full-pipeline evals can create branches and consume model tokens, so run them only against a disposable target repository.
Loading
Loading