@quantish/agent 0.1.17 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +135 -11
  2. 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 model = MODELS[modelId];
2393
- return model?.pricing ?? null;
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,106 @@ 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 OPENROUTER_MODELS = {
2544
+ var OPENROUTER_MODELS2 = {
2545
+ // Z.AI GLM models
2546
+ "z-ai/glm-4.7": {
2547
+ id: "z-ai/glm-4.7",
2548
+ name: "glm-4.7",
2549
+ displayName: "GLM 4.7",
2550
+ provider: "Z.AI",
2551
+ pricing: {
2552
+ inputPerMTok: 0.4,
2553
+ outputPerMTok: 1.5
2554
+ },
2555
+ contextWindow: 202752,
2556
+ maxOutputTokens: 65536,
2557
+ supportsTools: true,
2558
+ supportsReasoning: true,
2559
+ description: "Z.AI flagship. Enhanced programming, multi-step reasoning, agent tasks."
2560
+ },
2447
2561
  // MiniMax models - very cost effective
2448
2562
  "minimax/minimax-m2.1": {
2449
2563
  id: "minimax/minimax-m2.1",
@@ -2636,6 +2750,9 @@ var OPENROUTER_MODELS = {
2636
2750
  }
2637
2751
  };
2638
2752
  var OPENROUTER_ALIASES = {
2753
+ // Z.AI GLM
2754
+ "glm": "z-ai/glm-4.7",
2755
+ "glm-4.7": "z-ai/glm-4.7",
2639
2756
  // MiniMax
2640
2757
  "minimax": "minimax/minimax-m2.1",
2641
2758
  "m2": "minimax/minimax-m2",
@@ -2662,13 +2779,13 @@ var OPENROUTER_ALIASES = {
2662
2779
  };
2663
2780
  function resolveOpenRouterModelId(nameOrAlias) {
2664
2781
  const lower = nameOrAlias.toLowerCase();
2665
- if (OPENROUTER_MODELS[lower]) {
2782
+ if (OPENROUTER_MODELS2[lower]) {
2666
2783
  return lower;
2667
2784
  }
2668
2785
  if (OPENROUTER_ALIASES[lower]) {
2669
2786
  return OPENROUTER_ALIASES[lower];
2670
2787
  }
2671
- for (const [id, config] of Object.entries(OPENROUTER_MODELS)) {
2788
+ for (const [id, config] of Object.entries(OPENROUTER_MODELS2)) {
2672
2789
  if (config.name.toLowerCase() === lower) {
2673
2790
  return id;
2674
2791
  }
@@ -2679,7 +2796,7 @@ function resolveOpenRouterModelId(nameOrAlias) {
2679
2796
  return null;
2680
2797
  }
2681
2798
  function getOpenRouterModelConfig(modelId) {
2682
- return OPENROUTER_MODELS[modelId] ?? null;
2799
+ return OPENROUTER_MODELS2[modelId] ?? null;
2683
2800
  }
2684
2801
  function convertToOpenAITools(anthropicTools) {
2685
2802
  return anthropicTools.map((tool) => ({
@@ -2840,7 +2957,7 @@ function calculateOpenRouterCost(modelId, inputTokens, outputTokens, cacheReadTo
2840
2957
  };
2841
2958
  }
2842
2959
  function listOpenRouterModels() {
2843
- return Object.values(OPENROUTER_MODELS);
2960
+ return Object.values(OPENROUTER_MODELS2);
2844
2961
  }
2845
2962
 
2846
2963
  // src/agent/provider.ts
@@ -3144,10 +3261,17 @@ var OpenRouterProvider = class {
3144
3261
  const toolCalls = [];
3145
3262
  for (const [, tc] of toolCallsInProgress) {
3146
3263
  try {
3147
- const input = JSON.parse(tc.arguments || "{}");
3264
+ let args = tc.arguments?.trim() || "{}";
3265
+ if (args && !args.endsWith("}")) {
3266
+ args = args + "}";
3267
+ }
3268
+ const input = JSON.parse(args);
3148
3269
  toolCalls.push({ id: tc.id, name: tc.name, input });
3149
3270
  callbacks.onToolCall?.(tc.id, tc.name, input);
3150
- } catch {
3271
+ } catch (e) {
3272
+ console.error(`[OpenRouter] Failed to parse tool call "${tc.name}": ${tc.arguments}`);
3273
+ toolCalls.push({ id: tc.id, name: tc.name, input: {} });
3274
+ callbacks.onToolCall?.(tc.id, tc.name, {});
3151
3275
  }
3152
3276
  }
3153
3277
  const cost = calculateOpenRouterCost(
@@ -3959,7 +4083,7 @@ ${userMessage}`;
3959
4083
  }
3960
4084
  if (!resolvedId) {
3961
4085
  const anthropicModels = Object.values(MODELS).map((m) => m.name).join(", ");
3962
- const orModels = Object.values(OPENROUTER_MODELS).slice(0, 5).map((m) => m.name).join(", ");
4086
+ const orModels = Object.values(OPENROUTER_MODELS2).slice(0, 5).map((m) => m.name).join(", ");
3963
4087
  return {
3964
4088
  success: false,
3965
4089
  error: `Unknown model: "${modelIdOrAlias}". Anthropic: ${anthropicModels}. OpenRouter: ${orModels}, ...`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quantish/agent",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "AI-powered agent for building trading bots on Polymarket",
5
5
  "type": "module",
6
6
  "bin": {