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
15 changes: 0 additions & 15 deletions .github/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,6 @@ The result is a draft pull request. Merge and ready-for-review actions are inten
- `agent/lib/github/session-attachment.ts` attaches a verified repository to sessions that no GitHub event started, through the `x-computer-repository` header or the deployment default.
- `agent/lib/github/approver-login.ts` resolves a chat session's approval to a verified GitHub login from the approver-team roster, and `preflight` proves the roster is readable.

## Agent File projection

`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/`.

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.
- **The tool surface is derived, not declared.** `agent/tools/github__*.ts` bind the `@github-tools/sdk` factories through `defineDynamic`, so they never appear in the compiled manifest; the projection enumerates those binding files and resolves each one's description and read/write class from the installed SDK's type declarations. A bound tool with no resolvable description stops the export, so the surface cannot silently shrink. Parameter schemas are not projected — TypeScript tool code does not run on another framework — so each tool carries `schema_fidelity: declared` plus `source_path` and `source_repository` pointers.
- **Channels, subagents, schedules, sandboxes, approval tiers, and hooks have no `.af` counterpart** and stay eve-only. Approval policy is tiered and risk-scaled, so it is carried as the per-tool `write` flag rather than flattened into `default_requires_approval`.
- **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` 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

Computer-specific curated memory and redacted run records use Vercel Blob for the first factory implementation. Reserved namespaces prevent generic file tools from reading or overwriting factory brain and run records. A follow-up issue tracks optional synchronization to the private `wazootech/computer-memory` repository; that integration is not part of this factory adoption.
Expand Down
13 changes: 3 additions & 10 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,9 @@ jobs:
run: pnpm test

# The build compiles the authored app into eve's manifest (channel routes,
# 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.
# tool registry). 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.
- name: Build eve app
run: pnpm run build:eve
env:
Expand All @@ -52,8 +50,3 @@ jobs:
VERCEL_APP_CLIENT_ID: ci-only
VERCEL_APP_CLIENT_SECRET: ci-only

# 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
4 changes: 0 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,6 @@ eve deploy --non-interactive --yes [--project <name-or-id>]

A setup may report `eve link` as a prerequisite; run it, then retry the continuation. When a completed setup event has `deploymentRequired: true`, run the `next` command it reports.

## Regenerate the agent file after agent changes

`agents/@wazootech/computer/computer.af` is generated from this agent's source. After changing instructions, tools, skills, or `agent/agent-file-declaration.json`, run `pnpm build:eve` then `pnpm export:agent-file`, and commit the result. Never hand-edit the `.af`; `pnpm check:agent-file` fails when it drifts.

## Validate the change

Run the validation the task requests. When it does not establish the behavior you changed, run the narrowest relevant check.
12 changes: 4 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,16 +192,12 @@ 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 ([#73](https://github.com/wazootech/computer/issues/73)). It is produced from source and never hand-edited:
Retired 2026-09-25. This repository no longer publishes or checks an [Agent File](https://github.com/letta-ai/agent-file) projection.

```bash
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
```
The projection described less than the agent is: channels, subagents, sandboxes, approval tiers, and hooks have no `.af` counterpart, so the file could not be imported and run. It was also the only consumer of its own artifact — Computer does not run a Letta framework, and nothing read the file back.

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.
What was removed: `agents/@wazootech/computer/computer.af`, `agent/agent-file-declaration.json`, `lib/agent-file-{schema,project,privacy,test}.ts`, `scripts/export-agent-file.ts`, the `export:agent-file` / `check:agent-file` scripts, the `check:agent-file` CI step, and the documentation that described them. The published file is preserved in `wazootech/data` at `archives/agent-file/data.af`, alongside the reason it was retired there.

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.
Nothing about the live agent changed: this artifact was never read at runtime.

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