@peac/policy-kit 0.10.9 → 0.10.11

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
package/dist/enforce.js DELETED
@@ -1,309 +0,0 @@
1
- "use strict";
2
- /**
3
- * Decision Enforcement
4
- *
5
- * Helpers for enforcing policy decisions with explicit semantics.
6
- *
7
- * The `review` decision means "challenge unless requirement is satisfied".
8
- * By default, this means a valid receipt is required.
9
- *
10
- * @example
11
- * ```typescript
12
- * import { evaluate, enforceDecision } from '@peac/policy-kit';
13
- *
14
- * const result = evaluate(policy, context);
15
- * const enforcement = enforceDecision(result.decision, {
16
- * receiptVerified: hasValidReceipt,
17
- * });
18
- *
19
- * if (enforcement.allowed) {
20
- * // proceed
21
- * } else {
22
- * // return enforcement.statusCode (402 or 403)
23
- * }
24
- * ```
25
- *
26
- * @packageDocumentation
27
- */
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.enforceDecision = enforceDecision;
30
- exports.requiresChallenge = requiresChallenge;
31
- exports.getChallengeHeader = getChallengeHeader;
32
- exports.enforceForHttp = enforceForHttp;
33
- exports.enforcePurposeDecision = enforcePurposeDecision;
34
- exports.getPurposeDecisionStatusCode = getPurposeDecisionStatusCode;
35
- /**
36
- * Enforce a policy decision with explicit semantics.
37
- *
38
- * Decision meanings:
39
- * - `allow`: Access is permitted (200)
40
- * - `deny`: Access is forbidden (403)
41
- * - `review`: Challenge unless requirement is satisfied (default: receipt required)
42
- *
43
- * The `review` decision is a "soft deny" that becomes "allow" when the
44
- * requirement (typically a valid receipt) is satisfied.
45
- *
46
- * @param decision - The policy decision to enforce
47
- * @param context - Enforcement context with requirement flags
48
- * @returns Enforcement result with allowed status and HTTP code
49
- *
50
- * @example
51
- * ```typescript
52
- * // Allow decision
53
- * enforceDecision('allow', {});
54
- * // { allowed: true, statusCode: 200, challenge: false }
55
- *
56
- * // Deny decision
57
- * enforceDecision('deny', {});
58
- * // { allowed: false, statusCode: 403, challenge: false }
59
- *
60
- * // Review without receipt
61
- * enforceDecision('review', { receiptVerified: false });
62
- * // { allowed: false, statusCode: 402, challenge: true }
63
- *
64
- * // Review with valid receipt
65
- * enforceDecision('review', { receiptVerified: true });
66
- * // { allowed: true, statusCode: 200, challenge: false }
67
- * ```
68
- */
69
- function enforceDecision(decision, context = {}) {
70
- switch (decision) {
71
- case 'allow':
72
- return {
73
- allowed: true,
74
- statusCode: 200,
75
- reason: 'Access allowed by policy',
76
- challenge: false,
77
- decision,
78
- };
79
- case 'deny':
80
- return {
81
- allowed: false,
82
- statusCode: 403,
83
- reason: 'Access denied by policy',
84
- challenge: false,
85
- decision,
86
- };
87
- case 'review': {
88
- // review = "challenge unless receiptVerified === true"
89
- // This is the only requirement in v0.9.23
90
- if (context.receiptVerified === true) {
91
- return {
92
- allowed: true,
93
- statusCode: 200,
94
- reason: 'Access allowed - receipt verified',
95
- challenge: false,
96
- decision,
97
- };
98
- }
99
- // No valid receipt - return 402 Payment Required with challenge
100
- return {
101
- allowed: false,
102
- statusCode: 402,
103
- reason: 'Access requires verification - present valid receipt',
104
- challenge: true,
105
- decision,
106
- };
107
- }
108
- default: {
109
- // Exhaustive check - should never reach here
110
- const _exhaustive = decision;
111
- return {
112
- allowed: false,
113
- statusCode: 403,
114
- reason: `Unknown decision: ${_exhaustive}`,
115
- challenge: false,
116
- decision,
117
- };
118
- }
119
- }
120
- }
121
- /**
122
- * Check if an enforcement result requires a challenge response
123
- *
124
- * @param result - Enforcement result
125
- * @returns true if a challenge should be issued
126
- */
127
- function requiresChallenge(result) {
128
- return result.challenge;
129
- }
130
- /**
131
- * Get the WWW-Authenticate header value for a challenge
132
- *
133
- * @param result - Enforcement result requiring challenge
134
- * @returns WWW-Authenticate header value or undefined if no challenge needed
135
- *
136
- * @example
137
- * ```typescript
138
- * const result = enforceDecision('review', { receiptVerified: false });
139
- * const header = getChallengeHeader(result);
140
- * // 'PEAC realm="receipt", error="receipt_required"'
141
- * ```
142
- */
143
- function getChallengeHeader(result) {
144
- if (!result.challenge) {
145
- return undefined;
146
- }
147
- return 'PEAC realm="receipt", error="receipt_required"';
148
- }
149
- /**
150
- * Convenience function to enforce and get HTTP response details
151
- *
152
- * @param decision - Policy decision
153
- * @param context - Enforcement context
154
- * @returns Object with status code and headers for HTTP response
155
- *
156
- * @example
157
- * ```typescript
158
- * const { status, headers, allowed } = enforceForHttp('review', {
159
- * receiptVerified: false,
160
- * });
161
- * // { status: 402, headers: { 'WWW-Authenticate': '...' }, allowed: false }
162
- * ```
163
- */
164
- function enforceForHttp(decision, context = {}) {
165
- const result = enforceDecision(decision, context);
166
- const headers = {};
167
- if (result.challenge) {
168
- const challengeHeader = getChallengeHeader(result);
169
- if (challengeHeader) {
170
- headers['WWW-Authenticate'] = challengeHeader;
171
- }
172
- }
173
- return {
174
- status: result.statusCode,
175
- headers,
176
- allowed: result.allowed,
177
- reason: result.reason,
178
- };
179
- }
180
- /**
181
- * Enforce a policy decision for purpose-based access control.
182
- *
183
- * This function is specifically for purpose enforcement and NEVER returns 402.
184
- * 402 is reserved for payment/receipt challenges (use `enforceDecision` for that).
185
- *
186
- * Status code semantics:
187
- * - 200: Purpose allowed
188
- * - 400: Invalid purpose token (grammar violation or explicit "undeclared")
189
- * - 403: Purpose denied by policy
190
- *
191
- * @param decision - The policy decision to enforce
192
- * @param context - Purpose enforcement context
193
- * @returns Purpose enforcement result with HTTP status code
194
- *
195
- * @example
196
- * ```typescript
197
- * import { enforcePurposeDecision } from '@peac/policy-kit';
198
- *
199
- * // Valid purpose, allowed
200
- * enforcePurposeDecision('allow', { purposeValid: true });
201
- * // { allowed: true, statusCode: 200, decision: 'allow' }
202
- *
203
- * // Valid purpose, denied by policy
204
- * enforcePurposeDecision('deny', { purposeValid: true });
205
- * // { allowed: false, statusCode: 403, decision: 'deny' }
206
- *
207
- * // Invalid purpose token
208
- * enforcePurposeDecision('allow', { purposeValid: false, invalidTokens: ['train-'] });
209
- * // { allowed: false, statusCode: 400, reason: 'Invalid purpose token(s): train-' }
210
- *
211
- * // Explicit "undeclared" in request (forbidden)
212
- * enforcePurposeDecision('allow', { purposeValid: true, explicitUndeclared: true });
213
- * // { allowed: false, statusCode: 400, reason: '"undeclared" is not a valid purpose token' }
214
- * ```
215
- */
216
- function enforcePurposeDecision(decision, context) {
217
- // Check for explicit "undeclared" first (always 400)
218
- if (context.explicitUndeclared) {
219
- return {
220
- allowed: false,
221
- statusCode: 400,
222
- reason: '"undeclared" is not a valid purpose token - it is internal-only',
223
- decision,
224
- };
225
- }
226
- // Check for invalid purpose tokens (400)
227
- if (!context.purposeValid) {
228
- const tokenList = context.invalidTokens?.join(', ') || 'unknown';
229
- return {
230
- allowed: false,
231
- statusCode: 400,
232
- reason: `Invalid purpose token(s): ${tokenList}`,
233
- decision,
234
- };
235
- }
236
- // Valid purpose - apply policy decision
237
- switch (decision) {
238
- case 'allow':
239
- return {
240
- allowed: true,
241
- statusCode: 200,
242
- reason: 'Purpose allowed by policy',
243
- decision,
244
- };
245
- case 'deny':
246
- return {
247
- allowed: false,
248
- statusCode: 403,
249
- reason: 'Purpose denied by policy',
250
- decision,
251
- };
252
- case 'review':
253
- // For purpose enforcement, 'review' is treated as 'deny' (403)
254
- // 402 is reserved for payment/receipt challenges
255
- return {
256
- allowed: false,
257
- statusCode: 403,
258
- reason: 'Purpose requires review - treated as denied for purpose enforcement',
259
- decision,
260
- };
261
- default: {
262
- const _exhaustive = decision;
263
- return {
264
- allowed: false,
265
- statusCode: 403,
266
- reason: `Unknown decision: ${_exhaustive}`,
267
- decision,
268
- };
269
- }
270
- }
271
- }
272
- /**
273
- * Get HTTP status code for a purpose decision (low-level helper).
274
- *
275
- * This helper maps policy decisions to HTTP status codes for purpose enforcement.
276
- * It NEVER returns 402 - that is reserved for payment/receipt challenges.
277
- *
278
- * For evaluating purpose with profiles, use getPurposeStatusCode from enforcement-profiles
279
- * which takes a PurposeEvaluationResult directly.
280
- *
281
- * @param decision - Policy decision
282
- * @param purposeValid - Whether the purpose token(s) passed validation
283
- * @returns HTTP status code (200, 400, or 403)
284
- *
285
- * @example
286
- * ```typescript
287
- * getPurposeDecisionStatusCode('allow', true); // 200
288
- * getPurposeDecisionStatusCode('deny', true); // 403
289
- * getPurposeDecisionStatusCode('review', true); // 403 (NOT 402!)
290
- * getPurposeDecisionStatusCode('allow', false); // 400 (invalid token)
291
- * ```
292
- */
293
- function getPurposeDecisionStatusCode(decision, purposeValid) {
294
- // Invalid purpose always returns 400
295
- if (!purposeValid) {
296
- return 400;
297
- }
298
- // Map decision to status code (never 402)
299
- switch (decision) {
300
- case 'allow':
301
- return 200;
302
- case 'deny':
303
- case 'review':
304
- return 403;
305
- default:
306
- return 403;
307
- }
308
- }
309
- //# sourceMappingURL=enforce.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enforce.js","sourceRoot":"","sources":["../src/enforce.ts"],"names":[],"mappings":"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"}
@@ -1,293 +0,0 @@
1
- "use strict";
2
- /**
3
- * Enforcement Profiles (v0.9.24+)
4
- *
5
- * Pre-defined profiles for handling undeclared and unknown purposes.
6
- * These are distinct from use-case profiles (api-provider, news-media, etc.).
7
- *
8
- * Three canonical profiles:
9
- * - `strict`: Deny undeclared purposes (regulated data, private APIs)
10
- * - `balanced`: Review + constraints for undeclared (general web, DEFAULT)
11
- * - `open`: Allow undeclared purposes with recording (public content, research)
12
- *
13
- * @example
14
- * ```typescript
15
- * import {
16
- * getEnforcementProfile,
17
- * evaluateWithProfile,
18
- * ENFORCEMENT_PROFILES,
19
- * } from '@peac/policy-kit';
20
- *
21
- * // Get the balanced profile (default)
22
- * const profile = getEnforcementProfile('balanced');
23
- *
24
- * // Evaluate with enforcement profile
25
- * const result = evaluateWithProfile(policy, context, 'balanced');
26
- * ```
27
- *
28
- * @packageDocumentation
29
- */
30
- Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.ENFORCEMENT_PROFILE_IDS = exports.DEFAULT_ENFORCEMENT_PROFILE = exports.ENFORCEMENT_PROFILES = exports.OPEN_PROFILE = exports.BALANCED_PROFILE = exports.STRICT_PROFILE = void 0;
32
- exports.getEnforcementProfile = getEnforcementProfile;
33
- exports.isEnforcementProfileId = isEnforcementProfileId;
34
- exports.getDefaultEnforcementProfile = getDefaultEnforcementProfile;
35
- exports.evaluatePurpose = evaluatePurpose;
36
- exports.getPurposeStatusCode = getPurposeStatusCode;
37
- exports.getRetryAfter = getRetryAfter;
38
- // -----------------------------------------------------------------------------
39
- // Canonical Enforcement Profiles
40
- // -----------------------------------------------------------------------------
41
- /**
42
- * Strict enforcement profile.
43
- *
44
- * Use for: Regulated data, private APIs, compliance-critical resources.
45
- * - Undeclared purposes: DENY
46
- * - Unknown purpose tokens: DENY
47
- * - Receipts: Required
48
- */
49
- exports.STRICT_PROFILE = {
50
- id: 'strict',
51
- name: 'Strict',
52
- description: 'Deny undeclared purposes. Use for regulated data, private APIs, or compliance-critical resources.',
53
- undeclared_decision: 'deny',
54
- unknown_decision: 'deny',
55
- purpose_reason: 'denied',
56
- receipts: 'required',
57
- };
58
- /**
59
- * Balanced enforcement profile (DEFAULT).
60
- *
61
- * Use for: General web, gradual compliance, typical publisher use case.
62
- * - Undeclared purposes: REVIEW + constraints
63
- * - Unknown purpose tokens: REVIEW + preserve
64
- * - Receipts: Optional (encouraged)
65
- */
66
- exports.BALANCED_PROFILE = {
67
- id: 'balanced',
68
- name: 'Balanced',
69
- description: 'Review undeclared purposes with rate limits. Default for general web publishers.',
70
- undeclared_decision: 'review',
71
- unknown_decision: 'review',
72
- purpose_reason: 'undeclared_default',
73
- default_constraints: {
74
- rate_limit: {
75
- window_s: 3600, // 1 hour
76
- max: 100,
77
- retry_after_s: 60,
78
- },
79
- },
80
- receipts: 'optional',
81
- };
82
- /**
83
- * Open enforcement profile.
84
- *
85
- * Use for: Public content, research data, open access resources.
86
- * - Undeclared purposes: ALLOW (recorded)
87
- * - Unknown purpose tokens: ALLOW (preserved)
88
- * - Receipts: Optional (for attribution)
89
- */
90
- exports.OPEN_PROFILE = {
91
- id: 'open',
92
- name: 'Open',
93
- description: 'Allow undeclared purposes with recording. Use for public content and research data.',
94
- undeclared_decision: 'allow',
95
- unknown_decision: 'allow',
96
- purpose_reason: 'allowed',
97
- receipts: 'optional',
98
- };
99
- /**
100
- * All canonical enforcement profiles indexed by ID.
101
- */
102
- exports.ENFORCEMENT_PROFILES = {
103
- strict: exports.STRICT_PROFILE,
104
- balanced: exports.BALANCED_PROFILE,
105
- open: exports.OPEN_PROFILE,
106
- };
107
- /**
108
- * Default enforcement profile ID.
109
- *
110
- * `balanced` is the default to encourage adoption while maintaining some protection.
111
- */
112
- exports.DEFAULT_ENFORCEMENT_PROFILE = 'balanced';
113
- /**
114
- * All enforcement profile IDs.
115
- */
116
- exports.ENFORCEMENT_PROFILE_IDS = [
117
- 'strict',
118
- 'balanced',
119
- 'open',
120
- ];
121
- // -----------------------------------------------------------------------------
122
- // Profile Lookup Functions
123
- // -----------------------------------------------------------------------------
124
- /**
125
- * Get an enforcement profile by ID.
126
- *
127
- * @param id - Profile ID
128
- * @returns Enforcement profile
129
- * @throws Error if profile ID is invalid
130
- *
131
- * @example
132
- * ```typescript
133
- * const profile = getEnforcementProfile('balanced');
134
- * console.log(profile.undeclared_decision); // 'review'
135
- * ```
136
- */
137
- function getEnforcementProfile(id) {
138
- const profile = exports.ENFORCEMENT_PROFILES[id];
139
- if (!profile) {
140
- throw new Error(`Invalid enforcement profile ID: ${id}`);
141
- }
142
- return profile;
143
- }
144
- /**
145
- * Check if a string is a valid enforcement profile ID.
146
- *
147
- * @param id - String to check
148
- * @returns true if valid profile ID
149
- */
150
- function isEnforcementProfileId(id) {
151
- return exports.ENFORCEMENT_PROFILE_IDS.includes(id);
152
- }
153
- /**
154
- * Get the default enforcement profile.
155
- *
156
- * @returns The balanced profile (default)
157
- */
158
- function getDefaultEnforcementProfile() {
159
- return exports.ENFORCEMENT_PROFILES[exports.DEFAULT_ENFORCEMENT_PROFILE];
160
- }
161
- /**
162
- * Canonical purpose tokens that PEAC defines semantics for.
163
- */
164
- const CANONICAL_PURPOSES = new Set(['train', 'search', 'user_action', 'inference', 'index']);
165
- /**
166
- * Legacy purpose tokens that map to canonical purposes.
167
- */
168
- const LEGACY_PURPOSE_MAP = {
169
- crawl: 'index',
170
- ai_input: 'inference',
171
- ai_index: 'index',
172
- };
173
- /**
174
- * Check if a purpose token is canonical.
175
- */
176
- function isCanonicalPurpose(token) {
177
- return CANONICAL_PURPOSES.has(token);
178
- }
179
- /**
180
- * Check if a purpose token is a known legacy token.
181
- */
182
- function isLegacyPurpose(token) {
183
- return token in LEGACY_PURPOSE_MAP;
184
- }
185
- /**
186
- * Evaluate declared purposes against an enforcement profile.
187
- *
188
- * This determines what decision to make based on the declared purposes
189
- * and the enforcement profile's rules for undeclared/unknown purposes.
190
- *
191
- * @param declaredPurposes - Array of purpose tokens from PEAC-Purpose header
192
- * @param profileId - Enforcement profile ID (default: 'balanced')
193
- * @returns Purpose evaluation result
194
- *
195
- * @example
196
- * ```typescript
197
- * // No purposes declared - uses undeclared_decision from profile
198
- * const result1 = evaluatePurpose([], 'strict');
199
- * // { decision: 'deny', purpose_reason: 'denied', ... }
200
- *
201
- * // Known purpose declared
202
- * const result2 = evaluatePurpose(['train'], 'balanced');
203
- * // { decision: 'allow', purpose_enforced: 'train', ... }
204
- *
205
- * // Unknown purpose token
206
- * const result3 = evaluatePurpose(['vendor:custom'], 'balanced');
207
- * // { decision: 'review', has_unknown_tokens: true, unknown_tokens: ['vendor:custom'], ... }
208
- * ```
209
- */
210
- function evaluatePurpose(declaredPurposes, profileId = exports.DEFAULT_ENFORCEMENT_PROFILE) {
211
- const profile = getEnforcementProfile(profileId);
212
- // No purposes declared - apply undeclared handling
213
- if (declaredPurposes.length === 0) {
214
- return {
215
- decision: profile.undeclared_decision,
216
- purpose_reason: 'undeclared_default',
217
- constraints: profile.undeclared_decision === 'review' ? profile.default_constraints : undefined,
218
- purpose_declared: false,
219
- has_unknown_tokens: false,
220
- unknown_tokens: [],
221
- profile_id: profileId,
222
- };
223
- }
224
- // Categorize declared purposes
225
- const canonicalTokens = [];
226
- const legacyTokens = [];
227
- const unknownTokens = [];
228
- for (const token of declaredPurposes) {
229
- if (isCanonicalPurpose(token)) {
230
- canonicalTokens.push(token);
231
- }
232
- else if (isLegacyPurpose(token)) {
233
- legacyTokens.push(token);
234
- }
235
- else {
236
- unknownTokens.push(token);
237
- }
238
- }
239
- // If we have unknown tokens, apply unknown_decision
240
- if (unknownTokens.length > 0 && canonicalTokens.length === 0 && legacyTokens.length === 0) {
241
- // Only unknown tokens - apply unknown handling
242
- return {
243
- decision: profile.unknown_decision,
244
- purpose_reason: 'unknown_preserved',
245
- constraints: profile.unknown_decision === 'review' ? profile.default_constraints : undefined,
246
- purpose_declared: true,
247
- has_unknown_tokens: true,
248
- unknown_tokens: unknownTokens,
249
- profile_id: profileId,
250
- };
251
- }
252
- // We have at least some known tokens - allow with the first canonical/legacy purpose
253
- const enforcedPurpose = canonicalTokens[0] ?? LEGACY_PURPOSE_MAP[legacyTokens[0]];
254
- return {
255
- decision: 'allow',
256
- purpose_enforced: enforcedPurpose,
257
- purpose_reason: unknownTokens.length > 0 ? 'unknown_preserved' : 'allowed',
258
- purpose_declared: true,
259
- has_unknown_tokens: unknownTokens.length > 0,
260
- unknown_tokens: unknownTokens,
261
- profile_id: profileId,
262
- };
263
- }
264
- /**
265
- * Get the HTTP status code for a purpose evaluation result.
266
- *
267
- * NOTE: 402 is RESERVED for payment - purpose decisions never return 402.
268
- * - allow -> 200
269
- * - review -> 403 (NOT 402)
270
- * - deny -> 403
271
- *
272
- * @param result - Purpose evaluation result
273
- * @returns HTTP status code (200 or 403)
274
- */
275
- function getPurposeStatusCode(result) {
276
- switch (result.decision) {
277
- case 'allow':
278
- return 200;
279
- case 'review':
280
- case 'deny':
281
- return 403;
282
- }
283
- }
284
- /**
285
- * Get the Retry-After header value from constraints.
286
- *
287
- * @param constraints - Policy constraints
288
- * @returns Retry-After seconds or undefined
289
- */
290
- function getRetryAfter(constraints) {
291
- return constraints?.rate_limit?.retry_after_s;
292
- }
293
- //# sourceMappingURL=enforcement-profiles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enforcement-profiles.js","sourceRoot":"","sources":["../src/enforcement-profiles.ts"],"names":[],"mappings":"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"}