@agirails/sdk 2.5.3 → 2.5.4

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 (166) hide show
  1. package/dist/ACTPClient.d.ts +18 -0
  2. package/dist/ACTPClient.d.ts.map +1 -1
  3. package/dist/ACTPClient.js +67 -22
  4. package/dist/ACTPClient.js.map +1 -1
  5. package/dist/adapters/BasicAdapter.d.ts +12 -0
  6. package/dist/adapters/BasicAdapter.d.ts.map +1 -1
  7. package/dist/adapters/BasicAdapter.js +30 -4
  8. package/dist/adapters/BasicAdapter.js.map +1 -1
  9. package/dist/adapters/StandardAdapter.d.ts +20 -3
  10. package/dist/adapters/StandardAdapter.d.ts.map +1 -1
  11. package/dist/adapters/StandardAdapter.js +45 -11
  12. package/dist/adapters/StandardAdapter.js.map +1 -1
  13. package/dist/cli/commands/publish.js +16 -4
  14. package/dist/cli/commands/publish.js.map +1 -1
  15. package/dist/cli/commands/register.js +16 -4
  16. package/dist/cli/commands/register.js.map +1 -1
  17. package/dist/cli/commands/tx.js +31 -3
  18. package/dist/cli/commands/tx.js.map +1 -1
  19. package/dist/config/networks.d.ts +2 -2
  20. package/dist/config/networks.d.ts.map +1 -1
  21. package/dist/config/networks.js +27 -22
  22. package/dist/config/networks.js.map +1 -1
  23. package/dist/level0/request.d.ts.map +1 -1
  24. package/dist/level0/request.js +2 -1
  25. package/dist/level0/request.js.map +1 -1
  26. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
  27. package/dist/runtime/BlockchainRuntime.js +11 -5
  28. package/dist/runtime/BlockchainRuntime.js.map +1 -1
  29. package/dist/utils/IPFSClient.d.ts +3 -1
  30. package/dist/utils/IPFSClient.d.ts.map +1 -1
  31. package/dist/utils/IPFSClient.js +27 -7
  32. package/dist/utils/IPFSClient.js.map +1 -1
  33. package/dist/wallet/AutoWalletProvider.d.ts.map +1 -1
  34. package/dist/wallet/AutoWalletProvider.js +52 -18
  35. package/dist/wallet/AutoWalletProvider.js.map +1 -1
  36. package/dist/wallet/SmartWalletRouter.d.ts +116 -0
  37. package/dist/wallet/SmartWalletRouter.d.ts.map +1 -0
  38. package/dist/wallet/SmartWalletRouter.js +212 -0
  39. package/dist/wallet/SmartWalletRouter.js.map +1 -0
  40. package/dist/wallet/aa/DualNonceManager.d.ts +19 -0
  41. package/dist/wallet/aa/DualNonceManager.d.ts.map +1 -1
  42. package/dist/wallet/aa/DualNonceManager.js +100 -5
  43. package/dist/wallet/aa/DualNonceManager.js.map +1 -1
  44. package/package.json +3 -6
  45. package/src/ACTPClient.ts +0 -1579
  46. package/src/abi/ACTPKernel.json +0 -1356
  47. package/src/abi/AgentRegistry.json +0 -915
  48. package/src/abi/ERC20.json +0 -40
  49. package/src/abi/EscrowVault.json +0 -134
  50. package/src/abi/IdentityRegistry.json +0 -316
  51. package/src/adapters/AdapterRegistry.ts +0 -173
  52. package/src/adapters/AdapterRouter.ts +0 -416
  53. package/src/adapters/BaseAdapter.ts +0 -498
  54. package/src/adapters/BasicAdapter.ts +0 -514
  55. package/src/adapters/IAdapter.ts +0 -292
  56. package/src/adapters/StandardAdapter.ts +0 -555
  57. package/src/adapters/X402Adapter.ts +0 -731
  58. package/src/adapters/index.ts +0 -60
  59. package/src/builders/DeliveryProofBuilder.ts +0 -327
  60. package/src/builders/QuoteBuilder.ts +0 -483
  61. package/src/builders/index.ts +0 -17
  62. package/src/cli/commands/balance.ts +0 -110
  63. package/src/cli/commands/batch.ts +0 -487
  64. package/src/cli/commands/config.ts +0 -231
  65. package/src/cli/commands/deploy-check.ts +0 -364
  66. package/src/cli/commands/deploy-env.ts +0 -120
  67. package/src/cli/commands/diff.ts +0 -141
  68. package/src/cli/commands/init.ts +0 -469
  69. package/src/cli/commands/mint.ts +0 -116
  70. package/src/cli/commands/pay.ts +0 -113
  71. package/src/cli/commands/publish.ts +0 -475
  72. package/src/cli/commands/pull.ts +0 -124
  73. package/src/cli/commands/register.ts +0 -247
  74. package/src/cli/commands/simulate.ts +0 -345
  75. package/src/cli/commands/time.ts +0 -302
  76. package/src/cli/commands/tx.ts +0 -448
  77. package/src/cli/commands/watch.ts +0 -211
  78. package/src/cli/index.ts +0 -134
  79. package/src/cli/utils/client.ts +0 -252
  80. package/src/cli/utils/config.ts +0 -389
  81. package/src/cli/utils/output.ts +0 -465
  82. package/src/cli/utils/wallet.ts +0 -109
  83. package/src/config/agirailsmd.ts +0 -262
  84. package/src/config/networks.ts +0 -275
  85. package/src/config/pendingPublish.ts +0 -237
  86. package/src/config/publishPipeline.ts +0 -359
  87. package/src/config/syncOperations.ts +0 -279
  88. package/src/erc8004/ERC8004Bridge.ts +0 -462
  89. package/src/erc8004/ReputationReporter.ts +0 -468
  90. package/src/erc8004/index.ts +0 -61
  91. package/src/errors/index.ts +0 -427
  92. package/src/index.ts +0 -364
  93. package/src/level0/Provider.ts +0 -117
  94. package/src/level0/ServiceDirectory.ts +0 -131
  95. package/src/level0/index.ts +0 -10
  96. package/src/level0/provide.ts +0 -132
  97. package/src/level0/request.ts +0 -432
  98. package/src/level1/Agent.ts +0 -1426
  99. package/src/level1/index.ts +0 -10
  100. package/src/level1/pricing/PriceCalculator.ts +0 -255
  101. package/src/level1/pricing/PricingStrategy.ts +0 -198
  102. package/src/level1/types/Job.ts +0 -179
  103. package/src/level1/types/Options.ts +0 -291
  104. package/src/level1/types/index.ts +0 -8
  105. package/src/protocol/ACTPKernel.ts +0 -808
  106. package/src/protocol/AgentRegistry.ts +0 -559
  107. package/src/protocol/DIDManager.ts +0 -629
  108. package/src/protocol/DIDResolver.ts +0 -554
  109. package/src/protocol/EASHelper.ts +0 -378
  110. package/src/protocol/EscrowVault.ts +0 -255
  111. package/src/protocol/EventMonitor.ts +0 -204
  112. package/src/protocol/MessageSigner.ts +0 -510
  113. package/src/protocol/ProofGenerator.ts +0 -339
  114. package/src/protocol/QuoteBuilder.ts +0 -15
  115. package/src/registry/AgentRegistryClient.ts +0 -202
  116. package/src/runtime/BlockchainRuntime.ts +0 -1015
  117. package/src/runtime/IACTPRuntime.ts +0 -306
  118. package/src/runtime/MockRuntime.ts +0 -1298
  119. package/src/runtime/MockStateManager.ts +0 -577
  120. package/src/runtime/index.ts +0 -25
  121. package/src/runtime/types/MockState.ts +0 -237
  122. package/src/storage/ArchiveBundleBuilder.ts +0 -561
  123. package/src/storage/ArweaveClient.ts +0 -946
  124. package/src/storage/FilebaseClient.ts +0 -790
  125. package/src/storage/index.ts +0 -96
  126. package/src/storage/types.ts +0 -348
  127. package/src/types/adapter.ts +0 -310
  128. package/src/types/agent.ts +0 -79
  129. package/src/types/did.ts +0 -223
  130. package/src/types/eip712.ts +0 -175
  131. package/src/types/erc8004.ts +0 -293
  132. package/src/types/escrow.ts +0 -27
  133. package/src/types/index.ts +0 -17
  134. package/src/types/message.ts +0 -145
  135. package/src/types/state.ts +0 -87
  136. package/src/types/transaction.ts +0 -69
  137. package/src/types/x402.ts +0 -251
  138. package/src/utils/ErrorRecoveryGuide.ts +0 -676
  139. package/src/utils/Helpers.ts +0 -688
  140. package/src/utils/IPFSClient.ts +0 -368
  141. package/src/utils/Logger.ts +0 -484
  142. package/src/utils/NonceManager.ts +0 -591
  143. package/src/utils/RateLimiter.ts +0 -534
  144. package/src/utils/ReceivedNonceTracker.ts +0 -567
  145. package/src/utils/SDKLifecycle.ts +0 -416
  146. package/src/utils/SecureNonce.ts +0 -78
  147. package/src/utils/Semaphore.ts +0 -276
  148. package/src/utils/UsedAttestationTracker.ts +0 -385
  149. package/src/utils/canonicalJson.ts +0 -38
  150. package/src/utils/circuitBreaker.ts +0 -324
  151. package/src/utils/computeTypeHash.ts +0 -48
  152. package/src/utils/fsSafe.ts +0 -80
  153. package/src/utils/index.ts +0 -80
  154. package/src/utils/retry.ts +0 -364
  155. package/src/utils/security.ts +0 -418
  156. package/src/utils/validation.ts +0 -540
  157. package/src/wallet/AutoWalletProvider.ts +0 -299
  158. package/src/wallet/EOAWalletProvider.ts +0 -69
  159. package/src/wallet/IWalletProvider.ts +0 -135
  160. package/src/wallet/aa/BundlerClient.ts +0 -274
  161. package/src/wallet/aa/DualNonceManager.ts +0 -173
  162. package/src/wallet/aa/PaymasterClient.ts +0 -174
  163. package/src/wallet/aa/TransactionBatcher.ts +0 -353
  164. package/src/wallet/aa/UserOpBuilder.ts +0 -246
  165. package/src/wallet/aa/constants.ts +0 -60
  166. package/src/wallet/keystore.ts +0 -240
