fabro/lib/components/fabro-workflow/src
Bryan Helmkamp 0c569638fe
Map an environment onto one sandbox spec for every provider
Three copies of the same mapping turned an environment into a sandbox:
Docker had its own options type built from the environment, Daytona a
config type with its own network enum and minute-and-gigabyte units,
and plugin kinds a third options type, each with its own spec builder,
constructor, and attach function, and the run spec had a variant per
provider carrying them. The mapping now runs once. SandboxOptions is
what any environment asks of any provider; options_from_environment
builds it, and one base spec carries the source, name, labels,
variables, resources, and network policy. Docker and Daytona are
overlays on that spec: Docker fixes its working directory, supplies the
default image, and pulls; Daytona replaces the source with the snapshot
it ensures from the same image or Dockerfile, fixes its working
directory and name, and sets the timers. The snapshot's content-addressed
name is unchanged, since the identity still hashes the image or
Dockerfile and the resources in whole gigabytes.

SandboxSpec has two variants, Local and Provider, and the worker and
the server preflight build the Provider one without knowing which kind
it is; provider_sandbox and attach_provider_sandbox connect any kind
through the single construction function and lay the repository out
where that kind keeps it. The per-provider constructors, the config
module, and the environment mapping module are gone, and the SDK
reference and the integration tests use the one constructor.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-09 22:41:09 -06:00
..
event Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
graph Harden succeed failure policy routing 2026-08-26 09:13:04 -04:00
handler Serve the local sandbox through the driver Host provider 2026-09-09 16:09:45 -06:00
lifecycle Serve the local sandbox through the driver Host provider 2026-09-09 16:09:45 -06:00
operations Map an environment onto one sandbox spec for every provider 2026-09-09 22:41:09 -06:00
pipeline Run plugin providers end to end and gate them in CI 2026-09-09 19:54:57 -06:00
records refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
transforms Simplify model stylesheet template plumbing 2026-08-25 18:54:06 -04:00
artifact.rs Serve the local sandbox through the driver Host provider 2026-09-09 16:09:45 -06:00
artifact_snapshot.rs fix(glob): harden artifact traversal 2026-07-25 11:56:57 -04:00
artifact_upload.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
billing_rollup.rs Rebuild conclusion stage summaries from run events 2026-09-05 11:44:23 -04:00
command_log.rs Unify blob hash vocabulary 2026-08-17 13:56:19 -04:00
condition.rs Reuse existing helpers in the for_each fan-out 2026-07-28 18:42:23 -04:00
context.rs Harden succeed failure policy routing 2026-08-26 09:13:04 -04:00
error.rs Simplify run-event persistence failure plumbing 2026-08-21 19:29:14 -04:00
event.rs Activate atomic SQLite run history storage 2026-08-28 15:18:25 -04:00
file_resolver.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
git.rs Harden local RunIntent target observation 2026-08-31 14:08:35 -04:00
git_bridge.rs refactor(github): deduplicate additional-repository access plumbing 2026-08-21 16:31:48 -04:00
graph.rs Harden succeed failure policy routing 2026-08-26 09:13:04 -04:00
hook_context.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
interview_runtime.rs refactor(workflow): tidy stall watchdog wiring and interview naming 2026-08-01 10:08:03 -04:00
lib.rs feat(workflow): bridge git and gh to the shared token 2026-08-21 14:47:31 -04:00
model_fallback.rs refactor(model): rename Kimi provider to Moonshot 2026-07-31 09:00:52 -04:00
node_handler.rs refactor(workflow): simplify interview block state and stall watchdog 2026-08-01 09:53:07 -04:00
outcome.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pull_request.rs refactor: simplify publish pipeline and collapse duplicated stage errors 2026-07-28 15:09:10 -04:00
retry.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_control.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_dir.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_lookup.rs Move run queries and pull request recovery to SQLite 2026-09-01 14:06:06 -04:00
run_materialization.rs refactor: simplify readiness-fallback plumbing 2026-07-24 08:49:01 -04:00
run_metadata.rs Add version-backed run intent creation 2026-08-24 11:55:43 -04:00
run_options.rs Remove stale env-interpolation promises from docs 2026-08-17 17:36:53 -04:00
run_status.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
runtime_store.rs Simplify blob activation and share the test store fixture 2026-08-24 14:02:35 -04:00
sandbox_git.rs Serve the local sandbox through the driver Host provider 2026-09-09 16:09:45 -06:00
sandbox_git_runtime.rs Retry git pushes with a pinned token and record attempt history 2026-08-20 10:16:10 -04:00
services.rs Serve the local sandbox through the driver Host provider 2026-09-09 16:09:45 -06:00
stage_execution.rs Add version-backed run intent creation 2026-08-24 11:55:43 -04:00
stage_scope.rs Merge origin/main into feat/stage-execution-identity-on-resume 2026-07-24 10:07:35 -04:00
steering_hub.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
test_support.rs Activate atomic SQLite run history storage 2026-08-28 15:18:25 -04:00
workflow_bundle.rs Simplify local RunIntent producer support 2026-08-31 14:08:35 -04:00