Files
gnoma/AGENTS.md
vikingowl 3873f90f83 feat: local model reliability — SDK retries, capability probing, init skill, context compaction
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
2026-04-13 02:01:01 +02:00

1.1 KiB

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.