@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.
Files changed (173) hide show
  1. package/dist/aci/aci-string.d.ts +539 -0
  2. package/dist/aci/aci-string.d.ts.map +1 -0
  3. package/dist/aci/aci-string.js +563 -0
  4. package/dist/aci/aci-string.js.map +1 -0
  5. package/dist/aci/attestation.d.ts +648 -0
  6. package/dist/aci/attestation.d.ts.map +1 -0
  7. package/dist/aci/attestation.js +289 -0
  8. package/dist/aci/attestation.js.map +1 -0
  9. package/dist/aci/domains.d.ts +260 -0
  10. package/dist/aci/domains.d.ts.map +1 -0
  11. package/dist/aci/domains.js +322 -0
  12. package/dist/aci/domains.js.map +1 -0
  13. package/dist/aci/effective-permission.d.ts +371 -0
  14. package/dist/aci/effective-permission.d.ts.map +1 -0
  15. package/dist/aci/effective-permission.js +351 -0
  16. package/dist/aci/effective-permission.js.map +1 -0
  17. package/dist/aci/identity.d.ts +1100 -0
  18. package/dist/aci/identity.d.ts.map +1 -0
  19. package/dist/aci/identity.js +328 -0
  20. package/dist/aci/identity.js.map +1 -0
  21. package/dist/aci/index.d.ts +67 -0
  22. package/dist/aci/index.d.ts.map +1 -0
  23. package/dist/aci/index.js +157 -0
  24. package/dist/aci/index.js.map +1 -0
  25. package/dist/aci/jwt-claims.d.ts +756 -0
  26. package/dist/aci/jwt-claims.d.ts.map +1 -0
  27. package/dist/aci/jwt-claims.js +335 -0
  28. package/dist/aci/jwt-claims.js.map +1 -0
  29. package/dist/aci/levels.d.ts +279 -0
  30. package/dist/aci/levels.d.ts.map +1 -0
  31. package/dist/aci/levels.js +467 -0
  32. package/dist/aci/levels.js.map +1 -0
  33. package/dist/aci/mapping.d.ts +291 -0
  34. package/dist/aci/mapping.d.ts.map +1 -0
  35. package/dist/aci/mapping.js +427 -0
  36. package/dist/aci/mapping.js.map +1 -0
  37. package/dist/aci/skills.d.ts +314 -0
  38. package/dist/aci/skills.d.ts.map +1 -0
  39. package/dist/aci/skills.js +404 -0
  40. package/dist/aci/skills.js.map +1 -0
  41. package/dist/aci/tiers.d.ts +403 -0
  42. package/dist/aci/tiers.d.ts.map +1 -0
  43. package/dist/aci/tiers.js +659 -0
  44. package/dist/aci/tiers.js.map +1 -0
  45. package/dist/canonical/agent.d.ts +796 -0
  46. package/dist/canonical/agent.d.ts.map +1 -0
  47. package/dist/canonical/agent.js +527 -0
  48. package/dist/canonical/agent.js.map +1 -0
  49. package/dist/canonical/governance.d.ts +905 -0
  50. package/dist/canonical/governance.d.ts.map +1 -0
  51. package/dist/canonical/governance.js +454 -0
  52. package/dist/canonical/governance.js.map +1 -0
  53. package/dist/canonical/index.d.ts +17 -0
  54. package/dist/canonical/index.d.ts.map +1 -0
  55. package/dist/canonical/index.js +21 -0
  56. package/dist/canonical/index.js.map +1 -0
  57. package/dist/canonical/intent.d.ts +727 -0
  58. package/dist/canonical/intent.d.ts.map +1 -0
  59. package/dist/canonical/intent.js +203 -0
  60. package/dist/canonical/intent.js.map +1 -0
  61. package/dist/canonical/risk-level.d.ts +344 -0
  62. package/dist/canonical/risk-level.d.ts.map +1 -0
  63. package/dist/canonical/risk-level.js +472 -0
  64. package/dist/canonical/risk-level.js.map +1 -0
  65. package/dist/canonical/trust-band.d.ts +239 -0
  66. package/dist/canonical/trust-band.d.ts.map +1 -0
  67. package/dist/canonical/trust-band.js +298 -0
  68. package/dist/canonical/trust-band.js.map +1 -0
  69. package/dist/canonical/trust-score.d.ts +301 -0
  70. package/dist/canonical/trust-score.d.ts.map +1 -0
  71. package/dist/canonical/trust-score.js +390 -0
  72. package/dist/canonical/trust-score.js.map +1 -0
  73. package/dist/canonical/trust-signal.d.ts +617 -0
  74. package/dist/canonical/trust-signal.d.ts.map +1 -0
  75. package/dist/canonical/trust-signal.js +355 -0
  76. package/dist/canonical/trust-signal.js.map +1 -0
  77. package/dist/canonical/validation.d.ts +231 -0
  78. package/dist/canonical/validation.d.ts.map +1 -0
  79. package/dist/canonical/validation.js +558 -0
  80. package/dist/canonical/validation.js.map +1 -0
  81. package/dist/common/index.d.ts +7 -0
  82. package/dist/common/index.d.ts.map +1 -0
  83. package/dist/common/index.js +7 -0
  84. package/dist/common/index.js.map +1 -0
  85. package/dist/common/primitives.d.ts +56 -0
  86. package/dist/common/primitives.d.ts.map +1 -0
  87. package/dist/common/primitives.js +70 -0
  88. package/dist/common/primitives.js.map +1 -0
  89. package/dist/index.d.ts +11 -0
  90. package/dist/index.d.ts.map +1 -0
  91. package/dist/index.js +15 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/v2/canary-probe.d.ts +201 -0
  94. package/dist/v2/canary-probe.d.ts.map +1 -0
  95. package/dist/v2/canary-probe.js +99 -0
  96. package/dist/v2/canary-probe.js.map +1 -0
  97. package/dist/v2/component.d.ts +132 -0
  98. package/dist/v2/component.d.ts.map +1 -0
  99. package/dist/v2/component.js +5 -0
  100. package/dist/v2/component.js.map +1 -0
  101. package/dist/v2/decision.d.ts +310 -0
  102. package/dist/v2/decision.d.ts.map +1 -0
  103. package/dist/v2/decision.js +21 -0
  104. package/dist/v2/decision.js.map +1 -0
  105. package/dist/v2/enums.d.ts +185 -0
  106. package/dist/v2/enums.d.ts.map +1 -0
  107. package/dist/v2/enums.js +203 -0
  108. package/dist/v2/enums.js.map +1 -0
  109. package/dist/v2/evidence.d.ts +368 -0
  110. package/dist/v2/evidence.d.ts.map +1 -0
  111. package/dist/v2/evidence.js +152 -0
  112. package/dist/v2/evidence.js.map +1 -0
  113. package/dist/v2/execution.d.ts +190 -0
  114. package/dist/v2/execution.d.ts.map +1 -0
  115. package/dist/v2/execution.js +5 -0
  116. package/dist/v2/execution.js.map +1 -0
  117. package/dist/v2/index.d.ts +19 -0
  118. package/dist/v2/index.d.ts.map +1 -0
  119. package/dist/v2/index.js +32 -0
  120. package/dist/v2/index.js.map +1 -0
  121. package/dist/v2/intent.d.ts +89 -0
  122. package/dist/v2/intent.d.ts.map +1 -0
  123. package/dist/v2/intent.js +5 -0
  124. package/dist/v2/intent.js.map +1 -0
  125. package/dist/v2/policy-bundle.d.ts +166 -0
  126. package/dist/v2/policy-bundle.d.ts.map +1 -0
  127. package/dist/v2/policy-bundle.js +20 -0
  128. package/dist/v2/policy-bundle.js.map +1 -0
  129. package/dist/v2/pre-action-gate.d.ts +185 -0
  130. package/dist/v2/pre-action-gate.d.ts.map +1 -0
  131. package/dist/v2/pre-action-gate.js +64 -0
  132. package/dist/v2/pre-action-gate.js.map +1 -0
  133. package/dist/v2/proof-event.d.ts +201 -0
  134. package/dist/v2/proof-event.d.ts.map +1 -0
  135. package/dist/v2/proof-event.js +5 -0
  136. package/dist/v2/proof-event.js.map +1 -0
  137. package/dist/v2/retention.d.ts +329 -0
  138. package/dist/v2/retention.d.ts.map +1 -0
  139. package/dist/v2/retention.js +162 -0
  140. package/dist/v2/retention.js.map +1 -0
  141. package/dist/v2/trust-delta.d.ts +119 -0
  142. package/dist/v2/trust-delta.d.ts.map +1 -0
  143. package/dist/v2/trust-delta.js +28 -0
  144. package/dist/v2/trust-delta.js.map +1 -0
  145. package/dist/v2/trust-profile.d.ts +337 -0
  146. package/dist/v2/trust-profile.d.ts.map +1 -0
  147. package/dist/v2/trust-profile.js +96 -0
  148. package/dist/v2/trust-profile.js.map +1 -0
  149. package/dist/validators/decision.d.ts +430 -0
  150. package/dist/validators/decision.d.ts.map +1 -0
  151. package/dist/validators/decision.js +61 -0
  152. package/dist/validators/decision.js.map +1 -0
  153. package/dist/validators/enums.d.ts +24 -0
  154. package/dist/validators/enums.d.ts.map +1 -0
  155. package/dist/validators/enums.js +24 -0
  156. package/dist/validators/enums.js.map +1 -0
  157. package/dist/validators/index.d.ts +30 -0
  158. package/dist/validators/index.d.ts.map +1 -0
  159. package/dist/validators/index.js +42 -0
  160. package/dist/validators/index.js.map +1 -0
  161. package/dist/validators/intent.d.ts +229 -0
  162. package/dist/validators/intent.d.ts.map +1 -0
  163. package/dist/validators/intent.js +47 -0
  164. package/dist/validators/intent.js.map +1 -0
  165. package/dist/validators/proof-event.d.ts +981 -0
  166. package/dist/validators/proof-event.d.ts.map +1 -0
  167. package/dist/validators/proof-event.js +134 -0
  168. package/dist/validators/proof-event.js.map +1 -0
  169. package/dist/validators/trust-profile.d.ts +350 -0
  170. package/dist/validators/trust-profile.d.ts.map +1 -0
  171. package/dist/validators/trust-profile.js +65 -0
  172. package/dist/validators/trust-profile.js.map +1 -0
  173. package/package.json +65 -0
