Add agent sub-package for composable LLM agents
All checks were successful
CI / Lint (push) Successful in 9m46s
CI / V2 Module (push) Successful in 12m5s
CI / Root Module (push) Successful in 12m6s

Introduces v2/agent with a minimal API: Agent, New(), Run(), and AsTool().
Agents wrap a model + system prompt + tools. AsTool() turns an agent into
a llm.Tool, enabling parent agents to delegate to sub-agents through the
normal tool-call loop — no channels, pools, or orchestration needed.

Also exports NewClient(provider.Provider) for custom provider integration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-07 23:17:19 -05:00
parent be572a76f4
commit 87ec56a2be
6 changed files with 472 additions and 7 deletions

View File

@@ -117,7 +117,7 @@ func TestModel_Complete_WithTools(t *testing.T) {
func TestClient_Model(t *testing.T) {
mp := newMockProvider(provider.Response{Text: "hi"})
client := newClient(mp)
client := NewClient(mp)
model := client.Model("test-model")
resp, err := model.Complete(context.Background(), []Message{UserMessage("test")})
@@ -144,7 +144,7 @@ func TestClient_WithMiddleware(t *testing.T) {
}
mp := newMockProvider(provider.Response{Text: "ok"})
client := newClient(mp).WithMiddleware(mw)
client := NewClient(mp).WithMiddleware(mw)
model := client.Model("test-model")
_, err := model.Complete(context.Background(), []Message{UserMessage("test")})