fabro/docs/specs
Bryan Helmkamp 978a477d1e Fix 8 spec compliance gaps in unified-llm
- Enforce stream_read timeout (30s default) in all 4 providers' streaming code
- Add with_timeout() builder method to all adapter constructors
- Fix ResponseFormatType::JsonObject to serialize as "json" per spec
- Add STEP_FINISH to StreamEventType enum in spec doc
- Add UnsupportedToolChoice error and enforce in all adapters via validate_tool_choice()
- Fix error classification to check status code before message content
- Add stop_sequences support to OpenAI Responses API adapter
- Handle Gemini thought parts (thought: true) in both complete and streaming paths

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 12:41:41 -04:00
..
attractor-spec.md specs 2026-02-19 13:41:55 -04:00
coding-agent-loop-spec.md specs 2026-02-19 13:41:55 -04:00
README.md specs 2026-02-19 13:41:55 -04:00
unified-llm-spec.md Fix 8 spec compliance gaps in unified-llm 2026-02-20 12:41:41 -04:00

Attractor

This repository contains NLSpecs to build your own version of Attractor to create your own software factory.

Although bringing your own agentic loop and unified LLM SDK is not required to build your own Attractor, we highly recommend controlling the stack so you have a strong foundation.

Specs

Building Attractor

Supply the following prompt to a modern coding agent (Claude Code, Codex, OpenCode, Amp, Cursor, etc):

codeagent> Implement Attractor as described by https://factory.strongdm.ai/

Terminology

  • NLSpec (Natural Language Spec): a human-readable spec intended to be directly usable by coding agents to implement/validate behavior.