clawconnect-agent 0.1.6 → 0.1.7
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 +83 -7
- package/README.zh-CN.md +93 -17
- package/dist/commands/install.js +10 -4
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/local-handlers.js +0 -28
- package/dist/commands/local-handlers.js.map +1 -1
- package/dist/commands/pair.d.ts +2 -0
- package/dist/commands/pair.js +17 -6
- package/dist/commands/pair.js.map +1 -1
- package/dist/commands/run.js +13 -16
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/send-file.d.ts +2 -0
- package/dist/commands/send-file.js +6 -0
- package/dist/commands/send-file.js.map +1 -1
- package/dist/commands/status.d.ts +13 -1
- package/dist/commands/status.js +58 -15
- package/dist/commands/status.js.map +1 -1
- package/dist/config/config.d.ts +6 -11
- package/dist/config/config.js +19 -48
- package/dist/config/config.js.map +1 -1
- package/dist/config/env.d.ts +1 -1
- package/dist/config/env.js +4 -5
- package/dist/config/env.js.map +1 -1
- package/dist/config/profile.d.ts +11 -0
- package/dist/config/profile.js +80 -0
- package/dist/config/profile.js.map +1 -0
- package/dist/gateway-profiles.d.ts +8 -0
- package/dist/gateway-profiles.js +24 -0
- package/dist/gateway-profiles.js.map +1 -0
- package/dist/hermes/hermes-relay-manager.d.ts +49 -0
- package/dist/hermes/hermes-relay-manager.js +636 -0
- package/dist/hermes/hermes-relay-manager.js.map +1 -0
- package/dist/hermes/hermes-runtime.d.ts +8 -0
- package/dist/hermes/hermes-runtime.js +8 -0
- package/dist/hermes/hermes-runtime.js.map +1 -0
- package/dist/hermes/hermes-session-store.d.ts +15 -0
- package/dist/hermes/hermes-session-store.js +152 -0
- package/dist/hermes/hermes-session-store.js.map +1 -0
- package/dist/hermes/hermes-voice-input.d.ts +13 -0
- package/dist/hermes/hermes-voice-input.js +27 -0
- package/dist/hermes/hermes-voice-input.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-artifacts.d.ts +3 -0
- package/dist/hermes/models/hermes-runtime-artifacts.js +65 -0
- package/dist/hermes/models/hermes-runtime-artifacts.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-backups.d.ts +5 -0
- package/dist/hermes/models/hermes-runtime-backups.js +128 -0
- package/dist/hermes/models/hermes-runtime-backups.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-chat.d.ts +40 -0
- package/dist/hermes/models/hermes-runtime-chat.js +623 -0
- package/dist/hermes/models/hermes-runtime-chat.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-command-router.d.ts +2 -0
- package/dist/hermes/models/hermes-runtime-command-router.js +93 -0
- package/dist/hermes/models/hermes-runtime-command-router.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-command-utils.d.ts +3 -0
- package/dist/hermes/models/hermes-runtime-command-utils.js +19 -0
- package/dist/hermes/models/hermes-runtime-command-utils.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-cron.d.ts +11 -0
- package/dist/hermes/models/hermes-runtime-cron.js +301 -0
- package/dist/hermes/models/hermes-runtime-cron.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-lifecycle.d.ts +9 -0
- package/dist/hermes/models/hermes-runtime-lifecycle.js +111 -0
- package/dist/hermes/models/hermes-runtime-lifecycle.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-models.d.ts +29 -0
- package/dist/hermes/models/hermes-runtime-models.js +125 -0
- package/dist/hermes/models/hermes-runtime-models.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-process.d.ts +22 -0
- package/dist/hermes/models/hermes-runtime-process.js +130 -0
- package/dist/hermes/models/hermes-runtime-process.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-sessions.d.ts +5 -0
- package/dist/hermes/models/hermes-runtime-sessions.js +71 -0
- package/dist/hermes/models/hermes-runtime-sessions.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-skills.d.ts +13 -0
- package/dist/hermes/models/hermes-runtime-skills.js +322 -0
- package/dist/hermes/models/hermes-runtime-skills.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-types.d.ts +19 -0
- package/dist/hermes/models/hermes-runtime-types.js +2 -0
- package/dist/hermes/models/hermes-runtime-types.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-usage.d.ts +22 -0
- package/dist/hermes/models/hermes-runtime-usage.js +211 -0
- package/dist/hermes/models/hermes-runtime-usage.js.map +1 -0
- package/dist/hermes/models/hermes-runtime-values.d.ts +14 -0
- package/dist/hermes/models/hermes-runtime-values.js +105 -0
- package/dist/hermes/models/hermes-runtime-values.js.map +1 -0
- package/dist/i18n/index.js +4 -0
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.js +115 -9
- package/dist/index.js.map +1 -1
- package/dist/platform/service-manager-common.d.ts +5 -2
- package/dist/platform/service-manager-common.js +18 -7
- package/dist/platform/service-manager-common.js.map +1 -1
- package/dist/platform/service-manager.d.ts +16 -5
- package/dist/platform/service-manager.js +85 -50
- package/dist/platform/service-manager.js.map +1 -1
- package/dist/relay/chat-history.js +18 -0
- package/dist/relay/chat-history.js.map +1 -1
- package/dist/relay/gateway-client.js +4 -3
- package/dist/relay/gateway-client.js.map +1 -1
- package/dist/relay/mobile-chat-run-bridge.d.ts +93 -0
- package/dist/relay/mobile-chat-run-bridge.js +68 -0
- package/dist/relay/mobile-chat-run-bridge.js.map +1 -0
- package/dist/relay/openclaw-voice-input.d.ts +13 -0
- package/dist/relay/openclaw-voice-input.js +18 -0
- package/dist/relay/openclaw-voice-input.js.map +1 -0
- package/dist/relay/relay-manager.d.ts +0 -3
- package/dist/relay/relay-manager.js +39 -170
- package/dist/relay/relay-manager.js.map +1 -1
- package/dist/relay/session-context.js +11 -1
- package/dist/relay/session-context.js.map +1 -1
- package/dist/relay/slash-command-catalog.d.ts +1 -1
- package/dist/relay/slash-command-catalog.generated.d.ts +0 -5
- package/dist/relay/slash-command-catalog.generated.js +0 -6
- package/dist/relay/slash-command-catalog.generated.js.map +1 -1
- package/dist/relay/voice-input.d.ts +11 -0
- package/dist/relay/voice-input.js +118 -0
- package/dist/relay/voice-input.js.map +1 -0
- package/dist/runtime-adapters.d.ts +19 -0
- package/dist/runtime-adapters.js +39 -0
- package/dist/runtime-adapters.js.map +1 -0
- package/package.json +3 -3
- package/dist/commands/voice-reply.d.ts +0 -39
- package/dist/commands/voice-reply.js +0 -329
- package/dist/commands/voice-reply.js.map +0 -1
- package/dist/relay/voice-reply-preference.d.ts +0 -25
- package/dist/relay/voice-reply-preference.js +0 -103
- package/dist/relay/voice-reply-preference.js.map +0 -1
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
2
|
+
import { basename, join } from "path";
|
|
3
|
+
import { DEFAULT_TIMEOUT_MS, HERMES_HOME_DIR, runHermes, runHermesPython, runHermesWithInput, } from "./hermes-runtime-process.js";
|
|
4
|
+
import { runHermesOutput } from "./hermes-runtime-command-utils.js";
|
|
5
|
+
import { numberParam, stringParam, stringValue, toRecord, } from "./hermes-runtime-values.js";
|
|
6
|
+
export function runHermesSkillsList() {
|
|
7
|
+
const output = runHermes(["skills", "list"]);
|
|
8
|
+
return { ok: true, payload: { skills: parseHermesSkillsList(output), output } };
|
|
9
|
+
}
|
|
10
|
+
export function runHermesSkillsUpdate(params) {
|
|
11
|
+
const record = toRecord(params);
|
|
12
|
+
const skillKey = stringParam(record, "skillKey", "name", "id");
|
|
13
|
+
if (!skillKey || typeof record.enabled !== "boolean") {
|
|
14
|
+
return { ok: false, error: "skill_key_and_enabled_required" };
|
|
15
|
+
}
|
|
16
|
+
const script = [
|
|
17
|
+
"from hermes_cli.config import load_config",
|
|
18
|
+
"from hermes_cli.skills_config import get_disabled_skills, save_disabled_skills",
|
|
19
|
+
`skill=${JSON.stringify(skillKey)}`,
|
|
20
|
+
`enabled=${record.enabled ? "True" : "False"}`,
|
|
21
|
+
"config=load_config()",
|
|
22
|
+
"disabled=get_disabled_skills(config)",
|
|
23
|
+
"disabled.discard(skill) if enabled else disabled.add(skill)",
|
|
24
|
+
"save_disabled_skills(config, disabled)",
|
|
25
|
+
"print('ok')",
|
|
26
|
+
].join("\n");
|
|
27
|
+
runHermesPython(script);
|
|
28
|
+
return { ok: true, payload: { ok: true, skillKey, enabled: record.enabled } };
|
|
29
|
+
}
|
|
30
|
+
export function runHermesSkillsSearch(params) {
|
|
31
|
+
const query = stringParam(toRecord(params), "query", "q") ?? "";
|
|
32
|
+
return runHermesOutput(["skills", "search", query]);
|
|
33
|
+
}
|
|
34
|
+
export function runHermesSkillsInspect(params) {
|
|
35
|
+
const id = stringParam(toRecord(params), "identifier", "skillKey", "name", "id");
|
|
36
|
+
if (!id)
|
|
37
|
+
return { ok: false, error: "skill_identifier_required" };
|
|
38
|
+
return runHermesOutput(["skills", "inspect", id]);
|
|
39
|
+
}
|
|
40
|
+
export function runHermesSkillsInstall(params) {
|
|
41
|
+
const record = toRecord(params);
|
|
42
|
+
const id = stringParam(record, "identifier", "skillKey", "name", "id");
|
|
43
|
+
if (!id)
|
|
44
|
+
return { ok: false, error: "skill_identifier_required" };
|
|
45
|
+
const args = ["skills", "install", id, "--yes"];
|
|
46
|
+
const category = stringParam(record, "category");
|
|
47
|
+
const name = stringParam(record, "nameOverride");
|
|
48
|
+
if (category)
|
|
49
|
+
args.push("--category", category);
|
|
50
|
+
if (name)
|
|
51
|
+
args.push("--name", name);
|
|
52
|
+
if (record.force === true)
|
|
53
|
+
args.push("--force");
|
|
54
|
+
return runHermesOutput(args, 10 * 60_000);
|
|
55
|
+
}
|
|
56
|
+
export function runHermesSkillsUninstall(params) {
|
|
57
|
+
const id = stringParam(toRecord(params), "skillKey", "name", "id");
|
|
58
|
+
if (!id)
|
|
59
|
+
return { ok: false, error: "skill_name_required" };
|
|
60
|
+
return runHermesOutput(["skills", "uninstall", id], 10 * 60_000);
|
|
61
|
+
}
|
|
62
|
+
export function runHermesMcpList() {
|
|
63
|
+
const output = runHermes(["mcp", "list"]);
|
|
64
|
+
return { ok: true, payload: { servers: parseHermesMcpList(output), output } };
|
|
65
|
+
}
|
|
66
|
+
export function runHermesMcpTest(params) {
|
|
67
|
+
const name = stringParam(toRecord(params), "name", "serverName");
|
|
68
|
+
if (!name)
|
|
69
|
+
return { ok: false, error: "mcp_server_name_required" };
|
|
70
|
+
return runHermesOutput(["mcp", "test", name]);
|
|
71
|
+
}
|
|
72
|
+
export function runHermesMcpAdd(params) {
|
|
73
|
+
const record = toRecord(params);
|
|
74
|
+
const name = stringParam(record, "name", "serverName");
|
|
75
|
+
if (!name)
|
|
76
|
+
return { ok: false, error: "mcp_server_name_required" };
|
|
77
|
+
const args = ["mcp", "add", name];
|
|
78
|
+
const url = stringParam(record, "url");
|
|
79
|
+
const command = stringParam(record, "command");
|
|
80
|
+
const preset = stringParam(record, "preset");
|
|
81
|
+
if (url)
|
|
82
|
+
args.push("--url", url);
|
|
83
|
+
if (command)
|
|
84
|
+
args.push("--command", command);
|
|
85
|
+
const argValues = Array.isArray(record.args) ? record.args.filter((item) => typeof item === "string") : [];
|
|
86
|
+
if (argValues.length > 0)
|
|
87
|
+
args.push("--args", ...argValues);
|
|
88
|
+
if (preset)
|
|
89
|
+
args.push("--preset", preset);
|
|
90
|
+
const envValues = Array.isArray(record.env) ? record.env.filter((item) => typeof item === "string") : [];
|
|
91
|
+
if (envValues.length > 0)
|
|
92
|
+
args.push("--env", ...envValues);
|
|
93
|
+
const output = runHermesWithInput(args, "y\n", 10 * 60_000);
|
|
94
|
+
return { ok: true, payload: { output } };
|
|
95
|
+
}
|
|
96
|
+
export function runHermesMcpRemove(params) {
|
|
97
|
+
const name = stringParam(toRecord(params), "name", "serverName");
|
|
98
|
+
if (!name)
|
|
99
|
+
return { ok: false, error: "mcp_server_name_required" };
|
|
100
|
+
return { ok: true, payload: { output: runHermesWithInput(["mcp", "remove", name], "y\n", DEFAULT_TIMEOUT_MS) } };
|
|
101
|
+
}
|
|
102
|
+
export function runHermesDashboardStart(params) {
|
|
103
|
+
const record = toRecord(params);
|
|
104
|
+
const args = ["dashboard", "--no-open"];
|
|
105
|
+
const port = numberParam(record, "port");
|
|
106
|
+
const host = stringParam(record, "host");
|
|
107
|
+
if (port)
|
|
108
|
+
args.push("--port", String(port));
|
|
109
|
+
if (host)
|
|
110
|
+
args.push("--host", host);
|
|
111
|
+
if (record.tui === true)
|
|
112
|
+
args.push("--tui");
|
|
113
|
+
if (record.skipBuild === true)
|
|
114
|
+
args.push("--skip-build");
|
|
115
|
+
return runHermesOutput(args, 10 * 60_000);
|
|
116
|
+
}
|
|
117
|
+
export function parseHermesSkillsList(output) {
|
|
118
|
+
const skills = [];
|
|
119
|
+
for (const line of output.split(/\r?\n/)) {
|
|
120
|
+
if (!line.includes("│"))
|
|
121
|
+
continue;
|
|
122
|
+
const cells = line.split("│").slice(1, -1).map((cell) => cell.trim());
|
|
123
|
+
if (cells.length < 5 || cells[0] === "Name" || cells.some((cell) => cell.includes("━")))
|
|
124
|
+
continue;
|
|
125
|
+
const skillKey = cells[0];
|
|
126
|
+
const metadata = readHermesSkillMetadata(skillKey, cells[1]);
|
|
127
|
+
skills.push({
|
|
128
|
+
skillKey: metadata?.skillKey ?? skillKey,
|
|
129
|
+
name: metadata?.name ?? skillKey,
|
|
130
|
+
description: metadata?.description ?? cells[1],
|
|
131
|
+
category: metadata?.category ?? cells[1],
|
|
132
|
+
source: cells[2],
|
|
133
|
+
trust: cells[3],
|
|
134
|
+
status: cells[4],
|
|
135
|
+
enabled: cells[4].toLowerCase() === "enabled",
|
|
136
|
+
...(metadata?.filePath ? { filePath: metadata.filePath } : {}),
|
|
137
|
+
...(metadata?.baseDir ? { baseDir: metadata.baseDir } : {}),
|
|
138
|
+
...(metadata?.homepage ? { homepage: metadata.homepage } : {}),
|
|
139
|
+
...(metadata?.requirements ? { requirements: metadata.requirements } : {}),
|
|
140
|
+
...(metadata?.platforms ? { platforms: metadata.platforms } : {}),
|
|
141
|
+
...(metadata?.version ? { version: metadata.version } : {}),
|
|
142
|
+
...(metadata?.author ? { author: metadata.author } : {}),
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
return skills;
|
|
146
|
+
}
|
|
147
|
+
function readHermesSkillMetadata(skillKey, category) {
|
|
148
|
+
const skillFile = resolveHermesSkillFile(skillKey, category);
|
|
149
|
+
if (!skillFile) {
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
const frontmatter = parseYamlFrontmatter(readFileSync(skillFile, "utf8"));
|
|
154
|
+
const metadata = toRecord(frontmatter.metadata);
|
|
155
|
+
const hermes = toRecord(metadata.hermes);
|
|
156
|
+
return {
|
|
157
|
+
skillKey: stringValue(frontmatter.name) ?? basename(dirnameForFile(skillFile)),
|
|
158
|
+
name: stringValue(frontmatter.name) ?? basename(dirnameForFile(skillFile)),
|
|
159
|
+
description: stringValue(frontmatter.description),
|
|
160
|
+
category: normalizeSkillCategoryFromPath(skillFile),
|
|
161
|
+
filePath: skillFile,
|
|
162
|
+
baseDir: dirnameForFile(skillFile),
|
|
163
|
+
homepage: stringValue(hermes.homepage) ?? stringValue(frontmatter.homepage),
|
|
164
|
+
requirements: {
|
|
165
|
+
bins: stringArrayValue(toRecord(frontmatter.prerequisites).commands),
|
|
166
|
+
anyBins: [],
|
|
167
|
+
env: [
|
|
168
|
+
...stringArrayValue(toRecord(frontmatter.prerequisites).env_vars),
|
|
169
|
+
...stringArrayValue(toRecord(frontmatter.prerequisites).env),
|
|
170
|
+
],
|
|
171
|
+
config: stringArrayValue(toRecord(frontmatter.prerequisites).config),
|
|
172
|
+
os: stringArrayValue(frontmatter.platforms),
|
|
173
|
+
},
|
|
174
|
+
platforms: stringArrayValue(frontmatter.platforms),
|
|
175
|
+
version: stringValue(frontmatter.version),
|
|
176
|
+
author: stringValue(frontmatter.author),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return undefined;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function resolveHermesSkillFile(skillKey, category) {
|
|
184
|
+
const skillsDir = hermesSkillsDir();
|
|
185
|
+
const candidates = [];
|
|
186
|
+
if (category.trim()) {
|
|
187
|
+
candidates.push(join(skillsDir, category.trim(), skillKey, "SKILL.md"));
|
|
188
|
+
}
|
|
189
|
+
candidates.push(join(skillsDir, skillKey, "SKILL.md"));
|
|
190
|
+
for (const candidate of candidates) {
|
|
191
|
+
if (existsSync(candidate)) {
|
|
192
|
+
return candidate;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const normalizedPrefix = skillKey.replace(/…+$/u, "").trim();
|
|
196
|
+
if (!normalizedPrefix) {
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
199
|
+
const categoryDirs = category.trim()
|
|
200
|
+
? [join(skillsDir, category.trim())]
|
|
201
|
+
: [skillsDir, ...listDirectoryPaths(skillsDir)];
|
|
202
|
+
for (const categoryDir of categoryDirs) {
|
|
203
|
+
for (const skillDir of listDirectoryPaths(categoryDir)) {
|
|
204
|
+
const name = basename(skillDir);
|
|
205
|
+
if (name.startsWith(normalizedPrefix)) {
|
|
206
|
+
const skillFile = join(skillDir, "SKILL.md");
|
|
207
|
+
if (existsSync(skillFile)) {
|
|
208
|
+
return skillFile;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
function parseYamlFrontmatter(content) {
|
|
216
|
+
const match = content.match(/^---\s*\r?\n([\s\S]*?)\r?\n---/);
|
|
217
|
+
if (!match) {
|
|
218
|
+
return {};
|
|
219
|
+
}
|
|
220
|
+
const root = {};
|
|
221
|
+
const stack = [{ indent: -1, record: root }];
|
|
222
|
+
for (const rawLine of match[1].split(/\r?\n/)) {
|
|
223
|
+
if (!rawLine.trim() || rawLine.trimStart().startsWith("#")) {
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
const indent = rawLine.match(/^\s*/)?.[0].length ?? 0;
|
|
227
|
+
const pair = rawLine.trim().match(/^([^:#][^:]*):(?:\s*(.*))?$/);
|
|
228
|
+
if (!pair) {
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
while (stack.length > 1 && indent <= stack[stack.length - 1].indent) {
|
|
232
|
+
stack.pop();
|
|
233
|
+
}
|
|
234
|
+
const parent = stack[stack.length - 1].record;
|
|
235
|
+
const key = pair[1].trim();
|
|
236
|
+
const rawValue = pair[2]?.trim() ?? "";
|
|
237
|
+
if (!rawValue) {
|
|
238
|
+
const child = {};
|
|
239
|
+
parent[key] = child;
|
|
240
|
+
stack.push({ indent, record: child });
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
parent[key] = parseYamlScalar(rawValue);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return root;
|
|
247
|
+
}
|
|
248
|
+
function parseYamlScalar(value) {
|
|
249
|
+
const trimmed = value.trim();
|
|
250
|
+
if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
|
|
251
|
+
const inner = trimmed.slice(1, -1).trim();
|
|
252
|
+
if (!inner)
|
|
253
|
+
return [];
|
|
254
|
+
return inner.split(",").map((item) => stripYamlQuotes(item.trim())).filter(Boolean);
|
|
255
|
+
}
|
|
256
|
+
if (trimmed === "true")
|
|
257
|
+
return true;
|
|
258
|
+
if (trimmed === "false")
|
|
259
|
+
return false;
|
|
260
|
+
return stripYamlQuotes(trimmed);
|
|
261
|
+
}
|
|
262
|
+
function stripYamlQuotes(value) {
|
|
263
|
+
if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
|
|
264
|
+
return value.slice(1, -1);
|
|
265
|
+
}
|
|
266
|
+
return value;
|
|
267
|
+
}
|
|
268
|
+
function stringArrayValue(value) {
|
|
269
|
+
if (Array.isArray(value)) {
|
|
270
|
+
return value.filter((item) => typeof item === "string" && item.trim().length > 0).map((item) => item.trim());
|
|
271
|
+
}
|
|
272
|
+
if (typeof value === "string" && value.trim()) {
|
|
273
|
+
return [value.trim()];
|
|
274
|
+
}
|
|
275
|
+
return [];
|
|
276
|
+
}
|
|
277
|
+
function listDirectoryPaths(dir) {
|
|
278
|
+
try {
|
|
279
|
+
return readdirSync(dir)
|
|
280
|
+
.map((name) => join(dir, name))
|
|
281
|
+
.filter((path) => {
|
|
282
|
+
try {
|
|
283
|
+
return statSync(path).isDirectory();
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
return [];
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
function dirnameForFile(filePath) {
|
|
295
|
+
return filePath.slice(0, -"/SKILL.md".length);
|
|
296
|
+
}
|
|
297
|
+
function normalizeSkillCategoryFromPath(filePath) {
|
|
298
|
+
const skillsDir = hermesSkillsDir();
|
|
299
|
+
const relative = filePath.startsWith(`${skillsDir}/`) ? filePath.slice(skillsDir.length + 1) : "";
|
|
300
|
+
const parts = relative.split("/");
|
|
301
|
+
const category = parts.length >= 3 ? parts[0]?.trim() : "";
|
|
302
|
+
return category ? category : undefined;
|
|
303
|
+
}
|
|
304
|
+
function hermesSkillsDir() {
|
|
305
|
+
return process.env.HERMES_SKILLS_DIR?.trim() || join(HERMES_HOME_DIR, "hermes-agent", "skills");
|
|
306
|
+
}
|
|
307
|
+
function parseHermesMcpList(output) {
|
|
308
|
+
if (/No MCP servers configured/i.test(output))
|
|
309
|
+
return [];
|
|
310
|
+
const servers = [];
|
|
311
|
+
for (const line of output.split(/\r?\n/)) {
|
|
312
|
+
const trimmed = line.trim();
|
|
313
|
+
if (!trimmed || trimmed.startsWith("Name") || trimmed.startsWith("─") || trimmed.startsWith("MCP "))
|
|
314
|
+
continue;
|
|
315
|
+
const match = trimmed.match(/^(\S+)\s+(.{1,30}?)\s{2,}(.{1,12}?)\s{2,}(.+)$/);
|
|
316
|
+
if (match) {
|
|
317
|
+
servers.push({ name: match[1], transport: match[2].trim(), tools: match[3].trim(), status: match[4].trim() });
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return servers;
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=hermes-runtime-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-runtime-skills.js","sourceRoot":"","sources":["../../../src/hermes/models/hermes-runtime-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type HermesChatResult = {
|
|
2
|
+
output: string;
|
|
3
|
+
sessionKey: string;
|
|
4
|
+
artifactPaths: string[];
|
|
5
|
+
usage?: HermesUsageSnapshot;
|
|
6
|
+
};
|
|
7
|
+
export type HermesUsageSnapshot = {
|
|
8
|
+
currentModel?: string;
|
|
9
|
+
provider?: string;
|
|
10
|
+
contextUsage?: number;
|
|
11
|
+
contextLimit?: number;
|
|
12
|
+
hermesSessionId?: string;
|
|
13
|
+
};
|
|
14
|
+
export type HermesToolLogEvent = {
|
|
15
|
+
toolName: string;
|
|
16
|
+
phase: "streaming" | "completed" | "failed";
|
|
17
|
+
text: string;
|
|
18
|
+
isError?: boolean;
|
|
19
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-runtime-types.js","sourceRoot":"","sources":["../../../src/hermes/models/hermes-runtime-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { HermesUsageSnapshot } from "./hermes-runtime-types.js";
|
|
2
|
+
import { parseHermesSessionsList } from "../hermes-session-store.js";
|
|
3
|
+
export declare function listHermesSessions(): Promise<ReturnType<typeof parseHermesSessionsList>>;
|
|
4
|
+
export declare function readHermesStatusSnapshot(): HermesUsageSnapshot;
|
|
5
|
+
export declare function collectHermesUsageSnapshot(hermesSessionId?: string): Promise<HermesUsageSnapshot>;
|
|
6
|
+
export declare function parseHermesStatusSnapshot(output: string): HermesUsageSnapshot;
|
|
7
|
+
export declare function parseHermesSessionUsageSnapshot(output: string): HermesUsageSnapshot;
|
|
8
|
+
export declare function readHermesConfigSnapshot(): {
|
|
9
|
+
model?: string;
|
|
10
|
+
provider?: string;
|
|
11
|
+
providers: string[];
|
|
12
|
+
};
|
|
13
|
+
export declare function hermesConfiguredProviderIds(config: {
|
|
14
|
+
provider?: string;
|
|
15
|
+
providers: string[];
|
|
16
|
+
}, currentProvider?: string): string[];
|
|
17
|
+
export declare function isHermesChatModel(modelId: string, modelRecord: Record<string, unknown>): boolean;
|
|
18
|
+
export declare function readHermesContextLimit(model: string, provider?: string): number | undefined;
|
|
19
|
+
export declare function hermesModelsDevProviderId(provider?: string): string | undefined;
|
|
20
|
+
export declare function normalizeModelId(model: string | undefined): string;
|
|
21
|
+
export declare function normalizeProviderId(provider: string | undefined): string;
|
|
22
|
+
export declare function normalizedProviderMatches(left: string | undefined, right: string | undefined): boolean;
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { readFileSync, readdirSync, statSync } from "fs";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
import { HERMES_HOME_DIR, HERMES_LOG_DIR, HERMES_MODELS_DEV_CACHE_FILE, runHermes, stripAnsi, } from "./hermes-runtime-process.js";
|
|
4
|
+
import { firstNonNegativeInteger, firstPositiveInteger, mergeHermesUsageSnapshots, nonNegativeInteger, parseJsonObject, parseMaybeJsonObject, stringValue, toRecord, } from "./hermes-runtime-values.js";
|
|
5
|
+
import { listStoredHermesSessions, mergeLiveHermesSessionsWithStoredAliases, parseHermesSessionsList, } from "../hermes-session-store.js";
|
|
6
|
+
export async function listHermesSessions() {
|
|
7
|
+
const output = runHermes(["sessions", "list"]);
|
|
8
|
+
const parsed = parseHermesSessionsList(output);
|
|
9
|
+
const stored = await listStoredHermesSessions();
|
|
10
|
+
return mergeLiveHermesSessionsWithStoredAliases(parsed, stored);
|
|
11
|
+
}
|
|
12
|
+
export function readHermesStatusSnapshot() {
|
|
13
|
+
try {
|
|
14
|
+
return enrichHermesUsageSnapshot(parseHermesStatusSnapshot(runHermes(["status"], 10_000)));
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return {};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function collectHermesUsageSnapshot(hermesSessionId) {
|
|
21
|
+
const status = readHermesStatusSnapshot();
|
|
22
|
+
const sessionId = hermesSessionId ?? (await latestHermesSessionId());
|
|
23
|
+
if (!sessionId) {
|
|
24
|
+
return status;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const output = runHermes(["sessions", "export", "-", "--session-id", sessionId], 10 * 60_000);
|
|
28
|
+
return enrichHermesUsageSnapshot(mergeHermesUsageSnapshots(status, parseHermesSessionUsageSnapshot(output), { hermesSessionId: sessionId }));
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return {
|
|
32
|
+
...status,
|
|
33
|
+
hermesSessionId: sessionId,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function parseHermesStatusSnapshot(output) {
|
|
38
|
+
const snapshot = {};
|
|
39
|
+
for (const rawLine of stripAnsi(output).split(/\r?\n/)) {
|
|
40
|
+
const line = rawLine.trim();
|
|
41
|
+
const model = line.match(/^Model:\s*(.+)$/i)?.[1]?.trim();
|
|
42
|
+
if (model && model !== "--") {
|
|
43
|
+
snapshot.currentModel = model;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const provider = line.match(/^Provider:\s*(.+)$/i)?.[1]?.trim();
|
|
47
|
+
if (provider && provider !== "--") {
|
|
48
|
+
snapshot.provider = provider;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return snapshot;
|
|
52
|
+
}
|
|
53
|
+
export function parseHermesSessionUsageSnapshot(output) {
|
|
54
|
+
const record = parseJsonObject(output);
|
|
55
|
+
if (!record) {
|
|
56
|
+
return {};
|
|
57
|
+
}
|
|
58
|
+
const modelConfig = parseMaybeJsonObject(record.model_config);
|
|
59
|
+
return mergeHermesUsageSnapshots({
|
|
60
|
+
currentModel: stringValue(record.model) ?? stringValue(record.currentModel) ?? stringValue(record.current_model),
|
|
61
|
+
contextUsage: firstNonNegativeInteger(record.input_tokens, record.prompt_tokens, record.contextUsage, record.context_usage),
|
|
62
|
+
contextLimit: firstPositiveInteger(record.contextLimit, record.context_limit, record.maxInputTokens, record.max_input_tokens, record.contextWindow, record.context_window, record.contextTokens, record.context_tokens, modelConfig?.contextLimit, modelConfig?.context_limit, modelConfig?.maxInputTokens, modelConfig?.max_input_tokens, modelConfig?.contextWindow, modelConfig?.context_window, modelConfig?.contextTokens, modelConfig?.context_tokens, modelConfig?.maxContextTokens, modelConfig?.max_context_tokens),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
export function readHermesConfigSnapshot() {
|
|
66
|
+
try {
|
|
67
|
+
const raw = readFileSync(join(HERMES_HOME_DIR, "config.yaml"), "utf8");
|
|
68
|
+
const model = raw.match(/^\s{2}default:\s*(.+)\s*$/m)?.[1]?.trim().replace(/^['"]|['"]$/g, "");
|
|
69
|
+
const provider = raw.match(/^\s{2}provider:\s*(.+)\s*$/m)?.[1]?.trim().replace(/^['"]|['"]$/g, "");
|
|
70
|
+
const providers = [];
|
|
71
|
+
const providerBlock = raw.match(/^providers:\s*\n([\s\S]*?)(?=^[^\s#][^:\n]*:|\Z)/m)?.[1] ?? "";
|
|
72
|
+
for (const match of providerBlock.matchAll(/^\s{2}([^:\s][^:]*):\s*$/gm)) {
|
|
73
|
+
providers.push(match[1].trim());
|
|
74
|
+
}
|
|
75
|
+
return { model, provider, providers };
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return { providers: [] };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export function hermesConfiguredProviderIds(config, currentProvider) {
|
|
82
|
+
const ids = [];
|
|
83
|
+
for (const candidate of [config.provider, ...config.providers]) {
|
|
84
|
+
if (candidate && candidate.trim().length > 0 && !ids.some((id) => normalizedProviderMatches(id, candidate))) {
|
|
85
|
+
ids.push(candidate.trim());
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (currentProvider && !ids.some((id) => normalizedProviderMatches(id, currentProvider))) {
|
|
89
|
+
ids.push(currentProvider.trim());
|
|
90
|
+
}
|
|
91
|
+
return ids;
|
|
92
|
+
}
|
|
93
|
+
export function isHermesChatModel(modelId, modelRecord) {
|
|
94
|
+
const family = stringValue(modelRecord.family)?.toLowerCase() ?? "";
|
|
95
|
+
const normalizedId = modelId.toLowerCase();
|
|
96
|
+
if (family.includes("embedding") || normalizedId.includes("embedding")) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
const modalities = toRecord(modelRecord.modalities);
|
|
100
|
+
const output = Array.isArray(modalities.output) ? modalities.output : undefined;
|
|
101
|
+
return !output || output.includes("text");
|
|
102
|
+
}
|
|
103
|
+
async function latestHermesSessionId() {
|
|
104
|
+
const sessions = await listHermesSessions();
|
|
105
|
+
return sessions[0]?.hermesSessionId;
|
|
106
|
+
}
|
|
107
|
+
function enrichHermesUsageSnapshot(snapshot) {
|
|
108
|
+
if (!snapshot.currentModel || snapshot.contextLimit !== undefined) {
|
|
109
|
+
return snapshot;
|
|
110
|
+
}
|
|
111
|
+
const contextLimit = readHermesContextLimit(snapshot.currentModel, snapshot.provider);
|
|
112
|
+
return contextLimit !== undefined ? { ...snapshot, contextLimit } : snapshot;
|
|
113
|
+
}
|
|
114
|
+
export function readHermesContextLimit(model, provider) {
|
|
115
|
+
return readHermesContextLimitFromLogs(model)
|
|
116
|
+
?? readHermesContextLimitFromModelsDevCache(model, provider);
|
|
117
|
+
}
|
|
118
|
+
function readHermesContextLimitFromLogs(model) {
|
|
119
|
+
const normalizedModel = normalizeModelId(model);
|
|
120
|
+
try {
|
|
121
|
+
const logFiles = readdirSync(HERMES_LOG_DIR)
|
|
122
|
+
.filter((name) => name.endsWith(".log"))
|
|
123
|
+
.map((name) => join(HERMES_LOG_DIR, name))
|
|
124
|
+
.sort((left, right) => statSync(left).mtimeMs - statSync(right).mtimeMs);
|
|
125
|
+
let latest;
|
|
126
|
+
for (const filePath of logFiles) {
|
|
127
|
+
const content = readFileSync(filePath, "utf8");
|
|
128
|
+
const pattern = /Cached context length\s+([^\s@]+)@[^\n]*?->\s*([\d,]+)\s*tokens/gi;
|
|
129
|
+
for (const match of content.matchAll(pattern)) {
|
|
130
|
+
if (normalizeModelId(match[1]) !== normalizedModel) {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
const parsed = nonNegativeInteger(match[2]?.replace(/,/g, ""));
|
|
134
|
+
if (parsed !== undefined && parsed > 0) {
|
|
135
|
+
latest = parsed;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return latest;
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function readHermesContextLimitFromModelsDevCache(model, provider) {
|
|
146
|
+
try {
|
|
147
|
+
const raw = readFileSync(HERMES_MODELS_DEV_CACHE_FILE, "utf8");
|
|
148
|
+
const cache = JSON.parse(raw);
|
|
149
|
+
if (!cache || typeof cache !== "object" || Array.isArray(cache)) {
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
const providerId = hermesModelsDevProviderId(provider);
|
|
153
|
+
if (!providerId) {
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
const providerRecord = toRecord(cache[providerId]);
|
|
157
|
+
const models = toRecord(providerRecord.models);
|
|
158
|
+
const normalizedModel = normalizeModelId(model);
|
|
159
|
+
for (const [candidate, entry] of Object.entries(models)) {
|
|
160
|
+
if (normalizeModelId(candidate) !== normalizedModel) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
const limit = toRecord(toRecord(entry).limit);
|
|
164
|
+
const parsed = firstPositiveInteger(limit.context, limit.input, toRecord(entry).context_window, toRecord(entry).contextWindow);
|
|
165
|
+
if (parsed !== undefined) {
|
|
166
|
+
return parsed;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
export function hermesModelsDevProviderId(provider) {
|
|
176
|
+
const normalized = provider?.toLowerCase() ?? "";
|
|
177
|
+
if (normalized.includes("openai")) {
|
|
178
|
+
return "openai";
|
|
179
|
+
}
|
|
180
|
+
if (normalized.includes("minimax")) {
|
|
181
|
+
return "minimax";
|
|
182
|
+
}
|
|
183
|
+
if (normalized.includes("anthropic")) {
|
|
184
|
+
return "anthropic";
|
|
185
|
+
}
|
|
186
|
+
if (normalized.includes("google") || normalized.includes("gemini")) {
|
|
187
|
+
return "google";
|
|
188
|
+
}
|
|
189
|
+
if (normalized.includes("deepseek")) {
|
|
190
|
+
return "deepseek";
|
|
191
|
+
}
|
|
192
|
+
if (normalized.includes("openrouter")) {
|
|
193
|
+
return "openrouter";
|
|
194
|
+
}
|
|
195
|
+
const explicitProvider = provider?.trim().toLowerCase();
|
|
196
|
+
return explicitProvider || undefined;
|
|
197
|
+
}
|
|
198
|
+
export function normalizeModelId(model) {
|
|
199
|
+
const normalized = model?.trim().toLowerCase() ?? "";
|
|
200
|
+
const slashIndex = normalized.lastIndexOf("/");
|
|
201
|
+
return slashIndex >= 0 ? normalized.slice(slashIndex + 1) : normalized;
|
|
202
|
+
}
|
|
203
|
+
export function normalizeProviderId(provider) {
|
|
204
|
+
return provider?.trim().toLowerCase().replace(/[^a-z0-9]+/g, "") ?? "";
|
|
205
|
+
}
|
|
206
|
+
export function normalizedProviderMatches(left, right) {
|
|
207
|
+
const normalizedLeft = normalizeProviderId(left);
|
|
208
|
+
const normalizedRight = normalizeProviderId(right);
|
|
209
|
+
return normalizedLeft.length > 0 && normalizedLeft === normalizedRight;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=hermes-runtime-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-runtime-usage.js","sourceRoot":"","sources":["../../../src/hermes/models/hermes-runtime-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { HermesUsageSnapshot } from "./hermes-runtime-types.js";
|
|
2
|
+
export declare function sanitizeFileName(fileName: string): string;
|
|
3
|
+
export declare function toRecord(value: unknown): Record<string, unknown>;
|
|
4
|
+
export declare function stringParam(record: Record<string, unknown>, ...keys: string[]): string | undefined;
|
|
5
|
+
export declare function numberParam(record: Record<string, unknown>, key: string): number | undefined;
|
|
6
|
+
export declare function stringValue(value: unknown): string | undefined;
|
|
7
|
+
export declare function booleanValue(value: unknown): boolean;
|
|
8
|
+
export declare function compactStringArray(values: Array<string | undefined>): string[];
|
|
9
|
+
export declare function nonNegativeInteger(value: unknown): number | undefined;
|
|
10
|
+
export declare function firstNonNegativeInteger(...values: unknown[]): number | undefined;
|
|
11
|
+
export declare function firstPositiveInteger(...values: unknown[]): number | undefined;
|
|
12
|
+
export declare function mergeHermesUsageSnapshots(...snapshots: HermesUsageSnapshot[]): HermesUsageSnapshot;
|
|
13
|
+
export declare function parseJsonObject(output: string): Record<string, unknown> | undefined;
|
|
14
|
+
export declare function parseMaybeJsonObject(value: unknown): Record<string, unknown> | undefined;
|