@praxis.guard/auditor-cli 0.0.55 → 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.
Files changed (74) hide show
  1. package/dist/adapters/cursor.d.ts.map +1 -1
  2. package/dist/adapters/cursor.js +2 -1
  3. package/dist/adapters/cursor.js.map +1 -1
  4. package/dist/adapters/types.d.ts +2 -0
  5. package/dist/adapters/types.d.ts.map +1 -1
  6. package/dist/cli/cursor-config/hooks-config.d.ts.map +1 -1
  7. package/dist/cli/cursor-config/hooks-config.js +27 -8
  8. package/dist/cli/cursor-config/hooks-config.js.map +1 -1
  9. package/dist/cli/cursor-config/mcp-config.d.ts +1 -1
  10. package/dist/cli/cursor-config/mcp-config.d.ts.map +1 -1
  11. package/dist/cli/cursor-config/mcp-config.js +10 -5
  12. package/dist/cli/cursor-config/mcp-config.js.map +1 -1
  13. package/dist/cli/cursor-config/types.d.ts +1 -0
  14. package/dist/cli/cursor-config/types.d.ts.map +1 -1
  15. package/dist/cli/daemon.d.ts +2 -0
  16. package/dist/cli/daemon.d.ts.map +1 -0
  17. package/dist/cli/daemon.js +35 -0
  18. package/dist/cli/daemon.js.map +1 -0
  19. package/dist/cli/help.d.ts.map +1 -1
  20. package/dist/cli/help.js +13 -3
  21. package/dist/cli/help.js.map +1 -1
  22. package/dist/cli/main.d.ts.map +1 -1
  23. package/dist/cli/main.js +12 -0
  24. package/dist/cli/main.js.map +1 -1
  25. package/dist/cli/setup-all.d.ts +1 -0
  26. package/dist/cli/setup-all.d.ts.map +1 -1
  27. package/dist/cli/setup-all.js +11 -1
  28. package/dist/cli/setup-all.js.map +1 -1
  29. package/dist/cli/setup-doctor.d.ts.map +1 -1
  30. package/dist/cli/setup-doctor.js +3 -0
  31. package/dist/cli/setup-doctor.js.map +1 -1
  32. package/dist/cli/setup-hook.d.ts +1 -0
  33. package/dist/cli/setup-hook.d.ts.map +1 -1
  34. package/dist/cli/setup-hook.js +10 -1
  35. package/dist/cli/setup-hook.js.map +1 -1
  36. package/dist/cli/setup-mcp.d.ts +1 -0
  37. package/dist/cli/setup-mcp.d.ts.map +1 -1
  38. package/dist/cli/setup-mcp.js +10 -1
  39. package/dist/cli/setup-mcp.js.map +1 -1
  40. package/dist/daemon/client.d.ts +15 -0
  41. package/dist/daemon/client.d.ts.map +1 -0
  42. package/dist/daemon/client.js +80 -0
  43. package/dist/daemon/client.js.map +1 -0
  44. package/dist/daemon/lifecycle.d.ts +4 -0
  45. package/dist/daemon/lifecycle.d.ts.map +1 -0
  46. package/dist/daemon/lifecycle.js +52 -0
  47. package/dist/daemon/lifecycle.js.map +1 -0
  48. package/dist/daemon/paths.d.ts +6 -0
  49. package/dist/daemon/paths.d.ts.map +1 -0
  50. package/dist/daemon/paths.js +41 -0
  51. package/dist/daemon/paths.js.map +1 -0
  52. package/dist/daemon/protocol.d.ts +41 -0
  53. package/dist/daemon/protocol.d.ts.map +1 -0
  54. package/dist/daemon/protocol.js +2 -0
  55. package/dist/daemon/protocol.js.map +1 -0
  56. package/dist/daemon/service.d.ts +3 -0
  57. package/dist/daemon/service.d.ts.map +1 -0
  58. package/dist/daemon/service.js +83 -0
  59. package/dist/daemon/service.js.map +1 -0
  60. package/dist/mcp/evaluate-guard.d.ts.map +1 -1
  61. package/dist/mcp/evaluate-guard.js +34 -2
  62. package/dist/mcp/evaluate-guard.js.map +1 -1
  63. package/dist/mcp/server.d.ts.map +1 -1
  64. package/dist/mcp/server.js +32 -6
  65. package/dist/mcp/server.js.map +1 -1
  66. package/native/darwin-amd64/praxis-guard-daemon +0 -0
  67. package/native/darwin-amd64/praxis-guard-hook +0 -0
  68. package/native/darwin-arm64/praxis-guard-daemon +0 -0
  69. package/native/darwin-arm64/praxis-guard-hook +0 -0
  70. package/native/linux-amd64/praxis-guard-daemon +0 -0
  71. package/native/linux-amd64/praxis-guard-hook +0 -0
  72. package/native/linux-arm64/praxis-guard-daemon +0 -0
  73. package/native/linux-arm64/praxis-guard-hook +0 -0
  74. package/package.json +5 -2
