Commit graph

3468 commits

Author SHA1 Message Date
Fabro
7c8533239b fabro(01KRCY65A9BZ1AJA8Q85ZKY4GM): toolchain (succeeded)
Fabro-Run: 01KRCY65A9BZ1AJA8Q85ZKY4GM
Fabro-Completed: 2
Fabro-Checkpoint: 570cd6e02e

⚒️ Generated with [Fabro](https://fabro.sh)
2026-05-12 01:53:15 +00:00
Bryan Helmkamp
24276d048a
fix(test): avoid direct HTTP URL in hook status check 2026-05-11 21:30:24 -04:00
Bryan Helmkamp
1db22ba7d8
Merge remote-tracking branch 'origin/main' into add-acp-backend
# Conflicts:
#	lib/crates/fabro-server/src/server/handler/steer.rs
2026-05-11 21:05:37 -04:00
Bryan Helmkamp
a19f6dd03a
feat(cli): add Fabro MCP server (#236)
## Summary

Adds a stdio-based Fabro MCP server so MCP clients can manage Fabro
workflow runs through the authenticated `fabro` CLI, without a separate
MCP auth flow.

## What Changed

- Adds `fabro mcp start`, `fabro mcp config`, and `fabro mcp init
<agent>` for launching and configuring the MCP server.
- Introduces a new `fabro-mcp-server` crate with run-management tools:
  - `fabro_run_create`
  - `fabro_run_search`
  - `fabro_run_interact`
  - `fabro_run_gather`
  - `fabro_run_events`
- Reuses the CLI's authenticated server connection behavior, including
OAuth refresh, dev-token/local-server handling, explicit server targets,
proxy behavior, and stdio env/cwd isolation.
- Moves shared run-manifest construction into `fabro-manifest` so CLI
runs and MCP-created runs use the same override semantics.
- Extends MCP client stdio support with configured cwd and exact
environment handling for reliable spawned-server tests.

---------

Co-authored-by: fabro-sh-0530[bot] <281434857+fabro-sh-0530[bot]@users.noreply.github.com>
Co-authored-by: Fabro <noreply@fabro.sh>
2026-05-11 18:20:50 -04:00
Bryan Helmkamp
2bb75d9be4
docs: add Daytona real-agent smoke QA plan 2026-05-11 18:14:43 -04:00
Bryan Helmkamp
4f4f576439
refactor: collapse codergen run arguments
Introduce CodergenRunRequest so multi-turn backend calls use the same request-object shape as one-shot calls and stop growing the trait parameter list.
2026-05-11 16:27:20 -04:00
Bryan Helmkamp
2baa4f0608
test: reuse shared ACP fixture in session tests
Move the remaining session-only fake-agent behaviors into the shared ACP test fixture so workflow and ACP tests exercise the same script.
2026-05-11 16:13:58 -04:00
Bryan Helmkamp
40ed0b5ae4
refactor: simplify ACP and one-shot plumbing
Collapse CodergenBackend one-shot arguments into a request object, reuse the shared fake ACP fixture in workflow tests, and centralize Docker exec create/start boilerplate.
2026-05-11 16:04:44 -04:00
Bryan Helmkamp
5d898152a7
fix: stop installing agent CLIs at runtime
Require ACP nodes to provide an explicit acp_command and make CLI backend runs depend on tools already present in the sandbox PATH. Remove the Node runtime bootstrap path and mark old CLI ensure events as legacy.
2026-05-11 15:48:25 -04:00
Bryan Helmkamp
537ab7a511
fix: simplify ACP backend cleanup
Address review findings around ACP process control, backend routing reuse, and launch environment duplication.
2026-05-11 15:18:55 -04:00
Bryan Helmkamp
2f8958ccaa
fix: pass bootstrapped node path to ACP defaults 2026-05-11 14:31:33 -04:00
Bryan Helmkamp
a25a0b46d4
fix: wait for Docker ACP stdio termination 2026-05-11 14:14:43 -04:00
Bryan Helmkamp
eb42ec642e
fix: preserve Docker ACP stdio input 2026-05-11 13:56:16 -04:00
Bryan Helmkamp
cd8a968b4a
fix: redact ACP command env from metadata 2026-05-11 13:36:20 -04:00
Bryan Helmkamp
b4c7ab5800
feat(workflows): add daytona-medium sandbox check 2026-05-11 13:28:10 -04:00
Bryan Helmkamp
e1d5b925e4
fix: cover ACP prompt workflows and exit diagnostics 2026-05-11 13:22:41 -04:00
Bryan Helmkamp
a9ef7ffd77
fix: harden ACP backend verification 2026-05-11 13:03:24 -04:00
Bryan Helmkamp
ffc7c2a148
fix: complete ACP backend verification 2026-05-11 12:04:27 -04:00
Bryan Helmkamp
317e440b22
docs: document ACP workflow backend 2026-05-11 11:40:50 -04:00
Bryan Helmkamp
f64c672bc5
test: cover ACP backend workflow execution 2026-05-11 11:38:57 -04:00
Bryan Helmkamp
abd3f79f7c
feat: initialize ACP workflow backend 2026-05-11 11:30:58 -04:00
Bryan Helmkamp
212cffeb1d
feat: project ACP backend events 2026-05-11 11:25:44 -04:00
Bryan Helmkamp
1c3edfe5f7
feat: route workflow stages to ACP backend 2026-05-11 11:13:27 -04:00
Bryan Helmkamp
505547b962
feat: implement ACP session client 2026-05-11 10:54:58 -04:00
Bryan Helmkamp
6c346f6c5b
feat: add sandbox stdio processes 2026-05-11 10:41:03 -04:00
Bryan Helmkamp
afe0546d73
feat: add ACP backend crate skeleton 2026-05-11 10:30:46 -04:00
Bryan Helmkamp
b3096d2288
test: plan ACP backend coverage 2026-05-11 10:23:39 -04:00
Bryan Helmkamp
9caae04b02
docs: fix ACP backend plan execution hazards 2026-05-11 10:09:08 -04:00
Bryan Helmkamp
9a0e4e58dc
docs: tighten ACP backend implementation plan 2026-05-11 10:01:59 -04:00
Bryan Helmkamp
d85ae52bf8
docs: tighten ACP backend implementation plan 2026-05-11 09:52:52 -04:00
Bryan Helmkamp
16b7de959b
docs: revise ACP backend implementation plan 2026-05-11 09:46:34 -04:00
Bryan Helmkamp
48e6a6f2bf
docs: revise ACP backend plan 2026-05-11 09:36:13 -04:00
Bryan Helmkamp
9f23f98231
plan: add ACP backend implementation plan 2026-05-11 09:27:40 -04:00
Bryan Helmkamp
9ea00185dc
fix(server): avoid cancelling terminal runs during delete
Skip cancellation signaling when the durable run projection is already terminal so deletion cannot append cancelled failure events after a successful run.
2026-05-11 08:34:27 -04:00
fabro-releases[bot]
32c974d8f3 Bump version to 0.230.0-nightly.0 2026-05-11 10:28:17 +00:00
Bryan Helmkamp
2d36ef63cc
ci(web): isolate Bun test files
Some checks failed
Rust / Format (push) Waiting to run
Rust / Clippy (push) Waiting to run
Rust / Generated Docs (push) Waiting to run
Rust / Test (Linux) (push) Waiting to run
Rust / Test (macOS) (push) Waiting to run
TypeScript / Typecheck (push) Has been cancelled
TypeScript / Test (push) Has been cancelled
TypeScript / Build (push) Has been cancelled
2026-05-11 00:20:42 -04:00
Bryan Helmkamp
f15ff91307
chore: plans 2026-05-10 23:40:02 -04:00
Bryan Helmkamp
8b522a057e
Merge remote-tracking branch 'origin/main' 2026-05-10 23:39:34 -04:00
Bryan Helmkamp
00205a53d9
test(cli): align run summary fixtures
Use the canonical run summary test helper for remote run mocks so CLI integration fixtures match the shared Run wire shape.
2026-05-10 23:38:55 -04:00
Bryan Helmkamp
b5101bbde3
refactor(types): remove legacy run summary shape
Use the canonical nested Run DTO directly and reject the old flat run summary JSON shape. Update store, server, CLI, and fixtures to read and produce canonical fields.
2026-05-10 23:29:41 -04:00
Bryan Helmkamp
4fa4716015
refactor(core): simplify reviewed run cleanup
Reuse shared frontend formatting and SSE dedupe helpers, tighten typed sandbox handling, remove obsolete run DTOs, and collapse auth-session revoke into a single store operation.
2026-05-10 22:53:20 -04:00
Bryan Helmkamp
cccb557281
feat(api): unify public run shape
Return canonical Run payloads across run list, board, create, and lifecycle endpoints. Move archive state out of RunStatus and into lifecycle metadata, split sandbox runtime from planned sandbox data, and separate static pull request records from live pull request details.

Regenerate the TypeScript API client and migrate web, CLI, server, store, workflow, and API tests to the new contract.
2026-05-10 20:48:55 -04:00
Bryan Helmkamp
92ce72da6e
refactor(web): simplify profile sessions layout
Split the unified list into separate Browser and CLI panels and drop
provider, login, kind/current badges, and user agent. Each panel shows
just the timestamps that matter, with revoke gated to CLI sessions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 14:32:19 -04:00
Bryan Helmkamp
d2623662e0
feat(web): build unified auth sessions page
Render /profile/sessions from the new GET /api/v1/auth/sessions API.
The page shows the current browser session and active CLI sessions in one
list, with revoke buttons gated by the backend-supplied revocable field.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 14:30:00 -04:00
Bryan Helmkamp
5da2f3d455
test(cli): align sandbox event fixtures
Update seeded sandbox.initialized events to use the canonical sandbox id field expected by run event validation.
2026-05-10 14:23:44 -04:00
Bryan Helmkamp
b6d4d240ae
feat(auth): add unified session API
Expose browser and CLI auth sessions through a normalized API, and allow revoking active CLI refresh-token chains while keeping browser sessions non-revocable for v1.
2026-05-10 14:16:23 -04:00
Bryan Helmkamp
acec32cea9
feat(web): build live events page in settings
Replaces the /settings/live-events placeholder with a working page that
streams server-wide events from /api/v1/attach. Shares the leader-owned
cross-tab EventSource so additional tabs subscribe without opening
parallel connections.

The page keeps an in-memory ring buffer (newest first, max 1,000) with
id or run_id:seq dedupe and resets on remount; live-only by design,
nothing is replayed on connect or persisted in the browser. Reuses the
existing event-debug filters, search, and details panel, and links each
row's run_id to /runs/:id. The category filter is the static set of
DebugCategory values so "All types" always matches.

Settings layout is now fullHeight-aware so the events page can fill the
viewport alongside the sub-nav. DebugEventDetailsPanel's event prop is
broadened to a shared EventDisplayPayload shape so it accepts both
EventEnvelope and the live payload.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 14:05:10 -04:00
Bryan Helmkamp
da368366f0
fix(store): hydrate projection cache before appending later events 2026-05-10 13:38:06 -04:00
Bryan Helmkamp
5209d05623
refactor(sandbox): unify run sandbox identity
Replace the separate sandbox record shape with a typed RunSandbox model shared by projections, API responses, and generated clients. The public contract now uses SandboxProvider plus a non-null id and working_directory, and removes sandbox identifier/name leakage.
2026-05-10 13:16:57 -04:00
Bryan Helmkamp
3acfa9eb93
feat(web): add profile sub-navigation with Sessions
Wraps /profile in a left-sidebar layout. Existing profile page becomes
the index; adds a placeholder /profile/sessions. Renames the identity
rows from "IdP issuer"/"IdP subject" to "Issuer"/"Subject".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 12:40:50 -04:00