fabro/lib/apps/fabro-server/src
Bryan Helmkamp 2ca1e1cda0
Serve the Petri run store to workers
The server answers the `/api/v1/runs/{id}/petri/*` endpoints from one
`SqliteRunStore` over its pool. `PetriRuns` in `AppState` keeps the
writer handle each worker opened, keyed by the run and the worker's
owner id, so the lease semantics stay the store's: the handle drops on
the worker's `release`, and every handle of a run drops when the server
observes the run's worker exit, in the subprocess wait path. Never by
timeout. A write from an owner with no held handle reopens only when
the lease row still names that owner, so a server restart or a lost
open reply recovers, and an owner the lease moved away from gets
`petri_stale_owner`.

Every endpoint is worker-scoped through the existing worker auth; a
new `RequireWorkerRunSegment` extractor covers the two-segment routes.
Store errors answer with a machine-readable code, the leased owner and
the conflict position under `meta`, and a backend failure's cause goes
to the server log rather than the worker.

A test drives a held worker through the scheduler, opens the run over
the API with its token, ends the worker, and sees the lease end.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 20:12:20 -04:00
..
auth Keep auth code store naming consistent 2026-08-24 17:26:17 -04:00
demo Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
prompts Render the run title prompt with Jinja instead of string replacement 2026-07-27 17:23:16 -04:00
server Serve the Petri run store to workers 2026-09-17 20:12:20 -04:00
worker_control refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
automation_materializer.rs Tighten automation Git validation types 2026-08-31 18:02:08 -04:00
canonical_host.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
canonical_origin.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
csp.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
diagnostics.rs Read the Daytona scopes fabro needs from the provider's health 2026-09-11 12:36:29 -06:00
error.rs Add the Petri run store endpoints to the API 2026-09-17 20:12:20 -04:00
git_checkout.rs Consolidate server Git subprocess ownership 2026-09-11 17:36:40 -06:00
github_webhooks.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
install.rs Hold Daytona credentials as the SDK's configuration 2026-09-10 16:53:20 -06:00
interp.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
jwt_auth.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
lib.rs Serve the Petri run store to workers 2026-09-17 20:12:20 -04:00
manifest_validation.rs Simplify local RunIntent producer support 2026-08-31 14:08:35 -04:00
migrations.rs Remove expired startup secret migrations 2026-09-05 14:05:48 -04:00
petri_runs.rs Serve the Petri run store to workers 2026-09-17 20:12:20 -04:00
principal_middleware.rs Serve the Petri run store to workers 2026-09-17 20:12:20 -04:00
request_id.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_compiler.rs Retire legacy manifest run creation 2026-09-13 08:49:50 -06:00
run_files.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
run_files_security.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_intent.rs Return 404 when a worker's originating run is missing 2026-09-12 10:58:05 -06:00
run_manifest.rs Consolidate server Git subprocess ownership 2026-09-11 17:36:40 -06:00
run_selector.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_title_generation.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
run_tool_create.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
security_headers.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
serve.rs Keep the sandbox inventory over the driver's providers directly 2026-09-10 16:23:22 -06:00
server.rs Serve the Petri run store to workers 2026-09-17 20:12:20 -04:00
server_secrets.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
spawn_env.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
startup.rs Remove expired startup secret migrations 2026-09-05 14:05:48 -04:00
static_files.rs feat(web): tell open tabs when a new build ships 2026-07-25 14:45:26 -04:00
test_support.rs Retire legacy manifest run creation 2026-09-13 08:49:50 -06:00
web_auth.rs Serve CLI auth sessions from SQLite 2026-07-26 00:00:15 -04:00
worker_runtime.rs refactor: simplify cancellation lifecycle code from review 2026-07-23 21:15:35 -04:00
worker_token.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00