hedgequantx 2.9.1 → 2.9.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hedgequantx",
3
- "version": "2.9.1",
3
+ "version": "2.9.2",
4
4
  "description": "HedgeQuantX - Prop Futures Trading CLI",
5
5
  "main": "src/app.js",
6
6
  "bin": {
@@ -33,12 +33,10 @@ const AI_PROVIDERS = [
33
33
  { id: 'qwen', name: 'Qwen', color: 'cyan', supportsOAuth: true, supportsApiKey: true },
34
34
  { id: 'iflow', name: 'iFlow (DeepSeek/GLM)', color: 'yellow', supportsOAuth: true, supportsApiKey: true },
35
35
  // API Key only (no OAuth - uses LLM Proxy via LiteLLM)
36
- { id: 'deepseek', name: 'DeepSeek', color: 'blue', supportsOAuth: false, supportsApiKey: true },
37
36
  { id: 'minimax', name: 'MiniMax', color: 'magenta', supportsOAuth: false, supportsApiKey: true },
38
37
  { id: 'mistral', name: 'Mistral AI', color: 'yellow', supportsOAuth: false, supportsApiKey: true },
39
38
  { id: 'groq', name: 'Groq', color: 'cyan', supportsOAuth: false, supportsApiKey: true },
40
39
  { id: 'xai', name: 'xAI (Grok)', color: 'white', supportsOAuth: false, supportsApiKey: true },
41
- { id: 'perplexity', name: 'Perplexity', color: 'blue', supportsOAuth: false, supportsApiKey: true },
42
40
  { id: 'openrouter', name: 'OpenRouter', color: 'gray', supportsOAuth: false, supportsApiKey: true },
43
41
  ];
44
42
 
@@ -2,28 +2,37 @@
2
2
  * AI Models - Fetch from provider APIs
3
3
  *
4
4
  * Models are fetched dynamically from each provider's API.
5
- * No hardcoded model lists - data comes from real APIs only.
5
+ * Exception: MiniMax (no /models API) - see RULES.md for details.
6
6
  */
7
7
 
8
8
  const https = require('https');
9
9
 
10
10
  /**
11
11
  * API endpoints for fetching models
12
- * Using beta endpoints where available for latest models
12
+ * null = provider doesn't have /models endpoint
13
13
  */
14
14
  const API_ENDPOINTS = {
15
15
  anthropic: 'https://api.anthropic.com/v1/models',
16
16
  openai: 'https://api.openai.com/v1/models',
17
- google: 'https://generativelanguage.googleapis.com/v1beta/models', // v1beta for Gemini 3
18
- deepseek: 'https://api.deepseek.com/v1/models',
19
- minimax: 'https://api.minimax.chat/v1/models',
17
+ google: 'https://generativelanguage.googleapis.com/v1beta/models',
18
+ minimax: null, // No /models API - uses MINIMAX_MODELS (see RULES.md exception)
20
19
  mistral: 'https://api.mistral.ai/v1/models',
21
20
  groq: 'https://api.groq.com/openai/v1/models',
22
21
  xai: 'https://api.x.ai/v1/models',
23
- perplexity: 'https://api.perplexity.ai/models',
24
22
  openrouter: 'https://openrouter.ai/api/v1/models',
25
23
  };
26
24
 
25
+ /**
26
+ * MiniMax Models - EXCEPTION to no-hardcode rule (see RULES.md)
27
+ *
28
+ * MiniMax does not provide /models API endpoint.
29
+ * Confirmed by: OpenCode, Cursor, LiteLLM - all use hardcoded models.
30
+ * Source: https://platform.minimax.io/docs/api-reference/text-intro
31
+ */
32
+ const MINIMAX_MODELS = [
33
+ { id: 'MiniMax-M2.1', name: 'MiniMax-M2.1' },
34
+ ];
35
+
27
36
  /**
28
37
  * Make HTTPS request
29
38
  * @param {string} url - API URL
@@ -332,7 +341,13 @@ const parseModelsResponse = (providerId, data) => {
332
341
  * @returns {Promise<Object>} { success, models, error }
333
342
  */
334
343
  const fetchModelsFromApi = async (providerId, apiKey) => {
344
+ // MiniMax: no /models API, use hardcoded list (see RULES.md exception)
345
+ if (providerId === 'minimax') {
346
+ return { success: true, models: MINIMAX_MODELS, error: null };
347
+ }
348
+
335
349
  const endpoint = API_ENDPOINTS[providerId];
350
+
336
351
  if (!endpoint) {
337
352
  return { success: false, models: [], error: 'Unknown provider' };
338
353
  }