d71bd942c4
Three compounding bugs prevented tool calling with llama.cpp:
- Stream parser set argsComplete on partial JSON (e.g. "{"), dropping
subsequent argument deltas — fix: use json.Valid to detect completeness
- Missing tool_choice default — llama.cpp needs explicit "auto" to
activate its GBNF grammar constraint; now set when tools are present
- Tool names in history used internal format (fs.ls) while definitions
used API format (fs_ls) — now re-sanitized in translateMessage
Additional changes:
- Disable SDK retries for local providers (500s are deterministic)
- Dynamic capability probing via /props (llama.cpp) and /api/show
(Ollama), replacing hardcoded model prefix list
- Engine respects forced arm ToolUse capability when router is active
- Bundled /init skill with Go template blocks, context-aware for local
vs cloud models, deduplication rules against CLAUDE.md
- Tool result compaction for local models — previous round results
replaced with size markers to stay within small context windows
- Text-only fallback when tool-parse errors occur on local models
- "text-only" TUI indicator when model lacks tool support
- Session ResetError for retry after stream failures
- AllowedTools per-turn filtering in engine buildRequest
27 lines
1.1 KiB
Markdown
27 lines
1.1 KiB
Markdown
# AGENTS.md
|
|
|
|
## Domain Terminology
|
|
- **Elf**: An agent instance.
|
|
- **Turn**: A complete sequence of agentic reasoning and tool execution.
|
|
- **Routing Arm**: A specific model/provider selected by the `Router` for a task.
|
|
- **Stream Event**: Discrete updates during LLM generation (e.g., `EventTextDelta`, `EventToolCallStart`, `EventToolResult`).
|
|
|
|
## Build & Test Targets
|
|
- **Run**: `make run`
|
|
- **Test (Verbose)**: `make test-v`
|
|
- **Integration Tests**: `make test-integration` (requires `//go:build integration`)
|
|
|
|
## Key Dependencies
|
|
- **Mistral**: `github.com/VikingOwl91/mistral-go-sdk`
|
|
- **Anthropic**: `github.com/anthropics/anthropic-sdk-go`
|
|
- **OpenAI**: `github.com/openai/openai-go`
|
|
- **Google GenAI**: `google.golang.org/genai`
|
|
- **TUI**: `charm.land/bubbletea/v2`, `charm.land/lipgloss/v2`
|
|
- **Other**: `charm.land/bubbles/v2`, `charm.land/glamour/v2`, `github.com/pkoukk/tiktoken-go`
|
|
|
|
## Environment Variables
|
|
- `MISTRAL_API_KEY`: Required for Mistral provider.
|
|
- `ANTHROPIC_API_KEY`: Required for Anthropic provider.
|
|
- `OPENAI_API_KEY`: Required for OpenAI provider.
|
|
- `GOOGLE_API_KEY`: Required for Google provider.
|