@praxis.guard/auditor-cli 0.0.61 → 0.0.63
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/approval/mcp-flow-create.d.ts +3 -0
- package/dist/approval/mcp-flow-create.d.ts.map +1 -0
- package/dist/approval/mcp-flow-create.js +76 -0
- package/dist/approval/mcp-flow-create.js.map +1 -0
- package/dist/approval/mcp-flow-existing.d.ts +14 -0
- package/dist/approval/mcp-flow-existing.d.ts.map +1 -0
- package/dist/approval/mcp-flow-existing.js +43 -0
- package/dist/approval/mcp-flow-existing.js.map +1 -0
- package/dist/approval/mcp-flow-outcome.d.ts +5 -0
- package/dist/approval/mcp-flow-outcome.d.ts.map +1 -0
- package/dist/approval/mcp-flow-outcome.js +19 -0
- package/dist/approval/mcp-flow-outcome.js.map +1 -0
- package/dist/approval/mcp-flow-pending.d.ts +7 -0
- package/dist/approval/mcp-flow-pending.d.ts.map +1 -0
- package/dist/approval/mcp-flow-pending.js +25 -0
- package/dist/approval/mcp-flow-pending.js.map +1 -0
- package/dist/approval/mcp-flow-redeem.d.ts +13 -0
- package/dist/approval/mcp-flow-redeem.d.ts.map +1 -0
- package/dist/approval/mcp-flow-redeem.js +20 -0
- package/dist/approval/mcp-flow-redeem.js.map +1 -0
- package/dist/approval/mcp-flow.d.ts +6 -28
- package/dist/approval/mcp-flow.d.ts.map +1 -1
- package/dist/approval/mcp-flow.js +21 -129
- package/dist/approval/mcp-flow.js.map +1 -1
- package/dist/approval/mcp-flow.types.d.ts +42 -0
- package/dist/approval/mcp-flow.types.d.ts.map +1 -0
- package/dist/approval/mcp-flow.types.js +2 -0
- package/dist/approval/mcp-flow.types.js.map +1 -0
- package/dist/cli/doctor-adapter-lines.d.ts +4 -0
- package/dist/cli/doctor-adapter-lines.d.ts.map +1 -0
- package/dist/cli/doctor-adapter-lines.js +47 -0
- package/dist/cli/doctor-adapter-lines.js.map +1 -0
- package/dist/cli/doctor-notifications.d.ts +5 -0
- package/dist/cli/doctor-notifications.d.ts.map +1 -0
- package/dist/cli/doctor-notifications.js +10 -0
- package/dist/cli/doctor-notifications.js.map +1 -0
- package/dist/cli/doctor-remote.d.ts +3 -0
- package/dist/cli/doctor-remote.d.ts.map +1 -0
- package/dist/cli/doctor-remote.js +48 -0
- package/dist/cli/doctor-remote.js.map +1 -0
- package/dist/cli/doctor.d.ts +1 -12
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +46 -111
- package/dist/cli/doctor.js.map +1 -1
- package/dist/mcp/evaluate-guard-approval.d.ts +47 -0
- package/dist/mcp/evaluate-guard-approval.d.ts.map +1 -0
- package/dist/mcp/evaluate-guard-approval.js +80 -0
- package/dist/mcp/evaluate-guard-approval.js.map +1 -0
- package/dist/mcp/evaluate-guard-policy.d.ts +3 -0
- package/dist/mcp/evaluate-guard-policy.d.ts.map +1 -0
- package/dist/mcp/evaluate-guard-policy.js +6 -0
- package/dist/mcp/evaluate-guard-policy.js.map +1 -0
- package/dist/mcp/evaluate-guard-proposal.d.ts +16 -0
- package/dist/mcp/evaluate-guard-proposal.d.ts.map +1 -0
- package/dist/mcp/evaluate-guard-proposal.js +57 -0
- package/dist/mcp/evaluate-guard-proposal.js.map +1 -0
- package/dist/mcp/evaluate-guard-run.d.ts +23 -0
- package/dist/mcp/evaluate-guard-run.d.ts.map +1 -0
- package/dist/mcp/evaluate-guard-run.js +75 -0
- package/dist/mcp/evaluate-guard-run.js.map +1 -0
- package/dist/mcp/evaluate-guard-telemetry.d.ts +22 -0
- package/dist/mcp/evaluate-guard-telemetry.d.ts.map +1 -0
- package/dist/mcp/evaluate-guard-telemetry.js +38 -0
- package/dist/mcp/evaluate-guard-telemetry.js.map +1 -0
- package/dist/mcp/evaluate-guard-tier.d.ts +18 -0
- package/dist/mcp/evaluate-guard-tier.d.ts.map +1 -0
- package/dist/mcp/evaluate-guard-tier.js +42 -0
- package/dist/mcp/evaluate-guard-tier.js.map +1 -0
- package/dist/mcp/evaluate-guard.d.ts +2 -5
- package/dist/mcp/evaluate-guard.d.ts.map +1 -1
- package/dist/mcp/evaluate-guard.js +18 -195
- package/dist/mcp/evaluate-guard.js.map +1 -1
- package/dist/mcp/gateway-call-handler.d.ts +9 -0
- package/dist/mcp/gateway-call-handler.d.ts.map +1 -0
- package/dist/mcp/gateway-call-handler.js +61 -0
- package/dist/mcp/gateway-call-handler.js.map +1 -0
- package/dist/mcp/gateway-call-results.d.ts +5 -0
- package/dist/mcp/gateway-call-results.d.ts.map +1 -0
- package/dist/mcp/gateway-call-results.js +14 -0
- package/dist/mcp/gateway-call-results.js.map +1 -0
- package/dist/mcp/gateway-connection-lib.d.ts +54 -0
- package/dist/mcp/gateway-connection-lib.d.ts.map +1 -0
- package/dist/mcp/gateway-connection-lib.js +39 -0
- package/dist/mcp/gateway-connection-lib.js.map +1 -0
- package/dist/mcp/gateway-connection.d.ts +16 -0
- package/dist/mcp/gateway-connection.d.ts.map +1 -0
- package/dist/mcp/gateway-connection.js +54 -0
- package/dist/mcp/gateway-connection.js.map +1 -0
- package/dist/mcp/gateway-log.d.ts +5 -0
- package/dist/mcp/gateway-log.d.ts.map +1 -0
- package/dist/mcp/gateway-log.js +9 -0
- package/dist/mcp/gateway-log.js.map +1 -0
- package/dist/mcp/gateway.d.ts +2 -20
- package/dist/mcp/gateway.d.ts.map +1 -1
- package/dist/mcp/gateway.js +18 -186
- package/dist/mcp/gateway.js.map +1 -1
- package/dist/policies.v1.json +6 -0
- 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 +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
function pushHookScopeLines(lines, scope, entry) {
|
|
2
|
+
const ready = entry.shell && entry.mcp;
|
|
3
|
+
lines.push(` hook (${scope}): ${ready ? "configured" : `missing (run \`auditor setup hook${scope === "project" ? " --project" : ""}\`)`} (${entry.path})`);
|
|
4
|
+
lines.push(` ${entry.shellLabel ?? "beforeShell"}: ${entry.shell ? "ok" : "missing"} | ${entry.mcpLabel ?? "beforeMCP"}: ${entry.mcp ? "ok" : "missing"}`);
|
|
5
|
+
}
|
|
6
|
+
function pushHookLines(lines, adapter, status) {
|
|
7
|
+
const globalEntry = status.hook?.global;
|
|
8
|
+
const projectEntry = status.hook?.project;
|
|
9
|
+
if (globalEntry && adapter.preferredHookScope !== "project") {
|
|
10
|
+
pushHookScopeLines(lines, "global", globalEntry);
|
|
11
|
+
}
|
|
12
|
+
if (projectEntry) {
|
|
13
|
+
pushHookScopeLines(lines, "project", projectEntry);
|
|
14
|
+
}
|
|
15
|
+
else if (adapter.preferredHookScope !== "project") {
|
|
16
|
+
lines.push(" hook (project): none");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function adapterReady(adapter, status) {
|
|
20
|
+
if (status.ready === false)
|
|
21
|
+
return false;
|
|
22
|
+
const hookStatus = adapter.preferredHookScope === "project" ? status.hook?.project : status.hook?.global;
|
|
23
|
+
const hookReady = status.hookReady ?? Boolean(hookStatus?.shell && hookStatus.mcp);
|
|
24
|
+
if (adapter.upsertHook && !hookReady)
|
|
25
|
+
return false;
|
|
26
|
+
if (!status.mcp?.configured)
|
|
27
|
+
return false;
|
|
28
|
+
if (adapter.upsertCloud && !status.cloud?.configured)
|
|
29
|
+
return false;
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
export function pushAdapterLines(lines, adapter, status) {
|
|
33
|
+
const installedTag = status.installed ? "installed" : "not installed";
|
|
34
|
+
lines.push(` ${adapter.label} (${installedTag}):`);
|
|
35
|
+
if (adapter.upsertHook)
|
|
36
|
+
pushHookLines(lines, adapter, status);
|
|
37
|
+
const m = status.mcp ?? { configured: false, path: "" };
|
|
38
|
+
lines.push(` mcp: ${m.configured ? "configured" : "missing (run \`auditor setup mcp\`)"} (${m.path})`);
|
|
39
|
+
if (adapter.upsertCloud) {
|
|
40
|
+
const c = status.cloud ?? { configured: false, path: "" };
|
|
41
|
+
lines.push(` cloud (project): ${c.configured ? "configured" : "missing (run \`auditor setup cloud\`)"} (${c.path})`);
|
|
42
|
+
}
|
|
43
|
+
for (const w of status.warnings) {
|
|
44
|
+
lines.push(` warn: ${w}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=doctor-adapter-lines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-adapter-lines.js","sourceRoot":"","sources":["../../src/cli/doctor-adapter-lines.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-notifications.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-notifications.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,CACrC,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACxD,MAAM,CAQR"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function formatNotificationsLine(push) {
|
|
2
|
+
const enabled = push?.enabled === true;
|
|
3
|
+
const devices = push?.devices ?? 0;
|
|
4
|
+
if (enabled && devices > 0) {
|
|
5
|
+
return `Notifications: ready (push on, ${devices} device${devices === 1 ? "" : "s"}).`;
|
|
6
|
+
}
|
|
7
|
+
const reason = !enabled ? "push routing off" : "no enabled device";
|
|
8
|
+
return `Notifications: not set up (${reason}). Enable at https://app.usepraxis.tech/app/account so you get approval alerts.`;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=doctor-notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-notifications.js","sourceRoot":"","sources":["../../src/cli/doctor-notifications.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,uBAAuB,CACrC,IAAyD;IAEzD,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC;IACnC,IAAI,OAAO,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,kCAAkC,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACzF,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACnE,OAAO,8BAA8B,MAAM,iFAAiF,CAAC;AAC/H,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-remote.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-remote.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { fetchJson } from "./http-fetch.js";
|
|
2
|
+
import { functionsHttpUrl } from "./policies-callable-url.js";
|
|
3
|
+
import { formatNotificationsLine } from "./doctor-notifications.js";
|
|
4
|
+
export async function appendDoctorRemoteLines(lines, token, meta) {
|
|
5
|
+
const revisionHttpUrl = functionsHttpUrl("policiesGetRevisionHttp");
|
|
6
|
+
if (token) {
|
|
7
|
+
try {
|
|
8
|
+
const rev = await fetchJson({
|
|
9
|
+
url: revisionHttpUrl,
|
|
10
|
+
bearerToken: token,
|
|
11
|
+
});
|
|
12
|
+
const remote = rev.revision;
|
|
13
|
+
lines.push(`Remote Firestore revision: ${remote}`);
|
|
14
|
+
if (meta) {
|
|
15
|
+
lines.push(meta.revision === remote
|
|
16
|
+
? "Policies: in sync with Firestore revision."
|
|
17
|
+
: `Policies: update available (local ${meta.revision} vs remote ${remote}).`);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
lines.push(`Policies: remote revision ${remote} (no local sync meta).`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
25
|
+
lines.push(`Remote revision check failed: ${msg}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
lines.push("Remote revision: (skip — not authenticated; run `auditor login`)");
|
|
30
|
+
}
|
|
31
|
+
if (token) {
|
|
32
|
+
try {
|
|
33
|
+
const who = await fetchJson({
|
|
34
|
+
url: functionsHttpUrl("guardWhoAmIHttp"),
|
|
35
|
+
bearerToken: token,
|
|
36
|
+
});
|
|
37
|
+
lines.push(formatNotificationsLine(who.push));
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
41
|
+
lines.push(`Notifications: check failed (${msg})`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
lines.push("Notifications: (skip, not authenticated)");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=doctor-remote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-remote.js","sourceRoot":"","sources":["../../src/cli/doctor-remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAe,EACf,KAAyB,EACzB,IAA6B;IAE7B,MAAM,eAAe,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;IAEpE,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAuB;gBAChD,GAAG,EAAE,eAAe;gBACpB,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAC;YACnD,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,QAAQ,KAAK,MAAM;oBACtB,CAAC,CAAC,4CAA4C;oBAC9C,CAAC,CAAC,qCAAqC,IAAI,CAAC,QAAQ,cAAc,MAAM,IAAI,CAC/E,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,6BAA6B,MAAM,wBAAwB,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAqD;gBAC9E,GAAG,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;gBACxC,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,gCAAgC,GAAG,GAAG,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
|
package/dist/cli/doctor.d.ts
CHANGED
|
@@ -4,21 +4,10 @@ export type Readiness = {
|
|
|
4
4
|
readySetup: boolean;
|
|
5
5
|
enforced: boolean;
|
|
6
6
|
};
|
|
7
|
-
/**
|
|
8
|
-
* Compute doctor readiness from adapter statuses + auth.
|
|
9
|
-
*
|
|
10
|
-
* readySetup : at least one adapter has every declared surface configured.
|
|
11
|
-
* enforced : at least one READY adapter declares a pre-tool hook (Cursor /
|
|
12
|
-
* Claude Code / Codex). adapterReady already requires that hook to
|
|
13
|
-
* be configured, so a ready hook-adapter is genuinely enforcing.
|
|
14
|
-
* If the only ready adapters lack upsertHook (Claude Desktop is
|
|
15
|
-
* MCP-only), governance is advisory: the model must choose to call
|
|
16
|
-
* guard and can be bypassed.
|
|
17
|
-
* ready : readySetup AND authenticated.
|
|
18
|
-
*/
|
|
19
7
|
export declare function resolveReadiness(adapterStatuses: {
|
|
20
8
|
adapter: AgentAdapter;
|
|
21
9
|
status: AgentStatus;
|
|
22
10
|
}[], hasAuth: boolean): Readiness;
|
|
11
|
+
export { formatNotificationsLine } from "./doctor-notifications.js";
|
|
23
12
|
export declare function runDoctor(): Promise<void>;
|
|
24
13
|
//# sourceMappingURL=doctor.d.ts.map
|
package/dist/cli/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAWtE,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnF,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,EAAE,EACjE,OAAO,EAAE,OAAO,GACf,SAAS,CAOX;AAED,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAiFpE,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB/C"}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -6,94 +6,38 @@ import { inspectRequestBindingIndex } from "../bridge/request-binding-index.js";
|
|
|
6
6
|
import { executionTicketDir } from "../bridge/execution-ticket.js";
|
|
7
7
|
import { shellBridgeDir } from "../bridge/shell-approval-bridge.js";
|
|
8
8
|
import { guardSubpath } from "../bridge/guard-storage-root.js";
|
|
9
|
-
import { fetchJson } from "./http-fetch.js";
|
|
10
9
|
import { credentialsPath, readCredentialsFileMode, resolveGuardToken } from "./credentials.js";
|
|
11
10
|
import { getInstallId } from "./install-id.js";
|
|
12
|
-
import { functionsHttpUrl } from "./policies-callable-url.js";
|
|
13
11
|
import { readPoliciesMetaFile } from "./policies-meta.js";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
17
|
-
* readySetup : at least one adapter has every declared surface configured.
|
|
18
|
-
* enforced : at least one READY adapter declares a pre-tool hook (Cursor /
|
|
19
|
-
* Claude Code / Codex). adapterReady already requires that hook to
|
|
20
|
-
* be configured, so a ready hook-adapter is genuinely enforcing.
|
|
21
|
-
* If the only ready adapters lack upsertHook (Claude Desktop is
|
|
22
|
-
* MCP-only), governance is advisory: the model must choose to call
|
|
23
|
-
* guard and can be bypassed.
|
|
24
|
-
* ready : readySetup AND authenticated.
|
|
25
|
-
*/
|
|
12
|
+
import { adapterReady, pushAdapterLines } from "./doctor-adapter-lines.js";
|
|
13
|
+
import { appendDoctorRemoteLines } from "./doctor-remote.js";
|
|
26
14
|
export function resolveReadiness(adapterStatuses, hasAuth) {
|
|
27
15
|
const readyAdapters = adapterStatuses.filter(({ adapter, status }) => adapterReady(adapter, status));
|
|
28
16
|
const readySetup = readyAdapters.length > 0;
|
|
29
17
|
const enforced = readyAdapters.some(({ adapter }) => typeof adapter.upsertHook === "function");
|
|
30
18
|
return { ready: readySetup && hasAuth, readySetup, enforced };
|
|
31
19
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (!status.mcp?.configured)
|
|
42
|
-
return false;
|
|
43
|
-
if (adapter.upsertCloud && !status.cloud?.configured)
|
|
44
|
-
return false;
|
|
45
|
-
return true;
|
|
20
|
+
export { formatNotificationsLine } from "./doctor-notifications.js";
|
|
21
|
+
function policySourceLabel(meta, policyPath) {
|
|
22
|
+
if (process.env.PRAXIS_POLICIES_V1_PATH?.trim())
|
|
23
|
+
return "env:PRAXIS_POLICIES_V1_PATH";
|
|
24
|
+
if (meta?.source === "bundled-bootstrap")
|
|
25
|
+
return "~/.praxis (bootstrapped from bundled policy)";
|
|
26
|
+
if (existsSync(policyPath))
|
|
27
|
+
return "~/.praxis (local canonical file)";
|
|
28
|
+
return "missing (will bootstrap from bundled on first load)";
|
|
46
29
|
}
|
|
47
|
-
function
|
|
48
|
-
const installedTag = status.installed ? "installed" : "not installed";
|
|
49
|
-
lines.push(` ${adapter.label} (${installedTag}):`);
|
|
50
|
-
if (adapter.upsertHook) {
|
|
51
|
-
const globalEntry = status.hook?.global;
|
|
52
|
-
const projectEntry = status.hook?.project;
|
|
53
|
-
if (globalEntry && adapter.preferredHookScope !== "project") {
|
|
54
|
-
const ready = globalEntry.shell && globalEntry.mcp;
|
|
55
|
-
lines.push(` hook (global): ${ready ? "configured" : "missing (run \`auditor setup hook\`)"} (${globalEntry.path})`);
|
|
56
|
-
lines.push(` ${globalEntry.shellLabel ?? "beforeShell"}: ${globalEntry.shell ? "ok" : "missing"} | ${globalEntry.mcpLabel ?? "beforeMCP"}: ${globalEntry.mcp ? "ok" : "missing"}`);
|
|
57
|
-
}
|
|
58
|
-
if (projectEntry) {
|
|
59
|
-
const ready = projectEntry.shell && projectEntry.mcp;
|
|
60
|
-
lines.push(` hook (project): ${ready ? "configured" : "missing (run \`auditor setup hook --project\`)"} (${projectEntry.path})`);
|
|
61
|
-
lines.push(` ${projectEntry.shellLabel ?? "beforeShell"}: ${projectEntry.shell ? "ok" : "missing"} | ${projectEntry.mcpLabel ?? "beforeMCP"}: ${projectEntry.mcp ? "ok" : "missing"}`);
|
|
62
|
-
}
|
|
63
|
-
else if (adapter.preferredHookScope !== "project") {
|
|
64
|
-
lines.push(" hook (project): none");
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
const m = status.mcp ?? { configured: false, path: "" };
|
|
68
|
-
lines.push(` mcp: ${m.configured ? "configured" : "missing (run \`auditor setup mcp\`)"} (${m.path})`);
|
|
69
|
-
if (adapter.upsertCloud) {
|
|
70
|
-
const c = status.cloud ?? { configured: false, path: "" };
|
|
71
|
-
lines.push(` cloud (project): ${c.configured ? "configured" : "missing (run \`auditor setup cloud\`)"} (${c.path})`);
|
|
72
|
-
}
|
|
73
|
-
for (const w of status.warnings) {
|
|
74
|
-
lines.push(` warn: ${w}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
export async function runDoctor() {
|
|
78
|
-
const cwd = process.cwd();
|
|
79
|
-
const auditPath = process.env.PRAXIS_GUARD_AUDIT_LOG ?? guardSubpath("audit.jsonl", cwd);
|
|
30
|
+
function buildDoctorHeaderLines(cwd, meta) {
|
|
80
31
|
const policyPath = process.env.PRAXIS_POLICIES_V1_PATH?.trim() || defaultPoliciesV1Path();
|
|
81
32
|
const metaPath = process.env.PRAXIS_POLICIES_META_PATH?.trim() || defaultPoliciesMetaPath();
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
? "env:PRAXIS_POLICIES_V1_PATH"
|
|
85
|
-
: meta?.source === "bundled-bootstrap"
|
|
86
|
-
? "~/.praxis (bootstrapped from bundled policy)"
|
|
87
|
-
: existsSync(policyPath)
|
|
88
|
-
? "~/.praxis (local canonical file)"
|
|
89
|
-
: "missing (will bootstrap from bundled on first load)";
|
|
90
|
-
const lines = [
|
|
33
|
+
const auditPath = process.env.PRAXIS_GUARD_AUDIT_LOG ?? guardSubpath("audit.jsonl", cwd);
|
|
34
|
+
return [
|
|
91
35
|
`auditor doctor`,
|
|
92
36
|
`Install ID: ${getInstallId()}`,
|
|
93
37
|
`MCP stdio: auditor mcp (Cursor/Codex: command auditor, args [mcp])`,
|
|
94
38
|
`Node: ${process.version}`,
|
|
95
39
|
`Policy file: ${policyPath}`,
|
|
96
|
-
`Policy source: ${
|
|
40
|
+
`Policy source: ${policySourceLabel(meta, policyPath)}`,
|
|
97
41
|
`Policies meta: ${metaPath}`,
|
|
98
42
|
meta
|
|
99
43
|
? ` Local synced revision: ${meta.revision}${meta.syncedAt ? ` (at ${meta.syncedAt})` : ""}`
|
|
@@ -103,6 +47,8 @@ export async function runDoctor() {
|
|
|
103
47
|
`Audit log: ${auditPath}`,
|
|
104
48
|
`PRAXIS_GUARD_AUDIT_LOG: ${process.env.PRAXIS_GUARD_AUDIT_LOG ?? "(unset; default above)"}`,
|
|
105
49
|
];
|
|
50
|
+
}
|
|
51
|
+
function appendBindingHealthLines(lines) {
|
|
106
52
|
const bindingHealth = inspectRequestBindingIndex();
|
|
107
53
|
lines.push(`Request bindings: ${bindingHealth.bindingCount} under ~/.praxis/guard/request-bindings/`);
|
|
108
54
|
if (bindingHealth.lastBinding) {
|
|
@@ -111,16 +57,8 @@ export async function runDoctor() {
|
|
|
111
57
|
if (bindingHealth.legacyHomeTicketsDir) {
|
|
112
58
|
lines.push(" warn: ~/.praxis/guard/tickets exists (legacy misroute). Tickets belong under <repo>/.praxis/guard/tickets/.");
|
|
113
59
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
for (const adapter of ALL_ADAPTERS) {
|
|
117
|
-
const status = await adapter.status({ projectDir: cwd }).catch(() => null);
|
|
118
|
-
if (!status)
|
|
119
|
-
continue;
|
|
120
|
-
adapterStatuses.push({ adapter, status });
|
|
121
|
-
pushAdapterLines(lines, adapter, status);
|
|
122
|
-
}
|
|
123
|
-
const token = resolveGuardToken() || process.env.PRAXIS_FIREBASE_ID_TOKEN?.trim();
|
|
60
|
+
}
|
|
61
|
+
function appendAuthLines(lines, token) {
|
|
124
62
|
const tokenSource = process.env.PRAXIS_GUARD_TOKEN?.trim()
|
|
125
63
|
? "env:PRAXIS_GUARD_TOKEN"
|
|
126
64
|
: token
|
|
@@ -130,37 +68,34 @@ export async function runDoctor() {
|
|
|
130
68
|
? `Auth: ${tokenSource} (token: ${token.slice(0, 6)}...${token.slice(-3)})`
|
|
131
69
|
: "Auth: (none — run `auditor login`)");
|
|
132
70
|
const credsMode = readCredentialsFileMode();
|
|
133
|
-
if (credsMode
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
lines.push(meta.revision === remote
|
|
149
|
-
? "Policies: in sync with Firestore revision."
|
|
150
|
-
: `Policies: update available (local ${meta.revision} vs remote ${remote}).`);
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
lines.push(`Policies: remote revision ${remote} (no local sync meta).`);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
catch (e) {
|
|
157
|
-
const msg = e instanceof Error ? e.message : String(e);
|
|
158
|
-
lines.push(`Remote revision check failed: ${msg}`);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
lines.push("Remote revision: (skip — not authenticated; run `auditor login`)");
|
|
71
|
+
if (credsMode === null)
|
|
72
|
+
return;
|
|
73
|
+
lines.push(credsMode === 0o600
|
|
74
|
+
? `Credentials mode: 0${credsMode.toString(8)}`
|
|
75
|
+
: `Credentials mode: 0${credsMode.toString(8)} (expected 0600)`);
|
|
76
|
+
}
|
|
77
|
+
async function collectAdapterStatuses(cwd, lines) {
|
|
78
|
+
lines.push("Agents:");
|
|
79
|
+
const adapterStatuses = [];
|
|
80
|
+
for (const adapter of ALL_ADAPTERS) {
|
|
81
|
+
const status = await adapter.status({ projectDir: cwd }).catch(() => null);
|
|
82
|
+
if (!status)
|
|
83
|
+
continue;
|
|
84
|
+
adapterStatuses.push({ adapter, status });
|
|
85
|
+
pushAdapterLines(lines, adapter, status);
|
|
163
86
|
}
|
|
87
|
+
return adapterStatuses;
|
|
88
|
+
}
|
|
89
|
+
export async function runDoctor() {
|
|
90
|
+
const cwd = process.cwd();
|
|
91
|
+
const metaPath = process.env.PRAXIS_POLICIES_META_PATH?.trim() || defaultPoliciesMetaPath();
|
|
92
|
+
const meta = await readPoliciesMetaFile(metaPath);
|
|
93
|
+
const lines = buildDoctorHeaderLines(cwd, meta);
|
|
94
|
+
appendBindingHealthLines(lines);
|
|
95
|
+
const adapterStatuses = await collectAdapterStatuses(cwd, lines);
|
|
96
|
+
const token = resolveGuardToken() || process.env.PRAXIS_FIREBASE_ID_TOKEN?.trim();
|
|
97
|
+
appendAuthLines(lines, token);
|
|
98
|
+
await appendDoctorRemoteLines(lines, token, meta);
|
|
164
99
|
const readyAuth = !!token;
|
|
165
100
|
const { ready, readySetup, enforced } = resolveReadiness(adapterStatuses, readyAuth);
|
|
166
101
|
const modeSuffix = ready ? (enforced ? " (enforced)" : " (advisory only)") : "";
|
package/dist/cli/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAyB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,MAAM,UAAU,gBAAgB,CAC9B,eAAiE,EACjE,OAAgB;IAEhB,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CACnE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAC9B,CAAC;IACF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;IAC/F,OAAO,EAAE,KAAK,EAAE,UAAU,IAAI,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAChE,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,SAAS,iBAAiB,CAAC,IAA6B,EAAE,UAAkB;IAC1E,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE;QAAE,OAAO,6BAA6B,CAAC;IACtF,IAAI,IAAI,EAAE,MAAM,KAAK,mBAAmB;QAAE,OAAO,8CAA8C,CAAC;IAChG,IAAI,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,kCAAkC,CAAC;IACtE,OAAO,qDAAqD,CAAC;AAC/D,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAW,EAAE,IAA6B;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,qBAAqB,EAAE,CAAC;IAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,uBAAuB,EAAE,CAAC;IAC5F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACzF,OAAO;QACL,gBAAgB;QAChB,eAAe,YAAY,EAAE,EAAE;QAC/B,sEAAsE;QACtE,SAAS,OAAO,CAAC,OAAO,EAAE;QAC1B,gBAAgB,UAAU,EAAE;QAC5B,kBAAkB,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;QACvD,kBAAkB,QAAQ,EAAE;QAC5B,IAAI;YACF,CAAC,CAAC,4BAA4B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7F,CAAC,CAAC,uEAAuE;QAC3E,eAAe,cAAc,CAAC,GAAG,CAAC,EAAE;QACpC,0BAA0B,kBAAkB,CAAC,GAAG,CAAC,EAAE;QACnD,cAAc,SAAS,EAAE;QACzB,2BAA2B,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,wBAAwB,EAAE;KAC5F,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAe;IAC/C,MAAM,aAAa,GAAG,0BAA0B,EAAE,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,qBAAqB,aAAa,CAAC,YAAY,0CAA0C,CAAC,CAAC;IACtG,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CACR,8BAA8B,aAAa,CAAC,WAAW,CAAC,UAAU,iBAAiB,aAAa,CAAC,WAAW,CAAC,YAAY,EAAE,CAC5H,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,CAAC,oBAAoB,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CACR,+GAA+G,CAChH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAe,EAAE,KAAyB;IACjE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE;QACxD,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,KAAK;YACL,CAAC,CAAC,QAAQ,eAAe,EAAE,EAAE;YAC7B,CAAC,CAAC,IAAI,CAAC;IACX,KAAK,CAAC,IAAI,CACR,WAAW;QACT,CAAC,CAAC,SAAS,WAAW,YAAY,KAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,KAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;QAC7E,CAAC,CAAC,oCAAoC,CACzC,CAAC;IACF,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;IAC5C,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO;IAC/B,KAAK,CAAC,IAAI,CACR,SAAS,KAAK,KAAK;QACjB,CAAC,CAAC,sBAAsB,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QAC/C,CAAC,CAAC,sBAAsB,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAClE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,GAAW,EACX,KAAe;IAEf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,MAAM,eAAe,GAAqD,EAAE,CAAC;IAC7E,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,uBAAuB,EAAE,CAAC;IAC5F,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChD,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,iBAAiB,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAC;IAClF,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9B,MAAM,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACrF,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,KAAK,CAAC,IAAI,CACR,UAAU,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,WAAW,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,UAAU,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,CAC7H,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ApprovalBlock } from "./guard-approval-block.js";
|
|
2
|
+
import { applyGuardMode, type GuardDecision } from "./guard-mode.js";
|
|
3
|
+
import type { GuardInput } from "./guard-schemas.js";
|
|
4
|
+
import type { Tier } from "../policy/index.js";
|
|
5
|
+
import type { ShellAnalysis } from "../shell/analyze-command.js";
|
|
6
|
+
import type { GuardEvaluation } from "../shell/guard-eval.js";
|
|
7
|
+
export declare function shouldResolveMutateApproval(input: {
|
|
8
|
+
skipped: boolean;
|
|
9
|
+
tier: Tier;
|
|
10
|
+
mode: GuardInput["mode"];
|
|
11
|
+
hookApprovalRequestId: string | null;
|
|
12
|
+
hookWaitMs: number;
|
|
13
|
+
}): boolean;
|
|
14
|
+
export declare function resolveGuardMutateApproval(input: {
|
|
15
|
+
guardInput: GuardInput;
|
|
16
|
+
argv: string[];
|
|
17
|
+
storageRoot: string;
|
|
18
|
+
eventId: string;
|
|
19
|
+
policyRevision: number | null;
|
|
20
|
+
reasons: {
|
|
21
|
+
code: string;
|
|
22
|
+
message: string;
|
|
23
|
+
details?: unknown;
|
|
24
|
+
}[];
|
|
25
|
+
analysis?: ShellAnalysis;
|
|
26
|
+
}): Promise<{
|
|
27
|
+
enforceDecision: GuardDecision;
|
|
28
|
+
approvalBlock: ApprovalBlock;
|
|
29
|
+
approvalRequestId: string | null;
|
|
30
|
+
}>;
|
|
31
|
+
export declare function resolveGuardEnforcement(input: {
|
|
32
|
+
guardInput: GuardInput;
|
|
33
|
+
skipped: boolean;
|
|
34
|
+
tier: Tier;
|
|
35
|
+
reasons: GuardEvaluation["reasons"];
|
|
36
|
+
argv: string[];
|
|
37
|
+
storageRoot: string;
|
|
38
|
+
eventId: string;
|
|
39
|
+
policyRevision: number | null;
|
|
40
|
+
analysis?: ShellAnalysis;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
decision: GuardDecision;
|
|
43
|
+
shadow: ReturnType<typeof applyGuardMode>["shadow"];
|
|
44
|
+
approvalBlock: ApprovalBlock;
|
|
45
|
+
approvalRequestId: string | null;
|
|
46
|
+
}>;
|
|
47
|
+
//# sourceMappingURL=evaluate-guard-approval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate-guard-approval.d.ts","sourceRoot":"","sources":["../../src/mcp/evaluate-guard-approval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAWV;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAChE,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,GAAG,OAAO,CAAC;IACV,eAAe,EAAE,aAAa,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC,CAUD;AA+CD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,GAAG,OAAO,CAAC;IACV,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpD,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC,CA+BD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { resolveEnforceMutateApproval } from "./guard-approval-block.js";
|
|
2
|
+
import { applyGuardMode } from "./guard-mode.js";
|
|
3
|
+
import { resolveTierDecision } from "./evaluate-guard-tier.js";
|
|
4
|
+
export function shouldResolveMutateApproval(input) {
|
|
5
|
+
const redeemHookApproval = !input.skipped &&
|
|
6
|
+
input.tier !== "DESTRUCTIVE" &&
|
|
7
|
+
input.mode === "enforce" &&
|
|
8
|
+
input.hookApprovalRequestId !== null &&
|
|
9
|
+
input.hookWaitMs > 0;
|
|
10
|
+
return (redeemHookApproval ||
|
|
11
|
+
(!input.skipped && input.tier !== "DESTRUCTIVE" && input.tier !== "READ" && input.mode === "enforce"));
|
|
12
|
+
}
|
|
13
|
+
export async function resolveGuardMutateApproval(input) {
|
|
14
|
+
return resolveEnforceMutateApproval({
|
|
15
|
+
guardInput: input.guardInput,
|
|
16
|
+
argv: input.argv,
|
|
17
|
+
storageRoot: input.storageRoot,
|
|
18
|
+
eventId: input.eventId,
|
|
19
|
+
policyRevision: input.policyRevision,
|
|
20
|
+
reasons: input.reasons,
|
|
21
|
+
approval_fingerprint: input.analysis?.approval_fingerprint_payload ?? null,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async function applyMutateApprovalIfNeeded(input) {
|
|
25
|
+
const hookApprovalRequestId = input.guardInput.context?.approval?.request_id?.trim() || null;
|
|
26
|
+
const hookWaitMs = input.guardInput.context?.wait_ms ?? 0;
|
|
27
|
+
if (!shouldResolveMutateApproval({
|
|
28
|
+
skipped: input.skipped,
|
|
29
|
+
tier: input.tier,
|
|
30
|
+
mode: input.guardInput.mode,
|
|
31
|
+
hookApprovalRequestId,
|
|
32
|
+
hookWaitMs,
|
|
33
|
+
})) {
|
|
34
|
+
return {
|
|
35
|
+
enforceDecision: input.enforceDecision,
|
|
36
|
+
approvalBlock: input.approvalBlock,
|
|
37
|
+
approvalRequestId: null,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return resolveGuardMutateApproval({
|
|
41
|
+
guardInput: input.guardInput,
|
|
42
|
+
argv: input.argv,
|
|
43
|
+
storageRoot: input.storageRoot,
|
|
44
|
+
eventId: input.eventId,
|
|
45
|
+
policyRevision: input.policyRevision,
|
|
46
|
+
reasons: input.reasons,
|
|
47
|
+
analysis: input.analysis,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
export async function resolveGuardEnforcement(input) {
|
|
51
|
+
let { enforceDecision, approvalBlock } = resolveTierDecision({
|
|
52
|
+
mode: input.guardInput.mode,
|
|
53
|
+
skipped: input.skipped,
|
|
54
|
+
tier: input.tier,
|
|
55
|
+
});
|
|
56
|
+
const mutate = await applyMutateApprovalIfNeeded({
|
|
57
|
+
guardInput: input.guardInput,
|
|
58
|
+
skipped: input.skipped,
|
|
59
|
+
tier: input.tier,
|
|
60
|
+
reasons: input.reasons,
|
|
61
|
+
argv: input.argv,
|
|
62
|
+
storageRoot: input.storageRoot,
|
|
63
|
+
eventId: input.eventId,
|
|
64
|
+
policyRevision: input.policyRevision,
|
|
65
|
+
analysis: input.analysis,
|
|
66
|
+
enforceDecision,
|
|
67
|
+
approvalBlock,
|
|
68
|
+
});
|
|
69
|
+
enforceDecision = mutate.enforceDecision;
|
|
70
|
+
approvalBlock = mutate.approvalBlock;
|
|
71
|
+
const { decision, shadow } = applyGuardMode({
|
|
72
|
+
mode: input.guardInput.mode,
|
|
73
|
+
skipped: input.skipped,
|
|
74
|
+
tier: input.tier,
|
|
75
|
+
policyReasons: input.reasons,
|
|
76
|
+
enforceDecision,
|
|
77
|
+
});
|
|
78
|
+
return { decision, shadow, approvalBlock, approvalRequestId: mutate.approvalRequestId };
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=evaluate-guard-approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate-guard-approval.js","sourceRoot":"","sources":["../../src/mcp/evaluate-guard-approval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate-guard-policy.d.ts","sourceRoot":"","sources":["../../src/mcp/evaluate-guard-policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { loadPoliciesV1, readPoliciesV1Revision } from "../policy/index.js";
|
|
2
|
+
export async function loadGuardPolicyState(policyState) {
|
|
3
|
+
policyState.policy = await loadPoliciesV1();
|
|
4
|
+
policyState.policyRevision = await readPoliciesV1Revision();
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=evaluate-guard-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate-guard-policy.js","sourceRoot":"","sources":["../../src/mcp/evaluate-guard-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG5E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAwB;IACjE,WAAW,CAAC,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;IAC5C,WAAW,CAAC,cAAc,GAAG,MAAM,sBAAsB,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { GuardEvaluation } from "../shell/guard-eval.js";
|
|
2
|
+
import type { ShellAnalysis } from "../shell/analyze-command.js";
|
|
3
|
+
import type { GuardInput } from "./guard-schemas.js";
|
|
4
|
+
import type { PoliciesV1 } from "../policy/index.js";
|
|
5
|
+
export type GuardProposalEvaluation = {
|
|
6
|
+
skipped: boolean;
|
|
7
|
+
evaluation: GuardEvaluation;
|
|
8
|
+
analysis?: ShellAnalysis;
|
|
9
|
+
shellCommand: string | null;
|
|
10
|
+
};
|
|
11
|
+
export declare function evaluateGuardProposal(input: GuardInput, policy: PoliciesV1): GuardProposalEvaluation;
|
|
12
|
+
export declare function applyDaemonEvaluation(argv: string[], evaluation: GuardEvaluation): Promise<{
|
|
13
|
+
skipped: boolean;
|
|
14
|
+
evaluation: GuardEvaluation;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=evaluate-guard-proposal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate-guard-proposal.d.ts","sourceRoot":"","sources":["../../src/mcp/evaluate-guard-proposal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,GACjB,uBAAuB,CAoBzB;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,eAAe,CAAA;CAAE,CAAC,CAiC5D"}
|