ai-consultants 2.10.4 → 2.10.5

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 CHANGED
@@ -6,7 +6,7 @@ AI Consultants is a multi-model AI deliberation system that queries up to 15 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.10.4
9
+ **Version**: 2.10.5
10
10
 
11
11
  ## Distribution
12
12
 
@@ -459,7 +459,7 @@ All consultants now use premium models by default:
459
459
  | DeepSeek | deepseek-reasoner |
460
460
  | GLM | glm-5.1 |
461
461
  | Grok | grok-4.20-0309-reasoning |
462
- | Qwen3 | qwen3.5-plus |
462
+ | Qwen3 | qwen3.6-plus |
463
463
  | Kimi | kimi-code/kimi-for-coding |
464
464
  | Aider | gpt-5.3-codex |
465
465
  | MiniMax | MiniMax-M2.7 |
@@ -802,6 +802,13 @@ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/s
802
802
 
803
803
  ## Changelog
804
804
 
805
+ ### v2.10.5
806
+ - Qwen3 premium model upgraded from `qwen3.5-plus` to `qwen3.6-plus` ($0.325/$1.95 per M tokens)
807
+ - Qwen3 standard tier now uses open-weight `qwen3.6-35b-a3b` (MoE, 35B total / 3B active)
808
+ - Refactored `get_economic_model()` to delegate to `get_model_for_tier()`, eliminating stale hardcoded mappings
809
+ - Moved `qwen3.5-plus` to legacy section in cost catalog
810
+ - Fixed `AI_CONSULTANTS_VERSION` in `config.sh` (was stuck at `2.10.0`)
811
+
805
812
  ### v2.10.4
806
813
  - GLM premium/standard model upgraded from `glm-5` to `glm-5.1`
807
814
  - Fixed Kilo CLI hanging indefinitely in non-TTY mode (query via stdin instead of CLI argument)
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # AI Consultants v2.10.4
1
+ # AI Consultants v2.10.5
2
2
 
3
3
  > Query multiple AI models simultaneously for expert opinions on coding questions. Get diverse perspectives, automatic synthesis, confidence-weighted recommendations, and multi-agent debate.
4
4
 
