pi-codex-auto-review 0.1.4 → 0.2.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 (127) hide show
  1. package/NOTICE +4 -2
  2. package/README.ko.md +85 -0
  3. package/README.md +51 -52
  4. package/dist/approval-commands.d.ts +3 -3
  5. package/dist/approval-commands.js +112 -58
  6. package/dist/approval-commands.js.map +1 -1
  7. package/dist/approval-settings.d.ts +1 -1
  8. package/dist/approval-settings.js +17 -10
  9. package/dist/approval-settings.js.map +1 -1
  10. package/dist/approvals.d.ts +9 -9
  11. package/dist/approvals.js +195 -75
  12. package/dist/approvals.js.map +1 -1
  13. package/dist/audit.d.ts +1 -1
  14. package/dist/audit.js +37 -13
  15. package/dist/audit.js.map +1 -1
  16. package/dist/cli.js +60 -31
  17. package/dist/cli.js.map +1 -1
  18. package/dist/context-files.d.ts +2 -2
  19. package/dist/context-files.js +40 -19
  20. package/dist/context-files.js.map +1 -1
  21. package/dist/contracts.d.ts +39 -39
  22. package/dist/contracts.js +117 -51
  23. package/dist/contracts.js.map +1 -1
  24. package/dist/index.d.ts +9 -9
  25. package/dist/index.js +145 -48
  26. package/dist/index.js.map +1 -1
  27. package/dist/pi-host.js +3 -3
  28. package/dist/pi-host.js.map +1 -1
  29. package/dist/policy/domains.js +17 -7
  30. package/dist/policy/domains.js.map +1 -1
  31. package/dist/policy/index.d.ts +7 -7
  32. package/dist/policy/index.js +379 -141
  33. package/dist/policy/index.js.map +1 -1
  34. package/dist/policy/paths.js +31 -18
  35. package/dist/policy/paths.js.map +1 -1
  36. package/dist/policy/rule-engine.d.ts +2 -0
  37. package/dist/policy/rule-engine.js +283 -0
  38. package/dist/policy/rule-engine.js.map +1 -0
  39. package/dist/policy/rule-types.d.ts +30 -0
  40. package/dist/policy/rule-types.js +2 -0
  41. package/dist/policy/rule-types.js.map +1 -0
  42. package/dist/policy/rules-sync.d.ts +1 -0
  43. package/dist/policy/rules-sync.js +14 -0
  44. package/dist/policy/rules-sync.js.map +1 -0
  45. package/dist/policy/rules-worker.d.ts +1 -0
  46. package/dist/policy/rules-worker.js +14 -0
  47. package/dist/policy/rules-worker.js.map +1 -0
  48. package/dist/policy/rules.d.ts +4 -31
  49. package/dist/policy/rules.js +126 -38
  50. package/dist/policy/rules.js.map +1 -1
  51. package/dist/policy/shell.js +70 -41
  52. package/dist/policy/shell.js.map +1 -1
  53. package/dist/policy/starlark/builtins.d.ts +6 -0
  54. package/dist/policy/starlark/builtins.js +764 -0
  55. package/dist/policy/starlark/builtins.js.map +1 -0
  56. package/dist/policy/starlark/evaluator.d.ts +18 -0
  57. package/dist/policy/starlark/evaluator.js +518 -0
  58. package/dist/policy/starlark/evaluator.js.map +1 -0
  59. package/dist/policy/starlark/lexer.d.ts +14 -0
  60. package/dist/policy/starlark/lexer.js +189 -0
  61. package/dist/policy/starlark/lexer.js.map +1 -0
  62. package/dist/policy/starlark/parser.d.ts +140 -0
  63. package/dist/policy/starlark/parser.js +508 -0
  64. package/dist/policy/starlark/parser.js.map +1 -0
  65. package/dist/policy/starlark/validation.d.ts +4 -0
  66. package/dist/policy/starlark/validation.js +183 -0
  67. package/dist/policy/starlark/validation.js.map +1 -0
  68. package/dist/policy/starlark/values.d.ts +46 -0
  69. package/dist/policy/starlark/values.js +363 -0
  70. package/dist/policy/starlark/values.js.map +1 -0
  71. package/dist/reports.d.ts +1 -1
  72. package/dist/reports.js +66 -30
  73. package/dist/reports.js.map +1 -1
  74. package/dist/review/context.d.ts +3 -3
  75. package/dist/review/context.js +207 -71
  76. package/dist/review/context.js.map +1 -1
  77. package/dist/review/investigation.d.ts +2 -2
  78. package/dist/review/investigation.js +57 -16
  79. package/dist/review/investigation.js.map +1 -1
  80. package/dist/review/lifecycle.d.ts +1 -1
  81. package/dist/review/lifecycle.js +70 -27
  82. package/dist/review/lifecycle.js.map +1 -1
  83. package/dist/review/policy.js +10 -5
  84. package/dist/review/policy.js.map +1 -1
  85. package/dist/review/upstream-policy.js +1 -1
  86. package/dist/review/upstream-policy.js.map +1 -1
  87. package/dist/review/user-input.d.ts +3 -3
  88. package/dist/review/user-input.js +39 -16
  89. package/dist/review/user-input.js.map +1 -1
  90. package/dist/reviewer.d.ts +8 -8
  91. package/dist/reviewer.js +253 -75
  92. package/dist/reviewer.js.map +1 -1
  93. package/dist/signals.js +24 -9
  94. package/dist/signals.js.map +1 -1
  95. package/dist/startup.d.ts +4 -4
  96. package/dist/startup.js +139 -41
  97. package/dist/startup.js.map +1 -1
  98. package/dist/tools/controller.d.ts +16 -12
  99. package/dist/tools/controller.js +432 -121
  100. package/dist/tools/controller.js.map +1 -1
  101. package/dist/tools/environment.js +3 -1
  102. package/dist/tools/environment.js.map +1 -1
  103. package/dist/tools/executor.d.ts +1 -1
  104. package/dist/tools/executor.js +45 -28
  105. package/dist/tools/executor.js.map +1 -1
  106. package/dist/tools/external.d.ts +8 -8
  107. package/dist/tools/external.js +22 -11
  108. package/dist/tools/external.js.map +1 -1
  109. package/dist/tools/mcp.d.ts +6 -6
  110. package/dist/tools/mcp.js +208 -80
  111. package/dist/tools/mcp.js.map +1 -1
  112. package/dist/tools/mutation-queue.js.map +1 -1
  113. package/docs/publishing.ko.md +114 -0
  114. package/docs/publishing.md +49 -47
  115. package/docs/security/dependencies.ko.md +54 -0
  116. package/docs/security/dependencies.md +27 -26
  117. package/docs/testing/auto-review-protection.ko.md +158 -0
  118. package/docs/testing/auto-review-protection.md +104 -99
  119. package/docs/usage.ko.md +242 -0
  120. package/docs/usage.md +125 -121
  121. package/package.json +106 -95
  122. package/dist/native/darwin-arm64/artifact.json +0 -5
  123. package/dist/native/darwin-arm64/pi-guard-execpolicy +0 -0
  124. package/dist/native/linux-x64/artifact.json +0 -5
  125. package/dist/native/linux-x64/pi-guard-execpolicy +0 -0
  126. package/native/execpolicy/LICENSE +0 -201
  127. package/native/execpolicy/NOTICE +0 -6
