fabro/docs/specs
Bryan Helmkamp ed07d43335 Implement spec gaps: rate limit headers, error classification, total timeout, metadata, stream_object
- Parse x-ratelimit-* headers into RateLimitInfo for Anthropic, OpenAI, and
  OpenAI-compatible providers (previously hardcoded to None)
- Add "not found"/"does not exist" and "unauthorized"/"invalid key" error
  message classification patterns for ambiguous HTTP status codes
- Apply TimeoutConfig.total to wrap the entire multi-step generate() loop
  (previously only per_step was used)
- Add metadata field to GenerateParams with builder method, pass through to
  Request instead of hardcoding None
- Implement stream_object() for streaming structured output with incremental
  JSON parsing via new ObjectStreamEvent type (Partial/Delta/Complete variants)
- Add OpenAI-compatible Chat Completions adapter for third-party endpoints

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 11:05:10 -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 Implement spec gaps: rate limit headers, error classification, total timeout, metadata, stream_object 2026-02-20 11:05:10 -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.