5
- [![Version](https://img.shields.io/badge/version-2.10.4-blue.svg)](https://github.com/matteoscurati/ai-consultants)
5
+ [![Version](https://img.shields.io/badge/version-2.10.5-blue.svg)](https://github.com/matteoscurati/ai-consultants)
6
6
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
7
7
  [![Claude Code Skill](https://img.shields.io/badge/Claude%20Code-Skill-orange.svg)](https://docs.anthropic.com/en/docs/claude-code/skills)
8
8
  [![GitHub stars](https://img.shields.io/github/stars/matteoscurati/ai-consultants?style=social)](https://github.com/matteoscurati/ai-consultants)
@@ -419,7 +419,7 @@ INVOKING_AGENT=codex ./scripts/consult_all.sh "Question" # Codex excluded
419
419
 
420
420
  | Consultant | Default Model | Persona | Focus |
421
421
  |------------|---------------|---------|-------|
422
- | **Qwen3** | qwen3.5-plus | The Analyst | Data-driven analysis |
422
+ | **Qwen3** | qwen3.6-plus | The Analyst | Data-driven analysis |
423
423
  | **GLM** | glm-5.1 | The Methodologist | Structured approaches |
424
424
  | **Grok** | grok-4.20-0309-reasoning | The Provocateur | Challenge conventions |
425
425
  | **DeepSeek** | deepseek-reasoner | The Code Specialist | Algorithms, code generation |
@@ -479,7 +479,7 @@ Choose the right balance of quality, speed, and cost with model quality tiers.
479
479
  | DeepSeek | deepseek-reasoner | deepseek-v3.2 | deepseek-chat |
480
480
  | GLM | glm-5.1 | glm-5.1 | glm-4-flash |
481
481
  | Grok | grok-4.20-0309-reasoning | grok-3 | grok-3-mini |
482
- | Qwen3 | qwen3.5-plus | qwen3.5-plus | qwen3-32b |
482
+ | Qwen3 | qwen3.6-plus | qwen3.6-35b-a3b | qwen3-32b |
483
483
  | Aider | gpt-5.3-codex | gpt-5.3 | gpt-4o-mini |
484
484
  | MiniMax | MiniMax-M2.7 | MiniMax-M2.7 | MiniMax-M2.5 |
485
485
  | Ollama | qwen2.5-coder:32b | llama3.3 | llama3.2 |
package/SKILL.md CHANGED
@@ -5,10 +5,10 @@ license: MIT
5
5
  compatibility: Requires bash, jq, and at least 2 AI CLI tools (gemini, codex, vibe, etc.). macOS and Linux.
6
6
  metadata:
7
7
  author: matteoscurati
8
- version: 2.10.4
8
+ version: 2.10.5
9
9
  ---
10
10
 
11
- # AI Consultants v2.10.4 - AI Expert Panel
11
+ # AI Consultants v2.10.5 - AI Expert Panel
12
12
 
13
13
  Simultaneously consult multiple AIs as "consultants" for coding questions. Each consultant has a **configurable persona** that influences their response style.
14
14
 
@@ -1,4 +1,4 @@
1
- # Cost Rates - AI Consultants v2.10.4
1
+ # Cost Rates - AI Consultants v2.10.5
2
2
 
3
3
  This page documents the per-token rates used by the cost tracking system.
4
4
 
@@ -39,7 +39,8 @@ Since v2.5, models are organized into three tiers. Use `apply_model_tier()` or `
39
39
  | grok-4.20-0309-reasoning | Premium | $0.005 | Grok |
40
40
  | grok-3 | Standard | $0.003 | Grok |
41
41
  | grok-3-mini | Economy | $0.001 | Grok |
42
- | qwen3.5-plus | Premium/Standard | $0.002 | Qwen3 |
42
+ | qwen3.6-plus | Premium | $0.000325 | Qwen3 |
43
+ | qwen3.6-35b-a3b | Standard | $0.000163 | Qwen3 |
43
44
  | qwen3-32b | Economy | $0.0005 | Qwen3 |
44
45
  | MiniMax-M2.7 | Premium/Standard | $0.002 | MiniMax |
45
46
  | MiniMax-M2.5 | Economy | $0.0015 | MiniMax |
@@ -72,7 +73,8 @@ Since v2.5, models are organized into three tiers. Use `apply_model_tier()` or `
72
73
  | grok-4.20-0309-reasoning | Premium | $0.015 | Grok |
73
74
  | grok-3 | Standard | $0.009 | Grok |
74
75
  | grok-3-mini | Economy | $0.003 | Grok |
75
- | qwen3.5-plus | Premium/Standard | $0.006 | Qwen3 |
76
+ | qwen3.6-plus | Premium | $0.00195 | Qwen3 |
77
+ | qwen3.6-35b-a3b | Standard | $0.0009 | Qwen3 |
76
78
  | qwen3-32b | Economy | $0.0015 | Qwen3 |
77
79
  | MiniMax-M2.7 | Premium/Standard | $0.006 | MiniMax |
78
80
  | MiniMax-M2.5 | Economy | $0.004 | MiniMax |
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.10.4",
2
+ "version": "2.10.5",
3
3
  "updated": "2026-03-04",
4
4
  "models": {
5
5
  "_comment_premium": "Premium tier models - March 2026",
@@ -10,7 +10,8 @@
10
10
  "deepseek-reasoner": {"input": 0.55, "output": 2.19},
11
11
  "glm-5.1": {"input": 0.50, "output": 2.00},
12
12
  "grok-4.20-0309-reasoning": {"input": 5.00, "output": 15.00},
13
- "qwen3.5-plus": {"input": 1.60, "output": 6.40},
13
+ "qwen3.6-plus": {"input": 0.325, "output": 1.95},
14
+ "qwen3.6-35b-a3b": {"input": 0.163, "output": 0.90},
14
15
  "composer-1.5": {"input": 0.005, "output": 0.015},
15
16
  "minimax-m2.7": {"input": 0.50, "output": 2.00},
16
17
  "kimi-code/kimi-for-coding": {"input": 0.50, "output": 2.00},
@@ -36,6 +37,7 @@
36
37
  "minimax-m2.5": {"input": 0.30, "output": 1.50},
37
38
 
38
39
  "_comment_legacy": "Legacy models for backwards compatibility",
40
+ "qwen3.5-plus": {"input": 1.60, "output": 6.40},
39
41
  "claude-opus-4-5-20251124": {"input": 5.00, "output": 25.00},
40
42
  "claude-sonnet-4-5-20251124": {"input": 3.00, "output": 15.00},
41
43
  "claude-3-5-haiku-20241022": {"input": 0.001, "output": 0.005},
@@ -75,7 +77,7 @@
75
77
  "deepseek": "deepseek-reasoner",
76
78
  "glm": "glm-5.1",
77
79
  "grok": "grok-4.20-0309-reasoning",
78
- "qwen3": "qwen3.5-plus",
80
+ "qwen3": "qwen3.6-plus",
79
81
  "aider": "gpt-5.3-codex",
80
82
  "kilo": "auto",
81
83
  "cursor": "composer-1.5",
@@ -94,7 +96,7 @@
94
96
  "deepseek": "deepseek-reasoner",
95
97
  "glm": "glm-5.1",
96
98
  "grok": "grok-4.20-0309-reasoning",
97
- "qwen3": "qwen3.5-plus",
99
+ "qwen3": "qwen3.6-plus",
98
100
  "aider": "gpt-5.3-codex",
99
101
  "kilo": "auto",
100
102
  "cursor": "composer-1.5",
@@ -111,7 +113,7 @@
111
113
  "deepseek": "deepseek-v3.2",
112
114
  "glm": "glm-5.1",
113
115
  "grok": "grok-3",
114
- "qwen3": "qwen3.5-plus",
116
+ "qwen3": "qwen3.6-35b-a3b",
115
117
  "aider": "gpt-5.3",
116
118
  "kilo": "auto",
117
119
  "cursor": "composer-1.5",
@@ -0,0 +1,57 @@
1
+ # Release v2.10.5
2
+
3
+ **Date:** 2026-04-16
4
+ **Type:** Patch — Qwen3 model upgrade to Qwen3.6
5
+ **Previous:** v2.10.4
6
+
7
+ ## Highlights
8
+
9
+ - Qwen3 premium default upgraded from `qwen3.5-plus` to `qwen3.6-plus` (80% cheaper)
10
+ - Qwen3 standard tier now uses the open-weight `qwen3.6-35b-a3b` (MoE, 35B total / 3B active, Apache 2.0)
11
+ - Eliminated stale hardcoded model mappings in `get_economic_model()`
12
+
13
+ ## What's New
14
+
15
+ ### Qwen3.6 Model Upgrade
16
+
17
+ Alibaba released Qwen3.6-35B-A3B on April 16, 2026 — a sparse Mixture-of-Experts model with 35B total parameters but only 3B active during inference. The model scores 51.5 on Terminal-Bench 2.0 and 73.4 on SWE-bench Verified.
18
+
19
+ | Tier | Before (v2.10.4) | After (v2.10.5) |
20
+ |------|-------------------|------------------|
21
+ | Premium | qwen3.5-plus ($1.60/$6.40 per M) | qwen3.6-plus ($0.325/$1.95 per M) |
22
+ | Standard | qwen3.5-plus ($1.60/$6.40 per M) | qwen3.6-35b-a3b ($0.163/$0.90 per M) |
23
+ | Economy | qwen3-32b | qwen3-32b (unchanged) |
24
+
25
+ The premium tier (`qwen3.6-plus`) is Alibaba's hosted API with 1M context window. The standard tier (`qwen3.6-35b-a3b`) is the open-weight variant, also available on Ollama as `qwen3.6:35b-a3b` (24GB).
26
+
27
+ ### DRY Refactor: get_economic_model()
28
+
29
+ `get_economic_model()` in `lib/costs.sh` had a hardcoded case statement with stale model names (e.g., `qwen-turbo`, `claude-3-haiku`, `gemini-2.5-flash`). Refactored to delegate to `get_model_for_tier()` in `config.sh`, matching the pattern already used by `get_premium_model()` in `lib/routing.sh`.
30
+
31
+ ### Version Fix
32
+
33
+ Fixed `AI_CONSULTANTS_VERSION` in `config.sh` which was stuck at `2.10.0` since the npm packaging release.
34
+
35
+ ## Breaking Changes
36
+
37
+ None.
38
+
39
+ ## Upgrade Guide
40
+
41
+ ```bash
42
+ # If installed via git clone
43
+ cd ~/.claude/skills/ai-consultants && git pull
44
+
45
+ # If installed via curl | bash
46
+ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
47
+ ```
48
+
49
+ No configuration changes required. Existing `QWEN3_MODEL` overrides continue to work.
50
+
51
+ ## Commits
52
+
53
+ - `aaa1d69` feat(qwen3): upgrade to Qwen3.6-Plus and Qwen3.6-35B-A3B
54
+
55
+ ## Contributors
56
+
57
+ - @matteoscurati
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-consultants",
3
- "version": "2.10.4",
3
+ "version": "2.10.5",
4
4
  "description": "Multi-model AI deliberation system - query up to 15 AI consultants for coding problems",
5
5
  "bin": {
6
6
  "ai-consultants": "bin/ai-consultants"
@@ -79,7 +79,7 @@ CURSOR_MODEL=composer-1.5
79
79
  AIDER_MODEL=gpt-5.3-codex
80
80
  AMP_MODEL=amp
81
81
  KIMI_MODEL=kimi-code/kimi-for-coding
82
- QWEN3_MODEL=qwen3.5-plus
82
+ QWEN3_MODEL=qwen3.6-plus
83
83
  GLM_MODEL=glm-5.1
84
84
  GROK_MODEL=grok-4.20-0309-reasoning
85
85
  DEEPSEEK_MODEL=deepseek-reasoner
package/scripts/config.sh CHANGED
@@ -105,7 +105,7 @@ AIDER_CMD="${AIDER_CMD:-aider}"
105
105
  # QWEN3 CONFIGURATION - The Analyst (CLI/API switchable v2.7)
106
106
  # =============================================================================
107
107
 
108
- QWEN3_MODEL="${QWEN3_MODEL:-qwen3.5-plus}"
108
+ QWEN3_MODEL="${QWEN3_MODEL:-qwen3.6-plus}"
109
109
  QWEN3_TIMEOUT_SECONDS="${QWEN3_TIMEOUT:-180}"
110
110
  QWEN3_CMD="${QWEN3_CMD:-qwen}"
111
111
  QWEN3_API_URL="${QWEN3_API_URL:-https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation}"
@@ -533,7 +533,7 @@ get_model_for_tier() {
533
533
  deepseek) echo "deepseek-reasoner" ;;
534
534
  glm) echo "glm-5.1" ;;
535
535
  grok) echo "grok-4.20-0309-reasoning" ;;
536
- qwen3) echo "qwen3.5-plus" ;;
536
+ qwen3) echo "qwen3.6-plus" ;;
537
537
  aider) echo "gpt-5.3-codex" ;;
538
538
  amp) echo "amp" ;;
539
539
  ollama) echo "qwen2.5-coder:32b" ;;
@@ -553,7 +553,7 @@ get_model_for_tier() {
553
553
  deepseek) echo "deepseek-v3.2" ;;
554
554
  glm) echo "glm-5.1" ;; # Same as premium (no mid-tier GLM)
555
555
  grok) echo "grok-3" ;;
556
- qwen3) echo "qwen3.5-plus" ;; # Same as premium (single tier available)
556
+ qwen3) echo "qwen3.6-35b-a3b" ;; # Open-weight MoE (35B total, 3B active)
557
557
  aider) echo "gpt-5.3" ;;
