Releases: jacob-bd/the-ai-counsel
Releases · jacob-bd/the-ai-counsel
The AI Counsel v0.10.3
The AI Counsel v0.10.2
Fixed
- True background heartbeat for MCP SSE streams to prevent 60s client read timeouts during silent inference steps (like Stage 2 and Stage 3).
The AI Counsel v0.10.1
Fixed
- MCP SSE stream timeouts: Fixed an issue where long-running deliberations over remote MCP SSE connections (e.g., via
alef-agent) were cancelled after 60 seconds due to client-side read timeouts. A new stream interceptor now emits continuous heartbeatnotifications/progressmessages, allowing full 3-stage deliberations to complete successfully. - OpenCode test assertion: Fixed an incorrect header assertion in
test_opencode_provider.pywhich checked forAuthorizationinstead of the expectedx-api-key.
The AI Counsel v0.9.1
Added
- Ruff dev tooling: Added Ruff to the Python dev dependency group so lint checks run through
uv run ruff.
Fixed
- Conversation title repair: New and existing conversations with default/empty titles now derive a readable title from the first user message without overwriting explicit custom titles.
- Preflight rate-limit resilience: Transient rate-limit preflight failures are retried and soft-failed so otherwise valid models are not dropped from a council run.
- Plain 503 preflight handling: A bare
503 Service Unavailableremains a hard preflight failure unless the response body indicates rate limiting, quota, throttling, temporary congestion, or a similar transient condition.
The AI Counsel v0.9.0
Added
- Configurable date format: Conversation timestamps in the sidebar can be set to Auto (browser locale), MM/DD/YYYY, DD/MM/YYYY, or YYYY-MM-DD via Settings → General → Display Preferences. The setting is retroactive — all existing conversations update immediately.
- General settings section: Display preferences (date format) and response language moved out of Backup & Reset into a dedicated General section at the top of Settings.
- Response language setting: Council and advisor model outputs can be pinned to one of 17 languages via Settings → General → Response Language. Title generation and internal search queries stay in English.
- Sidebar run summaries: After a titled council or advisor run completes, the sidebar shows a compact line (rounds, critique mode, auto-converge, advisor personas, consensus, search). Sidebar search matches this line.
- Sidebar conversation cost: Each sidebar card shows a cumulative cost pill (sum of all assistant run costs in the thread, including follow-ups).
- Release process documentation: Added
docs/RELEASE.mdand AGENTS guidance so future maintainers and AI agents create both annotated Git tags and GitHub Releases for public versions.
Changed
- Settings auto-save: All Settings sections now save automatically (debounced). The Save Changes button was removed; API keys still save on successful test.
- Global provider toggles:
enabled_providersanddirect_provider_togglesnow apply to all model pickers — Council Setup, Advisor Setup, and Settings. Previously they only affected council model pickers in Settings. - Simplified Settings → Council Config: Removed council member/chairman model selection, "I'm Feeling Lucky" randomizer, "Show free OpenRouter models only" filter, and related validation from Settings. Model composition is now managed exclusively via the welcome-screen Council Setup. Settings retains provider toggles (now global) and all three temperature sliders (Council Heat, Peer Ranking Heat, Chairman Heat).
- Provider toggle restructure: Local (Ollama) is now standalone at the top; all remote providers (OpenRouter, Groq, Custom, Direct Connections) are grouped under a single "Remote APIs" master toggle.
- Stage 2 Heat moved: The Peer Ranking temperature slider moved from Council System Prompts (Stage 2 tab) into the Council Config temperature section alongside the other sliders.
- Sidebar timestamps: Conversation cards show date and time on separate lines (respects your date format setting).
The AI Counsel v0.8.1
Added
- Advisor live-progress and reconnect UX: Advisor runs now publish active round/order/completion state through
/api/conversations/{id}/progress, and the frontend can reconstruct in-flight advisor runs when navigating away and back. - Cost token split in the UI and docs: Run-cost panels now surface total, input, and output token counts separately for council and advisor runs, with reasoning tokens preserved in call details and billed as output where providers report them that way.
- Council-vs-Advisors guidance: User and agent docs now clarify that Council is best for direct answers and synthesis, while Advisors are best for tradeoffs, risk reviews, strategy, ethics, prioritization, and real disagreement.
Changed
- Landing page mode guidance: The front page now explains when to use Council versus Advisors with concrete examples, reducing accidental advisor debates for simple answer prompts.
- Release version alignment: Backend package metadata, frontend package metadata, lockfile metadata, sidebar version, skill frontmatter, and changelog are aligned for this release.
Fixed
- Provider temperature restrictions: Direct OpenAI, Anthropic, OpenRouter, and custom OpenAI-compatible calls now omit temperature for models that only accept provider defaults, preventing preflight failures such as unsupported
temperature: 0or deprecated temperature parameters. - Advisor word-limit handling: Advisor responses that exceed the word-count guidance are now kept and surfaced with a warning instead of being treated as failed model responses.
- Hidden reasoning cleanup: Council Stage 1, Stage 2, Stage 3, title generation, and search-query generation strip
<think>blocks from visible/stored content so reasoning markup does not leak into conversation titles or final answers. - Stage 2 detail matrix overflow: Wide peer-review matrices now use horizontal scrolling with a sticky rater column so larger councils are not visually truncated.
- Conversation mode tagging: Conversation history now normalizes/repairs Council vs Advisor modes so sidebar badges consistently render
CNCandADVwith the intended color coding. - Custom endpoint OpenCode free-detection now requires the official host: A user who names a custom endpoint "opencode" but points it elsewhere was being silently zero-cost. The free heuristic now matches
opencode.aisubstring insideendpoint_urlonly — never the configured name or model text. (1B from v0.8.0 review.) - OpenCode provider request robustness:
query()now sendsstream: False, asserts the response isapplication/jsonbefore parsing, retries 429/timeout/remote-protocol errors with exponential backoff (MAX_RETRIES=2, initial delay 1s), and rejects embed/audio/tts model IDs up-front with a clear error (no HTTP call). Matches openrouter/ollama retry behavior. (R2/R3/R4.) - Pricing catalog failure-throttle is now race-free:
_get_pricing_catalogresets its failure timestamp on a successful refresh so a transient outage doesn't lock the cache for the full throttle window. The_catalog_failure_until = 0.0reset runs inside the catalog lock. (R1.) - Stage 3 chairman errors are now cost-tracked: The outer
exceptbranch instage3_synthesize_finalnow callsattach_cost, so chairman failures appear in the run'scost_reportwithcost_status: "unknown"instead of vanishing from the spend summary. (R6.) - MCP cost-aggregation is now shape-tolerant:
the_ai_counsel_mcp.tools.deliberation._combine_cost_reportis now a thin wrapper around the new sharedbackend.costs.summarize_buffered_stageshelper. The helper walks the four buffered stage shapes (council stage 1/2/3, iterative debate, advisor debate),isinstance-guards lists and dicts at every level, and shares a single bucketing implementation with the backend. (R5 + R7.) _summarize_callsmath reuses same canonical path: Replaces ~70 lines of MCP-side bucketing duplication with a call to the samecosts.summarize_buffered_stagesfunction used in unit tests.- MCP settings docs and tool signatures are aligned:
council_settingsnow accepts and returns title/query prompts plus search tuning fields (search_provider, keyword extraction mode, result count, hybrid search, and full-content fetch count), matching the MCP docs and frontend settings.