@orygn/opa-mcp 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/CHANGELOG.md +244 -1
  2. package/README.md +98 -51
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +1 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/config.d.ts +13 -3
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +35 -5
  9. package/dist/config.js.map +1 -1
  10. package/dist/constants.d.ts +1 -6
  11. package/dist/constants.d.ts.map +1 -1
  12. package/dist/constants.js +17 -3
  13. package/dist/constants.js.map +1 -1
  14. package/dist/lib/conftest-cli.d.ts.map +1 -1
  15. package/dist/lib/conftest-cli.js +81 -17
  16. package/dist/lib/conftest-cli.js.map +1 -1
  17. package/dist/lib/errors.d.ts +4 -5
  18. package/dist/lib/errors.d.ts.map +1 -1
  19. package/dist/lib/errors.js +15 -3
  20. package/dist/lib/errors.js.map +1 -1
  21. package/dist/lib/inline-paths.d.ts +37 -0
  22. package/dist/lib/inline-paths.d.ts.map +1 -0
  23. package/dist/lib/inline-paths.js +162 -0
  24. package/dist/lib/inline-paths.js.map +1 -0
  25. package/dist/lib/opa-cli.d.ts +10 -0
  26. package/dist/lib/opa-cli.d.ts.map +1 -1
  27. package/dist/lib/opa-cli.js +9 -2
  28. package/dist/lib/opa-cli.js.map +1 -1
  29. package/dist/lib/opa-client.d.ts +27 -1
  30. package/dist/lib/opa-client.d.ts.map +1 -1
  31. package/dist/lib/opa-client.js +98 -14
  32. package/dist/lib/opa-client.js.map +1 -1
  33. package/dist/lib/opa-paths.d.ts +11 -1
  34. package/dist/lib/opa-paths.d.ts.map +1 -1
  35. package/dist/lib/opa-paths.js +25 -21
  36. package/dist/lib/opa-paths.js.map +1 -1
  37. package/dist/lib/output.d.ts.map +1 -1
  38. package/dist/lib/output.js +83 -10
  39. package/dist/lib/output.js.map +1 -1
  40. package/dist/lib/rego-ast-walker.d.ts +0 -6
  41. package/dist/lib/rego-ast-walker.d.ts.map +1 -1
  42. package/dist/lib/rego-ast-walker.js +48 -46
  43. package/dist/lib/rego-ast-walker.js.map +1 -1
  44. package/dist/lib/rego-counterexample.d.ts +14 -1
  45. package/dist/lib/rego-counterexample.d.ts.map +1 -1
  46. package/dist/lib/rego-counterexample.js +40 -10
  47. package/dist/lib/rego-counterexample.js.map +1 -1
  48. package/dist/lib/rego-input-path.d.ts +20 -0
  49. package/dist/lib/rego-input-path.d.ts.map +1 -0
  50. package/dist/lib/rego-input-path.js +70 -0
  51. package/dist/lib/rego-input-path.js.map +1 -0
  52. package/dist/lib/rego-ir.d.ts +2 -1
  53. package/dist/lib/rego-ir.d.ts.map +1 -1
  54. package/dist/lib/rego-smt-encoder.d.ts +35 -0
  55. package/dist/lib/rego-smt-encoder.d.ts.map +1 -1
  56. package/dist/lib/rego-smt-encoder.js +81 -8
  57. package/dist/lib/rego-smt-encoder.js.map +1 -1
  58. package/dist/lib/rego-type-inferencer.d.ts +26 -1
  59. package/dist/lib/rego-type-inferencer.d.ts.map +1 -1
  60. package/dist/lib/rego-type-inferencer.js +68 -0
  61. package/dist/lib/rego-type-inferencer.js.map +1 -1
  62. package/dist/lib/rego-verify-engine.d.ts.map +1 -1
  63. package/dist/lib/rego-verify-engine.js +171 -90
  64. package/dist/lib/rego-verify-engine.js.map +1 -1
  65. package/dist/lib/rego-z3.d.ts +56 -0
  66. package/dist/lib/rego-z3.d.ts.map +1 -1
  67. package/dist/lib/rego-z3.js +276 -7
  68. package/dist/lib/rego-z3.js.map +1 -1
  69. package/dist/lib/subprocess.d.ts +13 -0
  70. package/dist/lib/subprocess.d.ts.map +1 -1
  71. package/dist/lib/subprocess.js +153 -18
  72. package/dist/lib/subprocess.js.map +1 -1
  73. package/dist/lib/tool-helpers.d.ts +12 -25
  74. package/dist/lib/tool-helpers.d.ts.map +1 -1
  75. package/dist/lib/tool-helpers.js +66 -40
  76. package/dist/lib/tool-helpers.js.map +1 -1
  77. package/dist/prompts/index.js +2 -2
  78. package/dist/resources/index.js +1 -1
  79. package/dist/resources/index.js.map +1 -1
  80. package/dist/resources/patterns.d.ts +1 -1
  81. package/dist/resources/patterns.d.ts.map +1 -1
  82. package/dist/resources/patterns.js +2 -3
  83. package/dist/resources/patterns.js.map +1 -1
  84. package/dist/server.d.ts +2 -2
  85. package/dist/server.d.ts.map +1 -1
  86. package/dist/server.js +40 -5
  87. package/dist/server.js.map +1 -1
  88. package/dist/tools/authoring/capabilities.d.ts +4 -0
  89. package/dist/tools/authoring/capabilities.d.ts.map +1 -1
  90. package/dist/tools/authoring/capabilities.js +41 -4
  91. package/dist/tools/authoring/capabilities.js.map +1 -1
  92. package/dist/tools/authoring/check-schema.d.ts +6 -0
  93. package/dist/tools/authoring/check-schema.d.ts.map +1 -1
  94. package/dist/tools/authoring/check-schema.js +56 -3
  95. package/dist/tools/authoring/check-schema.js.map +1 -1
  96. package/dist/tools/authoring/format.d.ts.map +1 -1
  97. package/dist/tools/authoring/format.js +2 -2
  98. package/dist/tools/authoring/format.js.map +1 -1
  99. package/dist/tools/authoring/lint.d.ts.map +1 -1
  100. package/dist/tools/authoring/lint.js +8 -6
  101. package/dist/tools/authoring/lint.js.map +1 -1
  102. package/dist/tools/authoring/migrate-v1.d.ts.map +1 -1
  103. package/dist/tools/authoring/migrate-v1.js +20 -4
  104. package/dist/tools/authoring/migrate-v1.js.map +1 -1
  105. package/dist/tools/authoring/parse.d.ts.map +1 -1
  106. package/dist/tools/authoring/parse.js +3 -3
  107. package/dist/tools/authoring/parse.js.map +1 -1
  108. package/dist/tools/bundles/sign.d.ts.map +1 -1
  109. package/dist/tools/bundles/sign.js +14 -34
  110. package/dist/tools/bundles/sign.js.map +1 -1
  111. package/dist/tools/conftest/index.d.ts +5 -0
  112. package/dist/tools/conftest/index.d.ts.map +1 -1
  113. package/dist/tools/conftest/index.js.map +1 -1
  114. package/dist/tools/conftest/test.d.ts.map +1 -1
  115. package/dist/tools/conftest/test.js +16 -17
  116. package/dist/tools/conftest/test.js.map +1 -1
  117. package/dist/tools/conftest/verify.d.ts.map +1 -1
  118. package/dist/tools/conftest/verify.js +14 -18
  119. package/dist/tools/conftest/verify.js.map +1 -1
  120. package/dist/tools/evaluation/_shared.js +9 -12
  121. package/dist/tools/evaluation/_shared.js.map +1 -1
  122. package/dist/tools/evaluation/bench.d.ts +20 -9
  123. package/dist/tools/evaluation/bench.d.ts.map +1 -1
  124. package/dist/tools/evaluation/bench.js +31 -12
  125. package/dist/tools/evaluation/bench.js.map +1 -1
  126. package/dist/tools/evaluation/compile.js +4 -4
  127. package/dist/tools/evaluation/compile.js.map +1 -1
  128. package/dist/tools/evaluation/eval.d.ts.map +1 -1
  129. package/dist/tools/evaluation/eval.js +12 -16
  130. package/dist/tools/evaluation/eval.js.map +1 -1
  131. package/dist/tools/evaluation/exec.d.ts.map +1 -1
  132. package/dist/tools/evaluation/exec.js +3 -4
  133. package/dist/tools/evaluation/exec.js.map +1 -1
  134. package/dist/tools/evaluation/test-multiroot.d.ts +2 -0
  135. package/dist/tools/evaluation/test-multiroot.d.ts.map +1 -1
  136. package/dist/tools/evaluation/test-multiroot.js +23 -6
  137. package/dist/tools/evaluation/test-multiroot.js.map +1 -1
  138. package/dist/tools/evaluation/test.d.ts.map +1 -1
  139. package/dist/tools/evaluation/test.js +8 -6
  140. package/dist/tools/evaluation/test.js.map +1 -1
  141. package/dist/tools/helpers/coverage-gaps.d.ts.map +1 -1
  142. package/dist/tools/helpers/coverage-gaps.js +3 -4
  143. package/dist/tools/helpers/coverage-gaps.js.map +1 -1
  144. package/dist/tools/helpers/describe-policy.d.ts.map +1 -1
  145. package/dist/tools/helpers/describe-policy.js +2 -2
  146. package/dist/tools/helpers/describe-policy.js.map +1 -1
  147. package/dist/tools/helpers/explain-decision.d.ts.map +1 -1
  148. package/dist/tools/helpers/explain-decision.js +3 -4
  149. package/dist/tools/helpers/explain-decision.js.map +1 -1
  150. package/dist/tools/helpers/explain-undefined.d.ts.map +1 -1
  151. package/dist/tools/helpers/explain-undefined.js +131 -22
  152. package/dist/tools/helpers/explain-undefined.js.map +1 -1
  153. package/dist/tools/helpers/fix.d.ts +11 -5
  154. package/dist/tools/helpers/fix.d.ts.map +1 -1
  155. package/dist/tools/helpers/fix.js +88 -45
  156. package/dist/tools/helpers/fix.js.map +1 -1
  157. package/dist/tools/helpers/generate-test-skeleton.d.ts.map +1 -1
  158. package/dist/tools/helpers/generate-test-skeleton.js +105 -21
  159. package/dist/tools/helpers/generate-test-skeleton.js.map +1 -1
  160. package/dist/tools/helpers/playground-share.d.ts +4 -2
  161. package/dist/tools/helpers/playground-share.d.ts.map +1 -1
  162. package/dist/tools/helpers/playground-share.js +13 -3
  163. package/dist/tools/helpers/playground-share.js.map +1 -1
  164. package/dist/tools/helpers/policy-diff.d.ts.map +1 -1
  165. package/dist/tools/helpers/policy-diff.js +3 -4
  166. package/dist/tools/helpers/policy-diff.js.map +1 -1
  167. package/dist/tools/helpers/security-audit.d.ts.map +1 -1
  168. package/dist/tools/helpers/security-audit.js +19 -19
  169. package/dist/tools/helpers/security-audit.js.map +1 -1
  170. package/dist/tools/meta/index.d.ts +1 -1
  171. package/dist/tools/server-management/_shared.d.ts.map +1 -1
  172. package/dist/tools/server-management/_shared.js +13 -1
  173. package/dist/tools/server-management/_shared.js.map +1 -1
  174. package/dist/types.d.ts +1 -1
  175. package/dist/types.d.ts.map +1 -1
  176. package/package.json +1 -1
