Commit graph

685 commits

Author SHA1 Message Date
Bryan Helmkamp
ca71b2895d Preserve OpenAI message output items for Responses API round-tripping
When an assistant turn has reasoning + text + tool calls, the message
output item was reconstructed without its original `id` and `status`
fields. The Responses API requires reasoning items to be followed by
a valid output item identified by `id`, so the reconstructed message
was not recognized, causing "Item 'rs_...' was provided without its
required following item" errors.

Preserve the full message output item as an opaque `openai_message`
provider part (like we already do for `openai_reasoning`), and use it
in translate_input instead of constructing a new message from text.
Also strip `openai_message` items during compaction alongside reasoning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:35:06 -05:00
Bryan Helmkamp
f0c97a2739 Add server-mode support for arc llm chat via session endpoints
Implement the server-side session handlers (create, retrieve, send message,
stream events, list) with in-memory storage and LLM generation, wire them
into the router replacing not_implemented stubs, add run_chat_via_server
CLI function with SSE streaming, and add mode dispatch so `arc llm chat
--mode server` delegates to the API server.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:34:15 -05:00
Bryan Helmkamp
55f9f0bd9d Remove extra spacing between screenshot and cards on introduction page
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:33:49 -05:00
Bryan Helmkamp
90838c7e27 Crop doc screenshots to remove browser chrome and tighten framing
- runs-board: removed browser tabs and address bar
- run-detail and workflow-example: removed browser chrome, Arc nav, and cropped sides

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:26:21 -05:00
Bryan Helmkamp
c558215878 Update changelog and add coming-soon warnings to deploy guide stubs
Update 2026-03-07 changelog with Completions API, Sprites sandbox,
removed endpoints, and additional fixes. Replace plain text on deploy
guide stub pages with Warning callouts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:18:36 -05:00
Bryan Helmkamp
bc3b76f658 Add screenshots and private preview warning to getting-started docs
- Add runs board screenshot to introduction page
- Add run detail and workflow diagram screenshots to why-arc page
- Add private research preview warning to quick-start page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:14:55 -05:00
Bryan Helmkamp
562d03742b run_tests 2026-03-07 18:06:58 -05:00
Bryan Helmkamp
21f94f48de Add POST /completions endpoint with Anthropic-style SSE streaming
Adds a completions API endpoint that supports both streaming (SSE) and
non-streaming (JSON) modes, with structured output via JSON Schema.
Wires up the CLI `arc llm prompt` command to use the server when
`--mode server` is specified.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:58 -05:00
Bryan Helmkamp
0c26bf060c Strip OpenAI reasoning items from provider_parts after compaction
After compaction replaces old turns with a summary, preserved Assistant
turns may contain opaque openai_reasoning items that reference the now-
removed context. These orphaned items violate the OpenAI Responses API
constraint that reasoning items must be followed by their paired output,
causing "Item 'rs_...' was provided without its required following item"
errors. Strip them in a new strip_opaque_reasoning() method called at
the end of compact(). Anthropic thinking blocks are left untouched.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:58 -05:00
Bryan Helmkamp
4707589943 Add Sprites docs page and mark Slack/exe.dev as in progress
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:58 -05:00
Bryan Helmkamp
c3ec637f09 Add arc-sprites crate for Sprites (Fly.io) VM sandbox
Implements the Sandbox trait backed by the `sprite` CLI binary.
Includes 29 unit tests with mock runner and an e2e integration test
against the live Sprites service.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:58 -05:00
Bryan Helmkamp
ac535b925b Remove Start Workflow Run endpoint (duplicates Start Run)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:58 -05:00
Bryan Helmkamp
6bb95b92b0 Remove Projects group from docs navigation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:58 -05:00
Bryan Helmkamp
add14c63ee Remove List Projects and List Branches API endpoints
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:58 -05:00
Bryan Helmkamp
0e14b0a479 Nest Models and Settings APIs under "More" group in docs nav
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:58 -05:00
Bryan Helmkamp
1dcb4acb2a Accept bare @@ hunk headers in v4a apply_patch parser
GPT-5.4 frequently emits bare @@ instead of @@ context @@, causing all
Update File patches to fail. The parser now accepts bare @@ and locates
the hunk position from the first remove/context change line. Also
improves the system prompt with an explicit @@ context @@ example.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:57 -05:00
Bryan Helmkamp
f36ec7aab4 Replace git_author_name/email parameter pairs with GitAuthor struct
Consolidates the two separate String parameters (git_author_name,
git_author_email) threaded through ~10 function signatures into a
single GitAuthor struct with Default providing "arc"/"arc@local".
Also quotes git config values in parallel.rs shell commands.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:57 -05:00
Bryan Helmkamp
c9265749eb Handle OpenAI reasoning SSE events to prevent stall watchdog kills
The OpenAI Responses API sends reasoning_summary_text.delta and
reasoning_text.delta SSE events during extended reasoning, but the
OpenAI provider silently swallowed them. This caused the tight-loop
in process_next_sse_events to consume events without yielding any
StreamEvent, so emitter.touch() was never called and the 600s stall
watchdog fired during long reasoning phases (e.g. GPT-5.4-pro).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:57 -05:00
Bryan Helmkamp
97e4c41f4e Re-sync test/docs DOT fixtures with current documentation
Re-extracted all DOT examples from docs, added test fixtures for new
pages (preview, brave-search, daytona, sub-workflow), recreated
assembled snippet files, and excluded not-yet-working vnc-access and
vpn-connections pages. 40 files now validate and dry-run clean.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:57 -05:00
Bryan Helmkamp
130339ee87 Add filename titles to TOML code blocks in docs
Every TOML example now shows which config file it belongs to
(server.toml, cli.toml, or run.toml) via Mintlify's title annotation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:57 -05:00
Bryan Helmkamp
99ee007572 Add configurable git author identity for checkpoint commits
Users can now configure the git author name/email used for checkpoint
commits via [git.author] in server.toml (default) and cli.toml (override).
Defaults to "arc" / "arc@local" preserving current behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:57 -05:00
Bryan Helmkamp
02a10b2f8d Fix stall watchdog killing agent during long LLM reasoning turns
Move emitter.touch() before the event filter in spawn_event_forwarder
so streaming events (TextDelta, AssistantTextStart, etc.) also reset
the watchdog timer. Previously these were filtered out, causing the
600s stall watchdog to fire during long generation turns with no
tool calls.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:57 -05:00
arc
8d4fcba6e4 arc(01KK56AM54ZAJJCEAS6KBC0D70): approve (success)
Arc-Run: 01KK56AM54ZAJJCEAS6KBC0D70
Arc-Completed: 2
Arc-Checkpoint: 60ee83441f04683e7f85faeda165048f9f176810
2026-03-07 22:22:45 +00:00
arc
ebc1a82a7d arc(01KK56AM54ZAJJCEAS6KBC0D70): start (success)
Arc-Run: 01KK56AM54ZAJJCEAS6KBC0D70
Arc-Completed: 1
Arc-Checkpoint: 5a6484091b0da9d5154c8ee8a8e4faf0d919f2c9
2026-03-07 22:22:43 +00:00
Bryan Helmkamp
ea10b8148e Document Brave Search integration, update nav, rename Decisions page
- Replace Brave Search stub with full docs: setup, usage, example workflow
- Add Human Tools group to docs.json navigation
- Move VS Code from integrations (deleted) to human-tools nav
- Rename human-in-the-loop page title to "Decisions"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:04:07 -05:00
Bryan Helmkamp
fcce28aaee Document Brave Search integration: setup, usage, permissions, and example workflow
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 14:04:01 -05:00
Bryan Helmkamp
1f8b40a506 Add VNC Access and VPN Connections docs pages with workflow SVGs
Both features are coming soon — pages include warning banners,
use cases, and example workflows with Graphviz-generated SVGs
that support light and dark mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:03:05 -05:00
Bryan Helmkamp
2f018375a1 Document Slack integration: setup, question types, and Socket Mode architecture
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:02:21 -05:00
Bryan Helmkamp
4a2c953730 Add exe.dev integration page with beta warning
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 13:45:03 -05:00
Bryan Helmkamp
11743c6267 Document Daytona integration: sandboxing, snapshots, SSH access, network controls, and troubleshooting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 13:43:56 -05:00
Bryan Helmkamp
22b41f63fe Add Preview docs page with workflow SVG
Fill in the human-tools/preview page documenting how preview URLs
let users access running services in sandbox environments from
their browser. Includes how it works, web UI and API usage,
common use cases with an example workflow, and tips. Adds a
graphviz-generated SVG of the BuildAndPreview workflow with
dark mode support.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 13:42:51 -05:00
Bryan Helmkamp
1b3ce7bd74 Document GitHub integration: App setup, OAuth login, repo cloning, and troubleshooting
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:31:27 -05:00
Bryan Helmkamp
1aa07680e4 Add SSH Access and VS Code docs pages, add SshAccessReady event to observability
Fill in the SSH Access human-tools page with how to enable SSH into
Daytona sandboxes, credential lifetime, and limitations. Fill in the
VS Code page explaining how to connect VS Code Remote-SSH to a
sandbox. Add the SshAccessReady event to the observability event
catalog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:29:21 -05:00
Bryan Helmkamp
f31b0280ef Fill in steering docs page with how it works, delivery timing, and comparison to human gates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:22:48 -05:00
Bryan Helmkamp
30f4fa5c3c Redesign marketing homepage with distinctive typography and visual depth
Swap Inter for Sora (headlines) + DM Sans (body) to eliminate generic AI-slop
aesthetics. Add animated gradient text, floating glow orbs, dot-grid background
texture, scroll-reveal animations, hover glow cards, and a trace visualization
for the observability section. Replace flat border-t dividers with gradient
lines and vary section visual treatments for better rhythm.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:15:52 -05:00
Bryan Helmkamp
7e7f244d43 Document metadata branch push for Daytona runs in checkpoints page
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:12:46 -05:00
Bryan Helmkamp
501ff3df40 Push metadata branch to origin after checkpoint in Remote (Daytona) mode
After each checkpoint commit, the metadata branch (checkpoint.json, manifest,
graph DOT, artifacts) is now pushed from the host process to the GitHub remote
using a GitHub App installation token. The local custom ref (refs/arc/{run_id})
is mapped to refs/heads/arc/meta/{run_id} on the remote since GitHub rejects
branch names starting with "refs/".

