@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,427 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Cross-System Mappings
|
|
3
|
+
*
|
|
4
|
+
* Provides mapping functions between different tier systems, domain namespaces,
|
|
5
|
+
* and trust representations. These mappings enable interoperability between
|
|
6
|
+
* the ACI specification and Vorion runtime systems.
|
|
7
|
+
*
|
|
8
|
+
* Key mappings:
|
|
9
|
+
* - CertificationTier <-> RuntimeTier
|
|
10
|
+
* - ACI Domains <-> Vorion Namespaces
|
|
11
|
+
* - TrustBand <-> CertificationTier/RuntimeTier
|
|
12
|
+
*
|
|
13
|
+
* @module @vorion/contracts/aci/mapping
|
|
14
|
+
*/
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
import { domainCodeSchema, } from './domains.js';
|
|
17
|
+
import { CapabilityLevel } from './levels.js';
|
|
18
|
+
import { CertificationTier, RuntimeTier, certificationTierSchema, runtimeTierSchema, CERTIFICATION_TIER_SCORES, RUNTIME_TIER_SCORES, scoreToCertificationTier, scoreToRuntimeTier, } from './tiers.js';
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// Tier Mappings
|
|
21
|
+
// ============================================================================
|
|
22
|
+
/**
|
|
23
|
+
* Maps a CertificationTier to the corresponding RuntimeTier.
|
|
24
|
+
*
|
|
25
|
+
* This is a direct 1:1 mapping since both use T0-T7 scale, but with
|
|
26
|
+
* different semantic meanings:
|
|
27
|
+
* - CertificationTier: External attestation status
|
|
28
|
+
* - RuntimeTier: Deployment autonomy level
|
|
29
|
+
*
|
|
30
|
+
* @param certificationTier - ACI certification tier
|
|
31
|
+
* @returns Corresponding Vorion runtime tier
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* certificationTierToRuntimeTier(CertificationTier.T3_MONITORED);
|
|
36
|
+
* // RuntimeTier.T3_MONITORED
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export function certificationTierToRuntimeTier(certificationTier) {
|
|
40
|
+
// Direct mapping based on numeric value
|
|
41
|
+
return certificationTier;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Maps a RuntimeTier to the corresponding CertificationTier.
|
|
45
|
+
*
|
|
46
|
+
* @param runtimeTier - Vorion runtime tier
|
|
47
|
+
* @returns Corresponding ACI certification tier
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* runtimeTierToCertificationTier(RuntimeTier.T3_MONITORED);
|
|
52
|
+
* // CertificationTier.T3_MONITORED
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function runtimeTierToCertificationTier(runtimeTier) {
|
|
56
|
+
return runtimeTier;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Mapping configuration for certification to runtime tier.
|
|
60
|
+
*/
|
|
61
|
+
export const CERTIFICATION_TO_RUNTIME_TIER_MAP = {
|
|
62
|
+
[CertificationTier.T0_SANDBOX]: RuntimeTier.T0_SANDBOX,
|
|
63
|
+
[CertificationTier.T1_OBSERVED]: RuntimeTier.T1_OBSERVED,
|
|
64
|
+
[CertificationTier.T2_PROVISIONAL]: RuntimeTier.T2_PROVISIONAL,
|
|
65
|
+
[CertificationTier.T3_MONITORED]: RuntimeTier.T3_MONITORED,
|
|
66
|
+
[CertificationTier.T4_STANDARD]: RuntimeTier.T4_STANDARD,
|
|
67
|
+
[CertificationTier.T5_TRUSTED]: RuntimeTier.T5_TRUSTED,
|
|
68
|
+
[CertificationTier.T6_CERTIFIED]: RuntimeTier.T6_CERTIFIED,
|
|
69
|
+
[CertificationTier.T7_AUTONOMOUS]: RuntimeTier.T7_AUTONOMOUS,
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Mapping configuration for runtime to certification tier.
|
|
73
|
+
*/
|
|
74
|
+
export const RUNTIME_TO_CERTIFICATION_TIER_MAP = {
|
|
75
|
+
[RuntimeTier.T0_SANDBOX]: CertificationTier.T0_SANDBOX,
|
|
76
|
+
[RuntimeTier.T1_OBSERVED]: CertificationTier.T1_OBSERVED,
|
|
77
|
+
[RuntimeTier.T2_PROVISIONAL]: CertificationTier.T2_PROVISIONAL,
|
|
78
|
+
[RuntimeTier.T3_MONITORED]: CertificationTier.T3_MONITORED,
|
|
79
|
+
[RuntimeTier.T4_STANDARD]: CertificationTier.T4_STANDARD,
|
|
80
|
+
[RuntimeTier.T5_TRUSTED]: CertificationTier.T5_TRUSTED,
|
|
81
|
+
[RuntimeTier.T6_CERTIFIED]: CertificationTier.T6_CERTIFIED,
|
|
82
|
+
[RuntimeTier.T7_AUTONOMOUS]: CertificationTier.T7_AUTONOMOUS,
|
|
83
|
+
};
|
|
84
|
+
// ============================================================================
|
|
85
|
+
// TrustBand Mappings (Integration with Vorion canonical types)
|
|
86
|
+
// ============================================================================
|
|
87
|
+
/**
|
|
88
|
+
* TrustBand values from Vorion canonical types.
|
|
89
|
+
* Replicated here to avoid circular dependencies.
|
|
90
|
+
*
|
|
91
|
+
* The 8-tier system (T0-T7) maps trust scores to discrete autonomy levels:
|
|
92
|
+
* - T0: Sandbox - Isolated testing, no real operations (0-199)
|
|
93
|
+
* - T1: Observed - Under active observation and supervision (200-349)
|
|
94
|
+
* - T2: Provisional - Limited operations with strict constraints (350-499)
|
|
95
|
+
* - T3: Monitored - Continuous monitoring with expanding freedom (500-649)
|
|
96
|
+
* - T4: Standard - Trusted for routine operations (650-799)
|
|
97
|
+
* - T5: Trusted - Expanded capabilities with minimal oversight (800-875)
|
|
98
|
+
* - T6: Certified - Independent operation with audit trail (876-950)
|
|
99
|
+
* - T7: Autonomous - Full autonomy for mission-critical operations (951-1000)
|
|
100
|
+
*/
|
|
101
|
+
export var TrustBand;
|
|
102
|
+
(function (TrustBand) {
|
|
103
|
+
TrustBand[TrustBand["T0_SANDBOX"] = 0] = "T0_SANDBOX";
|
|
104
|
+
TrustBand[TrustBand["T1_OBSERVED"] = 1] = "T1_OBSERVED";
|
|
105
|
+
TrustBand[TrustBand["T2_PROVISIONAL"] = 2] = "T2_PROVISIONAL";
|
|
106
|
+
TrustBand[TrustBand["T3_MONITORED"] = 3] = "T3_MONITORED";
|
|
107
|
+
TrustBand[TrustBand["T4_STANDARD"] = 4] = "T4_STANDARD";
|
|
108
|
+
TrustBand[TrustBand["T5_TRUSTED"] = 5] = "T5_TRUSTED";
|
|
109
|
+
TrustBand[TrustBand["T6_CERTIFIED"] = 6] = "T6_CERTIFIED";
|
|
110
|
+
TrustBand[TrustBand["T7_AUTONOMOUS"] = 7] = "T7_AUTONOMOUS";
|
|
111
|
+
})(TrustBand || (TrustBand = {}));
|
|
112
|
+
/**
|
|
113
|
+
* Zod schema for TrustBand validation.
|
|
114
|
+
*/
|
|
115
|
+
export const trustBandSchema = z.nativeEnum(TrustBand, {
|
|
116
|
+
errorMap: () => ({ message: 'Invalid trust band. Must be T0-T7 (0-7).' }),
|
|
117
|
+
});
|
|
118
|
+
/**
|
|
119
|
+
* Maps a TrustBand to a CertificationTier.
|
|
120
|
+
*
|
|
121
|
+
* @param trustBand - Vorion trust band
|
|
122
|
+
* @returns Corresponding ACI certification tier
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* trustBandToCertificationTier(TrustBand.T3_STANDARD);
|
|
127
|
+
* // CertificationTier.T3_MONITORED
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export function trustBandToCertificationTier(trustBand) {
|
|
131
|
+
return trustBand;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Maps a TrustBand to a RuntimeTier.
|
|
135
|
+
*
|
|
136
|
+
* @param trustBand - Vorion trust band
|
|
137
|
+
* @returns Corresponding Vorion runtime tier
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* trustBandToRuntimeTier(TrustBand.T3_STANDARD);
|
|
142
|
+
* // RuntimeTier.T3_MONITORED
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export function trustBandToRuntimeTier(trustBand) {
|
|
146
|
+
return trustBand;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Maps a CertificationTier to a TrustBand.
|
|
150
|
+
*
|
|
151
|
+
* @param certificationTier - ACI certification tier
|
|
152
|
+
* @returns Corresponding Vorion trust band
|
|
153
|
+
*/
|
|
154
|
+
export function certificationTierToTrustBand(certificationTier) {
|
|
155
|
+
return certificationTier;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Maps a RuntimeTier to a TrustBand.
|
|
159
|
+
*
|
|
160
|
+
* @param runtimeTier - Vorion runtime tier
|
|
161
|
+
* @returns Corresponding Vorion trust band
|
|
162
|
+
*/
|
|
163
|
+
export function runtimeTierToTrustBand(runtimeTier) {
|
|
164
|
+
return runtimeTier;
|
|
165
|
+
}
|
|
166
|
+
// ============================================================================
|
|
167
|
+
// Trust Score Mappings
|
|
168
|
+
// ============================================================================
|
|
169
|
+
/**
|
|
170
|
+
* Converts a trust score to both certification and runtime tiers.
|
|
171
|
+
*
|
|
172
|
+
* Note: CertificationTier and RuntimeTier use different score ranges,
|
|
173
|
+
* so the same score may map to different tiers.
|
|
174
|
+
*
|
|
175
|
+
* @param score - Trust score (0-1000)
|
|
176
|
+
* @returns Both certification and runtime tiers
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* scoreToBothTiers(550);
|
|
181
|
+
* // { certificationTier: T3_MONITORED, runtimeTier: T3_TRUSTED }
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
export function scoreToBothTiers(score) {
|
|
185
|
+
return {
|
|
186
|
+
certificationTier: scoreToCertificationTier(score),
|
|
187
|
+
runtimeTier: scoreToRuntimeTier(score),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Normalizes a score between ACI and Vorion scales.
|
|
192
|
+
*
|
|
193
|
+
* ACI uses 0-1000 with boundaries at 100, 300, 500, 700, 900
|
|
194
|
+
* Vorion uses 0-1000 with boundaries at 166, 333, 500, 666, 833
|
|
195
|
+
*
|
|
196
|
+
* @param score - Trust score
|
|
197
|
+
* @param fromScale - Source scale ('aci' | 'vorion')
|
|
198
|
+
* @param toScale - Target scale ('aci' | 'vorion')
|
|
199
|
+
* @returns Normalized score in target scale
|
|
200
|
+
*/
|
|
201
|
+
export function normalizeScoreBetweenScales(score, fromScale, toScale) {
|
|
202
|
+
if (fromScale === toScale) {
|
|
203
|
+
return score;
|
|
204
|
+
}
|
|
205
|
+
// Determine the tier in the source scale
|
|
206
|
+
const sourceTier = fromScale === 'aci'
|
|
207
|
+
? scoreToCertificationTier(score)
|
|
208
|
+
: scoreToRuntimeTier(score);
|
|
209
|
+
// Get the source tier's score range
|
|
210
|
+
const sourceRange = fromScale === 'aci'
|
|
211
|
+
? CERTIFICATION_TIER_SCORES[sourceTier]
|
|
212
|
+
: RUNTIME_TIER_SCORES[sourceTier];
|
|
213
|
+
// Calculate position within source tier (0-1)
|
|
214
|
+
const positionInTier = sourceRange.max === sourceRange.min
|
|
215
|
+
? 0.5
|
|
216
|
+
: (score - sourceRange.min) / (sourceRange.max - sourceRange.min);
|
|
217
|
+
// Get the target tier's score range (same tier index, different scale)
|
|
218
|
+
const targetRange = toScale === 'aci'
|
|
219
|
+
? CERTIFICATION_TIER_SCORES[sourceTier]
|
|
220
|
+
: RUNTIME_TIER_SCORES[sourceTier];
|
|
221
|
+
// Map to target scale
|
|
222
|
+
return Math.round(targetRange.min + positionInTier * (targetRange.max - targetRange.min));
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Array of all Vorion namespaces.
|
|
226
|
+
*/
|
|
227
|
+
export const VORION_NAMESPACES = [
|
|
228
|
+
'admin',
|
|
229
|
+
'business',
|
|
230
|
+
'communications',
|
|
231
|
+
'data',
|
|
232
|
+
'external',
|
|
233
|
+
'finance',
|
|
234
|
+
'governance',
|
|
235
|
+
'hospitality',
|
|
236
|
+
'infrastructure',
|
|
237
|
+
'security',
|
|
238
|
+
];
|
|
239
|
+
/**
|
|
240
|
+
* Zod schema for VorionNamespace validation.
|
|
241
|
+
*/
|
|
242
|
+
export const vorionNamespaceSchema = z.enum([
|
|
243
|
+
'admin',
|
|
244
|
+
'business',
|
|
245
|
+
'communications',
|
|
246
|
+
'data',
|
|
247
|
+
'external',
|
|
248
|
+
'finance',
|
|
249
|
+
'governance',
|
|
250
|
+
'hospitality',
|
|
251
|
+
'infrastructure',
|
|
252
|
+
'security',
|
|
253
|
+
]);
|
|
254
|
+
/**
|
|
255
|
+
* Mapping from ACI domain codes to Vorion namespaces.
|
|
256
|
+
*/
|
|
257
|
+
export const DOMAIN_TO_NAMESPACE_MAP = {
|
|
258
|
+
A: 'admin',
|
|
259
|
+
B: 'business',
|
|
260
|
+
C: 'communications',
|
|
261
|
+
D: 'data',
|
|
262
|
+
E: 'external',
|
|
263
|
+
F: 'finance',
|
|
264
|
+
G: 'governance',
|
|
265
|
+
H: 'hospitality',
|
|
266
|
+
I: 'infrastructure',
|
|
267
|
+
S: 'security',
|
|
268
|
+
};
|
|
269
|
+
/**
|
|
270
|
+
* Mapping from Vorion namespaces to ACI domain codes.
|
|
271
|
+
*/
|
|
272
|
+
export const NAMESPACE_TO_DOMAIN_MAP = {
|
|
273
|
+
admin: 'A',
|
|
274
|
+
business: 'B',
|
|
275
|
+
communications: 'C',
|
|
276
|
+
data: 'D',
|
|
277
|
+
external: 'E',
|
|
278
|
+
finance: 'F',
|
|
279
|
+
governance: 'G',
|
|
280
|
+
hospitality: 'H',
|
|
281
|
+
infrastructure: 'I',
|
|
282
|
+
security: 'S',
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* Maps an ACI domain code to a Vorion namespace.
|
|
286
|
+
*
|
|
287
|
+
* @param domain - ACI domain code
|
|
288
|
+
* @returns Vorion namespace
|
|
289
|
+
*
|
|
290
|
+
* @example
|
|
291
|
+
* ```typescript
|
|
292
|
+
* aciDomainToVorionNamespace('F'); // 'finance'
|
|
293
|
+
* aciDomainToVorionNamespace('S'); // 'security'
|
|
294
|
+
* ```
|
|
295
|
+
*/
|
|
296
|
+
export function aciDomainToVorionNamespace(domain) {
|
|
297
|
+
return DOMAIN_TO_NAMESPACE_MAP[domain];
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Maps a Vorion namespace to an ACI domain code.
|
|
301
|
+
*
|
|
302
|
+
* @param namespace - Vorion namespace
|
|
303
|
+
* @returns ACI domain code
|
|
304
|
+
*
|
|
305
|
+
* @example
|
|
306
|
+
* ```typescript
|
|
307
|
+
* vorionNamespaceToAciDomain('finance'); // 'F'
|
|
308
|
+
* vorionNamespaceToAciDomain('security'); // 'S'
|
|
309
|
+
* ```
|
|
310
|
+
*/
|
|
311
|
+
export function vorionNamespaceToAciDomain(namespace) {
|
|
312
|
+
return NAMESPACE_TO_DOMAIN_MAP[namespace];
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Maps an array of ACI domains to Vorion namespaces.
|
|
316
|
+
*
|
|
317
|
+
* @param domains - Array of ACI domain codes
|
|
318
|
+
* @returns Array of Vorion namespaces
|
|
319
|
+
*/
|
|
320
|
+
export function aciDomainsToVorionNamespaces(domains) {
|
|
321
|
+
return domains.map(aciDomainToVorionNamespace);
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Maps an array of Vorion namespaces to ACI domains.
|
|
325
|
+
*
|
|
326
|
+
* @param namespaces - Array of Vorion namespaces
|
|
327
|
+
* @returns Array of ACI domain codes
|
|
328
|
+
*/
|
|
329
|
+
export function vorionNamespacesToAciDomains(namespaces) {
|
|
330
|
+
return namespaces.map(vorionNamespaceToAciDomain);
|
|
331
|
+
}
|
|
332
|
+
// ============================================================================
|
|
333
|
+
// Capability Level Mappings
|
|
334
|
+
// ============================================================================
|
|
335
|
+
/**
|
|
336
|
+
* Maps a capability level to a human-readable autonomy description.
|
|
337
|
+
*
|
|
338
|
+
* @param level - Capability level
|
|
339
|
+
* @returns Autonomy description
|
|
340
|
+
*/
|
|
341
|
+
export function capabilityLevelToAutonomyDescription(level) {
|
|
342
|
+
const descriptions = {
|
|
343
|
+
[CapabilityLevel.L0_OBSERVE]: 'Read-only, no autonomy',
|
|
344
|
+
[CapabilityLevel.L1_ADVISE]: 'Advisory only, cannot act',
|
|
345
|
+
[CapabilityLevel.L2_DRAFT]: 'Can draft, requires approval',
|
|
346
|
+
[CapabilityLevel.L3_EXECUTE]: 'Can execute with approval',
|
|
347
|
+
[CapabilityLevel.L4_AUTONOMOUS]: 'Autonomous within bounds',
|
|
348
|
+
[CapabilityLevel.L5_TRUSTED]: 'Expanded autonomy, minimal oversight',
|
|
349
|
+
[CapabilityLevel.L6_CERTIFIED]: 'Independent operation, audit trail',
|
|
350
|
+
[CapabilityLevel.L7_AUTONOMOUS]: 'Full autonomy',
|
|
351
|
+
};
|
|
352
|
+
return descriptions[level];
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Maps a capability level to a maximum allowed runtime tier.
|
|
356
|
+
*
|
|
357
|
+
* Higher capability levels require higher runtime tiers to operate.
|
|
358
|
+
*
|
|
359
|
+
* @param level - Capability level
|
|
360
|
+
* @returns Minimum runtime tier required
|
|
361
|
+
*/
|
|
362
|
+
export function capabilityLevelToMinRuntimeTier(level) {
|
|
363
|
+
return level;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Creates a bidirectional mapping.
|
|
367
|
+
*
|
|
368
|
+
* @param mapping - Object mapping A values to B values
|
|
369
|
+
* @returns Bidirectional map with forward and reverse functions
|
|
370
|
+
*/
|
|
371
|
+
export function createBidirectionalMap(mapping) {
|
|
372
|
+
const reverseMapping = {};
|
|
373
|
+
for (const [key, value] of Object.entries(mapping)) {
|
|
374
|
+
reverseMapping[value] = key;
|
|
375
|
+
}
|
|
376
|
+
return {
|
|
377
|
+
forward: (a) => mapping[a],
|
|
378
|
+
reverse: (b) => reverseMapping[b],
|
|
379
|
+
forwardMap: mapping,
|
|
380
|
+
reverseMap: reverseMapping,
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Pre-built bidirectional map for domain <-> namespace.
|
|
385
|
+
*/
|
|
386
|
+
export const domainNamespaceMap = createBidirectionalMap(DOMAIN_TO_NAMESPACE_MAP);
|
|
387
|
+
/**
|
|
388
|
+
* Pre-built bidirectional map for certification <-> runtime tier.
|
|
389
|
+
*/
|
|
390
|
+
export const certificationRuntimeMap = createBidirectionalMap(CERTIFICATION_TO_RUNTIME_TIER_MAP);
|
|
391
|
+
// ============================================================================
|
|
392
|
+
// Zod Schemas
|
|
393
|
+
// ============================================================================
|
|
394
|
+
/**
|
|
395
|
+
* Zod schema for tier mapping result.
|
|
396
|
+
*/
|
|
397
|
+
export const tierMappingResultSchema = z.object({
|
|
398
|
+
certificationTier: certificationTierSchema,
|
|
399
|
+
runtimeTier: runtimeTierSchema,
|
|
400
|
+
});
|
|
401
|
+
/**
|
|
402
|
+
* Zod schema for domain mapping result.
|
|
403
|
+
*/
|
|
404
|
+
export const domainMappingResultSchema = z.object({
|
|
405
|
+
domain: domainCodeSchema,
|
|
406
|
+
namespace: vorionNamespaceSchema,
|
|
407
|
+
});
|
|
408
|
+
// ============================================================================
|
|
409
|
+
// Type Guards
|
|
410
|
+
// ============================================================================
|
|
411
|
+
/**
|
|
412
|
+
* Type guard for VorionNamespace.
|
|
413
|
+
*/
|
|
414
|
+
export function isVorionNamespace(value) {
|
|
415
|
+
return (typeof value === 'string' &&
|
|
416
|
+
VORION_NAMESPACES.includes(value));
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Type guard for TrustBand.
|
|
420
|
+
*/
|
|
421
|
+
export function isTrustBand(value) {
|
|
422
|
+
return (typeof value === 'number' &&
|
|
423
|
+
Number.isInteger(value) &&
|
|
424
|
+
value >= 0 &&
|
|
425
|
+
value <= 7);
|
|
426
|
+
}
|
|
427
|
+
//# sourceMappingURL=mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/aci/mapping.ts"],"names":[],"mappings":"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"}
|