@atel-ai/agent 0.2.16 → 0.2.17

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":"mcp-shim.d.ts","sourceRoot":"","sources":["../src/mcp-shim.ts"],"names":[],"mappings":"AAsCA,8CAA8C;AAC9C,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DhF"}
1
+ {"version":3,"file":"mcp-shim.d.ts","sourceRoot":"","sources":["../src/mcp-shim.ts"],"names":[],"mappings":"AA4EA,8CAA8C;AAC9C,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiHhF"}
package/dist/mcp-shim.js CHANGED
@@ -16,7 +16,7 @@
16
16
  */
17
17
  import fs from 'node:fs';
18
18
  import path from 'node:path';
19
- import { AuthManager, fetchWithProxy, loadIdentity, } from '@atel-ai/runtime-core';
19
+ import { AuthManager, fetchWithProxy, loadIdentity, spineWalletBalance, } from '@atel-ai/runtime-core';
20
20
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
21
21
  import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
22
22
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
@@ -25,6 +25,36 @@ import { ListToolsRequestSchema, CallToolRequestSchema, } from '@modelcontextpro
25
25
  const elog = (m) => {
26
26
  process.stderr.write(`[atel-mcp] ${m}\n`);
27
27
  };
28
+ const LOCAL_TOOLS = [
29
+ {
30
+ name: 'atel_whoami',
31
+ description: 'Return this ATEL agent identity and local runtime context.',
32
+ inputSchema: {
33
+ type: 'object',
34
+ properties: {},
35
+ additionalProperties: false,
36
+ },
37
+ },
38
+ {
39
+ name: 'atel_balance',
40
+ description: 'Return this ATEL account balance from the ATEL spine wallet endpoint.',
41
+ inputSchema: {
42
+ type: 'object',
43
+ properties: {},
44
+ additionalProperties: false,
45
+ },
46
+ },
47
+ ];
48
+ function textResult(value) {
49
+ return {
50
+ content: [
51
+ {
52
+ type: 'text',
53
+ text: typeof value === 'string' ? value : JSON.stringify(value),
54
+ },
55
+ ],
56
+ };
57
+ }
28
58
  /** 起一个本地 stdio MCP 垫片,代理到远端 atel MCP,鉴权自管。 */
