ai-consultants 2.10.1

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.
Files changed (62) hide show
  1. package/.claude/commands/ai-consultants:consult.md +94 -0
  2. package/.claude/commands/ai-consultants:debate.md +103 -0
  3. package/.claude/commands/ai-consultants:help.md +30 -0
  4. package/CLAUDE.md +839 -0
  5. package/LICENSE +21 -0
  6. package/README.md +758 -0
  7. package/SKILL.md +156 -0
  8. package/bin/ai-consultants +96 -0
  9. package/docs/COST_RATES.md +172 -0
  10. package/docs/JSON_SCHEMA.md +305 -0
  11. package/docs/SETUP.md +879 -0
  12. package/docs/SMART_ROUTING.md +219 -0
  13. package/docs/cost_rates.json +143 -0
  14. package/package.json +47 -0
  15. package/references/configuration.md +141 -0
  16. package/references/details.md +60 -0
  17. package/scripts/build_context.sh +562 -0
  18. package/scripts/classify_question.sh +148 -0
  19. package/scripts/config.sh +753 -0
  20. package/scripts/configure.sh +1093 -0
  21. package/scripts/consult_all.sh +934 -0
  22. package/scripts/debate_round.sh +421 -0
  23. package/scripts/doctor.sh +642 -0
  24. package/scripts/followup.sh +197 -0
  25. package/scripts/install.sh +319 -0
  26. package/scripts/lib/api.sh +640 -0
  27. package/scripts/lib/api_query.sh +228 -0
  28. package/scripts/lib/cache.sh +338 -0
  29. package/scripts/lib/chunking.sh +880 -0
  30. package/scripts/lib/code_optimizer.sh +671 -0
  31. package/scripts/lib/common.sh +1088 -0
  32. package/scripts/lib/costs.sh +674 -0
  33. package/scripts/lib/personas.sh +372 -0
  34. package/scripts/lib/progress.sh +251 -0
  35. package/scripts/lib/reflection.sh +447 -0
  36. package/scripts/lib/routing.sh +566 -0
  37. package/scripts/lib/schema.json +165 -0
  38. package/scripts/lib/session.sh +327 -0
  39. package/scripts/lib/symbol_map.sh +445 -0
  40. package/scripts/lib/voting.sh +495 -0
  41. package/scripts/peer_review.sh +460 -0
  42. package/scripts/preflight_check.sh +452 -0
  43. package/scripts/query_aider.sh +83 -0
  44. package/scripts/query_amp.sh +67 -0
  45. package/scripts/query_claude.sh +99 -0
  46. package/scripts/query_codex.sh +92 -0
  47. package/scripts/query_cursor.sh +72 -0
  48. package/scripts/query_deepseek.sh +17 -0
  49. package/scripts/query_gemini.sh +85 -0
  50. package/scripts/query_glm.sh +17 -0
  51. package/scripts/query_grok.sh +17 -0
  52. package/scripts/query_kilo.sh +140 -0
  53. package/scripts/query_kimi.sh +67 -0
  54. package/scripts/query_minimax.sh +17 -0
  55. package/scripts/query_mistral.sh +97 -0
  56. package/scripts/query_ollama.sh +328 -0
  57. package/scripts/query_qwen3.sh +93 -0
  58. package/scripts/setup_wizard.sh +367 -0
  59. package/scripts/skillport-install.sh +196 -0
  60. package/scripts/synthesize.sh +332 -0
  61. package/templates/consultation_report.md +323 -0
  62. package/templates/synthesis_prompt.md +120 -0
