veto-sdk 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +50 -22
  2. package/dist/cli/bin.d.ts +0 -5
  3. package/dist/cli/bin.d.ts.map +1 -1
  4. package/dist/cli/bin.js +182 -31
  5. package/dist/cli/bin.js.map +1 -1
  6. package/dist/cli/compile.d.ts +44 -0
  7. package/dist/cli/compile.d.ts.map +1 -0
  8. package/dist/cli/compile.js +330 -0
  9. package/dist/cli/compile.js.map +1 -0
  10. package/dist/cli/index.d.ts +3 -0
  11. package/dist/cli/index.d.ts.map +1 -1
  12. package/dist/cli/index.js +3 -0
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/cli/init.js +4 -4
  15. package/dist/cli/init.js.map +1 -1
  16. package/dist/cli/learn.d.ts +63 -0
  17. package/dist/cli/learn.d.ts.map +1 -0
  18. package/dist/cli/learn.js +257 -0
  19. package/dist/cli/learn.js.map +1 -0
  20. package/dist/cli/templates.d.ts +2 -2
  21. package/dist/cli/templates.d.ts.map +1 -1
  22. package/dist/cli/templates.js +23 -9
  23. package/dist/cli/templates.js.map +1 -1
  24. package/dist/cli/test.d.ts +136 -0
  25. package/dist/cli/test.d.ts.map +1 -0
  26. package/dist/cli/test.js +619 -0
  27. package/dist/cli/test.js.map +1 -0
  28. package/dist/core/budget.d.ts +44 -0
  29. package/dist/core/budget.d.ts.map +1 -0
  30. package/dist/core/budget.js +131 -0
  31. package/dist/core/budget.js.map +1 -0
  32. package/dist/core/history.d.ts +9 -1
  33. package/dist/core/history.d.ts.map +1 -1
  34. package/dist/core/history.js +77 -0
  35. package/dist/core/history.js.map +1 -1
  36. package/dist/core/index.d.ts +1 -0
  37. package/dist/core/index.d.ts.map +1 -1
  38. package/dist/core/index.js +1 -0
  39. package/dist/core/index.js.map +1 -1
  40. package/dist/core/interceptor.d.ts +4 -0
  41. package/dist/core/interceptor.d.ts.map +1 -1
  42. package/dist/core/interceptor.js +23 -1
  43. package/dist/core/interceptor.js.map +1 -1
  44. package/dist/core/veto.d.ts +82 -6
  45. package/dist/core/veto.d.ts.map +1 -1
  46. package/dist/core/veto.js +639 -21
  47. package/dist/core/veto.js.map +1 -1
  48. package/dist/deterministic/types.d.ts +2 -0
  49. package/dist/deterministic/types.d.ts.map +1 -1
  50. package/dist/deterministic/validator.js +28 -4
  51. package/dist/deterministic/validator.js.map +1 -1
  52. package/dist/index.d.ts +5 -4
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +4 -2
  55. package/dist/index.js.map +1 -1
  56. package/dist/providers/adapters.d.ts +41 -1
  57. package/dist/providers/adapters.d.ts.map +1 -1
  58. package/dist/providers/adapters.js +96 -0
  59. package/dist/providers/adapters.js.map +1 -1
  60. package/dist/providers/types.d.ts +43 -3
  61. package/dist/providers/types.d.ts.map +1 -1
  62. package/dist/rules/expression-validator.d.ts.map +1 -1
  63. package/dist/rules/expression-validator.js +9 -1
  64. package/dist/rules/expression-validator.js.map +1 -1
  65. package/dist/rules/policy-ir-schema.d.ts +1 -1
  66. package/dist/rules/policy-ir-schema.js +1 -1
  67. package/dist/rules/policy-ir-schema.js.map +1 -1
  68. package/dist/rules/types.d.ts +1 -1
  69. package/dist/rules/types.d.ts.map +1 -1
  70. package/dist/types/config.d.ts +16 -0
  71. package/dist/types/config.d.ts.map +1 -1
  72. package/dist/types/config.js.map +1 -1
  73. package/package.json +1 -1
package/README.md CHANGED
@@ -9,6 +9,7 @@ A guardrail system for AI agent tool calls. Veto intercepts and validates tool c
9
9
  3. **Pass** the wrapped tools to your AI agent/model.
10
10
 
11
11
  When the AI model calls a tool, Veto automatically:
12
+
12
13
  1. Intercepts the call.
13
14
  2. Validates arguments against your rules (via YAML & LLM).
