clawconnect-agent 0.1.6 → 0.1.8

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.
Files changed (216) hide show
  1. package/README.md +142 -34
  2. package/README.zh-CN.md +152 -44
  3. package/dist/commands/install.js +10 -4
  4. package/dist/commands/install.js.map +1 -1
  5. package/dist/commands/pair.d.ts +6 -0
  6. package/dist/commands/pair.js +78 -10
  7. package/dist/commands/pair.js.map +1 -1
  8. package/dist/commands/run.js +14 -17
  9. package/dist/commands/run.js.map +1 -1
  10. package/dist/commands/send-file.d.ts +3 -24
  11. package/dist/commands/send-file.js +22 -449
  12. package/dist/commands/send-file.js.map +1 -1
  13. package/dist/commands/status.d.ts +13 -1
  14. package/dist/commands/status.js +58 -15
  15. package/dist/commands/status.js.map +1 -1
  16. package/dist/config/config.d.ts +6 -11
  17. package/dist/config/config.js +19 -48
  18. package/dist/config/config.js.map +1 -1
  19. package/dist/config/env.d.ts +1 -1
  20. package/dist/config/env.js +4 -5
  21. package/dist/config/env.js.map +1 -1
  22. package/dist/config/profile.d.ts +11 -0
  23. package/dist/config/profile.js +80 -0
  24. package/dist/config/profile.js.map +1 -0
  25. package/dist/core/command-types.d.ts +18 -0
  26. package/dist/core/command-types.js +2 -0
  27. package/dist/core/command-types.js.map +1 -0
  28. package/dist/core/relay/attachment-staging.js.map +1 -0
  29. package/dist/{relay → core/relay}/chat-payload.js +17 -3
  30. package/dist/core/relay/chat-payload.js.map +1 -0
  31. package/dist/{commands/send-file-utils.js → core/relay/file-upload-utils.js} +1 -1
  32. package/dist/core/relay/file-upload-utils.js.map +1 -0
  33. package/dist/core/relay/file-upload.d.ts +40 -0
  34. package/dist/core/relay/file-upload.js +401 -0
  35. package/dist/core/relay/file-upload.js.map +1 -0
  36. package/dist/core/relay/mobile-chat-run-bridge.d.ts +201 -0
  37. package/dist/core/relay/mobile-chat-run-bridge.js +192 -0
  38. package/dist/core/relay/mobile-chat-run-bridge.js.map +1 -0
  39. package/dist/core/relay/office-payload.js.map +1 -0
  40. package/dist/core/relay/reconnect.js.map +1 -0
  41. package/dist/core/relay/relay-server-connection.d.ts +6 -0
  42. package/dist/core/relay/relay-server-connection.js +32 -0
  43. package/dist/core/relay/relay-server-connection.js.map +1 -0
  44. package/dist/core/relay/slash-command-types.d.ts +7 -0
  45. package/dist/core/relay/slash-command-types.js +2 -0
  46. package/dist/core/relay/slash-command-types.js.map +1 -0
  47. package/dist/core/relay/timeline-event-builder.d.ts +86 -0
  48. package/dist/core/relay/timeline-event-builder.js +199 -0
  49. package/dist/core/relay/timeline-event-builder.js.map +1 -0
  50. package/dist/core/relay/timeline-event-log.d.ts +81 -0
  51. package/dist/core/relay/timeline-event-log.js +254 -0
  52. package/dist/core/relay/timeline-event-log.js.map +1 -0
  53. package/dist/core/relay/voice-input.d.ts +11 -0
  54. package/dist/core/relay/voice-input.js +120 -0
  55. package/dist/core/relay/voice-input.js.map +1 -0
  56. package/dist/gateway-profiles.d.ts +8 -0
  57. package/dist/gateway-profiles.js +24 -0
  58. package/dist/gateway-profiles.js.map +1 -0
  59. package/dist/hermes/hermes-relay-manager.d.ts +59 -0
  60. package/dist/hermes/hermes-relay-manager.js +754 -0
  61. package/dist/hermes/hermes-relay-manager.js.map +1 -0
  62. package/dist/hermes/hermes-runtime.d.ts +9 -0
  63. package/dist/hermes/hermes-runtime.js +9 -0
  64. package/dist/hermes/hermes-runtime.js.map +1 -0
  65. package/dist/hermes/hermes-session-store.d.ts +15 -0
  66. package/dist/hermes/hermes-session-store.js +174 -0
  67. package/dist/hermes/hermes-session-store.js.map +1 -0
  68. package/dist/hermes/hermes-voice-input.d.ts +13 -0
  69. package/dist/hermes/hermes-voice-input.js +27 -0
  70. package/dist/hermes/hermes-voice-input.js.map +1 -0
  71. package/dist/hermes/runtime/hermes-runtime-artifacts.d.ts +3 -0
  72. package/dist/hermes/runtime/hermes-runtime-artifacts.js +65 -0
  73. package/dist/hermes/runtime/hermes-runtime-artifacts.js.map +1 -0
  74. package/dist/hermes/runtime/hermes-runtime-backups.d.ts +5 -0
  75. package/dist/hermes/runtime/hermes-runtime-backups.js +128 -0
  76. package/dist/hermes/runtime/hermes-runtime-backups.js.map +1 -0
  77. package/dist/hermes/runtime/hermes-runtime-chat.d.ts +41 -0
  78. package/dist/hermes/runtime/hermes-runtime-chat.js +723 -0
  79. package/dist/hermes/runtime/hermes-runtime-chat.js.map +1 -0
  80. package/dist/hermes/runtime/hermes-runtime-command-router.d.ts +2 -0
  81. package/dist/hermes/runtime/hermes-runtime-command-router.js +96 -0
  82. package/dist/hermes/runtime/hermes-runtime-command-router.js.map +1 -0
  83. package/dist/hermes/runtime/hermes-runtime-command-utils.d.ts +3 -0
  84. package/dist/hermes/runtime/hermes-runtime-command-utils.js +19 -0
  85. package/dist/hermes/runtime/hermes-runtime-command-utils.js.map +1 -0
  86. package/dist/hermes/runtime/hermes-runtime-cron.d.ts +11 -0
  87. package/dist/hermes/runtime/hermes-runtime-cron.js +301 -0
  88. package/dist/hermes/runtime/hermes-runtime-cron.js.map +1 -0
  89. package/dist/hermes/runtime/hermes-runtime-history.d.ts +2 -0
  90. package/dist/hermes/runtime/hermes-runtime-history.js +249 -0
  91. package/dist/hermes/runtime/hermes-runtime-history.js.map +1 -0
  92. package/dist/hermes/runtime/hermes-runtime-lifecycle.d.ts +9 -0
  93. package/dist/hermes/runtime/hermes-runtime-lifecycle.js +111 -0
  94. package/dist/hermes/runtime/hermes-runtime-lifecycle.js.map +1 -0
  95. package/dist/hermes/runtime/hermes-runtime-models.d.ts +29 -0
  96. package/dist/hermes/runtime/hermes-runtime-models.js +125 -0
  97. package/dist/hermes/runtime/hermes-runtime-models.js.map +1 -0
  98. package/dist/hermes/runtime/hermes-runtime-process.d.ts +24 -0
  99. package/dist/hermes/runtime/hermes-runtime-process.js +147 -0
  100. package/dist/hermes/runtime/hermes-runtime-process.js.map +1 -0
  101. package/dist/hermes/runtime/hermes-runtime-sessions.d.ts +5 -0
  102. package/dist/hermes/runtime/hermes-runtime-sessions.js +88 -0
  103. package/dist/hermes/runtime/hermes-runtime-sessions.js.map +1 -0
  104. package/dist/hermes/runtime/hermes-runtime-skills.d.ts +13 -0
  105. package/dist/hermes/runtime/hermes-runtime-skills.js +322 -0
  106. package/dist/hermes/runtime/hermes-runtime-skills.js.map +1 -0
  107. package/dist/hermes/runtime/hermes-runtime-types.d.ts +19 -0
  108. package/dist/hermes/runtime/hermes-runtime-types.js +2 -0
  109. package/dist/hermes/runtime/hermes-runtime-types.js.map +1 -0
  110. package/dist/hermes/runtime/hermes-runtime-usage.d.ts +22 -0
  111. package/dist/hermes/runtime/hermes-runtime-usage.js +211 -0
  112. package/dist/hermes/runtime/hermes-runtime-usage.js.map +1 -0
  113. package/dist/hermes/runtime/hermes-runtime-values.d.ts +14 -0
  114. package/dist/hermes/runtime/hermes-runtime-values.js +105 -0
  115. package/dist/hermes/runtime/hermes-runtime-values.js.map +1 -0
  116. package/dist/i18n/index.js +4 -0
  117. package/dist/i18n/index.js.map +1 -1
  118. package/dist/index.js +115 -9
  119. package/dist/index.js.map +1 -1
  120. package/dist/openclaw/backups/backup-manager.js.map +1 -0
  121. package/dist/{commands → openclaw/config}/provider-config.js +1 -1
  122. package/dist/openclaw/config/provider-config.js.map +1 -0
  123. package/dist/openclaw/config/provider-registry.js.map +1 -0
  124. package/dist/{relay → openclaw}/gateway-client.js +4 -3
  125. package/dist/openclaw/gateway-client.js.map +1 -0
  126. package/dist/{commands → openclaw/handlers}/local-handlers.d.ts +1 -1
  127. package/dist/{commands → openclaw/handlers}/local-handlers.js +2 -30
  128. package/dist/openclaw/handlers/local-handlers.js.map +1 -0
  129. package/dist/{commands → openclaw/handlers}/provider-handlers.d.ts +1 -1
  130. package/dist/{commands → openclaw/handlers}/provider-handlers.js +3 -3
  131. package/dist/openclaw/handlers/provider-handlers.js.map +1 -0
  132. package/dist/openclaw/relay/chat-history.d.ts +51 -0
  133. package/dist/openclaw/relay/chat-history.js +347 -0
  134. package/dist/openclaw/relay/chat-history.js.map +1 -0
  135. package/dist/{relay → openclaw/relay}/chat-send-attachments.js +12 -1
  136. package/dist/openclaw/relay/chat-send-attachments.js.map +1 -0
  137. package/dist/openclaw/relay/openclaw-voice-input.d.ts +13 -0
  138. package/dist/openclaw/relay/openclaw-voice-input.js +18 -0
  139. package/dist/openclaw/relay/openclaw-voice-input.js.map +1 -0
  140. package/dist/openclaw/relay/outgoing-media-relay.d.ts +11 -0
  141. package/dist/openclaw/relay/outgoing-media-relay.js +120 -0
  142. package/dist/openclaw/relay/outgoing-media-relay.js.map +1 -0
  143. package/dist/{relay → openclaw/relay}/session-context.d.ts +6 -0
  144. package/dist/{relay → openclaw/relay}/session-context.js +53 -3
  145. package/dist/openclaw/relay/session-context.js.map +1 -0
  146. package/dist/openclaw/relay/slash-command-catalog.d.ts +2 -0
  147. package/dist/{relay → openclaw/relay}/slash-command-catalog.generated.d.ts +0 -5
  148. package/dist/{relay → openclaw/relay}/slash-command-catalog.generated.js +0 -6
  149. package/dist/openclaw/relay/slash-command-catalog.generated.js.map +1 -0
  150. package/dist/openclaw/relay/slash-command-catalog.js.map +1 -0
  151. package/dist/openclaw/relay/transcript-dedupe.d.ts +21 -0
  152. package/dist/openclaw/relay/transcript-dedupe.js +211 -0
  153. package/dist/openclaw/relay/transcript-dedupe.js.map +1 -0
  154. package/dist/{relay → openclaw}/relay-manager.d.ts +1 -4
  155. package/dist/openclaw/relay-manager.js +787 -0
  156. package/dist/openclaw/relay-manager.js.map +1 -0
  157. package/dist/{commands → openclaw/runtime}/local-runtime.d.ts +1 -17
  158. package/dist/openclaw/runtime/local-runtime.js.map +1 -0
  159. package/dist/openclaw/session-store.d.ts +1 -0
  160. package/dist/openclaw/session-store.js +70 -0
  161. package/dist/openclaw/session-store.js.map +1 -0
  162. package/dist/platform/service-manager-common.d.ts +5 -2
  163. package/dist/platform/service-manager-common.js +18 -7
  164. package/dist/platform/service-manager-common.js.map +1 -1
  165. package/dist/platform/service-manager.d.ts +16 -5
  166. package/dist/platform/service-manager.js +85 -50
  167. package/dist/platform/service-manager.js.map +1 -1
  168. package/dist/runtime-adapters.d.ts +19 -0
  169. package/dist/runtime-adapters.js +39 -0
  170. package/dist/runtime-adapters.js.map +1 -0
  171. package/package.json +3 -3
  172. package/dist/commands/backup-manager.js.map +0 -1
  173. package/dist/commands/local-handlers.js.map +0 -1
  174. package/dist/commands/local-runtime.js.map +0 -1
  175. package/dist/commands/provider-config.js.map +0 -1
  176. package/dist/commands/provider-handlers.js.map +0 -1
  177. package/dist/commands/provider-registry.js.map +0 -1
  178. package/dist/commands/send-file-utils.js.map +0 -1
  179. package/dist/commands/voice-reply.d.ts +0 -39
  180. package/dist/commands/voice-reply.js +0 -329
  181. package/dist/commands/voice-reply.js.map +0 -1
  182. package/dist/relay/attachment-staging.js.map +0 -1
  183. package/dist/relay/chat-history.d.ts +0 -29
  184. package/dist/relay/chat-history.js +0 -69
  185. package/dist/relay/chat-history.js.map +0 -1
  186. package/dist/relay/chat-payload.js.map +0 -1
  187. package/dist/relay/chat-send-attachments.js.map +0 -1
  188. package/dist/relay/gateway-client.js.map +0 -1
  189. package/dist/relay/office-payload.js.map +0 -1
  190. package/dist/relay/reconnect.js.map +0 -1
  191. package/dist/relay/relay-manager.js +0 -644
  192. package/dist/relay/relay-manager.js.map +0 -1
  193. package/dist/relay/session-context.js.map +0 -1
  194. package/dist/relay/slash-command-catalog.d.ts +0 -8
  195. package/dist/relay/slash-command-catalog.generated.js.map +0 -1
  196. package/dist/relay/slash-command-catalog.js.map +0 -1
  197. package/dist/relay/voice-reply-preference.d.ts +0 -25
  198. package/dist/relay/voice-reply-preference.js +0 -103
  199. package/dist/relay/voice-reply-preference.js.map +0 -1
  200. /package/dist/{relay → core/relay}/attachment-staging.d.ts +0 -0
  201. /package/dist/{relay → core/relay}/attachment-staging.js +0 -0
  202. /package/dist/{relay → core/relay}/chat-payload.d.ts +0 -0
  203. /package/dist/{commands/send-file-utils.d.ts → core/relay/file-upload-utils.d.ts} +0 -0
  204. /package/dist/{relay → core/relay}/office-payload.d.ts +0 -0
  205. /package/dist/{relay → core/relay}/office-payload.js +0 -0
  206. /package/dist/{relay → core/relay}/reconnect.d.ts +0 -0
  207. /package/dist/{relay → core/relay}/reconnect.js +0 -0
  208. /package/dist/{commands → openclaw/backups}/backup-manager.d.ts +0 -0
  209. /package/dist/{commands → openclaw/backups}/backup-manager.js +0 -0
  210. /package/dist/{commands → openclaw/config}/provider-config.d.ts +0 -0
  211. /package/dist/{commands → openclaw/config}/provider-registry.d.ts +0 -0
  212. /package/dist/{commands → openclaw/config}/provider-registry.js +0 -0
  213. /package/dist/{relay → openclaw}/gateway-client.d.ts +0 -0
  214. /package/dist/{relay → openclaw/relay}/chat-send-attachments.d.ts +0 -0
  215. /package/dist/{relay → openclaw/relay}/slash-command-catalog.js +0 -0
  216. /package/dist/{commands → openclaw/runtime}/local-runtime.js +0 -0
