@vorionsys/contracts 0.1.1 → 0.1.2

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