14
15
  3. Blocks or Allows execution based on the result.
@@ -18,17 +19,21 @@ The AI model remains unaware of the guardrail - the tool interface is preserved.
18
19
  ## Installation
19
20
 
20
21
  ```bash
21
- npm install veto
22
+ npm install veto-sdk
22
23
  ```
23
24
 
25
+ For a complete bank transfer escalation example, see the [HITL guide](../../docs/hitl-guide.md).
26
+
24
27
  ## Quick Start
25
28
 
26
29
  ### 1. Initialize Veto
27
30
 
28
31
  Run the CLI to create configuration:
32
+
29
33
  ```bash
30
34
  npx veto init
31
35
  ```
36
+
32
37
  This creates a `veto/` directory with `veto.config.yaml` and default rules.
33
38
 
34
39
  ### 2. Wrap Your Tools
@@ -36,7 +41,7 @@ This creates a `veto/` directory with `veto.config.yaml` and default rules.
36
41
  Veto's `wrap()` method is provider-agnostic. It works with LangChain, Vercel AI SDK, or any custom tool object.
37
42
 
38
43
  ```typescript
39
- import { Veto } from 'veto';
44
+ import { Veto } from 'veto-sdk';
40
45
  import { tool } from '@langchain/core/tools'; // Example with LangChain
41
46
 
42
47
  // 1. Define your tools normally
@@ -84,7 +89,7 @@ rules:
84
89
  version: "1.0"
85
90
 
86
91
  # Operating mode
87
- mode: "strict" # "strict" blocks calls, "log" only logs them
92
+ mode: "strict" # "strict" blocks calls, "log" only logs them
88
93
 
89
94
  # Validation Backend
90
95
  validation:
@@ -103,6 +108,16 @@ logging:
103
108
  rules:
104
109
  directory: "./rules"
105
110
  recursive: true
111
+
112
+ # Local approval callback (for action: require_approval)
113
+ # approval:
114
+ # callbackUrl: "http://localhost:8787/approvals"
115
+ # timeout: 30000
116
+ # timeoutBehavior: "block" # "block" (default) or "allow"
117
+ # includeCustomContext: false # opt-in: forward validation context.custom to webhook
118
+ # responseSchema:
119
+ # decisionField: "decision"
120
+ # reasonField: "reason"
106
121
  ```
107
122
 
108
123
  ## API Reference
@@ -150,12 +165,21 @@ Resets the history statistics.
150
165
  veto.clearHistory();
151
166
  ```
152
167
 
168
+ ### `veto.exportDecisions(format)`
169
+
170
+ Exports decision history as JSON or CSV.
171
+
172
+ ```typescript
173
+ const jsonAudit = veto.exportDecisions("json");
174
+ const csvAudit = veto.exportDecisions("csv");
175
+ ```
176
+
153
177
  ## CLI Commands
154
178
 
155
- | Command | Description |
156
- |---------|-------------|
157
- | `npx veto init` | Initialize Veto in current directory |
158
- | `npx veto version` | Show version |
179
+ | Command | Description |
180
+ | ------------------ | ------------------------------------ |
181
+ | `npx veto init` | Initialize Veto in current directory |
182
+ | `npx veto version` | Show version |
159
183
 
160
184
  ## General Rule YAML Format
161
185
 
@@ -163,21 +187,21 @@ Each rule file (e.g., `veto/rules/policy.yaml`) can contain one or more rules.
163
187
 
164
188
  ```yaml
165
189
  rules:
166
- - id: unique-rule-id # [Required] Unique identifier for the rule
167
- name: Human readable name # [Required] Descriptive name for logging
168
- enabled: true # [Optional] Default: true
169
- severity: high # [Optional] critical, high, medium, low, info. Default: medium
170
- action: block # [Required] block, warn, log, allow.
171
-
190
+ - id: unique-rule-id # [Required] Unique identifier for the rule
191
+ name: Human readable name # [Required] Descriptive name for logging
192
+ enabled: true # [Optional] Default: true
193
+ severity: high # [Optional] critical, high, medium, low, info. Default: medium
194
+ action: block # [Required] block, warn, log, allow, require_approval.
195
+
172
196
  # Scope: Which tools does this rule apply to?
173
- tools: # [Optional] List of tool names.
174
- - make_payment # If omitted or empty, applies to ALL tools (Global Rule).
175
-
197
+ tools: # [Optional] List of tool names.
198
+ - make_payment # If omitted or empty, applies to ALL tools (Global Rule).
199
+
176
200
  # Static Conditions (Optional):
