@praxis.guard/auditor-cli 0.0.36 → 0.0.37
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.md +15 -4
- package/dist/adapters/claude-code.d.ts +34 -0
- package/dist/adapters/claude-code.d.ts.map +1 -0
- package/dist/adapters/claude-code.js +239 -0
- package/dist/adapters/claude-code.js.map +1 -0
- package/dist/adapters/claude-desktop.d.ts +20 -0
- package/dist/adapters/claude-desktop.d.ts.map +1 -0
- package/dist/adapters/claude-desktop.js +133 -0
- package/dist/adapters/claude-desktop.js.map +1 -0
- package/dist/adapters/cursor.d.ts +18 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +72 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/registry.d.ts +10 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +30 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/select-targets.d.ts +22 -0
- package/dist/adapters/select-targets.d.ts.map +1 -0
- package/dist/adapters/select-targets.js +65 -0
- package/dist/adapters/select-targets.js.map +1 -0
- package/dist/adapters/types.d.ts +83 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +10 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/approval/mcp-flow.js +2 -2
- package/dist/audit/jsonl.d.ts +2 -2
- package/dist/audit/jsonl.d.ts.map +1 -1
- package/dist/audit/jsonl.js +4 -3
- package/dist/audit/jsonl.js.map +1 -1
- package/dist/bridge/execution-ticket.js +2 -2
- package/dist/bridge/execution-ticket.js.map +1 -1
- package/dist/bridge/guard-storage-root.d.ts +14 -1
- package/dist/bridge/guard-storage-root.d.ts.map +1 -1
- package/dist/bridge/guard-storage-root.js +49 -2
- package/dist/bridge/guard-storage-root.js.map +1 -1
- package/dist/bridge/pending-approval-index.d.ts.map +1 -1
- package/dist/bridge/pending-approval-index.js +5 -7
- package/dist/bridge/pending-approval-index.js.map +1 -1
- package/dist/bridge/shell-approval-bridge.d.ts.map +1 -1
- package/dist/bridge/shell-approval-bridge.js +2 -1
- package/dist/bridge/shell-approval-bridge.js.map +1 -1
- package/dist/cli/cursor-config/constants.d.ts +1 -0
- package/dist/cli/cursor-config/constants.d.ts.map +1 -1
- package/dist/cli/cursor-config/constants.js +1 -0
- package/dist/cli/cursor-config/constants.js.map +1 -1
- package/dist/cli/cursor-config/mcp-config.d.ts.map +1 -1
- package/dist/cli/cursor-config/mcp-config.js +11 -8
- package/dist/cli/cursor-config/mcp-config.js.map +1 -1
- package/dist/cli/cursor-config.d.ts +2 -1
- package/dist/cli/cursor-config.d.ts.map +1 -1
- package/dist/cli/cursor-config.js +1 -1
- package/dist/cli/cursor-config.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +51 -24
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +7 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/setup-all.d.ts +3 -2
- package/dist/cli/setup-all.d.ts.map +1 -1
- package/dist/cli/setup-all.js +34 -21
- package/dist/cli/setup-all.js.map +1 -1
- package/dist/cli/setup-cloud.d.ts +2 -0
- package/dist/cli/setup-cloud.d.ts.map +1 -1
- package/dist/cli/setup-cloud.js +20 -8
- package/dist/cli/setup-cloud.js.map +1 -1
- package/dist/cli/setup-doctor.d.ts.map +1 -1
- package/dist/cli/setup-doctor.js +50 -29
- package/dist/cli/setup-doctor.js.map +1 -1
- package/dist/cli/setup-hook.d.ts +3 -2
- package/dist/cli/setup-hook.d.ts.map +1 -1
- package/dist/cli/setup-hook.js +23 -14
- package/dist/cli/setup-hook.js.map +1 -1
- package/dist/cli/setup-mcp.d.ts +2 -0
- package/dist/cli/setup-mcp.d.ts.map +1 -1
- package/dist/cli/setup-mcp.js +16 -8
- package/dist/cli/setup-mcp.js.map +1 -1
- package/dist/hooks/run-claude-code-pre-tool-use.d.ts +13 -0
- package/dist/hooks/run-claude-code-pre-tool-use.d.ts.map +1 -0
- package/dist/hooks/run-claude-code-pre-tool-use.js +203 -0
- package/dist/hooks/run-claude-code-pre-tool-use.js.map +1 -0
- package/dist/mcp/guard-approval-block.js +1 -1
- package/dist/mcp/guard-heartbeat.d.ts +13 -0
- package/dist/mcp/guard-heartbeat.d.ts.map +1 -1
- package/dist/mcp/guard-heartbeat.js +11 -6
- package/dist/mcp/guard-heartbeat.js.map +1 -1
- package/dist/telemetry/agent-host.d.ts +11 -0
- package/dist/telemetry/agent-host.d.ts.map +1 -0
- package/dist/telemetry/agent-host.js +8 -0
- package/dist/telemetry/agent-host.js.map +1 -0
- package/dist/telemetry/guard-events.d.ts.map +1 -1
- package/dist/telemetry/guard-events.js +2 -0
- package/dist/telemetry/guard-events.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAA4B;IACnD,IAAI,aAAa,EAAE;IACnB,IAAI,oBAAoB,EAAE;IAC1B,IAAI,iBAAiB,EAAE;CACxB,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,EAAW;IACpC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,EAAE,EAAE,CAAC,CAAC;IACzE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,uBAAuB;IACrC,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AgentAdapter, AgentId } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse repeated `--for=<agent>` flags from a setup command's argv tail.
|
|
4
|
+
*
|
|
5
|
+
* Accepted forms: `--for=cursor`, `--for cursor`, `--for=claude-desktop`.
|
|
6
|
+
* Returns the list of explicit ids (may be empty) and the remaining args
|
|
7
|
+
* for downstream parsers. Throws on unknown agent ids.
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseForFlag(args: string[]): {
|
|
10
|
+
forIds: AgentId[];
|
|
11
|
+
rest: string[];
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the list of adapters a setup command should operate on.
|
|
15
|
+
*
|
|
16
|
+
* - When `explicit` is non-empty: those exact adapters, even if not detected.
|
|
17
|
+
* This lets users pre-configure agents before they're installed.
|
|
18
|
+
* - When `explicit` is empty: all adapters whose `detectInstalled()` returns true.
|
|
19
|
+
* Falls back to Cursor only when nothing is detected (preserves legacy default).
|
|
20
|
+
*/
|
|
21
|
+
export declare function selectTargetAdapters(explicit: AgentId[]): AgentAdapter[];
|
|
22
|
+
//# sourceMappingURL=select-targets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-targets.d.ts","sourceRoot":"","sources":["../../src/adapters/select-targets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIxD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAuBlF;AAQD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAaxE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ALL_ADAPTERS, getAdapter } from "./registry.js";
|
|
2
|
+
const VALID_IDS = ["cursor", "claude-desktop", "claude-code"];
|
|
3
|
+
/**
|
|
4
|
+
* Parse repeated `--for=<agent>` flags from a setup command's argv tail.
|
|
5
|
+
*
|
|
6
|
+
* Accepted forms: `--for=cursor`, `--for cursor`, `--for=claude-desktop`.
|
|
7
|
+
* Returns the list of explicit ids (may be empty) and the remaining args
|
|
8
|
+
* for downstream parsers. Throws on unknown agent ids.
|
|
9
|
+
*/
|
|
10
|
+
export function parseForFlag(args) {
|
|
11
|
+
const forIds = [];
|
|
12
|
+
const rest = [];
|
|
13
|
+
for (let i = 0; i < args.length; i++) {
|
|
14
|
+
const arg = args[i];
|
|
15
|
+
if (arg === "--for") {
|
|
16
|
+
const value = args[i + 1];
|
|
17
|
+
if (!value)
|
|
18
|
+
throw new Error("Missing value for --for (expected: cursor | claude-desktop | claude-code)");
|
|
19
|
+
assertValidAgentId(value);
|
|
20
|
+
forIds.push(value);
|
|
21
|
+
i++;
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (arg.startsWith("--for=")) {
|
|
25
|
+
const value = arg.slice("--for=".length);
|
|
26
|
+
if (!value)
|
|
27
|
+
throw new Error("Missing value for --for= (expected: cursor | claude-desktop | claude-code)");
|
|
28
|
+
assertValidAgentId(value);
|
|
29
|
+
forIds.push(value);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
rest.push(arg);
|
|
33
|
+
}
|
|
34
|
+
return { forIds, rest };
|
|
35
|
+
}
|
|
36
|
+
function assertValidAgentId(value) {
|
|
37
|
+
if (!VALID_IDS.includes(value)) {
|
|
38
|
+
throw new Error(`Unknown agent id: ${value}. Valid ids: ${VALID_IDS.join(", ")}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the list of adapters a setup command should operate on.
|
|
43
|
+
*
|
|
44
|
+
* - When `explicit` is non-empty: those exact adapters, even if not detected.
|
|
45
|
+
* This lets users pre-configure agents before they're installed.
|
|
46
|
+
* - When `explicit` is empty: all adapters whose `detectInstalled()` returns true.
|
|
47
|
+
* Falls back to Cursor only when nothing is detected (preserves legacy default).
|
|
48
|
+
*/
|
|
49
|
+
export function selectTargetAdapters(explicit) {
|
|
50
|
+
if (explicit.length > 0) {
|
|
51
|
+
return explicit.map((id) => getAdapter(id));
|
|
52
|
+
}
|
|
53
|
+
const detected = ALL_ADAPTERS.filter((a) => {
|
|
54
|
+
try {
|
|
55
|
+
return a.detectInstalled();
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
if (detected.length > 0)
|
|
62
|
+
return [...detected];
|
|
63
|
+
return [getAdapter("cursor")];
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=select-targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-targets.js","sourceRoot":"","sources":["../../src/adapters/select-targets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGzD,MAAM,SAAS,GAAuB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,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,OAAO,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;YACzG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;YAC1G,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,CAAE,SAA+B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,gBAAgB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAmB;IACtD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC9C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentAdapter: per-host (Cursor, Claude Desktop, …) plug-in surface for setup/teardown/doctor.
|
|
3
|
+
*
|
|
4
|
+
* See docs/auditor-cli-multi-agent-adapter-design.md for the full design.
|
|
5
|
+
*
|
|
6
|
+
* `upsertHook` and `upsertCloud` are optional — hosts that don't support pre-tool hooks
|
|
7
|
+
* (e.g. Claude Desktop) simply omit them rather than implement no-op stubs.
|
|
8
|
+
*/
|
|
9
|
+
export type AgentId = "cursor" | "claude-desktop" | "claude-code";
|
|
10
|
+
export type SetupResult = {
|
|
11
|
+
path: string;
|
|
12
|
+
changed: boolean;
|
|
13
|
+
message: string;
|
|
14
|
+
};
|
|
15
|
+
export type AgentStatus = {
|
|
16
|
+
/** True when the agent appears to be installed on this machine. */
|
|
17
|
+
installed: boolean;
|
|
18
|
+
hook?: HookStatus;
|
|
19
|
+
mcp?: {
|
|
20
|
+
configured: boolean;
|
|
21
|
+
path: string;
|
|
22
|
+
};
|
|
23
|
+
cloud?: {
|
|
24
|
+
configured: boolean;
|
|
25
|
+
path: string;
|
|
26
|
+
};
|
|
27
|
+
/** Adapter-specific advisory messages (e.g. duplicate-hook warnings). */
|
|
28
|
+
warnings: string[];
|
|
29
|
+
};
|
|
30
|
+
export type HookStatus = {
|
|
31
|
+
/** Hook config status at the user-global scope (`~/.cursor/hooks.json` for Cursor). */
|
|
32
|
+
global: {
|
|
33
|
+
shell: boolean;
|
|
34
|
+
mcp: boolean;
|
|
35
|
+
path: string;
|
|
36
|
+
};
|
|
37
|
+
/** Hook config status at the project scope, when applicable. */
|
|
38
|
+
project?: {
|
|
39
|
+
shell: boolean;
|
|
40
|
+
mcp: boolean;
|
|
41
|
+
path: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export type HookScope = "global" | "project";
|
|
45
|
+
export type UpsertHookOpts = {
|
|
46
|
+
scope: HookScope;
|
|
47
|
+
projectDir?: string;
|
|
48
|
+
explicitPath?: string;
|
|
49
|
+
dryRun?: boolean;
|
|
50
|
+
};
|
|
51
|
+
export type UpsertMcpOpts = {
|
|
52
|
+
explicitPath?: string;
|
|
53
|
+
dryRun?: boolean;
|
|
54
|
+
};
|
|
55
|
+
export type UpsertCloudOpts = {
|
|
56
|
+
projectDir: string;
|
|
57
|
+
dryRun?: boolean;
|
|
58
|
+
};
|
|
59
|
+
export type StatusOpts = {
|
|
60
|
+
projectDir?: string;
|
|
61
|
+
/** Override path for the MCP config file (Cursor: ~/.cursor/mcp.json). */
|
|
62
|
+
mcpConfigPath?: string;
|
|
63
|
+
};
|
|
64
|
+
export interface AgentAdapter {
|
|
65
|
+
/** Stable id used in CLI flags and telemetry. */
|
|
66
|
+
readonly id: AgentId;
|
|
67
|
+
/** Display name for human-readable output. */
|
|
68
|
+
readonly label: string;
|
|
69
|
+
/**
|
|
70
|
+
* Cheap filesystem check: does this agent appear to be installed?
|
|
71
|
+
* Drives auto-detect in `setup all` and `doctor`. Must not throw.
|
|
72
|
+
*/
|
|
73
|
+
detectInstalled(): boolean;
|
|
74
|
+
/** Upsert MCP server registration. All adapters implement this. */
|
|
75
|
+
upsertMcp(opts: UpsertMcpOpts): Promise<SetupResult>;
|
|
76
|
+
/** Upsert hook config. Optional — only adapters that support pre-tool hooks. */
|
|
77
|
+
upsertHook?(opts: UpsertHookOpts): Promise<SetupResult>;
|
|
78
|
+
/** Upsert cloud-agent install config. Optional — Cursor Cloud only today. */
|
|
79
|
+
upsertCloud?(opts: UpsertCloudOpts): Promise<SetupResult>;
|
|
80
|
+
/** Read current configuration state for doctor / setup-doctor. */
|
|
81
|
+
status(opts?: StatusOpts): Promise<AgentStatus>;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAElE,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,KAAK,CAAC,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,yEAAyE;IACzE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,uFAAuF;IACvF,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,gEAAgE;IAChE,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAErB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,eAAe,IAAI,OAAO,CAAC;IAE3B,mEAAmE;IACnE,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAErD,gFAAgF;IAChF,UAAU,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAExD,6EAA6E;IAC7E,WAAW,CAAC,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE1D,kEAAkE;IAClE,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACjD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentAdapter: per-host (Cursor, Claude Desktop, …) plug-in surface for setup/teardown/doctor.
|
|
3
|
+
*
|
|
4
|
+
* See docs/auditor-cli-multi-agent-adapter-design.md for the full design.
|
|
5
|
+
*
|
|
6
|
+
* `upsertHook` and `upsertCloud` are optional — hosts that don't support pre-tool hooks
|
|
7
|
+
* (e.g. Claude Desktop) simply omit them rather than implement no-op stubs.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -51,7 +51,7 @@ export async function resolveMutateApproval(input) {
|
|
|
51
51
|
return {
|
|
52
52
|
kind: "credential_not_recorded",
|
|
53
53
|
request_id: requestId,
|
|
54
|
-
message: "Approval redeemed but no execution ticket was written for hooks. Check workspace permissions under .
|
|
54
|
+
message: "Approval redeemed but no execution ticket was written for hooks. Check workspace permissions under .praxis/guard/tickets.",
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
return {
|
|
@@ -92,7 +92,7 @@ export async function resolveMutateApproval(input) {
|
|
|
92
92
|
return {
|
|
93
93
|
kind: "credential_not_recorded",
|
|
94
94
|
request_id: created.request_id,
|
|
95
|
-
message: "Approval redeemed but no execution ticket was written for hooks. Check workspace permissions under .
|
|
95
|
+
message: "Approval redeemed but no execution ticket was written for hooks. Check workspace permissions under .praxis/guard/tickets.",
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
98
|
return {
|
package/dist/audit/jsonl.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @param resolveDefaultRelativeTo When `PRAXIS_GUARD_AUDIT_LOG` is unset, the directory used to
|
|
3
|
-
* resolve `.
|
|
4
|
-
* If omitted or empty, uses `process.cwd()` — which may differ from the workspace when
|
|
3
|
+
* resolve `.praxis/guard/audit.jsonl` (usually the workspace root from the hook payload's `cwd`).
|
|
4
|
+
* If omitted or empty, uses `process.cwd()` — which may differ from the workspace when the IDE spawns the hook.
|
|
5
5
|
*/
|
|
6
6
|
export declare function appendAuditJsonl(evt: Record<string, unknown>, resolveDefaultRelativeTo?: string | null): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=jsonl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../src/audit/jsonl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../src/audit/jsonl.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,iBAY5G"}
|
package/dist/audit/jsonl.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { appendFile, mkdir } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { guardSubpath } from "../bridge/guard-storage-root.js";
|
|
3
4
|
/**
|
|
4
5
|
* @param resolveDefaultRelativeTo When `PRAXIS_GUARD_AUDIT_LOG` is unset, the directory used to
|
|
5
|
-
* resolve `.
|
|
6
|
-
* If omitted or empty, uses `process.cwd()` — which may differ from the workspace when
|
|
6
|
+
* resolve `.praxis/guard/audit.jsonl` (usually the workspace root from the hook payload's `cwd`).
|
|
7
|
+
* If omitted or empty, uses `process.cwd()` — which may differ from the workspace when the IDE spawns the hook.
|
|
7
8
|
*/
|
|
8
9
|
export async function appendAuditJsonl(evt, resolveDefaultRelativeTo) {
|
|
9
10
|
const fromEnv = process.env.PRAXIS_GUARD_AUDIT_LOG?.trim();
|
|
10
11
|
const auditPath = fromEnv && fromEnv.length > 0
|
|
11
12
|
? fromEnv
|
|
12
|
-
:
|
|
13
|
+
: guardSubpath("audit.jsonl", (resolveDefaultRelativeTo && resolveDefaultRelativeTo.trim()) || undefined);
|
|
13
14
|
await mkdir(path.dirname(auditPath), { recursive: true });
|
|
14
15
|
await appendFile(auditPath, `${JSON.stringify(evt)}\n`, "utf8");
|
|
15
16
|
}
|
package/dist/audit/jsonl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../src/audit/jsonl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAA4B,EAAE,wBAAwC;IAC3G,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,SAAS,GACb,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../src/audit/jsonl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAA4B,EAAE,wBAAwC;IAC3G,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,SAAS,GACb,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,YAAY,CACV,aAAa,EACb,CAAC,wBAAwB,IAAI,wBAAwB,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,CAC3E,CAAC;IAER,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,UAAU,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -4,11 +4,11 @@ import path from "node:path";
|
|
|
4
4
|
import { getInstallId } from "../cli/install-id.js";
|
|
5
5
|
import { verifyExecutionTicket } from "../approval/grant.js";
|
|
6
6
|
import { resolveShellApprovalHash } from "../approval/argv-fingerprint.js";
|
|
7
|
-
import {
|
|
7
|
+
import { guardSubpath } from "./guard-storage-root.js";
|
|
8
8
|
import { shellApprovalFingerprintId, shellArgvApprovalId } from "./shell-approval-bridge.js";
|
|
9
9
|
export const EXECUTION_TICKET_ENV = "PRAXIS_GUARD_EXECUTION_TICKET";
|
|
10
10
|
export function executionTicketDir(storageRoot) {
|
|
11
|
-
return
|
|
11
|
+
return guardSubpath("tickets", storageRoot);
|
|
12
12
|
}
|
|
13
13
|
function argvDeepEqual(stored, requested) {
|
|
14
14
|
if (!Array.isArray(stored) || stored.length !== requested.length)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-ticket.js","sourceRoot":"","sources":["../../src/bridge/execution-ticket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"execution-ticket.js","sourceRoot":"","sources":["../../src/bridge/execution-ticket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
|
+
/** Canonical (IDE-neutral) subdir for guard runtime state under a workspace root. */
|
|
2
|
+
export declare const GUARD_DIR = ".praxis/guard";
|
|
3
|
+
/** Legacy Cursor-only subdir. Read for back-compat; new writes go to GUARD_DIR. */
|
|
4
|
+
export declare const LEGACY_GUARD_DIR = ".cursor/guard";
|
|
1
5
|
/**
|
|
2
|
-
* Resolve where
|
|
6
|
+
* Resolve where guard runtime state lives. Hooks and MCP redeem must use the same root
|
|
3
7
|
* (workspace), not the subprocess cwd (e.g. `packages/auditor-cli`).
|
|
8
|
+
*
|
|
9
|
+
* Walks up from the preferred cwd looking for, in order:
|
|
10
|
+
* 1. `.praxis/` — neutral marker (preferred; dropped by `auditor setup`)
|
|
11
|
+
* 2. `.cursor/hooks.json` — legacy Cursor marker
|
|
12
|
+
* 3. `.git/` — repo root fallback
|
|
4
13
|
*/
|
|
5
14
|
export declare function resolveGuardStorageRoot(preferredCwd?: string): string;
|
|
15
|
+
/** Absolute path to the guard storage dir for a given preferred cwd. */
|
|
16
|
+
export declare function guardStorageDir(preferredCwd?: string): string;
|
|
17
|
+
/** Absolute path to a named subdir/file under the guard storage dir. */
|
|
18
|
+
export declare function guardSubpath(segment: string, preferredCwd?: string): string;
|
|
6
19
|
//# sourceMappingURL=guard-storage-root.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-storage-root.d.ts","sourceRoot":"","sources":["../../src/bridge/guard-storage-root.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"guard-storage-root.d.ts","sourceRoot":"","sources":["../../src/bridge/guard-storage-root.ts"],"names":[],"mappings":"AAGA,qFAAqF;AACrF,eAAO,MAAM,SAAS,kBAAkB,CAAC;AAEzC,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBrE;AA4BD,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3E"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import { existsSync } from "node:fs";
|
|
1
|
+
import { existsSync, mkdirSync, renameSync } from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
/** Canonical (IDE-neutral) subdir for guard runtime state under a workspace root. */
|
|
4
|
+
export const GUARD_DIR = ".praxis/guard";
|
|
5
|
+
/** Legacy Cursor-only subdir. Read for back-compat; new writes go to GUARD_DIR. */
|
|
6
|
+
export const LEGACY_GUARD_DIR = ".cursor/guard";
|
|
3
7
|
/**
|
|
4
|
-
* Resolve where
|
|
8
|
+
* Resolve where guard runtime state lives. Hooks and MCP redeem must use the same root
|
|
5
9
|
* (workspace), not the subprocess cwd (e.g. `packages/auditor-cli`).
|
|
10
|
+
*
|
|
11
|
+
* Walks up from the preferred cwd looking for, in order:
|
|
12
|
+
* 1. `.praxis/` — neutral marker (preferred; dropped by `auditor setup`)
|
|
13
|
+
* 2. `.cursor/hooks.json` — legacy Cursor marker
|
|
14
|
+
* 3. `.git/` — repo root fallback
|
|
6
15
|
*/
|
|
7
16
|
export function resolveGuardStorageRoot(preferredCwd) {
|
|
8
17
|
const override = process.env.PRAXIS_GUARD_STORAGE_ROOT?.trim();
|
|
@@ -11,6 +20,8 @@ export function resolveGuardStorageRoot(preferredCwd) {
|
|
|
11
20
|
let dir = preferredCwd?.trim() ? path.resolve(preferredCwd.trim()) : process.cwd();
|
|
12
21
|
const fsRoot = path.parse(dir).root;
|
|
13
22
|
while (true) {
|
|
23
|
+
if (existsSync(path.join(dir, ".praxis")))
|
|
24
|
+
return dir;
|
|
14
25
|
if (existsSync(path.join(dir, ".cursor", "hooks.json")))
|
|
15
26
|
return dir;
|
|
16
27
|
if (existsSync(path.join(dir, ".git")))
|
|
@@ -21,4 +32,40 @@ export function resolveGuardStorageRoot(preferredCwd) {
|
|
|
21
32
|
}
|
|
22
33
|
return preferredCwd?.trim() ? path.resolve(preferredCwd.trim()) : process.cwd();
|
|
23
34
|
}
|
|
35
|
+
const migratedRoots = new Set();
|
|
36
|
+
/**
|
|
37
|
+
* One-shot, best-effort migration of `<root>/.cursor/guard` -> `<root>/.praxis/guard`.
|
|
38
|
+
* Runs at most once per root per process. Silent no-op when nothing to do or when
|
|
39
|
+
* the destination already exists. Failures are logged to stderr but do not throw —
|
|
40
|
+
* a stale legacy dir must not break the hook path.
|
|
41
|
+
*/
|
|
42
|
+
function migrateLegacyGuardDir(root) {
|
|
43
|
+
if (migratedRoots.has(root))
|
|
44
|
+
return;
|
|
45
|
+
migratedRoots.add(root);
|
|
46
|
+
const legacy = path.join(root, LEGACY_GUARD_DIR);
|
|
47
|
+
const next = path.join(root, GUARD_DIR);
|
|
48
|
+
if (!existsSync(legacy))
|
|
49
|
+
return;
|
|
50
|
+
if (existsSync(next))
|
|
51
|
+
return;
|
|
52
|
+
try {
|
|
53
|
+
mkdirSync(path.dirname(next), { recursive: true });
|
|
54
|
+
renameSync(legacy, next);
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
58
|
+
process.stderr.write(`[auditor] guard storage migration skipped (${msg})\n`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Absolute path to the guard storage dir for a given preferred cwd. */
|
|
62
|
+
export function guardStorageDir(preferredCwd) {
|
|
63
|
+
const root = resolveGuardStorageRoot(preferredCwd);
|
|
64
|
+
migrateLegacyGuardDir(root);
|
|
65
|
+
return path.join(root, GUARD_DIR);
|
|
66
|
+
}
|
|
67
|
+
/** Absolute path to a named subdir/file under the guard storage dir. */
|
|
68
|
+
export function guardSubpath(segment, preferredCwd) {
|
|
69
|
+
return path.join(guardStorageDir(preferredCwd), segment);
|
|
70
|
+
}
|
|
24
71
|
//# sourceMappingURL=guard-storage-root.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-storage-root.js","sourceRoot":"","sources":["../../src/bridge/guard-storage-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"guard-storage-root.js","sourceRoot":"","sources":["../../src/bridge/guard-storage-root.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-approval-index.d.ts","sourceRoot":"","sources":["../../src/bridge/pending-approval-index.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,yBAAyB,EAChC,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"pending-approval-index.d.ts","sourceRoot":"","sources":["../../src/bridge/pending-approval-index.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,yBAAyB,EAChC,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAW3C"}
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import {
|
|
4
|
-
function
|
|
5
|
-
return
|
|
3
|
+
import { guardSubpath } from "./guard-storage-root.js";
|
|
4
|
+
function pendingDir(storageRoot) {
|
|
5
|
+
return guardSubpath("pending", storageRoot);
|
|
6
6
|
}
|
|
7
7
|
export async function writePendingApprovalIndex(entry, opts) {
|
|
8
|
-
const
|
|
9
|
-
const dir = path.join(root, ".cursor/guard/pending");
|
|
8
|
+
const dir = pendingDir(opts?.storageRoot);
|
|
10
9
|
await mkdir(dir, { recursive: true });
|
|
11
10
|
await writeFile(path.join(dir, `${entry.argv_sha256}.json`), `${JSON.stringify(entry, null, 2)}\n`, {
|
|
12
11
|
mode: 0o600,
|
|
13
12
|
});
|
|
14
13
|
}
|
|
15
14
|
export async function readPendingApprovalIndex(argvSha256, opts) {
|
|
16
|
-
const root = resolveGuardStorageRoot(opts?.storageRoot);
|
|
17
15
|
try {
|
|
18
|
-
const raw = await readFile(
|
|
16
|
+
const raw = await readFile(path.join(pendingDir(opts?.storageRoot), `${argvSha256}.json`), "utf8");
|
|
19
17
|
const parsed = JSON.parse(raw);
|
|
20
18
|
if (typeof parsed.expires_at === "string" && Date.parse(parsed.expires_at) < Date.now()) {
|
|
21
19
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-approval-index.js","sourceRoot":"","sources":["../../src/bridge/pending-approval-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pending-approval-index.js","sourceRoot":"","sources":["../../src/bridge/pending-approval-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAevD,SAAS,UAAU,CAAC,WAAoB;IACtC,OAAO,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAAgC,EAChC,IAA+B;IAE/B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAClG,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,UAAkB,EAClB,IAA+B;IAE/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,GAAG,UAAU,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACnG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8B,CAAC;QAC5D,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-approval-bridge.d.ts","sourceRoot":"","sources":["../../src/bridge/shell-approval-bridge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"shell-approval-bridge.d.ts","sourceRoot":"","sources":["../../src/bridge/shell-approval-bridge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAGnF,uFAAuF;AACvF,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAE1D,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAMD,kDAAkD;AAClD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAEnE;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAE3F;AAWD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,+BAA+B,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,+BAA+B,EAC5C,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC1E,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,+BAA+B,EAC5C,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACvD,OAAO,CAAC,OAAO,CAAC,CA2ClB;AAED,+DAA+D;AAC/D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,QAAQ,EAAE,OAAO,GAAG,kBAAkB,GAAG,OAAO,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ,GAAG,OAAO,CAEV"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createHash, randomUUID } from "node:crypto";
|
|
2
2
|
import { mkdir, readdir, readFile, unlink, writeFile } from "node:fs/promises";
|
|
3
3
|
import path from "node:path";
|
|
4
|
+
import { guardSubpath } from "./guard-storage-root.js";
|
|
4
5
|
/** Same window as MCP approval grants (see packages/auditor-cli/src/mcp/server.ts). */
|
|
5
6
|
export const DEFAULT_SHELL_BRIDGE_TTL_MS = 10 * 60 * 1000;
|
|
6
7
|
export function shellBridgeDir(cwd) {
|
|
7
|
-
return
|
|
8
|
+
return guardSubpath("bridge", cwd);
|
|
8
9
|
}
|
|
9
10
|
function stableJsonHash(payload) {
|
|
10
11
|
return createHash("sha256").update(JSON.stringify(payload), "utf8").digest("hex");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-approval-bridge.js","sourceRoot":"","sources":["../../src/bridge/shell-approval-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"shell-approval-bridge.js","sourceRoot":"","sources":["../../src/bridge/shell-approval-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const HOOK_COMMAND_SHELL = "auditor hook before-shell";
|
|
2
2
|
export declare const HOOK_COMMAND_MCP = "auditor hook before-mcp";
|
|
3
3
|
export declare const MCP_SERVER_KEY = "praxis-guard";
|
|
4
|
+
export declare const CURSOR_AGENT_HOST = "cursor";
|
|
4
5
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/cli/cursor-config/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAC9D,eAAO,MAAM,gBAAgB,4BAA4B,CAAC;AAC1D,eAAO,MAAM,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/cli/cursor-config/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAC9D,eAAO,MAAM,gBAAgB,4BAA4B,CAAC;AAC1D,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cli/cursor-config/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAC9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cli/cursor-config/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAC9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../../src/cli/cursor-config/mcp-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEvD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAQtE;
|
|
1
|
+
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../../src/cli/cursor-config/mcp-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEvD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAQtE;AAWD,wBAAsB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAiCjG;AAED,wBAAsB,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG/E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MCP_SERVER_KEY } from "./constants.js";
|
|
1
|
+
import { CURSOR_AGENT_HOST, MCP_SERVER_KEY } from "./constants.js";
|
|
2
2
|
import { isLegacyPraxisGuardMcpServer } from "./legacy-guard-mcp.js";
|
|
3
3
|
import { cloneJsonMap, readJson, writeJson } from "./json-io.js";
|
|
4
4
|
import { resolveUserMcpConfigPath } from "./paths.js";
|
|
@@ -13,6 +13,13 @@ export function hasConfiguredMcpServer(config) {
|
|
|
13
13
|
const args = map.args;
|
|
14
14
|
return map.command === "auditor" && Array.isArray(args) && args.length === 1 && args[0] === "mcp";
|
|
15
15
|
}
|
|
16
|
+
function ensurePraxisGuardEntry(current) {
|
|
17
|
+
const base = current ?? {};
|
|
18
|
+
const existingEnv = base.env && typeof base.env === "object" && !Array.isArray(base.env)
|
|
19
|
+
? base.env
|
|
20
|
+
: {};
|
|
21
|
+
return { ...base, command: "auditor", args: ["mcp"], env: { ...existingEnv, PRAXIS_AGENT_HOST: CURSOR_AGENT_HOST } };
|
|
22
|
+
}
|
|
16
23
|
export async function upsertMcpConfig(explicitPath, dryRun = false) {
|
|
17
24
|
const mcpPath = resolveUserMcpConfigPath(explicitPath);
|
|
18
25
|
const existing = await readJson(mcpPath);
|
|
@@ -24,16 +31,12 @@ export async function upsertMcpConfig(explicitPath, dryRun = false) {
|
|
|
24
31
|
const servers = config.mcpServers;
|
|
25
32
|
for (const [key, server] of Object.entries(servers)) {
|
|
26
33
|
if (key === MCP_SERVER_KEY || isLegacyPraxisGuardMcpServer(server)) {
|
|
27
|
-
const current = server && typeof server === "object" ? server :
|
|
28
|
-
servers[key === MCP_SERVER_KEY ? MCP_SERVER_KEY : key] =
|
|
29
|
-
...current,
|
|
30
|
-
command: "auditor",
|
|
31
|
-
args: ["mcp"],
|
|
32
|
-
};
|
|
34
|
+
const current = server && typeof server === "object" ? server : undefined;
|
|
35
|
+
servers[key === MCP_SERVER_KEY ? MCP_SERVER_KEY : key] = ensurePraxisGuardEntry(current);
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
if (!servers[MCP_SERVER_KEY]) {
|
|
36
|
-
servers[MCP_SERVER_KEY] =
|
|
39
|
+
servers[MCP_SERVER_KEY] = ensurePraxisGuardEntry(undefined);
|
|
37
40
|
}
|
|
38
41
|
const changed = beforeJson !== JSON.stringify(config);
|
|
39
42
|
if (changed && !dryRun) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/cli/cursor-config/mcp-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/cli/cursor-config/mcp-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type { HookConfigScope, JsonMap, SetupResult, UpsertHookConfigOptions, } from "./cursor-config/index.js";
|
|
2
|
+
export { referencesGuardMcp, scanHooksForLegacyGuardMcp, scanMcpForLegacyGuardMcp, readJson, resolveEnvironmentJsonPath, resolveHooksConfigPath, resolveProjectHooksPath, resolveUserHooksPath, resolveUserMcpConfigPath, duplicatePraxisHooksWarning, hasConfiguredBeforeMcpHook, hasConfiguredHook, hasAnyPraxisHookEntry, readBeforeMcpHookConfigured, readGlobalHooksConfigured, readHookConfigured, readHooksStatusAt, readProjectHooksConfigured, upsertHookConfig, hasConfiguredMcpServer, readMcpConfigured, upsertMcpConfig, detectInstallCommand, detectMonorepoGuardInstallCommand, hasConfiguredEnvironment, readEnvironmentConfigured, upsertEnvironmentConfig, } from "./cursor-config/index.js";
|
|
2
3
|
//# sourceMappingURL=cursor-config.d.ts.map
|