govyn 0.0.1 → 0.2.6

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 (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +284 -1
  3. package/configs/multi-provider.yaml +68 -0
  4. package/configs/openai-only.yaml +45 -0
  5. package/configs/team-setup.yaml +88 -0
  6. package/dist/action-logger.d.ts +128 -0
  7. package/dist/action-logger.js +356 -0
  8. package/dist/action-logger.js.map +1 -0
  9. package/dist/admin-cli.d.ts +2 -0
  10. package/dist/admin-cli.js +36 -0
  11. package/dist/admin-cli.js.map +1 -0
  12. package/dist/agents.d.ts +23 -0
  13. package/dist/agents.js +59 -0
  14. package/dist/agents.js.map +1 -0
  15. package/dist/alert-api.d.ts +14 -0
  16. package/dist/alert-api.js +355 -0
  17. package/dist/alert-api.js.map +1 -0
  18. package/dist/alert-manager.d.ts +77 -0
  19. package/dist/alert-manager.js +267 -0
  20. package/dist/alert-manager.js.map +1 -0
  21. package/dist/approval-api.d.ts +19 -0
  22. package/dist/approval-api.js +82 -0
  23. package/dist/approval-api.js.map +1 -0
  24. package/dist/approval-timeout.d.ts +29 -0
  25. package/dist/approval-timeout.js +45 -0
  26. package/dist/approval-timeout.js.map +1 -0
  27. package/dist/approval.d.ts +78 -0
  28. package/dist/approval.js +101 -0
  29. package/dist/approval.js.map +1 -0
  30. package/dist/auth.d.ts +47 -0
  31. package/dist/auth.js +335 -0
  32. package/dist/auth.js.map +1 -0
  33. package/dist/budget-api.d.ts +20 -0
  34. package/dist/budget-api.js +85 -0
  35. package/dist/budget-api.js.map +1 -0
  36. package/dist/budget-enforcer.d.ts +102 -0
  37. package/dist/budget-enforcer.js +294 -0
  38. package/dist/budget-enforcer.js.map +1 -0
  39. package/dist/cli.d.ts +15 -0
  40. package/dist/cli.js +200 -0
  41. package/dist/cli.js.map +1 -0
  42. package/dist/config.d.ts +15 -0
  43. package/dist/config.js +267 -0
  44. package/dist/config.js.map +1 -0
  45. package/dist/cost-aggregator.d.ts +69 -0
  46. package/dist/cost-aggregator.js +305 -0
  47. package/dist/cost-aggregator.js.map +1 -0
  48. package/dist/cost-api.d.ts +29 -0
  49. package/dist/cost-api.js +128 -0
  50. package/dist/cost-api.js.map +1 -0
  51. package/dist/database-url.d.ts +6 -0
  52. package/dist/database-url.js +47 -0
  53. package/dist/database-url.js.map +1 -0
  54. package/dist/db-retention.d.ts +53 -0
  55. package/dist/db-retention.js +82 -0
  56. package/dist/db-retention.js.map +1 -0
  57. package/dist/db-schema.d.ts +17 -0
  58. package/dist/db-schema.js +167 -0
  59. package/dist/db-schema.js.map +1 -0
  60. package/dist/db-writer.d.ts +55 -0
  61. package/dist/db-writer.js +115 -0
  62. package/dist/db-writer.js.map +1 -0
  63. package/dist/db.d.ts +33 -0
  64. package/dist/db.js +78 -0
  65. package/dist/db.js.map +1 -0
  66. package/dist/events.d.ts +77 -0
  67. package/dist/events.js +12 -0
  68. package/dist/events.js.map +1 -0
  69. package/dist/health.d.ts +14 -0
  70. package/dist/health.js +49 -0
  71. package/dist/health.js.map +1 -0
  72. package/dist/index.d.ts +7 -0
  73. package/dist/index.js +14 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/init-wizard.d.ts +12 -0
  76. package/dist/init-wizard.js +206 -0
  77. package/dist/init-wizard.js.map +1 -0
  78. package/dist/log-api.d.ts +20 -0
  79. package/dist/log-api.js +371 -0
  80. package/dist/log-api.js.map +1 -0
  81. package/dist/log-rotator.d.ts +55 -0
  82. package/dist/log-rotator.js +157 -0
  83. package/dist/log-rotator.js.map +1 -0
  84. package/dist/loop-detector.d.ts +71 -0
  85. package/dist/loop-detector.js +122 -0
  86. package/dist/loop-detector.js.map +1 -0
  87. package/dist/message-content.d.ts +15 -0
  88. package/dist/message-content.js +41 -0
  89. package/dist/message-content.js.map +1 -0
  90. package/dist/persistence-types.d.ts +165 -0
  91. package/dist/persistence-types.js +2 -0
  92. package/dist/persistence-types.js.map +1 -0
  93. package/dist/persistence.d.ts +185 -0
  94. package/dist/persistence.js +785 -0
  95. package/dist/persistence.js.map +1 -0
  96. package/dist/policy-api.d.ts +25 -0
  97. package/dist/policy-api.js +347 -0
  98. package/dist/policy-api.js.map +1 -0
  99. package/dist/policy-engine.d.ts +76 -0
  100. package/dist/policy-engine.js +830 -0
  101. package/dist/policy-engine.js.map +1 -0
  102. package/dist/policy-file.d.ts +10 -0
  103. package/dist/policy-file.js +52 -0
  104. package/dist/policy-file.js.map +1 -0
  105. package/dist/policy-parser.d.ts +21 -0
  106. package/dist/policy-parser.js +560 -0
  107. package/dist/policy-parser.js.map +1 -0
  108. package/dist/policy-types.d.ts +216 -0
  109. package/dist/policy-types.js +8 -0
  110. package/dist/policy-types.js.map +1 -0
  111. package/dist/policy-watcher.d.ts +54 -0
  112. package/dist/policy-watcher.js +116 -0
  113. package/dist/policy-watcher.js.map +1 -0
  114. package/dist/pricing.d.ts +69 -0
  115. package/dist/pricing.js +93 -0
  116. package/dist/pricing.js.map +1 -0
  117. package/dist/prompt.d.ts +6 -0
  118. package/dist/prompt.js +47 -0
  119. package/dist/prompt.js.map +1 -0
  120. package/dist/providers/anthropic.d.ts +18 -0
  121. package/dist/providers/anthropic.js +61 -0
  122. package/dist/providers/anthropic.js.map +1 -0
  123. package/dist/providers/custom.d.ts +19 -0
  124. package/dist/providers/custom.js +54 -0
  125. package/dist/providers/custom.js.map +1 -0
  126. package/dist/providers/openai.d.ts +17 -0
  127. package/dist/providers/openai.js +48 -0
  128. package/dist/providers/openai.js.map +1 -0
  129. package/dist/proxy.d.ts +57 -0
  130. package/dist/proxy.js +477 -0
  131. package/dist/proxy.js.map +1 -0
  132. package/dist/router.d.ts +23 -0
  133. package/dist/router.js +89 -0
  134. package/dist/router.js.map +1 -0
  135. package/dist/runtime.d.ts +1 -0
  136. package/dist/runtime.js +139 -0
  137. package/dist/runtime.js.map +1 -0
  138. package/dist/safe-regex.d.ts +37 -0
  139. package/dist/safe-regex.js +73 -0
  140. package/dist/safe-regex.js.map +1 -0
  141. package/dist/security.d.ts +81 -0
  142. package/dist/security.js +512 -0
  143. package/dist/security.js.map +1 -0
  144. package/dist/server.d.ts +33 -0
  145. package/dist/server.js +1147 -0
  146. package/dist/server.js.map +1 -0
  147. package/dist/sqlite-schema.d.ts +6 -0
  148. package/dist/sqlite-schema.js +134 -0
  149. package/dist/sqlite-schema.js.map +1 -0
  150. package/dist/streaming.d.ts +24 -0
  151. package/dist/streaming.js +63 -0
  152. package/dist/streaming.js.map +1 -0
  153. package/dist/tokens.d.ts +45 -0
  154. package/dist/tokens.js +237 -0
  155. package/dist/tokens.js.map +1 -0
  156. package/dist/types.d.ts +344 -0
  157. package/dist/types.js +5 -0
  158. package/dist/types.js.map +1 -0
  159. package/package.json +67 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Policy REST API handler for the Govyn proxy.
3
+ *
4
+ * Provides CRUD operations for managing policies via HTTP:
5
+ * GET /api/policies - List all policies
6
+ * GET /api/policies/:name - Get single policy detail
7
+ * PATCH /api/policies/:name - Toggle enabled/disabled
8
+ * PUT /api/policies/:name - Update policy YAML
9
+ * POST /api/policies - Create new policy
10
+ * DELETE /api/policies/:name - Remove a policy
11
+ *
12
+ * All mutations persist changes to the YAML file on disk and reload
13
+ * the policy engine for immediate consistency.
14
+ */
15
+ import * as http from 'node:http';
16
+ import type { PolicyEngine } from './policy-engine.js';
17
+ /**
18
+ * Handle all policy API requests.
19
+ *
20
+ * @param req - Incoming HTTP request
21
+ * @param res - Server response
22
+ * @param policyEngine - Policy engine instance for reading current policies
23
+ * @param configPoliciesFile - Path to the YAML policies file on disk
24
+ */
25
+ export declare function handlePolicyApi(req: http.IncomingMessage, res: http.ServerResponse, policyEngine: PolicyEngine, configPoliciesFile: string): Promise<void>;
@@ -0,0 +1,347 @@
1
+ /**
2
+ * Policy REST API handler for the Govyn proxy.
3
+ *
4
+ * Provides CRUD operations for managing policies via HTTP:
5
+ * GET /api/policies - List all policies
6
+ * GET /api/policies/:name - Get single policy detail
7
+ * PATCH /api/policies/:name - Toggle enabled/disabled
8
+ * PUT /api/policies/:name - Update policy YAML
9
+ * POST /api/policies - Create new policy
10
+ * DELETE /api/policies/:name - Remove a policy
11
+ *
12
+ * All mutations persist changes to the YAML file on disk and reload
13
+ * the policy engine for immediate consistency.
14
+ */
15
+ import * as fs from 'node:fs';
16
+ import { parseDocument } from 'yaml';
17
+ import { isMap, isSeq, isScalar } from 'yaml';
18
+ import { parsePolicies } from './policy-parser.js';
19
+ import { ensurePolicyFile, policyToYaml } from './policy-file.js';
20
+ /**
21
+ * Build a summary object from a policy.
22
+ */
23
+ function toSummary(policy) {
24
+ return {
25
+ name: policy.name,
26
+ type: policy.type,
27
+ scope: policy.scope,
28
+ enabled: policy.enabled,
29
+ ...(policy.description !== undefined ? { description: policy.description } : {}),
30
+ };
31
+ }
32
+ /**
33
+ * Send a JSON response.
34
+ */
35
+ function sendJson(res, statusCode, data) {
36
+ const body = JSON.stringify(data);
37
+ res.writeHead(statusCode, {
38
+ 'content-type': 'application/json',
39
+ 'content-length': Buffer.byteLength(body).toString(),
40
+ });
41
+ res.end(body);
42
+ }
43
+ /**
44
+ * Read the request body as a string.
45
+ */
46
+ function readBody(req) {
47
+ return new Promise((resolve, reject) => {
48
+ const chunks = [];
49
+ req.on('data', (chunk) => chunks.push(chunk));
50
+ req.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
51
+ req.on('error', reject);
52
+ });
53
+ }
54
+ /**
55
+ * Find the index of a policy entry by name in a parsed YAML document's policies sequence.
56
+ */
57
+ function findPolicyIndex(policiesSeq, name) {
58
+ for (let i = 0; i < policiesSeq.items.length; i++) {
59
+ const item = policiesSeq.items[i];
60
+ if (isMap(item)) {
61
+ const map = item;
62
+ const nameNode = map.items.find((pair) => isScalar(pair.key) && pair.key.value === 'name');
63
+ if (nameNode && isScalar(nameNode.value) && nameNode.value.value === name) {
64
+ return i;
65
+ }
66
+ }
67
+ }
68
+ return -1;
69
+ }
70
+ /**
71
+ * Get the policies sequence from a parsed YAML document.
72
+ * Returns null if the document structure is invalid.
73
+ */
74
+ function getPoliciesSeq(doc) {
75
+ const contents = doc.contents;
76
+ if (!isMap(contents))
77
+ return null;
78
+ const root = contents;
79
+ const policiesPair = root.items.find((pair) => isScalar(pair.key) && pair.key.value === 'policies');
80
+ if (!policiesPair || !isSeq(policiesPair.value))
81
+ return null;
82
+ return policiesPair.value;
83
+ }
84
+ /**
85
+ * Handle all policy API requests.
86
+ *
87
+ * @param req - Incoming HTTP request
88
+ * @param res - Server response
89
+ * @param policyEngine - Policy engine instance for reading current policies
90
+ * @param configPoliciesFile - Path to the YAML policies file on disk
91
+ */
92
+ export async function handlePolicyApi(req, res, policyEngine, configPoliciesFile) {
93
+ const url = req.url ?? '';
94
+ const method = req.method ?? 'GET';
95
+ // Parse route: /api/policies or /api/policies/:name
96
+ const basePath = '/api/policies';
97
+ const pathAfterBase = url.slice(basePath.length);
98
+ const policyName = pathAfterBase.startsWith('/')
99
+ ? decodeURIComponent(pathAfterBase.slice(1).split('?')[0])
100
+ : '';
101
+ try {
102
+ // GET /api/policies - List all policies
103
+ if (method === 'GET' && !policyName) {
104
+ const policies = policyEngine.getPolicies();
105
+ const summaries = policies.map(toSummary);
106
+ sendJson(res, 200, { policies: summaries });
107
+ return;
108
+ }
109
+ // GET /api/policies/:name - Get single policy detail
110
+ if (method === 'GET' && policyName) {
111
+ const policies = policyEngine.getPolicies();
112
+ const policy = policies.find((p) => p.name === policyName);
113
+ if (!policy) {
114
+ sendJson(res, 404, { error: { message: `Policy not found: ${policyName}`, code: 'not_found' } });
115
+ return;
116
+ }
117
+ // Build the yaml field wrapping the single policy in a document structure
118
+ const yamlStr = policyToYaml(policy);
119
+ sendJson(res, 200, {
120
+ ...policy,
121
+ scope: policy.scope,
122
+ yaml: yamlStr,
123
+ });
124
+ return;
125
+ }
126
+ // PATCH /api/policies/:name - Toggle enabled/disabled
127
+ if (method === 'PATCH' && policyName) {
128
+ const bodyStr = await readBody(req);
129
+ let body;
130
+ try {
131
+ body = JSON.parse(bodyStr);
132
+ }
133
+ catch {
134
+ sendJson(res, 400, { error: { message: 'Invalid JSON body', code: 'invalid_request' } });
135
+ return;
136
+ }
137
+ if (typeof body.enabled !== 'boolean') {
138
+ sendJson(res, 400, { error: { message: 'Body must include "enabled" as a boolean', code: 'invalid_request' } });
139
+ return;
140
+ }
141
+ if (!configPoliciesFile) {
142
+ sendJson(res, 500, { error: { message: 'No policies file configured', code: 'no_config' } });
143
+ return;
144
+ }
145
+ ensurePolicyFile(configPoliciesFile, policyEngine.getPolicies());
146
+ // Read and parse the YAML file using Document API to preserve formatting
147
+ const fileContent = fs.readFileSync(configPoliciesFile, 'utf8');
148
+ const doc = parseDocument(fileContent);
149
+ const policiesSeq = getPoliciesSeq(doc);
150
+ if (!policiesSeq) {
151
+ sendJson(res, 500, { error: { message: 'Invalid policy file structure', code: 'internal_error' } });
152
+ return;
153
+ }
154
+ const idx = findPolicyIndex(policiesSeq, policyName);
155
+ if (idx === -1) {
156
+ sendJson(res, 404, { error: { message: `Policy not found: ${policyName}`, code: 'not_found' } });
157
+ return;
158
+ }
159
+ // Update the enabled field in the YAML document
160
+ const policyMap = policiesSeq.items[idx];
161
+ const enabledPair = policyMap.items.find((pair) => isScalar(pair.key) && pair.key.value === 'enabled');
162
+ if (enabledPair) {
163
+ enabledPair.value = doc.createNode(body.enabled);
164
+ }
165
+ else {
166
+ policyMap.add(doc.createPair('enabled', body.enabled));
167
+ }
168
+ // Write back to disk and reload
169
+ fs.writeFileSync(configPoliciesFile, doc.toString(), 'utf8');
170
+ policyEngine.loadFromFile(configPoliciesFile);
171
+ // Return the updated policy summary
172
+ const updatedPolicy = policyEngine.getPolicies().find((p) => p.name === policyName);
173
+ if (updatedPolicy) {
174
+ sendJson(res, 200, toSummary(updatedPolicy));
175
+ }
176
+ else {
177
+ sendJson(res, 200, { name: policyName, enabled: body.enabled });
178
+ }
179
+ return;
180
+ }
181
+ // PUT /api/policies/:name - Update policy YAML
182
+ if (method === 'PUT' && policyName) {
183
+ const bodyStr = await readBody(req);
184
+ let body;
185
+ try {
186
+ body = JSON.parse(bodyStr);
187
+ }
188
+ catch {
189
+ sendJson(res, 400, { error: { message: 'Invalid JSON body', code: 'invalid_request' } });
190
+ return;
191
+ }
192
+ if (typeof body.yaml !== 'string') {
193
+ sendJson(res, 400, { error: { message: 'Body must include "yaml" as a string', code: 'invalid_request' } });
194
+ return;
195
+ }
196
+ // Validate the submitted YAML
197
+ const parseResult = parsePolicies(body.yaml);
198
+ if (!parseResult.success) {
199
+ sendJson(res, 400, { errors: parseResult.errors });
200
+ return;
201
+ }
202
+ if (parseResult.policies.length !== 1) {
203
+ sendJson(res, 400, { error: { message: 'Submitted YAML must contain exactly one policy', code: 'invalid_request' } });
204
+ return;
205
+ }
206
+ if (!configPoliciesFile) {
207
+ sendJson(res, 500, { error: { message: 'No policies file configured', code: 'no_config' } });
208
+ return;
209
+ }
210
+ ensurePolicyFile(configPoliciesFile, policyEngine.getPolicies());
211
+ // Read the full policy file from disk
212
+ const fileContent = fs.readFileSync(configPoliciesFile, 'utf8');
213
+ const doc = parseDocument(fileContent);
214
+ const policiesSeq = getPoliciesSeq(doc);
215
+ if (!policiesSeq) {
216
+ sendJson(res, 500, { error: { message: 'Invalid policy file structure', code: 'internal_error' } });
217
+ return;
218
+ }
219
+ const idx = findPolicyIndex(policiesSeq, policyName);
220
+ if (idx === -1) {
221
+ sendJson(res, 404, { error: { message: `Policy not found: ${policyName}`, code: 'not_found' } });
222
+ return;
223
+ }
224
+ // Parse the new policy YAML to get the raw node
225
+ const newPolicyDoc = parseDocument(body.yaml);
226
+ const newPoliciesSeq = getPoliciesSeq(newPolicyDoc);
227
+ if (!newPoliciesSeq || newPoliciesSeq.items.length === 0) {
228
+ sendJson(res, 400, { error: { message: 'Could not parse policy from submitted YAML', code: 'invalid_request' } });
229
+ return;
230
+ }
231
+ // Replace the policy entry
232
+ policiesSeq.items[idx] = newPoliciesSeq.items[0];
233
+ // Write back and reload
234
+ fs.writeFileSync(configPoliciesFile, doc.toString(), 'utf8');
235
+ policyEngine.loadFromFile(configPoliciesFile);
236
+ const updatedPolicy = policyEngine.getPolicies().find((p) => p.name === parseResult.policies[0].name);
237
+ if (updatedPolicy) {
238
+ sendJson(res, 200, toSummary(updatedPolicy));
239
+ }
240
+ else {
241
+ sendJson(res, 200, toSummary(parseResult.policies[0]));
242
+ }
243
+ return;
244
+ }
245
+ // POST /api/policies - Create new policy
246
+ if (method === 'POST' && !policyName) {
247
+ const bodyStr = await readBody(req);
248
+ let body;
249
+ try {
250
+ body = JSON.parse(bodyStr);
251
+ }
252
+ catch {
253
+ sendJson(res, 400, { error: { message: 'Invalid JSON body', code: 'invalid_request' } });
254
+ return;
255
+ }
256
+ if (typeof body.yaml !== 'string') {
257
+ sendJson(res, 400, { error: { message: 'Body must include "yaml" as a string', code: 'invalid_request' } });
258
+ return;
259
+ }
260
+ // Validate the submitted YAML
261
+ const parseResult = parsePolicies(body.yaml);
262
+ if (!parseResult.success) {
263
+ sendJson(res, 400, { errors: parseResult.errors });
264
+ return;
265
+ }
266
+ if (parseResult.policies.length !== 1) {
267
+ sendJson(res, 400, { error: { message: 'Submitted YAML must contain exactly one policy', code: 'invalid_request' } });
268
+ return;
269
+ }
270
+ const newPolicy = parseResult.policies[0];
271
+ // Check for name conflict
272
+ const existing = policyEngine.getPolicies().find((p) => p.name === newPolicy.name);
273
+ if (existing) {
274
+ sendJson(res, 400, { error: { message: `Policy with name "${newPolicy.name}" already exists`, code: 'name_conflict' } });
275
+ return;
276
+ }
277
+ if (!configPoliciesFile) {
278
+ sendJson(res, 500, { error: { message: 'No policies file configured', code: 'no_config' } });
279
+ return;
280
+ }
281
+ ensurePolicyFile(configPoliciesFile, policyEngine.getPolicies());
282
+ // Read the full policy file from disk
283
+ const fileContent = fs.readFileSync(configPoliciesFile, 'utf8');
284
+ const doc = parseDocument(fileContent);
285
+ const policiesSeq = getPoliciesSeq(doc);
286
+ if (!policiesSeq) {
287
+ sendJson(res, 500, { error: { message: 'Invalid policy file structure', code: 'internal_error' } });
288
+ return;
289
+ }
290
+ // Parse the new policy YAML to get the raw node
291
+ const newPolicyDoc = parseDocument(body.yaml);
292
+ const newPoliciesSeq = getPoliciesSeq(newPolicyDoc);
293
+ if (!newPoliciesSeq || newPoliciesSeq.items.length === 0) {
294
+ sendJson(res, 400, { error: { message: 'Could not parse policy from submitted YAML', code: 'invalid_request' } });
295
+ return;
296
+ }
297
+ // Append the new policy entry
298
+ policiesSeq.add(newPoliciesSeq.items[0]);
299
+ // Write back and reload
300
+ fs.writeFileSync(configPoliciesFile, doc.toString(), 'utf8');
301
+ policyEngine.loadFromFile(configPoliciesFile);
302
+ const createdPolicy = policyEngine.getPolicies().find((p) => p.name === newPolicy.name);
303
+ if (createdPolicy) {
304
+ sendJson(res, 201, toSummary(createdPolicy));
305
+ }
306
+ else {
307
+ sendJson(res, 201, toSummary(newPolicy));
308
+ }
309
+ return;
310
+ }
311
+ // DELETE /api/policies/:name - Remove a policy
312
+ if (method === 'DELETE' && policyName) {
313
+ if (!configPoliciesFile) {
314
+ sendJson(res, 500, { error: { message: 'No policies file configured', code: 'no_config' } });
315
+ return;
316
+ }
317
+ ensurePolicyFile(configPoliciesFile, policyEngine.getPolicies());
318
+ const fileContent = fs.readFileSync(configPoliciesFile, 'utf8');
319
+ const doc = parseDocument(fileContent);
320
+ const policiesSeq = getPoliciesSeq(doc);
321
+ if (!policiesSeq) {
322
+ sendJson(res, 500, { error: { message: 'Invalid policy file structure', code: 'internal_error' } });
323
+ return;
324
+ }
325
+ const idx = findPolicyIndex(policiesSeq, policyName);
326
+ if (idx === -1) {
327
+ sendJson(res, 404, { error: { message: `Policy not found: ${policyName}`, code: 'not_found' } });
328
+ return;
329
+ }
330
+ // Remove the policy entry
331
+ policiesSeq.items.splice(idx, 1);
332
+ // Write back and reload
333
+ fs.writeFileSync(configPoliciesFile, doc.toString(), 'utf8');
334
+ policyEngine.loadFromFile(configPoliciesFile);
335
+ sendJson(res, 200, { success: true });
336
+ return;
337
+ }
338
+ // Method not allowed
339
+ sendJson(res, 405, { error: { message: `Method ${method} not allowed`, code: 'method_not_allowed' } });
340
+ }
341
+ catch (err) {
342
+ const message = err instanceof Error ? err.message : 'Unknown error';
343
+ console.error('[policy-api] Error:', message);
344
+ sendJson(res, 500, { error: { message: 'Internal server error', code: 'internal_error' } });
345
+ }
346
+ }
347
+ //# sourceMappingURL=policy-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-api.js","sourceRoot":"","sources":["../src/policy-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * PolicyEngine — core runtime component for evaluating policies against requests.
3
+ *
4
+ * Loads policies into memory and evaluates them synchronously per request.
5
+ * Supports scoping hierarchy (global > per-agent > per-target) with
6
+ * most-restrictive-wins precedence: if any matching policy denies, the
7
+ * request is denied.
8
+ *
9
+ * Phase 7/8 evaluators:
10
+ * - Block: multi-criteria AND matching with optional regex mode
11
+ * - Rate limit: per-agent per-policy sliding window with dynamic retry_after
12
+ * - Budget limit: integrates with CostAggregator for period-based spend checks
13
+ * - Content filter: PII/pattern scanning on JSON string values
14
+ * - Time window: schedule-based access control with timezone support
15
+ * - Model route: smart model routing with criteria matching, aliases, and safeguards
16
+ *
17
+ * Performance target: 100 policies in <5ms (ADR-006, ADR-013).
18
+ */
19
+ import { CostAggregator } from './cost-aggregator.js';
20
+ import type { Policy, PolicyType, PolicyRequestContext, PolicyEvaluationResult, PolicyParseResult } from './policy-types.js';
21
+ /** Evaluation options for testability (e.g., injectable timestamp). */
22
+ export interface EvaluateOptions {
23
+ /** Current timestamp in milliseconds (injectable for testing rate limit windows). */
24
+ now?: number;
25
+ }
26
+ /**
27
+ * Infer the action type from an API endpoint path.
28
+ *
29
+ * Maps common OpenAI-style paths to semantic action types.
30
+ * Order matters: /chat/completions must be checked before /completions.
31
+ */
32
+ export declare function inferActionType(path: string): string;
33
+ export declare class PolicyEngine {
34
+ private policies;
35
+ private rateLimitStore;
36
+ private costAggregator?;
37
+ /**
38
+ * Set the CostAggregator dependency for budget limit evaluation.
39
+ * If not set, budget limit policies will allow all requests.
40
+ */
41
+ setCostAggregator(aggregator: CostAggregator): void;
42
+ /**
43
+ * Parse a YAML string and load the resulting policies into memory.
44
+ * Returns the parse result so callers can inspect errors/warnings.
45
+ */
46
+ loadFromYaml(yamlString: string): PolicyParseResult;
47
+ /**
48
+ * Read and parse a YAML policy file from disk, loading the resulting policies
49
+ * into memory. Returns the parse result so callers can inspect errors/warnings.
50
+ */
51
+ loadFromFile(filePath: string): PolicyParseResult;
52
+ /**
53
+ * Load pre-parsed policies directly into memory.
54
+ * Useful for testing and programmatic policy creation.
55
+ */
56
+ loadFromPolicies(policies: Policy[]): void;
57
+ /** Remove all loaded policies and reset rate limit state. */
58
+ clearPolicies(): void;
59
+ /** Return all loaded policies. */
60
+ getPolicies(): Policy[];
61
+ /** Return policies filtered by type. */
62
+ getPoliciesByType(type: PolicyType): Policy[];
63
+ /**
64
+ * Evaluate all matching policies against a request context.
65
+ *
66
+ * 1. Filter to enabled policies
67
+ * 2. Check scope match for each
68
+ * 3. Evaluate matching policies with type-specific evaluators
69
+ * 4. Apply most-restrictive-wins: any deny -> overall denied
70
+ * 5. Return structured result with timing
71
+ *
72
+ * @param context - The request context to evaluate against
73
+ * @param options - Optional evaluation settings (e.g., injectable timestamp for testing)
74
+ */
75
+ evaluate(context: PolicyRequestContext, options?: EvaluateOptions): PolicyEvaluationResult;
76
+ }