feat: agents-as-code workflow (foundation + agent commands) - #105
Merged
Conversation
Port v0's bespoke "agents-as-code" workflow onto the Fern-autogenerated Rust CLI as custom commands under cli/elevenlabs/workflow/ (protected from regeneration via .fernignore). - Fix .fernignore: it was empty, so custom.rs was not actually protected. - project.rs: agents/tools/tests index-file schemas (path-reference model, matching v0), lossless raw-JSON config IO, 4-space-indent writer, path-traversal-safe filename sanitization, y/N prompt (+ unit tests). - api.rs: raw-JSON API layer (ports elevenlabs-api.ts). Agent config create/update/get go through serde_json::Value via the CLI's executor so configs round-trip losslessly (the generated typed models drop unmodeled fields). Includes list/delete/branches + run-tests/test-invocations and clean_conversation_config (+ unit tests). - settings.rs: residency read/write + residency->base-URL mapping. - agents: init, list, status, delete (single + --all), widget, branches list; plus agents templates list. Remaining (follow-up commits): agents add/push/pull/test + verify, the tools/tests command trees, residency and components commands. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Retitle README to "ElevenLabs CLI — Agents as Code" and add the v0 hero image (assets/Cover.png, byte-identical to v0). - Add an "Agents as Code" section documenting the commands shipped in this PR (init/list/status/delete/widget/branches list/templates list), the project structure, and the template catalog. - Protect README.md and assets/ in .fernignore so `fern generate` (which emits a default README) does not overwrite the hand-maintained one. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
First slice of the v0 → v1 migration: ports v0's hand-maintained "agents-as-code" workflow onto the Fern-autogenerated Rust CLI as custom commands, layered on top of the generated API surface.
All custom code lives under
cli/elevenlabs/workflow/and is protected from regeneration via.fernignore(which was previously empty — a latent bug that would have letfern generatewipe custom work).Included
project.rs—agents.json/tools.json/tests.jsonindex-file schemas (path-reference model, byte-compatible with v0 projects), lossless raw-JSON config IO, 4-space-indent writer, path-traversal-safe filename sanitization,y/Nprompt. Unit-tested.api.rs— raw-JSON API layer (portselevenlabs-api.ts). Agent config create/update/get go throughserde_json::Valuevia the CLI's authenticated executor, so configs round-trip losslessly — the generated typed models (ConversationalConfigetc.) have no#[serde(flatten)]catch-all and silently drop unmodeled fields. Unit-tested.settings.rs— residency read/write + residency→base-URL mapping.agentscommands:init,list,status,delete(single +--all),widget,branches list, andagents templates list.Verified
cargo buildgreen; unit tests pass; local commands smoke-tested (init/list/status/widget/branches/deleterender/parse identically to v0).Not yet included (follow-ups)
agents add/push/pull/test+ push-time verify, thetools/testscommand trees,residencyandcomponents addcommands, then tests/docs and the1.0.0tag.Notes
Cargo.lockhas unrelated churn (generated crates' transitive deps filling in a stale lock); left out of this PR intentionally — belongs with a regen/lockfile update, not the feature.node_modules/is currently not gitignored in the repo (untracked) — worth a separate.gitignorefix.🤖 Generated with Claude Code