177
201
  # Evaluated locally before LLM validation. Fast checks for specific values.
178
202
  conditions:
179
- - field: arguments.amount # Dot notation for nested arguments
180
- operator: greater_than # equals, contains, starts_with, ends_with, greater_than, less_than
203
+ - field: arguments.amount # Dot notation for nested arguments
204
+ operator: greater_than # equals, contains, starts_with, ends_with, greater_than, less_than
181
205
  value: 1000
182
206
 
183
207
  # description (Optional):
@@ -190,14 +214,18 @@ rules:
190
214
  Veto uses a two-step process to determine if a tool call is safe:
191
215
 
192
216
  ### 1. Rule Selection (Which rules apply?)
217
+
193
218
  Veto selects rules based on the `tools` list in your YAML:
194
- * **Tool-Specific Rules**: If a rule lists specific tools (e.g., `tools: [make_payment]`), it ONLY applies when those tools are called.
195
- * **Global Rules**: If `tools` is missing or empty `[]`, the rule activates for **EVERY** tool call. Use this for universal policies (e.g., "Do not reveal internal file paths").
219
+
220
+ - **Tool-Specific Rules**: If a rule lists specific tools (e.g., `tools: [make_payment]`), it ONLY applies when those tools are called.
221
+ - **Global Rules**: If `tools` is missing or empty `[]`, the rule activates for **EVERY** tool call. Use this for universal policies (e.g., "Do not reveal internal file paths").
196
222
 
197
223
  ### 2. Validation Execution
224
+
198
225
  For each intercepted tool call, Veto aggregates all applicable rules (Global + Specific) and validates them:
199
- * **Static Conditions**: If `conditions` are defined, they are checked first by the Validation Engine. If a condition matches (e.g., `amount > 1000`), the rule triggers immediately.
200
- * **Semantic Validation**: If no static conditions are matched (or none exist), the rule's `name` and `description` are passed to the LLM (via API, Kernel, or Custom provider) to semantically verify if the tool call violates the rule context.
226
+
227
+ - **Static Conditions**: If `conditions` are defined, they are checked first by the Validation Engine. If a condition matches (e.g., `amount > 1000`), the rule triggers immediately.
228
+ - **Semantic Validation**: If no static conditions are matched (or none exist), the rule's `name` and `description` are passed to the LLM (via API, Kernel, or Custom provider) to semantically verify if the tool call violates the rule context.
201
229
 
202
230
  ## License
203
231
 
package/dist/cli/bin.d.ts CHANGED
@@ -1,8 +1,3 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * Veto CLI entry point.
4
- *
5
- * @module cli/bin
6
- */
7
2
  export {};
8
3
  //# sourceMappingURL=bin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":""}
package/dist/cli/bin.js CHANGED
@@ -1,14 +1,12 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * Veto CLI entry point.
4
- *
5
- * @module cli/bin
6
- */
7
2
  import { init } from './init.js';
3
+ import { Observer, PolicyGenerator, parseDuration, policiesToYaml } from './learn.js';
4
+ import { compile } from './compile.js';
5
+ import { test } from './test.js';
6
+ import { mkdirSync, writeFileSync } from 'node:fs';
7
+ import { dirname, resolve } from 'node:path';
8
8
  const VERSION = '0.1.0';