29
59
  export async function runMcpShim(dataDir, version) {
30
60
  const cfgPath = path.join(dataDir, 'config.json');
@@ -46,42 +76,98 @@ export async function runMcpShim(dataDir, version) {
46
76
  }
47
77
  // 持久身份 → 自取/自动续 JWT(不写任何配置文件,onToken 留空)
48
78
  const auth = new AuthManager(identity, cfg.spineBaseUrl, { log: elog });
49
- // 远端 MCP 客户端:每个 HTTP 请求都用 ensureFresh() 注入新鲜 Bearer。
50
- // JWT 续期对宿主 CLI 完全透明 —— 配置里没有 token,也无需重写。
51
- const transport = new StreamableHTTPClientTransport(new URL(cfg.mcpUrl), {
52
- fetch: async (url, init) => {
53
- const token = await auth.ensureFresh();
54
- const headers = new Headers(init?.headers);
55
- headers.set('Authorization', `Bearer ${token}`);
56
- return fetchWithProxy(url, { ...init, headers });
57
- },
58
- });
59
- const client = new Client({ name: 'atel-mcp-shim', version }, { capabilities: {} });
60
- try {
61
- await client.connect(transport);
62
- }
63
- catch (e) {
64
- elog(`连远端 MCP 失败 ${cfg.mcpUrl}: ${e.message}`);
65
- process.exit(1);
66
- }
67
- elog(`已连远端 ${cfg.mcpUrl}(did=${identity.did})`);
68
- // 本地 stdio server:把 tools/list、tools/call 透传给远端。
79
+ let remote = null;
80
+ let remoteConnecting = null;
81
+ let remoteTools = [];
82
+ // 远端 MCP 建连不能阻塞本地 stdio 初始化。Codex 对 MCP startup 默认只有 30s;
83
+ // 如果这里先 await 远端 streamable-http,冷启动会被网络/代理/SSE 慢路径拖死。
84
+ const connectRemote = async () => {
85
+ if (remote)
86
+ return remote;
87
+ if (remoteConnecting)
88
+ return remoteConnecting;
89
+ remoteConnecting = (async () => {
90
+ const transport = new StreamableHTTPClientTransport(new URL(cfg.mcpUrl), {
91
+ fetch: async (url, init) => {
92
+ const token = await auth.ensureFresh();
93
+ const headers = new Headers(init?.headers);
94
+ headers.set('Authorization', `Bearer ${token}`);
95
+ return fetchWithProxy(url, { ...init, headers });
96
+ },
97
+ });
98
+ const client = new Client({ name: 'atel-mcp-shim', version }, { capabilities: {} });
99
+ transport.onclose = () => {
100
+ elog('远端连接关闭,保留本地 MCP;下次请求时重连');
101
+ remote = null;
102
+ remoteConnecting = null;
103
+ remoteTools = [];
104
+ };
105
+ await client.connect(transport);
106
+ const state = { client, transport };
107
+ remote = state;
108
+ try {
109
+ remoteTools = (await client.listTools()).tools || [];
110
+ }
111
+ catch (e) {
112
+ elog(`读取远端工具列表失败: ${e.message}`);
113
+ }
114
+ elog(`已连远端 ${cfg.mcpUrl}(did=${identity.did}, tools=${remoteTools.length})`);
115
+ void server.sendToolListChanged().catch(() => { });
116
+ return state;
117
+ })().catch((e) => {
118
+ remote = null;
119
+ remoteConnecting = null;
120
+ elog(`连远端 MCP 失败 ${cfg.mcpUrl}: ${e.message}`);
121
+ throw e;
122
+ });
123
+ return remoteConnecting;
124
+ };
125
+ // 本地 stdio server 先就绪:基础账户工具本地实现,其他工具 lazy proxy 到远端。
69
126
  const server = new Server({ name: 'atel', version }, { capabilities: { tools: {} } });
70
- server.setRequestHandler(ListToolsRequestSchema, async (req) => {
71
- return await client.listTools(req.params);
127
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
128
+ void connectRemote().catch(() => { });
129
+ const seen = new Set(LOCAL_TOOLS.map((t) => t.name));
130
+ return {
131
+ tools: [
132
+ ...LOCAL_TOOLS,
133
+ ...remoteTools.filter((t) => {
134
+ const name = t.name;
135
+ if (typeof name !== 'string' || seen.has(name))
136
+ return false;
137
+ seen.add(name);
138
+ return true;
139
+ }),
140
+ ],
141
+ };
72
142
  });
73
143
  server.setRequestHandler(CallToolRequestSchema, async (req) => {
74
- return await client.callTool(req.params);
144
+ if (req.params.name === 'atel_whoami') {
145
+ return textResult({
146
+ did: identity.did,
147
+ runtime: cfg.runtime,
148
+ dataDir: cfg.dataDir,
149
+ mcpUrl: cfg.mcpUrl,
150
+ spineBaseUrl: cfg.spineBaseUrl,
151
+ });
152
+ }
153
+ if (req.params.name === 'atel_balance') {
154
+ const r = await spineWalletBalance(cfg.spineBaseUrl, identity);
155
+ if (!r.ok) {
156
+ return textResult({ ok: false, status: r.status, body: r.body.slice(0, 500) });
157
+ }
158
+ return textResult(r.json ?? r.body);
159
+ }
160
+ const state = await connectRemote();
161
+ return await state.client.callTool(req.params);
75
162
  });
76
163
  const onExit = () => {
77
164
  auth.stop();
78
- void client.close().catch(() => { });
165
+ void remote?.client.close().catch(() => { });
79
166
  };
80
167
  process.on('SIGINT', () => { onExit(); process.exit(0); });
81
168
  process.on('SIGTERM', () => { onExit(); process.exit(0); });
82
- // 远端断开则退出,让宿主 CLI 感知(它会按需重启垫片)。
83
- transport.onclose = () => { elog('远端连接关闭,退出'); process.exit(0); };
84
169
  await server.connect(new StdioServerTransport());
85
- elog('stdio MCP server 就绪(atel 工具已就位)');
170
+ elog('stdio MCP server 就绪(基础 atel 工具已就位;远端工具后台连接)');
171
+ void connectRemote().catch(() => { });
86
172
  }
87
173
  //# sourceMappingURL=mcp-shim.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-shim.js","sourceRoot":"","sources":["../src/mcp-shim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-shim.js","sourceRoot":"","sources":["../src/mcp-shim.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atel-ai/agent",
3
- "version": "0.2.16",
3
+ "version": "0.2.17",
4
4
  "description": "ATEL 一键接入器:npx @atel-ai/agent install — detect→写配置→起 companion→装 SKILL→doctor",
5
5
  "type": "module",
6
6
  "bin": {