Skip to content

v1.14.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 18:37
cdc518f

Changes

Adds Gemini 4 Argon on both the Gemini API and Vertex AI, and fixes two failures that hit long-running agent work: Claude requests that generate for more than a minute were dropped by the network, and a ParallelGroup nested inside an async group could not run at all. It also stops a second companion process from starting next to a running one.

Highlights

  • google/gemini-4-argon and google_vertexai/gemini-4-argon work in sync, async, streaming, tool and live conversations, with low, medium and high effort and Argon's pricing, including its scheduled price changes.
  • Long Claude generations (a full page, a long stylesheet, a big extraction) no longer fail with APIConnectionError after a minute: requests above 4096 max_tokens now travel over the streaming API and return the same result as before.
  • A ParallelGroup inside an AsyncSequentialGroup or AsyncLoopGroup now runs its agents instead of failing with "asyncio.run() cannot be called from a running event loop".
  • Only one companion runs per user: a second prompture companion start finds the lock and leaves the running one alone.
Technical changes
  • Gemini: a shared drivers/_google_genai.py now holds the request, response and part handling the four Google drivers (sync and async, Gemini API and Vertex AI) used to duplicate. Signed response parts (_google_parts) are preserved across turns in Conversation / AsyncConversation and live events, so thought signatures survive tool loops.
  • Gemini usage counts thinking and cached tokens. _effort.google_thinking_level is now model-aware: Argon gets a real medium, older models keep the low/high mapping, and an explicit thinking_budget is never overridden.
  • infra/pricing.py: local rate entries can carry a cost_schedule, evaluated at lookup time so a long-running process crosses a price change; rates/google.json and rates/google_vertexai.json add Argon. Google SDK requirements and the README's Argon section are updated.
  • companion/server.py: instance_lock() takes an OS-level lock (msvcrt on Windows, fcntl elsewhere) on ~/.prompture/companion.lock for the life of the process, so a crash never leaves it stale and a slow companion is never mistaken for a missing one.
  • groups/async_groups.py: ParallelGroup.run() returns the run_async() coroutine when an event loop is already running (which is how every parent async group calls it) and still runs to completion with asyncio.run() from plain sync code.
  • drivers/claude_driver.py / async_claude_driver.py: new _create_message / _acreate_message helpers used by generate_messages (plain and JSON mode) and generate_messages_with_tools. Above STREAM_TRANSPORT_ABOVE_MAX_TOKENS (4096) they call messages.stream() and get_final_message(); below it they keep messages.create(). The stream_transport option forces either path. This also lifts the SDK's refusal of non-streaming requests whose max_tokens could run past ten minutes.
  • dev is brought level with main (the release merges since 1.13.1 and the image-block preparation fix from #118) so this merge carries no conflicts.

Details