Tags: ChanningLua/prax-agent
Tags
chore(0.4.2): make persistent memory actually persist The MemoryExtractionMiddleware scheduled fact extraction as a fire-and-forget asyncio task, but _execute's finally block closed the shared httpx client first — producing the warning 'Memory extraction failed: Cannot send a request, as the client has been closed' on every `prax prompt` run and writing nothing to .prax/memory.json. _execute now drains the pending extraction task (bounded at 15s) before closing the client. Additionally, the extraction call was using the non-streaming `complete()` path which some OpenAI-compatible proxies reject with `400 Stream must be set to true`; extraction now uses the streaming transport when the provider declares supports_streaming, via a new shared helper _extraction_llm_call(). Verified end-to-end: seed 4 facts across categories (preference, behavior, goal), then three independent `prax prompt` sessions correctly recall the name / language / project / off-hours boundary — 3/3 hit rate, zero memory warnings, and the store even grows incrementally as later sessions surface new preferences.
chore(0.4.1): fix provider lookup collision that broke README Quick S… …tart When a user's .prax/models.yaml reuses a bundled model name (e.g. a proxy provider configured with model `gpt-5.4` or `glm-4-flash`), the first-scanned bundled provider won the lookup even though its credential env var was unset. Result: a confusing 'RuntimeError: No configured models are currently available' in the catalog path and a cryptic 'LocalProtocolError: Illegal header value b'Bearer '' in the outbound HTTP path. Both resolution sites (core/model_catalog.get_model_entry and core/llm_client.resolve_model) now prefer the first provider whose api_key env resolves to a real value, falling back to the first match only when no credentialed candidate exists. Unit tests lock in the new behavior. Also demoted the 'Docker sandbox unavailable — falling back to local sandbox' log from WARNING to INFO so first-time users without Docker don't see a red warning on every run. fail_closed policy still errors loudly.
docs(getting-started): correct verification step to use 'prax providers'
The previous step told users to run 'prax doctor' and showed made-up
output like '[glm] ✓ ZHIPU_API_KEY is set'. That output is fabricated:
'prax doctor' is the Claude-Code integration doctor, not the provider
health check. Swap in 'prax providers', which is the actual CLI entry
and matches the real output format ('<model> (<tier>, available, ...)').
PreviousNext