@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,322 @@
1
+ /**
2
+ * @fileoverview ACI Domain Codes and Bitmask Operations
3
+ *
4
+ * Defines the capability domain codes used in ACI strings, with bitmask
5
+ * encoding for efficient queries and domain matching.
6
+ *
7
+ * Domain codes represent high-level capability areas that agents can operate in.
8
+ * Each domain has a single-character code, a human-readable name, a bitmask value,
9
+ * and a description of its scope.
10
+ *
11
+ * @module @vorion/contracts/aci/domains
12
+ */
13
+ import { z } from 'zod';
14
+ /**
15
+ * Array of all valid domain codes.
16
+ */
17
+ export const DOMAIN_CODES = [
18
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'S',
19
+ ];
20
+ /**
21
+ * Zod schema for DomainCode validation.
22
+ */
23
+ export const domainCodeSchema = z.enum(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'S'], {
24
+ errorMap: () => ({ message: 'Invalid domain code. Must be one of: A, B, C, D, E, F, G, H, I, S' }),
25
+ });
26
+ /**
27
+ * Capability domains with their definitions.
28
+ *
29
+ * Each domain has a unique bitmask value (power of 2) for efficient
30
+ * storage and querying of domain combinations.
31
+ */
32
+ export const CAPABILITY_DOMAINS = {
33
+ A: { code: 'A', name: 'Administration', bit: 0x001, description: 'System administration, user management' },
34
+ B: { code: 'B', name: 'Business', bit: 0x002, description: 'Business logic, workflows, approvals' },
35
+ C: { code: 'C', name: 'Communications', bit: 0x004, description: 'Email, messaging, notifications' },
36
+ D: { code: 'D', name: 'Data', bit: 0x008, description: 'Data processing, analytics, reporting' },
37
+ E: { code: 'E', name: 'External', bit: 0x010, description: 'Third-party integrations, APIs' },
38
+ F: { code: 'F', name: 'Finance', bit: 0x020, description: 'Financial operations, payments, accounting' },
39
+ G: { code: 'G', name: 'Governance', bit: 0x040, description: 'Policy, compliance, oversight' },
40
+ H: { code: 'H', name: 'Hospitality', bit: 0x080, description: 'Venue, events, catering management' },
41
+ I: { code: 'I', name: 'Infrastructure', bit: 0x100, description: 'Compute, storage, networking' },
42
+ S: { code: 'S', name: 'Security', bit: 0x200, description: 'Authentication, authorization, audit' },
43
+ };
44
+ /**
45
+ * Human-readable domain names indexed by code.
46
+ */
47
+ export const DOMAIN_NAMES = {
48
+ A: 'Administration',
49
+ B: 'Business',
50
+ C: 'Communications',
51
+ D: 'Data',
52
+ E: 'External',
53
+ F: 'Finance',
54
+ G: 'Governance',
55
+ H: 'Hospitality',
56
+ I: 'Infrastructure',
57
+ S: 'Security',
58
+ };
59
+ /**
60
+ * Bitmask value representing all domains combined.
61
+ */
62
+ export const ALL_DOMAINS_BITMASK = Object.values(CAPABILITY_DOMAINS).reduce((mask, domain) => mask | domain.bit, 0);
63
+ // ============================================================================
64
+ // Bitmask Encoding/Decoding
65
+ // ============================================================================
66
+ /**
67
+ * Encodes an array of domain codes into a bitmask.
68
+ *
69
+ * @param domains - Array of domain codes to encode
70
+ * @returns Bitmask integer representing the domains
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * encodeDomains(['A', 'B']); // 0x003 (3)
75
+ * encodeDomains(['A', 'S']); // 0x201 (513)
76
+ * encodeDomains([]); // 0
77
+ * ```
78
+ */
79
+ export function encodeDomains(domains) {
80
+ return domains.reduce((mask, code) => {
81
+ const domain = CAPABILITY_DOMAINS[code];
82
+ return mask | domain.bit;
83
+ }, 0);
84
+ }
85
+ /**
86
+ * Decodes a bitmask into an array of domain codes.
87
+ *
88
+ * @param bitmask - Bitmask integer to decode
89
+ * @returns Array of domain codes present in the bitmask
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * decodeDomains(0x003); // ['A', 'B']
94
+ * decodeDomains(0x201); // ['A', 'S']
95
+ * decodeDomains(0); // []
96
+ * ```
97
+ */
98
+ export function decodeDomains(bitmask) {
99
+ return DOMAIN_CODES.filter((code) => (bitmask & CAPABILITY_DOMAINS[code].bit) !== 0);
100
+ }
101
+ /**
102
+ * Converts a domain string (e.g., "ABS") to an array of domain codes.
103
+ *
104
+ * @param domainString - String containing domain codes (e.g., "ABS")
105
+ * @returns Array of domain codes
106
+ * @throws Error if any character is not a valid domain code
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * parseDomainString('ABS'); // ['A', 'B', 'S']
111
+ * parseDomainString('D'); // ['D']
112
+ * ```
113
+ */
114
+ export function parseDomainString(domainString) {
115
+ const codes = domainString.split('');
116
+ const invalidCodes = codes.filter((c) => !DOMAIN_CODES.includes(c));
117
+ if (invalidCodes.length > 0) {
118
+ throw new Error(`Invalid domain codes: ${invalidCodes.join(', ')}`);
119
+ }
120
+ return codes;
121
+ }
122
+ /**
123
+ * Converts an array of domain codes to a domain string.
124
+ *
125
+ * @param domains - Array of domain codes
126
+ * @param sort - Whether to sort the codes alphabetically (default: true)
127
+ * @returns String containing the domain codes
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * formatDomainString(['S', 'A', 'B']); // 'ABS'
132
+ * formatDomainString(['S', 'A'], false); // 'SA'
133
+ * ```
134
+ */
135
+ export function formatDomainString(domains, sort = true) {
136
+ const uniqueDomains = [...new Set(domains)];
137
+ return sort ? uniqueDomains.sort().join('') : uniqueDomains.join('');
138
+ }
139
+ // ============================================================================
140
+ // Domain Matching
141
+ // ============================================================================
142
+ /**
143
+ * Checks if a set of domains includes all required domains.
144
+ *
145
+ * @param agentDomains - Domains the agent has (array or bitmask)
146
+ * @param requiredDomains - Domains required (array or bitmask)
147
+ * @returns True if agent has all required domains
148
+ *
149
+ * @example
150
+ * ```typescript
151
+ * hasDomains(['A', 'B', 'C'], ['A', 'B']); // true
152
+ * hasDomains(['A', 'B'], ['A', 'B', 'C']); // false
153
+ * hasDomains(0x007, 0x003); // true (ABC has AB)
154
+ * ```
155
+ */
156
+ export function hasDomains(agentDomains, requiredDomains) {
157
+ const agentMask = typeof agentDomains === 'number'
158
+ ? agentDomains
159
+ : encodeDomains(agentDomains);
160
+ const requiredMask = typeof requiredDomains === 'number'
161
+ ? requiredDomains
162
+ : encodeDomains(requiredDomains);
163
+ return (agentMask & requiredMask) === requiredMask;
164
+ }
165
+ /**
166
+ * Checks if a set of domains satisfies domain requirements.
167
+ *
168
+ * This is an alias for hasDomains with more semantic naming for
169
+ * authorization contexts.
170
+ *
171
+ * @param agentDomains - Domains the agent has
172
+ * @param requirements - Domain requirements to satisfy
173
+ * @returns True if all requirements are satisfied
174
+ */
175
+ export function satisfiesDomainRequirements(agentDomains, requirements) {
176
+ return hasDomains(agentDomains, requirements);
177
+ }
178
+ /**
179
+ * Gets the intersection of two domain sets.
180
+ *
181
+ * @param domainsA - First domain set
182
+ * @param domainsB - Second domain set
183
+ * @returns Array of domains present in both sets
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * intersectDomains(['A', 'B', 'C'], ['B', 'C', 'D']); // ['B', 'C']
188
+ * ```
189
+ */
190
+ export function intersectDomains(domainsA, domainsB) {
191
+ const maskA = typeof domainsA === 'number' ? domainsA : encodeDomains(domainsA);
192
+ const maskB = typeof domainsB === 'number' ? domainsB : encodeDomains(domainsB);
193
+ return decodeDomains(maskA & maskB);
194
+ }
195
+ /**
196
+ * Gets the union of two domain sets.
197
+ *
198
+ * @param domainsA - First domain set
199
+ * @param domainsB - Second domain set
200
+ * @returns Array of domains present in either set
201
+ *
202
+ * @example
203
+ * ```typescript
204
+ * unionDomains(['A', 'B'], ['B', 'C']); // ['A', 'B', 'C']
205
+ * ```
206
+ */
207
+ export function unionDomains(domainsA, domainsB) {
208
+ const maskA = typeof domainsA === 'number' ? domainsA : encodeDomains(domainsA);
209
+ const maskB = typeof domainsB === 'number' ? domainsB : encodeDomains(domainsB);
210
+ return decodeDomains(maskA | maskB);
211
+ }
212
+ /**
213
+ * Gets domains in the first set that are not in the second.
214
+ *
215
+ * @param domainsA - First domain set
216
+ * @param domainsB - Second domain set
217
+ * @returns Array of domains in A but not in B
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * differenceDomains(['A', 'B', 'C'], ['B', 'C']); // ['A']
222
+ * ```
223
+ */
224
+ export function differenceDomains(domainsA, domainsB) {
225
+ const maskA = typeof domainsA === 'number' ? domainsA : encodeDomains(domainsA);
226
+ const maskB = typeof domainsB === 'number' ? domainsB : encodeDomains(domainsB);
227
+ return decodeDomains(maskA & ~maskB);
228
+ }
229
+ // ============================================================================
230
+ // Domain Information
231
+ // ============================================================================
232
+ /**
233
+ * Gets the full definition for a domain code.
234
+ *
235
+ * @param code - Domain code
236
+ * @returns Domain definition
237
+ */
238
+ export function getDomainDefinition(code) {
239
+ return CAPABILITY_DOMAINS[code];
240
+ }
241
+ /**
242
+ * Gets the human-readable name for a domain code.
243
+ *
244
+ * @param code - Domain code
245
+ * @returns Domain name
246
+ */
247
+ export function getDomainName(code) {
248
+ return DOMAIN_NAMES[code];
249
+ }
250
+ /**
251
+ * Gets the bitmask value for a domain code.
252
+ *
253
+ * @param code - Domain code
254
+ * @returns Bitmask value
255
+ */
256
+ export function getDomainBit(code) {
257
+ return CAPABILITY_DOMAINS[code].bit;
258
+ }
259
+ /**
260
+ * Counts the number of domains in a bitmask.
261
+ *
262
+ * @param bitmask - Domain bitmask
263
+ * @returns Number of domains
264
+ */
265
+ export function countDomains(bitmask) {
266
+ let count = 0;
267
+ let mask = bitmask;
268
+ while (mask) {
269
+ count += mask & 1;
270
+ mask >>>= 1;
271
+ }
272
+ return count;
273
+ }
274
+ // ============================================================================
275
+ // Type Guards
276
+ // ============================================================================
277
+ /**
278
+ * Type guard to check if a value is a valid DomainCode.
279
+ *
280
+ * @param value - Value to check
281
+ * @returns True if value is a valid DomainCode
282
+ */
283
+ export function isDomainCode(value) {
284
+ return typeof value === 'string' && DOMAIN_CODES.includes(value);
285
+ }
286
+ /**
287
+ * Type guard to check if all values in an array are valid DomainCodes.
288
+ *
289
+ * @param values - Array to check
290
+ * @returns True if all values are valid DomainCodes
291
+ */
292
+ export function isDomainCodeArray(values) {
293
+ return Array.isArray(values) && values.every(isDomainCode);
294
+ }
295
+ // ============================================================================
296
+ // Zod Schemas
297
+ // ============================================================================
298
+ /**
299
+ * Zod schema for domain definition.
300
+ */
301
+ export const domainDefinitionSchema = z.object({
302
+ code: domainCodeSchema,
303
+ name: z.string().min(1),
304
+ bit: z.number().int().positive(),
305
+ description: z.string().min(1),
306
+ });
307
+ /**
308
+ * Zod schema for an array of domain codes.
309
+ */
310
+ export const domainCodeArraySchema = z.array(domainCodeSchema);
311
+ /**
312
+ * Zod schema for a domain bitmask (positive integer).
313
+ */
314
+ export const domainBitmaskSchema = z.number().int().min(0).max(ALL_DOMAINS_BITMASK);
315
+ /**
316
+ * Zod schema for domain string (e.g., "ABS").
317
+ */
318
+ export const domainStringSchema = z
319
+ .string()
320
+ .regex(/^[ABCDEFGHIS]+$/, 'Domain string must only contain valid domain codes (A-I, S)')
321
+ .transform((str) => parseDomainString(str));
322
+ //# sourceMappingURL=domains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/aci/domains.ts"],"names":[],"mappings":"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"}