@orygn/opa-mcp 0.3.0 → 0.5.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 +396 -3
- package/README.md +132 -98
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -3
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +15 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +74 -14
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +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 +41 -0
- package/dist/lib/child-env.d.ts.map +1 -0
- package/dist/lib/child-env.js +176 -0
- package/dist/lib/child-env.js.map +1 -0
- 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 +153 -33
- package/dist/lib/conftest-cli.js.map +1 -1
- 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 +64 -16
- package/dist/lib/opa-cli.d.ts.map +1 -1
- package/dist/lib/opa-cli.js +99 -28
- package/dist/lib/opa-cli.js.map +1 -1
- package/dist/lib/opa-paths.d.ts +24 -0
- package/dist/lib/opa-paths.d.ts.map +1 -0
- package/dist/lib/opa-paths.js +97 -0
- package/dist/lib/opa-paths.js.map +1 -0
- 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 +41 -6
- package/dist/lib/regal-cli.js.map +1 -1
- package/dist/lib/rego-ast-walker.d.ts.map +1 -1
- package/dist/lib/rego-ast-walker.js +141 -17
- package/dist/lib/rego-ast-walker.js.map +1 -1
- package/dist/lib/rego-counterexample.d.ts +1 -1
- package/dist/lib/rego-counterexample.d.ts.map +1 -1
- package/dist/lib/rego-counterexample.js +23 -5
- package/dist/lib/rego-counterexample.js.map +1 -1
- package/dist/lib/rego-ir.d.ts +32 -2
- package/dist/lib/rego-ir.d.ts.map +1 -1
- package/dist/lib/rego-smt-encoder.d.ts +53 -5
- package/dist/lib/rego-smt-encoder.d.ts.map +1 -1
- package/dist/lib/rego-smt-encoder.js +192 -26
- package/dist/lib/rego-smt-encoder.js.map +1 -1
- package/dist/lib/rego-type-inferencer.d.ts +1 -1
- package/dist/lib/rego-type-inferencer.d.ts.map +1 -1
- package/dist/lib/rego-type-inferencer.js +3 -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 +109 -77
- package/dist/lib/rego-verify-engine.js.map +1 -1
- package/dist/lib/rego-z3.d.ts +10 -0
- package/dist/lib/rego-z3.d.ts.map +1 -1
- package/dist/lib/rego-z3.js +38 -0
- 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 +36 -3
- package/dist/lib/subprocess.d.ts.map +1 -1
- package/dist/lib/subprocess.js +121 -20
- package/dist/lib/subprocess.js.map +1 -1
- package/dist/lib/tool-helpers.d.ts.map +1 -1
- package/dist/lib/tool-helpers.js +10 -0
- package/dist/lib/tool-helpers.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 +40 -12
- package/dist/resources/patterns.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/authoring/check-schema.js +1 -1
- package/dist/tools/authoring/check-schema.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 +145 -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/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 +47 -24
- 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 +30 -18
- package/dist/tools/conftest/verify.js.map +1 -1
- package/dist/tools/evaluation/bench.d.ts +16 -0
- package/dist/tools/evaluation/bench.d.ts.map +1 -1
- package/dist/tools/evaluation/bench.js +30 -5
- package/dist/tools/evaluation/bench.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 +35 -2
- package/dist/tools/evaluation/exec.js.map +1 -1
- package/dist/tools/evaluation/test-multiroot.d.ts +4 -0
- package/dist/tools/evaluation/test-multiroot.d.ts.map +1 -1
- package/dist/tools/evaluation/test-multiroot.js +21 -14
- 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 +146 -27
- 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 +4 -3
- package/dist/tools/helpers/coverage-gaps.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 +83 -51
- package/dist/tools/helpers/explain-undefined.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/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 +73 -12
- 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":"coverage-gaps.js","sourceRoot":"","sources":["../../../src/tools/helpers/coverage-gaps.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,qBAAqB,GAAG;IAC5B,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,qFAAqF,CACtF;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,uHAAuH,CACxH;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;CAC3F,CAAC;
|
|
1
|
+
{"version":3,"file":"coverage-gaps.js","sourceRoot":"","sources":["../../../src/tools/helpers/coverage-gaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,9 +33,15 @@ export interface RuleAnalysis {
|
|
|
33
33
|
source: 'trace' | 'standalone-eval';
|
|
34
34
|
}
|
|
35
35
|
export interface RegoExplainUndefinedOutput {
|
|
36
|
-
/**
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Whether the query produced a value.
|
|
38
|
+
*
|
|
39
|
+
* `default` means it produced one only because a `default` rule supplied it:
|
|
40
|
+
* no other definition of the rule matched. The per-rule breakdown says why,
|
|
41
|
+
* which is the same question `undefined` asks.
|
|
42
|
+
*/
|
|
43
|
+
queryResult: 'undefined' | 'defined' | 'default';
|
|
44
|
+
/** Present when queryResult is "defined" or "default". */
|
|
39
45
|
value?: unknown;
|
|
40
46
|
/** Human-readable explanation. */
|
|
41
47
|
summary: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explain-undefined.d.ts","sourceRoot":"","sources":["../../../src/tools/helpers/explain-undefined.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA6E9C,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;IACzC,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,SAAS,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,sDAAsD;IACtD,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,sEAAsE;IACtE,iBAAiB,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,0CAA0C;IAC1C,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC
|
|
1
|
+
{"version":3,"file":"explain-undefined.d.ts","sourceRoot":"","sources":["../../../src/tools/helpers/explain-undefined.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA6E9C,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;IACzC,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,SAAS,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,sDAAsD;IACtD,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,sEAAsE;IACtE,iBAAiB,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,0CAA0C;IAC1C,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;;OAMG;IACH,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IACjD,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0BAA0B;IAC1B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAqMD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA2OpF"}
|
|
@@ -75,20 +75,35 @@ function queryToPackageAndRule(query) {
|
|
|
75
75
|
packagePath: parts.slice(0, -1).join('.'),
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* The source row a trace event refers to.
|
|
80
|
+
*
|
|
81
|
+
* OPA does not populate `Node.location` on trace events; the row lives on the
|
|
82
|
+
* event's own `Location`. Reading only the node meant every row comparison fell
|
|
83
|
+
* through to matching on the rule name alone, so all clauses of a multi-clause
|
|
84
|
+
* rule looked present in the trace as soon as any one of them was, and the ones
|
|
85
|
+
* the indexer had eliminated were never evaluated standalone. They came back as
|
|
86
|
+
* `unevaluable` with no blocking condition, which is the answer this tool
|
|
87
|
+
* exists to give.
|
|
88
|
+
*/
|
|
89
|
+
function traceEventRow(ev) {
|
|
90
|
+
return ev.Node?.location?.row ?? ev.Location?.row;
|
|
91
|
+
}
|
|
92
|
+
function matchesRule(ev, ruleName, ruleRow) {
|
|
93
|
+
if (ev.Op?.toLowerCase() !== 'enter')
|
|
94
|
+
return false;
|
|
95
|
+
if (!ev.Node)
|
|
96
|
+
return false;
|
|
97
|
+
if (extractRuleHeadName(ev.Node.head) !== ruleName)
|
|
98
|
+
return false;
|
|
99
|
+
const row = traceEventRow(ev);
|
|
100
|
+
// Disambiguate the clauses of an incremental rule by source row.
|
|
101
|
+
if (ruleRow !== undefined && row !== undefined)
|
|
102
|
+
return row === ruleRow;
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
78
105
|
function ruleAppearsInTrace(ruleName, ruleRow, trace) {
|
|
79
|
-
return trace.some((ev) =>
|
|
80
|
-
if (ev.Op?.toLowerCase() !== 'enter')
|
|
81
|
-
return false;
|
|
82
|
-
if (!ev.Node)
|
|
83
|
-
return false;
|
|
84
|
-
if (extractRuleHeadName(ev.Node.head) !== ruleName)
|
|
85
|
-
return false;
|
|
86
|
-
// When we have source row information, use it to disambiguate incremental rules.
|
|
87
|
-
if (ruleRow !== undefined && ev.Node.location?.row !== undefined) {
|
|
88
|
-
return ev.Node.location.row === ruleRow;
|
|
89
|
-
}
|
|
90
|
-
return true;
|
|
91
|
-
});
|
|
106
|
+
return trace.some((ev) => matchesRule(ev, ruleName, ruleRow));
|
|
92
107
|
}
|
|
93
108
|
function findBlockingRowFromTrace(rule, trace) {
|
|
94
109
|
const ruleName = extractRuleHeadName(rule.head);
|
|
@@ -97,16 +112,7 @@ function findBlockingRowFromTrace(rule, trace) {
|
|
|
97
112
|
if (bodyRows.size === 0)
|
|
98
113
|
return undefined;
|
|
99
114
|
// Locate the Enter event for this specific rule definition.
|
|
100
|
-
const enterIdx = trace.findIndex((ev) =>
|
|
101
|
-
if (ev.Op?.toLowerCase() !== 'enter')
|
|
102
|
-
return false;
|
|
103
|
-
if (extractRuleHeadName(ev.Node?.head) !== ruleName)
|
|
104
|
-
return false;
|
|
105
|
-
if (ruleRow !== undefined && ev.Node?.location?.row !== undefined) {
|
|
106
|
-
return ev.Node.location.row === ruleRow;
|
|
107
|
-
}
|
|
108
|
-
return true;
|
|
109
|
-
});
|
|
115
|
+
const enterIdx = trace.findIndex((ev) => matchesRule(ev, ruleName ?? '', ruleRow));
|
|
110
116
|
if (enterIdx < 0)
|
|
111
117
|
return undefined;
|
|
112
118
|
// Find the first Fail event after the Enter that falls on a body expression row.
|
|
@@ -151,14 +157,25 @@ async function evalConditionStandalone(exprText, evalBase, opa, signal) {
|
|
|
151
157
|
});
|
|
152
158
|
return satisfied ? { result: 'true' } : { result: 'false' };
|
|
153
159
|
}
|
|
154
|
-
|
|
160
|
+
/** Structural equality, enough for the scalars and small literals a default holds. */
|
|
161
|
+
function deepEqual(a, b) {
|
|
162
|
+
if (a === b)
|
|
163
|
+
return true;
|
|
164
|
+
if (a === null || b === null || typeof a !== 'object' || typeof b !== 'object')
|
|
165
|
+
return false;
|
|
166
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
167
|
+
}
|
|
168
|
+
function buildSummary(query, rules, defaultValue, viaDefault) {
|
|
155
169
|
const lines = [];
|
|
170
|
+
const state = viaDefault
|
|
171
|
+
? `falls back to its default value ${JSON.stringify(defaultValue)} because no other definition matched`
|
|
172
|
+
: 'is undefined';
|
|
156
173
|
if (rules.length === 0) {
|
|
157
|
-
lines.push(`${query}
|
|
174
|
+
lines.push(`${query} ${state}: no matching rules found in the analysed source.`);
|
|
158
175
|
}
|
|
159
176
|
else {
|
|
160
177
|
const count = rules.length;
|
|
161
|
-
lines.push(`${query}
|
|
178
|
+
lines.push(`${query} ${state}. ${count} rule definition${count !== 1 ? 's' : ''} analysed:`);
|
|
162
179
|
for (const r of rules) {
|
|
163
180
|
const loc = r.location.row > 0 ? ` (row ${r.location.row})` : '';
|
|
164
181
|
const bc = r.blockingCondition;
|
|
@@ -177,7 +194,7 @@ function buildSummary(query, rules, defaultValue) {
|
|
|
177
194
|
}
|
|
178
195
|
}
|
|
179
196
|
}
|
|
180
|
-
if (defaultValue !== undefined) {
|
|
197
|
+
if (!viaDefault && defaultValue !== undefined) {
|
|
181
198
|
lines.push(`Default value: ${JSON.stringify(defaultValue)}.`);
|
|
182
199
|
}
|
|
183
200
|
return lines.join('\n');
|
|
@@ -188,9 +205,12 @@ export function registerRegoExplainUndefined(server, config) {
|
|
|
188
205
|
server.registerTool('rego_explain_undefined', {
|
|
189
206
|
title: 'Explain why a Rego query is undefined',
|
|
190
207
|
description: 'Diagnose why a fully-qualified Rego query (e.g. "data.authz.allow") produces no ' +
|
|
191
|
-
'value. Combines a plain eval, a full-trace eval, and
|
|
192
|
-
'identify the exact body expression blocking each rule.
|
|
193
|
-
'(trace-based) and indexer elimination (standalone
|
|
208
|
+
'value, or falls back to its default. Combines a plain eval, a full-trace eval, and ' +
|
|
209
|
+
'per-condition AST analysis to identify the exact body expression blocking each rule. ' +
|
|
210
|
+
'Handles both runtime failures (trace-based) and indexer elimination (standalone ' +
|
|
211
|
+
'condition eval). A rule written with `default allow := false` always has a value, so ' +
|
|
212
|
+
'`queryResult` reports `default` for it and the same per-rule breakdown follows: the ' +
|
|
213
|
+
'question "why is allow false" is the question this answers. Returns a structured ' +
|
|
194
214
|
'breakdown of which conditions blocked each rule plus a human-readable summary.',
|
|
195
215
|
inputSchema: RegoExplainUndefinedInput,
|
|
196
216
|
annotations: {
|
|
@@ -237,24 +257,11 @@ export function registerRegoExplainUndefined(server, config) {
|
|
|
237
257
|
}
|
|
238
258
|
const plainJson = tryParseJson(plainResult.stdout);
|
|
239
259
|
const isDefined = (plainJson?.result?.length ?? 0) > 0;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
summary: `${args.query} is defined with value: ${JSON.stringify(value)}.`,
|
|
246
|
-
rulesFound: 0,
|
|
247
|
-
rules: [],
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
// ── Step 2: eval with --explain=full ──────────────────────────────
|
|
251
|
-
const traceResult = await opa.eval({ ...evalBase, explain: 'full' }, signal);
|
|
252
|
-
const traceSpawnErr = mapSubprocessFailure(traceResult, 'opa');
|
|
253
|
-
if (traceSpawnErr)
|
|
254
|
-
return traceSpawnErr;
|
|
255
|
-
const traceJson = tryParseJson(traceResult.stdout);
|
|
256
|
-
const trace = traceJson?.explanation ?? [];
|
|
257
|
-
// ── Step 3: parse AST(s) ──────────────────────────────────────────
|
|
260
|
+
const definedValue = isDefined
|
|
261
|
+
? plainJson.result[0]
|
|
262
|
+
?.expressions?.[0]?.value
|
|
263
|
+
: undefined;
|
|
264
|
+
// ── Step 2: parse AST(s) ──────────────────────────────────────────
|
|
258
265
|
const asts = [];
|
|
259
266
|
if (args.source) {
|
|
260
267
|
const pr = await opa.parse({ source: args.source, includeLocations: true }, signal);
|
|
@@ -281,7 +288,7 @@ export function registerRegoExplainUndefined(server, config) {
|
|
|
281
288
|
}
|
|
282
289
|
}
|
|
283
290
|
}
|
|
284
|
-
// ── Step
|
|
291
|
+
// ── Step 3: find matching rules ───────────────────────────────────
|
|
285
292
|
const queryParsed = queryToPackageAndRule(args.query);
|
|
286
293
|
const matchedRules = [];
|
|
287
294
|
for (const ast of asts) {
|
|
@@ -295,6 +302,30 @@ export function registerRegoExplainUndefined(server, config) {
|
|
|
295
302
|
}
|
|
296
303
|
}
|
|
297
304
|
}
|
|
305
|
+
// A rule written with `default allow := false` always has a value, so the
|
|
306
|
+
// query is never undefined and the analysis below used to be skipped for
|
|
307
|
+
// the shape most policies are written in. When the value came from the
|
|
308
|
+
// default and nothing else matched, the interesting question is unchanged.
|
|
309
|
+
const defaultRule = matchedRules.find((r) => r.default === true);
|
|
310
|
+
const viaDefault = isDefined &&
|
|
311
|
+
defaultRule !== undefined &&
|
|
312
|
+
deepEqual(defaultRule.head?.value?.value, definedValue);
|
|
313
|
+
if (isDefined && !viaDefault) {
|
|
314
|
+
return ok({
|
|
315
|
+
queryResult: 'defined',
|
|
316
|
+
value: definedValue,
|
|
317
|
+
summary: `${args.query} is defined with value: ${JSON.stringify(definedValue)}.`,
|
|
318
|
+
rulesFound: 0,
|
|
319
|
+
rules: [],
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
// ── Step 4: eval with --explain=full ──────────────────────────────
|
|
323
|
+
const traceResult = await opa.eval({ ...evalBase, explain: 'full' }, signal);
|
|
324
|
+
const traceSpawnErr = mapSubprocessFailure(traceResult, 'opa');
|
|
325
|
+
if (traceSpawnErr)
|
|
326
|
+
return traceSpawnErr;
|
|
327
|
+
const traceJson = tryParseJson(traceResult.stdout);
|
|
328
|
+
const trace = traceJson?.explanation ?? [];
|
|
298
329
|
// ── Step 5: analyse each rule ─────────────────────────────────────
|
|
299
330
|
let defaultValue;
|
|
300
331
|
const rules = [];
|
|
@@ -376,9 +407,10 @@ export function registerRegoExplainUndefined(server, config) {
|
|
|
376
407
|
}
|
|
377
408
|
}
|
|
378
409
|
const nonDefaultRules = rules.filter((r) => !r.isDefault);
|
|
379
|
-
const summary = buildSummary(args.query, nonDefaultRules, defaultValue);
|
|
410
|
+
const summary = buildSummary(args.query, nonDefaultRules, defaultValue, viaDefault);
|
|
380
411
|
return ok({
|
|
381
|
-
queryResult: 'undefined',
|
|
412
|
+
queryResult: viaDefault ? 'default' : 'undefined',
|
|
413
|
+
...(viaDefault ? { value: definedValue } : {}),
|
|
382
414
|
summary,
|
|
383
415
|
rulesFound: nonDefaultRules.length,
|
|
384
416
|
defaultValue,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explain-undefined.js","sourceRoot":"","sources":["../../../src/tools/helpers/explain-undefined.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"explain-undefined.js","sourceRoot":"","sources":["../../../src/tools/helpers/explain-undefined.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/tools/helpers/verify.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAqB9C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/tools/helpers/verify.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAqB9C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAoE1E"}
|
|
@@ -31,7 +31,11 @@ export function registerRegoVerify(server, config) {
|
|
|
31
31
|
'Supports equality, comparison, startswith, endswith, contains, and simple regex.match patterns ' +
|
|
32
32
|
'(prefix: ^lit.*, suffix: .*lit$, exact: ^lit$, contains: .*lit.*, wildcard: .*). ' +
|
|
33
33
|
'Complex regex patterns (character classes, quantifiers, alternation) return INCONCLUSIVE. ' +
|
|
34
|
-
'Also reports INCONCLUSIVE for negation-as-failure (not), comprehensions,
|
|
34
|
+
'Also reports INCONCLUSIVE for negation-as-failure (not), comprehensions, partial set and ' +
|
|
35
|
+
'object rules (deny contains msg), functions, else chains, and any operand it cannot encode. ' +
|
|
36
|
+
'A body that reads an absent field is undefined rather than true, so always_true holds only ' +
|
|
37
|
+
'if the rule is also true for an empty input: a rule requiring input.x will be answered with ' +
|
|
38
|
+
'the counterexample {}.',
|
|
35
39
|
inputSchema: RegoVerifyInput,
|
|
36
40
|
annotations: {
|
|
37
41
|
readOnlyHint: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/tools/helpers/verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAqB,MAAM,iCAAiC,CAAC;AAG/E,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IACtF,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;SAClD,QAAQ,CACP,sBAAsB;QACpB,2FAA2F;QAC3F,oFAAoF;QACpF,mFAAmF,CACtF;CACJ,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAc;IAClE,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAE/B,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,oCAAoC;QAC3C,WAAW,EACT,iFAAiF;YACjF,0FAA0F;YAC1F,6DAA6D;YAC7D,iGAAiG;YACjG,mFAAmF;YACnF,4FAA4F;YAC5F,
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/tools/helpers/verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAqB,MAAM,iCAAiC,CAAC;AAG/E,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IACtF,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;SAClD,QAAQ,CACP,sBAAsB;QACpB,2FAA2F;QAC3F,oFAAoF;QACpF,mFAAmF,CACtF;CACJ,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAc;IAClE,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAE/B,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,oCAAoC;QAC3C,WAAW,EACT,iFAAiF;YACjF,0FAA0F;YAC1F,6DAA6D;YAC7D,iGAAiG;YACjG,mFAAmF;YACnF,4FAA4F;YAC5F,2FAA2F;YAC3F,8FAA8F;YAC9F,6FAA6F;YAC7F,8FAA8F;YAC9F,wBAAwB;QAC1B,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3C,OAAO,gBAAgB,CAAe,MAAM,EAAE,KAAK,IAAI,EAAE;YACvD,sBAAsB;YACtB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,GAAG,CAAC,eAAe,EAAE,iCAAiC,EAAE;oBAC7D,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;iBAChC,CAAC,CAAC;YACL,CAAC;YAED,gCAAgC;YAChC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;YACxD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACnE,IAAI,iBAAiB;gBAAE,OAAO,iBAAiB,CAAC;YAChD,IAAI,WAAW,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,GAAG,CAAC,cAAc,EAAE,uCAAuC,EAAE;oBAClE,IAAI,EAAE,qCAAqC;oBAC3C,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;iBAC/C,CAAC,CAAC;YACL,CAAC;YAED,MAAM,GAAG,GAAG,YAAY,CAAY,WAAW,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,OAAO,GAAG,CAAC,eAAe,EAAE,2CAA2C,CAAC,CAAC;YAC3E,CAAC;YAED,gCAAgC;YAChC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,QAAS,EAAE,MAAM,CAAC,CAAC;YAEvD,MAAM,QAAQ,GAAa,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,MAAM,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,0CAA0C;oBAC9E,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACtE,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,CAAe,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
import type { ToolEnvelope, ToolErrorCode } from '../../types.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* The data root. OPA answers `PATCH /v1/data` but redirects `/v1/data/`, so the
|
|
4
|
+
* root has no trailing slash while every deeper path is built by joining onto
|
|
5
|
+
* `${OPA_DATA_ROOT}/`.
|
|
6
6
|
*/
|
|
7
|
-
export declare
|
|
7
|
+
export declare const OPA_DATA_ROOT = "/v1/data";
|
|
8
|
+
/**
|
|
9
|
+
* Convert a user-supplied OPA data path to the `/v1/data/...` REST API path.
|
|
10
|
+
*
|
|
11
|
+
* Accepts the dotted or slash string form, or an array whose elements are
|
|
12
|
+
* literal keys. Every segment is percent-encoded, which OPA decodes, so a key
|
|
13
|
+
* may hold a dot, a slash, a question mark or any non-ASCII character. Rejects
|
|
14
|
+
* `.` and `..` segments so a crafted input cannot traverse to unrelated OPA
|
|
15
|
+
* endpoints such as `/v1/config`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseOpaDataPath(path: string | readonly string[]): {
|
|
8
18
|
ok: true;
|
|
9
19
|
apiPath: string;
|
|
20
|
+
segments: string[];
|
|
10
21
|
} | {
|
|
11
22
|
ok: false;
|
|
12
23
|
error: ToolEnvelope<never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../../src/tools/server-management/_shared.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../../src/tools/server-management/_shared.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAgClE;;;;GAIG;AACH,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAC/B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;CAAE,CAuC/F;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,OAAO,EACV,YAAY,GAAE,aAA+B,GAC5C,YAAY,CAAC,KAAK,CAAC,CAgCrB"}
|
|
@@ -7,24 +7,85 @@ import { err } from '../../lib/errors.js';
|
|
|
7
7
|
import { logger } from '../../lib/logger.js';
|
|
8
8
|
import { OpaAuthError, OpaCancelledError, OpaHttpError, OpaUnreachableError, } from '../../lib/opa-client.js';
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* Split a user-supplied OPA data path into its key segments.
|
|
11
|
+
*
|
|
12
|
+
* A path arrives either dotted (`users.alice`, the Rego spelling) or slashed
|
|
13
|
+
* (`users/alice`, the REST spelling). Data keys are free to contain the other
|
|
14
|
+
* separator: hostnames, image references and semver strings carry dots, so
|
|
15
|
+
* treating both characters as separators addressed a document that was not the
|
|
16
|
+
* one asked for. A slash anywhere therefore makes the slash the only separator,
|
|
17
|
+
* and a path with no slash is read as dotted.
|
|
18
|
+
*
|
|
19
|
+
* A key holding both characters, such as a Kubernetes label key, cannot be
|
|
20
|
+
* written either way. Callers pass an array of literal segments for that.
|
|
21
|
+
*/
|
|
22
|
+
function decodeSegment(segment) {
|
|
23
|
+
try {
|
|
24
|
+
return decodeURIComponent(segment);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// A stray `%` is a literal character in a key, not an escape.
|
|
28
|
+
return segment;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function splitDataPath(path) {
|
|
32
|
+
const trimmed = path.trim().replace(/^[/]+/, '').replace(/[/]+$/, '');
|
|
33
|
+
// Drop a leading `data.` or `data/` root, but not a key named `database`.
|
|
34
|
+
const withoutRoot = trimmed.replace(/^data(?=$|[./])[./]?/, '');
|
|
35
|
+
if (withoutRoot.length === 0)
|
|
36
|
+
return [];
|
|
37
|
+
return withoutRoot.includes('/') ? withoutRoot.split('/') : withoutRoot.split('.');
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The data root. OPA answers `PATCH /v1/data` but redirects `/v1/data/`, so the
|
|
41
|
+
* root has no trailing slash while every deeper path is built by joining onto
|
|
42
|
+
* `${OPA_DATA_ROOT}/`.
|
|
43
|
+
*/
|
|
44
|
+
export const OPA_DATA_ROOT = '/v1/data';
|
|
45
|
+
/**
|
|
46
|
+
* Convert a user-supplied OPA data path to the `/v1/data/...` REST API path.
|
|
47
|
+
*
|
|
48
|
+
* Accepts the dotted or slash string form, or an array whose elements are
|
|
49
|
+
* literal keys. Every segment is percent-encoded, which OPA decodes, so a key
|
|
50
|
+
* may hold a dot, a slash, a question mark or any non-ASCII character. Rejects
|
|
51
|
+
* `.` and `..` segments so a crafted input cannot traverse to unrelated OPA
|
|
52
|
+
* endpoints such as `/v1/config`.
|
|
13
53
|
*/
|
|
14
54
|
export function parseOpaDataPath(path) {
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
// percent-encoded variants (%2e%2e). If the resolved pathname no longer
|
|
19
|
-
// starts with /v1/data/, a traversal escaped the intended prefix.
|
|
20
|
-
const normalized = new URL(`http://h${apiPath}`).pathname;
|
|
21
|
-
if (!normalized.startsWith('/v1/data/')) {
|
|
55
|
+
const segments = typeof path === 'string' ? splitDataPath(path) : [...path];
|
|
56
|
+
const shown = typeof path === 'string' ? path : JSON.stringify(path);
|
|
57
|
+
if (segments.length === 0) {
|
|
22
58
|
return {
|
|
23
59
|
ok: false,
|
|
24
|
-
error: err('INVALID_INPUT', `
|
|
60
|
+
error: err('INVALID_INPUT', `Data path must name at least one segment: ${shown}`, {
|
|
61
|
+
hint: 'The root of the data hierarchy is not addressable here. Supply a path such as "users" or "users/alice".',
|
|
62
|
+
}),
|
|
25
63
|
};
|
|
26
64
|
}
|
|
27
|
-
|
|
65
|
+
for (const segment of segments) {
|
|
66
|
+
if (segment.length === 0) {
|
|
67
|
+
return {
|
|
68
|
+
ok: false,
|
|
69
|
+
error: err('INVALID_INPUT', `Data path has an empty segment: ${shown}`, {
|
|
70
|
+
hint: 'Remove the repeated separator, or pass `segments` if a key is genuinely empty.',
|
|
71
|
+
}),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// Encoding below already stops `%2e%2e` reaching the wire as a traversal,
|
|
75
|
+
// but a caller writing one means to traverse, so say no rather than look up
|
|
76
|
+
// a key of that literal name.
|
|
77
|
+
const decoded = decodeSegment(segment);
|
|
78
|
+
if (decoded === '.' || decoded === '..') {
|
|
79
|
+
return { ok: false, error: err('INVALID_INPUT', `Path traversal not allowed: ${shown}`) };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const apiPath = `${OPA_DATA_ROOT}/${segments.map(encodeURIComponent).join('/')}`;
|
|
83
|
+
// Backstop. Encoding already neutralises `%2e%2e` and friends, but a resolved
|
|
84
|
+
// path outside the data prefix must never reach the server.
|
|
85
|
+
if (!new URL(`http://h${apiPath}`).pathname.startsWith(`${OPA_DATA_ROOT}/`)) {
|
|
86
|
+
return { ok: false, error: err('INVALID_INPUT', `Path traversal not allowed: ${shown}`) };
|
|
87
|
+
}
|
|
88
|
+
return { ok: true, apiPath, segments };
|
|
28
89
|
}
|
|
29
90
|
/**
|
|
30
91
|
* Translate an exception thrown by OpaClient into a structured error
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../../src/tools/server-management/_shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAGjC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,
|
|
1
|
+
{"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../../src/tools/server-management/_shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/tools/server-management/data.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAO9C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/tools/server-management/data.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAO9C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiPzE"}
|