@@ -17,8 +17,16 @@
17
17
  * `--signing-key` or `--capabilities` file is opened directly and works fine
18
18
  * absolute, so callers pass only their genuine load paths. And a `.rego`
19
19
  * module mounts at its own `package` whatever path it arrived by, so only data
20
- * documents and the directories holding them move. That is why this stayed
21
- * invisible: policies loaded correctly and their data silently did not.
20
+ * documents and the directories holding them are respelled. That is why this
21
+ * stayed invisible: policies loaded correctly and their data silently did not.
22
+ *
23
+ * A module is still opened by the remainder after the colon, which is a
24
+ * root-relative path OPA resolves against the drive the child is running on.
25
+ * That works only when the working directory is on the module's drive, which
26
+ * on a developer machine it usually is and on a CI runner that keeps its
27
+ * workspace and its temp directory on different drives it is not. So every
28
+ * load path, module or not, takes part in choosing the working directory;
29
+ * only the non-module ones are respelled.
22
30
  */
23
31
  import { existsSync } from 'node:fs';
24
32
  import { dirname, extname, isAbsolute, parse, relative, sep } from 'node:path';
@@ -30,9 +38,10 @@ const DRIVE_PATH = /^[A-Za-z]:[\\/]/;
30
38
  *
31
39
  * A `.rego` module mounts at its own `package` whatever path it arrived by,