9
- /**
10
- * Print help message.
11
- */
9
+ const VALID_PROVIDERS = new Set(['openai', 'anthropic', 'gemini', 'openrouter']);
12
10
  function printHelp() {
13
11
  console.log(`
14
12
  Veto - AI Agent Tool Call Guardrail
@@ -18,35 +16,69 @@ Usage:
18
16
 
19
17
  Commands:
20
18
  init Initialize Veto in the current directory
19
+ learn Observe tool calls and generate policies
20
+ compile Compile natural language policies to deterministic YAML rules
21
+ test Run adversarial policy gap analysis
21
22
  version Show version information
22
23
  help Show this help message
23
24
 
24
25
  Options:
25
- --force, -f Force overwrite existing files (init)
26
- --quiet, -q Suppress output
27
- --help, -h Show help
26
+ --force, -f Force overwrite existing files (init)
27
+ --quiet, -q Suppress output
28
+ --help, -h Show help
29
+
30
+ Learn Options:
31
+ --runs <n> Stop after n tool calls
32
+ --duration <time> Stop after duration (e.g., 30s, 10m, 1h)
33
+ --output <path> Output YAML file path (default: ./veto/rules/learned.yaml)
34
+ --margin <n> Numeric range margin as decimal (default: 0.1)
35
+
36
+ Compile Options:
37
+ --input <text> Policy description as inline text
38
+ --file <path> Path to a text file containing policy descriptions
39
+ --output <path> Output file (.yaml) or directory for generated rules
40
+ --provider <name> LLM provider: openai, anthropic, gemini, openrouter
41
+ --model <name> Model identifier (e.g. gpt-4o, claude-sonnet-4-5-20250929)
42
+
43
+ Test Options:
44
+ --policy <path> Policy directory (default: ./veto/rules/)
45
+ --output <file> Write JSON report to file
46
+ --format <fmt> Output format: text or json (default: text)
28
47
 
29
48
  Examples:
30
- veto init Initialize Veto in current directory
31
- veto init --force Reinitialize, overwriting existing files
49
+ veto init Initialize Veto in current directory
50
+ veto init --force Reinitialize, overwriting existing files
51
+ veto learn --runs 10 Observe 10 tool calls then generate policies
52
+ veto learn --duration 30m Observe for 30 minutes
53
+ veto compile --input 'Block emails outside company domain' --output ./veto/rules/email.yaml
54
+ veto compile --file policies.txt --output ./veto/rules/
55
+ veto test Analyze policies for gaps
56
+ veto test --policy ./rules Analyze specific policy directory
57
+ veto test --output report.json Save JSON report
32
58
  `);
33
59
  }
34
- /**
35
- * Print version.
36
- */
37
60
  function printVersion() {
38
61
  console.log(`veto v${VERSION}`);
39
62
  }
