@atel-ai/agent 0.1.0

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/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,330 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @atel-ai/agent —— ATEL 一键接入器(学支付宝 ACT 的低成本铺量样板,但走 MCP+companion)。
4
+ *
5
+ * npx @atel-ai/agent install detect→选适配→建/读身份→换JWT→写MCP配置→装SKILL→doctor
6
+ * npx @atel-ai/agent run 前台起 companion(交给 systemd/pm2 守护)
7
+ * npx @atel-ai/agent doctor 自检:身份 / JWT / 余额 / 适配器 / (可选)真机调 atel_whoami
8
+ * npx @atel-ai/agent update 自更新内核+适配器(跟上 ATEL 新工具/事件)
9
+ * npx @atel-ai/agent whoami 打印当前 DID
10
+ */
11
+ import fs from 'node:fs';
12
+ import path from 'node:path';
13
+ import os from 'node:os';
14
+ import { execFileSync } from 'node:child_process';
15
+ import { createRequire } from 'node:module';
16
+ const require = createRequire(import.meta.url);
17
+ import { defaultConfig, PROD_DEFAULTS, newIdentity, loadIdentity, serializeIdentity, AuthManager, Companion, spineWalletBalance, spineIdentityVerify, registryRemoteRegister, detectAll, detectPrimary, getAdapter, ADAPTERS, } from '@atel-ai/runtime-core';
18
+ // ── arg parsing ────────────────────────────────────────────────
19
+ function parseArgs(argv) {
20
+ const [cmd = 'help', ...rest] = argv;
21
+ const flags = {};
22
+ const bools = new Set();
23
+ for (let i = 0; i < rest.length; i++) {
24
+ const a = rest[i];
25
+ if (a.startsWith('--')) {
26
+ const key = a.slice(2);
27
+ const next = rest[i + 1];
28
+ if (next && !next.startsWith('--')) {
29
+ flags[key] = next;
30
+ i++;
31
+ }
32
+ else {
33
+ bools.add(key);
34
+ }
35
+ }
36
+ }
37
+ return { cmd, flags, bools };
38
+ }
39
+ const log = (m) => console.log(m);
40
+ const err = (m) => console.error(m);
41
+ function configPath(dataDir) {
42
+ return path.join(dataDir, 'config.json');
43
+ }
44
+ function loadConfig(dataDir) {
45
+ try {
46
+ return JSON.parse(fs.readFileSync(configPath(dataDir), 'utf8'));
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ }
52
+ function saveConfig(cfg) {
53
+ fs.mkdirSync(cfg.dataDir, { recursive: true });
54
+ fs.writeFileSync(configPath(cfg.dataDir), JSON.stringify(cfg, null, 2));
55
+ }
56
+ function ensureIdentity(cfg) {
57
+ if (fs.existsSync(cfg.identityPath)) {
58
+ const raw = JSON.parse(fs.readFileSync(cfg.identityPath, 'utf8'));
59
+ return loadIdentity(raw);
60
+ }
61
+ const id = newIdentity();
62
+ fs.mkdirSync(path.dirname(cfg.identityPath), { recursive: true });
63
+ fs.writeFileSync(cfg.identityPath, JSON.stringify(serializeIdentity(id), null, 2), { mode: 0o600 });
64
+ log(`🔑 新建身份 ${id.did}`);
65
+ log(` 私钥存于 ${cfg.identityPath}(权限 600,永不外传)`);
66
+ return id;
67
+ }
68
+ function writeSkill(cfg) {
69
+ try {
70
+ // SKILL.md 随 runtime-core 包发布
71
+ const src = require.resolve('@atel-ai/runtime-core/skill/SKILL.md');
72
+ const dest = path.join(cfg.dataDir, 'SKILL.md');
73
+ fs.copyFileSync(src, dest);
74
+ log(`📖 SKILL.md → ${dest}`);
75
+ }
76
+ catch (e) {
77
+ err(`⚠️ 复制 SKILL.md 失败: ${e.message}`);
78
+ }
79
+ }
80
+ function dataDirFrom(flags) {
81
+ return flags['data-dir'] || path.join(os.homedir(), '.atel');
82
+ }
83
+ function buildConfig(flags, bools, runtime) {
84
+ const testnet = bools.has('server') || flags['env'] === 'testnet';
85
+ const base = {
86
+ runtime,
87
+ dataDir: dataDirFrom(flags),
88
+ spineBaseUrl: flags['spine-url'] || PROD_DEFAULTS.spineBaseUrl,
89
+ platformBaseUrl: flags['platform-url'] || PROD_DEFAULTS.platformBaseUrl,
90
+ mcpUrl: flags['mcp-url'] || PROD_DEFAULTS.mcpUrl,
91
+ spineDeliveryMode: flags['delivery'] || 'sse',
92
+ callbackUrl: flags['callback-url'],
93
+ };
94
+ if (testnet)
95
+ log('ℹ️ testnet 模式:请确认 --spine-url/--platform-url/--mcp-url 指向测试服');
96
+ return defaultConfig(base);
97
+ }
98
+ // ── commands ───────────────────────────────────────────────────
99
+ async function cmdInstall(flags, bools) {
100
+ log('🔍 detect 本机 runtime…');
101
+ const detected = await detectPrimary(flags['runtime']);
102
+ if (!detected) {
103
+ err('❌ 没探到任何受支持的 runtime。已知:' + ADAPTERS.map((a) => a.id).join(', '));
104
+ err(' 装好其一(claude / codex / gemini / hermes / openclaw / qwen-agent)后重试,或用 --runtime 指定。');
105
+ process.exit(1);
106
+ }
107
+ const { adapter, result } = detected;
108
+ log(`✅ runtime = ${adapter.displayName} (${adapter.id})${result.version ? ' v' + result.version : ''}`);
109
+ const cfg = buildConfig(flags, bools, adapter.id);
110
+ saveConfig(cfg);
111
+ const identity = ensureIdentity(cfg);
112
+ // 换 JWT + 写该 runtime 的 MCP 配置(并登记续期回调)
113
+ log('🔐 用 DID 签名换 JWT(/identity/verify)…');
114
+ const auth = new AuthManager(identity, cfg.spineBaseUrl, {
115
+ onToken: (token) => adapter.writeMcpConfig({ mcpUrl: cfg.mcpUrl, token, identity, config: cfg }),
116
+ log,
117
+ });
118
+ let jwt = '';
119
+ try {
120
+ jwt = await auth.start();
121
+ auth.stop();
122
+ log(`✅ JWT 取得,已写入 ${adapter.displayName} 的 MCP 配置`);
123
+ }
124
+ catch (e) {
125
+ err(`❌ 换 JWT 失败: ${e.message}`);
126
+ err(' 检查 --spine-url 是否可达、身份是否已在该环境注册。');
127
+ process.exit(1);
128
+ }
129
+ // 注册/更新本 agent 到 registry(可被发现 + 可作为 A2A 接活方/雇主目标)
130
+ if (flags['name']) {
131
+ const capabilities = (flags['capabilities'] || 'writing')
132
+ .split(',')
133
+ .map((s) => s.trim())
134
+ .filter(Boolean);
135
+ try {
136
+ const r = await registryRemoteRegister(cfg.platformBaseUrl, jwt, {
137
+ name: flags['name'],
138
+ capabilities,
139
+ discoverable: !bools.has('private'),
140
+ });
141
+ if (r.ok)
142
+ log(`✅ 已注册 agent "${flags['name']}" capabilities=[${capabilities.join(',')}]`);
143
+ else
144
+ err(`⚠️ 注册返回 HTTP ${r.status}: ${r.body.slice(0, 160)}`);
145
+ }
146
+ catch (e) {
147
+ err(`⚠️ 注册失败: ${e.message}`);
148
+ }
149
+ }
150
+ else {
151
+ log('ℹ️ 未传 --name,跳过 registry 注册(仅主动调工具不需要;要被搜到/当接活方目标则需注册)');
152
+ }
153
+ writeSkill(cfg);
154
+ log('');
155
+ await cmdDoctor(flags, bools);
156
+ log('');
157
+ log('▶️ 接入完成。启动 companion(被动半,无人值守自动推进):');
158
+ log(` npx @atel-ai/agent run --data-dir ${cfg.dataDir}`);
159
+ log(' 建议用 systemd --user / pm2 守护,见 README 部署一节。');
160
+ }
161
+ async function cmdDoctor(flags, bools) {
162
+ const dataDir = dataDirFrom(flags);
163
+ const cfg = loadConfig(dataDir);
164
+ if (!cfg) {
165
+ err('❌ 未找到配置,先跑 install。');
166
+ process.exit(1);
167
+ }
168
+ let allGreen = true;
169
+ const check = (ok, label, detail = '') => {
170
+ log(`${ok ? '🟢' : '🔴'} ${label}${detail ? ' — ' + detail : ''}`);
171
+ if (!ok)
172
+ allGreen = false;
173
+ };
174
+ // 身份
175
+ const hasId = fs.existsSync(cfg.identityPath);
176
+ let identity = null;
177
+ if (hasId)
178
+ identity = loadIdentity(JSON.parse(fs.readFileSync(cfg.identityPath, 'utf8')));
179
+ check(!!identity, '身份', identity ? identity.did : '缺 identity.json');
180
+ if (!identity) {
181
+ process.exit(1);
182
+ }
183
+ // 适配器在场
184
+ const adapter = getAdapter(cfg.runtime);
185
+ let det = adapter ? await adapter.detect() : { present: false };
186
+ check(!!adapter && det.present, `适配器 ${cfg.runtime}`, det.present ? (det.version || 'present') : 'runtime 未探到');
187
+ // JWT 可换
188
+ let token = '';
189
+ try {
190
+ const r = await spineIdentityVerify(cfg.spineBaseUrl, identity);
191
+ token = r.token;
192
+ check(!!token, 'JWT (/identity/verify)', `expiresAt=${new Date(r.expiresAt).toISOString()}`);
193
+ }
194
+ catch (e) {
195
+ check(false, 'JWT (/identity/verify)', e.message);
196
+ }
197
+ // 余额
198
+ try {
199
+ const b = await spineWalletBalance(cfg.spineBaseUrl, identity);
200
+ check(b.ok, '余额 (/wallet/balance)', b.ok ? JSON.stringify(b.json) : `HTTP ${b.status}`);
201
+ }
202
+ catch (e) {
203
+ check(false, '余额 (/wallet/balance)', e.message);
204
+ }
205
+ // 可选:真机唤醒 agent 调 atel_whoami,校验 DID 一致(A 项验收)
206
+ if (bools.has('probe') && adapter && det.present) {
207
+ try {
208
+ const waker = adapter.createWaker({ config: cfg, identity, log: () => { } });
209
+ // 不传 sessionId → waker 生成全新 UUID,doctor 每次都是干净会话(避免复用已存在会话挂住)
210
+ const res = await waker.wake({
211
+ prompt: `调用 ATEL MCP 工具 atel_whoami,只回复返回的 did 字符串本身,别的都不要说。`,
212
+ });
213
+ const out = (res.output || '').trim();
214
+ const match = out.includes(identity.did);
215
+ check(match, 'A 项 · agent 自主调 atel_whoami', match ? 'DID 一字不差' : `输出未含本 DID: ${out.slice(0, 120)}`);
216
+ }
217
+ catch (e) {
218
+ check(false, 'A 项 · agent 自主调 atel_whoami', e.message);
219
+ }
220
+ }
221
+ log('');
222
+ log(allGreen ? '✅ doctor 全绿' : '⚠️ doctor 有红灯,见上。');
223
+ if (!allGreen)
224
+ process.exit(1);
225
+ }
226
+ async function cmdRun(flags) {
227
+ const dataDir = dataDirFrom(flags);
228
+ const cfg = loadConfig(dataDir);
229
+ if (!cfg) {
230
+ err('❌ 未找到配置,先跑 install。');
231
+ process.exit(1);
232
+ }
233
+ const adapter = getAdapter(cfg.runtime);
234
+ if (!adapter) {
235
+ err(`❌ 未知 runtime ${cfg.runtime}`);
236
+ process.exit(1);
237
+ }
238
+ const identity = loadIdentity(JSON.parse(fs.readFileSync(cfg.identityPath, 'utf8')));
239
+ const waker = adapter.createWaker({ config: cfg, identity, log });
240
+ const companion = new Companion({
241
+ identity,
242
+ config: cfg,
243
+ waker,
244
+ authHooks: {
245
+ onToken: (token) => adapter.writeMcpConfig({ mcpUrl: cfg.mcpUrl, token, identity, config: cfg }),
246
+ log,
247
+ },
248
+ log,
249
+ });
250
+ await companion.start();
251
+ log(`▶️ companion 运行中(runtime=${cfg.runtime}, did=${identity.did})。Ctrl-C 退出。`);
252
+ const shutdown = () => {
253
+ log('停止 companion…');
254
+ companion.stop();
255
+ process.exit(0);
256
+ };
257
+ process.on('SIGINT', shutdown);
258
+ process.on('SIGTERM', shutdown);
259
+ // 周期打印 stats
260
+ setInterval(() => log(`[stats] ${JSON.stringify(companion.getStats())}`), 5 * 60 * 1000).unref?.();
261
+ // 保活
262
+ await new Promise(() => { });
263
+ }
264
+ function cmdUpdate() {
265
+ log('⬆️ 自更新内核 + 适配器…');
266
+ try {
267
+ execFileSync('npm', ['i', '-g', '@atel-ai/agent@latest', '@atel-ai/runtime-core@latest'], {
268
+ stdio: 'inherit',
269
+ });
270
+ log('✅ 已更新到最新。重启 companion 生效。');
271
+ }
272
+ catch (e) {
273
+ err(`❌ 更新失败: ${e.message}`);
274
+ process.exit(1);
275
+ }
276
+ }
277
+ function cmdWhoami(flags) {
278
+ const dataDir = dataDirFrom(flags);
279
+ const cfg = loadConfig(dataDir);
280
+ if (!cfg || !fs.existsSync(cfg.identityPath)) {
281
+ err('❌ 未接入,先跑 install。');
282
+ process.exit(1);
283
+ }
284
+ const id = loadIdentity(JSON.parse(fs.readFileSync(cfg.identityPath, 'utf8')));
285
+ log(id.did);
286
+ }
287
+ async function cmdDetect() {
288
+ const all = await detectAll();
289
+ if (all.length === 0) {
290
+ log('没探到任何受支持 runtime。');
291
+ return;
292
+ }
293
+ for (const { adapter, result } of all) {
294
+ log(`🟢 ${adapter.displayName} (${adapter.id}) ${result.version || ''} ${result.detail || ''}`);
295
+ }
296
+ }
297
+ function help() {
298
+ log(`@atel-ai/agent — ATEL 一键接入器
299
+
300
+ 用法:
301
+ npx @atel-ai/agent install [--runtime <id>] [--name <agent名>] [--capabilities writing,coding]
302
+ [--mcp-url U] [--spine-url U] [--platform-url U]
303
+ [--delivery sse|webhook] [--callback-url U] [--data-dir D] [--server] [--private]
304
+ npx @atel-ai/agent run [--data-dir D]
305
+ npx @atel-ai/agent doctor [--data-dir D] [--probe]
306
+ npx @atel-ai/agent detect
307
+ npx @atel-ai/agent update
308
+ npx @atel-ai/agent whoami [--data-dir D]
309
+
310
+ 支持的 runtime: ${ADAPTERS.map((a) => a.id).join(', ')}
311
+ `);
312
+ }
313
+ async function main() {
314
+ const { cmd, flags, bools } = parseArgs(process.argv.slice(2));
315
+ switch (cmd) {
316
+ case 'install': return cmdInstall(flags, bools);
317
+ case 'run': return cmdRun(flags);
318
+ case 'doctor': return cmdDoctor(flags, bools);
319
+ case 'detect': return cmdDetect();
320
+ case 'update': return cmdUpdate();
321
+ case 'whoami': return cmdWhoami(flags);
322
+ case 'help':
323
+ default: return help();
324
+ }
325
+ }
326
+ main().catch((e) => {
327
+ err(`fatal: ${e.stack || e.message}`);
328
+ process.exit(1);
329
+ });
330
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@atel-ai/agent",
3
+ "version": "0.1.0",
4
+ "description": "ATEL 一键接入器:npx @atel-ai/agent install — detect→写配置→起 companion→装 SKILL→doctor",
5
+ "type": "module",
6
+ "bin": {
7
+ "atel-agent": "./dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "README.md"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc -p tsconfig.json",
15
+ "clean": "rm -rf dist"
16
+ },
17
+ "dependencies": {
18
+ "@atel-ai/runtime-core": "^0.1.0"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^20.14.0",
22
+ "typescript": "^5.5.0"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "engines": {
28
+ "node": ">=18"
29
+ },
30
+ "license": "MIT"
31
+ }