@vorionsys/atsf-core 0.1.0 → 0.2.1

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 (215) hide show
  1. package/README.md +12 -12
  2. package/dist/api/server.d.ts.map +1 -1
  3. package/dist/api/server.js +463 -35
  4. package/dist/api/server.js.map +1 -1
  5. package/dist/arbitration/index.d.ts.map +1 -1
  6. package/dist/arbitration/index.js +8 -6
  7. package/dist/arbitration/index.js.map +1 -1
  8. package/dist/audit/key-manager.d.ts +118 -0
  9. package/dist/audit/key-manager.d.ts.map +1 -0
  10. package/dist/audit/key-manager.js +565 -0
  11. package/dist/audit/key-manager.js.map +1 -0
  12. package/dist/basis/evaluator.d.ts +31 -0
  13. package/dist/basis/evaluator.d.ts.map +1 -1
  14. package/dist/basis/evaluator.js +205 -10
  15. package/dist/basis/evaluator.js.map +1 -1
  16. package/dist/basis/parser.d.ts +210 -210
  17. package/dist/basis/parser.js.map +1 -1
  18. package/dist/carbon-aware/carbon-metrics.d.ts +151 -0
  19. package/dist/carbon-aware/carbon-metrics.d.ts.map +1 -0
  20. package/dist/carbon-aware/carbon-metrics.js +370 -0
  21. package/dist/carbon-aware/carbon-metrics.js.map +1 -0
  22. package/dist/carbon-aware/carbon-router.d.ts +101 -0
  23. package/dist/carbon-aware/carbon-router.d.ts.map +1 -0
  24. package/dist/carbon-aware/carbon-router.js +400 -0
  25. package/dist/carbon-aware/carbon-router.js.map +1 -0
  26. package/dist/chain/index.d.ts +147 -0
  27. package/dist/chain/index.d.ts.map +1 -0
  28. package/dist/chain/index.js +219 -0
  29. package/dist/chain/index.js.map +1 -0
  30. package/dist/cognigate/index.d.ts +33 -4
  31. package/dist/cognigate/index.d.ts.map +1 -1
  32. package/dist/cognigate/index.js +199 -24
  33. package/dist/cognigate/index.js.map +1 -1
  34. package/dist/common/adapters.d.ts +172 -0
  35. package/dist/common/adapters.d.ts.map +1 -0
  36. package/dist/common/adapters.js +329 -0
  37. package/dist/common/adapters.js.map +1 -0
  38. package/dist/common/config.d.ts +168 -163
  39. package/dist/common/config.d.ts.map +1 -1
  40. package/dist/common/config.js +2 -0
  41. package/dist/common/config.js.map +1 -1
  42. package/dist/common/index.d.ts +1 -0
  43. package/dist/common/index.d.ts.map +1 -1
  44. package/dist/common/index.js +1 -0
  45. package/dist/common/index.js.map +1 -1
  46. package/dist/common/types.d.ts +67 -16
  47. package/dist/common/types.d.ts.map +1 -1
  48. package/dist/common/types.js +4 -0
  49. package/dist/common/types.js.map +1 -1
  50. package/dist/enforce/index.d.ts +226 -16
  51. package/dist/enforce/index.d.ts.map +1 -1
  52. package/dist/enforce/index.js +196 -49
  53. package/dist/enforce/index.js.map +1 -1
  54. package/dist/governance/fluid-workflow.d.ts +217 -0
  55. package/dist/governance/fluid-workflow.d.ts.map +1 -0
  56. package/dist/governance/fluid-workflow.js +491 -0
  57. package/dist/governance/fluid-workflow.js.map +1 -0
  58. package/dist/governance/index.d.ts +1 -0
  59. package/dist/governance/index.d.ts.map +1 -1
  60. package/dist/governance/index.js +1 -0
  61. package/dist/governance/index.js.map +1 -1
  62. package/dist/index.d.ts +9 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +14 -3
  65. package/dist/index.js.map +1 -1
  66. package/dist/intent/index.d.ts +127 -10
  67. package/dist/intent/index.d.ts.map +1 -1
  68. package/dist/intent/index.js +121 -16
  69. package/dist/intent/index.js.map +1 -1
  70. package/dist/langchain/executor.d.ts +19 -5
  71. package/dist/langchain/executor.d.ts.map +1 -1
  72. package/dist/langchain/executor.js +287 -36
  73. package/dist/langchain/executor.js.map +1 -1
  74. package/dist/langchain/index.d.ts +2 -1
  75. package/dist/langchain/index.d.ts.map +1 -1
  76. package/dist/langchain/index.js +3 -1
  77. package/dist/langchain/index.js.map +1 -1
  78. package/dist/langchain/tools.d.ts.map +1 -1
  79. package/dist/langchain/tools.js +2 -1
  80. package/dist/langchain/tools.js.map +1 -1
  81. package/dist/langchain/types.d.ts +41 -0
  82. package/dist/langchain/types.d.ts.map +1 -1
  83. package/dist/layers/index.d.ts +1 -1
  84. package/dist/layers/index.d.ts.map +1 -1
  85. package/dist/persistence/file.d.ts +35 -3
  86. package/dist/persistence/file.d.ts.map +1 -1
  87. package/dist/persistence/file.js +138 -11
  88. package/dist/persistence/file.js.map +1 -1
  89. package/dist/persistence/index.d.ts +11 -1
  90. package/dist/persistence/index.d.ts.map +1 -1
  91. package/dist/persistence/index.js +25 -1
  92. package/dist/persistence/index.js.map +1 -1
  93. package/dist/persistence/sqlite.d.ts +135 -0
  94. package/dist/persistence/sqlite.d.ts.map +1 -0
  95. package/dist/persistence/sqlite.js +372 -0
  96. package/dist/persistence/sqlite.js.map +1 -0
  97. package/dist/persistence/supabase.d.ts +93 -0
  98. package/dist/persistence/supabase.d.ts.map +1 -0
  99. package/dist/persistence/supabase.js +219 -0
  100. package/dist/persistence/supabase.js.map +1 -0
  101. package/dist/persistence/types.d.ts +5 -1
  102. package/dist/persistence/types.d.ts.map +1 -1
  103. package/dist/phase6/ceiling.d.ts +177 -0
  104. package/dist/phase6/ceiling.d.ts.map +1 -0
  105. package/dist/phase6/ceiling.js +463 -0
  106. package/dist/phase6/ceiling.js.map +1 -0
  107. package/dist/phase6/context.d.ts +207 -0
  108. package/dist/phase6/context.d.ts.map +1 -0
  109. package/dist/phase6/context.js +603 -0
  110. package/dist/phase6/context.js.map +1 -0
  111. package/dist/phase6/index.d.ts +79 -0
  112. package/dist/phase6/index.d.ts.map +1 -0
  113. package/dist/phase6/index.js +152 -0
  114. package/dist/phase6/index.js.map +1 -0
  115. package/dist/phase6/presets.d.ts +148 -0
  116. package/dist/phase6/presets.d.ts.map +1 -0
  117. package/dist/phase6/presets.js +467 -0
  118. package/dist/phase6/presets.js.map +1 -0
  119. package/dist/phase6/provenance.d.ts +148 -0
  120. package/dist/phase6/provenance.d.ts.map +1 -0
  121. package/dist/phase6/provenance.js +545 -0
  122. package/dist/phase6/provenance.js.map +1 -0
  123. package/dist/phase6/role-gates/index.d.ts +7 -0
  124. package/dist/phase6/role-gates/index.d.ts.map +1 -0
  125. package/dist/phase6/role-gates/index.js +7 -0
  126. package/dist/phase6/role-gates/index.js.map +1 -0
  127. package/dist/phase6/role-gates/kernel.d.ts +84 -0
  128. package/dist/phase6/role-gates/kernel.d.ts.map +1 -0
  129. package/dist/phase6/role-gates/kernel.js +258 -0
  130. package/dist/phase6/role-gates/kernel.js.map +1 -0
  131. package/dist/phase6/role-gates/policy.d.ts +110 -0
  132. package/dist/phase6/role-gates/policy.d.ts.map +1 -0
  133. package/dist/phase6/role-gates/policy.js +157 -0
  134. package/dist/phase6/role-gates/policy.js.map +1 -0
  135. package/dist/phase6/role-gates.d.ts +164 -0
  136. package/dist/phase6/role-gates.d.ts.map +1 -0
  137. package/dist/phase6/role-gates.js +536 -0
  138. package/dist/phase6/role-gates.js.map +1 -0
  139. package/dist/phase6/types.d.ts +1827 -0
  140. package/dist/phase6/types.d.ts.map +1 -0
  141. package/dist/phase6/types.js +450 -0
  142. package/dist/phase6/types.js.map +1 -0
  143. package/dist/phase6/weight-presets/canonical.d.ts +93 -0
  144. package/dist/phase6/weight-presets/canonical.d.ts.map +1 -0
  145. package/dist/phase6/weight-presets/canonical.js +122 -0
  146. package/dist/phase6/weight-presets/canonical.js.map +1 -0
  147. package/dist/phase6/weight-presets/deltas.d.ts +144 -0
  148. package/dist/phase6/weight-presets/deltas.d.ts.map +1 -0
  149. package/dist/phase6/weight-presets/deltas.js +184 -0
  150. package/dist/phase6/weight-presets/deltas.js.map +1 -0
  151. package/dist/phase6/weight-presets/index.d.ts +8 -0
  152. package/dist/phase6/weight-presets/index.d.ts.map +1 -0
  153. package/dist/phase6/weight-presets/index.js +8 -0
  154. package/dist/phase6/weight-presets/index.js.map +1 -0
  155. package/dist/phase6/weight-presets/merger.d.ts +79 -0
  156. package/dist/phase6/weight-presets/merger.d.ts.map +1 -0
  157. package/dist/phase6/weight-presets/merger.js +161 -0
  158. package/dist/phase6/weight-presets/merger.js.map +1 -0
  159. package/dist/proof/index.d.ts +50 -1
  160. package/dist/proof/index.d.ts.map +1 -1
  161. package/dist/proof/index.js +122 -3
  162. package/dist/proof/index.js.map +1 -1
  163. package/dist/proof/merkle.d.ts +195 -0
  164. package/dist/proof/merkle.d.ts.map +1 -0
  165. package/dist/proof/merkle.js +412 -0
  166. package/dist/proof/merkle.js.map +1 -0
  167. package/dist/proof/zk-proofs.d.ts +218 -0
  168. package/dist/proof/zk-proofs.d.ts.map +1 -0
  169. package/dist/proof/zk-proofs.js +531 -0
  170. package/dist/proof/zk-proofs.js.map +1 -0
  171. package/dist/trust-engine/ceiling-enforcement/audit.d.ts +98 -0
  172. package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -0
  173. package/dist/trust-engine/ceiling-enforcement/audit.js +160 -0
  174. package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -0
  175. package/dist/trust-engine/ceiling-enforcement/index.d.ts +6 -0
  176. package/dist/trust-engine/ceiling-enforcement/index.d.ts.map +1 -0
  177. package/dist/trust-engine/ceiling-enforcement/index.js +6 -0
  178. package/dist/trust-engine/ceiling-enforcement/index.js.map +1 -0
  179. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +112 -0
  180. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -0
  181. package/dist/trust-engine/ceiling-enforcement/kernel.js +158 -0
  182. package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -0
  183. package/dist/trust-engine/context-policy/enforcement.d.ts +62 -0
  184. package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -0
  185. package/dist/trust-engine/context-policy/enforcement.js +104 -0
  186. package/dist/trust-engine/context-policy/enforcement.js.map +1 -0
  187. package/dist/trust-engine/context-policy/factory.d.ts +75 -0
  188. package/dist/trust-engine/context-policy/factory.d.ts.map +1 -0
  189. package/dist/trust-engine/context-policy/factory.js +130 -0
  190. package/dist/trust-engine/context-policy/factory.js.map +1 -0
  191. package/dist/trust-engine/context-policy/index.d.ts +6 -0
  192. package/dist/trust-engine/context-policy/index.d.ts.map +1 -0
  193. package/dist/trust-engine/context-policy/index.js +6 -0
  194. package/dist/trust-engine/context-policy/index.js.map +1 -0
  195. package/dist/trust-engine/creation-modifiers/index.d.ts +5 -0
  196. package/dist/trust-engine/creation-modifiers/index.d.ts.map +1 -0
  197. package/dist/trust-engine/creation-modifiers/index.js +5 -0
  198. package/dist/trust-engine/creation-modifiers/index.js.map +1 -0
  199. package/dist/trust-engine/creation-modifiers/types.d.ts +112 -0
  200. package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -0
  201. package/dist/trust-engine/creation-modifiers/types.js +166 -0
  202. package/dist/trust-engine/creation-modifiers/types.js.map +1 -0
  203. package/dist/trust-engine/decay-profiles.d.ts +159 -0
  204. package/dist/trust-engine/decay-profiles.d.ts.map +1 -0
  205. package/dist/trust-engine/decay-profiles.js +210 -0
  206. package/dist/trust-engine/decay-profiles.js.map +1 -0
  207. package/dist/trust-engine/index.d.ts +144 -5
  208. package/dist/trust-engine/index.d.ts.map +1 -1
  209. package/dist/trust-engine/index.js +320 -15
  210. package/dist/trust-engine/index.js.map +1 -1
  211. package/dist/trust-engine/phase6-types.d.ts +123 -0
  212. package/dist/trust-engine/phase6-types.d.ts.map +1 -0
  213. package/dist/trust-engine/phase6-types.js +88 -0
  214. package/dist/trust-engine/phase6-types.js.map +1 -0
  215. package/package.json +26 -10
