@quantish/agent 0.1.17 → 0.1.18
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/index.js +107 -9
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2386,14 +2386,35 @@ function resolveModelId(nameOrAlias) {
|
|
|
2386
2386
|
return id;
|
|
2387
2387
|
}
|
|
2388
2388
|
}
|
|
2389
|
+
if (OPENROUTER_MODELS[lower]) {
|
|
2390
|
+
return lower;
|
|
2391
|
+
}
|
|
2392
|
+
if (OPENROUTER_MODEL_ALIASES[lower]) {
|
|
2393
|
+
return OPENROUTER_MODEL_ALIASES[lower];
|
|
2394
|
+
}
|
|
2395
|
+
for (const [id, config] of Object.entries(OPENROUTER_MODELS)) {
|
|
2396
|
+
if (config.name.toLowerCase() === lower) {
|
|
2397
|
+
return id;
|
|
2398
|
+
}
|
|
2399
|
+
}
|
|
2400
|
+
if (nameOrAlias.includes("/")) {
|
|
2401
|
+
return nameOrAlias;
|
|
2402
|
+
}
|
|
2389
2403
|
return null;
|
|
2390
2404
|
}
|
|
2391
2405
|
function getModelPricing(modelId) {
|
|
2392
|
-
const
|
|
2393
|
-
|
|
2406
|
+
const anthropicModel = MODELS[modelId];
|
|
2407
|
+
if (anthropicModel?.pricing) {
|
|
2408
|
+
return anthropicModel.pricing;
|
|
2409
|
+
}
|
|
2410
|
+
const openrouterModel = OPENROUTER_MODELS[modelId];
|
|
2411
|
+
if (openrouterModel?.pricing) {
|
|
2412
|
+
return openrouterModel.pricing;
|
|
2413
|
+
}
|
|
2414
|
+
return null;
|
|
2394
2415
|
}
|
|
2395
2416
|
function getModelConfig(modelId) {
|
|
2396
|
-
return MODELS[modelId] ?? null;
|
|
2417
|
+
return MODELS[modelId] ?? OPENROUTER_MODELS[modelId] ?? null;
|
|
2397
2418
|
}
|
|
2398
2419
|
function calculateCost(modelId, inputTokens, outputTokens, cacheCreationTokens = 0, cacheReadTokens = 0) {
|
|
2399
2420
|
const pricing = getModelPricing(modelId);
|
|
@@ -2437,13 +2458,90 @@ function formatCost(cost) {
|
|
|
2437
2458
|
function listModels() {
|
|
2438
2459
|
return Object.values(MODELS);
|
|
2439
2460
|
}
|
|
2461
|
+
var OPENROUTER_MODELS = {
|
|
2462
|
+
"z-ai/glm-4.7": {
|
|
2463
|
+
id: "z-ai/glm-4.7",
|
|
2464
|
+
name: "glm-4.7",
|
|
2465
|
+
displayName: "GLM 4.7",
|
|
2466
|
+
pricing: {
|
|
2467
|
+
inputPerMTok: 0.4,
|
|
2468
|
+
outputPerMTok: 1.5,
|
|
2469
|
+
cacheWritePerMTok: 0,
|
|
2470
|
+
cacheReadPerMTok: 0
|
|
2471
|
+
},
|
|
2472
|
+
contextWindow: 202752,
|
|
2473
|
+
description: "Z.AI flagship. Enhanced programming, multi-step reasoning, agent tasks."
|
|
2474
|
+
},
|
|
2475
|
+
"minimax/minimax-m2.1": {
|
|
2476
|
+
id: "minimax/minimax-m2.1",
|
|
2477
|
+
name: "minimax-m2.1",
|
|
2478
|
+
displayName: "MiniMax M2.1",
|
|
2479
|
+
pricing: {
|
|
2480
|
+
inputPerMTok: 0.3,
|
|
2481
|
+
outputPerMTok: 1.2,
|
|
2482
|
+
cacheWritePerMTok: 0,
|
|
2483
|
+
cacheReadPerMTok: 0
|
|
2484
|
+
},
|
|
2485
|
+
contextWindow: 204800,
|
|
2486
|
+
description: "Lightweight, optimized for coding and agentic workflows."
|
|
2487
|
+
},
|
|
2488
|
+
"deepseek/deepseek-chat": {
|
|
2489
|
+
id: "deepseek/deepseek-chat",
|
|
2490
|
+
name: "deepseek-chat",
|
|
2491
|
+
displayName: "DeepSeek Chat",
|
|
2492
|
+
pricing: {
|
|
2493
|
+
inputPerMTok: 0.14,
|
|
2494
|
+
outputPerMTok: 0.28,
|
|
2495
|
+
cacheWritePerMTok: 0,
|
|
2496
|
+
cacheReadPerMTok: 0
|
|
2497
|
+
},
|
|
2498
|
+
contextWindow: 128e3,
|
|
2499
|
+
description: "Ultra-cheap, strong coding and reasoning. Great for high-volume."
|
|
2500
|
+
},
|
|
2501
|
+
"google/gemini-2.0-flash-001": {
|
|
2502
|
+
id: "google/gemini-2.0-flash-001",
|
|
2503
|
+
name: "gemini-2.0-flash",
|
|
2504
|
+
displayName: "Gemini 2.0 Flash",
|
|
2505
|
+
pricing: {
|
|
2506
|
+
inputPerMTok: 0.1,
|
|
2507
|
+
outputPerMTok: 0.4,
|
|
2508
|
+
cacheWritePerMTok: 0,
|
|
2509
|
+
cacheReadPerMTok: 0
|
|
2510
|
+
},
|
|
2511
|
+
contextWindow: 1e6,
|
|
2512
|
+
description: "Google's fast multimodal model. 1M context window."
|
|
2513
|
+
},
|
|
2514
|
+
"qwen/qwen-2.5-coder-32b-instruct": {
|
|
2515
|
+
id: "qwen/qwen-2.5-coder-32b-instruct",
|
|
2516
|
+
name: "qwen-coder-32b",
|
|
2517
|
+
displayName: "Qwen 2.5 Coder 32B",
|
|
2518
|
+
pricing: {
|
|
2519
|
+
inputPerMTok: 0.18,
|
|
2520
|
+
outputPerMTok: 0.18,
|
|
2521
|
+
cacheWritePerMTok: 0,
|
|
2522
|
+
cacheReadPerMTok: 0
|
|
2523
|
+
},
|
|
2524
|
+
contextWindow: 32768,
|
|
2525
|
+
description: "Alibaba's coding specialist. Excellent for code generation."
|
|
2526
|
+
}
|
|
2527
|
+
};
|
|
2528
|
+
var OPENROUTER_MODEL_ALIASES = {
|
|
2529
|
+
"glm": "z-ai/glm-4.7",
|
|
2530
|
+
"glm-4.7": "z-ai/glm-4.7",
|
|
2531
|
+
"minimax": "minimax/minimax-m2.1",
|
|
2532
|
+
"deepseek": "deepseek/deepseek-chat",
|
|
2533
|
+
"gemini": "google/gemini-2.0-flash-001",
|
|
2534
|
+
"gemini-flash": "google/gemini-2.0-flash-001",
|
|
2535
|
+
"qwen": "qwen/qwen-2.5-coder-32b-instruct",
|
|
2536
|
+
"qwen-coder": "qwen/qwen-2.5-coder-32b-instruct"
|
|
2537
|
+
};
|
|
2440
2538
|
|
|
2441
2539
|
// src/agent/provider.ts
|
|
2442
2540
|
import Anthropic from "@anthropic-ai/sdk";
|
|
2443
2541
|
|
|
2444
2542
|
// src/agent/openrouter.ts
|
|
2445
2543
|
var OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
2446
|
-
var
|
|
2544
|
+
var OPENROUTER_MODELS2 = {
|
|
2447
2545
|
// MiniMax models - very cost effective
|
|
2448
2546
|
"minimax/minimax-m2.1": {
|
|
2449
2547
|
id: "minimax/minimax-m2.1",
|
|
@@ -2662,13 +2760,13 @@ var OPENROUTER_ALIASES = {
|
|
|
2662
2760
|
};
|
|
2663
2761
|
function resolveOpenRouterModelId(nameOrAlias) {
|
|
2664
2762
|
const lower = nameOrAlias.toLowerCase();
|
|
2665
|
-
if (
|
|
2763
|
+
if (OPENROUTER_MODELS2[lower]) {
|
|
2666
2764
|
return lower;
|
|
2667
2765
|
}
|
|
2668
2766
|
if (OPENROUTER_ALIASES[lower]) {
|
|
2669
2767
|
return OPENROUTER_ALIASES[lower];
|
|
2670
2768
|
}
|
|
2671
|
-
for (const [id, config] of Object.entries(
|
|
2769
|
+
for (const [id, config] of Object.entries(OPENROUTER_MODELS2)) {
|
|
2672
2770
|
if (config.name.toLowerCase() === lower) {
|
|
2673
2771
|
return id;
|
|
2674
2772
|
}
|
|
@@ -2679,7 +2777,7 @@ function resolveOpenRouterModelId(nameOrAlias) {
|
|
|
2679
2777
|
return null;
|
|
2680
2778
|
}
|
|
2681
2779
|
function getOpenRouterModelConfig(modelId) {
|
|
2682
|
-
return
|
|
2780
|
+
return OPENROUTER_MODELS2[modelId] ?? null;
|
|
2683
2781
|
}
|
|
2684
2782
|
function convertToOpenAITools(anthropicTools) {
|
|
2685
2783
|
return anthropicTools.map((tool) => ({
|
|
@@ -2840,7 +2938,7 @@ function calculateOpenRouterCost(modelId, inputTokens, outputTokens, cacheReadTo
|
|
|
2840
2938
|
};
|
|
2841
2939
|
}
|
|
2842
2940
|
function listOpenRouterModels() {
|
|
2843
|
-
return Object.values(
|
|
2941
|
+
return Object.values(OPENROUTER_MODELS2);
|
|
2844
2942
|
}
|
|
2845
2943
|
|
|
2846
2944
|
// src/agent/provider.ts
|
|
@@ -3959,7 +4057,7 @@ ${userMessage}`;
|
|
|
3959
4057
|
}
|
|
3960
4058
|
if (!resolvedId) {
|
|
3961
4059
|
const anthropicModels = Object.values(MODELS).map((m) => m.name).join(", ");
|
|
3962
|
-
const orModels = Object.values(
|
|
4060
|
+
const orModels = Object.values(OPENROUTER_MODELS2).slice(0, 5).map((m) => m.name).join(", ");
|
|
3963
4061
|
return {
|
|
3964
4062
|
success: false,
|
|
3965
4063
|
error: `Unknown model: "${modelIdOrAlias}". Anthropic: ${anthropicModels}. OpenRouter: ${orModels}, ...`
|