@orygn/opa-mcp 0.4.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.
- package/CHANGELOG.md +583 -4
- package/README.md +144 -98
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -3
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +14 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +91 -19
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +1 -6
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +17 -3
- package/dist/constants.js.map +1 -1
- package/dist/lib/bundle-signatures.d.ts +23 -0
- package/dist/lib/bundle-signatures.d.ts.map +1 -0
- package/dist/lib/bundle-signatures.js +152 -0
- package/dist/lib/bundle-signatures.js.map +1 -0
- package/dist/lib/child-env.d.ts +9 -2
- package/dist/lib/child-env.d.ts.map +1 -1
- package/dist/lib/child-env.js +38 -6
- package/dist/lib/child-env.js.map +1 -1
- package/dist/lib/conftest-cli.d.ts +25 -10
- package/dist/lib/conftest-cli.d.ts.map +1 -1
- package/dist/lib/conftest-cli.js +233 -50
- package/dist/lib/conftest-cli.js.map +1 -1
- package/dist/lib/errors.d.ts +4 -5
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +15 -3
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/inline-paths.d.ts +37 -0
- package/dist/lib/inline-paths.d.ts.map +1 -0
- package/dist/lib/inline-paths.js +162 -0
- package/dist/lib/inline-paths.js.map +1 -0
- package/dist/lib/install-id.d.ts.map +1 -1
- package/dist/lib/install-id.js +18 -3
- package/dist/lib/install-id.js.map +1 -1
- package/dist/lib/json-stream.d.ts +26 -0
- package/dist/lib/json-stream.d.ts.map +1 -0
- package/dist/lib/json-stream.js +69 -0
- package/dist/lib/json-stream.js.map +1 -0
- package/dist/lib/opa-cli.d.ts +74 -16
- package/dist/lib/opa-cli.d.ts.map +1 -1
- package/dist/lib/opa-cli.js +107 -30
- package/dist/lib/opa-cli.js.map +1 -1
- package/dist/lib/opa-client.d.ts +27 -1
- package/dist/lib/opa-client.d.ts.map +1 -1
- package/dist/lib/opa-client.js +98 -14
- package/dist/lib/opa-client.js.map +1 -1
- package/dist/lib/opa-paths.d.ts +34 -0
- package/dist/lib/opa-paths.d.ts.map +1 -0
- package/dist/lib/opa-paths.js +101 -0
- package/dist/lib/opa-paths.js.map +1 -0
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +83 -10
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/regal-cli.d.ts +16 -1
- package/dist/lib/regal-cli.d.ts.map +1 -1
- package/dist/lib/regal-cli.js +40 -6
- package/dist/lib/regal-cli.js.map +1 -1
- package/dist/lib/rego-ast-walker.d.ts +0 -6
- package/dist/lib/rego-ast-walker.d.ts.map +1 -1
- package/dist/lib/rego-ast-walker.js +181 -55
- package/dist/lib/rego-ast-walker.js.map +1 -1
- package/dist/lib/rego-counterexample.d.ts +15 -2
- package/dist/lib/rego-counterexample.d.ts.map +1 -1
- package/dist/lib/rego-counterexample.js +63 -15
- package/dist/lib/rego-counterexample.js.map +1 -1
- package/dist/lib/rego-input-path.d.ts +20 -0
- package/dist/lib/rego-input-path.d.ts.map +1 -0
- package/dist/lib/rego-input-path.js +70 -0
- package/dist/lib/rego-input-path.js.map +1 -0
- package/dist/lib/rego-ir.d.ts +34 -3
- package/dist/lib/rego-ir.d.ts.map +1 -1
- package/dist/lib/rego-smt-encoder.d.ts +88 -5
- package/dist/lib/rego-smt-encoder.d.ts.map +1 -1
- package/dist/lib/rego-smt-encoder.js +270 -31
- package/dist/lib/rego-smt-encoder.js.map +1 -1
- package/dist/lib/rego-type-inferencer.d.ts +27 -2
- package/dist/lib/rego-type-inferencer.d.ts.map +1 -1
- package/dist/lib/rego-type-inferencer.js +71 -3
- package/dist/lib/rego-type-inferencer.js.map +1 -1
- package/dist/lib/rego-verify-engine.d.ts.map +1 -1
- package/dist/lib/rego-verify-engine.js +203 -90
- package/dist/lib/rego-verify-engine.js.map +1 -1
- package/dist/lib/rego-z3.d.ts +66 -0
- package/dist/lib/rego-z3.d.ts.map +1 -1
- package/dist/lib/rego-z3.js +312 -5
- package/dist/lib/rego-z3.js.map +1 -1
- package/dist/lib/security.d.ts +8 -0
- package/dist/lib/security.d.ts.map +1 -1
- package/dist/lib/security.js +130 -54
- package/dist/lib/security.js.map +1 -1
- package/dist/lib/subprocess.d.ts +13 -0
- package/dist/lib/subprocess.d.ts.map +1 -1
- package/dist/lib/subprocess.js +153 -18
- package/dist/lib/subprocess.js.map +1 -1
- package/dist/lib/tool-helpers.d.ts +12 -25
- package/dist/lib/tool-helpers.d.ts.map +1 -1
- package/dist/lib/tool-helpers.js +66 -40
- package/dist/lib/tool-helpers.js.map +1 -1
- package/dist/prompts/index.js +2 -2
- package/dist/resources/index.js +1 -1
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/patterns.d.ts +1 -1
- package/dist/resources/patterns.d.ts.map +1 -1
- package/dist/resources/patterns.js +42 -15
- package/dist/resources/patterns.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +50 -7
- package/dist/server.js.map +1 -1
- package/dist/tools/authoring/capabilities.d.ts +4 -0
- package/dist/tools/authoring/capabilities.d.ts.map +1 -1
- package/dist/tools/authoring/capabilities.js +41 -4
- package/dist/tools/authoring/capabilities.js.map +1 -1
- package/dist/tools/authoring/check-schema.d.ts +6 -0
- package/dist/tools/authoring/check-schema.d.ts.map +1 -1
- package/dist/tools/authoring/check-schema.js +56 -3
- package/dist/tools/authoring/check-schema.js.map +1 -1
- package/dist/tools/authoring/format.d.ts.map +1 -1
- package/dist/tools/authoring/format.js +2 -2
- package/dist/tools/authoring/format.js.map +1 -1
- package/dist/tools/authoring/lint.d.ts.map +1 -1
- package/dist/tools/authoring/lint.js +8 -6
- package/dist/tools/authoring/lint.js.map +1 -1
- package/dist/tools/authoring/migrate-v1.d.ts.map +1 -1
- package/dist/tools/authoring/migrate-v1.js +20 -4
- package/dist/tools/authoring/migrate-v1.js.map +1 -1
- package/dist/tools/authoring/parse.d.ts.map +1 -1
- package/dist/tools/authoring/parse.js +3 -3
- package/dist/tools/authoring/parse.js.map +1 -1
- package/dist/tools/bundles/build.d.ts.map +1 -1
- package/dist/tools/bundles/build.js +12 -4
- package/dist/tools/bundles/build.js.map +1 -1
- package/dist/tools/bundles/sign.d.ts +9 -2
- package/dist/tools/bundles/sign.d.ts.map +1 -1
- package/dist/tools/bundles/sign.js +125 -19
- package/dist/tools/bundles/sign.js.map +1 -1
- package/dist/tools/bundles/verify.d.ts +1 -1
- package/dist/tools/bundles/verify.d.ts.map +1 -1
- package/dist/tools/bundles/verify.js +58 -19
- package/dist/tools/bundles/verify.js.map +1 -1
- package/dist/tools/conftest/index.d.ts +5 -0
- package/dist/tools/conftest/index.d.ts.map +1 -1
- package/dist/tools/conftest/index.js.map +1 -1
- package/dist/tools/conftest/pull.d.ts.map +1 -1
- package/dist/tools/conftest/pull.js +24 -10
- package/dist/tools/conftest/pull.js.map +1 -1
- package/dist/tools/conftest/push.d.ts.map +1 -1
- package/dist/tools/conftest/push.js +17 -7
- package/dist/tools/conftest/push.js.map +1 -1
- package/dist/tools/conftest/test.d.ts +10 -6
- package/dist/tools/conftest/test.d.ts.map +1 -1
- package/dist/tools/conftest/test.js +61 -39
- package/dist/tools/conftest/test.js.map +1 -1
- package/dist/tools/conftest/verify.d.ts +10 -6
- package/dist/tools/conftest/verify.d.ts.map +1 -1
- package/dist/tools/conftest/verify.js +40 -32
- package/dist/tools/conftest/verify.js.map +1 -1
- package/dist/tools/evaluation/_shared.js +9 -12
- package/dist/tools/evaluation/_shared.js.map +1 -1
- package/dist/tools/evaluation/bench.d.ts +29 -2
- package/dist/tools/evaluation/bench.d.ts.map +1 -1
- package/dist/tools/evaluation/bench.js +53 -9
- package/dist/tools/evaluation/bench.js.map +1 -1
- package/dist/tools/evaluation/compile.js +4 -4
- package/dist/tools/evaluation/compile.js.map +1 -1
- package/dist/tools/evaluation/eval.d.ts.map +1 -1
- package/dist/tools/evaluation/eval.js +12 -16
- package/dist/tools/evaluation/eval.js.map +1 -1
- package/dist/tools/evaluation/exec.d.ts +16 -0
- package/dist/tools/evaluation/exec.d.ts.map +1 -1
- package/dist/tools/evaluation/exec.js +38 -6
- package/dist/tools/evaluation/exec.js.map +1 -1
- package/dist/tools/evaluation/test-multiroot.d.ts +6 -0
- package/dist/tools/evaluation/test-multiroot.d.ts.map +1 -1
- package/dist/tools/evaluation/test-multiroot.js +35 -8
- package/dist/tools/evaluation/test-multiroot.js.map +1 -1
- package/dist/tools/evaluation/test.d.ts +45 -0
- package/dist/tools/evaluation/test.d.ts.map +1 -1
- package/dist/tools/evaluation/test.js +153 -32
- package/dist/tools/evaluation/test.js.map +1 -1
- package/dist/tools/helpers/coverage-gaps.d.ts +11 -3
- package/dist/tools/helpers/coverage-gaps.d.ts.map +1 -1
- package/dist/tools/helpers/coverage-gaps.js +7 -7
- package/dist/tools/helpers/coverage-gaps.js.map +1 -1
- package/dist/tools/helpers/describe-policy.d.ts.map +1 -1
- package/dist/tools/helpers/describe-policy.js +2 -2
- package/dist/tools/helpers/describe-policy.js.map +1 -1
- package/dist/tools/helpers/explain-decision.d.ts.map +1 -1
- package/dist/tools/helpers/explain-decision.js +3 -4
- package/dist/tools/helpers/explain-decision.js.map +1 -1
- package/dist/tools/helpers/explain-undefined.d.ts +9 -3
- package/dist/tools/helpers/explain-undefined.d.ts.map +1 -1
- package/dist/tools/helpers/explain-undefined.js +214 -73
- package/dist/tools/helpers/explain-undefined.js.map +1 -1
- package/dist/tools/helpers/fix.d.ts +11 -5
- package/dist/tools/helpers/fix.d.ts.map +1 -1
- package/dist/tools/helpers/fix.js +88 -45
- package/dist/tools/helpers/fix.js.map +1 -1
- package/dist/tools/helpers/generate-test-skeleton.d.ts.map +1 -1
- package/dist/tools/helpers/generate-test-skeleton.js +105 -21
- package/dist/tools/helpers/generate-test-skeleton.js.map +1 -1
- package/dist/tools/helpers/playground-share.d.ts +4 -2
- package/dist/tools/helpers/playground-share.d.ts.map +1 -1
- package/dist/tools/helpers/playground-share.js +13 -3
- package/dist/tools/helpers/playground-share.js.map +1 -1
- package/dist/tools/helpers/policy-diff.d.ts.map +1 -1
- package/dist/tools/helpers/policy-diff.js +3 -4
- package/dist/tools/helpers/policy-diff.js.map +1 -1
- package/dist/tools/helpers/security-audit.d.ts.map +1 -1
- package/dist/tools/helpers/security-audit.js +19 -19
- package/dist/tools/helpers/security-audit.js.map +1 -1
- package/dist/tools/helpers/verify.d.ts.map +1 -1
- package/dist/tools/helpers/verify.js +5 -1
- package/dist/tools/helpers/verify.js.map +1 -1
- package/dist/tools/meta/index.d.ts +1 -1
- package/dist/tools/server-management/_shared.d.ts +15 -4
- package/dist/tools/server-management/_shared.d.ts.map +1 -1
- package/dist/tools/server-management/_shared.js +86 -13
- package/dist/tools/server-management/_shared.js.map +1 -1
- package/dist/tools/server-management/data.d.ts.map +1 -1
- package/dist/tools/server-management/data.js +88 -23
- package/dist/tools/server-management/data.js.map +1 -1
- package/dist/tools/server-management/decisions.d.ts.map +1 -1
- package/dist/tools/server-management/decisions.js +16 -3
- package/dist/tools/server-management/decisions.js.map +1 -1
- package/dist/tools/server-management/policies.d.ts.map +1 -1
- package/dist/tools/server-management/policies.js +44 -7
- package/dist/tools/server-management/policies.js.map +1 -1
- package/dist/tools/server-management/status.d.ts.map +1 -1
- package/dist/tools/server-management/status.js +80 -13
- package/dist/tools/server-management/status.js.map +1 -1
- package/dist/types.d.ts +10 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rego-type-inferencer.js","sourceRoot":"","sources":["../../src/lib/rego-type-inferencer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rego-type-inferencer.js","sourceRoot":"","sources":["../../src/lib/rego-type-inferencer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rego-verify-engine.d.ts","sourceRoot":"","sources":["../../src/lib/rego-verify-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"rego-verify-engine.d.ts","sourceRoot":"","sources":["../../src/lib/rego-verify-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AASrD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAgBlF,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,gBAAgB,GAAG,cAAc,GAAG,eAAe,CAAC;AAE3F,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,qBAAqB,EAAE,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAEvB"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { walkModule } from './rego-ast-walker.js';
|
|
2
|
-
import { inferTypes } from './rego-type-inferencer.js';
|
|
3
|
-
import { createInputVars, encodeRule } from './rego-smt-encoder.js';
|
|
2
|
+
import { collectPathReads, inferTypes } from './rego-type-inferencer.js';
|
|
3
|
+
import { clauseInputPaths, createInputVars, structuralAxioms, encodeRule, } from './rego-smt-encoder.js';
|
|
4
4
|
import { extractCounterexample, formatCounterexample, } from './rego-counterexample.js';
|
|
5
5
|
import { describeProperty } from './rego-property-parser.js';
|
|
6
|
-
import { getZ3 } from './rego-z3.js';
|
|
6
|
+
import { getZ3, isZ3RecoverableMessage, isZ3UnavailableMessage, withZ3Lock, Z3_SOLVER_MAX_MEMORY_MB, } from './rego-z3.js';
|
|
7
7
|
// Monotonically increasing counter used to generate a unique prefix for all
|
|
8
8
|
// Z3 constant names within each runVerify call. This prevents sort conflicts
|
|
9
9
|
// when the same input path is inferred with different sorts across calls
|
|
@@ -17,6 +17,10 @@ const SOLVER_TIMEOUT_MS = 10_000;
|
|
|
17
17
|
* The caller must pass the JSON-parsed result of `opa parse --format=json`.
|
|
18
18
|
*/
|
|
19
19
|
export async function runVerify(ast, property, signal) {
|
|
20
|
+
return verifyAttempt(ast, property, signal, 0);
|
|
21
|
+
}
|
|
22
|
+
/** One attempt; a fault that cuts it short earns one more on a fresh module. */
|
|
23
|
+
async function verifyAttempt(ast, property, signal, attempt) {
|
|
20
24
|
const walked = walkModule(ast);
|
|
21
25
|
const warnings = [];
|
|
22
26
|
const targetClauses = walked.rules.get(property.ruleName);
|
|
@@ -58,99 +62,198 @@ export async function runVerify(ast, property, signal) {
|
|
|
58
62
|
for (const conflict of typeResult.conflicts) {
|
|
59
63
|
warnings.push(conflict.reason);
|
|
60
64
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
// pressure under high call volume.
|
|
74
|
-
const solver = new Z3.Solver();
|
|
75
|
-
// Set timeout to prevent hanging on complex policies
|
|
76
|
-
solver.set('timeout', SOLVER_TIMEOUT_MS);
|
|
77
|
-
switch (property.kind) {
|
|
78
|
-
case 'always_true':
|
|
79
|
-
// Prove rule is always true: check if NOT(rule) is satisfiable.
|
|
80
|
-
// SAT → counterexample (input where rule is false)
|
|
81
|
-
// UNSAT → proven always true
|
|
82
|
-
solver.add(Z3.Not(encoded.formula));
|
|
83
|
-
break;
|
|
84
|
-
case 'never_true':
|
|
85
|
-
// Prove rule is never true: check if rule IS satisfiable.
|
|
86
|
-
// SAT → counterexample (input where rule fires, violating "never")
|
|
87
|
-
// UNSAT → proven never true
|
|
88
|
-
solver.add(encoded.formula);
|
|
89
|
-
break;
|
|
90
|
-
case 'satisfiable':
|
|
91
|
-
// Check if any input satisfies the rule.
|
|
92
|
-
// SAT → witness found (not a bug, just a satisfying input)
|
|
93
|
-
// UNSAT → rule is vacuously false / dead code
|
|
94
|
-
solver.add(encoded.formula);
|
|
95
|
-
break;
|
|
65
|
+
// How this rule reads each path. Scoped to the rule under test: what
|
|
66
|
+
// another rule of the module does with a field says nothing about the
|
|
67
|
+
// inputs that reach this one.
|
|
68
|
+
const reads = collectPathReads(targetClauses);
|
|
69
|
+
// Every path this rule reads, with its segments. Also what a witness may
|
|
70
|
+
// name: a path from another rule has no constraint here, so model
|
|
71
|
+
// completion would invent a value for it.
|
|
72
|
+
const rulePaths = new Map();
|
|
73
|
+
for (const path of clauseInputPaths(targetClauses)) {
|
|
74
|
+
const segs = walked.inputPaths.get(path);
|
|
75
|
+
if (segs !== undefined)
|
|
76
|
+
rulePaths.set(path, segs);
|
|
96
77
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
78
|
+
// A field the rule reads beneath is an object in any input that reaches
|
|
79
|
+
// that read, yet the model gives it one scalar value. Comparing it as a
|
|
80
|
+
// value in a way the structural axioms do not cover (anything but
|
|
81
|
+
// equality with a scalar literal or a string built-in) can then be
|
|
82
|
+
// satisfied by a model whose witness carries the object, on which OPA
|
|
83
|
+
// decides the comparison the other way; under a negated property the
|
|
84
|
+
// directions that happen to hold for an object flip. No verdict from such
|
|
85
|
+
// a model can be trusted, so the rule is reported inconclusive.
|
|
86
|
+
const comparedParents = [...reads.valueReads]
|
|
87
|
+
.filter((path) => {
|
|
88
|
+
const segs = rulePaths.get(path);
|
|
89
|
+
if (segs === undefined)
|
|
90
|
+
return false;
|
|
91
|
+
for (const otherSegs of rulePaths.values()) {
|
|
92
|
+
if (otherSegs.length > segs.length && segs.every((seg, i) => otherSegs[i] === seg)) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
})
|
|
98
|
+
.sort();
|
|
99
|
+
if (comparedParents.length > 0) {
|
|
100
|
+
return inconclusive(property, `Rule "${property.ruleName}" compares ${comparedParents.join(', ')} as a value and also reads a field beneath it. Such a field is an object wherever the deeper read holds, which the encoder cannot model, so verification is inconclusive.`, [
|
|
101
|
+
...unsupportedInRule,
|
|
102
|
+
{
|
|
103
|
+
constructType: 'parent_field_compared_as_value',
|
|
104
|
+
description: `${comparedParents.join(', ')} compared as a value while a field beneath it is also read`,
|
|
105
|
+
},
|
|
106
|
+
], warnings);
|
|
101
107
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
108
|
+
signal?.throwIfAborted();
|
|
109
|
+
// Everything below touches the shared Z3 Context, which is one
|
|
110
|
+
// single-threaded WASM heap. Concurrent MCP tool calls must not overlap
|
|
111
|
+
// here: two solves interleaving on that heap degraded verdicts to
|
|
112
|
+
// inconclusive and crashed the WASM allocator. The lock also makes the
|
|
113
|
+
// callId counter race-free.
|
|
114
|
+
return await withZ3Lock(async () => {
|
|
115
|
+
const Z3 = await getZ3();
|
|
116
|
+
signal?.throwIfAborted();
|
|
117
|
+
const callId = `v${_verifyCallCounter++}`;
|
|
118
|
+
const { vars: inputVars, presence: presenceVars } = createInputVars(Z3, walked.inputPaths, typeResult.sorts, callId);
|
|
119
|
+
const ctx = { Z3, inputVars, presenceVars, sorts: typeResult.sorts, callId };
|
|
120
|
+
// The rule's default participates in "is it true", so it must reach the
|
|
121
|
+
// encoder. Consulting it only when there were no clauses at all is what made
|
|
122
|
+
// `default allow := true` plus a guard clause verify as never-true.
|
|
123
|
+
const encoded = encodeRule(targetClauses, ctx, walked.defaults.get(property.ruleName));
|
|
124
|
+
warnings.push(...encoded.warnings);
|
|
125
|
+
if (encoded.unencodable) {
|
|
126
|
+
return inconclusive(property, `Rule "${property.ruleName}" contains a value or operand the encoder cannot represent (for example a null literal). Verification is inconclusive rather than guessed.`, unsupportedInRule, warnings);
|
|
127
|
+
}
|
|
128
|
+
// Released in the finally below, along with its model, rather than
|
|
129
|
+
// left to the collector, which cannot see Z3's memory: measured, that
|
|
130
|
+
// release alone is what holds 1500 solves at about 210 MB. The
|
|
131
|
+
// formula's nodes go through z3-solver's finalizers, which rego-z3
|
|
132
|
+
// holds until no solve is running.
|
|
133
|
+
const solver = new Z3.Solver();
|
|
134
|
+
try {
|
|
135
|
+
// Bounded in time and in memory. The solver's memory bound sits below
|
|
136
|
+
// the process ceiling so that running out answers "unknown" at a
|
|
137
|
+
// checkpoint instead of failing an allocation; see rego-z3.ts.
|
|
138
|
+
solver.set('timeout', SOLVER_TIMEOUT_MS);
|
|
139
|
+
solver.set('max_memory', Z3_SOLVER_MAX_MEMORY_MB);
|
|
140
|
+
switch (property.kind) {
|
|
141
|
+
case 'always_true':
|
|
142
|
+
// Prove rule is always true: check if NOT(rule) is satisfiable.
|
|
143
|
+
// SAT → counterexample (input where rule is false)
|
|
144
|
+
// UNSAT → proven always true
|
|
145
|
+
solver.add(Z3.Not(encoded.formula));
|
|
146
|
+
break;
|
|
147
|
+
case 'never_true':
|
|
148
|
+
// Prove rule is never true: check if rule IS satisfiable.
|
|
149
|
+
// SAT → counterexample (input where rule fires, violating "never")
|
|
150
|
+
// UNSAT → proven never true
|
|
151
|
+
solver.add(encoded.formula);
|
|
152
|
+
break;
|
|
153
|
+
case 'satisfiable':
|
|
154
|
+
// Check if any input satisfies the rule.
|
|
155
|
+
// SAT → witness found (not a bug, just a satisfying input)
|
|
156
|
+
// UNSAT → rule is vacuously false / dead code
|
|
157
|
+
solver.add(encoded.formula);
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
signal?.throwIfAborted();
|
|
161
|
+
// What any real input looks like, alongside the property.
|
|
162
|
+
for (const axiom of structuralAxioms(Z3, walked.inputPaths, reads.scalarPaths, presenceVars)) {
|
|
163
|
+
solver.add(axiom);
|
|
164
|
+
}
|
|
165
|
+
let solverResult = await solver.check();
|
|
166
|
+
// Prefer a witness in which every field the rule reads is PRESENT.
|
|
167
|
+
//
|
|
168
|
+
// With absence modelled, Z3 will happily satisfy NOT(rule) by omitting a
|
|
169
|
+
// field, which is sound but unhelpful: "it fails when the input is empty"
|
|
170
|
+
// is rarely the case a reviewer is chasing. Re-ask with presence forced and
|
|
171
|
+
// keep that model when one exists, otherwise fall back to the original.
|
|
172
|
+
// Soundness is unaffected either way, since both are real models.
|
|
173
|
+
if (solverResult === 'sat' && presenceVars.size > 0) {
|
|
174
|
+
solver.push();
|
|
175
|
+
for (const present of presenceVars.values())
|
|
176
|
+
solver.add(present);
|
|
177
|
+
const withPresence = await solver.check();
|
|
178
|
+
if (withPresence === 'sat') {
|
|
179
|
+
solverResult = withPresence;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
// The model belongs to the last check; after the pop that was an
|
|
183
|
+
// unsat one, so ask again before reading it.
|
|
184
|
+
solver.pop();
|
|
185
|
+
solverResult = await solver.check();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (solverResult === 'unknown') {
|
|
189
|
+
return inconclusive(property, `Z3 solver returned "unknown": the ${SOLVER_TIMEOUT_MS}ms time limit or the ${Z3_SOLVER_MAX_MEMORY_MB} MB memory limit was reached. The policy may be too complex for automated verification.`, unsupportedInRule, warnings);
|
|
190
|
+
}
|
|
191
|
+
if (solverResult === 'unsat') {
|
|
192
|
+
if (property.kind === 'satisfiable') {
|
|
193
|
+
// No satisfying input exists -- rule is dead code or has contradictory conditions.
|
|
194
|
+
return {
|
|
195
|
+
verdict: 'unsatisfiable',
|
|
196
|
+
property: describeProperty(property),
|
|
197
|
+
rule: property.ruleName,
|
|
198
|
+
unsupportedConstructs: unsupportedInRule,
|
|
199
|
+
warnings,
|
|
200
|
+
message: `UNSATISFIABLE: No input can make "${property.ruleName}" true. The rule may be dead code or have contradictory conditions.`,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
// For always_true / never_true: UNSAT on the negation = property proven
|
|
204
|
+
return {
|
|
205
|
+
verdict: 'proven',
|
|
206
|
+
property: describeProperty(property),
|
|
207
|
+
rule: property.ruleName,
|
|
208
|
+
unsupportedConstructs: unsupportedInRule,
|
|
209
|
+
warnings,
|
|
210
|
+
message: `PROVEN: ${describeProperty(property)}.`,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
// SAT: read the model and release it as soon as the witness is out; it
|
|
214
|
+
// is Z3 memory the collector cannot see.
|
|
215
|
+
const witnessVars = new Map([...inputVars].filter(([path]) => rulePaths.has(path)));
|
|
216
|
+
const witnessPresence = new Map([...presenceVars].filter(([path]) => rulePaths.has(path)));
|
|
217
|
+
const model = solver.model();
|
|
218
|
+
let ce;
|
|
219
|
+
try {
|
|
220
|
+
ce = extractCounterexample(model, witnessVars, typeResult.sorts, witnessPresence);
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
model.release();
|
|
224
|
+
}
|
|
225
|
+
const ceFormatted = formatCounterexample(ce);
|
|
226
|
+
if (property.kind === 'satisfiable') {
|
|
227
|
+
return {
|
|
228
|
+
verdict: 'proven',
|
|
229
|
+
property: describeProperty(property),
|
|
230
|
+
rule: property.ruleName,
|
|
231
|
+
counterexample: ce,
|
|
232
|
+
counterexampleFormatted: ceFormatted,
|
|
233
|
+
unsupportedConstructs: unsupportedInRule,
|
|
234
|
+
warnings,
|
|
235
|
+
message: `SATISFIABLE: Found an input that makes "${property.ruleName}" true.\n\nWitness input:\n${ceFormatted}`,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
// always_true / never_true: SAT means we found a violation
|
|
239
|
+
const ceLabel = property.kind === 'always_true'
|
|
240
|
+
? 'input where rule is FALSE'
|
|
241
|
+
: 'input where rule is TRUE (violates "never")';
|
|
105
242
|
return {
|
|
106
|
-
verdict: '
|
|
243
|
+
verdict: 'counterexample',
|
|
107
244
|
property: describeProperty(property),
|
|
108
245
|
rule: property.ruleName,
|
|
246
|
+
counterexample: ce,
|
|
247
|
+
counterexampleFormatted: ceFormatted,
|
|
109
248
|
unsupportedConstructs: unsupportedInRule,
|
|
110
249
|
warnings,
|
|
111
|
-
message: `
|
|
250
|
+
message: `COUNTEREXAMPLE: Property does NOT hold. Found ${ceLabel}:\n\n${ceFormatted}`,
|
|
112
251
|
};
|
|
113
252
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
rule: property.ruleName,
|
|
119
|
-
unsupportedConstructs: unsupportedInRule,
|
|
120
|
-
warnings,
|
|
121
|
-
message: `PROVEN: ${describeProperty(property)}.`,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
// SAT: pass solver.model() inline so the Model object is not kept alive
|
|
125
|
-
// beyond extractCounterexample -- it becomes GC-eligible immediately after.
|
|
126
|
-
const ce = extractCounterexample(solver.model(), inputVars, typeResult.sorts);
|
|
127
|
-
const ceFormatted = formatCounterexample(ce);
|
|
128
|
-
if (property.kind === 'satisfiable') {
|
|
129
|
-
return {
|
|
130
|
-
verdict: 'proven',
|
|
131
|
-
property: describeProperty(property),
|
|
132
|
-
rule: property.ruleName,
|
|
133
|
-
counterexample: ce,
|
|
134
|
-
counterexampleFormatted: ceFormatted,
|
|
135
|
-
unsupportedConstructs: unsupportedInRule,
|
|
136
|
-
warnings,
|
|
137
|
-
message: `SATISFIABLE: Found an input that makes "${property.ruleName}" true.\n\nWitness input:\n${ceFormatted}`,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
// always_true / never_true: SAT means we found a violation
|
|
141
|
-
const ceLabel = property.kind === 'always_true'
|
|
142
|
-
? 'input where rule is FALSE'
|
|
143
|
-
: 'input where rule is TRUE (violates "never")';
|
|
144
|
-
return {
|
|
145
|
-
verdict: 'counterexample',
|
|
146
|
-
property: describeProperty(property),
|
|
147
|
-
rule: property.ruleName,
|
|
148
|
-
counterexample: ce,
|
|
149
|
-
counterexampleFormatted: ceFormatted,
|
|
150
|
-
unsupportedConstructs: unsupportedInRule,
|
|
151
|
-
warnings,
|
|
152
|
-
message: `COUNTEREXAMPLE: Property does NOT hold. Found ${ceLabel}:\n\n${ceFormatted}`,
|
|
153
|
-
};
|
|
253
|
+
finally {
|
|
254
|
+
solver.release();
|
|
255
|
+
}
|
|
256
|
+
});
|
|
154
257
|
}
|
|
155
258
|
catch (e) {
|
|
156
259
|
// A cancellation must propagate as a cancellation, not be masked as a
|
|
@@ -159,10 +262,20 @@ export async function runVerify(ast, property, signal) {
|
|
|
159
262
|
if (signal?.aborted)
|
|
160
263
|
throw e;
|
|
161
264
|
const detail = e instanceof Error ? e.message : String(e);
|
|
265
|
+
// A fault cut this solve short; the next getZ3 brings up a fresh module,
|
|
266
|
+
// so the call is worth one more try before it is reported.
|
|
267
|
+
if (attempt === 0 && isZ3RecoverableMessage(detail)) {
|
|
268
|
+
return verifyAttempt(ast, property, signal, 1);
|
|
269
|
+
}
|
|
162
270
|
const isSortConflict = /sort/i.test(detail) && /incompat/i.test(detail);
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
271
|
+
// A dead Z3 says so in its message; that is the one thing the caller can
|
|
272
|
+
// act on (restart), so it goes through verbatim.
|
|
273
|
+
const z3Down = isZ3UnavailableMessage(detail);
|
|
274
|
+
return inconclusive(property, z3Down
|
|
275
|
+
? detail
|
|
276
|
+
: isSortConflict
|
|
277
|
+
? 'The rule constrains an input field to conflicting types (for example, compared against both a number and a string), which cannot be encoded for SMT solving.'
|
|
278
|
+
: 'Verification could not be completed due to an internal encoding or solver error.', [
|
|
166
279
|
...unsupportedInRule,
|
|
167
280
|
{
|
|
168
281
|
constructType: isSortConflict ? 'type_conflict' : 'encoding_error',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rego-verify-engine.js","sourceRoot":"","sources":["../../src/lib/rego-verify-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rego-verify-engine.js","sourceRoot":"","sources":["../../src/lib/rego-verify-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/rego-z3.d.ts
CHANGED
|
@@ -1,10 +1,76 @@
|
|
|
1
1
|
import type { init as Z3Init } from 'z3-solver';
|
|
2
2
|
export type Z3Context = ReturnType<Awaited<ReturnType<typeof Z3Init>>['Context']>;
|
|
3
|
+
/**
|
|
4
|
+
* Ceiling on Z3's own allocations, in megabytes. Reached, Z3 raises an
|
|
5
|
+
* ordinary exception that the engine turns into an inconclusive verdict.
|
|
6
|
+
* Without it the WASM heap itself runs out, and that abort surfaces outside
|
|
7
|
+
* every try/catch as an uncaughtException that ends the server.
|
|
8
|
+
*/
|
|
9
|
+
export declare const Z3_MEMORY_MAX_MB = 1024;
|
|
10
|
+
/**
|
|
11
|
+
* The solver's own bound, checked at its checkpoints, where running out
|
|
12
|
+
* degrades to an "unknown" answer. It sits well below the process ceiling on
|
|
13
|
+
* purpose: at the same value the allocator's exception won the race, and an
|
|
14
|
+
* allocation failing inside a destructor ends in an abort rather than an
|
|
15
|
+
* error. Measured in review: equal caps aborted four times in four; a lower
|
|
16
|
+
* solver bound answered "unknown" four times in four.
|
|
17
|
+
*/
|
|
18
|
+
export declare const Z3_SOLVER_MAX_MEMORY_MB = 768;
|
|
3
19
|
/**
|
|
4
20
|
* Return the shared Z3 Context, initializing WASM on first call.
|
|
5
21
|
* Safe to call from concurrent async paths.
|
|
6
22
|
*/
|
|
7
23
|
export declare function getZ3(): Promise<Z3Context>;
|
|
24
|
+
/** Read back a Z3 global parameter, after initialisation. */
|
|
25
|
+
export declare function getZ3Param(name: string): Promise<string | null>;
|
|
26
|
+
/** Whether a Z3 critical section is running right now. */
|
|
27
|
+
export declare function isZ3Busy(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Give up on the Z3 module in use. Called when it failed outside a try/catch:
|
|
30
|
+
* the heap it lives in cannot be trusted. The next call brings up a fresh
|
|
31
|
+
* module, a bounded number of times per process.
|
|
32
|
+
*/
|
|
33
|
+
export declare function markZ3Unusable(reason: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Whether an error message is one of the two this module produces once Z3
|
|
36
|
+
* has been given up on. The engine passes such a message through to the
|
|
37
|
+
* caller verbatim, since a restart is the one thing they can do about it.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isZ3UnavailableMessage(detail: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Whether a failure is the solve in flight being cut short by a fault, which
|
|
42
|
+
* a fresh module can answer: the engine retries such a call once.
|
|
43
|
+
*/
|
|
44
|
+
export declare function isZ3RecoverableMessage(detail: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* How many fresh modules this process may still bring up after a fault.
|
|
47
|
+
* Three for the life of the process, however far apart the faults: each
|
|
48
|
+
* retained instance costs memory, and a fourth fault is a pattern to
|
|
49
|
+
* restart out of, not to ride.
|
|
50
|
+
*/
|
|
51
|
+
export declare function z3RecoveriesLeft(): number;
|
|
52
|
+
/** For tests: how many finalizers are waiting for the open section to close. */
|
|
53
|
+
export declare function deferredFinalizersForTesting(): number;
|
|
54
|
+
/**
|
|
55
|
+
* For tests: what z3-solver's finalizers go through. Runs at once when no
|
|
56
|
+
* section is open, otherwise once the open one closes.
|
|
57
|
+
*/
|
|
58
|
+
export declare function enqueueFinalizerForTesting(finalizer: () => void): void;
|
|
59
|
+
/**
|
|
60
|
+
* Whether an uncaught error is the WASM heap giving out, rather than some
|
|
61
|
+
* unrelated failure that happened while a solve was running.
|
|
62
|
+
*/
|
|
63
|
+
export declare function isZ3Failure(e: unknown): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Run `fn` with exclusive access to the shared Z3 Context.
|
|
66
|
+
*
|
|
67
|
+
* Serializes rather than parallelizes: an MCP client is free to issue several
|
|
68
|
+
* rego_verify calls at once, and letting them into the WASM heap together
|
|
69
|
+
* crashes it. Solve times are in the tens of milliseconds, so queueing is
|
|
70
|
+
* cheaper than the alternative of one Context per call, which would re-pay the
|
|
71
|
+
* WASM init cost every time.
|
|
72
|
+
*/
|
|
73
|
+
export declare function withZ3Lock<T>(fn: () => Promise<T>): Promise<T>;
|
|
8
74
|
/**
|
|
9
75
|
* Reset the singleton - intended for test teardown only.
|
|
10
76
|
* Do NOT call in production paths; re-init is expensive.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rego-z3.d.ts","sourceRoot":"","sources":["../../src/lib/rego-z3.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rego-z3.d.ts","sourceRoot":"","sources":["../../src/lib/rego-z3.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,WAAW,CAAC;AAKhD,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAIlF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAsH3C;;;GAGG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,CA+BhD;AAED,6DAA6D;AAC7D,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGrE;AAED,0DAA0D;AAC1D,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAYnD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,IAAI,CAGtE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAiB/C;AASD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA2BpE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAUxC"}
|