Skip to content

Proxima v1.3.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 18:10
· 30 commits to main since this release

What's changed

Added

  • OpenAI provider (lib/providers/openai_provider.dart) — third provider alongside Anthropic and Ollama, with native tool calling and SSE streaming. --model openai/gpt-4o, openai_api_key / OPENAI_API_KEY. Handles the four wire-format divergences from Anthropic: the system prompt is sent as a role: "system" message rather than a top-level field; tool schemas nest under function/parameters; tool results use role: "tool" with tool_call_id; and assistant tool_calls[].function.arguments is a JSON-encoded string, not an object. tool_calls[].id is preserved into ToolCall.callId — OpenAI rejects a tool_call_id it did not issue, and the agent loop replays it on the next request. Omits temperature for the o-series reasoning models, which accept only their default and reject an explicit value — including 0.0 — with a 400. Uses max_completion_tokens (max_tokens is deprecated and rejected by o* models) and sets stream_options.include_usage so streamed responses still report token usage and cost
  • Injectable openai_base_url — the same provider serves any endpoint speaking the OpenAI wire format (Groq, Together, OpenRouter, LM Studio) with no new provider class. Azure OpenAI is not supported: it requires an api-key header, a deployment-specific path, and an api-version query parameter
  • Robust transport handling — a ClientException from an unreachable endpoint is converted to LLMError(LLMErrorKind.network) on both request paths and the mid-stream body, so a configured fallback_model is actually tried during a network outage (FallbackProvider catches only LLMError)
  • Per-model context windows — capabilities.contextWindow is derived from the selected model rather than a flat figure, because ContextBuilder budgets the whole session — including a 10% output allowance — from it. Known OpenAI families match by prefix; anything unrecognised gets a conservative 8K, overridable with openai_context_window
  • Provider-aware credential hints — an auth failure names the active provider's environment variable rather than always ANTHROPIC_API_KEY
  • Single credential source for subagents — the critic_on_write subagent and the agent loop now share one _buildProviderRegistry() helper, so a provider's credentials cannot reach one and not the other
  • OpenAI pricing in CostCalculator for gpt-4o, gpt-4o-mini, gpt-4-turbo, o3, and o3-mini
  • HTTP-level provider tests — first use of package:http/testing.dart's MockClient in this repo, injected through the existing http.Client? constructor seam. 23 tests assert the decoded request body and parsed response, covering all four wire divergences, error-code mapping, SSE streaming, and model discovery. 9 further tests cover ProviderRegistry dispatch

Changed

  • Model lists are no longer hardcoded in the CLI — the /model picker and tab completion now build their list from LLMProvider.listModels(). OpenAIProvider and OllamaProvider discover models live — OpenAI filtering is an exclusion list rather than an allow-list, so chat models from compatible endpoints (Groq, Together, OpenRouter, LM Studio) survive discovery instead of being filtered out; AnthropicProvider returns a static list. New OpenAI and Ollama releases appear with no code change. Removes the duplicated SlashCommandHandler.anthropicModels const and its copy in repl.dart. Live fetches run in the background at REPL start, are re-tried in the picker only when stdout is a TTY, and always degrade to [] — the picker still works offline


Installation

macOS / Linux — install script

curl -fsSL https://raw.githubusercontent.com/jizzel/proxima/main/install.sh | sh

macOS (Apple Silicon + Intel via Rosetta 2)

curl -fsSL https://github.com/jizzel/proxima/releases/download/v1.3.0/proxima-macos-arm64 \
  -o /usr/local/bin/proxima && chmod +x /usr/local/bin/proxima

Linux (x86_64)

curl -fsSL https://github.com/jizzel/proxima/releases/download/v1.3.0/proxima-linux-x64 \
  -o /usr/local/bin/proxima && chmod +x /usr/local/bin/proxima

Windows (x86_64) — PowerShell

irm https://raw.githubusercontent.com/jizzel/proxima/main/install.ps1 | iex

Or download proxima-windows-x64.exe below and add it to a directory on your PATH.