@atel-ai/runtime-core 0.1.2 → 0.1.3
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/adapters/hermes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/adapters/hermes.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAuC,MAAM,YAAY,CAAC;AAS/E,eAAO,MAAM,aAAa,EAAE,OAqC3B,CAAC"}
|
package/dist/adapters/hermes.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* 首跑冷连接可能慢(实测首次可达 220s),timeout 给足。
|
|
11
11
|
*/
|
|
12
12
|
import fs from 'node:fs';
|
|
13
|
+
import os from 'node:os';
|
|
13
14
|
import path from 'node:path';
|
|
14
15
|
import { CliWaker } from '../wakers/cli.js';
|
|
15
16
|
import { which, runText } from './util.js';
|
|
@@ -28,22 +29,55 @@ export const hermesAdapter = {
|
|
|
28
29
|
return { present: true, binPath: bin, version };
|
|
29
30
|
},
|
|
30
31
|
async writeMcpConfig(ctx) {
|
|
31
|
-
// Hermes
|
|
32
|
+
// Hermes 配置里写 `Authorization: Bearer ${MCP_ATEL_API_KEY}`,且它从 ~/.hermes/.env
|
|
33
|
+
// 读该变量(优先级高于进程 env,真机实证)。所以 JWT 续期必须写进 ~/.hermes/.env,
|
|
34
|
+
// 否则用旧 token 连到旧身份。同时落 dataDir 一份备查。
|
|
32
35
|
const f = tokenFile(ctx.config.dataDir);
|
|
33
36
|
fs.mkdirSync(path.dirname(f), { recursive: true });
|
|
34
37
|
fs.writeFileSync(f, ctx.token);
|
|
38
|
+
upsertHermesEnv('MCP_ATEL_API_KEY', ctx.token);
|
|
35
39
|
},
|
|
36
40
|
createWaker(ctx) {
|
|
37
41
|
return new CliWaker({
|
|
38
42
|
bin: 'hermes',
|
|
39
43
|
defaultTimeoutMs: 360_000, // 冷启首次可达 220s,留足
|
|
40
44
|
log: ctx.log,
|
|
41
|
-
|
|
45
|
+
// hermes chat -q;若设了 ATEL_HERMES_MODEL 则用它(需有能力的模型 + 网关 dotted id,
|
|
46
|
+
// 如 claude-sonnet-4.6;haiku 太弱会把 MCP 工具当 shell 命令误调,真机实证)。
|
|
47
|
+
buildArgs: ({ prompt }) => {
|
|
48
|
+
const m = process.env.ATEL_HERMES_MODEL;
|
|
49
|
+
return ['chat', '-q', prompt, ...(m ? ['-m', m] : []), '--yolo'];
|
|
50
|
+
},
|
|
42
51
|
// 每次唤醒前读最新 JWT 注入 env(JWT 续期后即时生效;token 由 writeMcpConfig 落盘)
|
|
43
52
|
env: () => readHermesEnv(ctx.config.dataDir),
|
|
44
53
|
});
|
|
45
54
|
},
|
|
46
55
|
};
|
|
56
|
+
/** upsert KEY=value 到 ~/.hermes/.env(hermes 真正读取 MCP header 变量的地方)。 */
|
|
57
|
+
function upsertHermesEnv(key, value) {
|
|
58
|
+
try {
|
|
59
|
+
const envPath = path.join(os.homedir(), '.hermes', '.env');
|
|
60
|
+
let s = '';
|
|
61
|
+
try {
|
|
62
|
+
s = fs.readFileSync(envPath, 'utf8');
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
s = '';
|
|
66
|
+
}
|
|
67
|
+
const line = `${key}=${value}`;
|
|
68
|
+
if (new RegExp(`^${key}=.*$`, 'm').test(s)) {
|
|
69
|
+
s = s.replace(new RegExp(`^${key}=.*$`, 'm'), line);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
s = (s ? s.replace(/\n*$/, '\n') : '') + line + '\n';
|
|
73
|
+
}
|
|
74
|
+
fs.mkdirSync(path.dirname(envPath), { recursive: true });
|
|
75
|
+
fs.writeFileSync(envPath, s);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
/* best-effort;~/.hermes 不存在时(hermes 未装)忽略 */
|
|
79
|
+
}
|
|
80
|
+
}
|
|
47
81
|
function readHermesEnv(dataDir) {
|
|
48
82
|
try {
|
|
49
83
|
const token = fs.readFileSync(tokenFile(dataDir), 'utf8').trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/adapters/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3C,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,EAAE,EAAE,QAAQ;IACZ,WAAW,EAAE,uBAAuB;IACpC,IAAI,EAAE,KAAK;IAEX,KAAK,CAAC,MAAM;QACV,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;QACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAgB;QACnC,
|
|
1
|
+
{"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/adapters/hermes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED