@helix-agent/core 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/engine/gene-map.d.ts +13 -1
  2. package/dist/engine/gene-map.d.ts.map +1 -1
  3. package/dist/engine/gene-map.js +95 -45
  4. package/dist/engine/gene-map.js.map +1 -1
  5. package/dist/engine/pcec.d.ts +9 -11
  6. package/dist/engine/pcec.d.ts.map +1 -1
  7. package/dist/engine/pcec.js +206 -155
  8. package/dist/engine/pcec.js.map +1 -1
  9. package/dist/engine/provider.d.ts +19 -0
  10. package/dist/engine/provider.d.ts.map +1 -0
  11. package/dist/engine/provider.js +297 -0
  12. package/dist/engine/provider.js.map +1 -0
  13. package/dist/engine/types.d.ts +36 -2
  14. package/dist/engine/types.d.ts.map +1 -1
  15. package/dist/engine/types.js +4 -16
  16. package/dist/engine/types.js.map +1 -1
  17. package/dist/engine/wrap.d.ts.map +1 -1
  18. package/dist/engine/wrap.js +42 -16
  19. package/dist/engine/wrap.js.map +1 -1
  20. package/dist/index.d.ts +3 -3
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/platforms/coinbase/index.d.ts +3 -0
  25. package/dist/platforms/coinbase/index.d.ts.map +1 -0
  26. package/dist/platforms/coinbase/index.js +3 -0
  27. package/dist/platforms/coinbase/index.js.map +1 -0
  28. package/dist/platforms/coinbase/perceive.d.ts +3 -0
  29. package/dist/platforms/coinbase/perceive.d.ts.map +1 -0
  30. package/dist/platforms/coinbase/perceive.js +71 -0
  31. package/dist/platforms/coinbase/perceive.js.map +1 -0
  32. package/dist/platforms/coinbase/strategies.d.ts +3 -0
  33. package/dist/platforms/coinbase/strategies.d.ts.map +1 -0
  34. package/dist/platforms/coinbase/strategies.js +45 -0
  35. package/dist/platforms/coinbase/strategies.js.map +1 -0
  36. package/dist/platforms/index.d.ts +1 -0
  37. package/dist/platforms/index.d.ts.map +1 -1
  38. package/dist/platforms/index.js +10 -22
  39. package/dist/platforms/index.js.map +1 -1
  40. package/package.json +15 -5
