@red-codes/policy 1.0.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.
@@ -0,0 +1,573 @@
1
+ // YAML policy loader — parses simple YAML policy files into LoadedPolicy format.
2
+ // Supports the subset of YAML needed for AgentGuard policy definitions.
3
+ // No external dependencies — minimal line-based parser for constrained format.
4
+ function trimQuotes(s) {
5
+ if ((s.startsWith('"') && s.endsWith('"')) || (s.startsWith("'") && s.endsWith("'"))) {
6
+ return s.slice(1, -1);
7
+ }
8
+ return s;
9
+ }
10
+ function parseValue(raw) {
11
+ const s = raw.trim();
12
+ if (s === 'true')
13
+ return true;
14
+ if (s === 'false')
15
+ return false;
16
+ if (s === 'null' || s === '~')
17
+ return '';
18
+ if (/^-?\d+$/.test(s))
19
+ return parseInt(s, 10);
20
+ if (/^-?\d+\.\d+$/.test(s))
21
+ return parseFloat(s);
22
+ return trimQuotes(s);
23
+ }
24
+ function parseInlineArray(raw) {
25
+ const trimmed = raw.trim();
26
+ if (!trimmed.startsWith('[') || !trimmed.endsWith(']'))
27
+ return [];
28
+ const inner = trimmed.slice(1, -1);
29
+ return inner
30
+ .split(',')
31
+ .map((s) => trimQuotes(s.trim()))
32
+ .filter((s) => s.length > 0);
33
+ }
34
+ function indentLevel(line) {
35
+ const match = line.match(/^(\s*)/);
36
+ return match ? match[1].length : 0;
37
+ }
38
+ function applyPersonaField(persona, key, val) {
39
+ switch (key) {
40
+ case 'trustTier': {
41
+ const arr = parseInlineArray(val);
42
+ if (arr.length > 0)
43
+ persona.trustTier = arr;
44
+ else if (val)
45
+ persona.trustTier = [trimQuotes(val)];
46
+ break;
47
+ }
48
+ case 'role': {
49
+ const arr = parseInlineArray(val);
50
+ if (arr.length > 0)
51
+ persona.role = arr;
52
+ else if (val)
53
+ persona.role = [trimQuotes(val)];
54
+ break;
55
+ }
56
+ case 'autonomy': {
57
+ const arr = parseInlineArray(val);
58
+ if (arr.length > 0)
59
+ persona.autonomy = arr;
60
+ else if (val)
61
+ persona.autonomy = [trimQuotes(val)];
62
+ break;
63
+ }
64
+ case 'riskTolerance': {
65
+ const arr = parseInlineArray(val);
66
+ if (arr.length > 0)
67
+ persona.riskTolerance = arr;
68
+ else if (val)
69
+ persona.riskTolerance = [trimQuotes(val)];
70
+ break;
71
+ }
72
+ case 'tags': {
73
+ const arr = parseInlineArray(val);
74
+ if (arr.length > 0)
75
+ persona.tags = arr;
76
+ else if (val)
77
+ persona.tags = [trimQuotes(val)];
78
+ break;
79
+ }
80
+ }
81
+ }
82
+ function applyForecastField(forecast, key, val) {
83
+ switch (key) {
84
+ case 'testRiskScore': {
85
+ const n = parseValue(val);
86
+ if (typeof n === 'number')
87
+ forecast.testRiskScore = n;
88
+ break;
89
+ }
90
+ case 'blastRadiusScore': {
91
+ const n = parseValue(val);
92
+ if (typeof n === 'number')
93
+ forecast.blastRadiusScore = n;
94
+ break;
95
+ }
96
+ case 'predictedFileCount': {
97
+ const n = parseValue(val);
98
+ if (typeof n === 'number')
99
+ forecast.predictedFileCount = n;
100
+ break;
101
+ }
102
+ case 'dependencyCount': {
103
+ const n = parseValue(val);
104
+ if (typeof n === 'number')
105
+ forecast.dependencyCount = n;
106
+ break;
107
+ }
108
+ case 'riskLevel': {
109
+ const VALID_RISK_LEVELS = ['low', 'medium', 'high'];
110
+ const arr = parseInlineArray(val);
111
+ if (arr.length > 0) {
112
+ const filtered = arr.filter((v) => VALID_RISK_LEVELS.includes(v));
113
+ if (filtered.length > 0)
114
+ forecast.riskLevel = filtered;
115
+ }
116
+ else if (val) {
117
+ const trimmed = trimQuotes(val);
118
+ if (VALID_RISK_LEVELS.includes(trimmed)) {
119
+ forecast.riskLevel = [trimmed];
120
+ }
121
+ }
122
+ break;
123
+ }
124
+ }
125
+ }
126
+ function applyTopLevelPersonaField(persona, key, val) {
127
+ switch (key) {
128
+ case 'model':
129
+ persona.model = trimQuotes(val);
130
+ break;
131
+ case 'provider':
132
+ persona.provider = trimQuotes(val);
133
+ break;
134
+ case 'runtime':
135
+ persona.runtime = trimQuotes(val);
136
+ break;
137
+ case 'version':
138
+ persona.version = trimQuotes(val);
139
+ break;
140
+ case 'trustTier':
141
+ persona.trustTier = trimQuotes(val);
142
+ break;
143
+ case 'autonomy':
144
+ persona.autonomy = trimQuotes(val);
145
+ break;
146
+ case 'riskTolerance':
147
+ persona.riskTolerance = trimQuotes(val);
148
+ break;
149
+ case 'role':
150
+ persona.role = trimQuotes(val);
151
+ break;
152
+ case 'tags': {
153
+ const arr = parseInlineArray(val);
154
+ if (arr.length > 0)
155
+ persona.tags = arr;
156
+ else if (val)
157
+ persona.tags = [trimQuotes(val)];
158
+ break;
159
+ }
160
+ }
161
+ }
162
+ export function parseYamlPolicy(yaml) {
163
+ const lines = yaml.split('\n');
164
+ const result = {};
165
+ const rules = [];
166
+ let currentRule = null;
167
+ let inRules = false;
168
+ let inBranches = false;
169
+ let inActionArray = false;
170
+ let inExtends = false;
171
+ let inDisabledInvariants = false;
172
+ let inTopLevelPersona = false;
173
+ let inInvariants = false;
174
+ let inRulePersona = false;
175
+ let inRuleForecast = false;
176
+ let ruleStartIndent = 0;
177
+ for (const rawLine of lines) {
178
+ const line = rawLine.replace(/\r$/, '');
179
+ // Skip blank lines and comments
180
+ if (!line.trim() || line.trim().startsWith('#'))
181
+ continue;
182
+ const indent = indentLevel(line);
183
+ const trimmed = line.trim();
184
+ // Top-level keys (indent 0)
185
+ if (indent === 0) {
186
+ inRules = false;
187
+ inBranches = false;
188
+ inExtends = false;
189
+ inDisabledInvariants = false;
190
+ inTopLevelPersona = false;
191
+ inInvariants = false;
192
+ inRulePersona = false;
193
+ if (currentRule) {
194
+ rules.push(currentRule);
195
+ currentRule = null;
196
+ }
197
+ const colonIdx = trimmed.indexOf(':');
198
+ if (colonIdx === -1)
199
+ continue;
200
+ const key = trimmed.slice(0, colonIdx).trim();
201
+ const val = trimmed.slice(colonIdx + 1).trim();
202
+ switch (key) {
203
+ case 'id':
204
+ result.id = trimQuotes(val);
205
+ break;
206
+ case 'name':
207
+ result.name = trimQuotes(val);
208
+ break;
209
+ case 'description':
210
+ result.description = trimQuotes(val);
211
+ break;
212
+ case 'severity':
213
+ result.severity = parseInt(val, 10);
214
+ break;
215
+ case 'version':
216
+ result.version = trimQuotes(val);
217
+ break;
218
+ case 'agentguardVersion':
219
+ result.agentguardVersion = trimQuotes(val);
220
+ break;
221
+ case 'extends':
222
+ if (val) {
223
+ // Inline array: extends: ["@agentguard/security-pack", "./custom"]
224
+ const arr = parseInlineArray(val);
225
+ if (arr.length > 0) {
226
+ result.extends = arr;
227
+ }
228
+ }
229
+ else {
230
+ // Multi-line array follows
231
+ inExtends = true;
232
+ result.extends = [];
233
+ }
234
+ break;
235
+ case 'disabledInvariants':
236
+ if (val) {
237
+ // Inline array: disabledInvariants: [no-cicd-config-modification]
238
+ const diArr = parseInlineArray(val);
239
+ if (diArr.length > 0) {
240
+ result.disabledInvariants = diArr;
241
+ }
242
+ }
243
+ else {
244
+ // Multi-line array follows
245
+ inDisabledInvariants = true;
246
+ result.disabledInvariants = [];
247
+ }
248
+ break;
249
+ case 'persona':
250
+ inTopLevelPersona = true;
251
+ result.persona = result.persona || {};
252
+ break;
253
+ case 'rules':
254
+ inRules = true;
255
+ break;
256
+ case 'mode':
257
+ if (val === 'monitor' || val === 'enforce') {
258
+ result.mode = val;
259
+ }
260
+ break;
261
+ case 'pack':
262
+ result.pack = trimQuotes(val);
263
+ break;
264
+ case 'invariants':
265
+ if (!val) {
266
+ inInvariants = true;
267
+ result.invariantModes = {};
268
+ }
269
+ break;
270
+ }
271
+ continue;
272
+ }
273
+ // Inside top-level persona block
274
+ if (inTopLevelPersona && !inRules) {
275
+ const colonIdx = trimmed.indexOf(':');
276
+ if (colonIdx !== -1) {
277
+ const key = trimmed.slice(0, colonIdx).trim();
278
+ const val = trimmed.slice(colonIdx + 1).trim();
279
+ result.persona = result.persona || {};
280
+ applyTopLevelPersonaField(result.persona, key, val);
281
+ }
282
+ continue;
283
+ }
284
+ // Inside invariants block (per-invariant mode overrides)
285
+ if (inInvariants && !inRules) {
286
+ const colonIdx = trimmed.indexOf(':');
287
+ if (colonIdx !== -1) {
288
+ const invId = trimmed.slice(0, colonIdx).trim();
289
+ const invMode = trimQuotes(trimmed.slice(colonIdx + 1).trim());
290
+ if (invMode === 'monitor' || invMode === 'enforce') {
291
+ result.invariantModes = result.invariantModes || {};
292
+ result.invariantModes[invId] = invMode;
293
+ }
294
+ }
295
+ continue;
296
+ }
297
+ // Inside extends array (multi-line)
298
+ if (inExtends && trimmed.startsWith('- ')) {
299
+ result.extends = result.extends || [];
300
+ result.extends.push(trimQuotes(trimmed.slice(2).trim()));
301
+ continue;
302
+ }
303
+ // Inside disabledInvariants array (multi-line)
304
+ if (inDisabledInvariants && trimmed.startsWith('- ')) {
305
+ result.disabledInvariants = result.disabledInvariants || [];
306
+ result.disabledInvariants.push(trimQuotes(trimmed.slice(2).trim()));
307
+ continue;
308
+ }
309
+ // Inside rules array
310
+ if (inRules) {
311
+ // Continuation of action array (must check before new-rule detection)
312
+ if (inActionArray && trimmed.startsWith('- ') && currentRule && indent > ruleStartIndent) {
313
+ if (!Array.isArray(currentRule.action)) {
314
+ currentRule.action = [];
315
+ }
316
+ currentRule.action.push(trimQuotes(trimmed.slice(2).trim()));
317
+ continue;
318
+ }
319
+ // New rule entry (- action: ...)
320
+ if (trimmed.startsWith('- ')) {
321
+ inActionArray = false;
322
+ if (currentRule)
323
+ rules.push(currentRule);
324
+ currentRule = {};
325
+ inBranches = false;
326
+ inRulePersona = false;
327
+ inRuleForecast = false;
328
+ ruleStartIndent = indent;
329
+ const rest = trimmed.slice(2).trim();
330
+ const colonIdx = rest.indexOf(':');
331
+ if (colonIdx !== -1) {
332
+ const key = rest.slice(0, colonIdx).trim();
333
+ const val = rest.slice(colonIdx + 1).trim();
334
+ if (key === 'action' && !val) {
335
+ inActionArray = true;
336
+ currentRule.action = [];
337
+ continue;
338
+ }
339
+ applyRuleField(currentRule, key, val);
340
+ }
341
+ continue;
342
+ }
343
+ // Inside rule-level persona block
344
+ if (inRulePersona && currentRule) {
345
+ const colonIdx = trimmed.indexOf(':');
346
+ if (colonIdx !== -1) {
347
+ const key = trimmed.slice(0, colonIdx).trim();
348
+ const val = trimmed.slice(colonIdx + 1).trim();
349
+ currentRule.persona = currentRule.persona || {};
350
+ applyPersonaField(currentRule.persona, key, val);
351
+ }
352
+ continue;
353
+ }
354
+ // Inside rule-level forecast block
355
+ if (inRuleForecast && currentRule) {
356
+ const colonIdx = trimmed.indexOf(':');
357
+ if (colonIdx !== -1) {
358
+ const key = trimmed.slice(0, colonIdx).trim();
359
+ const val = trimmed.slice(colonIdx + 1).trim();
360
+ currentRule.forecast = currentRule.forecast || {};
361
+ applyForecastField(currentRule.forecast, key, val);
362
+ }
363
+ continue;
364
+ }
365
+ // Continuation of branches array
366
+ if (inBranches && trimmed.startsWith('- ') && currentRule) {
367
+ currentRule.branches = currentRule.branches || [];
368
+ currentRule.branches.push(trimQuotes(trimmed.slice(2).trim()));
369
+ continue;
370
+ }
371
+ // Rule property
372
+ if (currentRule) {
373
+ inBranches = false;
374
+ inActionArray = false;
375
+ inRuleForecast = false;
376
+ const colonIdx = trimmed.indexOf(':');
377
+ if (colonIdx !== -1) {
378
+ const key = trimmed.slice(0, colonIdx).trim();
379
+ const val = trimmed.slice(colonIdx + 1).trim();
380
+ if (key === 'action' && !val) {
381
+ inActionArray = true;
382
+ currentRule.action = [];
383
+ continue;
384
+ }
385
+ if (key === 'branches' && !val) {
386
+ inBranches = true;
387
+ currentRule.branches = [];
388
+ continue;
389
+ }
390
+ if (key === 'persona' && !val) {
391
+ inRulePersona = true;
392
+ currentRule.persona = {};
393
+ continue;
394
+ }
395
+ if (key === 'forecast' && !val) {
396
+ inRuleForecast = true;
397
+ inRulePersona = false;
398
+ currentRule.forecast = {};
399
+ continue;
400
+ }
401
+ applyRuleField(currentRule, key, val);
402
+ }
403
+ }
404
+ }
405
+ }
406
+ if (currentRule)
407
+ rules.push(currentRule);
408
+ if (rules.length > 0)
409
+ result.rules = rules;
410
+ return result;
411
+ }
412
+ function applyRuleField(rule, key, val) {
413
+ switch (key) {
414
+ case 'action': {
415
+ const arr = parseInlineArray(val);
416
+ if (arr.length > 0) {
417
+ rule.action = arr;
418
+ }
419
+ else {
420
+ rule.action = trimQuotes(val);
421
+ }
422
+ break;
423
+ }
424
+ case 'effect':
425
+ rule.effect = trimQuotes(val);
426
+ break;
427
+ case 'target':
428
+ rule.target = trimQuotes(val);
429
+ break;
430
+ case 'reason':
431
+ rule.reason = trimQuotes(val);
432
+ break;
433
+ case 'limit': {
434
+ const n = parseValue(val);
435
+ if (typeof n === 'number')
436
+ rule.limit = n;
437
+ break;
438
+ }
439
+ case 'requireTests':
440
+ rule.requireTests = val === 'true';
441
+ break;
442
+ case 'requireFormat':
443
+ rule.requireFormat = val === 'true';
444
+ break;
445
+ case 'requireWorktree':
446
+ rule.requireWorktree = val === 'true';
447
+ break;
448
+ case 'branches': {
449
+ const arr = parseInlineArray(val);
450
+ if (arr.length > 0)
451
+ rule.branches = arr;
452
+ break;
453
+ }
454
+ case 'intervention':
455
+ rule.intervention = trimQuotes(val);
456
+ break;
457
+ }
458
+ }
459
+ function convertRule(yamlRule) {
460
+ const conditions = {};
461
+ let hasConditions = false;
462
+ if (yamlRule.target) {
463
+ conditions.scope = [yamlRule.target];
464
+ hasConditions = true;
465
+ }
466
+ if (yamlRule.branches) {
467
+ conditions.branches = yamlRule.branches;
468
+ hasConditions = true;
469
+ }
470
+ if (yamlRule.limit !== undefined) {
471
+ conditions.limit = yamlRule.limit;
472
+ hasConditions = true;
473
+ }
474
+ if (yamlRule.requireTests !== undefined) {
475
+ conditions.requireTests = yamlRule.requireTests;
476
+ hasConditions = true;
477
+ }
478
+ if (yamlRule.requireFormat !== undefined) {
479
+ conditions.requireFormat = yamlRule.requireFormat;
480
+ hasConditions = true;
481
+ }
482
+ if (yamlRule.requireWorktree !== undefined) {
483
+ conditions.requireWorktree = yamlRule.requireWorktree;
484
+ hasConditions = true;
485
+ }
486
+ if (yamlRule.persona) {
487
+ conditions.persona = yamlRule.persona;
488
+ hasConditions = true;
489
+ }
490
+ if (yamlRule.forecast) {
491
+ conditions.forecast = yamlRule.forecast;
492
+ hasConditions = true;
493
+ }
494
+ let action;
495
+ if (Array.isArray(yamlRule.action)) {
496
+ action = yamlRule.action.length > 0 ? yamlRule.action : '*';
497
+ }
498
+ else {
499
+ action = yamlRule.action || '*';
500
+ }
501
+ const rule = {
502
+ action,
503
+ effect: yamlRule.effect || 'deny',
504
+ conditions: hasConditions ? conditions : undefined,
505
+ reason: yamlRule.reason,
506
+ };
507
+ if (yamlRule.intervention) {
508
+ rule.intervention = yamlRule.intervention;
509
+ }
510
+ return rule;
511
+ }
512
+ /** Convert a YamlPersonaDef to an AgentPersona (for policy defaults). */
513
+ export function yamlPersonaToAgentPersona(def) {
514
+ const persona = {};
515
+ const modelMeta = {};
516
+ if (def.model)
517
+ modelMeta.model = def.model;
518
+ if (def.provider)
519
+ modelMeta.provider = def.provider;
520
+ if (def.runtime)
521
+ modelMeta.runtime = def.runtime;
522
+ if (def.version)
523
+ modelMeta.version = def.version;
524
+ if (Object.keys(modelMeta).length > 0)
525
+ persona.modelMeta = modelMeta;
526
+ if (def.trustTier)
527
+ persona.trustTier = def.trustTier;
528
+ if (def.autonomy)
529
+ persona.autonomy = def.autonomy;
530
+ if (def.riskTolerance)
531
+ persona.riskTolerance = def.riskTolerance;
532
+ if (def.role)
533
+ persona.role = def.role;
534
+ if (def.tags)
535
+ persona.tags = def.tags;
536
+ return persona;
537
+ }
538
+ export function loadYamlPolicy(yaml, defaultId) {
539
+ const def = parseYamlPolicy(yaml);
540
+ const policy = {
541
+ id: def.id || defaultId || 'yaml-policy',
542
+ name: def.name || 'YAML Policy',
543
+ description: def.description,
544
+ rules: (def.rules || []).map(convertRule),
545
+ severity: def.severity ?? 3,
546
+ };
547
+ if (def.version) {
548
+ policy.version = def.version;
549
+ }
550
+ if (def.agentguardVersion) {
551
+ policy.agentguardVersion = def.agentguardVersion;
552
+ }
553
+ if (def.persona) {
554
+ policy.persona = yamlPersonaToAgentPersona(def.persona);
555
+ }
556
+ if (def.disabledInvariants && def.disabledInvariants.length > 0) {
557
+ policy.disabledInvariants = def.disabledInvariants;
558
+ }
559
+ if (def.mode) {
560
+ policy.mode = def.mode;
561
+ }
562
+ if (def.pack) {
563
+ policy.pack = def.pack;
564
+ }
565
+ if (def.invariantModes && Object.keys(def.invariantModes).length > 0) {
566
+ policy.invariantModes = def.invariantModes;
567
+ }
568
+ return policy;
569
+ }
570
+ export function loadYamlPolicies(yaml) {
571
+ return [loadYamlPolicy(yaml)];
572
+ }
573
+ //# sourceMappingURL=yaml-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-loader.js","sourceRoot":"","sources":["../src/yaml-loader.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@red-codes/policy",
3
+ "version": "1.0.0",
4
+ "description": "Policy evaluation and loading for AgentGuard",
5
+ "type": "module",
6
+ "license": "Apache-2.0",
7
+ "private": false,
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/index.js",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist/",
18
+ "LICENSE",
19
+ "README.md"
20
+ ],
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/AgentGuardHQ/agentguard",
24
+ "directory": "packages/policy"
25
+ },
26
+ "dependencies": {
27
+ "@red-codes/matchers": "1.0.0",
28
+ "@red-codes/core": "1.0.0"
29
+ },
30
+ "devDependencies": {
31
+ "@red-codes/events": "1.0.0"
32
+ },
33
+ "scripts": {
34
+ "build": "tsc -b",
35
+ "test": "vitest run",
36
+ "test:coverage": "vitest run --coverage",
37
+ "lint": "eslint src/",
38
+ "ts:check": "tsc --noEmit",
39
+ "clean": "rm -rf dist"
40
+ }
41
+ }