@peac/policy-kit 0.10.9 → 0.10.10

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/dist/types.js DELETED
@@ -1,348 +0,0 @@
1
- "use strict";
2
- /**
3
- * PEAC Policy Kit Types
4
- *
5
- * Deterministic policy format for CAL semantics.
6
- * Version: peac-policy/0.1
7
- *
8
- * Design principles:
9
- * - No scripting, no dynamic code
10
- * - Deterministic, auditable, side-effect free
11
- * - First-match-wins rule semantics
12
- *
13
- * @packageDocumentation
14
- */
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.EnforcementProfileSchema = exports.PolicyConstraintsSchema = exports.ProfileDefinitionSchema = exports.ProfileParameterSchema = exports.DecisionRequirementsSchema = exports.RateLimitConfigSchema = exports.PolicyDocumentSchema = exports.PolicyDefaultsSchema = exports.PolicyRuleSchema = exports.SubjectMatcherSchema = exports.POLICY_VERSION = void 0;
17
- exports.parseRateLimit = parseRateLimit;
18
- exports.formatRateLimit = formatRateLimit;
19
- const zod_1 = require("zod");
20
- const schema_1 = require("@peac/schema");
21
- /**
22
- * Policy format version
23
- */
24
- exports.POLICY_VERSION = 'peac-policy/0.1';
25
- /**
26
- * Subject matcher - criteria for matching a subject
27
- *
28
- * All fields are optional (omitted = any/wildcard).
29
- * When multiple fields are present, all must match (AND logic).
30
- */
31
- exports.SubjectMatcherSchema = zod_1.z
32
- .object({
33
- /** Match by subject type(s) - single type or array */
34
- type: zod_1.z.union([schema_1.SubjectTypeSchema, zod_1.z.array(schema_1.SubjectTypeSchema)]).optional(),
35
- /** Match by label(s) - subject must have ALL specified labels */
36
- labels: zod_1.z.array(zod_1.z.string().min(1)).optional(),
37
- /** Match by subject ID pattern (exact match or prefix with *) */
38
- id: zod_1.z.string().min(1).optional(),
39
- })
40
- .strict();
41
- /**
42
- * Policy rule - a single rule in the policy
43
- *
44
- * Evaluated in order; first match wins.
45
- */
46
- exports.PolicyRuleSchema = zod_1.z
47
- .object({
48
- /** Rule name (for debugging/auditing) */
49
- name: zod_1.z.string().min(1),
50
- /** Subject matcher (omit for any subject) */
51
- subject: exports.SubjectMatcherSchema.optional(),
52
- /** Purpose(s) this rule applies to - single purpose or array */
53
- purpose: zod_1.z.union([schema_1.ControlPurposeSchema, zod_1.z.array(schema_1.ControlPurposeSchema)]).optional(),
54
- /** Licensing mode(s) this rule applies to */
55
- licensing_mode: zod_1.z
56
- .union([schema_1.ControlLicensingModeSchema, zod_1.z.array(schema_1.ControlLicensingModeSchema)])
57
- .optional(),
58
- /** Decision if rule matches */
59
- decision: schema_1.ControlDecisionSchema,
60
- /** Reason for decision (for audit trail) */
61
- reason: zod_1.z.string().optional(),
62
- })
63
- .strict();
64
- /**
65
- * Policy defaults - fallback values when no rule matches
66
- */
67
- exports.PolicyDefaultsSchema = zod_1.z
68
- .object({
69
- /** Default decision when no rule matches */
70
- decision: schema_1.ControlDecisionSchema,
71
- /** Default reason for audit trail */
72
- reason: zod_1.z.string().optional(),
73
- })
74
- .strict();
75
- /**
76
- * Complete policy document
77
- */
78
- exports.PolicyDocumentSchema = zod_1.z
79
- .object({
80
- /** Policy format version */
81
- version: zod_1.z.literal(exports.POLICY_VERSION),
82
- /** Policy name/description (optional) */
83
- name: zod_1.z.string().optional(),
84
- /** Default decision (required) */
85
- defaults: exports.PolicyDefaultsSchema,
86
- /** Rules evaluated in order (first match wins) */
87
- rules: zod_1.z.array(exports.PolicyRuleSchema),
88
- })
89
- .strict();
90
- // -----------------------------------------------------------------------------
91
- // Rate Limiting (v0.9.23+)
92
- // -----------------------------------------------------------------------------
93
- /**
94
- * Structured rate limit configuration.
95
- *
96
- * Uses `window_seconds` for future-proofing (avoids enum lock-in).
97
- * CLI parses human-friendly strings like "100/hour" to this format.
98
- *
99
- * @example
100
- * ```typescript
101
- * const limit: RateLimitConfig = {
102
- * limit: 100,
103
- * window_seconds: 3600, // 1 hour
104
- * burst: 10,
105
- * partition: 'agent',
106
- * };
107
- * ```
108
- */
109
- exports.RateLimitConfigSchema = zod_1.z
110
- .object({
111
- /** Maximum requests allowed in the window */
112
- limit: zod_1.z.number().int().positive(),
113
- /** Window size in seconds (e.g., 3600 for 1 hour) */
114
- window_seconds: zod_1.z.number().int().positive(),
115
- /** Optional burst allowance above the limit */
116
- burst: zod_1.z.number().int().nonnegative().optional(),
117
- /** How to partition rate limits (default: per-agent) */
118
- partition: zod_1.z.union([zod_1.z.enum(['agent', 'ip', 'account']), zod_1.z.string().min(1)]).optional(),
119
- })
120
- .strict();
121
- /**
122
- * Parse a human-friendly rate limit string to RateLimitConfig.
123
- *
124
- * @example
125
- * ```typescript
126
- * parseRateLimit('100/hour'); // { limit: 100, window_seconds: 3600 }
127
- * parseRateLimit('1000/day'); // { limit: 1000, window_seconds: 86400 }
128
- * parseRateLimit('10/minute'); // { limit: 10, window_seconds: 60 }
129
- * ```
130
- */
131
- function parseRateLimit(input) {
132
- const match = input.match(/^(\d+)\/(second|minute|hour|day)$/i);
133
- if (!match) {
134
- throw new Error(`Invalid rate limit format: "${input}". Expected format: "100/hour", "1000/day", etc.`);
135
- }
136
- const limit = parseInt(match[1], 10);
137
- const unit = match[2].toLowerCase();
138
- const windowMap = {
139
- second: 1,
140
- minute: 60,
141
- hour: 3600,
142
- day: 86400,
143
- };
144
- return {
145
- limit,
146
- window_seconds: windowMap[unit],
147
- };
148
- }
149
- /**
150
- * Format a RateLimitConfig to human-friendly string.
151
- */
152
- function formatRateLimit(config) {
153
- const { limit, window_seconds } = config;
154
- if (window_seconds === 1)
155
- return `${limit}/second`;
156
- if (window_seconds === 60)
157
- return `${limit}/minute`;
158
- if (window_seconds === 3600)
159
- return `${limit}/hour`;
160
- if (window_seconds === 86400)
161
- return `${limit}/day`;
162
- return `${limit}/${window_seconds}s`;
163
- }
164
- // -----------------------------------------------------------------------------
165
- // Decision Requirements (v0.9.23+)
166
- // -----------------------------------------------------------------------------
167
- /**
168
- * Requirements for 'review' decision (challenge-required semantics).
169
- *
170
- * When decision is 'review' and requirements are not met:
171
- * - Enforcement returns a challenge response (e.g., HTTP 402)
172
- * - Client provides proof (e.g., PEAC receipt)
173
- * - On valid proof, access is granted
174
- *
175
- * This differs from 'deny' which is unconditional rejection.
176
- *
177
- * @example
178
- * ```typescript
179
- * const rule: PolicyRule = {
180
- * name: 'inference-needs-receipt',
181
- * purpose: 'inference',
182
- * decision: 'review',
183
- * requirements: { receipt: true },
184
- * };
185
- * ```
186
- */
187
- exports.DecisionRequirementsSchema = zod_1.z
188
- .object({
189
- /** Require a valid PEAC receipt */
190
- receipt: zod_1.z.boolean().optional(),
191
- // Extensible: add more requirements as needed
192
- // attestation?: boolean;
193
- // kyc?: boolean;
194
- })
195
- .strict();
196
- // -----------------------------------------------------------------------------
197
- // Profile System (v0.9.23+)
198
- // -----------------------------------------------------------------------------
199
- /**
200
- * Profile parameter definition.
201
- *
202
- * Defines a configurable parameter for a profile.
203
- */
204
- exports.ProfileParameterSchema = zod_1.z
205
- .object({
206
- /** Human-readable description */
207
- description: zod_1.z.string().min(1),
208
- /** Whether this parameter is required */
209
- required: zod_1.z.boolean().optional(),
210
- /** Default value if not provided */
211
- default: zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean()]).optional(),
212
- /** Example value for documentation */
213
- example: zod_1.z.string().optional(),
214
- /** Validation type for the parameter */
215
- validate: zod_1.z.enum(['email', 'url', 'rate_limit']).optional(),
216
- })
217
- .strict();
218
- /**
219
- * Profile definition.
220
- *
221
- * A profile is a pre-configured policy template for a specific use case
222
- * (e.g., news publisher, SaaS docs, open source project).
223
- *
224
- * Profiles are compiled to TypeScript at build time for:
225
- * - Type safety
226
- * - No runtime YAML/fs dependencies
227
- * - Deterministic output
228
- *
229
- * @example
230
- * ```typescript
231
- * const profile: ProfileDefinition = {
232
- * id: 'news-media',
233
- * name: 'News Media Publisher',
234
- * description: 'Policy for news and media publishers...',
235
- * policy: { ... },
236
- * parameters: {
237
- * contact: { description: 'Contact email', required: true, validate: 'email' },
238
- * rate_limit: { description: 'Rate limit', default: '100/hour', validate: 'rate_limit' },
239
- * },
240
- * defaults: {
241
- * requirements: { receipt: true },
242
- * },
243
- * };
244
- * ```
245
- */
246
- exports.ProfileDefinitionSchema = zod_1.z
247
- .object({
248
- /** Unique profile identifier (e.g., 'news-media') */
249
- id: zod_1.z
250
- .string()
251
- .min(1)
252
- .regex(/^[a-z][a-z0-9-]*$/),
253
- /** Human-readable profile name */
254
- name: zod_1.z.string().min(1),
255
- /** Multi-line description of the profile */
256
- description: zod_1.z.string().min(1),
257
- /** Base policy document */
258
- policy: exports.PolicyDocumentSchema,
259
- /** Configurable parameters */
260
- parameters: zod_1.z.record(zod_1.z.string(), exports.ProfileParameterSchema),
261
- /** Default values for profile instances */
262
- defaults: zod_1.z
263
- .object({
264
- /** Default requirements for 'review' decisions */
265
- requirements: exports.DecisionRequirementsSchema.optional(),
266
- /** Default rate limit */
267
- rate_limit: exports.RateLimitConfigSchema.optional(),
268
- })
269
- .strict()
270
- .optional(),
271
- })
272
- .strict();
273
- // -----------------------------------------------------------------------------
274
- // Policy Constraints (v0.9.24+)
275
- // -----------------------------------------------------------------------------
276
- /**
277
- * Policy constraints for rate limiting and budget control.
278
- *
279
- * These constraints are ADVISORY - enforcement happens at the edge/application layer.
280
- * PEAC receipts capture what constraints were DECLARED, not whether they were enforced.
281
- *
282
- * @example
283
- * ```typescript
284
- * const constraints: PolicyConstraints = {
285
- * rate_limit: { window_s: 3600, max: 100 },
286
- * budget: { max_requests: 1000 },
287
- * };
288
- * ```
289
- */
290
- exports.PolicyConstraintsSchema = zod_1.z
291
- .object({
292
- /** Rate limit configuration */
293
- rate_limit: zod_1.z
294
- .object({
295
- /** Window size in seconds */
296
- window_s: zod_1.z.number().int().positive(),
297
- /** Maximum requests allowed in the window */
298
- max: zod_1.z.number().int().positive(),
299
- /** Retry-After header value in seconds (optional) */
300
- retry_after_s: zod_1.z.number().int().positive().optional(),
301
- })
302
- .strict()
303
- .optional(),
304
- /** Budget constraints */
305
- budget: zod_1.z
306
- .object({
307
- /** Maximum tokens allowed */
308
- max_tokens: zod_1.z.number().int().positive().optional(),
309
- /** Maximum requests allowed */
310
- max_requests: zod_1.z.number().int().positive().optional(),
311
- })
312
- .strict()
313
- .optional(),
314
- })
315
- .strict();
316
- /**
317
- * Enforcement profile definition.
318
- *
319
- * Specifies how to handle requests with undeclared, unknown, or missing purposes.
320
- */
321
- exports.EnforcementProfileSchema = zod_1.z
322
- .object({
323
- /** Profile identifier */
324
- id: zod_1.z.enum(['strict', 'balanced', 'open']),
325
- /** Human-readable name */
326
- name: zod_1.z.string().min(1),
327
- /** Description of when to use this profile */
328
- description: zod_1.z.string().min(1),
329
- /** Decision for requests with no purpose declared (missing header) */
330
- undeclared_decision: zod_1.z.enum(['allow', 'deny', 'review']),
331
- /** Decision for requests with unknown purpose tokens */
332
- unknown_decision: zod_1.z.enum(['allow', 'deny', 'review']),
333
- /** Purpose reason to record when undeclared/unknown is processed */
334
- purpose_reason: zod_1.z.enum([
335
- 'allowed',
336
- 'constrained',
337
- 'denied',
338
- 'downgraded',
339
- 'undeclared_default',
340
- 'unknown_preserved',
341
- ]),
342
- /** Default constraints to apply for 'review' decisions */
343
- default_constraints: exports.PolicyConstraintsSchema.optional(),
344
- /** Whether receipts are required for allowed requests */
345
- receipts: zod_1.z.enum(['required', 'optional', 'omit']),
346
- })
347
- .strict();
348
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}