558
558
  amp) echo "amp" ;; # Same model (no tiers)
559
559
  ollama) echo "llama3.3" ;;
@@ -750,4 +750,4 @@ EOF
750
750
  # VERSION
751
751
  # =============================================================================
752
752
 
753
- AI_CONSULTANTS_VERSION="2.10.0"
753
+ AI_CONSULTANTS_VERSION="2.10.5"
@@ -124,12 +124,12 @@ run_with_timeout() {
124
124
  # =============================================================================
125
125
 
126
126
  check_command() {
127
- local cmd=$1
127
+ local cmd_name=$1
128
128
  local name=$2
129
129
  local install_hint=$3
130
130
 
131
- if ! command -v "$cmd" &> /dev/null; then
132
- log_error "$name not found (command: $cmd)"
131
+ if ! command -v "$cmd_name" &> /dev/null; then
132
+ log_error "$name not found (command: $cmd_name)"
133
133
  if [[ -n "$install_hint" ]]; then
134
134
  log_info "Install with: $install_hint"
135
135
  fi
@@ -612,7 +612,7 @@ map_set() {
612
612
  local keys_var="_MAP_${map_name}__KEYS__"
613
613
  local current_keys
614
614
  eval "current_keys=\"\${$keys_var:-}\""
615
- if [[ ! " $current_keys " =~ " $safe_key " ]]; then
615
+ if [[ " $current_keys " != *" $safe_key "* ]]; then
616
616
  if [[ -z "$current_keys" ]]; then
617
617
  eval "$keys_var=\"\$safe_key\""
618
618
  else
@@ -476,26 +476,15 @@ get_model_tier() {
476
476
  }
477
477
 
478
478
  # Get economic model for a consultant
479
+ # Delegates to get_model_for_tier() in config.sh (single source of truth)
479
480
  # Usage: get_economic_model <consultant>
480
481
  get_economic_model() {
481
482
  local consultant="$1"
482
- consultant=$(echo "$consultant" | tr '[:upper:]' '[:lower:]')
483
-
484
- case "$consultant" in
485
- gemini) echo "gemini-2.5-flash" ;;
486
- codex) echo "gpt-4o-mini" ;;
487
- mistral) echo "mistral-small" ;;
488
- kilo) echo "kilo" ;; # No economy variant
489
- cursor) echo "cursor" ;; # No economy variant
490
- claude) echo "claude-3-haiku" ;;
491
- qwen3) echo "qwen-turbo" ;;
492
- glm) echo "glm-3-turbo" ;;
493
- grok) echo "grok-3-mini" ;;
494
- deepseek) echo "deepseek-chat" ;;
495
-
496
- minimax) echo "MiniMax-M2.5" ;;
497
- *) echo "" ;;
498
- esac
483
+ if type get_model_for_tier &>/dev/null; then
484
+ get_model_for_tier "$consultant" "economy"
485
+ else
486
+ echo ""
487
+ fi
499
488
  }