@@ -0,0 +1,147 @@
1
+ import { execFileSync, execSync } from "child_process";
2
+ import { existsSync } from "fs";
3
+ import { homedir } from "os";
4
+ import { join } from "path";
5
+ export const IS_WINDOWS = process.platform === "win32";
6
+ export const HERMES_INBOX_DIR = join(homedir(), ".clawconnect", "hermes", "inbox");
7
+ export const HERMES_HOME_DIR = process.env.HERMES_HOME?.trim() || join(homedir(), ".hermes");
8
+ export const HERMES_CRON_JOBS_FILE = join(HERMES_HOME_DIR, "cron", "jobs.json");
9
+ export const HERMES_LOG_DIR = join(HERMES_HOME_DIR, "logs");
10
+ export const HERMES_AGENT_LOG_FILE = join(HERMES_LOG_DIR, "agent.log");
11
+ export const HERMES_MODELS_DEV_CACHE_FILE = join(HERMES_HOME_DIR, "models_dev_cache.json");
12
+ export const DEFAULT_TIMEOUT_MS = 120_000;
13
+ export const CHAT_TIMEOUT_MS = 30 * 60_000;
14
+ export const HERMES_TYPING_MARKER = "[[clawlink:typing]]";
15
+ export const CLAWCONNECT_MOBILE_BRIDGE_HINT = [
16
+ "[ClawConnect mobile bridge]",
17
+ "You are connected to a mobile chat client through ClawConnect.",
18
+ "Only when the latest user request explicitly asks you to send, upload, attach, or share a local image or file, include its absolute local file path in your final answer.",
19
+ "ClawConnect uploads supported file paths only for those explicit send requests.",
20
+ "If the user is asking about capabilities, skills, file listings, or past work, do not repeat old file paths as sendable attachments.",
21
+ "Do not say you cannot send attachments merely because you are running in a CLI environment.",
22
+ ].join(" ");
23
+ export const SUBPROCESS_ENV = {
24
+ ...process.env,
25
+ HOME: homedir(),
26
+ PATH: [
27
+ join(homedir(), ".local", "bin"),
28
+ join(homedir(), ".hermes", "bin"),
29
+ join(homedir(), ".npm-global", "bin"),
30
+ process.env.PNPM_HOME,
31
+ join(homedir(), ".local", "share", "pnpm"),
32
+ "/opt/homebrew/bin",
33
+ "/opt/homebrew/sbin",
34
+ "/usr/local/bin",
35
+ "/usr/local/sbin",
36
+ "/usr/bin",
37
+ "/bin",
38
+ process.env.PATH ?? "",
39
+ ].filter(Boolean).join(IS_WINDOWS ? ";" : ":"),
40
+ };
41
+ export function resolveHermesBin() {
42
+ const explicit = process.env.HERMES_BIN?.trim();
43
+ if (explicit && existsSync(explicit)) {
44
+ return explicit;
45
+ }
46
+ try {
47
+ const whichCmd = IS_WINDOWS ? "where hermes" : "command -v hermes";
48
+ const resolved = execSync(whichCmd, { stdio: "pipe", env: SUBPROCESS_ENV, timeout: 3000 }).toString().trim();
49
+ const first = resolved.split(/\r?\n/)[0]?.trim();
50
+ if (first) {
51
+ return first;
52
+ }
53
+ }
54
+ catch {
55
+ // fall through
56
+ }
57
+ const local = join(homedir(), ".local", "bin", IS_WINDOWS ? "hermes.cmd" : "hermes");
58
+ if (existsSync(local)) {
59
+ return local;
60
+ }
61
+ return "hermes";
62
+ }
63
+ export function runHermes(args, timeoutMs = DEFAULT_TIMEOUT_MS) {
64
+ return execFileSync(resolveHermesBin(), args, {
65
+ env: SUBPROCESS_ENV,
66
+ stdio: "pipe",
67
+ timeout: timeoutMs,
68
+ }).toString();
69
+ }
70
+ export function runHermesWithInput(args, input, timeoutMs = DEFAULT_TIMEOUT_MS) {
71
+ return execFileSync(resolveHermesBin(), args, {
72
+ env: SUBPROCESS_ENV,
73
+ input,
74
+ stdio: ["pipe", "pipe", "pipe"],
75
+ timeout: timeoutMs,
76
+ }).toString();
77
+ }
78
+ export function stripHermesSessionResumeNotices(output) {
79
+ return output
80
+ .split(/\r?\n|\r/)
81
+ .filter((line) => {
82
+ const clean = stripAnsi(line).trim();
83
+ return !/^\s*↻?\s*Resumed session\b/i.test(clean)
84
+ && !/^session_id:\s*\S+/i.test(clean)
85
+ && !/^Error:\s*'NoneType'\s+object\s+is\s+not\s+iterable\s*$/i.test(clean);
86
+ })
87
+ .join("\n");
88
+ }
89
+ export function stripHermesSecurityReviewNotices(output) {
90
+ const lines = output.split(/\r?\n/);
91
+ const kept = [];
92
+ let inSecurityReview = false;
93
+ for (const line of lines) {
94
+ const clean = stripAnsi(line).trim();
95
+ if (isHermesCommandDeniedTimeoutLine(clean)) {
96
+ continue;
97
+ }
98
+ if (/DANGEROUS COMMAND:\s*Security scan/i.test(clean)) {
99
+ inSecurityReview = true;
100
+ continue;
101
+ }
102
+ if (inSecurityReview) {
103
+ if (/Choice\s*\[[^\]]+\]:/i.test(clean) || /(?:^|\s)[✕x]\s*Denied\b/i.test(clean) || /\bDenied\b/i.test(clean)) {
104
+ inSecurityReview = false;
105
+ }
106
+ continue;
107
+ }
108
+ kept.push(line);
109
+ }
110
+ return kept.join("\n").replace(/\n{3,}/g, "\n\n");
111
+ }
112
+ export function isHermesCommandDeniedTimeoutLine(line) {
113
+ const clean = stripAnsi(line).trim();
114
+ return /\bTimeout\b\s*[–—-]\s*denying command\b/i.test(clean);
115
+ }
116
+ export function sanitizeHermesChatOutput(output) {
117
+ return stripHermesSecurityReviewNotices(stripHermesSessionResumeNotices(stripAnsi(output)));
118
+ }
119
+ export function stripAnsi(text) {
120
+ return text.replace(/\x1B\[[\d;]*[A-Za-z@\[\]\\^_`{|}~-]/g, "");
121
+ }
122
+ export function errorMessageWithOutput(error) {
123
+ const err = error;
124
+ const stdout = err.stdout?.toString().trim() ?? "";
125
+ const stderr = err.stderr?.toString().trim() ?? "";
126
+ return [stdout, stderr, err.message].filter(Boolean).join("\n") || String(error);
127
+ }
128
+ export function isHermesMissingSessionError(error) {
129
+ const message = typeof error === "string" ? error : errorMessageWithOutput(error);
130
+ return /Session not found:/i.test(message)
131
+ || /Use a session ID from a previous CLI run/i.test(message);
132
+ }
133
+ export function sleep(ms) {
134
+ return new Promise((resolveSleep) => setTimeout(resolveSleep, ms));
135
+ }
136
+ export function runHermesPython(script, extraEnv = {}) {
137
+ const venvPython = join(HERMES_HOME_DIR, "hermes-agent", "venv", "bin", "python");
138
+ const python = process.env.HERMES_PYTHON?.trim()
139
+ || (existsSync(venvPython) ? venvPython : join(homedir(), ".local", "bin", "python3.11"));
140
+ return execFileSync(python, ["-c", script], {
141
+ cwd: join(HERMES_HOME_DIR, "hermes-agent"),
142
+ env: { ...SUBPROCESS_ENV, ...extraEnv },
143
+ stdio: "pipe",
144
+ timeout: DEFAULT_TIMEOUT_MS,
145
+ }).toString();
146
+ }
147
+ //# sourceMappingURL=hermes-runtime-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-runtime-process.js","sourceRoot":"","sources":["../../../src/hermes/runtime/hermes-runtime-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { LocalResult } from "../../core/command-types.js";
2
+ export declare function runHermesSessionsList(): Promise<LocalResult>;
3
+ export declare function runHermesSessionRename(params: unknown): LocalResult;
4
+ export declare function runHermesSessionDelete(params: unknown): Promise<LocalResult>;
5
+ export declare function runHermesSessionExport(params: unknown): Promise<LocalResult>;
@@ -0,0 +1,88 @@
1
+ import { forgetHermesSession, getMappedHermesSessionId } from "../hermes-session-store.js";
2
+ import { listHermesSessions } from "./hermes-runtime-usage.js";
3
+ import { runHermesOutput } from "./hermes-runtime-command-utils.js";
4
+ import { stringParam, toRecord } from "./hermes-runtime-values.js";
5
+ import { errorMessageWithOutput, isHermesMissingSessionError } from "./hermes-runtime-process.js";
6
+ export async function runHermesSessionsList() {
7
+ try {
8
+ const sessions = await listHermesSessions();
9
+ return { ok: true, payload: { sessions, items: sessions } };
10
+ }
11
+ catch (error) {
12
+ return { ok: false, error: errorMessageWithOutput(error) };
13
+ }
14
+ }
15
+ export function runHermesSessionRename(params) {
16
+ const record = toRecord(params);
17
+ const sessionId = stringParam(record, "sessionId", "hermesSessionId", "id");
18
+ const title = stringParam(record, "title", "name");
19
+ if (!sessionId || !title) {
20
+ return { ok: false, error: "session_id_and_title_required" };
21
+ }
22
+ return runHermesOutput(["sessions", "rename", sessionId, title]);
23
+ }
24
+ export async function runHermesSessionDelete(params) {
25
+ const record = toRecord(params);
26
+ const sessionKey = stringParam(record, "sessionKey", "key", "session");
27
+ const sessionId = stringParam(record, "sessionId", "hermesSessionId", "id")
28
+ ?? (await resolveHermesSessionIdFromParams(record)).sessionId;
29
+ if (!sessionId) {
30
+ return { ok: false, error: "session_id_required" };
31
+ }
32
+ const result = runHermesOutput(["sessions", "delete", "--yes", sessionId]);
33
+ if (!result.ok) {
34
+ return result;
35
+ }
36
+ await forgetHermesSession(sessionKey ?? sessionId, sessionId);
37
+ return {
38
+ ok: true,
39
+ payload: {
40
+ ...(toRecord(result.payload)),
41
+ deleted: true,
42
+ sessionId,
43
+ sessionKey,
44
+ },
45
+ };
46
+ }
47
+ export async function runHermesSessionExport(params) {
48
+ const record = toRecord(params);
49
+ const resolved = await resolveHermesSessionIdFromParams(record);
50
+ const sessionId = resolved.sessionId;
51
+ const output = stringParam(record, "output", "outputPath");
52
+ const args = ["sessions", "export", output ?? "-"];
53
+ if (sessionId)
54
+ args.push("--session-id", sessionId);
55
+ const result = runHermesOutput(args, 10 * 60_000);
56
+ if (!result.ok
57
+ && resolved.fromMappedSessionKey
58
+ && resolved.sessionKey
59
+ && sessionId
60
+ && isHermesMissingSessionError(result.error)) {
61
+ await forgetHermesSession(resolved.sessionKey, sessionId);
62
+ return runHermesOutput(["sessions", "export", output ?? "-"], 10 * 60_000);
63
+ }
64
+ return result;
65
+ }
66
+ async function resolveHermesSessionIdFromParams(record) {
67
+ const explicitSessionId = stringParam(record, "sessionId", "hermesSessionId", "id");
68
+ if (explicitSessionId) {
69
+ return { sessionId: explicitSessionId, fromMappedSessionKey: false };
70
+ }
71
+ const sessionKey = stringParam(record, "sessionKey", "key", "session");
72
+ if (!sessionKey) {
73
+ return { fromMappedSessionKey: false };
74
+ }
75
+ if (sessionKey.toLowerCase().startsWith("hermes:")) {
76
+ const hermesId = sessionKey.slice("hermes:".length).trim();
77
+ return { sessionId: hermesId || undefined, sessionKey, fromMappedSessionKey: false };
78
+ }
79
+ if (/^[0-9]{8}_[0-9]{6}_[A-Za-z0-9_-]+$/.test(sessionKey)) {
80
+ return { sessionId: sessionKey, sessionKey, fromMappedSessionKey: false };
81
+ }
82
+ return {
83
+ sessionId: await getMappedHermesSessionId(sessionKey),
84
+ sessionKey,
85
+ fromMappedSessionKey: true,
86
+ };
87
+ }
88
+ //# sourceMappingURL=hermes-runtime-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-runtime-sessions.js","sourceRoot":"","sources":["../../../src/hermes/runtime/hermes-runtime-sessions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAElG,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC5C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAe;IACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO,eAAe,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAe;IAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,CAAC;WACtE,CAAC,MAAM,gCAAgC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,mBAAmB,CAAC,UAAU,IAAI,SAAS,EAAE,SAAS,CAAC,CAAC;IAC9D,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACP,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,EAAE,IAAI;YACb,SAAS;YACT,UAAU;SACX;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAe;IAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,gCAAgC,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;IACnD,IAAI,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;IAClD,IACE,CAAC,MAAM,CAAC,EAAE;WACP,QAAQ,CAAC,oBAAoB;WAC7B,QAAQ,CAAC,UAAU;WACnB,SAAS;WACT,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,CAAC;QACD,MAAM,mBAAmB,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,eAAe,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,gCAAgC,CAAC,MAA+B;IAK7E,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACpF,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;IACvE,CAAC;IACD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACvE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IACD,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;IACvF,CAAC;IACD,IAAI,oCAAoC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO;QACL,SAAS,EAAE,MAAM,wBAAwB,CAAC,UAAU,CAAC;QACrD,UAAU;QACV,oBAAoB,EAAE,IAAI;KAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { LocalResult } from "../../core/command-types.js";
2
+ export declare function runHermesSkillsList(): LocalResult;
3
+ export declare function runHermesSkillsUpdate(params: unknown): LocalResult;
4
+ export declare function runHermesSkillsSearch(params: unknown): LocalResult;
5
+ export declare function runHermesSkillsInspect(params: unknown): LocalResult;
6
+ export declare function runHermesSkillsInstall(params: unknown): LocalResult;
7
+ export declare function runHermesSkillsUninstall(params: unknown): LocalResult;
8
+ export declare function runHermesMcpList(): LocalResult;
9
+ export declare function runHermesMcpTest(params: unknown): LocalResult;
10
+ export declare function runHermesMcpAdd(params: unknown): LocalResult;
11
+ export declare function runHermesMcpRemove(params: unknown): LocalResult;
12
+ export declare function runHermesDashboardStart(params: unknown): LocalResult;
13
+ export declare function parseHermesSkillsList(output: string): Array<Record<string, unknown>>;
@@ -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/runtime/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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hermes-runtime-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-runtime-types.js","sourceRoot":"","sources":["../../../src/hermes/runtime/hermes-runtime-types.ts"],"names":[],"mappings":""}