feat: represent Computer and Data as generated Agent Files - #75
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
This PR gives Computer and Data each a generated Agent File, built from source by The guards are the substance here.
|
|
I posted the reviewer summary on #75: #75 (comment) The comment opens with a short paragraph on what the PR does and why (both agents get a generated Two notes on the run itself. The workspace sandbox refused to start (its snapshot storage is over the plan limit and resets October 1), so the skill files and shell were unavailable; I worked entirely from the GitHub API and read the PR body, the file list, and the new sources directly, which was enough for a factual summary. Nothing in the comment goes beyond what the diff and description show, and the one gap I called out, no demonstrated Letta import for #73's criterion 4, is the PR's own stated limitation. Also worth saying plainly: I summarized rather than verified. This is someone else's pull request, so I did not review it, and the test and typecheck claims in the body are the author's, not something I re-ran. The |
|
This adds a generated Agent File for each agent: The interesting part is what it refuses to guess. Memory is allowlisted block by block, so persona and scope publish while Worth knowing if you are reviewing against #73: acceptance criterion 4 is not met. No Letta import has been demonstrated, because it needs a server and a key.
|
|
I hit an error while handling your request (Model provider API error: Authentication Fails, Your api key: ****53a6 is invalid). Please try again, rephrase, or reach out if it keeps failing. Error id: 67b8ceda-90d6-4f96-9f93-c02ee968f1ec |
|
This session could not recover from an error (Model provider API error: Authentication Fails, Your api key: ****53a6 is invalid). Start a new comment to continue. Error id: 67b8ceda-90d6-4f96-9f93-c02ee968f1ec |
|
I hit an error while handling your request (Model provider API error: Authentication Fails, Your api key: ****53a6 is invalid). Please try again, rephrase, or reach out if it keeps failing. Error id: ca920684-ea0a-4d9b-8ef8-a53cf7b1b4e5 |
|
This session could not recover from an error (Model provider API error: Authentication Fails, Your api key: ****53a6 is invalid). Start a new comment to continue. Error id: ca920684-ea0a-4d9b-8ef8-a53cf7b1b4e5 |
Change request — needs a rebase, and its own new CI gate means it has to land lastPosted as a comment rather than a formal "request changes" review because GitHub refuses that on your own PR. The projection itself is solid. I verified it against the real thing rather than the description:
Two blocking reasons. 1. It conflicts after
|
Adopt Letta's Agent File (.af) as a portable, diffable declaration of each agent layer, generated from source and never hand-edited (#73). - `scripts/export-agent-file.ts` projects an agent into the gallery layout in two modes: `--manifest` reads the compiled eve manifest (Computer), and `--source` reads an agent directory that has no eve build (Data). - `lib/agent-file-project.ts` holds the projection, `lib/agent-file-schema.ts` the vendored structural contract, and `lib/agent-file-privacy.ts` the fail-closed privacy and integrity checks. - `lib/github-tool-catalog.ts` derives the GitHub tool surface from the authored `github__*.ts` bindings plus the installed SDK's declarations, because `defineDynamic` tools never appear in the compiled manifest. Computer's file therefore declares all 55 tools (31 github, 12 of them writes) instead of reading as a mostly-local agent; Data's declares the 19 read-only ones. - Memory is allowlisted block by block: `persona` and `scope` publish, the four operational blocks export schema-only with a recorded reason. Messages and credentials are always empty, and a secret-shaped string anywhere in the file stops the export. - `agent/agent-file-declaration.json` and `agents/data/agent/` are the authored inputs; prompts are exported verbatim and the declared model is cross-checked against the one the manifest runs. - CI regenerates both files and fails on any diff, so the committed `.af` cannot drift from the source in the same commit. Data's source lands at `agents/data/agent/` (the layout #72 recommends for the split) and its `.af` is parked under `agents/@wazootech/data/` here, with the published copy in `wazootech/data`.
…g agent Computer's identity was written as Wazoo's engineering agent, which reads as if the software factory were the whole of its job. It is the general assistant the whole team shares; engineering is the one domain it runs as a supervised pipeline. Updates the identity paragraph in agent/instructions.ts, the persona and scope blocks in agent/agent-file-declaration.json, Data's counterpart framing in its declaration and instructions, and the one-line summaries in README.md and .github/ARCHITECTURE.md. Regenerates computer.af and data.af, since both are exported text and would otherwise still carry the old framing. No behavior changes: the station pipeline, channels, and approval gates are untouched. The instructions now say plainly that non-engineering requests are handled directly rather than routed through the factory.
f4be08e to
39b6364
Compare
Closes #73.
Computer and Data now each have a generated Agent File (
systemprompt verbatim, allowlisted memory blocks, and the bound tool surface), produced from source byscripts/export-agent-file.ts. eve stays authoritative for behavior; the.afis a projection that other frameworks can import. Nothing generated is ever read back intoagent/.Files
agents/@wazootech/computer/computer.afagents/@wazootech/data/data.afagents/data/agent/)data.afis published towazootech/dataunder the same gallery path. This repository's CI is what keeps the two copies from drifting: regenerate here, copy across.Identity correction
The first cut framed Computer as an engineering agent whose whole job was the factory. That was wrong, and this branch corrects it wherever identity is written down: Computer is Wazoo's general assistant, the operating computer the whole team shares, and engineering is one domain of that job, run as the supervised pipeline. The wording changes in
agent/instructions.ts(Identity), thepersonaandscopeblocks ofagent/agent-file-declaration.json, Data's side of the split inagents/data/agent/instructions.mdandagents/data/agent/agent-file-declaration.json, plusREADME.mdand.github/ARCHITECTURE.md. Pipeline mechanics, station order, approval gates, and tool surfaces are untouched. Regenerating both files carried the corrected prompt into the projections.How it maps
agent/agent-file-declaration.json.personaandscopepublish;factory_brain,user_preferences,run_history, andintake_stateexport schema-only, each with a recorded reason. An undeclared block, a private block carrying a value, or a shareable block exported empty stops the export.agent/tools/github__*.tsbind the@github-tools/sdkfactories throughdefineDynamic, so they never appear in.eve/agent-summary.json; the projection enumerates the authored binding files and resolves each tool's description and read/write class from the installed SDK's type declarations. A bound tool with no resolvable description fails loudly, so the surface cannot silently shrink. Parameter schemas are not projected (TypeScript tool code does not run on another framework); each tool carriesschema_fidelity: declaredplussource_pathandsource_repositorypointers.modelIddisagree.writeflag rather than a flatteneddefault_requires_approval. Messages and credentials are always empty.Guards
lib/agent-file-schema.ts— vendored.afcontract, so validation needs no network.lib/agent-file-privacy.ts— fail-closed privacy and integrity checks (allowlist trace, empty messages, null secrets, secret-shaped-string scan, prompt byte-equality,created_atnull for byte stability).lib/github-tool-catalog.test.ts— surface completeness, JSDoc description extraction, an assertion that the projected write flag equals the setagent/lib/github/tool-options.tsgates behind approval, and that Data's declared surface is read-only.check:agent-fileandcheck:data-agent-file, so a committed file that no longer matches its source fails the build.What this does not do
letta-ai/agent-file, not with the projection.Merge note
Once this lands,
agents/@wazootech/computer/computer.afis pinned to the compiled prompt, so any branch that editsagent/instructions.tshas to re-runpnpm run export:agent-fileafter rebasing or itsverifyjob fails on the regenerated-from-source step. As of this writingsession-github-attachment(#69) anddiscord-mention-gateway(#67) both touch that file and predate the projection, so they will need that regeneration when they rebase.