@agirails/sdk 2.5.2 → 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 (172) 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/cli/utils/client.d.ts.map +1 -1
  20. package/dist/cli/utils/client.js +1 -0
  21. package/dist/cli/utils/client.js.map +1 -1
  22. package/dist/config/networks.d.ts +2 -2
  23. package/dist/config/networks.d.ts.map +1 -1
  24. package/dist/config/networks.js +27 -22
  25. package/dist/config/networks.js.map +1 -1
  26. package/dist/level0/request.d.ts.map +1 -1
  27. package/dist/level0/request.js +2 -1
  28. package/dist/level0/request.js.map +1 -1
  29. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
  30. package/dist/runtime/BlockchainRuntime.js +11 -5
  31. package/dist/runtime/BlockchainRuntime.js.map +1 -1
  32. package/dist/runtime/MockStateManager.d.ts.map +1 -1
  33. package/dist/runtime/MockStateManager.js +2 -1
  34. package/dist/runtime/MockStateManager.js.map +1 -1
  35. package/dist/utils/IPFSClient.d.ts +3 -1
  36. package/dist/utils/IPFSClient.d.ts.map +1 -1
  37. package/dist/utils/IPFSClient.js +27 -7
  38. package/dist/utils/IPFSClient.js.map +1 -1
  39. package/dist/wallet/AutoWalletProvider.d.ts.map +1 -1
  40. package/dist/wallet/AutoWalletProvider.js +52 -18
  41. package/dist/wallet/AutoWalletProvider.js.map +1 -1
  42. package/dist/wallet/SmartWalletRouter.d.ts +116 -0
  43. package/dist/wallet/SmartWalletRouter.d.ts.map +1 -0
  44. package/dist/wallet/SmartWalletRouter.js +212 -0
  45. package/dist/wallet/SmartWalletRouter.js.map +1 -0
  46. package/dist/wallet/aa/DualNonceManager.d.ts +19 -0
  47. package/dist/wallet/aa/DualNonceManager.d.ts.map +1 -1
  48. package/dist/wallet/aa/DualNonceManager.js +100 -5
  49. package/dist/wallet/aa/DualNonceManager.js.map +1 -1
  50. package/package.json +3 -6
  51. package/src/ACTPClient.ts +0 -1579
  52. package/src/abi/ACTPKernel.json +0 -1356
  53. package/src/abi/AgentRegistry.json +0 -915
  54. package/src/abi/ERC20.json +0 -40
  55. package/src/abi/EscrowVault.json +0 -134
  56. package/src/abi/IdentityRegistry.json +0 -316
  57. package/src/adapters/AdapterRegistry.ts +0 -173
  58. package/src/adapters/AdapterRouter.ts +0 -416
  59. package/src/adapters/BaseAdapter.ts +0 -498
  60. package/src/adapters/BasicAdapter.ts +0 -514
  61. package/src/adapters/IAdapter.ts +0 -292
  62. package/src/adapters/StandardAdapter.ts +0 -555
  63. package/src/adapters/X402Adapter.ts +0 -731
  64. package/src/adapters/index.ts +0 -60
  65. package/src/builders/DeliveryProofBuilder.ts +0 -327
  66. package/src/builders/QuoteBuilder.ts +0 -483
  67. package/src/builders/index.ts +0 -17
  68. package/src/cli/commands/balance.ts +0 -110
  69. package/src/cli/commands/batch.ts +0 -487
  70. package/src/cli/commands/config.ts +0 -231
  71. package/src/cli/commands/deploy-check.ts +0 -364
  72. package/src/cli/commands/deploy-env.ts +0 -120
  73. package/src/cli/commands/diff.ts +0 -141
  74. package/src/cli/commands/init.ts +0 -469
  75. package/src/cli/commands/mint.ts +0 -116
  76. package/src/cli/commands/pay.ts +0 -113
  77. package/src/cli/commands/publish.ts +0 -475
  78. package/src/cli/commands/pull.ts +0 -124
  79. package/src/cli/commands/register.ts +0 -247
  80. package/src/cli/commands/simulate.ts +0 -345
  81. package/src/cli/commands/time.ts +0 -302
  82. package/src/cli/commands/tx.ts +0 -448
  83. package/src/cli/commands/watch.ts +0 -211
  84. package/src/cli/index.ts +0 -134
  85. package/src/cli/utils/client.ts +0 -251
  86. package/src/cli/utils/config.ts +0 -389
  87. package/src/cli/utils/output.ts +0 -465
  88. package/src/cli/utils/wallet.ts +0 -109
  89. package/src/config/agirailsmd.ts +0 -262
  90. package/src/config/networks.ts +0 -275
  91. package/src/config/pendingPublish.ts +0 -237
  92. package/src/config/publishPipeline.ts +0 -359
  93. package/src/config/syncOperations.ts +0 -279
  94. package/src/erc8004/ERC8004Bridge.ts +0 -462
  95. package/src/erc8004/ReputationReporter.ts +0 -468
  96. package/src/erc8004/index.ts +0 -61
  97. package/src/errors/index.ts +0 -427
  98. package/src/index.ts +0 -364
  99. package/src/level0/Provider.ts +0 -117
  100. package/src/level0/ServiceDirectory.ts +0 -131
  101. package/src/level0/index.ts +0 -10
  102. package/src/level0/provide.ts +0 -132
  103. package/src/level0/request.ts +0 -432
  104. package/src/level1/Agent.ts +0 -1426
  105. package/src/level1/index.ts +0 -10
  106. package/src/level1/pricing/PriceCalculator.ts +0 -255
  107. package/src/level1/pricing/PricingStrategy.ts +0 -198
  108. package/src/level1/types/Job.ts +0 -179
  109. package/src/level1/types/Options.ts +0 -291
  110. package/src/level1/types/index.ts +0 -8
  111. package/src/protocol/ACTPKernel.ts +0 -808
  112. package/src/protocol/AgentRegistry.ts +0 -559
  113. package/src/protocol/DIDManager.ts +0 -629
  114. package/src/protocol/DIDResolver.ts +0 -554
  115. package/src/protocol/EASHelper.ts +0 -378
  116. package/src/protocol/EscrowVault.ts +0 -255
  117. package/src/protocol/EventMonitor.ts +0 -204
  118. package/src/protocol/MessageSigner.ts +0 -510
  119. package/src/protocol/ProofGenerator.ts +0 -339
  120. package/src/protocol/QuoteBuilder.ts +0 -15
  121. package/src/registry/AgentRegistryClient.ts +0 -202
  122. package/src/runtime/BlockchainRuntime.ts +0 -1015
  123. package/src/runtime/IACTPRuntime.ts +0 -306
  124. package/src/runtime/MockRuntime.ts +0 -1298
  125. package/src/runtime/MockStateManager.ts +0 -576
  126. package/src/runtime/index.ts +0 -25
  127. package/src/runtime/types/MockState.ts +0 -237
  128. package/src/storage/ArchiveBundleBuilder.ts +0 -561
  129. package/src/storage/ArweaveClient.ts +0 -946
  130. package/src/storage/FilebaseClient.ts +0 -790
  131. package/src/storage/index.ts +0 -96
  132. package/src/storage/types.ts +0 -348
  133. package/src/types/adapter.ts +0 -310
  134. package/src/types/agent.ts +0 -79
  135. package/src/types/did.ts +0 -223
  136. package/src/types/eip712.ts +0 -175
  137. package/src/types/erc8004.ts +0 -293
  138. package/src/types/escrow.ts +0 -27
  139. package/src/types/index.ts +0 -17
  140. package/src/types/message.ts +0 -145
  141. package/src/types/state.ts +0 -87
  142. package/src/types/transaction.ts +0 -69
  143. package/src/types/x402.ts +0 -251
  144. package/src/utils/ErrorRecoveryGuide.ts +0 -676
  145. package/src/utils/Helpers.ts +0 -688
  146. package/src/utils/IPFSClient.ts +0 -368
  147. package/src/utils/Logger.ts +0 -484
  148. package/src/utils/NonceManager.ts +0 -591
  149. package/src/utils/RateLimiter.ts +0 -534
  150. package/src/utils/ReceivedNonceTracker.ts +0 -567
  151. package/src/utils/SDKLifecycle.ts +0 -416
  152. package/src/utils/SecureNonce.ts +0 -78
  153. package/src/utils/Semaphore.ts +0 -276
  154. package/src/utils/UsedAttestationTracker.ts +0 -385
  155. package/src/utils/canonicalJson.ts +0 -38
  156. package/src/utils/circuitBreaker.ts +0 -324
  157. package/src/utils/computeTypeHash.ts +0 -48
  158. package/src/utils/fsSafe.ts +0 -80
  159. package/src/utils/index.ts +0 -80
  160. package/src/utils/retry.ts +0 -364
  161. package/src/utils/security.ts +0 -418
  162. package/src/utils/validation.ts +0 -540
  163. package/src/wallet/AutoWalletProvider.ts +0 -299
  164. package/src/wallet/EOAWalletProvider.ts +0 -69
  165. package/src/wallet/IWalletProvider.ts +0 -135
  166. package/src/wallet/aa/BundlerClient.ts +0 -274
  167. package/src/wallet/aa/DualNonceManager.ts +0 -173
  168. package/src/wallet/aa/PaymasterClient.ts +0 -174
  169. package/src/wallet/aa/TransactionBatcher.ts +0 -353
  170. package/src/wallet/aa/UserOpBuilder.ts +0 -246
  171. package/src/wallet/aa/constants.ts +0 -60
  172. 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';