Skip to content

providers: per-model capability registry + tool-owned prompt snippets #345

Description

@erain

Goal

P1.5 of docs/coding-harness-roadmap.md (sequenced last — API shape): replace scattered if/else model handling with declarative per-model capabilities, and let tools own their prompt text so the system prompt self-assembles from the active toolset.

Scope

  • Extend the providers registry (or a models metadata table) with harness-relevant capabilities: context window, output-truncation budget, parallel-tool support, thinking format/levels, prompt-variant key, native-search gating.
  • Tool-owned prompt assembly: optional PromptSnippet/PromptGuidelines on tools; the coding system prompt lists one line per active tool and merges deduped guidelines (pi pattern).
  • At least two prompt variants with a guaranteed generic fallback: gemini-3 (terse) and default; snapshot-test rendered prompts (Cline pattern).

Out of scope

XML tool-calling fallback (roadmap P3); per-model pricing.

Implementation notes

Sources: Codex models.json, pi compat structs + promptSnippet, Cline PromptRegistry/variants, Gemini CLI model-family tool schemas. Sequence after #338#343 so the registry fields are informed by what those needed.

Docs update required

provider-guide.md; design.md; CHANGELOG.

Verification commands

go test ./providers/... ./tools/... ./cmd/glue/ && go vet ./...

Acceptance criteria

Capabilities resolved per model id with sane defaults; system prompt content changes when the toolset changes (snapshot-tested); no behavior change for existing default paths.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions