fabro/lib/foundation/fabro-api/tests
Bryan Helmkamp 34996d630f
Give Ask Fabro sessions their own event log
Step 4 of the legacy executor deletion, second commit. Ask Fabro's
sessions were the last writer of `run_events`: a session's creation, its
turns and their messages, tool calls and endings went into the run's
legacy event log, keyed by the run's sequence. They now have a log of
their own.

- `run_session_events` (migration `2026091802`): one row per session
  event, numbered per session from 1, with the owning run, the turn, the
  event name and its properties. `RunSessionEventStore` appends under the
  write lock, lists a session from a sequence, names a session's owner
  from its creation event, deletes a run's sessions with the run, and
  publishes each committed event to its subscribers.
- `fabro_types::SessionEvent`: `seq`, `session_id`, `run_id`, `ts` and a
  flattened body (`event` naming the kind, `properties` its fields), with
  the same event names and property shapes the legacy events carried,
  so the web app and the CLI read the same JSON. The property structs
  move to `session_event`; `run_event::session` re-exports them under
  their old names until the legacy event log goes.
- The API: `GET /sessions/{id}/events` pages `PaginatedSessionEventList`
  by the session's own sequence, `GET /sessions/{id}/attach` replays and
  streams `SessionEvent` frames (subscribed before the replay, so no
  event falls between the two), the turn stream carries the same frames,
  and an interrupt answers with the recorded event. The session
  projection folds `SessionEvent`s; the legacy `find_session_owner` over
  `run_events` is gone.
- The CLI's `run ask` and the web app's session stream read
  `SessionEvent`; the web runtime no longer accepts the nested legacy
  envelope shape.

The two session resume tests in the server keep failing for a reason
this commit does not touch: Ask Fabro reconnects to the run's sandbox
from the projection's sandbox instance, which the Petri projection does
not carry yet (`VIEWS.md`, the `scope.acquired` gap).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 12:47:43 -04:00
..
agent_session_activated_props_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
agent_session_projection_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
automation_round_trip.rs Tighten automation Git validation types 2026-08-31 18:02:08 -04:00
blob_hash_round_trip.rs Align SHA-256 hash casing contracts 2026-08-17 17:31:15 -04:00
command_termination_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
completion_message_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
cost_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
create_completion_request_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
diff_stats_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
diff_summary_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
environment_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
event_envelope_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
git_context_round_trip.rs Remove the recorded pre-run push outcome, keep the push 2026-08-03 19:27:33 -04:00
interview_option_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
interview_question_record_round_trip.rs Add structured review targets to human gates 2026-07-28 13:24:12 -04:00
manifest_args_round_trip.rs Remove obsolete manifest Docker image argument 2026-08-01 09:03:10 -04:00
mcp_server_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
mcp_transport_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
model_costs_round_trip.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
model_limits_round_trip.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
model_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
model_test_mode_round_trip.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
pair_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
parallel_branch_id_round_trip.rs Fix live parallel branch refresh and simplify branch rendering 2026-07-28 17:26:05 -04:00
pending_interview_record_round_trip.rs Add structured review targets to human gates 2026-07-28 13:24:12 -04:00
petri_admission_round_trip.rs Remove the engine flag: every run is a Petri run 2026-09-18 09:58:21 -04:00
principal_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
provider_id_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
provider_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
pull_request_round_trip.rs Make pull request creation durable and asynchronous 2026-08-01 19:28:52 -04:00
question_type_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
reasoning_output_round_trip.rs Run agent stages, Ask Fabro, and fabro exec on pebble's CodingAgent 2026-09-11 14:19:15 -06:00
run_event_round_trip.rs Run agent stages, Ask Fabro, and fabro exec on pebble's CodingAgent 2026-09-11 14:19:15 -06:00
run_failure_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
run_integrations_round_trip.rs docs(api): document additional github repository access 2026-08-21 15:12:23 -04:00
run_intent_round_trip.rs Add RunIntent registration support 2026-08-28 20:40:38 -04:00
run_model_settings_round_trip.rs refactor: simplify model-keyed fallback internals 2026-07-30 12:51:36 -04:00
run_projection_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
run_sandbox_round_trip.rs Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
run_stream_item_round_trip.rs Serve a Petri run's events as one stream with a stream_seq cursor 2026-09-18 00:47:26 -04:00
run_summary_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
run_usage_stage_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
sandbox_details_round_trip.rs Put the driver's sandbox status on the API instead of a projection 2026-09-11 13:07:00 -06:00
sandbox_inventory_round_trip.rs Put the driver's sandbox status on the API instead of a projection 2026-09-11 13:07:00 -06:00
sandbox_services_round_trip.rs Run the agent's MCP servers and the service listing through the driver's services facet 2026-09-11 13:18:02 -06:00
secret_metadata_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
secret_type_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
server_settings_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
session_contract_round_trip.rs Give Ask Fabro sessions their own event log 2026-09-18 12:47:43 -04:00
stage_completion_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
stage_handler_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
stage_id_round_trip.rs fix: harden stage execution identity on resume 2026-07-24 09:37:05 -04:00
stage_model_usage_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
stage_outcome_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
stage_projection_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
stage_state_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
status_round_trip.rs fix(workflow): make publish failures terminal 2026-07-27 11:25:18 -04:00
submit_answer_request_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_integrations_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
token_counts_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
usage_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
variable_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
workflow_settings_round_trip.rs Remove nonfunctional run agent permissions setting 2026-07-29 10:23:00 -04:00
workflow_version_round_trip.rs Align SHA-256 hash casing contracts 2026-08-17 17:31:15 -04:00