@praxis.guard/auditor-cli 0.0.55 → 0.0.57
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/bridge/guard-storage-root.d.ts +9 -0
- package/dist/bridge/guard-storage-root.d.ts.map +1 -1
- package/dist/bridge/guard-storage-root.js +27 -1
- package/dist/bridge/guard-storage-root.js.map +1 -1
- package/dist/bridge/guard-workspace-session.d.ts +11 -0
- package/dist/bridge/guard-workspace-session.d.ts.map +1 -0
- package/dist/bridge/guard-workspace-session.js +66 -0
- package/dist/bridge/guard-workspace-session.js.map +1 -0
- 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/help.d.ts.map +1 -1
- package/dist/cli/help.js +13 -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-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/hooks/before-mcp-argv.d.ts.map +1 -1
- package/dist/hooks/before-mcp-argv.js +5 -7
- package/dist/hooks/before-mcp-argv.js.map +1 -1
- package/dist/hooks/run-before-mcp.d.ts.map +1 -1
- package/dist/hooks/run-before-mcp.js +5 -1
- package/dist/hooks/run-before-mcp.js.map +1 -1
- package/dist/hooks/run-before-shell.d.ts.map +1 -1
- package/dist/hooks/run-before-shell.js +4 -1
- package/dist/hooks/run-before-shell.js.map +1 -1
- package/dist/mcp/evaluate-guard.d.ts.map +1 -1
- package/dist/mcp/evaluate-guard.js +40 -4
- package/dist/mcp/evaluate-guard.js.map +1 -1
- package/dist/mcp/guard-schemas.d.ts +2 -0
- package/dist/mcp/guard-schemas.d.ts.map +1 -1
- package/dist/mcp/guard-schemas.js +5 -1
- package/dist/mcp/guard-schemas.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,YAAY;IAChD,QAAQ,CAAC,EAAE,EAAG,QAAQ,CAAU;IAChC,QAAQ,CAAC,KAAK,YAAY;IAE1B,eAAe,IAAI,OAAO;IAI1B,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,YAAY;IAChD,QAAQ,CAAC,EAAE,EAAG,QAAQ,CAAU;IAChC,QAAQ,CAAC,KAAK,YAAY;IAE1B,eAAe,IAAI,OAAO;IAI1B,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAUtD,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpD,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAIlD,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CA2CtD"}
|
package/dist/adapters/cursor.js
CHANGED
|
@@ -21,10 +21,11 @@ export class CursorAdapter {
|
|
|
21
21
|
projectDir: opts.projectDir,
|
|
22
22
|
explicitPath: opts.explicitPath,
|
|
23
23
|
dryRun: opts.dryRun,
|
|
24
|
+
nativeHooks: opts.nativeHooks,
|
|
24
25
|
});
|
|
25
26
|
}
|
|
26
27
|
upsertMcp(opts) {
|
|
27
|
-
return upsertMcpConfig(opts.explicitPath, opts.dryRun);
|
|
28
|
+
return upsertMcpConfig(opts.explicitPath, opts.dryRun, opts.nativeDaemon);
|
|
28
29
|
}
|
|
29
30
|
upsertCloud(opts) {
|
|
30
31
|
return upsertEnvironmentConfig(opts.projectDir, opts.dryRun);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAYjC;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IACf,EAAE,GAAG,QAAiB,CAAC;IACvB,KAAK,GAAG,QAAQ,CAAC;IAE1B,eAAe;QACb,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,UAAU,CAAC,IAAoB;QAC7B,OAAO,gBAAgB,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/types.d.ts
CHANGED
|
@@ -55,11 +55,13 @@ export type UpsertHookOpts = {
|
|
|
55
55
|
projectDir?: string;
|
|
56
56
|
explicitPath?: string;
|
|
57
57
|
dryRun?: boolean;
|
|
58
|
+
nativeHooks?: boolean;
|
|
58
59
|
};
|
|
59
60
|
export type UpsertMcpOpts = {
|
|
60
61
|
explicitPath?: string;
|
|
61
62
|
projectDir?: string;
|
|
62
63
|
dryRun?: boolean;
|
|
64
|
+
nativeDaemon?: boolean;
|
|
63
65
|
};
|
|
64
66
|
export type UpsertCloudOpts = {
|
|
65
67
|
projectDir: string;
|
|
@@ -1 +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,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEvG,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;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,uFAAuF;IACvF,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,OAAO,CAAC;QACf,GAAG,EAAE,OAAO,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,gEAAgE;IAChE,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,OAAO,CAAC;QACf,GAAG,EAAE,OAAO,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,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;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type WorkspaceHints } from "./guard-workspace-session.js";
|
|
1
2
|
/** Canonical (IDE-neutral) subdir for guard runtime state under a workspace root. */
|
|
2
3
|
export declare const GUARD_DIR = ".praxis/guard";
|
|
3
4
|
/** Legacy Cursor-only subdir. Read for back-compat; new writes go to GUARD_DIR. */
|
|
@@ -10,10 +11,18 @@ export declare const LEGACY_GUARD_DIR = ".cursor/guard";
|
|
|
10
11
|
* 1. `.praxis/` — neutral marker (preferred; dropped by `auditor setup`)
|
|
11
12
|
* 2. `.cursor/hooks.json` — legacy Cursor marker
|
|
12
13
|
* 3. `.git/` — repo root fallback
|
|
14
|
+
*
|
|
15
|
+
* `~/.praxis` alone is skipped — it is global config, not a project workspace.
|
|
13
16
|
*/
|
|
14
17
|
export declare function resolveGuardStorageRoot(preferredCwd?: string): string;
|
|
18
|
+
/** Resolve guard storage from hook/MCP workspace hints (shared by hooks and guard MCP). */
|
|
19
|
+
export declare function resolveGuardStorageRootFromHints(hints?: WorkspaceHints): string;
|
|
20
|
+
/** Persist the active workspace so MCP guard can align tickets with hook cwd. */
|
|
21
|
+
export declare function rememberActiveWorkspace(hints?: WorkspaceHints): void;
|
|
15
22
|
/** Absolute path to the guard storage dir for a given preferred cwd. */
|
|
16
23
|
export declare function guardStorageDir(preferredCwd?: string): string;
|
|
17
24
|
/** Absolute path to a named subdir/file under the guard storage dir. */
|
|
18
25
|
export declare function guardSubpath(segment: string, preferredCwd?: string): string;
|
|
26
|
+
export type { WorkspaceHints } from "./guard-workspace-session.js";
|
|
27
|
+
export { resolvePreferredWorkspaceCwd } from "./guard-workspace-session.js";
|
|
19
28
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"guard-storage-root.d.ts","sourceRoot":"","sources":["../../src/bridge/guard-storage-root.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAEtC,qFAAqF;AACrF,eAAO,MAAM,SAAS,kBAAkB,CAAC;AAEzC,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAWhD;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBrE;AAED,2FAA2F;AAC3F,wBAAgB,gCAAgC,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,MAAM,CAE/E;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAQpE;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;AAED,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, renameSync } from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
2
3
|
import path from "node:path";
|
|
4
|
+
import { pickWorkspaceHint, resolvePreferredWorkspaceCwd, writeActiveWorkspaceSession, } from "./guard-workspace-session.js";
|
|
3
5
|
/** Canonical (IDE-neutral) subdir for guard runtime state under a workspace root. */
|
|
4
6
|
export const GUARD_DIR = ".praxis/guard";
|
|
5
7
|
/** Legacy Cursor-only subdir. Read for back-compat; new writes go to GUARD_DIR. */
|
|
6
8
|
export const LEGACY_GUARD_DIR = ".cursor/guard";
|
|
9
|
+
function isUserHomeDir(dir) {
|
|
10
|
+
return path.resolve(dir) === path.resolve(os.homedir());
|
|
11
|
+
}
|
|
12
|
+
/** `~/.praxis` holds global policies/daemon config — not the active repo workspace. */
|
|
13
|
+
function isGlobalHomePraxisMarker(dir) {
|
|
14
|
+
return isUserHomeDir(dir) && existsSync(path.join(dir, ".praxis"));
|
|
15
|
+
}
|
|
7
16
|
/**
|
|
8
17
|
* Resolve where guard runtime state lives. Hooks and MCP redeem must use the same root
|
|
9
18
|
* (workspace), not the subprocess cwd (e.g. `packages/auditor-cli`).
|
|
@@ -12,6 +21,8 @@ export const LEGACY_GUARD_DIR = ".cursor/guard";
|
|
|
12
21
|
* 1. `.praxis/` — neutral marker (preferred; dropped by `auditor setup`)
|
|
13
22
|
* 2. `.cursor/hooks.json` — legacy Cursor marker
|
|
14
23
|
* 3. `.git/` — repo root fallback
|
|
24
|
+
*
|
|
25
|
+
* `~/.praxis` alone is skipped — it is global config, not a project workspace.
|
|
15
26
|
*/
|
|
16
27
|
export function resolveGuardStorageRoot(preferredCwd) {
|
|
17
28
|
const override = process.env.PRAXIS_GUARD_STORAGE_ROOT?.trim();
|
|
@@ -20,7 +31,7 @@ export function resolveGuardStorageRoot(preferredCwd) {
|
|
|
20
31
|
let dir = preferredCwd?.trim() ? path.resolve(preferredCwd.trim()) : process.cwd();
|
|
21
32
|
const fsRoot = path.parse(dir).root;
|
|
22
33
|
while (true) {
|
|
23
|
-
if (existsSync(path.join(dir, ".praxis")))
|
|
34
|
+
if (existsSync(path.join(dir, ".praxis")) && !isGlobalHomePraxisMarker(dir))
|
|
24
35
|
return dir;
|
|
25
36
|
if (existsSync(path.join(dir, ".cursor", "hooks.json")))
|
|
26
37
|
return dir;
|
|
@@ -32,6 +43,20 @@ export function resolveGuardStorageRoot(preferredCwd) {
|
|
|
32
43
|
}
|
|
33
44
|
return preferredCwd?.trim() ? path.resolve(preferredCwd.trim()) : process.cwd();
|
|
34
45
|
}
|
|
46
|
+
/** Resolve guard storage from hook/MCP workspace hints (shared by hooks and guard MCP). */
|
|
47
|
+
export function resolveGuardStorageRootFromHints(hints) {
|
|
48
|
+
return resolveGuardStorageRoot(resolvePreferredWorkspaceCwd(hints));
|
|
49
|
+
}
|
|
50
|
+
/** Persist the active workspace so MCP guard can align tickets with hook cwd. */
|
|
51
|
+
export function rememberActiveWorkspace(hints) {
|
|
52
|
+
const preferred = pickWorkspaceHint(hints);
|
|
53
|
+
if (!preferred)
|
|
54
|
+
return;
|
|
55
|
+
const root = resolveGuardStorageRoot(preferred);
|
|
56
|
+
if (isGlobalHomePraxisMarker(root))
|
|
57
|
+
return;
|
|
58
|
+
writeActiveWorkspaceSession(root);
|
|
59
|
+
}
|
|
35
60
|
const migratedRoots = new Set();
|
|
36
61
|
/**
|
|
37
62
|
* One-shot, best-effort migration of `<root>/.cursor/guard` -> `<root>/.praxis/guard`.
|
|
@@ -68,4 +93,5 @@ export function guardStorageDir(preferredCwd) {
|
|
|
68
93
|
export function guardSubpath(segment, preferredCwd) {
|
|
69
94
|
return path.join(guardStorageDir(preferredCwd), segment);
|
|
70
95
|
}
|
|
96
|
+
export { resolvePreferredWorkspaceCwd } from "./guard-workspace-session.js";
|
|
71
97
|
//# 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,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,qFAAqF;AACrF,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;AAEzC,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"guard-storage-root.js","sourceRoot":"","sources":["../../src/bridge/guard-storage-root.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type WorkspaceHints = {
|
|
2
|
+
cwd?: string | null;
|
|
3
|
+
workspaceRoot?: string | null;
|
|
4
|
+
workspaceRoots?: readonly string[] | null;
|
|
5
|
+
};
|
|
6
|
+
export declare function pickWorkspaceHint(hints?: WorkspaceHints): string | undefined;
|
|
7
|
+
/** Best cwd hint for workspace-scoped guard state (hooks, MCP guard, tickets). */
|
|
8
|
+
export declare function resolvePreferredWorkspaceCwd(hints?: WorkspaceHints): string | undefined;
|
|
9
|
+
/** Persist resolved workspace root for MCP guard when hooks omit cwd. */
|
|
10
|
+
export declare function writeActiveWorkspaceSession(workspaceRoot: string): void;
|
|
11
|
+
//# sourceMappingURL=guard-workspace-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-workspace-session.d.ts","sourceRoot":"","sources":["../../src/bridge/guard-workspace-session.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CAC3C,CAAC;AA4CF,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAE5E;AAED,kFAAkF;AAClF,wBAAgB,4BAA4B,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAEvF;AAED,yEAAyE;AACzE,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAavE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
function activeWorkspaceFile() {
|
|
5
|
+
return path.join(os.homedir(), ".praxis", "guard", "active-workspace.json");
|
|
6
|
+
}
|
|
7
|
+
function pickExplicitWorkspaceHint(hints) {
|
|
8
|
+
const envRoot = process.env.PRAXIS_GUARD_WORKSPACE_ROOT?.trim();
|
|
9
|
+
if (envRoot)
|
|
10
|
+
return envRoot;
|
|
11
|
+
const cwd = hints?.cwd?.trim();
|
|
12
|
+
if (cwd)
|
|
13
|
+
return cwd;
|
|
14
|
+
const workspaceRoot = hints?.workspaceRoot?.trim();
|
|
15
|
+
if (workspaceRoot)
|
|
16
|
+
return workspaceRoot;
|
|
17
|
+
const roots = hints?.workspaceRoots;
|
|
18
|
+
if (Array.isArray(roots)) {
|
|
19
|
+
for (const root of roots) {
|
|
20
|
+
if (typeof root === "string" && root.trim())
|
|
21
|
+
return root.trim();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
function readActiveWorkspaceFromSession() {
|
|
27
|
+
try {
|
|
28
|
+
const raw = readFileSync(activeWorkspaceFile(), "utf8");
|
|
29
|
+
const parsed = JSON.parse(raw);
|
|
30
|
+
if (typeof parsed.workspace_root !== "string" || !parsed.workspace_root.trim()) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const root = path.resolve(parsed.workspace_root.trim());
|
|
34
|
+
if (!existsSync(root))
|
|
35
|
+
return undefined;
|
|
36
|
+
if (existsSync(path.join(root, ".git")) ||
|
|
37
|
+
existsSync(path.join(root, ".praxis")) ||
|
|
38
|
+
existsSync(path.join(root, ".cursor", "hooks.json"))) {
|
|
39
|
+
return root;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
export function pickWorkspaceHint(hints) {
|
|
48
|
+
return pickExplicitWorkspaceHint(hints);
|
|
49
|
+
}
|
|
50
|
+
/** Best cwd hint for workspace-scoped guard state (hooks, MCP guard, tickets). */
|
|
51
|
+
export function resolvePreferredWorkspaceCwd(hints) {
|
|
52
|
+
return pickExplicitWorkspaceHint(hints) ?? readActiveWorkspaceFromSession();
|
|
53
|
+
}
|
|
54
|
+
/** Persist resolved workspace root for MCP guard when hooks omit cwd. */
|
|
55
|
+
export function writeActiveWorkspaceSession(workspaceRoot) {
|
|
56
|
+
try {
|
|
57
|
+
const sessionFile = activeWorkspaceFile();
|
|
58
|
+
mkdirSync(path.dirname(sessionFile), { recursive: true });
|
|
59
|
+
writeFileSync(sessionFile, `${JSON.stringify({ workspace_root: workspaceRoot, updated_at: new Date().toISOString() }, null, 2)}\n`, "utf8");
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
63
|
+
process.stderr.write(`[auditor] active workspace cache skipped (${msg})\n`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=guard-workspace-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-workspace-session.js","sourceRoot":"","sources":["../../src/bridge/guard-workspace-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-config.d.ts","sourceRoot":"","sources":["../../../src/cli/cursor-config/hooks-config.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks-config.d.ts","sourceRoot":"","sources":["../../../src/cli/cursor-config/hooks-config.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AA0BhF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAajE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAa1E;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0E1F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAErE;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd,CAAC,CAMD;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC,CAE3F;AAED,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC,CAE3C;AAED,gEAAgE;AAChE,wBAAsB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG/E;AAED,gEAAgE;AAChE,wBAAsB,2BAA2B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxF;AAED,wBAAsB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS5F"}
|
|
@@ -2,6 +2,18 @@ import { HOOK_COMMAND_MCP, HOOK_COMMAND_SHELL } from "./constants.js";
|
|
|
2
2
|
import { isLegacyMcpHookCommand, isLegacyShellHookCommand } from "./legacy-guard-mcp.js";
|
|
3
3
|
import { cloneJsonMap, readJson, writeJson } from "./json-io.js";
|
|
4
4
|
import { resolveProjectHooksPath, resolveHooksConfigPath, resolveUserHooksPath, } from "./paths.js";
|
|
5
|
+
import { guardHookBinaryPath } from "../../daemon/paths.js";
|
|
6
|
+
function hookCommands(nativeHooks = false) {
|
|
7
|
+
if (!nativeHooks)
|
|
8
|
+
return { shell: HOOK_COMMAND_SHELL, mcp: HOOK_COMMAND_MCP };
|
|
9
|
+
const binary = JSON.stringify(guardHookBinaryPath());
|
|
10
|
+
return { shell: `${binary} before-shell`, mcp: `${binary} before-mcp` };
|
|
11
|
+
}
|
|
12
|
+
function isNativeHookCommand(command, hook) {
|
|
13
|
+
return (typeof command === "string" &&
|
|
14
|
+
(command.endsWith(`praxis-guard-hook\" ${hook}`) ||
|
|
15
|
+
command.endsWith(`praxis-guard-hook ${hook}`)));
|
|
16
|
+
}
|
|
5
17
|
function normalizeHooksConfig(existing) {
|
|
6
18
|
const base = existing ?? { version: 1, hooks: {} };
|
|
7
19
|
if (typeof base.version !== "number")
|
|
@@ -20,7 +32,8 @@ export function hasConfiguredHook(config) {
|
|
|
20
32
|
return false;
|
|
21
33
|
return arr.some((entry) => entry &&
|
|
22
34
|
typeof entry === "object" &&
|
|
23
|
-
entry.command === HOOK_COMMAND_SHELL
|
|
35
|
+
(entry.command === HOOK_COMMAND_SHELL ||
|
|
36
|
+
isNativeHookCommand(entry.command, "before-shell")) &&
|
|
24
37
|
entry.failClosed === true);
|
|
25
38
|
}
|
|
26
39
|
export function hasConfiguredBeforeMcpHook(config) {
|
|
@@ -32,7 +45,8 @@ export function hasConfiguredBeforeMcpHook(config) {
|
|
|
32
45
|
return false;
|
|
33
46
|
return arr.some((entry) => entry &&
|
|
34
47
|
typeof entry === "object" &&
|
|
35
|
-
entry.command === HOOK_COMMAND_MCP
|
|
48
|
+
(entry.command === HOOK_COMMAND_MCP ||
|
|
49
|
+
isNativeHookCommand(entry.command, "before-mcp")) &&
|
|
36
50
|
entry.failClosed === true);
|
|
37
51
|
}
|
|
38
52
|
export async function upsertHookConfig(opts) {
|
|
@@ -42,6 +56,7 @@ export async function upsertHookConfig(opts) {
|
|
|
42
56
|
const beforeJson = JSON.stringify(existing ?? {});
|
|
43
57
|
const config = normalizeHooksConfig(cloneJsonMap(existing));
|
|
44
58
|
const hooks = config.hooks;
|
|
59
|
+
const commands = hookCommands(opts.nativeHooks);
|
|
45
60
|
const before = Array.isArray(hooks.beforeShellExecution) ? [...hooks.beforeShellExecution] : [];
|
|
46
61
|
const rewritten = [];
|
|
47
62
|
let found = false;
|
|
@@ -51,17 +66,19 @@ export async function upsertHookConfig(opts) {
|
|
|
51
66
|
continue;
|
|
52
67
|
}
|
|
53
68
|
const map = item;
|
|
54
|
-
if (map.command === HOOK_COMMAND_SHELL ||
|
|
69
|
+
if (map.command === HOOK_COMMAND_SHELL ||
|
|
70
|
+
isNativeHookCommand(map.command, "before-shell") ||
|
|
71
|
+
isLegacyShellHookCommand(map.command)) {
|
|
55
72
|
if (!found) {
|
|
56
73
|
found = true;
|
|
57
|
-
rewritten.push({ ...map, command:
|
|
74
|
+
rewritten.push({ ...map, command: commands.shell, failClosed: true });
|
|
58
75
|
}
|
|
59
76
|
continue;
|
|
60
77
|
}
|
|
61
78
|
rewritten.push(item);
|
|
62
79
|
}
|
|
63
80
|
if (!found)
|
|
64
|
-
rewritten.push({ command:
|
|
81
|
+
rewritten.push({ command: commands.shell, failClosed: true });
|
|
65
82
|
hooks.beforeShellExecution = rewritten;
|
|
66
83
|
const beforeMcp = Array.isArray(hooks.beforeMCPExecution) ? [...hooks.beforeMCPExecution] : [];
|
|
67
84
|
const rewrittenMcp = [];
|
|
@@ -72,17 +89,19 @@ export async function upsertHookConfig(opts) {
|
|
|
72
89
|
continue;
|
|
73
90
|
}
|
|
74
91
|
const map = item;
|
|
75
|
-
if (map.command === HOOK_COMMAND_MCP ||
|
|
92
|
+
if (map.command === HOOK_COMMAND_MCP ||
|
|
93
|
+
isNativeHookCommand(map.command, "before-mcp") ||
|
|
94
|
+
isLegacyMcpHookCommand(map.command)) {
|
|
76
95
|
if (!foundMcp) {
|
|
77
96
|
foundMcp = true;
|
|
78
|
-
rewrittenMcp.push({ ...map, command:
|
|
97
|
+
rewrittenMcp.push({ ...map, command: commands.mcp, failClosed: true });
|
|
79
98
|
}
|
|
80
99
|
continue;
|
|
81
100
|
}
|
|
82
101
|
rewrittenMcp.push(item);
|
|
83
102
|
}
|
|
84
103
|
if (!foundMcp)
|
|
85
|
-
rewrittenMcp.push({ command:
|
|
104
|
+
rewrittenMcp.push({ command: commands.mcp, failClosed: true });
|
|
86
105
|
hooks.beforeMCPExecution = rewrittenMcp;
|
|
87
106
|
const changed = beforeJson !== JSON.stringify(config);
|
|
88
107
|
if (changed && !dryRun) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-config.js","sourceRoot":"","sources":["../../../src/cli/cursor-config/hooks-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks-config.js","sourceRoot":"","sources":["../../../src/cli/cursor-config/hooks-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { JsonMap, SetupResult } from "./types.js";
|
|
2
2
|
export declare function hasConfiguredMcpServer(config: JsonMap | null): boolean;
|
|
3
|
-
export declare function upsertMcpConfig(explicitPath?: string, dryRun?: boolean): Promise<SetupResult>;
|
|
3
|
+
export declare function upsertMcpConfig(explicitPath?: string, dryRun?: boolean, nativeDaemon?: boolean): Promise<SetupResult>;
|
|
4
4
|
export declare function readMcpConfigured(explicitPath?: string): Promise<boolean>;
|
|
5
5
|
//# sourceMappingURL=mcp-config.d.ts.map
|
|
@@ -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;AAcD,wBAAsB,eAAe,CACnC,YAAY,CAAC,EAAE,MAAM,EACrB,MAAM,UAAQ,EACd,YAAY,UAAQ,GACnB,OAAO,CAAC,WAAW,CAAC,CAoCtB;AAED,wBAAsB,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG/E"}
|
|
@@ -13,14 +13,19 @@ 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) {
|
|
16
|
+
function ensurePraxisGuardEntry(current, nativeDaemon = false) {
|
|
17
17
|
const base = current ?? {};
|
|
18
18
|
const existingEnv = base.env && typeof base.env === "object" && !Array.isArray(base.env)
|
|
19
19
|
? base.env
|
|
20
20
|
: {};
|
|
21
|
-
|
|
21
|
+
const env = { ...existingEnv, PRAXIS_AGENT_HOST: CURSOR_AGENT_HOST };
|
|
22
|
+
if (nativeDaemon)
|
|
23
|
+
env.PRAXIS_GUARD_DAEMON = "1";
|
|
24
|
+
else
|
|
25
|
+
delete env.PRAXIS_GUARD_DAEMON;
|
|
26
|
+
return { ...base, command: "auditor", args: ["mcp"], env };
|
|
22
27
|
}
|
|
23
|
-
export async function upsertMcpConfig(explicitPath, dryRun = false) {
|
|
28
|
+
export async function upsertMcpConfig(explicitPath, dryRun = false, nativeDaemon = false) {
|
|
24
29
|
const mcpPath = resolveUserMcpConfigPath(explicitPath);
|
|
25
30
|
const existing = await readJson(mcpPath);
|
|
26
31
|
const beforeJson = JSON.stringify(existing ?? {});
|
|
@@ -32,11 +37,11 @@ export async function upsertMcpConfig(explicitPath, dryRun = false) {
|
|
|
32
37
|
for (const [key, server] of Object.entries(servers)) {
|
|
33
38
|
if (key === MCP_SERVER_KEY || isLegacyPraxisGuardMcpServer(server)) {
|
|
34
39
|
const current = server && typeof server === "object" ? server : undefined;
|
|
35
|
-
servers[key === MCP_SERVER_KEY ? MCP_SERVER_KEY : key] = ensurePraxisGuardEntry(current);
|
|
40
|
+
servers[key === MCP_SERVER_KEY ? MCP_SERVER_KEY : key] = ensurePraxisGuardEntry(current, nativeDaemon);
|
|
36
41
|
}
|
|
37
42
|
}
|
|
38
43
|
if (!servers[MCP_SERVER_KEY]) {
|
|
39
|
-
servers[MCP_SERVER_KEY] = ensurePraxisGuardEntry(undefined);
|
|
44
|
+
servers[MCP_SERVER_KEY] = ensurePraxisGuardEntry(undefined, nativeDaemon);
|
|
40
45
|
}
|
|
41
46
|
const changed = beforeJson !== JSON.stringify(config);
|
|
42
47
|
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,iBAAiB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGtD,MAAM,UAAU,sBAAsB,CAAC,MAAsB;IAC3D,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAY,CAAC;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,GAAG,GAAG,MAAiB,CAAC;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;AACpG,CAAC;AAED,SAAS,sBAAsB,CAAC,OAA4B;
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/cli/cursor-config/mcp-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/cursor-config/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnD,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,eAAe,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/cursor-config/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnD,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,eAAe,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"AAMA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BpE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { daemonStatus, startDaemon, stopDaemon } from "../daemon/lifecycle.js";
|
|
3
|
+
import { guardDaemonBinaryPath } from "../daemon/paths.js";
|
|
4
|
+
import { installDaemonService, uninstallDaemonService } from "../daemon/service.js";
|
|
5
|
+
export async function runDaemonCommand(args) {
|
|
6
|
+
const command = args[0] ?? "status";
|
|
7
|
+
if (command === "start") {
|
|
8
|
+
await startDaemon();
|
|
9
|
+
process.stdout.write("Praxis Guard daemon started.\n");
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (command === "stop") {
|
|
13
|
+
await stopDaemon();
|
|
14
|
+
process.stdout.write("Praxis Guard daemon stopped.\n");
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (command === "status") {
|
|
18
|
+
process.stdout.write(`${JSON.stringify(await daemonStatus(), null, 2)}\n`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (command === "path") {
|
|
22
|
+
process.stdout.write(`${guardDaemonBinaryPath()}\n`);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (command === "install") {
|
|
26
|
+
process.stdout.write(`Installed daemon service at ${await installDaemonService()}\n`);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (command === "uninstall") {
|
|
30
|
+
process.stdout.write(`Removed daemon service at ${await uninstallDaemonService()}\n`);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
throw new Error(`Unknown daemon command: ${command}`);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=daemon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEpF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IACpC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,WAAW,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,UAAU,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,qBAAqB,EAAE,IAAI,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,MAAM,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,MAAM,sBAAsB,EAAE,IAAI,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC"}
|
package/dist/cli/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAwEA,wBAAgB,SAAS,IAAI,IAAI,CAEhC"}
|
package/dist/cli/help.js
CHANGED
|
@@ -2,9 +2,9 @@ import process from "node:process";
|
|
|
2
2
|
const HELP_TEXT = `auditor — Praxis guard CLI
|
|
3
3
|
|
|
4
4
|
Usage:
|
|
5
|
-
auditor setup all Configure all detected agents (use --for
|
|
6
|
-
auditor setup hook Configure
|
|
7
|
-
auditor setup mcp Configure MCP
|
|
5
|
+
auditor setup all Configure all detected agents (use --native-hooks --for=cursor for Go shim)
|
|
6
|
+
auditor setup hook Configure hooks (--native-hooks currently supports Cursor)
|
|
7
|
+
auditor setup mcp Configure MCP (--native-daemon currently supports Cursor)
|
|
8
8
|
auditor setup cloud Configure .cursor/environment.json for Cloud Agents
|
|
9
9
|
auditor setup doctor Validate configured agent setup, including project-local Codex
|
|
10
10
|
auditor setup codex Configure repo-local .codex MCP + hooks (--project, --dry-run)
|
|
@@ -16,6 +16,12 @@ Usage:
|
|
|
16
16
|
auditor token create Generate a new bearer token (for Cloud Agents, CI, etc.)
|
|
17
17
|
auditor whoami Show signed-in uid, email, and token source (calls Cloud Function)
|
|
18
18
|
auditor mcp MCP stdio server (tools: guard, guard_wait) — use in Cursor mcp.json
|
|
19
|
+
auditor daemon start Start the native Praxis Guard daemon
|
|
20
|
+
auditor daemon stop Stop the native Praxis Guard daemon
|
|
21
|
+
auditor daemon status Show daemon health and protocol version
|
|
22
|
+
auditor daemon path Print the expected native daemon binary path
|
|
23
|
+
auditor daemon install Install and start a launchd/systemd user service
|
|
24
|
+
auditor daemon uninstall Stop and remove the launchd/systemd user service
|
|
19
25
|
auditor approvals list List pending approval requests
|
|
20
26
|
auditor approvals open <id> Print approval URL for a request
|
|
21
27
|
auditor approvals approve <id> Dev-only: approve request (GUARD_APPROVAL_DEV=1)
|
|
@@ -55,6 +61,10 @@ Env (all optional):
|
|
|
55
61
|
PRAXIS_POLICIES_V1_PATH Override path for policies.v1.json (default: ~/.praxis/policies.v1.json).
|
|
56
62
|
PRAXIS_POLICIES_META_PATH Override path for policies.v1.meta.json (default beside policy file).
|
|
57
63
|
PRAXIS_GUARD_STORAGE_ROOT Workspace root for .praxis/guard tickets/pending (auto-detected from cwd).
|
|
64
|
+
PRAXIS_GUARD_DAEMON Set to 1 to delegate MCP policy evaluation to the native daemon.
|
|
65
|
+
PRAXIS_GUARD_SOCKET Override the daemon Unix socket path.
|
|
66
|
+
PRAXIS_GUARD_DAEMON_BINARY Override the praxis-guard-daemon binary path.
|
|
67
|
+
PRAXIS_GUARD_HOOK_BINARY Override the praxis-guard-hook binary path.
|
|
58
68
|
PRAXIS_HOOK_INLINE_APPROVAL Set to 0 to disable hook-inline approval request on MUTATE deny (default: on).
|
|
59
69
|
PRAXIS_HOOK_INLINE_APPROVAL_TIMEOUT_MS Max ms for inline approval HTTP from hooks (default: 1200).
|
|
60
70
|
`;
|
package/dist/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEjB,CAAC;AAEF,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/cli/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAQA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAQA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmI1D"}
|
package/dist/cli/main.js
CHANGED
|
@@ -101,6 +101,18 @@ export async function runCli(argv) {
|
|
|
101
101
|
await runMcpStdioServer();
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
|
+
if (a0 === "daemon") {
|
|
105
|
+
const { runDaemonCommand } = await import("./daemon.js");
|
|
106
|
+
try {
|
|
107
|
+
await runDaemonCommand(argv.slice(1));
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
111
|
+
process.stderr.write(`${msg}\n`);
|
|
112
|
+
process.exitCode = 1;
|
|
113
|
+
}
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
104
116
|
if (a0 === "hook" && (await dispatchHookCommand(a1)))
|
|
105
117
|
return;
|
|
106
118
|
if (a0 === "approvals") {
|