fabro/lib/crates
Bryan Helmkamp 6383e7037b
Add twin test mode for OpenAI E2E tests
Integrate twin-openai (fake OpenAI server) into the workspace and wire
it into the e2e_test macro so OpenAI tests can run without real API
credentials. The twin server starts in-process via OnceLock on first use
and provides per-test isolation through bearer-token namespacing.

Changes:
- Add Twin as default TestMode, replacing Off (gating now via #[ignore])
- Extend #[e2e_test] macro with `twin` requirement for twin-only,
  live-only, and dual-mode (twin + live) test gating
- Add e2e_openai!() macro returning (base_url, api_key)
- Convert openai_complete and openai_gpt_5_3_codex_complete to dual-mode
- Add new openai_server_error twin-only test with scripted 500 error
- Standardize axum 0.8 as workspace dependency across all crates
- Relax twin-openai ResponsesRequest to accept unknown fields via flatten

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 20:36:48 -04:00
..
fabro-agent Centralize E2E test env var handling 2026-03-31 09:30:38 -04:00
fabro-api-types Add publish = false to all crates to prevent accidental crates.io publish 2026-03-29 13:47:09 -04:00
fabro-checkpoint Preserve metadata deserialize error details 2026-03-30 16:17:39 -04:00
fabro-cli Add twin test mode for OpenAI E2E tests 2026-03-31 20:36:48 -04:00
fabro-config Add global JSON output mode 2026-03-31 07:51:19 -04:00
fabro-core Rename fabro-workflows crate to fabro-workflow 2026-03-30 12:27:40 -04:00
fabro-db Add publish = false to all crates to prevent accidental crates.io publish 2026-03-29 13:47:09 -04:00
fabro-devcontainer Clean up workspace clippy warnings 2026-03-30 11:27:25 -04:00
fabro-github Add global JSON output mode 2026-03-31 07:51:19 -04:00
fabro-graphviz Clean up workspace clippy warnings 2026-03-30 11:27:25 -04:00
fabro-hooks Clean up workspace clippy warnings 2026-03-30 11:27:25 -04:00
fabro-interview Speed up sleep-heavy test suites 2026-03-31 13:12:21 -04:00
fabro-llm Add twin test mode for OpenAI E2E tests 2026-03-31 20:36:48 -04:00
fabro-macros Add twin test mode for OpenAI E2E tests 2026-03-31 20:36:48 -04:00
fabro-mcp Clean up workspace clippy warnings 2026-03-30 11:27:25 -04:00
fabro-model Clean up workspace clippy warnings 2026-03-30 11:27:25 -04:00
fabro-oauth Add twin test mode for OpenAI E2E tests 2026-03-31 20:36:48 -04:00
fabro-proctitle Add publish = false to all crates to prevent accidental crates.io publish 2026-03-29 13:47:09 -04:00
fabro-retro Refactor run event envelopes and subagent linking 2026-03-30 17:09:07 -04:00
fabro-sandbox Prune stale git worktrees before branch creation in WorktreeSandbox 2026-03-31 13:44:01 -04:00
fabro-server Add twin test mode for OpenAI E2E tests 2026-03-31 20:36:48 -04:00
fabro-slack Allow GitHub and Slack base URLs to be overridden via env vars 2026-03-30 19:08:12 -04:00
fabro-store Fix logs --follow timeout by lowering SlateDB reader manifest poll interval 2026-03-31 10:45:34 -04:00
fabro-telemetry Speed up sleep-heavy test suites 2026-03-31 13:12:21 -04:00
fabro-test Add twin test mode for OpenAI E2E tests 2026-03-31 20:36:48 -04:00
fabro-tracker Clean up workspace clippy warnings 2026-03-30 11:27:25 -04:00
fabro-types Prefix API routes with /api/v1 2026-03-30 16:17:06 -04:00
fabro-util Add global JSON output mode 2026-03-31 07:51:19 -04:00
fabro-validate Add publish = false to all crates to prevent accidental crates.io publish 2026-03-29 13:47:09 -04:00
fabro-workflow Centralize E2E test env var handling 2026-03-31 09:30:38 -04:00