@peac/control 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.
@@ -1,201 +0,0 @@
1
- "use strict";
2
- /**
3
- * PEAC Control Abstraction Layer (CAL) Enforcement
4
- *
5
- * Enforcement logic for mandates and control blocks.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.enforceTemporalConstraint = enforceTemporalConstraint;
9
- exports.enforceUsageConstraint = enforceUsageConstraint;
10
- exports.enforceBudgetConstraint = enforceBudgetConstraint;
11
- exports.enforceCombinedConstraint = enforceCombinedConstraint;
12
- exports.enforceConstraint = enforceConstraint;
13
- exports.enforceControlBlock = enforceControlBlock;
14
- /**
15
- * Enforce temporal mandate
16
- */
17
- function enforceTemporalConstraint(mandate, currentTime = Math.floor(Date.now() / 1000)) {
18
- // Check valid_from
19
- if (mandate.valid_from !== undefined && currentTime < mandate.valid_from) {
20
- const remaining = mandate.valid_from - currentTime;
21
- return {
22
- allowed: false,
23
- reason: `Access not yet valid (starts in ${remaining}s)`,
24
- remaining: { seconds: remaining },
25
- };
26
- }
27
- // Check valid_until
28
- if (mandate.valid_until !== undefined && currentTime > mandate.valid_until) {
29
- return {
30
- allowed: false,
31
- reason: 'Access has expired',
32
- remaining: { seconds: 0 },
33
- };
34
- }
35
- // Calculate remaining time
36
- let remainingSeconds;
37
- if (mandate.valid_until !== undefined) {
38
- remainingSeconds = mandate.valid_until - currentTime;
39
- }
40
- else if (mandate.duration !== undefined && mandate.valid_from !== undefined) {
41
- const expiresAt = mandate.valid_from + mandate.duration;
42
- remainingSeconds = expiresAt - currentTime;
43
- }
44
- return {
45
- allowed: true,
46
- remaining: remainingSeconds !== undefined ? { seconds: remainingSeconds } : undefined,
47
- };
48
- }
49
- /**
50
- * Enforce usage mandate
51
- */
52
- function enforceUsageConstraint(mandate, state) {
53
- const currentUses = state?.usage_count ?? mandate.current_uses ?? 0;
54
- // Check if max uses exceeded
55
- if (currentUses >= mandate.max_uses) {
56
- return {
57
- allowed: false,
58
- reason: `Usage limit exceeded (${currentUses}/${mandate.max_uses})`,
59
- remaining: { uses: 0 },
60
- };
61
- }
62
- // Check usage window if specified
63
- if (mandate.window !== undefined && state?.first_use !== undefined) {
64
- const currentTime = Math.floor(Date.now() / 1000);
65
- const windowExpiry = state.first_use + mandate.window;
66
- if (currentTime > windowExpiry) {
67
- return {
68
- allowed: false,
69
- reason: 'Usage window expired',
70
- remaining: { uses: 0 },
71
- };
72
- }
73
- }
74
- const remainingUses = mandate.max_uses - currentUses;
75
- return {
76
- allowed: true,
77
- remaining: { uses: remainingUses },
78
- };
79
- }
80
- /**
81
- * Enforce budget mandate
82
- */
83
- function enforceBudgetConstraint(mandate, state, requestedAmount) {
84
- const currentAmount = state?.spent_amount ?? mandate.current_amount ?? 0;
85
- // Check if budget exceeded
86
- if (currentAmount >= mandate.max_amount) {
87
- return {
88
- allowed: false,
89
- reason: `Budget limit exceeded (${currentAmount}/${mandate.max_amount} ${mandate.currency})`,
90
- remaining: { amount: 0 },
91
- };
92
- }
93
- // Check if requested amount would exceed budget
94
- if (requestedAmount !== undefined) {
95
- if (currentAmount + requestedAmount > mandate.max_amount) {
96
- const remaining = mandate.max_amount - currentAmount;
97
- return {
98
- allowed: false,
99
- reason: `Requested amount would exceed budget (${requestedAmount} > ${remaining} ${mandate.currency} remaining)`,
100
- remaining: { amount: remaining },
101
- };
102
- }
103
- }
104
- // Check budget window if specified
105
- if (mandate.window !== undefined && state?.first_use !== undefined) {
106
- const currentTime = Math.floor(Date.now() / 1000);
107
- const windowExpiry = state.first_use + mandate.window;
108
- if (currentTime > windowExpiry) {
109
- return {
110
- allowed: false,
111
- reason: 'Budget window expired',
112
- remaining: { amount: 0 },
113
- };
114
- }
115
- }
116
- const remainingAmount = mandate.max_amount - currentAmount;
117
- return {
118
- allowed: true,
119
- remaining: { amount: remainingAmount },
120
- };
121
- }
122
- /**
123
- * Enforce combined mandate
124
- */
125
- function enforceCombinedConstraint(mandate, state, requestedAmount, currentTime) {
126
- const results = [];
127
- // Check temporal constraints
128
- if (mandate.temporal !== undefined) {
129
- const temporalConstraint = {
130
- type: 'temporal',
131
- ...mandate.temporal,
132
- };
133
- const result = enforceTemporalConstraint(temporalConstraint, currentTime);
134
- results.push(result);
135
- }
136
- // Check usage constraints
137
- if (mandate.usage !== undefined) {
138
- const usageConstraint = {
139
- type: 'usage',
140
- ...mandate.usage,
141
- };
142
- const result = enforceUsageConstraint(usageConstraint, state);
143
- results.push(result);
144
- }
145
- // Check budget constraints
146
- if (mandate.budget !== undefined) {
147
- const budgetConstraint = {
148
- type: 'budget',
149
- ...mandate.budget,
150
- };
151
- const result = enforceBudgetConstraint(budgetConstraint, state, requestedAmount);
152
- results.push(result);
153
- }
154
- // All constraints must be satisfied
155
- const failedResult = results.find((r) => !r.allowed);
156
- if (failedResult) {
157
- return failedResult;
158
- }
159
- // Merge remaining information
160
- const remaining = {};
161
- for (const result of results) {
162
- if (result.remaining) {
163
- Object.assign(remaining, result.remaining);
164
- }
165
- }
166
- return {
167
- allowed: true,
168
- remaining: Object.keys(remaining).length > 0 ? remaining : undefined,
169
- };
170
- }
171
- /**
172
- * Enforce mandate (dispatcher)
173
- */
174
- function enforceConstraint(mandate, state, requestedAmount, currentTime) {
175
- switch (mandate.type) {
176
- case 'temporal':
177
- return enforceTemporalConstraint(mandate, currentTime);
178
- case 'usage':
179
- return enforceUsageConstraint(mandate, state);
180
- case 'budget':
181
- return enforceBudgetConstraint(mandate, state, requestedAmount);
182
- case 'combined':
183
- return enforceCombinedConstraint(mandate, state, requestedAmount, currentTime);
184
- default:
185
- // TypeScript exhaustiveness check
186
- const _exhaustive = mandate;
187
- return {
188
- allowed: false,
189
- reason: `Unknown mandate type: ${_exhaustive.type}`,
190
- };
191
- }
192
- }
193
- /**
194
- * Enforce control block
195
- *
196
- * @deprecated Use enforceConstraint directly. This function is maintained for backward compatibility.
197
- */
198
- function enforceControlBlock(constraint, state, requestedAmount, currentTime) {
199
- return enforceConstraint(constraint, state, requestedAmount, currentTime);
200
- }
201
- //# sourceMappingURL=enforcement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enforcement.js","sourceRoot":"","sources":["../src/enforcement.ts"],"names":[],"mappings":"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"}
package/dist/index.js DELETED
@@ -1,57 +0,0 @@
1
- "use strict";
2
- /**
3
- * PEAC Control
4
- *
5
- * Control engine interfaces, generic constraint helpers, and validation.
6
- *
7
- * @packageDocumentation
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.getStateSummary = exports.resetState = exports.isStateExpired = exports.updateStateAfterUse = exports.createControlState = exports.enforceMandate = exports.enforceCombinedMandate = exports.enforceBudgetMandate = exports.enforceUsageMandate = exports.enforceTemporalMandate = exports.enforceControlBlock = exports.enforceConstraint = exports.enforceCombinedConstraint = exports.enforceBudgetConstraint = exports.enforceUsageConstraint = exports.enforceTemporalConstraint = exports.MandateSchema = exports.CombinedMandateSchema = exports.BudgetMandateSchema = exports.UsageMandateSchema = exports.TemporalMandateSchema = exports.ChainControlBlockSchema = exports.ControlStepSchema = exports.ControlDecisionSchema = exports.ControlLicensingModeSchema = exports.ControlPurposeSchema = exports.ControlStateSchema = exports.ControlBlockSchema = exports.ConstraintSchema = exports.CombinedConstraintSchema = exports.BudgetConstraintSchema = exports.UsageConstraintSchema = exports.TemporalConstraintSchema = exports.ControlEngineRegistry = void 0;
11
- var adapter_1 = require("./adapter");
12
- Object.defineProperty(exports, "ControlEngineRegistry", { enumerable: true, get: function () { return adapter_1.ControlEngineRegistry; } });
13
- // Validators
14
- var validators_1 = require("./validators");
15
- Object.defineProperty(exports, "TemporalConstraintSchema", { enumerable: true, get: function () { return validators_1.TemporalConstraintSchema; } });
16
- Object.defineProperty(exports, "UsageConstraintSchema", { enumerable: true, get: function () { return validators_1.UsageConstraintSchema; } });
17
- Object.defineProperty(exports, "BudgetConstraintSchema", { enumerable: true, get: function () { return validators_1.BudgetConstraintSchema; } });
18
- Object.defineProperty(exports, "CombinedConstraintSchema", { enumerable: true, get: function () { return validators_1.CombinedConstraintSchema; } });
19
- Object.defineProperty(exports, "ConstraintSchema", { enumerable: true, get: function () { return validators_1.ConstraintSchema; } });
20
- Object.defineProperty(exports, "ControlBlockSchema", { enumerable: true, get: function () { return validators_1.ControlBlockSchema; } });
21
- Object.defineProperty(exports, "ControlStateSchema", { enumerable: true, get: function () { return validators_1.ControlStateSchema; } });
22
- // CAL semantic validators (v0.9.16+)
23
- Object.defineProperty(exports, "ControlPurposeSchema", { enumerable: true, get: function () { return validators_1.ControlPurposeSchema; } });
24
- Object.defineProperty(exports, "ControlLicensingModeSchema", { enumerable: true, get: function () { return validators_1.ControlLicensingModeSchema; } });
25
- Object.defineProperty(exports, "ControlDecisionSchema", { enumerable: true, get: function () { return validators_1.ControlDecisionSchema; } });
26
- Object.defineProperty(exports, "ControlStepSchema", { enumerable: true, get: function () { return validators_1.ControlStepSchema; } });
27
- Object.defineProperty(exports, "ChainControlBlockSchema", { enumerable: true, get: function () { return validators_1.ChainControlBlockSchema; } });
28
- // Deprecated validator aliases (will be removed in v0.9.17)
29
- var validators_2 = require("./validators");
30
- Object.defineProperty(exports, "TemporalMandateSchema", { enumerable: true, get: function () { return validators_2.TemporalConstraintSchema; } });
31
- Object.defineProperty(exports, "UsageMandateSchema", { enumerable: true, get: function () { return validators_2.UsageConstraintSchema; } });
32
- Object.defineProperty(exports, "BudgetMandateSchema", { enumerable: true, get: function () { return validators_2.BudgetConstraintSchema; } });
33
- Object.defineProperty(exports, "CombinedMandateSchema", { enumerable: true, get: function () { return validators_2.CombinedConstraintSchema; } });
34
- Object.defineProperty(exports, "MandateSchema", { enumerable: true, get: function () { return validators_2.ConstraintSchema; } });
35
- // Enforcement
36
- var enforcement_1 = require("./enforcement");
37
- Object.defineProperty(exports, "enforceTemporalConstraint", { enumerable: true, get: function () { return enforcement_1.enforceTemporalConstraint; } });
38
- Object.defineProperty(exports, "enforceUsageConstraint", { enumerable: true, get: function () { return enforcement_1.enforceUsageConstraint; } });
39
- Object.defineProperty(exports, "enforceBudgetConstraint", { enumerable: true, get: function () { return enforcement_1.enforceBudgetConstraint; } });
40
- Object.defineProperty(exports, "enforceCombinedConstraint", { enumerable: true, get: function () { return enforcement_1.enforceCombinedConstraint; } });
41
- Object.defineProperty(exports, "enforceConstraint", { enumerable: true, get: function () { return enforcement_1.enforceConstraint; } });
42
- Object.defineProperty(exports, "enforceControlBlock", { enumerable: true, get: function () { return enforcement_1.enforceControlBlock; } });
43
- // Deprecated enforcement aliases (will be removed in v0.9.17)
44
- var enforcement_2 = require("./enforcement");
45
- Object.defineProperty(exports, "enforceTemporalMandate", { enumerable: true, get: function () { return enforcement_2.enforceTemporalConstraint; } });
46
- Object.defineProperty(exports, "enforceUsageMandate", { enumerable: true, get: function () { return enforcement_2.enforceUsageConstraint; } });
47
- Object.defineProperty(exports, "enforceBudgetMandate", { enumerable: true, get: function () { return enforcement_2.enforceBudgetConstraint; } });
48
- Object.defineProperty(exports, "enforceCombinedMandate", { enumerable: true, get: function () { return enforcement_2.enforceCombinedConstraint; } });
49
- Object.defineProperty(exports, "enforceMandate", { enumerable: true, get: function () { return enforcement_2.enforceConstraint; } });
50
- // State management
51
- var state_1 = require("./state");
52
- Object.defineProperty(exports, "createControlState", { enumerable: true, get: function () { return state_1.createControlState; } });
53
- Object.defineProperty(exports, "updateStateAfterUse", { enumerable: true, get: function () { return state_1.updateStateAfterUse; } });
54
- Object.defineProperty(exports, "isStateExpired", { enumerable: true, get: function () { return state_1.isStateExpired; } });
55
- Object.defineProperty(exports, "resetState", { enumerable: true, get: function () { return state_1.resetState; } });
56
- Object.defineProperty(exports, "getStateSummary", { enumerable: true, get: function () { return state_1.getStateSummary; } });
57
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAIH,qCAAkD;AAAzC,gHAAA,qBAAqB,OAAA;AAoC9B,aAAa;AACb,2CAcsB;AAbpB,sHAAA,wBAAwB,OAAA;AACxB,mHAAA,qBAAqB,OAAA;AACrB,oHAAA,sBAAsB,OAAA;AACtB,sHAAA,wBAAwB,OAAA;AACxB,8GAAA,gBAAgB,OAAA;AAChB,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA;AAClB,qCAAqC;AACrC,kHAAA,oBAAoB,OAAA;AACpB,wHAAA,0BAA0B,OAAA;AAC1B,mHAAA,qBAAqB,OAAA;AACrB,+GAAA,iBAAiB,OAAA;AACjB,qHAAA,uBAAuB,OAAA;AAGzB,4DAA4D;AAC5D,2CAMsB;AALpB,mHAAA,wBAAwB,OAAyB;AACjD,gHAAA,qBAAqB,OAAsB;AAC3C,iHAAA,sBAAsB,OAAuB;AAC7C,mHAAA,wBAAwB,OAAyB;AACjD,2GAAA,gBAAgB,OAAiB;AAGnC,cAAc;AACd,6CAOuB;AANrB,wHAAA,yBAAyB,OAAA;AACzB,qHAAA,sBAAsB,OAAA;AACtB,sHAAA,uBAAuB,OAAA;AACvB,wHAAA,yBAAyB,OAAA;AACzB,gHAAA,iBAAiB,OAAA;AACjB,kHAAA,mBAAmB,OAAA;AAGrB,8DAA8D;AAC9D,6CAMuB;AALrB,qHAAA,yBAAyB,OAA0B;AACnD,kHAAA,sBAAsB,OAAuB;AAC7C,mHAAA,uBAAuB,OAAwB;AAC/C,qHAAA,yBAAyB,OAA0B;AACnD,6GAAA,iBAAiB,OAAkB;AAGrC,mBAAmB;AACnB,iCAMiB;AALf,2GAAA,kBAAkB,OAAA;AAClB,4GAAA,mBAAmB,OAAA;AACnB,uGAAA,cAAc,OAAA;AACd,mGAAA,UAAU,OAAA;AACV,wGAAA,eAAe,OAAA"}
package/dist/state.js DELETED
@@ -1,139 +0,0 @@
1
- "use strict";
2
- /**
3
- * PEAC Control Abstraction Layer (CAL) State Management
4
- *
5
- * State tracking and updates for control blocks.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.createControlState = createControlState;
9
- exports.updateStateAfterUse = updateStateAfterUse;
10
- exports.isStateExpired = isStateExpired;
11
- exports.resetState = resetState;
12
- exports.getStateSummary = getStateSummary;
13
- /**
14
- * Create initial control state
15
- */
16
- function createControlState(receiptId, constraint) {
17
- return {
18
- receipt_id: receiptId,
19
- constraint,
20
- usage_count: 0,
21
- spent_amount: 0,
22
- metadata: {},
23
- };
24
- }
25
- /**
26
- * Update state after usage
27
- */
28
- function updateStateAfterUse(state, amount) {
29
- const currentTime = Math.floor(Date.now() / 1000);
30
- const usageCount = (state.usage_count ?? 0) + 1;
31
- const spentAmount = (state.spent_amount ?? 0) + (amount ?? 0);
32
- return {
33
- ...state,
34
- usage_count: usageCount,
35
- spent_amount: spentAmount,
36
- first_use: state.first_use ?? currentTime,
37
- last_use: currentTime,
38
- };
39
- }
40
- /**
41
- * Check if state is expired
42
- */
43
- function isStateExpired(state) {
44
- const { constraint: mandate } = state;
45
- const currentTime = Math.floor(Date.now() / 1000);
46
- // Check temporal expiry
47
- if (mandate.type === 'temporal') {
48
- if (mandate.valid_until !== undefined && currentTime > mandate.valid_until) {
49
- return true;
50
- }
51
- if (mandate.duration !== undefined && state.first_use !== undefined) {
52
- const expiresAt = state.first_use + mandate.duration;
53
- if (currentTime > expiresAt) {
54
- return true;
55
- }
56
- }
57
- }
58
- // Check combined mandate temporal expiry
59
- if (mandate.type === 'combined' && mandate.temporal) {
60
- if (mandate.temporal.valid_until !== undefined && currentTime > mandate.temporal.valid_until) {
61
- return true;
62
- }
63
- if (mandate.temporal.duration !== undefined && state.first_use !== undefined) {
64
- const expiresAt = state.first_use + mandate.temporal.duration;
65
- if (currentTime > expiresAt) {
66
- return true;
67
- }
68
- }
69
- }
70
- // Check window expiry for usage mandates
71
- if (mandate.type === 'usage' && mandate.window !== undefined && state.first_use !== undefined) {
72
- const windowExpiry = state.first_use + mandate.window;
73
- if (currentTime > windowExpiry) {
74
- return true;
75
- }
76
- }
77
- // Check window expiry for budget mandates
78
- if (mandate.type === 'budget' && mandate.window !== undefined && state.first_use !== undefined) {
79
- const windowExpiry = state.first_use + mandate.window;
80
- if (currentTime > windowExpiry) {
81
- return true;
82
- }
83
- }
84
- // Check window expiry for combined mandates
85
- if (mandate.type === 'combined') {
86
- if (mandate.usage?.window !== undefined && state.first_use !== undefined) {
87
- const windowExpiry = state.first_use + mandate.usage.window;
88
- if (currentTime > windowExpiry) {
89
- return true;
90
- }
91
- }
92
- if (mandate.budget?.window !== undefined && state.first_use !== undefined) {
93
- const windowExpiry = state.first_use + mandate.budget.window;
94
- if (currentTime > windowExpiry) {
95
- return true;
96
- }
97
- }
98
- }
99
- return false;
100
- }
101
- /**
102
- * Reset state (for windowed mandates)
103
- */
104
- function resetState(state) {
105
- return {
106
- ...state,
107
- usage_count: 0,
108
- spent_amount: 0,
109
- first_use: undefined,
110
- last_use: undefined,
111
- };
112
- }
113
- /**
114
- * Get state summary for debugging
115
- */
116
- function getStateSummary(state) {
117
- const parts = [];
118
- if (state.usage_count !== undefined && state.usage_count > 0) {
119
- parts.push(`uses: ${state.usage_count}`);
120
- }
121
- if (state.spent_amount !== undefined && state.spent_amount > 0) {
122
- const currency = state.constraint.type === 'budget'
123
- ? state.constraint.currency
124
- : state.constraint.type === 'combined' && state.constraint.budget
125
- ? state.constraint.budget.currency
126
- : 'units';
127
- parts.push(`spent: ${state.spent_amount} ${currency}`);
128
- }
129
- if (state.first_use !== undefined) {
130
- const date = new Date(state.first_use * 1000).toISOString();
131
- parts.push(`first: ${date}`);
132
- }
133
- if (state.last_use !== undefined) {
134
- const date = new Date(state.last_use * 1000).toISOString();
135
- parts.push(`last: ${date}`);
136
- }
137
- return parts.join(', ');
138
- }
139
- //# sourceMappingURL=state.js.map
package/dist/state.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
package/dist/types.js DELETED
@@ -1,6 +0,0 @@
1
- "use strict";
2
- /**
3
- * PEAC Control Types
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- //# 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":";AAAA;;GAEG"}
@@ -1,159 +0,0 @@
1
- "use strict";
2
- /**
3
- * PEAC Control Abstraction Layer (CAL) Validators
4
- *
5
- * Validation logic for control blocks and mandates.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.ChainControlBlockSchema = exports.ControlStepSchema = exports.ControlDecisionSchema = exports.ControlLicensingModeSchema = exports.ControlPurposeSchema = exports.ControlStateSchema = exports.ControlBlockSchema = exports.ConstraintSchema = exports.CombinedConstraintSchema = exports.BudgetConstraintSchema = exports.UsageConstraintSchema = exports.TemporalConstraintSchema = void 0;
9
- const zod_1 = require("zod");
10
- /**
11
- * Base temporal mandate schema (without refinements)
12
- */
13
- const TemporalConstraintBaseSchema = zod_1.z.object({
14
- type: zod_1.z.literal('temporal'),
15
- valid_from: zod_1.z.number().int().positive().optional(),
16
- valid_until: zod_1.z.number().int().positive().optional(),
17
- duration: zod_1.z.number().int().positive().optional(),
18
- });
19
- /**
20
- * Base usage mandate schema (without refinements)
21
- */
22
- const UsageConstraintBaseSchema = zod_1.z.object({
23
- type: zod_1.z.literal('usage'),
24
- max_uses: zod_1.z.number().int().positive(),
25
- current_uses: zod_1.z.number().int().nonnegative().optional(),
26
- window: zod_1.z.number().int().positive().optional(),
27
- });
28
- /**
29
- * Base budget mandate schema (without refinements)
30
- */
31
- const BudgetConstraintBaseSchema = zod_1.z.object({
32
- type: zod_1.z.literal('budget'),
33
- max_amount: zod_1.z.number().int().positive(),
34
- current_amount: zod_1.z.number().int().nonnegative().optional(),
35
- window: zod_1.z.number().int().positive().optional(),
36
- currency: zod_1.z.string().length(3).toUpperCase(),
37
- });
38
- /**
39
- * Base combined mandate schema (without refinements)
40
- */
41
- const CombinedConstraintBaseSchema = zod_1.z.object({
42
- type: zod_1.z.literal('combined'),
43
- temporal: zod_1.z
44
- .object({
45
- valid_from: zod_1.z.number().int().positive().optional(),
46
- valid_until: zod_1.z.number().int().positive().optional(),
47
- duration: zod_1.z.number().int().positive().optional(),
48
- })
49
- .optional(),
50
- usage: zod_1.z
51
- .object({
52
- max_uses: zod_1.z.number().int().positive(),
53
- current_uses: zod_1.z.number().int().nonnegative().optional(),
54
- window: zod_1.z.number().int().positive().optional(),
55
- })
56
- .optional(),
57
- budget: zod_1.z
58
- .object({
59
- max_amount: zod_1.z.number().int().positive(),
60
- current_amount: zod_1.z.number().int().nonnegative().optional(),
61
- window: zod_1.z.number().int().positive().optional(),
62
- currency: zod_1.z.string().length(3).toUpperCase(),
63
- })
64
- .optional(),
65
- });
66
- /**
67
- * Temporal mandate schema (with validation)
68
- */
69
- exports.TemporalConstraintSchema = TemporalConstraintBaseSchema.refine((data) => {
70
- // At least one temporal constraint must be specified
71
- return (data.valid_from !== undefined || data.valid_until !== undefined || data.duration !== undefined);
72
- }, {
73
- message: 'At least one temporal constraint (valid_from, valid_until, duration) must be specified',
74
- }).refine((data) => {
75
- // If both valid_from and valid_until are specified, valid_until must be after valid_from
76
- if (data.valid_from !== undefined && data.valid_until !== undefined) {
77
- return data.valid_until > data.valid_from;
78
- }
79
- return true;
80
- }, {
81
- message: 'valid_until must be after valid_from',
82
- });
83
- /**
84
- * Usage mandate schema (with validation)
85
- */
86
- exports.UsageConstraintSchema = UsageConstraintBaseSchema.refine((data) => {
87
- // current_uses cannot exceed max_uses
88
- if (data.current_uses !== undefined) {
89
- return data.current_uses <= data.max_uses;
90
- }
91
- return true;
92
- }, {
93
- message: 'current_uses cannot exceed max_uses',
94
- });
95
- /**
96
- * Budget mandate schema (with validation)
97
- */
98
- exports.BudgetConstraintSchema = BudgetConstraintBaseSchema.refine((data) => {
99
- // current_amount cannot exceed max_amount
100
- if (data.current_amount !== undefined) {
101
- return data.current_amount <= data.max_amount;
102
- }
103
- return true;
104
- }, {
105
- message: 'current_amount cannot exceed max_amount',
106
- });
107
- /**
108
- * Combined mandate schema (with validation)
109
- */
110
- exports.CombinedConstraintSchema = CombinedConstraintBaseSchema.refine((data) => {
111
- // At least one mandate type must be specified
112
- return data.temporal !== undefined || data.usage !== undefined || data.budget !== undefined;
113
- }, {
114
- message: 'At least one mandate (temporal, usage, budget) must be specified in combined type',
115
- });
116
- /**
117
- * Constraint schema (discriminated union using base schemas)
118
- */
119
- exports.ConstraintSchema = zod_1.z.discriminatedUnion('type', [
120
- TemporalConstraintBaseSchema,
121
- UsageConstraintBaseSchema,
122
- BudgetConstraintBaseSchema,
123
- CombinedConstraintBaseSchema,
124
- ]);
125
- /**
126
- * Control block schema
127
- */
128
- exports.ControlBlockSchema = zod_1.z.object({
129
- mandate: exports.ConstraintSchema,
130
- scope: zod_1.z.string().url().optional(),
131
- metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
132
- });
133
- /**
134
- * Control state schema
135
- */
136
- exports.ControlStateSchema = zod_1.z.object({
137
- receipt_id: zod_1.z.string().uuid(),
138
- constraint: exports.ConstraintSchema,
139
- usage_count: zod_1.z.number().int().nonnegative().optional(),
140
- spent_amount: zod_1.z.number().int().nonnegative().optional(),
141
- first_use: zod_1.z.number().int().positive().optional(),
142
- last_use: zod_1.z.number().int().positive().optional(),
143
- metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
144
- });
145
- // -----------------------------------------------------------------------------
146
- // CAL Semantic Validators (v0.9.16+)
147
- // Re-exported from @peac/schema for convenience
148
- // -----------------------------------------------------------------------------
149
- var schema_1 = require("@peac/schema");
150
- Object.defineProperty(exports, "ControlPurposeSchema", { enumerable: true, get: function () { return schema_1.ControlPurposeSchema; } });
151
- Object.defineProperty(exports, "ControlLicensingModeSchema", { enumerable: true, get: function () { return schema_1.ControlLicensingModeSchema; } });
152
- Object.defineProperty(exports, "ControlDecisionSchema", { enumerable: true, get: function () { return schema_1.ControlDecisionSchema; } });
153
- Object.defineProperty(exports, "ControlStepSchema", { enumerable: true, get: function () { return schema_1.ControlStepSchema; } });
154
- // Note: ControlBlockSchema from @peac/schema validates chain-based governance blocks
155
- // (chain/decision/combinator), while the ControlBlockSchema above validates
156
- // constraint-based blocks (mandate/scope/metadata). We export the chain-based
157
- // one with a distinct name to avoid confusion.
158
- Object.defineProperty(exports, "ChainControlBlockSchema", { enumerable: true, get: function () { return schema_1.ControlBlockSchema; } });
159
- //# sourceMappingURL=validators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}