nex-code 0.3.1 → 0.3.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/cli/costs.js +11 -6
- package/cli/ollama.js +1 -1
- package/cli/providers/ollama.js +26 -12
- package/cli/providers/registry.js +10 -6
- package/cli/tool-tiers.js +21 -5
- package/package.json +1 -1
package/cli/costs.js
CHANGED
|
@@ -33,12 +33,17 @@ const PRICING = {
|
|
|
33
33
|
'gemini-2.0-flash-lite': { input: 0.075, output: 0.30 },
|
|
34
34
|
},
|
|
35
35
|
'ollama': {
|
|
36
|
-
'
|
|
37
|
-
'qwen3-coder':
|
|
38
|
-
'
|
|
39
|
-
'
|
|
40
|
-
'
|
|
41
|
-
'
|
|
36
|
+
'qwen3-coder:480b': { input: 0, output: 0 },
|
|
37
|
+
'qwen3-coder-next': { input: 0, output: 0 },
|
|
38
|
+
'devstral-2:123b': { input: 0, output: 0 },
|
|
39
|
+
'devstral-small-2:24b': { input: 0, output: 0 },
|
|
40
|
+
'kimi-k2.5': { input: 0, output: 0 },
|
|
41
|
+
'kimi-k2:1t': { input: 0, output: 0 },
|
|
42
|
+
'deepseek-v3.2': { input: 0, output: 0 },
|
|
43
|
+
'minimax-m2.5': { input: 0, output: 0 },
|
|
44
|
+
'glm-5': { input: 0, output: 0 },
|
|
45
|
+
'glm-4.7': { input: 0, output: 0 },
|
|
46
|
+
'gpt-oss:120b': { input: 0, output: 0 },
|
|
42
47
|
},
|
|
43
48
|
'local': {},
|
|
44
49
|
};
|
package/cli/ollama.js
CHANGED
|
@@ -9,7 +9,7 @@ const registry = require('./providers/registry');
|
|
|
9
9
|
|
|
10
10
|
const MODELS = {
|
|
11
11
|
'kimi-k2.5': { id: 'kimi-k2.5', name: 'Kimi K2.5', max_tokens: 16384 },
|
|
12
|
-
'qwen3-coder': { id: 'qwen3-coder', name: 'Qwen3 Coder', max_tokens: 16384 },
|
|
12
|
+
'qwen3-coder:480b': { id: 'qwen3-coder:480b', name: 'Qwen3 Coder 480B', max_tokens: 16384 },
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
function getActiveModel() {
|
package/cli/providers/ollama.js
CHANGED
|
@@ -7,20 +7,34 @@ const axios = require('axios');
|
|
|
7
7
|
const { BaseProvider } = require('./base');
|
|
8
8
|
|
|
9
9
|
const OLLAMA_MODELS = {
|
|
10
|
-
// Primary: Best coding
|
|
11
|
-
'qwen3-coder': { id: 'qwen3-coder', name: 'Qwen3 Coder', maxTokens: 16384, contextWindow: 131072 },
|
|
10
|
+
// Primary: Best coding models for agentic workflows
|
|
11
|
+
'qwen3-coder:480b': { id: 'qwen3-coder:480b', name: 'Qwen3 Coder 480B', maxTokens: 16384, contextWindow: 131072 },
|
|
12
12
|
'qwen3-coder-next': { id: 'qwen3-coder-next', name: 'Qwen3 Coder Next', maxTokens: 16384, contextWindow: 131072 },
|
|
13
|
-
|
|
14
|
-
'
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
'
|
|
13
|
+
'devstral-2:123b': { id: 'devstral-2:123b', name: 'Devstral 2 123B', maxTokens: 16384, contextWindow: 131072 },
|
|
14
|
+
'devstral-small-2:24b': { id: 'devstral-small-2:24b', name: 'Devstral Small 2 24B', maxTokens: 16384, contextWindow: 131072 },
|
|
15
|
+
// Large general-purpose models
|
|
16
|
+
'kimi-k2.5': { id: 'kimi-k2.5', name: 'Kimi K2.5', maxTokens: 16384, contextWindow: 256000 },
|
|
17
|
+
'kimi-k2:1t': { id: 'kimi-k2:1t', name: 'Kimi K2 1T', maxTokens: 16384, contextWindow: 256000 },
|
|
18
|
+
'kimi-k2-thinking': { id: 'kimi-k2-thinking', name: 'Kimi K2 Thinking', maxTokens: 16384, contextWindow: 256000 },
|
|
19
|
+
'deepseek-v3.2': { id: 'deepseek-v3.2', name: 'DeepSeek V3.2', maxTokens: 16384, contextWindow: 131072 },
|
|
20
|
+
'deepseek-v3.1:671b': { id: 'deepseek-v3.1:671b', name: 'DeepSeek V3.1 671B', maxTokens: 16384, contextWindow: 131072 },
|
|
21
|
+
'cogito-2.1:671b': { id: 'cogito-2.1:671b', name: 'Cogito 2.1 671B', maxTokens: 16384, contextWindow: 131072 },
|
|
22
|
+
// Medium models
|
|
23
|
+
'qwen3-next:80b': { id: 'qwen3-next:80b', name: 'Qwen3 Next 80B', maxTokens: 16384, contextWindow: 131072 },
|
|
24
|
+
'qwen3.5:397b': { id: 'qwen3.5:397b', name: 'Qwen3.5 397B', maxTokens: 16384, contextWindow: 131072 },
|
|
25
|
+
'mistral-large-3:675b': { id: 'mistral-large-3:675b', name: 'Mistral Large 3 675B', maxTokens: 16384, contextWindow: 131072 },
|
|
26
|
+
'gpt-oss:120b': { id: 'gpt-oss:120b', name: 'GPT-OSS 120B', maxTokens: 16384, contextWindow: 131072 },
|
|
18
27
|
'minimax-m2.5': { id: 'minimax-m2.5', name: 'MiniMax M2.5', maxTokens: 16384, contextWindow: 131072 },
|
|
28
|
+
'glm-5': { id: 'glm-5', name: 'GLM 5', maxTokens: 16384, contextWindow: 128000 },
|
|
19
29
|
'glm-4.7': { id: 'glm-4.7', name: 'GLM 4.7', maxTokens: 16384, contextWindow: 128000 },
|
|
20
|
-
//
|
|
21
|
-
'
|
|
22
|
-
'
|
|
23
|
-
'
|
|
30
|
+
// Small / fast models
|
|
31
|
+
'gemma3:27b': { id: 'gemma3:27b', name: 'Gemma 3 27B', maxTokens: 8192, contextWindow: 131072 },
|
|
32
|
+
'gemma3:12b': { id: 'gemma3:12b', name: 'Gemma 3 12B', maxTokens: 8192, contextWindow: 131072 },
|
|
33
|
+
'gemma3:4b': { id: 'gemma3:4b', name: 'Gemma 3 4B', maxTokens: 8192, contextWindow: 131072 },
|
|
34
|
+
'ministral-3:14b': { id: 'ministral-3:14b', name: 'Ministral 3 14B', maxTokens: 8192, contextWindow: 131072 },
|
|
35
|
+
'ministral-3:8b': { id: 'ministral-3:8b', name: 'Ministral 3 8B', maxTokens: 8192, contextWindow: 131072 },
|
|
36
|
+
// Special
|
|
37
|
+
'gemini-3-flash-preview': { id: 'gemini-3-flash-preview', name: 'Gemini 3 Flash Preview', maxTokens: 16384, contextWindow: 131072 },
|
|
24
38
|
};
|
|
25
39
|
|
|
26
40
|
class OllamaProvider extends BaseProvider {
|
|
@@ -29,7 +43,7 @@ class OllamaProvider extends BaseProvider {
|
|
|
29
43
|
name: 'ollama',
|
|
30
44
|
baseUrl: config.baseUrl || 'https://ollama.com',
|
|
31
45
|
models: config.models || OLLAMA_MODELS,
|
|
32
|
-
defaultModel: config.defaultModel || 'qwen3-coder',
|
|
46
|
+
defaultModel: config.defaultModel || 'qwen3-coder:480b',
|
|
33
47
|
...config,
|
|
34
48
|
});
|
|
35
49
|
this.timeout = config.timeout || 180000;
|
|
@@ -18,9 +18,9 @@ const { checkBudget } = require('../costs');
|
|
|
18
18
|
// Used during fallback to pick an equivalent model on a different provider.
|
|
19
19
|
|
|
20
20
|
const MODEL_EQUIVALENTS = {
|
|
21
|
-
top: { ollama: 'kimi-k2.5',
|
|
22
|
-
strong: { ollama: 'qwen3-coder', openai: 'gpt-4o', anthropic: 'claude-sonnet', gemini: 'gemini-2.5-flash' },
|
|
23
|
-
fast: { ollama: 'devstral',
|
|
21
|
+
top: { ollama: 'kimi-k2.5', openai: 'gpt-4.1', anthropic: 'claude-sonnet-4-5', gemini: 'gemini-2.5-pro' },
|
|
22
|
+
strong: { ollama: 'qwen3-coder:480b', openai: 'gpt-4o', anthropic: 'claude-sonnet', gemini: 'gemini-2.5-flash' },
|
|
23
|
+
fast: { ollama: 'devstral-small-2:24b', openai: 'gpt-4.1-mini', anthropic: 'claude-haiku', gemini: 'gemini-2.0-flash' },
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
// Reverse lookup: model → tier
|
|
@@ -136,9 +136,13 @@ function getActiveModel() {
|
|
|
136
136
|
*/
|
|
137
137
|
function parseModelSpec(spec) {
|
|
138
138
|
if (!spec) return { provider: null, model: null };
|
|
139
|
-
const
|
|
140
|
-
if (
|
|
141
|
-
|
|
139
|
+
const colonIdx = spec.indexOf(':');
|
|
140
|
+
if (colonIdx > 0) {
|
|
141
|
+
const prefix = spec.slice(0, colonIdx);
|
|
142
|
+
// Only treat as provider:model if prefix is a known provider name
|
|
143
|
+
if (providers[prefix] || ['ollama', 'openai', 'anthropic', 'gemini', 'local'].includes(prefix)) {
|
|
144
|
+
return { provider: prefix, model: spec.slice(colonIdx + 1) };
|
|
145
|
+
}
|
|
142
146
|
}
|
|
143
147
|
return { provider: null, model: spec };
|
|
144
148
|
}
|
package/cli/tool-tiers.js
CHANGED
|
@@ -23,12 +23,28 @@ const TIERS = {
|
|
|
23
23
|
*/
|
|
24
24
|
const MODEL_TIERS = {
|
|
25
25
|
// Ollama Cloud — tier by capability
|
|
26
|
+
'qwen3-coder:480b': 'full',
|
|
27
|
+
'qwen3-coder-next': 'full',
|
|
26
28
|
'kimi-k2.5': 'full',
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
'deepseek-
|
|
30
|
-
'
|
|
31
|
-
'
|
|
29
|
+
'kimi-k2:1t': 'full',
|
|
30
|
+
'kimi-k2-thinking': 'full',
|
|
31
|
+
'deepseek-v3.2': 'full',
|
|
32
|
+
'deepseek-v3.1:671b': 'full',
|
|
33
|
+
'devstral-2:123b': 'full',
|
|
34
|
+
'devstral-small-2:24b': 'standard',
|
|
35
|
+
'cogito-2.1:671b': 'full',
|
|
36
|
+
'qwen3-next:80b': 'full',
|
|
37
|
+
'qwen3.5:397b': 'full',
|
|
38
|
+
'mistral-large-3:675b': 'full',
|
|
39
|
+
'gpt-oss:120b': 'full',
|
|
40
|
+
'minimax-m2.5': 'full',
|
|
41
|
+
'glm-5': 'full',
|
|
42
|
+
'glm-4.7': 'standard',
|
|
43
|
+
'gemma3:27b': 'standard',
|
|
44
|
+
'gemma3:12b': 'essential',
|
|
45
|
+
'gemma3:4b': 'essential',
|
|
46
|
+
'ministral-3:14b': 'standard',
|
|
47
|
+
'ministral-3:8b': 'essential',
|
|
32
48
|
|
|
33
49
|
// OpenAI — all full
|
|
34
50
|
'gpt-4o': 'full',
|