hedgequantx 2.6.91 → 2.6.92

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.6.91",
3
+ "version": "2.6.92",
4
4
  "description": "HedgeQuantX - Prop Futures Trading CLI",
5
5
  "main": "src/app.js",
6
6
  "bin": {
@@ -955,11 +955,23 @@ const setupBrowserOAuth = async (provider, config) => {
955
955
  }
956
956
 
957
957
  // Fallback default models if API doesn't return list
958
+ // Updated January 2026 with latest models
958
959
  const defaultModels = {
959
960
  anthropic: ['claude-sonnet-4-20250514', 'claude-opus-4-20250514', 'claude-3-5-sonnet-20241022', 'claude-3-5-haiku-20241022'],
960
- openai: ['gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'o1', 'o1-mini', 'o3-mini'],
961
+ openai: [
962
+ 'gpt-4.5-preview', // NEW: GPT-4.5 (latest)
963
+ 'gpt-4.5', // NEW: GPT-4.5
964
+ 'o3', // NEW: o3 (latest reasoning)
965
+ 'o3-mini', // o3-mini
966
+ 'o1', // o1
967
+ 'o1-mini', // o1-mini
968
+ 'gpt-4o', // GPT-4o
969
+ 'gpt-4o-mini', // GPT-4o mini
970
+ 'gpt-4-turbo', // GPT-4 Turbo
971
+ ],
961
972
  gemini: ['gemini-2.5-pro', 'gemini-2.5-flash', 'gemini-2.0-flash', 'gemini-1.5-pro'],
962
- iflow: ['deepseek-v3', 'deepseek-chat', 'kimi', 'glm-4']
973
+ iflow: ['deepseek-v3', 'deepseek-chat', 'kimi', 'glm-4'],
974
+ qwen: ['qwen-max', 'qwen-plus', 'qwen-turbo', 'qwen2.5-72b-instruct']
963
975
  };
964
976
 
965
977
  if (!models || models.length === 0) {
@@ -554,10 +554,44 @@ const fetchOpenAIModels = async (endpoint, apiKey) => {
554
554
  headers['Authorization'] = `Bearer ${apiKey}`;
555
555
  }
556
556
 
557
+ // Priority order for OpenAI models (newest/best first)
558
+ const modelPriority = [
559
+ 'gpt-4.5-preview', 'gpt-4.5',
560
+ 'o3', 'o3-mini', 'o3-mini-high',
561
+ 'o1', 'o1-pro', 'o1-mini',
562
+ 'gpt-4o', 'gpt-4o-mini', 'gpt-4o-audio-preview',
563
+ 'gpt-4-turbo', 'gpt-4-turbo-preview',
564
+ 'gpt-4', 'gpt-3.5-turbo'
565
+ ];
566
+
557
567
  try {
558
568
  const response = await makeRequest(url, { method: 'GET', headers, timeout: 10000 });
559
569
  if (response.data && Array.isArray(response.data)) {
560
- return response.data.map(m => m.id).filter(Boolean);
570
+ const allModels = response.data.map(m => m.id).filter(Boolean);
571
+
572
+ // Filter to only chat/completion models, exclude embeddings/audio-only etc
573
+ const chatModels = allModels.filter(m =>
574
+ (m.includes('gpt') || m.includes('o1') || m.includes('o3')) &&
575
+ !m.includes('embedding') &&
576
+ !m.includes('whisper') &&
577
+ !m.includes('tts') &&
578
+ !m.includes('dall-e') &&
579
+ !m.includes('davinci') &&
580
+ !m.includes('babbage') &&
581
+ !m.includes('instruct')
582
+ );
583
+
584
+ // Sort by priority
585
+ chatModels.sort((a, b) => {
586
+ const aIdx = modelPriority.findIndex(p => a.includes(p));
587
+ const bIdx = modelPriority.findIndex(p => b.includes(p));
588
+ if (aIdx === -1 && bIdx === -1) return 0;
589
+ if (aIdx === -1) return 1;
590
+ if (bIdx === -1) return -1;
591
+ return aIdx - bIdx;
592
+ });
593
+
594
+ return chatModels.length > 0 ? chatModels : allModels;
561
595
  }
562
596
  return null;
563
597
  } catch (error) {