fabro/docs/public
Bryan Helmkamp 56c7f627c4
feat(session): add server-backed agent sessions (#278)
## Summary

Adds the first server-backed Fabro agent session slice: persistent
session records, durable turn/event storage, HTTP session APIs, SSE turn
streaming, generated clients, and a new `fabro session -p <prompt>` CLI
path.

## What Changed

- Adds shared session IDs, records, statuses, event envelopes, and
message DTOs in `fabro-types`, with OpenAPI replacements in `fabro-api`.
- Renames the agent runtime transcript item from `Turn` to `Message` and
adds conversion between runtime history and persisted `SessionMessage`
records.
- Introduces a file-backed `SessionStore` for session metadata, turns,
full transcripts, and append-only events under local storage.
- Wires server session routes for create/list/read/update/delete, turn
submission, event replay, interrupt requests, and session-scoped tools.
- Implements streamed turn execution with durable events persisted
before SSE broadcast, active-turn conflict handling, local same-machine
`working_dir` validation, and noninteractive permission denials.
- Adds `fabro-client` helpers and the `fabro session -p` command, plus
regenerated TypeScript API client files.

## Notes

V1 intentionally keeps session execution local to same-machine server
targets. Remote clone-backed session sandboxes, interactive REPL/TUI
behavior, warm session pooling, and real tool discovery for
`/sessions/{id}/tools` remain follow-up work.

## Verification

- `cargo build --workspace`
- `cargo +nightly-2026-04-14 clippy --workspace --all-targets -- -D
warnings`
- `cargo +nightly-2026-04-14 fmt --check --all`
- `cargo test -p fabro-store session_store_contract_tests --lib`
- `cargo test -p fabro-agent
history::tests::session_message_roundtrip_preserves_runtime_history
--lib`
- `cargo test -p fabro-server 'session_' --lib`
- `cargo test -p fabro-server --features test-support --test it
openapi_conformance -- --nocapture`
- `cargo test -p fabro-cli --test it cmd::session:: -- --nocapture`
- `cd lib/packages/fabro-api-client && bun run typecheck`
- `git diff --check`

---

[![Compound
Engineering](https://img.shields.io/badge/Compound_Engineering-6366f1)](https://github.com/EveryInc/compound-engineering-plugin)
🤖 Generated with GPT-5 via [Codex](https://openai.com/codex)
2026-05-16 17:25:05 -04:00
..
administration feat(cli): support sparse input overrides (#222) 2026-05-09 10:00:35 -04:00
agents docs(mcp): document Fabro MCP server 2026-05-12 08:29:02 -04:00
api-reference feat(session): add server-backed agent sessions (#278) 2026-05-16 17:25:05 -04:00
changelog docs(llm): finish configurable provider cleanup (#260) 2026-05-13 17:17:54 -04:00
core-concepts feat: add opt-in LiteLLM TOML provider (#269) 2026-05-16 08:36:31 -04:00
examples fix(workflows): pin clippy and fmt to nightly-2026-04-14 2026-05-03 17:32:46 -04:00
execution refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
getting-started refactor(workflow): remove retro stage (#230) 2026-05-09 10:18:20 -04:00
human-tools feat(workflows): add interview workflow 2026-05-08 07:44:33 -07:00
images refactor(workflow): remove retro stage (#230) 2026-05-09 10:18:20 -04:00
integrations feat: add opt-in LiteLLM TOML provider (#269) 2026-05-16 08:36:31 -04:00
languages refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
logo refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
reference feat(session): add server-backed agent sessions (#278) 2026-05-16 17:25:05 -04:00
tutorials refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
workflows docs(workflows): document file-based workflow imports 2026-05-15 08:02:31 -04:00
.mintignore refactor(docs): move .mintignore into docs/public and update skill paths 2026-04-27 07:29:59 -07:00
docs.json feat: add opt-in LiteLLM TOML provider (#269) 2026-05-16 08:36:31 -04:00
dot-highlight.js refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
favicon.svg refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00