@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,219 @@
1
+ /**
2
+ * CHAIN Layer - Blockchain Anchoring
3
+ *
4
+ * Anchors proof hashes to Polygon blockchain for immutable verification.
5
+ * Supports batching via Merkle trees for cost efficiency.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { createLogger } from '../common/logger.js';
10
+ const logger = createLogger({ component: 'chain' });
11
+ /**
12
+ * Polygon network configuration
13
+ */
14
+ export const POLYGON_NETWORKS = {
15
+ mainnet: {
16
+ rpcUrl: 'https://polygon-rpc.com',
17
+ chainId: 137,
18
+ blockExplorer: 'https://polygonscan.com',
19
+ name: 'Polygon Mainnet',
20
+ },
21
+ amoy: {
22
+ rpcUrl: 'https://rpc-amoy.polygon.technology',
23
+ chainId: 80002,
24
+ blockExplorer: 'https://amoy.polygonscan.com',
25
+ name: 'Polygon Amoy Testnet',
26
+ },
27
+ };
28
+ /**
29
+ * Compute SHA-256 hash of a string
30
+ */
31
+ export async function sha256(data) {
32
+ const encoder = new TextEncoder();
33
+ const dataBuffer = encoder.encode(data);
34
+ const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);
35
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
36
+ return '0x' + hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');
37
+ }
38
+ /**
39
+ * Compute keccak256 hash (Ethereum-style)
40
+ * Note: In production, use ethers.keccak256
41
+ */
42
+ export async function keccak256Concat(a, b) {
43
+ // For testing, use sha256 as a stand-in
44
+ // In production, replace with ethers.keccak256(ethers.concat([a, b]))
45
+ return sha256(a + b);
46
+ }
47
+ /**
48
+ * Compute Merkle root from a list of hashes
49
+ */
50
+ export async function computeMerkleRoot(hashes) {
51
+ if (hashes.length === 0) {
52
+ throw new Error('Cannot compute Merkle root of empty list');
53
+ }
54
+ if (hashes.length === 1) {
55
+ return hashes[0];
56
+ }
57
+ let layer = [...hashes];
58
+ while (layer.length > 1) {
59
+ const nextLayer = [];
60
+ for (let i = 0; i < layer.length; i += 2) {
61
+ if (i + 1 < layer.length) {
62
+ // Hash pair together (sorted for deterministic ordering)
63
+ const [left, right] = [layer[i], layer[i + 1]].sort();
64
+ nextLayer.push(await keccak256Concat(left, right));
65
+ }
66
+ else {
67
+ // Odd element, promote to next layer
68
+ nextLayer.push(layer[i]);
69
+ }
70
+ }
71
+ layer = nextLayer;
72
+ }
73
+ return layer[0];
74
+ }
75
+ /**
76
+ * Compute Merkle proof for a specific leaf
77
+ */
78
+ export async function computeMerkleProof(hashes, targetIndex) {
79
+ if (targetIndex < 0 || targetIndex >= hashes.length) {
80
+ throw new Error('Target index out of bounds');
81
+ }
82
+ const proof = [];
83
+ let layer = [...hashes];
84
+ let index = targetIndex;
85
+ while (layer.length > 1) {
86
+ const siblingIndex = index % 2 === 0 ? index + 1 : index - 1;
87
+ if (siblingIndex < layer.length) {
88
+ proof.push(layer[siblingIndex]);
89
+ }
90
+ // Build next layer
91
+ const nextLayer = [];
92
+ for (let i = 0; i < layer.length; i += 2) {
93
+ if (i + 1 < layer.length) {
94
+ const [left, right] = [layer[i], layer[i + 1]].sort();
95
+ nextLayer.push(await keccak256Concat(left, right));
96
+ }
97
+ else {
98
+ nextLayer.push(layer[i]);
99
+ }
100
+ }
101
+ layer = nextLayer;
102
+ index = Math.floor(index / 2);
103
+ }
104
+ return proof;
105
+ }
106
+ /**
107
+ * Verify a Merkle proof
108
+ */
109
+ export async function verifyMerkleProof(leaf, proof, root) {
110
+ let current = leaf;
111
+ for (const sibling of proof) {
112
+ const [left, right] = [current, sibling].sort();
113
+ current = await keccak256Concat(left, right);
114
+ }
115
+ return current === root;
116
+ }
117
+ /**
118
+ * Mock ChainAnchorService for testing
119
+ * In production, use the full implementation with ethers.js
120
+ */
121
+ export class MockChainAnchorService {
122
+ config;
123
+ batchCount = 0n;
124
+ batches = new Map();
125
+ proofToBatch = new Map();
126
+ constructor(config) {
127
+ this.config = config;
128
+ logger.info({ network: config.network }, 'MockChainAnchorService initialized');
129
+ }
130
+ /**
131
+ * Mock anchor batch - simulates blockchain anchoring
132
+ */
133
+ async anchorBatch(proofs) {
134
+ if (proofs.length === 0) {
135
+ throw new Error('Cannot anchor empty batch');
136
+ }
137
+ const proofHashes = proofs.map((p) => p.proofHash);
138
+ const merkleRoot = await computeMerkleRoot(proofHashes);
139
+ this.batchCount += 1n;
140
+ const batchId = this.batchCount;
141
+ this.batches.set(batchId, {
142
+ merkleRoot,
143
+ proofHashes,
144
+ timestamp: new Date(),
145
+ });
146
+ for (const hash of proofHashes) {
147
+ this.proofToBatch.set(hash, batchId);
148
+ }
149
+ const networkConfig = POLYGON_NETWORKS[this.config.network];
150
+ const mockTxHash = `0x${Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString('hex')}`;
151
+ logger.info({
152
+ batchId: batchId.toString(),
153
+ proofCount: proofs.length,
154
+ merkleRoot,
155
+ }, 'Batch anchored (mock)');
156
+ return {
157
+ batchId,
158
+ transactionHash: mockTxHash,
159
+ blockNumber: Math.floor(Math.random() * 1000000) + 50000000,
160
+ merkleRoot,
161
+ proofCount: proofs.length,
162
+ explorerUrl: `${networkConfig.blockExplorer}/tx/${mockTxHash}`,
163
+ };
164
+ }
165
+ /**
166
+ * Mock verify proof
167
+ */
168
+ async verifyProof(proofHash, merkleProof, batchId) {
169
+ const batch = this.batches.get(batchId);
170
+ if (!batch) {
171
+ return false;
172
+ }
173
+ return verifyMerkleProof(proofHash, merkleProof, batch.merkleRoot);
174
+ }
175
+ /**
176
+ * Mock get proof anchor info
177
+ */
178
+ async getProofAnchor(proofHash) {
179
+ const batchId = this.proofToBatch.get(proofHash);
180
+ if (!batchId) {
181
+ return null;
182
+ }
183
+ const batch = this.batches.get(batchId);
184
+ if (!batch) {
185
+ return null;
186
+ }
187
+ const networkConfig = POLYGON_NETWORKS[this.config.network];
188
+ return {
189
+ valid: true,
190
+ batchId,
191
+ merkleRoot: batch.merkleRoot,
192
+ anchoredAt: batch.timestamp,
193
+ explorerUrl: `${networkConfig.blockExplorer}/address/${this.config.contractAddress}`,
194
+ };
195
+ }
196
+ /**
197
+ * Get batch info
198
+ */
199
+ getBatch(batchId) {
200
+ return this.batches.get(batchId);
201
+ }
202
+ /**
203
+ * Get stats
204
+ */
205
+ getStats() {
206
+ return {
207
+ batchCount: this.batchCount,
208
+ totalProofs: this.proofToBatch.size,
209
+ };
210
+ }
211
+ }
212
+ /**
213
+ * Create a chain anchor service
214
+ * Returns mock service by default; use createRealChainAnchor for production
215
+ */
216
+ export function createChainAnchor(config) {
217
+ return new MockChainAnchorService(config);
218
+ }
219
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chain/index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * Cognigate - Constrained Execution Runtime
3
3
  *
