@vierratale/ai 0.1.0-beta.14 → 0.1.0-beta.15
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 +30 -22
- package/package.json +1 -1
- package/scripts/postinstall.js +2 -2
- package/src/catalog.js +98 -59
- package/src/cli.js +5 -5
- package/src/config.js +1 -1
- package/src/providers/cortex.js +3 -3
- package/src/ui/branding.js +1 -1
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ npx @vierratale/ai
|
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
The first launch detects and, if needed, installs and starts the local engine
|
|
25
|
-
(**Cortex**
|
|
25
|
+
(**Cortex**), then pulls the model you use.
|
|
26
26
|
|
|
27
27
|
## Usage
|
|
28
28
|
|
|
@@ -32,36 +32,44 @@ vierrataleai --provider cortex # Use local models
|
|
|
32
32
|
vierrataleai --provider openai # Use cloud models (OpenAI)
|
|
33
33
|
vierrataleai --provider anthropic # Use cloud models (Claude)
|
|
34
34
|
vierrataleai --provider gemini # Use cloud models (Gemini)
|
|
35
|
-
vierrataleai --model
|
|
35
|
+
vierrataleai --model VTL-3.7-Ultra # Use specific model
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
## Models
|
|
39
39
|
|
|
40
40
|
Local models run through the **Cortex** engine:
|
|
41
41
|
|
|
42
|
-
| Model |
|
|
43
|
-
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
42
|
+
| Model | Tier |
|
|
43
|
+
|-------|------|
|
|
44
|
+
| VTL-2.5-Mini | minimal |
|
|
45
|
+
| VTL-2.7-Flash | fast |
|
|
46
|
+
| VTL-2.9-Core | small |
|
|
47
|
+
| VTL-3.2-Orbit | small |
|
|
48
|
+
| VTL-3.1-Plus | balanced |
|
|
49
|
+
| VTL-3.3-Pro | coder |
|
|
50
|
+
| VTL-3.5-Reason | reasoning |
|
|
51
|
+
| VTL-3.7-Ultra | ultra |
|
|
52
|
+
| VTL-4.7-Gusto | balanced |
|
|
53
|
+
| VTL-5.4-Tempo | balanced |
|
|
54
|
+
| VTL-5.2-Pinnacle | pro |
|
|
55
|
+
| VTL-5.9-Sovereign | pro |
|
|
50
56
|
|
|
51
57
|
Cloud models are available when the matching provider + API key is configured:
|
|
52
58
|
|
|
53
|
-
| Model |
|
|
54
|
-
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
| Model | Tier |
|
|
60
|
+
|-------|------|
|
|
61
|
+
| VTL-4.0 | cloud-mini |
|
|
62
|
+
| VTL-4.2-Omni | cloud |
|
|
63
|
+
| VTL-4.5-Plus | cloud-fast |
|
|
64
|
+
| VTL-5.0-Pro | cloud-pro |
|
|
65
|
+
| VTL-6.0-Reason | cloud-lite |
|
|
66
|
+
| VTL-7.0-Omnij | cloud-plus |
|
|
67
|
+
| VTL-8.0-Fabric | cloud-fabric |
|
|
68
|
+
| VTL-9.0-Forge | cloud-forge |
|
|
69
|
+
| VTL-10.0-Singularity | cloud-singularity |
|
|
70
|
+
|
|
71
|
+
> Legacy `vierratale-*` and old `VRTL-*` model names (e.g. `vierratale-fast`,
|
|
72
|
+
> `vierratale-cloud`) still work and map to the VTL names.
|
|
65
73
|
|
|
66
74
|
## Commands
|
|
67
75
|
|
package/package.json
CHANGED
package/scripts/postinstall.js
CHANGED
|
@@ -25,9 +25,9 @@ try {
|
|
|
25
25
|
execSync('curl -fsSL https://ollama.com/install.sh | sh', { stdio: 'inherit' });
|
|
26
26
|
} else {
|
|
27
27
|
console.log(
|
|
28
|
-
'\n[vierrataleai] The local engine
|
|
28
|
+
'\n[vierrataleai] The local engine was not detected.\n' +
|
|
29
29
|
' - Run the CLI: it will attempt to install and start the engine automatically.\n' +
|
|
30
|
-
' - Or install
|
|
30
|
+
' - Or run ./install.sh (in the project repo) to set up the engine.\n'
|
|
31
31
|
);
|
|
32
32
|
}
|
|
33
33
|
} catch {
|
package/src/catalog.js
CHANGED
|
@@ -1,36 +1,59 @@
|
|
|
1
|
-
// Model catalog. Display names use the
|
|
2
|
-
//
|
|
1
|
+
// Model catalog. Display names use the opaque VTL branding:
|
|
2
|
+
// VTL-<number>.<name>, e.g. VTL-2.7-Flash, VTL-4.0.
|
|
3
|
+
// The real engine tags are mapped to display names here and kept internal.
|
|
3
4
|
const MODELS = {
|
|
4
|
-
'qwen3:0.6b': '
|
|
5
|
-
'gemma3:1b': '
|
|
6
|
-
'llama3.2:1b': '
|
|
7
|
-
'
|
|
8
|
-
'qwen2.5
|
|
9
|
-
'
|
|
10
|
-
'
|
|
11
|
-
'
|
|
12
|
-
'
|
|
13
|
-
'
|
|
14
|
-
'
|
|
15
|
-
'
|
|
16
|
-
'
|
|
5
|
+
'qwen3:0.6b': 'VTL-2.5-Mini',
|
|
6
|
+
'gemma3:1b': 'VTL-2.7-Flash',
|
|
7
|
+
'llama3.2:1b': 'VTL-2.9-Core',
|
|
8
|
+
'llama3.2:3b': 'VTL-3.2-Orbit',
|
|
9
|
+
'qwen2.5:1.5b': 'VTL-3.1-Plus',
|
|
10
|
+
'qwen2.5-coder:1.5b': 'VTL-3.3-Pro',
|
|
11
|
+
'qwen3:1.7b': 'VTL-3.5-Reason',
|
|
12
|
+
'qwen2.5:3b': 'VTL-3.7-Ultra',
|
|
13
|
+
'gemma3:4b': 'VTL-4.7-Gusto',
|
|
14
|
+
'phi4-mini': 'VTL-5.4-Tempo',
|
|
15
|
+
'glm4:9b': 'VTL-5.2-Pinnacle',
|
|
16
|
+
'qwen3:4b': 'VTL-5.9-Sovereign',
|
|
17
|
+
'gpt-4o-mini': 'VTL-4.0',
|
|
18
|
+
'gpt-4o': 'VTL-4.2-Omni',
|
|
19
|
+
'claude-3-5-haiku-20241022': 'VTL-4.5-Plus',
|
|
20
|
+
'claude-sonnet-4-20250514': 'VTL-5.0-Pro',
|
|
21
|
+
'gemini-2.0-flash': 'VTL-6.0-Reason',
|
|
22
|
+
'gemini-1.5-pro': 'VTL-7.0-Omnij',
|
|
23
|
+
'kimi-k2.6:cloud': 'VTL-8.0-Fabric',
|
|
24
|
+
'kimi-k2.7-code:cloud': 'VTL-9.0-Forge',
|
|
25
|
+
'kimi-k3': 'VTL-10.0-Singularity',
|
|
17
26
|
};
|
|
18
27
|
|
|
19
|
-
//
|
|
20
|
-
// compatibility (existing config files may
|
|
28
|
+
// Legacy display names (older `VRTL-*` and `vierratale-<word>`), accepted
|
|
29
|
+
// everywhere for backwards compatibility (existing config files may contain
|
|
30
|
+
// them). All map onto the current VTL display names.
|
|
21
31
|
const LEGACY_DISPLAY = {
|
|
22
|
-
'
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
'
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
'
|
|
30
|
-
'
|
|
31
|
-
'
|
|
32
|
-
'
|
|
33
|
-
'
|
|
32
|
+
'VRTL-1.lite': 'VTL-2.5-Mini',
|
|
33
|
+
'VRTL-2.fast': 'VTL-2.7-Flash',
|
|
34
|
+
'VRTL-3.small': 'VTL-2.9-Core',
|
|
35
|
+
'VRTL-4.balanced': 'VTL-3.1-Plus',
|
|
36
|
+
'VRTL-4.coder': 'VTL-3.3-Pro',
|
|
37
|
+
'VRTL-5.plus': 'VTL-3.5-Reason',
|
|
38
|
+
'VRTL-6.pro': 'VTL-3.7-Ultra',
|
|
39
|
+
'VRTL-7.cloud-mini': 'VTL-4.0',
|
|
40
|
+
'VRTL-8.cloud': 'VTL-4.2-Omni',
|
|
41
|
+
'VRTL-9.cloud-fast': 'VTL-4.5-Plus',
|
|
42
|
+
'VRTL-10.cloud-pro': 'VTL-5.0-Pro',
|
|
43
|
+
'VRTL-11.cloud-lite': 'VTL-6.0-Reason',
|
|
44
|
+
'VRTL-12.cloud-plus': 'VTL-7.0-Omnij',
|
|
45
|
+
'vierratale-lite': 'VTL-2.5-Mini',
|
|
46
|
+
'vierratale-fast': 'VTL-2.7-Flash',
|
|
47
|
+
'vierratale-small': 'VTL-2.9-Core',
|
|
48
|
+
'vierratale-balanced': 'VTL-3.1-Plus',
|
|
49
|
+
'vierratale-plus': 'VTL-3.5-Reason',
|
|
50
|
+
'vierratale-pro': 'VTL-3.7-Ultra',
|
|
51
|
+
'vierratale-cloud-mini': 'VTL-4.0',
|
|
52
|
+
'vierratale-cloud': 'VTL-4.2-Omni',
|
|
53
|
+
'vierratale-cloud-fast': 'VTL-4.5-Plus',
|
|
54
|
+
'vierratale-cloud-pro': 'VTL-5.0-Pro',
|
|
55
|
+
'vierratale-cloud-lite': 'VTL-6.0-Reason',
|
|
56
|
+
'vierratale-cloud-plus': 'VTL-7.0-Omnij',
|
|
34
57
|
};
|
|
35
58
|
|
|
36
59
|
const REVERSE = Object.fromEntries(
|
|
@@ -38,42 +61,58 @@ const REVERSE = Object.fromEntries(
|
|
|
38
61
|
);
|
|
39
62
|
|
|
40
63
|
const LOCAL_MODELS = [
|
|
41
|
-
'
|
|
42
|
-
'
|
|
43
|
-
'
|
|
44
|
-
'
|
|
45
|
-
'
|
|
46
|
-
'
|
|
47
|
-
'
|
|
64
|
+
'VTL-2.5-Mini',
|
|
65
|
+
'VTL-2.7-Flash',
|
|
66
|
+
'VTL-2.9-Core',
|
|
67
|
+
'VTL-3.2-Orbit',
|
|
68
|
+
'VTL-3.1-Plus',
|
|
69
|
+
'VTL-3.3-Pro',
|
|
70
|
+
'VTL-3.5-Reason',
|
|
71
|
+
'VTL-3.7-Ultra',
|
|
72
|
+
'VTL-4.7-Gusto',
|
|
73
|
+
'VTL-5.4-Tempo',
|
|
74
|
+
'VTL-5.2-Pinnacle',
|
|
75
|
+
'VTL-5.9-Sovereign',
|
|
48
76
|
];
|
|
49
77
|
|
|
50
78
|
const CLOUD_MODELS = [
|
|
51
|
-
'
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
'
|
|
56
|
-
'
|
|
79
|
+
'VTL-4.0',
|
|
80
|
+
'VTL-4.2-Omni',
|
|
81
|
+
'VTL-4.5-Plus',
|
|
82
|
+
'VTL-5.0-Pro',
|
|
83
|
+
'VTL-6.0-Reason',
|
|
84
|
+
'VTL-7.0-Omnij',
|
|
85
|
+
'VTL-8.0-Fabric',
|
|
86
|
+
'VTL-9.0-Forge',
|
|
87
|
+
'VTL-10.0-Singularity',
|
|
57
88
|
];
|
|
58
89
|
|
|
59
90
|
const TIERS = {
|
|
60
|
-
'
|
|
61
|
-
'
|
|
62
|
-
'
|
|
63
|
-
'
|
|
64
|
-
'
|
|
65
|
-
'
|
|
66
|
-
'
|
|
67
|
-
'
|
|
68
|
-
'
|
|
69
|
-
'
|
|
70
|
-
'
|
|
71
|
-
'
|
|
72
|
-
'
|
|
91
|
+
'VTL-2.5-Mini': 'minimal',
|
|
92
|
+
'VTL-2.7-Flash': 'fast',
|
|
93
|
+
'VTL-2.9-Core': 'small',
|
|
94
|
+
'VTL-3.2-Orbit': 'small',
|
|
95
|
+
'VTL-3.1-Plus': 'balanced',
|
|
96
|
+
'VTL-3.3-Pro': 'coder',
|
|
97
|
+
'VTL-3.5-Reason': 'reasoning',
|
|
98
|
+
'VTL-3.7-Ultra': 'ultra',
|
|
99
|
+
'VTL-4.7-Gusto': 'balanced',
|
|
100
|
+
'VTL-5.4-Tempo': 'balanced',
|
|
101
|
+
'VTL-5.2-Pinnacle': 'pro',
|
|
102
|
+
'VTL-5.9-Sovereign': 'pro',
|
|
103
|
+
'VTL-4.0': 'cloud-mini',
|
|
104
|
+
'VTL-4.2-Omni': 'cloud',
|
|
105
|
+
'VTL-4.5-Plus': 'cloud-fast',
|
|
106
|
+
'VTL-5.0-Pro': 'cloud-pro',
|
|
107
|
+
'VTL-6.0-Reason': 'cloud-lite',
|
|
108
|
+
'VTL-7.0-Omnij': 'cloud-plus',
|
|
109
|
+
'VTL-8.0-Fabric': 'cloud-fabric',
|
|
110
|
+
'VTL-9.0-Forge': 'cloud-forge',
|
|
111
|
+
'VTL-10.0-Singularity': 'cloud-singularity',
|
|
73
112
|
};
|
|
74
113
|
|
|
75
114
|
export const Catalog = {
|
|
76
|
-
// Map any known name (new or legacy) to the current
|
|
115
|
+
// Map any known name (new or legacy) to the current VTL display name.
|
|
77
116
|
normalize(displayName) {
|
|
78
117
|
return LEGACY_DISPLAY[displayName] || displayName;
|
|
79
118
|
},
|
|
@@ -99,11 +138,11 @@ export const Catalog = {
|
|
|
99
138
|
},
|
|
100
139
|
|
|
101
140
|
getDefaultModel() {
|
|
102
|
-
return '
|
|
141
|
+
return 'VTL-2.7-Flash';
|
|
103
142
|
},
|
|
104
143
|
|
|
105
144
|
getDefaultCloudModel() {
|
|
106
|
-
return '
|
|
145
|
+
return 'VTL-4.0';
|
|
107
146
|
},
|
|
108
147
|
|
|
109
148
|
isLocalModel(displayName) {
|
|
@@ -136,4 +175,4 @@ export const Catalog = {
|
|
|
136
175
|
tier: TIERS[name] || 'unknown',
|
|
137
176
|
};
|
|
138
177
|
},
|
|
139
|
-
};
|
|
178
|
+
};
|
package/src/cli.js
CHANGED
|
@@ -41,7 +41,7 @@ Usage: vierrataleai [options]
|
|
|
41
41
|
|
|
42
42
|
Options:
|
|
43
43
|
--provider, -p <name> Provider: cortex, openai (default: auto-detect)
|
|
44
|
-
--model, -m <name> Model:
|
|
44
|
+
--model, -m <name> Model: e.g. VTL-2.7-Flash/3.5-Reason/6.0-Reason
|
|
45
45
|
--clear (deprecated: screen is always cleared on start)
|
|
46
46
|
--install, --setup Install engine + model + a "vierrataleai" command, then run
|
|
47
47
|
--version, -v Show version
|
|
@@ -830,8 +830,8 @@ async function chat(provider, systemPrompt) {
|
|
|
830
830
|
const extras = [...installedSet].filter(
|
|
831
831
|
(m) => !Catalog.getModelInfo(m) && m !== Config.getEffectiveModel(provider.name)
|
|
832
832
|
);
|
|
833
|
-
|
|
834
|
-
chatUI.notify(`
|
|
833
|
+
if (extras.length) {
|
|
834
|
+
chatUI.notify(` (+${extras.length} additional engine models available)`);
|
|
835
835
|
}
|
|
836
836
|
}
|
|
837
837
|
chatUI.render(messages);
|
|
@@ -850,7 +850,7 @@ async function chat(provider, systemPrompt) {
|
|
|
850
850
|
chatUI.setModel(model, provider.displayName);
|
|
851
851
|
};
|
|
852
852
|
if (provider.isLocal && Catalog.isCloudModel(canonical)) {
|
|
853
|
-
chatUI.notify(`Cannot use cloud model "${canonical}" on ${provider.displayName} (local). Use /model
|
|
853
|
+
chatUI.notify(`Cannot use cloud model "${canonical}" on ${provider.displayName} (local). Use /model VTL-3.7-Ultra or /provider openai.`);
|
|
854
854
|
} else if (!info) {
|
|
855
855
|
if (provider.isLocal) {
|
|
856
856
|
const switched = await ensureRawLocalModel(modelName, (m) => chatUI.notify(m));
|
|
@@ -993,7 +993,7 @@ async function chat(provider, systemPrompt) {
|
|
|
993
993
|
const info = Catalog.getModelInfo(model);
|
|
994
994
|
chatUI.clearNotices();
|
|
995
995
|
chatUI.notify(
|
|
996
|
-
`I'm running on ${model}
|
|
996
|
+
`I'm running on ${model} via the ${provider.displayName} engine.`
|
|
997
997
|
);
|
|
998
998
|
chatUI.render(messages);
|
|
999
999
|
continue;
|
package/src/config.js
CHANGED
package/src/providers/cortex.js
CHANGED
|
@@ -285,14 +285,14 @@ export class CortexProvider extends BaseProvider {
|
|
|
285
285
|
// engine host is deliberately kept out of the message; errors carry codes.
|
|
286
286
|
async function describeEngineError(resp, model) {
|
|
287
287
|
if (/not found|does not exist|model.*missing/i.test(String(resp.statusText))) {
|
|
288
|
-
return `[ERR-0002] Model "${model}" is not installed on the engine. If you picked a cloud model, use /model
|
|
288
|
+
return `[ERR-0002] Model "${model}" is not installed on the engine. If you picked a cloud model, use /model VTL-3.7-Ultra or /provider openai.`;
|
|
289
289
|
}
|
|
290
290
|
let body = '';
|
|
291
291
|
try {
|
|
292
292
|
body = (await resp.text()).slice(0, 300);
|
|
293
293
|
} catch {}
|
|
294
294
|
if (/not found|does not exist|model.*missing/i.test(body)) {
|
|
295
|
-
return `[ERR-0002] Model "${model}" is not installed on the engine. If you picked a cloud model, use /model
|
|
295
|
+
return `[ERR-0002] Model "${model}" is not installed on the engine. If you picked a cloud model, use /model VTL-3.7-Ultra or /provider openai.`;
|
|
296
296
|
}
|
|
297
|
-
return `[ERR-0003] The engine returned HTTP ${resp.status}. Check the engine status or run /model
|
|
297
|
+
return `[ERR-0003] The engine returned HTTP ${resp.status}. Check the engine status or run /model VTL-2.7-Flash.`;
|
|
298
298
|
}
|