@@ -0,0 +1,603 @@
1
+ /**
2
+ * Q2: Hierarchical Context System
3
+ *
4
+ * Implements 4-Tier Context with Tiered Immutability:
5
+ * - Tier 1: Deployment Context (IMMUTABLE - set at deployment)
6
+ * - Tier 2: Organizational Context (LOCKED POST-STARTUP)
7
+ * - Tier 3: Agent Context (FROZEN AT CREATION)
8
+ * - Tier 4: Operation Context (EPHEMERAL - per-request)
9
+ *
10
+ * Key Features:
11
+ * - Cryptographic hash chain for integrity verification
12
+ * - Parent chain validation (each tier references parent)
13
+ * - Ceiling inheritance (child cannot exceed parent)
14
+ * - Regulatory framework propagation
15
+ *
16
+ * @packageDocumentation
17
+ */
18
+ import { createLogger } from '../common/logger.js';
19
+ import { TrustTier, CONTEXT_CEILINGS, deploymentContextSchema, organizationalContextSchema, agentContextSchema, operationContextSchema, } from './types.js';
20
+ const logger = createLogger({ component: 'phase6:context' });
21
+ // =============================================================================
22
+ // HASH UTILITIES
23
+ // =============================================================================
24
+ /**
25
+ * Calculate SHA-256 hash for context integrity
26
+ */
27
+ async function calculateHash(data) {
28
+ const encoder = new TextEncoder();
29
+ const dataBuffer = encoder.encode(data);
30
+ const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);
31
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
32
+ return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');
33
+ }
34
+ /**
35
+ * Create deterministic hash from context data
36
+ */
37
+ async function hashContextData(data) {
38
+ // Sort keys for deterministic serialization
39
+ const sortedKeys = Object.keys(data).sort();
40
+ const sortedData = {};
41
+ for (const key of sortedKeys) {
42
+ sortedData[key] = data[key];
43
+ }
44
+ return calculateHash(JSON.stringify(sortedData));
45
+ }
46
+ /**
47
+ * Create an immutable deployment context
48
+ * Once created, this cannot be modified without redeployment.
49
+ */
50
+ export async function createDeploymentContext(input) {
51
+ const now = new Date();
52
+ // Calculate deployment hash from configuration
53
+ const configData = {
54
+ deploymentId: input.deploymentId,
55
+ regulatoryFramework: input.regulatoryFramework,
56
+ maxAllowedTier: input.maxAllowedTier,
57
+ allowedContextTypes: input.allowedContextTypes,
58
+ deployedAt: now.toISOString(),
59
+ deployedBy: input.deployedBy,
60
+ };
61
+ const deploymentHash = await hashContextData(configData);
62
+ const context = {
63
+ deploymentId: input.deploymentId,
64
+ deploymentHash,
65
+ regulatoryFramework: input.regulatoryFramework,
66
+ maxAllowedTier: input.maxAllowedTier,
67
+ allowedContextTypes: input.allowedContextTypes,
68
+ deployedAt: now,
69
+ deployedBy: input.deployedBy,
70
+ immutable: true,
71
+ };
72
+ // Validate with Zod
73
+ const parsed = deploymentContextSchema.safeParse(context);
74
+ if (!parsed.success) {
75
+ logger.error({ errors: parsed.error.errors }, 'Invalid deployment context');
76
+ throw new Error(`Invalid deployment context: ${parsed.error.message}`);
77
+ }
78
+ logger.info({
79
+ deploymentId: context.deploymentId,
80
+ framework: context.regulatoryFramework,
81
+ maxTier: context.maxAllowedTier,
82
+ }, 'Deployment context created');
83
+ return Object.freeze(context);
84
+ }
85
+ /**
86
+ * Verify deployment context integrity
87
+ */
88
+ export async function verifyDeploymentContext(context) {
89
+ // Recalculate hash
90
+ const configData = {
91
+ deploymentId: context.deploymentId,
92
+ regulatoryFramework: context.regulatoryFramework,
93
+ maxAllowedTier: context.maxAllowedTier,
94
+ allowedContextTypes: context.allowedContextTypes,
95
+ deployedAt: context.deployedAt.toISOString(),
96
+ deployedBy: context.deployedBy,
97
+ };
98
+ const expectedHash = await hashContextData(configData);
99
+ if (context.deploymentHash !== expectedHash) {
100
+ return { valid: false, reason: 'Deployment hash mismatch - possible tampering' };
101
+ }
102
+ // Validate immutability marker
103
+ if (context.immutable !== true) {
104
+ return { valid: false, reason: 'Immutability marker missing' };
105
+ }
106
+ return { valid: true };
107
+ }
108
+ /**
109
+ * Builder for organizational context
110
+ * Allows configuration during startup, then locks.
111
+ */
112
+ export class OrganizationalContextBuilder {
113
+ context;
114
+ locked = false;
115
+ constructor(input) {
116
+ // Validate parent deployment first
117
+ if (!input.parentDeployment.immutable) {
118
+ throw new Error('Parent deployment context must be immutable');
119
+ }
120
+ // Ensure max trust tier doesn't exceed parent
121
+ const parentMaxTier = input.parentDeployment.maxAllowedTier;
122
+ const requestedMaxTier = input.constraints.maxTrustTier ?? parentMaxTier;
123
+ // Tier comparison (T0 < T1 < ... < T5)
124
+ const tierOrder = [TrustTier.T0, TrustTier.T1, TrustTier.T2, TrustTier.T3, TrustTier.T4, TrustTier.T5];
125
+ const parentTierIdx = tierOrder.indexOf(parentMaxTier);
126
+ const requestedTierIdx = tierOrder.indexOf(requestedMaxTier);
127
+ const effectiveMaxTier = requestedTierIdx <= parentTierIdx ? requestedMaxTier : parentMaxTier;
128
+ const constraints = {
129
+ maxTrustTier: effectiveMaxTier,
130
+ deniedDomains: input.constraints.deniedDomains,
131
+ requiredAttestations: input.constraints.requiredAttestations,
132
+ dataClassification: input.constraints.dataClassification,
133
+ auditLevel: input.constraints.auditLevel,
134
+ };
135
+ this.context = {
136
+ orgId: input.orgId,
137
+ tenantId: input.tenantId,
138
+ parentDeployment: input.parentDeployment,
139
+ constraints,
140
+ };
141
+ }
142
+ /**
143
+ * Update constraints (only allowed before locking)
144
+ */
145
+ updateConstraints(updates) {
146
+ if (this.locked) {
147
+ throw new Error('Organizational context is locked - cannot modify constraints');
148
+ }
149
+ // Ensure updates don't exceed parent deployment ceiling
150
+ if (updates.maxTrustTier !== undefined) {
151
+ const parentMaxTier = this.context.parentDeployment.maxAllowedTier;
152
+ const tierOrder = [TrustTier.T0, TrustTier.T1, TrustTier.T2, TrustTier.T3, TrustTier.T4, TrustTier.T5];
153
+ const parentTierIdx = tierOrder.indexOf(parentMaxTier);
154
+ const requestedTierIdx = tierOrder.indexOf(updates.maxTrustTier);
155
+ if (requestedTierIdx > parentTierIdx) {
156
+ throw new Error(`Cannot set maxTrustTier to ${updates.maxTrustTier} - parent deployment limits to ${parentMaxTier}`);
157
+ }
158
+ }
159
+ this.context.constraints = {
160
+ ...this.context.constraints,
161
+ ...updates,
162
+ };
163
+ return this;
164
+ }
165
+ /**
166
+ * Add denied domain
167
+ */
168
+ addDeniedDomain(domain) {
169
+ if (this.locked) {
170
+ throw new Error('Organizational context is locked - cannot add denied domains');
171
+ }
172
+ this.context.constraints = {
173
+ ...this.context.constraints,
174
+ deniedDomains: [...this.context.constraints.deniedDomains, domain],
175
+ };
176
+ return this;
177
+ }
178
+ /**
179
+ * Add required attestation
180
+ */
181
+ addRequiredAttestation(attestation) {
182
+ if (this.locked) {
183
+ throw new Error('Organizational context is locked - cannot add attestations');
184
+ }
185
+ this.context.constraints = {
186
+ ...this.context.constraints,
187
+ requiredAttestations: [...this.context.constraints.requiredAttestations, attestation],
188
+ };
189
+ return this;
190
+ }
191
+ /**
192
+ * Lock the organizational context (no further modifications allowed)
193
+ */
194
+ async lock() {
195
+ if (this.locked) {
196
+ throw new Error('Organizational context is already locked');
197
+ }
198
+ const now = new Date();
199
+ // Calculate org hash including parent chain
200
+ const hashData = {
201
+ orgId: this.context.orgId,
202
+ tenantId: this.context.tenantId,
203
+ parentDeploymentHash: this.context.parentDeployment.deploymentHash,
204
+ constraints: this.context.constraints,
205
+ lockedAt: now.toISOString(),
206
+ };
207
+ const orgHash = await hashContextData(hashData);
208
+ const lockedContext = {
209
+ orgId: this.context.orgId,
210
+ tenantId: this.context.tenantId,
211
+ parentDeployment: this.context.parentDeployment,
212
+ lockedAt: now,
213
+ constraints: this.context.constraints,
214
+ orgHash,
215
+ };
216
+ // Validate with Zod
217
+ const parsed = organizationalContextSchema.safeParse(lockedContext);
218
+ if (!parsed.success) {
219
+ throw new Error(`Invalid organizational context: ${parsed.error.message}`);
220
+ }
221
+ this.locked = true;
222
+ logger.info({
223
+ orgId: lockedContext.orgId,
224
+ tenantId: lockedContext.tenantId,
225
+ maxTier: lockedContext.constraints.maxTrustTier,
226
+ }, 'Organizational context locked');
227
+ return Object.freeze(lockedContext);
228
+ }
229
+ /**
230
+ * Check if context is locked
231
+ */
232
+ isLocked() {
233
+ return this.locked;
234
+ }
235
+ }
236
+ /**
237
+ * Create and immediately lock organizational context
238
+ */
239
+ export async function createOrganizationalContext(input) {
240
+ const builder = new OrganizationalContextBuilder(input);
241
+ return builder.lock();
242
+ }
243
+ /**
244
+ * Verify organizational context integrity
245
+ */
246
+ export async function verifyOrganizationalContext(context) {
247
+ // Verify parent first
248
+ const parentResult = await verifyDeploymentContext(context.parentDeployment);
249
+ if (!parentResult.valid) {
250
+ return { valid: false, reason: `Parent deployment invalid: ${parentResult.reason}` };
251
+ }
252
+ // Verify org is locked
253
+ if (!context.lockedAt) {
254
+ return { valid: false, reason: 'Organizational context not locked' };
255
+ }
256
+ // Recalculate hash
257
+ const hashData = {
258
+ orgId: context.orgId,
259
+ tenantId: context.tenantId,
260
+ parentDeploymentHash: context.parentDeployment.deploymentHash,
261
+ constraints: context.constraints,
262
+ lockedAt: context.lockedAt.toISOString(),
263
+ };
264
+ const expectedHash = await hashContextData(hashData);
265
+ if (context.orgHash !== expectedHash) {
266
+ return { valid: false, reason: 'Organizational hash mismatch - possible tampering' };
267
+ }
268
+ // Verify constraints don't exceed parent
269
+ const tierOrder = [TrustTier.T0, TrustTier.T1, TrustTier.T2, TrustTier.T3, TrustTier.T4, TrustTier.T5];
270
+ const parentTierIdx = tierOrder.indexOf(context.parentDeployment.maxAllowedTier);
271
+ const orgTierIdx = tierOrder.indexOf(context.constraints.maxTrustTier);
272
+ if (orgTierIdx > parentTierIdx) {
273
+ return {
274
+ valid: false,
275
+ reason: `Organizational tier ${context.constraints.maxTrustTier} exceeds parent ${context.parentDeployment.maxAllowedTier}`,
276
+ };
277
+ }
278
+ return { valid: true };
279
+ }
280
+ /**
281
+ * Create an agent context (frozen at creation)
282
+ * Once created, this cannot be modified for the lifetime of the agent.
283
+ */
284
+ export async function createAgentContext(input) {
285
+ // Verify parent is locked
286
+ if (!input.parentOrg.lockedAt) {
287
+ throw new Error('Parent organizational context must be locked before creating agent context');
288
+ }
289
+ // Verify context type is allowed by deployment
290
+ if (!input.parentOrg.parentDeployment.allowedContextTypes.includes(input.contextType)) {
291
+ throw new Error(`Context type ${input.contextType} not allowed by deployment - allowed: ${input.parentOrg.parentDeployment.allowedContextTypes.join(', ')}`);
292
+ }
293
+ const now = new Date();
294
+ // Calculate context hash including parent chain
295
+ const hashData = {
296
+ agentId: input.agentId,
297
+ parentOrgHash: input.parentOrg.orgHash,
298
+ contextType: input.contextType,
299
+ createdAt: now.toISOString(),
300
+ createdBy: input.createdBy,
301
+ };
302
+ const contextHash = await hashContextData(hashData);
303
+ const context = {
304
+ agentId: input.agentId,
305
+ parentOrg: input.parentOrg,
306
+ contextType: input.contextType,
307
+ createdAt: now,
308
+ createdBy: input.createdBy,
309
+ contextHash,
310
+ };
311
+ // Validate with Zod
312
+ const parsed = agentContextSchema.safeParse(context);
313
+ if (!parsed.success) {
314
+ throw new Error(`Invalid agent context: ${parsed.error.message}`);
315
+ }
316
+ logger.info({
317
+ agentId: context.agentId,
318
+ contextType: context.contextType,
319
+ parentOrgId: input.parentOrg.orgId,
320
+ }, 'Agent context created (frozen)');
321
+ return Object.freeze(context);
322
+ }
323
+ /**
324
+ * Verify agent context integrity
325
+ */
326
+ export async function verifyAgentContext(context) {
327
+ // Verify parent chain
328
+ const orgResult = await verifyOrganizationalContext(context.parentOrg);
329
+ if (!orgResult.valid) {
330
+ return { valid: false, reason: `Parent organization invalid: ${orgResult.reason}` };
331
+ }
332
+ // Verify context type is still allowed
333
+ if (!context.parentOrg.parentDeployment.allowedContextTypes.includes(context.contextType)) {
334
+ return {
335
+ valid: false,
336
+ reason: `Context type ${context.contextType} no longer allowed by deployment`,
337
+ };
338
+ }
339
+ // Recalculate hash
340
+ const hashData = {
341
+ agentId: context.agentId,
342
+ parentOrgHash: context.parentOrg.orgHash,
343
+ contextType: context.contextType,
344
+ createdAt: context.createdAt.toISOString(),
345
+ createdBy: context.createdBy,
346
+ };
347
+ const expectedHash = await hashContextData(hashData);
348
+ if (context.contextHash !== expectedHash) {
349
+ return { valid: false, reason: 'Agent context hash mismatch - possible tampering' };
350
+ }
351
+ return { valid: true };
352
+ }
353
+ /**
354
+ * Get the effective ceiling for an agent context
355
+ * Considers: deployment ceiling, org ceiling, and context type ceiling
356
+ */
357
+ export function getAgentContextCeiling(context) {
358
+ // Context type ceiling
359
+ const contextCeiling = CONTEXT_CEILINGS[context.contextType];
360
+ // Org constraint ceiling (convert tier to score)
361
+ const tierOrder = [TrustTier.T0, TrustTier.T1, TrustTier.T2, TrustTier.T3, TrustTier.T4, TrustTier.T5];
362
+ const tierScores = [99, 299, 499, 699, 899, 1000];
363
+ const orgTierIdx = tierOrder.indexOf(context.parentOrg.constraints.maxTrustTier);
364
+ const orgCeiling = tierScores[orgTierIdx];
365
+ // Deployment ceiling
366
+ const deploymentTierIdx = tierOrder.indexOf(context.parentOrg.parentDeployment.maxAllowedTier);
367
+ const deploymentCeiling = tierScores[deploymentTierIdx];
368
+ // Return minimum of all ceilings
369
+ return Math.min(contextCeiling, orgCeiling, deploymentCeiling);
370
+ }
371
+ /**
372
+ * Create an ephemeral operation context
373
+ * Automatically expires after TTL.
374
+ */
375
+ export async function createOperationContext(input) {
376
+ // Verify parent agent context
377
+ const agentResult = await verifyAgentContext(input.parentAgent);
378
+ if (!agentResult.valid) {
379
+ throw new Error(`Invalid parent agent context: ${agentResult.reason}`);
380
+ }
381
+ const now = new Date();
382
+ const ttlMs = input.ttlMs ?? 5 * 60 * 1000; // Default 5 minutes
383
+ const expiresAt = new Date(now.getTime() + ttlMs);
384
+ const context = {
385
+ operationId: crypto.randomUUID(),
386
+ parentAgent: input.parentAgent,
387
+ requestMetadata: input.requestMetadata ?? {},
388
+ correlationId: crypto.randomUUID(),
389
+ startedAt: now,
390
+ expiresAt,
391
+ ephemeral: true,
392
+ };
393
+ // Validate with Zod
394
+ const parsed = operationContextSchema.safeParse(context);
395
+ if (!parsed.success) {
396
+ throw new Error(`Invalid operation context: ${parsed.error.message}`);
397
+ }
398
+ logger.debug({
399
+ operationId: context.operationId,
400
+ agentId: input.parentAgent.agentId,
401
+ ttlMs,
402
+ }, 'Operation context created (ephemeral)');
403
+ return context; // Not frozen - can be modified during operation
404
+ }
405
+ /**
406
+ * Check if operation context is expired
407
+ */
408
+ export function isOperationExpired(context) {
409
+ return new Date() > context.expiresAt;
410
+ }
411
+ /**
412
+ * Get the effective ceiling for an operation
413
+ * Inherits from agent context ceiling
414
+ */
415
+ export function getOperationCeiling(context) {
416
+ return getAgentContextCeiling(context.parentAgent);
417
+ }
418
+ // =============================================================================
419
+ // FULL CONTEXT CHAIN VALIDATION
420
+ // =============================================================================
421
+ /**
422
+ * Validate entire context hierarchy from operation to deployment
423
+ */
424
+ export async function validateContextChain(context) {
425
+ const violations = [];
426
+ let hashChainValid = true;
427
+ let tier;
428
+ // Determine context tier and validate
429
+ if ('ephemeral' in context && context.ephemeral === true) {
430
+ // Operation context
431
+ tier = 'operation';
432
+ const opContext = context;
433
+ if (isOperationExpired(opContext)) {
434
+ violations.push('Operation context has expired');
435
+ }
436
+ // Validate parent chain
437
+ const agentResult = await verifyAgentContext(opContext.parentAgent);
438
+ if (!agentResult.valid) {
439
+ violations.push(`Agent context invalid: ${agentResult.reason}`);
440
+ hashChainValid = false;
441
+ }
442
+ }
443
+ else if ('contextHash' in context) {
444
+ // Agent context
445
+ tier = 'agent';
446
+ const agentContext = context;
447
+ const result = await verifyAgentContext(agentContext);
448
+ if (!result.valid) {
449
+ violations.push(result.reason);
450
+ hashChainValid = false;
451
+ }
452
+ }
453
+ else if ('orgHash' in context) {
454
+ // Organizational context
455
+ tier = 'organizational';
456
+ const orgContext = context;
457
+ const result = await verifyOrganizationalContext(orgContext);
458
+ if (!result.valid) {
459
+ violations.push(result.reason);
460
+ hashChainValid = false;
461
+ }
462
+ }
463
+ else {
464
+ // Deployment context
465
+ tier = 'deployment';
466
+ const deployContext = context;
467
+ const result = await verifyDeploymentContext(deployContext);
468
+ if (!result.valid) {
469
+ violations.push(result.reason);
470
+ hashChainValid = false;
471
+ }
472
+ }
473
+ return {
474
+ valid: violations.length === 0,
475
+ tier,
476
+ reason: violations.length > 0 ? violations.join('; ') : undefined,
477
+ constraintViolations: violations,
478
+ hashChainValid,
479
+ validatedAt: new Date(),
480
+ };
481
+ }
482
+ // =============================================================================
483
+ // CONTEXT SERVICE
484
+ // =============================================================================
485
+ /**
486
+ * Service for managing the 4-tier context hierarchy
487
+ */
488
+ export class ContextService {
489
+ deployments = new Map();
490
+ organizations = new Map();
491
+ agents = new Map();
492
+ activeOperations = new Map();
493
+ /**
494
+ * Register a deployment context
495
+ */
496
+ registerDeployment(context) {
497
+ if (this.deployments.has(context.deploymentId)) {
498
+ throw new Error(`Deployment ${context.deploymentId} already registered`);
499
+ }
500
+ this.deployments.set(context.deploymentId, context);
501
+ logger.info({ deploymentId: context.deploymentId }, 'Deployment registered');
502
+ }
503
+ /**
504
+ * Register an organizational context
505
+ */
506
+ registerOrganization(context) {
507
+ if (!context.lockedAt) {
508
+ throw new Error('Cannot register unlocked organizational context');
509
+ }
510
+ if (this.organizations.has(context.orgId)) {
511
+ throw new Error(`Organization ${context.orgId} already registered`);
512
+ }
513
+ this.organizations.set(context.orgId, context);
514
+ logger.info({ orgId: context.orgId, tenantId: context.tenantId }, 'Organization registered');
515
+ }
516
+ /**
517
+ * Register an agent context
518
+ */
519
+ registerAgent(context) {
520
+ if (this.agents.has(context.agentId)) {
521
+ throw new Error(`Agent ${context.agentId} already registered`);
522
+ }
523
+ this.agents.set(context.agentId, context);
524
+ logger.info({ agentId: context.agentId }, 'Agent registered');
525
+ }
526
+ /**
527
+ * Create and register an operation context
528
+ */
529
+ async createOperation(input) {
530
+ const context = await createOperationContext(input);
531
+ this.activeOperations.set(context.operationId, context);
532
+ return context;
533
+ }
534
+ /**
535
+ * Complete an operation (removes from active)
536
+ */
537
+ completeOperation(operationId) {
538
+ this.activeOperations.delete(operationId);
539
+ logger.debug({ operationId }, 'Operation completed');
540
+ }
541
+ /**
542
+ * Get deployment by ID
543
+ */
544
+ getDeployment(deploymentId) {
545
+ return this.deployments.get(deploymentId);
546
+ }
547
+ /**
548
+ * Get organization by ID
549
+ */
550
+ getOrganization(orgId) {
551
+ return this.organizations.get(orgId);
552
+ }
553
+ /**
554
+ * Get agent by ID
555
+ */
556
+ getAgent(agentId) {
557
+ return this.agents.get(agentId);
558
+ }
559
+ /**
560
+ * Get active operation by ID
561
+ */
562
+ getOperation(operationId) {
563
+ return this.activeOperations.get(operationId);
564
+ }
565
+ /**
566
+ * Cleanup expired operations
567
+ */
568
+ cleanupExpiredOperations() {
569
+ let cleaned = 0;
570
+ for (const [id, context] of this.activeOperations) {
571
+ if (isOperationExpired(context)) {
572
+ this.activeOperations.delete(id);
573
+ cleaned++;
574
+ }
575
+ }
576
+ if (cleaned > 0) {
577
+ logger.debug({ cleaned }, 'Cleaned up expired operations');
578
+ }
579
+ return cleaned;
580
+ }
581
+ /**
582
+ * Get statistics
583
+ */
584
+ getStats() {
585
+ return {
586
+ deployments: this.deployments.size,
587
+ organizations: this.organizations.size,
588
+ agents: this.agents.size,
589
+ activeOperations: this.activeOperations.size,
590
+ };
591
+ }
592
+ }
593
+ /**
594
+ * Create a new context service instance
595
+ */
596
+ export function createContextService() {
597
+ return new ContextService();
598
+ }
599
+ // =============================================================================
600
+ // EXPORTS
601
+ // =============================================================================
602
+ export { ContextType, TrustTier, RegulatoryFramework, CONTEXT_CEILINGS, } from './types.js';
603
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/phase6/context.ts"],"names":[],"mappings":"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"}