@jeffreyjyz/opencode-command-code 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/catalog.d.ts +4 -1
- package/dist/index.js +153 -95
- package/dist/sidebar/rows.d.ts +2 -0
- package/dist/sidebar/windows.d.ts +6 -0
- package/dist/startupLog.d.ts +18 -0
- package/dist/tui.js +1075 -4
- package/dist/v2.d.ts +8 -2
- package/package.json +1 -1
package/dist/catalog.d.ts
CHANGED
|
@@ -12,8 +12,10 @@ export interface CatalogEntry {
|
|
|
12
12
|
efforts: readonly string[] | null;
|
|
13
13
|
cost: ModelCost;
|
|
14
14
|
modalities: readonly InputModality[];
|
|
15
|
+
/** Cheapest plan that serves the model; plans.md names this the access rule. */
|
|
16
|
+
minPlan: string | null;
|
|
15
17
|
}
|
|
16
|
-
export declare const CATALOG_VERSION: "1.65.
|
|
18
|
+
export declare const CATALOG_VERSION: "1.65.2";
|
|
17
19
|
/** Every model the CLI table carried, keyed by the API's model id. */
|
|
18
20
|
export declare const MODEL_CATALOG: Readonly<Record<string, CatalogEntry>>;
|
|
19
21
|
/** Text-only default for any id this table does not list. */
|
|
@@ -21,6 +23,7 @@ export declare const TEXT_ONLY: readonly InputModality[];
|
|
|
21
23
|
export declare function inputModalities(id: string): readonly InputModality[];
|
|
22
24
|
export declare function supportsImage(id: string): boolean;
|
|
23
25
|
export declare function modelCost(id: string): ModelCost | undefined;
|
|
26
|
+
export declare function minPlan(id: string): string | null;
|
|
24
27
|
/** Reasoning-capable when it advertises explicit effort levels. */
|
|
25
28
|
export declare function isReasoningModel(id: string): boolean;
|
|
26
29
|
/** opencode effort variants for ctrl+t cycling. */
|
package/dist/index.js
CHANGED
|
@@ -2592,87 +2592,87 @@ async function resolveKey(getAuth) {
|
|
|
2592
2592
|
|
|
2593
2593
|
// src/catalog.ts
|
|
2594
2594
|
var MODEL_CATALOG = {
|
|
2595
|
-
"claude-fable-5": { name: "Claude Fable 5", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 }, modalities: ["text", "image"] },
|
|
2596
|
-
"claude-fable-5-1": { name: "Claude Fable 5.1", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 10, output: 50, cacheRead: 0.25, cacheWrite: 12.5 }, modalities: ["text", "image"] },
|
|
2597
|
-
"claude-haiku-4-5-20251001": { name: "Claude Haiku 4.5", context: 200000, efforts: null, cost: { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 }, modalities: ["text", "image"] },
|
|
2598
|
-
"claude-opus-4-7": { name: "Claude Opus 4.7", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 }, modalities: ["text", "image"] },
|
|
2599
|
-
"claude-opus-4-8": { name: "Claude Opus 4.8", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 }, modalities: ["text", "image"] },
|
|
2600
|
-
"claude-opus-5": { name: "Claude Opus 5", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 }, modalities: ["text", "image"] },
|
|
2601
|
-
"claude-opus-5-5": { name: "Claude Opus 5.5", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 4, output: 20, cacheRead: 0.2, cacheWrite: 5 }, modalities: ["text", "image"] },
|
|
2602
|
-
"claude-sonnet-4-6": { name: "Claude Sonnet 4.6", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 }, modalities: ["text", "image"] },
|
|
2603
|
-
"claude-sonnet-5": { name: "Claude Sonnet 5", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 }, modalities: ["text", "image"] },
|
|
2604
|
-
"deepseek/deepseek-v4-flash": { name: "DeepSeek V4 Flash (latest)", context: 1e6, efforts: ["high", "max"], cost: { input: 0.15, output: 0.6, cacheRead: 0.003, cacheWrite: 0 }, modalities: ["text"] },
|
|
2605
|
-
"deepseek/deepseek-v4-flash-fast": { name: "DeepSeek V4 Flash Fast", context: 1e6, efforts: ["low", "high", "max"], cost: { input: 0.28, output: 0.56, cacheRead: 0.07, cacheWrite: 0 }, modalities: ["text"] },
|
|
2606
|
-
"deepseek/deepseek-v4-flash-vision-exp": { name: "DeepSeek V4 Flash Vision (exp)", context: 1e6, efforts: ["high", "max"], cost: { input: 0.15, output: 0.6, cacheRead: 0.003, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2607
|
-
"deepseek/deepseek-v4-pro": { name: "DeepSeek V4 Pro (latest)", context: 1e6, efforts: ["high", "max"], cost: { input: 0.66, output: 1.98, cacheRead: 0.022, cacheWrite: 0 }, modalities: ["text"] },
|
|
2608
|
-
"deepseek/deepseek-v4.1-flash": { name: "DeepSeek V4.1 Flash", context: 1e6, efforts: ["low", "high", "max"], cost: { input: 0.15, output: 0.6, cacheRead: 0.003, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2609
|
-
"google/gemini-3.1-flash-lite": { name: "Gemini 3.1 Flash Lite", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 0.25, output: 1.5, cacheRead: 0.03, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2610
|
-
"google/gemini-3.5-flash": { name: "Gemini 3.5 Flash", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 1.5, output: 9, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2611
|
-
"google/gemini-3.5-flash-lite": { name: "Gemini 3.5 Flash Lite", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 0.3, output: 2.5, cacheRead: 0.03, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2612
|
-
"google/gemini-3.6-flash": { name: "Gemini 3.6 Flash", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 1.5, output: 7.5, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2613
|
-
"google/gemini-3.7-flash": { name: "Gemini 3.7 Flash", context: 1050000, efforts: ["low", "medium", "high"], cost: { input: 1.5, output: 7.5, cacheRead: 0.15, cacheWrite: 0.08334 }, modalities: ["text", "image"] },
|
|
2614
|
-
"google/gemini-3.8-flash": { name: "Gemini 3.8 Flash", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 1.5, output: 7.5, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2615
|
-
"gpt-5.3-codex": { name: "GPT-5.3 Codex", context: 400000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 2, output: 8, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2616
|
-
"gpt-5.4": { name: "GPT-5.4", context: 400000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 2.5, output: 15, cacheRead: 0.25, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2617
|
-
"gpt-5.4-mini": { name: "GPT-5.4 Mini", context: 400000, efforts: ["low", "medium", "high"], cost: { input: 0.75, output: 4.5, cacheRead: 0.075, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2618
|
-
"gpt-5.5": { name: "GPT-5.5", context: 400000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 5, output: 30, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2619
|
-
"gpt-5.6-luna": { name: "GPT-5.6 Luna", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 0.2, output: 1.2, cacheRead: 0.02, cacheWrite: 0.25 }, modalities: ["text", "image"] },
|
|
2620
|
-
"gpt-5.6-sol": { name: "GPT-5.6 Sol", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 5, output: 30, cacheRead: 0.5, cacheWrite: 6.25 }, modalities: ["text", "image"] },
|
|
2621
|
-
"gpt-5.6-terra": { name: "GPT-5.6 Terra", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 2, output: 12, cacheRead: 0.2, cacheWrite: 2.5 }, modalities: ["text", "image"] },
|
|
2622
|
-
"gpt-6-astra": { name: "GPT-6 Astra", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 }, modalities: ["text", "image"] },
|
|
2623
|
-
"gpt-6-luna": { name: "GPT-6 Luna", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 }, modalities: ["text", "image"] },
|
|
2624
|
-
"gpt-6-sol": { name: "GPT-6 Sol", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 }, modalities: ["text", "image"] },
|
|
2625
|
-
"inclusionai/ling-3.0-flash-sante:free": { name: "Ling 3.0 Flash Sante", context: 262000, efforts: null, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, modalities: ["text"] },
|
|
2626
|
-
"meituan/LongCat-2.0": { name: "LongCat 2.0", context: 1050000, efforts: null, cost: { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 }, modalities: ["text"] },
|
|
2627
|
-
"meta/muse-spark-1.1": { name: "Muse Spark 1.1", context: 1050000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2628
|
-
"meta/muse-spark-1.2": { name: "Muse Spark 1.2", context: 1050000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2629
|
-
"meta/muse-spark-1.2-contributor": { name: "Muse Spark 1.2 Contributor", context: 1050000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 0.1, output: 0.2, cacheRead: 0.002, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2630
|
-
"meta/muse-spark-1.3": { name: "Muse Spark 1.3", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2631
|
-
"meta/muse-spark-1.3-contributor": { name: "Muse Spark 1.3 Contributor", context: 1050000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 0.1, output: 0.2, cacheRead: 0.002, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2632
|
-
"MiniMaxAI/MiniMax-M2.5": { name: "MiniMax M2.5", context: 200000, efforts: null, cost: { input: 0.3, output: 1.2, cacheRead: 0.03, cacheWrite: 0 }, modalities: ["text"] },
|
|
2633
|
-
"MiniMaxAI/MiniMax-M2.7": { name: "MiniMax M2.7", context: 0, efforts: null, cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 }, modalities: ["text"] },
|
|
2634
|
-
"MiniMaxAI/MiniMax-M3": { name: "MiniMax M3", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2635
|
-
"moonshotai/Kimi-K2.5": { name: "Kimi K2.5", context: 256000, efforts: null, cost: { input: 0.6, output: 3, cacheRead: 0.1, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2636
|
-
"moonshotai/Kimi-K2.6": { name: "Kimi K2.6", context: 256000, efforts: null, cost: { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2637
|
-
"moonshotai/Kimi-K2.7-Code": { name: "Kimi K2.7 Code", context: 256000, efforts: null, cost: { input: 0.95, output: 4, cacheRead: 0.19, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2638
|
-
"moonshotai/Kimi-K2.7-Code-Highspeed": { name: "Kimi K2.7 Code HighSpeed", context: 262000, efforts: null, cost: { input: 1.9, output: 8, cacheRead: 0.38, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2639
|
-
"moonshotai/Kimi-K3": { name: "Kimi K3", context: 1e6, efforts: ["low", "high", "max"], cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2640
|
-
"nvidia/nemotron-3-ultra-550b-a55b": { name: "Nemotron 3 Ultra", context: 1e6, efforts: null, cost: { input: 0.6, output: 2.4, cacheRead: 0.12, cacheWrite: 0 }, modalities: ["text"] },
|
|
2641
|
-
"poolside/laguna-s-2.1-free": { name: "Laguna S 2.1", context: 256000, efforts: null, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, modalities: ["text"] },
|
|
2642
|
-
"Qwen/Qwen3.6-Max-Preview": { name: "Qwen 3.6 Max Preview", context: 0, efforts: null, cost: { input: 1.3, output: 7.8, cacheRead: 0.26, cacheWrite: 1.63 }, modalities: ["text"] },
|
|
2643
|
-
"Qwen/Qwen3.6-Plus": { name: "Qwen 3.6 Plus", context: 0, efforts: null, cost: { input: 0.5, output: 3, cacheRead: 0.1, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2644
|
-
"Qwen/Qwen3.7-Flash": { name: "Qwen 3.7 Flash", context: 1e6, efforts: null, cost: { input: 0.03, output: 0.13, cacheRead: 0.006, cacheWrite: 0.038 }, modalities: ["text", "image"] },
|
|
2645
|
-
"Qwen/Qwen3.7-Max": { name: "Qwen 3.7 Max", context: 1e6, efforts: null, cost: { input: 2.5, output: 7.5, cacheRead: 0.5, cacheWrite: 3.13 }, modalities: ["text"] },
|
|
2646
|
-
"Qwen/Qwen3.7-Plus": { name: "Qwen 3.7 Plus", context: 1e6, efforts: null, cost: { input: 0.4, output: 1.6, cacheRead: 0.08, cacheWrite: 0.5 }, modalities: ["text", "image"] },
|
|
2647
|
-
"Qwen/Qwen3.8-27B": { name: "Qwen 3.8 27B", context: 262000, efforts: ["low", "medium", "xhigh"], cost: { input: 0.4, output: 3, cacheRead: 0.04, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2648
|
-
"Qwen/Qwen3.8-Flash": { name: "Qwen 3.8 Flash", context: 1e6, efforts: ["low", "medium", "xhigh"], cost: { input: 0.16, output: 0.47, cacheRead: 0.016, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2649
|
-
"Qwen/Qwen3.8-Max": { name: "Qwen 3.8 Max", context: 1e6, efforts: ["low", "medium", "xhigh"], cost: { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 2.5 }, modalities: ["text", "image"] },
|
|
2650
|
-
"Qwen/Qwen3.8-Max-0902": { name: "Qwen 3.8 Max 0902", context: 1e6, efforts: ["low", "medium", "xhigh"], cost: { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2651
|
-
"Qwen/Qwen3.8-Omni-Flash": { name: "Qwen 3.8 Omni Flash", context: 1e6, efforts: ["low", "medium", "xhigh"], cost: { input: 0.15, output: 0.47, cacheRead: 0.016, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2652
|
-
"sakana/fugu-ultra": { name: "Fugu Ultra", context: 1e6, efforts: ["high", "xhigh"], cost: { input: 5, output: 30, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2653
|
-
"stealth/space-bunny-alpha": { name: "Space Bunny Alpha", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2654
|
-
"stepfun/Step-3.5-Flash": { name: "Step 3.5 Flash", context:
|
|
2655
|
-
"stepfun/Step-3.7-Flash": { name: "Step 3.7 Flash", context: 256000, efforts: null, cost: { input: 0.2, output: 1.15, cacheRead: 0.04, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2656
|
-
"stepfun/Step-5-Preview": { name: "Step 5 Preview", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 1, output: 2.7, cacheRead: 0.05, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2657
|
-
"tencent/hy3-paid": { name: "Tencent Hy3", context: 262000, efforts: null, cost: { input: 0.14, output: 0.58, cacheRead: 0.035, cacheWrite: 0 }, modalities: ["text"] },
|
|
2658
|
-
"tencent/hy4-preview": { name: "Tencent Hy4 Preview", context: 1050000, efforts: ["low", "medium", "high"], cost: { input: 0.834, output: 2.501, cacheRead: 0.042, cacheWrite: 0 }, modalities: ["text"] },
|
|
2659
|
-
"thinkingmachines/inkling": { name: "Inkling", context: 256000, efforts: null, cost: { input: 1, output: 4.05, cacheRead: 0.17, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2660
|
-
"thinkingmachines/inkling-small": { name: "Inkling Small", context: 1e6, efforts: null, cost: { input: 0.5, output: 1.2, cacheRead: 0.1, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2661
|
-
"xai/grok-4.5": { name: "Grok 4.5", context: 500000, efforts: ["low", "medium", "high"], cost: { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2662
|
-
"xai/grok-4.6": { name: "Grok 4.6", context: 500000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2663
|
-
"xai/grok-4.7": { name: "Grok 4.7", context: 500000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 1.2, output: 3.6, cacheRead: 0.3, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2664
|
-
"xiaomi/mimo-v2.5": { name: "MiMo V2.5", context: 1e6, efforts: null, cost: { input: 0.14, output: 0.28, cacheRead: 0.0028, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2665
|
-
"xiaomi/mimo-v2.5-pro": { name: "MiMo V2.5 Pro", context: 1e6, efforts: null, cost: { input: 0.435, output: 0.87, cacheRead: 0.0036, cacheWrite: 0 }, modalities: ["text"] },
|
|
2666
|
-
"xiaomi/mimo-v2.6-flash": { name: "MiMo V2.6 Flash", context: 1050000, efforts: null, cost: { input: 0.14, output: 0.28, cacheRead: 0.0028, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2667
|
-
"xiaomi/mimo-v2.6-pro": { name: "MiMo V2.6 Pro", context: 1050000, efforts: null, cost: { input: 0.435, output: 0.87, cacheRead: 0.0036, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2668
|
-
"xiaomi/mimo-v2.6-pro-ultraspeed": { name: "MiMo V2.6 Pro UltraSpeed", context: 1050000, efforts: null, cost: { input: 4.35, output: 8.7, cacheRead: 0.036, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2669
|
-
"z-ai/glm-5.3-flash": { name: "GLM-5.3 Flash", context: 1050000, efforts: ["low", "high", "max"], cost: { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2670
|
-
"z-ai/glm-5.3-flashx": { name: "GLM-5.3 FlashX", context: 1e6, efforts: ["low", "high", "max"], cost: { input: 0.37, output: 1.25, cacheRead: 0.075, cacheWrite: 0 }, modalities: ["text", "image"] },
|
|
2671
|
-
"zai-org/GLM-5": { name: "GLM-5", context: 200000, efforts: null, cost: { input: 1, output: 3.2, cacheRead: 0.2, cacheWrite: 0 }, modalities: ["text"] },
|
|
2672
|
-
"zai-org/GLM-5.1": { name: "GLM-5.1", context: 0, efforts: null, cost: { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 }, modalities: ["text"] },
|
|
2673
|
-
"zai-org/GLM-5.2": { name: "GLM-5.2", context: 1e6, efforts: ["high", "max"], cost: { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 }, modalities: ["text"] },
|
|
2674
|
-
"zai-org/GLM-5.2-Fast": { name: "GLM-5.2 Fast", context: 1e6, efforts: null, cost: { input: 3, output: 10.25, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text"] },
|
|
2675
|
-
"zai-org/GLM-5.3": { name: "GLM-5.3", context: 1e6, efforts: ["low", "high", "max"], cost: { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 }, modalities: ["text"] }
|
|
2595
|
+
"claude-fable-5": { name: "Claude Fable 5", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 }, modalities: ["text", "image"], minPlan: "Max" },
|
|
2596
|
+
"claude-fable-5-1": { name: "Claude Fable 5.1", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 10, output: 50, cacheRead: 0.25, cacheWrite: 12.5 }, modalities: ["text", "image"], minPlan: "Max" },
|
|
2597
|
+
"claude-haiku-4-5-20251001": { name: "Claude Haiku 4.5", context: 200000, efforts: null, cost: { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2598
|
+
"claude-opus-4-7": { name: "Claude Opus 4.7", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 }, modalities: ["text", "image"], minPlan: "Max" },
|
|
2599
|
+
"claude-opus-4-8": { name: "Claude Opus 4.8", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 }, modalities: ["text", "image"], minPlan: "Max" },
|
|
2600
|
+
"claude-opus-5": { name: "Claude Opus 5", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 }, modalities: ["text", "image"], minPlan: "Max" },
|
|
2601
|
+
"claude-opus-5-5": { name: "Claude Opus 5.5", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 4, output: 20, cacheRead: 0.2, cacheWrite: 5 }, modalities: ["text", "image"], minPlan: "Max" },
|
|
2602
|
+
"claude-sonnet-4-6": { name: "Claude Sonnet 4.6", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2603
|
+
"claude-sonnet-5": { name: "Claude Sonnet 5", context: 1e6, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2604
|
+
"deepseek/deepseek-v4-flash": { name: "DeepSeek V4 Flash (latest)", context: 1e6, efforts: ["high", "max"], cost: { input: 0.15, output: 0.6, cacheRead: 0.003, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2605
|
+
"deepseek/deepseek-v4-flash-fast": { name: "DeepSeek V4 Flash Fast", context: 1e6, efforts: ["low", "high", "max"], cost: { input: 0.28, output: 0.56, cacheRead: 0.07, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2606
|
+
"deepseek/deepseek-v4-flash-vision-exp": { name: "DeepSeek V4 Flash Vision (exp)", context: 1e6, efforts: ["high", "max"], cost: { input: 0.15, output: 0.6, cacheRead: 0.003, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2607
|
+
"deepseek/deepseek-v4-pro": { name: "DeepSeek V4 Pro (latest)", context: 1e6, efforts: ["high", "max"], cost: { input: 0.66, output: 1.98, cacheRead: 0.022, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2608
|
+
"deepseek/deepseek-v4.1-flash": { name: "DeepSeek V4.1 Flash", context: 1e6, efforts: ["low", "high", "max"], cost: { input: 0.15, output: 0.6, cacheRead: 0.003, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2609
|
+
"google/gemini-3.1-flash-lite": { name: "Gemini 3.1 Flash Lite", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 0.25, output: 1.5, cacheRead: 0.03, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2610
|
+
"google/gemini-3.5-flash": { name: "Gemini 3.5 Flash", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 1.5, output: 9, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2611
|
+
"google/gemini-3.5-flash-lite": { name: "Gemini 3.5 Flash Lite", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 0.3, output: 2.5, cacheRead: 0.03, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2612
|
+
"google/gemini-3.6-flash": { name: "Gemini 3.6 Flash", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 1.5, output: 7.5, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2613
|
+
"google/gemini-3.7-flash": { name: "Gemini 3.7 Flash", context: 1050000, efforts: ["low", "medium", "high"], cost: { input: 1.5, output: 7.5, cacheRead: 0.15, cacheWrite: 0.08334 }, modalities: ["text", "image"], minPlan: "GOAT" },
|
|
2614
|
+
"google/gemini-3.8-flash": { name: "Gemini 3.8 Flash", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 1.5, output: 7.5, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "GOAT" },
|
|
2615
|
+
"gpt-5.3-codex": { name: "GPT-5.3 Codex", context: 400000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 2, output: 8, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2616
|
+
"gpt-5.4": { name: "GPT-5.4", context: 400000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 2.5, output: 15, cacheRead: 0.25, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2617
|
+
"gpt-5.4-mini": { name: "GPT-5.4 Mini", context: 400000, efforts: ["low", "medium", "high"], cost: { input: 0.75, output: 4.5, cacheRead: 0.075, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2618
|
+
"gpt-5.5": { name: "GPT-5.5", context: 400000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 5, output: 30, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2619
|
+
"gpt-5.6-luna": { name: "GPT-5.6 Luna", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 0.2, output: 1.2, cacheRead: 0.02, cacheWrite: 0.25 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2620
|
+
"gpt-5.6-sol": { name: "GPT-5.6 Sol", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 5, output: 30, cacheRead: 0.5, cacheWrite: 6.25 }, modalities: ["text", "image"], minPlan: "GOAT" },
|
|
2621
|
+
"gpt-5.6-terra": { name: "GPT-5.6 Terra", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 2, output: 12, cacheRead: 0.2, cacheWrite: 2.5 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2622
|
+
"gpt-6-astra": { name: "GPT-6 Astra", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 }, modalities: ["text", "image"], minPlan: "Max" },
|
|
2623
|
+
"gpt-6-luna": { name: "GPT-6 Luna", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2624
|
+
"gpt-6-sol": { name: "GPT-6 Sol", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2625
|
+
"inclusionai/ling-3.0-flash-sante:free": { name: "Ling 3.0 Flash Sante", context: 262000, efforts: null, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2626
|
+
"meituan/LongCat-2.0": { name: "LongCat 2.0", context: 1050000, efforts: null, cost: { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2627
|
+
"meta/muse-spark-1.1": { name: "Muse Spark 1.1", context: 1050000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Pro" },
|
|
2628
|
+
"meta/muse-spark-1.2": { name: "Muse Spark 1.2", context: 1050000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "GOAT" },
|
|
2629
|
+
"meta/muse-spark-1.2-contributor": { name: "Muse Spark 1.2 Contributor", context: 1050000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 0.1, output: 0.2, cacheRead: 0.002, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2630
|
+
"meta/muse-spark-1.3": { name: "Muse Spark 1.3", context: 1050000, efforts: ["low", "medium", "high", "xhigh", "max"], cost: { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "GOAT" },
|
|
2631
|
+
"meta/muse-spark-1.3-contributor": { name: "Muse Spark 1.3 Contributor", context: 1050000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 0.1, output: 0.2, cacheRead: 0.002, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2632
|
+
"MiniMaxAI/MiniMax-M2.5": { name: "MiniMax M2.5", context: 200000, efforts: null, cost: { input: 0.3, output: 1.2, cacheRead: 0.03, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2633
|
+
"MiniMaxAI/MiniMax-M2.7": { name: "MiniMax M2.7", context: 0, efforts: null, cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2634
|
+
"MiniMaxAI/MiniMax-M3": { name: "MiniMax M3", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2635
|
+
"moonshotai/Kimi-K2.5": { name: "Kimi K2.5", context: 256000, efforts: null, cost: { input: 0.6, output: 3, cacheRead: 0.1, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2636
|
+
"moonshotai/Kimi-K2.6": { name: "Kimi K2.6", context: 256000, efforts: null, cost: { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2637
|
+
"moonshotai/Kimi-K2.7-Code": { name: "Kimi K2.7 Code", context: 256000, efforts: null, cost: { input: 0.95, output: 4, cacheRead: 0.19, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2638
|
+
"moonshotai/Kimi-K2.7-Code-Highspeed": { name: "Kimi K2.7 Code HighSpeed", context: 262000, efforts: null, cost: { input: 1.9, output: 8, cacheRead: 0.38, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2639
|
+
"moonshotai/Kimi-K3": { name: "Kimi K3", context: 1e6, efforts: ["low", "high", "max"], cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2640
|
+
"nvidia/nemotron-3-ultra-550b-a55b": { name: "Nemotron 3 Ultra", context: 1e6, efforts: null, cost: { input: 0.6, output: 2.4, cacheRead: 0.12, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2641
|
+
"poolside/laguna-s-2.1-free": { name: "Laguna S 2.1", context: 256000, efforts: null, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2642
|
+
"Qwen/Qwen3.6-Max-Preview": { name: "Qwen 3.6 Max Preview", context: 0, efforts: null, cost: { input: 1.3, output: 7.8, cacheRead: 0.26, cacheWrite: 1.63 }, modalities: ["text"], minPlan: "Go" },
|
|
2643
|
+
"Qwen/Qwen3.6-Plus": { name: "Qwen 3.6 Plus", context: 0, efforts: null, cost: { input: 0.5, output: 3, cacheRead: 0.1, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2644
|
+
"Qwen/Qwen3.7-Flash": { name: "Qwen 3.7 Flash", context: 1e6, efforts: null, cost: { input: 0.03, output: 0.13, cacheRead: 0.006, cacheWrite: 0.038 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2645
|
+
"Qwen/Qwen3.7-Max": { name: "Qwen 3.7 Max", context: 1e6, efforts: null, cost: { input: 2.5, output: 7.5, cacheRead: 0.5, cacheWrite: 3.13 }, modalities: ["text"], minPlan: "Go" },
|
|
2646
|
+
"Qwen/Qwen3.7-Plus": { name: "Qwen 3.7 Plus", context: 1e6, efforts: null, cost: { input: 0.4, output: 1.6, cacheRead: 0.08, cacheWrite: 0.5 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2647
|
+
"Qwen/Qwen3.8-27B": { name: "Qwen 3.8 27B", context: 262000, efforts: ["low", "medium", "xhigh"], cost: { input: 0.4, output: 3, cacheRead: 0.04, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2648
|
+
"Qwen/Qwen3.8-Flash": { name: "Qwen 3.8 Flash", context: 1e6, efforts: ["low", "medium", "xhigh"], cost: { input: 0.16, output: 0.47, cacheRead: 0.016, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2649
|
+
"Qwen/Qwen3.8-Max": { name: "Qwen 3.8 Max", context: 1e6, efforts: ["low", "medium", "xhigh"], cost: { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 2.5 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2650
|
+
"Qwen/Qwen3.8-Max-0902": { name: "Qwen 3.8 Max 0902", context: 1e6, efforts: ["low", "medium", "xhigh"], cost: { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2651
|
+
"Qwen/Qwen3.8-Omni-Flash": { name: "Qwen 3.8 Omni Flash", context: 1e6, efforts: ["low", "medium", "xhigh"], cost: { input: 0.15, output: 0.47, cacheRead: 0.016, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2652
|
+
"sakana/fugu-ultra": { name: "Fugu Ultra", context: 1e6, efforts: ["high", "xhigh"], cost: { input: 5, output: 30, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Max" },
|
|
2653
|
+
"stealth/space-bunny-alpha": { name: "Space Bunny Alpha", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2654
|
+
"stepfun/Step-3.5-Flash": { name: "Step 3.5 Flash", context: 262000, efforts: null, cost: { input: 0.09, output: 0.3, cacheRead: 0.02, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2655
|
+
"stepfun/Step-3.7-Flash": { name: "Step 3.7 Flash", context: 256000, efforts: null, cost: { input: 0.2, output: 1.15, cacheRead: 0.04, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2656
|
+
"stepfun/Step-5-Preview": { name: "Step 5 Preview", context: 1e6, efforts: ["low", "medium", "high"], cost: { input: 1, output: 2.7, cacheRead: 0.05, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2657
|
+
"tencent/hy3-paid": { name: "Tencent Hy3", context: 262000, efforts: null, cost: { input: 0.14, output: 0.58, cacheRead: 0.035, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2658
|
+
"tencent/hy4-preview": { name: "Tencent Hy4 Preview", context: 1050000, efforts: ["low", "medium", "high"], cost: { input: 0.834, output: 2.501, cacheRead: 0.042, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2659
|
+
"thinkingmachines/inkling": { name: "Inkling", context: 256000, efforts: null, cost: { input: 1, output: 4.05, cacheRead: 0.17, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2660
|
+
"thinkingmachines/inkling-small": { name: "Inkling Small", context: 1e6, efforts: null, cost: { input: 0.5, output: 1.2, cacheRead: 0.1, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2661
|
+
"xai/grok-4.5": { name: "Grok 4.5", context: 500000, efforts: ["low", "medium", "high"], cost: { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2662
|
+
"xai/grok-4.6": { name: "Grok 4.6", context: 500000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "GOAT" },
|
|
2663
|
+
"xai/grok-4.7": { name: "Grok 4.7", context: 500000, efforts: ["low", "medium", "high", "xhigh"], cost: { input: 1.2, output: 3.6, cacheRead: 0.3, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "GOAT" },
|
|
2664
|
+
"xiaomi/mimo-v2.5": { name: "MiMo V2.5", context: 1e6, efforts: null, cost: { input: 0.14, output: 0.28, cacheRead: 0.0028, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2665
|
+
"xiaomi/mimo-v2.5-pro": { name: "MiMo V2.5 Pro", context: 1e6, efforts: null, cost: { input: 0.435, output: 0.87, cacheRead: 0.0036, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2666
|
+
"xiaomi/mimo-v2.6-flash": { name: "MiMo V2.6 Flash", context: 1050000, efforts: null, cost: { input: 0.14, output: 0.28, cacheRead: 0.0028, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2667
|
+
"xiaomi/mimo-v2.6-pro": { name: "MiMo V2.6 Pro", context: 1050000, efforts: null, cost: { input: 0.435, output: 0.87, cacheRead: 0.0036, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2668
|
+
"xiaomi/mimo-v2.6-pro-ultraspeed": { name: "MiMo V2.6 Pro UltraSpeed", context: 1050000, efforts: null, cost: { input: 4.35, output: 8.7, cacheRead: 0.036, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "GOAT" },
|
|
2669
|
+
"z-ai/glm-5.3-flash": { name: "GLM-5.3 Flash", context: 1050000, efforts: ["low", "high", "max"], cost: { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2670
|
+
"z-ai/glm-5.3-flashx": { name: "GLM-5.3 FlashX", context: 1e6, efforts: ["low", "high", "max"], cost: { input: 0.37, output: 1.25, cacheRead: 0.075, cacheWrite: 0 }, modalities: ["text", "image"], minPlan: "Go" },
|
|
2671
|
+
"zai-org/GLM-5": { name: "GLM-5", context: 200000, efforts: null, cost: { input: 1, output: 3.2, cacheRead: 0.2, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2672
|
+
"zai-org/GLM-5.1": { name: "GLM-5.1", context: 0, efforts: null, cost: { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2673
|
+
"zai-org/GLM-5.2": { name: "GLM-5.2", context: 1e6, efforts: ["high", "max"], cost: { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2674
|
+
"zai-org/GLM-5.2-Fast": { name: "GLM-5.2 Fast", context: 1e6, efforts: null, cost: { input: 3, output: 10.25, cacheRead: 0.5, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" },
|
|
2675
|
+
"zai-org/GLM-5.3": { name: "GLM-5.3", context: 1e6, efforts: ["low", "high", "max"], cost: { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 }, modalities: ["text"], minPlan: "Go" }
|
|
2676
2676
|
};
|
|
2677
2677
|
var TEXT_ONLY = ["text"];
|
|
2678
2678
|
function inputModalities(id) {
|
|
@@ -2692,7 +2692,7 @@ function reasoningVariants(id) {
|
|
|
2692
2692
|
}
|
|
2693
2693
|
// ../core/gating.json
|
|
2694
2694
|
var gating_default = {
|
|
2695
|
-
extractedAt: "2026-09-
|
|
2695
|
+
extractedAt: "2026-09-25T14:21:58.775Z",
|
|
2696
2696
|
cliVersion: "1.38.2",
|
|
2697
2697
|
categories: {
|
|
2698
2698
|
"claude-sonnet-5": "premium",
|
|
@@ -3702,6 +3702,26 @@ function createCommandCode(options = {}, images = () => false) {
|
|
|
3702
3702
|
return { languageModel: model };
|
|
3703
3703
|
}
|
|
3704
3704
|
|
|
3705
|
+
// src/startupLog.ts
|
|
3706
|
+
import { mkdir, appendFile } from "fs/promises";
|
|
3707
|
+
import { homedir as homedir2 } from "os";
|
|
3708
|
+
import { join } from "path";
|
|
3709
|
+
function setupTimingLine(t) {
|
|
3710
|
+
return `setup: key=${t.key}ms register=${t.register}ms connection=${t.connection}ms refresh=${t.refresh}ms models=${t.models}`;
|
|
3711
|
+
}
|
|
3712
|
+
function startupLogPath() {
|
|
3713
|
+
const base = process.env.XDG_CACHE_HOME ?? join(homedir2(), ".cache");
|
|
3714
|
+
return join(base, "command-code", "startup.log");
|
|
3715
|
+
}
|
|
3716
|
+
async function writeStartupLine(line) {
|
|
3717
|
+
try {
|
|
3718
|
+
const path = startupLogPath();
|
|
3719
|
+
await mkdir(join(path, ".."), { recursive: true });
|
|
3720
|
+
await appendFile(path, `[${new Date().toISOString()}] ${line}
|
|
3721
|
+
`);
|
|
3722
|
+
} catch {}
|
|
3723
|
+
}
|
|
3724
|
+
|
|
3705
3725
|
// src/v2.ts
|
|
3706
3726
|
var PLUGIN_ID = "command-code";
|
|
3707
3727
|
var PROVIDER_BASE = "https://api.commandcode.ai/provider/v1";
|
|
@@ -3751,6 +3771,19 @@ function staticSeedModels() {
|
|
|
3751
3771
|
}
|
|
3752
3772
|
return seed;
|
|
3753
3773
|
}
|
|
3774
|
+
function mergeModels(snapshot, live) {
|
|
3775
|
+
const byId = new Map;
|
|
3776
|
+
const add = (model) => {
|
|
3777
|
+
const id = model?.id;
|
|
3778
|
+
if (typeof id === "string")
|
|
3779
|
+
byId.set(id, model);
|
|
3780
|
+
};
|
|
3781
|
+
for (const model of snapshot)
|
|
3782
|
+
add(model);
|
|
3783
|
+
for (const model of live)
|
|
3784
|
+
add(model);
|
|
3785
|
+
return [...byId.values()];
|
|
3786
|
+
}
|
|
3754
3787
|
async function credentialKey(ctx) {
|
|
3755
3788
|
try {
|
|
3756
3789
|
const connection = await ctx.integration.connection.active(INTEGRATION_ID);
|
|
@@ -3771,17 +3804,14 @@ async function credentialKey(ctx) {
|
|
|
3771
3804
|
var commandCodeV2 = {
|
|
3772
3805
|
id: PLUGIN_ID,
|
|
3773
3806
|
async setup(ctx) {
|
|
3807
|
+
const t0 = Date.now();
|
|
3774
3808
|
let localKey;
|
|
3809
|
+
let keyMs = 0;
|
|
3775
3810
|
try {
|
|
3811
|
+
const keyStart = Date.now();
|
|
3776
3812
|
localKey = await resolveKey();
|
|
3813
|
+
keyMs = Date.now() - keyStart;
|
|
3777
3814
|
} catch {}
|
|
3778
|
-
let hasConnection = false;
|
|
3779
|
-
try {
|
|
3780
|
-
hasConnection = await ctx.integration.connection.active(INTEGRATION_ID) !== undefined;
|
|
3781
|
-
} catch {}
|
|
3782
|
-
if (!localKey && !hasConnection) {
|
|
3783
|
-
console.warn(`[command-code] no API key found. Run /connect and choose "${INTEGRATION_NAME}", or \`cmd login\` (~/.commandcode/auth.json), or set CMD_API_KEY.`);
|
|
3784
|
-
}
|
|
3785
3815
|
await ctx.integration.transform((editor) => {
|
|
3786
3816
|
editor.update(INTEGRATION_ID, (integration) => {
|
|
3787
3817
|
if (integration.name === integration.id) {
|
|
@@ -3816,9 +3846,9 @@ var commandCodeV2 = {
|
|
|
3816
3846
|
provider.name = lane.name;
|
|
3817
3847
|
if (provider.package === "")
|
|
3818
3848
|
provider.package = lane.pkg;
|
|
3819
|
-
provider.activation =
|
|
3849
|
+
provider.activation = localKey ? "enabled" : "auto";
|
|
3820
3850
|
provider.settings = { ...provider.settings, baseURL: PROVIDER_BASE };
|
|
3821
|
-
if (
|
|
3851
|
+
if (localKey && provider.settings.apiKey === undefined) {
|
|
3822
3852
|
provider.settings.apiKey = localKey;
|
|
3823
3853
|
}
|
|
3824
3854
|
provider.integrationID ??= INTEGRATION_ID;
|
|
@@ -3826,6 +3856,7 @@ var commandCodeV2 = {
|
|
|
3826
3856
|
editor.models.set(lane.id, seed[lane.id]);
|
|
3827
3857
|
}
|
|
3828
3858
|
});
|
|
3859
|
+
const registerMs = Date.now() - t0;
|
|
3829
3860
|
await ctx.tool.transform((editor) => {
|
|
3830
3861
|
editor.add({
|
|
3831
3862
|
name: "cmd_usage",
|
|
@@ -3849,12 +3880,32 @@ var commandCodeV2 = {
|
|
|
3849
3880
|
}
|
|
3850
3881
|
});
|
|
3851
3882
|
});
|
|
3883
|
+
let hasConnection = false;
|
|
3884
|
+
let connectionMs = 0;
|
|
3885
|
+
try {
|
|
3886
|
+
const connectionStart = Date.now();
|
|
3887
|
+
hasConnection = await ctx.integration.connection.active(INTEGRATION_ID) !== undefined;
|
|
3888
|
+
connectionMs = Date.now() - connectionStart;
|
|
3889
|
+
} catch {}
|
|
3890
|
+
if (hasConnection) {
|
|
3891
|
+
await ctx.provider.transform((editor) => {
|
|
3892
|
+
for (const lane of LANES) {
|
|
3893
|
+
editor.update(lane.id, (provider) => {
|
|
3894
|
+
provider.activation = "enabled";
|
|
3895
|
+
});
|
|
3896
|
+
}
|
|
3897
|
+
});
|
|
3898
|
+
}
|
|
3899
|
+
if (!localKey && !hasConnection) {
|
|
3900
|
+
console.warn(`[command-code] no API key found. Run /connect and choose "${INTEGRATION_NAME}", or \`cmd login\` (~/.commandcode/auth.json), or set CMD_API_KEY.`);
|
|
3901
|
+
}
|
|
3852
3902
|
const controller = new AbortController;
|
|
3853
3903
|
let refreshing = false;
|
|
3854
3904
|
const refresh = async () => {
|
|
3855
3905
|
if (refreshing || controller.signal.aborted)
|
|
3856
3906
|
return;
|
|
3857
3907
|
refreshing = true;
|
|
3908
|
+
const refreshStart = Date.now();
|
|
3858
3909
|
try {
|
|
3859
3910
|
const key = await credentialKey(ctx);
|
|
3860
3911
|
if (!key)
|
|
@@ -3863,11 +3914,18 @@ var commandCodeV2 = {
|
|
|
3863
3914
|
if (controller.signal.aborted)
|
|
3864
3915
|
return;
|
|
3865
3916
|
await ctx.provider.transform((editor) => {
|
|
3866
|
-
editor.models.set("command-code-anthropic", split.claude.map((m) => toV2Model(m, LANES[0])));
|
|
3867
|
-
editor.models.set("command-code-openai", split.open.map((m) => toV2Model(m, LANES[1])));
|
|
3917
|
+
editor.models.set("command-code-anthropic", mergeModels(seed["command-code-anthropic"], split.claude.map((m) => toV2Model(m, LANES[0]))));
|
|
3918
|
+
editor.models.set("command-code-openai", mergeModels(seed["command-code-openai"], split.open.map((m) => toV2Model(m, LANES[1]))));
|
|
3868
3919
|
});
|
|
3920
|
+
writeStartupLine(setupTimingLine({
|
|
3921
|
+
key: keyMs,
|
|
3922
|
+
register: registerMs,
|
|
3923
|
+
connection: connectionMs,
|
|
3924
|
+
refresh: Date.now() - refreshStart,
|
|
3925
|
+
models: split.claude.length + split.open.length
|
|
3926
|
+
}));
|
|
3869
3927
|
} catch (e) {
|
|
3870
|
-
console.warn("[command-code] live model list unavailable, keeping
|
|
3928
|
+
console.warn("[command-code] live model list unavailable, keeping the snapshot:", e);
|
|
3871
3929
|
} finally {
|
|
3872
3930
|
refreshing = false;
|
|
3873
3931
|
}
|
|
@@ -3883,7 +3941,7 @@ var commandCodeV2 = {
|
|
|
3883
3941
|
// package.json
|
|
3884
3942
|
var package_default = {
|
|
3885
3943
|
name: "@jeffreyjyz/opencode-command-code",
|
|
3886
|
-
version: "0.3.
|
|
3944
|
+
version: "0.3.2",
|
|
3887
3945
|
description: "Command Code provider + usage dashboard for opencode: two providers (Anthropic wire for Claude, OpenAI wire for everything else) against api.commandcode.ai, live model list, plan gating, /cmd-usage. Requires the cmduse CLI for usage rendering.",
|
|
3888
3946
|
type: "module",
|
|
3889
3947
|
main: "dist/index.js",
|
package/dist/sidebar/rows.d.ts
CHANGED
|
@@ -8,3 +8,9 @@ export declare const WEEKLY_SECS: number;
|
|
|
8
8
|
* the same unit cmduse-core's vectors pin.
|
|
9
9
|
*/
|
|
10
10
|
export declare function elapsedPct(resetAtMs: number | undefined, durSecs: number, nowSecs: number): number | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* `elapsedPct` as text: a seven-day window forty minutes in is 0.4%, and "0%"
|
|
13
|
+
* reads as "not started". Non-zero fractions below a percent render "<1%".
|
|
14
|
+
* Exact zero stays "0%".
|
|
15
|
+
*/
|
|
16
|
+
export declare function elapsedLabel(resetAtMs: number | undefined, durSecs: number, nowSecs: number): string | undefined;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface SetupTimings {
|
|
2
|
+
/** Resolving the local key (env + ~/.commandcode/auth.json). */
|
|
3
|
+
key: number;
|
|
4
|
+
/** Provider + snapshot + aisdk hooks registered (this gates /model). */
|
|
5
|
+
register: number;
|
|
6
|
+
/** Integration connection lookup. */
|
|
7
|
+
connection: number;
|
|
8
|
+
/** Live model list fetch + merge. */
|
|
9
|
+
refresh: number;
|
|
10
|
+
/** Models returned by the live list, across lanes. */
|
|
11
|
+
models: number;
|
|
12
|
+
}
|
|
13
|
+
/** The line format, pinned by a test so tooling can parse it. */
|
|
14
|
+
export declare function setupTimingLine(t: SetupTimings): string;
|
|
15
|
+
/** `$XDG_CACHE_HOME/command-code/startup.log`, alongside the sidebar's catalog cache. */
|
|
16
|
+
export declare function startupLogPath(): string;
|
|
17
|
+
/** Append one line; never throws. */
|
|
18
|
+
export declare function writeStartupLine(line: string): Promise<void>;
|