500
489
 
501
490
  # Calculate query complexity score (1-10)
@@ -257,13 +257,15 @@ get_selected_consultants_json() {
257
257
  local category="$1"
258
258
  local min_affinity="${2:-7}"
259
259
 
260
- local consultants=$(select_consultants "$category" "$min_affinity")
260
+ local consultants
261
+ consultants=$(select_consultants "$category" "$min_affinity")
261
262
  local json="["
262
263
  local first=true
263
264
 
264
265
  while IFS= read -r c; do
265
266
  if [[ -n "$c" ]]; then
266
- local score=$(get_affinity "$category" "$c")
267
+ local score
268
+ score=$(get_affinity "$category" "$c")
267
269
  if [[ "$first" == "true" ]]; then
268
270
  first=false
269
271
  else
@@ -4,7 +4,7 @@
4
4
  # Usage: ./query_qwen3.sh "question" [context_file] [output_file]
5
5
  #
6
6
  # Environment variables:
7
- # QWEN3_MODEL - Model to use (default: qwen3.5-plus)
7
+ # QWEN3_MODEL - Model to use (default: qwen3.6-plus)
8
8
  # QWEN3_TIMEOUT - Timeout in seconds (default: 180)
9
9
  # QWEN3_USE_API - Use API mode instead of CLI (default: false)
10
10
  # QWEN3_API_KEY - API key for DashScope API (required for API mode)
@@ -82,7 +82,7 @@ END_TIME=$(get_timestamp_ms)
82
82
  LATENCY_MS=$((END_TIME - START_TIME))
83
83
 
84
84
  # --- Configuration for response building ---
85
- MODEL_USED="${QWEN3_MODEL:-qwen3.5-plus}"
85
+ MODEL_USED="${QWEN3_MODEL:-qwen3.6-plus}"
86
86
  PERSONA_NAME=$(get_persona_name "$CONSULTANT_NAME")
87
87
 
88
88
  # --- Post-processing: use shared helper ---
@@ -1086,9 +1086,9 @@ test_model_tiers() {
1086
1086
  test_economic_models() {
1087
1087
  suite "costs.sh: get_economic_model"
1088
1088
 
1089
- assert_equals "gemini-2.5-flash" "$(get_economic_model "gemini")" "gemini economy is gemini-2.5-flash"
1089
+ assert_equals "gemini-2.0-flash" "$(get_economic_model "gemini")" "gemini economy is gemini-2.0-flash"
1090
1090
  assert_equals "gpt-4o-mini" "$(get_economic_model "codex")" "codex economy is gpt-4o-mini"
1091
- assert_equals "claude-3-haiku" "$(get_economic_model "claude")" "claude economy is claude-3-haiku"
1091
+ assert_equals "haiku-4.5" "$(get_economic_model "claude")" "claude economy is haiku-4.5"
1092
1092
  assert_equals "MiniMax-M2.5" "$(get_economic_model "minimax")" "minimax economy is MiniMax-M2.5"
1093
1093
  assert_equals "" "$(get_economic_model "unknown")" "unknown consultant returns empty"
1094
1094
  }