32
40
  * verified against OPA 1.19: an absolute `p.rego` lands at `data.p` while an
33
- * absolute `d.json` lands at `data.C`. Modules are therefore left alone, which
34
- * also keeps the rewrite away from the temp file this server writes for inline
35
- * source, whose absolute path is matched afterwards to redact it from output.
41
+ * absolute `d.json` lands at `data.C`. Modules are therefore not respelled,
42
+ * which also keeps the rewrite away from the temp file this server writes for
43
+ * inline source, whose absolute path is matched afterwards to redact it from
44
+ * output. They still count toward the working directory: see `rewriteLoadPaths`.
36
45
  */
37
46
  function needsRewrite(path) {
38
47
  return extname(path).toLowerCase() !== '.rego';
@@ -57,30 +66,25 @@ function commonAncestor(paths) {
57
66
  // A drive root keeps its separator: "C:" alone is drive-relative, not root.
58
67
  return shared.length === 1 ? joined + sep : joined;
59
68
  }
60
- /**
61
- * Rewrite the given load paths, wherever they appear in `args`, into paths
62
- * relative to a common working directory.
63
- *
64
- * `loadPaths` are the arguments OPA will mount as documents. Anything else in
65
- * `args` is left exactly as it was, so a query, a rule name, or a file OPA
66
- * merely opens cannot be touched. On a platform whose absolute paths carry no
67
- * drive letter nothing matches and the arguments come back unchanged.
68
- */
69
- export function rewriteLoadPaths(args, loadPaths) {
70
- const targets = [
71
- ...new Set(loadPaths.filter((p) => DRIVE_PATH.test(p) && needsRewrite(p) && existsSync(p))),
72
- ];
73
- if (targets.length === 0)
69
+ export function rewriteLoadPaths(args, loadPaths, options = {}) {
70
+ // Every drive-letter load path anchors the working directory, modules
71
+ // included, since a module is opened relative to the child's drive even
72
+ // though it mounts by package. Only the non-module ones are respelled.
73
+ const anchors = [...new Set(loadPaths.filter((p) => DRIVE_PATH.test(p) && existsSync(p)))];
74
+ if (anchors.length === 0)
74
75
  return { args };
75
- const drives = [...new Set(targets.map((p) => parse(p).root.toLowerCase()))];
76
+ const drives = [...new Set(anchors.map((p) => parse(p).root.toLowerCase()))];
76
77
  if (drives.length > 1)
77
78
  return { args, conflict: { drives } };
78
79
  // The ancestor is taken over the containing directories, never the paths
79
80
  // themselves: the ancestor of a single file would be that file, and a file
80
81
  // cannot be a working directory.
81
- const cwd = commonAncestor(targets.map(dirname));
82
+ const cwd = commonAncestor(anchors.map(dirname));
82
83
  if (cwd === undefined || !existsSync(cwd))
83
84
  return { args };
85
+ if (options.respell === false)
86
+ return { args, cwd };
87
+ const targets = anchors.filter(needsRewrite);
84
88
  const rewritten = args.map((a) => {
85
89
  if (!targets.includes(a))
86
90
  return a;
@@ -1 +1 @@
1
- {"version":3,"file":"opa-paths.js","sourceRoot":"","sources":["../../src/lib/opa-paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opa-paths.js","sourceRoot":"","sources":["../../src/lib/opa-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAE/E,sEAAsE;AACtE,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC;;;;;;;;;;GAUG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;AACjD,CAAC;AAcD,yDAAyD;AACzD,SAAS,cAAc,CAAC,KAAe;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAC1B,yDAAyD;QACzD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;YAAE,MAAM;QACtF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,4EAA4E;IAC5E,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,CAAC;AAsBD,MAAM,UAAU,gBAAgB,CAC9B,IAAc,EACd,SAA4B,EAC5B,UAA0B,EAAE;IAE5B,sEAAsE;IACtE,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAE1C,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;IAE7D,yEAAyE;IACzE,2EAA2E;IAC3E,iCAAiC;IACjC,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAE3D,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAEpD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7B,6CAA6C;QAC7C,IAAI,GAAG,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC;QAC3B,mEAAmE;QACnE,8DAA8D;QAC9D,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CAsB5F"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAoCD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CAiF5F"}
@@ -1,17 +1,90 @@
1
+ const bytes = (s) => Buffer.byteLength(s, 'utf8');
2
+ const WARNINGS_DROPPED = '[warnings dropped: response exceeded maxResponseBytes]';
3
+ const DETAILS_DROPPED = {
4
+ __truncated: true,
5
+ message: 'Error details exceeded maxResponseBytes and were dropped.',
6
+ };
7
+ /**
8
+ * Cut `text` so that `measure(text)` stays within `budget`, measured after
9
+ * serialisation, since JSON escaping can more than double a string of
10
+ * newlines or control characters. A binary search on the byte length, so the
11
+ * cost is logarithmic in the message size.
12
+ */
13
+ function cutToFit(text, measure, budget) {
14
+ const suffix = ' [truncated]';
15
+ const raw = Buffer.from(text, 'utf8');
16
+ let lo = 0;
17
+ let hi = raw.length;
18
+ let best = '';
19
+ while (lo <= hi) {
20
+ const mid = Math.floor((lo + hi) / 2);
21
+ const candidate = raw.subarray(0, mid).toString('utf8') + suffix;
22
+ if (measure(candidate) <= budget) {
23
+ best = candidate;
24
+ lo = mid + 1;
25
+ }
26
+ else {
27
+ hi = mid - 1;
28
+ }
29
+ }
30
+ return best;
31
+ }
1
32
  export function formatEnvelope(envelope, maxBytes) {
2
33
  let serialized = JSON.stringify(envelope, null, 2);
3
- if (Buffer.byteLength(serialized, 'utf8') > maxBytes) {
4
- const truncatedEnvelope = {
5
- ...envelope,
6
- truncated: true,
34
+ if (bytes(serialized) > maxBytes) {
35
+ // The cap is measured on the serialised text, since JSON escaping can
36
+ // double a message of newlines. Shrink the least useful field first and
37
+ // only as far as needed: a success's data, an error's details, then the
38
+ // warnings, then the hint, and the message last. A field is replaced
39
+ // only when the replacement is actually smaller.
40
+ const t = { ...envelope, truncated: true };
41
+ const size = () => bytes(JSON.stringify(t, null, 2));
42
+ const fits = () => size() <= maxBytes;
43
+ const replaceIfSmaller = (apply, revert) => {
44
+ const before = size();
45
+ apply();
46
+ if (size() >= before)
47
+ revert();
7
48
  };
8
- if (truncatedEnvelope.ok && truncatedEnvelope.data !== undefined) {
9
- truncatedEnvelope.data = {
10
- __truncated: true,
11
- message: 'Response exceeded maxResponseBytes. Re-run with narrower scope, or write the output to a file path you specify.',
12
- };
49
+ if (t.ok && t.data !== undefined) {
50
+ const kept = t.data;
51
+ replaceIfSmaller(() => {
52
+ t.data = {
53
+ __truncated: true,
54
+ message: 'Response exceeded maxResponseBytes. Re-run with narrower scope, or write the output to a file path you specify.',
55
+ };
56
+ }, () => {
57
+ t.data = kept;
58
+ });
59
+ }
60
+ const error = !t.ok && t.error !== undefined ? { ...t.error } : undefined;
61
+ if (error !== undefined)
62
+ t.error = error;
63
+ if (error !== undefined && !fits() && error.details !== undefined) {
64
+ const kept = error.details;
65
+ replaceIfSmaller(() => {
66
+ error.details = DETAILS_DROPPED;
67
+ }, () => {
68
+ error.details = kept;
69
+ });
70
+ }
71
+ if (!fits() && t.warnings !== undefined) {
72
+ const kept = t.warnings;
73
+ replaceIfSmaller(() => {
74
+ t.warnings = [WARNINGS_DROPPED];
75
+ }, () => {
76
+ t.warnings = kept;
77
+ });
78
+ }
79
+ if (error !== undefined && !fits() && error.hint !== undefined) {
80
+ const others = () => bytes(JSON.stringify({ ...t, error: { ...error, hint: '' } }, null, 2));
81
+ error.hint = cutToFit(error.hint, (c) => others() + bytes(JSON.stringify(c)) - 2, maxBytes);
82
+ }
83
+ if (error !== undefined && !fits()) {
84
+ const others = () => bytes(JSON.stringify({ ...t, error: { ...error, message: '' } }, null, 2));
85
+ error.message = cutToFit(error.message, (c) => others() + bytes(JSON.stringify(c)) - 2, maxBytes);
13
86
  }
14
- serialized = JSON.stringify(truncatedEnvelope, null, 2);
87
+ serialized = JSON.stringify(t, null, 2);
15
88
  }
16
89
  return {
17
90
  content: [{ type: 'text', text: serialized }],
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,cAAc,CAAI,QAAyB,EAAE,QAAgB;IAC3E,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrD,MAAM,iBAAiB,GAAoB;YACzC,GAAG,QAAQ;YACX,SAAS,EAAE,IAAI;SAChB,CAAC;QACF,IAAI,iBAAiB,CAAC,EAAE,IAAI,iBAAiB,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjE,iBAAiB,CAAC,IAAI,GAAG;gBACvB,WAAW,EAAE,IAAI;gBACjB,OAAO,EACL,iHAAiH;aAC/G,CAAC;QACT,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
@@ -12,10 +12,4 @@
12
12
  import type { OpaModule } from './rego-ast-types.js';
13
13
  import type { VerifyWalkResult } from './rego-ir.js';
14
14
  export declare function walkModule(ast: OpaModule): VerifyWalkResult;
15
- /**
16
- * Collect all input.* paths recursively from a raw OPA AST value.
17
- * Used for deep scans of comprehension bodies (Phase 2), but exported
18
- * here for reuse in the engine's path-discovery pass.
19
- */
20
- export declare function collectAllInputPaths(node: unknown, out: Map<string, string[]>): void;
21
15
  //# sourceMappingURL=rego-ast-walker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rego-ast-walker.d.ts","sourceRoot":"","sources":["../../src/lib/rego-ast-walker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAiB,SAAS,EAAoB,MAAM,qBAAqB,CAAC;AACtF,OAAO,KAAK,EAAsC,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAqBzF,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,gBAAgB,CAkB3D;AA2yBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CA6BpF"}
1
+ {"version":3,"file":"rego-ast-walker.d.ts","sourceRoot":"","sources":["../../src/lib/rego-ast-walker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAiB,SAAS,EAAoB,MAAM,qBAAqB,CAAC;AACtF,OAAO,KAAK,EAAsC,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAsBzF,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,gBAAgB,CAkB3D"}
@@ -1,4 +1,5 @@
1
1
  import { isSimpleRegexPattern } from './rego-smt-encoder.js';
2
+ import { renderInputPath } from './rego-input-path.js';
2
3
  const MAX_INLINE_DEPTH = 5;
3
4
  /** Operator names (first-term ref) that Phase 1 can encode in SMT. */
4
5
  const SUPPORTED_BINARY_OPS = new Set([
@@ -95,12 +96,16 @@ function walkRule(rule, result, ast, ruleNames, inliningStack, depth, clauseInde
95
96
  addUnsupported(result, 'non_literal_head', `Rule '${name}' has a computed head value the encoder cannot read.`);
96
97
  }
97
98
  for (const bodyExpr of rule.body) {
98
- // A bare boolean body term. `true` adds no constraint, but `false` makes the
99
- // clause unsatisfiable: skipping it left an empty body, which the encoder
100
- // reads as "always true" and turns into a false PROVEN.
101
- if (!Array.isArray(bodyExpr.terms) && bodyExpr.terms.type === 'boolean') {
102
- if (bodyExpr.terms.value === false) {
103
- exprs.push({ kind: 'contradiction', reason: 'literal false in rule body' });
99
+ // A bare boolean body term, possibly negated. One that holds (`true`,
100
+ // `not false`) adds no constraint; one that does not (`false`, `not true`)
101
+ // makes the clause unsatisfiable. Skipping the latter left an empty body,
102
+ // which the encoder reads as "always true" and turns into a false PROVEN.
103
+ if (isBooleanLiteral(bodyExpr)) {
104
+ if (!booleanLiteralHolds(bodyExpr)) {
105
+ exprs.push({
106
+ kind: 'contradiction',
107
+ reason: 'a boolean literal in the rule body never holds',
108
+ });
104
109
  }
105
110
  continue;
106
111
  }
@@ -347,7 +352,24 @@ function inlineRule(targetName, callerName, clauseIndex, ruleNames, inliningStac
347
352
  }
348
353
  const newStack = new Set(inliningStack);
349
354
  newStack.add(targetName);
350
- const bodyExprs = targetRule.body.filter((e) => !(!Array.isArray(e.terms) && e.terms.type === 'boolean'));
355
+ // A boolean literal that never holds (`false`, `not true`) makes the
356
+ // helper's body unsatisfiable, exactly as it does in a rule body (see
357
+ // walkRule). It used to be dropped along with the harmless ones, which left
358
+ // an always-true body behind and verified a helper that can never fire as
359
+ // one that always does.
360
+ if (targetRule.body.some((e) => isBooleanLiteral(e) && !booleanLiteralHolds(e))) {
361
+ // Under negation the reference holds exactly when the body fails, which
362
+ // here is always.
363
+ if (negateInlinedBody)
364
+ return [];
365
+ return [
366
+ {
367
+ kind: 'contradiction',
368
+ reason: `Helper '${targetName}' has a boolean literal in its body that never holds.`,
369
+ },
370
+ ];
371
+ }
372
+ const bodyExprs = targetRule.body.filter((e) => !isBooleanLiteral(e));
351
373
  if (bodyExprs.length === 0) {
352
374
  // An empty body always holds, so a helper whose default is the only true
353
375
  // branch can never be true.
@@ -402,6 +424,19 @@ function inlineRule(targetName, callerName, clauseIndex, ruleNames, inliningStac
402
424
  ];
403
425
  return negateInlinedBody ? [{ kind: 'negation', inner: body }] : body;
404
426
  }
427
+ /** A body expression that is a bare boolean term, negated or not. */
428
+ function isBooleanLiteral(expr) {
429
+ return !Array.isArray(expr.terms) && expr.terms.type === 'boolean';
430
+ }
431
+ /**
432
+ * Whether a bare boolean term holds: `true` and `not false` do, `false` and
433
+ * `not true` do not. Reading `not false` as the literal `false` proved a rule
434
+ * that always fires never true.
435
+ */
436
+ function booleanLiteralHolds(expr) {
437
+ const value = Array.isArray(expr.terms) ? undefined : expr.terms.value;
438
+ return expr.negated === true ? value === false : value === true;
439
+ }
405
440
  /**
406
441
  * Build a VerifyExpr for a two-argument operator expression.
407
442
  */
@@ -541,7 +576,12 @@ function extractInputRef(refTerms, result) {
541
576
  return null;
542
577
  }
543
578
  }
544
- const path = 'input.' + segments.join('.');
579
+ // The whole input compared as one value is not modelled: every variable
580
+ // the encoder creates stands for a field, and a witness for a bare `input`
581
+ // came back under a key named for a missing segment.
582
+ if (segments.length === 0)
583
+ return null;
584
+ const path = renderInputPath(segments);
545
585
  if (!result.inputPaths.has(path)) {
546
586
  result.inputPaths.set(path, segments);
547
587
  }
@@ -610,42 +650,4 @@ function addUnsupported(result, constructType, description, expr) {
610
650
  function scopedLocal(clauseIndex, varName, ruleName, depth) {
611
651
  return `local_${clauseIndex}_d${depth}_${ruleName}_${varName}`;
612
652
  }
613
- /**
614
- * Collect all input.* paths recursively from a raw OPA AST value.
615
- * Used for deep scans of comprehension bodies (Phase 2), but exported
616
- * here for reuse in the engine's path-discovery pass.
617
- */
618
- export function collectAllInputPaths(node, out) {
619
- if (node === null || typeof node !== 'object')
620
- return;
621
- if (Array.isArray(node)) {
622
- for (const item of node)
623
- collectAllInputPaths(item, out);
624
- return;
625
- }
626
- const obj = node;
627
- if (obj['type'] === 'ref' && Array.isArray(obj['value'])) {
628
- const terms = obj['value'];
629
- if (terms[0]?.type === 'var' && terms[0]?.value === 'input') {
630
- const segs = [];
631
- let ok = true;
632
- for (let i = 1; i < terms.length; i++) {
633
- const t = terms[i];
634
- if (t.type === 'string' && typeof t.value === 'string')
635
- segs.push(t.value);
636
- else {
637
- ok = false;
638
- break;
639
- }
640
- }
641
- if (ok && segs.length > 0) {
642
- const path = 'input.' + segs.join('.');
643
- if (!out.has(path))
644
- out.set(path, segs);
645
- }
646
- }
647
- }
648
- for (const val of Object.values(obj))
649
- collectAllInputPaths(val, out);
650
- }
651
653
  //# sourceMappingURL=rego-ast-walker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rego-ast-walker.js","sourceRoot":"","sources":["../../src/lib/rego-ast-walker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rego-ast-walker.js","sourceRoot":"","sources":["../../src/lib/rego-ast-walker.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * strips the leading "input." prefix, and returns the nested object the
7
7
  * MCP caller can put directly into OPA's `--input` flag.
8
8
  *
9
- * Supported Z3 sorts: string, int, bool.
9
+ * Supported Z3 sorts: string, real, bool.
10
10
  * Uninterpreted sorts produce a placeholder string in the output.
11
11
  */
12
12
  import type { init as Z3Init } from 'z3-solver';
@@ -21,9 +21,22 @@ export type CounterexampleInput = Record<string, unknown>;
21
21
  * @param model - the SAT model from solver.model()
22
22
  * @param inputVars - map from path ("input.user.role") to Z3 constant
23
23
  * @param sorts - inferred sort for each path
24
+ * @param presenceVars - per path, the Z3 boolean saying whether the input
25
+ * carries the field; a path the model leaves absent is omitted
24
26
  * @returns nested JSON for the "input" field (leading "input." stripped)
25
27
  */
26
28
  export declare function extractCounterexample(model: Z3Model, inputVars: Map<string, Z3AnyExpr>, sorts: Map<string, Z3Sort>, presenceVars?: Map<string, Z3AnyExpr>): CounterexampleInput;
29
+ /**
30
+ * Undo Z3's rendering of a string value. The binding writes every byte
31
+ * outside printable ASCII as `\u{HH}`, one escape per UTF-8 byte, so "héllo"
32
+ * arrives as `h\u{c3}\u{a9}llo` and a tab as `\u{9}`; a backslash the policy
33
+ * wrote arrives as `\u{5c}`, since the encoder escapes it. A witness left in
34
+ * that form did not reproduce: OPA compared the policy's literal against the
35
+ * escape text. Each run of escapes is read back as bytes and decoded as
36
+ * UTF-8; the text between runs is kept as it is, so a character Z3 did not
37
+ * escape survives, and a code point no string can hold is left unread.
38
+ */
39
+ export declare function decodeZ3String(text: string): string;
27
40
  /**
28
41
  * Format a counterexample as a human-readable string for the MCP response.
29
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rego-counterexample.d.ts","sourceRoot":"","sources":["../../src/lib/rego-counterexample.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3E,KAAK,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,KAAK,SAAS,GACV,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GACtC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GACrC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,mBAAmB,CAyDrB;AA6BD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAEpE"}
1
+ {"version":3,"file":"rego-counterexample.d.ts","sourceRoot":"","sources":["../../src/lib/rego-counterexample.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAGxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3E,KAAK,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,KAAK,SAAS,GACV,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GACtC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GACrC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,mBAAmB,CAyDrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYnD;AA+BD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAEpE"}
@@ -1,9 +1,12 @@
1
+ import { parseInputPath } from './rego-input-path.js';
1
2
  /**
2
3
  * Extract the witness/counterexample input object from a Z3 model.
3
4
  *
4
5
  * @param model - the SAT model from solver.model()
5
6
  * @param inputVars - map from path ("input.user.role") to Z3 constant
6
7
  * @param sorts - inferred sort for each path
8
+ * @param presenceVars - per path, the Z3 boolean saying whether the input
9
+ * carries the field; a path the model leaves absent is omitted
7
10
  * @returns nested JSON for the "input" field (leading "input." stripped)
8
11
  */
9
12
  export function extractCounterexample(model, inputVars, sorts, presenceVars) {
@@ -27,11 +30,11 @@ export function extractCounterexample(model, inputVars, sorts, presenceVars) {
27
30
  switch (sort) {
28
31
  case 'string':
29
32
  try {
30
- value = evaluated.asString();
33
+ value = decodeZ3String(evaluated.asString());
31
34
  }
32
35
  catch {
33
36
  // eslint-disable-next-line @typescript-eslint/no-base-to-string
34
- value = evaluated.toString().replace(/^"|"$/g, '');
37
+ value = decodeZ3String(evaluated.toString().replace(/^"|"$/g, ''));
35
38
  }
36
39
  break;
37
40
  case 'real': {
@@ -56,21 +59,48 @@ export function extractCounterexample(model, inputVars, sorts, presenceVars) {
56
59
  value = `<opaque:${evaluated.toString()}>`;
57
60
  break;
58
61
  }
59
- // Strip leading "input." so the result represents the input object content
60
- const inputRelPath = path.startsWith('input.') ? path.slice('input.'.length) : path;
61
- flat[inputRelPath] = value;
62
+ flat[path] = value;
62
63
  }
63
64
  return buildNestedObject(flat);
64
65
  }
65
66
  /**
66
- * Convert flat dot-separated paths to a nested object.
67
- * E.g. { "user.role": "admin", "action": "read" } →
68
- * { user: { role: "admin" }, action: "read" }
67
+ * Undo Z3's rendering of a string value. The binding writes every byte
68
+ * outside printable ASCII as `\u{HH}`, one escape per UTF-8 byte, so "héllo"
69
+ * arrives as `h\u{c3}\u{a9}llo` and a tab as `\u{9}`; a backslash the policy
70
+ * wrote arrives as `\u{5c}`, since the encoder escapes it. A witness left in
71
+ * that form did not reproduce: OPA compared the policy's literal against the
72
+ * escape text. Each run of escapes is read back as bytes and decoded as
73
+ * UTF-8; the text between runs is kept as it is, so a character Z3 did not
74
+ * escape survives, and a code point no string can hold is left unread.
75
+ */
76
+ export function decodeZ3String(text) {
77
+ if (!text.includes('\\u{'))
78
+ return text;
79
+ return text.replace(/(?:\\u\{[0-9a-fA-F]{1,6}\})+/g, (run) => {
80
+ const bytes = [];
81
+ for (const m of run.matchAll(/\\u\{([0-9a-fA-F]{1,6})\}/g)) {
82
+ const code = parseInt(m[1], 16);
83
+ if (code <= 0xff)
84
+ bytes.push(code);
85
+ else if (code <= 0x10ffff)
86
+ bytes.push(...Buffer.from(String.fromCodePoint(code), 'utf8'));
87
+ else
88
+ return run;
89
+ }
90
+ return Buffer.from(bytes).toString('utf8');
91
+ });
92
+ }
93
+ /**
94
+ * Convert rendered input paths to a nested object.
95
+ * E.g. { 'input.user.role': "admin", 'input["a.b"]': "read" } →
96
+ * { user: { role: "admin" }, "a.b": "read" }
97
+ * Splitting on dots put a quoted dotted key under nested objects, and the
98
+ * witness did not satisfy the rule it was produced for.
69
99
  */
70
100
  function buildNestedObject(flat) {
71
101
  const result = {};
72
- for (const [dotPath, value] of Object.entries(flat)) {
73
- const segments = dotPath.split('.');
102
+ for (const [renderedPath, value] of Object.entries(flat)) {
103
+ const segments = parseInputPath(renderedPath);
74
104
  let cursor = result;
75
105
  for (let i = 0; i < segments.length - 1; i++) {
76
106
  const seg = segments[i];
@@ -1 +1 @@
1
- {"version":3,"file":"rego-counterexample.js","sourceRoot":"","sources":["../../src/lib/rego-counterexample.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rego-counterexample.js","sourceRoot":"","sources":["../../src/lib/rego-counterexample.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Rendering of an `input` path that is injective over its segments.
3
+ *
4
+ * Joining segments with dots made `input["a.b"]` and `input.a.b` the same
5
+ * string, so the two fields shared one Z3 constant and the witness for one
6
+ * was rebuilt as the other. A segment that is a plain identifier is written
7
+ * `.seg`; any other is written `["..."]` with JSON quoting, which is how Rego
8
+ * itself spells it, and the two forms cannot collide.
9
+ */
10
+ /** Render `["user", "a.b"]` as `input.user["a.b"]`. */
11
+ export declare function renderInputPath(segments: readonly string[]): string;
12
+ /**
13
+ * Parse a rendered path back into its segments. The inverse of
14
+ * renderInputPath; anything it did not produce is read as best it can, one
15
+ * dot-separated segment at a time, so a plain `input.a.b` still works, and a
16
+ * bracket without a well-formed string inside is taken as literal text
17
+ * rather than thrown on.
18
+ */
19
+ export declare function parseInputPath(path: string): string[];
20
+ //# sourceMappingURL=rego-input-path.d.ts.map