fabro/lib/crates/fabro-cli/tests/it/cmd/mod.rs
Bryan Helmkamp 86b1fbef7f
feat(api): bind sessions to runs (#336)
## Summary

Ask Fabro sessions are now run-bound instead of standalone. Sessions are
created under their owning run, then accessed by flat session ID routes,
with durable state projected from the run event stream rather than a
separate session store.

## Changes

- Move session creation/listing to `POST/GET /api/v1/runs/{id}/sessions`
while keeping flat session reads, turns, interrupts, and event streams
under `/api/v1/sessions/{id}/...`.
- Add typed `run.session.*` events, ULID-backed session/turn IDs,
read-only default permissions, and a rebuildable SlateDB `session_id ->
run_id` index.
- Remove the old file-backed session store and wire the server, runtime,
Rust client, generated API crates, and TypeScript client around run
event projections.
- Replace the old top-level CLI session command with `fabro run ask` for
chatting with a run.
- Regenerate the TypeScript API client; this also catches up existing
generated models for Pair/run event detail schemas already present in
the OpenAPI spec.

## Validation

- `cargo build -p fabro-api -p fabro-client -p fabro-server -p
fabro-cli`
- `cargo nextest run -p fabro-server --features test-support -E
'test(run_bound_session_is_created_as_run_event_and_resolves_by_flat_id)
| test(sessions_are_listed_only_under_their_owning_run)'`
- `cargo nextest run -p fabro-store
projection_rebuilds_runtime_context_from_run_events`
- `cargo +nightly-2026-04-14 clippy -p fabro-api -p fabro-client -p
fabro-store -p fabro-server -p fabro-cli --all-targets -- -D warnings`
- `cargo +nightly-2026-04-14 fmt --check --all`
- `cd lib/packages/fabro-api-client && bun run typecheck && cd
../../../apps/fabro-web && 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-21 10:53:41 -04:00

81 lines
1.1 KiB
Rust

mod archive;
mod artifact_cp;
mod artifact_list;
mod attach;
mod auth;
mod cli_reference;
mod config;
mod create;
mod diff;
mod discord;
mod docs;
mod doctor;
mod dump;
mod events;
mod exec;
mod fabro;
mod fork;
mod graph;
mod inspect;
mod install;
mod json_global;
mod logs;
mod mcp;
mod model;
mod model_list;
mod model_test;
mod parent;
mod parse;
mod pr;
mod pr_close;
mod pr_create;
mod pr_link;
mod pr_merge;
mod pr_unlink;
mod pr_view;
mod preflight;
mod provider;
mod provider_login;
mod ps;
mod render_graph;
mod repo;
mod repo_deinit;
mod repo_init;
mod resume;
mod rewind;
mod rm;
mod run;
mod runner;
mod sandbox_cp;
mod sandbox_preview;
mod sandbox_ssh;
mod secret;
mod secret_list;
mod secret_rm;
mod secret_set;
mod send_analytics;
mod send_panic;
mod server_start;
mod server_status;
mod server_stop;
mod start;
pub(crate) mod support;
mod system;
mod system_df;
mod system_events;
mod system_info;
mod system_prune;
mod system_repair;
#[cfg(debug_assertions)]
mod test_panic;
mod top_level;
mod unarchive;
mod uninstall;
mod upgrade;
mod validate;
mod version;
mod wait;
mod worker_auth;
mod workflow;
mod workflow_create;
mod workflow_list;