@bahulam/code 0.1.4 → 0.1.6
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/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bahulam/code",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Bahulam Code
|
|
3
|
+
"version": "0.1.6",
|
|
4
|
+
"description": "Bahulam Code \u2014 abundance, in your terminal. CLI-first, reliability-first, sub-agents, 65.6% SWE-bench Verified.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"bahulam": "src/terminal/main.mjs",
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
],
|
|
18
18
|
"scripts": {
|
|
19
19
|
"start": "node src/terminal/main.mjs",
|
|
20
|
-
"test": "BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-backend-url.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-agent-history.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-sse-client.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-tool-executor.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-project-artifacts.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-work-scope.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-skills.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-callback.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-rate-limit-display.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-preflight.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-formatter.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-terminal-rendering.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-render-queue.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-input-dock.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-live-steering-client.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-slash-commands.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-approval.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-approval-log.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-kepler-contract.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-session-manager.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-safety.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-jsonl-writer.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-analytics.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-stagnation.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-attachments.mjs"
|
|
20
|
+
"test": "BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-backend-url.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-agent-history.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-sse-client.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-tool-executor.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-project-artifacts.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-work-scope.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-skills.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-callback.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-rate-limit-display.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-preflight.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-formatter.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-terminal-rendering.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-render-queue.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-input-dock.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-live-steering-client.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-slash-commands.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-approval.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-approval-log.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-kepler-contract.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-session-manager.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-safety.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-jsonl-writer.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-analytics.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-stagnation.mjs && BAHULAM_HOME=/tmp/bahulam-code-test-home node test/test-attachments.mjs",
|
|
21
|
+
"sync-catalog": "node scripts/sync-catalog.mjs",
|
|
22
|
+
"prepublishOnly": "node scripts/sync-catalog.mjs"
|
|
21
23
|
},
|
|
22
24
|
"engines": {
|
|
23
25
|
"node": ">=18.0.0"
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "bahulam.models_catalog.snapshot.v1",
|
|
3
|
+
"source": "delivered_static_catalog",
|
|
4
|
+
"generated_at": "2026-08-23T20:06:08.903480Z",
|
|
5
|
+
"deactivate_missing": false,
|
|
6
|
+
"models": [
|
|
7
|
+
{"value": "anthropic/claude-opus-4-6", "label": "Claude Opus 4.6", "provider": "anthropic", "inputCost": 15, "outputCost": 75, "context": 200000, "maxOutput": 32000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
8
|
+
{"value": "anthropic/claude-sonnet-4-6", "label": "Claude Sonnet 4.6", "provider": "anthropic", "inputCost": 3, "outputCost": 15, "context": 200000, "maxOutput": 64000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
9
|
+
{"value": "anthropic/claude-haiku-4-5", "label": "Claude Haiku 4.5", "provider": "anthropic", "inputCost": 0.8, "outputCost": 4, "context": 200000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
10
|
+
{"value": "us.anthropic.claude-opus-4-6-v1", "label": "Claude Opus 4.6 (Bedrock)", "provider": "anthropic", "inputCost": 15, "outputCost": 75, "context": 200000, "maxOutput": 32000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
11
|
+
{"value": "us.anthropic.claude-sonnet-4-6", "label": "Claude Sonnet 4.6 (Bedrock)", "provider": "anthropic", "inputCost": 3, "outputCost": 15, "context": 200000, "maxOutput": 64000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
12
|
+
{"value": "us.anthropic.claude-haiku-4-5-20251001-v1:0", "label": "Claude Haiku 4.5 (Bedrock)", "provider": "anthropic", "inputCost": 0.8, "outputCost": 4, "context": 200000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
13
|
+
{"value": "google/gemini-2.5-pro", "label": "Gemini 2.5 Pro", "provider": "google", "inputCost": 1.25, "outputCost": 10, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
14
|
+
{"value": "google/gemini-2.5-flash", "label": "Gemini 2.5 Flash", "provider": "google", "inputCost": 0.15, "outputCost": 0.6, "context": 1048576, "maxOutput": 65535, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
15
|
+
{"value": "google/gemini-2.5-flash-lite", "label": "Gemini 2.5 Flash Lite", "provider": "google", "inputCost": 0.075, "outputCost": 0.3, "context": 1048576, "maxOutput": 65535, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
16
|
+
{"value": "openai/gpt-4.1", "label": "GPT-4.1", "provider": "openai", "inputCost": 2, "outputCost": 8, "context": 1047576, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
17
|
+
{"value": "openai/gpt-4.1-mini", "label": "GPT-4.1 Mini", "provider": "openai", "inputCost": 0.4, "outputCost": 1.6, "context": 1047576, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
18
|
+
{"value": "openai/o3-mini", "label": "O3 Mini", "provider": "openai", "inputCost": 1.1, "outputCost": 4.4, "context": 200000, "maxOutput": 100000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
19
|
+
{"value": "openai/codex-mini", "label": "Codex Mini", "provider": "openai", "inputCost": 1.5, "outputCost": 6, "context": 200000, "maxOutput": 100000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
20
|
+
{"value": "deepseek/deepseek-v4-flash", "label": "DeepSeek V4 Flash", "provider": "deepseek", "inputCost": 0.098, "outputCost": 0.197, "context": 1048576, "maxOutput": 384000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
21
|
+
{"value": "deepseek/deepseek-v4-flash-0731", "label": "DeepSeek V4 Flash (0731)", "provider": "deepseek", "inputCost": 0.098, "outputCost": 0.197, "context": 1310720, "maxOutput": 384000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "cacheProfile": "{\"type\": \"prefix_hash\", \"provider_hint\": \"DeepSeek\"}", "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
22
|
+
{"value": "deepseek/deepseek-v4-pro", "label": "DeepSeek V4 Pro", "provider": "deepseek", "inputCost": 0.435, "outputCost": 0.87, "context": 1048576, "maxOutput": 384000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "cacheProfile": "{\"type\": \"prefix_hash\", \"provider_hint\": \"DeepSeek\"}", "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
23
|
+
{"value": "deepseek/deepseek-chat-v3-0324", "label": "DeepSeek V3", "provider": "deepseek", "inputCost": 0.27, "outputCost": 1.1, "context": 163840, "maxOutput": 163840, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
24
|
+
{"value": "deepseek/deepseek-r1-0528", "label": "DeepSeek R1 0528", "provider": "deepseek", "inputCost": 0.8, "outputCost": 2.4, "context": 163840, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
25
|
+
{"value": "deepseek/deepseek-reasoner", "label": "DeepSeek R1", "provider": "deepseek", "inputCost": 0.55, "outputCost": 2.19, "context": 131072, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
26
|
+
{"value": "qwen/qwen3-coder", "label": "Qwen3 Coder", "provider": "qwen", "inputCost": 0.2, "outputCost": 0.6, "context": 262144, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
27
|
+
{"value": "qwen/qwen3-235b-a22b", "label": "Qwen3 235B", "provider": "qwen", "inputCost": 0.7, "outputCost": 0.7, "context": 131072, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
28
|
+
{"value": "qwen/qwen3-30b-a3b", "label": "Qwen3 30B", "provider": "qwen", "inputCost": 0.14, "outputCost": 0.14, "context": 131072, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
29
|
+
{"value": "qwen/qwen3-32b", "label": "Qwen3 32B", "provider": "qwen", "inputCost": 0.2, "outputCost": 0.2, "context": 131072, "maxOutput": 16384, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
30
|
+
{"value": "qwen/qwen3-8b", "label": "Qwen3 8B", "provider": "qwen", "inputCost": 0.03, "outputCost": 0.05, "context": 131072, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
31
|
+
{"value": "qwen/qwen-2.5-coder-32b-instruct", "label": "Qwen 2.5 Coder 32B", "provider": "qwen", "inputCost": 0.07, "outputCost": 0.16, "context": 32768, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
32
|
+
{"value": "qwen/qwq-32b", "label": "QwQ 32B", "provider": "qwen", "inputCost": 0.2, "outputCost": 0.2, "context": 131072, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
33
|
+
{"value": "minimax/minimax-m3", "label": "MiniMax M3", "provider": "minimax", "inputCost": 0.5, "outputCost": 2.0, "context": 1048576, "maxOutput": 512000, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
34
|
+
{"value": "minimax/minimax-m2.1", "label": "MiniMax M2.1", "provider": "minimax", "inputCost": 0.3, "outputCost": 1.1, "context": 204800, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
35
|
+
{"value": "xiaomi/mimo-v2.5-pro", "label": "MiMo V2.5 Pro", "provider": "xiaomi", "inputCost": 0.5, "outputCost": 2.0, "context": 1050000, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
36
|
+
{"value": "xiaomi/mimo-v2.5", "label": "MiMo V2.5", "provider": "xiaomi", "inputCost": 0.3, "outputCost": 1.0, "context": 1050000, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "cacheProfile": "{\"type\": \"prefix_hash\", \"provider_hint\": \"Xiaomi\"}", "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
37
|
+
{"value": "xiaomi/mimo-v2-flash", "label": "MiMo V2 Flash", "provider": "xiaomi", "inputCost": 0.1, "outputCost": 0.3, "context": 131072, "maxOutput": 16384, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
38
|
+
{"value": "moonshotai/kimi-k2.5", "label": "Kimi K2.5", "provider": "kimi", "inputCost": 0.44, "outputCost": 2.0, "context": 262144, "maxOutput": 262144, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
39
|
+
{"value": "moonshotai/kimi-k2", "label": "Kimi K2", "provider": "kimi", "inputCost": 0.44, "outputCost": 2.0, "context": 131072, "maxOutput": 100352, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
40
|
+
{"value": "moonshotai/kimi-k2-instruct", "label": "Kimi K2 Instruct", "provider": "kimi", "inputCost": 0.44, "outputCost": 2.0, "context": 131072, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
41
|
+
{"value": "tencent/hy3", "label": "Tencent Hunyuan 3", "provider": "tencent", "inputCost": 0.3, "outputCost": 1.0, "context": 262144, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "cacheProfile": "{\"type\": \"prefix_hash\", \"provider_hint\": \"Tencent\"}", "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
42
|
+
{"value": "z-ai/glm-5.2", "label": "GLM 5.2", "provider": "zhipu", "inputCost": 0.95, "outputCost": 3.0, "context": 1048576, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
43
|
+
{"value": "z-ai/glm-5.1", "label": "GLM 5.1", "provider": "zhipu", "inputCost": 0.98, "outputCost": 3.08, "context": 204800, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
44
|
+
{"value": "z-ai/glm-5", "label": "GLM 5", "provider": "zhipu", "inputCost": 0.6, "outputCost": 1.92, "context": 204800, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
45
|
+
{"value": "z-ai/glm-5-turbo", "label": "GLM 5 Turbo", "provider": "zhipu", "inputCost": 1.2, "outputCost": 4.0, "context": 202752, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
46
|
+
{"value": "z-ai/glm-4.7", "label": "GLM 4.7", "provider": "zhipu", "inputCost": 0.4, "outputCost": 1.75, "context": 204800, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
47
|
+
{"value": "z-ai/glm-4.7-flash", "label": "GLM 4.7 Flash", "provider": "zhipu", "inputCost": 0.06, "outputCost": 0.4, "context": 202752, "maxOutput": 16384, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
48
|
+
{"value": "z-ai/glm-4.6", "label": "GLM 4.6", "provider": "zhipu", "inputCost": 0.43, "outputCost": 1.74, "context": 204800, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
49
|
+
{"value": "z-ai/glm-4.5", "label": "GLM 4.5", "provider": "zhipu", "inputCost": 0.6, "outputCost": 2.2, "context": 131072, "maxOutput": 98304, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
50
|
+
{"value": "z-ai/glm-4.5-air", "label": "GLM 4.5 Air", "provider": "zhipu", "inputCost": 0.13, "outputCost": 0.85, "context": 131072, "maxOutput": 98304, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
51
|
+
{"value": "meta-llama/llama-4-maverick", "label": "Llama 4 Maverick", "provider": "meta", "inputCost": 0.5, "outputCost": 0.77, "context": 1048576, "maxOutput": 16384, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
52
|
+
{"value": "meta-llama/llama-4-scout", "label": "Llama 4 Scout", "provider": "meta", "inputCost": 0.15, "outputCost": 0.42, "context": 1310720, "maxOutput": 16384, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
53
|
+
{"value": "meta-llama/llama-3.3-70b-instruct", "label": "Llama 3.3 70B", "provider": "meta", "inputCost": 0.1, "outputCost": 0.13, "context": 131072, "maxOutput": 16384, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
54
|
+
{"value": "mistralai/devstral-small", "label": "Devstral Small", "provider": "mistral", "inputCost": 0.1, "outputCost": 0.3, "context": 131072, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
55
|
+
{"value": "mistralai/mistral-large-2411", "label": "Mistral Large", "provider": "mistral", "inputCost": 2.0, "outputCost": 6.0, "context": 131072, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
56
|
+
{"value": "mistralai/codestral-2501", "label": "Codestral", "provider": "mistral", "inputCost": 0.3, "outputCost": 0.9, "context": 256000, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
57
|
+
{"value": "x-ai/grok-3", "label": "Grok 3", "provider": "xai", "inputCost": 3.0, "outputCost": 15.0, "context": 131072, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
58
|
+
{"value": "x-ai/grok-3-mini", "label": "Grok 3 Mini", "provider": "xai", "inputCost": 0.3, "outputCost": 0.5, "context": 131072, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
59
|
+
{"value": "stealth/ox-alpha", "label": "Stealth OX Alpha", "provider": "stealth", "inputCost": 0.3, "outputCost": 1.0, "context": 1048576, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "cacheProfile": "{\"type\": \"prefix_hash\", \"provider_hint\": \"Stealth\"}", "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
60
|
+
{"value": "upstage/solar-pro4", "label": "Solar Pro 4", "provider": "upstage", "inputCost": 0.3, "outputCost": 1.0, "context": 524288, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false, "cacheProfile": "{\"type\": \"prefix_hash\", \"provider_hint\": \"Upstage\"}", "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
61
|
+
{"value": "qwen/qwen3-coder:free", "label": "Qwen3 Coder (Free)", "provider": "qwen", "inputCost": 0, "outputCost": 0, "context": 131072, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
62
|
+
{"value": "xiaomi/mimo-v2-flash:free", "label": "MiMo V2 Flash (Free)", "provider": "xiaomi", "inputCost": 0, "outputCost": 0, "context": 131072, "maxOutput": 16384, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
63
|
+
{"value": "meta-llama/llama-3.3-70b-instruct:free", "label": "Llama 3.3 70B (Free)", "provider": "meta", "inputCost": 0, "outputCost": 0, "context": 131072, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
64
|
+
{"value": "qwen/qwen3-8b:free", "label": "Qwen3 8B (Free)", "provider": "qwen", "inputCost": 0, "outputCost": 0, "context": 131072, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
65
|
+
{"value": "nvidia/nemotron-3-ultra-550b-a55b:free", "label": "Nemotron 3 Ultra 550B (Free)", "provider": "nvidia", "inputCost": 0, "outputCost": 0, "context": 1000000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "cacheProfile": "{\"type\": \"prefix_hash\", \"provider_hint\": \"NVIDIA\"}", "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
66
|
+
{"value": "poolside/laguna-s-2.1:free", "label": "Poolside Laguna S 2.1 (Free)", "provider": "poolside", "inputCost": 0, "outputCost": 0, "context": 262144, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false, "cacheProfile": "{\"type\": \"prefix_hash\", \"provider_hint\": \"Poolside\"}", "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
67
|
+
{"value": "amazon/nova-2-lite-v1", "label": "Amazon: Nova 2 Lite", "provider": "amazon", "inputCost": 0.3, "outputCost": 2.5, "context": 1000000, "maxOutput": 65535, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
68
|
+
{"value": "amazon/nova-lite-v1", "label": "Amazon: Nova Lite 1.0", "provider": "amazon", "inputCost": 0.06, "outputCost": 0.24, "context": 300000, "maxOutput": 5120, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
69
|
+
{"value": "amazon/nova-premier-v1", "label": "Amazon: Nova Premier 1.0", "provider": "amazon", "inputCost": 2.5, "outputCost": 12.5, "context": 1000000, "maxOutput": 32000, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
70
|
+
{"value": "anthropic/claude-3-haiku", "label": "Anthropic: Claude 3 Haiku", "provider": "anthropic", "inputCost": 0.25, "outputCost": 1.25, "context": 200000, "maxOutput": 4096, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
71
|
+
{"value": "anthropic/claude-fable-5", "label": "Anthropic: Claude Fable 5", "provider": "anthropic", "inputCost": 10.0, "outputCost": 50.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
72
|
+
{"value": "anthropic/claude-haiku-4.5", "label": "Anthropic: Claude Haiku 4.5", "provider": "anthropic", "inputCost": 1.0, "outputCost": 5.0, "context": 200000, "maxOutput": 64000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
73
|
+
{"value": "anthropic/claude-opus-4", "label": "Anthropic: Claude Opus 4", "provider": "anthropic", "inputCost": 15.0, "outputCost": 75.0, "context": 200000, "maxOutput": 32000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
74
|
+
{"value": "anthropic/claude-opus-4.1", "label": "Anthropic: Claude Opus 4.1", "provider": "anthropic", "inputCost": 15.0, "outputCost": 75.0, "context": 200000, "maxOutput": 32000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
75
|
+
{"value": "anthropic/claude-opus-4.5", "label": "Anthropic: Claude Opus 4.5", "provider": "anthropic", "inputCost": 5.0, "outputCost": 25.0, "context": 200000, "maxOutput": 64000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
76
|
+
{"value": "anthropic/claude-opus-4.6", "label": "Anthropic: Claude Opus 4.6", "provider": "anthropic", "inputCost": 5.0, "outputCost": 25.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
77
|
+
{"value": "anthropic/claude-opus-4.7", "label": "Anthropic: Claude Opus 4.7", "provider": "anthropic", "inputCost": 5.0, "outputCost": 25.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
78
|
+
{"value": "anthropic/claude-opus-4.8", "label": "Anthropic: Claude Opus 4.8", "provider": "anthropic", "inputCost": 5.0, "outputCost": 25.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
79
|
+
{"value": "anthropic/claude-opus-4.8-fast", "label": "Anthropic: Claude Opus 4.8 (Fast)", "provider": "anthropic", "inputCost": 10.0, "outputCost": 50.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
80
|
+
{"value": "anthropic/claude-opus-5", "label": "Claude Opus 5", "provider": "anthropic", "inputCost": 5.0, "outputCost": 25.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
81
|
+
{"value": "anthropic/claude-opus-5-fast", "label": "Claude Opus 5 (Fast)", "provider": "anthropic", "inputCost": 10.0, "outputCost": 50.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
82
|
+
{"value": "anthropic/claude-sonnet-4", "label": "Anthropic: Claude Sonnet 4", "provider": "anthropic", "inputCost": 3.0, "outputCost": 15.0, "context": 1000000, "maxOutput": 64000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
83
|
+
{"value": "anthropic/claude-sonnet-4.5", "label": "Anthropic: Claude Sonnet 4.5", "provider": "anthropic", "inputCost": 3.0, "outputCost": 15.0, "context": 1000000, "maxOutput": 64000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
84
|
+
{"value": "anthropic/claude-sonnet-4.6", "label": "Anthropic: Claude Sonnet 4.6", "provider": "anthropic", "inputCost": 3.0, "outputCost": 15.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
85
|
+
{"value": "anthropic/claude-sonnet-5", "label": "Anthropic: Claude Sonnet 5", "provider": "anthropic", "inputCost": 2.0, "outputCost": 10.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
86
|
+
{"value": "cohere/north-mini-code:free", "label": "Cohere: North Mini Code (free)", "provider": "cohere", "inputCost": 0.0, "outputCost": 0.0, "context": 256000, "maxOutput": 64000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
87
|
+
{"value": "deepseek/deepseek-chat-v3.1", "label": "DeepSeek: DeepSeek V3.1", "provider": "deepseek", "inputCost": 0.55, "outputCost": 1.65, "context": 163840, "maxOutput": 161000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
88
|
+
{"value": "deepseek/deepseek-v3.1-terminus", "label": "DeepSeek: DeepSeek V3.1 Terminus", "provider": "deepseek", "inputCost": 0.27, "outputCost": 1.0, "context": 163840, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
89
|
+
{"value": "deepseek/deepseek-v3.2", "label": "DeepSeek: DeepSeek V3.2", "provider": "deepseek", "inputCost": 0.26, "outputCost": 0.38, "context": 163840, "maxOutput": 163840, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
90
|
+
{"value": "deepseek/deepseek-v3.2-exp", "label": "DeepSeek: DeepSeek V3.2 Exp", "provider": "deepseek", "inputCost": 0.27, "outputCost": 0.41, "context": 163840, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
91
|
+
{"value": "deepseek/deepseek-v4-pro-0813", "label": "DeepSeek: DeepSeek V4 Pro 0813", "provider": "deepseek", "inputCost": 1.122, "outputCost": 3.366, "context": 1048576, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
92
|
+
{"value": "dots-studio/dots-3-note-preview:free", "label": "Dots Studio: Dots3-Note Preview (free)", "provider": "dots-studio", "inputCost": 0.0, "outputCost": 0.0, "context": 512000, "maxOutput": 512000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
93
|
+
{"value": "google/gemini-2.5-pro-preview", "label": "Google: Gemini 2.5 Pro Preview 06-05", "provider": "google", "inputCost": 1.25, "outputCost": 10.0, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
94
|
+
{"value": "google/gemini-2.5-pro-preview-05-06", "label": "Google: Gemini 2.5 Pro Preview 05-06", "provider": "google", "inputCost": 1.25, "outputCost": 10.0, "context": 1048576, "maxOutput": 65535, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
95
|
+
{"value": "google/gemini-3-flash-preview", "label": "Google: Gemini 3 Flash Preview", "provider": "google", "inputCost": 0.5, "outputCost": 3.0, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
96
|
+
{"value": "google/gemini-3-pro-image", "label": "Google: Nano Banana Pro (Gemini 3 Pro Image)", "provider": "google", "inputCost": 2.0, "outputCost": 12.0, "context": 131072, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
97
|
+
{"value": "google/gemini-3.1-flash-lite", "label": "Google: Gemini 3.1 Flash Lite", "provider": "google", "inputCost": 0.25, "outputCost": 1.5, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
98
|
+
{"value": "google/gemini-3.1-flash-lite-preview", "label": "Google: Gemini 3.1 Flash Lite Preview", "provider": "google", "inputCost": 0.25, "outputCost": 1.5, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
99
|
+
{"value": "google/gemini-3.1-pro-preview", "label": "Google: Gemini 3.1 Pro Preview", "provider": "google", "inputCost": 2.0, "outputCost": 12.0, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
100
|
+
{"value": "google/gemini-3.1-pro-preview-customtools", "label": "Google: Gemini 3.1 Pro Preview Custom Tools", "provider": "google", "inputCost": 2.0, "outputCost": 12.0, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
101
|
+
{"value": "google/gemini-3.5-flash", "label": "Google: Gemini 3.5 Flash", "provider": "google", "inputCost": 1.5, "outputCost": 9.0, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
102
|
+
{"value": "google/gemini-3.5-flash-lite", "label": "Google: Gemini 3.5 Flash Lite", "provider": "google", "inputCost": 0.3, "outputCost": 2.5, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
103
|
+
{"value": "google/gemini-3.6-flash", "label": "Google: Gemini 3.6 Flash", "provider": "google", "inputCost": 0.75, "outputCost": 3.75, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
104
|
+
{"value": "google/gemini-3.7-flash", "label": "Google: Gemini 3.7 Flash", "provider": "google", "inputCost": 0.375, "outputCost": 1.875, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
105
|
+
{"value": "google/gemma-4-26b-a4b-it", "label": "Google: Gemma 4 26B A4B ", "provider": "google", "inputCost": 0.07, "outputCost": 0.34, "context": 262144, "maxOutput": 16384, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
106
|
+
{"value": "kwaipilot/kat-coder-pro-v2", "label": "Kwaipilot: KAT-Coder-Pro V2", "provider": "kwaipilot", "inputCost": 0.3, "outputCost": 1.2, "context": 262144, "maxOutput": 80000, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
107
|
+
{"value": "meituan/longcat-2.0", "label": "Meituan: LongCat 2.0", "provider": "meituan", "inputCost": 0.3, "outputCost": 1.2, "context": 1048756, "maxOutput": 262144, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
108
|
+
{"value": "meta-llama/llama-3.1-8b-instruct", "label": "Meta: Llama 3.1 8B Instruct", "provider": "meta-llama", "inputCost": 0.05, "outputCost": 0.08, "context": 131072, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
109
|
+
{"value": "minimax/minimax-m1", "label": "MiniMax: MiniMax M1", "provider": "minimax", "inputCost": 0.55, "outputCost": 2.2, "context": 1000000, "maxOutput": 40000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
110
|
+
{"value": "minimax/minimax-m2", "label": "MiniMax: MiniMax M2", "provider": "minimax", "inputCost": 0.255, "outputCost": 1.02, "context": 204800, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
111
|
+
{"value": "minimax/minimax-m2.5", "label": "MiniMax: MiniMax M2.5", "provider": "minimax", "inputCost": 0.27, "outputCost": 1.08, "context": 204800, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
112
|
+
{"value": "minimax/minimax-m2.7", "label": "MiniMax: MiniMax M2.7", "provider": "minimax", "inputCost": 0.24, "outputCost": 0.96, "context": 204800, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
113
|
+
{"value": "mistralai/codestral-2508", "label": "Mistral: Codestral 2508", "provider": "mistralai", "inputCost": 0.3, "outputCost": 0.9, "context": 256000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
114
|
+
{"value": "mistralai/ministral-14b-2512", "label": "Mistral: Ministral 3 14B 2512", "provider": "mistralai", "inputCost": 0.2, "outputCost": 0.2, "context": 262144, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
115
|
+
{"value": "mistralai/ministral-3b-2512", "label": "Mistral: Ministral 3 3B 2512", "provider": "mistralai", "inputCost": 0.1, "outputCost": 0.1, "context": 131072, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
116
|
+
{"value": "mistralai/ministral-8b-2512", "label": "Mistral: Ministral 3 8B 2512", "provider": "mistralai", "inputCost": 0.15, "outputCost": 0.15, "context": 262144, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
117
|
+
{"value": "mistralai/mistral-large-2407", "label": "Mistral Large 2407", "provider": "mistralai", "inputCost": 2.0, "outputCost": 6.0, "context": 131072, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
118
|
+
{"value": "mistralai/mistral-large-2512", "label": "Mistral: Mistral Large 3 2512", "provider": "mistralai", "inputCost": 0.5, "outputCost": 1.5, "context": 262144, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
119
|
+
{"value": "mistralai/mistral-medium-3", "label": "Mistral: Mistral Medium 3", "provider": "mistralai", "inputCost": 0.4, "outputCost": 2.0, "context": 131072, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
120
|
+
{"value": "mistralai/mistral-medium-3-5", "label": "Mistral: Mistral Medium 3.5", "provider": "mistralai", "inputCost": 1.5, "outputCost": 7.5, "context": 262144, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
121
|
+
{"value": "mistralai/mistral-medium-3.1", "label": "Mistral: Mistral Medium 3.1", "provider": "mistralai", "inputCost": 0.4, "outputCost": 2.0, "context": 131072, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
122
|
+
{"value": "mistralai/mistral-small-2603", "label": "Mistral: Mistral Small 4", "provider": "mistralai", "inputCost": 0.15, "outputCost": 0.6, "context": 262144, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
123
|
+
{"value": "moonshotai/kimi-k2-thinking", "label": "MoonshotAI: Kimi K2 Thinking", "provider": "moonshotai", "inputCost": 0.6, "outputCost": 2.5, "context": 262144, "maxOutput": 100352, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
124
|
+
{"value": "moonshotai/kimi-k2.6", "label": "MoonshotAI: Kimi K2.6", "provider": "moonshotai", "inputCost": 0.95, "outputCost": 4.0, "context": 262144, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
125
|
+
{"value": "moonshotai/kimi-k2.7-code", "label": "MoonshotAI: Kimi K2.7 Code", "provider": "moonshotai", "inputCost": 0.67, "outputCost": 3.4, "context": 262144, "maxOutput": 262144, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
126
|
+
{"value": "moonshotai/kimi-k3", "label": "MoonshotAI: Kimi K3", "provider": "moonshotai", "inputCost": 3.0, "outputCost": 15.0, "context": 1048576, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
127
|
+
{"value": "nvidia/nemotron-3-nano-30b-a3b:free", "label": "NVIDIA: Nemotron 3 Nano 30B A3B (free)", "provider": "nvidia", "inputCost": 0.0, "outputCost": 0.0, "context": 256000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
128
|
+
{"value": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", "label": "NVIDIA: Nemotron 3 Nano Omni (free)", "provider": "nvidia", "inputCost": 0.0, "outputCost": 0.0, "context": 256000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
129
|
+
{"value": "nvidia/nemotron-3-super-120b-a12b:free", "label": "NVIDIA: Nemotron 3 Super (free)", "provider": "nvidia", "inputCost": 0.0, "outputCost": 0.0, "context": 262144, "maxOutput": 262144, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
130
|
+
{"value": "nvidia/nemotron-3.5-lightning:free", "label": "NVIDIA: Nemotron 3.5 Lightning (free)", "provider": "nvidia", "inputCost": 0.0, "outputCost": 0.0, "context": 1000000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
131
|
+
{"value": "openai/gpt-4.1-nano", "label": "OpenAI: GPT-4.1 Nano", "provider": "openai", "inputCost": 0.1, "outputCost": 0.4, "context": 1047576, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
132
|
+
{"value": "openai/gpt-5", "label": "OpenAI: GPT-5", "provider": "openai", "inputCost": 1.25, "outputCost": 10.0, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
133
|
+
{"value": "openai/gpt-5-mini", "label": "OpenAI: GPT-5 Mini", "provider": "openai", "inputCost": 0.25, "outputCost": 2.0, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
134
|
+
{"value": "openai/gpt-5-nano", "label": "OpenAI: GPT-5 Nano", "provider": "openai", "inputCost": 0.05, "outputCost": 0.4, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
135
|
+
{"value": "openai/gpt-5.1", "label": "OpenAI: GPT-5.1", "provider": "openai", "inputCost": 1.25, "outputCost": 10.0, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
136
|
+
{"value": "openai/gpt-5.2", "label": "OpenAI: GPT-5.2", "provider": "openai", "inputCost": 1.75, "outputCost": 14.0, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
137
|
+
{"value": "openai/gpt-5.2-pro", "label": "OpenAI: GPT-5.2 Pro", "provider": "openai", "inputCost": 21.0, "outputCost": 168.0, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
138
|
+
{"value": "openai/gpt-5.3-codex", "label": "OpenAI: GPT-5.3-Codex", "provider": "openai", "inputCost": 1.75, "outputCost": 14.0, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
139
|
+
{"value": "openai/gpt-5.4", "label": "OpenAI: GPT-5.4", "provider": "openai", "inputCost": 2.5, "outputCost": 15.0, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
140
|
+
{"value": "openai/gpt-5.4-mini", "label": "OpenAI: GPT-5.4 Mini", "provider": "openai", "inputCost": 0.75, "outputCost": 4.5, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
141
|
+
{"value": "openai/gpt-5.4-nano", "label": "OpenAI: GPT-5.4 Nano", "provider": "openai", "inputCost": 0.2, "outputCost": 1.25, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
142
|
+
{"value": "openai/gpt-5.4-pro", "label": "OpenAI: GPT-5.4 Pro", "provider": "openai", "inputCost": 30.0, "outputCost": 180.0, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
143
|
+
{"value": "openai/gpt-5.5", "label": "OpenAI: GPT-5.5", "provider": "openai", "inputCost": 5.0, "outputCost": 30.0, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
144
|
+
{"value": "openai/gpt-5.5-pro", "label": "OpenAI: GPT-5.5 Pro", "provider": "openai", "inputCost": 30.0, "outputCost": 180.0, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
145
|
+
{"value": "openai/gpt-5.6-luna", "label": "OpenAI: GPT-5.6 Luna", "provider": "openai", "inputCost": 0.2, "outputCost": 1.2, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
146
|
+
{"value": "openai/gpt-5.6-luna-pro", "label": "OpenAI: GPT-5.6 Luna Pro", "provider": "openai", "inputCost": 0.2, "outputCost": 1.2, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
147
|
+
{"value": "openai/gpt-5.6-sol", "label": "OpenAI: GPT-5.6 Sol", "provider": "openai", "inputCost": 2.0, "outputCost": 10.0, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
148
|
+
{"value": "openai/gpt-5.6-sol-pro", "label": "OpenAI: GPT-5.6 Sol Pro", "provider": "openai", "inputCost": 2.0, "outputCost": 10.0, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
149
|
+
{"value": "openai/gpt-5.6-terra", "label": "OpenAI: GPT-5.6 Terra", "provider": "openai", "inputCost": 2.0, "outputCost": 12.0, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
150
|
+
{"value": "openai/gpt-5.6-terra-pro", "label": "OpenAI: GPT-5.6 Terra Pro", "provider": "openai", "inputCost": 2.0, "outputCost": 12.0, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
151
|
+
{"value": "openai/gpt-chat-latest", "label": "OpenAI: GPT Chat Latest", "provider": "openai", "inputCost": 5.0, "outputCost": 30.0, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
152
|
+
{"value": "openai/gpt-oss-120b", "label": "OpenAI: gpt-oss-120b", "provider": "openai", "inputCost": 0.037, "outputCost": 0.17, "context": 131072, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
153
|
+
{"value": "openai/gpt-oss-20b", "label": "OpenAI: gpt-oss-20b", "provider": "openai", "inputCost": 0.03, "outputCost": 0.13, "context": 131072, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
154
|
+
{"value": "openai/gpt-oss-safeguard-20b", "label": "OpenAI: gpt-oss-safeguard-20b", "provider": "openai", "inputCost": 0.075, "outputCost": 0.3, "context": 131072, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
155
|
+
{"value": "openai/o1", "label": "OpenAI: o1", "provider": "openai", "inputCost": 15.0, "outputCost": 60.0, "context": 200000, "maxOutput": 100000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
156
|
+
{"value": "openai/o3", "label": "OpenAI: o3", "provider": "openai", "inputCost": 2.0, "outputCost": 8.0, "context": 200000, "maxOutput": 100000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
157
|
+
{"value": "openai/o3-mini-high", "label": "OpenAI: o3 Mini High", "provider": "openai", "inputCost": 1.1, "outputCost": 4.4, "context": 200000, "maxOutput": 100000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
158
|
+
{"value": "openai/o3-pro", "label": "OpenAI: o3 Pro", "provider": "openai", "inputCost": 20.0, "outputCost": 80.0, "context": 200000, "maxOutput": 100000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
159
|
+
{"value": "openai/o4-mini", "label": "OpenAI: o4 Mini", "provider": "openai", "inputCost": 1.1, "outputCost": 4.4, "context": 200000, "maxOutput": 100000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
160
|
+
{"value": "openai/o4-mini-high", "label": "OpenAI: o4 Mini High", "provider": "openai", "inputCost": 1.1, "outputCost": 4.4, "context": 200000, "maxOutput": 100000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
161
|
+
{"value": "openrouter/auto", "label": "Auto Router", "provider": "openrouter", "inputCost": 0, "outputCost": 0, "context": 2000000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false, "note": "meta-router / dynamic pricing — not valid for harness"},
|
|
162
|
+
{"value": "openrouter/auto-beta", "label": "Auto Router (Beta)", "provider": "openrouter", "inputCost": 0, "outputCost": 0, "context": 2000000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false, "note": "meta-router / dynamic pricing — not valid for harness"},
|
|
163
|
+
{"value": "openrouter/free", "label": "Free Models Router", "provider": "openrouter", "inputCost": 0.0, "outputCost": 0.0, "context": 200000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
164
|
+
{"value": "qwen/qwen-plus", "label": "Qwen: Qwen-Plus", "provider": "qwen", "inputCost": 0.26, "outputCost": 0.78, "context": 1000000, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
165
|
+
{"value": "qwen/qwen-plus-2025-07-28", "label": "Qwen: Qwen Plus 0728", "provider": "qwen", "inputCost": 0.26, "outputCost": 0.78, "context": 1000000, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
166
|
+
{"value": "qwen/qwen-plus-2025-07-28:thinking", "label": "Qwen: Qwen Plus 0728 (thinking)", "provider": "qwen", "inputCost": 0.26, "outputCost": 0.78, "context": 1000000, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
167
|
+
{"value": "qwen/qwen3-235b-a22b-2507", "label": "Qwen: Qwen3 235B A22B Instruct 2507", "provider": "qwen", "inputCost": 0.09, "outputCost": 0.55, "context": 262144, "maxOutput": 16384, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
168
|
+
{"value": "qwen/qwen3-235b-a22b-thinking-2507", "label": "Qwen: Qwen3 235B A22B Thinking 2507", "provider": "qwen", "inputCost": 0.23, "outputCost": 2.3, "context": 262144, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
169
|
+
{"value": "qwen/qwen3-30b-a3b-instruct-2507", "label": "Qwen: Qwen3 30B A3B Instruct 2507", "provider": "qwen", "inputCost": 0.048, "outputCost": 0.193, "context": 262144, "maxOutput": 32000, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
170
|
+
{"value": "qwen/qwen3-coder-30b-a3b-instruct", "label": "Qwen: Qwen3 Coder 30B A3B Instruct", "provider": "qwen", "inputCost": 0.07, "outputCost": 0.28, "context": 262144, "maxOutput": 262144, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
171
|
+
{"value": "qwen/qwen3-coder-flash", "label": "Qwen: Qwen3 Coder Flash", "provider": "qwen", "inputCost": 0.195, "outputCost": 0.975, "context": 1000000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
172
|
+
{"value": "qwen/qwen3-coder-next", "label": "Qwen: Qwen3 Coder Next", "provider": "qwen", "inputCost": 0.12, "outputCost": 0.8, "context": 262144, "maxOutput": 262144, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
173
|
+
{"value": "qwen/qwen3-coder-plus", "label": "Qwen: Qwen3 Coder Plus", "provider": "qwen", "inputCost": 0.65, "outputCost": 3.25, "context": 1000000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
174
|
+
{"value": "qwen/qwen3-max", "label": "Qwen: Qwen3 Max", "provider": "qwen", "inputCost": 0.78, "outputCost": 3.9, "context": 262144, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
175
|
+
{"value": "qwen/qwen3-max-thinking", "label": "Qwen: Qwen3 Max Thinking", "provider": "qwen", "inputCost": 0.78, "outputCost": 3.9, "context": 262144, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
176
|
+
{"value": "qwen/qwen3-next-80b-a3b-instruct", "label": "Qwen: Qwen3 Next 80B A3B Instruct", "provider": "qwen", "inputCost": 0.1, "outputCost": 1.1, "context": 262144, "maxOutput": 262144, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
177
|
+
{"value": "qwen/qwen3-vl-235b-a22b-instruct", "label": "Qwen: Qwen3 VL 235B A22B Instruct", "provider": "qwen", "inputCost": 0.21, "outputCost": 1.9, "context": 262144, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
178
|
+
{"value": "qwen/qwen3-vl-235b-a22b-thinking", "label": "Qwen: Qwen3 VL 235B A22B Thinking", "provider": "qwen", "inputCost": 0.4, "outputCost": 4.0, "context": 131072, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
179
|
+
{"value": "qwen/qwen3-vl-30b-a3b-instruct", "label": "Qwen: Qwen3 VL 30B A3B Instruct", "provider": "qwen", "inputCost": 0.13, "outputCost": 0.52, "context": 262144, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
180
|
+
{"value": "qwen/qwen3-vl-30b-a3b-thinking", "label": "Qwen: Qwen3 VL 30B A3B Thinking", "provider": "qwen", "inputCost": 0.2, "outputCost": 2.4, "context": 262144, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
181
|
+
{"value": "qwen/qwen3-vl-32b-instruct", "label": "Qwen: Qwen3 VL 32B Instruct", "provider": "qwen", "inputCost": 0.104, "outputCost": 0.416, "context": 131072, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
182
|
+
{"value": "qwen/qwen3-vl-8b-instruct", "label": "Qwen: Qwen3 VL 8B Instruct", "provider": "qwen", "inputCost": 0.117, "outputCost": 0.455, "context": 262144, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
183
|
+
{"value": "qwen/qwen3-vl-8b-thinking", "label": "Qwen: Qwen3 VL 8B Thinking", "provider": "qwen", "inputCost": 0.18, "outputCost": 2.1, "context": 131072, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
184
|
+
{"value": "qwen/qwen3.5-122b-a10b", "label": "Qwen: Qwen3.5-122B-A10B", "provider": "qwen", "inputCost": 0.26, "outputCost": 2.08, "context": 262144, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
185
|
+
{"value": "qwen/qwen3.5-27b", "label": "Qwen: Qwen3.5-27B", "provider": "qwen", "inputCost": 0.195, "outputCost": 1.56, "context": 262144, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
186
|
+
{"value": "qwen/qwen3.5-35b-a3b", "label": "Qwen: Qwen3.5-35B-A3B", "provider": "qwen", "inputCost": 0.25, "outputCost": 1.25, "context": 262144, "maxOutput": 262144, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
187
|
+
{"value": "qwen/qwen3.5-397b-a17b", "label": "Qwen: Qwen3.5 397B A17B", "provider": "qwen", "inputCost": 0.39, "outputCost": 2.34, "context": 262144, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
188
|
+
{"value": "qwen/qwen3.5-flash-02-23", "label": "Qwen: Qwen3.5-Flash", "provider": "qwen", "inputCost": 0.065, "outputCost": 0.26, "context": 1000000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
189
|
+
{"value": "qwen/qwen3.5-plus-02-15", "label": "Qwen: Qwen3.5 Plus 2026-02-15", "provider": "qwen", "inputCost": 0.26, "outputCost": 1.56, "context": 1000000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
190
|
+
{"value": "qwen/qwen3.5-plus-20260420", "label": "Qwen: Qwen3.5 Plus 2026-04-20", "provider": "qwen", "inputCost": 0.3, "outputCost": 1.8, "context": 1000000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
191
|
+
{"value": "qwen/qwen3.6-27b", "label": "Qwen: Qwen3.6 27B", "provider": "qwen", "inputCost": 0.6, "outputCost": 3.6, "context": 262144, "maxOutput": 262144, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
192
|
+
{"value": "qwen/qwen3.6-35b-a3b", "label": "Qwen: Qwen3.6 35B A3B", "provider": "qwen", "inputCost": 0.14, "outputCost": 1.0, "context": 262144, "maxOutput": 262144, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
193
|
+
{"value": "qwen/qwen3.6-flash", "label": "Qwen: Qwen3.6 Flash", "provider": "qwen", "inputCost": 0.188, "outputCost": 1.125, "context": 1000000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
194
|
+
{"value": "qwen/qwen3.6-max-preview", "label": "Qwen: Qwen3.6 Max Preview", "provider": "qwen", "inputCost": 1.027, "outputCost": 6.162, "context": 262144, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
195
|
+
{"value": "qwen/qwen3.6-plus", "label": "Qwen: Qwen3.6 Plus", "provider": "qwen", "inputCost": 0.325, "outputCost": 1.95, "context": 1000000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
196
|
+
{"value": "qwen/qwen3.7-flash", "label": "Qwen: Qwen3.7 Flash", "provider": "qwen", "inputCost": 0.03, "outputCost": 0.13, "context": 1000000, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
197
|
+
{"value": "qwen/qwen3.7-max", "label": "Qwen: Qwen3.7 Max", "provider": "qwen", "inputCost": 1.475, "outputCost": 4.425, "context": 1000000, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
198
|
+
{"value": "qwen/qwen3.7-plus", "label": "Qwen: Qwen3.7 Plus", "provider": "qwen", "inputCost": 0.32, "outputCost": 1.28, "context": 1000000, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
199
|
+
{"value": "qwen/qwen3.8-2.4t-a95b", "label": "Qwen: Qwen3.8 2.4T A95B", "provider": "qwen", "inputCost": 2.0, "outputCost": 6.0, "context": 1048576, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
200
|
+
{"value": "qwen/qwen3.8-27b", "label": "Qwen: Qwen3.8 27B", "provider": "qwen", "inputCost": 0.4, "outputCost": 3.0, "context": 1000000, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
201
|
+
{"value": "qwen/qwen3.8-max", "label": "Qwen: Qwen3.8 Max", "provider": "qwen", "inputCost": 2.0, "outputCost": 6.0, "context": 1000000, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
202
|
+
{"value": "x-ai/grok-4.20", "label": "SpaceXAI: Grok 4.20", "provider": "x-ai", "inputCost": 1.25, "outputCost": 2.5, "context": 2000000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
203
|
+
{"value": "x-ai/grok-4.3", "label": "SpaceXAI: Grok 4.3", "provider": "x-ai", "inputCost": 1.25, "outputCost": 2.5, "context": 1000000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
204
|
+
{"value": "x-ai/grok-4.5", "label": "SpaceXAI: Grok 4.5", "provider": "x-ai", "inputCost": 2.0, "outputCost": 6.0, "context": 500000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
205
|
+
{"value": "x-ai/grok-4.6", "label": "SpaceXAI: Grok 4.6", "provider": "x-ai", "inputCost": 2.0, "outputCost": 6.0, "context": 500000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
206
|
+
{"value": "x-ai/grok-build-0.1", "label": "SpaceXAI: Grok Build 0.1", "provider": "x-ai", "inputCost": 1.0, "outputCost": 2.0, "context": 256000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
207
|
+
{"value": "z-ai/glm-4.6v", "label": "Z.ai: GLM 4.6V", "provider": "z-ai", "inputCost": 0.3, "outputCost": 0.9, "context": 131072, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
208
|
+
{"value": "z-ai/glm-5.3", "label": "Z.ai: GLM 5.3", "provider": "z-ai", "inputCost": 1.4, "outputCost": 4.4, "context": 1048576, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
209
|
+
{"value": "z-ai/glm-5v-turbo", "label": "Z.ai: GLM 5V Turbo", "provider": "z-ai", "inputCost": 1.2, "outputCost": 4.0, "context": 202752, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
210
|
+
{"value": "~anthropic/claude-fable-latest", "label": "Anthropic: Claude Fable Latest", "provider": "~anthropic", "inputCost": 10.0, "outputCost": 50.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
211
|
+
{"value": "~anthropic/claude-haiku-latest", "label": "Anthropic Claude Haiku Latest", "provider": "~anthropic", "inputCost": 1.0, "outputCost": 5.0, "context": 200000, "maxOutput": 64000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
212
|
+
{"value": "~anthropic/claude-opus-latest", "label": "Anthropic: Claude Opus Latest", "provider": "~anthropic", "inputCost": 5.0, "outputCost": 25.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
213
|
+
{"value": "~anthropic/claude-sonnet-latest", "label": "Anthropic Claude Sonnet Latest", "provider": "~anthropic", "inputCost": 2.0, "outputCost": 10.0, "context": 1000000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
214
|
+
{"value": "~google/gemini-flash-latest", "label": "Google Gemini Flash Latest", "provider": "~google", "inputCost": 0.375, "outputCost": 1.875, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
215
|
+
{"value": "~moonshotai/kimi-latest", "label": "MoonshotAI Kimi Latest", "provider": "~moonshotai", "inputCost": 2.6, "outputCost": 13.0, "context": 1048576, "maxOutput": 974842, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
216
|
+
{"value": "~openai/gpt-latest", "label": "OpenAI GPT Latest", "provider": "~openai", "inputCost": 2.0, "outputCost": 10.0, "context": 1050000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
217
|
+
{"value": "~openai/gpt-mini-latest", "label": "OpenAI GPT Mini Latest", "provider": "~openai", "inputCost": 0.75, "outputCost": 4.5, "context": 400000, "maxOutput": 128000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
218
|
+
{"value": "~x-ai/grok-latest", "label": "xAI: Grok Latest", "provider": "~x-ai", "inputCost": 2.0, "outputCost": 6.0, "context": 500000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
219
|
+
{"value": "~z-ai/glm-latest", "label": "Z.ai: GLM Latest", "provider": "~z-ai", "inputCost": 1.4, "outputCost": 4.4, "context": 1048576, "maxOutput": 131072, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]}
|
|
220
|
+
]
|
|
221
|
+
}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shipped model catalog snapshot —
|
|
2
|
+
* Shipped model catalog snapshot — CLI-side default list.
|
|
3
3
|
*
|
|
4
4
|
* The canonical source is `codekepler-backend/app/services/
|
|
5
|
-
* model_catalog_snapshot.json
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* model_catalog_snapshot.json`. That file is copied into this package at
|
|
6
|
+
* publish time (see `scripts/sync-catalog.mjs`, wired to `prepublishOnly`)
|
|
7
|
+
* and lives at `src/config/model-catalog-default.json` inside the shipped
|
|
8
|
+
* CLI. Fresh installs see the up-to-date default catalog without needing
|
|
9
|
+
* to hit the backend on first launch.
|
|
10
|
+
*
|
|
11
|
+
* Legacy fallback: older installs may still have the file inside an
|
|
12
|
+
* `@bahulam/runtime-<platform>-<arch>` optional dep from the pre-server-
|
|
13
|
+
* agent-execution era. If our own copy isn't present, we try that path
|
|
14
|
+
* before giving up. This fallback can be removed once the runtime bundle
|
|
15
|
+
* is no longer published.
|
|
11
16
|
*/
|
|
12
17
|
|
|
13
18
|
import * as fs from 'node:fs';
|
|
19
|
+
import * as path from 'node:path';
|
|
20
|
+
import { fileURLToPath } from 'node:url';
|
|
14
21
|
import { runtimeSnapshotPath } from '../core/bundled-runtime.mjs';
|
|
15
22
|
|
|
23
|
+
const _dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
24
|
+
const CLI_DEFAULT_CATALOG_PATH = path.join(_dirname, 'model-catalog-default.json');
|
|
25
|
+
|
|
16
26
|
let _cache = null;
|
|
17
27
|
|
|
18
28
|
// Snapshot rows are camelCase (matches how the backend delivers the
|
|
@@ -37,21 +47,46 @@ function normalizeSnapshotRow(row) {
|
|
|
37
47
|
};
|
|
38
48
|
}
|
|
39
49
|
|
|
50
|
+
function _readJson(p) {
|
|
51
|
+
try {
|
|
52
|
+
const raw = fs.readFileSync(p, 'utf-8');
|
|
53
|
+
const data = JSON.parse(raw);
|
|
54
|
+
const rows = Array.isArray(data?.models) ? data.models : [];
|
|
55
|
+
const normalized = rows.map(normalizeSnapshotRow).filter(Boolean);
|
|
56
|
+
return normalized.length ? normalized : null;
|
|
57
|
+
} catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
40
62
|
/**
|
|
41
|
-
* Read the shipped catalog snapshot
|
|
42
|
-
*
|
|
43
|
-
*
|
|
63
|
+
* Read the shipped catalog snapshot. Tries CLI-bundled default first
|
|
64
|
+
* (`src/config/model-catalog-default.json`, refreshed at publish time
|
|
65
|
+
* via `scripts/sync-catalog.mjs`), then falls back to the legacy
|
|
66
|
+
* `@bahulam/runtime-*` bundle path for older installs. Cached after
|
|
67
|
+
* first success. Returns null if neither path yields data.
|
|
44
68
|
*/
|
|
45
69
|
export function readShippedCatalog() {
|
|
46
70
|
if (_cache !== null) return _cache;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
_cache =
|
|
71
|
+
|
|
72
|
+
// Preferred: CLI-bundled default catalog.
|
|
73
|
+
const own = _readJson(CLI_DEFAULT_CATALOG_PATH);
|
|
74
|
+
if (own) {
|
|
75
|
+
_cache = own;
|
|
52
76
|
return _cache;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Legacy fallback: runtime wheel copy (pre-server-execution architecture).
|
|
80
|
+
try {
|
|
81
|
+
const runtime = _readJson(runtimeSnapshotPath());
|
|
82
|
+
if (runtime) {
|
|
83
|
+
_cache = runtime;
|
|
84
|
+
return _cache;
|
|
85
|
+
}
|
|
53
86
|
} catch {
|
|
54
|
-
|
|
55
|
-
return null;
|
|
87
|
+
// runtimeSnapshotPath() itself may throw when the optional dep is absent
|
|
56
88
|
}
|
|
89
|
+
|
|
90
|
+
_cache = null;
|
|
91
|
+
return null;
|
|
57
92
|
}
|
|
@@ -76,6 +76,23 @@ function sleep(ms) {
|
|
|
76
76
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
function envMs(name, fallback) {
|
|
80
|
+
const raw = Number(process.env[name] || fallback);
|
|
81
|
+
return Number.isFinite(raw) && raw > 0 ? raw : fallback;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function transportDebugEnabled() {
|
|
85
|
+
const raw = String(process.env.BAHULAM_TRANSPORT_DEBUG || '').toLowerCase();
|
|
86
|
+
return raw === '1' || raw === 'true' || raw === 'yes' || raw === 'on';
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function transportDebug(message, data = {}) {
|
|
90
|
+
if (!transportDebugEnabled()) return;
|
|
91
|
+
try {
|
|
92
|
+
process.stderr.write(`[transport] ${message} ${JSON.stringify(data)}\n`);
|
|
93
|
+
} catch {}
|
|
94
|
+
}
|
|
95
|
+
|
|
79
96
|
// Full jitter around the scheduled delay: pick a value in [delay*0.5, delay*1.5].
|
|
80
97
|
// Spreads out reconnect storms so N clients dropping simultaneously don't
|
|
81
98
|
// synchronize their retries. Clamped to the same 30s ceiling as the base delay.
|
|
@@ -223,6 +240,7 @@ export class TarangStreamClient {
|
|
|
223
240
|
async *execute(instruction, context = {}, messages = null) {
|
|
224
241
|
this._cancelled = false;
|
|
225
242
|
this.currentTaskId = null;
|
|
243
|
+
this._firstEventTimedOut = false;
|
|
226
244
|
|
|
227
245
|
// Bundled mode: spawn the local Python runtime on first turn.
|
|
228
246
|
// After this, this.baseUrl points at http://127.0.0.1:<random-port>
|
|
@@ -233,6 +251,7 @@ export class TarangStreamClient {
|
|
|
233
251
|
const body = { instruction, context };
|
|
234
252
|
if (messages && messages.length > 0) body.messages = messages;
|
|
235
253
|
if (this.sessionId) body.session_id = this.sessionId;
|
|
254
|
+
const requestId = `cli-${_uuidLike()}`;
|
|
236
255
|
|
|
237
256
|
// daemon cache-guard hook. If BAHULAM_CAPTURE_REQUEST is set to a file
|
|
238
257
|
// path, serialize the exact body that would go to /api/execute, write
|
|
@@ -260,6 +279,8 @@ export class TarangStreamClient {
|
|
|
260
279
|
const headers = this._headers({
|
|
261
280
|
'Accept': 'text/event-stream',
|
|
262
281
|
'Content-Type': 'application/json',
|
|
282
|
+
'X-Bahulam-Request-ID': requestId,
|
|
283
|
+
'X-Request-ID': requestId,
|
|
263
284
|
});
|
|
264
285
|
|
|
265
286
|
// Abort controller so cancel() can break out of a stalled reader
|
|
@@ -268,6 +289,21 @@ export class TarangStreamClient {
|
|
|
268
289
|
this._toolAbort = new AbortController();
|
|
269
290
|
|
|
270
291
|
let response;
|
|
292
|
+
let connectTimedOut = false;
|
|
293
|
+
const connectTimeoutMs = envMs('BAHULAM_EXECUTE_CONNECT_TIMEOUT_MS', 60_000);
|
|
294
|
+
const connectStarted = Date.now();
|
|
295
|
+
const connectTimer = setTimeout(() => {
|
|
296
|
+
connectTimedOut = true;
|
|
297
|
+
try { this._abort.abort(); } catch {}
|
|
298
|
+
}, connectTimeoutMs);
|
|
299
|
+
transportDebug('execute.start', {
|
|
300
|
+
request_id: requestId,
|
|
301
|
+
url,
|
|
302
|
+
mode: this.mode,
|
|
303
|
+
session_id: this.sessionId || null,
|
|
304
|
+
messages: Array.isArray(messages) ? messages.length : 0,
|
|
305
|
+
body_bytes: Buffer.byteLength(JSON.stringify(body), 'utf8'),
|
|
306
|
+
});
|
|
271
307
|
try {
|
|
272
308
|
response = await fetch(url, {
|
|
273
309
|
method: 'POST',
|
|
@@ -276,15 +312,39 @@ export class TarangStreamClient {
|
|
|
276
312
|
signal: this._abort.signal,
|
|
277
313
|
});
|
|
278
314
|
} catch (err) {
|
|
315
|
+
clearTimeout(connectTimer);
|
|
279
316
|
if (err.name === 'AbortError') {
|
|
317
|
+
if (connectTimedOut) {
|
|
318
|
+
const message = `Backend did not accept /api/execute within ${Math.round(connectTimeoutMs / 1000)}s (request ${requestId}).`;
|
|
319
|
+
transportDebug('execute.connect_timeout', {
|
|
320
|
+
request_id: requestId,
|
|
321
|
+
ms: Date.now() - connectStarted,
|
|
322
|
+
});
|
|
323
|
+
yield { type: EVENT_TYPES.ERROR, data: { message, request_id: requestId, fatal: true } };
|
|
324
|
+
}
|
|
280
325
|
return;
|
|
281
326
|
}
|
|
282
|
-
|
|
327
|
+
transportDebug('execute.network_error', {
|
|
328
|
+
request_id: requestId,
|
|
329
|
+
ms: Date.now() - connectStarted,
|
|
330
|
+
error: err.message,
|
|
331
|
+
code: err?.cause?.code || err?.code || '',
|
|
332
|
+
});
|
|
333
|
+
yield { type: EVENT_TYPES.ERROR, data: { message: `Network error: ${err.message}. Check your connection or use --local mode.`, request_id: requestId, fatal: true } };
|
|
283
334
|
return;
|
|
284
335
|
}
|
|
336
|
+
clearTimeout(connectTimer);
|
|
337
|
+
const responseRequestId = response.headers.get('x-request-id') || requestId;
|
|
338
|
+
transportDebug('execute.response', {
|
|
339
|
+
request_id: responseRequestId,
|
|
340
|
+
status: response.status,
|
|
341
|
+
ok: response.ok,
|
|
342
|
+
ms: Date.now() - connectStarted,
|
|
343
|
+
task_id: response.headers.get('x-task-id') || null,
|
|
344
|
+
});
|
|
285
345
|
|
|
286
346
|
if (response.status === 401) {
|
|
287
|
-
yield { type: EVENT_TYPES.ERROR, data: { message: 'Authentication failed. Run `bahulam login` to re-authenticate.', fatal: true } };
|
|
347
|
+
yield { type: EVENT_TYPES.ERROR, data: { message: 'Authentication failed. Run `bahulam login` to re-authenticate.', request_id: responseRequestId, fatal: true } };
|
|
288
348
|
return;
|
|
289
349
|
}
|
|
290
350
|
if (response.status === 429) {
|
|
@@ -305,6 +365,7 @@ export class TarangStreamClient {
|
|
|
305
365
|
rate_limit: detail?.rate_limit || null,
|
|
306
366
|
action: detail?.action || null,
|
|
307
367
|
pricing_url: normalizeBillingBrandCopy(detail?.pricing_url || null),
|
|
368
|
+
request_id: responseRequestId,
|
|
308
369
|
fatal: true,
|
|
309
370
|
},
|
|
310
371
|
};
|
|
@@ -312,7 +373,7 @@ export class TarangStreamClient {
|
|
|
312
373
|
}
|
|
313
374
|
if (!response.ok) {
|
|
314
375
|
const text = await response.text().catch(() => 'Unknown error');
|
|
315
|
-
yield { type: EVENT_TYPES.ERROR, data: { message: `Backend error ${response.status}: ${text}`, fatal: true } };
|
|
376
|
+
yield { type: EVENT_TYPES.ERROR, data: { message: `Backend error ${response.status}: ${text}`, request_id: responseRequestId, fatal: true } };
|
|
316
377
|
return;
|
|
317
378
|
}
|
|
318
379
|
|
|
@@ -322,6 +383,17 @@ export class TarangStreamClient {
|
|
|
322
383
|
if (this._cancelled) {
|
|
323
384
|
return;
|
|
324
385
|
}
|
|
386
|
+
if (this._firstEventTimedOut) {
|
|
387
|
+
yield {
|
|
388
|
+
type: EVENT_TYPES.ERROR,
|
|
389
|
+
data: {
|
|
390
|
+
message: `Backend opened the stream but sent no SSE events within ${Math.round(envMs('BAHULAM_FIRST_EVENT_TIMEOUT_MS', 60_000) / 1000)}s (request ${responseRequestId}).`,
|
|
391
|
+
request_id: responseRequestId,
|
|
392
|
+
fatal: true,
|
|
393
|
+
},
|
|
394
|
+
};
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
325
397
|
yield* this._reconnectAfterDrop(err);
|
|
326
398
|
}
|
|
327
399
|
}
|
|
@@ -330,18 +402,37 @@ export class TarangStreamClient {
|
|
|
330
402
|
const taskId = response.headers.get('X-Task-ID');
|
|
331
403
|
if (taskId) this.currentTaskId = taskId;
|
|
332
404
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
if (this._cancelled) return;
|
|
405
|
+
let sawFirstEvent = false;
|
|
406
|
+
const firstEventTimeoutMs = envMs('BAHULAM_FIRST_EVENT_TIMEOUT_MS', 60_000);
|
|
407
|
+
const firstEventTimer = setTimeout(() => {
|
|
408
|
+
if (sawFirstEvent || this._cancelled) return;
|
|
409
|
+
this._firstEventTimedOut = true;
|
|
410
|
+
try { this._abort?.abort(); } catch {}
|
|
411
|
+
}, firstEventTimeoutMs);
|
|
412
|
+
try {
|
|
413
|
+
for await (const parsed of this._parseSSE(response)) {
|
|
414
|
+
if (!sawFirstEvent) {
|
|
415
|
+
sawFirstEvent = true;
|
|
416
|
+
clearTimeout(firstEventTimer);
|
|
417
|
+
transportDebug('execute.first_event', {
|
|
418
|
+
task_id: this.currentTaskId || null,
|
|
419
|
+
event: parsed.event || null,
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
if (this._cancelled) return;
|
|
423
|
+
await this._waitIfPaused();
|
|
424
|
+
if (this._cancelled) return;
|
|
337
425
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
426
|
+
if (parsed.id != null) this.lastEventId = parsed.id;
|
|
427
|
+
if (parsed.retry != null) this.retryDelayMs = parsed.retry;
|
|
428
|
+
if (parsed.data?.task_id) this.currentTaskId = parsed.data.task_id;
|
|
341
429
|
|
|
342
|
-
|
|
343
|
-
|
|
430
|
+
for await (const event of this._handleStreamEvent(parsed)) {
|
|
431
|
+
yield event;
|
|
432
|
+
}
|
|
344
433
|
}
|
|
434
|
+
} finally {
|
|
435
|
+
clearTimeout(firstEventTimer);
|
|
345
436
|
}
|
|
346
437
|
}
|
|
347
438
|
|
|
@@ -44,6 +44,8 @@ export function createToolExecutor({
|
|
|
44
44
|
checkpoints = null,
|
|
45
45
|
hookRunner = null,
|
|
46
46
|
interactionHandler = null,
|
|
47
|
+
onAutoRegisterStart = null,
|
|
48
|
+
onAutoRegisterDone = null,
|
|
47
49
|
} = {}) {
|
|
48
50
|
// Cross-session memory cache. Ships in getAgentContext() on every turn,
|
|
49
51
|
// so we need it to be byte-identical when the underlying disk file hasn't
|
|
@@ -94,9 +96,19 @@ export function createToolExecutor({
|
|
|
94
96
|
// for the current directory to be usable — the user chose to be here.
|
|
95
97
|
// Opt out via BAHULAM_SKIP_AUTO_REGISTER=true for tests or headless
|
|
96
98
|
// scripts that want a truly empty registry.
|
|
99
|
+
let autoRegisterPromise = Promise.resolve(null);
|
|
97
100
|
if (process.env.BAHULAM_SKIP_AUTO_REGISTER !== 'true') {
|
|
98
|
-
|
|
99
|
-
|
|
101
|
+
const autoRegisterRoot = process.cwd();
|
|
102
|
+
try { onAutoRegisterStart?.(autoRegisterRoot); } catch { /* status hooks are best-effort */ }
|
|
103
|
+
autoRegisterPromise = projectRegistry.register(autoRegisterRoot, { bypassProjectMarkers: true })
|
|
104
|
+
.then((result) => {
|
|
105
|
+
try { onAutoRegisterDone?.(null, result); } catch { /* status hooks are best-effort */ }
|
|
106
|
+
return result;
|
|
107
|
+
})
|
|
108
|
+
.catch((err) => {
|
|
109
|
+
try { onAutoRegisterDone?.(err, null); } catch { /* status hooks are best-effort */ }
|
|
110
|
+
return null;
|
|
111
|
+
});
|
|
100
112
|
}
|
|
101
113
|
let _searchCodeUsed = false; // tracks if search_code was called (for read_file nudge)
|
|
102
114
|
let _readOnlyCacheGeneration = 0;
|
|
@@ -2203,6 +2215,10 @@ print('OK: replaced')
|
|
|
2203
2215
|
return projectRegistry.resources();
|
|
2204
2216
|
},
|
|
2205
2217
|
|
|
2218
|
+
waitForAutoRegister() {
|
|
2219
|
+
return autoRegisterPromise;
|
|
2220
|
+
},
|
|
2221
|
+
|
|
2206
2222
|
async registerProjectRoots(roots, { forceRefresh = false } = {}) {
|
|
2207
2223
|
const results = [];
|
|
2208
2224
|
const seen = new Set();
|
package/src/terminal/repl.mjs
CHANGED
|
@@ -74,6 +74,7 @@ import { buildResumeHistory, combineResumeSummaries, getRecentSessions, getSessi
|
|
|
74
74
|
import { decideResumeMode, projectedTokensForChoice, formatTokens as formatCtxTokens } from '../core/resume-mode.mjs';
|
|
75
75
|
import { appendTask, ensureTaskFiles, loadTaskBoard, moveTask, removeTask, taskCounts, TASK_FILES, updateTask } from '../core/tasks.mjs';
|
|
76
76
|
import { applyCompactSummary, localCompactSummary, parseCompactTailCount, prepareCompactHistory } from '../core/compact-history.mjs';
|
|
77
|
+
import { startSpinner as startInlineSpinner } from '../ui/spinner.mjs';
|
|
77
78
|
import {
|
|
78
79
|
appendVisionAnalysisToInstruction,
|
|
79
80
|
appendDocumentsToInstruction,
|
|
@@ -3674,7 +3675,28 @@ export async function startTerminalRepl() {
|
|
|
3674
3675
|
return res;
|
|
3675
3676
|
};
|
|
3676
3677
|
|
|
3677
|
-
|
|
3678
|
+
function makeToolExecutor({ showIndexStatus = false } = {}) {
|
|
3679
|
+
const shouldShowIndexStatus = showIndexStatus && process.stderr.isTTY && !term().plain;
|
|
3680
|
+
let stopIndexSpinner = null;
|
|
3681
|
+
return createToolExecutor({
|
|
3682
|
+
checkpoints,
|
|
3683
|
+
hookRunner,
|
|
3684
|
+
interactionHandler: askUserInteraction,
|
|
3685
|
+
onAutoRegisterStart: shouldShowIndexStatus ? (root) => {
|
|
3686
|
+
const name = path.basename(root || safeCwd()) || root || 'project';
|
|
3687
|
+
stopIndexSpinner?.();
|
|
3688
|
+
stopIndexSpinner = startInlineSpinner(
|
|
3689
|
+
`Indexing ${name} so tools can read and search this project...`
|
|
3690
|
+
);
|
|
3691
|
+
} : null,
|
|
3692
|
+
onAutoRegisterDone: shouldShowIndexStatus ? () => {
|
|
3693
|
+
stopIndexSpinner?.();
|
|
3694
|
+
stopIndexSpinner = null;
|
|
3695
|
+
} : null,
|
|
3696
|
+
});
|
|
3697
|
+
}
|
|
3698
|
+
|
|
3699
|
+
let toolExecutor = makeToolExecutor({ showIndexStatus: true });
|
|
3678
3700
|
const skipPerms = cliArgs.skipPermissions;
|
|
3679
3701
|
let approval = new ApprovalManager({ autoApprove: skipPerms, cwd: safeCwd(), policy: effectivePolicy.policy });
|
|
3680
3702
|
|
|
@@ -3768,7 +3790,7 @@ export async function startTerminalRepl() {
|
|
|
3768
3790
|
checkpoints = new CheckpointManager(safeCwd());
|
|
3769
3791
|
effectivePolicy = loadEffectivePolicy({ cwd: safeCwd() });
|
|
3770
3792
|
hookRunner = new HookRunner({ cwd: safeCwd() });
|
|
3771
|
-
toolExecutor =
|
|
3793
|
+
toolExecutor = makeToolExecutor();
|
|
3772
3794
|
approval = new ApprovalManager({ autoApprove: skipPerms, cwd: safeCwd(), policy: effectivePolicy.policy });
|
|
3773
3795
|
if (ctx._rl) approval.setReadline(ctx._rl);
|
|
3774
3796
|
sessionMgr = new SessionManager(safeCwd());
|
|
@@ -3948,7 +3970,7 @@ export async function startTerminalRepl() {
|
|
|
3948
3970
|
checkpoints = new CheckpointManager(safeCwd());
|
|
3949
3971
|
effectivePolicy = loadEffectivePolicy({ cwd: safeCwd() });
|
|
3950
3972
|
hookRunner = new HookRunner({ cwd: safeCwd(), sessionId });
|
|
3951
|
-
toolExecutor =
|
|
3973
|
+
toolExecutor = makeToolExecutor();
|
|
3952
3974
|
approval = new ApprovalManager({ autoApprove: skipPerms, cwd: safeCwd(), policy: effectivePolicy.policy });
|
|
3953
3975
|
if (ctx._rl) approval.setReadline(ctx._rl);
|
|
3954
3976
|
sessionMgr = new SessionManager(safeCwd());
|
|
@@ -54,6 +54,10 @@ const IGNORED_DIRS = new Set([
|
|
|
54
54
|
'.git', '.bahulam', '.next', '.venv', '__pycache__',
|
|
55
55
|
'build', 'dist', 'node_modules', 'venv',
|
|
56
56
|
]);
|
|
57
|
+
const ENV_PROBE_TIMEOUT_MS = Math.max(
|
|
58
|
+
50,
|
|
59
|
+
Number(process.env.BAHULAM_ENV_PROBE_TIMEOUT_MS || 500) || 500,
|
|
60
|
+
);
|
|
57
61
|
|
|
58
62
|
// Files or directories whose presence at the root implies this IS a project.
|
|
59
63
|
// One is enough. Kept broad so we accept Node/Python/Rust/Go/Ruby/Java/C++
|
|
@@ -227,7 +231,7 @@ function commandVersion(command, args = ['--version']) {
|
|
|
227
231
|
try {
|
|
228
232
|
const result = spawnSync(command, args, {
|
|
229
233
|
encoding: 'utf-8',
|
|
230
|
-
timeout:
|
|
234
|
+
timeout: ENV_PROBE_TIMEOUT_MS,
|
|
231
235
|
windowsHide: true,
|
|
232
236
|
});
|
|
233
237
|
if (result.error || result.status !== 0) return '';
|
|
@@ -244,7 +248,6 @@ function detectEnvironment() {
|
|
|
244
248
|
['git', 'git'],
|
|
245
249
|
['npm', 'npm'],
|
|
246
250
|
['uv', 'uv'],
|
|
247
|
-
['pytest', 'pytest'],
|
|
248
251
|
['docker', 'docker'],
|
|
249
252
|
];
|
|
250
253
|
const tools = {};
|