de2b2f0f28
llama-swap was http-only by DSN, pushing TLS-fronted instances onto the openai:// scheme (which loses the management/image methods). Add a "llama-swaps" scheme that builds an https base URL, alongside "llama-swap" (http, local-first) — mirroring redis/rediss. Both share one factory; llama-swaps is scheme-only (no default built-in). The choice stays explicit because a DSN has no reliable http-vs-https signal. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Architecture Decision Records
One decision per file, append-only; supersede rather than rewrite.
| ADR | Title | Status |
|---|---|---|
| 0001 | Package layout — canonical types in leaf llm, root re-exports |
Accepted |
| 0002 | Canonical message/content model | Accepted |
| 0003 | Parse grammar — verbatim ids, inline alias expansion, chains | Accepted |
| 0004 | LLM_* env-DSN provider definitions (go-llm parity + eager load) | Accepted |
| 0005 | Provider interface and capabilities model | Accepted |
| 0006 | Model health tracking and backoff | Accepted |
| 0007 | Dependency policy — stdlib-first, hand-rolled REST clients | Accepted |
| 0008 | Failover-chain execution semantics | Accepted |
| 0009 | Multimodal strategy — normalize per target, enforce at provider | Accepted |
| 0010 | Tools and structured output — canonical shape, native mappings | Accepted |
| 0011 | Google provider on the official Gen AI SDK | Accepted |
| 0012 | Agent run loop | Accepted |
| 0013 | Skill model — additive instruction+tool bundles | Accepted |
| 0014 | Conversion-driven extensions (resolvers, typed tools, hooks, ops controls) | Accepted |
| 0015 | llama-swap provider — reuse openai for chat, tailored management + image | Accepted |
| 0016 | imagegen — a canonical text-to-image interface | Accepted |