|
| 1 | +# CHANGELOG |
| 2 | + |
| 3 | + |
| 4 | +## v0.1.0 (2026-03-02) |
| 5 | + |
| 6 | +### Bug Fixes |
| 7 | + |
| 8 | +- Exclude audio/realtime models from tier classification + fix google genai import |
| 9 | + ([`b1b5522`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/b1b55220f3ae10fbbe238fe86526dcba912fc44a)) |
| 10 | + |
| 11 | +- OpenAI tier regex now requires version-like pattern (gpt-N.N) instead of matching any gpt-* |
| 12 | + prefix. This prevents gpt-audio-2025-08-28 from being classified as "flagship" due to its date |
| 13 | + sorting higher than 5.2. - Google model listing now uses google.genai (new SDK) instead of the |
| 14 | + deprecated google.generativeai which lacks Client(). - Added tests for audio/realtime model |
| 15 | + exclusion. |
| 16 | + |
| 17 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 18 | + |
| 19 | +- Handle date-suffixed model IDs from provider APIs |
| 20 | + ([`24d68dc`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/24d68dc0bef17b0703283e329cc30fdc110e5840)) |
| 21 | + |
| 22 | +get_default_models() now returns "provider/model_id" format so parse_model_string() can resolve any |
| 23 | + model ID returned by the API (e.g. claude-opus-4-20250514). Also adds pattern-based provider |
| 24 | + inference as a safety net for bare model IDs. |
| 25 | + |
| 26 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 27 | + |
| 28 | +- Migrate Google provider from deprecated google-generativeai to google-genai |
| 29 | + ([`e3619ad`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/e3619add62364ffe0b9a98b3d464ef83ed7f5478)) |
| 30 | + |
| 31 | +Replaces the deprecated `google.generativeai` SDK with the new `google-genai` SDK (`from google |
| 32 | + import genai`). Uses the unified `Client` API for model queries. Eliminates the FutureWarning |
| 33 | + about the deprecated package. |
| 34 | + |
| 35 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 36 | + |
| 37 | +- Update URLs from abrichr/consilium to OpenAdaptAI/openadapt-consilium |
| 38 | + ([#2](https://github.com/OpenAdaptAI/openadapt-consilium/pull/2), |
| 39 | + [`73b6474`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/73b647475b7fc2ed00f523c0c9983fa2f7bcc373)) |
| 40 | + |
| 41 | +The repo was renamed from abrichr/consilium to OpenAdaptAI/openadapt-consilium. Update all 3 |
| 42 | + install/clone URLs in README.md to point to the correct location. |
| 43 | + |
| 44 | +Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
| 45 | + |
| 46 | +- Version extraction for hyphen-separated model IDs + stale references |
| 47 | + ([`2787905`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/278790563b686c8e0461c0ad34944d2ce9d4d376)) |
| 48 | + |
| 49 | +- Fix _extract_version_tuple regex to handle hyphen-separated versions (e.g. claude-opus-4-6 now |
| 50 | + correctly returns (4, 6) instead of (4,)) - Update all stale model references in docstrings |
| 51 | + (gpt-4.1 → gpt-5.2, claude-sonnet-4-5-20250514 → claude-sonnet-4-6) - Fix README diagram (GPT-4.1 |
| 52 | + → GPT-5.2, Gemini 2.5 Pro → Gemini 3.1 Pro) - Remove duplicate entries in README model table - Add |
| 53 | + test for Claude version sorting (4-6 > 4-5) |
| 54 | + |
| 55 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 56 | + |
| 57 | +### Continuous Integration |
| 58 | + |
| 59 | +- Add release automation and CI workflows |
| 60 | + ([#3](https://github.com/OpenAdaptAI/openadapt-consilium/pull/3), |
| 61 | + [`2e5336b`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/2e5336b2af66213f453fad2d1079728ccac7faf6)) |
| 62 | + |
| 63 | +- Add test.yml workflow (lint + pytest on Python 3.10-3.12) - Add release.yml workflow |
| 64 | + (python-semantic-release + PyPI publish via OIDC) - Add semantic_release config to pyproject.toml |
| 65 | + - Add project.urls metadata - Bump version to 0.3.0 to match latest PyPI release |
| 66 | + |
| 67 | +Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
| 68 | + |
| 69 | +### Features |
| 70 | + |
| 71 | +- Add model auto-detection registry |
| 72 | + ([`218ccfa`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/218ccfa78dd180c83f63e4357e0ceea8c63f3e46)) |
| 73 | + |
| 74 | +- list_models() queries provider APIs for available models - get_latest() returns best model for a |
| 75 | + tier (flagship/fast/reasoning) - TTL-cached (1 hour) with hardcoded fallback defaults - Council |
| 76 | + auto-detects latest models when none specified |
| 77 | + |
| 78 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 79 | + |
| 80 | +- Auto-discover latest models by filtering provider API responses |
| 81 | + ([#1](https://github.com/OpenAdaptAI/openadapt-consilium/pull/1), |
| 82 | + [`e001654`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/e0016542b038355db0e3a0f99b32b376602be6a7)) |
| 83 | + |
| 84 | +* feat: auto-discover latest models by filtering provider API responses |
| 85 | + |
| 86 | +Add chat-model filtering to all three provider listers so the council automatically uses the latest |
| 87 | + models without hardcoded updates: |
| 88 | + |
| 89 | +- OpenAI: allowlist regex (gpt-/o[1-9]) + denylist keywords (embedding, tts, audio, realtime, |
| 90 | + dall-e, whisper, moderation, search) - Anthropic: filter to claude-* models only - Google: require |
| 91 | + generateContent in supported_actions + gemini in name |
| 92 | + |
| 93 | +CLI --models default is now resolved lazily via get_default_models() instead of a hardcoded list. |
| 94 | + Add pytest-timeout, live test marker, and 16 integration tests (auto-skipped without API keys). |
| 95 | + |
| 96 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 97 | + |
| 98 | +* fix: add image/transcribe to deny list, relax tier coverage test |
| 99 | + |
| 100 | +Live testing revealed gpt-image-* and gpt-*-transcribe* models leaking through the OpenAI filter. |
| 101 | + Add "image" and "transcribe" to the deny keywords. Also relax test_all_classify_into_tiers to |
| 102 | + check that major tiers (flagship, fast, reasoning) are populated rather than requiring every model |
| 103 | + to classify — legacy and date-suffixed variants may not match tier patterns. |
| 104 | + |
| 105 | +* fix: self-review — remove dead code, tighten filters, fix test fidelity |
| 106 | + |
| 107 | +- Add codex/instruct to OpenAI deny keywords (not chat-completions API) - Delete unused |
| 108 | + tests/conftest.py (skip decorators were duplicated inline in test_model_discovery_live.py, |
| 109 | + conftest copies never imported) - Rewrite test_list_google_sdk_integration to actually call |
| 110 | + _list_google through SDK mocks instead of patching the function and reimplementing its logic |
| 111 | + inline - Clean up stale stream-of-consciousness comment - Add codex/instruct assertions to filter |
| 112 | + unit tests |
| 113 | + |
| 114 | +* fix: correct misleading comment on Google mock test data |
| 115 | + |
| 116 | +text-embedding-004 has embedContent (not generateContent), so it's filtered by both the |
| 117 | + supported_actions check AND the Gemini name check. |
| 118 | + |
| 119 | +--------- |
| 120 | + |
| 121 | +Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
| 122 | + |
| 123 | +- Initial consilium library |
| 124 | + ([`4b3159c`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/4b3159c64e807693fcd4fa2853b78b75c2893f4d)) |
| 125 | + |
| 126 | +Multi-LLM council for consensus-driven AI responses. Three-stage pipeline: query all models → |
| 127 | + cross-review → synthesize. |
| 128 | + |
| 129 | +Includes: - Python API (Council class) and dict-based SDK (council_query) - CLI tool with --json, |
| 130 | + --budget, --no-review, --image options - OpenAI, Anthropic, and Google Gemini provider support - |
| 131 | + Real-time cost tracking with per-model breakdown - Budget enforcement (auto-skip review stages if |
| 132 | + over budget) - Parallel execution of model queries - 34 fully-mocked tests |
| 133 | + |
| 134 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 135 | + |
| 136 | +- Initial consilium library - 3-stage LLM council pipeline |
| 137 | + ([`51941b3`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/51941b3f9ca819945d53019effae1e70c951f361)) |
| 138 | + |
| 139 | +Three-stage pipeline for querying multiple LLMs, cross-reviewing, and synthesizing: - Stage 1: Query |
| 140 | + all models in parallel (OpenAI, Anthropic, Google) - Stage 2: Each model anonymously reviews |
| 141 | + others' responses - Stage 3: Chairman synthesizes the best answer |
| 142 | + |
| 143 | +Includes CLI, Python SDK, cost tracking, and budget enforcement. |
| 144 | + |
| 145 | +Inspired by Karpathy's llm-council. |
| 146 | + |
| 147 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 148 | + |
| 149 | +- Update to latest models (March 2026) |
| 150 | + ([`2ad217a`](https://github.com/OpenAdaptAI/openadapt-consilium/commit/2ad217a791754e79818e5ffeda8c2a6f583dc32a)) |
| 151 | + |
| 152 | +- OpenAI: gpt-5.2 (flagship), gpt-5.2-pro, gpt-5, gpt-5-mini - Anthropic: claude-opus-4-6, |
| 153 | + claude-sonnet-4-6 (Feb 2026) - Google: gemini-3.1-pro, gemini-3-flash (March 2026) - Updated |
| 154 | + pricing table and model aliases - All 34 tests passing |
| 155 | + |
| 156 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
0 commit comments