feat(llamaswap): add llama-swap provider + canonical imagegen interface
Add provider/llamaswap, a tailored provider for llama-swap (the model-swapping
proxy over llama.cpp / stable-diffusion.cpp). Its chat path delegates to
provider/openai at {base}/v1 — no duplicated wire client (ADR-0007) — with
legacy max_tokens, a Bearer no-key placeholder for keyless local instances, and
a timeout-free client so cold model swaps rely on context deadlines. The
"tailored" surface is concrete management methods (ListModels / Running /
Unload) that don't belong on the canonical llm.Provider interface. The
llama-swap:// DSN scheme builds an http base URL (local-first); a no-URL
built-in errors clearly on use, mirroring foreman.
Add imagegen, a new canonical text-to-image interface separate from llm
(Request/Result/Model/Provider; Image = llm.ImagePart so generated images feed
straight back into chat). First backend is llama-swap via OpenAI
/v1/images/generations (b64_json, bytes-only). Re-exported from the root. v1 is
txt2img only.
Hermetic httptest coverage for chat delegation, management endpoints, image
decode, and scheme wiring. ADR-0015 + ADR-0016, README support matrix +
image-gen section, CLAUDE.md package map, and progress.md updated in the same
commit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+22
@@ -1,5 +1,27 @@
|
||||
# progress
|
||||
|
||||
## 2026-06-27 — llama-swap provider + canonical image-gen interface
|
||||
|
||||
**Landed (ADR-0015, ADR-0016).** New `provider/llamaswap`: chat **delegates to
|
||||
`provider/openai`** at `{base}/v1` (no duplicated wire client per ADR-0007), with
|
||||
legacy `max_tokens`, a `Bearer no-key` placeholder for keyless local instances,
|
||||
and a timeout-free client (swap cold starts → use context deadlines). Tailored
|
||||
management methods on the concrete type — `ListModels`, `Running` (raw JSON),
|
||||
`Unload`. DSN scheme `llama-swap://token@host:port` builds an **http** base URL
|
||||
(local-first), registered in `builtin.go` alongside a no-URL built-in that errors
|
||||
on use (mirrors foreman).
|
||||
|
||||
New canonical `imagegen` package (text-to-image), separate from `llm`:
|
||||
`Request`/`Result`/`Model`/`Provider`, `Image = llm.ImagePart` so generated
|
||||
images feed back into chat. First backend is llama-swap via OpenAI
|
||||
`/v1/images/generations` (`b64_json`, bytes-only). Re-exported from root
|
||||
(`ImageModel`, `ImageRequest`, `WithImageSize`, ...). v1 is txt2img only; edits/
|
||||
img2img and registry image-DSN resolution deferred.
|
||||
|
||||
Hermetic `httptest` tests for chat delegation, management endpoints, image
|
||||
decode, and scheme wiring. Gates green. README support matrix + image-gen
|
||||
section, CLAUDE.md package map, and ADR index updated in the same change.
|
||||
|
||||
## 2026-06-10 — Phase 9b: mort converted, PR open
|
||||
|
||||
**Done.** mort fully re-based on majordomo on branch
|
||||
|
||||
Reference in New Issue
Block a user