4
4
  * Executes approved intents within defined constraints and resource limits.
5
+ * Uses Node.js worker threads for actual sandboxing with memory limits.
5
6
  *
6
7
  * @packageDocumentation
7
8
  */
@@ -55,8 +56,12 @@ export type ExecutionHandler = (intent: Intent, context: Record<string, unknown>
55
56
  */
56
57
  export declare class CognigateGateway {
57
58
  private handlers;
59
+ private activeExecutions;
58
60
  private defaultLimits;
59
- constructor(defaultLimits?: Partial<ResourceLimits>);
61
+ private useSandbox;
62
+ constructor(defaultLimits?: Partial<ResourceLimits>, options?: {
63
+ useSandbox?: boolean;
64
+ });
60
65
  /**
61
66
  * Register an execution handler for an intent type
62
67
  */
@@ -66,7 +71,15 @@ export declare class CognigateGateway {
66
71
  */
67
72
  execute(context: ExecutionContext): Promise<ExecutionResult>;
68
73
  /**
69
- * Create a timeout promise
74
+ * Execute handler in sandboxed worker thread with resource limits
75
+ */
76
+ private executeInSandbox;
77
+ /**
78
+ * Get current memory usage in MB
79
+ */
80
+ private getMemoryUsageMb;
81
+ /**
82
+ * Create a timeout promise that respects abort signal
70
83
  */
71
84
  private timeout;
72
85
  /**
@@ -75,11 +88,27 @@ export declare class CognigateGateway {
75
88
  private emptyUsage;
76
89
  /**
77
90
  * Terminate an execution (kill switch)
91
+ * Immediately stops execution of the specified intent
92
+ */
93
+ terminate(intentId: ID): Promise<boolean>;
94
+ /**
95
+ * Get list of active execution IDs
78
96
  */
79
- terminate(intentId: ID): Promise<void>;
97
+ getActiveExecutions(): ID[];
98
+ /**
99
+ * Check if an execution is currently running
100
+ */
101
+ isExecuting(intentId: ID): boolean;
102
+ }
103
+ /**
104
+ * Gateway options
105
+ */
106
+ export interface GatewayOptions {
107
+ /** Enable sandboxed execution via worker threads (default: true) */
108
+ useSandbox?: boolean;
80
109
  }
81
110
  /**
82
111
  * Create a new Cognigate gateway instance
83
112
  */
84
- export declare function createGateway(defaultLimits?: Partial<ResourceLimits>): CognigateGateway;
113
+ export declare function createGateway(defaultLimits?: Partial<ResourceLimits>, options?: GatewayOptions): CognigateGateway;
85
114
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cognigate/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAI/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,EAAE,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtC;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,aAAa,CAAiB;gBAE1B,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAWnD;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAKpE;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA4FlE;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAI7C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GACtC,gBAAgB,CAElB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cognigate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAI/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,EAAE,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAWtC;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,UAAU,CAAU;gBAEhB,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE;IAavF;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAKpE;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA8HlE;;OAEG;YACW,gBAAgB;IAoH9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,OAAO,CAAC,OAAO;IAaf;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;;OAGG;IACG,SAAS,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB/C;;OAEG;IACH,mBAAmB,IAAI,EAAE,EAAE;IAI3B;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO;CAGnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EACvC,OAAO,CAAC,EAAE,cAAc,GACvB,gBAAgB,CAElB"}
@@ -2,9 +2,11 @@
2
2
  * Cognigate - Constrained Execution Runtime
3
3
  *
4
4
  * Executes approved intents within defined constraints and resource limits.
5
+ * Uses Node.js worker threads for actual sandboxing with memory limits.
5
6
  *
6
7
  * @packageDocumentation
7
8
  */
9
+ import { Worker, isMainThread } from 'node:worker_threads';
8
10
  import { createLogger } from '../common/logger.js';
9
11
  const logger = createLogger({ component: 'cognigate' });
10
12
  /**
@@ -12,8 +14,10 @@ const logger = createLogger({ component: 'cognigate' });
12
14
  */
13
15
  export class CognigateGateway {
14
16
  handlers = new Map();
17
+ activeExecutions = new Map();
15
18
  defaultLimits;
16
- constructor(defaultLimits) {
19
+ useSandbox;
20
+ constructor(defaultLimits, options) {
17
21
  this.defaultLimits = {
18
22
  maxMemoryMb: 512,
19
23
  maxCpuPercent: 50,
@@ -22,6 +26,8 @@ export class CognigateGateway {
22
26
  maxFileSystemOps: 1000,
23
27
  ...defaultLimits,
24
28
  };
29
+ // Enable sandbox by default in production, can be disabled for testing
30
+ this.useSandbox = options?.useSandbox ?? true;
25
31
  }
26
32
  /**
27
33
  * Register an execution handler for an intent type
@@ -65,34 +71,56 @@ export class CognigateGateway {
65
71
  };
66
72
  }
67
73
  // Execute with limits
74
+ const limits = { ...this.defaultLimits, ...context.resourceLimits };
75
+ const abortController = new AbortController();
76
+ // Track this execution for potential termination
77
+ this.activeExecutions.set(intent.id, {
78
+ worker: null,
79
+ abortController,
80
+ startTime: performance.now(),
81
+ });
68
82
  try {
69
- const limits = { ...this.defaultLimits, ...context.resourceLimits };
70
83
  const execStart = performance.now();
71
- // TODO: Implement actual resource limiting (sandboxing)
72
- const outputs = await Promise.race([
73
- handler(intent, intent.context),
74
- this.timeout(limits.timeoutMs),
75
- ]);
76
- const execEnd = performance.now();
77
- logger.info({ intentId: intent.id, durationMs: execEnd - execStart }, 'Execution completed');
78
- return {
79
- intentId: intent.id,
80
- success: true,
81
- outputs: outputs,
82
- resourceUsage: {
83
- memoryPeakMb: 0, // TODO: Track actual usage
84
+ let outputs;
85
+ let resourceUsage;
86
+ if (this.useSandbox && isMainThread) {
87
+ // Execute in sandboxed worker thread with memory limits
88
+ const result = await this.executeInSandbox(handler, intent, limits, abortController.signal);
89
+ outputs = result.outputs;
90
+ resourceUsage = result.resourceUsage;
91
+ }
92
+ else {
93
+ // Direct execution (for testing or when already in worker)
94
+ outputs = await Promise.race([
95
+ handler(intent, intent.context),
96
+ this.timeout(limits.timeoutMs, abortController.signal),
97
+ ]);
98
+ const execEnd = performance.now();
99
+ resourceUsage = {
100
+ memoryPeakMb: this.getMemoryUsageMb(),
84
101
  cpuTimeMs: execEnd - execStart,
85
102
  wallTimeMs: execEnd - execStart,
86
103
  networkRequests: 0,
87
104
  fileSystemOps: 0,
88
- },
105
+ };
106
+ }
107
+ const execEnd = performance.now();
108
+ logger.info({ intentId: intent.id, durationMs: execEnd - execStart, memoryMb: resourceUsage.memoryPeakMb }, 'Execution completed');
109
+ return {
110
+ intentId: intent.id,
111
+ success: true,
112
+ outputs,
113
+ resourceUsage,
89
114
  startedAt,
90
115
  completedAt: new Date().toISOString(),
91
116
  };
92
117
  }
93
118
  catch (error) {
94
119
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
95
- logger.error({ intentId: intent.id, error: errorMessage }, 'Execution failed');
120
+ const isTimeout = errorMessage === 'Execution timeout';
121
+ const isTerminated = errorMessage === 'Execution terminated';
122
+ const isMemoryLimit = errorMessage.includes('memory limit');
123
+ logger.error({ intentId: intent.id, error: errorMessage, isTimeout, isTerminated, isMemoryLimit }, 'Execution failed');
96
124
  return {
97
125
  intentId: intent.id,
98
126
  success: false,
@@ -103,12 +131,132 @@ export class CognigateGateway {
103
131
  error: errorMessage,
104
132
  };
105
133
  }
134
+ finally {
135
+ // Clean up tracking
136
+ this.activeExecutions.delete(intent.id);
137
+ }
138
+ }
139
+ /**
140
+ * Execute handler in sandboxed worker thread with resource limits
141
+ */
142
+ async executeInSandbox(handler, intent, limits, signal) {
143
+ return new Promise((resolve, reject) => {
144
+ const execStart = performance.now();
145
+ // Serialize the handler - note: only works with simple handlers
146
+ // For complex handlers, they should be registered by name and looked up
147
+ const handlerCode = handler.toString();
148
+ // Create worker with memory limits
149
+ const worker = new Worker(new URL('data:text/javascript,' + encodeURIComponent(`
150
+ import { parentPort, workerData } from 'node:worker_threads';
151
+
152
+ const { handlerCode, intent, context } = workerData;
153
+
154
+ // Reconstruct handler (limited to simple functions)
155
+ const handler = eval('(' + handlerCode + ')');
156
+
157
+ // Track memory before execution
158
+ const memBefore = process.memoryUsage();
159
+
160
+ try {
161
+ const result = await handler(intent, context);
162
+ const memAfter = process.memoryUsage();
163
+
164
+ parentPort.postMessage({
165
+ success: true,
166
+ outputs: result,
167
+ memoryUsed: Math.max(0, (memAfter.heapUsed - memBefore.heapUsed) / 1024 / 1024)
168
+ });
169
+ } catch (error) {
170
+ parentPort.postMessage({
171
+ success: false,
172
+ error: error.message || 'Unknown error'
173
+ });
174
+ }
175
+ `)), {
176
+ workerData: {
177
+ handlerCode,
178
+ intent,
179
+ context: intent.context,
180
+ },
181
+ resourceLimits: {
182
+ maxOldGenerationSizeMb: limits.maxMemoryMb,
183
+ maxYoungGenerationSizeMb: Math.floor(limits.maxMemoryMb / 4),
184
+ stackSizeMb: 4,
185
+ },
186
+ });
187
+ // Track worker for termination
188
+ const execution = this.activeExecutions.get(intent.id);
189
+ if (execution) {
190
+ execution.worker = worker;
191
+ }
192
+ // Handle abort signal
193
+ const abortHandler = () => {
194
+ worker.terminate();
195
+ reject(new Error('Execution terminated'));
196
+ };
197
+ signal.addEventListener('abort', abortHandler, { once: true });
198
+ // Set timeout
199
+ const timeoutId = setTimeout(() => {
200
+ worker.terminate();
201
+ reject(new Error('Execution timeout'));
202
+ }, limits.timeoutMs);
203
+ // Handle worker messages
204
+ worker.on('message', (msg) => {
205
+ clearTimeout(timeoutId);
206
+ signal.removeEventListener('abort', abortHandler);
207
+ const execEnd = performance.now();
208
+ if (msg.success) {
209
+ resolve({
210
+ outputs: msg.outputs,
211
+ resourceUsage: {
212
+ memoryPeakMb: msg.memoryUsed || 0,
213
+ cpuTimeMs: execEnd - execStart,
214
+ wallTimeMs: execEnd - execStart,
215
+ networkRequests: 0,
216
+ fileSystemOps: 0,
217
+ },
218
+ });
219
+ }
220
+ else {
221
+ reject(new Error(msg.error));
222
+ }
223
+ });
224
+ // Handle worker errors (including memory limit exceeded)
225
+ worker.on('error', (error) => {
226
+ clearTimeout(timeoutId);
227
+ signal.removeEventListener('abort', abortHandler);
228
+ reject(new Error(error.message || 'Worker error'));
229
+ });
230
+ // Handle worker exit
231
+ worker.on('exit', (code) => {
232
+ if (code !== 0) {
233
+ clearTimeout(timeoutId);
234
+ signal.removeEventListener('abort', abortHandler);
235
+ reject(new Error(`Worker exited with code ${code} (may have exceeded memory limit)`));
236
+ }
237
+ });
238
+ });
106
239
  }
107
240
  /**
108
- * Create a timeout promise
241
+ * Get current memory usage in MB
109
242
  */
110
- timeout(ms) {
111
- return new Promise((_, reject) => setTimeout(() => reject(new Error('Execution timeout')), ms));
243
+ getMemoryUsageMb() {
244
+ const usage = process.memoryUsage();
245
+ return Math.round((usage.heapUsed / 1024 / 1024) * 100) / 100;
246
+ }
247
+ /**
248
+ * Create a timeout promise that respects abort signal
249
+ */
250
+ timeout(ms, signal) {
251
+ return new Promise((_, reject) => {
252
+ const timeoutId = setTimeout(() => reject(new Error('Execution timeout')), ms);
253
+ if (signal) {
254
+ signal.addEventListener('abort', () => {
255
+ clearTimeout(timeoutId);
256
+ reject(new Error('Execution terminated'));
257
+ }, { once: true });
258
+ }
259
+ });
112
260
  }
113
261
  /**
114
262
  * Create empty resource usage
@@ -124,16 +272,43 @@ export class CognigateGateway {
124
272
  }
125
273
  /**
126
274
  * Terminate an execution (kill switch)
275
+ * Immediately stops execution of the specified intent
127
276
  */
128
277
  async terminate(intentId) {
129
- // TODO: Implement actual termination
130
- logger.warn({ intentId }, 'Terminate requested');
278
+ const execution = this.activeExecutions.get(intentId);
279
+ if (!execution) {
280
+ logger.warn({ intentId }, 'Terminate requested but no active execution found');
281
+ return false;
282
+ }
283
+ logger.warn({ intentId, runningFor: performance.now() - execution.startTime }, 'Terminating execution');
284
+ // Abort via signal (for direct execution)
285
+ execution.abortController.abort();
286
+ // Terminate worker if running in sandbox
287
+ if (execution.worker) {
288
+ await execution.worker.terminate();
289
+ }
290
+ // Clean up
291
+ this.activeExecutions.delete(intentId);
292
+ logger.info({ intentId }, 'Execution terminated successfully');
293
+ return true;
294
+ }
295
+ /**
296
+ * Get list of active execution IDs
297
+ */
298
+ getActiveExecutions() {
299
+ return Array.from(this.activeExecutions.keys());
300
+ }
301
+ /**
302
+ * Check if an execution is currently running
303
+ */
304
+ isExecuting(intentId) {
305
+ return this.activeExecutions.has(intentId);
131
306
  }
132
307
  }
133
308
  /**
134
309
  * Create a new Cognigate gateway instance
135
310
  */
136
- export function createGateway(defaultLimits) {
137
- return new CognigateGateway(defaultLimits);
311
+ export function createGateway(defaultLimits, options) {
312
+ return new CognigateGateway(defaultLimits, options);
138
313
  }
139
314
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cognigate/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cognigate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;AA+DxD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACnB,QAAQ,GAAkC,IAAI,GAAG,EAAE,CAAC;IACpD,gBAAgB,GAA6B,IAAI,GAAG,EAAE,CAAC;IACvD,aAAa,CAAiB;IAC9B,UAAU,CAAU;IAE5B,YAAY,aAAuC,EAAE,OAAkC;QACrF,IAAI,CAAC,aAAa,GAAG;YACnB,WAAW,EAAE,GAAG;YAChB,aAAa,EAAE,EAAE;YACjB,SAAS,EAAE,MAAM;YACjB,kBAAkB,EAAE,GAAG;YACvB,gBAAgB,EAAE,IAAI;YACtB,GAAG,aAAa;SACjB,CAAC;QACF,uEAAuE;QACvE,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,UAAkB,EAAE,OAAyB;QAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,oBAAoB,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAyB;QACrC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,mCAAmC;QACnC,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CACT,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAChD,+BAA+B,CAChC,CAAC;YAEF,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE;gBAChC,SAAS;gBACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,KAAK,EAAE,0BAA0B,QAAQ,CAAC,MAAM,EAAE;aACnD,CAAC;QACJ,CAAC;QAED,cAAc;QACd,MAAM,UAAU,GAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAY,IAAI,SAAS,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,kBAAkB,CAAC,CAAC;YAErE,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE;gBAChC,SAAS;gBACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,KAAK,EAAE,+BAA+B,UAAU,EAAE;aACnD,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QACpE,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE9C,iDAAiD;QACjD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;YACnC,MAAM,EAAE,IAAI;YACZ,eAAe;YACf,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,OAAgC,CAAC;YACrC,IAAI,aAA4B,CAAC;YAEjC,IAAI,IAAI,CAAC,UAAU,IAAI,YAAY,EAAE,CAAC;gBACpC,wDAAwD;gBACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CACxC,OAAO,EACP,MAAM,EACN,MAAM,EACN,eAAe,CAAC,MAAM,CACvB,CAAC;gBACF,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBACzB,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,2DAA2D;gBAC3D,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;oBAC3B,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC;iBACvD,CAA4B,CAAC;gBAE9B,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAClC,aAAa,GAAG;oBACd,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE;oBACrC,SAAS,EAAE,OAAO,GAAG,SAAS;oBAC9B,UAAU,EAAE,OAAO,GAAG,SAAS;oBAC/B,eAAe,EAAE,CAAC;oBAClB,aAAa,EAAE,CAAC;iBACjB,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAElC,MAAM,CAAC,IAAI,CACT,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,GAAG,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,YAAY,EAAE,EAC9F,qBAAqB,CACtB,CAAC;YAEF,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAE3D,MAAM,SAAS,GAAG,YAAY,KAAK,mBAAmB,CAAC;YACvD,MAAM,YAAY,GAAG,YAAY,KAAK,sBAAsB,CAAC;YAC7D,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAE5D,MAAM,CAAC,KAAK,CACV,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,EACpF,kBAAkB,CACnB,CAAC;YAEF,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE;gBAChC,SAAS;gBACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,KAAK,EAAE,YAAY;aACpB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,oBAAoB;YACpB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAC5B,OAAyB,EACzB,MAAc,EACd,MAAsB,EACtB,MAAmB;QAEnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAEpC,gEAAgE;YAChE,wEAAwE;YACxE,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEvC,mCAAmC;YACnC,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,IAAI,GAAG,CAAC,uBAAuB,GAAG,kBAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;SA0BpD,CAAC,CAAC,EACH;gBACE,UAAU,EAAE;oBACV,WAAW;oBACX,MAAM;oBACN,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB;gBACD,cAAc,EAAE;oBACd,sBAAsB,EAAE,MAAM,CAAC,WAAW;oBAC1C,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;oBAC5D,WAAW,EAAE,CAAC;iBACf;aACF,CACF,CAAC;YAEF,+BAA+B;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvD,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;YAC5B,CAAC;YAED,sBAAsB;YACtB,MAAM,YAAY,GAAG,GAAG,EAAE;gBACxB,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAE/D,cAAc;YACd,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACzC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAErB,yBAAyB;YACzB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC3B,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAElD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAElC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAChB,OAAO,CAAC;wBACN,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,aAAa,EAAE;4BACb,YAAY,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;4BACjC,SAAS,EAAE,OAAO,GAAG,SAAS;4BAC9B,UAAU,EAAE,OAAO,GAAG,SAAS;4BAC/B,eAAe,EAAE,CAAC;4BAClB,aAAa,EAAE,CAAC;yBACjB;qBACF,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,yDAAyD;YACzD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3B,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,qBAAqB;YACrB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,YAAY,CAAC,SAAS,CAAC,CAAC;oBACxB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;oBAClD,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,mCAAmC,CAAC,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAChE,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,EAAU,EAAE,MAAoB;QAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAE/E,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;oBACpC,YAAY,CAAC,SAAS,CAAC,CAAC;oBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAC5C,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,OAAO;YACL,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,eAAe,EAAE,CAAC;YAClB,aAAa,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,QAAY;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,mDAAmD,CAAC,CAAC;YAC/E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAExG,0CAA0C;QAC1C,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAElC,yCAAyC;QACzC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACrC,CAAC;QAED,WAAW;QACX,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEvC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,mCAAmC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAY;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;CACF;AAUD;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,aAAuC,EACvC,OAAwB;IAExB,OAAO,IAAI,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC"}