@@ -0,0 +1,297 @@
1
+ import { createPublicClient, createWalletClient, http, parseEther, parseGwei, formatEther, } from 'viem';
2
+ import { privateKeyToAccount } from 'viem/accounts';
3
+ function sleep(ms) {
4
+ return new Promise(resolve => setTimeout(resolve, ms));
5
+ }
6
+ export class HelixProvider {
7
+ config;
8
+ hasExplicitConfig;
9
+ publicClient = null;
10
+ walletClient = null;
11
+ account = null;
12
+ constructor(config = {}) {
13
+ this.config = config;
14
+ this.hasExplicitConfig = !!(config.rpcUrl || config.privateKey || config.privy || config.coinbase);
15
+ if (config.rpcUrl) {
16
+ this.publicClient = createPublicClient({ transport: http(config.rpcUrl) });
17
+ }
18
+ if (config.privateKey) {
19
+ const key = config.privateKey.startsWith('0x')
20
+ ? config.privateKey
21
+ : (`0x${config.privateKey}`);
22
+ this.account = privateKeyToAccount(key);
23
+ if (config.rpcUrl) {
24
+ this.walletClient = createWalletClient({
25
+ account: this.account,
26
+ transport: http(config.rpcUrl),
27
+ });
28
+ }
29
+ }
30
+ }
31
+ canExecute(strategy) {
32
+ if (!this.hasExplicitConfig)
33
+ return true; // mock/dev mode
34
+ const noProvider = [
35
+ 'backoff_retry', 'retry', 'reduce_request', 'fix_params',
36
+ 'switch_endpoint', 'retry_with_estimation', 'hold_and_notify',
37
+ 'retry_with_receipt', 'extend_deadline', 'use_unrestricted_wallet',
38
+ 'remove_and_resubmit', 'renew_session', 'switch_service',
39
+ 'refund_waterfall',
40
+ ];
41
+ if (noProvider.includes(strategy))
42
+ return true;
43
+ const rpcRead = ['refresh_nonce', 'switch_network', 'get_balance'];
44
+ if (rpcRead.includes(strategy))
45
+ return !!this.publicClient;
46
+ const chainWrite = [
47
+ 'self_pay_gas', 'cancel_pending_txs', 'speed_up_transaction',
48
+ 'split_transaction', 'topup_from_reserve', 'swap_currency',
49
+ 'switch_stablecoin', 'split_swap',
50
+ ];
51
+ if (chainWrite.includes(strategy))
52
+ return !!this.walletClient;
53
+ return true; // unknown strategy — allow (will mock)
54
+ }
55
+ getAddress() {
56
+ return this.account?.address ?? null;
57
+ }
58
+ async execute(strategy, failure, context) {
59
+ try {
60
+ switch (strategy) {
61
+ // ═══════ Category A: No provider needed ═══════
62
+ case 'backoff_retry': {
63
+ const delay = context?.retryAfter ? Number(context.retryAfter) * 1000 : 2000;
64
+ await sleep(Math.min(delay, 5000));
65
+ return { success: true, overrides: {}, description: `Waited ${delay}ms before retry` };
66
+ }
67
+ case 'retry': {
68
+ await sleep(500);
69
+ return { success: true, overrides: {}, description: 'Simple retry after 500ms delay' };
70
+ }
71
+ case 'reduce_request': {
72
+ const available = context?.availableBalance ?? context?.balance ?? 0;
73
+ return { success: true, overrides: { amount: available }, description: `Reduced amount to available balance: ${available}` };
74
+ }
75
+ case 'fix_params': {
76
+ const overrides = {};
77
+ if (!context?.gasLimit)
78
+ overrides.gasLimit = 21000n;
79
+ if (!context?.chainId)
80
+ overrides.chainId = 1;
81
+ if (!context?.type)
82
+ overrides.type = 'eip1559';
83
+ if (!context?.maxFeePerGas)
84
+ overrides.maxFeePerGas = parseGwei('20');
85
+ if (!context?.maxPriorityFeePerGas)
86
+ overrides.maxPriorityFeePerGas = parseGwei('2');
87
+ return { success: true, overrides, description: `Auto-populated: ${Object.keys(overrides).join(', ')}` };
88
+ }
89
+ case 'retry_with_estimation': {
90
+ await sleep(300);
91
+ return { success: true, overrides: { autoEstimate: true }, description: 'Retry with auto-estimation' };
92
+ }
93
+ case 'switch_endpoint': {
94
+ const alt = context?.altEndpoint ?? context?.backupUrl;
95
+ if (alt)
96
+ return { success: true, overrides: { endpoint: alt }, description: `Switched to: ${alt}` };
97
+ return { success: false, overrides: {}, description: 'No alternative endpoint available' };
98
+ }
99
+ case 'hold_and_notify':
100
+ return { success: true, overrides: { paused: true }, description: 'Agent paused. Operator notified.' };
101
+ case 'extend_deadline': {
102
+ const d = Number(context?.deadline ?? 0) + 300;
103
+ return { success: true, overrides: { deadline: d }, description: `Extended deadline by 300s` };
104
+ }
105
+ case 'use_unrestricted_wallet': {
106
+ const w = context?.altWallet ?? context?.unrestricted_wallet;
107
+ return { success: true, overrides: w ? { wallet: w } : {}, description: w ? 'Switched to unrestricted wallet' : 'Flagged for unrestricted wallet' };
108
+ }
109
+ case 'remove_and_resubmit': {
110
+ const idx = context?.failedIndex ?? 0;
111
+ const sz = context?.batchSize ?? 1;
112
+ return { success: true, overrides: { excludeIndex: idx, newBatchSize: Number(sz) - 1 }, description: `Removed item #${idx}, resubmitting ${Number(sz) - 1} items` };
113
+ }
114
+ case 'renew_session': {
115
+ await sleep(300);
116
+ return { success: true, overrides: { sessionRenewed: true }, description: 'Session renewed' };
117
+ }
118
+ case 'switch_service':
119
+ return { success: true, overrides: { switchedService: true }, description: 'Switched to alt service provider' };
120
+ case 'refund_waterfall': {
121
+ const step = context?.failedStep ?? 'unknown';
122
+ const done = context?.completedSteps ?? [];
123
+ return { success: true, overrides: { refundRequired: true, failedStep: step, completedSteps: done }, description: `Cascade failure at '${step}'. ${done.length} steps flagged for refund.` };
124
+ }
125
+ // ═══════ Category B: Real RPC reads (needs rpcUrl) ═══════
126
+ case 'refresh_nonce': {
127
+ if (!this.publicClient) {
128
+ if (!this.hasExplicitConfig)
129
+ return this._mock(strategy);
130
+ return { success: false, overrides: {}, description: 'No RPC URL — cannot refresh nonce' };
131
+ }
132
+ const addr = (context?.walletAddress ?? context?.from ?? this.account?.address);
133
+ if (!addr)
134
+ return { success: false, overrides: {}, description: 'No wallet address for nonce lookup' };
135
+ const nonce = await this.publicClient.getTransactionCount({ address: addr });
136
+ return { success: true, overrides: { nonce }, description: `Refreshed nonce from chain: ${nonce} for ${addr.slice(0, 10)}...` };
137
+ }
138
+ case 'switch_network': {
139
+ if (!this.publicClient) {
140
+ if (!this.hasExplicitConfig)
141
+ return this._mock(strategy);
142
+ return { success: false, overrides: {}, description: 'No RPC URL — cannot switch network' };
143
+ }
144
+ const targetRpc = context?.targetRpcUrl;
145
+ if (targetRpc) {
146
+ this.publicClient = createPublicClient({ transport: http(targetRpc) });
147
+ if (this.walletClient && this.account) {
148
+ this.walletClient = createWalletClient({ account: this.account, transport: http(targetRpc) });
149
+ }
150
+ }
151
+ const cid = await this.publicClient.getChainId();
152
+ return { success: true, overrides: { chainId: context?.targetChainId ?? cid }, description: `Switched to chain ${cid}` };
153
+ }
154
+ case 'get_balance': {
155
+ if (!this.publicClient) {
156
+ if (!this.hasExplicitConfig)
157
+ return this._mock(strategy);
158
+ return { success: false, overrides: {}, description: 'No RPC URL — cannot check balance' };
159
+ }
160
+ const a = (context?.walletAddress ?? context?.from ?? this.account?.address);
161
+ if (!a)
162
+ return { success: false, overrides: {}, description: 'No address for balance check' };
163
+ const bal = await this.publicClient.getBalance({ address: a });
164
+ return { success: true, overrides: { balance: formatEther(bal), balanceWei: bal.toString() }, description: `Balance: ${formatEther(bal)} ETH for ${a.slice(0, 10)}...` };
165
+ }
166
+ case 'retry_with_receipt': {
167
+ if (!this.publicClient) {
168
+ await sleep(1000);
169
+ return { success: true, overrides: {}, description: 'Retry (no RPC for receipt)' };
170
+ }
171
+ const txHash = context?.txHash;
172
+ if (txHash) {
173
+ try {
174
+ const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash, timeout: 30_000 });
175
+ return {
176
+ success: receipt.status === 'success',
177
+ overrides: { receipt: { status: receipt.status, block: receipt.blockNumber.toString() } },
178
+ description: `Receipt: ${receipt.status} at block ${receipt.blockNumber}`,
179
+ };
180
+ }
181
+ catch {
182
+ return { success: false, overrides: {}, description: 'Receipt wait timed out' };
183
+ }
184
+ }
185
+ await sleep(1000);
186
+ return { success: true, overrides: {}, description: 'Retry with delay (no receipt to verify)' };
187
+ }
188
+ // ═══════ Category C: Real chain writes (needs privateKey) ═══════
189
+ case 'self_pay_gas': {
190
+ if (!this.walletClient || !this.account) {
191
+ if (!this.hasExplicitConfig)
192
+ return this._mock(strategy);
193
+ return { success: false, overrides: {}, description: 'No private key — cannot pay gas' };
194
+ }
195
+ const to = context?.to;
196
+ if (!to)
197
+ return { success: true, overrides: { sponsor: false }, description: 'Flagged: retry without gas sponsor' };
198
+ const value = context?.value ? BigInt(context.value) : 0n;
199
+ const data = context?.data;
200
+ const hash = await this.walletClient.sendTransaction({ to, value, data, account: this.account, chain: null });
201
+ return { success: true, overrides: { txHash: hash, sponsor: false }, description: `Self-paid gas tx: ${hash.slice(0, 18)}...` };
202
+ }
203
+ case 'cancel_pending_txs': {
204
+ if (!this.walletClient || !this.account || !this.publicClient) {
205
+ if (!this.hasExplicitConfig)
206
+ return this._mock(strategy);
207
+ return { success: false, overrides: {}, description: 'No wallet — cannot cancel' };
208
+ }
209
+ const n = context?.nonce ? Number(context.nonce) : await this.publicClient.getTransactionCount({ address: this.account.address });
210
+ const hash = await this.walletClient.sendTransaction({
211
+ to: this.account.address, value: 0n, nonce: n,
212
+ maxFeePerGas: parseGwei('50'), maxPriorityFeePerGas: parseGwei('10'),
213
+ account: this.account, chain: null,
214
+ });
215
+ return { success: true, overrides: { cancelTxHash: hash, cancelledNonce: n }, description: `Cancelled nonce ${n}: ${hash.slice(0, 18)}...` };
216
+ }
217
+ case 'speed_up_transaction': {
218
+ if (!this.walletClient || !this.account || !this.publicClient) {
219
+ if (!this.hasExplicitConfig)
220
+ return this._mock(strategy);
221
+ return { success: false, overrides: {}, description: 'No wallet — cannot speed up' };
222
+ }
223
+ const to = context?.to;
224
+ const nonce = context?.nonce !== undefined ? Number(context.nonce) : undefined;
225
+ if (!to || nonce === undefined)
226
+ return { success: false, overrides: {}, description: 'Missing to/nonce for speed up' };
227
+ const gasPrice = await this.publicClient.getGasPrice();
228
+ const bumped = (gasPrice * 130n) / 100n;
229
+ const value = context?.value ? BigInt(context.value) : 0n;
230
+ const hash = await this.walletClient.sendTransaction({
231
+ to, value, nonce, maxFeePerGas: bumped, maxPriorityFeePerGas: bumped / 10n,
232
+ account: this.account, chain: null,
233
+ });
234
+ return { success: true, overrides: { speedUpTxHash: hash, gasBumped: true }, description: `Speed-up tx with 30% gas bump: ${hash.slice(0, 18)}...` };
235
+ }
236
+ case 'split_transaction': {
237
+ if (!this.walletClient || !this.account || !this.publicClient) {
238
+ if (!this.hasExplicitConfig)
239
+ return this._mock(strategy);
240
+ return { success: false, overrides: {}, description: 'No wallet — cannot split' };
241
+ }
242
+ const total = context?.amount ? BigInt(context.amount) : 0n;
243
+ const limit = context?.limit ? BigInt(context.limit) : parseEther('100');
244
+ const to = context?.to;
245
+ if (!to || total === 0n)
246
+ return { success: true, overrides: { splitRequired: true }, description: 'Flagged for split' };
247
+ const chunks = Number((total + limit - 1n) / limit);
248
+ const hashes = [];
249
+ for (let i = 0; i < chunks; i++) {
250
+ const amt = i < chunks - 1 ? limit : total - limit * BigInt(i);
251
+ const n = await this.publicClient.getTransactionCount({ address: this.account.address });
252
+ const h = await this.walletClient.sendTransaction({ to, value: amt, nonce: n, account: this.account, chain: null });
253
+ hashes.push(h);
254
+ }
255
+ return { success: true, overrides: { txHashes: hashes, chunks }, description: `Split into ${chunks} txs` };
256
+ }
257
+ case 'topup_from_reserve': {
258
+ if (!this.walletClient || !this.account) {
259
+ if (!this.hasExplicitConfig)
260
+ return this._mock(strategy);
261
+ return { success: false, overrides: {}, description: 'No wallet — cannot topup' };
262
+ }
263
+ const recipient = (context?.walletAddress ?? context?.to);
264
+ const amt = context?.topupAmount ? BigInt(context.topupAmount) : parseEther('0.01');
265
+ if (!recipient)
266
+ return { success: true, overrides: { topupNeeded: true }, description: 'Flagged for topup (no recipient)' };
267
+ const hash = await this.walletClient.sendTransaction({ to: recipient, value: amt, account: this.account, chain: null });
268
+ return { success: true, overrides: { topupTxHash: hash, topupAmount: formatEther(amt) }, description: `Topped up ${formatEther(amt)} ETH: ${hash.slice(0, 18)}...` };
269
+ }
270
+ // ═══════ DEX Operations (pending router integration) ═══════
271
+ case 'swap_currency':
272
+ case 'switch_stablecoin':
273
+ case 'split_swap':
274
+ case 'swap_to_usdc': {
275
+ if (!this.walletClient) {
276
+ if (!this.hasExplicitConfig)
277
+ return this._mock(strategy);
278
+ return { success: false, overrides: {}, description: `No wallet for ${strategy}` };
279
+ }
280
+ return { success: true, overrides: { dexPending: true }, description: `[PENDING] ${strategy}: DEX integration needed` };
281
+ }
282
+ // ═══════ Default ═══════
283
+ default:
284
+ return this._mock(strategy);
285
+ }
286
+ }
287
+ catch (err) {
288
+ return { success: false, overrides: {}, description: `Execution error in '${strategy}': ${err.message}` };
289
+ }
290
+ }
291
+ async _mock(strategy) {
292
+ const jitter = Math.random() * 200;
293
+ await sleep(Math.min(300 + jitter, 800));
294
+ return { success: true, overrides: {}, description: `[MOCK] '${strategy}' (real implementation pending)` };
295
+ }
296
+ }
297
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/engine/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,WAAW,GAIZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AASpD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,OAAO,aAAa;IAChB,MAAM,CAAsB;IAC5B,iBAAiB,CAAU;IAC3B,YAAY,GAAwB,IAAI,CAAC;IACzC,YAAY,GAAwB,IAAI,CAAC;IACzC,OAAO,GAAmB,IAAI,CAAC;IAEvC,YAAY,SAA8B,EAAE;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEnG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC5C,CAAC,CAAC,MAAM,CAAC,UAA2B;gBACpC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,EAAE,CAAkB,CAAC;YAChD,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;oBACrC,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;iBAC/B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU,CAAC,QAAgB;QACzB,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC,CAAC,gBAAgB;QAE1D,MAAM,UAAU,GAAG;YACjB,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY;YACxD,iBAAiB,EAAE,uBAAuB,EAAE,iBAAiB;YAC7D,oBAAoB,EAAE,iBAAiB,EAAE,yBAAyB;YAClE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB;YACxD,kBAAkB;SACnB,CAAC;QACF,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAE/C,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE3D,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,oBAAoB,EAAE,sBAAsB;YAC5D,mBAAmB,EAAE,oBAAoB,EAAE,eAAe;YAC1D,mBAAmB,EAAE,YAAY;SAClC,CAAC;QACF,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE9D,OAAO,IAAI,CAAC,CAAC,uCAAuC;IACtD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,OAA8B,EAC9B,OAAiC;QAEjC,IAAI,CAAC;YACH,QAAQ,QAAQ,EAAE,CAAC;gBAEjB,iDAAiD;gBAEjD,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,MAAM,KAAK,GAAG,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC7E,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;oBACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,KAAK,iBAAiB,EAAE,CAAC;gBACzF,CAAC;gBAED,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;gBACzF,CAAC;gBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,MAAM,SAAS,GAAG,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC;oBACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,wCAAwC,SAAS,EAAE,EAAE,CAAC;gBAC/H,CAAC;gBAED,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,MAAM,SAAS,GAA4B,EAAE,CAAC;oBAC9C,IAAI,CAAC,OAAO,EAAE,QAAQ;wBAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC;oBACpD,IAAI,CAAC,OAAO,EAAE,OAAO;wBAAE,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;oBAC7C,IAAI,CAAC,OAAO,EAAE,IAAI;wBAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC;oBAC/C,IAAI,CAAC,OAAO,EAAE,YAAY;wBAAE,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;oBACrE,IAAI,CAAC,OAAO,EAAE,oBAAoB;wBAAE,SAAS,CAAC,oBAAoB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;oBACpF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC3G,CAAC;gBAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;oBAC7B,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;gBACzG,CAAC;gBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,MAAM,GAAG,GAAG,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,SAAS,CAAC;oBACvD,IAAI,GAAG;wBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,gBAAgB,GAAG,EAAE,EAAE,CAAC;oBACpG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;gBAC7F,CAAC;gBAED,KAAK,iBAAiB;oBACpB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;gBAEzG,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;gBACjG,CAAC;gBAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;oBAC/B,MAAM,CAAC,GAAG,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,mBAAmB,CAAC;oBAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,iCAAiC,EAAE,CAAC;gBACtJ,CAAC;gBAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;oBAC3B,MAAM,GAAG,GAAG,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC;oBACtC,MAAM,EAAE,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC;oBACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,iBAAiB,GAAG,kBAAkB,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACtK,CAAC;gBAED,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;gBAChG,CAAC;gBAED,KAAK,gBAAgB;oBACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;gBAElH,KAAK,kBAAkB,CAAC,CAAC,CAAC;oBACxB,MAAM,IAAI,GAAG,OAAO,EAAE,UAAU,IAAI,SAAS,CAAC;oBAC9C,MAAM,IAAI,GAAG,OAAO,EAAE,cAAc,IAAI,EAAE,CAAC;oBAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,uBAAuB,IAAI,MAAO,IAAiB,CAAC,MAAM,4BAA4B,EAAE,CAAC;gBAC7M,CAAC;gBAED,4DAA4D;gBAE5D,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB;4BAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;oBAC7F,CAAC;oBACD,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAA8B,CAAC;oBAC7G,IAAI,CAAC,IAAI;wBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;oBACvG,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,+BAA+B,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;gBAClI,CAAC;gBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB;4BAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;oBAC9F,CAAC;oBACD,MAAM,SAAS,GAAG,OAAO,EAAE,YAAkC,CAAC;oBAC9D,IAAI,SAAS,EAAE,CAAC;wBACd,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;wBACvE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;4BACtC,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;wBAChG,CAAC;oBACH,CAAC;oBACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;oBACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,IAAI,GAAG,EAAE,EAAE,WAAW,EAAE,qBAAqB,GAAG,EAAE,EAAE,CAAC;gBAC3H,CAAC;gBAED,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB;4BAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;oBAC7F,CAAC;oBACD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAA8B,CAAC;oBAC1G,IAAI,CAAC,CAAC;wBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC;oBAC9F,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,YAAY,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;gBAC3K,CAAC;gBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;oBAC1B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBACvB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;wBAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;oBACrF,CAAC;oBACD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAmC,CAAC;oBAC5D,IAAI,MAAM,EAAE,CAAC;wBACX,IAAI,CAAC;4BACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;4BACrG,OAAO;gCACL,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS;gCACrC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE;gCACzF,WAAW,EAAE,YAAY,OAAO,CAAC,MAAM,aAAa,OAAO,CAAC,WAAW,EAAE;6BAC1E,CAAC;wBACJ,CAAC;wBAAC,MAAM,CAAC;4BACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;wBAClF,CAAC;oBACH,CAAC;oBACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;gBAClG,CAAC;gBAED,mEAAmE;gBAEnE,KAAK,cAAc,CAAC,CAAC,CAAC;oBACpB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;wBACxC,IAAI,CAAC,IAAI,CAAC,iBAAiB;4BAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;oBAC3F,CAAC;oBACD,MAAM,EAAE,GAAG,OAAO,EAAE,EAA+B,CAAC;oBACpD,IAAI,CAAC,EAAE;wBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;oBACpH,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,MAAM,IAAI,GAAG,OAAO,EAAE,IAAiC,CAAC;oBACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,qBAAqB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;gBAClI,CAAC;gBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;oBAC1B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC9D,IAAI,CAAC,IAAI,CAAC,iBAAiB;4BAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;oBACrF,CAAC;oBACD,MAAM,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBAClI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;wBACnD,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;wBAC7C,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,oBAAoB,EAAE,SAAS,CAAC,IAAI,CAAC;wBACpE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI;qBACnC,CAAC,CAAC;oBACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,mBAAmB,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;gBAC/I,CAAC;gBAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC9D,IAAI,CAAC,IAAI,CAAC,iBAAiB;4BAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;oBACvF,CAAC;oBACD,MAAM,EAAE,GAAG,OAAO,EAAE,EAA+B,CAAC;oBACpD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC/E,IAAI,CAAC,EAAE,IAAI,KAAK,KAAK,SAAS;wBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;oBACvH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;oBACvD,MAAM,MAAM,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;oBACxC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;wBACnD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,GAAG,GAAG;wBAC1E,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI;qBACnC,CAAC,CAAC;oBACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,kCAAkC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;gBACvJ,CAAC;gBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC9D,IAAI,CAAC,IAAI,CAAC,iBAAiB;4BAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;oBACpF,CAAC;oBACD,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtE,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACnF,MAAM,EAAE,GAAG,OAAO,EAAE,EAA+B,CAAC;oBACpD,IAAI,CAAC,EAAE,IAAI,KAAK,KAAK,EAAE;wBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;oBACxH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;oBACpD,MAAM,MAAM,GAAa,EAAE,CAAC;oBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAChC,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;wBAC/D,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;wBACzF,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBACpH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACjB,CAAC;oBACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,cAAc,MAAM,MAAM,EAAE,CAAC;gBAC7G,CAAC;gBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;oBAC1B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;wBACxC,IAAI,CAAC,IAAI,CAAC,iBAAiB;4BAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;oBACpF,CAAC;oBACD,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,EAAE,CAA8B,CAAC;oBACvF,MAAM,GAAG,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAqB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBAC9F,IAAI,CAAC,SAAS;wBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;oBAC5H,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,aAAa,WAAW,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;gBACvK,CAAC;gBAED,8DAA8D;gBAE9D,KAAK,eAAe,CAAC;gBACrB,KAAK,mBAAmB,CAAC;gBACzB,KAAK,YAAY,CAAC;gBAClB,KAAK,cAAc,CAAC,CAAC,CAAC;oBACpB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB;4BAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,iBAAiB,QAAQ,EAAE,EAAE,CAAC;oBACrF,CAAC;oBACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,aAAa,QAAQ,0BAA0B,EAAE,CAAC;gBAC1H,CAAC;gBAED,0BAA0B;gBAE1B;oBACE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,uBAAuB,QAAQ,MAAO,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QACvH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,QAAgB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;QACnC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,QAAQ,iCAAiC,EAAE,CAAC;IAC7G,CAAC;CACF"}
@@ -1,7 +1,8 @@
1
1
  export type ErrorCode = 'payment-required' | 'payment-insufficient' | 'payment-expired' | 'verification-failed' | 'method-unsupported' | 'malformed-credential' | 'invalid-challenge' | 'tx-reverted' | 'swap-reverted' | 'token-uninitialized' | 'tip-403' | 'policy-violation' | 'cascade-failure' | 'offramp-failed' | 'rate-limited' | 'server-error' | 'timeout' | 'unknown';