Changes:
- Move ssh_url_to_https to github_app.rs as pub fn for reuse
- Add push_ref() to git.rs for pushing a ref to an explicit URL
- Add github_app field to RunConfig to thread credentials into the engine
- Add git_push_meta_host() async wrapper in engine.rs
- Call git_push_meta_host after each remote checkpoint

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:08:49 -05:00
Bryan Helmkamp
241ca0d5e7 Hide comparison page from navigation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:49:17 -05:00
Bryan Helmkamp
95d95e81b1 Rename arc models CLI subcommand to arc model
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:47:07 -05:00
Bryan Helmkamp
9b842c49d5 Simplify git add pathspec building by hoisting common arg
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:29:10 -05:00
Bryan Helmkamp
314ee9be99 Add checkpoint exclude globs to skip bulky artifacts from git checkpoint commits
Introduces a [checkpoint] config table with exclude_globs in both run.toml
(per-run) and server.toml (defaults). Globs are merged (union + dedup) when
both are present. Non-empty excludes use git pathspec :(glob,exclude) syntax
to prevent staging matching files during checkpoint commits.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:25:27 -05:00
Bryan Helmkamp
69e82a22f0 Fix two validation warnings in docs workflows and treat warnings as failures
- nlspec-conformance: add retry_target="fix" to goal_gate node test_full
- solitaire: fix fallback_retry_target reference from impl_game_logic to impl_logic
- run_tests.sh: fail validate phase on warnings, not just errors

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:54:54 -05:00
Bryan Helmkamp
7836eb4eaa Separate serve logs from CLI logs
`arc serve` writes to `serve-YYYY-MM-DD.log` and all other commands
write to `cli-YYYY-MM-DD.log` so the two are easy to tail independently.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:31:12 -05:00
Bryan Helmkamp
9b7f18d112 Update changelog skill with hero vs. More section guidance
Adds clear rules for when features deserve hero H2 headings vs. the
accordion-based More section, with category list and examples.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:18:04 -05:00
Bryan Helmkamp
d2c6b50c90 Add POST /models/{id}/test endpoint for server-mode model testing
Enables `arc models test` to work in server mode by adding an API
endpoint that sends "Say OK" (max_tokens=16, 30s timeout) to a model
and reports pass/fail. Dry-run mode returns synthetic "ok" status.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:17:10 -05:00
Bryan Helmkamp
2fd11100e3 Add competitor comparison page to Guides section
Covers 10 competitors across three tiers: coding workflow orchestration
(StrongDM Factory, Factory AI, LangGraph), AI coding agents (Cursor,
Claude Code, Codex, Devin, Amp), and adjacent infra (Trigger.dev,
Conductor), plus honorable mentions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:16:51 -05:00
Bryan Helmkamp
d3764b2cfe Update changelog skill with hero vs. More section guidance
Replaces the previous "every major feature gets an H2" approach with
a two-zone model: 2-3 hero features as H2 headings, everything else
in a ## More section with categorized Accordion components (API, CLI,
Workflows, Improvements, Fixes).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:04:15 -05:00
Bryan Helmkamp
73d2d7918c Add --mode standalone|server CLI support for arc models list
Commands can now delegate to a running Arc API server instead of
executing in-process. Adds ExecutionMode, ServerDefaults, and
ClientTlsConfig to cli.toml parsing with CLI flag > config > default
precedence. The models list command fetches from GET /models when in
server mode, with mTLS client certificate auth when [server.tls] is
configured.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:03:55 -05:00
Bryan Helmkamp
2eae4224e1 Add marketing homepage with Tailwind CSS and brand colors
Sets up Tailwind v4 via @tailwindcss/vite, adds the full brand palette
(teal, navy, ice, mint, amber, coral) as custom theme tokens, and builds
a complete homepage with hero, feature grid, code examples, verification
section, multi-model section, observability, "Why Arc", and CTAs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:03:27 -05:00
Bryan Helmkamp
a15425762e Move Models API, Verification API, and streaming logs into accordion sections
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:02:03 -05:00