Commit graph

3464 commits

Author SHA1 Message Date
Bryan Helmkamp
02eaeef78f
refactor(mcp): simplify run tooling cleanup
Reuse shared run status classification and manifest override construction across CLI, MCP, and server code. Normalize MCP run inputs during validation, avoid redundant run refetches after mutations, and bound/direct lookup paths where the API supports it.

Verification:
- cargo +nightly-2026-04-14 fmt --all
- cargo check -p fabro-mcp-server -p fabro-client -p fabro-cli -p fabro-server -p fabro-manifest -p fabro-types
- cargo nextest run -p fabro-mcp-server -p fabro-manifest -p fabro-types
- cargo nextest run -p fabro-cli mcp
- cargo +nightly-2026-04-14 clippy -p fabro-mcp-server -p fabro-client -p fabro-cli -p fabro-server -p fabro-manifest -p fabro-types --all-targets -- -D warnings
2026-05-11 12:57:04 -04:00
Bryan Helmkamp
464e98c30d
refactor(mcp): split run tool modules 2026-05-11 12:28:56 -04:00
Bryan Helmkamp
b39738af7f
refactor(mcp): clarify Fabro server settings type 2026-05-11 12:16:51 -04:00
Bryan Helmkamp
6a11cdd7fc
refactor(mcp): call manifest builder directly 2026-05-11 12:10:20 -04:00
Bryan Helmkamp
19f7479490
refactor(mcp): reuse manifest args emptiness check 2026-05-11 12:09:48 -04:00
Bryan Helmkamp
3a7219c865
refactor(cli): remove manifest builder re-export 2026-05-11 12:08:51 -04:00
Bryan Helmkamp
e0be041c1e
Merge remote-tracking branch 'origin/main' into add-fabro-mcp-server 2026-05-11 11:22:30 -04:00
Bryan Helmkamp
afa982176f
Fix MCP run search submitted ordering 2026-05-11 11:22:14 -04:00
Bryan Helmkamp
17a870b4d1
fix(mcp): harden events and proxy handling 2026-05-11 10:56:56 -04:00
Bryan Helmkamp
feec197dec
fix(mcp): honor auth env and stdio fixture 2026-05-11 10:41:19 -04:00
Bryan Helmkamp
947001d719
fix(mcp): reuse CLI auth and run overrides 2026-05-11 10:24:32 -04:00
Bryan Helmkamp
81365a1cbf
fix(mcp): validate run event parameters 2026-05-11 10:05:11 -04:00
Bryan Helmkamp
ac32ca2fde
fix(mcp): page run events in requested order 2026-05-11 09:51:18 -04:00
Bryan Helmkamp
75af34140c
fix(mcp): tighten run tool contract 2026-05-11 09:36:08 -04:00
Bryan Helmkamp
9fc0ec3061
fix(cli): align MCP run tools with CLI behavior 2026-05-11 09:17:12 -04:00
Bryan Helmkamp
40a057f10c
test(cli): cover fabro mcp server contract 2026-05-11 08:41:16 -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
Bryan Helmkamp
c144f3ca2c
feat(cli): add mcp run control tools 2026-05-11 08:23:48 -04:00
Bryan Helmkamp
e6b891147c
feat(cli): add mcp run create and search tools 2026-05-11 08:15:52 -04:00
Bryan Helmkamp
f425e51acb
feat(cli): start fabro mcp stdio server 2026-05-11 08:03:55 -04:00
Bryan Helmkamp
c19acaccd3
feat(cli): configure fabro mcp clients 2026-05-11 07:55:53 -04:00
Bryan Helmkamp
88fc2392f5
feat(cli): add mcp command surface 2026-05-11 07:52:28 -04:00
Bryan Helmkamp
314f1b041b
test: plan fabro mcp server coverage 2026-05-11 07:45:10 -04:00
Bryan Helmkamp
ddac9e99fc
docs: normalize fabro mcp server plan 2026-05-11 07:45:10 -04:00
Bryan Helmkamp
8bcecf2814
docs: require mcp validation before api client 2026-05-11 07:45:10 -04:00
Bryan Helmkamp
f7ec51bb2b
docs: refine fabro mcp implementation plan 2026-05-11 07:45:10 -04:00
Bryan Helmkamp
48e09fa5ab
docs: tighten fabro mcp implementation plan 2026-05-11 07:45:10 -04:00
Bryan Helmkamp
742df214e0
docs: tighten fabro mcp implementation plan 2026-05-11 07:45:10 -04:00
Bryan Helmkamp
7824e558cb
docs: refine fabro mcp implementation plan 2026-05-11 07:45:10 -04:00
Bryan Helmkamp
1288009788
plan: add fabro mcp server implementation plan 2026-05-11 07:45:10 -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
Bryan Helmkamp
47f581cc1d
fix(server): improve sandbox service discovery
Fall back to procfs when ss is unavailable, report the discovery source in API metadata, and surface the sandbox install tip in the services UI. Previewable services are ordered first for clearer service selection.
2026-05-10 12:40:38 -04:00
Bryan Helmkamp
a74ae2e7f8
feat(web): add settings sub-navigation with Live Events
Wraps /settings in a left-sidebar layout. Existing settings page becomes
the index; adds a placeholder /settings/live-events. The layout owns the
section h1 and hides the app-shell header.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 12:20:42 -04:00
Bryan Helmkamp
7b832c74a8
feat(web): add Services tab to sandbox page
Lists backend-discovered TCP services for a run's sandbox between the
Terminal and Filesystem tabs. Previewable ports open a signed Daytona
URL in a new browser tab; the rest render as Unavailable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 11:56:05 -04:00
Bryan Helmkamp
9c08653228
feat(server): list sandbox services 2026-05-10 11:24:39 -04:00