40
- /**
41
- * Parse command line arguments.
42
- */
43
63
  function parseArgs(args) {
44
64
  const flags = {};
65
+ const values = {};
45
66
  let command = '';
46
- for (const arg of args) {
67
+ const valueFlags = new Set([
68
+ 'runs', 'duration', 'output', 'margin',
69
+ 'input', 'file', 'provider', 'model',
70
+ 'policy', 'format',
71
+ ]);
72
+ for (let i = 0; i < args.length; i++) {
73
+ const arg = args[i];
47
74
  if (arg.startsWith('--')) {
48
75
  const flag = arg.slice(2);
49
- flags[flag] = true;
76
+ if (valueFlags.has(flag) && i + 1 < args.length) {
77
+ values[flag] = args[++i];
78
+ }
79
+ else {
80
+ flags[flag] = true;
81
+ }
50
82
  }
51
83
  else if (arg.startsWith('-')) {
52
84
  const shortFlags = arg.slice(1).split('');
@@ -68,25 +100,111 @@ function parseArgs(args) {
68
100
  command = arg;
69
101
  }
70
102
  }
71
- return { command, flags };
103
+ return { command, flags, values };
104
+ }
105
+ async function runLearn(flags, values) {
106
+ const quiet = flags['quiet'] ?? false;
107
+ const stopCondition = {};
108
+ if (values['runs']) {
109
+ const runs = parseInt(values['runs'], 10);
110
+ if (isNaN(runs) || runs <= 0) {
111
+ console.error('--runs must be a positive integer');
112
+ process.exit(1);
113
+ }
114
+ stopCondition.runs = runs;
115
+ }
116
+ if (values['duration']) {
117
+ stopCondition.durationMs = parseDuration(values['duration']);
118
+ }
119
+ if (!stopCondition.runs && !stopCondition.durationMs) {
120
+ console.error('veto learn requires --runs or --duration');
121
+ console.error('Example: veto learn --runs 10');
122
+ process.exit(1);
123
+ }
124
+ const margin = values['margin'] ? parseFloat(values['margin']) : 0.1;
125
+ if (values['margin'] && (isNaN(margin) || margin < 0 || margin > 1)) {
126
+ console.error('--margin must be a number between 0 and 1');
127
+ process.exit(1);
128
+ }
129
+ const outputPath = resolve(values['output'] ?? './veto/rules/learned.yaml');
130
+ const observer = new Observer(stopCondition);
131
+ observer.start();
132
+ if (!quiet) {
133
+ console.log('');
134
+ console.log('Veto Learn - Observing tool calls...');
135
+ if (stopCondition.runs)
136
+ console.log(` Stop after: ${stopCondition.runs} calls`);
137
+ if (stopCondition.durationMs)
138
+ console.log(` Stop after: ${values['duration']}`);
139
+ console.log(` Output: ${outputPath}`);
140
+ console.log(` Margin: ${margin}`);
141
+ console.log('');
142
+ console.log('Reading tool calls from stdin (one JSON object per line)...');
143
+ console.log('Format: {"tool": "tool_name", "args": {...}}');
144
+ console.log('');
145
+ }
146
+ const readline = await import('node:readline');
147
+ const rl = readline.createInterface({ input: process.stdin });
148
+ for await (const line of rl) {
149
+ if (observer.stopped)
150
+ break;
151
+ const trimmed = line.trim();
152
+ if (!trimmed)
153
+ continue;
154
+ try {
155
+ const parsed = JSON.parse(trimmed);
156
+ const toolName = parsed.tool ?? parsed.name;
157
+ const args = parsed.args ?? parsed.arguments ?? {};
158
+ if (!toolName || typeof toolName !== 'string') {
159
+ if (!quiet)
160
+ console.error(' Skipping line: missing "tool" or "name" field');
161
+ continue;
162
+ }
163
+ observer.recordRaw(toolName, args);
164
+ if (!quiet)
165
+ console.log(` [${observer.callCount}] ${toolName}(${JSON.stringify(args).slice(0, 60)})`);
166
+ }
167
+ catch {
168
+ if (!quiet)
169
+ console.error(` Skipping invalid JSON: ${trimmed.slice(0, 50)}`);
170
+ }
171
+ if (observer.shouldStop())
172
+ break;
173
+ }
174
+ rl.close();
175
+ const observations = observer.getObservations();
176
+ const generator = new PolicyGenerator(margin);
177
+ const policies = generator.generate(observations);
178
+ if (policies.length === 0) {
179
+ if (!quiet)
180
+ console.log('No tool calls observed. No policies generated.');
181
+ process.exit(0);
182
+ }
183
+ const yaml = policiesToYaml(policies);
184
+ mkdirSync(dirname(outputPath), { recursive: true });
185
+ writeFileSync(outputPath, yaml, 'utf-8');
186
+ if (!quiet) {
187
+ console.log('');
188
+ console.log(`Generated ${policies.length} policies from ${observer.callCount} observations.`);
189
+ console.log(`Output: ${outputPath}`);
190
+ console.log('');
191
+ for (const p of policies) {
192
+ console.log(` ${p.toolName}: ${p.constraints.length} constraints`);
193
+ }
194
+ console.log('');
195
+ }
72
196
  }
73
- /**
74
- * Main CLI entry point.
75
- */
76
197
  async function main() {
77
198
  const args = process.argv.slice(2);
78
- const { command, flags } = parseArgs(args);
79
- // Handle help flag
199
+ const { command, flags, values } = parseArgs(args);
80
200
  if (flags['help'] || command === 'help') {
81
201
  printHelp();
82
202
  process.exit(0);
83
203
  }
84
- // Handle version flag or command
85
204
  if (flags['version'] || command === 'version') {
86
205
  printVersion();
87
206
  process.exit(0);
88
207
  }
89
- // Handle commands
90
208
  switch (command) {
91
209
  case 'init': {
92
210
  const result = await init({
@@ -96,8 +214,42 @@ async function main() {
96
214
  process.exit(result.success ? 0 : 1);
97
215
  break;
98
216
  }
217
+ case 'learn': {
218
+ await runLearn(flags, values);
219
+ process.exit(0);
220
+ break;
221
+ }
222
+ case 'compile': {
223
+ if (!values['output']) {
224
+ console.error('Error: --output is required for compile command');
225
+ process.exit(1);
226
+ }
227
+ if (values['provider'] && !VALID_PROVIDERS.has(values['provider'])) {
228
+ console.error(`Error: Invalid provider "${values['provider']}". Must be one of: openai, anthropic, gemini, openrouter`);
229
+ process.exit(1);
230
+ }
231
+ const result = await compile({
232
+ input: values['input'],
233
+ file: values['file'],
234
+ output: values['output'],
235
+ provider: values['provider'],
236
+ model: values['model'],
237
+ quiet: flags['quiet'],
238
+ });
239
+ process.exit(result.success ? 0 : 1);
240
+ break;
241
+ }
242
+ case 'test': {
243
+ const testResult = await test({
244
+ policy: values['policy'],
245
+ output: values['output'],
246
+ quiet: flags['quiet'],
247
+ format: values['format'] ?? undefined,
248
+ });
249
+ process.exit(testResult.success ? 0 : 1);
250
+ break;
251
+ }
99
252
  case '': {
100
- // No command provided
101
253
  console.log('Veto - AI Agent Tool Call Guardrail');
102
254
  console.log('');
103
255
  console.log('Run "veto help" for usage information.');
@@ -112,7 +264,6 @@ async function main() {
112
264
  }
113
265
  }
114
266
  }
115
- // Run the CLI
116
267
  main().catch((error) => {
117
268
  console.error('Error:', error.message);
118
269
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { CustomProvider } from '../custom/types.js';
2
+ import { CustomError } from '../custom/types.js';
3
+ export interface CompileOptions {
4
+ input?: string;
5
+ file?: string;
6
+ output: string;
7
+ provider?: CustomProvider;
8
+ model?: string;
9
+ quiet?: boolean;
10
+ }
11
+ export interface CompileResult {
12
+ success: boolean;
13
+ outputPath?: string;
14
+ yaml?: string;
15
+ messages: string[];
16
+ }
17
+ declare const COMPILE_SYSTEM_PROMPT = "You are a policy compiler for Veto, an AI agent tool-call guardrail system.\n\nYour task: convert a natural language policy description into deterministic YAML constraint rules.\n\nThe output MUST be a valid JSON object with two fields:\n- \"rules\": an array of rule objects (the compiled rules)\n- \"notes\": a string with any caveats or suggestions (empty string if none)\n\nEach rule object MUST have these fields:\n- \"id\": kebab-case unique identifier (e.g. \"block-external-emails\")\n- \"name\": short human-readable name\n- \"description\": what the rule does\n- \"enabled\": true\n- \"severity\": one of \"critical\", \"high\", \"medium\", \"low\", \"info\"\n- \"action\": one of \"block\", \"warn\", \"log\", \"allow\"\n- \"tools\": array of tool name strings this applies to (use general names like \"send_email\", \"transfer_funds\", \"read_file\", \"write_file\", \"execute_command\", etc.)\n- \"conditions\": array of condition objects, each with:\n - \"field\": dot-notation path (e.g. \"arguments.to\", \"arguments.amount\")\n - \"operator\": one of \"equals\", \"not_equals\", \"contains\", \"not_contains\", \"starts_with\", \"ends_with\", \"matches\", \"greater_than\", \"less_than\", \"in\", \"not_in\"\n - \"value\": the value to compare against\n\nCommon patterns:\n- Domain restrictions: use \"matches\" operator with regex (e.g. \"^[^@]+@company\\.com$\")\n- Amount limits: use \"greater_than\" or \"less_than\" with numeric values\n- Field requirements: use \"equals\" with expected values\n- Enum allowlists: use \"in\" with an array of allowed values\n- Path restrictions: use \"starts_with\" or \"matches\" with path patterns\n\nIf the policy CANNOT be fully expressed as deterministic rules, include an explanation in the \"notes\" field describing what aspects require LLM-based evaluation.\n\nRespond with ONLY a JSON object. No markdown, no explanation outside the JSON.";
18
+ declare function buildUserPrompt(policyText: string): string;
19
+ export declare class CompileError extends CustomError {
20
+ constructor(message: string);
21
+ }
22
+ interface CompiledRule {
23
+ id: string;
24
+ name: string;
25
+ description?: string;
26
+ enabled: boolean;
27
+ severity: string;
28
+ action: string;
29
+ tools: string[];
30
+ conditions: Array<{
31
+ field: string;
32
+ operator: string;
33
+ value: unknown;
34
+ }>;
35
+ }
36
+ interface LLMOutput {
37
+ rules: CompiledRule[];
38
+ notes: string;
39
+ }
40
+ declare function parseAndValidateLLMOutput(raw: string): LLMOutput;
41
+ declare function toYaml(output: LLMOutput, policyText: string): string;
42
+ export declare function compile(options: CompileOptions): Promise<CompileResult>;
43
+ export { COMPILE_SYSTEM_PROMPT, buildUserPrompt, parseAndValidateLLMOutput, toYaml };
44
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/cli/compile.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAGL,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AASD,QAAA,MAAM,qBAAqB,w3DA8BoD,CAAC;AAEhF,iBAAS,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnD;AA6CD,qBAAa,YAAa,SAAQ,WAAW;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAsED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,KAAK,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAcD,iBAAS,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAgEzD;AAED,iBAAS,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAQD,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAsG7E;AAED,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,EAAE,CAAC"}