agim-cli 1.2.96 → 1.2.97
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/CHANGELOG.md +52 -0
- package/bin/agim_rpc.py +140 -0
- package/dist/cli.js +14 -0
- package/dist/cli.js.map +1 -1
- package/dist/core/llm/agim-rpc-server.d.ts +42 -0
- package/dist/core/llm/agim-rpc-server.d.ts.map +1 -0
- package/dist/core/llm/agim-rpc-server.js +283 -0
- package/dist/core/llm/agim-rpc-server.js.map +1 -0
- package/dist/core/llm/exec-dispatcher.d.ts +15 -0
- package/dist/core/llm/exec-dispatcher.d.ts.map +1 -1
- package/dist/core/llm/exec-dispatcher.js +24 -2
- package/dist/core/llm/exec-dispatcher.js.map +1 -1
- package/dist/plugins/agents/native/index.d.ts.map +1 -1
- package/dist/plugins/agents/native/index.js +17 -2
- package/dist/plugins/agents/native/index.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
// agim-rpc-server — local RPC bridge for bgjob-spawned subprocesses.
|
|
2
|
+
//
|
|
3
|
+
// Why this exists (v1.2.97, borrowed from Hermes Agent's "Python script
|
|
4
|
+
// via RPC" pattern):
|
|
5
|
+
// When `native` faces a task that requires many similar tool calls
|
|
6
|
+
// (e.g. "fetch financial data for 50 stocks, write the result to a
|
|
7
|
+
// CSV, then email me"), running 50 mcp__imhub__* calls in a chat turn
|
|
8
|
+
// means 50 LLM round-trips and a real chance of hitting either the
|
|
9
|
+
// stuck-loop detector (v1.2.95) or the iteration cap. The right shape
|
|
10
|
+
// for that work is: the model writes ONE Python script, that script
|
|
11
|
+
// runs in a bgjob detached worker, and the worker calls back into
|
|
12
|
+
// agim's tool surface via local IPC. agim pays one round-trip
|
|
13
|
+
// instead of fifty.
|
|
14
|
+
//
|
|
15
|
+
// Surface (just enough):
|
|
16
|
+
// - POST {socket}/rpc/<toolName>
|
|
17
|
+
// - Header X-Agim-Rpc-Token: <hex>
|
|
18
|
+
// - Body { args: Record<string, unknown> }
|
|
19
|
+
// - Reply { ok: true, result } | { ok: false, error, status }
|
|
20
|
+
//
|
|
21
|
+
// Security model:
|
|
22
|
+
// - Unix-domain socket only (no TCP port; cannot be reached from a
|
|
23
|
+
// different host). File mode 0600 owned by the agim process user.
|
|
24
|
+
// - Per-process auth token, minted on demand and bound to a single
|
|
25
|
+
// RunContext (platform / channelId / threadId / userId). A subprocess
|
|
26
|
+
// that knows the token can ONLY drive that one IM thread — it
|
|
27
|
+
// cannot spam push_message into someone else's thread.
|
|
28
|
+
// - Tool whitelist hard-coded to read-only / write-safe imhub MCP
|
|
29
|
+
// tools. Operators can extend via IMHUB_RPC_ALLOWED_TOOLS env.
|
|
30
|
+
// native_exec / fs writes / call_agent / long_task are NOT exposed
|
|
31
|
+
// — the bgjob worker already has a shell, no need to indirect.
|
|
32
|
+
//
|
|
33
|
+
// Limits intentionally NOT in MVP:
|
|
34
|
+
// - Per-token rate limit (TODO when first noisy bgjob shows up)
|
|
35
|
+
// - Per-token cost budget for save_memo / push_message
|
|
36
|
+
// - Windows named-pipe alternative (no Windows production targets)
|
|
37
|
+
import { createServer as createHttpServer } from 'node:http';
|
|
38
|
+
import { randomBytes } from 'node:crypto';
|
|
39
|
+
import { chmod, mkdir, unlink } from 'node:fs/promises';
|
|
40
|
+
import { existsSync } from 'node:fs';
|
|
41
|
+
import { dirname, join } from 'node:path';
|
|
42
|
+
import { logger as rootLogger } from '../logger.js';
|
|
43
|
+
import { AGIM_HOME } from '../agim-paths.js';
|
|
44
|
+
import { handleMemoOp } from '../memo-rpc.js';
|
|
45
|
+
import { handlePushOp } from '../push-rpc.js';
|
|
46
|
+
import { handleSkillsOp } from '../skills-rpc.js';
|
|
47
|
+
const log = rootLogger.child({ component: 'agim-rpc' });
|
|
48
|
+
const tokens = new Map();
|
|
49
|
+
const DEFAULT_TTL_MS = (() => {
|
|
50
|
+
const raw = process.env.IMHUB_RPC_TOKEN_TTL_MS;
|
|
51
|
+
if (!raw)
|
|
52
|
+
return 24 * 60 * 60 * 1000; // 24 h
|
|
53
|
+
const n = parseInt(raw, 10);
|
|
54
|
+
return Number.isFinite(n) && n > 0 ? n : 24 * 60 * 60 * 1000;
|
|
55
|
+
})();
|
|
56
|
+
const DEFAULT_ALLOWED_TOOLS = [
|
|
57
|
+
'mcp__imhub__search_memos',
|
|
58
|
+
'mcp__imhub__save_memo',
|
|
59
|
+
'mcp__imhub__read_skill',
|
|
60
|
+
'mcp__imhub__list_skills',
|
|
61
|
+
'mcp__imhub__push_message',
|
|
62
|
+
];
|
|
63
|
+
function resolveAllowedTools() {
|
|
64
|
+
const raw = process.env.IMHUB_RPC_ALLOWED_TOOLS;
|
|
65
|
+
if (!raw?.trim())
|
|
66
|
+
return new Set(DEFAULT_ALLOWED_TOOLS);
|
|
67
|
+
const extra = raw.split(',').map((s) => s.trim()).filter(Boolean);
|
|
68
|
+
return new Set([...DEFAULT_ALLOWED_TOOLS, ...extra]);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Mint a new RPC token bound to a specific IM thread. Returns the hex
|
|
72
|
+
* token + the socket path subprocesses should connect to. Callers
|
|
73
|
+
* should pass these to spawn() via env so the child inherits them
|
|
74
|
+
* unconditionally (and not via argv — argv shows up in `ps`).
|
|
75
|
+
*/
|
|
76
|
+
export function mintRpcToken(ctx, origin = 'native_exec') {
|
|
77
|
+
const token = randomBytes(32).toString('hex');
|
|
78
|
+
const expiresAt = Date.now() + DEFAULT_TTL_MS;
|
|
79
|
+
tokens.set(token, { ctx, expiresAt, origin });
|
|
80
|
+
return { token, socketPath: resolveSocketPath(), expiresAt };
|
|
81
|
+
}
|
|
82
|
+
/** Revoke a token explicitly. Token registry is also pruned on a
|
|
83
|
+
* periodic sweep, so revoke is best-effort cleanup, not required. */
|
|
84
|
+
export function revokeRpcToken(token) {
|
|
85
|
+
tokens.delete(token);
|
|
86
|
+
}
|
|
87
|
+
function pruneExpired() {
|
|
88
|
+
const now = Date.now();
|
|
89
|
+
for (const [t, entry] of tokens) {
|
|
90
|
+
if (entry.expiresAt <= now)
|
|
91
|
+
tokens.delete(t);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export function resolveSocketPath() {
|
|
95
|
+
return process.env.IMHUB_RPC_SOCKET || join(AGIM_HOME, 'rpc.sock');
|
|
96
|
+
}
|
|
97
|
+
let server = null;
|
|
98
|
+
let sweepTimer = null;
|
|
99
|
+
/**
|
|
100
|
+
* Start the local RPC server on a Unix socket. Idempotent — repeated
|
|
101
|
+
* calls return the same handle. Best-effort: a failure to start (e.g.
|
|
102
|
+
* permission denied on the socket path) logs at warn and resolves to
|
|
103
|
+
* `null` so the rest of agim boots normally.
|
|
104
|
+
*/
|
|
105
|
+
export async function startRpcServer() {
|
|
106
|
+
if (server)
|
|
107
|
+
return server;
|
|
108
|
+
const socketPath = resolveSocketPath();
|
|
109
|
+
try {
|
|
110
|
+
// Make sure the parent dir exists. AGIM_HOME may not have been
|
|
111
|
+
// created yet on a brand-new install.
|
|
112
|
+
await mkdir(dirname(socketPath), { recursive: true });
|
|
113
|
+
// Stale socket from a previous run blocks listen() with EADDRINUSE.
|
|
114
|
+
if (existsSync(socketPath)) {
|
|
115
|
+
try {
|
|
116
|
+
await unlink(socketPath);
|
|
117
|
+
}
|
|
118
|
+
catch { /* best-effort */ }
|
|
119
|
+
}
|
|
120
|
+
const s = createHttpServer((req, res) => { void handleRequest(req, res); });
|
|
121
|
+
await new Promise((resolve, reject) => {
|
|
122
|
+
s.once('error', reject);
|
|
123
|
+
s.listen(socketPath, () => resolve());
|
|
124
|
+
});
|
|
125
|
+
// Lock the socket down so only the owning UID can connect. Group
|
|
126
|
+
// and world read are intentionally stripped.
|
|
127
|
+
try {
|
|
128
|
+
await chmod(socketPath, 0o600);
|
|
129
|
+
}
|
|
130
|
+
catch { /* best-effort */ }
|
|
131
|
+
server = s;
|
|
132
|
+
sweepTimer = setInterval(pruneExpired, 60_000);
|
|
133
|
+
if (sweepTimer.unref)
|
|
134
|
+
sweepTimer.unref();
|
|
135
|
+
log.info({ event: 'agim-rpc.started', socketPath }, `agim RPC server listening on ${socketPath}`);
|
|
136
|
+
return s;
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
log.warn({
|
|
140
|
+
event: 'agim-rpc.start_failed',
|
|
141
|
+
socketPath,
|
|
142
|
+
err: err instanceof Error ? err.message : String(err),
|
|
143
|
+
}, 'agim RPC server failed to start — Python sidecar will be unavailable');
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/** Graceful shutdown — called on SIGTERM. */
|
|
148
|
+
export async function stopRpcServer() {
|
|
149
|
+
if (sweepTimer) {
|
|
150
|
+
clearInterval(sweepTimer);
|
|
151
|
+
sweepTimer = null;
|
|
152
|
+
}
|
|
153
|
+
if (!server)
|
|
154
|
+
return;
|
|
155
|
+
await new Promise((resolve) => server.close(() => resolve()));
|
|
156
|
+
server = null;
|
|
157
|
+
try {
|
|
158
|
+
await unlink(resolveSocketPath());
|
|
159
|
+
}
|
|
160
|
+
catch { /* best-effort */ }
|
|
161
|
+
tokens.clear();
|
|
162
|
+
}
|
|
163
|
+
async function readBody(req, capBytes = 256 * 1024) {
|
|
164
|
+
return new Promise((resolve, reject) => {
|
|
165
|
+
let total = 0;
|
|
166
|
+
const chunks = [];
|
|
167
|
+
req.on('data', (c) => {
|
|
168
|
+
total += c.length;
|
|
169
|
+
if (total > capBytes) {
|
|
170
|
+
req.destroy();
|
|
171
|
+
reject(new Error(`request body exceeds ${capBytes} bytes`));
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
chunks.push(c);
|
|
175
|
+
});
|
|
176
|
+
req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
|
|
177
|
+
req.on('error', reject);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
function writeJson(res, status, body) {
|
|
181
|
+
res.statusCode = status;
|
|
182
|
+
res.setHeader('content-type', 'application/json; charset=utf-8');
|
|
183
|
+
res.end(JSON.stringify(body));
|
|
184
|
+
}
|
|
185
|
+
async function handleRequest(req, res) {
|
|
186
|
+
try {
|
|
187
|
+
if (req.method !== 'POST') {
|
|
188
|
+
writeJson(res, 405, { ok: false, error: 'POST required', status: 405 });
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const url = req.url || '';
|
|
192
|
+
if (!url.startsWith('/rpc/')) {
|
|
193
|
+
writeJson(res, 404, { ok: false, error: 'unknown route', status: 404 });
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const toolName = url.slice('/rpc/'.length).split(/[?#]/)[0];
|
|
197
|
+
const allowed = resolveAllowedTools();
|
|
198
|
+
if (!allowed.has(toolName)) {
|
|
199
|
+
log.warn({ event: 'agim-rpc.tool_denied', toolName });
|
|
200
|
+
writeJson(res, 403, { ok: false, error: `tool not in RPC whitelist: ${toolName}`, status: 403 });
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const token = String(req.headers['x-agim-rpc-token'] ?? '');
|
|
204
|
+
if (!token) {
|
|
205
|
+
writeJson(res, 401, { ok: false, error: 'missing X-Agim-Rpc-Token header', status: 401 });
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const entry = tokens.get(token);
|
|
209
|
+
if (!entry || entry.expiresAt <= Date.now()) {
|
|
210
|
+
if (entry)
|
|
211
|
+
tokens.delete(token); // expired
|
|
212
|
+
log.warn({ event: 'agim-rpc.token_invalid', toolName, hasEntry: !!entry });
|
|
213
|
+
writeJson(res, 401, { ok: false, error: 'invalid or expired token', status: 401 });
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const raw = await readBody(req);
|
|
217
|
+
let parsed;
|
|
218
|
+
try {
|
|
219
|
+
parsed = raw ? JSON.parse(raw) : {};
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
writeJson(res, 400, { ok: false, error: 'malformed JSON body', status: 400 });
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
const args = (parsed.args ?? {});
|
|
226
|
+
log.info({
|
|
227
|
+
event: 'agim-rpc.call',
|
|
228
|
+
toolName,
|
|
229
|
+
origin: entry.origin,
|
|
230
|
+
platform: entry.ctx.platform,
|
|
231
|
+
threadId: entry.ctx.threadId,
|
|
232
|
+
});
|
|
233
|
+
const result = await dispatch(toolName, args, entry.ctx);
|
|
234
|
+
writeJson(res, 200, result);
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
238
|
+
log.error({ event: 'agim-rpc.handler_threw', err: msg });
|
|
239
|
+
writeJson(res, 500, { ok: false, error: msg, status: 500 });
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
async function dispatch(toolName, args, ctx) {
|
|
243
|
+
// Each branch funnels into the SAME RPC handler the in-process
|
|
244
|
+
// native dispatcher uses, so the surface is byte-identical.
|
|
245
|
+
switch (toolName) {
|
|
246
|
+
case 'mcp__imhub__search_memos': {
|
|
247
|
+
const r = await handleMemoOp('search', args, ctx);
|
|
248
|
+
return r.ok ? { ok: true, result: r.result } : { ok: false, error: r.error };
|
|
249
|
+
}
|
|
250
|
+
case 'mcp__imhub__save_memo': {
|
|
251
|
+
const r = await handleMemoOp('save', args, ctx);
|
|
252
|
+
return r.ok ? { ok: true, result: r.result } : { ok: false, error: r.error };
|
|
253
|
+
}
|
|
254
|
+
case 'mcp__imhub__read_skill': {
|
|
255
|
+
const r = await handleSkillsOp({ op: 'read', name: typeof args.name === 'string' ? args.name : '' });
|
|
256
|
+
if (!r.ok)
|
|
257
|
+
return { ok: false, error: r.error };
|
|
258
|
+
if (r.result.op !== 'read')
|
|
259
|
+
return { ok: false, error: 'unexpected response shape' };
|
|
260
|
+
if (!r.result.available)
|
|
261
|
+
return { ok: false, error: `skill unavailable: ${r.result.unavailableReason || 'unknown'}` };
|
|
262
|
+
return { ok: true, result: r.result.body };
|
|
263
|
+
}
|
|
264
|
+
case 'mcp__imhub__list_skills': {
|
|
265
|
+
const r = await handleSkillsOp({ op: 'list' });
|
|
266
|
+
return r.ok ? { ok: true, result: r.result } : { ok: false, error: r.error };
|
|
267
|
+
}
|
|
268
|
+
case 'mcp__imhub__push_message': {
|
|
269
|
+
const r = await handlePushOp(args, ctx);
|
|
270
|
+
return r.ok ? { ok: true, result: r.result } : { ok: false, error: r.error };
|
|
271
|
+
}
|
|
272
|
+
default:
|
|
273
|
+
// Whitelist already filtered upstream; this branch is dead unless
|
|
274
|
+
// an operator added a tool to IMHUB_RPC_ALLOWED_TOOLS without
|
|
275
|
+
// adding a corresponding handler here.
|
|
276
|
+
return { ok: false, error: `no handler wired for ${toolName} (operator-extended allowlist?)` };
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/** Internal-only — used by tests to snapshot token state. */
|
|
280
|
+
export function _peekTokensForTests() {
|
|
281
|
+
return tokens;
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=agim-rpc-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agim-rpc-server.js","sourceRoot":"","sources":["../../../src/core/llm/agim-rpc-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,21 @@ export declare function isExecToolName(name: string): boolean;
|
|
|
4
4
|
export declare function getExecTools(): ToolDef[];
|
|
5
5
|
export interface ExecContext {
|
|
6
6
|
cwd: string;
|
|
7
|
+
/** v1.2.97 — when present, every spawned child gets IMHUB_RPC_SOCKET
|
|
8
|
+
* and IMHUB_RPC_TOKEN env vars so a bgjob-launched Python (or any
|
|
9
|
+
* language) script can call back into agim's tool surface via the
|
|
10
|
+
* local RPC server. The token is bound to this exact RunContext so
|
|
11
|
+
* a worker can only drive its own IM thread. Caller (native/index.ts)
|
|
12
|
+
* mints a token at turn start; exec-dispatcher injects it on every
|
|
13
|
+
* spawn under the same turn. Optional — leaving it unset just means
|
|
14
|
+
* the bgjob child can't call back (the existing v1.2.93 SOP still
|
|
15
|
+
* works, just without the RPC convenience). */
|
|
16
|
+
rpcCtx?: {
|
|
17
|
+
platform: string;
|
|
18
|
+
channelId: string;
|
|
19
|
+
threadId: string;
|
|
20
|
+
userId: string;
|
|
21
|
+
};
|
|
7
22
|
}
|
|
8
23
|
export declare function buildExecDispatcher(ctx: ExecContext): ToolDispatcher;
|
|
9
24
|
export declare function isBgjobInvocation(cmd: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/core/llm/exec-dispatcher.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAU5E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,YAAY,IAAI,OAAO,EAAE,CAsBxC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"exec-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/core/llm/exec-dispatcher.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAU5E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,YAAY,IAAI,OAAO,EAAE,CAsBxC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX;;;;;;;;oDAQgD;IAChD,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACnF;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAapE;AAoJD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAYtD"}
|
|
@@ -130,15 +130,36 @@ async function runExec(args, ctx, signal) {
|
|
|
130
130
|
const { bin, argv } = useSandbox
|
|
131
131
|
? buildBwrapInvocation(command, cwd, sandboxNetOff)
|
|
132
132
|
: { bin: '/bin/sh', argv: ['-c', command] };
|
|
133
|
+
// v1.2.97 — mint a per-spawn RPC token + injection env. Bound to
|
|
134
|
+
// the current IM thread so the child can ONLY drive that thread's
|
|
135
|
+
// memo / push / skill surface, never anyone else's. Best-effort:
|
|
136
|
+
// if minting fails (RPC server didn't start, no rpcCtx) the spawn
|
|
137
|
+
// still runs — Python sidecar inside the child will just refuse
|
|
138
|
+
// to construct a client (raises RuntimeError on missing env).
|
|
139
|
+
let extraEnv;
|
|
140
|
+
if (ctx.rpcCtx) {
|
|
141
|
+
try {
|
|
142
|
+
const { mintRpcToken, resolveSocketPath } = await import('./agim-rpc-server.js');
|
|
143
|
+
const { token } = mintRpcToken(ctx.rpcCtx, 'native_exec');
|
|
144
|
+
extraEnv = { IMHUB_RPC_SOCKET: resolveSocketPath(), IMHUB_RPC_TOKEN: token };
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
log.debug({
|
|
148
|
+
event: 'exec.rpc_mint_failed',
|
|
149
|
+
err: err instanceof Error ? err.message : String(err),
|
|
150
|
+
}, 'failed to mint RPC token; child will boot without IMHUB_RPC_*');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
133
153
|
log.info({
|
|
134
154
|
event: 'exec.spawn',
|
|
135
155
|
bin,
|
|
136
156
|
cwd,
|
|
137
157
|
sandbox: useSandbox ? `bwrap${sandboxNetOff ? '+no-net' : ''}` : (isBgjob ? 'bypassed-for-bgjob' : 'none'),
|
|
158
|
+
rpcTokenInjected: !!extraEnv,
|
|
138
159
|
timeoutMs,
|
|
139
160
|
commandPreview: command.slice(0, 120),
|
|
140
161
|
});
|
|
141
|
-
return await runChild(bin, argv, { cwd, timeoutMs, signal });
|
|
162
|
+
return await runChild(bin, argv, { cwd, timeoutMs, signal, extraEnv });
|
|
142
163
|
}
|
|
143
164
|
const DANGEROUS_PATTERNS = [
|
|
144
165
|
// rm -rf with paths that touch root / home root / ~. Allow narrow
|
|
@@ -268,7 +289,8 @@ function runChild(bin, argv, opts) {
|
|
|
268
289
|
let stdoutTruncated = false;
|
|
269
290
|
let stderrTruncated = false;
|
|
270
291
|
let timedOut = false;
|
|
271
|
-
const
|
|
292
|
+
const env = opts.extraEnv ? { ...process.env, ...opts.extraEnv } : process.env;
|
|
293
|
+
const child = spawn(bin, argv, { cwd: opts.cwd, env, signal: opts.signal });
|
|
272
294
|
const timer = setTimeout(() => {
|
|
273
295
|
timedOut = true;
|
|
274
296
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-dispatcher.js","sourceRoot":"","sources":["../../../src/core/llm/exec-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exec-dispatcher.js","sourceRoot":"","sources":["../../../src/core/llm/exec-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/native/index.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/native/index.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,wBAAwB,CAAA;AA8M/B;;;;;;;+DAO+D;AAC/D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAmBpD;AAuRD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkCvF;AA4gBD,eAAO,MAAM,kBAAkB,EAAE,YAAuC,CAAA;AAExE;;cAEc;AACd,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C"}
|
|
@@ -96,7 +96,7 @@ function buildSystemPrompt(provider, role, cwd) {
|
|
|
96
96
|
lines.push('[/operator role definition]');
|
|
97
97
|
lines.push('');
|
|
98
98
|
}
|
|
99
|
-
lines.push(`You are agim native — agim's in-process LLM agent talking to a user over an IM platform.`, ``, `Runtime:`, ` Backend: ${provider.providerType}:${provider.name}`, ` Role: ${role}`, ` Working directory: ${cwd}`, ``, `Tools available beyond the four native built-ins (echo / now / sleep / random_uuid):`, ` - agim built-in MCP tools (mcp__imhub__*): read_skill, list_skills, save_memo, search_memos, update_memo, delete_memo, push_message, ask_user, call_agent, long_task, complete_goal`, ` - native filesystem tools: native_read_file, native_write_file, native_list_dir, native_glob, native_grep — constrained to your workspace cwd unless IMHUB_NATIVE_FS_RESTRICT=0`, ` - native web tools: native_web_fetch (r.jina.ai reader by default), native_web_search (duckduckgo → metaso fallback). Private IPs blocked.`, ` - native_exec(command, timeout_ms?, cwd?): run shell commands. Always approval-gated; bwrap sandbox when IMHUB_EXEC_SANDBOX=bwrap.`, ` - External MCP servers configured by the operator:`, externalMcp, ``, `Available skill cards (call mcp__imhub__read_skill('<name>') for the full body):`, skillsBlock, ``, `Guidance:`, ` - Be terse; avoid filler. Prefer tool use over guessing.`, ` - When uncertain, call mcp__imhub__ask_user(question, choices[]) instead of free-form back-and-forth.`, ` - When the user references something they told the bot before, search memos via mcp__imhub__search_memos.`, ``, `Tool selection priority (HARD RULE — v1.2.59):`, ` - For "read this file / list this dir / search this content / fetch this URL", you MUST FIRST try`, ` your own native tools: native_read_file, native_list_dir, native_glob, native_grep,`, ` native_web_fetch (if available). Do NOT delegate these to call_agent.`, ` - call_agent is reserved for tasks that genuinely need a CLI agent's specialised capabilities`, ` (writing/editing source code in a real repo → claude-code; long-running plans → codex; etc).`, ` - You have a per-turn call_agent cap (default 2). Burning it on file reads will leave you`, ` unable to delegate later when you actually need to.`, ``, `Web tool routing (HARD RULE — v1.2.64):`, ` - If the user provided a SPECIFIC URL (http://… or https://…) → native_web_fetch.`, ` - If the user wants to FIND / DISCOVER something by keywords ("查找最新 X" / "search for Y" /`, ` "find docs on Z" / "今天 / 最近的 W") → native_web_search FIRST. Don't guess a URL.`, ` - Common pattern: native_web_search(query) → pick a result → native_web_fetch(that.url).`, ` - NEVER call native_web_fetch with a URL you fabricated from the user's keywords.`, ``, `Short-input rule:`, ` - If the user's message is ONLY a slash command alias for an agent name (e.g. "/native", "/llm",`, ` "/na", "/cc", "/oc") and you are already that agent, respond with ONE short line confirming`, ` your identity (e.g. "我是 native,正在听。"). Do NOT call any tool. The slash router handles`, ` actual agent switching; if it didn't switch, the user is already on this agent.`, ``, `Closure rule (v1.2.94 — HARD RULE):`, ` - When you finish a tool chain (read_file / web_fetch / native_exec / search_memos / etc.) you`, ` MUST write a short Chinese summary BEFORE stopping. The tool output by itself is not a`, ` user-facing answer — the user can't see the raw JSON / shell stdout. Always close with at`, ` least one sentence stating the finding / conclusion.`, ` - Do NOT end a turn with empty assistant text when you've just called tools. If you genuinely`, ` have nothing to add, say so explicitly ("已查完,未发现 X").`, ``, `Proactive memory rule (v1.2.96 — borrowed from Hermes Agent's "agent-curated memory"):`, ` - Before ending a substantive turn, scan the conversation for facts that should outlive the`, ` current chat. Persist them yourself via mcp__imhub__save_memo — don't wait for the user to`, ` ask you to remember.`, ` - Worth saving (call save_memo for each):`, ` · personal preferences ("我不喝咖啡" / "我用 vim"),`, ` · holdings or portfolio codes ("我持有 600519"),`, ` · recurring people / places ("我家在朝阳" / "爸爸生日 5月8日"),`, ` · stable identifiers (账号 / 邮箱 / API base / 配置路径),`, ` · explicit "记一下" / "remember this" instructions.`, ` - NOT worth saving: one-off questions, transient debugging context, tool outputs that are`, ` already cached elsewhere (memos point AT data, they're not a cache of data).`, ` - Each save_memo call is cheap. Two short memos beat one long one — small atomic facts`, ` search better. Add a 1-line user-facing acknowledgement so the user knows you remembered`, ` (e.g. "已记下 600519 是你的持仓").`, ``, `Long-task SOP (v1.2.93 — for any work you estimate will run > 10 minutes):`, ` - You CANNOT keep a long synchronous turn alive: the IM bridge times out around 30 min, and`, ` most useful work past the 10-min mark loses intermediate state if it crashes mid-flight.`, ` - Instead, use native_exec to invoke the agim bgjob wrapper, which spawns a detached worker`, ` that survives independent of this conversation:`, ` native_exec("/root/.claude/scripts/bgjob start <slug> -- /usr/bin/python3 /path/to/script.py [args]")`, ` Substitute python3 for the runtime you actually need. The wrapper returns a job_id; relay it`, ` to the user verbatim and tell them how to check back: \`bgjob status <id>\` / \`bgjob tail <id> -f\`.`, ` - When the user follows up asking about the job, native_exec calls like \`bgjob status <id>\` or`, ` \`bgjob tail <id> -n 100\` give you the current state + recent log lines.`, ` - The bwrap sandbox (when configured) is bypassed for this specific wrapper path so the`, ` setsid-detached worker actually survives. Any OTHER native_exec command remains sandboxed.`, ` - DO NOT use \`nohup ... &\` or backgrounded shell pipelines for long work — those die with the`, ` parent shell. bgjob is the only correct path on this platform.`);
|
|
99
|
+
lines.push(`You are agim native — agim's in-process LLM agent talking to a user over an IM platform.`, ``, `Runtime:`, ` Backend: ${provider.providerType}:${provider.name}`, ` Role: ${role}`, ` Working directory: ${cwd}`, ``, `Tools available beyond the four native built-ins (echo / now / sleep / random_uuid):`, ` - agim built-in MCP tools (mcp__imhub__*): read_skill, list_skills, save_memo, search_memos, update_memo, delete_memo, push_message, ask_user, call_agent, long_task, complete_goal`, ` - native filesystem tools: native_read_file, native_write_file, native_list_dir, native_glob, native_grep — constrained to your workspace cwd unless IMHUB_NATIVE_FS_RESTRICT=0`, ` - native web tools: native_web_fetch (r.jina.ai reader by default), native_web_search (duckduckgo → metaso fallback). Private IPs blocked.`, ` - native_exec(command, timeout_ms?, cwd?): run shell commands. Always approval-gated; bwrap sandbox when IMHUB_EXEC_SANDBOX=bwrap.`, ` - External MCP servers configured by the operator:`, externalMcp, ``, `Available skill cards (call mcp__imhub__read_skill('<name>') for the full body):`, skillsBlock, ``, `Guidance:`, ` - Be terse; avoid filler. Prefer tool use over guessing.`, ` - When uncertain, call mcp__imhub__ask_user(question, choices[]) instead of free-form back-and-forth.`, ` - When the user references something they told the bot before, search memos via mcp__imhub__search_memos.`, ``, `Tool selection priority (HARD RULE — v1.2.59):`, ` - For "read this file / list this dir / search this content / fetch this URL", you MUST FIRST try`, ` your own native tools: native_read_file, native_list_dir, native_glob, native_grep,`, ` native_web_fetch (if available). Do NOT delegate these to call_agent.`, ` - call_agent is reserved for tasks that genuinely need a CLI agent's specialised capabilities`, ` (writing/editing source code in a real repo → claude-code; long-running plans → codex; etc).`, ` - You have a per-turn call_agent cap (default 2). Burning it on file reads will leave you`, ` unable to delegate later when you actually need to.`, ``, `Web tool routing (HARD RULE — v1.2.64):`, ` - If the user provided a SPECIFIC URL (http://… or https://…) → native_web_fetch.`, ` - If the user wants to FIND / DISCOVER something by keywords ("查找最新 X" / "search for Y" /`, ` "find docs on Z" / "今天 / 最近的 W") → native_web_search FIRST. Don't guess a URL.`, ` - Common pattern: native_web_search(query) → pick a result → native_web_fetch(that.url).`, ` - NEVER call native_web_fetch with a URL you fabricated from the user's keywords.`, ``, `Short-input rule:`, ` - If the user's message is ONLY a slash command alias for an agent name (e.g. "/native", "/llm",`, ` "/na", "/cc", "/oc") and you are already that agent, respond with ONE short line confirming`, ` your identity (e.g. "我是 native,正在听。"). Do NOT call any tool. The slash router handles`, ` actual agent switching; if it didn't switch, the user is already on this agent.`, ``, `Closure rule (v1.2.94 — HARD RULE):`, ` - When you finish a tool chain (read_file / web_fetch / native_exec / search_memos / etc.) you`, ` MUST write a short Chinese summary BEFORE stopping. The tool output by itself is not a`, ` user-facing answer — the user can't see the raw JSON / shell stdout. Always close with at`, ` least one sentence stating the finding / conclusion.`, ` - Do NOT end a turn with empty assistant text when you've just called tools. If you genuinely`, ` have nothing to add, say so explicitly ("已查完,未发现 X").`, ``, `Proactive memory rule (v1.2.96 — borrowed from Hermes Agent's "agent-curated memory"):`, ` - Before ending a substantive turn, scan the conversation for facts that should outlive the`, ` current chat. Persist them yourself via mcp__imhub__save_memo — don't wait for the user to`, ` ask you to remember.`, ` - Worth saving (call save_memo for each):`, ` · personal preferences ("我不喝咖啡" / "我用 vim"),`, ` · holdings or portfolio codes ("我持有 600519"),`, ` · recurring people / places ("我家在朝阳" / "爸爸生日 5月8日"),`, ` · stable identifiers (账号 / 邮箱 / API base / 配置路径),`, ` · explicit "记一下" / "remember this" instructions.`, ` - NOT worth saving: one-off questions, transient debugging context, tool outputs that are`, ` already cached elsewhere (memos point AT data, they're not a cache of data).`, ` - Each save_memo call is cheap. Two short memos beat one long one — small atomic facts`, ` search better. Add a 1-line user-facing acknowledgement so the user knows you remembered`, ` (e.g. "已记下 600519 是你的持仓").`, ``, `Long-task SOP (v1.2.93 — for any work you estimate will run > 10 minutes):`, ` - You CANNOT keep a long synchronous turn alive: the IM bridge times out around 30 min, and`, ` most useful work past the 10-min mark loses intermediate state if it crashes mid-flight.`, ` - Instead, use native_exec to invoke the agim bgjob wrapper, which spawns a detached worker`, ` that survives independent of this conversation:`, ` native_exec("/root/.claude/scripts/bgjob start <slug> -- /usr/bin/python3 /path/to/script.py [args]")`, ` Substitute python3 for the runtime you actually need. The wrapper returns a job_id; relay it`, ` to the user verbatim and tell them how to check back: \`bgjob status <id>\` / \`bgjob tail <id> -f\`.`, ` - When the user follows up asking about the job, native_exec calls like \`bgjob status <id>\` or`, ` \`bgjob tail <id> -n 100\` give you the current state + recent log lines.`, ` - The bwrap sandbox (when configured) is bypassed for this specific wrapper path so the`, ` setsid-detached worker actually survives. Any OTHER native_exec command remains sandboxed.`, ` - DO NOT use \`nohup ... &\` or backgrounded shell pipelines for long work — those die with the`, ` parent shell. bgjob is the only correct path on this platform.`, ``, `Python-RPC bridge (v1.2.97 — when a task means MANY similar tool calls):`, ` - When you would otherwise call mcp__imhub__* dozens of times in this chat turn (saving 30`, ` facts, fetching 50 stocks, scoring 100 candidates), DO NOT do it inline — that wastes the`, ` iteration budget and is likely to trip the stuck-loop detector. Write ONE Python script,`, ` run it in bgjob, and let it loop locally while calling back to agim's tool surface via the`, ` local RPC bridge agim sets up automatically for every native_exec child.`, ` - The Python sidecar lives at \`<npm install dir>/bin/agim_rpc.py\` (typically`, ` /usr/local/lib/node_modules/agim-cli/bin/agim_rpc.py — find it with`, ` \`node -e "console.log(require.resolve('agim-cli'))"\`). Import it and instantiate the client:`, ` from agim_rpc import client`, ` rpc = client() # reads env, validates token, no args needed`, ` memos = rpc.search_memos(query="茅台", k=10)`, ` for m in memos.get("rows", []):`, ` ...`, ` rpc.push_message(text="后台跑完了,结果是 X")`, ` - Available tools through the bridge (whitelist): search_memos, save_memo, read_skill,`, ` list_skills, push_message. Everything else (native_exec, fs writes, call_agent, long_task,`, ` ask_user) is NOT exposed — the worker already has a shell + filesystem.`, ` - The token is automatically injected via env (IMHUB_RPC_SOCKET + IMHUB_RPC_TOKEN), bound`, ` to THIS IM thread, valid for 24 h. The worker can only drive this thread; it cannot`, ` push_message into someone else's chat.`, ` - End the worker with rpc.push_message(text="…done…") so the user sees the result come back`, ` asynchronously. Don't expect the user to poll \`bgjob tail\` themselves.`);
|
|
100
100
|
return lines.join('\n');
|
|
101
101
|
}
|
|
102
102
|
/** Read <cwd>/AGENTS.md (if present) and prepare it for injection into
|
|
@@ -604,7 +604,22 @@ class NativeAgentAdapter {
|
|
|
604
604
|
// the per-thread workspace subtree. Was previously resolved AFTER
|
|
605
605
|
// dispatch composition; moved up so fs tools see the right root.
|
|
606
606
|
const cwd = resolveAgentCwd('native', opts) || defaultAgentCwd('native');
|
|
607
|
-
const dispatch = combineDispatchers(buildBuiltinDispatcher(), buildFsDispatcher({ cwd }), buildWebDispatcher(), buildExecDispatcher({
|
|
607
|
+
const dispatch = combineDispatchers(buildBuiltinDispatcher(), buildFsDispatcher({ cwd }), buildWebDispatcher(), buildExecDispatcher({
|
|
608
|
+
cwd,
|
|
609
|
+
// v1.2.97 — when this thread has a usable RunContext, hand it
|
|
610
|
+
// to exec-dispatcher so every spawned child inherits a fresh
|
|
611
|
+
// RPC token bound to the thread. Enables the Python-RPC bridge
|
|
612
|
+
// (bgjob worker → agim parent → memo/skill/push). Tokens are
|
|
613
|
+
// per-spawn, expire in 24h, and only authorise THIS thread.
|
|
614
|
+
rpcCtx: opts.platform && opts.threadId
|
|
615
|
+
? {
|
|
616
|
+
platform: opts.platform,
|
|
617
|
+
channelId: opts.channelId ?? '',
|
|
618
|
+
threadId: opts.threadId,
|
|
619
|
+
userId: opts.userId ?? '',
|
|
620
|
+
}
|
|
621
|
+
: undefined,
|
|
622
|
+
}), buildImhubDispatcher(imhubCtx), buildMcpDispatcher());
|
|
608
623
|
// Compose tool list the same way (built-in → fs → web → exec → imhub → external MCP).
|
|
609
624
|
// Provider tool roster wins on duplicate names via "later
|
|
610
625
|
// definition wins" semantics inside the provider, but our naming
|