ai-consultants 2.10.3 → 2.10.4

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.3
9
+ **Version**: 2.10.4
10
10
 
11
11
  ## Distribution
12
12
 
@@ -457,7 +457,7 @@ All consultants now use premium models by default:
457
457
  | Mistral | mistral-large-3 |
458
458
  | Cursor | composer-1.5 |
459
459
  | DeepSeek | deepseek-reasoner |
460
- | GLM | glm-5 |
460
+ | GLM | glm-5.1 |
461
461
  | Grok | grok-4.20-0309-reasoning |
462
462
  | Qwen3 | qwen3.5-plus |
463
463
  | Kimi | kimi-code/kimi-for-coding |
@@ -728,6 +728,10 @@ For detailed information, see:
728
728
  - Use `.env.example` as template for environment configuration
729
729
  - Run `./scripts/doctor.sh` to verify configuration
730
730
 
731
+ ## Git Conventions
732
+
733
+ Use [Conventional Commits](https://www.conventionalcommits.org/): `feat:`, `fix:`, `chore:`, `docs:`, `refactor:`, `test:`, `perf:`, `ci:`. Scope is optional (e.g., `feat(routing): add fallback escalation`).
734
+
731
735
  ## Release Process
732
736
 
733
737
  Every version bump **must** include a release note in `docs/releases/v<VERSION>.md`. Use the template below.
@@ -798,6 +802,14 @@ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/s
798
802
 
799
803
  ## Changelog
800
804
 
805
+ ### v2.10.4
806
+ - GLM premium/standard model upgraded from `glm-5` to `glm-5.1`
807
+ - Fixed Kilo CLI hanging indefinitely in non-TTY mode (query via stdin instead of CLI argument)
808
+ - Fixed Kilo CLI picking wrong provider when other consultants' API keys were in the environment
809
+ - Collapsed 5-stage ANSI stripping pipeline into single sed invocation in `query_kilo.sh`
810
+ - Fixed overly aggressive markdown fence filter in `query_kilo.sh` (only strips standalone ``` lines now)
811
+ - Updated `.env.example` GLM signup URL to `open.z.ai`
812
+
801
813
  ### v2.10.3
802
814
  - Grok premium model upgraded to `grok-4.20-0309-reasoning` (replaces `grok-4-1-fast-reasoning`)
803
815
  - GLM API endpoint migrated from `open.bigmodel.cn` to `api.z.ai/api/coding/paas/v4`
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # AI Consultants v2.10.3
1
+ # AI Consultants v2.10.4
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.3-blue.svg)](https://github.com/matteoscurati/ai-consultants)
5
+ [![Version](https://img.shields.io/badge/version-2.10.4-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)
@@ -420,7 +420,7 @@ INVOKING_AGENT=codex ./scripts/consult_all.sh "Question" # Codex excluded
420
420
  | Consultant | Default Model | Persona | Focus |
421
421
  |------------|---------------|---------|-------|
422
422
  | **Qwen3** | qwen3.5-plus | The Analyst | Data-driven analysis |
423
- | **GLM** | glm-5 | The Methodologist | Structured approaches |
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 |
426
426
  | **MiniMax** | MiniMax-M2.7 | The Pragmatic Optimizer | Performance, efficiency, pragmatism |
@@ -477,7 +477,7 @@ Choose the right balance of quality, speed, and cost with model quality tiers.
477
477
  | Mistral | mistral-large-3 | mistral-medium-latest | devstral-small-2 |
478
478
  | Cursor | composer-1.5 | composer-1.5 | gemini-2.0-flash |
479
479
  | DeepSeek | deepseek-reasoner | deepseek-v3.2 | deepseek-chat |
480
- | GLM | glm-5 | glm-5 | glm-4-flash |
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
482
  | Qwen3 | qwen3.5-plus | qwen3.5-plus | qwen3-32b |
483
483
  | Aider | gpt-5.3-codex | gpt-5.3 | gpt-4o-mini |
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.3
8
+ version: 2.10.4
9
9
  ---
10
10
 
11
- # AI Consultants v2.10.3 - AI Expert Panel
11
+ # AI Consultants v2.10.4 - 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.3
1
+ # Cost Rates - AI Consultants v2.10.4
2
2
 
3
3
  This page documents the per-token rates used by the cost tracking system.
4
4
 
@@ -34,7 +34,7 @@ Since v2.5, models are organized into three tiers. Use `apply_model_tier()` or `
34
34
  | deepseek-reasoner | Premium | $0.002 | DeepSeek |
35
35
  | deepseek-v3.2 | Standard | $0.0014 | DeepSeek |
36
36
  | deepseek-chat | Economy | $0.001 | DeepSeek |
37
- | glm-5 | Premium/Standard | $0.002 | GLM |
37
+ | glm-5.1 | Premium/Standard | $0.002 | GLM |
38
38
  | glm-4-flash | Economy | $0.0005 | GLM |
39
39
  | grok-4.20-0309-reasoning | Premium | $0.005 | Grok |
40
40
  | grok-3 | Standard | $0.003 | Grok |
@@ -67,7 +67,7 @@ Since v2.5, models are organized into three tiers. Use `apply_model_tier()` or `
67
67
  | deepseek-reasoner | Premium | $0.006 | DeepSeek |
68
68
  | deepseek-v3.2 | Standard | $0.004 | DeepSeek |
69
69
  | deepseek-chat | Economy | $0.003 | DeepSeek |
70
- | glm-5 | Premium/Standard | $0.006 | GLM |
70
+ | glm-5.1 | Premium/Standard | $0.006 | GLM |
71
71
  | glm-4-flash | Economy | $0.0015 | GLM |
72
72
  | grok-4.20-0309-reasoning | Premium | $0.015 | Grok |
73
73
  | grok-3 | Standard | $0.009 | Grok |
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.10.3",
2
+ "version": "2.10.4",
3
3
  "updated": "2026-03-04",
4
4
  "models": {
5
5
  "_comment_premium": "Premium tier models - March 2026",
@@ -8,7 +8,7 @@
8
8
  "gpt-5.3-codex": {"input": 3.00, "output": 12.00},
9
9
  "mistral-large-3": {"input": 2.00, "output": 6.00},
10
10
  "deepseek-reasoner": {"input": 0.55, "output": 2.19},
11
- "glm-5": {"input": 0.50, "output": 2.00},
11
+ "glm-5.1": {"input": 0.50, "output": 2.00},
12
12
  "grok-4.20-0309-reasoning": {"input": 5.00, "output": 15.00},
13
13
  "qwen3.5-plus": {"input": 1.60, "output": 6.40},
14
14
  "composer-1.5": {"input": 0.005, "output": 0.015},
@@ -73,7 +73,7 @@
73
73
  "codex": "gpt-5.3-codex",
74
74
  "mistral": "mistral-large-3",
75
75
  "deepseek": "deepseek-reasoner",
76
- "glm": "glm-5",
76
+ "glm": "glm-5.1",
77
77
  "grok": "grok-4.20-0309-reasoning",
78
78
  "qwen3": "qwen3.5-plus",
79
79
  "aider": "gpt-5.3-codex",
@@ -92,7 +92,7 @@
92
92
  "codex": "gpt-5.3-codex",
93
93
  "mistral": "mistral-large-3",
94
94
  "deepseek": "deepseek-reasoner",
95
- "glm": "glm-5",
95
+ "glm": "glm-5.1",
96
96
  "grok": "grok-4.20-0309-reasoning",
97
97
  "qwen3": "qwen3.5-plus",
98
98
  "aider": "gpt-5.3-codex",
@@ -109,7 +109,7 @@
109
109
  "codex": "gpt-5.3",
110
110
  "mistral": "mistral-medium-latest",
111
111
  "deepseek": "deepseek-v3.2",
112
- "glm": "glm-5",
112
+ "glm": "glm-5.1",
113
113
  "grok": "grok-3",
114
114
  "qwen3": "qwen3.5-plus",
115
115
  "aider": "gpt-5.3",
@@ -0,0 +1,63 @@
1
+ # Release v2.10.4
2
+
3
+ **Date:** 2026-04-10
4
+ **Type:** Patch — GLM model upgrade, Kilo CLI fix
5
+ **Previous:** v2.10.3
6
+
7
+ ## Highlights
8
+
9
+ - GLM premium/standard model upgraded from `glm-5` to `glm-5.1`
10
+ - Fixed Kilo CLI consultant that hung indefinitely when stdout was redirected
11
+ - Fixed Kilo CLI auto-detecting other consultants' API keys and picking non-functional models
12
+ - Improved output stripping pipeline efficiency in `query_kilo.sh`
13
+
14
+ ## What's New
15
+
16
+ ### GLM Model Upgrade
17
+
18
+ GLM premium and standard tier updated from `glm-5` to `glm-5.1`. Economy tier (`glm-4-flash`) remains unchanged.
19
+
20
+ | Tier | Before (v2.10.3) | After (v2.10.4) |
21
+ |------|-------------------|------------------|
22
+ | Premium | glm-5 | glm-5.1 |
23
+ | Standard | glm-5 | glm-5.1 |
24
+ | Economy | glm-4-flash | glm-4-flash |
25
+
26
+ ### Kilo CLI Fix
27
+
28
+ Resolved a long-standing issue where the Kilo consultant would hang for the full timeout (180s) and return empty or ANSI-only output. Root causes:
29
+
30
+ 1. **Non-TTY hang**: Kilocode CLI hangs when the query is passed as a CLI argument and stdout is redirected. Fixed by passing the query via stdin instead.
31
+
32
+ 2. **Wrong provider auto-detection**: Kilocode auto-detects API providers from environment variables. When other consultants' API keys (e.g., `MINIMAX_API_KEY`) were exported, kilocode would pick non-functional models like `MiniMax-M2.7-highspeed`. Fixed by unsetting foreign API keys via `env -u` before invocation.
33
+
34
+ 3. **Output cleaning**: Collapsed 5-stage pipe (`sed | sed | tr | grep | grep`) into a single `sed` invocation. Fixed overly aggressive markdown fence filter that would strip opening code fences like `` ```typescript `` — now only strips standalone `` ``` `` lines.
35
+
36
+ ### Documentation Fixes
37
+
38
+ - Updated `.env.example` header from v2.10.0 to current version
39
+ - Updated GLM signup URL from `open.bigmodel.cn` to `open.z.ai`
40
+
41
+ ## Breaking Changes
42
+
43
+ None.
44
+
45
+ ## Upgrade Guide
46
+
47
+ ```bash
48
+ # If installed via git clone
49
+ cd ~/.claude/skills/ai-consultants && git pull
50
+
51
+ # If installed via curl | bash
52
+ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
53
+ ```
54
+
55
+ No configuration changes required. Existing `GLM_MODEL` overrides continue to work.
56
+
57
+ ## Commits
58
+
59
+ - `09dac4d` feat: upgrade GLM to glm-5.1, fix Kilo CLI hanging in non-TTY mode
60
+
61
+ ## Contributors
62
+
63
+ - @matteoscurati
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-consultants",
3
- "version": "2.10.3",
3
+ "version": "2.10.4",
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"
@@ -80,7 +80,7 @@ AIDER_MODEL=gpt-5.3-codex
80
80
  AMP_MODEL=amp
81
81
  KIMI_MODEL=kimi-code/kimi-for-coding
82
82
  QWEN3_MODEL=qwen3.5-plus
83
- GLM_MODEL=glm-5
83
+ GLM_MODEL=glm-5.1
84
84
  GROK_MODEL=grok-4.20-0309-reasoning
85
85
  DEEPSEEK_MODEL=deepseek-reasoner
86
86
  MINIMAX_MODEL=MiniMax-M2.7
package/scripts/config.sh CHANGED
@@ -117,7 +117,7 @@ QWEN3_FORMAT="${QWEN3_FORMAT:-qwen}"
117
117
  # GLM CONFIGURATION - The Code Specialist (API-based)
118
118
  # =============================================================================
119
119
 
120
- GLM_MODEL="${GLM_MODEL:-glm-5}"
120
+ GLM_MODEL="${GLM_MODEL:-glm-5.1}"
121
121
  GLM_TIMEOUT_SECONDS="${GLM_TIMEOUT:-180}"
122
122
  GLM_API_URL="${GLM_API_URL:-https://api.z.ai/api/coding/paas/v4/chat/completions}"
123
123
  GLM_FORMAT="${GLM_FORMAT:-openai}"
@@ -531,7 +531,7 @@ get_model_for_tier() {
531
531
  mistral) echo "mistral-large-3" ;;
532
532
  cursor) echo "composer-1.5" ;;
533
533
  deepseek) echo "deepseek-reasoner" ;;
534
- glm) echo "glm-5" ;;
534
+ glm) echo "glm-5.1" ;;
535
535
  grok) echo "grok-4.20-0309-reasoning" ;;
536
536
  qwen3) echo "qwen3.5-plus" ;;
537
537
  aider) echo "gpt-5.3-codex" ;;
@@ -551,7 +551,7 @@ get_model_for_tier() {
551
551
  mistral) echo "mistral-medium-latest" ;;
552
552
  cursor) echo "composer-1.5" ;; # Same as premium (single model)
553
553
  deepseek) echo "deepseek-v3.2" ;;
554
- glm) echo "glm-5" ;; # Same as premium (no mid-tier GLM)
554
+ glm) echo "glm-5.1" ;; # Same as premium (no mid-tier GLM)
555
555
  grok) echo "grok-3" ;;
556
556
  qwen3) echo "qwen3.5-plus" ;; # Same as premium (single tier available)
557
557
  aider) echo "gpt-5.3" ;;
@@ -44,17 +44,22 @@ TEMP_OUTPUT=$(mktemp)
44
44
  TEMP_RAW=$(mktemp)
45
45
  trap 'rm -f "$TEMP_OUTPUT" "$TEMP_RAW"' EXIT
46
46
 
47
- # Build command args: run subcommand + --auto + --dir /tmp (prevent SKILL.md loading)
48
- KILO_ARGS=("$KILO_CMD" "run" "--auto" "--dir" "/tmp")
47
+ log_info "Consulting Kilo Code (timeout: ${KILO_TIMEOUT_SECONDS}s)..."
48
+
49
+ # Kilocode hangs when the query is passed as a CLI argument with stdout redirected.
50
+ # Passing the query via stdin avoids this issue.
51
+ # Also: unset API keys from other consultants — kilocode auto-detects providers
52
+ # from env vars (e.g. MINIMAX_API_KEY) and may pick a non-functional model.
53
+ KILO_STDIN_ARGS=("env"
54
+ "-u" "MINIMAX_API_KEY" "-u" "GLM_API_KEY" "-u" "GROK_API_KEY"
55
+ "-u" "DEEPSEEK_API_KEY" "-u" "OPENAI_API_KEY" "-u" "ANTHROPIC_API_KEY"
56
+ "-u" "GEMINI_API_KEY" "-u" "MISTRAL_API_KEY" "-u" "QWEN3_API_KEY"
57
+ "$KILO_CMD" "run" "--auto" "--dir" "/tmp")
49
58
  if [[ -n "${KILO_MODEL:-}" && "${KILO_MODEL}" != "auto" ]]; then
50
- KILO_ARGS+=("--model" "$KILO_MODEL")
59
+ KILO_STDIN_ARGS+=("--model" "$KILO_MODEL")
51
60
  fi
52
- KILO_ARGS+=("$FULL_QUERY")
53
-
54
- # Use run_with_timeout for cross-platform support (Linux/macOS/POSIX)
55
- log_info "Consulting Kilo Code (timeout: ${KILO_TIMEOUT_SECONDS}s)..."
56
61
 
57
- if run_with_timeout "$KILO_TIMEOUT_SECONDS" "${KILO_ARGS[@]}" > "$TEMP_RAW" 2>&1; then
62
+ if echo "$FULL_QUERY" | run_with_timeout "$KILO_TIMEOUT_SECONDS" "${KILO_STDIN_ARGS[@]}" > "$TEMP_RAW" 2>&1; then
58
63
  exit_code=0
59
64
  else
60
65
  exit_code=$?
@@ -62,8 +67,9 @@ fi
62
67
 
63
68
  # --- Strip ANSI escape codes from Kilo's text output ---
64
69
  if [[ -f "$TEMP_RAW" && -s "$TEMP_RAW" ]]; then
65
- # Kilo outputs plain text with ANSI codes; strip them for clean output
66
- CONTENT=$(LC_ALL=C sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' "$TEMP_RAW" | sed '/^$/d') || true
70
+ # Strip ANSI codes, carriage returns, empty lines, kilo's model header, and markdown fences
71
+ CONTENT=$(LC_ALL=C sed -e 's/\x1b\[[0-9;]*[a-zA-Z]//g' -e 's/\r//g' -e '/^$/d' \
72
+ -e '/^> code · /d' -e '/^```$/d' "$TEMP_RAW") || true
67
73
 
68
74
  if [[ -n "${CONTENT:-}" ]]; then
69
75
  exit_code=0