@agirails/sdk 2.0.0 → 2.0.1-beta
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.
- package/README.md +108 -116
- package/dist/ACTPClient.d.ts +33 -456
- package/dist/ACTPClient.d.ts.map +1 -1
- package/dist/ACTPClient.js +93 -477
- package/dist/ACTPClient.js.map +1 -1
- package/dist/abi/EscrowVault.json +38 -106
- package/dist/builders/DeliveryProofBuilder.d.ts +1 -60
- package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -1
- package/dist/builders/DeliveryProofBuilder.js +5 -81
- package/dist/builders/DeliveryProofBuilder.js.map +1 -1
- package/dist/builders/QuoteBuilder.d.ts +0 -101
- package/dist/builders/QuoteBuilder.d.ts.map +1 -1
- package/dist/builders/QuoteBuilder.js +3 -120
- package/dist/builders/QuoteBuilder.js.map +1 -1
- package/dist/builders/index.d.ts +0 -4
- package/dist/builders/index.d.ts.map +1 -1
- package/dist/builders/index.js +0 -4
- package/dist/builders/index.js.map +1 -1
- package/dist/config/networks.d.ts +0 -28
- package/dist/config/networks.d.ts.map +1 -1
- package/dist/config/networks.js +12 -60
- package/dist/config/networks.js.map +1 -1
- package/dist/errors/index.d.ts +2 -165
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +2 -260
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +13 -61
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -141
- package/dist/index.js.map +1 -1
- package/dist/protocol/ACTPKernel.d.ts +2 -229
- package/dist/protocol/ACTPKernel.d.ts.map +1 -1
- package/dist/protocol/ACTPKernel.js +33 -367
- package/dist/protocol/ACTPKernel.js.map +1 -1
- package/dist/protocol/EASHelper.d.ts +2 -57
- package/dist/protocol/EASHelper.d.ts.map +1 -1
- package/dist/protocol/EASHelper.js +37 -230
- package/dist/protocol/EASHelper.js.map +1 -1
- package/dist/protocol/EscrowVault.d.ts +2 -93
- package/dist/protocol/EscrowVault.d.ts.map +1 -1
- package/dist/protocol/EscrowVault.js +33 -122
- package/dist/protocol/EscrowVault.js.map +1 -1
- package/dist/protocol/EventMonitor.d.ts +1 -45
- package/dist/protocol/EventMonitor.d.ts.map +1 -1
- package/dist/protocol/EventMonitor.js +8 -64
- package/dist/protocol/EventMonitor.js.map +1 -1
- package/dist/protocol/MessageSigner.d.ts +2 -116
- package/dist/protocol/MessageSigner.d.ts.map +1 -1
- package/dist/protocol/MessageSigner.js +9 -215
- package/dist/protocol/MessageSigner.js.map +1 -1
- package/dist/protocol/ProofGenerator.d.ts +0 -93
- package/dist/protocol/ProofGenerator.d.ts.map +1 -1
- package/dist/protocol/ProofGenerator.js +9 -194
- package/dist/protocol/ProofGenerator.js.map +1 -1
- package/dist/protocol/QuoteBuilder.d.ts +0 -8
- package/dist/protocol/QuoteBuilder.d.ts.map +1 -1
- package/dist/protocol/QuoteBuilder.js +0 -8
- package/dist/protocol/QuoteBuilder.js.map +1 -1
- package/dist/types/eip712.d.ts +0 -34
- package/dist/types/eip712.d.ts.map +1 -1
- package/dist/types/eip712.js +5 -31
- package/dist/types/eip712.js.map +1 -1
- package/dist/types/escrow.d.ts +10 -17
- package/dist/types/escrow.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -8
- package/dist/types/index.js.map +1 -1
- package/dist/types/message.d.ts +0 -32
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js +0 -4
- package/dist/types/message.js.map +1 -1
- package/dist/types/state.d.ts +0 -28
- package/dist/types/state.d.ts.map +1 -1
- package/dist/types/state.js +6 -37
- package/dist/types/state.js.map +1 -1
- package/dist/types/transaction.d.ts +0 -17
- package/dist/types/transaction.d.ts.map +1 -1
- package/dist/utils/IPFSClient.d.ts +0 -113
- package/dist/utils/IPFSClient.d.ts.map +1 -1
- package/dist/utils/IPFSClient.js +7 -128
- package/dist/utils/IPFSClient.js.map +1 -1
- package/dist/utils/NonceManager.d.ts +1 -234
- package/dist/utils/NonceManager.d.ts.map +1 -1
- package/dist/utils/NonceManager.js +7 -372
- package/dist/utils/NonceManager.js.map +1 -1
- package/dist/utils/ReceivedNonceTracker.d.ts +0 -175
- package/dist/utils/ReceivedNonceTracker.d.ts.map +1 -1
- package/dist/utils/ReceivedNonceTracker.js +5 -261
- package/dist/utils/ReceivedNonceTracker.js.map +1 -1
- package/dist/utils/canonicalJson.d.ts +0 -22
- package/dist/utils/canonicalJson.d.ts.map +1 -1
- package/dist/utils/canonicalJson.js +3 -26
- package/dist/utils/canonicalJson.js.map +1 -1
- package/dist/utils/computeTypeHash.d.ts +0 -14
- package/dist/utils/computeTypeHash.d.ts.map +1 -1
- package/dist/utils/computeTypeHash.js +2 -19
- package/dist/utils/computeTypeHash.js.map +1 -1
- package/dist/utils/validation.d.ts +0 -40
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +7 -184
- package/dist/utils/validation.js.map +1 -1
- package/package.json +37 -54
- package/src/ACTPClient.ts +178 -692
- package/src/__tests__/ProofGenerator.test.ts +124 -0
- package/src/__tests__/QuoteBuilder.test.ts +516 -0
- package/src/__tests__/StateMachine.test.ts +82 -0
- package/src/__tests__/builders/DeliveryProofBuilder.test.ts +581 -0
- package/src/__tests__/integration/ACTPClient.test.ts +263 -0
- package/src/__tests__/integration.test.ts +289 -0
- package/src/__tests__/protocol/EASHelper.test.ts +472 -0
- package/src/__tests__/protocol/EventMonitor.test.ts +382 -0
- package/src/__tests__/security/ACTPKernel.security.test.ts +1167 -0
- package/src/__tests__/security/EscrowVault.security.test.ts +570 -0
- package/src/__tests__/security/MessageSigner.security.test.ts +286 -0
- package/src/__tests__/security/NonceReplay.security.test.ts +501 -0
- package/src/__tests__/security/validation.security.test.ts +376 -0
- package/src/__tests__/utils/IPFSClient.test.ts +262 -0
- package/src/__tests__/utils/NonceManager.test.ts +205 -0
- package/src/__tests__/utils/canonicalJson.test.ts +153 -0
- package/src/abi/EscrowVault.json +38 -106
- package/src/builders/DeliveryProofBuilder.ts +2 -3
- package/src/config/networks.ts +9 -32
- package/src/errors/index.ts +1 -298
- package/src/index.ts +71 -207
- package/src/protocol/ACTPKernel.ts +23 -175
- package/src/protocol/EASHelper.ts +46 -230
- package/src/protocol/EscrowVault.ts +50 -68
- package/src/protocol/EventMonitor.ts +15 -44
- package/src/protocol/MessageSigner.ts +13 -193
- package/src/protocol/ProofGenerator.ts +4 -223
- package/src/types/escrow.ts +11 -12
- package/src/types/index.ts +1 -5
- package/src/types/state.ts +3 -12
- package/src/types/transaction.ts +1 -4
- package/src/utils/IPFSClient.ts +5 -122
- package/src/utils/NonceManager.ts +8 -305
- package/src/utils/ReceivedNonceTracker.ts +0 -170
- package/src/utils/validation.ts +0 -164
- package/LICENSE +0 -190
- package/bin/actp +0 -10
- package/dist/abi/AgentRegistry.json +0 -782
- package/dist/abi/IdentityRegistry.json +0 -316
- package/dist/adapters/BaseAdapter.d.ts +0 -231
- package/dist/adapters/BaseAdapter.d.ts.map +0 -1
- package/dist/adapters/BaseAdapter.js +0 -393
- package/dist/adapters/BaseAdapter.js.map +0 -1
- package/dist/adapters/BeginnerAdapter.d.ts +0 -152
- package/dist/adapters/BeginnerAdapter.d.ts.map +0 -1
- package/dist/adapters/BeginnerAdapter.js +0 -168
- package/dist/adapters/BeginnerAdapter.js.map +0 -1
- package/dist/adapters/IntermediateAdapter.d.ts +0 -211
- package/dist/adapters/IntermediateAdapter.d.ts.map +0 -1
- package/dist/adapters/IntermediateAdapter.js +0 -260
- package/dist/adapters/IntermediateAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -15
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -26
- package/dist/adapters/index.js.map +0 -1
- package/dist/cli/commands/balance.d.ts +0 -13
- package/dist/cli/commands/balance.d.ts.map +0 -1
- package/dist/cli/commands/balance.js +0 -89
- package/dist/cli/commands/balance.js.map +0 -1
- package/dist/cli/commands/batch.d.ts +0 -24
- package/dist/cli/commands/batch.d.ts.map +0 -1
- package/dist/cli/commands/batch.js +0 -424
- package/dist/cli/commands/batch.js.map +0 -1
- package/dist/cli/commands/config.d.ts +0 -13
- package/dist/cli/commands/config.d.ts.map +0 -1
- package/dist/cli/commands/config.js +0 -192
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -19
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -143
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/mint.d.ts +0 -13
- package/dist/cli/commands/mint.d.ts.map +0 -1
- package/dist/cli/commands/mint.js +0 -91
- package/dist/cli/commands/mint.js.map +0 -1
- package/dist/cli/commands/pay.d.ts +0 -18
- package/dist/cli/commands/pay.d.ts.map +0 -1
- package/dist/cli/commands/pay.js +0 -87
- package/dist/cli/commands/pay.js.map +0 -1
- package/dist/cli/commands/simulate.d.ts +0 -32
- package/dist/cli/commands/simulate.d.ts.map +0 -1
- package/dist/cli/commands/simulate.js +0 -290
- package/dist/cli/commands/simulate.js.map +0 -1
- package/dist/cli/commands/time.d.ts +0 -29
- package/dist/cli/commands/time.d.ts.map +0 -1
- package/dist/cli/commands/time.js +0 -252
- package/dist/cli/commands/time.js.map +0 -1
- package/dist/cli/commands/tx.d.ts +0 -16
- package/dist/cli/commands/tx.d.ts.map +0 -1
- package/dist/cli/commands/tx.js +0 -379
- package/dist/cli/commands/tx.js.map +0 -1
- package/dist/cli/commands/watch.d.ts +0 -20
- package/dist/cli/commands/watch.d.ts.map +0 -1
- package/dist/cli/commands/watch.js +0 -160
- package/dist/cli/commands/watch.js.map +0 -1
- package/dist/cli/index.d.ts +0 -17
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -104
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/utils/client.d.ts +0 -70
- package/dist/cli/utils/client.d.ts.map +0 -1
- package/dist/cli/utils/client.js +0 -240
- package/dist/cli/utils/client.js.map +0 -1
- package/dist/cli/utils/config.d.ts +0 -91
- package/dist/cli/utils/config.d.ts.map +0 -1
- package/dist/cli/utils/config.js +0 -240
- package/dist/cli/utils/config.js.map +0 -1
- package/dist/cli/utils/output.d.ts +0 -174
- package/dist/cli/utils/output.d.ts.map +0 -1
- package/dist/cli/utils/output.js +0 -380
- package/dist/cli/utils/output.js.map +0 -1
- package/dist/level0/Provider.d.ts +0 -106
- package/dist/level0/Provider.d.ts.map +0 -1
- package/dist/level0/Provider.js +0 -10
- package/dist/level0/Provider.js.map +0 -1
- package/dist/level0/ServiceDirectory.d.ts +0 -74
- package/dist/level0/ServiceDirectory.d.ts.map +0 -1
- package/dist/level0/ServiceDirectory.js +0 -122
- package/dist/level0/ServiceDirectory.js.map +0 -1
- package/dist/level0/index.d.ts +0 -10
- package/dist/level0/index.d.ts.map +0 -1
- package/dist/level0/index.js +0 -15
- package/dist/level0/index.js.map +0 -1
- package/dist/level0/provide.d.ts +0 -51
- package/dist/level0/provide.d.ts.map +0 -1
- package/dist/level0/provide.js +0 -113
- package/dist/level0/provide.js.map +0 -1
- package/dist/level0/request.d.ts +0 -53
- package/dist/level0/request.d.ts.map +0 -1
- package/dist/level0/request.js +0 -462
- package/dist/level0/request.js.map +0 -1
- package/dist/level1/Agent.d.ts +0 -472
- package/dist/level1/Agent.d.ts.map +0 -1
- package/dist/level1/Agent.js +0 -1091
- package/dist/level1/Agent.js.map +0 -1
- package/dist/level1/index.d.ts +0 -10
- package/dist/level1/index.d.ts.map +0 -1
- package/dist/level1/index.js +0 -30
- package/dist/level1/index.js.map +0 -1
- package/dist/level1/pricing/PriceCalculator.d.ts +0 -62
- package/dist/level1/pricing/PriceCalculator.d.ts.map +0 -1
- package/dist/level1/pricing/PriceCalculator.js +0 -237
- package/dist/level1/pricing/PriceCalculator.js.map +0 -1
- package/dist/level1/pricing/PricingStrategy.d.ts +0 -179
- package/dist/level1/pricing/PricingStrategy.d.ts.map +0 -1
- package/dist/level1/pricing/PricingStrategy.js +0 -11
- package/dist/level1/pricing/PricingStrategy.js.map +0 -1
- package/dist/level1/types/Job.d.ts +0 -166
- package/dist/level1/types/Job.d.ts.map +0 -1
- package/dist/level1/types/Job.js +0 -11
- package/dist/level1/types/Job.js.map +0 -1
- package/dist/level1/types/Options.d.ts +0 -258
- package/dist/level1/types/Options.d.ts.map +0 -1
- package/dist/level1/types/Options.js +0 -8
- package/dist/level1/types/Options.js.map +0 -1
- package/dist/level1/types/index.d.ts +0 -8
- package/dist/level1/types/index.d.ts.map +0 -1
- package/dist/level1/types/index.js +0 -8
- package/dist/level1/types/index.js.map +0 -1
- package/dist/protocol/AgentRegistry.d.ts +0 -177
- package/dist/protocol/AgentRegistry.d.ts.map +0 -1
- package/dist/protocol/AgentRegistry.js +0 -449
- package/dist/protocol/AgentRegistry.js.map +0 -1
- package/dist/protocol/DIDManager.d.ts +0 -289
- package/dist/protocol/DIDManager.d.ts.map +0 -1
- package/dist/protocol/DIDManager.js +0 -481
- package/dist/protocol/DIDManager.js.map +0 -1
- package/dist/protocol/DIDResolver.d.ts +0 -236
- package/dist/protocol/DIDResolver.d.ts.map +0 -1
- package/dist/protocol/DIDResolver.js +0 -495
- package/dist/protocol/DIDResolver.js.map +0 -1
- package/dist/runtime/BlockchainRuntime.d.ts +0 -360
- package/dist/runtime/BlockchainRuntime.d.ts.map +0 -1
- package/dist/runtime/BlockchainRuntime.js +0 -767
- package/dist/runtime/BlockchainRuntime.js.map +0 -1
- package/dist/runtime/IACTPRuntime.d.ts +0 -271
- package/dist/runtime/IACTPRuntime.d.ts.map +0 -1
- package/dist/runtime/IACTPRuntime.js +0 -15
- package/dist/runtime/IACTPRuntime.js.map +0 -1
- package/dist/runtime/MockRuntime.d.ts +0 -445
- package/dist/runtime/MockRuntime.d.ts.map +0 -1
- package/dist/runtime/MockRuntime.js +0 -1065
- package/dist/runtime/MockRuntime.js.map +0 -1
- package/dist/runtime/MockStateManager.d.ts +0 -233
- package/dist/runtime/MockStateManager.d.ts.map +0 -1
- package/dist/runtime/MockStateManager.js +0 -533
- package/dist/runtime/MockStateManager.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -14
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -42
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/types/MockState.d.ts +0 -167
- package/dist/runtime/types/MockState.d.ts.map +0 -1
- package/dist/runtime/types/MockState.js +0 -43
- package/dist/runtime/types/MockState.js.map +0 -1
- package/dist/types/agent.d.ts +0 -76
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js +0 -8
- package/dist/types/agent.js.map +0 -1
- package/dist/types/did.d.ts +0 -192
- package/dist/types/did.d.ts.map +0 -1
- package/dist/types/did.js +0 -38
- package/dist/types/did.js.map +0 -1
- package/dist/utils/ErrorRecoveryGuide.d.ts +0 -125
- package/dist/utils/ErrorRecoveryGuide.d.ts.map +0 -1
- package/dist/utils/ErrorRecoveryGuide.js +0 -579
- package/dist/utils/ErrorRecoveryGuide.js.map +0 -1
- package/dist/utils/Helpers.d.ts +0 -453
- package/dist/utils/Helpers.d.ts.map +0 -1
- package/dist/utils/Helpers.js +0 -623
- package/dist/utils/Helpers.js.map +0 -1
- package/dist/utils/Logger.d.ts +0 -195
- package/dist/utils/Logger.d.ts.map +0 -1
- package/dist/utils/Logger.js +0 -382
- package/dist/utils/Logger.js.map +0 -1
- package/dist/utils/RateLimiter.d.ts +0 -253
- package/dist/utils/RateLimiter.d.ts.map +0 -1
- package/dist/utils/RateLimiter.js +0 -424
- package/dist/utils/RateLimiter.js.map +0 -1
- package/dist/utils/SDKLifecycle.d.ts +0 -156
- package/dist/utils/SDKLifecycle.d.ts.map +0 -1
- package/dist/utils/SDKLifecycle.js +0 -347
- package/dist/utils/SDKLifecycle.js.map +0 -1
- package/dist/utils/SecureNonce.d.ts +0 -57
- package/dist/utils/SecureNonce.d.ts.map +0 -1
- package/dist/utils/SecureNonce.js +0 -80
- package/dist/utils/SecureNonce.js.map +0 -1
- package/dist/utils/Semaphore.d.ts +0 -123
- package/dist/utils/Semaphore.d.ts.map +0 -1
- package/dist/utils/Semaphore.js +0 -247
- package/dist/utils/Semaphore.js.map +0 -1
- package/dist/utils/UsedAttestationTracker.d.ts +0 -167
- package/dist/utils/UsedAttestationTracker.d.ts.map +0 -1
- package/dist/utils/UsedAttestationTracker.js +0 -309
- package/dist/utils/UsedAttestationTracker.js.map +0 -1
- package/dist/utils/fsSafe.d.ts +0 -14
- package/dist/utils/fsSafe.d.ts.map +0 -1
- package/dist/utils/fsSafe.js +0 -89
- package/dist/utils/fsSafe.js.map +0 -1
- package/dist/utils/index.d.ts +0 -15
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -51
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/security.d.ts +0 -147
- package/dist/utils/security.d.ts.map +0 -1
- package/dist/utils/security.js +0 -391
- package/dist/utils/security.js.map +0 -1
- package/src/abi/AgentRegistry.json +0 -782
- package/src/abi/IdentityRegistry.json +0 -316
- package/src/adapters/BaseAdapter.ts +0 -473
- package/src/adapters/BeginnerAdapter.ts +0 -232
- package/src/adapters/IntermediateAdapter.ts +0 -316
- package/src/adapters/index.ts +0 -25
- package/src/cli/commands/balance.ts +0 -110
- package/src/cli/commands/batch.ts +0 -487
- package/src/cli/commands/config.ts +0 -231
- package/src/cli/commands/init.ts +0 -161
- package/src/cli/commands/mint.ts +0 -116
- package/src/cli/commands/pay.ts +0 -113
- package/src/cli/commands/simulate.ts +0 -345
- package/src/cli/commands/time.ts +0 -303
- package/src/cli/commands/tx.ts +0 -448
- package/src/cli/commands/watch.ts +0 -211
- package/src/cli/index.ts +0 -116
- package/src/cli/utils/client.ts +0 -249
- package/src/cli/utils/config.ts +0 -282
- package/src/cli/utils/output.ts +0 -465
- package/src/level0/Provider.ts +0 -117
- package/src/level0/ServiceDirectory.ts +0 -131
- package/src/level0/index.ts +0 -10
- package/src/level0/provide.ts +0 -131
- package/src/level0/request.ts +0 -494
- package/src/level1/Agent.ts +0 -1432
- package/src/level1/index.ts +0 -10
- package/src/level1/pricing/PriceCalculator.ts +0 -255
- package/src/level1/pricing/PricingStrategy.ts +0 -198
- package/src/level1/types/Job.ts +0 -179
- package/src/level1/types/Options.ts +0 -291
- package/src/level1/types/index.ts +0 -8
- package/src/protocol/AgentRegistry.ts +0 -559
- package/src/protocol/DIDManager.ts +0 -629
- package/src/protocol/DIDResolver.ts +0 -554
- package/src/runtime/BlockchainRuntime.ts +0 -993
- package/src/runtime/IACTPRuntime.ts +0 -284
- package/src/runtime/MockRuntime.ts +0 -1244
- package/src/runtime/MockStateManager.ts +0 -576
- package/src/runtime/index.ts +0 -25
- package/src/runtime/types/MockState.ts +0 -227
- package/src/types/agent.ts +0 -79
- package/src/types/did.ts +0 -223
- package/src/utils/ErrorRecoveryGuide.ts +0 -675
- package/src/utils/Helpers.ts +0 -688
- package/src/utils/Logger.ts +0 -484
- package/src/utils/RateLimiter.ts +0 -534
- package/src/utils/SDKLifecycle.ts +0 -416
- package/src/utils/SecureNonce.ts +0 -78
- package/src/utils/Semaphore.ts +0 -276
- package/src/utils/UsedAttestationTracker.ts +0 -387
- package/src/utils/fsSafe.ts +0 -75
- package/src/utils/index.ts +0 -80
- package/src/utils/security.ts +0 -418
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"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"}
|
package/dist/types/message.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":""}
|
package/dist/types/state.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ACTP State Machine
|
|
3
|
-
* Reference: Yellow Paper §3.2
|
|
4
|
-
*/
|
|
5
1
|
export declare enum State {
|
|
6
2
|
INITIATED = 0,
|
|
7
3
|
QUOTED = 1,
|
|
@@ -13,35 +9,11 @@ export declare enum State {
|
|
|
13
9
|
CANCELLED = 7
|
|
14
10
|
}
|
|
15
11
|
export declare class StateMachine {
|
|
16
|
-
/**
|
|
17
|
-
* Valid state transitions per Yellow Paper §3.2.2
|
|
18
|
-
*
|
|
19
|
-
* SECURITY FIX (CRITICAL-1): State machine must match ACTPKernel contract exactly
|
|
20
|
-
* Per CLAUDE.md §Architecture Overview - ACTP Protocol State Machine:
|
|
21
|
-
* - COMMITTED can transition to IN_PROGRESS, DELIVERED, or CANCELLED
|
|
22
|
-
* - IN_PROGRESS can transition to DELIVERED or CANCELLED (not DISPUTED)
|
|
23
|
-
* - DISPUTED can only transition to SETTLED (not CANCELLED)
|
|
24
|
-
*/
|
|
25
12
|
private static readonly TRANSITIONS;
|
|
26
|
-
/**
|
|
27
|
-
* Check if state transition is valid
|
|
28
|
-
*/
|
|
29
13
|
static isValidTransition(from: State, to: State): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Check if state is terminal (no further transitions)
|
|
32
|
-
*/
|
|
33
14
|
static isTerminalState(state: State): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Get human-readable state name
|
|
36
|
-
*/
|
|
37
15
|
static getStateName(state: State): string;
|
|
38
|
-
/**
|
|
39
|
-
* Get all valid next states from current state
|
|
40
|
-
*/
|
|
41
16
|
static getNextValidStates(currentState: State): State[];
|
|
42
|
-
/**
|
|
43
|
-
* Validate state transition or throw error
|
|
44
|
-
*/
|
|
45
17
|
static validateTransition(from: State, to: State): void;
|
|
46
18
|
}
|
|
47
19
|
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":"AAKA,oBAAY,KAAK;IACf,SAAS,IAAI;IACb,MAAM,IAAI;IACV,SAAS,IAAI;IACb,WAAW,IAAI;IACf,SAAS,IAAI;IACb,OAAO,IAAI;IACX,QAAQ,IAAI;IACZ,SAAS,IAAI;CACd;AAED,qBAAa,YAAY;IAIvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CASjC;IAKF,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO;IAOzD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAO7C,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAOzC,MAAM,CAAC,kBAAkB,CAAC,YAAY,EAAE,KAAK,GAAG,KAAK,EAAE;IAOvD,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,IAAI;CAYxD"}
|
package/dist/types/state.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* ACTP State Machine
|
|
4
|
-
* Reference: Yellow Paper §3.2
|
|
5
|
-
*/
|
|
6
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
3
|
exports.StateMachine = exports.State = void 0;
|
|
8
4
|
var State;
|
|
@@ -17,33 +13,18 @@ var State;
|
|
|
17
13
|
State[State["CANCELLED"] = 7] = "CANCELLED";
|
|
18
14
|
})(State || (exports.State = State = {}));
|
|
19
15
|
class StateMachine {
|
|
20
|
-
/**
|
|
21
|
-
* Check if state transition is valid
|
|
22
|
-
*/
|
|
23
16
|
static isValidTransition(from, to) {
|
|
24
17
|
return this.TRANSITIONS[from]?.includes(to) ?? false;
|
|
25
18
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Check if state is terminal (no further transitions)
|
|
28
|
-
*/
|
|
29
19
|
static isTerminalState(state) {
|
|
30
20
|
return state === State.SETTLED || state === State.CANCELLED;
|
|
31
21
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Get human-readable state name
|
|
34
|
-
*/
|
|
35
22
|
static getStateName(state) {
|
|
36
23
|
return State[state];
|
|
37
24
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Get all valid next states from current state
|
|
40
|
-
*/
|
|
41
25
|
static getNextValidStates(currentState) {
|
|
42
26
|
return this.TRANSITIONS[currentState] || [];
|
|
43
27
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Validate state transition or throw error
|
|
46
|
-
*/
|
|
47
28
|
static validateTransition(from, to) {
|
|
48
29
|
if (!this.isValidTransition(from, to)) {
|
|
49
30
|
const validStates = this.getNextValidStates(from)
|
|
@@ -55,26 +36,14 @@ class StateMachine {
|
|
|
55
36
|
}
|
|
56
37
|
}
|
|
57
38
|
exports.StateMachine = StateMachine;
|
|
58
|
-
/**
|
|
59
|
-
* Valid state transitions per Yellow Paper §3.2.2
|
|
60
|
-
*
|
|
61
|
-
* SECURITY FIX (CRITICAL-1): State machine must match ACTPKernel contract exactly
|
|
62
|
-
* Per CLAUDE.md §Architecture Overview - ACTP Protocol State Machine:
|
|
63
|
-
* - COMMITTED can transition to IN_PROGRESS, DELIVERED, or CANCELLED
|
|
64
|
-
* - IN_PROGRESS can transition to DELIVERED or CANCELLED (not DISPUTED)
|
|
65
|
-
* - DISPUTED can only transition to SETTLED (not CANCELLED)
|
|
66
|
-
*/
|
|
67
39
|
StateMachine.TRANSITIONS = {
|
|
68
|
-
[State.INITIATED]: [State.QUOTED, State.COMMITTED, State.CANCELLED],
|
|
40
|
+
[State.INITIATED]: [State.QUOTED, State.COMMITTED, State.CANCELLED],
|
|
69
41
|
[State.QUOTED]: [State.COMMITTED, State.CANCELLED],
|
|
70
|
-
|
|
71
|
-
[State.
|
|
72
|
-
// SECURITY FIX (CRITICAL-1): Remove DISPUTED, add CANCELLED
|
|
73
|
-
[State.IN_PROGRESS]: [State.DELIVERED, State.CANCELLED],
|
|
42
|
+
[State.COMMITTED]: [State.IN_PROGRESS, State.CANCELLED],
|
|
43
|
+
[State.IN_PROGRESS]: [State.DELIVERED, State.DISPUTED],
|
|
74
44
|
[State.DELIVERED]: [State.SETTLED, State.DISPUTED],
|
|
75
|
-
|
|
76
|
-
[State.
|
|
77
|
-
[State.
|
|
78
|
-
[State.CANCELLED]: [] // Terminal state
|
|
45
|
+
[State.DISPUTED]: [State.SETTLED, State.CANCELLED],
|
|
46
|
+
[State.SETTLED]: [],
|
|
47
|
+
[State.CANCELLED]: []
|
|
79
48
|
};
|
|
80
49
|
//# sourceMappingURL=state.js.map
|
package/dist/types/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":";;;AAKA,IAAY,KASX;AATD,WAAY,KAAK;IACf,2CAAa,CAAA;IACb,qCAAU,CAAA;IACV,2CAAa,CAAA;IACb,+CAAe,CAAA;IACf,2CAAa,CAAA;IACb,uCAAW,CAAA;IACX,yCAAY,CAAA;IACZ,2CAAa,CAAA;AACf,CAAC,EATW,KAAK,qBAAL,KAAK,QAShB;AAED,MAAa,YAAY;IAkBvB,MAAM,CAAC,iBAAiB,CAAC,IAAW,EAAE,EAAS;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;IACvD,CAAC;IAKD,MAAM,CAAC,eAAe,CAAC,KAAY;QACjC,OAAO,KAAK,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;IAC9D,CAAC;IAKD,MAAM,CAAC,YAAY,CAAC,KAAY;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAKD,MAAM,CAAC,kBAAkB,CAAC,YAAmB;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAKD,MAAM,CAAC,kBAAkB,CAAC,IAAW,EAAE,EAAS;QAC9C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;iBAC9C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClB,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,MAAM,IAAI,KAAK,CACb,6BAA6B,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI;gBAC3D,0BAA0B,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,IAAI,uBAAuB,EAAE,CACnF,CAAC;QACJ,CAAC;IACH,CAAC;;AAzDH,oCA0DC;AAtDyB,wBAAW,GAA2B;IAC5D,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IACnE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAClD,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IACvD,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC;IACtD,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IAClD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IAClD,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;IACnB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE;CACtB,CAAC"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { State } from './state';
|
|
2
|
-
/**
|
|
3
|
-
* ACTP Transaction
|
|
4
|
-
* Reference: Yellow Paper §3.1
|
|
5
|
-
*/
|
|
6
2
|
export interface Transaction {
|
|
7
3
|
txId: string;
|
|
8
4
|
requester: string;
|
|
@@ -10,19 +6,12 @@ export interface Transaction {
|
|
|
10
6
|
amount: bigint;
|
|
11
7
|
state: State;
|
|
12
8
|
createdAt: number;
|
|
13
|
-
updatedAt: number;
|
|
14
9
|
deadline: number;
|
|
15
10
|
disputeWindow: number;
|
|
16
11
|
escrowContract: string;
|
|
17
12
|
escrowId: string;
|
|
18
|
-
serviceHash: string;
|
|
19
|
-
attestationUID: string;
|
|
20
13
|
metadata: string;
|
|
21
|
-
platformFeeBpsLocked: number;
|
|
22
14
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Parameters for creating a new transaction
|
|
25
|
-
*/
|
|
26
15
|
export interface CreateTransactionParams {
|
|
27
16
|
provider: string;
|
|
28
17
|
requester: string;
|
|
@@ -31,18 +20,12 @@ export interface CreateTransactionParams {
|
|
|
31
20
|
disputeWindow: number;
|
|
32
21
|
metadata?: string;
|
|
33
22
|
}
|
|
34
|
-
/**
|
|
35
|
-
* Dispute resolution split
|
|
36
|
-
*/
|
|
37
23
|
export interface DisputeResolution {
|
|
38
24
|
requesterAmount: bigint;
|
|
39
25
|
providerAmount: bigint;
|
|
40
26
|
mediatorAmount: bigint;
|
|
41
27
|
mediator?: string;
|
|
42
28
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Economic parameters (fee structure)
|
|
45
|
-
*/
|
|
46
29
|
export interface EconomicParams {
|
|
47
30
|
baseFeeNumerator: number;
|
|
48
31
|
baseFeeDenominator: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/types/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/types/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAMhC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -1,75 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IPFS Client Implementation
|
|
3
|
-
* Wrapper around kubo-rpc-client (formerly ipfs-http-client) for AIP-4 delivery proof uploads
|
|
4
|
-
*/
|
|
5
|
-
/// <reference types="node" />
|
|
6
|
-
/**
|
|
7
|
-
* IPFS Client Interface (from DeliveryProofBuilder)
|
|
8
|
-
*/
|
|
9
1
|
export interface IPFSClient {
|
|
10
|
-
/**
|
|
11
|
-
* Upload data to IPFS
|
|
12
|
-
* @param data - JSON string or buffer
|
|
13
|
-
* @returns CIDv1 string (base32, e.g., "bafybeig...")
|
|
14
|
-
*/
|
|
15
2
|
add(data: string | Buffer): Promise<string>;
|
|
16
|
-
/**
|
|
17
|
-
* Pin content to prevent garbage collection
|
|
18
|
-
* @param cid - IPFS CID
|
|
19
|
-
*/
|
|
20
3
|
pin(cid: string): Promise<void>;
|
|
21
|
-
/**
|
|
22
|
-
* Retrieve content from IPFS
|
|
23
|
-
* @param cid - IPFS CID
|
|
24
|
-
* @returns Content as string
|
|
25
|
-
*/
|
|
26
4
|
get(cid: string): Promise<string>;
|
|
27
5
|
}
|
|
28
|
-
/**
|
|
29
|
-
* IPFS Client Configuration
|
|
30
|
-
*/
|
|
31
6
|
export interface IPFSClientConfig {
|
|
32
|
-
/**
|
|
33
|
-
* IPFS HTTP API endpoint
|
|
34
|
-
* Default: http://localhost:5001 (local IPFS daemon)
|
|
35
|
-
* Production: https://ipfs.infura.io:5001/api/v0 (Infura)
|
|
36
|
-
*/
|
|
37
7
|
url?: string;
|
|
38
|
-
/**
|
|
39
|
-
* API authentication (for Infura, Pinata, etc.)
|
|
40
|
-
*/
|
|
41
8
|
auth?: {
|
|
42
9
|
username: string;
|
|
43
10
|
password: string;
|
|
44
11
|
};
|
|
45
|
-
/**
|
|
46
|
-
* HTTP headers (for API keys)
|
|
47
|
-
*/
|
|
48
12
|
headers?: Record<string, string>;
|
|
49
|
-
/**
|
|
50
|
-
* Request timeout (ms)
|
|
51
|
-
* Default: 60000 (60 seconds)
|
|
52
|
-
*/
|
|
53
13
|
timeout?: number;
|
|
54
|
-
/**
|
|
55
|
-
* SECURITY FIX (MEDIUM-3): Maximum content size in bytes
|
|
56
|
-
* Default: 50MB (50 * 1024 * 1024)
|
|
57
|
-
*/
|
|
58
|
-
maxSize?: number;
|
|
59
|
-
/**
|
|
60
|
-
* SECURITY FIX (MEDIUM-3): Allowed URL protocols
|
|
61
|
-
* Default: ['http:', 'https:'] (http for localhost, https for remote)
|
|
62
|
-
*/
|
|
63
|
-
allowedProtocols?: string[];
|
|
64
|
-
/**
|
|
65
|
-
* SECURITY FIX (MEDIUM-3): Allow localhost URLs
|
|
66
|
-
* Default: true (required for local IPFS daemon)
|
|
67
|
-
*/
|
|
68
|
-
allowLocalhost?: boolean;
|
|
69
14
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Default IPFS configurations
|
|
72
|
-
*/
|
|
73
15
|
export declare const IPFS_CONFIGS: {
|
|
74
16
|
local: {
|
|
75
17
|
url: string;
|
|
@@ -81,70 +23,15 @@ export declare const IPFS_CONFIGS: {
|
|
|
81
23
|
url: string;
|
|
82
24
|
};
|
|
83
25
|
};
|
|
84
|
-
/**
|
|
85
|
-
* IPFS HTTP Client Implementation
|
|
86
|
-
* Uses ipfs-http-client library
|
|
87
|
-
*
|
|
88
|
-
* SECURITY FIX (MEDIUM-3): Now includes URL and size validation
|
|
89
|
-
*/
|
|
90
26
|
export declare class IPFSHTTPClientImpl implements IPFSClient {
|
|
91
27
|
private client;
|
|
92
28
|
private config;
|
|
93
|
-
private static readonly DEFAULT_MAX_SIZE;
|
|
94
|
-
private static readonly DEFAULT_ALLOWED_PROTOCOLS;
|
|
95
|
-
private static readonly BLOCKED_HOSTS;
|
|
96
|
-
/**
|
|
97
|
-
* Create IPFS client
|
|
98
|
-
*
|
|
99
|
-
* SECURITY FIX (MEDIUM-3): Validates URL and adds size limits
|
|
100
|
-
*
|
|
101
|
-
* @param config - IPFS client configuration
|
|
102
|
-
* @throws Error if URL is invalid or blocked
|
|
103
|
-
*/
|
|
104
29
|
constructor(config?: IPFSClientConfig);
|
|
105
|
-
/**
|
|
106
|
-
* SECURITY FIX (MEDIUM-3): Validate IPFS endpoint URL
|
|
107
|
-
*/
|
|
108
|
-
private validateUrl;
|
|
109
|
-
/**
|
|
110
|
-
* Upload data to IPFS
|
|
111
|
-
*
|
|
112
|
-
* SECURITY FIX (MEDIUM-3): Validates size before upload
|
|
113
|
-
*
|
|
114
|
-
* @param data - JSON string or buffer
|
|
115
|
-
* @returns CIDv1 string (base32)
|
|
116
|
-
* @throws Error if data exceeds maxSize
|
|
117
|
-
*/
|
|
118
30
|
add(data: string | Buffer): Promise<string>;
|
|
119
|
-
/**
|
|
120
|
-
* Pin content to prevent garbage collection
|
|
121
|
-
* @param cid - IPFS CID
|
|
122
|
-
*/
|
|
123
31
|
pin(cid: string): Promise<void>;
|
|
124
|
-
/**
|
|
125
|
-
* Retrieve content from IPFS
|
|
126
|
-
*
|
|
127
|
-
* SECURITY FIX (MEDIUM-3): Validates size during retrieval
|
|
128
|
-
*
|
|
129
|
-
* @param cid - IPFS CID
|
|
130
|
-
* @returns Content as string
|
|
131
|
-
* @throws Error if content exceeds maxSize
|
|
132
|
-
*/
|
|
133
32
|
get(cid: string): Promise<string>;
|
|
134
|
-
/**
|
|
135
|
-
* Check if IPFS daemon is reachable
|
|
136
|
-
* @returns true if connected, false otherwise
|
|
137
|
-
*/
|
|
138
33
|
isOnline(): Promise<boolean>;
|
|
139
|
-
/**
|
|
140
|
-
* Get IPFS node ID
|
|
141
|
-
* @returns IPFS node ID
|
|
142
|
-
*/
|
|
143
34
|
getNodeId(): Promise<string>;
|
|
144
35
|
}
|
|
145
|
-
/**
|
|
146
|
-
* Create IPFS client with environment-based configuration
|
|
147
|
-
* Checks for IPFS_URL, INFURA_PROJECT_ID, PINATA_API_KEY env vars
|
|
148
|
-
*/
|
|
149
36
|
export declare function createIPFSClient(): IPFSClient;
|
|
150
37
|
//# sourceMappingURL=IPFSClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IPFSClient.d.ts","sourceRoot":"","sources":["../../src/utils/IPFSClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IPFSClient.d.ts","sourceRoot":"","sources":["../../src/utils/IPFSClient.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,UAAU;IAMzB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAM5C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAOhC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC;AAKD,MAAM,WAAW,gBAAgB;IAM/B,GAAG,CAAC,EAAE,MAAM,CAAC;IAKb,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAKF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAMjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,eAAO,MAAM,YAAY;;;;;;;;;;CAYxB,CAAC;AAMF,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAmB;gBAMrB,MAAM,GAAE,gBAAqB;IAgCnC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB3C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BjC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAa5B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;CAQnC;AAMD,wBAAgB,gBAAgB,IAAI,UAAU,CAkC7C"}
|
package/dist/utils/IPFSClient.js
CHANGED
|
@@ -1,60 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* IPFS Client Implementation
|
|
4
|
-
* Wrapper around kubo-rpc-client (formerly ipfs-http-client) for AIP-4 delivery proof uploads
|
|
5
|
-
*/
|
|
6
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
3
|
+
exports.IPFSHTTPClientImpl = exports.IPFS_CONFIGS = void 0;
|
|
4
|
+
exports.createIPFSClient = createIPFSClient;
|
|
8
5
|
const kubo_rpc_client_1 = require("kubo-rpc-client");
|
|
9
|
-
/**
|
|
10
|
-
* Default IPFS configurations
|
|
11
|
-
*/
|
|
12
6
|
exports.IPFS_CONFIGS = {
|
|
13
7
|
local: {
|
|
14
8
|
url: 'http://localhost:5001'
|
|
15
9
|
},
|
|
16
10
|
infura: {
|
|
17
11
|
url: 'https://ipfs.infura.io:5001/api/v0'
|
|
18
|
-
// Auth required: Set INFURA_PROJECT_ID and INFURA_PROJECT_SECRET
|
|
19
12
|
},
|
|
20
13
|
pinata: {
|
|
21
14
|
url: 'https://api.pinata.cloud'
|
|
22
|
-
// Headers required: Set pinata_api_key and pinata_secret_api_key
|
|
23
15
|
}
|
|
24
16
|
};
|
|
25
|
-
/**
|
|
26
|
-
* IPFS HTTP Client Implementation
|
|
27
|
-
* Uses ipfs-http-client library
|
|
28
|
-
*
|
|
29
|
-
* SECURITY FIX (MEDIUM-3): Now includes URL and size validation
|
|
30
|
-
*/
|
|
31
17
|
class IPFSHTTPClientImpl {
|
|
32
|
-
/**
|
|
33
|
-
* Create IPFS client
|
|
34
|
-
*
|
|
35
|
-
* SECURITY FIX (MEDIUM-3): Validates URL and adds size limits
|
|
36
|
-
*
|
|
37
|
-
* @param config - IPFS client configuration
|
|
38
|
-
* @throws Error if URL is invalid or blocked
|
|
39
|
-
*/
|
|
40
18
|
constructor(config = {}) {
|
|
41
|
-
const url = config.url || 'http://localhost:5001';
|
|
42
|
-
// SECURITY FIX (MEDIUM-3): Validate URL
|
|
43
|
-
this.validateUrl(url, config.allowLocalhost ?? true, config.allowedProtocols);
|
|
44
19
|
this.config = {
|
|
45
|
-
url,
|
|
20
|
+
url: config.url || 'http://localhost:5001',
|
|
46
21
|
timeout: config.timeout || 60000,
|
|
47
|
-
|
|
48
|
-
allowedProtocols: config.allowedProtocols || IPFSHTTPClientImpl.DEFAULT_ALLOWED_PROTOCOLS,
|
|
49
|
-
allowLocalhost: config.allowLocalhost ?? true,
|
|
50
|
-
auth: config.auth,
|
|
51
|
-
headers: config.headers,
|
|
22
|
+
...config
|
|
52
23
|
};
|
|
53
24
|
const options = {
|
|
54
25
|
url: this.config.url,
|
|
55
26
|
timeout: this.config.timeout
|
|
56
27
|
};
|
|
57
|
-
// Add authentication if provided
|
|
58
28
|
if (this.config.auth) {
|
|
59
29
|
options.headers = {
|
|
60
30
|
...this.config.headers,
|
|
@@ -66,70 +36,20 @@ class IPFSHTTPClientImpl {
|
|
|
66
36
|
}
|
|
67
37
|
this.client = (0, kubo_rpc_client_1.create)(options);
|
|
68
38
|
}
|
|
69
|
-
/**
|
|
70
|
-
* SECURITY FIX (MEDIUM-3): Validate IPFS endpoint URL
|
|
71
|
-
*/
|
|
72
|
-
validateUrl(url, allowLocalhost, allowedProtocols) {
|
|
73
|
-
let parsed;
|
|
74
|
-
try {
|
|
75
|
-
parsed = new URL(url);
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
throw new Error(`Invalid IPFS endpoint URL: ${url}`);
|
|
79
|
-
}
|
|
80
|
-
const protocols = allowedProtocols || IPFSHTTPClientImpl.DEFAULT_ALLOWED_PROTOCOLS;
|
|
81
|
-
if (!protocols.includes(parsed.protocol)) {
|
|
82
|
-
throw new Error(`IPFS endpoint protocol "${parsed.protocol}" not allowed. ` +
|
|
83
|
-
`Allowed protocols: ${protocols.join(', ')}`);
|
|
84
|
-
}
|
|
85
|
-
const hostname = parsed.hostname.toLowerCase();
|
|
86
|
-
// Check blocked hosts (cloud metadata endpoints)
|
|
87
|
-
if (IPFSHTTPClientImpl.BLOCKED_HOSTS.includes(hostname)) {
|
|
88
|
-
throw new Error(`IPFS endpoint hostname "${hostname}" is blocked for security reasons.`);
|
|
89
|
-
}
|
|
90
|
-
// Check localhost
|
|
91
|
-
const isLocalhost = ['localhost', '127.0.0.1', '0.0.0.0', '[::1]'].includes(hostname);
|
|
92
|
-
if (isLocalhost && !allowLocalhost) {
|
|
93
|
-
throw new Error(`Localhost IPFS endpoints are disabled. Set allowLocalhost: true to enable.`);
|
|
94
|
-
}
|
|
95
|
-
// For remote hosts, require HTTPS
|
|
96
|
-
if (!isLocalhost && parsed.protocol !== 'https:') {
|
|
97
|
-
console.warn(`[SECURITY WARNING] Using non-HTTPS protocol "${parsed.protocol}" for remote IPFS endpoint "${hostname}". ` +
|
|
98
|
-
`This may expose data in transit. Consider using HTTPS.`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Upload data to IPFS
|
|
103
|
-
*
|
|
104
|
-
* SECURITY FIX (MEDIUM-3): Validates size before upload
|
|
105
|
-
*
|
|
106
|
-
* @param data - JSON string or buffer
|
|
107
|
-
* @returns CIDv1 string (base32)
|
|
108
|
-
* @throws Error if data exceeds maxSize
|
|
109
|
-
*/
|
|
110
39
|
async add(data) {
|
|
111
40
|
try {
|
|
112
41
|
const content = typeof data === 'string' ? Buffer.from(data, 'utf-8') : data;
|
|
113
|
-
// SECURITY FIX (MEDIUM-3): Check size before upload
|
|
114
|
-
if (content.length > this.config.maxSize) {
|
|
115
|
-
throw new Error(`Content too large: ${content.length} bytes exceeds maximum of ${this.config.maxSize} bytes`);
|
|
116
|
-
}
|
|
117
42
|
const result = await this.client.add(content, {
|
|
118
|
-
cidVersion: 1,
|
|
43
|
+
cidVersion: 1,
|
|
119
44
|
hashAlg: 'sha2-256',
|
|
120
|
-
pin: true
|
|
45
|
+
pin: true
|
|
121
46
|
});
|
|
122
|
-
// Convert CID to base32 string (e.g., "bafybeig...")
|
|
123
47
|
return result.cid.toString();
|
|
124
48
|
}
|
|
125
49
|
catch (error) {
|
|
126
50
|
throw new Error(`IPFS upload failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
127
51
|
}
|
|
128
52
|
}
|
|
129
|
-
/**
|
|
130
|
-
* Pin content to prevent garbage collection
|
|
131
|
-
* @param cid - IPFS CID
|
|
132
|
-
*/
|
|
133
53
|
async pin(cid) {
|
|
134
54
|
try {
|
|
135
55
|
await this.client.pin.add(cid);
|
|
@@ -138,29 +58,13 @@ class IPFSHTTPClientImpl {
|
|
|
138
58
|
throw new Error(`IPFS pin failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
139
59
|
}
|
|
140
60
|
}
|
|
141
|
-
/**
|
|
142
|
-
* Retrieve content from IPFS
|
|
143
|
-
*
|
|
144
|
-
* SECURITY FIX (MEDIUM-3): Validates size during retrieval
|
|
145
|
-
*
|
|
146
|
-
* @param cid - IPFS CID
|
|
147
|
-
* @returns Content as string
|
|
148
|
-
* @throws Error if content exceeds maxSize
|
|
149
|
-
*/
|
|
150
61
|
async get(cid) {
|
|
151
62
|
try {
|
|
152
63
|
const chunks = [];
|
|
153
|
-
let totalLength = 0;
|
|
154
64
|
for await (const chunk of this.client.cat(cid)) {
|
|
155
|
-
totalLength += chunk.length;
|
|
156
|
-
// SECURITY FIX (MEDIUM-3): Check size during streaming to prevent DoS
|
|
157
|
-
if (totalLength > this.config.maxSize) {
|
|
158
|
-
throw new Error(`Content too large: ${totalLength}+ bytes exceeds maximum of ${this.config.maxSize} bytes. ` +
|
|
159
|
-
`Consider increasing maxSize in IPFSClientConfig if this is expected.`);
|
|
160
|
-
}
|
|
161
65
|
chunks.push(chunk);
|
|
162
66
|
}
|
|
163
|
-
|
|
67
|
+
const totalLength = chunks.reduce((acc, chunk) => acc + chunk.length, 0);
|
|
164
68
|
const result = new Uint8Array(totalLength);
|
|
165
69
|
let offset = 0;
|
|
166
70
|
for (const chunk of chunks) {
|
|
@@ -173,10 +77,6 @@ class IPFSHTTPClientImpl {
|
|
|
173
77
|
throw new Error(`IPFS retrieval failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
174
78
|
}
|
|
175
79
|
}
|
|
176
|
-
/**
|
|
177
|
-
* Check if IPFS daemon is reachable
|
|
178
|
-
* @returns true if connected, false otherwise
|
|
179
|
-
*/
|
|
180
80
|
async isOnline() {
|
|
181
81
|
try {
|
|
182
82
|
await this.client.id();
|
|
@@ -186,10 +86,6 @@ class IPFSHTTPClientImpl {
|
|
|
186
86
|
return false;
|
|
187
87
|
}
|
|
188
88
|
}
|
|
189
|
-
/**
|
|
190
|
-
* Get IPFS node ID
|
|
191
|
-
* @returns IPFS node ID
|
|
192
|
-
*/
|
|
193
89
|
async getNodeId() {
|
|
194
90
|
try {
|
|
195
91
|
const id = await this.client.id();
|
|
@@ -201,20 +97,7 @@ class IPFSHTTPClientImpl {
|
|
|
201
97
|
}
|
|
202
98
|
}
|
|
203
99
|
exports.IPFSHTTPClientImpl = IPFSHTTPClientImpl;
|
|
204
|
-
// SECURITY FIX (MEDIUM-3): Default security settings
|
|
205
|
-
IPFSHTTPClientImpl.DEFAULT_MAX_SIZE = 50 * 1024 * 1024; // 50MB
|
|
206
|
-
IPFSHTTPClientImpl.DEFAULT_ALLOWED_PROTOCOLS = ['http:', 'https:'];
|
|
207
|
-
IPFSHTTPClientImpl.BLOCKED_HOSTS = [
|
|
208
|
-
'metadata.google.internal',
|
|
209
|
-
'169.254.169.254',
|
|
210
|
-
'metadata.aws.internal',
|
|
211
|
-
];
|
|
212
|
-
/**
|
|
213
|
-
* Create IPFS client with environment-based configuration
|
|
214
|
-
* Checks for IPFS_URL, INFURA_PROJECT_ID, PINATA_API_KEY env vars
|
|
215
|
-
*/
|
|
216
100
|
function createIPFSClient() {
|
|
217
|
-
// Check for Infura credentials
|
|
218
101
|
if (process.env.INFURA_PROJECT_ID && process.env.INFURA_PROJECT_SECRET) {
|
|
219
102
|
return new IPFSHTTPClientImpl({
|
|
220
103
|
url: 'https://ipfs.infura.io:5001/api/v0',
|
|
@@ -224,7 +107,6 @@ function createIPFSClient() {
|
|
|
224
107
|
}
|
|
225
108
|
});
|
|
226
109
|
}
|
|
227
|
-
// Check for Pinata credentials
|
|
228
110
|
if (process.env.PINATA_API_KEY && process.env.PINATA_SECRET_API_KEY) {
|
|
229
111
|
return new IPFSHTTPClientImpl({
|
|
230
112
|
url: 'https://api.pinata.cloud',
|
|
@@ -234,16 +116,13 @@ function createIPFSClient() {
|
|
|
234
116
|
}
|
|
235
117
|
});
|
|
236
118
|
}
|
|
237
|
-
// Check for custom IPFS URL
|
|
238
119
|
if (process.env.IPFS_URL) {
|
|
239
120
|
return new IPFSHTTPClientImpl({
|
|
240
121
|
url: process.env.IPFS_URL
|
|
241
122
|
});
|
|
242
123
|
}
|
|
243
|
-
// Default to local IPFS daemon
|
|
244
124
|
return new IPFSHTTPClientImpl({
|
|
245
125
|
url: 'http://localhost:5001'
|
|
246
126
|
});
|
|
247
127
|
}
|
|
248
|
-
exports.createIPFSClient = createIPFSClient;
|
|
249
128
|
//# sourceMappingURL=IPFSClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IPFSClient.js","sourceRoot":"","sources":["../../src/utils/IPFSClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IPFSClient.js","sourceRoot":"","sources":["../../src/utils/IPFSClient.ts"],"names":[],"mappings":"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"}
|