@claudexor/policy 1.0.1 → 2.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAGA,+DAA+D;AAC/D,eAAO,MAAM,2BAA2B,UAOvC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,CAQpF;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;sEACkE;IAClE,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EAAE,EACtB,QAAQ,GAAE,MAAM,EAAgC,GAC/C,kBAAkB,CAUpB"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAGA,+DAA+D;AAC/D,eAAO,MAAM,2BAA2B,UAOvC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,CAWpF;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;sEACkE;IAClE,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EAAE,EACtB,QAAQ,GAAE,MAAM,EAAgC,GAC/C,kBAAkB,CAUpB"}
package/dist/policy.js CHANGED
@@ -18,7 +18,10 @@ export function pathGuard(workspaceRoot, targetPath) {
18
18
  const target = isAbsolute(targetPath) ? resolve(targetPath) : resolve(root, targetPath);
19
19
  const rel = relative(root, target);
20
20
  if (rel === "" || rel.startsWith("..") || isAbsolute(rel)) {
21
- return { allowed: false, reason: `write to '${targetPath}' resolves outside workspace '${workspaceRoot}'` };
21
+ return {
22
+ allowed: false,
23
+ reason: `write to '${targetPath}' resolves outside workspace '${workspaceRoot}'`,
24
+ };
22
25
  }
23
26
  return { allowed: true };
24
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,eAAe;IACf,yBAAyB;CAC1B,CAAC;AAOF;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,aAAqB,EAAE,UAAkB;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,UAAU,iCAAiC,aAAa,GAAG,EAAE,CAAC;IAC9G,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAUD,MAAM,UAAU,YAAY,CAC1B,YAAsB,EACtB,WAAqB,2BAA2B;IAEhD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;YACvD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,eAAe;IACf,yBAAyB;CAC1B,CAAC;AAOF;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,aAAqB,EAAE,UAAkB;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,aAAa,UAAU,iCAAiC,aAAa,GAAG;SACjF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAUD,MAAM,UAAU,YAAY,CAC1B,YAAsB,EACtB,WAAqB,2BAA2B;IAEhD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;YACvD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACjE,CAAC"}
package/dist/risk.d.ts CHANGED
@@ -4,7 +4,22 @@ import type { RiskLevel } from "@claudexor/schema";
4
4
  * layered on top by callers) — never from keyword regex over human text.
5
5
  */
