mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-11 22:53:00 +00:00
## 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`
---
[](https://github.com/EveryInc/compound-engineering-plugin)
Generated with GPT-5 via [Codex](https://openai.com/codex)
81 lines
1.1 KiB
Rust
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;
|