package/SKILL.md ADDED
@@ -0,0 +1,156 @@
1
+ ---
2
+ name: ai-consultants
3
+ description: Consult Gemini CLI, Codex CLI, Mistral Vibe, Kilo CLI, Cursor, Claude, Amp, Kimi, Qwen, MiniMax, and Ollama as external experts for coding questions. Automatically excludes the invoking agent from the panel to avoid self-consultation. Use when you have doubts about implementations, want a second opinion, need to choose between different approaches, or when explicitly requested with phrases like "ask the consultants", "what do the other models think", "compare solutions", "get expert opinions", "I'm not sure about this approach", "what would other models say". Make sure to consult this skill whenever the user is weighing trade-offs, comparing architectures, validating complex solutions, or wants multiple perspectives on any non-trivial coding decision. Do NOT use for simple questions that only need one model's answer or when you already have high confidence in a solution.
4
+ license: MIT
5
+ compatibility: Requires bash, jq, and at least 2 AI CLI tools (gemini, codex, vibe, etc.). macOS and Linux.
6
+ metadata:
7
+ author: matteoscurati
8
+ version: 2.10.1
9
+ ---
10
+
11
+ # AI Consultants v2.10.1 - AI Expert Panel
12
+
13
+ Simultaneously consult multiple AIs as "consultants" for coding questions. Each consultant has a **configurable persona** that influences their response style.
14
+
15
+ ## Quick Start
16
+
17
+ ```
18
+ /ai-consultants:consult "Your question here"
19
+ ```
20
+
21
+ ## Slash Commands
22
+
23
+ | Command | Description |
24
+ |---------|-------------|
25
+ | `/ai-consultants:consult` | Main consultation - ask AI consultants a coding question |
26
+ | `/ai-consultants:debate` | Run consultation with multi-round debate |
27
+ | `/ai-consultants:help` | Show all commands and usage |
28
+
29
+ Configuration (presets, strategies, features, personas, API keys) can be managed via natural language — just ask.
30
+
31
+ ## Consultants and Personas
32
+
33
+ | Consultant | CLI | Persona | Focus |
34
+ |------------|-----|---------|-------|
35
+ | **Google Gemini** | `gemini` | The Architect | Design patterns, scalability |
36
+ | **OpenAI Codex** | `codex` | The Pragmatist | Simplicity, proven solutions |
37
+ | **Mistral Vibe** | `vibe` | The Devil's Advocate | Edge cases, vulnerabilities |
38
+ | **Kilo Code** | `kilocode` | The Innovator | Creativity, unconventional |
39
+ | **Cursor** | `agent` | The Integrator | Full-stack perspective |
40
+ | **Aider** | `aider` | The Pair Programmer | Collaborative coding |
41
+ | **Amp** | `amp` | The Systems Thinker | System design, interactions |
42
+ | **Kimi** | `kimi` | The Eastern Sage | Holistic, balanced perspectives |
43
+ | **Claude** | `claude` | The Synthesizer | Big picture, synthesis |
44
+ | **Qwen** | `qwen` | The Analyst | Data-driven, metrics |
45
+ | **Ollama** | `ollama` | The Local Expert | Privacy-first, zero cost |
46
+
47
+ **API-only consultants**: GLM (The Methodologist), Grok (The Provocateur), DeepSeek (The Code Specialist), MiniMax (The Pragmatic Optimizer)
48
+
49
+ **CLI/API Mode**: Gemini, Codex, Claude, Mistral, and Qwen can switch between CLI and API mode via `*_USE_API` environment variables.
50
+
51
+ **Self-Exclusion**: The invoking agent is automatically excluded from the panel. When invoked from Claude Code, Claude is excluded; when invoked from Codex CLI, Codex is excluded, etc.
52
+
53
+ ## Requirements
54
+
55
+ - **At least 2 consultant CLIs** installed and authenticated
56
+ - **jq** for JSON processing
57
+
58
+ ### Quick Install
59
+
60
+ ```bash
61
+ # Option A: npx (recommended, no install needed)
62
+ npx ai-consultants doctor --fix
63
+ npx ai-consultants install # Install slash commands for Claude Code
64
+
65
+ # Option B: curl | bash
66
+ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
67
+ ~/.claude/skills/ai-consultants/scripts/doctor.sh --fix
68
+ ```
69
+
70
+ For detailed CLI installation instructions, see [Setup Guide](docs/SETUP.md).
71
+
72
+ ## Usage Examples
73
+
74
+ ```
75
+ /ai-consultants:consult "How to optimize this SQL query?"
76
+ /ai-consultants:consult "Review this authentication flow" src/auth.ts
77
+ /ai-consultants:debate "Microservices or monolith for our new service?"
78
+ ```
79
+
80
+ Presets: `minimal`, `balanced`, `thorough`, `high-stakes`, `local`, `security`, `cost-capped`. Strategies: `majority`, `risk_averse`, `security_first`, `cost_capped`, `compare_only`. See [Reference Details](references/details.md) for full tables, bash usage, and best practices.
81
+
82
+ ## Workflow
83
+
84
+ Query is classified, then sent to consultants in parallel. Responses are scored, voted on, and synthesized into a recommendation. With debate enabled, consultants cross-critique before final synthesis.
85
+
86
+ ## Features
87
+
88
+ | Feature | Description | Toggle |
89
+ |---------|-------------|--------|
90
+ | **Personas** | Each consultant has a role that shapes responses | `ENABLE_PERSONA` |
91
+ | **Synthesis** | Auto-combine responses into recommendation | `ENABLE_SYNTHESIS` |
92
+ | **Debate** | Consultants critique each other's answers | `ENABLE_DEBATE` |
93
+ | **Peer Review** | Consultants anonymously rank each other | `ENABLE_PEER_REVIEW` |
94
+ | **Smart Routing** | Auto-select best consultants per question type | `ENABLE_SMART_ROUTING` |
95
+ | **Cost Tracking** | Track API usage costs | `ENABLE_COST_TRACKING` |
96
+ | **Panic Mode** | Auto-add rigor when uncertainty detected | `ENABLE_PANIC_MODE` |
97
+
98
+ ## Configuration
99
+
100
+ All settings use environment variables. Key toggles:
101
+
102
+ ```bash
103
+ ENABLE_DEBATE=true # Multi-agent debate
104
+ ENABLE_SYNTHESIS=true # Automatic synthesis
105
+ ENABLE_PANIC_MODE=auto # Auto-rigor for uncertainty
106
+ ENABLE_BUDGET_LIMIT=false # Budget enforcement (v2.4)
107
+ ```
108
+
109
+ Enable opt-in consultants: `ENABLE_AMP`, `ENABLE_KIMI`, `ENABLE_QWEN3`, `ENABLE_CLAUDE`, `ENABLE_OLLAMA`, `ENABLE_MINIMAX`.
110
+
111
+ CLI/API switching: `GEMINI_USE_API`, `CODEX_USE_API`, `CLAUDE_USE_API`, `MISTRAL_USE_API`, `QWEN3_USE_API`.
112
+
113
+ See [Full Configuration Reference](references/configuration.md) for all variables, model overrides, tiers, timeouts, and optimization settings.
114
+
115
+ ## Output
116
+
117
+ ```
118
+ /tmp/ai_consultations/TIMESTAMP/
119
+ ├── gemini.json # Individual responses
120
+ ├── codex.json
121
+ ├── voting.json # Consensus
122
+ ├── synthesis.json # Recommendation
123
+ └── report.md # Human-readable
124
+ ```
125
+
126
+ ## Doctor Command
127
+
128
+ Diagnose and fix issues:
129
+
130
+ ```bash
131
+ ./scripts/doctor.sh # Full check
132
+ ./scripts/doctor.sh --fix # Auto-fix
133
+ ./scripts/doctor.sh --json # JSON output
134
+ ```
135
+
136
+ ## Interpreting Results
137
+
138
+ | Scenario | Recommendation |
139
+ |----------|----------------|
140
+ | High confidence + High consensus | Proceed confidently |
141
+ | Low confidence OR Low consensus | Consider more options |
142
+ | Mistral disagrees | Investigate risks |
143
+ | Panic mode triggered | Add debate rounds |
144
+
145
+ ## Troubleshooting
146
+
147
+ Run `./scripts/doctor.sh` to diagnose issues, or `./scripts/doctor.sh --fix` to auto-fix.
148
+
149
+ ## Extended Documentation
150
+
151
+ - [Reference Details](references/details.md) - Presets, strategies, best practices, limitations
152
+ - [Full Configuration](references/configuration.md) - All environment variables, models, tiers, timeouts
153
+ - [Setup Guide](docs/SETUP.md) - Installation, authentication
154
+ - [Cost Rates](docs/COST_RATES.md) - Model pricing
155
+ - [Smart Routing](docs/SMART_ROUTING.md) - Category routing
156
+ - [JSON Schema](docs/JSON_SCHEMA.md) - Output format
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env bash
2
+ # ai-consultants - npm/npx entry point
3
+ # Resolves symlinks (created by npm) and delegates to the real scripts.
4
+ set -euo pipefail
5
+
6
+ # --- Resolve symlinks to find the real project root ---
7
+ SOURCE="${BASH_SOURCE[0]}"
8
+ while [ -L "$SOURCE" ]; do
9
+ DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
10
+ SOURCE="$(readlink "$SOURCE")"
11
+ # Resolve relative symlink
12
+ [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE"
13
+ done
14
+ BIN_DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
15
+ PROJECT_ROOT="$(cd -P "$BIN_DIR/.." && pwd)"
16
+ SCRIPTS_DIR="$PROJECT_ROOT/scripts"
17
+
18
+ # --- Ensure execute permissions (npm can strip them) ---
19
+ ensure_permissions() {
20
+ local needs_fix=false
21
+ for f in "$SCRIPTS_DIR"/*.sh "$SCRIPTS_DIR"/lib/*.sh; do
22
+ [ -f "$f" ] && [ ! -x "$f" ] && needs_fix=true && break
23
+ done
24
+ if [ "$needs_fix" = true ]; then
25
+ chmod +x "$SCRIPTS_DIR"/*.sh 2>/dev/null || true
26
+ chmod +x "$SCRIPTS_DIR"/lib/*.sh 2>/dev/null || true
27
+ fi
28
+ }
29
+ ensure_permissions
30
+
31
+ # --- Version ---
32
+ VERSION="2.10.0"
33
+
34
+ # --- Subcommand routing ---
35
+ case "${1:-}" in
36
+ version|--version|-v)
37
+ echo "ai-consultants v$VERSION"
38
+ exit 0
39
+ ;;
40
+ help|--help|-h)
41
+ cat <<EOF
42
+ ai-consultants v$VERSION - Multi-model AI deliberation system
43
+
44
+ Usage:
45
+ ai-consultants "question" [files...] Consult AI experts
46
+ ai-consultants --preset <name> "question" Use a configuration preset
47
+ ai-consultants --strategy <name> "question" Use a synthesis strategy
48
+ ai-consultants doctor [--fix] [--json] Run diagnostics
49
+ ai-consultants install Install slash commands to ~/.claude/commands/
50
+ ai-consultants version Show version
51
+ ai-consultants help Show this help
52
+
53
+ Presets: minimal, balanced, thorough, high-stakes, local, security, cost-capped,
54
+ max_quality, medium, fast
55
+
56
+ Strategies: majority, risk_averse, security_first, cost_capped, compare_only
57
+
58
+ Examples:
59
+ npx ai-consultants "How to optimize this SQL query?"
60
+ npx ai-consultants --preset balanced "Redis or Memcached?"
61
+ npx ai-consultants doctor --fix
62
+
63
+ Documentation: https://github.com/matteoscurati/ai-consultants
64
+ EOF
65
+ exit 0
66
+ ;;
67
+ doctor)
68
+ shift
69
+ exec "$SCRIPTS_DIR/doctor.sh" "$@"
70
+ ;;
71
+ install)
72
+ COMMANDS_SRC="$PROJECT_ROOT/.claude/commands"
73
+ COMMANDS_DST="$HOME/.claude/commands"
74
+ if [ ! -d "$COMMANDS_SRC" ]; then
75
+ echo "Error: slash commands directory not found at $COMMANDS_SRC" >&2
76
+ exit 1
77
+ fi
78
+ mkdir -p "$COMMANDS_DST"
79
+ copied=0
80
+ for f in "$COMMANDS_SRC"/ai-consultants:*.md; do
81
+ [ -f "$f" ] || continue
82
+ cp "$f" "$COMMANDS_DST/"
83
+ copied=$((copied + 1))
84
+ done
85
+ if [ "$copied" -eq 0 ]; then
86
+ echo "Warning: no slash command files found in $COMMANDS_SRC" >&2
87
+ exit 1
88
+ fi
89
+ echo "Installed $copied slash commands to $COMMANDS_DST"
90
+ exit 0
91
+ ;;
92
+ *)
93
+ # Pass everything through to consult_all.sh
94
+ exec "$SCRIPTS_DIR/consult_all.sh" "$@"
95
+ ;;
96
+ esac
@@ -0,0 +1,172 @@
1
+ # Cost Rates - AI Consultants v2.10.1
2
+
3
+ This page documents the per-token rates used by the cost tracking system.
4
+
5
+ ## Model Quality Tiers (v2.5+)
6
+
7
+ Since v2.5, models are organized into three tiers. Use `apply_model_tier()` or `get_model_for_tier()` to select models programmatically.
8
+
9
+ | Tier | Description | Cost Level |
10
+ |------|-------------|------------|
11
+ | **Premium** | Latest flagship models (default) | Highest |
12
+ | **Standard** | Good quality at reasonable cost | Medium |
13
+ | **Economy** | Optimized for speed and low cost | Lowest |
14
+
15
+ ## Rates per Model (USD per 1K tokens)
16
+
17
+ ### Input Tokens
18
+
19
+ | Model | Tier | Cost/1K | Consultant |
20
+ |-------|------|---------|------------|
21
+ | gemini-3.1-pro-preview | Premium | $0.00125 | Gemini |
22
+ | gemini-3-flash-preview | Standard | $0.000075 | Gemini |
23
+ | gemini-2.0-flash | Economy | $0.0001 | Gemini |
24
+ | gpt-5.3-codex | Premium | $0.01 | Codex |
25
+ | gpt-5.3 | Standard | $0.005 | Codex |
26
+ | gpt-4o-mini | Economy | $0.00015 | Codex |
27
+ | opus-4.6 | Premium | $0.015 | Claude |
28
+ | sonnet-4.6 | Standard | $0.003 | Claude |
29
+ | haiku-4.5 | Economy | $0.00025 | Claude |
30
+ | mistral-large-3 | Premium | $0.004 | Mistral |
31
+ | mistral-medium-latest | Standard | $0.0027 | Mistral |
32
+ | devstral-small-2 | Economy | $0.001 | Mistral |
33
+ | composer-1.5 | Premium/Standard | $0.005 | Cursor |
34
+ | deepseek-reasoner | Premium | $0.002 | DeepSeek |
35
+ | deepseek-v3.2 | Standard | $0.0014 | DeepSeek |
36
+ | deepseek-chat | Economy | $0.001 | DeepSeek |
37
+ | glm-5 | Premium/Standard | $0.002 | GLM |
38
+ | glm-4-flash | Economy | $0.0005 | GLM |
39
+ | grok-4-1-fast-reasoning | Premium | $0.005 | Grok |
40
+ | grok-3 | Standard | $0.003 | Grok |
41
+ | grok-3-mini | Economy | $0.001 | Grok |
42
+ | qwen3.5-plus | Premium/Standard | $0.002 | Qwen3 |
43
+ | qwen3-32b | Economy | $0.0005 | Qwen3 |
44
+ | MiniMax-M2.5 | Premium | $0.002 | MiniMax |
45
+ | MiniMax-M2.1 | Standard | $0.0015 | MiniMax |
46
+ | MiniMax-M2.5-highspeed | Economy | $0.001 | MiniMax |
47
+ | kimi-code/kimi-for-coding | Premium/Standard | $0.002 | Kimi |
48
+ | auto | All | $0.002 | Kilo (internal routing) |
49
+ | default | - | $0.005 | Fallback |
50
+
51
+ ### Output Tokens
52
+
53
+ | Model | Tier | Cost/1K | Consultant |
54
+ |-------|------|---------|------------|
55
+ | gemini-3.1-pro-preview | Premium | $0.005 | Gemini |
56
+ | gemini-3-flash-preview | Standard | $0.0003 | Gemini |
57
+ | gemini-2.0-flash | Economy | $0.0004 | Gemini |
58
+ | gpt-5.3-codex | Premium | $0.03 | Codex |
59
+ | gpt-5.3 | Standard | $0.015 | Codex |
60
+ | gpt-4o-mini | Economy | $0.0006 | Codex |
61
+ | opus-4.6 | Premium | $0.075 | Claude |
62
+ | sonnet-4.6 | Standard | $0.015 | Claude |
63
+ | haiku-4.5 | Economy | $0.00125 | Claude |
64
+ | mistral-large-3 | Premium | $0.012 | Mistral |
65
+ | mistral-medium-latest | Standard | $0.0081 | Mistral |
66
+ | devstral-small-2 | Economy | $0.003 | Mistral |
67
+ | composer-1.5 | Premium/Standard | $0.015 | Cursor |
68
+ | deepseek-reasoner | Premium | $0.006 | DeepSeek |
69
+ | deepseek-v3.2 | Standard | $0.004 | DeepSeek |
70
+ | deepseek-chat | Economy | $0.003 | DeepSeek |
71
+ | glm-5 | Premium/Standard | $0.006 | GLM |
72
+ | glm-4-flash | Economy | $0.0015 | GLM |
73
+ | grok-4-1-fast-reasoning | Premium | $0.015 | Grok |
74
+ | grok-3 | Standard | $0.009 | Grok |
75
+ | grok-3-mini | Economy | $0.003 | Grok |
76
+ | qwen3.5-plus | Premium/Standard | $0.006 | Qwen3 |
77
+ | qwen3-32b | Economy | $0.0015 | Qwen3 |
78
+ | MiniMax-M2.5 | Premium | $0.006 | MiniMax |
79
+ | MiniMax-M2.1 | Standard | $0.004 | MiniMax |
80
+ | MiniMax-M2.5-highspeed | Economy | $0.003 | MiniMax |
81
+ | kimi-code/kimi-for-coding | Premium/Standard | $0.006 | Kimi |
82
+ | auto | All | $0.006 | Kilo |
83
+ | default | - | $0.015 | Fallback |
84
+
85
+ ## Cost Estimation per Session
86
+
87
+ ### Typical Consultation
88
+
89
+ **Parameters:**
90
+ - 4 active consultants
91
+ - ~5000 characters of context
92
+ - ~1000 input tokens per consultant (estimate: 4 char/token)
93
+ - ~750 output tokens per consultant
94
+
95
+ **Estimated cost:** $0.02 - $0.05
96
+
97
+ ### With Multi-Agent Debate (2 rounds)
98
+
99
+ **Additional parameters:**
100
+ - +1 round with same context
101
+ - Previous responses as additional input
102
+
103
+ **Estimated cost:** $0.08 - $0.15
104
+
105
+ ### With Self-Reflection
106
+
107
+ **Additional parameters:**
108
+ - Critique + refinement cycle per consultant
109
+ - ~500 additional tokens per cycle
110
+
111
+ **Estimated cost:** $0.10 - $0.20
112
+
113
+ ## Budget Management
114
+
115
+ ### Configuration Variables
116
+
117
+ ```bash
118
+ # Maximum budget per session
119
+ MAX_SESSION_COST=1.00
120
+
121
+ # Warning threshold
122
+ WARN_AT_COST=0.50
123
+
124
+ # Budget enforcement (v2.4, opt-in)
125
+ ENABLE_BUDGET_LIMIT=false
126
+ BUDGET_ACTION=warn # warn or stop
127
+
128
+ # Cumulative tracking file
129
+ COST_TRACKING_FILE=/tmp/ai_consultants_costs.json
130
+ ```
131
+
132
+ ### Behavior
133
+
134
+ 1. **Pre-consultation**: Estimated cost shown before execution
135
+ 2. **Warning**: Alert if cost exceeds `WARN_AT_COST`
136
+ 3. **Budget check**: Error if cost exceeds `MAX_SESSION_COST`
137
+ 4. **Tracking**: Costs recorded in `COST_TRACKING_FILE`
138
+
139
+ ### Cost Report
140
+
141
+ ```bash
142
+ # Generate cost report
143
+ source scripts/lib/costs.sh
144
+ generate_cost_report
145
+ ```
146
+
147
+ Output:
148
+ ```
149
+ Total sessions: 15
150
+ Total cost: $0.4523
151
+ Average per session: $0.0301
152
+ ```
153
+
154
+ ## Technical Notes
155
+
156
+ ### Token Estimation
157
+
158
+ The system estimates tokens using the heuristic:
159
+ - **4 characters = 1 token** (approximation)
160
+ - Assumed split: **60% input, 40% output**
161
+
162
+ This is a conservative estimate. Actual costs may vary.
163
+
164
+ ### Data Source
165
+
166
+ Rates are defined in `scripts/lib/costs.sh` and are periodically updated to reflect official provider pricing.
167
+
168
+ ### Dependencies
169
+
170
+ Cost tracking requires:
171
+ - `bc` - For floating point calculations
172
+ - `jq` - For JSON parsing