6
6
  export interface DiffMeta {
7
+ /**
8
+ * Every path the diff TOUCHES — including BOTH ends of a rename (G1 class,
9
+ * security commit 4e9e2270). Pattern matching runs over this set: renaming a
10
+ * sensitive/critical file OUT of its location is tamper exactly like editing
11
+ * it, and matching a narrower new-side-only projection silently drops it.
12
+ */
7
13
  changedPaths: string[];
14
+ /**
15
+ * How many FILES the diff changes (one per file; a rename is one). Optional:
16
+ * defaults to `changedPaths.length` for callers with no rename ambiguity.
17
+ * The size heuristic and its reason string are a file COUNT, so they must not
18
+ * consume the touched set — a rename-heavy diff would report ~2x the files it
19
+ * changed and escalate early. One owner per fact: the matcher gets the
20
+ * touched set, the counter gets the count.
21
+ */
22
+ fileCount?: number;
8
23
  additions?: number;
9
24
  deletions?: number;
10
25
  protectedPaths?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"risk.d.ts","sourceRoot":"","sources":["../src/risk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;sFACkF;IAClF,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAsCD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAsC3D;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB,CAWA"}
1
+ {"version":3,"file":"risk.d.ts","sourceRoot":"","sources":["../src/risk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;sFACkF;IAClF,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAiCD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAiD3D;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB,CAWA"}
package/dist/risk.js CHANGED
@@ -1,10 +1,6 @@
1
1
  import { matchAny } from "@claudexor/context";
2
+ import { sensitiveResourcePolicy } from "@claudexor/util";
2
3
  const CRITICAL_PATTERNS = [
3
- "**/secrets/**",
4
- "**/.env",
5
- "**/.env.*",
6
- "**/*.pem",
7
- "**/credentials*",
8
4
  "**/deploy/**/prod*",
9
5
  "**/terraform/**",
10
6
  "**/.github/workflows/release*",
@@ -36,16 +32,25 @@ const LARGE_DIFF_LINES = 500;
36
32
  export function classifyRisk(meta) {
37
33
  const reasons = [];
38
34
  const paths = meta.changedPaths;
35
+ const fileCount = meta.fileCount ?? paths.length;
39
36
  const churn = (meta.additions ?? 0) + (meta.deletions ?? 0);
40
37
  const protectedHit = paths.filter((p) => matchAny(p, meta.protectedPaths ?? []));
41
38
  if (protectedHit.length > 0)
42
39
  reasons.push(`touches protected paths: ${protectedHit.slice(0, 3).join(", ")}`);
43
- const criticalHit = paths.filter((p) => matchAny(p, CRITICAL_PATTERNS));
40
+ const sensitiveHit = paths.filter((p) => sensitiveResourcePolicy.classifyPath(p).sensitive);
41
+ const domainCriticalHit = paths.filter((p) => matchAny(p, CRITICAL_PATTERNS));
42
+ const criticalHit = [...new Set([...sensitiveHit, ...domainCriticalHit])];
44
43
  if (criticalHit.length > 0 || protectedHit.length > 0) {
45
- reasons.unshift(criticalHit.length > 0
46
- ? `critical paths: ${criticalHit.slice(0, 3).join(", ")}`
47
- : "protected-path change");
48
- return { level: "critical", reasons, matchedPaths: [...new Set([...criticalHit, ...protectedHit])] };
44
+ reasons.unshift(sensitiveHit.length > 0
45
+ ? `sensitive resource paths: ${sensitiveHit.slice(0, 3).join(", ")}`
46
+ : criticalHit.length > 0
47
+ ? `critical paths: ${criticalHit.slice(0, 3).join(", ")}`
48
+ : "protected-path change");
49
+ return {
50
+ level: "critical",
51
+ reasons,
52
+ matchedPaths: [...new Set([...criticalHit, ...protectedHit])],
53
+ };
49
54
  }
50
55
  const highHit = paths.filter((p) => matchAny(p, HIGH_PATTERNS));
51
56
  if (highHit.length > 0) {
@@ -53,22 +58,22 @@ export function classifyRisk(meta) {
53
58
  return { level: "high", reasons, matchedPaths: highHit };
54
59
  }
55
60
  const depHit = paths.filter((p) => matchAny(p, DEP_PATTERNS));
56
- const large = paths.length >= LARGE_DIFF_FILES || churn >= LARGE_DIFF_LINES;
61
+ const large = fileCount >= LARGE_DIFF_FILES || churn >= LARGE_DIFF_LINES;
57
62
  if (depHit.length > 0)
58
63
  reasons.push(`dependency/manifest change: ${depHit.slice(0, 2).join(", ")}`);
59
64
  if (large)
60
- reasons.push(`large diff (${paths.length} files, ${churn} lines)`);
65
+ reasons.push(`large diff (${fileCount} files, ${churn} lines)`);
61
66
  if (depHit.length > 0 && large)
62
67
  return { level: "high", reasons, matchedPaths: depHit };
63
68
  if (depHit.length > 0 || large)
64
69
  return { level: "medium", reasons, matchedPaths: depHit };
65
- if (paths.length === 0)
70
+ if (fileCount === 0)
66
71
  return { level: "low", reasons: ["no file changes"], matchedPaths: [] };
67
- if (paths.length <= 2 && churn <= 50) {
68
- reasons.push(`small change (${paths.length} files, ${churn} lines)`);
72
+ if (fileCount <= 2 && churn <= 50) {
73
+ reasons.push(`small change (${fileCount} files, ${churn} lines)`);
69
74
  return { level: "low", reasons, matchedPaths: [] };
70
75
  }
71
- reasons.push(`normal change (${paths.length} files, ${churn} lines)`);
76
+ reasons.push(`normal change (${fileCount} files, ${churn} lines)`);
72
77
  return { level: "medium", reasons, matchedPaths: [] };
73
78
  }
74
79
  /** Review depth implied by risk (callers may still override). */
package/dist/risk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"risk.js","sourceRoot":"","sources":["../src/risk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"risk.js","sourceRoot":"","sources":["../src/risk.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claudexor/policy",
3
- "version": "1.0.1",
3
+ "version": "2.1.3",
4
4
  "license": "MIT",
5
5
  "description": "Typed risk classifier + thin policy (path guard, require-human, deny lists). No keyword-regex governance.",
6
6
  "type": "module",
@@ -16,8 +16,9 @@
16
16
  "dist"
17
17
  ],
18
18
  "dependencies": {
19
- "@claudexor/context": "1.0.1",
20
- "@claudexor/schema": "1.0.1"
19
+ "@claudexor/context": "2.1.3",
20
+ "@claudexor/schema": "2.1.3",
21
+ "@claudexor/util": "2.1.3"
21
22
  },
22
23
  "repository": {
23
24
  "type": "git",