@agirails/sdk 2.5.3 → 2.5.5

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