veto-sdk 1.17.0 → 2.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.
- package/README.md +69 -203
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/types.d.ts +17 -1
- package/dist/browser/types.d.ts.map +1 -1
- package/dist/browser/veto.d.ts +10 -0
- package/dist/browser/veto.d.ts.map +1 -1
- package/dist/browser/veto.js +69 -5
- package/dist/browser/veto.js.map +1 -1
- package/dist/cli/bin.js +0 -0
- package/dist/cli/compile.d.ts +22 -1
- package/dist/cli/compile.d.ts.map +1 -1
- package/dist/cli/compile.js +100 -21
- package/dist/cli/compile.js.map +1 -1
- package/dist/cli/diff.d.ts +2 -25
- package/dist/cli/diff.d.ts.map +1 -1
- package/dist/cli/diff.js +5 -327
- package/dist/cli/diff.js.map +1 -1
- package/dist/cli/headless.js +1 -1
- package/dist/cli/headless.js.map +1 -1
- package/dist/cli/index.d.ts +3 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/repl-generate.d.ts.map +1 -1
- package/dist/cli/repl-generate.js +346 -17
- package/dist/cli/repl-generate.js.map +1 -1
- package/dist/cli/replay-engine.d.ts +77 -0
- package/dist/cli/replay-engine.d.ts.map +1 -0
- package/dist/cli/replay-engine.js +379 -0
- package/dist/cli/replay-engine.js.map +1 -0
- package/dist/cli/replay.d.ts +57 -0
- package/dist/cli/replay.d.ts.map +1 -0
- package/dist/cli/replay.js +202 -0
- package/dist/cli/replay.js.map +1 -0
- package/dist/cli/runner.d.ts.map +1 -1
- package/dist/cli/runner.js +20 -0
- package/dist/cli/runner.js.map +1 -1
- package/dist/cli/templates.d.ts +1 -1
- package/dist/cli/templates.d.ts.map +1 -1
- package/dist/cli/templates.js +1 -1
- package/dist/cloud/client.d.ts.map +1 -1
- package/dist/cloud/client.js +6 -1
- package/dist/cloud/client.js.map +1 -1
- package/dist/cloud/types.d.ts +33 -2
- package/dist/cloud/types.d.ts.map +1 -1
- package/dist/core/events.d.ts +11 -1
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/events.js +4 -0
- package/dist/core/events.js.map +1 -1
- package/dist/core/interceptor.d.ts +20 -1
- package/dist/core/interceptor.d.ts.map +1 -1
- package/dist/core/interceptor.js +47 -3
- package/dist/core/interceptor.js.map +1 -1
- package/dist/core/output-validator.d.ts +11 -0
- package/dist/core/output-validator.d.ts.map +1 -1
- package/dist/core/output-validator.js +88 -15
- package/dist/core/output-validator.js.map +1 -1
- package/dist/core/protect.d.ts +3 -1
- package/dist/core/protect.d.ts.map +1 -1
- package/dist/core/protect.js +14 -4
- package/dist/core/protect.js.map +1 -1
- package/dist/core/veto.d.ts +54 -1
- package/dist/core/veto.d.ts.map +1 -1
- package/dist/core/veto.js +471 -91
- package/dist/core/veto.js.map +1 -1
- package/dist/deterministic/types.d.ts +103 -0
- package/dist/deterministic/types.d.ts.map +1 -1
- package/dist/economic/budget-engine.d.ts +29 -0
- package/dist/economic/budget-engine.d.ts.map +1 -0
- package/dist/economic/budget-engine.js +146 -0
- package/dist/economic/budget-engine.js.map +1 -0
- package/dist/economic/connectors/ap2.d.ts +51 -0
- package/dist/economic/connectors/ap2.d.ts.map +1 -0
- package/dist/economic/connectors/ap2.js +133 -0
- package/dist/economic/connectors/ap2.js.map +1 -0
- package/dist/economic/connectors/index.d.ts +8 -0
- package/dist/economic/connectors/index.d.ts.map +1 -0
- package/dist/economic/connectors/index.js +8 -0
- package/dist/economic/connectors/index.js.map +1 -0
- package/dist/economic/connectors/mpp.d.ts +41 -0
- package/dist/economic/connectors/mpp.d.ts.map +1 -0
- package/dist/economic/connectors/mpp.js +97 -0
- package/dist/economic/connectors/mpp.js.map +1 -0
- package/dist/economic/connectors/x402.d.ts +20 -0
- package/dist/economic/connectors/x402.d.ts.map +1 -0
- package/dist/economic/connectors/x402.js +142 -0
- package/dist/economic/connectors/x402.js.map +1 -0
- package/dist/economic/evaluator.d.ts +77 -0
- package/dist/economic/evaluator.d.ts.map +1 -0
- package/dist/economic/evaluator.js +231 -0
- package/dist/economic/evaluator.js.map +1 -0
- package/dist/economic/index.d.ts +13 -0
- package/dist/economic/index.d.ts.map +1 -0
- package/dist/economic/index.js +15 -0
- package/dist/economic/index.js.map +1 -0
- package/dist/economic/types.d.ts +188 -0
- package/dist/economic/types.d.ts.map +1 -0
- package/dist/economic/types.js +10 -0
- package/dist/economic/types.js.map +1 -0
- package/dist/extractors/content.d.ts +42 -0
- package/dist/extractors/content.d.ts.map +1 -0
- package/dist/extractors/content.js +154 -0
- package/dist/extractors/content.js.map +1 -0
- package/dist/extractors/index.d.ts +7 -0
- package/dist/extractors/index.d.ts.map +1 -0
- package/dist/extractors/index.js +7 -0
- package/dist/extractors/index.js.map +1 -0
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/policy/generator.d.ts +110 -0
- package/dist/policy/generator.d.ts.map +1 -0
- package/dist/policy/generator.js +463 -0
- package/dist/policy/generator.js.map +1 -0
- package/dist/policy/index.d.ts +7 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +7 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/providers/adapters.d.ts +27 -0
- package/dist/providers/adapters.d.ts.map +1 -1
- package/dist/providers/adapters.js +58 -0
- package/dist/providers/adapters.js.map +1 -1
- package/dist/rules/condition-evaluator.d.ts +2 -1
- package/dist/rules/condition-evaluator.d.ts.map +1 -1
- package/dist/rules/condition-evaluator.js +97 -7
- package/dist/rules/condition-evaluator.js.map +1 -1
- package/dist/rules/index.d.ts +1 -0
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +1 -0
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/local-evaluator.d.ts +69 -0
- package/dist/rules/local-evaluator.d.ts.map +1 -0
- package/dist/rules/local-evaluator.js +217 -0
- package/dist/rules/local-evaluator.js.map +1 -0
- package/dist/rules/policy-ir-schema.d.ts +132 -1
- package/dist/rules/policy-ir-schema.d.ts.map +1 -1
- package/dist/rules/policy-ir-schema.js +114 -0
- package/dist/rules/policy-ir-schema.js.map +1 -1
- package/dist/rules/policy-packs.d.ts.map +1 -1
- package/dist/rules/policy-packs.js +1 -0
- package/dist/rules/policy-packs.js.map +1 -1
- package/dist/rules/types.d.ts +3 -1
- package/dist/rules/types.d.ts.map +1 -1
- package/dist/rules/types.js.map +1 -1
- package/dist/types/config.d.ts +2 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/dist/utils/logger.d.ts +38 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +231 -26
- package/dist/utils/logger.js.map +1 -1
- package/package.json +9 -1
- package/packs/economic-agent.yaml +62 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local rule evaluator — evaluate Rule[] against a tool call without cloud.
|
|
3
|
+
*
|
|
4
|
+
* Supports 16 operators, dot-notation field resolution, AND/OR condition
|
|
5
|
+
* groups, and tool filtering. Designed for sub-millisecond local evaluation.
|
|
6
|
+
*
|
|
7
|
+
* Key behavior: undefined fields NEVER match. This prevents false positives
|
|
8
|
+
* on negative operators like not_equals, not_contains, not_in.
|
|
9
|
+
*
|
|
10
|
+
* **Divergences from canonical condition-evaluator.ts:**
|
|
11
|
+
* - All string comparisons are case-insensitive (canonical is case-sensitive).
|
|
12
|
+
* - `within_hours`/`outside_hours` use wall clock time with "HH:MM-HH:MM"
|
|
13
|
+
* strings (canonical uses field values as timestamps with structured
|
|
14
|
+
* {@link TimeWindowConditionValue} objects including timezone/day support).
|
|
15
|
+
* - `percent_of` falls back to simplified `fieldValue >= expected` when
|
|
16
|
+
* no `reference` field is provided (canonical requires `reference`).
|
|
17
|
+
*
|
|
18
|
+
* @module rules/local-evaluator
|
|
19
|
+
*/
|
|
20
|
+
import { createSafeRegex } from './condition-evaluator.js';
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a dot-notation field path in a nested object.
|
|
23
|
+
*
|
|
24
|
+
* Returns `undefined` for any broken path segment.
|
|
25
|
+
*/
|
|
26
|
+
export function resolveFieldPath(path, obj) {
|
|
27
|
+
const parts = path.split('.');
|
|
28
|
+
let current = obj;
|
|
29
|
+
for (const part of parts) {
|
|
30
|
+
if (current === null || current === undefined || typeof current !== 'object')
|
|
31
|
+
return undefined;
|
|
32
|
+
current = current[part];
|
|
33
|
+
}
|
|
34
|
+
return current;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Evaluate a single condition against a context object.
|
|
38
|
+
*
|
|
39
|
+
* All string comparisons are case-insensitive. This differs from the
|
|
40
|
+
* canonical `condition-evaluator.ts` which is case-sensitive.
|
|
41
|
+
*
|
|
42
|
+
* **`within_hours` / `outside_hours` divergence:**
|
|
43
|
+
* The local evaluator uses wall clock time (not the field value).
|
|
44
|
+
* Expected format is a simple `"HH:MM-HH:MM"` string. There is no
|
|
45
|
+
* timezone or day-of-week support. This intentionally diverges from the
|
|
46
|
+
* canonical evaluator which interprets the field value as a timestamp
|
|
47
|
+
* and uses structured `TimeWindowConditionValue` objects with timezone
|
|
48
|
+
* and day support. The simplified approach is designed for local/browser
|
|
49
|
+
* use where wall clock checks are sufficient.
|
|
50
|
+
*
|
|
51
|
+
* **`percent_of` divergence:**
|
|
52
|
+
* When a `reference` field is present on the condition, the local
|
|
53
|
+
* evaluator resolves it and computes `fieldValue / referenceValue * 100`,
|
|
54
|
+
* returning true when the percentage exceeds `expected`. When no
|
|
55
|
+
* `reference` field exists, it falls back to a simplified comparison:
|
|
56
|
+
* `fieldValue >= expected`. The canonical evaluator always requires a
|
|
57
|
+
* `reference` field and returns false without one.
|
|
58
|
+
*
|
|
59
|
+
* Unknown operators return false.
|
|
60
|
+
*/
|
|
61
|
+
export function evaluateCondition(condition, context) {
|
|
62
|
+
if (!condition.field || !condition.operator)
|
|
63
|
+
return true;
|
|
64
|
+
const fieldValue = resolveFieldPath(condition.field, context);
|
|
65
|
+
const expected = condition.value;
|
|
66
|
+
if (fieldValue === undefined)
|
|
67
|
+
return false;
|
|
68
|
+
switch (condition.operator) {
|
|
69
|
+
case 'equals':
|
|
70
|
+
if (typeof fieldValue === 'string' && typeof expected === 'string') {
|
|
71
|
+
return fieldValue.toLowerCase() === expected.toLowerCase();
|
|
72
|
+
}
|
|
73
|
+
return fieldValue === expected;
|
|
74
|
+
case 'not_equals':
|
|
75
|
+
if (typeof fieldValue === 'string' && typeof expected === 'string') {
|
|
76
|
+
return fieldValue.toLowerCase() !== expected.toLowerCase();
|
|
77
|
+
}
|
|
78
|
+
return fieldValue !== expected;
|
|
79
|
+
case 'contains':
|
|
80
|
+
if (typeof fieldValue === 'string' && typeof expected === 'string') {
|
|
81
|
+
return fieldValue.toLowerCase().includes(expected.toLowerCase());
|
|
82
|
+
}
|
|
83
|
+
if (Array.isArray(fieldValue))
|
|
84
|
+
return fieldValue.includes(expected);
|
|
85
|
+
return false;
|
|
86
|
+
case 'not_contains':
|
|
87
|
+
if (typeof fieldValue === 'string' && typeof expected === 'string') {
|
|
88
|
+
return !fieldValue.toLowerCase().includes(expected.toLowerCase());
|
|
89
|
+
}
|
|
90
|
+
if (Array.isArray(fieldValue))
|
|
91
|
+
return !fieldValue.includes(expected);
|
|
92
|
+
return false;
|
|
93
|
+
case 'starts_with':
|
|
94
|
+
return (typeof fieldValue === 'string' &&
|
|
95
|
+
typeof expected === 'string' &&
|
|
96
|
+
fieldValue.toLowerCase().startsWith(expected.toLowerCase()));
|
|
97
|
+
case 'ends_with':
|
|
98
|
+
return (typeof fieldValue === 'string' &&
|
|
99
|
+
typeof expected === 'string' &&
|
|
100
|
+
fieldValue.toLowerCase().endsWith(expected.toLowerCase()));
|
|
101
|
+
case 'matches':
|
|
102
|
+
if (typeof fieldValue === 'string' && typeof expected === 'string') {
|
|
103
|
+
const regex = createSafeRegex(expected, 'i');
|
|
104
|
+
return regex !== null && regex.test(fieldValue);
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
case 'greater_than':
|
|
108
|
+
return typeof fieldValue === 'number' && typeof expected === 'number' && fieldValue > expected;
|
|
109
|
+
case 'less_than':
|
|
110
|
+
return typeof fieldValue === 'number' && typeof expected === 'number' && fieldValue < expected;
|
|
111
|
+
case 'in':
|
|
112
|
+
return Array.isArray(expected) && expected.includes(fieldValue);
|
|
113
|
+
case 'not_in':
|
|
114
|
+
return Array.isArray(expected) && !expected.includes(fieldValue);
|
|
115
|
+
case 'length_greater_than':
|
|
116
|
+
if (typeof fieldValue === 'string' || Array.isArray(fieldValue)) {
|
|
117
|
+
return typeof expected === 'number' && fieldValue.length > expected;
|
|
118
|
+
}
|
|
119
|
+
return false;
|
|
120
|
+
case 'percent_of': {
|
|
121
|
+
if (typeof fieldValue !== 'number' || typeof expected !== 'number')
|
|
122
|
+
return false;
|
|
123
|
+
if (typeof condition.reference === 'string') {
|
|
124
|
+
const referenceValue = resolveFieldPath(condition.reference, context);
|
|
125
|
+
if (typeof referenceValue !== 'number' || referenceValue === 0)
|
|
126
|
+
return false;
|
|
127
|
+
return (fieldValue / referenceValue) * 100 > expected;
|
|
128
|
+
}
|
|
129
|
+
return fieldValue >= expected;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* `within_hours` / `outside_hours` — wall clock check.
|
|
133
|
+
*
|
|
134
|
+
* Uses the current wall clock time, NOT the field value. Expected
|
|
135
|
+
* value is a simple `"HH:MM-HH:MM"` string (24h format). No
|
|
136
|
+
* timezone or day-of-week support. Wrap-around ranges (e.g.
|
|
137
|
+
* `"22:00-06:00"`) are supported. This intentionally diverges
|
|
138
|
+
* from the canonical `condition-evaluator.ts`.
|
|
139
|
+
*/
|
|
140
|
+
case 'within_hours':
|
|
141
|
+
case 'outside_hours': {
|
|
142
|
+
if (typeof expected !== 'string')
|
|
143
|
+
return false;
|
|
144
|
+
const parts = expected.split('-');
|
|
145
|
+
if (parts.length !== 2)
|
|
146
|
+
return false;
|
|
147
|
+
const startParts = parts[0].split(':').map(Number);
|
|
148
|
+
const endParts = parts[1].split(':').map(Number);
|
|
149
|
+
const [sH, sM] = startParts;
|
|
150
|
+
const [eH, eM] = endParts;
|
|
151
|
+
if (isNaN(sH) || isNaN(sM) || isNaN(eH) || isNaN(eM))
|
|
152
|
+
return false;
|
|
153
|
+
if (sH < 0 || sH > 23 || eH < 0 || eH > 23)
|
|
154
|
+
return false;
|
|
155
|
+
if (sM < 0 || sM > 59 || eM < 0 || eM > 59)
|
|
156
|
+
return false;
|
|
157
|
+
const now = new Date();
|
|
158
|
+
const nowMins = now.getHours() * 60 + now.getMinutes();
|
|
159
|
+
const startMins = sH * 60 + sM;
|
|
160
|
+
const endMins = eH * 60 + eM;
|
|
161
|
+
let within;
|
|
162
|
+
if (startMins <= endMins) {
|
|
163
|
+
within = nowMins >= startMins && nowMins < endMins;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
within = nowMins >= startMins || nowMins < endMins;
|
|
167
|
+
}
|
|
168
|
+
return condition.operator === 'within_hours' ? within : !within;
|
|
169
|
+
}
|
|
170
|
+
default:
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Evaluate an array of rules against a tool call.
|
|
176
|
+
*
|
|
177
|
+
* Rules are evaluated in order. First matching rule wins.
|
|
178
|
+
* Returns `null` if no rule matched (caller should fall through to cloud).
|
|
179
|
+
*
|
|
180
|
+
* @param rules - Rules to evaluate (only enabled rules are considered)
|
|
181
|
+
* @param toolName - The tool being called (e.g. "browser_click")
|
|
182
|
+
* @param args - Context object for field resolution (typically `{ arguments: { ... } }`)
|
|
183
|
+
*/
|
|
184
|
+
export function evaluateRulesLocally(rules, toolName, args) {
|
|
185
|
+
for (const rule of rules) {
|
|
186
|
+
if (!rule.enabled)
|
|
187
|
+
continue;
|
|
188
|
+
if (rule.tools && rule.tools.length > 0 && !rule.tools.includes(toolName))
|
|
189
|
+
continue;
|
|
190
|
+
// Conditions-first fallthrough: matches canonical evaluateConditionCollections.
|
|
191
|
+
// If `conditions` is present and non-empty, evaluate only those.
|
|
192
|
+
// Otherwise fall through to `condition_groups`.
|
|
193
|
+
if (rule.conditions && rule.conditions.length > 0) {
|
|
194
|
+
const allMatch = rule.conditions.every(c => evaluateCondition(c, args));
|
|
195
|
+
if (!allMatch)
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
else if (rule.condition_groups && rule.condition_groups.length > 0) {
|
|
199
|
+
const anyGroupMatch = rule.condition_groups.some(group => group.every(c => evaluateCondition(c, args)));
|
|
200
|
+
if (!anyGroupMatch)
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
const action = rule.action;
|
|
204
|
+
if (action === 'block') {
|
|
205
|
+
return { decision: 'deny', reason: rule.description || rule.name, ruleId: rule.id };
|
|
206
|
+
}
|
|
207
|
+
if (action === 'require_approval') {
|
|
208
|
+
return { decision: 'require_approval', reason: rule.description || rule.name, ruleId: rule.id };
|
|
209
|
+
}
|
|
210
|
+
if (action === 'allow') {
|
|
211
|
+
return { decision: 'allow', ruleId: rule.id };
|
|
212
|
+
}
|
|
213
|
+
// warn/log: no enforcement, continue to next rule
|
|
214
|
+
}
|
|
215
|
+
return { decision: null };
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=local-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-evaluator.js","sourceRoot":"","sources":["../../src/rules/local-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ export declare const POLICY_IR_V1_SCHEMA: {
|
|
|
11
11
|
readonly required: readonly ["output_rules"];
|
|
12
12
|
}, {
|
|
13
13
|
readonly required: readonly ["extends"];
|
|
14
|
+
}, {
|
|
15
|
+
readonly required: readonly ["economic"];
|
|
14
16
|
}];
|
|
15
17
|
readonly properties: {
|
|
16
18
|
readonly version: {
|
|
@@ -48,6 +50,9 @@ export declare const POLICY_IR_V1_SCHEMA: {
|
|
|
48
50
|
readonly settings: {
|
|
49
51
|
readonly $ref: "#/$defs/Settings";
|
|
50
52
|
};
|
|
53
|
+
readonly economic: {
|
|
54
|
+
readonly $ref: "#/$defs/EconomicPolicy";
|
|
55
|
+
};
|
|
51
56
|
};
|
|
52
57
|
readonly additionalProperties: false;
|
|
53
58
|
readonly $defs: {
|
|
@@ -225,6 +230,11 @@ export declare const POLICY_IR_V1_SCHEMA: {
|
|
|
225
230
|
readonly value: {
|
|
226
231
|
readonly description: "The value to compare the field against.";
|
|
227
232
|
};
|
|
233
|
+
readonly reference: {
|
|
234
|
+
readonly type: "string";
|
|
235
|
+
readonly minLength: 1;
|
|
236
|
+
readonly description: "Optional dot-notation reference path used by dynamic operators.";
|
|
237
|
+
};
|
|
228
238
|
};
|
|
229
239
|
readonly allOf: readonly [{
|
|
230
240
|
readonly if: {
|
|
@@ -241,6 +251,23 @@ export declare const POLICY_IR_V1_SCHEMA: {
|
|
|
241
251
|
};
|
|
242
252
|
};
|
|
243
253
|
};
|
|
254
|
+
}, {
|
|
255
|
+
readonly if: {
|
|
256
|
+
readonly properties: {
|
|
257
|
+
readonly operator: {
|
|
258
|
+
readonly const: "percent_of";
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
};
|
|
262
|
+
readonly then: {
|
|
263
|
+
readonly required: readonly ["reference"];
|
|
264
|
+
readonly properties: {
|
|
265
|
+
readonly value: {
|
|
266
|
+
readonly type: "number";
|
|
267
|
+
readonly exclusiveMinimum: 0;
|
|
268
|
+
};
|
|
269
|
+
};
|
|
270
|
+
};
|
|
244
271
|
}];
|
|
245
272
|
readonly additionalProperties: false;
|
|
246
273
|
};
|
|
@@ -335,7 +362,7 @@ export declare const POLICY_IR_V1_SCHEMA: {
|
|
|
335
362
|
};
|
|
336
363
|
readonly Operator: {
|
|
337
364
|
readonly type: "string";
|
|
338
|
-
readonly enum: readonly ["equals", "not_equals", "contains", "not_contains", "starts_with", "ends_with", "matches", "greater_than", "less_than", "length_greater_than", "in", "not_in", "outside_hours", "within_hours"];
|
|
365
|
+
readonly enum: readonly ["equals", "not_equals", "contains", "not_contains", "starts_with", "ends_with", "matches", "greater_than", "less_than", "percent_of", "length_greater_than", "in", "not_in", "outside_hours", "within_hours"];
|
|
339
366
|
readonly description: "Comparison operator.";
|
|
340
367
|
};
|
|
341
368
|
readonly Severity: {
|
|
@@ -375,6 +402,110 @@ export declare const POLICY_IR_V1_SCHEMA: {
|
|
|
375
402
|
};
|
|
376
403
|
readonly additionalProperties: false;
|
|
377
404
|
};
|
|
405
|
+
readonly EconomicPolicy: {
|
|
406
|
+
readonly type: "object";
|
|
407
|
+
readonly description: "Economic authorization policy for x402, MPP, and AP2 protocols.";
|
|
408
|
+
readonly properties: {
|
|
409
|
+
readonly budgets: {
|
|
410
|
+
readonly type: "array";
|
|
411
|
+
readonly items: {
|
|
412
|
+
readonly $ref: "#/$defs/EconomicBudget";
|
|
413
|
+
};
|
|
414
|
+
readonly description: "Budget configurations per scope.";
|
|
415
|
+
};
|
|
416
|
+
readonly cost_extraction: {
|
|
417
|
+
readonly type: "object";
|
|
418
|
+
readonly properties: {
|
|
419
|
+
readonly default: {
|
|
420
|
+
readonly type: "string";
|
|
421
|
+
readonly description: "Default dot-notation path to extract cost from tool arguments.";
|
|
422
|
+
};
|
|
423
|
+
readonly overrides: {
|
|
424
|
+
readonly type: "object";
|
|
425
|
+
readonly additionalProperties: {
|
|
426
|
+
readonly type: "string";
|
|
427
|
+
};
|
|
428
|
+
readonly description: "Per-tool cost extraction path overrides.";
|
|
429
|
+
};
|
|
430
|
+
};
|
|
431
|
+
readonly additionalProperties: false;
|
|
432
|
+
};
|
|
433
|
+
readonly payer: {
|
|
434
|
+
readonly type: "object";
|
|
435
|
+
readonly properties: {
|
|
436
|
+
readonly required: {
|
|
437
|
+
readonly type: "boolean";
|
|
438
|
+
readonly description: "Whether a payer identity is required.";
|
|
439
|
+
};
|
|
440
|
+
readonly approved: {
|
|
441
|
+
readonly type: "array";
|
|
442
|
+
readonly items: {
|
|
443
|
+
readonly type: "string";
|
|
444
|
+
};
|
|
445
|
+
readonly description: "Allowlist of approved payer identifiers.";
|
|
446
|
+
};
|
|
447
|
+
};
|
|
448
|
+
readonly additionalProperties: false;
|
|
449
|
+
};
|
|
450
|
+
readonly denial_reasons: {
|
|
451
|
+
readonly type: "object";
|
|
452
|
+
readonly description: "Custom denial message templates. Keys are denial reason codes, values are message templates with {variable} placeholders.";
|
|
453
|
+
readonly properties: {
|
|
454
|
+
readonly budget_exceeded: {
|
|
455
|
+
readonly type: "string";
|
|
456
|
+
};
|
|
457
|
+
readonly approval_required: {
|
|
458
|
+
readonly type: "string";
|
|
459
|
+
};
|
|
460
|
+
readonly payer_missing: {
|
|
461
|
+
readonly type: "string";
|
|
462
|
+
};
|
|
463
|
+
readonly payer_unauthorized: {
|
|
464
|
+
readonly type: "string";
|
|
465
|
+
};
|
|
466
|
+
readonly currency_mismatch: {
|
|
467
|
+
readonly type: "string";
|
|
468
|
+
};
|
|
469
|
+
readonly connector_error: {
|
|
470
|
+
readonly type: "string";
|
|
471
|
+
};
|
|
472
|
+
};
|
|
473
|
+
readonly additionalProperties: false;
|
|
474
|
+
};
|
|
475
|
+
};
|
|
476
|
+
readonly additionalProperties: false;
|
|
477
|
+
};
|
|
478
|
+
readonly EconomicBudget: {
|
|
479
|
+
readonly type: "object";
|
|
480
|
+
readonly required: readonly ["scope", "limit", "currency", "window"];
|
|
481
|
+
readonly properties: {
|
|
482
|
+
readonly scope: {
|
|
483
|
+
readonly type: "string";
|
|
484
|
+
readonly enum: readonly ["session", "agent", "user", "global"];
|
|
485
|
+
readonly description: "Budget scope.";
|
|
486
|
+
};
|
|
487
|
+
readonly limit: {
|
|
488
|
+
readonly type: "number";
|
|
489
|
+
readonly minimum: 0;
|
|
490
|
+
readonly description: "Maximum spend limit.";
|
|
491
|
+
};
|
|
492
|
+
readonly currency: {
|
|
493
|
+
readonly type: "string";
|
|
494
|
+
readonly minLength: 1;
|
|
495
|
+
readonly description: "Currency code (e.g., \"USD\").";
|
|
496
|
+
};
|
|
497
|
+
readonly approval_threshold: {
|
|
498
|
+
readonly type: "number";
|
|
499
|
+
readonly minimum: 0;
|
|
500
|
+
readonly description: "Cost above which approval is required.";
|
|
501
|
+
};
|
|
502
|
+
readonly window: {
|
|
503
|
+
readonly type: "string";
|
|
504
|
+
readonly description: "Budget time window (e.g., \"session\", \"24h\").";
|
|
505
|
+
};
|
|
506
|
+
};
|
|
507
|
+
readonly additionalProperties: false;
|
|
508
|
+
};
|
|
378
509
|
};
|
|
379
510
|
};
|
|
380
511
|
//# sourceMappingURL=policy-ir-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-ir-schema.d.ts","sourceRoot":"","sources":["../../src/rules/policy-ir-schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"policy-ir-schema.d.ts","sourceRoot":"","sources":["../../src/rules/policy-ir-schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsdtB,CAAC"}
|
|
@@ -9,6 +9,7 @@ export const POLICY_IR_V1_SCHEMA = {
|
|
|
9
9
|
{ required: ['rules'] },
|
|
10
10
|
{ required: ['output_rules'] },
|
|
11
11
|
{ required: ['extends'] },
|
|
12
|
+
{ required: ['economic'] },
|
|
12
13
|
],
|
|
13
14
|
properties: {
|
|
14
15
|
version: {
|
|
@@ -42,6 +43,9 @@ export const POLICY_IR_V1_SCHEMA = {
|
|
|
42
43
|
settings: {
|
|
43
44
|
$ref: '#/$defs/Settings',
|
|
44
45
|
},
|
|
46
|
+
economic: {
|
|
47
|
+
$ref: '#/$defs/EconomicPolicy',
|
|
48
|
+
},
|
|
45
49
|
},
|
|
46
50
|
additionalProperties: false,
|
|
47
51
|
$defs: {
|
|
@@ -197,6 +201,11 @@ export const POLICY_IR_V1_SCHEMA = {
|
|
|
197
201
|
value: {
|
|
198
202
|
description: 'The value to compare the field against.',
|
|
199
203
|
},
|
|
204
|
+
reference: {
|
|
205
|
+
type: 'string',
|
|
206
|
+
minLength: 1,
|
|
207
|
+
description: 'Optional dot-notation reference path used by dynamic operators.',
|
|
208
|
+
},
|
|
200
209
|
},
|
|
201
210
|
allOf: [
|
|
202
211
|
{
|
|
@@ -213,6 +222,24 @@ export const POLICY_IR_V1_SCHEMA = {
|
|
|
213
222
|
},
|
|
214
223
|
},
|
|
215
224
|
},
|
|
225
|
+
{
|
|
226
|
+
if: {
|
|
227
|
+
properties: {
|
|
228
|
+
operator: {
|
|
229
|
+
const: 'percent_of',
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
then: {
|
|
234
|
+
required: ['reference'],
|
|
235
|
+
properties: {
|
|
236
|
+
value: {
|
|
237
|
+
type: 'number',
|
|
238
|
+
exclusiveMinimum: 0,
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
},
|
|
216
243
|
],
|
|
217
244
|
additionalProperties: false,
|
|
218
245
|
},
|
|
@@ -310,6 +337,7 @@ export const POLICY_IR_V1_SCHEMA = {
|
|
|
310
337
|
'matches',
|
|
311
338
|
'greater_than',
|
|
312
339
|
'less_than',
|
|
340
|
+
'percent_of',
|
|
313
341
|
'length_greater_than',
|
|
314
342
|
'in',
|
|
315
343
|
'not_in',
|
|
@@ -353,6 +381,92 @@ export const POLICY_IR_V1_SCHEMA = {
|
|
|
353
381
|
},
|
|
354
382
|
additionalProperties: false,
|
|
355
383
|
},
|
|
384
|
+
EconomicPolicy: {
|
|
385
|
+
type: 'object',
|
|
386
|
+
description: 'Economic authorization policy for x402, MPP, and AP2 protocols.',
|
|
387
|
+
properties: {
|
|
388
|
+
budgets: {
|
|
389
|
+
type: 'array',
|
|
390
|
+
items: { $ref: '#/$defs/EconomicBudget' },
|
|
391
|
+
description: 'Budget configurations per scope.',
|
|
392
|
+
},
|
|
393
|
+
cost_extraction: {
|
|
394
|
+
type: 'object',
|
|
395
|
+
properties: {
|
|
396
|
+
default: {
|
|
397
|
+
type: 'string',
|
|
398
|
+
description: 'Default dot-notation path to extract cost from tool arguments.',
|
|
399
|
+
},
|
|
400
|
+
overrides: {
|
|
401
|
+
type: 'object',
|
|
402
|
+
additionalProperties: { type: 'string' },
|
|
403
|
+
description: 'Per-tool cost extraction path overrides.',
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
additionalProperties: false,
|
|
407
|
+
},
|
|
408
|
+
payer: {
|
|
409
|
+
type: 'object',
|
|
410
|
+
properties: {
|
|
411
|
+
required: {
|
|
412
|
+
type: 'boolean',
|
|
413
|
+
description: 'Whether a payer identity is required.',
|
|
414
|
+
},
|
|
415
|
+
approved: {
|
|
416
|
+
type: 'array',
|
|
417
|
+
items: { type: 'string' },
|
|
418
|
+
description: 'Allowlist of approved payer identifiers.',
|
|
419
|
+
},
|
|
420
|
+
},
|
|
421
|
+
additionalProperties: false,
|
|
422
|
+
},
|
|
423
|
+
denial_reasons: {
|
|
424
|
+
type: 'object',
|
|
425
|
+
description: 'Custom denial message templates. Keys are denial reason codes, values are message templates with {variable} placeholders.',
|
|
426
|
+
properties: {
|
|
427
|
+
budget_exceeded: { type: 'string' },
|
|
428
|
+
approval_required: { type: 'string' },
|
|
429
|
+
payer_missing: { type: 'string' },
|
|
430
|
+
payer_unauthorized: { type: 'string' },
|
|
431
|
+
currency_mismatch: { type: 'string' },
|
|
432
|
+
connector_error: { type: 'string' },
|
|
433
|
+
},
|
|
434
|
+
additionalProperties: false,
|
|
435
|
+
},
|
|
436
|
+
},
|
|
437
|
+
additionalProperties: false,
|
|
438
|
+
},
|
|
439
|
+
EconomicBudget: {
|
|
440
|
+
type: 'object',
|
|
441
|
+
required: ['scope', 'limit', 'currency', 'window'],
|
|
442
|
+
properties: {
|
|
443
|
+
scope: {
|
|
444
|
+
type: 'string',
|
|
445
|
+
enum: ['session', 'agent', 'user', 'global'],
|
|
446
|
+
description: 'Budget scope.',
|
|
447
|
+
},
|
|
448
|
+
limit: {
|
|
449
|
+
type: 'number',
|
|
450
|
+
minimum: 0,
|
|
451
|
+
description: 'Maximum spend limit.',
|
|
452
|
+
},
|
|
453
|
+
currency: {
|
|
454
|
+
type: 'string',
|
|
455
|
+
minLength: 1,
|
|
456
|
+
description: 'Currency code (e.g., "USD").',
|
|
457
|
+
},
|
|
458
|
+
approval_threshold: {
|
|
459
|
+
type: 'number',
|
|
460
|
+
minimum: 0,
|
|
461
|
+
description: 'Cost above which approval is required.',
|
|
462
|
+
},
|
|
463
|
+
window: {
|
|
464
|
+
type: 'string',
|
|
465
|
+
description: 'Budget time window (e.g., "session", "24h").',
|
|
466
|
+
},
|
|
467
|
+
},
|
|
468
|
+
additionalProperties: false,
|
|
469
|
+
},
|
|
356
470
|
},
|
|
357
471
|
};
|
|
358
472
|
//# sourceMappingURL=policy-ir-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-ir-schema.js","sourceRoot":"","sources":["../../src/rules/policy-ir-schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO,EAAE,8CAA8C;IACvD,GAAG,EAAE,4CAA4C;IACjD,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EAAE,yGAAyG;IACtH,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,SAAS,CAAC;IACrB,KAAK,EAAE;QACL,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;QACvB,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;QAC9B,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"policy-ir-schema.js","sourceRoot":"","sources":["../../src/rules/policy-ir-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-packs.d.ts","sourceRoot":"","sources":["../../src/rules/policy-packs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"policy-packs.d.ts","sourceRoot":"","sources":["../../src/rules/policy-packs.ts"],"names":[],"mappings":"AAkBA,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9C,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAEpD;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMhE;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoBrE;AA+CD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,cAAc,EAC1B,UAAU,EAAE,cAAc,GACzB,cAAc,CAqBhB;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GACxC,cAAc,CAyBhB"}
|
|
@@ -9,6 +9,7 @@ const BUILT_IN_POLICY_PACK_FILE_NAMES = {
|
|
|
9
9
|
'@veto/data-access': 'data-access.yaml',
|
|
10
10
|
'@veto/communication': 'communication.yaml',
|
|
11
11
|
'@veto/deployment': 'deployment.yaml',
|
|
12
|
+
'@veto/economic-agent': 'economic-agent.yaml',
|
|
12
13
|
};
|
|
13
14
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
14
15
|
const PACKS_DIR = resolve(MODULE_DIR, '..', '..', 'packs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-packs.js","sourceRoot":"","sources":["../../src/rules/policy-packs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,MAAM,+BAA+B,GAAG;IACtC,oBAAoB,EAAE,mBAAmB;IACzC,iBAAiB,EAAE,gBAAgB;IACnC,0BAA0B,EAAE,yBAAyB;IACrD,mBAAmB,EAAE,kBAAkB;IACvC,qBAAqB,EAAE,oBAAoB;IAC3C,kBAAkB,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"policy-packs.js","sourceRoot":"","sources":["../../src/rules/policy-packs.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/types.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
/**
|
|
10
10
|
* Condition operators for rule matching.
|
|
11
11
|
*/
|
|
12
|
-
export type ConditionOperator = 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with' | 'matches' | 'greater_than' | 'less_than' | 'length_greater_than' | 'in' | 'not_in' | 'outside_hours' | 'within_hours';
|
|
12
|
+
export type ConditionOperator = 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with' | 'matches' | 'greater_than' | 'less_than' | 'percent_of' | 'length_greater_than' | 'in' | 'not_in' | 'outside_hours' | 'within_hours';
|
|
13
13
|
/**
|
|
14
14
|
* Supported day abbreviations for time-based conditions.
|
|
15
15
|
*/
|
|
@@ -43,6 +43,8 @@ export interface RuleCondition {
|
|
|
43
43
|
operator?: ConditionOperator;
|
|
44
44
|
/** The value to compare against */
|
|
45
45
|
value?: unknown;
|
|
46
|
+
/** Reference field used by dynamic operators such as `percent_of` */
|
|
47
|
+
reference?: string;
|
|
46
48
|
/** AST-compiled policy expression (takes precedence over field/operator/value) */
|
|
47
49
|
expression?: string;
|
|
48
50
|
}
|