ai-consultants 2.25.1 → 2.25.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +5 -1
- package/README.md +2 -2
- package/SKILL.md +2 -2
- package/docs/COST_RATES.md +1 -1
- package/docs/cost_rates.json +1 -1
- package/docs/releases/v2.25.2.md +53 -0
- package/package.json +1 -1
- package/scripts/config.sh +1 -1
- package/scripts/doctor.sh +22 -2
package/CLAUDE.md
CHANGED
|
@@ -6,7 +6,7 @@ AI Consultants is a multi-model AI deliberation system that queries up to 11 AI
|
|
|
6
6
|
|
|
7
7
|
**Self-Exclusion**: The invoking agent is automatically excluded from the panel to prevent self-consultation. Claude Code won't query Claude, Codex CLI won't query Codex, etc.
|
|
8
8
|
|
|
9
|
-
**Version**: 2.25.
|
|
9
|
+
**Version**: 2.25.2
|
|
10
10
|
|
|
11
11
|
## Distribution
|
|
12
12
|
|
|
@@ -801,6 +801,10 @@ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/s
|
|
|
801
801
|
|
|
802
802
|
## Changelog
|
|
803
803
|
|
|
804
|
+
### v2.25.2
|
|
805
|
+
- **`doctor`'s static ✓ was a false all-clear.** `check_cli_consultant` verifies `command -v` (installed) or key-present; neither confirms the consultant answers. So `✓ All systems healthy!` and JSON `status: "healthy"` were printed on installation state alone — a consultant with an expired key or spent quota passes every static check and fails the first real query. Surfaced concretely: static doctor called all 11 healthy; `doctor --live` showed 8/11 (Cursor usage limit, Qwen3 401, Grok bad xAI key returned as HTTP 400). Fix gates the word "healthy" on `LIVE_MODE`: a static-only clean run now prints "Static checks passed: CLIs installed, keys present … verify with doctor --live", and JSON reports `status: "static_ok"` + a new `verified: live|static` field; "healthy" now implies a live check backed it. `test_doctor.sh` asserts the invariant directly (a static-only run must never report `healthy`) rather than pinning a specific status, so it holds regardless of the test host's own consultant health. v2.18.0 added `--live` but left the default over-claiming; this closes that. `npm test` = 22 suites.
|
|
806
|
+
- **Note (not shipped, local only)**: the 3 down consultants were all credentials, not code — Grok/Qwen3 keys refreshed and Cursor disabled in the maintainer's own `~/.config`, taking the local live panel to 10/10 (Cursor off by choice). Qwen locally points at Token Plan `qwen3.8-max-preview`; the shipped default stays `qwen3.7-max`.
|
|
807
|
+
|
|
804
808
|
### v2.25.1
|
|
805
809
|
- **Six defects found by an independent review of the released v2.25.0** (Codex `gpt-5.6-sol`, effort high, read-only via the `sol-reviewer` profile). Five were reproduced locally by executing the shipped functions before accepting them; the bash 3.2 crash was verified by the reviewer against `/bin/bash 3.2.57`.
|
|
806
810
|
- **`calculate_final_score` scored every consultant as a dissenter.** `calculate_weighted_recommendation` emitted `_map_sanitize_key`'s output (spaces and punctuation stripped) as the winner, while `calculate_final_score` compared the raw `.response.approach` against it. Unanimous multiword panels scored 2/10, single-word panels 10/10. Voting now keeps original strings in bash 3.2-compatible indexed arrays. **The shipped voting tests used single-word approaches, which is exactly why this survived every prior review** — when writing a voting fixture, use a realistic multiword approach.
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# AI Consultants v2.25.
|
|
1
|
+
# AI Consultants v2.25.2
|
|
2
2
|
|
|
3
3
|
> **A harness for every question.** A panel of up to 11 frontier models that writes its own playbook per question — fan out, debate to convergence, cross-examine under adversarial review, or run a tournament — and checks its work before it reaches you.
|
|
4
4
|
|
|
5
|
-
[](https://github.com/matteoscurati/ai-consultants)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://docs.anthropic.com/en/docs/claude-code/skills)
|
|
8
8
|
[](https://github.com/matteoscurati/ai-consultants)
|
package/SKILL.md
CHANGED
|
@@ -5,10 +5,10 @@ license: MIT
|
|
|
5
5
|
compatibility: Requires bash, jq, and at least 2 AI CLI tools (agy, codex, vibe, etc.). macOS and Linux.
|
|
6
6
|
metadata:
|
|
7
7
|
author: matteoscurati
|
|
8
|
-
version: 2.25.
|
|
8
|
+
version: 2.25.2
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
# AI Consultants v2.25.
|
|
11
|
+
# AI Consultants v2.25.2 - AI Expert Panel
|
|
12
12
|
|
|
13
13
|
**A harness for every question.** Convene a panel of AI "consultants" for coding questions — and let the engine pick *how* they deliberate: a quick read, a convergence loop, an adversarial refutation gate, a tournament, or an exhaustive sweep. Each consultant has a **configurable persona** that shapes its analysis.
|
|
14
14
|
|
package/docs/COST_RATES.md
CHANGED
package/docs/cost_rates.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2.25.
|
|
2
|
+
"version": "2.25.2",
|
|
3
3
|
"updated": "2026-07-16",
|
|
4
4
|
"models": {
|
|
5
5
|
"_comment_units": "All rates are USD per 1,000 tokens (per-1K). lib/costs.sh computes cost as (token_count / 1000) * rate, so every value here MUST be a per-1K rate = (provider $/1M price) / 1000. Do NOT paste $/MTok figures directly.",
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Release v2.25.2
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-07-22
|
|
4
|
+
**Type:** Patch — `doctor` stops reporting health it hasn't verified
|
|
5
|
+
**Previous:** v2.25.1
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- `doctor` no longer prints "All systems healthy!" when it has only checked that CLIs are installed and keys are present.
|
|
10
|
+
- "healthy" is now reserved for `doctor --live`, which sends a real query.
|
|
11
|
+
- `--json` gains a `verified` field and a `static_ok` status so tooling can tell a real all-clear from an unverified one.
|
|
12
|
+
|
|
13
|
+
## What's New
|
|
14
|
+
|
|
15
|
+
### The static all-clear was false
|
|
16
|
+
|
|
17
|
+
The default `doctor` confirms a consultant's CLI is installed and its key is present. Neither means the consultant can actually answer — a consultant with an expired key or an exhausted quota passes every static check and fails on the first real query.
|
|
18
|
+
|
|
19
|
+
Measured on a real machine: static `doctor` reported all 11 consultants healthy, while `doctor --live` showed **8 of 11 actually respond** (the other three had a usage limit or a bad key). The static "healthy" gave a false all-clear.
|
|
20
|
+
|
|
21
|
+
Now:
|
|
22
|
+
|
|
23
|
+
- A clean static run prints, instead of "All systems healthy!":
|
|
24
|
+
> `✓ Static checks passed: CLIs installed, keys present.`
|
|
25
|
+
> `This does NOT confirm consultants can answer — verify with: doctor --live`
|
|
26
|
+
- The word **"healthy" is reserved for a `--live` run** that pinged the consultants for real.
|
|
27
|
+
- `--json` reports `status: "static_ok"` for a clean static run and gains a `verified: "live" | "static"` field. `status: "healthy"` now implies a live check backed it.
|
|
28
|
+
|
|
29
|
+
`--live` is unchanged, and a plain `doctor` still makes no billed calls.
|
|
30
|
+
|
|
31
|
+
## Breaking Changes
|
|
32
|
+
|
|
33
|
+
None in behavior. One output-contract change worth noting for tooling: a clean **static** `doctor --json` now returns `status: "static_ok"` (with `verified: "static"`) instead of `"healthy"`. Consumers that checked for exactly `"healthy"` on a static run should accept `static_ok`, or run `--live` to get `"healthy"`.
|
|
34
|
+
|
|
35
|
+
## Upgrade Guide
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# If installed via git clone
|
|
39
|
+
cd ~/.claude/skills/ai-consultants && git pull
|
|
40
|
+
|
|
41
|
+
# If installed via curl | bash
|
|
42
|
+
curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
No configuration changes required. To verify your consultants actually respond, run `ai-consultants doctor --live`.
|
|
46
|
+
|
|
47
|
+
## Verification
|
|
48
|
+
|
|
49
|
+
`npm test` = 22 suites. `test_doctor.sh` asserts the invariant that a static-only run never reports `healthy`.
|
|
50
|
+
|
|
51
|
+
## Contributors
|
|
52
|
+
|
|
53
|
+
- @matteoscurati
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-consultants",
|
|
3
|
-
"version": "2.25.
|
|
3
|
+
"version": "2.25.2",
|
|
4
4
|
"description": "A harness for every question - a panel of up to 11 AI models that picks its own deliberation strategy per question (convergence, adversarial verification, tournament) and checks its work before answering",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ai-consultants": "bin/ai-consultants"
|
package/scripts/config.sh
CHANGED
package/scripts/doctor.sh
CHANGED
|
@@ -637,10 +637,18 @@ print_summary() {
|
|
|
637
637
|
--argjson issues_list "$issues_json" \
|
|
638
638
|
--argjson warnings_list "$warnings_json" \
|
|
639
639
|
--arg version "$AI_CONSULTANTS_VERSION" \
|
|
640
|
+
--arg verified "$([[ "$LIVE_MODE" == "true" ]] && echo live || echo static)" \
|
|
640
641
|
'{
|
|
641
642
|
doctor: {
|
|
642
643
|
version: $version,
|
|
643
|
-
|
|
644
|
+
# "healthy" requires a live check. Static-only cannot see an
|
|
645
|
+
# expired key or exhausted quota, so it reports "static_ok",
|
|
646
|
+
# not "healthy". `verified` says which check backs the status.
|
|
647
|
+
status: (if $issues > 0 then "unhealthy"
|
|
648
|
+
elif $warnings > 0 then "degraded"
|
|
649
|
+
elif $verified == "live" then "healthy"
|
|
650
|
+
else "static_ok" end),
|
|
651
|
+
verified: $verified,
|
|
644
652
|
checks: {
|
|
645
653
|
total: $total,
|
|
646
654
|
passed: $passed,
|
|
@@ -686,10 +694,22 @@ print_summary() {
|
|
|
686
694
|
fi
|
|
687
695
|
|
|
688
696
|
if [[ ${#ISSUES[@]} -eq 0 && ${#WARNINGS[@]} -eq 0 ]]; then
|
|
689
|
-
|
|
697
|
+
# Do NOT claim "healthy" on static checks alone: they confirm a CLI is
|
|
698
|
+
# installed and a key is present, NOT that a consultant can actually
|
|
699
|
+
# answer. A consultant with an expired key or exhausted quota passes
|
|
700
|
+
# every static check and fails on the first real query. Only --live,
|
|
701
|
+
# which sends a real ping, earns the word "healthy".
|
|
702
|
+
if [[ "$LIVE_MODE" == "true" ]]; then
|
|
703
|
+
echo " ✓ All checks passed — consultants verified responding (live)."
|
|
704
|
+
else
|
|
705
|
+
echo " ✓ Static checks passed: CLIs installed, keys present."
|
|
706
|
+
echo " This does NOT confirm consultants can answer — an expired key or"
|
|
707
|
+
echo " used-up quota passes every static check. Verify with: doctor --live"
|
|
708
|
+
fi
|
|
690
709
|
echo ""
|
|
691
710
|
elif [[ ${#ISSUES[@]} -eq 0 ]]; then
|
|
692
711
|
echo " △ System operational with warnings"
|
|
712
|
+
[[ "$LIVE_MODE" != "true" ]] && echo " (static only — run 'doctor --live' to confirm consultants answer)"
|
|
693
713
|
echo ""
|
|
694
714
|
else
|
|
695
715
|
echo " ✗ Issues found - run with --fix to attempt auto-repair"
|