2
2
  export type FailureCategory = 'balance' | 'session' | 'currency' | 'signature' | 'batch' | 'service' | 'dex' | 'compliance' | 'cascade' | 'offramp' | 'network' | 'policy' | 'auth' | 'unknown';
3
3
  export type Severity = 'low' | 'medium' | 'high' | 'critical';
4
- export type Platform = 'tempo' | 'privy' | 'stripe' | 'generic' | 'unknown';
4
+ export type Platform = 'tempo' | 'privy' | 'coinbase' | 'stripe' | 'generic' | 'unknown';
5
+ export type HelixMode = 'observe' | 'auto' | 'full';
5
6
  export interface FailureClassification {
6
7
  code: ErrorCode;
7
8
  category: FailureCategory;
@@ -34,6 +35,10 @@ export interface GeneCapsule {
34
35
  successCount: number;
35
36
  avgRepairMs: number;
36
37
  platforms: Platform[];
38
+ qValue: number;
39
+ consecutiveFailures: number;
40
+ lastSuccessAt?: number;
41
+ lastFailedAt?: number;
37
42
  createdAt?: string;
38
43
  lastUsedAt?: string;
39
44
  }
@@ -46,13 +51,31 @@ export interface RepairResult {
46
51
  immune: boolean;
47
52
  totalMs: number;
48
53
  revenueProtected: number;
54
+ mode: HelixMode;
55
+ explanation: string;
56
+ verified: boolean;
57
+ skippedStrategies?: string[];
58
+ costEstimate: number;
49
59
  }
50
60
  export interface PlatformAdapter {
51
61
  name: Platform;
52
62
  perceive(error: Error, context?: Record<string, unknown>): FailureClassification | null;
53
63
  construct(failure: FailureClassification): RepairCandidate[];
54
64
  }
55
- export type SseEventType = 'perceive' | 'construct' | 'evaluate' | 'commit' | 'gene' | 'immune' | 'error' | 'stats' | 'retry';
65
+ export interface HelixProviderConfig {
66
+ rpcUrl?: string;
67
+ privateKey?: string;
68
+ privy?: {
69
+ appId: string;
70
+ appSecret: string;
71
+ walletId?: string;
72
+ };
73
+ coinbase?: {
74
+ apiKeyName: string;
75
+ apiKeyPrivateKey: string;
76
+ };
77
+ }
78
+ export type SseEventType = 'perceive' | 'construct' | 'evaluate' | 'commit' | 'verify' | 'gene' | 'immune' | 'error' | 'stats' | 'retry';
56
79
  export interface SseEvent {
57
80
  type: SseEventType;
58
81
  agentId: string;
@@ -77,6 +100,17 @@ export interface WrapOptions {
77
100
  geneMapPath?: string;
78
101
  platforms?: string[];
79
102
  config?: Partial<HelixConfig>;
103
+ mode?: HelixMode;
104
+ enabled?: boolean | (() => boolean);
105
+ maxRepairCostUsd?: number;
106
+ maxSlippage?: number;
107
+ approvedTokens?: string[];
108
+ allowCategories?: string[];
109
+ blockStrategies?: string[];
110
+ provider?: HelixProviderConfig;
111
+ onRepair?: (result: RepairResult) => void;
112
+ onFailure?: (result: RepairResult) => void;
113
+ onHelixError?: (error: Error) => void;
80
114
  }
81
115
  export declare const REVENUE_AT_RISK: Record<string, number>;
82
116
  export declare const DEFAULT_CONFIG: HelixConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,10 @@
1
1
  // ── Error Codes ──────────────────────────────────────────────────
2
- // Platform-agnostic error codes. Each platform's perceive() maps
3
- // platform-specific errors to these universal codes.
4
2
  // ── Revenue estimates per category ──────────────────────────────
5
3
  export const REVENUE_AT_RISK = {
6
- balance: 150,
7
- session: 50,
8
- currency: 200,
9
- signature: 100,
10
- batch: 500,
11
- service: 300,
12
- dex: 175,
13
- compliance: 250,
14
- cascade: 1000,
15
- offramp: 400,
16
- network: 100,
17
- policy: 200,
18
- auth: 50,
19
- unknown: 50,
4
+ balance: 150, session: 50, currency: 200, signature: 100,
5
+ batch: 500, service: 300, dex: 175, compliance: 250,
6
+ cascade: 1000, offramp: 400, network: 100, policy: 200,
7
+ auth: 50, unknown: 50,
20
8
  };
21
9
  // ── Default Config ──────────────────────────────────────────────
22
10
  export const DEFAULT_CONFIG = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,iEAAiE;AACjE,qDAAqD;AA6JrD,mEAAmE;AAEnE,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,GAAG;IACb,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,GAAG,EAAE,GAAG;IACR,UAAU,EAAE,GAAG;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,mEAAmE;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,4CAA4C;IAC3D,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;IACpC,aAAa,EAAE,KAAK;IACpB,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,kBAAkB;CAChC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAoLpE,mEAAmE;AAEnE,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;IACxD,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG;IACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;IACtD,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;CACtB,CAAC;AAEF,mEAAmE;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,4CAA4C;IAC3D,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;IACpC,aAAa,EAAE,KAAK;IACpB,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,kBAAkB;CAChC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/engine/wrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAC;AAO5D,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAW9D;AAmBD,wBAAgB,IAAI,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EACnD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,EACxC,OAAO,CAAC,EAAE,WAAW,GACpB,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CA6CtC;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAI/B"}
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/engine/wrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAC;AAO5D,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAW9D;AAmBD,wBAAgB,IAAI,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EACnD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,EACxC,OAAO,CAAC,EAAE,WAAW,GACpB,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAoEtC;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAI/B"}
@@ -7,7 +7,7 @@ let _defaultEngine = null;
7
7
  let _defaultGeneMap = null;
8
8
  export function createEngine(options) {
9
9
  const geneMap = new GeneMap(options?.geneMapPath ?? options?.config?.geneMapPath ?? DEFAULT_CONFIG.geneMapPath);
10
- const engine = new PcecEngine(geneMap, options?.agentId ?? options?.config?.projectName ?? 'default');
10
+ const engine = new PcecEngine(geneMap, options?.agentId ?? options?.config?.projectName ?? 'default', options);
11
11
  for (const adapter of defaultAdapters) {
12
12
  if (!options?.platforms || options.platforms.includes(adapter.name) || adapter.name === 'generic') {
13
13
  engine.registerAdapter(adapter);
@@ -18,7 +18,7 @@ export function createEngine(options) {
18
18
  function getDefaultEngine(options) {
19
19
  if (!_defaultEngine) {
20
20
  const geneMap = new GeneMap(options?.geneMapPath ?? options?.config?.geneMapPath ?? DEFAULT_CONFIG.geneMapPath);
21
- const engine = new PcecEngine(geneMap, options?.agentId ?? 'default');
21
+ const engine = new PcecEngine(geneMap, options?.agentId ?? 'default', options);
22
22
  for (const adapter of defaultAdapters) {
23
23
  if (!options?.platforms || options.platforms.includes(adapter.name) || adapter.name === 'generic') {
24
24
  engine.registerAdapter(adapter);
@@ -34,32 +34,58 @@ export function wrap(fn, options) {
34
34
  const verbose = options?.verbose ?? options?.config?.verbose ?? DEFAULT_CONFIG.verbose;
35
35
  const agentId = options?.agentId ?? 'wrapped';
36
36
  return async (...args) => {
37
+ // ── KILL SWITCH ──
38
+ const enabled = typeof options?.enabled === 'function'
39
+ ? options.enabled()
40
+ : (options?.enabled ?? true);
41
+ if (!enabled) {
42
+ return await fn(...args);
43
+ }
37
44
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
38
45
  try {
39
46
  return await fn(...args);
40
47
  }
41
48
  catch (error) {
42
49
  if (attempt === maxRetries) {
43
- if (verbose) {
50
+ if (verbose)
44
51
  console.error(`\x1b[31m[helix] All ${maxRetries} repair attempts exhausted\x1b[0m`);
45
- }
46
52
  throw error;
47
53
  }
48
- const { engine } = getDefaultEngine(options);
49
- if (verbose) {
50
- console.log(`\x1b[33m[helix] Payment failed (attempt ${attempt + 1}/${maxRetries}), engaging PCEC...\x1b[0m`);
51
- }
52
- bus.emit('retry', agentId, { attempt: attempt + 1, maxRetries });
53
- const result = await engine.repair(error);
54
- if (!result.success) {
54
+ try {
55
+ const { engine } = getDefaultEngine(options);
55
56
  if (verbose) {
56
- console.error(`\x1b[31m[helix] PCEC repair failed, retrying...\x1b[0m`);
57
+ console.log(`\x1b[33m[helix] Payment failed (attempt ${attempt + 1}/${maxRetries}), engaging PCEC...\x1b[0m`);
58
+ }
59
+ bus.emit('retry', agentId, { attempt: attempt + 1, maxRetries });
60
+ const result = await engine.repair(error);
61
+ if (result.success) {
62
+ options?.onRepair?.(result);
63
+ }
64
+ else {
65
+ options?.onFailure?.(result);
66
+ }
67
+ if (result.mode === 'observe') {
68
+ // In observe mode, throw original error with recommendation attached
69
+ const enriched = error;
70
+ enriched.helixRecommendation = result;
71
+ throw enriched;
72
+ }
73
+ if (!result.success) {
74
+ if (verbose)
75
+ console.error(`\x1b[31m[helix] PCEC repair failed, retrying...\x1b[0m`);
76
+ }
77
+ else if (verbose) {
78
+ const tag = result.immune ? '\x1b[36m⚡ IMMUNE' : '\x1b[32m✓ REPAIRED';
79
+ console.log(`${tag}\x1b[0m via ${result.winner?.strategy} in ${result.totalMs}ms ($${result.revenueProtected} protected)`);
57
80
  }
58
81
  }
59
- else if (verbose) {
60
- const tag = result.immune ? '\x1b[36m⚡ IMMUNE' : '\x1b[32m✓ REPAIRED';
61
- console.log(`${tag}\x1b[0m via ${result.winner?.strategy} in ${result.totalMs}ms ` +
62
- `($${result.revenueProtected} protected)`);
82
+ catch (helixError) {
83
+ if (helixError.helixRecommendation) {
84
+ throw helixError; // re-throw observe mode enriched error
85
+ }
86
+ // Helix itself errored — graceful fallback
87
+ options?.onHelixError?.(helixError);
88
+ throw error; // throw ORIGINAL error
63
89
  }
64
90
  }
65
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../src/engine/wrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../src/engine/wrap.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  export { wrap, createEngine, shutdown } from './engine/wrap.js';
2
- export type { WrapOptions } from './engine/types.js';
3
- export type { FailureClassification, RepairCandidate, GeneCapsule, RepairResult, PlatformAdapter, ErrorCode, FailureCategory, Platform, Severity, SseEvent, SseEventType, HelixConfig, } from './engine/types.js';
2
+ export type { FailureClassification, RepairCandidate, GeneCapsule, RepairResult, PlatformAdapter, ErrorCode, FailureCategory, Platform, Severity, SseEvent, SseEventType, HelixConfig, WrapOptions, HelixMode, HelixProviderConfig, } from './engine/types.js';
4
3
  export { REVENUE_AT_RISK, DEFAULT_CONFIG } from './engine/types.js';
5
- export { tempoAdapter, privyAdapter, genericAdapter, stripeAdapter, defaultAdapters } from './platforms/index.js';
4
+ export { tempoAdapter, privyAdapter, coinbaseAdapter, genericAdapter, stripeAdapter, defaultAdapters } from './platforms/index.js';
6
5
  export { PcecEngine } from './engine/pcec.js';
7
6
  export { GeneMap } from './engine/gene-map.js';
8
7
  export { EventBus, bus } from './engine/bus.js';
9
8
  export { evaluate } from './engine/evaluate.js';
9
+ export { HelixProvider } from './engine/provider.js';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,eAAe,EACf,SAAS,EACT,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGlH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGhE,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,eAAe,EACf,SAAS,EACT,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,WAAW,EACX,SAAS,EACT,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGnI,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -2,10 +2,11 @@
2
2
  export { wrap, createEngine, shutdown } from './engine/wrap.js';
3
3
  export { REVENUE_AT_RISK, DEFAULT_CONFIG } from './engine/types.js';
4
4
  // ── Platform adapters (for advanced users) ──
5
- export { tempoAdapter, privyAdapter, genericAdapter, stripeAdapter, defaultAdapters } from './platforms/index.js';
5
+ export { tempoAdapter, privyAdapter, coinbaseAdapter, genericAdapter, stripeAdapter, defaultAdapters } from './platforms/index.js';
6
6
  // ── Engine internals (for advanced users) ──
7
7
  export { PcecEngine } from './engine/pcec.js';
8
8
  export { GeneMap } from './engine/gene-map.js';
9
9
  export { EventBus, bus } from './engine/bus.js';
10
10
  export { evaluate } from './engine/evaluate.js';
11
+ export { HelixProvider } from './engine/provider.js';
11
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAmBhE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,+CAA+C;AAC/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAElH,8CAA8C;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAqBhE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,+CAA+C;AAC/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEnI,8CAA8C;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { coinbasePerceive } from './perceive.js';
2
+ export { coinbaseConstruct } from './strategies.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platforms/coinbase/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}