@agent-smith/cli 0.0.71 → 0.0.80
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/dist/cmd/clicmds/aliases.js +12 -6
- package/dist/cmd/clicmds/base.js +13 -7
- package/dist/cmd/cmds.js +0 -20
- package/dist/cmd/lib/actions/cmd.d.ts +3 -4
- package/dist/cmd/lib/actions/cmd.js +48 -64
- package/dist/cmd/lib/actions/read.d.ts +2 -3
- package/dist/cmd/lib/actions/read.js +9 -14
- package/dist/cmd/lib/adaptaters/cmd.d.ts +1 -1
- package/dist/cmd/lib/adaptaters/cmd.js +7 -4
- package/dist/cmd/lib/mcp.d.ts +3 -3
- package/dist/cmd/lib/options_parsers.js +1 -1
- package/dist/cmd/lib/tasks/cmd.d.ts +3 -4
- package/dist/cmd/lib/tasks/cmd.js +98 -72
- package/dist/cmd/lib/tasks/read.d.ts +5 -6
- package/dist/cmd/lib/tasks/read.js +19 -16
- package/dist/cmd/lib/utils.js +3 -1
- package/dist/cmd/lib/workflows/cmd.js +9 -6
- package/dist/cmd/lib/workflows/read.d.ts +3 -4
- package/dist/cmd/lib/workflows/read.js +37 -15
- package/dist/conf.js +45 -9
- package/dist/const.d.ts +3 -0
- package/dist/const.js +24 -0
- package/dist/db/read.d.ts +3 -3
- package/dist/db/read.js +4 -4
- package/dist/db/schemas.js +3 -2
- package/dist/db/write.d.ts +4 -3
- package/dist/db/write.js +36 -12
- package/dist/index.js +2 -4
- package/dist/interfaces.d.ts +21 -16
- package/dist/main.d.ts +1 -2
- package/dist/main.js +1 -2
- package/dist/state/backends.d.ts +7 -0
- package/dist/state/backends.js +128 -0
- package/dist/utils/perf.js +1 -1
- package/dist/utils/user_msgs.js +5 -5
- package/package.json +19 -20
- package/dist/agent.d.ts +0 -8
- package/dist/agent.js +0 -24
- package/dist/cmd/backends.d.ts +0 -3
- package/dist/cmd/backends.js +0 -20
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Lm } from "@locallm/api";
|
|
2
|
+
import { reactive, ref } from "@vue/reactivity";
|
|
3
|
+
import colors from "ansi-colors";
|
|
4
|
+
import { readBackends } from "../db/read.js";
|
|
5
|
+
import { setDefaultBackend } from "../db/write.js";
|
|
6
|
+
import { runtimeDataError } from "../utils/user_msgs.js";
|
|
7
|
+
const backend = ref();
|
|
8
|
+
const backends = reactive({});
|
|
9
|
+
const isBackendUp = ref(false);
|
|
10
|
+
async function initBackends(isVerbose = false) {
|
|
11
|
+
const rmb = readBackends();
|
|
12
|
+
let defaultBackendName = null;
|
|
13
|
+
for (const bk of Object.values(rmb)) {
|
|
14
|
+
const lm = new Lm({
|
|
15
|
+
providerType: bk.type,
|
|
16
|
+
serverUrl: bk.url,
|
|
17
|
+
});
|
|
18
|
+
lm.name = bk.name;
|
|
19
|
+
if (bk?.apiKey) {
|
|
20
|
+
lm.apiKey = bk.apiKey;
|
|
21
|
+
}
|
|
22
|
+
;
|
|
23
|
+
backends[bk.name] = lm;
|
|
24
|
+
if (bk.isDefault) {
|
|
25
|
+
defaultBackendName = bk.name;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (defaultBackendName !== null) {
|
|
29
|
+
backend.value = backends[defaultBackendName];
|
|
30
|
+
isBackendUp.value = await probeBackend(backend.value, isVerbose);
|
|
31
|
+
if (isBackendUp.value && backend.value.providerType == "ollama") {
|
|
32
|
+
await backend.value.modelsInfo();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function setBackend(name, isVerbose = false) {
|
|
37
|
+
if (!(Object.keys(backends).includes(name))) {
|
|
38
|
+
runtimeDataError(`Backend ${name} not found. Available backends: ${Object.keys(backends)}`);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
backend.value = backends[name];
|
|
42
|
+
setDefaultBackend(name);
|
|
43
|
+
console.log("Default backend set to", name);
|
|
44
|
+
isBackendUp.value = await probeBackend(backend.value, isVerbose);
|
|
45
|
+
}
|
|
46
|
+
async function listBackends() {
|
|
47
|
+
for (const [name, lm] of Object.entries(backends)) {
|
|
48
|
+
const bcn = name == backend.value?.name ? colors.bold(name) : name;
|
|
49
|
+
const buf = new Array("-", bcn, colors.dim("(" + lm.providerType + ") " + lm.serverUrl));
|
|
50
|
+
console.log(buf.join(" "));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const probeBackend = async (lm, isVerbose) => {
|
|
54
|
+
let isUp = false;
|
|
55
|
+
switch (lm.providerType) {
|
|
56
|
+
case "llamacpp":
|
|
57
|
+
try {
|
|
58
|
+
const info = await lm.info();
|
|
59
|
+
if (isVerbose) {
|
|
60
|
+
console.log(`Provider ${lm.name} up`, info);
|
|
61
|
+
}
|
|
62
|
+
isUp = true;
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
if (isVerbose) {
|
|
66
|
+
console.log(`Provider ${lm.name} down`, e);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
70
|
+
case "koboldcpp":
|
|
71
|
+
try {
|
|
72
|
+
const info = await lm.info();
|
|
73
|
+
if (lm.model.name.length > 0) {
|
|
74
|
+
if (isVerbose) {
|
|
75
|
+
console.log(`Provider ${lm.name} up`, info);
|
|
76
|
+
}
|
|
77
|
+
isUp = true;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
if (isVerbose) {
|
|
81
|
+
console.log(`Provider ${lm.name} down`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
if (isVerbose) {
|
|
87
|
+
console.log(`Provider ${lm.name} down`, e);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
break;
|
|
91
|
+
case "ollama":
|
|
92
|
+
try {
|
|
93
|
+
await lm.modelsInfo();
|
|
94
|
+
if (isVerbose) {
|
|
95
|
+
console.log(`Provider ${lm.name} up`);
|
|
96
|
+
}
|
|
97
|
+
isUp = true;
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
if (isVerbose) {
|
|
101
|
+
console.log(`Provider ${lm.name} down`, e);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
case "openai":
|
|
106
|
+
try {
|
|
107
|
+
await lm.modelsInfo();
|
|
108
|
+
if (isVerbose) {
|
|
109
|
+
console.log(`Provider ${lm.name} up`);
|
|
110
|
+
}
|
|
111
|
+
isUp = true;
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
if (isVerbose) {
|
|
115
|
+
console.log(`Provider ${lm.name} down`, e);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
break;
|
|
119
|
+
case "browser":
|
|
120
|
+
await lm.modelsInfo();
|
|
121
|
+
isUp = true;
|
|
122
|
+
break;
|
|
123
|
+
default:
|
|
124
|
+
throw new Error("Unknown provider type");
|
|
125
|
+
}
|
|
126
|
+
return isUp;
|
|
127
|
+
};
|
|
128
|
+
export { backend, backends, initBackends, listBackends, setBackend };
|
package/dist/utils/perf.js
CHANGED
|
@@ -26,7 +26,7 @@ const usePerfTimer = (startTimer = true) => {
|
|
|
26
26
|
return `${ms.toFixed(2)} milliseconds`;
|
|
27
27
|
if (seconds < 60)
|
|
28
28
|
return `${seconds.toFixed(1)} seconds`;
|
|
29
|
-
return `${minutes.toFixed(
|
|
29
|
+
return `${minutes.toFixed()} minutes ${(seconds % 60).toFixed()} seconds`;
|
|
30
30
|
};
|
|
31
31
|
return {
|
|
32
32
|
start,
|
package/dist/utils/user_msgs.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { exit } from "process";
|
|
2
|
-
import
|
|
2
|
+
import colors from "ansi-colors";
|
|
3
3
|
function runtimeError(...msg) {
|
|
4
|
-
console.warn("💥",
|
|
4
|
+
console.warn("💥", colors.dim("Runtime error:"), ...msg);
|
|
5
5
|
exit(1);
|
|
6
6
|
}
|
|
7
7
|
function runtimeWarning(...msg) {
|
|
8
|
-
console.warn("⚠️",
|
|
8
|
+
console.warn("⚠️", colors.dim("Runtime warning:"), ...msg);
|
|
9
9
|
}
|
|
10
10
|
function runtimeDataError(...msg) {
|
|
11
|
-
console.warn("❌",
|
|
11
|
+
console.warn("❌", colors.dim("Runtime data error:"), ...msg);
|
|
12
12
|
exit(1);
|
|
13
13
|
}
|
|
14
14
|
function runtimeInfo(...msg) {
|
|
15
|
-
console.log("📫",
|
|
15
|
+
console.log("📫", colors.dim("Info:"), ...msg);
|
|
16
16
|
}
|
|
17
17
|
export { runtimeError, runtimeWarning, runtimeDataError, runtimeInfo, };
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@agent-smith/cli",
|
|
3
3
|
"description": "Agent Smith: terminal client for language model agents",
|
|
4
4
|
"repository": "https://github.com/synw/agent-smith",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.80",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"buildrl": "rm -rf dist/* && rollup -c",
|
|
8
8
|
"build": "rm -rf dist/* && tsc",
|
|
@@ -10,39 +10,38 @@
|
|
|
10
10
|
"watch": "tsc --noCheck -p . -w"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@agent-smith/
|
|
14
|
-
"@agent-smith/
|
|
15
|
-
"@agent-smith/lmtask": "^0.0.47",
|
|
13
|
+
"@agent-smith/agent": "^0.0.4",
|
|
14
|
+
"@agent-smith/task": "^0.0.4",
|
|
16
15
|
"@agent-smith/tfm": "^0.1.2",
|
|
17
|
-
"@inquirer/prompts": "^7.
|
|
18
|
-
"@
|
|
19
|
-
"@
|
|
20
|
-
"@
|
|
16
|
+
"@inquirer/prompts": "^7.8.6",
|
|
17
|
+
"@intrinsicai/gbnfgen": "0.12.0",
|
|
18
|
+
"@locallm/api": "0.4.2",
|
|
19
|
+
"@modelcontextprotocol/sdk": "^1.18.2",
|
|
20
|
+
"@vue/reactivity": "^3.5.22",
|
|
21
21
|
"ansi-colors": "^4.1.3",
|
|
22
|
-
"better-sqlite3": "^
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"commander": "^14.0.0",
|
|
22
|
+
"better-sqlite3": "^12.4.1",
|
|
23
|
+
"clipboardy": "^5.0.0",
|
|
24
|
+
"commander": "^14.0.1",
|
|
26
25
|
"marked-terminal": "^7.3.0",
|
|
27
|
-
"modprompt": "^0.
|
|
28
|
-
"ora": "^
|
|
26
|
+
"modprompt": "^0.12.0",
|
|
27
|
+
"ora": "^9.0.0",
|
|
29
28
|
"python-shell": "^5.0.0",
|
|
30
|
-
"yaml": "^2.8.
|
|
29
|
+
"yaml": "^2.8.1"
|
|
31
30
|
},
|
|
32
31
|
"devDependencies": {
|
|
33
32
|
"@agent-smith/tmem-jobs": "^0.0.4",
|
|
34
33
|
"@commander-js/extra-typings": "^14.0.0",
|
|
35
|
-
"@locallm/types": "^0.
|
|
34
|
+
"@locallm/types": "^0.4.2",
|
|
36
35
|
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
37
|
-
"@rollup/plugin-typescript": "^12.1.
|
|
36
|
+
"@rollup/plugin-typescript": "^12.1.4",
|
|
38
37
|
"@types/better-sqlite3": "^7.6.13",
|
|
39
38
|
"@types/marked-terminal": "^6.1.1",
|
|
40
|
-
"@types/node": "^24.0
|
|
39
|
+
"@types/node": "^24.6.0",
|
|
41
40
|
"restmix": "^0.5.0",
|
|
42
|
-
"rollup": "^4.
|
|
41
|
+
"rollup": "^4.52.3",
|
|
43
42
|
"ts-node": "^10.9.2",
|
|
44
43
|
"tslib": "2.8.1",
|
|
45
|
-
"typescript": "^5.
|
|
44
|
+
"typescript": "^5.9.2"
|
|
46
45
|
},
|
|
47
46
|
"type": "module",
|
|
48
47
|
"preferGlobal": true,
|
package/dist/agent.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { LmBackend } from "@agent-smith/brain";
|
|
2
|
-
import { LmTaskBuilder } from "../../lmtask/dist/task.js";
|
|
3
|
-
import { marked } from 'marked';
|
|
4
|
-
import { FeatureType } from "./interfaces.js";
|
|
5
|
-
declare let brain: import("@agent-smith/brain").AgentBrain<Record<string, any>>;
|
|
6
|
-
declare const taskBuilder: LmTaskBuilder<FeatureType, Record<string, any>>;
|
|
7
|
-
declare function initAgent(backends: Array<LmBackend>): Promise<boolean>;
|
|
8
|
-
export { brain, initAgent, marked, taskBuilder };
|
package/dist/agent.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { useAgentBrain } from "@agent-smith/brain";
|
|
2
|
-
import { LmTaskBuilder } from "../../lmtask/dist/task.js";
|
|
3
|
-
import { marked } from 'marked';
|
|
4
|
-
import { markedTerminal } from "marked-terminal";
|
|
5
|
-
marked.use(markedTerminal());
|
|
6
|
-
let brain = useAgentBrain();
|
|
7
|
-
const taskBuilder = new LmTaskBuilder(brain);
|
|
8
|
-
async function initAgent(backends) {
|
|
9
|
-
backends.forEach(b => brain.addBackend(b));
|
|
10
|
-
if (!brain.state.get().isOn) {
|
|
11
|
-
brain.resetExperts();
|
|
12
|
-
if (backends.length > 0) {
|
|
13
|
-
await brain.discover();
|
|
14
|
-
}
|
|
15
|
-
await brain.discoverLocal(true);
|
|
16
|
-
await brain.backendsForModelsInfo();
|
|
17
|
-
}
|
|
18
|
-
const brainUp = brain.state.get().isOn;
|
|
19
|
-
if (!brainUp) {
|
|
20
|
-
console.log("❌ No backends found for inference");
|
|
21
|
-
}
|
|
22
|
-
return brainUp;
|
|
23
|
-
}
|
|
24
|
-
export { brain, initAgent, marked, taskBuilder };
|
package/dist/cmd/backends.d.ts
DELETED
package/dist/cmd/backends.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { readBackends } from "../db/read.js";
|
|
2
|
-
import { useLmBackend } from "../../../brain/dist/main.js";
|
|
3
|
-
function initRemoteBackends() {
|
|
4
|
-
const rmb = readBackends();
|
|
5
|
-
const rmbs = new Array();
|
|
6
|
-
rmb.forEach(b => {
|
|
7
|
-
const bcs = {
|
|
8
|
-
name: b.name,
|
|
9
|
-
providerType: b.type,
|
|
10
|
-
serverUrl: b.uri,
|
|
11
|
-
};
|
|
12
|
-
if (b?.apiKey) {
|
|
13
|
-
bcs.apiKey = b.apiKey;
|
|
14
|
-
}
|
|
15
|
-
;
|
|
16
|
-
rmbs.push(useLmBackend(bcs));
|
|
17
|
-
});
|
|
18
|
-
return rmbs;
|
|
19
|
-
}
|
|
20
|
-
export { initRemoteBackends, };
|