Skip to content

The AI Counsel v0.8.1

Choose a tag to compare

@jacob-bd jacob-bd released this 02 Jun 21:41
· 52 commits to main since this release

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: 0 or 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 CNC and ADV with 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.ai substring inside endpoint_url only — never the configured name or model text. (1B from v0.8.0 review.)
  • OpenCode provider request robustness: query() now sends stream: False, asserts the response is application/json before 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_catalog resets 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.0 reset runs inside the catalog lock. (R1.)
  • Stage 3 chairman errors are now cost-tracked: The outer except branch in stage3_synthesize_final now calls attach_cost, so chairman failures appear in the run's cost_report with cost_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_report is now a thin wrapper around the new shared backend.costs.summarize_buffered_stages helper. 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_calls math reuses same canonical path: Replaces ~70 lines of MCP-side bucketing duplication with a call to the same costs.summarize_buffered_stages function used in unit tests.
  • MCP settings docs and tool signatures are aligned: council_settings now 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.