@@ -10,12 +10,17 @@ export function parseSetupHookOptions(args) {
10
10
  let projectDir = process.cwd();
11
11
  let explicitHooksPath;
12
12
  let dryRun = false;
13
+ let nativeHooks = false;
13
14
  for (let i = 0; i < rest.length; i++) {
14
15
  const arg = rest[i];
15
16
  if (arg === "--dry-run") {
16
17
  dryRun = true;
17
18
  continue;
18
19
  }
20
+ if (arg === "--native-hooks") {
21
+ nativeHooks = true;
22
+ continue;
23
+ }
19
24
  if (arg === "--hooks-config") {
20
25
  const value = rest[i + 1];
21
26
  if (!value)
@@ -38,11 +43,14 @@ export function parseSetupHookOptions(args) {
38
43
  if (explicitHooksPath && scope === "project") {
39
44
  throw new Error("Use either --project or --hooks-config, not both.");
40
45
  }
41
- return { scope, projectDir, explicitHooksPath, dryRun, forIds };
46
+ return { scope, projectDir, explicitHooksPath, dryRun, forIds, nativeHooks };
42
47
  }
43
48
  export async function runSetupHook(args) {
44
49
  const opts = parseSetupHookOptions(args);
45
50
  const targets = selectTargetAdapters(opts.forIds);
51
+ if (opts.nativeHooks && targets.some((adapter) => adapter.id !== "cursor")) {
52
+ throw new Error("--native-hooks currently supports Cursor only; pass --for=cursor");
53
+ }
46
54
  process.stdout.write(`setup hook (${targets.map((a) => a.id).join(", ")}):\n`);
47
55
  for (const adapter of targets) {
48
56
  if (!adapter.upsertHook) {
@@ -54,6 +62,7 @@ export async function runSetupHook(args) {
54
62
  projectDir: opts.projectDir,
55
63
  explicitPath: opts.explicitHooksPath,
56
64
  dryRun: opts.dryRun,
65
+ nativeHooks: opts.nativeHooks,
57
66
  });
58
67
  process.stdout.write(` ${adapter.id}: ${result.message}\n`);
59
68
  process.stdout.write(` path: ${result.path}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"setup-hook.js","sourceRoot":"","sources":["../../src/cli/setup-hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-hook.js","sourceRoot":"","sources":["../../src/cli/setup-hook.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ type McpOptions = {
4
4
  projectDir: string;
5
5
  dryRun: boolean;
6
6
  forIds: AgentId[];
7
+ nativeDaemon: boolean;
7
8
  };
8
9
  export declare function parseSetupMcpOptions(args: string[]): McpOptions;
9
10
  export declare function runSetupMcp(args: string[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"setup-mcp.d.ts","sourceRoot":"","sources":["../../src/cli/setup-mcp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,KAAK,UAAU,GAAG;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA8B/D;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/D"}
1
+ {"version":3,"file":"setup-mcp.d.ts","sourceRoot":"","sources":["../../src/cli/setup-mcp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,KAAK,UAAU,GAAG;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAmC/D;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB/D"}
@@ -6,12 +6,17 @@ export function parseSetupMcpOptions(args) {
6
6
  let userConfigPath;
7
7
  let projectDir = process.cwd();
8
8
  let dryRun = false;
9
+ let nativeDaemon = false;
9
10
  for (let i = 0; i < rest.length; i++) {
10
11
  const arg = rest[i];
11
12
  if (arg === "--dry-run") {
12
13
  dryRun = true;
13
14
  continue;
14
15
  }
16
+ if (arg === "--native-daemon") {
17
+ nativeDaemon = true;
18
+ continue;
19
+ }
15
20
  if (arg === "--user-config") {
16
21
  const value = rest[i + 1];
17
22
  if (!value)
@@ -30,11 +35,14 @@ export function parseSetupMcpOptions(args) {
30
35
  }
31
36
  throw new Error(`Unknown setup mcp option: ${arg}`);
32
37
  }
33
- return { userConfigPath, projectDir, dryRun, forIds };
38
+ return { userConfigPath, projectDir, dryRun, forIds, nativeDaemon };
34
39
  }
35
40
  export async function runSetupMcp(args) {
36
41
  const opts = parseSetupMcpOptions(args);
37
42
  const targets = selectTargetAdapters(opts.forIds);
43
+ if (opts.nativeDaemon && targets.some((adapter) => adapter.id !== "cursor")) {
44
+ throw new Error("--native-daemon currently supports Cursor only; pass --for=cursor");
45
+ }
38
46
  // --user-config only applies to Cursor (it overrides ~/.cursor/mcp.json).
39
47
  // Pass it through only when Cursor is among the targets.
40
48
  process.stdout.write(`setup mcp (${targets.map((a) => a.id).join(", ")}):\n`);
@@ -44,6 +52,7 @@ export async function runSetupMcp(args) {
44
52
  explicitPath,
45
53
  projectDir: opts.projectDir,
46
54
  dryRun: opts.dryRun,
55
+ nativeDaemon: opts.nativeDaemon,
47
56
  });
48
57
  process.stdout.write(` ${adapter.id}: ${result.message}\n`);
49
58
  process.stdout.write(` path: ${result.path}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/cli/setup-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AASzD,MAAM,UAAU,oBAAoB,CAAC,IAAc;IACjD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,cAAkC,CAAC;IACvC,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,MAAM,GAAG,IAAI,CAAC;YACd,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAC/D,cAAc,GAAG,KAAK,CAAC;YACvB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC3D,UAAU,GAAG,KAAK,CAAC;YACnB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAElD,0EAA0E;IAC1E,yDAAyD;IACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9E,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;YACrC,YAAY;YACZ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;QACnD,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/cli/setup-mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type DaemonEvaluation, type DaemonHealth } from "./protocol.js";
2
+ export declare class GuardDaemonError extends Error {
3
+ readonly code: string;
4
+ constructor(message: string, code?: string);
5
+ }
6
+ export declare function callGuardDaemon<T>(method: string, params?: unknown, opts?: {
7
+ timeoutMs?: number;
8
+ socketPath?: string;
9
+ }): Promise<T>;
10
+ export declare function evaluatePolicyWithDaemon(argv: string[]): Promise<DaemonEvaluation>;
11
+ export declare function pingGuardDaemon(opts?: {
12
+ timeoutMs?: number;
13
+ socketPath?: string;
14
+ }): Promise<DaemonHealth>;
15
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AAEvB,qBAAa,gBAAiB,SAAQ,KAAK;IAGvC,QAAQ,CAAC,IAAI;gBADb,OAAO,EAAE,MAAM,EACN,IAAI,SAAiB;CAKjC;AAED,wBAAsB,eAAe,CAAC,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,CAAC,CAAC,CAYZ;AA0DD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAExF;AAED,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,YAAY,CAAC,CAExB"}
@@ -0,0 +1,80 @@
1
+ import net from "node:net";
2
+ import { randomUUID } from "node:crypto";
3
+ import { guardDaemonSocketPath } from "./paths.js";
4
+ import { GUARD_DAEMON_PROTOCOL_VERSION, } from "./protocol.js";
5
+ export class GuardDaemonError extends Error {
6
+ code;
7
+ constructor(message, code = "daemon_error") {
8
+ super(message);
9
+ this.code = code;
10
+ this.name = "GuardDaemonError";
11
+ }
12
+ }
13
+ export async function callGuardDaemon(method, params, opts) {
14
+ const request = {
15
+ protocol_version: GUARD_DAEMON_PROTOCOL_VERSION,
16
+ request_id: randomUUID(),
17
+ method,
18
+ ...(params === undefined ? {} : { params }),
19
+ };
20
+ const timeoutMs = opts?.timeoutMs ?? 250;
21
+ const socketPath = opts?.socketPath ?? guardDaemonSocketPath();
22
+ const raw = await exchangeDaemonLine(socketPath, request, timeoutMs);
23
+ return parseDaemonResponse(raw, request.request_id);
24
+ }
25
+ async function exchangeDaemonLine(socketPath, request, timeoutMs) {
26
+ return await new Promise((resolve, reject) => {
27
+ const socket = net.createConnection(socketPath);
28
+ let settled = false;
29
+ let buffer = "";
30
+ const finish = (error, value) => {
31
+ if (settled)
32
+ return;
33
+ settled = true;
34
+ socket.destroy();
35
+ if (error)
36
+ reject(error);
37
+ else
38
+ resolve(value);
39
+ };
40
+ socket.setEncoding("utf8");
41
+ socket.setTimeout(timeoutMs, () => finish(new GuardDaemonError(`daemon timed out after ${timeoutMs}ms`, "timeout")));
42
+ socket.on("error", (error) => finish(new GuardDaemonError(error.message, "unavailable")));
43
+ socket.on("connect", () => socket.write(`${JSON.stringify(request)}\n`));
44
+ socket.on("data", (chunk) => {
45
+ buffer += chunk;
46
+ const newline = buffer.indexOf("\n");
47
+ if (newline < 0)
48
+ return;
49
+ finish(undefined, buffer.slice(0, newline));
50
+ });
51
+ });
52
+ }
53
+ function parseDaemonResponse(raw, requestId) {
54
+ let response;
55
+ try {
56
+ response = JSON.parse(raw);
57
+ }
58
+ catch (error) {
59
+ throw new GuardDaemonError(error instanceof Error ? error.message : String(error), "invalid_response");
60
+ }
61
+ if (response.protocol_version !== GUARD_DAEMON_PROTOCOL_VERSION) {
62
+ throw new GuardDaemonError("daemon protocol mismatch", "protocol_mismatch");
63
+ }
64
+ if (response.request_id !== requestId) {
65
+ throw new GuardDaemonError("daemon request id mismatch", "request_mismatch");
66
+ }
67
+ if (response.error)
68
+ throw new GuardDaemonError(response.error.message, response.error.code);
69
+ if (response.result === undefined) {
70
+ throw new GuardDaemonError("daemon returned no result", "invalid_response");
71
+ }
72
+ return response.result;
73
+ }
74
+ export async function evaluatePolicyWithDaemon(argv) {
75
+ return await callGuardDaemon("policy.evaluate", { argv });
76
+ }
77
+ export async function pingGuardDaemon(opts) {
78
+ return await callGuardDaemon("health.ping", undefined, opts);
79
+ }
80
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function daemonStatus(): Promise<Record<string, unknown>>;
2
+ export declare function startDaemon(): Promise<void>;
3
+ export declare function stopDaemon(): Promise<void>;
4
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AAYA,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAWrE;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAYjD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAMhD"}
@@ -0,0 +1,52 @@
1
+ import { spawn } from "node:child_process";
2
+ import { access, mkdir, readFile, rm, writeFile } from "node:fs/promises";
3
+ import { constants } from "node:fs";
4
+ import path from "node:path";
5
+ import { pingGuardDaemon } from "./client.js";
6
+ import { guardDaemonBinaryPath, guardDaemonPidPath, guardDaemonSocketPath, } from "./paths.js";
7
+ export async function daemonStatus() {
8
+ try {
9
+ const health = await pingGuardDaemon({ timeoutMs: 500 });
10
+ return { running: true, socket: guardDaemonSocketPath(), ...health };
11
+ }
12
+ catch (error) {
13
+ return {
14
+ running: false,
15
+ socket: guardDaemonSocketPath(),
16
+ error: error instanceof Error ? error.message : String(error),
17
+ };
18
+ }
19
+ }
20
+ export async function startDaemon() {
21
+ const current = await daemonStatus();
22
+ if (current.running)
23
+ return;
24
+ const binary = guardDaemonBinaryPath();
25
+ await access(binary, constants.X_OK).catch(() => {
26
+ throw new Error(`Native daemon binary is missing or not executable: ${binary}`);
27
+ });
28
+ const child = spawn(binary, [], { detached: true, stdio: "ignore" });
29
+ child.unref();
30
+ await mkdir(path.dirname(guardDaemonPidPath()), { recursive: true });
31
+ await writeFile(guardDaemonPidPath(), `${child.pid}\n`, { mode: 0o600 });
32
+ await waitUntilReady();
33
+ }
34
+ export async function stopDaemon() {
35
+ const raw = await readFile(guardDaemonPidPath(), "utf8");
36
+ const pid = Number(raw.trim());
37
+ if (!Number.isInteger(pid) || pid <= 0)
38
+ throw new Error("Invalid daemon pid file");
39
+ process.kill(pid, "SIGTERM");
40
+ await rm(guardDaemonPidPath(), { force: true });
41
+ }
42
+ async function waitUntilReady() {
43
+ const deadline = Date.now() + 3000;
44
+ while (Date.now() < deadline) {
45
+ const status = await daemonStatus();
46
+ if (status.running)
47
+ return;
48
+ await new Promise((resolve) => setTimeout(resolve, 50));
49
+ }
50
+ throw new Error("Praxis Guard daemon did not become ready within 3 seconds");
51
+ }
52
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/daemon/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function guardDaemonSocketPath(): string;
2
+ export declare function guardDaemonPidPath(): string;
3
+ export declare function guardDaemonBinaryPath(): string;
4
+ export declare function guardHookBinaryPath(): string;
5
+ export declare function daemonModeEnabled(): boolean;
6
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/daemon/paths.ts"],"names":[],"mappings":"AAKA,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAU9C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAU5C;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
@@ -0,0 +1,41 @@
1
+ import os from "node:os";
2
+ import path from "node:path";
3
+ import { existsSync } from "node:fs";
4
+ import { fileURLToPath } from "node:url";
5
+ export function guardDaemonSocketPath() {
6
+ const override = process.env.PRAXIS_GUARD_SOCKET?.trim();
7
+ if (override)
8
+ return override;
9
+ return path.join(os.homedir(), ".praxis", "guard", "daemon.sock");
10
+ }
11
+ export function guardDaemonPidPath() {
12
+ return path.join(os.homedir(), ".praxis", "guard", "daemon.pid");
13
+ }
14
+ export function guardDaemonBinaryPath() {
15
+ const override = process.env.PRAXIS_GUARD_DAEMON_BINARY?.trim();
16
+ if (override)
17
+ return override;
18
+ const platform = `${process.platform}-${process.arch}`;
19
+ const here = path.dirname(fileURLToPath(import.meta.url));
20
+ const candidates = [
21
+ path.resolve(here, `../native/${platform}/praxis-guard-daemon`),
22
+ path.resolve(here, `../../native/${platform}/praxis-guard-daemon`),
23
+ ];
24
+ return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0];
25
+ }
26
+ export function guardHookBinaryPath() {
27
+ const override = process.env.PRAXIS_GUARD_HOOK_BINARY?.trim();
28
+ if (override)
29
+ return override;
30
+ const platform = `${process.platform}-${process.arch}`;
31
+ const here = path.dirname(fileURLToPath(import.meta.url));
32
+ const candidates = [
33
+ path.resolve(here, `../native/${platform}/praxis-guard-hook`),
34
+ path.resolve(here, `../../native/${platform}/praxis-guard-hook`),
35
+ ];
36
+ return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0];
37
+ }
38
+ export function daemonModeEnabled() {
39
+ return process.env.PRAXIS_GUARD_DAEMON === "1";
40
+ }
41
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/daemon/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC;IACzD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,CAAC;IAChE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,QAAQ,sBAAsB,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,QAAQ,sBAAsB,CAAC;KACnE,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAE,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAC;IAC9D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,QAAQ,oBAAoB,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,QAAQ,oBAAoB,CAAC;KACjE,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAE,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,GAAG,CAAC;AACjD,CAAC"}
@@ -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,2 @@
1
+ export const GUARD_DAEMON_PROTOCOL_VERSION = 1;
2
+ //# sourceMappingURL=protocol.js.map
@@ -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,3 @@
1
+ export declare function installDaemonService(): Promise<string>;
2
+ export declare function uninstallDaemonService(): Promise<string>;
3
+ //# sourceMappingURL=service.d.ts.map
@@ -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("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;IACvC,MAAM,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,MAAM,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACjF,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5E,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAC5F,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;QACF,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,wBAAwB,CAAC,CAAC;AACtF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAAc;IAC9C,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG;;;;8CAI8B,OAAO;;;;;CAKpD,CAAC;IACA,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5E,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB,CAAC,CAAC;AACvF,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,MAAc;IACrD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG;;;;YAIH,aAAa,CAAC,MAAM,CAAC;;;;;;CAMhC,CAAC;IACA,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9D,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC"}
@@ -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;AAavF,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,CAsInE"}
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
- const skipped = shellResult?.skipped ?? mcpResult?.skipped ?? true;
67
- const evaluation = shellResult?.evaluation ?? mcpResult.evaluation;
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":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAa,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAsB,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAE7B,MAAM,2BAA2B,CAAC;AAQnC,SAAS,SAAS,CAAC,OAAgB,EAAE,IAAU;IAC7C,IAAI,OAAO;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAI5B;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACtC,IAAI,eAAe,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;IAE7C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,OAAO;YACL,eAAe,EAAE,OAAO;YACxB,aAAa,EAAE;gBACb,GAAG,aAAa;gBAChB,YAAY,EACV,oFAAoF;aACvF;SACF,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO;YACL,eAAe,EAAE,kBAAkB;YACnC,aAAa,EAAE;gBACb,GAAG,aAAa;gBAChB,YAAY,EACV,mGAAmG;aACtG;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAiB,EACjB,WAAwB;IAExB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;IAC1B,kBAAkB,EAAE,CAAC;IAErB,WAAW,CAAC,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;IAC5C,WAAW,CAAC,cAAc,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAE5D,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,YAAY,GAChB,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO;QAC7B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7D,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,WAAW,GACf,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY;QAC7C,CAAC,CAAC,qBAAqB,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC;QACzD,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,SAAS,GACb,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK;QAC3B,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC9D,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,OAAO,GAAG,WAAW,EAAE,OAAO,IAAI,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC;IACnE,MAAM,UAAU,GAAG,WAAW,EAAE,UAAU,IAAI,SAAU,CAAC,UAAU,CAAC;IACpE,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,CAAC;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAE7B,MAAM,IAAI,GAAS,UAAU,CAAC,IAAI,CAAC;IACnC,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAAC;QAC3D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO;QACP,IAAI;KACL,CAAC,CAAC;IACH,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAE5C,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAClF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC;IAC/C,MAAM,kBAAkB,GACtB,CAAC,OAAO;QACR,IAAI,KAAK,aAAa;QACtB,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,qBAAqB,KAAK,IAAI;QAC9B,UAAU,GAAG,CAAC,CAAC;IAEjB,IACE,kBAAkB;QAClB,CAAC,CAAC,OAAO,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EACnF,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC;YAChD,UAAU,EAAE,KAAK;YACjB,IAAI;YACJ,WAAW;YACX,OAAO,EAAE,QAAQ;YACjB,cAAc,EAAE,WAAW,CAAC,cAAc;YAC1C,OAAO;YACP,oBAAoB,EAAE,QAAQ,EAAE,4BAA4B,IAAI,IAAI;SACrE,CAAC,CAAC;QACH,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QACzC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QACrC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC/C,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;QAC1C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO;QACP,IAAI;QACJ,aAAa;QACb,eAAe;KAChB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ;QACR,OAAO;QACP,IAAI;QACJ,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;QACpC,OAAO;QACP,MAAM;QACN,QAAQ,EAAE,aAAa;QACvB,KAAK,EAAE;YACL,QAAQ;YACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;SAC1C;QACD,SAAS,EAAE;YACT,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,IAAI;SACb;KACF,CAAC;IAEF,MAAM,WAAW,GACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,OAAO;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,QAAQ,CAAC,EAAE,IAAI;QACtD,IAAI,CAAC;IACP,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACnC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE9D,KAAK,cAAc,CAAC;QAClB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,MAAM;QACN,OAAO;QACP,GAAG,CAAC,OAAO;YACT,CAAC,CAAC;gBACE,WAAW,EACT,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,sBAAsB;aACtF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI;QAC7B,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,WAAW;QACnB,GAAG,EAAE,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI;QACJ,QAAQ;QACR,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;QACzC,QAAQ;QACR,SAAS,EAAE,YAAY,EAAE;QACzB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;QACzB,GAAG,CAAC,WAAW,CAAC,cAAc,KAAK,IAAI;YACrC,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,cAAc,EAAE;YACjD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,IAAI,EAAE;YACJ,gBAAgB,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,IAAI,IAAI;SACvD;KACF,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"evaluate-guard.js","sourceRoot":"","sources":["../../src/mcp/evaluate-guard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAcA,8EAA8E;AAC9E,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkDvD"}
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"}