@vorionsys/contracts 0.1.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.
- package/dist/aci/aci-string.d.ts +539 -0
- package/dist/aci/aci-string.d.ts.map +1 -0
- package/dist/aci/aci-string.js +563 -0
- package/dist/aci/aci-string.js.map +1 -0
- package/dist/aci/attestation.d.ts +648 -0
- package/dist/aci/attestation.d.ts.map +1 -0
- package/dist/aci/attestation.js +289 -0
- package/dist/aci/attestation.js.map +1 -0
- package/dist/aci/domains.d.ts +260 -0
- package/dist/aci/domains.d.ts.map +1 -0
- package/dist/aci/domains.js +322 -0
- package/dist/aci/domains.js.map +1 -0
- package/dist/aci/effective-permission.d.ts +371 -0
- package/dist/aci/effective-permission.d.ts.map +1 -0
- package/dist/aci/effective-permission.js +351 -0
- package/dist/aci/effective-permission.js.map +1 -0
- package/dist/aci/identity.d.ts +1100 -0
- package/dist/aci/identity.d.ts.map +1 -0
- package/dist/aci/identity.js +328 -0
- package/dist/aci/identity.js.map +1 -0
- package/dist/aci/index.d.ts +67 -0
- package/dist/aci/index.d.ts.map +1 -0
- package/dist/aci/index.js +157 -0
- package/dist/aci/index.js.map +1 -0
- package/dist/aci/jwt-claims.d.ts +756 -0
- package/dist/aci/jwt-claims.d.ts.map +1 -0
- package/dist/aci/jwt-claims.js +335 -0
- package/dist/aci/jwt-claims.js.map +1 -0
- package/dist/aci/levels.d.ts +279 -0
- package/dist/aci/levels.d.ts.map +1 -0
- package/dist/aci/levels.js +467 -0
- package/dist/aci/levels.js.map +1 -0
- package/dist/aci/mapping.d.ts +291 -0
- package/dist/aci/mapping.d.ts.map +1 -0
- package/dist/aci/mapping.js +427 -0
- package/dist/aci/mapping.js.map +1 -0
- package/dist/aci/skills.d.ts +314 -0
- package/dist/aci/skills.d.ts.map +1 -0
- package/dist/aci/skills.js +404 -0
- package/dist/aci/skills.js.map +1 -0
- package/dist/aci/tiers.d.ts +403 -0
- package/dist/aci/tiers.d.ts.map +1 -0
- package/dist/aci/tiers.js +659 -0
- package/dist/aci/tiers.js.map +1 -0
- package/dist/canonical/agent.d.ts +796 -0
- package/dist/canonical/agent.d.ts.map +1 -0
- package/dist/canonical/agent.js +527 -0
- package/dist/canonical/agent.js.map +1 -0
- package/dist/canonical/governance.d.ts +905 -0
- package/dist/canonical/governance.d.ts.map +1 -0
- package/dist/canonical/governance.js +454 -0
- package/dist/canonical/governance.js.map +1 -0
- package/dist/canonical/index.d.ts +17 -0
- package/dist/canonical/index.d.ts.map +1 -0
- package/dist/canonical/index.js +21 -0
- package/dist/canonical/index.js.map +1 -0
- package/dist/canonical/intent.d.ts +727 -0
- package/dist/canonical/intent.d.ts.map +1 -0
- package/dist/canonical/intent.js +203 -0
- package/dist/canonical/intent.js.map +1 -0
- package/dist/canonical/risk-level.d.ts +344 -0
- package/dist/canonical/risk-level.d.ts.map +1 -0
- package/dist/canonical/risk-level.js +472 -0
- package/dist/canonical/risk-level.js.map +1 -0
- package/dist/canonical/trust-band.d.ts +239 -0
- package/dist/canonical/trust-band.d.ts.map +1 -0
- package/dist/canonical/trust-band.js +298 -0
- package/dist/canonical/trust-band.js.map +1 -0
- package/dist/canonical/trust-score.d.ts +301 -0
- package/dist/canonical/trust-score.d.ts.map +1 -0
- package/dist/canonical/trust-score.js +390 -0
- package/dist/canonical/trust-score.js.map +1 -0
- package/dist/canonical/trust-signal.d.ts +617 -0
- package/dist/canonical/trust-signal.d.ts.map +1 -0
- package/dist/canonical/trust-signal.js +355 -0
- package/dist/canonical/trust-signal.js.map +1 -0
- package/dist/canonical/validation.d.ts +231 -0
- package/dist/canonical/validation.d.ts.map +1 -0
- package/dist/canonical/validation.js +558 -0
- package/dist/canonical/validation.js.map +1 -0
- package/dist/common/index.d.ts +7 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +7 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/primitives.d.ts +56 -0
- package/dist/common/primitives.d.ts.map +1 -0
- package/dist/common/primitives.js +70 -0
- package/dist/common/primitives.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/v2/canary-probe.d.ts +201 -0
- package/dist/v2/canary-probe.d.ts.map +1 -0
- package/dist/v2/canary-probe.js +99 -0
- package/dist/v2/canary-probe.js.map +1 -0
- package/dist/v2/component.d.ts +132 -0
- package/dist/v2/component.d.ts.map +1 -0
- package/dist/v2/component.js +5 -0
- package/dist/v2/component.js.map +1 -0
- package/dist/v2/decision.d.ts +310 -0
- package/dist/v2/decision.d.ts.map +1 -0
- package/dist/v2/decision.js +21 -0
- package/dist/v2/decision.js.map +1 -0
- package/dist/v2/enums.d.ts +185 -0
- package/dist/v2/enums.d.ts.map +1 -0
- package/dist/v2/enums.js +203 -0
- package/dist/v2/enums.js.map +1 -0
- package/dist/v2/evidence.d.ts +368 -0
- package/dist/v2/evidence.d.ts.map +1 -0
- package/dist/v2/evidence.js +152 -0
- package/dist/v2/evidence.js.map +1 -0
- package/dist/v2/execution.d.ts +190 -0
- package/dist/v2/execution.d.ts.map +1 -0
- package/dist/v2/execution.js +5 -0
- package/dist/v2/execution.js.map +1 -0
- package/dist/v2/index.d.ts +19 -0
- package/dist/v2/index.d.ts.map +1 -0
- package/dist/v2/index.js +32 -0
- package/dist/v2/index.js.map +1 -0
- package/dist/v2/intent.d.ts +89 -0
- package/dist/v2/intent.d.ts.map +1 -0
- package/dist/v2/intent.js +5 -0
- package/dist/v2/intent.js.map +1 -0
- package/dist/v2/policy-bundle.d.ts +166 -0
- package/dist/v2/policy-bundle.d.ts.map +1 -0
- package/dist/v2/policy-bundle.js +20 -0
- package/dist/v2/policy-bundle.js.map +1 -0
- package/dist/v2/pre-action-gate.d.ts +185 -0
- package/dist/v2/pre-action-gate.d.ts.map +1 -0
- package/dist/v2/pre-action-gate.js +64 -0
- package/dist/v2/pre-action-gate.js.map +1 -0
- package/dist/v2/proof-event.d.ts +201 -0
- package/dist/v2/proof-event.d.ts.map +1 -0
- package/dist/v2/proof-event.js +5 -0
- package/dist/v2/proof-event.js.map +1 -0
- package/dist/v2/retention.d.ts +329 -0
- package/dist/v2/retention.d.ts.map +1 -0
- package/dist/v2/retention.js +162 -0
- package/dist/v2/retention.js.map +1 -0
- package/dist/v2/trust-delta.d.ts +119 -0
- package/dist/v2/trust-delta.d.ts.map +1 -0
- package/dist/v2/trust-delta.js +28 -0
- package/dist/v2/trust-delta.js.map +1 -0
- package/dist/v2/trust-profile.d.ts +337 -0
- package/dist/v2/trust-profile.d.ts.map +1 -0
- package/dist/v2/trust-profile.js +96 -0
- package/dist/v2/trust-profile.js.map +1 -0
- package/dist/validators/decision.d.ts +430 -0
- package/dist/validators/decision.d.ts.map +1 -0
- package/dist/validators/decision.js +61 -0
- package/dist/validators/decision.js.map +1 -0
- package/dist/validators/enums.d.ts +24 -0
- package/dist/validators/enums.d.ts.map +1 -0
- package/dist/validators/enums.js +24 -0
- package/dist/validators/enums.js.map +1 -0
- package/dist/validators/index.d.ts +30 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +42 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/intent.d.ts +229 -0
- package/dist/validators/intent.d.ts.map +1 -0
- package/dist/validators/intent.js +47 -0
- package/dist/validators/intent.js.map +1 -0
- package/dist/validators/proof-event.d.ts +981 -0
- package/dist/validators/proof-event.d.ts.map +1 -0
- package/dist/validators/proof-event.js +134 -0
- package/dist/validators/proof-event.js.map +1 -0
- package/dist/validators/trust-profile.d.ts +350 -0
- package/dist/validators/trust-profile.d.ts.map +1 -0
- package/dist/validators/trust-profile.js +65 -0
- package/dist/validators/trust-profile.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,558 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical Validation Module
|
|
3
|
+
*
|
|
4
|
+
* Runtime validation functions and type guards for all canonical types
|
|
5
|
+
* in the Vorion Platform.
|
|
6
|
+
*
|
|
7
|
+
* Use these functions to validate data at runtime boundaries (API inputs,
|
|
8
|
+
* external data sources, configuration loading, etc.)
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
import { TrustBand, ObservationTier, DataSensitivity, Reversibility, ActionType, ProofEventType, ComponentType, ComponentStatus, ApprovalType, OBSERVATION_CEILINGS, } from '../v2/enums.js';
|
|
13
|
+
import { DEFAULT_TRUST_WEIGHTS, DEFAULT_BAND_THRESHOLDS, RiskProfile, } from '../v2/trust-profile.js';
|
|
14
|
+
import { TrustDeltaReason } from '../v2/trust-delta.js';
|
|
15
|
+
import { DenialReason } from '../v2/decision.js';
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Constants
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Valid range for trust scores (0-1000 canonical scale)
|
|
21
|
+
*/
|
|
22
|
+
export const TRUST_SCORE_RANGE = {
|
|
23
|
+
min: 0,
|
|
24
|
+
max: 1000,
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Valid range for trust dimension scores (0-100 percentage scale)
|
|
28
|
+
* Note: Dimensions use 0-100 percentage, composite score uses 0-1000
|
|
29
|
+
*/
|
|
30
|
+
export const DIMENSION_SCORE_RANGE = {
|
|
31
|
+
min: 0,
|
|
32
|
+
max: 100,
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Valid range for trust weights (must sum to 1.0)
|
|
36
|
+
*/
|
|
37
|
+
export const WEIGHT_RANGE = {
|
|
38
|
+
min: 0,
|
|
39
|
+
max: 1,
|
|
40
|
+
};
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// Validation Error Class
|
|
43
|
+
// ============================================================================
|
|
44
|
+
/**
|
|
45
|
+
* Custom error class for validation failures
|
|
46
|
+
*/
|
|
47
|
+
export class ValidationError extends Error {
|
|
48
|
+
field;
|
|
49
|
+
value;
|
|
50
|
+
expected;
|
|
51
|
+
constructor(message, field, value, expected) {
|
|
52
|
+
super(`${field}: ${message} (got ${JSON.stringify(value)}, expected ${expected})`);
|
|
53
|
+
this.field = field;
|
|
54
|
+
this.value = value;
|
|
55
|
+
this.expected = expected;
|
|
56
|
+
this.name = 'ValidationError';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// ============================================================================
|
|
60
|
+
// Type Guards - TrustBand
|
|
61
|
+
// ============================================================================
|
|
62
|
+
/**
|
|
63
|
+
* Check if a value is a valid TrustBand
|
|
64
|
+
*/
|
|
65
|
+
export function isTrustBand(value) {
|
|
66
|
+
return typeof value === 'number' && Object.values(TrustBand).includes(value);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check if a value is a valid TrustBand name (string form)
|
|
70
|
+
*/
|
|
71
|
+
export function isTrustBandName(value) {
|
|
72
|
+
return typeof value === 'string' && value in TrustBand;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Assert that a value is a valid TrustBand
|
|
76
|
+
* @throws ValidationError if invalid
|
|
77
|
+
*/
|
|
78
|
+
export function assertValidTrustBand(value, field = 'trustBand') {
|
|
79
|
+
if (!isTrustBand(value)) {
|
|
80
|
+
throw new ValidationError('Invalid trust band', field, value, `one of ${Object.keys(TrustBand)
|
|
81
|
+
.filter((k) => isNaN(Number(k)))
|
|
82
|
+
.join(', ')}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parse a trust band from string or number
|
|
87
|
+
*/
|
|
88
|
+
export function parseTrustBand(value) {
|
|
89
|
+
if (typeof value === 'number' && isTrustBand(value)) {
|
|
90
|
+
return value;
|
|
91
|
+
}
|
|
92
|
+
if (typeof value === 'string') {
|
|
93
|
+
// Try as enum key (e.g., "T3_MONITORED")
|
|
94
|
+
if (value in TrustBand) {
|
|
95
|
+
return TrustBand[value];
|
|
96
|
+
}
|
|
97
|
+
// Try as short form (e.g., "T3")
|
|
98
|
+
const shortFormMatch = value.match(/^T(\d)$/i);
|
|
99
|
+
if (shortFormMatch && shortFormMatch[1]) {
|
|
100
|
+
const level = parseInt(shortFormMatch[1], 10);
|
|
101
|
+
if (level >= 0 && level <= 7) {
|
|
102
|
+
return level;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
// ============================================================================
|
|
109
|
+
// Type Guards - TrustScore
|
|
110
|
+
// ============================================================================
|
|
111
|
+
/**
|
|
112
|
+
* Check if a value is a valid trust score (0-100)
|
|
113
|
+
*/
|
|
114
|
+
export function isTrustScore(value) {
|
|
115
|
+
return (typeof value === 'number' &&
|
|
116
|
+
!isNaN(value) &&
|
|
117
|
+
value >= TRUST_SCORE_RANGE.min &&
|
|
118
|
+
value <= TRUST_SCORE_RANGE.max);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Assert that a value is a valid trust score
|
|
122
|
+
* @throws ValidationError if invalid
|
|
123
|
+
*/
|
|
124
|
+
export function assertValidTrustScore(value, field = 'trustScore') {
|
|
125
|
+
if (!isTrustScore(value)) {
|
|
126
|
+
throw new ValidationError('Invalid trust score', field, value, `number between ${TRUST_SCORE_RANGE.min} and ${TRUST_SCORE_RANGE.max}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Clamp a trust score to valid range
|
|
131
|
+
*/
|
|
132
|
+
export function clampTrustScore(value) {
|
|
133
|
+
return Math.max(TRUST_SCORE_RANGE.min, Math.min(TRUST_SCORE_RANGE.max, value));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Round a trust score to specified decimal places
|
|
137
|
+
*/
|
|
138
|
+
export function roundTrustScore(value, decimals = 2) {
|
|
139
|
+
const multiplier = Math.pow(10, decimals);
|
|
140
|
+
return Math.round(value * multiplier) / multiplier;
|
|
141
|
+
}
|
|
142
|
+
// ============================================================================
|
|
143
|
+
// Type Guards - ObservationTier
|
|
144
|
+
// ============================================================================
|
|
145
|
+
/**
|
|
146
|
+
* Check if a value is a valid ObservationTier
|
|
147
|
+
*/
|
|
148
|
+
export function isObservationTier(value) {
|
|
149
|
+
return typeof value === 'string' && Object.values(ObservationTier).includes(value);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Assert that a value is a valid ObservationTier
|
|
153
|
+
* @throws ValidationError if invalid
|
|
154
|
+
*/
|
|
155
|
+
export function assertValidObservationTier(value, field = 'observationTier') {
|
|
156
|
+
if (!isObservationTier(value)) {
|
|
157
|
+
throw new ValidationError('Invalid observation tier', field, value, `one of ${Object.values(ObservationTier).join(', ')}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get the trust ceiling for an observation tier
|
|
162
|
+
*/
|
|
163
|
+
export function getObservationCeiling(tier) {
|
|
164
|
+
return OBSERVATION_CEILINGS[tier];
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Apply observation ceiling to a trust score
|
|
168
|
+
*/
|
|
169
|
+
export function applyObservationCeiling(score, tier) {
|
|
170
|
+
const ceiling = getObservationCeiling(tier);
|
|
171
|
+
return Math.min(score, ceiling);
|
|
172
|
+
}
|
|
173
|
+
// ============================================================================
|
|
174
|
+
// Type Guards - DataSensitivity
|
|
175
|
+
// ============================================================================
|
|
176
|
+
/**
|
|
177
|
+
* Check if a value is a valid DataSensitivity
|
|
178
|
+
*/
|
|
179
|
+
export function isDataSensitivity(value) {
|
|
180
|
+
return typeof value === 'string' && Object.values(DataSensitivity).includes(value);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Assert that a value is a valid DataSensitivity
|
|
184
|
+
* @throws ValidationError if invalid
|
|
185
|
+
*/
|
|
186
|
+
export function assertValidDataSensitivity(value, field = 'dataSensitivity') {
|
|
187
|
+
if (!isDataSensitivity(value)) {
|
|
188
|
+
throw new ValidationError('Invalid data sensitivity', field, value, `one of ${Object.values(DataSensitivity).join(', ')}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get numeric severity level for data sensitivity (0-3)
|
|
193
|
+
*/
|
|
194
|
+
export function getDataSensitivityLevel(sensitivity) {
|
|
195
|
+
const levels = {
|
|
196
|
+
[DataSensitivity.PUBLIC]: 0,
|
|
197
|
+
[DataSensitivity.INTERNAL]: 1,
|
|
198
|
+
[DataSensitivity.CONFIDENTIAL]: 2,
|
|
199
|
+
[DataSensitivity.RESTRICTED]: 3,
|
|
200
|
+
};
|
|
201
|
+
return levels[sensitivity];
|
|
202
|
+
}
|
|
203
|
+
// ============================================================================
|
|
204
|
+
// Type Guards - Reversibility
|
|
205
|
+
// ============================================================================
|
|
206
|
+
/**
|
|
207
|
+
* Check if a value is a valid Reversibility
|
|
208
|
+
*/
|
|
209
|
+
export function isReversibility(value) {
|
|
210
|
+
return typeof value === 'string' && Object.values(Reversibility).includes(value);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Assert that a value is a valid Reversibility
|
|
214
|
+
* @throws ValidationError if invalid
|
|
215
|
+
*/
|
|
216
|
+
export function assertValidReversibility(value, field = 'reversibility') {
|
|
217
|
+
if (!isReversibility(value)) {
|
|
218
|
+
throw new ValidationError('Invalid reversibility', field, value, `one of ${Object.values(Reversibility).join(', ')}`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// ============================================================================
|
|
222
|
+
// Type Guards - ActionType
|
|
223
|
+
// ============================================================================
|
|
224
|
+
/**
|
|
225
|
+
* Check if a value is a valid ActionType
|
|
226
|
+
*/
|
|
227
|
+
export function isActionType(value) {
|
|
228
|
+
return typeof value === 'string' && Object.values(ActionType).includes(value);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Assert that a value is a valid ActionType
|
|
232
|
+
* @throws ValidationError if invalid
|
|
233
|
+
*/
|
|
234
|
+
export function assertValidActionType(value, field = 'actionType') {
|
|
235
|
+
if (!isActionType(value)) {
|
|
236
|
+
throw new ValidationError('Invalid action type', field, value, `one of ${Object.values(ActionType).join(', ')}`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// ============================================================================
|
|
240
|
+
// Type Guards - ProofEventType
|
|
241
|
+
// ============================================================================
|
|
242
|
+
/**
|
|
243
|
+
* Check if a value is a valid ProofEventType
|
|
244
|
+
*/
|
|
245
|
+
export function isProofEventType(value) {
|
|
246
|
+
return typeof value === 'string' && Object.values(ProofEventType).includes(value);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Assert that a value is a valid ProofEventType
|
|
250
|
+
* @throws ValidationError if invalid
|
|
251
|
+
*/
|
|
252
|
+
export function assertValidProofEventType(value, field = 'proofEventType') {
|
|
253
|
+
if (!isProofEventType(value)) {
|
|
254
|
+
throw new ValidationError('Invalid proof event type', field, value, `one of ${Object.values(ProofEventType).join(', ')}`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// ============================================================================
|
|
258
|
+
// Type Guards - ComponentType
|
|
259
|
+
// ============================================================================
|
|
260
|
+
/**
|
|
261
|
+
* Check if a value is a valid ComponentType
|
|
262
|
+
*/
|
|
263
|
+
export function isComponentType(value) {
|
|
264
|
+
return typeof value === 'string' && Object.values(ComponentType).includes(value);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Assert that a value is a valid ComponentType
|
|
268
|
+
* @throws ValidationError if invalid
|
|
269
|
+
*/
|
|
270
|
+
export function assertValidComponentType(value, field = 'componentType') {
|
|
271
|
+
if (!isComponentType(value)) {
|
|
272
|
+
throw new ValidationError('Invalid component type', field, value, `one of ${Object.values(ComponentType).join(', ')}`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// ============================================================================
|
|
276
|
+
// Type Guards - ComponentStatus
|
|
277
|
+
// ============================================================================
|
|
278
|
+
/**
|
|
279
|
+
* Check if a value is a valid ComponentStatus
|
|
280
|
+
*/
|
|
281
|
+
export function isComponentStatus(value) {
|
|
282
|
+
return typeof value === 'string' && Object.values(ComponentStatus).includes(value);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Assert that a value is a valid ComponentStatus
|
|
286
|
+
* @throws ValidationError if invalid
|
|
287
|
+
*/
|
|
288
|
+
export function assertValidComponentStatus(value, field = 'componentStatus') {
|
|
289
|
+
if (!isComponentStatus(value)) {
|
|
290
|
+
throw new ValidationError('Invalid component status', field, value, `one of ${Object.values(ComponentStatus).join(', ')}`);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// ============================================================================
|
|
294
|
+
// Type Guards - ApprovalType
|
|
295
|
+
// ============================================================================
|
|
296
|
+
/**
|
|
297
|
+
* Check if a value is a valid ApprovalType
|
|
298
|
+
*/
|
|
299
|
+
export function isApprovalType(value) {
|
|
300
|
+
return typeof value === 'string' && Object.values(ApprovalType).includes(value);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Assert that a value is a valid ApprovalType
|
|
304
|
+
* @throws ValidationError if invalid
|
|
305
|
+
*/
|
|
306
|
+
export function assertValidApprovalType(value, field = 'approvalType') {
|
|
307
|
+
if (!isApprovalType(value)) {
|
|
308
|
+
throw new ValidationError('Invalid approval type', field, value, `one of ${Object.values(ApprovalType).join(', ')}`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// ============================================================================
|
|
312
|
+
// Type Guards - TrustDeltaReason
|
|
313
|
+
// ============================================================================
|
|
314
|
+
/**
|
|
315
|
+
* Check if a value is a valid TrustDeltaReason
|
|
316
|
+
*/
|
|
317
|
+
export function isTrustDeltaReason(value) {
|
|
318
|
+
return typeof value === 'string' && Object.values(TrustDeltaReason).includes(value);
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Assert that a value is a valid TrustDeltaReason
|
|
322
|
+
* @throws ValidationError if invalid
|
|
323
|
+
*/
|
|
324
|
+
export function assertValidTrustDeltaReason(value, field = 'trustDeltaReason') {
|
|
325
|
+
if (!isTrustDeltaReason(value)) {
|
|
326
|
+
throw new ValidationError('Invalid trust delta reason', field, value, `one of ${Object.values(TrustDeltaReason).join(', ')}`);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// ============================================================================
|
|
330
|
+
// Type Guards - DenialReason
|
|
331
|
+
// ============================================================================
|
|
332
|
+
/**
|
|
333
|
+
* Check if a value is a valid DenialReason
|
|
334
|
+
*/
|
|
335
|
+
export function isDenialReason(value) {
|
|
336
|
+
return typeof value === 'string' && Object.values(DenialReason).includes(value);
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Assert that a value is a valid DenialReason
|
|
340
|
+
* @throws ValidationError if invalid
|
|
341
|
+
*/
|
|
342
|
+
export function assertValidDenialReason(value, field = 'denialReason') {
|
|
343
|
+
if (!isDenialReason(value)) {
|
|
344
|
+
throw new ValidationError('Invalid denial reason', field, value, `one of ${Object.values(DenialReason).join(', ')}`);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
// ============================================================================
|
|
348
|
+
// Type Guards - RiskProfile
|
|
349
|
+
// ============================================================================
|
|
350
|
+
/**
|
|
351
|
+
* Check if a value is a valid RiskProfile
|
|
352
|
+
*/
|
|
353
|
+
export function isRiskProfile(value) {
|
|
354
|
+
return typeof value === 'string' && Object.values(RiskProfile).includes(value);
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Assert that a value is a valid RiskProfile
|
|
358
|
+
* @throws ValidationError if invalid
|
|
359
|
+
*/
|
|
360
|
+
export function assertValidRiskProfile(value, field = 'riskProfile') {
|
|
361
|
+
if (!isRiskProfile(value)) {
|
|
362
|
+
throw new ValidationError('Invalid risk profile', field, value, `one of ${Object.values(RiskProfile).join(', ')}`);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// ============================================================================
|
|
366
|
+
// Composite Type Guards - TrustDimensions
|
|
367
|
+
// ============================================================================
|
|
368
|
+
/**
|
|
369
|
+
* Check if a value has valid TrustDimensions structure
|
|
370
|
+
*/
|
|
371
|
+
export function isTrustDimensions(value) {
|
|
372
|
+
if (typeof value !== 'object' || value === null) {
|
|
373
|
+
return false;
|
|
374
|
+
}
|
|
375
|
+
const dimensions = value;
|
|
376
|
+
const requiredKeys = ['CT', 'BT', 'GT', 'XT', 'AC'];
|
|
377
|
+
return requiredKeys.every((key) => key in dimensions &&
|
|
378
|
+
typeof dimensions[key] === 'number' &&
|
|
379
|
+
dimensions[key] >= DIMENSION_SCORE_RANGE.min &&
|
|
380
|
+
dimensions[key] <= DIMENSION_SCORE_RANGE.max);
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Assert that a value has valid TrustDimensions
|
|
384
|
+
* @throws ValidationError if invalid
|
|
385
|
+
*/
|
|
386
|
+
export function assertValidTrustDimensions(value, field = 'trustDimensions') {
|
|
387
|
+
if (typeof value !== 'object' || value === null) {
|
|
388
|
+
throw new ValidationError('Invalid trust dimensions', field, value, 'object with CT, BT, GT, XT, AC');
|
|
389
|
+
}
|
|
390
|
+
const dimensions = value;
|
|
391
|
+
const requiredKeys = ['CT', 'BT', 'GT', 'XT', 'AC'];
|
|
392
|
+
for (const key of requiredKeys) {
|
|
393
|
+
if (!(key in dimensions)) {
|
|
394
|
+
throw new ValidationError(`Missing dimension ${key}`, `${field}.${key}`, undefined, `number 0-100`);
|
|
395
|
+
}
|
|
396
|
+
const dimValue = dimensions[key];
|
|
397
|
+
if (typeof dimValue !== 'number' || isNaN(dimValue)) {
|
|
398
|
+
throw new ValidationError(`Invalid dimension ${key}`, `${field}.${key}`, dimValue, `number 0-100`);
|
|
399
|
+
}
|
|
400
|
+
if (dimValue < DIMENSION_SCORE_RANGE.min || dimValue > DIMENSION_SCORE_RANGE.max) {
|
|
401
|
+
throw new ValidationError(`Dimension ${key} out of range`, `${field}.${key}`, dimValue, `number between ${DIMENSION_SCORE_RANGE.min} and ${DIMENSION_SCORE_RANGE.max}`);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
// ============================================================================
|
|
406
|
+
// Composite Type Guards - TrustWeights
|
|
407
|
+
// ============================================================================
|
|
408
|
+
/**
|
|
409
|
+
* Check if a value has valid TrustWeights structure
|
|
410
|
+
*/
|
|
411
|
+
export function isTrustWeights(value) {
|
|
412
|
+
if (typeof value !== 'object' || value === null) {
|
|
413
|
+
return false;
|
|
414
|
+
}
|
|
415
|
+
const weights = value;
|
|
416
|
+
const requiredKeys = ['CT', 'BT', 'GT', 'XT', 'AC'];
|
|
417
|
+
const hasValidKeys = requiredKeys.every((key) => key in weights &&
|
|
418
|
+
typeof weights[key] === 'number' &&
|
|
419
|
+
weights[key] >= WEIGHT_RANGE.min &&
|
|
420
|
+
weights[key] <= WEIGHT_RANGE.max);
|
|
421
|
+
if (!hasValidKeys) {
|
|
422
|
+
return false;
|
|
423
|
+
}
|
|
424
|
+
// Check sum equals 1.0 (with tolerance for floating point)
|
|
425
|
+
const sum = requiredKeys.reduce((acc, key) => acc + weights[key], 0);
|
|
426
|
+
return Math.abs(sum - 1.0) < 0.001;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Assert that a value has valid TrustWeights
|
|
430
|
+
* @throws ValidationError if invalid
|
|
431
|
+
*/
|
|
432
|
+
export function assertValidTrustWeights(value, field = 'trustWeights') {
|
|
433
|
+
if (typeof value !== 'object' || value === null) {
|
|
434
|
+
throw new ValidationError('Invalid trust weights', field, value, 'object with CT, BT, GT, XT, AC summing to 1.0');
|
|
435
|
+
}
|
|
436
|
+
const weights = value;
|
|
437
|
+
const requiredKeys = ['CT', 'BT', 'GT', 'XT', 'AC'];
|
|
438
|
+
let sum = 0;
|
|
439
|
+
for (const key of requiredKeys) {
|
|
440
|
+
if (!(key in weights)) {
|
|
441
|
+
throw new ValidationError(`Missing weight ${key}`, `${field}.${key}`, undefined, `number 0-1`);
|
|
442
|
+
}
|
|
443
|
+
const weightValue = weights[key];
|
|
444
|
+
if (typeof weightValue !== 'number' || isNaN(weightValue)) {
|
|
445
|
+
throw new ValidationError(`Invalid weight ${key}`, `${field}.${key}`, weightValue, `number 0-1`);
|
|
446
|
+
}
|
|
447
|
+
if (weightValue < WEIGHT_RANGE.min || weightValue > WEIGHT_RANGE.max) {
|
|
448
|
+
throw new ValidationError(`Weight ${key} out of range`, `${field}.${key}`, weightValue, `number between ${WEIGHT_RANGE.min} and ${WEIGHT_RANGE.max}`);
|
|
449
|
+
}
|
|
450
|
+
sum += weightValue;
|
|
451
|
+
}
|
|
452
|
+
if (Math.abs(sum - 1.0) >= 0.001) {
|
|
453
|
+
throw new ValidationError('Weights do not sum to 1.0', field, sum, '1.0');
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
// ============================================================================
|
|
457
|
+
// Band Threshold Validation
|
|
458
|
+
// ============================================================================
|
|
459
|
+
/**
|
|
460
|
+
* Check if a value has valid BandThresholds structure
|
|
461
|
+
*/
|
|
462
|
+
export function isBandThresholds(value) {
|
|
463
|
+
if (typeof value !== 'object' || value === null) {
|
|
464
|
+
return false;
|
|
465
|
+
}
|
|
466
|
+
const thresholds = value;
|
|
467
|
+
const requiredBands = ['T0', 'T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'];
|
|
468
|
+
return requiredBands.every((band) => {
|
|
469
|
+
const bandValue = thresholds[band];
|
|
470
|
+
if (typeof bandValue !== 'object' || bandValue === null) {
|
|
471
|
+
return false;
|
|
472
|
+
}
|
|
473
|
+
const range = bandValue;
|
|
474
|
+
return (typeof range.min === 'number' &&
|
|
475
|
+
typeof range.max === 'number' &&
|
|
476
|
+
range.min >= 0 &&
|
|
477
|
+
range.max <= 100 &&
|
|
478
|
+
range.min <= range.max);
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Assert that a value has valid BandThresholds
|
|
483
|
+
* @throws ValidationError if invalid
|
|
484
|
+
*/
|
|
485
|
+
export function assertValidBandThresholds(value, field = 'bandThresholds') {
|
|
486
|
+
if (typeof value !== 'object' || value === null) {
|
|
487
|
+
throw new ValidationError('Invalid band thresholds', field, value, 'object with T0-T7 ranges');
|
|
488
|
+
}
|
|
489
|
+
const thresholds = value;
|
|
490
|
+
const requiredBands = ['T0', 'T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'];
|
|
491
|
+
for (const band of requiredBands) {
|
|
492
|
+
if (!(band in thresholds)) {
|
|
493
|
+
throw new ValidationError(`Missing band ${band}`, `${field}.${band}`, undefined, `{min: number, max: number}`);
|
|
494
|
+
}
|
|
495
|
+
const bandValue = thresholds[band];
|
|
496
|
+
if (typeof bandValue !== 'object' || bandValue === null) {
|
|
497
|
+
throw new ValidationError(`Invalid band ${band}`, `${field}.${band}`, bandValue, `{min: number, max: number}`);
|
|
498
|
+
}
|
|
499
|
+
const range = bandValue;
|
|
500
|
+
if (typeof range.min !== 'number' || typeof range.max !== 'number') {
|
|
501
|
+
throw new ValidationError(`Invalid band ${band} range`, `${field}.${band}`, range, `{min: number, max: number}`);
|
|
502
|
+
}
|
|
503
|
+
if (range.min < 0 || range.max > 100 || range.min > range.max) {
|
|
504
|
+
throw new ValidationError(`Band ${band} range out of bounds`, `${field}.${band}`, range, `min >= 0, max <= 100, min <= max`);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
// ============================================================================
|
|
509
|
+
// Utility Functions
|
|
510
|
+
// ============================================================================
|
|
511
|
+
/**
|
|
512
|
+
* Calculate the trust band for a given score using default thresholds
|
|
513
|
+
*/
|
|
514
|
+
export function calculateTrustBand(score, thresholds = DEFAULT_BAND_THRESHOLDS) {
|
|
515
|
+
assertValidTrustScore(score);
|
|
516
|
+
if (score <= thresholds.T0.max)
|
|
517
|
+
return TrustBand.T0_SANDBOX;
|
|
518
|
+
if (score <= thresholds.T1.max)
|
|
519
|
+
return TrustBand.T1_OBSERVED;
|
|
520
|
+
if (score <= thresholds.T2.max)
|
|
521
|
+
return TrustBand.T2_PROVISIONAL;
|
|
522
|
+
if (score <= thresholds.T3.max)
|
|
523
|
+
return TrustBand.T3_MONITORED;
|
|
524
|
+
if (score <= thresholds.T4.max)
|
|
525
|
+
return TrustBand.T4_STANDARD;
|
|
526
|
+
if (score <= thresholds.T5.max)
|
|
527
|
+
return TrustBand.T5_TRUSTED;
|
|
528
|
+
if (score <= thresholds.T6.max)
|
|
529
|
+
return TrustBand.T6_CERTIFIED;
|
|
530
|
+
return TrustBand.T7_AUTONOMOUS;
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Calculate composite trust score from dimensions
|
|
534
|
+
*/
|
|
535
|
+
export function calculateCompositeScore(dimensions, weights = DEFAULT_TRUST_WEIGHTS) {
|
|
536
|
+
assertValidTrustDimensions(dimensions);
|
|
537
|
+
assertValidTrustWeights(weights);
|
|
538
|
+
const score = dimensions.CT * weights.CT +
|
|
539
|
+
dimensions.BT * weights.BT +
|
|
540
|
+
dimensions.GT * weights.GT +
|
|
541
|
+
dimensions.XT * weights.XT +
|
|
542
|
+
dimensions.AC * weights.AC;
|
|
543
|
+
return roundTrustScore(score);
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Validate all fields of an object against a schema
|
|
547
|
+
*/
|
|
548
|
+
export function validateObject(obj, validators) {
|
|
549
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
550
|
+
throw new ValidationError('Invalid object', 'root', obj, 'non-null object');
|
|
551
|
+
}
|
|
552
|
+
const record = obj;
|
|
553
|
+
for (const [field, validator] of Object.entries(validators)) {
|
|
554
|
+
validator(record[field], field);
|
|
555
|
+
}
|
|
556
|
+
return true;
|
|
557
|
+
}
|
|
558
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/canonical/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vorion Common Primitives
|
|
3
|
+
*
|
|
4
|
+
* Foundational types used across all contract versions.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
export declare const UUIDSchema: z.ZodString;
|
|
8
|
+
export declare const SemVerSchema: z.ZodString;
|
|
9
|
+
export declare const TimestampSchema: z.ZodString;
|
|
10
|
+
export declare const HashSchema: z.ZodString;
|
|
11
|
+
export declare const CorrelationIdSchema: z.ZodString;
|
|
12
|
+
export declare const ActorTypeSchema: z.ZodEnum<["HUMAN", "AGENT", "SYSTEM", "EXTERNAL"]>;
|
|
13
|
+
export declare const ActorSchema: z.ZodObject<{
|
|
14
|
+
type: z.ZodEnum<["HUMAN", "AGENT", "SYSTEM", "EXTERNAL"]>;
|
|
15
|
+
id: z.ZodString;
|
|
16
|
+
name: z.ZodOptional<z.ZodString>;
|
|
17
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
type: "HUMAN" | "AGENT" | "SYSTEM" | "EXTERNAL";
|
|
20
|
+
id: string;
|
|
21
|
+
name?: string | undefined;
|
|
22
|
+
metadata?: Record<string, unknown> | undefined;
|
|
23
|
+
}, {
|
|
24
|
+
type: "HUMAN" | "AGENT" | "SYSTEM" | "EXTERNAL";
|
|
25
|
+
id: string;
|
|
26
|
+
name?: string | undefined;
|
|
27
|
+
metadata?: Record<string, unknown> | undefined;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const TrustBandSchema: z.ZodEnum<["T0", "T1", "T2", "T3", "T4", "T5"]>;
|
|
30
|
+
export declare const TrustBandDescriptions: {
|
|
31
|
+
readonly T0: "Deny execution";
|
|
32
|
+
readonly T1: "HITL mandatory; no irreversible actions";
|
|
33
|
+
readonly T2: "Constrained autonomy; reversible only; strict allowlists";
|
|
34
|
+
readonly T3: "Supervised autonomy; rollback required";
|
|
35
|
+
readonly T4: "Broad autonomy; continuous monitoring";
|
|
36
|
+
readonly T5: "Mission-critical; strongest proof; strict GT/AC requirements";
|
|
37
|
+
};
|
|
38
|
+
export declare const AutonomyLevelSchema: z.ZodEnum<["NONE", "HITL", "CONSTRAINED", "SUPERVISED", "BROAD", "FULL"]>;
|
|
39
|
+
export declare const DecisionOutcomeSchema: z.ZodEnum<["PERMIT", "DENY", "ESCALATE", "PENDING"]>;
|
|
40
|
+
export declare const ExecutionOutcomeSchema: z.ZodEnum<["SUCCESS", "FAILURE", "ERROR", "TIMEOUT", "CANCELLED", "BLOCKED"]>;
|
|
41
|
+
export declare const SeveritySchema: z.ZodEnum<["CRITICAL", "HIGH", "MEDIUM", "LOW", "INFO"]>;
|
|
42
|
+
export declare const RiskLevelSchema: z.ZodEnum<["EXTREME", "HIGH", "MEDIUM", "LOW", "NEGLIGIBLE"]>;
|
|
43
|
+
export type UUID = z.infer<typeof UUIDSchema>;
|
|
44
|
+
export type SemVer = z.infer<typeof SemVerSchema>;
|
|
45
|
+
export type Timestamp = z.infer<typeof TimestampSchema>;
|
|
46
|
+
export type Hash = z.infer<typeof HashSchema>;
|
|
47
|
+
export type CorrelationId = z.infer<typeof CorrelationIdSchema>;
|
|
48
|
+
export type ActorType = z.infer<typeof ActorTypeSchema>;
|
|
49
|
+
export type Actor = z.infer<typeof ActorSchema>;
|
|
50
|
+
export type TrustBand = z.infer<typeof TrustBandSchema>;
|
|
51
|
+
export type AutonomyLevel = z.infer<typeof AutonomyLevelSchema>;
|
|
52
|
+
export type DecisionOutcome = z.infer<typeof DecisionOutcomeSchema>;
|
|
53
|
+
export type ExecutionOutcome = z.infer<typeof ExecutionOutcomeSchema>;
|
|
54
|
+
export type Severity = z.infer<typeof SeveritySchema>;
|
|
55
|
+
export type RiskLevel = z.infer<typeof RiskLevelSchema>;
|
|
56
|
+
//# sourceMappingURL=primitives.d.ts.map
|