modelmix 4.5.20 → 4.5.24

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/README.md CHANGED
@@ -153,6 +153,7 @@ Here's a comprehensive list of available methods:
153
153
  | `sonnet46[think]()` | Anthropic | claude-sonnet-4-6 | [\$3.00 / \$15.00][2] |
154
154
  | `haiku45[think]()` | Anthropic | claude-haiku-4-5-20251001 | [\$1.00 / \$5.00][2] |
155
155
  | `gemini31pro()` | Google | gemini-3.1-pro-preview | [\$2.00 / \$12.00][3] |
156
+ | `gemini35flash()` | Google | gemini-3.5-flash | N/A |
156
157
  | `gemini31flashLite()`| Google | gemini-3.1-flash-lite-preview | [\$0.25 / \$1.50][3] |
157
158
  | `grok43()` | Grok | grok-4.3 | [\$1.25 / \$2.50][6] |
158
159
  | `grok420multiAgent()`| Grok | grok-4.20-multi-agent-0309 | [\$1.25 / \$2.50][6] |
package/index.js CHANGED
@@ -420,6 +420,9 @@ class ModelMix {
420
420
  gemini3flash({ options = {}, config = {} } = {}) {
421
421
  return this.attach('gemini-3-flash-preview', new MixGoogle({ options, config }));
422
422
  }
423
+ gemini35flash({ options = {}, config = {} } = {}) {
424
+ return this.attach('gemini-3.5-flash', new MixGoogle({ options, config }));
425
+ }
423
426
  gemini31flashLite({ options = {}, config = {} } = {}) {
424
427
  return this.attach('gemini-3.1-flash-lite-preview', new MixGoogle({ options, config }));
425
428
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "modelmix",
3
- "version": "4.5.20",
3
+ "version": "4.5.24",
4
4
  "description": "🧬 Reliable interface with automatic fallback for AI LLMs.",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -51,17 +51,13 @@
51
51
  "bottleneck": "^2.19.5",
52
52
  "file-type": "^21.3.3",
53
53
  "lemonlog": "^1.2.0",
54
- "ws": "^8.19.0"
54
+ "ws": "^8.20.1"
55
55
  },
56
56
  "devDependencies": {
57
57
  "chai": "^5.2.1",
58
- "nock": "^14.0.9",
59
58
  "mocha": "^11.7.5",
60
- "sinon": "^21.0.0"
61
- },
62
- "overrides": {
63
- "diff": ">=8.0.3",
64
- "serialize-javascript": ">=7.0.3"
59
+ "nock": "^14.0.9",
60
+ "sinon": "^21.0.1"
65
61
  },
66
62
  "scripts": {
67
63
  "test": "mocha test/**/*.js --timeout 10000 --require test/setup.js",
@@ -76,4 +72,4 @@
76
72
  "test:tokens": "mocha test/tokens.test.js --timeout 10000 --require test/setup.js",
77
73
  "test:offline": "mocha test/json.test.js test/fallback.test.js test/templates.test.js test/images.test.js test/bottleneck.test.js test/tokens.test.js test/history.test.js --timeout 10000 --require test/setup.js"
78
74
  }
79
- }
75
+ }
@@ -0,0 +1,4 @@
1
+ overrides:
2
+ diff: 8.0.4
3
+ ip-address: 10.2.0
4
+ serialize-javascript: 7.0.5
@@ -101,7 +101,7 @@ If `sonnet46` fails, it automatically tries `gpt52`, then `gemini3flash`.
101
101
  Thinking variants: append `think` — e.g. `opus46think()` `sonnet46think()` `sonnet45think()` `sonnet4think()` `opus45think()` `opus41think()` `haiku45think()`
102
102
 
103
103
  ### Google
104
- `gemini3pro()` `gemini3flash()` `gemini25pro()` `gemini25flash()`
104
+ `gemini3pro()` `gemini3flash()` `gemini35flash()` `gemini25pro()` `gemini25flash()`
105
105
 
106
106
  ### Grok
107
107
  `grok43()` `grok420multiAgent()` `grok420()` `grok420think()` `grok41()` `grok41think()`
@@ -88,6 +88,15 @@ describe('Token Usage Tracking', () => {
88
88
  expect(model.models[1].provider).to.be.instanceOf(MixOpenAIResponses);
89
89
  });
90
90
 
91
+ it('should register Gemini 3.5 Flash shortcut with Google provider', function () {
92
+ const model = ModelMix.new()
93
+ .gemini35flash();
94
+
95
+ expect(model.models).to.have.length(1);
96
+ expect(model.models[0].key).to.equal('gemini-3.5-flash');
97
+ expect(model.models[0].provider).to.be.instanceOf(MixGoogle);
98
+ });
99
+
91
100
  it('should register MiMo shortcuts with native and OpenRouter providers', function () {
92
101
  const originalMimoApiKey = process.env.MIMO_API_KEY;
93
102
  const originalOpenRouterApiKey = process.env.OPENROUTER_API_KEY;