@praxis.guard/auditor-cli 0.0.54 → 0.0.56
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/adapters/cursor.d.ts.map +1 -1
- package/dist/adapters/cursor.js +2 -1
- package/dist/adapters/cursor.js.map +1 -1
- package/dist/adapters/types.d.ts +2 -0
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/cli/cursor-config/hooks-config.d.ts.map +1 -1
- package/dist/cli/cursor-config/hooks-config.js +27 -8
- package/dist/cli/cursor-config/hooks-config.js.map +1 -1
- package/dist/cli/cursor-config/mcp-config.d.ts +1 -1
- package/dist/cli/cursor-config/mcp-config.d.ts.map +1 -1
- package/dist/cli/cursor-config/mcp-config.js +10 -5
- package/dist/cli/cursor-config/mcp-config.js.map +1 -1
- package/dist/cli/cursor-config/types.d.ts +1 -0
- package/dist/cli/cursor-config/types.d.ts.map +1 -1
- package/dist/cli/daemon.d.ts +2 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/daemon.js +35 -0
- package/dist/cli/daemon.js.map +1 -0
- package/dist/cli/dispatch-setup.d.ts.map +1 -1
- package/dist/cli/dispatch-setup.js +7 -0
- package/dist/cli/dispatch-setup.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +15 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +12 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/setup-all.d.ts +1 -0
- package/dist/cli/setup-all.d.ts.map +1 -1
- package/dist/cli/setup-all.js +11 -1
- package/dist/cli/setup-all.js.map +1 -1
- package/dist/cli/setup-doctor.d.ts.map +1 -1
- package/dist/cli/setup-doctor.js +3 -0
- package/dist/cli/setup-doctor.js.map +1 -1
- package/dist/cli/setup-gateway.d.ts +11 -0
- package/dist/cli/setup-gateway.d.ts.map +1 -0
- package/dist/cli/setup-gateway.js +220 -0
- package/dist/cli/setup-gateway.js.map +1 -0
- package/dist/cli/setup-hook.d.ts +1 -0
- package/dist/cli/setup-hook.d.ts.map +1 -1
- package/dist/cli/setup-hook.js +10 -1
- package/dist/cli/setup-hook.js.map +1 -1
- package/dist/cli/setup-mcp.d.ts +1 -0
- package/dist/cli/setup-mcp.d.ts.map +1 -1
- package/dist/cli/setup-mcp.js +10 -1
- package/dist/cli/setup-mcp.js.map +1 -1
- package/dist/daemon/client.d.ts +15 -0
- package/dist/daemon/client.d.ts.map +1 -0
- package/dist/daemon/client.js +80 -0
- package/dist/daemon/client.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts +4 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -0
- package/dist/daemon/lifecycle.js +52 -0
- package/dist/daemon/lifecycle.js.map +1 -0
- package/dist/daemon/paths.d.ts +6 -0
- package/dist/daemon/paths.d.ts.map +1 -0
- package/dist/daemon/paths.js +41 -0
- package/dist/daemon/paths.js.map +1 -0
- package/dist/daemon/protocol.d.ts +41 -0
- package/dist/daemon/protocol.d.ts.map +1 -0
- package/dist/daemon/protocol.js +2 -0
- package/dist/daemon/protocol.js.map +1 -0
- package/dist/daemon/service.d.ts +3 -0
- package/dist/daemon/service.d.ts.map +1 -0
- package/dist/daemon/service.js +83 -0
- package/dist/daemon/service.js.map +1 -0
- package/dist/mcp/evaluate-guard.d.ts.map +1 -1
- package/dist/mcp/evaluate-guard.js +34 -2
- package/dist/mcp/evaluate-guard.js.map +1 -1
- package/dist/mcp/gateway-config.d.ts +12 -0
- package/dist/mcp/gateway-config.d.ts.map +1 -1
- package/dist/mcp/gateway-config.js +1 -1
- package/dist/mcp/gateway-config.js.map +1 -1
- package/dist/mcp/gateway.d.ts +7 -0
- package/dist/mcp/gateway.d.ts.map +1 -1
- package/dist/mcp/gateway.js +48 -4
- package/dist/mcp/gateway.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +32 -6
- package/dist/mcp/server.js.map +1 -1
- package/native/darwin-amd64/praxis-guard-daemon +0 -0
- package/native/darwin-amd64/praxis-guard-hook +0 -0
- package/native/darwin-arm64/praxis-guard-daemon +0 -0
- package/native/darwin-arm64/praxis-guard-hook +0 -0
- package/native/linux-amd64/praxis-guard-daemon +0 -0
- package/native/linux-amd64/praxis-guard-hook +0 -0
- package/native/linux-arm64/praxis-guard-daemon +0 -0
- package/native/linux-arm64/praxis-guard-hook +0 -0
- package/package.json +5 -2
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare const GUARD_DAEMON_PROTOCOL_VERSION = 1;
|
|
2
|
+
export type DaemonRequest = {
|
|
3
|
+
protocol_version: number;
|
|
4
|
+
request_id: string;
|
|
5
|
+
method: string;
|
|
6
|
+
params?: unknown;
|
|
7
|
+
};
|
|
8
|
+
export type DaemonError = {
|
|
9
|
+
code: string;
|
|
10
|
+
message: string;
|
|
11
|
+
};
|
|
12
|
+
export type DaemonResponse<T> = {
|
|
13
|
+
protocol_version: number;
|
|
14
|
+
request_id: string;
|
|
15
|
+
result?: T;
|
|
16
|
+
error?: DaemonError;
|
|
17
|
+
};
|
|
18
|
+
export type DaemonEvaluation = {
|
|
19
|
+
argv: string[];
|
|
20
|
+
tier: "READ" | "MUTATE" | "DESTRUCTIVE";
|
|
21
|
+
skipped: boolean;
|
|
22
|
+
classification: {
|
|
23
|
+
tool: string | null;
|
|
24
|
+
command_path: string | null;
|
|
25
|
+
verb: string | null;
|
|
26
|
+
tier: "READ" | "MUTATE" | "DESTRUCTIVE";
|
|
27
|
+
matched: boolean;
|
|
28
|
+
};
|
|
29
|
+
flags: {
|
|
30
|
+
metacharacters: boolean;
|
|
31
|
+
dangerous_flags: boolean;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export type DaemonHealth = {
|
|
35
|
+
daemon_version: string;
|
|
36
|
+
protocol_version: number;
|
|
37
|
+
uptime_ms: number;
|
|
38
|
+
policy_ready: boolean;
|
|
39
|
+
policy_error: string | null;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/daemon/protocol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,MAAM,MAAM,aAAa,GAAG;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC;QACxC,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,cAAc,EAAE,OAAO,CAAC;QACxB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/daemon/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/daemon/service.ts"],"names":[],"mappings":"AAUA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAM5D;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAiB9D"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { promisify } from "node:util";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { chmod, mkdir, rm, writeFile } from "node:fs/promises";
|
|
6
|
+
import { guardDaemonBinaryPath } from "./paths.js";
|
|
7
|
+
const execFileAsync = promisify(execFile);
|
|
8
|
+
export async function installDaemonService() {
|
|
9
|
+
const binary = guardDaemonBinaryPath();
|
|
10
|
+
await chmod(binary, 0o755);
|
|
11
|
+
if (process.platform === "darwin")
|
|
12
|
+
return await installLaunchAgent(binary);
|
|
13
|
+
if (process.platform === "linux")
|
|
14
|
+
return await installSystemdUserService(binary);
|
|
15
|
+
throw new Error(`Daemon service install is not supported on ${process.platform}`);
|
|
16
|
+
}
|
|
17
|
+
export async function uninstallDaemonService() {
|
|
18
|
+
if (process.platform === "darwin") {
|
|
19
|
+
const target = launchAgentPath();
|
|
20
|
+
await execFileAsync("launchctl", ["unload", target]).catch(() => undefined);
|
|
21
|
+
await rm(target, { force: true });
|
|
22
|
+
return target;
|
|
23
|
+
}
|
|
24
|
+
if (process.platform === "linux") {
|
|
25
|
+
const target = systemdUnitPath();
|
|
26
|
+
await execFileAsync("systemctl", ["--user", "disable", "--now", "praxis-guard.service"]).catch(() => undefined);
|
|
27
|
+
await rm(target, { force: true });
|
|
28
|
+
await execFileAsync("systemctl", ["--user", "daemon-reload"]);
|
|
29
|
+
return target;
|
|
30
|
+
}
|
|
31
|
+
throw new Error(`Daemon service uninstall is not supported on ${process.platform}`);
|
|
32
|
+
}
|
|
33
|
+
function launchAgentPath() {
|
|
34
|
+
return path.join(os.homedir(), "Library", "LaunchAgents", "com.praxis.guard.plist");
|
|
35
|
+
}
|
|
36
|
+
async function installLaunchAgent(binary) {
|
|
37
|
+
const target = launchAgentPath();
|
|
38
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
39
|
+
const escaped = xmlEscape(binary);
|
|
40
|
+
const plist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
41
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
42
|
+
<plist version="1.0"><dict>
|
|
43
|
+
<key>Label</key><string>com.praxis.guard</string>
|
|
44
|
+
<key>ProgramArguments</key><array><string>${escaped}</string></array>
|
|
45
|
+
<key>RunAtLoad</key><true/>
|
|
46
|
+
<key>KeepAlive</key><true/>
|
|
47
|
+
<key>ProcessType</key><string>Background</string>
|
|
48
|
+
</dict></plist>
|
|
49
|
+
`;
|
|
50
|
+
await writeFile(target, plist, "utf8");
|
|
51
|
+
await execFileAsync("launchctl", ["unload", target]).catch(() => undefined);
|
|
52
|
+
await execFileAsync("launchctl", ["load", target]);
|
|
53
|
+
return target;
|
|
54
|
+
}
|
|
55
|
+
function systemdUnitPath() {
|
|
56
|
+
return path.join(os.homedir(), ".config", "systemd", "user", "praxis-guard.service");
|
|
57
|
+
}
|
|
58
|
+
async function installSystemdUserService(binary) {
|
|
59
|
+
const target = systemdUnitPath();
|
|
60
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
61
|
+
const unit = `[Unit]
|
|
62
|
+
Description=Praxis Guard daemon
|
|
63
|
+
|
|
64
|
+
[Service]
|
|
65
|
+
ExecStart=${systemdEscape(binary)}
|
|
66
|
+
Restart=on-failure
|
|
67
|
+
RestartSec=1
|
|
68
|
+
|
|
69
|
+
[Install]
|
|
70
|
+
WantedBy=default.target
|
|
71
|
+
`;
|
|
72
|
+
await writeFile(target, unit, "utf8");
|
|
73
|
+
await execFileAsync("systemctl", ["--user", "daemon-reload"]);
|
|
74
|
+
await execFileAsync("systemctl", ["--user", "enable", "--now", "praxis-guard.service"]);
|
|
75
|
+
return target;
|
|
76
|
+
}
|
|
77
|
+
function xmlEscape(value) {
|
|
78
|
+
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
79
|
+
}
|
|
80
|
+
function systemdEscape(value) {
|
|
81
|
+
return value.replaceAll("\\", "\\\\").replaceAll(" ", "\\x20");
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/daemon/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate-guard.d.ts","sourceRoot":"","sources":["../../src/mcp/evaluate-guard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAqC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluate-guard.d.ts","sourceRoot":"","sources":["../../src/mcp/evaluate-guard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAqC,MAAM,oBAAoB,CAAC;AAevF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IACnD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AA+CF,wBAAsB,aAAa,CACjC,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAmKnE"}
|
|
@@ -4,6 +4,8 @@ import { resolveGuardStorageRoot } from "../bridge/guard-storage-root.js";
|
|
|
4
4
|
import { evaluateMcpProposal, evaluateShellProposal } from "../shell/evaluate.js";
|
|
5
5
|
import { sendGuardEvent } from "../telemetry/guard-events.js";
|
|
6
6
|
import { getInstallId } from "../cli/install-id.js";
|
|
7
|
+
import { evaluatePolicyWithDaemon } from "../daemon/client.js";
|
|
8
|
+
import { daemonModeEnabled } from "../daemon/paths.js";
|
|
7
9
|
import { resolveGuardAuditStatus } from "./guard-audit-status.js";
|
|
8
10
|
import { applyGuardMode, tierToPolicyDecision } from "./guard-mode.js";
|
|
9
11
|
import { resetHeartbeatIdle } from "./guard-heartbeat.js";
|
|
@@ -63,10 +65,40 @@ export async function evaluateGuard(input, policyState) {
|
|
|
63
65
|
const mcpResult = input.proposal.kind === "mcp"
|
|
64
66
|
? evaluateMcpProposal(policyState.policy, input.proposal.argv)
|
|
65
67
|
: null;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
let skipped = shellResult?.skipped ?? mcpResult?.skipped ?? true;
|
|
69
|
+
let evaluation = shellResult?.evaluation ?? mcpResult.evaluation;
|
|
68
70
|
const analysis = shellResult?.analysis;
|
|
69
71
|
const argv = evaluation.argv;
|
|
72
|
+
if (daemonModeEnabled()) {
|
|
73
|
+
try {
|
|
74
|
+
const daemonEvaluation = await evaluatePolicyWithDaemon(argv);
|
|
75
|
+
skipped = daemonEvaluation.skipped;
|
|
76
|
+
evaluation = {
|
|
77
|
+
...evaluation,
|
|
78
|
+
tier: daemonEvaluation.tier,
|
|
79
|
+
classification: daemonEvaluation.classification,
|
|
80
|
+
flags: daemonEvaluation.flags,
|
|
81
|
+
reasons: daemonEvaluation.skipped
|
|
82
|
+
? [{ code: "skipped", message: "No policy entry matched in the native daemon." }]
|
|
83
|
+
: [
|
|
84
|
+
{
|
|
85
|
+
code: "policy_match",
|
|
86
|
+
message: "Matched policy entry in the native daemon.",
|
|
87
|
+
details: {
|
|
88
|
+
tool: daemonEvaluation.classification.tool,
|
|
89
|
+
command_path: daemonEvaluation.classification.command_path,
|
|
90
|
+
verb: daemonEvaluation.classification.verb,
|
|
91
|
+
tier: daemonEvaluation.tier,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (process.env.PRAXIS_GUARD_SPAWN_FALLBACK !== "1")
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
70
102
|
const tier = evaluation.tier;
|
|
71
103
|
const reasons = [...evaluation.reasons];
|
|
72
104
|
const policyReasons = [...evaluation.reasons];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate-guard.js","sourceRoot":"","sources":["../../src/mcp/evaluate-guard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"evaluate-guard.js","sourceRoot":"","sources":["../../src/mcp/evaluate-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,18 @@ export type GatewayConfigResult = {
|
|
|
15
15
|
/** Non-fatal problems. Surfaced to stderr; never thrown into the request loop. */
|
|
16
16
|
errors: string[];
|
|
17
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Validate a gateway config key (which doubles as the exposed-tool namespace
|
|
20
|
+
* prefix AND the policy identity). Returns a user-facing "skip" reason, or null
|
|
21
|
+
* when the key is usable. Rejections (never silent rewrites):
|
|
22
|
+
* - must match `^[a-zA-Z0-9_-]+$` (valid MCP tool-name chars).
|
|
23
|
+
* - must not contain `__` (the `${id}__${tool}` separator; would make the
|
|
24
|
+
* known-prefix parse ambiguous, e.g. ids "a" and "a__b").
|
|
25
|
+
* - must not be `"stdio"` (the hook-path fallback server id, before-mcp-argv.ts):
|
|
26
|
+
* a key of "stdio" could impersonate that fallback in the ticket store
|
|
27
|
+
* (defense-in-depth alongside the dedicated gateway storage root, decision D9).
|
|
28
|
+
*/
|
|
29
|
+
export declare function gatewayKeyError(key: string, cfgPath: string): string | null;
|
|
18
30
|
export declare function resolveGatewayConfigPath(): string;
|
|
19
31
|
/**
|
|
20
32
|
* Dedicated guard storage root for the gateway process (decision D9).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-config.d.ts","sourceRoot":"","sources":["../../src/mcp/gateway-config.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;OAKG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,kFAAkF;IAClF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"gateway-config.d.ts","sourceRoot":"","sources":["../../src/mcp/gateway-config.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;OAKG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,kFAAkF;IAClF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAUF;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW3E;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAIjD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAIlD;AAMD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmD3F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS3C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtE"}
|
|
@@ -33,7 +33,7 @@ const SERVER_ID_RE = /^[a-zA-Z0-9_-]+$/;
|
|
|
33
33
|
* a key of "stdio" could impersonate that fallback in the ticket store
|
|
34
34
|
* (defense-in-depth alongside the dedicated gateway storage root, decision D9).
|
|
35
35
|
*/
|
|
36
|
-
function gatewayKeyError(key, cfgPath) {
|
|
36
|
+
export function gatewayKeyError(key, cfgPath) {
|
|
37
37
|
if (!SERVER_ID_RE.test(key)) {
|
|
38
38
|
return `Skipping server "${key}": name must match [a-zA-Z0-9_-]. Rename it in ${cfgPath}.`;
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-config.js","sourceRoot":"","sources":["../../src/mcp/gateway-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACjD,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC;CACtD,CAAC,CAAC;AAqBH;;;;;GAKG;AACH,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAExC;;;;;;;;;;GAUG;AACH,
|
|
1
|
+
{"version":3,"file":"gateway-config.js","sourceRoot":"","sources":["../../src/mcp/gateway-config.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/gateway.d.ts
CHANGED
|
@@ -11,6 +11,13 @@ export interface GatewayConnection {
|
|
|
11
11
|
callTool(tool: string, args: Record<string, unknown>): Promise<CallToolResult>;
|
|
12
12
|
/** Re-establish the underlying transport after a failure. Returns false if it cannot. */
|
|
13
13
|
reconnect(): Promise<boolean>;
|
|
14
|
+
/**
|
|
15
|
+
* Register a callback fired AFTER this connection refreshes its tool slice in
|
|
16
|
+
* response to a downstream `tools/list_changed` (or a reconnect-driven refresh).
|
|
17
|
+
* `createGatewayServer` uses it to re-emit the gateway's own `list_changed`
|
|
18
|
+
* upstream. Optional so in-process test fakes need not implement it.
|
|
19
|
+
*/
|
|
20
|
+
onToolsChanged?(listener: () => void): void;
|
|
14
21
|
}
|
|
15
22
|
/**
|
|
16
23
|
* Build the low-level MCP `Server` that fronts the given downstream connections.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/mcp/gateway.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/mcp/gateway.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,IAAI,EACV,MAAM,oCAAoC,CAAC;AAuB5C;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/E,yFAAyF;IACzF,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAC7C;AAwHD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAyG5E;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC9E"}
|
package/dist/mcp/gateway.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
|
2
2
|
import { StdioClientTransport, getDefaultEnvironment, } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
3
3
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
4
4
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
5
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ToolListChangedNotificationSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
6
6
|
import { mkdirSync } from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { AUDITOR_CLI_VERSION } from "../runtime/version.js";
|
|
@@ -26,6 +26,25 @@ function withTimeout(p, ms, label) {
|
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Register the downstream `tools/list_changed` handler on `client` (the CURRENT
|
|
31
|
+
* one; call again after a reconnect with the fresh client). On notification:
|
|
32
|
+
* re-list (bounded), swap the connection's slice, then fire `getListener` so the
|
|
33
|
+
* gateway re-emits list_changed upstream. A failed refresh keeps the prior slice
|
|
34
|
+
* (no crash); the next call's reconnect path heals the connection.
|
|
35
|
+
*/
|
|
36
|
+
function attachListChangedHandler(client, conn, getListener) {
|
|
37
|
+
client.setNotificationHandler(ToolListChangedNotificationSchema, async () => {
|
|
38
|
+
try {
|
|
39
|
+
const re = await withTimeout(client.listTools(), CONNECT_TIMEOUT_MS, `listTools ${conn.id}`);
|
|
40
|
+
conn.tools = re.tools;
|
|
41
|
+
getListener()?.();
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
logErr(`tools/list_changed refresh for "${conn.id}" failed: ${truncErr(e)}`);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
29
48
|
/** Real stdio-backed connection to a downstream MCP server. */
|
|
30
49
|
async function connectStdioServer(server) {
|
|
31
50
|
const spawn = () => new StdioClientTransport({
|
|
@@ -34,11 +53,17 @@ async function connectStdioServer(server) {
|
|
|
34
53
|
env: server.env ? { ...getDefaultEnvironment(), ...server.env } : undefined,
|
|
35
54
|
});
|
|
36
55
|
let client = new Client({ name: `praxis-gateway-client-${server.id}`, version: AUDITOR_CLI_VERSION });
|
|
56
|
+
// Set when createGatewayServer wires this connection (re-emits list_changed upstream).
|
|
57
|
+
let toolsChangedListener = null;
|
|
58
|
+
const getListener = () => toolsChangedListener;
|
|
37
59
|
await withTimeout(client.connect(spawn()), CONNECT_TIMEOUT_MS, `connect ${server.id}`);
|
|
38
60
|
const listed = await withTimeout(client.listTools(), CONNECT_TIMEOUT_MS, `listTools ${server.id}`);
|
|
39
61
|
const conn = {
|
|
40
62
|
id: server.id,
|
|
41
63
|
tools: listed.tools,
|
|
64
|
+
onToolsChanged(listener) {
|
|
65
|
+
toolsChangedListener = listener;
|
|
66
|
+
},
|
|
42
67
|
async callTool(tool, args) {
|
|
43
68
|
return (await client.callTool({ name: tool, arguments: args }));
|
|
44
69
|
},
|
|
@@ -54,6 +79,10 @@ async function connectStdioServer(server) {
|
|
|
54
79
|
await withTimeout(client.connect(spawn()), CONNECT_TIMEOUT_MS, `reconnect ${server.id}`);
|
|
55
80
|
const re = await withTimeout(client.listTools(), CONNECT_TIMEOUT_MS, `listTools ${server.id}`);
|
|
56
81
|
conn.tools = re.tools;
|
|
82
|
+
// Fresh client needs its own handler; the tool set may have changed across
|
|
83
|
+
// the gap, so propagate the refreshed slice upstream.
|
|
84
|
+
attachListChangedHandler(client, conn, getListener);
|
|
85
|
+
toolsChangedListener?.();
|
|
57
86
|
return true;
|
|
58
87
|
}
|
|
59
88
|
catch (e) {
|
|
@@ -62,6 +91,7 @@ async function connectStdioServer(server) {
|
|
|
62
91
|
}
|
|
63
92
|
},
|
|
64
93
|
};
|
|
94
|
+
attachListChangedHandler(client, conn, getListener);
|
|
65
95
|
return conn;
|
|
66
96
|
}
|
|
67
97
|
function textResult(text, isError) {
|
|
@@ -90,7 +120,10 @@ function blockedResult(serverId, tool, d) {
|
|
|
90
120
|
export function createGatewayServer(connections) {
|
|
91
121
|
const byId = new Map(connections.map((c) => [c.id, c]));
|
|
92
122
|
const ids = connections.map((c) => c.id);
|
|
93
|
-
const server = new Server({ name: "praxis-guard-gateway", version: AUDITOR_CLI_VERSION },
|
|
123
|
+
const server = new Server({ name: "praxis-guard-gateway", version: AUDITOR_CLI_VERSION },
|
|
124
|
+
// listChanged: true tells the host (Desktop) to listen for tools/list_changed
|
|
125
|
+
// so downstream tools that appear after login (auth-gated) become visible.
|
|
126
|
+
{ capabilities: { tools: { listChanged: true } } });
|
|
94
127
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
95
128
|
const tools = [];
|
|
96
129
|
for (const conn of connections) {
|
|
@@ -100,6 +133,13 @@ export function createGatewayServer(connections) {
|
|
|
100
133
|
}
|
|
101
134
|
return { tools };
|
|
102
135
|
});
|
|
136
|
+
// When any downstream refreshes its tool slice, re-emit the gateway's own
|
|
137
|
+
// list_changed upstream so the host re-fetches the combined namespaced set.
|
|
138
|
+
for (const conn of connections) {
|
|
139
|
+
conn.onToolsChanged?.(() => {
|
|
140
|
+
server.sendToolListChanged().catch((e) => logErr(`sendToolListChanged failed: ${truncErr(e)}`));
|
|
141
|
+
});
|
|
142
|
+
}
|
|
103
143
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
104
144
|
// Fail closed: any unexpected throw in parsing/gating (e.g. a corrupt policy
|
|
105
145
|
// file making evaluateGatewayCall reject) blocks the call rather than letting
|
|
@@ -156,7 +196,10 @@ export function createGatewayServer(connections) {
|
|
|
156
196
|
}
|
|
157
197
|
catch (e) {
|
|
158
198
|
logErr(`gating error for "${request.params?.name}": ${truncErr(e)}`);
|
|
159
|
-
|
|
199
|
+
// Blast-radius escape hatch: the gateway fronts every Desktop connector, so a
|
|
200
|
+
// fail-closed bug blocks all tools. Name the recovery path in the result.
|
|
201
|
+
return textResult("Praxis gateway: guard evaluation failed; blocking this call (fail-closed). " +
|
|
202
|
+
"To restore direct tools: run `auditor setup gateway --revert --apply`, then relaunch Claude Desktop.", true);
|
|
160
203
|
}
|
|
161
204
|
});
|
|
162
205
|
return server;
|
|
@@ -194,7 +237,8 @@ export async function runMcpGateway(explicitConfigPath) {
|
|
|
194
237
|
}
|
|
195
238
|
});
|
|
196
239
|
if (connections.length === 0) {
|
|
197
|
-
logErr("no downstream servers connected; gateway will expose no tools."
|
|
240
|
+
logErr("no downstream servers connected; gateway will expose no tools. " +
|
|
241
|
+
"To restore direct connectors: run `auditor setup gateway --revert --apply`, then relaunch Claude Desktop.");
|
|
198
242
|
}
|
|
199
243
|
const server = createGatewayServer(connections);
|
|
200
244
|
await server.connect(new StdioServerTransport());
|
package/dist/mcp/gateway.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/mcp/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/mcp/gateway.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAoDA,8EAA8E;AAC9E,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6CvD"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -5,6 +5,37 @@ import { AUDITOR_CLI_VERSION } from "../runtime/version.js";
|
|
|
5
5
|
import { evaluateGuard } from "./evaluate-guard.js";
|
|
6
6
|
import { startGuardHeartbeatLoop } from "./guard-heartbeat.js";
|
|
7
7
|
import { GuardInputSchema, GUARD_TOOL_DESCRIPTION, GUARD_WAIT_TOOL_DESCRIPTION, } from "./guard-schemas.js";
|
|
8
|
+
async function runGuardTool(input, policyState) {
|
|
9
|
+
let response;
|
|
10
|
+
try {
|
|
11
|
+
({ response } = await evaluateGuard(input, policyState));
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
response = daemonFailureResponse(input, error);
|
|
15
|
+
}
|
|
16
|
+
return { content: [{ type: "text", text: JSON.stringify(response, null, 2) }] };
|
|
17
|
+
}
|
|
18
|
+
function daemonFailureResponse(input, error) {
|
|
19
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
20
|
+
return {
|
|
21
|
+
mode: input.mode,
|
|
22
|
+
decision: input.mode === "shadow" ? "allow" : "block",
|
|
23
|
+
skipped: false,
|
|
24
|
+
tier: null,
|
|
25
|
+
reasons: [{ code: "daemon_unavailable", message }],
|
|
26
|
+
shadow: { decision: "unknown", tier: null, reasons: [{ code: "daemon_unavailable", message }] },
|
|
27
|
+
approval: {
|
|
28
|
+
required: false,
|
|
29
|
+
request_id: null,
|
|
30
|
+
expires_at: null,
|
|
31
|
+
open_url: null,
|
|
32
|
+
instructions: "Restore praxis-guard-daemon health before retrying.",
|
|
33
|
+
redeemed: false,
|
|
34
|
+
approved_by: null,
|
|
35
|
+
},
|
|
36
|
+
execution: { attempted: false, result: null },
|
|
37
|
+
};
|
|
38
|
+
}
|
|
8
39
|
/** Start the Praxis `guard` MCP server on stdio (blocks until disconnect). */
|
|
9
40
|
export async function runMcpStdioServer() {
|
|
10
41
|
const policyState = {
|
|
@@ -16,12 +47,7 @@ export async function runMcpStdioServer() {
|
|
|
16
47
|
name: "praxis-guard",
|
|
17
48
|
version: AUDITOR_CLI_VERSION,
|
|
18
49
|
});
|
|
19
|
-
const runTool = async (input) =>
|
|
20
|
-
const { response } = await evaluateGuard(input, policyState);
|
|
21
|
-
return {
|
|
22
|
-
content: [{ type: "text", text: JSON.stringify(response, null, 2) }],
|
|
23
|
-
};
|
|
24
|
-
};
|
|
50
|
+
const runTool = async (input) => await runGuardTool(input, policyState);
|
|
25
51
|
server.registerTool("guard", {
|
|
26
52
|
description: GUARD_TOOL_DESCRIPTION,
|
|
27
53
|
inputSchema: GuardInputSchema,
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,GAE5B,MAAM,oBAAoB,CAAC;AAE5B,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxis.guard/auditor-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.56",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"files": [
|
|
13
13
|
"dist",
|
|
14
|
+
"native",
|
|
14
15
|
"README.md",
|
|
15
16
|
"LICENSE",
|
|
16
17
|
"package.json"
|
|
@@ -26,12 +27,14 @@
|
|
|
26
27
|
},
|
|
27
28
|
"scripts": {
|
|
28
29
|
"build": "tsc -p tsconfig.build.json",
|
|
30
|
+
"build:native": "bash scripts/build-native.sh",
|
|
31
|
+
"test:native": "cd ../guard-daemon && go test -race ./...",
|
|
29
32
|
"lint": "eslint .",
|
|
30
33
|
"typecheck": "tsc -p tsconfig.json",
|
|
31
34
|
"pretest": "pnpm run build",
|
|
32
35
|
"test": "node --import tsx/esm --test src/**/*.test.ts",
|
|
33
36
|
"mcp:dev": "tsx src/cli.ts mcp",
|
|
34
|
-
"prepack": "pnpm run build && node scripts/prepare-package.cjs",
|
|
37
|
+
"prepack": "pnpm run build && pnpm run build:native && node scripts/prepare-package.cjs",
|
|
35
38
|
"e2e:pack-install": "bash scripts/e2e-pack-install.sh",
|
|
36
39
|
"publish:next": "bash scripts/publish-next.sh",
|
|
37
40
|
"publish:promote-latest": "bash scripts/promote-latest.sh",
|