@@ -0,0 +1,183 @@
1
+ function known(name, scope) {
2
+ return (scope.local.has(name) ||
3
+ (scope.parent ? known(name, scope.parent) : false));
4
+ }
5
+ function targetNames(target, names) {
6
+ if (target.kind === "name")
7
+ names.add(target.name);
8
+ else if (target.kind === "tuple" || target.kind === "list")
9
+ for (const item of target.items)
10
+ targetNames(item, names);
11
+ else if (target.kind !== "index")
12
+ throw new Error("Invalid assignment target");
13
+ }
14
+ function locals(body, names = new Set()) {
15
+ for (const statement of body) {
16
+ if (statement.kind === "def")
17
+ names.add(statement.name);
18
+ if (statement.kind === "assign")
19
+ for (const target of statement.targets)
20
+ targetNames(target, names);
21
+ if (statement.kind === "for") {
22
+ targetNames(statement.target, names);
23
+ locals(statement.body, names);
24
+ }
25
+ if (statement.kind === "if") {
26
+ for (const branch of statement.branches)
27
+ locals(branch.body, names);
28
+ locals(statement.otherwise, names);
29
+ }
30
+ }
31
+ return names;
32
+ }
33
+ /** Resolve every name and control-flow statement, including unreachable branches. */
34
+ export function validate(body, globals, budget) {
35
+ const root = {
36
+ local: locals(body),
37
+ parent: { local: new Set(globals) },
38
+ };
39
+ const parameters = (params, scope) => {
40
+ for (const parameter of params) {
41
+ if (parameter.value)
42
+ expression(parameter.value, scope);
43
+ if (parameter.annotation)
44
+ expression(parameter.annotation, scope);
45
+ }
46
+ };
47
+ const expression = (value, scope) => {
48
+ budget.tick();
49
+ switch (value.kind) {
50
+ case "name":
51
+ if (!known(value.name, scope))
52
+ throw new Error(`Unknown variable ${value.name}`);
53
+ break;
54
+ case "literal":
55
+ break;
56
+ case "format":
57
+ for (const item of value.parts)
58
+ if (typeof item !== "string")
59
+ expression(item, scope);
60
+ break;
61
+ case "list":
62
+ case "tuple":
63
+ for (const item of value.items)
64
+ expression(item, scope);
65
+ break;
66
+ case "dict":
67
+ for (const [key, item] of value.entries) {
68
+ expression(key, scope);
69
+ expression(item, scope);
70
+ }
71
+ break;
72
+ case "unary":
73
+ expression(value.value, scope);
74
+ break;
75
+ case "binary":
76
+ expression(value.left, scope);
77
+ expression(value.right, scope);
78
+ break;
79
+ case "compare":
80
+ expression(value.first, scope);
81
+ for (const item of value.rest)
82
+ expression(item.value, scope);
83
+ break;
84
+ case "conditional":
85
+ expression(value.condition, scope);
86
+ expression(value.yes, scope);
87
+ expression(value.no, scope);
88
+ break;
89
+ case "attribute":
90
+ expression(value.object, scope);
91
+ break;
92
+ case "index":
93
+ expression(value.object, scope);
94
+ expression(value.index, scope);
95
+ break;
96
+ case "slice":
97
+ expression(value.object, scope);
98
+ for (const part of [value.start, value.end, value.step])
99
+ if (part)
100
+ expression(part, scope);
101
+ break;
102
+ case "call":
103
+ expression(value.target, scope);
104
+ for (const argument of value.args)
105
+ expression(argument.value, scope);
106
+ break;
107
+ case "lambda": {
108
+ parameters(value.parameters, scope);
109
+ expression(value.value, {
110
+ parent: scope,
111
+ local: new Set(value.parameters.map((parameter) => parameter.name)),
112
+ });
113
+ break;
114
+ }
115
+ case "comprehension": {
116
+ const child = { parent: scope, local: new Set() };
117
+ for (let index = 0; index < value.clauses.length; index++) {
118
+ const clause = value.clauses[index];
119
+ if (clause.kind === "for") {
120
+ expression(clause.iterable, index === 0 ? scope : child);
121
+ targetNames(clause.target, child.local);
122
+ }
123
+ else
124
+ expression(clause.condition, child);
125
+ }
126
+ if (value.key)
127
+ expression(value.key, child);
128
+ expression(value.value, child);
129
+ break;
130
+ }
131
+ }
132
+ };
133
+ const statements = (items, scope, inFunction, loops) => {
134
+ for (const statement of items) {
135
+ budget.tick();
136
+ switch (statement.kind) {
137
+ case "expression":
138
+ expression(statement.value, scope);
139
+ break;
140
+ case "assign":
141
+ expression(statement.value, scope);
142
+ for (const target of statement.targets)
143
+ expression(target, scope);
144
+ break;
145
+ case "def": {
146
+ parameters(statement.parameters, scope);
147
+ if (statement.annotation)
148
+ expression(statement.annotation, scope);
149
+ const names = locals(statement.body, new Set(statement.parameters.map((parameter) => parameter.name)));
150
+ statements(statement.body, { parent: scope, local: names }, true, 0);
151
+ break;
152
+ }
153
+ case "if":
154
+ for (const branch of statement.branches) {
155
+ expression(branch.condition, scope);
156
+ statements(branch.body, scope, inFunction, loops);
157
+ }
158
+ statements(statement.otherwise, scope, inFunction, loops);
159
+ break;
160
+ case "for":
161
+ expression(statement.iterable, scope);
162
+ expression(statement.target, scope);
163
+ statements(statement.body, scope, inFunction, loops + 1);
164
+ break;
165
+ case "return":
166
+ if (!inFunction)
167
+ throw new Error("return outside a function");
168
+ if (statement.value)
169
+ expression(statement.value, scope);
170
+ break;
171
+ case "break":
172
+ case "continue":
173
+ if (!loops)
174
+ throw new Error(`${statement.kind} outside a loop`);
175
+ break;
176
+ case "pass":
177
+ break;
178
+ }
179
+ }
180
+ };
181
+ statements(body, root, false, 0);
182
+ }
183
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/policy/starlark/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { Budget } from "./lexer.js";
2
+ /** Rust/Starlark White_Space includes NEL and excludes the JavaScript BOM whitespace. */
3
+ export declare function trimWhitespace(value: string): string;
4
+ export type Value = null | boolean | bigint | number | string | Value[] | Tuple | Range | StringIterator | Dict | Callable;
5
+ export interface Callable {
6
+ kind: "function";
7
+ name: string;
8
+ call(args: Value[], keywords: Map<string, Value>): Value;
9
+ }
10
+ export declare class Tuple {
11
+ readonly items: Value[];
12
+ constructor(items: Value[]);
13
+ }
14
+ export declare class Range {
15
+ readonly start: number;
16
+ readonly stop: number;
17
+ readonly step: number;
18
+ constructor(start: number, stop: number, step: number);
19
+ get length(): number;
20
+ items(): Value[];
21
+ }
22
+ export declare class StringIterator {
23
+ readonly items: Value[];
24
+ constructor(items: Value[]);
25
+ }
26
+ export declare class Dict {
27
+ private readonly data;
28
+ get size(): number;
29
+ entries(): [Value, Value][];
30
+ has(key: Value): boolean;
31
+ get(key: Value): Value;
32
+ set(key: Value, value: Value): void;
33
+ delete(key: Value): void;
34
+ clear(): void;
35
+ }
36
+ export declare function typeName(value: Value): string;
37
+ export declare function truth(value: Value): boolean;
38
+ export declare function sequence(value: Value): Value[];
39
+ export declare function integer(value: Value): number;
40
+ export declare function text(value: Value): string;
41
+ export declare function equal(left: Value, right: Value, depth?: number): boolean;
42
+ export declare function compare(left: Value, right: Value): number;
43
+ export declare function repr(value: Value, depth?: number): string;
44
+ export declare function display(value: Value): string;
45
+ export declare function contains(container: Value, value: Value): boolean;
46
+ export declare function binary(op: string, left: Value, right: Value, budget: Budget): Value;
@@ -0,0 +1,363 @@
1
+ /** Rust/Starlark White_Space includes NEL and excludes the JavaScript BOM whitespace. */
2
+ export function trimWhitespace(value) {
3
+ return value.replace(/^\p{White_Space}+|\p{White_Space}+$/gu, "");
4
+ }
5
+ export class Tuple {
6
+ items;
7
+ constructor(items) {
8
+ this.items = items;
9
+ }
10
+ }
11
+ export class Range {
12
+ start;
13
+ stop;
14
+ step;
15
+ constructor(start, stop, step) {
16
+ this.start = start;
17
+ this.stop = stop;
18
+ this.step = step;
19
+ }
20
+ get length() {
21
+ return Math.max(0, Math.ceil((this.stop - this.start) / this.step));
22
+ }
23
+ items() {
24
+ return Array.from({ length: this.length }, (_, index) => BigInt(this.start + index * this.step));
25
+ }
26
+ }
27
+ export class StringIterator {
28
+ items;
29
+ constructor(items) {
30
+ this.items = items;
31
+ }
32
+ }
33
+ function hash(value) {
34
+ if (value === null)
35
+ return "none";
36
+ if (typeof value === "string")
37
+ return `s${value.length}:${value}`;
38
+ if (typeof value === "bigint" || typeof value === "number")
39
+ return `n${value}`;
40
+ if (typeof value === "boolean")
41
+ return `b${value}`;
42
+ if (value instanceof Tuple)
43
+ return `t${value.items
44
+ .map(hash)
45
+ .map((part) => `${part.length}:${part}`)
46
+ .join("")}`;
47
+ throw new Error(`Unhashable ${typeName(value)}`);
48
+ }
49
+ export class Dict {
50
+ data = new Map();
51
+ get size() {
52
+ return this.data.size;
53
+ }
54
+ entries() {
55
+ return [...this.data.values()];
56
+ }
57
+ has(key) {
58
+ return this.data.has(hash(key));
59
+ }
60
+ get(key) {
61
+ const entry = this.data.get(hash(key));
62
+ if (!entry)
63
+ throw new Error(`Missing dictionary key ${repr(key)}`);
64
+ return entry[1];
65
+ }
66
+ set(key, value) {
67
+ this.data.set(hash(key), [key, value]);
68
+ }
69
+ delete(key) {
70
+ if (!this.data.delete(hash(key)))
71
+ throw new Error("Missing dictionary key");
72
+ }
73
+ clear() {
74
+ this.data.clear();
75
+ }
76
+ }
77
+ export function typeName(value) {
78
+ if (value === null)
79
+ return "NoneType";
80
+ if (Array.isArray(value))
81
+ return "list";
82
+ if (value instanceof Tuple)
83
+ return "tuple";
84
+ if (value instanceof Range)
85
+ return "range";
86
+ if (value instanceof StringIterator)
87
+ return "iterator";
88
+ if (value instanceof Dict)
89
+ return "dict";
90
+ return {
91
+ boolean: "bool",
92
+ bigint: "int",
93
+ number: "float",
94
+ string: "string",
95
+ object: "function",
96
+ function: "function",
97
+ undefined: "NoneType",
98
+ symbol: "unknown",
99
+ }[typeof value];
100
+ }
101
+ export function truth(value) {
102
+ if (value instanceof Dict)
103
+ return value.size > 0;
104
+ if (value instanceof Tuple)
105
+ return value.items.length > 0;
106
+ if (value instanceof Range)
107
+ return value.length > 0;
108
+ if (Array.isArray(value) || typeof value === "string")
109
+ return value.length > 0;
110
+ return value !== null && value !== false && value !== 0n && value !== 0;
111
+ }
112
+ export function sequence(value) {
113
+ if (Array.isArray(value))
114
+ return value;
115
+ if (value instanceof Tuple)
116
+ return value.items;
117
+ if (value instanceof Range)
118
+ return value.items();
119
+ if (value instanceof StringIterator)
120
+ return value.items;
121
+ if (value instanceof Dict)
122
+ return value.entries().map(([key]) => key);
123
+ throw new Error(`${typeName(value)} is not iterable`);
124
+ }
125
+ export function integer(value) {
126
+ if (typeof value !== "bigint" ||
127
+ value > BigInt(Number.MAX_SAFE_INTEGER) ||
128
+ value < BigInt(Number.MIN_SAFE_INTEGER))
129
+ throw new Error("Expected an integer in the supported range");
130
+ return Number(value);
131
+ }
132
+ export function text(value) {
133
+ if (typeof value !== "string")
134
+ throw new Error(`Expected string, got ${typeName(value)}`);
135
+ return value;
136
+ }
137
+ export function equal(left, right, depth = 0) {
138
+ if (depth > 128)
139
+ throw new Error("Value comparison exceeded its depth budget");
140
+ if (left === right)
141
+ return true;
142
+ if ((typeof left === "bigint" && typeof right === "number") ||
143
+ (typeof left === "number" && typeof right === "bigint"))
144
+ return left <= right && left >= right;
145
+ if (left instanceof Range && right instanceof Range)
146
+ return (left.length === right.length &&
147
+ (left.length === 0 ||
148
+ (left.start === right.start &&
149
+ (left.length === 1 || left.step === right.step))));
150
+ if ((Array.isArray(left) && Array.isArray(right)) ||
151
+ (left instanceof Tuple && right instanceof Tuple)) {
152
+ const a = sequence(left), b = sequence(right);
153
+ return (a.length === b.length &&
154
+ a.every((value, index) => equal(value, b[index], depth + 1)));
155
+ }
156
+ if (left instanceof Dict && right instanceof Dict)
157
+ return (left.size === right.size &&
158
+ left
159
+ .entries()
160
+ .every(([key, value]) => right.has(key) &&
161
+ equal(value, right.get(key), depth + 1)));
162
+ return false;
163
+ }
164
+ export function compare(left, right) {
165
+ if ((typeof left === "bigint" || typeof left === "number") &&
166
+ (typeof right === "bigint" || typeof right === "number"))
167
+ return left < right ? -1 : left > right ? 1 : 0;
168
+ if (typeof left === "string" && typeof right === "string")
169
+ return Buffer.compare(Buffer.from(left), Buffer.from(right));
170
+ if (typeof left === "boolean" && typeof right === "boolean")
171
+ return Number(left) - Number(right);
172
+ if ((Array.isArray(left) && Array.isArray(right)) ||
173
+ (left instanceof Tuple && right instanceof Tuple)) {
174
+ const a = sequence(left), b = sequence(right);
175
+ for (let index = 0; index < Math.min(a.length, b.length); index++)
176
+ if (!equal(a[index], b[index]))
177
+ return compare(a[index], b[index]);
178
+ return a.length - b.length;
179
+ }
180
+ throw new Error(`Cannot order ${typeName(left)} and ${typeName(right)}`);
181
+ }
182
+ export function repr(value, depth = 0) {
183
+ if (depth > 128)
184
+ throw new Error("Value representation exceeded its depth budget");
185
+ if (value === null)
186
+ return "None";
187
+ if (typeof value === "boolean")
188
+ return value ? "True" : "False";
189
+ if (typeof value === "string")
190
+ return `"${[...value]
191
+ .map((char) => {
192
+ const point = char.codePointAt(0) ?? 0;
193
+ if (char === '"' || char === "\\")
194
+ return `\\${char}`;
195
+ if (char === "\n")
196
+ return "\\n";
197
+ if (char === "\r")
198
+ return "\\r";
199
+ if (char === "\t")
200
+ return "\\t";
201
+ if (point < 0x20 || (point >= 0x7f && point <= 0xff))
202
+ return `\\x${point.toString(16).padStart(2, "0")}`;
203
+ if (point > 0xffff)
204
+ return `\\U${point.toString(16).padStart(8, "0")}`;
205
+ return char;
206
+ })
207
+ .join("")}"`;
208
+ if (typeof value === "bigint")
209
+ return String(value);
210
+ if (typeof value === "number")
211
+ return Number.isNaN(value)
212
+ ? "nan"
213
+ : value === Infinity
214
+ ? "+inf"
215
+ : value === -Infinity
216
+ ? "-inf"
217
+ : Number.isInteger(value)
218
+ ? `${value}.0`
219
+ : String(value);
220
+ if (value instanceof Range)
221
+ return value.start === 0 && value.step === 1
222
+ ? `range(${value.stop})`
223
+ : `range(${value.start}, ${value.stop}${value.step === 1 ? "" : `, ${value.step}`})`;
224
+ if (value instanceof StringIterator)
225
+ return "iterator";
226
+ if (Array.isArray(value))
227
+ return `[${value.map((item) => repr(item, depth + 1)).join(", ")}]`;
228
+ if (value instanceof Tuple)
229
+ return `(${value.items.map((item) => repr(item, depth + 1)).join(", ")}${value.items.length === 1 ? "," : ""})`;
230
+ if (value instanceof Dict)
231
+ return `{${value
232
+ .entries()
233
+ .map(([key, item]) => `${repr(key, depth + 1)}: ${repr(item, depth + 1)}`)
234
+ .join(", ")}}`;
235
+ return `<function ${value.name}>`;
236
+ }
237
+ export function display(value) {
238
+ return typeof value === "string" ? value : repr(value);
239
+ }
240
+ export function contains(container, value) {
241
+ if (typeof container === "string")
242
+ return container.includes(text(value));
243
+ if (container instanceof Dict)
244
+ return container.has(value);
245
+ return sequence(container).some((item) => equal(item, value));
246
+ }
247
+ export function binary(op, left, right, budget) {
248
+ budget.tick();
249
+ if (op === "==")
250
+ return equal(left, right);
251
+ if (op === "!=")
252
+ return !equal(left, right);
253
+ if (op === "in" || op === "not in")
254
+ return contains(right, left) === (op === "in");
255
+ if (["<", "<=", ">", ">="].includes(op)) {
256
+ const order = compare(left, right);
257
+ return op === "<"
258
+ ? order < 0
259
+ : op === "<="
260
+ ? order <= 0
261
+ : op === ">"
262
+ ? order > 0
263
+ : order >= 0;
264
+ }
265
+ if (op === "+" && typeof left === "string" && typeof right === "string")
266
+ return budget.string(left + right);
267
+ if (op === "+" &&
268
+ ((Array.isArray(left) && Array.isArray(right)) ||
269
+ (left instanceof Tuple && right instanceof Tuple))) {
270
+ const a = sequence(left), b = sequence(right);
271
+ budget.size(a.length + b.length);
272
+ return left instanceof Tuple ? new Tuple([...a, ...b]) : [...a, ...b];
273
+ }
274
+ if (op === "*" && (typeof left === "bigint" || typeof right === "bigint")) {
275
+ const value = typeof left === "bigint" ? right : left, count = Math.max(0, integer(typeof left === "bigint" ? left : right));
276
+ if (typeof value === "string") {
277
+ if (count * value.length > 8 * 1024 * 1024)
278
+ throw new Error("Rule string exceeded its size budget");
279
+ return value.repeat(count);
280
+ }
281
+ if (Array.isArray(value) || value instanceof Tuple) {
282
+ const items = sequence(value);
283
+ budget.size(items.length * count);
284
+ const result = Array.from({ length: count }, () => items).flat();
285
+ return value instanceof Tuple ? new Tuple(result) : result;
286
+ }
287
+ }
288
+ if (left instanceof Dict && right instanceof Dict && op === "|") {
289
+ const result = new Dict();
290
+ for (const [key, value] of [...left.entries(), ...right.entries()])
291
+ result.set(key, value);
292
+ budget.size(result.size);
293
+ return result;
294
+ }
295
+ if (typeof left === "bigint" && typeof right === "bigint" && op !== "/") {
296
+ if ((op === "//" || op === "%") && right === 0n)
297
+ throw new Error("Division by zero");
298
+ if (["<<", ">>"].includes(op) && (right < 0n || right > 100000n))
299
+ throw new Error("Invalid shift count");
300
+ let result;
301
+ switch (op) {
302
+ case "+":
303
+ result = left + right;
304
+ break;
305
+ case "-":
306
+ result = left - right;
307
+ break;
308
+ case "*":
309
+ result = left * right;
310
+ break;
311
+ case "//":
312
+ result =
313
+ left / right -
314
+ (left % right !== 0n && left < 0n !== right < 0n ? 1n : 0n);
315
+ break;
316
+ case "%":
317
+ result = ((left % right) + right) % right;
318
+ break;
319
+ case "|":
320
+ result = left | right;
321
+ break;
322
+ case "&":
323
+ result = left & right;
324
+ break;
325
+ case "^":
326
+ result = left ^ right;
327
+ break;
328
+ case "<<":
329
+ result = left << right;
330
+ break;
331
+ case ">>":
332
+ result = left >> right;
333
+ break;
334
+ default:
335
+ throw new Error(`Unsupported operator ${op}`);
336
+ }
337
+ if (result.toString(16).length > 25000)
338
+ throw new Error("Rule integer exceeded its size budget");
339
+ return result;
340
+ }
341
+ if ((typeof left === "number" || typeof left === "bigint") &&
342
+ (typeof right === "number" || typeof right === "bigint")) {
343
+ const a = Number(left), b = Number(right);
344
+ if (["/", "//", "%"].includes(op) && b === 0)
345
+ throw new Error("Division by zero");
346
+ switch (op) {
347
+ case "+":
348
+ return a + b;
349
+ case "-":
350
+ return a - b;
351
+ case "*":
352
+ return a * b;
353
+ case "/":
354
+ return a / b;
355
+ case "//":
356
+ return Math.floor(a / b);
357
+ case "%":
358
+ return ((a % b) + b) % b;
359
+ }
360
+ }
361
+ throw new Error(`Invalid ${typeName(left)} ${op} ${typeName(right)}`);
362
+ }
363
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/policy/starlark/values.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,UAAU,cAAc,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,uCAAuC,EAAE,EAAE,CAAC,CAAC;AACtE,CAAC;AAmBD,MAAM,OAAO,KAAK;IACO;IAArB,YAAqB,KAAc;QAAd,UAAK,GAAL,KAAK,CAAS;IAAG,CAAC;CAC1C;AACD,MAAM,OAAO,KAAK;IAED;IACA;IACA;IAHb,YACa,KAAa,EACb,IAAY,EACZ,IAAY;QAFZ,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAQ;IACtB,CAAC;IACJ,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,KAAK;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACpD,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CACzC,CAAC;IACN,CAAC;CACJ;AACD,MAAM,OAAO,cAAc;IACF;IAArB,YAAqB,KAAc;QAAd,UAAK,GAAL,KAAK,CAAS;IAAG,CAAC;CAC1C;AACD,SAAS,IAAI,CAAC,KAAY;IACtB,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;IAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QACtD,OAAO,IAAI,KAAK,EAAE,CAAC;IACvB,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,KAAK,EAAE,CAAC;IACnD,IAAI,KAAK,YAAY,KAAK;QACtB,OAAO,IAAI,KAAK,CAAC,KAAK;aACjB,GAAG,CAAC,IAAI,CAAC;aACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;aACvC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACpB,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,OAAO,IAAI;IACI,IAAI,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC1D,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B,CAAC;IACD,OAAO;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,GAAG,CAAC,GAAU;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,GAAG,CAAC,GAAU;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,GAAG,CAAC,GAAU,EAAE,KAAY;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,CAAC,GAAU;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAClD,CAAC;IACD,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACJ;AACD,MAAM,UAAU,QAAQ,CAAC,KAAY;IACjC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,OAAO,CAAC;IAC3C,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,OAAO,CAAC;IAC3C,IAAI,KAAK,YAAY,cAAc;QAAE,OAAO,UAAU,CAAC;IACvD,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,MAAM,CAAC;IACzC,OAAO;QACH,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,UAAU;QACrB,MAAM,EAAE,SAAS;KACpB,CAAC,OAAO,KAAK,CAAC,CAAC;AACpB,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,KAAY;IAC9B,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IACjD,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ;QACjD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC;AAC5E,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,KAAY;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC;IAC/C,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IACjD,IAAI,KAAK,YAAY,cAAc;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC;IACxD,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC1D,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,KAAY;IAChC,IACI,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACvC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAEvC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,KAAY;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,IAAW,EAAE,KAAY,EAAE,KAAK,GAAG,CAAC;IACtD,IAAI,KAAK,GAAG,GAAG;QACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAChC,IACI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACvD,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QAEvD,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;IAC1C,IAAI,IAAI,YAAY,KAAK,IAAI,KAAK,YAAY,KAAK;QAC/C,OAAO,CACH,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAC5B,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBACd,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;oBACvB,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5D,CAAC;IACN,IACI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC,IAAI,YAAY,KAAK,IAAI,KAAK,YAAY,KAAK,CAAC,EACnD,CAAC;QACC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,EACpB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,CACH,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YACrB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAC/D,CAAC;IACN,CAAC;IACD,IAAI,IAAI,YAAY,IAAI,IAAI,KAAK,YAAY,IAAI;QAC7C,OAAO,CACH,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YACxB,IAAI;iBACC,OAAO,EAAE;iBACT,KAAK,CACF,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACb,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;gBACd,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAC9C,CACR,CAAC;IACN,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,IAAW,EAAE,KAAY;IAC7C,IACI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;QACtD,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QAExD,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QACrD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,IAAI,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS;QACvD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,IACI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC,IAAI,YAAY,KAAK,IAAI,KAAK,YAAY,KAAK,CAAC,EACnD,CAAC;QACC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,EACpB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE;YAC7D,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAAE,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7E,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,KAAY,EAAE,KAAK,GAAG,CAAC;IACxC,IAAI,KAAK,GAAG,GAAG;QACX,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACtE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC;aAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,KAAK,IAAI,EAAE,CAAC;YACtD,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAChC,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAChC,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAChC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC;gBAChD,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YACvD,IAAI,KAAK,GAAG,MAAM;gBACd,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;IACrB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACtB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,KAAK,KAAK,QAAQ;gBAClB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ;oBACnB,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;wBACvB,CAAC,CAAC,GAAG,KAAK,IAAI;wBACd,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,KAAK,YAAY,KAAK;QACtB,OAAO,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;YACxC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,GAAG;YACxB,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;IAC7F,IAAI,KAAK,YAAY,cAAc;QAAE,OAAO,UAAU,CAAC;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACxE,IAAI,KAAK,YAAY,KAAK;QACtB,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACpH,IAAI,KAAK,YAAY,IAAI;QACrB,OAAO,IAAI,KAAK;aACX,OAAO,EAAE;aACT,GAAG,CACA,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CACZ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAC1D;aACA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACvB,OAAO,aAAa,KAAK,CAAC,IAAI,GAAG,CAAC;AACtC,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,KAAY;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,SAAgB,EAAE,KAAY;IACnD,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,IAAI,SAAS,YAAY,IAAI;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC;AACD,MAAM,UAAU,MAAM,CAClB,EAAU,EACV,IAAW,EACX,KAAY,EACZ,MAAc;IAEd,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,QAAQ;QAC9B,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,OAAO,EAAE,KAAK,GAAG;YACb,CAAC,CAAC,KAAK,GAAG,CAAC;YACX,CAAC,CAAC,EAAE,KAAK,IAAI;gBACX,CAAC,CAAC,KAAK,IAAI,CAAC;gBACZ,CAAC,CAAC,EAAE,KAAK,GAAG;oBACV,CAAC,CAAC,KAAK,GAAG,CAAC;oBACX,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,EAAE,KAAK,GAAG,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QACnE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;IACvC,IACI,EAAE,KAAK,GAAG;QACV,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC,IAAI,YAAY,KAAK,IAAI,KAAK,YAAY,KAAK,CAAC,CAAC,EACxD,CAAC;QACC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,EACpB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,IAAI,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EACjD,KAAK,GAAG,IAAI,CAAC,GAAG,CACZ,CAAC,EACD,OAAO,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CACnD,CAAC;QACN,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;gBACtC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACjE,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,CAAC;IACL,CAAC;IACD,IAAI,IAAI,YAAY,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAC9D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QACtE,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,OAAO,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,IAAI,MAAc,CAAC;QACnB,QAAQ,EAAE,EAAE,CAAC;YACT,KAAK,GAAG;gBACJ,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;gBACtB,MAAM;YACV,KAAK,GAAG;gBACJ,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;gBACtB,MAAM;YACV,KAAK,GAAG;gBACJ,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;gBACtB,MAAM;YACV,KAAK,IAAI;gBACL,MAAM;oBACF,IAAI,GAAG,KAAK;wBACZ,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChE,MAAM;YACV,KAAK,GAAG;gBACJ,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;gBAC1C,MAAM;YACV,KAAK,GAAG;gBACJ,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;gBACtB,MAAM;YACV,KAAK,GAAG;gBACJ,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;gBACtB,MAAM;YACV,KAAK,GAAG;gBACJ,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;gBACtB,MAAM;YACV,KAAK,IAAI;gBACL,MAAM,GAAG,IAAI,IAAI,KAAK,CAAC;gBACvB,MAAM;YACV,KAAK,IAAI;gBACL,MAAM,GAAG,IAAI,IAAI,KAAK,CAAC;gBACvB,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK;YAClC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IACI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;QACtD,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,EAC1D,CAAC;QACC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,EAClB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxC,QAAQ,EAAE,EAAE,CAAC;YACT,KAAK,GAAG;gBACJ,OAAO,CAAC,GAAG,CAAC,CAAC;YACjB,KAAK,GAAG;gBACJ,OAAO,CAAC,GAAG,CAAC,CAAC;YACjB,KAAK,GAAG;gBACJ,OAAO,CAAC,GAAG,CAAC,CAAC;YACjB,KAAK,GAAG;gBACJ,OAAO,CAAC,GAAG,CAAC,CAAC;YACjB,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,KAAK,GAAG;gBACJ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC"}
package/dist/reports.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type TestEvidence } from './contracts.js';
1
+ import { type TestEvidence } from "./contracts.js";
2
2
  export declare function validateEvidence(evidence: TestEvidence, requiredBehavior: readonly string[], expected?: {
3
3
  contractDigest: string;
4
4
  sourceDigest: string;