Commit graph

1114 commits

Author SHA1 Message Date
Bryan Helmkamp
7ae2163163 Add fabro rewind command to rewind workflow runs to earlier checkpoints
Enables rewinding both the metadata branch and run branch refs to a
target checkpoint, allowing resume from an earlier point with
`fabro run --run-branch`. Supports targeting by node name, node@visit,
or @ordinal, with parallel interior snap-back and optional remote push.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 11:38:17 -04:00
Bryan Helmkamp
bfda77c4a3 Improve workflow list output with grouped sections, descriptions, and tests
Show workflows grouped by User/Project with directory paths in headings,
aligned NAME/DESCRIPTION columns, truncated goal snippets, and (none)
for empty sections. Add tests for list_workflows_detailed, read_workflow_goal,
and truncate_str.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 11:19:08 -04:00
Bryan Helmkamp
c2ec23b147 Add fabro workflow list command
Adds a new `workflow` subcommand group with a `list` command that
discovers available workflows via `fabro.toml` and prints their names.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 09:58:03 -04:00
Bryan Helmkamp
8ef1fbd6f8 Add user-level workflow lookup in ~/.fabro/workflows/
`fabro run NAME` now checks ~/.fabro/workflows/ as a fallback when the
workflow isn't found in the project directory, letting users have
personal workflows available across all projects. Project workflows
take precedence over user workflows.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 23:16:18 -04:00
Bryan Helmkamp
fdcebd850b Fix remaining .dot test references in integration.rs
Update two test TOML graph references from test.dot to test.fabro.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 22:39:58 -04:00
Bryan Helmkamp
21aff5431c Update docs, frontend, marketing, and skills for .fabro extension
Update 47 MDX doc pages, OpenAPI spec, SVG diagram, language
grammar, frontend demo data, marketing page, skills, and README
to use .fabro extension. Add "fabro" to fileTypes in language
grammars. Document stack.child_workflow alongside stack.child_dotfile.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 22:38:25 -04:00
Bryan Helmkamp
85db69fdc1 Rename .dot files to .fabro and update all references
Rename 79 workflow files from .dot to .fabro extension across
fabro/workflows/, test/, test/docs/, and files-internal/demo/.
Update TOML configs, Rust production code, test code, and shell
scripts. Backward compat tests in test/attractor/ are unchanged.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 22:27:19 -04:00
Bryan Helmkamp
f12f261ddd Add graph.fabro as primary filename with graph.dot fallback
Write graph.fabro in run dirs and metadata branches. Read with
graph.dot fallback for backward compatibility with existing runs.
Add stack.child_workflow attribute with stack.child_dotfile fallback.
No files renamed yet — fallback paths handle everything.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 22:16:10 -04:00
Bryan Helmkamp
e5d1790551 Add thread_id_requires_fidelity_full lint rule
Warn when thread_id is set without fidelity=full, since session reuse
only works with full fidelity. Checks node-level, edge-level, and
graph-level default_thread attributes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 20:58:08 -04:00
Bryan Helmkamp
21d84eecf6 Regenerate TypeScript API client from updated OpenAPI spec
Picks up Arc-to-Fabro rename and new ssh-configuration model.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 20:43:25 -04:00
Bryan Helmkamp
6bbc6eb1cd Rename Arc to Fabro in user-facing strings, comments, and tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 20:43:21 -04:00
Bryan Helmkamp
88e0cea110 Fix relative path in fabro-api-client generate script
The path was two levels up (../../) but needs three (../../../) since
the package lives at lib/packages/fabro-api-client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 20:42:45 -04:00
Bryan Helmkamp
1f3678c214 add comparison 2026-03-13 18:52:20 -04:00
Bryan Helmkamp
858bdc3788 Split trycmd into per-subcommand tests and remove live-probe doctor fixtures
Split the single cli_tests trycmd function into 14 per-subcommand test
functions so nextest can parallelize them. Delete header.toml and
verbose.toml doctor fixtures that ran live network probes — the existing
dry-run-flag.toml and help.trycmd already cover the same output assertion.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 18:03:23 -04:00
Bryan Helmkamp
cb21dc8096 Fix slow unit tests (>5s) by removing unnecessary production delays
- doctor_no_color test: add --dry-run flag to skip live network probes (11s -> <1s)
- retry tests: set retry_policy=linear for 500ms delay instead of 5s default backoff
- cli_backend tests: make poll_interval configurable on AgentCliBackend, use 10ms in tests
- doctor TOML fixtures: remove status.code=1 now that dry-run doctor exits 0

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 17:59:43 -04:00
Bryan Helmkamp
1b3d3d900b Move git SHA/build date from fabro-util to fabro-cli build.rs
fabro-util is a low-level crate depended on by almost everything, so its
build.rs reruns cascaded through the whole workspace. fabro-cli is the
leaf binary — nothing depends on it, so rebuilds are limited to just
that one crate.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 15:03:12 -04:00
Bryan Helmkamp
cdbfc72719 Fix fabro-util build.rs rerun-if-changed path to prevent constant recompilation
The relative path to .git/HEAD was wrong (../../ instead of ../../../),
pointing to a nonexistent file. Cargo reruns build scripts when a
rerun-if-changed target doesn't exist, causing a full workspace rebuild
on every invocation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 14:53:11 -04:00
Bryan Helmkamp
82dd6a8c04 Bump version to 0.4.0 2026-03-13 13:18:49 -04:00
Bryan Helmkamp
2117d31d55 Cargo.lock 2026-03-13 13:18:39 -04:00
Bryan Helmkamp
4920f6e959 Fix assemble_narrative_only test to expect branding footer
The assemble_pr_body function unconditionally appends the "Generated
with Fabro" footer, but this test was asserting the bare narrative.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 13:05:59 -04:00
Bryan Helmkamp
db9f272dde Bump version to 0.3.0 2026-03-13 12:54:26 -04:00
Bryan Helmkamp
fd3a27f592 tweak repl workflow 2026-03-13 12:41:23 -04:00
Bryan Helmkamp
8c7a31dca2 Add example toy repl workflow 2026-03-13 12:26:25 -04:00
Bryan Helmkamp
d28a97c398 AGENTS.md 2026-03-13 12:25:59 -04:00
Bryan Helmkamp
3f04e978c8 use Freeform question type for human gates with no fixed choices
When a human gate has only a freeform edge and no fixed choices, use
QuestionType::Freeform instead of MultipleChoice. This sends the user
directly to a text input prompt, skipping the unnecessary select menu.
Also removes the Quit choice from the REPL workflow so it uses the new
freeform-only path.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:25:37 -04:00
Bryan Helmkamp
54f3b456f0 update comparison docs: structured dimensions, nav entry, accuracy note
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:03:50 -04:00
Bryan Helmkamp
c5bee7bf43 show prior node output before human gate prompts
Thread the previous stage's response through `Question.context_display`
so `ConsoleInterviewer` renders it before the interactive prompt. This
lets users see the agent's response before deciding what to do next in
looping workflows like REPL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 11:57:35 -04:00
Bryan Helmkamp
7685d410d2 arc/ -> fabro/ 2026-03-13 10:31:07 -04:00
Bryan Helmkamp
1ddcb92ab7 add Fabro branding to generated commits and PRs
Update default git author to Fabro <noreply@fabro.sh>. Append
"Generated with Fabro" footer to all checkpoint and metadata commits,
and to PR bodies. When the commit author is overridden, add a
Co-Authored-By trailer for attribution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 10:28:06 -04:00
Bryan Helmkamp
463ff8acd2 rename project_docs module to memory
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 10:02:11 -04:00
Bryan Helmkamp
4dd76b259e rename Arc to Fabro in README, marketing site, and events strategy doc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 09:57:13 -04:00
Bryan Helmkamp
e968ece42c rename git trailers from Arc-* to Fabro-* to match product rename
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 09:56:59 -04:00
Bryan Helmkamp
b6eee18a79 fix docs: update stale #arc-preview anchor to #fabro-preview
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:52:08 -04:00
Bryan Helmkamp
26adc6a5ba update changelog: add model stylesheet simplification to 2026-03-12 entry
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:37:43 -04:00
Bryan Helmkamp
edf8382e40 update docs: document provider auto-inference from model catalog
Note in stylesheets, DOT reference, multi-model tutorial, run config,
and skill references that provider is now optional and auto-inferred.
Remove redundant provider from TOML examples.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:34:17 -04:00
Bryan Helmkamp
d37fb9a9b4 simplify model stylesheet: rename llm_model/llm_provider, add provider inference
Rename `llm_model` → `model` and `llm_provider` → `provider` in stylesheet
properties, accessor methods, and all DOT/doc references. Add
ProviderInferenceTransform that automatically infers provider from the model
catalog, eliminating redundant provider declarations in stylesheets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:27:18 -04:00
Bryan Helmkamp
5538ae4cd7 update docs: remove preview warning, update sandboxes, mark preview integrations
- Remove private research preview warning from quick-start page
- Update sandboxes section on how-fabro-works to list all 6 providers
- Mark exe.dev and Sprites as (preview) in sidebar nav titles

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 18:46:08 -04:00
Bryan Helmkamp
788feb7e0c rename logs-directory to run-directory and remove logs content
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 18:42:41 -04:00
Bryan Helmkamp
9712fd5ebb move interviews doc from execution/ to human-tools/ section
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 18:42:19 -04:00
Bryan Helmkamp
17d4d0d85b replace old Arc logo/icon SVGs with Fabro brand assets
Update all brand SVG files in files-internal/assets/brand/ to use the
new Fabro geometric symbol and logotype instead of the old Arc organic
icon and wordmark.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:54:44 -04:00
Bryan Helmkamp
376b132ca9 rename docs-internal to files-internal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:50:27 -04:00
Bryan Helmkamp
48eb867ce2 fix clippy large_enum_variant and rename ARC_ env vars in .env.example
Box the Usage field in Turn::Assistant to satisfy clippy::large_enum_variant.
Rename ARC_ prefixed env vars to FABRO_ in .env.example.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:37:22 -04:00
Bryan Helmkamp
5b18680d57 fix remaining arc references in README, CONTRIBUTING, docs-internal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 12:28:04 -04:00
Bryan Helmkamp
28884ae093 rename Arc to Fabro in all Rust crates, symbols, env vars, and supporting files
- Rename 20 crate directories lib/crates/arc-* → fabro-*
- Update all Cargo.toml: crate names, dep paths, feature flags, bin name
- Rename arc_server module → fabro_server in fabro-llm
- ArcError → FabroError across 30+ files
- ARC_VERSION/ARC_GIT_SHA/ARC_BUILD_DATE → FABRO_* constants
- All use/qualified paths: arc_agent:: → fabro_agent::, etc. (~1500 occurrences)
- Env vars ARC_* → FABRO_* in string literals and shell scripts
- String literals: X-Arc-Demo, arc-bot, arc@local, arc-web, arc-mcp, etc.
- Path strings: .arc/ → .fabro/, arc.toml → fabro.toml, refs/arc/ → refs/fabro/
- arc-api.yaml → fabro-api.yaml (OpenAPI spec)
- skills/arc-create-workflow → fabro-create-workflow
- trycmd fixtures: $ arc → $ fabro
- Inline snapshots (insta) updated
- CI, Docker, install.sh, scripts, CLAUDE.md, AGENTS.md
- TypeScript app: env vars, headers, JWT issuer
- Docs: page slugs, git refs, config paths, sandbox names, repo URLs
- Repo references: brynary/arc → fabro-sh/fabro

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 12:25:58 -04:00
Bryan Helmkamp
e514a92dbc rm develop-web-game 2026-03-12 11:24:10 -04:00
Bryan Helmkamp
75fca9fb93 cleanup internal docs 2026-03-12 11:23:11 -04:00
Bryan Helmkamp
e8a57f8893 docs: remove naming research reports
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:17:53 -04:00
Bryan Helmkamp
4a378d1868 docs: rename Arc to Fabro in internal docs and CONTRIBUTING
Update product name references in CONTRIBUTING.md, competitive landscape,
logging/events strategy docs, API design draft, spec files, and web
screenshot guide. Rust crate names and file paths left unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:16:48 -04:00
Bryan Helmkamp
3ce976a006 docs: update license references from AGPL to MIT
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:14:37 -04:00
Bryan Helmkamp
3a6ec9b9ef Rename Arc to Fabro in TypeScript/JavaScript
Rename directories (arc-web → fabro-web, arc-api-client → fabro-api-client),
update package names, import paths, TS-only identifiers (theme key, session
cookie, demo cookie, OAuth state, db filename, mock data), and supporting
files (Dockerfile, docker-compose, entrypoint, CI workflow, CLAUDE.md).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:13:18 -04:00