@lazyingart/agintiflow 0.19.0 → 0.19.1
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/docs/model-selection.md
CHANGED
|
@@ -33,6 +33,7 @@ Interactive commands:
|
|
|
33
33
|
|
|
34
34
|
```text
|
|
35
35
|
/models
|
|
36
|
+
/venice
|
|
36
37
|
/route deepseek/deepseek-v4-flash
|
|
37
38
|
/model deepseek/deepseek-v4-pro
|
|
38
39
|
/spare openai/gpt-5.4 medium
|
|
@@ -40,6 +41,15 @@ Interactive commands:
|
|
|
40
41
|
/auxilliary model grsai/nano-banana-2
|
|
41
42
|
```
|
|
42
43
|
|
|
44
|
+
`/venice` is a shortcut for:
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
/route venice/venice-uncensored-1-2
|
|
48
|
+
/main venice/venice-uncensored-1-2
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
It keeps smart routing enabled, so normal and complex tasks still use the same route/main policy, but both roles resolve to Venice Uncensored 1.2. If the Venice key is missing, run `/auth venice`.
|
|
52
|
+
|
|
43
53
|
## Provider Buckets
|
|
44
54
|
|
|
45
55
|
| Bucket | Provider | Typical use |
|
|
@@ -67,4 +77,3 @@ printf '%s' "$VENICE_API_KEY" | aginti keys set venice --stdin
|
|
|
67
77
|
```
|
|
68
78
|
|
|
69
79
|
The web UI mirrors the same roles in its **Model roles** panel. Use the top provider/model fields for manual runs; use the role fields to change how smart routing chooses route, main, spare, wrapper, and auxiliary models.
|
|
70
|
-
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lazyingart/agintiflow",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AgInTiFlow is a web-first coding agent and CLI with DeepSeek routing, sandboxed tools, model providers, canvas artifacts, and optional wrappers.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -42,6 +42,7 @@ Interactive equivalents:
|
|
|
42
42
|
|
|
43
43
|
```text
|
|
44
44
|
/models
|
|
45
|
+
/venice
|
|
45
46
|
/route deepseek/deepseek-v4-flash
|
|
46
47
|
/model deepseek/deepseek-v4-pro
|
|
47
48
|
/spare openai/gpt-5.4 medium
|
|
@@ -49,6 +50,8 @@ Interactive equivalents:
|
|
|
49
50
|
/auxilliary model grsai/nano-banana-2
|
|
50
51
|
```
|
|
51
52
|
|
|
53
|
+
`/venice` keeps smart routing enabled and points both route and main roles at `venice/venice-uncensored-1-2`.
|
|
54
|
+
|
|
52
55
|
## OpenAI Model Reference
|
|
53
56
|
|
|
54
57
|
| Model | Role | Reasoning |
|
|
@@ -47,6 +47,43 @@ function runCli(args) {
|
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
function runInteractive(input) {
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
const child = spawn(process.execPath, [path.join(repoRoot, "bin/aginti-cli.js"), "chat"], {
|
|
53
|
+
cwd: repoRoot,
|
|
54
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
55
|
+
env: {
|
|
56
|
+
...process.env,
|
|
57
|
+
DEEPSEEK_API_KEY: process.env.DEEPSEEK_API_KEY || "test-deepseek-key-not-real",
|
|
58
|
+
VENICE_API_KEY: process.env.VENICE_API_KEY || "test-venice-key-not-real",
|
|
59
|
+
AGINTIFLOW_NO_COLOR: "1",
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
let stdout = "";
|
|
63
|
+
let stderr = "";
|
|
64
|
+
const timer = setTimeout(() => {
|
|
65
|
+
child.kill("SIGTERM");
|
|
66
|
+
reject(new Error("model role interactive smoke timed out"));
|
|
67
|
+
}, 12000);
|
|
68
|
+
child.stdout.on("data", (chunk) => {
|
|
69
|
+
stdout += String(chunk);
|
|
70
|
+
});
|
|
71
|
+
child.stderr.on("data", (chunk) => {
|
|
72
|
+
stderr += String(chunk);
|
|
73
|
+
});
|
|
74
|
+
child.on("error", (error) => {
|
|
75
|
+
clearTimeout(timer);
|
|
76
|
+
reject(error);
|
|
77
|
+
});
|
|
78
|
+
child.on("close", (code) => {
|
|
79
|
+
clearTimeout(timer);
|
|
80
|
+
if (code === 0) resolve(stdout);
|
|
81
|
+
else reject(new Error(`model role interactive smoke failed ${code}\n${stdout}\n${stderr}`));
|
|
82
|
+
});
|
|
83
|
+
child.stdin.end(input);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
50
87
|
const roles = getModelRoleDefaults();
|
|
51
88
|
assert(roles.route.provider === "deepseek", "route provider default should be deepseek");
|
|
52
89
|
assert(roles.route.model === "deepseek-v4-flash", "route model default should be deepseek-v4-flash");
|
|
@@ -76,11 +113,15 @@ assert(AUXILIARY_MODEL_CATALOG["venice-image"].some((item) => item.id === "gpt-i
|
|
|
76
113
|
const output = await runCli(["models"]);
|
|
77
114
|
assert(output.includes("/route") && output.includes("/spare") && output.includes("venice-gpt"), "aginti models output missing role details");
|
|
78
115
|
|
|
116
|
+
const interactiveOutput = await runInteractive("/venice\n/status\n/exit\n");
|
|
117
|
+
assert(interactiveOutput.includes("route=venice/venice-uncensored-1-2"), "/venice did not set Venice route role");
|
|
118
|
+
assert(interactiveOutput.includes("main=venice/venice-uncensored-1-2"), "/venice did not set Venice main role");
|
|
119
|
+
|
|
79
120
|
console.log(
|
|
80
121
|
JSON.stringify(
|
|
81
122
|
{
|
|
82
123
|
ok: true,
|
|
83
|
-
checks: ["role-defaults", "route-overrides", "provider-groups", "auxiliary-catalog", "cli-models-command"],
|
|
124
|
+
checks: ["role-defaults", "route-overrides", "provider-groups", "auxiliary-catalog", "cli-models-command", "venice-shortcut"],
|
|
84
125
|
},
|
|
85
126
|
null,
|
|
86
127
|
2
|
package/src/interactive-cli.js
CHANGED
|
@@ -67,6 +67,7 @@ const SLASH_COMMANDS = [
|
|
|
67
67
|
"/web-search",
|
|
68
68
|
"/scouts",
|
|
69
69
|
"/models",
|
|
70
|
+
"/venice",
|
|
70
71
|
"/route",
|
|
71
72
|
"/main",
|
|
72
73
|
"/spare",
|
|
@@ -573,6 +574,7 @@ function printHelp() {
|
|
|
573
574
|
" /instructions Show AGINTI.md project instructions status.",
|
|
574
575
|
" /memory Alias for /instructions.",
|
|
575
576
|
" /models Show route/main/spare/wrapper/auxiliary model roles.",
|
|
577
|
+
" /venice Shortcut: use Venice Uncensored 1.2 for route and main roles.",
|
|
576
578
|
" /route <mode|provider/model>",
|
|
577
579
|
" Set routing mode or fast route model, e.g. /route deepseek/deepseek-v4-flash.",
|
|
578
580
|
" /model <provider/model> Set the active/main model, e.g. /model deepseek/deepseek-v4-pro.",
|
|
@@ -1825,6 +1827,21 @@ async function handleCommand(line, state, packageDir) {
|
|
|
1825
1827
|
printModelRoles(state);
|
|
1826
1828
|
return true;
|
|
1827
1829
|
}
|
|
1830
|
+
if (command === "venice") {
|
|
1831
|
+
state.routingMode = "smart";
|
|
1832
|
+
state.provider = "deepseek";
|
|
1833
|
+
state.model = "";
|
|
1834
|
+
state.routeProvider = "venice";
|
|
1835
|
+
state.routeModel = "venice-uncensored-1-2";
|
|
1836
|
+
state.mainProvider = "venice";
|
|
1837
|
+
state.mainModel = "venice-uncensored-1-2";
|
|
1838
|
+
const keys = providerKeyStatus(process.cwd());
|
|
1839
|
+
printSystemLine("routing=smart route=venice/venice-uncensored-1-2 main=venice/venice-uncensored-1-2");
|
|
1840
|
+
if (!keys.venice) {
|
|
1841
|
+
printAgentMessage("Venice model roles are selected, but no Venice key is configured. Run `/auth venice` to save one.");
|
|
1842
|
+
}
|
|
1843
|
+
return true;
|
|
1844
|
+
}
|
|
1828
1845
|
if (command === "route") {
|
|
1829
1846
|
if (!value) {
|
|
1830
1847
|
printAgentMessage(
|