remote-access-mcp 2.3.2 → 2.4.1
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/README.fa.md +21 -0
- package/README.md +34 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +255 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/core/config.d.ts +10 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +5 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/fleet.d.ts +71 -0
- package/dist/core/fleet.d.ts.map +1 -0
- package/dist/core/fleet.js +148 -0
- package/dist/core/fleet.js.map +1 -0
- package/dist/core/integrations.d.ts.map +1 -1
- package/dist/core/integrations.js +50 -6
- package/dist/core/integrations.js.map +1 -1
- package/dist/core/policy.d.ts.map +1 -1
- package/dist/core/policy.js +1 -0
- package/dist/core/policy.js.map +1 -1
- package/dist/core/webhooks.d.ts +18 -0
- package/dist/core/webhooks.d.ts.map +1 -0
- package/dist/core/webhooks.js +81 -0
- package/dist/core/webhooks.js.map +1 -0
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +7 -0
- package/dist/server/app.js.map +1 -1
- package/dist/tools/filesystem.d.ts.map +1 -1
- package/dist/tools/filesystem.js +77 -12
- package/dist/tools/filesystem.js.map +1 -1
- package/dist/tools/fleet.d.ts +4 -0
- package/dist/tools/fleet.d.ts.map +1 -0
- package/dist/tools/fleet.js +39 -0
- package/dist/tools/fleet.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/logs.d.ts.map +1 -1
- package/dist/tools/logs.js +33 -3
- package/dist/tools/logs.js.map +1 -1
- package/dist/tools/packages.d.ts.map +1 -1
- package/dist/tools/packages.js +14 -1
- package/dist/tools/packages.js.map +1 -1
- package/dist/tools/services.d.ts.map +1 -1
- package/dist/tools/services.js +27 -4
- package/dist/tools/services.js.map +1 -1
- package/dist/tools/shell.d.ts +12 -0
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +49 -6
- package/dist/tools/shell.js.map +1 -1
- package/package.json +1 -1
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fleet: run tools on remote machines over SSH.
|
|
3
|
+
*
|
|
4
|
+
* Design decisions, deliberately narrow:
|
|
5
|
+
*
|
|
6
|
+
* - Outbound SSH only. The gateway machine holds one private key; remote
|
|
7
|
+
* machines need nothing installed except an SSH server and a POSIX shell.
|
|
8
|
+
* No agent daemons, no listening ports, no new attack surface inbound.
|
|
9
|
+
*
|
|
10
|
+
* - Per-host allowlists of tools. `ramcp fleet add --tools shell,fs` is the
|
|
11
|
+
* whole security model: a host that was never granted a tool group
|
|
12
|
+
* refuses it with a clear error. Local-only tools (schedule, policy
|
|
13
|
+
* management, ops) ignore `host` entirely.
|
|
14
|
+
*
|
|
15
|
+
* - File transfer for fs tools is piped over stdin via base64, so writes
|
|
16
|
+
* don't touch the remote disk with temp files (which would race, leak
|
|
17
|
+
* into other users' listings, or fail on full filesystems).
|
|
18
|
+
*
|
|
19
|
+
* - SSH_BIN env override exists for tests (fake ssh) and for Windows hosts
|
|
20
|
+
* that want a specific OpenSSH path.
|
|
21
|
+
*/
|
|
22
|
+
export interface FleetHost {
|
|
23
|
+
name: string;
|
|
24
|
+
host: string;
|
|
25
|
+
port?: number;
|
|
26
|
+
tools: string[];
|
|
27
|
+
note?: string;
|
|
28
|
+
added: string;
|
|
29
|
+
}
|
|
30
|
+
/** Tool group → fleet capability check. Local-only groups have no remote path. */
|
|
31
|
+
export declare const FLEET_CAPABILITIES: readonly ["shell", "fs", "services", "packages", "logs"];
|
|
32
|
+
export declare function isFleetCapability(g: string): boolean;
|
|
33
|
+
export declare function sshBin(): string;
|
|
34
|
+
export interface SshOpts {
|
|
35
|
+
timeoutMs?: number;
|
|
36
|
+
stdin?: string;
|
|
37
|
+
}
|
|
38
|
+
/** Run one command over SSH. Throws on non-zero exit with combined output. */
|
|
39
|
+
export declare function sshRun(host: string, port: number | undefined, command: string, opts?: SshOpts): Promise<{
|
|
40
|
+
stdout: string;
|
|
41
|
+
stderr: string;
|
|
42
|
+
}>;
|
|
43
|
+
/** Exit status of a probe command; 0 = reachable. */
|
|
44
|
+
export declare function fleetProbe(host: FleetHost): Promise<{
|
|
45
|
+
ok: boolean;
|
|
46
|
+
detail: string;
|
|
47
|
+
}>;
|
|
48
|
+
/** shell group */
|
|
49
|
+
export declare function buildRunCommand(command: string, cwd?: string, timeoutMs?: number): string;
|
|
50
|
+
/** fs group */
|
|
51
|
+
export declare function buildReadCommand(path: string): string;
|
|
52
|
+
export declare function buildWriteCommand(path: string, content: string, mkdir: boolean): string;
|
|
53
|
+
export declare function buildDeleteCommand(path: string): string;
|
|
54
|
+
export declare function buildListCommand(path: string): string;
|
|
55
|
+
export declare function buildFileInfoCommand(path: string): string;
|
|
56
|
+
export declare function buildTailCommand(path: string, lines: number): string;
|
|
57
|
+
export declare function buildSearchCommand(path: string, pattern: string, maxResults: number): string;
|
|
58
|
+
/** services group */
|
|
59
|
+
export declare function buildServiceStatusCommand(unit: string): string;
|
|
60
|
+
export declare function buildServiceActionCommand(unit: string, action: string): string;
|
|
61
|
+
/** packages group */
|
|
62
|
+
export declare function buildPackageListCommand(filter?: string): string;
|
|
63
|
+
/** logs group */
|
|
64
|
+
export declare function buildJournalCommand(unit: string, lines: number): string;
|
|
65
|
+
export declare class FleetError extends Error {
|
|
66
|
+
constructor(msg: string);
|
|
67
|
+
}
|
|
68
|
+
export declare function findHost(hosts: FleetHost[], name: string): FleetHost;
|
|
69
|
+
/** Throws unless the host was granted the tool group at `ramcp fleet add` time. */
|
|
70
|
+
export declare function assertCapability(hosts: FleetHost[], name: string, group: string): FleetHost;
|
|
71
|
+
//# sourceMappingURL=fleet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/core/fleet.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,0DAA2D,CAAC;AAE3F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,OAAY,GACjB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA0C7C;AAED,qDAAqD;AACrD,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAO1F;AAYD,kBAAkB;AAClB,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,SAAU,GAAG,MAAM,CAM1F;AAED,eAAe;AACf,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAIvF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAI5F;AAED,qBAAqB;AACrB,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,qBAAqB;AACrB,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAI/D;AAED,iBAAiB;AACjB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvE;AAMD,qBAAa,UAAW,SAAQ,KAAK;gBACvB,GAAG,EAAE,MAAM;CACxB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAIpE;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAM3F"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { execFile, spawn } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
const exec = promisify(execFile);
|
|
4
|
+
/** Tool group → fleet capability check. Local-only groups have no remote path. */
|
|
5
|
+
export const FLEET_CAPABILITIES = ['shell', 'fs', 'services', 'packages', 'logs'];
|
|
6
|
+
export function isFleetCapability(g) {
|
|
7
|
+
return FLEET_CAPABILITIES.includes(g);
|
|
8
|
+
}
|
|
9
|
+
export function sshBin() {
|
|
10
|
+
return process.env.SSH_BIN || 'ssh';
|
|
11
|
+
}
|
|
12
|
+
/** Run one command over SSH. Throws on non-zero exit with combined output. */
|
|
13
|
+
export async function sshRun(host, port, command, opts = {}) {
|
|
14
|
+
const args = [
|
|
15
|
+
// -T: no pty (we want clean pipes), BatchMode: never prompt — a hung
|
|
16
|
+
// password prompt inside an AI tool call is a deadlock.
|
|
17
|
+
'-o', 'BatchMode=yes',
|
|
18
|
+
'-o', 'StrictHostKeyChecking=accept-new',
|
|
19
|
+
'-o', 'ConnectTimeout=10',
|
|
20
|
+
'-o', 'ServerAliveInterval=15',
|
|
21
|
+
];
|
|
22
|
+
if (port)
|
|
23
|
+
args.push('-p', String(port));
|
|
24
|
+
args.push(host, '--', command);
|
|
25
|
+
// NOTE: promisify(execFile) does not forward the `input` option (a known
|
|
26
|
+
// footgun — the child's stdin never closes and the call hangs to timeout).
|
|
27
|
+
// stdin piping is therefore done by hand: write, then end.
|
|
28
|
+
if (opts.stdin !== undefined) {
|
|
29
|
+
return await new Promise((resolve, reject) => {
|
|
30
|
+
const child = spawn(sshBin(), args, { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
31
|
+
let stdout = '';
|
|
32
|
+
let stderr = '';
|
|
33
|
+
const timer = setTimeout(() => {
|
|
34
|
+
child.kill();
|
|
35
|
+
reject(new Error(`ssh timed out after ${Math.round((opts.timeoutMs ?? 120_000) / 1000)}s`));
|
|
36
|
+
}, opts.timeoutMs ?? 120_000);
|
|
37
|
+
child.stdout.on('data', c => { stdout += c; });
|
|
38
|
+
child.stderr.on('data', c => { stderr += c; });
|
|
39
|
+
child.on('error', e => { clearTimeout(timer); reject(e); });
|
|
40
|
+
child.on('close', code => {
|
|
41
|
+
clearTimeout(timer);
|
|
42
|
+
if (code === 0)
|
|
43
|
+
resolve({ stdout, stderr });
|
|
44
|
+
else
|
|
45
|
+
reject(Object.assign(new Error(`ssh exited with ${code}`), { stdout, stderr }));
|
|
46
|
+
});
|
|
47
|
+
child.stdin.write(opts.stdin);
|
|
48
|
+
child.stdin.end();
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const { stdout, stderr } = await exec(sshBin(), args, {
|
|
52
|
+
timeout: opts.timeoutMs ?? 120_000,
|
|
53
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
54
|
+
});
|
|
55
|
+
return { stdout, stderr };
|
|
56
|
+
}
|
|
57
|
+
/** Exit status of a probe command; 0 = reachable. */
|
|
58
|
+
export async function fleetProbe(host) {
|
|
59
|
+
try {
|
|
60
|
+
const { stdout } = await sshRun(host.host, host.port, 'echo ramcp-ok', { timeoutMs: 15_000 });
|
|
61
|
+
return { ok: stdout.includes('ramcp-ok'), detail: stdout.trim() };
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
return { ok: false, detail: (e.stderr || e.stdout || e.message || '').split('\n')[0].slice(0, 120) };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
// Command builders — single source of truth for what runs remotely.
|
|
69
|
+
// All of these are invoked via `ssh … -- command`, so each one gets ONE
|
|
70
|
+
// shell string. Keep them quoting-tight: paths arrive validated from the
|
|
71
|
+
// tool schema (zod), but we still quote everything with double quotes.
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
const q = (s) => `"${s.replace(/(["\\$`])/g, '\\$1')}"`;
|
|
74
|
+
const b64 = (s) => Buffer.from(s, 'utf8').toString('base64');
|
|
75
|
+
/** shell group */
|
|
76
|
+
export function buildRunCommand(command, cwd, timeoutMs = 120_000) {
|
|
77
|
+
const secs = Math.min(Math.round(timeoutMs / 1000), 600);
|
|
78
|
+
const inner = cwd
|
|
79
|
+
? `cd ${q(cwd)} 2>/dev/null && ${command}`
|
|
80
|
+
: command;
|
|
81
|
+
return `timeout ${secs} sh -c ${q(inner)} 2>&1`;
|
|
82
|
+
}
|
|
83
|
+
/** fs group */
|
|
84
|
+
export function buildReadCommand(path) {
|
|
85
|
+
return `[ -f ${q(path)} ] && base64 ${q(path)}`;
|
|
86
|
+
}
|
|
87
|
+
export function buildWriteCommand(path, content, mkdir) {
|
|
88
|
+
const pre = mkdir ? `mkdir -p ${q(path.replace(/\/[^/]*$/, ''))} && ` : '';
|
|
89
|
+
// stdin carries the base64; the command decodes it. No temp files.
|
|
90
|
+
return `${pre}base64 -d > ${q(path)}`;
|
|
91
|
+
}
|
|
92
|
+
export function buildDeleteCommand(path) {
|
|
93
|
+
return `rm -rf ${q(path)}`;
|
|
94
|
+
}
|
|
95
|
+
export function buildListCommand(path) {
|
|
96
|
+
// trailing / on dirs; -F suffixes symlinks with @
|
|
97
|
+
return `ls -1F ${q(path)} 2>&1 | head -2000`;
|
|
98
|
+
}
|
|
99
|
+
export function buildFileInfoCommand(path) {
|
|
100
|
+
return `stat ${q(path)} 2>&1`;
|
|
101
|
+
}
|
|
102
|
+
export function buildTailCommand(path, lines) {
|
|
103
|
+
return `tail -n ${Math.max(1, Math.min(lines, 1000))} ${q(path)} 2>&1`;
|
|
104
|
+
}
|
|
105
|
+
export function buildSearchCommand(path, pattern, maxResults) {
|
|
106
|
+
// pattern is ERE; validated as a string by zod, quoted single to avoid interpolation
|
|
107
|
+
const p = pattern.replace(/'/g, `'\\''`);
|
|
108
|
+
return `grep -rEn ${q(p)} ${q(path)} 2>/dev/null | head -${Math.min(maxResults, 200)} || echo "(no matches)"`;
|
|
109
|
+
}
|
|
110
|
+
/** services group */
|
|
111
|
+
export function buildServiceStatusCommand(unit) {
|
|
112
|
+
return `systemctl is-active ${q(unit)}; systemctl is-enabled ${q(unit)} 2>&1`;
|
|
113
|
+
}
|
|
114
|
+
export function buildServiceActionCommand(unit, action) {
|
|
115
|
+
return `systemctl ${q(action)} ${q(unit)} 2>&1`;
|
|
116
|
+
}
|
|
117
|
+
/** packages group */
|
|
118
|
+
export function buildPackageListCommand(filter) {
|
|
119
|
+
const base = `dpkg-query -W -f '\"\${Package}\\t\${Version}\\n\"' 2>/dev/null`;
|
|
120
|
+
if (!filter)
|
|
121
|
+
return base;
|
|
122
|
+
return `${base} | grep -i ${q(filter)} || true`;
|
|
123
|
+
}
|
|
124
|
+
/** logs group */
|
|
125
|
+
export function buildJournalCommand(unit, lines) {
|
|
126
|
+
return `journalctl -u ${q(unit)} -n ${Math.min(lines, 500)} --no-pager -o short-iso 2>&1 | tail -${Math.min(lines, 500)}`;
|
|
127
|
+
}
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
// Host lookup + capability gate
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
export class FleetError extends Error {
|
|
132
|
+
constructor(msg) { super(msg); this.name = 'FleetError'; }
|
|
133
|
+
}
|
|
134
|
+
export function findHost(hosts, name) {
|
|
135
|
+
const h = hosts.find(h => h.name === name);
|
|
136
|
+
if (!h)
|
|
137
|
+
throw new FleetError(`Unknown fleet host "${name}". Known: ${hosts.map(h => h.name).join(', ') || '(none)'}`);
|
|
138
|
+
return h;
|
|
139
|
+
}
|
|
140
|
+
/** Throws unless the host was granted the tool group at `ramcp fleet add` time. */
|
|
141
|
+
export function assertCapability(hosts, name, group) {
|
|
142
|
+
const h = findHost(hosts, name);
|
|
143
|
+
if (!h.tools.includes(group)) {
|
|
144
|
+
throw new FleetError(`Host "${name}" does not allow the ${group} tool group (allowed: ${h.tools.join(', ') || 'none'}). Grant it with: ramcp fleet edit ${name} --tools ${group}`);
|
|
145
|
+
}
|
|
146
|
+
return h;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=fleet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet.js","sourceRoot":"","sources":["../../src/core/fleet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/core/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/core/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE7D,UAAU,iBAAiB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,oBAAoB,CAAC;IAChC,KAAK,EAAE,IAAI,EAAE,CAAC;CACjB;AAED,iBAAS,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,UAAU,CAsEpD;AAMD,cAAM,kBAAkB;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0D;IAE5E,GAAG,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAS9C,KAAK;IAgEb,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAa1F,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;CAGrD;AAED,eAAO,MAAM,YAAY,oBAA2B,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
2
2
|
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import fs from 'node:fs';
|
|
4
5
|
import { z } from 'zod';
|
|
5
6
|
function zodFromJsonSchema(schema) {
|
|
6
7
|
if (!schema || typeof schema !== 'object')
|
|
@@ -98,12 +99,55 @@ class IntegrationManager {
|
|
|
98
99
|
args: [packageScript('@upstash/context7-mcp', 'dist/index.js')],
|
|
99
100
|
env,
|
|
100
101
|
}
|
|
101
|
-
: {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
env
|
|
106
|
-
|
|
102
|
+
: (() => {
|
|
103
|
+
// Codebase Memory gets a private runtime owned by Remote Access MCP.
|
|
104
|
+
// Never inherit the service user's normal HOME/cache/config: other
|
|
105
|
+
// agents on the host may have their own Codebase Memory instances.
|
|
106
|
+
const runtimeRoot = process.env.RAMCP_CODEBASE_RUNTIME || '/var/lib/remote-access-mcp/codebase-memory';
|
|
107
|
+
const runtimeHome = process.env.RAMCP_CODEBASE_HOME || path.join(runtimeRoot, 'home');
|
|
108
|
+
const runtimeCache = process.env.RAMCP_CODEBASE_CACHE || path.join(runtimeRoot, 'cache');
|
|
109
|
+
const runtimeData = process.env.RAMCP_CODEBASE_DATA || path.join(runtimeRoot, 'data');
|
|
110
|
+
const runtimeBinDir = path.join(runtimeRoot, 'bin');
|
|
111
|
+
const runtimeBin = path.join(runtimeBinDir, 'codebase-memory-mcp');
|
|
112
|
+
const sourceBin = packageScript('codebase-memory-mcp', 'bin/codebase-memory-mcp');
|
|
113
|
+
fs.mkdirSync(runtimeHome, { recursive: true, mode: 0o750 });
|
|
114
|
+
fs.mkdirSync(runtimeCache, { recursive: true, mode: 0o750 });
|
|
115
|
+
fs.mkdirSync(runtimeData, { recursive: true, mode: 0o750 });
|
|
116
|
+
fs.mkdirSync(runtimeBinDir, { recursive: true, mode: 0o750 });
|
|
117
|
+
fs.copyFileSync(sourceBin, runtimeBin);
|
|
118
|
+
fs.chmodSync(runtimeBin, 0o750);
|
|
119
|
+
try {
|
|
120
|
+
fs.chownSync(runtimeHome, 995, 987);
|
|
121
|
+
fs.chownSync(runtimeCache, 995, 987);
|
|
122
|
+
fs.chownSync(runtimeData, 995, 987);
|
|
123
|
+
fs.chownSync(runtimeBinDir, 995, 987);
|
|
124
|
+
fs.chownSync(runtimeBin, 995, 987);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
// Non-root local development can still use the isolated runtime.
|
|
128
|
+
}
|
|
129
|
+
const isolatedEnv = {
|
|
130
|
+
...env,
|
|
131
|
+
HOME: runtimeHome,
|
|
132
|
+
XDG_CACHE_HOME: runtimeCache,
|
|
133
|
+
XDG_DATA_HOME: runtimeData,
|
|
134
|
+
CODEBASE_MEMORY_HOME: runtimeHome,
|
|
135
|
+
CBM_CACHE_DIR: runtimeCache,
|
|
136
|
+
CBM_RUNTIME_DIR: path.join(runtimeRoot, 'runtime'),
|
|
137
|
+
CBM_ALLOWED_ROOT: process.env.RAMCP_CODEBASE_ROOT || process.cwd(),
|
|
138
|
+
};
|
|
139
|
+
fs.mkdirSync(isolatedEnv.CBM_RUNTIME_DIR, { recursive: true, mode: 0o750 });
|
|
140
|
+
try {
|
|
141
|
+
fs.chownSync(isolatedEnv.CBM_RUNTIME_DIR, 995, 987);
|
|
142
|
+
}
|
|
143
|
+
catch { /* non-root */ }
|
|
144
|
+
return {
|
|
145
|
+
command: '/usr/sbin/runuser',
|
|
146
|
+
args: ['-u', 'remote-access-mcp', '--', runtimeBin],
|
|
147
|
+
cwd: process.env.RAMCP_CODEBASE_ROOT || process.cwd(),
|
|
148
|
+
env: isolatedEnv,
|
|
149
|
+
};
|
|
150
|
+
})();
|
|
107
151
|
const transport = new StdioClientTransport(config);
|
|
108
152
|
const client = new Client({ name: 'remote-access-mcp', version: 'integration' });
|
|
109
153
|
await client.connect(transport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/core/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,SAAS,iBAAiB,CAAC,MAAW;IAClC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IAE1D,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IAEhC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACnE,OAAO,CAAC,CAAC,IAAI,CAAC,MAA+B,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAQ,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAY,CAAC,CAAC;IAEtE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC,QAA2D,CAAC,CAAC;QACrG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC,QAAwC,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,MAAoB,CAAC;IACzB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChF,MAAM,KAAK,GAAiC,EAAE,CAAC;YAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACvC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9D,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,GAAG,MAAM,CAAC,oBAAoB,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC/E,MAAM;QACV,CAAC;QACD,KAAK,OAAO;YACR,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,MAAM;QACV,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,IAAI,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;gBAAE,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5F,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;gBAAE,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5F,MAAM,GAAG,YAAY,CAAC;YACtB,MAAM;QACV,CAAC;QACD,KAAK,SAAS;YACV,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM;QACV,KAAK,QAAQ;YACT,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM;QACV,KAAK,SAAS;YACV,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM;QACV,KAAK,MAAM;YACP,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM;QACV;YACI,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM;IACd,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;QAAE,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzD,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;QAAE,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB,EAAE,aAAqB;IAC7D,OAAO,IAAI,GAAG,CAAC,sBAAsB,WAAW,IAAI,aAAa,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AACnG,CAAC;AAED,MAAM,kBAAkB;IACH,OAAO,GAAG,IAAI,GAAG,EAA+C,CAAC;IAElF,KAAK,CAAC,GAAG,CAAC,IAAqB;QAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,IAAqB;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAC1B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CACzG,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,KAAK,UAAU;YAC9B,CAAC,CAAC;gBACE,OAAO,EAAE,OAAO,CAAC,QAAQ;gBACzB,IAAI,EAAE,CAAC,aAAa,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;gBAC/D,GAAG;aACN;YACD,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/core/integrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/core/policy.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,+CAA+C;AAC/C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/core/policy.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,+CAA+C;AAC/C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAmBhD,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,cAAc,aAKzB,CAAC;AAEH,wEAAwE;AACxE,qBAAa,WAAY,SAAQ,KAAK;aACR,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAI3C;AAED,qEAAqE;AACrE,qBAAa,UAAW,SAAQ,KAAK;gBACvB,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAItC;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAoB7C;AAUD,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAUtE;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAEnE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE1D;AAED,iEAAiE;AACjE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKnD;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAClG,IAAI,CAcN"}
|
package/dist/core/policy.js
CHANGED
|
@@ -20,6 +20,7 @@ export const TOOL_SCOPES = {
|
|
|
20
20
|
formatting: ['format_python', 'lint_python'],
|
|
21
21
|
documents: ['create_document'],
|
|
22
22
|
ops: ['environment_inspect', 'nginx_inspect'],
|
|
23
|
+
fleet: ['fleet_list', 'fleet_status'],
|
|
23
24
|
};
|
|
24
25
|
/** Tools that mutate state — refused under read_only. */
|
|
25
26
|
export const MUTATING_TOOLS = new Set([
|
package/dist/core/policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/core/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AASxD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,WAAW,GAA6B;IACnD,UAAU,EAAE,CAAC,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC;IACjH,KAAK,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,CAAC;IACtD,MAAM,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,oBAAoB,CAAC;IAC3D,IAAI,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,WAAW,CAAC;IACjD,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,MAAM,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;IACzC,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,CAAC;IAC1E,IAAI,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC;IAC7C,QAAQ,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC9C,QAAQ,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;IAC/D,QAAQ,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,sBAAsB,CAAC;IAC/E,OAAO,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;IACpD,QAAQ,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC5C,QAAQ,EAAE,CAAC,kBAAkB,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,CAAC;IACvF,UAAU,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC;IAC5C,SAAS,EAAE,CAAC,iBAAiB,CAAC;IAC9B,GAAG,EAAE,CAAC,qBAAqB,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/core/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { RamcpConfig } from './config.js';
|
|
2
|
+
import type { AuditEntry } from './audit.js';
|
|
3
|
+
export interface WebhookEvent {
|
|
4
|
+
type: string;
|
|
5
|
+
tool?: string;
|
|
6
|
+
token_fingerprint?: string;
|
|
7
|
+
detail?: Record<string, unknown>;
|
|
8
|
+
ts: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function webhookStats(): {
|
|
11
|
+
sent: number;
|
|
12
|
+
failed: number;
|
|
13
|
+
};
|
|
14
|
+
/** Test hook: clear dedupe window and counters so suites stay independent. */
|
|
15
|
+
export declare function __resetWebhooksForTests(): void;
|
|
16
|
+
/** Notify all enabled webhooks subscribed to this event type. Non-blocking. */
|
|
17
|
+
export declare function notifyWebhooks(cfg: RamcpConfig, entry: Omit<AuditEntry, 'prev_hash' | 'hash'>): void;
|
|
18
|
+
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/core/webhooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAc7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,EAAE,EAAE,MAAM,CAAC;CACZ;AAMD,wBAAgB,YAAY,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAE/D;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C;AAcD,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,MAAM,CAAC,GAAG,IAAI,CA0CpG"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outbound webhook notifications for audit events.
|
|
3
|
+
*
|
|
4
|
+
* Fire-and-forget by design: a slow or dead webhook endpoint must never
|
|
5
|
+
* stall a tool call. POSTs are bounded (5s timeout), deduplicated per event
|
|
6
|
+
* type within a short window (a chat client firing 50 tool calls in one turn
|
|
7
|
+
* should not hammer the webhook 50 times), and failures are swallowed into
|
|
8
|
+
* a counter the CLI can read.
|
|
9
|
+
*/
|
|
10
|
+
const DEDUPE_WINDOW_MS = 10_000;
|
|
11
|
+
const recentFingerprints = new Map();
|
|
12
|
+
let sentCount = 0;
|
|
13
|
+
let failedCount = 0;
|
|
14
|
+
export function webhookStats() {
|
|
15
|
+
return { sent: sentCount, failed: failedCount };
|
|
16
|
+
}
|
|
17
|
+
/** Test hook: clear dedupe window and counters so suites stay independent. */
|
|
18
|
+
export function __resetWebhooksForTests() {
|
|
19
|
+
recentFingerprints.clear();
|
|
20
|
+
sentCount = 0;
|
|
21
|
+
failedCount = 0;
|
|
22
|
+
}
|
|
23
|
+
/** Classify an audit row into event types worth notifying about. */
|
|
24
|
+
function classify(entry) {
|
|
25
|
+
if (entry.is_error === 1)
|
|
26
|
+
return 'tool.error';
|
|
27
|
+
// auth failures never reach the audit log (401 happens before tools), so
|
|
28
|
+
// errors + successes are the two streamable events.
|
|
29
|
+
return 'tool.success';
|
|
30
|
+
}
|
|
31
|
+
function dedupeKey(ev) {
|
|
32
|
+
return `${ev.type}:${ev.tool || '-'}:${ev.token_fingerprint || '-'}`;
|
|
33
|
+
}
|
|
34
|
+
/** Notify all enabled webhooks subscribed to this event type. Non-blocking. */
|
|
35
|
+
export function notifyWebhooks(cfg, entry) {
|
|
36
|
+
const hooks = (cfg.webhooks || []).filter(w => w.enabled && w.url);
|
|
37
|
+
if (!hooks.length)
|
|
38
|
+
return;
|
|
39
|
+
const type = classify(entry);
|
|
40
|
+
if (!type)
|
|
41
|
+
return;
|
|
42
|
+
// Skip if no hook actually subscribes to this type ('*' = all).
|
|
43
|
+
const matching = hooks.filter(w => w.events.includes('*') || w.events.includes(type));
|
|
44
|
+
if (!matching.length)
|
|
45
|
+
return;
|
|
46
|
+
const ev = {
|
|
47
|
+
type,
|
|
48
|
+
tool: entry.tool,
|
|
49
|
+
token_fingerprint: entry.token_fingerprint,
|
|
50
|
+
detail: { is_error: entry.is_error, duration_ms: entry.duration_ms },
|
|
51
|
+
ts: entry.ts,
|
|
52
|
+
};
|
|
53
|
+
// Dedupe identical events inside the window: a retry loop of the same
|
|
54
|
+
// failing tool is one notification, not twenty.
|
|
55
|
+
const key = dedupeKey(ev);
|
|
56
|
+
const now = Date.now();
|
|
57
|
+
const last = recentFingerprints.get(key) || 0;
|
|
58
|
+
if (now - last < DEDUPE_WINDOW_MS)
|
|
59
|
+
return;
|
|
60
|
+
recentFingerprints.set(key, now);
|
|
61
|
+
if (recentFingerprints.size > 500) {
|
|
62
|
+
// prune map so long-running gateways don't grow it forever
|
|
63
|
+
for (const [k, t] of recentFingerprints) {
|
|
64
|
+
if (now - t > DEDUPE_WINDOW_MS)
|
|
65
|
+
recentFingerprints.delete(k);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
for (const hook of matching) {
|
|
69
|
+
void fetch(hook.url, {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
headers: { 'Content-Type': 'application/json', 'User-Agent': 'remote-access-mcp-webhook' },
|
|
72
|
+
body: JSON.stringify(ev),
|
|
73
|
+
signal: AbortSignal.timeout(5000),
|
|
74
|
+
}).then(r => { if (r.ok)
|
|
75
|
+
sentCount++;
|
|
76
|
+
else
|
|
77
|
+
failedCount++; })
|
|
78
|
+
.catch(() => { failedCount++; });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/core/webhooks.ts"],"names":[],"mappings":"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"}
|
package/dist/server/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAA2D,MAAM,SAAS,CAAC;AAQlF,OAAO,EAA4C,KAAK,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AACjH,OAAO,EAAE,aAAa,EAAoB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAc,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAA2D,MAAM,SAAS,CAAC;AAQlF,OAAO,EAA4C,KAAK,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AACjH,OAAO,EAAE,aAAa,EAAoB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAc,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKjD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAkBjD;AAED,wBAAgB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IAAC,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAuY9G;AAGD,wBAAgB,kBAAkB;SA1YqB,OAAO,CAAC,OAAO;SAAO,WAAW;WAAS,YAAY;EA4Y5G"}
|
package/dist/server/app.js
CHANGED
|
@@ -11,6 +11,7 @@ import { AuditLog, redactArgs } from '../core/audit.js';
|
|
|
11
11
|
import { RateLimiter } from '../core/rate-limit.js';
|
|
12
12
|
import { tokensMatch } from '../core/crypto.js';
|
|
13
13
|
import { registerAllTools } from '../tools/index.js';
|
|
14
|
+
import { notifyWebhooks } from '../core/webhooks.js';
|
|
14
15
|
import { SessionStore } from './sessions.js';
|
|
15
16
|
import { LegacySseStore } from './legacy-sse.js';
|
|
16
17
|
const PKG_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
@@ -194,6 +195,12 @@ export function buildApp(state) {
|
|
|
194
195
|
result = { content: [{ type: 'text', text: e?.message || 'tool error' }], isError: true };
|
|
195
196
|
}
|
|
196
197
|
ctx.audit(name, args || {}, !isError, isError, Date.now() - started);
|
|
198
|
+
// Webhook notifications ride along with audit — fire-and-forget,
|
|
199
|
+
// never part of the request path.
|
|
200
|
+
try {
|
|
201
|
+
notifyWebhooks(gw.cfg, { ts: Date.now(), token_fingerprint: AuditLog.fingerprint(token.token), tool: name, args_json: '', ok: !isError ? 1 : 0, is_error: isError ? 1 : 0, duration_ms: Date.now() - started });
|
|
202
|
+
}
|
|
203
|
+
catch { /* advisory */ }
|
|
197
204
|
return result;
|
|
198
205
|
};
|
|
199
206
|
return origRegister(name, config, wrapped);
|