package/src/index.ts DELETED
@@ -1,364 +0,0 @@
1
- /**
2
- * AGIRAILS SDK - Agent Commerce Transaction Protocol
3
- *
4
- * This is the main entry point for the AGIRAILS SDK.
5
- * The recommended way to use this SDK is through the ACTPClient class.
6
- *
7
- * @packageDocumentation
8
- *
9
- * @example
10
- * ```typescript
11
- * import { ACTPClient } from '@agirails/sdk';
12
- *
13
- * // Create client in mock mode
14
- * const client = await ACTPClient.create({
15
- * mode: 'mock',
16
- * requesterAddress: '0x1234...',
17
- * });
18
- *
19
- * // Mint some tokens for testing
20
- * await client.mintTokens(client.getAddress(), '10000000000');
21
- *
22
- * // Create a payment
23
- * const result = await client.basic.pay({
24
- * to: '0xProvider...',
25
- * amount: '100',
26
- * });
27
- *
28
- * console.log('Transaction ID:', result.txId);
29
- * ```
30
- */
31
-
32
- // =============================================================================
33
- // Primary API - ACTPClient
34
- // =============================================================================
35
-
36
- export {
37
- ACTPClient,
38
- ACTPClientConfig,
39
- ACTPClientMode,
40
- ACTPClientInfo,
41
- } from './ACTPClient';
42
-
43
- // =============================================================================
44
- // Adapter Layer - Three-Level API
45
- // =============================================================================
46
-
47
- export {
48
- BaseAdapter,
49
- DEFAULT_DISPUTE_WINDOW_SECONDS,
50
- DEFAULT_DEADLINE_SECONDS,
51
- MIN_AMOUNT_WEI,
52
- MAX_DEADLINE_HOURS,
53
- MAX_DEADLINE_DAYS,
54
- } from './adapters/BaseAdapter';
55
-
56
- export {
57
- BasicAdapter,
58
- BasicPayParams,
59
- BasicPayResult,
60
- } from './adapters/BasicAdapter';
61
-
62
- export {
63
- StandardAdapter,
64
- StandardTransactionParams,
65
- } from './adapters/StandardAdapter';
66
-
67
- export {
68
- X402Adapter,
69
- X402AdapterConfig,
70
- X402PayParams,
71
- } from './adapters/X402Adapter';
72
-
73
- export { AdapterRegistry } from './adapters/AdapterRegistry';
74
-
75
- export {
76
- AdapterRouter,
77
- AdapterSelectionResult,
78
- } from './adapters/AdapterRouter';
79
-
80
- export {
81
- IAdapter,
82
- TransactionStatus,
83
- AdapterTransactionState,
84
- isAdapter,
85
- } from './adapters/IAdapter';
86
-
87
- // =============================================================================
88
- // Runtime Layer - Protocol Implementation
89
- // =============================================================================
90
-
91
- // Runtime interfaces
92
- export {
93
- IACTPRuntime,
94
- IMockRuntime,
95
- CreateTransactionParams,
96
- } from './runtime/IACTPRuntime';
97
-
98
- // MockRuntime (for local development)
99
- export {
100
- MockRuntime,
101
- InsufficientBalanceError,
102
- EscrowNotFoundError,
103
- DeadlinePassedError,
104
- ContractPausedError,
105
- DisputeWindowActiveError,
106
- } from './runtime/MockRuntime';
107
-
108
- // MockStateManager (for custom state management)
109
- export {
110
- MockStateManager,
111
- MockStateCorruptedError,
112
- MockStateVersionError,
113
- MockStateLockError,
114
- } from './runtime/MockStateManager';
115
-
116
- // BlockchainRuntime (for testnet/mainnet)
117
- export {
118
- BlockchainRuntime,
119
- BlockchainRuntimeConfig,
120
- } from './runtime/BlockchainRuntime';
121
-
122
- // =============================================================================
123
- // Type Exports
124
- // =============================================================================
125
-
126
- export {
127
- MockState,
128
- MockTransaction,
129
- MockEscrow,
130
- MockAccount,
131
- MockBlockchain,
132
- MockEvent,
133
- TransactionState,
134
- TransactionStateValue,
135
- MOCK_STATE_DEFAULTS,
136
- } from './runtime/types/MockState';
137
-
138
- // =============================================================================
139
- // Protocol Layer (from sdk-js merge)
140
- // =============================================================================
141
-
142
- // Protocol modules
143
- export { ACTPKernel } from './protocol/ACTPKernel';
144
- export { EscrowVault } from './protocol/EscrowVault';
145
- export { EventMonitor } from './protocol/EventMonitor';
146
- export { MessageSigner } from './protocol/MessageSigner';
147
- export { ProofGenerator, URLValidationConfig } from './protocol/ProofGenerator';
148
- export { EASHelper, EASConfig } from './protocol/EASHelper';
149
- export { AgentRegistry } from './protocol/AgentRegistry';
150
- export { DIDManager } from './protocol/DIDManager';
151
- export { DIDResolver } from './protocol/DIDResolver';
152
-
153
- // Builders
154
- export { QuoteBuilder } from './builders/QuoteBuilder';
155
- export { DeliveryProofBuilder } from './builders/DeliveryProofBuilder';
156
-
157
- // Config
158
- export { getNetwork } from './config/networks';
159
- export type { NetworkConfig } from './config/networks';
160
-
161
- // Protocol types
162
- export type {
163
- State,
164
- Transaction,
165
- CreateTransactionParams as ProtocolCreateParams,
166
- DisputeResolution,
167
- EconomicParams,
168
- } from './types';
169
-
170
- // Utils
171
- export { NonceManager, InMemoryNonceManager } from './utils/NonceManager';
172
- export { IReceivedNonceTracker, InMemoryReceivedNonceTracker } from './utils/ReceivedNonceTracker';
173
- // Note: IPFSClient is not exported from main index to avoid ESM compatibility issues
174
- // Import directly from '@agirails/sdk/utils/IPFSClient' if needed
175
- export type { IPFSClient, IPFSClientConfig } from './utils/IPFSClient';
176
- export { generateSecureNonce, isValidNonce, generateSecureNonces } from './utils/SecureNonce';
177
- export { Semaphore, RateLimiter } from './utils/Semaphore';
178
- export {
179
- IUsedAttestationTracker,
180
- InMemoryUsedAttestationTracker,
181
- FileBasedUsedAttestationTracker,
182
- createUsedAttestationTracker,
183
- } from './utils/UsedAttestationTracker';
184
-
185
- // Wallet
186
- export { resolvePrivateKey, getCachedAddress } from './wallet/keystore';
187
- export type {
188
- IWalletProvider,
189
- TransactionRequest as WalletTransactionRequest,
190
- TransactionReceipt as WalletTransactionReceipt,
191
- WalletInfo,
192
- WalletTier,
193
- BatchedPayParams,
194
- BatchedPayResult,
195
- } from './wallet/IWalletProvider';
196
- export { EOAWalletProvider } from './wallet/EOAWalletProvider';
197
- export { AutoWalletProvider } from './wallet/AutoWalletProvider';
198
- export type { AutoWalletConfig } from './wallet/AutoWalletProvider';
199
-
200
- // Helper utilities
201
- export {
202
- USDC,
203
- Deadline,
204
- Address,
205
- Bytes32,
206
- State as StateHelpers,
207
- DisputeWindow,
208
- parseUSDC,
209
- formatUSDC,
210
- shortenAddress,
211
- ServiceHash,
212
- hashServiceMetadata,
213
- } from './utils/Helpers';
214
- export type { ServiceMetadata } from './utils/Helpers';
215
-
216
- // =============================================================================
217
- // Basic API - Simple provide/request interface
218
- // =============================================================================
219
-
220
- export { provide, request, serviceDirectory } from './level0';
221
- export type {
222
- Provider,
223
- ProviderStatus,
224
- ProviderStats,
225
- ProviderBalance,
226
- } from './level0';
227
-
228
- // =============================================================================
229
- // Standard API - Agent-based interface
230
- // =============================================================================
231
-
232
- export { Agent, calculatePrice, DEFAULT_PRICING_STRATEGY } from './level1';
233
- export type {
234
- AgentConfig,
235
- AgentStatus,
236
- AgentStats,
237
- AgentBalance,
238
- ServiceConfig,
239
- Job,
240
- JobHandler,
241
- JobContext,
242
- ProvideOptions,
243
- RequestOptions,
244
- RequestResult,
245
- RequestStatus,
246
- WalletOption,
247
- NetworkOption,
248
- PricingStrategy,
249
- ServiceCost,
250
- BelowPriceBehavior,
251
- BelowCostBehavior,
252
- PriceCalculation,
253
- } from './level1';
254
-
255
- // =============================================================================
256
- // Storage Layer (AIP-7 §4) - Hybrid IPFS + Arweave
257
- // =============================================================================
258
-
259
- // Storage clients
260
- export { FilebaseClient } from './storage/FilebaseClient';
261
- export { ArweaveClient } from './storage/ArweaveClient';
262
-
263
- // Archive bundle builder
264
- export {
265
- ArchiveBundleBuilder,
266
- computeContentHash,
267
- validateArchiveBundle,
268
- } from './storage/ArchiveBundleBuilder';
269
-
270
- // Storage types
271
- export type {
272
- FilebaseConfig,
273
- ArweaveConfig,
274
- IrysCurrency,
275
- IrysNetwork,
276
- ArchiveBundle,
277
- ArchiveChainId,
278
- ArchiveFinalState,
279
- ArchiveParticipants,
280
- ArchiveReferences,
281
- ArchiveHashes,
282
- ArchiveSignatures,
283
- ArchiveAttestation,
284
- ArchiveSettlement,
285
- EscrowRelease,
286
- ArchiveTags,
287
- IPFSUploadResult,
288
- ArweaveUploadResult,
289
- DownloadResult,
290
- } from './storage/types';
291
-
292
- // Storage constants
293
- export { ARCHIVE_BUNDLE_TYPE } from './storage/types';
294
-
295
- // =============================================================================
296
- // ERC-8004 Integration
297
- // =============================================================================
298
-
299
- export {
300
- ERC8004Bridge,
301
- ReputationReporter,
302
- ERC8004Error,
303
- ERC8004ErrorCode,
304
- ERC8004_IDENTITY_REGISTRY,
305
- ERC8004_REPUTATION_REGISTRY,
306
- ERC8004_DEFAULT_RPC,
307
- ACTP_FEEDBACK_TAGS,
308
- } from './erc8004';
309
-
310
- export type {
311
- ERC8004BridgeConfig,
312
- ReputationReporterConfig,
313
- ReportSettlementParams,
314
- ReportDisputeParams,
315
- ReportResult,
316
- ERC8004Network,
317
- ERC8004Agent,
318
- ERC8004AgentMetadata,
319
- ReputationFeedback,
320
- ReputationSummary,
321
- ACTPFeedbackTag,
322
- } from './erc8004';
323
-
324
- // =============================================================================
325
- // Enhanced Error Exports
326
- // =============================================================================
327
-
328
- export {
329
- ACTPError,
330
- InsufficientFundsError,
331
- TransactionNotFoundError,
332
- DeadlineExpiredError,
333
- InvalidStateTransitionError,
334
- SignatureVerificationError,
335
- TransactionRevertedError,
336
- NetworkError,
337
- ValidationError,
338
- InvalidAddressError,
339
- InvalidAmountError,
340
- // Basic/Standard API errors
341
- NoProviderFoundError,
342
- TimeoutError,
343
- ProviderRejectedError,
344
- DeliveryFailedError,
345
- DisputeRaisedError,
346
- ServiceConfigError,
347
- AgentLifecycleError,
348
- // Storage errors (AIP-7)
349
- StorageError,
350
- StorageAuthenticationError,
351
- StorageRateLimitError,
352
- UploadTimeoutError,
353
- DownloadTimeoutError,
354
- ContentNotFoundError,
355
- FileSizeLimitExceededError,
356
- InvalidCIDError,
357
- ArweaveUploadError,
358
- ArweaveDownloadError,
359
- ArweaveTimeoutError,
360
- InvalidArweaveTxIdError,
361
- InsufficientBalanceError as StorageInsufficientBalanceError,
362
- SwapExecutionError,
363
- QueryCapExceededError,
364
- } from './errors';
@@ -1,117 +0,0 @@
1
- /**
2
- * Provider - Return type of provide() function
3
- *
4
- * Provides control and observability for a running service provider.
5
- *
6
- * @packageDocumentation
7
- */
8
-
9
- import { Job } from '../level1/types/Job';
10
-
11
- /**
12
- * Provider status
13
- */
14
- export type ProviderStatus = 'starting' | 'running' | 'paused' | 'stopped';
15
-
16
- /**
17
- * Provider statistics
18
- */
19
- export interface ProviderStats {
20
- jobsCompleted: number;
21
- jobsFailed: number;
22
- totalEarned: number;
23
- averageJobTime: number;
24
- }
25
-
26
- /**
27
- * Provider balance
28
- */
29
- export interface ProviderBalance {
30
- eth: string;
31
- usdc: string;
32
- }
33
-
34
- /**
35
- * Provider interface
36
- *
37
- * Returned by provide() to control the provider lifecycle.
38
- *
39
- * @example
40
- * ```typescript
41
- * const provider = provide('echo', async (job) => job.input);
42
- *
43
- * // Monitor events
44
- * provider.on('job:received', (job) => {
45
- * console.log(`Received job: ${job.id}`);
46
- * });
47
- *
48
- * provider.on('payment:received', (amount) => {
49
- * console.log(`Earned ${amount} USDC`);
50
- * });
51
- *
52
- * // Control lifecycle
53
- * provider.pause(); // Stop accepting new jobs
54
- * provider.resume(); // Resume
55
- * await provider.stop(); // Graceful shutdown
56
- *
57
- * // Check statistics
58
- * console.log(`Completed: ${provider.stats.jobsCompleted}`);
59
- * console.log(`Earned: $${provider.stats.totalEarned}`);
60
- * ```
61
- */
62
- export interface Provider {
63
- /**
64
- * Current status
65
- */
66
- status: ProviderStatus;
67
-
68
- /**
69
- * Provider's Ethereum address
70
- */
71
- address: string;
72
-
73
- /**
74
- * Balance information
75
- */
76
- balance: ProviderBalance;
77
-
78
- /**
79
- * Pause the provider
80
- *
81
- * Stops accepting new jobs but keeps running jobs active.
82
- */
83
- pause(): void;
84
-
85
- /**
86
- * Resume the provider
87
- *
88
- * Resumes accepting new jobs after pause.
89
- */
90
- resume(): void;
91
-
92
- /**
93
- * Stop the provider
94
- *
95
- * Gracefully shuts down, waiting for active jobs to complete.
96
- */
97
- stop(): Promise<void>;
98
-
99
- /**
100
- * Register event listener
101
- *
102
- * Supported events:
103
- * - 'job:received': (job: Job) => void
104
- * - 'job:completed': (job: Job, result: any) => void
105
- * - 'job:failed': (job: Job, error: Error) => void
106
- * - 'payment:received': (amount: number) => void
107
- */
108
- on(event: 'job:received', handler: (job: Job) => void): void;
109
- on(event: 'job:completed', handler: (job: Job, result: any) => void): void;
110
- on(event: 'job:failed', handler: (job: Job, error: Error) => void): void;
111
- on(event: 'payment:received', handler: (amount: number) => void): void;
112
-
113
- /**
114
- * Statistics
115
- */
116
- stats: ProviderStats;
117
- }
@@ -1,131 +0,0 @@
1
- /**
2
- * ServiceDirectory - Hardcoded provider mapping for MVP
3
- *
4
- * In MVP, we use hardcoded service-to-provider mapping.
5
- * In V2+, this will be replaced by on-chain AgentRegistry queries.
6
- *
7
- * @packageDocumentation
8
- */
9
-
10
- import { validateServiceName, isValidAddress } from '../utils/security';
11
-
12
- /**
13
- * In-memory service directory
14
- *
15
- * Maps service names to provider addresses.
16
- * This is a singleton that can be updated by provide() calls.
17
- *
18
- * SECURITY FIXES:
19
- * - H-5: Address validation to prevent poisoning
20
- * - H-2: Service name validation
21
- */
22
- class ServiceDirectory {
23
- /**
24
- * Service -> Provider address mapping
25
- */
26
- private directory = new Map<string, Set<string>>();
27
-
28
- /**
29
- * Register a provider for a service
30
- *
31
- * SECURITY FIX (H-5): Validate address format before registration
32
- * SECURITY FIX (H-2): Validate service name
33
- *
34
- * @param service - Service name
35
- * @param provider - Provider address
36
- * @throws Error if service name or provider address is invalid
37
- */
38
- register(service: string, provider: string): void {
39
- // SECURITY FIX (H-2): Validate service name
40
- const validatedService = validateServiceName(service);
41
-
42
- // SECURITY FIX (H-5): Validate Ethereum address format
43
- if (!isValidAddress(provider)) {
44
- throw new Error(
45
- `Invalid provider address: "${provider}". Must be a valid Ethereum address (0x followed by 40 hex characters).`
46
- );
47
- }
48
-
49
- if (!this.directory.has(validatedService)) {
50
- this.directory.set(validatedService, new Set());
51
- }
52
-
53
- this.directory.get(validatedService)!.add(provider);
54
- }
55
-
56
- /**
57
- * Unregister a provider from a service
58
- *
59
- * SECURITY FIX (H-5): Validate address format
60
- * SECURITY FIX (H-2): Validate service name
61
- *
62
- * @param service - Service name
63
- * @param provider - Provider address
64
- */
65
- unregister(service: string, provider: string): void {
66
- // SECURITY FIX (H-2): Validate service name
67
- const validatedService = validateServiceName(service);
68
-
69
- // SECURITY FIX (H-5): Validate address format
70
- if (!isValidAddress(provider)) {
71
- throw new Error(`Invalid provider address: "${provider}"`);
72
- }
73
-
74
- const providers = this.directory.get(validatedService);
75
- if (providers) {
76
- providers.delete(provider);
77
- if (providers.size === 0) {
78
- this.directory.delete(validatedService);
79
- }
80
- }
81
- }
82
-
83
- /**
84
- * Find providers for a service
85
- *
86
- * SECURITY FIX (H-2): Validate service name
87
- *
88
- * @param service - Service name
89
- * @returns Array of provider addresses
90
- */
91
- findProviders(service: string): string[] {
92
- // SECURITY FIX (H-2): Validate service name
93
- try {
94
- const validatedService = validateServiceName(service);
95
- const providers = this.directory.get(validatedService);
96
- return providers ? Array.from(providers) : [];
97
- } catch (error) {
98
- // If service name is invalid, return empty array instead of throwing
99
- // This allows graceful degradation in search scenarios
100
- return [];
101
- }
102
- }
103
-
104
- /**
105
- * Get all registered services
106
- *
107
- * @returns Array of service names
108
- */
109
- getServices(): string[] {
110
- return Array.from(this.directory.keys());
111
- }
112
-
113
- /**
114
- * Clear all registrations
115
- */
116
- clear(): void {
117
- this.directory.clear();
118
- }
119
-
120
- /**
121
- * Get directory size (for debugging)
122
- */
123
- get size(): number {
124
- return this.directory.size;
125
- }
126
- }
127
-
128
- /**
129
- * Singleton instance
130
- */
131
- export const serviceDirectory = new ServiceDirectory();
@@ -1,10 +0,0 @@
1
- /**
2
- * Basic API - Simple service provision and requests
3
- *
4
- * @packageDocumentation
5
- */
6
-
7
- export { provide } from './provide';
8
- export { request } from './request';
9
- export { Provider, ProviderStatus, ProviderStats, ProviderBalance } from './Provider';
10
- export { serviceDirectory } from './ServiceDirectory';