feat: add llm.Foreman() constructor for foreman daemon integration #4
Reference in New Issue
Block a user
Delete Branch "feat/foreman-constructor"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds
llm.Foreman(baseURL, apiKey, opts...)tov2/constructors.go— a thin constructor that delegates to the existing native ollama provider. This is Level 0 of the foreman integration described in ADR-0011./api/chat), so the existing ollama provider handles streaming, tool use, and think transparently.baseURLis positional and required — foreman has no default public address (it's a private daemon on the homelab/Tailscale).apiKeycan be empty for network-trusted deployments where the firewall/Tailscale is the auth boundary.v2/CLAUDE.mddocumenting the decision.Usage
What this does NOT include
/jobsor webhook integration is needed at the llm layer.clientpackage (Level 1 sync facade over/jobs) — that lives in the foreman repo.Test plan
go build ./...passes inv2/go vet ./...passes inv2/go test ./...passes inv2/llm.Foreman(url, token).Model("qwen3:30b")produces a working client against a running foreman instancePull request closed