@@ -0,0 +1,239 @@
1
+ /**
2
+ * @fileoverview Canonical TrustBand definitions for the Vorion Platform.
3
+ *
4
+ * This file provides the authoritative definition for trust bands (T0-T7),
5
+ * including thresholds, conversion utilities, and Zod validation schemas.
6
+ *
7
+ * Trust bands represent discrete levels of autonomy granted to agents based
8
+ * on their accumulated trust score. The system uses an 8-tier model with
9
+ * variable divisions on a 0-1000 scale.
10
+ *
11
+ * @module @vorion/contracts/canonical/trust-band
12
+ */
13
+ import { z } from 'zod';
14
+ /**
15
+ * Trust bands representing agent autonomy levels.
16
+ *
17
+ * The 8-tier system (T0-T7) maps trust scores to discrete autonomy levels:
18
+ * - T0: Sandbox - Isolated testing, no real operations
19
+ * - T1: Observed - Under active observation and supervision
20
+ * - T2: Provisional - Limited operations with strict constraints
21
+ * - T3: Monitored - Continuous monitoring with expanding freedom
22
+ * - T4: Standard - Trusted for routine operations
23
+ * - T5: Trusted - Expanded capabilities with minimal oversight
24
+ * - T6: Certified - Independent operation with audit trail
25
+ * - T7: Autonomous - Full autonomy for mission-critical operations
26
+ *
27
+ * @enum {number}
28
+ */
29
+ export declare enum TrustBand {
30
+ /** Sandbox - Isolated testing environment, no real operations */
31
+ T0_SANDBOX = 0,
32
+ /** Observed - Under active observation and supervision */
33
+ T1_OBSERVED = 1,
34
+ /** Provisional - Limited operations with strict constraints */
35
+ T2_PROVISIONAL = 2,
36
+ /** Monitored - Continuous monitoring with expanding freedom */
37
+ T3_MONITORED = 3,
38
+ /** Standard - Trusted for routine operations */
39
+ T4_STANDARD = 4,
40
+ /** Trusted - Expanded capabilities with minimal oversight */
41
+ T5_TRUSTED = 5,
42
+ /** Certified - Independent operation with audit trail */
43
+ T6_CERTIFIED = 6,
44
+ /** Autonomous - Full autonomy for mission-critical operations */
45
+ T7_AUTONOMOUS = 7
46
+ }
47
+ /**
48
+ * Threshold configuration for a single trust band.
49
+ *
50
+ * Defines the score range and human-readable label for a trust band.
51
+ */
52
+ export interface TrustBandThreshold {
53
+ /** Minimum score (inclusive) for this band */
54
+ readonly min: number;
55
+ /** Maximum score (inclusive) for this band */
56
+ readonly max: number;
57
+ /** Human-readable label for display */
58
+ readonly label: string;
59
+ /** Brief description of the autonomy level */
60
+ readonly description: string;
61
+ }
62
+ /**
63
+ * Trust band thresholds mapping each band to its score range.
64
+ *
65
+ * Uses a 0-1000 scale with variable divisions that tighten at higher tiers
66
+ * to reflect the increasing difficulty of achieving higher trust levels.
67
+ *
68
+ * @constant
69
+ */
70
+ export declare const TRUST_BAND_THRESHOLDS: Readonly<Record<TrustBand, TrustBandThreshold>>;
71
+ /**
72
+ * Array of all trust bands in ascending order.
73
+ *
74
+ * Useful for iteration and mapping operations.
75
+ */
76
+ export declare const TRUST_BANDS: readonly [TrustBand.T0_SANDBOX, TrustBand.T1_OBSERVED, TrustBand.T2_PROVISIONAL, TrustBand.T3_MONITORED, TrustBand.T4_STANDARD, TrustBand.T5_TRUSTED, TrustBand.T6_CERTIFIED, TrustBand.T7_AUTONOMOUS];
77
+ /**
78
+ * Converts a trust score (0-1000) to its corresponding trust band.
79
+ *
80
+ * Uses the canonical threshold boundaries defined in TRUST_BAND_THRESHOLDS.
81
+ *
82
+ * @param score - Trust score on 0-1000 scale
83
+ * @returns The corresponding TrustBand
84
+ * @throws {Error} If score is outside valid range (0-1000)
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * scoreToTrustBand(0); // TrustBand.T0_SANDBOX
89
+ * scoreToTrustBand(500); // TrustBand.T3_MONITORED
90
+ * scoreToTrustBand(975); // TrustBand.T7_AUTONOMOUS
91
+ * ```
92
+ */
93
+ export declare function scoreToTrustBand(score: number): TrustBand;
94
+ /**
95
+ * Converts a trust band to its midpoint score.
96
+ *
97
+ * Returns the midpoint of the band's score range, useful for
98
+ * initializing agents at a given trust level.
99
+ *
100
+ * @param band - The trust band to convert
101
+ * @returns The midpoint score for the band (0-1000 scale)
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * trustBandToScore(TrustBand.T0_SANDBOX); // 100
106
+ * trustBandToScore(TrustBand.T4_STANDARD); // 725
107
+ * trustBandToScore(TrustBand.T7_AUTONOMOUS); // 976
108
+ * ```
109
+ */
110
+ export declare function trustBandToScore(band: TrustBand): number;
111
+ /**
112
+ * Gets the minimum score required to achieve a trust band.
113
+ *
114
+ * @param band - The target trust band
115
+ * @returns The minimum score needed to reach this band
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * getTrustBandMinScore(TrustBand.T4_STANDARD); // 650
120
+ * getTrustBandMinScore(TrustBand.T7_AUTONOMOUS); // 951
121
+ * ```
122
+ */
123
+ export declare function getTrustBandMinScore(band: TrustBand): number;
124
+ /**
125
+ * Gets the maximum score for a trust band.
126
+ *
127
+ * @param band - The target trust band
128
+ * @returns The maximum score within this band
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * getTrustBandMaxScore(TrustBand.T0_SANDBOX); // 199
133
+ * getTrustBandMaxScore(TrustBand.T7_AUTONOMOUS); // 1000
134
+ * ```
135
+ */
136
+ export declare function getTrustBandMaxScore(band: TrustBand): number;
137
+ /**
138
+ * Gets the human-readable label for a trust band.
139
+ *
140
+ * @param band - The trust band
141
+ * @returns Human-readable label string
142
+ *
143
+ * @example
144
+ * ```typescript
145
+ * getTrustBandLabel(TrustBand.T4_STANDARD); // "Standard"
146
+ * ```
147
+ */
148
+ export declare function getTrustBandLabel(band: TrustBand): string;
149
+ /**
150
+ * Gets the description for a trust band.
151
+ *
152
+ * @param band - The trust band
153
+ * @returns Description of the autonomy level
154
+ */
155
+ export declare function getTrustBandDescription(band: TrustBand): string;
156
+ /**
157
+ * Checks if a given band is higher (more trusted) than another.
158
+ *
159
+ * @param band - The band to check
160
+ * @param otherBand - The band to compare against
161
+ * @returns True if band is higher than otherBand
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * isTrustBandHigher(TrustBand.T5_TRUSTED, TrustBand.T2_PROVISIONAL); // true
166
+ * isTrustBandHigher(TrustBand.T1_OBSERVED, TrustBand.T4_STANDARD); // false
167
+ * ```
168
+ */
169
+ export declare function isTrustBandHigher(band: TrustBand, otherBand: TrustBand): boolean;
170
+ /**
171
+ * Checks if a given band meets or exceeds a required minimum band.
172
+ *
173
+ * @param band - The band to check
174
+ * @param requiredBand - The minimum required band
175
+ * @returns True if band meets or exceeds the requirement
176
+ *
177
+ * @example
178
+ * ```typescript
179
+ * meetsMinimumTrustBand(TrustBand.T5_TRUSTED, TrustBand.T4_STANDARD); // true
180
+ * meetsMinimumTrustBand(TrustBand.T2_PROVISIONAL, TrustBand.T4_STANDARD); // false
181
+ * ```
182
+ */
183
+ export declare function meetsMinimumTrustBand(band: TrustBand, requiredBand: TrustBand): boolean;
184
+ /**
185
+ * Zod schema for TrustBand enum validation.
186
+ *
187
+ * Validates that a value is a valid TrustBand enum member.
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * trustBandSchema.parse(TrustBand.T4_STANDARD); // Success
192
+ * trustBandSchema.parse(4); // Success
193
+ * trustBandSchema.parse(8); // Throws ZodError
194
+ * ```
195
+ */
196
+ export declare const trustBandSchema: z.ZodNativeEnum<typeof TrustBand>;
197
+ /**
198
+ * Zod schema for TrustBandThreshold validation.
199
+ */
200
+ export declare const trustBandThresholdSchema: z.ZodEffects<z.ZodObject<{
201
+ min: z.ZodNumber;
202
+ max: z.ZodNumber;
203
+ label: z.ZodString;
204
+ description: z.ZodString;
205
+ }, "strip", z.ZodTypeAny, {
206
+ description: string;
207
+ min: number;
208
+ max: number;
209
+ label: string;
210
+ }, {
211
+ description: string;
212
+ min: number;
213
+ max: number;
214
+ label: string;
215
+ }>, {
216
+ description: string;
217
+ min: number;
218
+ max: number;
219
+ label: string;
220
+ }, {
221
+ description: string;
222
+ min: number;
223
+ max: number;
224
+ label: string;
225
+ }>;
226
+ /**
227
+ * Zod schema for validating band comparison requests.
228
+ */
229
+ export declare const bandComparisonSchema: z.ZodObject<{
230
+ band: z.ZodNativeEnum<typeof TrustBand>;
231
+ otherBand: z.ZodNativeEnum<typeof TrustBand>;
232
+ }, "strip", z.ZodTypeAny, {
233
+ band: TrustBand;
234
+ otherBand: TrustBand;
235
+ }, {
236
+ band: TrustBand;
237
+ otherBand: TrustBand;
238
+ }>;
239
+ //# sourceMappingURL=trust-band.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-band.d.ts","sourceRoot":"","sources":["../../src/canonical/trust-band.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;GAcG;AACH,oBAAY,SAAS;IACnB,iEAAiE;IACjE,UAAU,IAAI;IACd,0DAA0D;IAC1D,WAAW,IAAI;IACf,+DAA+D;IAC/D,cAAc,IAAI;IAClB,+DAA+D;IAC/D,YAAY,IAAI;IAChB,gDAAgD;IAChD,WAAW,IAAI;IACf,6DAA6D;IAC7D,UAAU,IAAI;IACd,yDAAyD;IACzD,YAAY,IAAI;IAChB,iEAAiE;IACjE,aAAa,IAAI;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAiDxE,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,WAAW,wMASd,CAAC;AAEX;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAazD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAGxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAEhF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,GAAG,OAAO,CAEvF;AASD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,mCAE1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;EAQpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;EAG/B,CAAC"}
@@ -0,0 +1,298 @@
1
+ /**
2
+ * @fileoverview Canonical TrustBand definitions for the Vorion Platform.
3
+ *
4
+ * This file provides the authoritative definition for trust bands (T0-T7),
5
+ * including thresholds, conversion utilities, and Zod validation schemas.
6
+ *
7
+ * Trust bands represent discrete levels of autonomy granted to agents based
8
+ * on their accumulated trust score. The system uses an 8-tier model with
9
+ * variable divisions on a 0-1000 scale.
10
+ *
11
+ * @module @vorion/contracts/canonical/trust-band
12
+ */
13
+ import { z } from 'zod';
14
+ /**
15
+ * Trust bands representing agent autonomy levels.
16
+ *
17
+ * The 8-tier system (T0-T7) maps trust scores to discrete autonomy levels:
18
+ * - T0: Sandbox - Isolated testing, no real operations
19
+ * - T1: Observed - Under active observation and supervision
20
+ * - T2: Provisional - Limited operations with strict constraints
21
+ * - T3: Monitored - Continuous monitoring with expanding freedom
22
+ * - T4: Standard - Trusted for routine operations
23
+ * - T5: Trusted - Expanded capabilities with minimal oversight
24
+ * - T6: Certified - Independent operation with audit trail
25
+ * - T7: Autonomous - Full autonomy for mission-critical operations
26
+ *
27
+ * @enum {number}
28
+ */
29
+ export var TrustBand;
30
+ (function (TrustBand) {
31
+ /** Sandbox - Isolated testing environment, no real operations */
32
+ TrustBand[TrustBand["T0_SANDBOX"] = 0] = "T0_SANDBOX";
33
+ /** Observed - Under active observation and supervision */
34
+ TrustBand[TrustBand["T1_OBSERVED"] = 1] = "T1_OBSERVED";
35
+ /** Provisional - Limited operations with strict constraints */
36
+ TrustBand[TrustBand["T2_PROVISIONAL"] = 2] = "T2_PROVISIONAL";
37
+ /** Monitored - Continuous monitoring with expanding freedom */
38
+ TrustBand[TrustBand["T3_MONITORED"] = 3] = "T3_MONITORED";
39
+ /** Standard - Trusted for routine operations */
40
+ TrustBand[TrustBand["T4_STANDARD"] = 4] = "T4_STANDARD";
41
+ /** Trusted - Expanded capabilities with minimal oversight */
42
+ TrustBand[TrustBand["T5_TRUSTED"] = 5] = "T5_TRUSTED";
43
+ /** Certified - Independent operation with audit trail */
44
+ TrustBand[TrustBand["T6_CERTIFIED"] = 6] = "T6_CERTIFIED";
45
+ /** Autonomous - Full autonomy for mission-critical operations */
46
+ TrustBand[TrustBand["T7_AUTONOMOUS"] = 7] = "T7_AUTONOMOUS";
47
+ })(TrustBand || (TrustBand = {}));
48
+ /**
49
+ * Trust band thresholds mapping each band to its score range.
50
+ *
51
+ * Uses a 0-1000 scale with variable divisions that tighten at higher tiers
52
+ * to reflect the increasing difficulty of achieving higher trust levels.
53
+ *
54
+ * @constant
55
+ */
56
+ export const TRUST_BAND_THRESHOLDS = {
57
+ [TrustBand.T0_SANDBOX]: {
58
+ min: 0,
59
+ max: 199,
60
+ label: 'Sandbox',
61
+ description: 'Isolated testing environment - no real operations allowed',
62
+ },
63
+ [TrustBand.T1_OBSERVED]: {
64
+ min: 200,
65
+ max: 349,
66
+ label: 'Observed',
67
+ description: 'Under active observation - actions are supervised',
68
+ },
69
+ [TrustBand.T2_PROVISIONAL]: {
70
+ min: 350,
71
+ max: 499,
72
+ label: 'Provisional',
73
+ description: 'Limited operations - strict constraints and guardrails',
74
+ },
75
+ [TrustBand.T3_MONITORED]: {
76
+ min: 500,
77
+ max: 649,
78
+ label: 'Monitored',
79
+ description: 'Continuous monitoring - expanding operational freedom',
80
+ },
81
+ [TrustBand.T4_STANDARD]: {
82
+ min: 650,
83
+ max: 799,
84
+ label: 'Standard',
85
+ description: 'Standard autonomy - trusted for routine operations',
86
+ },
87
+ [TrustBand.T5_TRUSTED]: {
88
+ min: 800,
89
+ max: 875,
90
+ label: 'Trusted',
91
+ description: 'Expanded capabilities - minimal oversight required',
92
+ },
93
+ [TrustBand.T6_CERTIFIED]: {
94
+ min: 876,
95
+ max: 950,
96
+ label: 'Certified',
97
+ description: 'Independent operation - comprehensive audit trail',
98
+ },
99
+ [TrustBand.T7_AUTONOMOUS]: {
100
+ min: 951,
101
+ max: 1000,
102
+ label: 'Autonomous',
103
+ description: 'Full autonomy - mission-critical with autonomous decision-making',
104
+ },
105
+ };
106
+ /**
107
+ * Array of all trust bands in ascending order.
108
+ *
109
+ * Useful for iteration and mapping operations.
110
+ */
111
+ export const TRUST_BANDS = [
112
+ TrustBand.T0_SANDBOX,
113
+ TrustBand.T1_OBSERVED,
114
+ TrustBand.T2_PROVISIONAL,
115
+ TrustBand.T3_MONITORED,
116
+ TrustBand.T4_STANDARD,
117
+ TrustBand.T5_TRUSTED,
118
+ TrustBand.T6_CERTIFIED,
119
+ TrustBand.T7_AUTONOMOUS,
120
+ ];
121
+ /**
122
+ * Converts a trust score (0-1000) to its corresponding trust band.
123
+ *
124
+ * Uses the canonical threshold boundaries defined in TRUST_BAND_THRESHOLDS.
125
+ *
126
+ * @param score - Trust score on 0-1000 scale
127
+ * @returns The corresponding TrustBand
128
+ * @throws {Error} If score is outside valid range (0-1000)
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * scoreToTrustBand(0); // TrustBand.T0_SANDBOX
133
+ * scoreToTrustBand(500); // TrustBand.T3_MONITORED
134
+ * scoreToTrustBand(975); // TrustBand.T7_AUTONOMOUS
135
+ * ```
136
+ */
137
+ export function scoreToTrustBand(score) {
138
+ if (score < 0 || score > 1000) {
139
+ throw new Error(`Trust score must be between 0 and 1000, got ${score}`);
140
+ }
141
+ if (score < 200)
142
+ return TrustBand.T0_SANDBOX;
143
+ if (score < 350)
144
+ return TrustBand.T1_OBSERVED;
145
+ if (score < 500)
146
+ return TrustBand.T2_PROVISIONAL;
147
+ if (score < 650)
148
+ return TrustBand.T3_MONITORED;
149
+ if (score < 800)
150
+ return TrustBand.T4_STANDARD;
151
+ if (score < 876)
152
+ return TrustBand.T5_TRUSTED;
153
+ if (score < 951)
154
+ return TrustBand.T6_CERTIFIED;
155
+ return TrustBand.T7_AUTONOMOUS;
156
+ }
157
+ /**
158
+ * Converts a trust band to its midpoint score.
159
+ *
160
+ * Returns the midpoint of the band's score range, useful for
161
+ * initializing agents at a given trust level.
162
+ *
163
+ * @param band - The trust band to convert
164
+ * @returns The midpoint score for the band (0-1000 scale)
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * trustBandToScore(TrustBand.T0_SANDBOX); // 100
169
+ * trustBandToScore(TrustBand.T4_STANDARD); // 725
170
+ * trustBandToScore(TrustBand.T7_AUTONOMOUS); // 976
171
+ * ```
172
+ */
173
+ export function trustBandToScore(band) {
174
+ const threshold = TRUST_BAND_THRESHOLDS[band];
175
+ return Math.round((threshold.min + threshold.max) / 2);
176
+ }
177
+ /**
178
+ * Gets the minimum score required to achieve a trust band.
179
+ *
180
+ * @param band - The target trust band
181
+ * @returns The minimum score needed to reach this band
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * getTrustBandMinScore(TrustBand.T4_STANDARD); // 650
186
+ * getTrustBandMinScore(TrustBand.T7_AUTONOMOUS); // 951
187
+ * ```
188
+ */
189
+ export function getTrustBandMinScore(band) {
190
+ return TRUST_BAND_THRESHOLDS[band].min;
191
+ }
192
+ /**
193
+ * Gets the maximum score for a trust band.
194
+ *
195
+ * @param band - The target trust band
196
+ * @returns The maximum score within this band
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * getTrustBandMaxScore(TrustBand.T0_SANDBOX); // 199
201
+ * getTrustBandMaxScore(TrustBand.T7_AUTONOMOUS); // 1000
202
+ * ```
203
+ */
204
+ export function getTrustBandMaxScore(band) {
205
+ return TRUST_BAND_THRESHOLDS[band].max;
206
+ }
207
+ /**
208
+ * Gets the human-readable label for a trust band.
209
+ *
210
+ * @param band - The trust band
211
+ * @returns Human-readable label string
212
+ *
213
+ * @example
214
+ * ```typescript
215
+ * getTrustBandLabel(TrustBand.T4_STANDARD); // "Standard"
216
+ * ```
217
+ */
218
+ export function getTrustBandLabel(band) {
219
+ return TRUST_BAND_THRESHOLDS[band].label;
220
+ }
221
+ /**
222
+ * Gets the description for a trust band.
223
+ *
224
+ * @param band - The trust band
225
+ * @returns Description of the autonomy level
226
+ */
227
+ export function getTrustBandDescription(band) {
228
+ return TRUST_BAND_THRESHOLDS[band].description;
229
+ }
230
+ /**
231
+ * Checks if a given band is higher (more trusted) than another.
232
+ *
233
+ * @param band - The band to check
234
+ * @param otherBand - The band to compare against
235
+ * @returns True if band is higher than otherBand
236
+ *
237
+ * @example
238
+ * ```typescript
239
+ * isTrustBandHigher(TrustBand.T5_TRUSTED, TrustBand.T2_PROVISIONAL); // true
240
+ * isTrustBandHigher(TrustBand.T1_OBSERVED, TrustBand.T4_STANDARD); // false
241
+ * ```
242
+ */
243
+ export function isTrustBandHigher(band, otherBand) {
244
+ return band > otherBand;
245
+ }
246
+ /**
247
+ * Checks if a given band meets or exceeds a required minimum band.
248
+ *
249
+ * @param band - The band to check
250
+ * @param requiredBand - The minimum required band
251
+ * @returns True if band meets or exceeds the requirement
252
+ *
253
+ * @example
254
+ * ```typescript
255
+ * meetsMinimumTrustBand(TrustBand.T5_TRUSTED, TrustBand.T4_STANDARD); // true
256
+ * meetsMinimumTrustBand(TrustBand.T2_PROVISIONAL, TrustBand.T4_STANDARD); // false
257
+ * ```
258
+ */
259
+ export function meetsMinimumTrustBand(band, requiredBand) {
260
+ return band >= requiredBand;
261
+ }
262
+ // Note: isTrustBand type guard is exported from canonical/validation.ts to avoid duplication
263
+ // Note: trustScoreSchema is exported from canonical/trust-score.ts with branded type transformation
264
+ // ============================================================================
265
+ // Zod Schemas
266
+ // ============================================================================
267
+ /**
268
+ * Zod schema for TrustBand enum validation.
269
+ *
270
+ * Validates that a value is a valid TrustBand enum member.
271
+ *
272
+ * @example
273
+ * ```typescript
274
+ * trustBandSchema.parse(TrustBand.T4_STANDARD); // Success
275
+ * trustBandSchema.parse(4); // Success
276
+ * trustBandSchema.parse(8); // Throws ZodError
277
+ * ```
278
+ */
279
+ export const trustBandSchema = z.nativeEnum(TrustBand, {
280
+ errorMap: () => ({ message: 'Invalid trust band. Must be T0-T7 (0-7).' }),
281
+ });
282
+ /**
283
+ * Zod schema for TrustBandThreshold validation.
284
+ */
285
+ export const trustBandThresholdSchema = z.object({
286
+ min: z.number().int().min(0).max(1000),
287
+ max: z.number().int().min(0).max(1000),
288
+ label: z.string().min(1),
289
+ description: z.string().min(1),
290
+ }).refine((data) => data.min <= data.max, { message: 'min must be less than or equal to max' });
291
+ /**
292
+ * Zod schema for validating band comparison requests.
293
+ */
294
+ export const bandComparisonSchema = z.object({
295
+ band: trustBandSchema,
296
+ otherBand: trustBandSchema,
297
+ });
298
+ //# sourceMappingURL=trust-band.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-band.js","sourceRoot":"","sources":["../../src/canonical/trust-band.ts"],"names":[],"mappings":"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"}