fabro/docs/superpowers/plans
Bryan Helmkamp a4e8987da8
feat(llm): add Claude Fable 5 support (#482)
## Summary

Adds Anthropic Claude Fable 5 as a first-class Fabro model without
changing the default Anthropic model. The catalog now exposes
`claude-fable-5` with `fable` and `claude-fable` aliases, 1M context,
128k max output, effort levels, vision/tools, prompt caching, and the
documented pricing.

The Anthropic adapter now handles Fable's API behavior directly: it uses
the `claude-fable-5` API ID, omits the legacy 1M context beta header,
avoids injecting default `thinking`, preserves `output_config.effort`,
omits deprecated `temperature`/`top_p` sampling fields for Fable, and
rejects unsupported manual enabled/disabled thinking configs locally.

Fable refusals are converted into content-filter LLM errors with
`stop_details` preserved. Those refusal errors are fallback-eligible, so
existing `run.model.fallbacks` chains work for both prompt and agent
paths, while no-fallback refusals surface clearly as LLM errors.

## Live QA

Manually exercised the PR branch against a live Anthropic API key from
`~/.fabro.bak/.env.bak` using a temporary local harness that was removed
before commit. The run covered non-streaming completion via `fable`,
token counting via `claude-fable`, streaming completion, the deep
model-test path with tools/reasoning, local rejection of manual thinking
config, and a live refusal probe. The live run initially exposed
Anthropic's Fable rejection of `temperature`; this PR now strips
deprecated sampling fields for Fable and the live harness then passed
6/6 checks.

## Testing

- `cargo test -p fabro-llm --test live_fable_manual -- --nocapture
--test-threads=1` -> 6 passed against live Anthropic, temporary harness
removed afterward
- `cargo nextest run -p fabro-llm
encode_fable_uses_api_id_effort_and_omits_1m_beta`
- `cargo nextest run -p fabro-model -p fabro-llm -p fabro-workflow` ->
1808 passed, 41 skipped
- `cargo +nightly-2026-04-14 fmt --check --all`
- `cargo insta pending-snapshots` -> no pending snapshots
- `git diff --check`

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 14:01:56 -04:00
..
2026-04-29-metadata-snapshot-events.md feat(workflow): emit metadata snapshot events 2026-04-29 19:31:13 -04:00
2026-04-30-duplicate-type-unification.md docs(plans): add command output streaming and type unification plans 2026-04-30 08:36:00 -04:00
2026-04-30-preserve-exec-failure-diagnostics.md refactor: remove devcontainer support (#433) 2026-05-27 12:48:40 -04:00
2026-05-02-event-module-split.md refactor(workflow): split event module by responsibility 2026-05-02 14:52:10 -04:00
2026-05-02-server-readiness-timeouts.md fix(cli): bound server readiness probes 2026-05-02 20:13:18 -04:00
2026-05-02-settings-driven-llm-providers-models.md docs(llm): finish configurable provider cleanup (#260) 2026-05-13 17:17:54 -04:00
2026-05-04-cross-tab-sse-coordination.md chore: add plan 2026-05-04 16:09:12 -04:00
2026-05-04-model-test-bounded-concurrency.md chore: update plan 2026-05-04 12:55:19 -04:00
2026-05-04-unique-git-checkpoint-commit-message-path.md chore: add plan 2026-05-04 11:12:40 -04:00
2026-05-05-clean-pierre-virtualizer-integration.md chore: plan 2026-05-06 07:15:18 -04:00
2026-05-05-decouple-interrupts-from-steering.md Wire end-to-end steering for running agents (#209) 2026-05-05 15:34:16 -04:00
2026-05-06-cli-input-overrides.md feat(cli): support sparse input overrides (#222) 2026-05-09 10:00:35 -04:00
2026-05-06-improve-cli-api-error-display.md fix(cli): preserve API error details 2026-05-06 14:03:12 -04:00
2026-05-06-polished-foreground-tty-logging.md feat(cli): polish foreground TTY logs 2026-05-06 15:31:25 -04:00
2026-05-08-generated-typescript-api-client-migration.md feat(web): migrate to generated API client 2026-05-08 07:44:33 -07:00
2026-05-08-run-owned-sandbox-lifecycle.md refactor: remove devcontainer support (#433) 2026-05-27 12:48:40 -04:00
2026-05-09-daytona-run-terminal.md chore: plan 2026-05-09 19:02:03 -04:00
2026-05-09-fixed-project-workflow-directory.md fix(workflow): ignore deprecated project directory 2026-05-09 10:55:56 -04:00
2026-05-09-inline-markdown-run-titles.md chore: plans 2026-05-08 18:59:49 -07:00
2026-05-09-live-stage-token-projection.md feat(billing): project live stage token usage 2026-05-09 15:25:51 -04:00
2026-05-09-remove-local-worktree-mode.md refactor(workflow): remove local worktree mode 2026-05-09 11:04:23 -04:00
2026-05-09-run-files-diff-scope-picker.md feat(run-files): add sandbox diff scopes 2026-05-09 13:00:14 -04:00
2026-05-10-auth-sessions-backend.md feat(auth): add unified session API 2026-05-10 14:16:23 -04:00
2026-05-10-auth-sessions-frontend.md chore: plans 2026-05-10 23:40:02 -04:00
2026-05-10-live-events-page.md feat(web): build live events page in settings 2026-05-10 14:05:10 -04:00
2026-05-10-sandbox-services-backend.md refactor: remove devcontainer support (#433) 2026-05-27 12:48:40 -04:00
2026-05-10-sandbox-services-frontend.md refactor: remove devcontainer support (#433) 2026-05-27 12:48:40 -04:00
2026-05-11-automations-end-to-end.md Replace queued with pending/runnable and add approval flow (web + API s… (#371) 2026-05-23 15:34:33 -04:00
2026-05-13-path-based-daytona-dockerfiles.md feat(manifest): support path-based Daytona Dockerfiles (#258) 2026-05-13 12:32:15 -04:00
2026-05-13-sandbox-repo-layout-plan.md feat(sandbox): prepare clone layout for multi-repo runs (#250) 2026-05-14 09:38:20 -04:00
2026-05-14-optional-llm-install.md feat(install): make LLM setup optional in web installer and CLI (#265) 2026-05-14 22:34:39 -04:00
2026-05-15-sandbox-network-details.md feat(sandbox): surface provider links and network policy (#275) 2026-05-16 10:16:18 -04:00
2026-05-16-chats-new-fabro-web-port.md feat(fabro-web): port /chats/new + /chats/:id from prototype (#289) 2026-05-16 17:10:16 -04:00
2026-05-16-source-aware-template-diagnostics.md feat(template): add source-aware diagnostics (#292) 2026-05-16 18:47:37 -04:00
2026-05-16-static-workflow-structure-rendering.md feat(web): show creator avatar on run "Created by" cell (#319) 2026-05-20 09:11:57 -04:00
2026-05-17-live-provider-workflow-testing.md feat(web): show creator avatar on run "Created by" cell (#319) 2026-05-20 09:11:57 -04:00
2026-05-17-provider-adapter-boundary-cleanup.md feat(web): show creator avatar on run "Created by" cell (#319) 2026-05-20 09:11:57 -04:00
2026-05-18-server-side-run-pairing-api-events.md feat(server): add run pairing API (#312) 2026-05-20 18:58:38 -04:00
2026-05-18-vault-and-credential-source-cleanup.md refactor(auth): split credential sources and vault schemas (#306) 2026-05-18 11:07:42 -04:00
2026-05-20-daytona-managed-sandbox-labels.md feat(sandbox): label Daytona sandboxes as managed (#326) 2026-05-20 17:22:12 -04:00
2026-05-22-agent-context-observability-events.md refactor(agent): simplify reviewed changes 2026-05-22 21:51:45 -04:00
2026-05-22-run-agent-fabro-tools-opt-in.md refactor(agent): simplify reviewed changes 2026-05-22 21:51:45 -04:00
2026-05-22-unified-agent-transcript-events.md refactor(agent): simplify reviewed changes 2026-05-22 21:51:45 -04:00
2026-05-23-llm-input-token-counting.md refactor(agent): simplify reviewed changes 2026-05-22 21:51:45 -04:00
2026-06-10-catalog-driven-model-behaviors.md feat(llm): add Claude Fable 5 support (#482) 2026-06-10 14:01:56 -04:00