@virtuals-protocol/acp-node-v2 0.0.5 → 0.0.7
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 +135 -100
- package/dist/acpAgent.d.ts +67 -1
- package/dist/acpAgent.d.ts.map +1 -1
- package/dist/acpAgent.js +78 -8
- package/dist/acpAgent.js.map +1 -1
- package/dist/acpJob.d.ts +1 -1
- package/dist/acpJob.d.ts.map +1 -1
- package/dist/acpJob.js +16 -2
- package/dist/acpJob.js.map +1 -1
- package/dist/core/constants.d.ts +0 -1
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +0 -1
- package/dist/core/constants.js.map +1 -1
- package/dist/events/types.d.ts +6 -6
- package/dist/events/types.d.ts.map +1 -1
- package/dist/events/types.js +6 -6
- package/dist/events/types.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/jobSession.d.ts.map +1 -1
- package/dist/jobSession.js +20 -5
- package/dist/jobSession.js.map +1 -1
- package/dist/providers/evm/privyAlchemyEvmProviderAdapter.d.ts +1 -0
- package/dist/providers/evm/privyAlchemyEvmProviderAdapter.d.ts.map +1 -1
- package/dist/providers/evm/privyAlchemyEvmProviderAdapter.js +49 -11
- package/dist/providers/evm/privyAlchemyEvmProviderAdapter.js.map +1 -1
- package/dist/providers/evm/viemProviderAdapter.d.ts +1 -0
- package/dist/providers/evm/viemProviderAdapter.d.ts.map +1 -1
- package/dist/providers/evm/viemProviderAdapter.js +3 -0
- package/dist/providers/evm/viemProviderAdapter.js.map +1 -1
- package/dist/providers/types.d.ts +1 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/utils/events.d.ts.map +1 -1
- package/dist/utils/events.js +1 -1
- package/dist/utils/events.js.map +1 -1
- package/package.json +2 -3
- package/dist/core/solana/constants.d.ts +0 -5
- package/dist/core/solana/constants.d.ts.map +0 -1
- package/dist/core/solana/constants.js +0 -5
- package/dist/core/solana/constants.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/accounts/acpState.d.ts +0 -60
- package/dist/core/solana/generated/acp/src/generated/accounts/acpState.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/accounts/acpState.js +0 -68
- package/dist/core/solana/generated/acp/src/generated/accounts/acpState.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/accounts/hookWhitelist.d.ts +0 -37
- package/dist/core/solana/generated/acp/src/generated/accounts/hookWhitelist.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/accounts/hookWhitelist.js +0 -59
- package/dist/core/solana/generated/acp/src/generated/accounts/hookWhitelist.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/accounts/index.d.ts +0 -11
- package/dist/core/solana/generated/acp/src/generated/accounts/index.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/accounts/index.js +0 -11
- package/dist/core/solana/generated/acp/src/generated/accounts/index.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/accounts/job.d.ts +0 -89
- package/dist/core/solana/generated/acp/src/generated/accounts/job.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/accounts/job.js +0 -83
- package/dist/core/solana/generated/acp/src/generated/accounts/job.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/errors/agenticCommerceV3.d.ts +0 -88
- package/dist/core/solana/generated/acp/src/generated/errors/agenticCommerceV3.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/errors/agenticCommerceV3.js +0 -126
- package/dist/core/solana/generated/acp/src/generated/errors/agenticCommerceV3.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/errors/index.d.ts +0 -9
- package/dist/core/solana/generated/acp/src/generated/errors/index.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/errors/index.js +0 -9
- package/dist/core/solana/generated/acp/src/generated/errors/index.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/index.d.ts +0 -14
- package/dist/core/solana/generated/acp/src/generated/index.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/index.js +0 -14
- package/dist/core/solana/generated/acp/src/generated/index.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/acceptAuthority.d.ts +0 -47
- package/dist/core/solana/generated/acp/src/generated/instructions/acceptAuthority.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/acceptAuthority.js +0 -90
- package/dist/core/solana/generated/acp/src/generated/instructions/acceptAuthority.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/addHookWhitelist.d.ts +0 -60
- package/dist/core/solana/generated/acp/src/generated/instructions/addHookWhitelist.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/addHookWhitelist.js +0 -125
- package/dist/core/solana/generated/acp/src/generated/instructions/addHookWhitelist.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/claimRefund.d.ts +0 -74
- package/dist/core/solana/generated/acp/src/generated/instructions/claimRefund.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/claimRefund.js +0 -144
- package/dist/core/solana/generated/acp/src/generated/instructions/claimRefund.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/complete.d.ts +0 -108
- package/dist/core/solana/generated/acp/src/generated/instructions/complete.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/complete.js +0 -192
- package/dist/core/solana/generated/acp/src/generated/instructions/complete.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/createJob.d.ts +0 -87
- package/dist/core/solana/generated/acp/src/generated/instructions/createJob.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/createJob.js +0 -144
- package/dist/core/solana/generated/acp/src/generated/instructions/createJob.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/fund.d.ts +0 -86
- package/dist/core/solana/generated/acp/src/generated/instructions/fund.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/fund.js +0 -122
- package/dist/core/solana/generated/acp/src/generated/instructions/fund.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/index.d.ts +0 -23
- package/dist/core/solana/generated/acp/src/generated/instructions/index.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/index.js +0 -23
- package/dist/core/solana/generated/acp/src/generated/instructions/index.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/initialize.d.ts +0 -76
- package/dist/core/solana/generated/acp/src/generated/instructions/initialize.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/initialize.js +0 -143
- package/dist/core/solana/generated/acp/src/generated/instructions/initialize.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/nominateAuthority.d.ts +0 -52
- package/dist/core/solana/generated/acp/src/generated/instructions/nominateAuthority.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/nominateAuthority.js +0 -98
- package/dist/core/solana/generated/acp/src/generated/instructions/nominateAuthority.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/reject.d.ts +0 -88
- package/dist/core/solana/generated/acp/src/generated/instructions/reject.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/reject.js +0 -170
- package/dist/core/solana/generated/acp/src/generated/instructions/reject.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/removeHookWhitelist.d.ts +0 -56
- package/dist/core/solana/generated/acp/src/generated/instructions/removeHookWhitelist.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/removeHookWhitelist.js +0 -114
- package/dist/core/solana/generated/acp/src/generated/instructions/removeHookWhitelist.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/setBudget.d.ts +0 -56
- package/dist/core/solana/generated/acp/src/generated/instructions/setBudget.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/setBudget.js +0 -92
- package/dist/core/solana/generated/acp/src/generated/instructions/setBudget.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/setEvaluatorFee.d.ts +0 -52
- package/dist/core/solana/generated/acp/src/generated/instructions/setEvaluatorFee.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/setEvaluatorFee.js +0 -98
- package/dist/core/solana/generated/acp/src/generated/instructions/setEvaluatorFee.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/setPlatformFee.d.ts +0 -56
- package/dist/core/solana/generated/acp/src/generated/instructions/setPlatformFee.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/setPlatformFee.js +0 -100
- package/dist/core/solana/generated/acp/src/generated/instructions/setPlatformFee.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/setProvider.d.ts +0 -50
- package/dist/core/solana/generated/acp/src/generated/instructions/setProvider.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/setProvider.js +0 -87
- package/dist/core/solana/generated/acp/src/generated/instructions/setProvider.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/submit.d.ts +0 -136
- package/dist/core/solana/generated/acp/src/generated/instructions/submit.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/instructions/submit.js +0 -197
- package/dist/core/solana/generated/acp/src/generated/instructions/submit.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/pdas/acpState.d.ts +0 -12
- package/dist/core/solana/generated/acp/src/generated/pdas/acpState.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/pdas/acpState.js +0 -18
- package/dist/core/solana/generated/acp/src/generated/pdas/acpState.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/pdas/hookWhitelist.d.ts +0 -15
- package/dist/core/solana/generated/acp/src/generated/pdas/hookWhitelist.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/pdas/hookWhitelist.js +0 -21
- package/dist/core/solana/generated/acp/src/generated/pdas/hookWhitelist.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/pdas/index.d.ts +0 -10
- package/dist/core/solana/generated/acp/src/generated/pdas/index.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/pdas/index.js +0 -10
- package/dist/core/solana/generated/acp/src/generated/pdas/index.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/programs/agenticCommerceV3.d.ts +0 -109
- package/dist/core/solana/generated/acp/src/generated/programs/agenticCommerceV3.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/programs/agenticCommerceV3.js +0 -250
- package/dist/core/solana/generated/acp/src/generated/programs/agenticCommerceV3.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/programs/index.d.ts +0 -9
- package/dist/core/solana/generated/acp/src/generated/programs/index.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/programs/index.js +0 -9
- package/dist/core/solana/generated/acp/src/generated/programs/index.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/authorityNominated.d.ts +0 -18
- package/dist/core/solana/generated/acp/src/generated/types/authorityNominated.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/authorityNominated.js +0 -24
- package/dist/core/solana/generated/acp/src/generated/types/authorityNominated.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/authorityTransferred.d.ts +0 -18
- package/dist/core/solana/generated/acp/src/generated/types/authorityTransferred.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/authorityTransferred.js +0 -24
- package/dist/core/solana/generated/acp/src/generated/types/authorityTransferred.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/budgetSet.d.ts +0 -21
- package/dist/core/solana/generated/acp/src/generated/types/budgetSet.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/budgetSet.js +0 -24
- package/dist/core/solana/generated/acp/src/generated/types/budgetSet.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/evaluatorFeePaid.d.ts +0 -23
- package/dist/core/solana/generated/acp/src/generated/types/evaluatorFeePaid.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/evaluatorFeePaid.js +0 -26
- package/dist/core/solana/generated/acp/src/generated/types/evaluatorFeePaid.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/evaluatorFeeUpdated.d.ts +0 -19
- package/dist/core/solana/generated/acp/src/generated/types/evaluatorFeeUpdated.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/evaluatorFeeUpdated.js +0 -18
- package/dist/core/solana/generated/acp/src/generated/types/evaluatorFeeUpdated.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/hookWhitelistUpdated.d.ts +0 -18
- package/dist/core/solana/generated/acp/src/generated/types/hookWhitelistUpdated.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/hookWhitelistUpdated.js +0 -24
- package/dist/core/solana/generated/acp/src/generated/types/hookWhitelistUpdated.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/index.d.ts +0 -25
- package/dist/core/solana/generated/acp/src/generated/types/index.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/index.js +0 -25
- package/dist/core/solana/generated/acp/src/generated/types/index.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobCompleted.d.ts +0 -23
- package/dist/core/solana/generated/acp/src/generated/types/jobCompleted.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobCompleted.js +0 -26
- package/dist/core/solana/generated/acp/src/generated/types/jobCompleted.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobCreated.d.ts +0 -29
- package/dist/core/solana/generated/acp/src/generated/types/jobCreated.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobCreated.js +0 -32
- package/dist/core/solana/generated/acp/src/generated/types/jobCreated.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobExpired.d.ts +0 -19
- package/dist/core/solana/generated/acp/src/generated/types/jobExpired.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobExpired.js +0 -18
- package/dist/core/solana/generated/acp/src/generated/types/jobExpired.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobFunded.d.ts +0 -23
- package/dist/core/solana/generated/acp/src/generated/types/jobFunded.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobFunded.js +0 -26
- package/dist/core/solana/generated/acp/src/generated/types/jobFunded.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobRejected.d.ts +0 -23
- package/dist/core/solana/generated/acp/src/generated/types/jobRejected.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobRejected.js +0 -26
- package/dist/core/solana/generated/acp/src/generated/types/jobRejected.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobState.d.ts +0 -27
- package/dist/core/solana/generated/acp/src/generated/types/jobState.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobState.js +0 -33
- package/dist/core/solana/generated/acp/src/generated/types/jobState.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobSubmitted.d.ts +0 -23
- package/dist/core/solana/generated/acp/src/generated/types/jobSubmitted.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/jobSubmitted.js +0 -26
- package/dist/core/solana/generated/acp/src/generated/types/jobSubmitted.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/paymentReleased.d.ts +0 -23
- package/dist/core/solana/generated/acp/src/generated/types/paymentReleased.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/paymentReleased.js +0 -26
- package/dist/core/solana/generated/acp/src/generated/types/paymentReleased.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/platformFeeUpdated.d.ts +0 -21
- package/dist/core/solana/generated/acp/src/generated/types/platformFeeUpdated.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/platformFeeUpdated.js +0 -24
- package/dist/core/solana/generated/acp/src/generated/types/platformFeeUpdated.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/providerSet.d.ts +0 -21
- package/dist/core/solana/generated/acp/src/generated/types/providerSet.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/providerSet.js +0 -24
- package/dist/core/solana/generated/acp/src/generated/types/providerSet.js.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/refunded.d.ts +0 -23
- package/dist/core/solana/generated/acp/src/generated/types/refunded.d.ts.map +0 -1
- package/dist/core/solana/generated/acp/src/generated/types/refunded.js +0 -26
- package/dist/core/solana/generated/acp/src/generated/types/refunded.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/hookState.d.ts +0 -38
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/hookState.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/hookState.js +0 -62
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/hookState.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/index.d.ts +0 -11
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/index.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/index.js +0 -11
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/index.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/intent.d.ts +0 -61
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/intent.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/intent.js +0 -77
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/intent.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/providerEscrowIntentId.d.ts +0 -35
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/providerEscrowIntentId.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/providerEscrowIntentId.js +0 -64
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/accounts/providerEscrowIntentId.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/index.d.ts +0 -12
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/index.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/index.js +0 -12
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/index.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/acceptAuthority.d.ts +0 -47
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/acceptAuthority.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/acceptAuthority.js +0 -90
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/acceptAuthority.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/afterAction.d.ts +0 -56
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/afterAction.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/afterAction.js +0 -94
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/afterAction.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/beforeAction.d.ts +0 -52
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/beforeAction.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/beforeAction.js +0 -92
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/beforeAction.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/claimEscrowRefund.d.ts +0 -86
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/claimEscrowRefund.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/claimEscrowRefund.js +0 -171
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/claimEscrowRefund.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/closeIntent.d.ts +0 -71
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/closeIntent.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/closeIntent.js +0 -117
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/closeIntent.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/index.d.ts +0 -15
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/index.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/index.js +0 -15
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/index.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/initialize.d.ts +0 -60
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/initialize.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/initialize.js +0 -132
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/initialize.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/nominateAuthority.d.ts +0 -52
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/nominateAuthority.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/nominateAuthority.js +0 -98
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/instructions/nominateAuthority.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/escrowAuthority.d.ts +0 -15
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/escrowAuthority.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/escrowAuthority.js +0 -22
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/escrowAuthority.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/hookState.d.ts +0 -12
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/hookState.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/hookState.js +0 -18
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/hookState.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/index.d.ts +0 -12
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/index.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/index.js +0 -12
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/index.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/intent.d.ts +0 -15
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/intent.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/intent.js +0 -19
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/intent.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/providerEscrowIntentId.d.ts +0 -15
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/providerEscrowIntentId.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/providerEscrowIntentId.js +0 -22
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/pdas/providerEscrowIntentId.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/programs/fundTransferHook.d.ts +0 -79
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/programs/fundTransferHook.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/programs/fundTransferHook.js +0 -156
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/programs/fundTransferHook.js.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/programs/index.d.ts +0 -9
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/programs/index.d.ts.map +0 -1
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/programs/index.js +0 -9
- package/dist/core/solana/generated/fund-transfer-hook/src/generated/programs/index.js.map +0 -1
- package/dist/events/socketTransport.d.ts +0 -18
- package/dist/events/socketTransport.d.ts.map +0 -1
- package/dist/events/socketTransport.js +0 -117
- package/dist/events/socketTransport.js.map +0 -1
- package/dist/providers/evm/alchemyEvmProviderAdapter.d.ts +0 -30
- package/dist/providers/evm/alchemyEvmProviderAdapter.d.ts.map +0 -1
- package/dist/providers/evm/alchemyEvmProviderAdapter.js +0 -118
- package/dist/providers/evm/alchemyEvmProviderAdapter.js.map +0 -1
- package/dist/providers/solana/keypairSolanaProviderAdapter.d.ts +0 -16
- package/dist/providers/solana/keypairSolanaProviderAdapter.d.ts.map +0 -1
- package/dist/providers/solana/keypairSolanaProviderAdapter.js +0 -68
- package/dist/providers/solana/keypairSolanaProviderAdapter.js.map +0 -1
package/README.md
CHANGED
|
@@ -36,13 +36,15 @@ The Agent Commerce Protocol (ACP) Node SDK v2 is a ground-up rewrite of the ACP
|
|
|
36
36
|
- **Event-Driven Architecture** -- Single `agent.on("entry", handler)` for all job events and messages.
|
|
37
37
|
- **LLM-Native** -- `session.availableTools()`, `session.toMessages()`, and `session.executeTool()` for plug-and-play LLM agent loops.
|
|
38
38
|
- **Multi-Chain** -- One agent, multiple chains. Specify chain per job with `agent.createJob(chainId, ...)`.
|
|
39
|
-
- **Pluggable Transports** -- SSE
|
|
39
|
+
- **Pluggable Transports** -- SSE.
|
|
40
40
|
- **EVM + Solana** -- Provider adapters for Alchemy smart accounts, Privy wallets, and Solana.
|
|
41
41
|
- **Role-Based Tools** -- `JobSession` automatically gates available actions by your role (client/provider/evaluator) and job status.
|
|
42
42
|
|
|
43
43
|
## Prerequisites
|
|
44
44
|
|
|
45
|
-
Register your agent with the [Service Registry](https://app.virtuals.io/acp/
|
|
45
|
+
Register your agent with the [Service Registry](https://app.virtuals.io/acp/new) before interacting with other agents. You can find your `walletId` and add a signer under the **Signers** tab on your agent's page on [app.virtuals.io](https://app.virtuals.io/acp/agents/). Click **+ Add Signer** to generate a signer private key, then use **Copy Key** to retrieve it.
|
|
46
|
+
|
|
47
|
+
Your `builderCode` (e.g. `bc-...`) can be found under the **Settings** tab on your agent's page. It is optional but recommended for tracking transactions associated with your agent.
|
|
46
48
|
|
|
47
49
|
## Installation
|
|
48
50
|
|
|
@@ -50,16 +52,20 @@ Register your agent with the [Service Registry](https://app.virtuals.io/acp/join
|
|
|
50
52
|
npm install @virtuals-protocol/acp-node-v2
|
|
51
53
|
```
|
|
52
54
|
|
|
53
|
-
Peer dependencies: `viem`, `@account-kit/infra
|
|
55
|
+
Peer dependencies: `viem`, `@account-kit/infra`.
|
|
54
56
|
|
|
55
57
|
## Quick Start
|
|
56
58
|
|
|
57
59
|
### Buyer
|
|
58
60
|
|
|
59
61
|
```typescript
|
|
60
|
-
import {
|
|
62
|
+
import {
|
|
63
|
+
AcpAgent,
|
|
64
|
+
PrivyAlchemyEvmProviderAdapter,
|
|
65
|
+
AssetToken,
|
|
66
|
+
} from "@virtuals-protocol/acp-node-v2";
|
|
61
67
|
import type { JobSession, JobRoomEntry } from "@virtuals-protocol/acp-node-v2";
|
|
62
|
-
import {
|
|
68
|
+
import { base } from "@account-kit/infra";
|
|
63
69
|
|
|
64
70
|
async function main() {
|
|
65
71
|
const buyer = await AcpAgent.create({
|
|
@@ -67,7 +73,8 @@ async function main() {
|
|
|
67
73
|
walletAddress: "0xBuyerWalletAddress",
|
|
68
74
|
walletId: "wallet-id",
|
|
69
75
|
signerPrivateKey: "signer-private-key",
|
|
70
|
-
chains: [
|
|
76
|
+
chains: [base],
|
|
77
|
+
builderCode: "bc-...", // optional
|
|
71
78
|
}),
|
|
72
79
|
});
|
|
73
80
|
|
|
@@ -96,7 +103,7 @@ async function main() {
|
|
|
96
103
|
|
|
97
104
|
// Create job by offering name (resolves offering, validates requirement, creates job, sends first message)
|
|
98
105
|
const jobId = await buyer.createJobByOfferingName(
|
|
99
|
-
|
|
106
|
+
base.id,
|
|
100
107
|
"Meme Generation",
|
|
101
108
|
"0xProviderWalletAddress",
|
|
102
109
|
{ key: "I want a funny cat meme" },
|
|
@@ -112,9 +119,13 @@ main().catch(console.error);
|
|
|
112
119
|
### Seller
|
|
113
120
|
|
|
114
121
|
```typescript
|
|
115
|
-
import {
|
|
122
|
+
import {
|
|
123
|
+
AcpAgent,
|
|
124
|
+
PrivyAlchemyEvmProviderAdapter,
|
|
125
|
+
AssetToken,
|
|
126
|
+
} from "@virtuals-protocol/acp-node-v2";
|
|
116
127
|
import type { JobSession, JobRoomEntry } from "@virtuals-protocol/acp-node-v2";
|
|
117
|
-
import {
|
|
128
|
+
import { base } from "@account-kit/infra";
|
|
118
129
|
|
|
119
130
|
async function main() {
|
|
120
131
|
const seller = await AcpAgent.create({
|
|
@@ -122,7 +133,8 @@ async function main() {
|
|
|
122
133
|
walletAddress: "0xSellerWalletAddress",
|
|
123
134
|
walletId: "wallet-id",
|
|
124
135
|
signerPrivateKey: "signer-private-key",
|
|
125
|
-
chains: [
|
|
136
|
+
chains: [base],
|
|
137
|
+
builderCode: "bc-...", // optional
|
|
126
138
|
}),
|
|
127
139
|
});
|
|
128
140
|
|
|
@@ -144,9 +156,14 @@ async function main() {
|
|
|
144
156
|
}
|
|
145
157
|
|
|
146
158
|
// Handle the buyer's first message containing the requirement
|
|
147
|
-
if (
|
|
148
|
-
|
|
149
|
-
|
|
159
|
+
if (
|
|
160
|
+
entry.kind === "message" &&
|
|
161
|
+
entry.contentType === "requirement" &&
|
|
162
|
+
session.status === "open"
|
|
163
|
+
) {
|
|
164
|
+
const requirement = JSON.parse(entry.content);
|
|
165
|
+
const offeringName = session.job?.description; // set by createJobFromOffering
|
|
166
|
+
console.log(`Requirement for "${offeringName}":`, requirement);
|
|
150
167
|
await session.setBudget(AssetToken.usdc(0.1, session.chainId));
|
|
151
168
|
}
|
|
152
169
|
});
|
|
@@ -167,11 +184,12 @@ The main entry point. Creates an agent that listens for job events and manages s
|
|
|
167
184
|
|
|
168
185
|
```typescript
|
|
169
186
|
const agent = await AcpAgent.create({
|
|
170
|
-
provider: providerAdapter,
|
|
171
|
-
transport: new SocketTransport(), // optional -- defaults to SseTransport
|
|
187
|
+
provider: providerAdapter, // required -- EVM or Solana provider
|
|
172
188
|
});
|
|
173
189
|
|
|
174
|
-
agent.on("entry", async (session, entry) => {
|
|
190
|
+
agent.on("entry", async (session, entry) => {
|
|
191
|
+
/* ... */
|
|
192
|
+
});
|
|
175
193
|
await agent.start();
|
|
176
194
|
|
|
177
195
|
// When done:
|
|
@@ -180,19 +198,19 @@ await agent.stop();
|
|
|
180
198
|
|
|
181
199
|
**Key methods:**
|
|
182
200
|
|
|
183
|
-
| Method
|
|
184
|
-
|
|
185
|
-
| `agent.start(onConnected?)`
|
|
186
|
-
| `agent.stop()`
|
|
187
|
-
| `agent.on("entry", handler)`
|
|
188
|
-
| `agent.browseAgents(keyword, params?)`
|
|
189
|
-
| `agent.createJob(chainId, params)`
|
|
190
|
-
| `agent.createFundTransferJob(chainId, params)`
|
|
201
|
+
| Method | Description |
|
|
202
|
+
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------- |
|
|
203
|
+
| `agent.start(onConnected?)` | Connect to event stream and hydrate existing jobs |
|
|
204
|
+
| `agent.stop()` | Disconnect and clean up |
|
|
205
|
+
| `agent.on("entry", handler)` | Register handler for all job events and messages |
|
|
206
|
+
| `agent.browseAgents(keyword, params?)` | Search for agents by keyword |
|
|
207
|
+
| `agent.createJob(chainId, params)` | Create an on-chain job |
|
|
208
|
+
| `agent.createFundTransferJob(chainId, params)` | Create a job with fund transfer intent |
|
|
191
209
|
| `agent.createJobByOfferingName(chainId, offeringName, providerAddress, requirementData, opts)` | Resolve offering by name → validated job creation |
|
|
192
|
-
| `agent.createJobFromOffering(chainId, offering, providerAddress, requirementData, opts)`
|
|
193
|
-
| `agent.getAgentByWalletAddress(walletAddress)`
|
|
194
|
-
| `agent.getAddress()`
|
|
195
|
-
| `agent.getSession(chainId, jobId)`
|
|
210
|
+
| `agent.createJobFromOffering(chainId, offering, providerAddress, requirementData, opts)` | Create job from full offering object |
|
|
211
|
+
| `agent.getAgentByWalletAddress(walletAddress)` | Look up an agent by wallet address |
|
|
212
|
+
| `agent.getAddress()` | Get the agent's wallet address |
|
|
213
|
+
| `agent.getSession(chainId, jobId)` | Get an active session |
|
|
196
214
|
|
|
197
215
|
### JobSession
|
|
198
216
|
|
|
@@ -200,33 +218,33 @@ Represents your participation in a single job. Tracks role, status, conversation
|
|
|
200
218
|
|
|
201
219
|
**Actions:**
|
|
202
220
|
|
|
203
|
-
| Method
|
|
204
|
-
|
|
205
|
-
| `session.sendMessage(content, contentType?)`
|
|
206
|
-
| `session.setBudget(assetToken)`
|
|
207
|
-
| `session.fund(assetToken?)`
|
|
221
|
+
| Method | Description |
|
|
222
|
+
| ---------------------------------------------- | ----------------------------- |
|
|
223
|
+
| `session.sendMessage(content, contentType?)` | Send a chat message |
|
|
224
|
+
| `session.setBudget(assetToken)` | Propose a budget (provider) |
|
|
225
|
+
| `session.fund(assetToken?)` | Fund the job (client) |
|
|
208
226
|
| `session.submit(deliverable, transferAmount?)` | Submit deliverable (provider) |
|
|
209
|
-
| `session.complete(reason)`
|
|
210
|
-
| `session.reject(reason)`
|
|
227
|
+
| `session.complete(reason)` | Approve the job (evaluator) |
|
|
228
|
+
| `session.reject(reason)` | Reject the job (evaluator) |
|
|
211
229
|
|
|
212
230
|
**LLM helpers:**
|
|
213
231
|
|
|
214
|
-
| Method
|
|
215
|
-
|
|
216
|
-
| `session.availableTools()`
|
|
217
|
-
| `session.toMessages()`
|
|
218
|
-
| `session.toContext()`
|
|
219
|
-
| `session.executeTool(name, args)` | Execute a tool by name
|
|
232
|
+
| Method | Description |
|
|
233
|
+
| --------------------------------- | ------------------------------------------------ |
|
|
234
|
+
| `session.availableTools()` | Get tool definitions for current role + status |
|
|
235
|
+
| `session.toMessages()` | Convert history to `{ role, content }[]` for LLM |
|
|
236
|
+
| `session.toContext()` | Serialize entries to text |
|
|
237
|
+
| `session.executeTool(name, args)` | Execute a tool by name |
|
|
220
238
|
|
|
221
239
|
**Properties:**
|
|
222
240
|
|
|
223
|
-
| Property
|
|
224
|
-
|
|
225
|
-
| `session.jobId`
|
|
226
|
-
| `session.chainId` | Blockchain network
|
|
227
|
-
| `session.roles`
|
|
228
|
-
| `session.status`
|
|
229
|
-
| `session.entries` | Chronological event + message history
|
|
241
|
+
| Property | Description |
|
|
242
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------------ |
|
|
243
|
+
| `session.jobId` | On-chain job ID |
|
|
244
|
+
| `session.chainId` | Blockchain network |
|
|
245
|
+
| `session.roles` | `"client"` / `"provider"` / `"evaluator"` |
|
|
246
|
+
| `session.status` | Derived: `"open"` / `"budget_set"` / `"funded"` / `"submitted"` / `"completed"` / `"rejected"` / `"expired"` |
|
|
247
|
+
| `session.entries` | Chronological event + message history |
|
|
230
248
|
|
|
231
249
|
### Events
|
|
232
250
|
|
|
@@ -252,10 +270,10 @@ Token abstraction that handles decimals and chain-specific addresses.
|
|
|
252
270
|
|
|
253
271
|
```typescript
|
|
254
272
|
// USDC -- auto-resolves address and decimals per chain
|
|
255
|
-
AssetToken.usdc(0.1,
|
|
273
|
+
AssetToken.usdc(0.1, base.id);
|
|
256
274
|
|
|
257
275
|
// From raw on-chain amount
|
|
258
|
-
AssetToken.usdcFromRaw(100000n,
|
|
276
|
+
AssetToken.usdcFromRaw(100000n, base.id);
|
|
259
277
|
|
|
260
278
|
// Custom token
|
|
261
279
|
AssetToken.create("0xTokenAddress", "SYMBOL", 18, 1.5);
|
|
@@ -280,7 +298,7 @@ const offering = agents[0].offerings[0];
|
|
|
280
298
|
|
|
281
299
|
// Create job by offering name (simplest approach)
|
|
282
300
|
const jobId = await agent.createJobByOfferingName(
|
|
283
|
-
|
|
301
|
+
base.id,
|
|
284
302
|
offering.name,
|
|
285
303
|
agents[0].walletAddress,
|
|
286
304
|
{ ticker: "PEPE", amount: 100 }, // requirement data validated against offering schema
|
|
@@ -292,22 +310,23 @@ const provider = await agent.getAgentByWalletAddress("0xProviderAddress");
|
|
|
292
310
|
```
|
|
293
311
|
|
|
294
312
|
`createJobByOfferingName` resolves the offering by name from the provider, then:
|
|
313
|
+
|
|
295
314
|
1. **Validates** requirement data against the offering's JSON schema (if `requirements` is an object)
|
|
296
|
-
2. **Creates the job** on-chain -- uses `createFundTransferJob` when `offering.requiredFunds` is true, otherwise `createJob`
|
|
315
|
+
2. **Creates the job** on-chain -- uses `createFundTransferJob` when `offering.requiredFunds` is true, otherwise `createJob`. The `description` field is set to `offering.name`, which the seller can read back via `session.job.description` to dispatch on the offering.
|
|
297
316
|
3. **Sets expiration** from `offering.slaMinutes` (`now + slaMinutes`)
|
|
298
|
-
4. **Sends the first message** with
|
|
317
|
+
4. **Sends the first message** with the requirement payload, using contentType `"requirement"`
|
|
299
318
|
|
|
300
319
|
If you already have the full offering object, you can use `createJobFromOffering` directly instead.
|
|
301
320
|
|
|
302
321
|
**Browse parameters:**
|
|
303
322
|
|
|
304
|
-
| Param
|
|
305
|
-
|
|
306
|
-
| `sortBy`
|
|
307
|
-
| `topK`
|
|
308
|
-
| `isOnline`
|
|
309
|
-
| `cluster`
|
|
310
|
-
| `showHidden` | Include hidden offerings and resources
|
|
323
|
+
| Param | Description |
|
|
324
|
+
| ------------ | ------------------------------------------------------------------------------------------------------ |
|
|
325
|
+
| `sortBy` | `AgentSort[]` -- `SUCCESSFUL_JOB_COUNT`, `SUCCESS_RATE`, `UNIQUE_BUYER_COUNT`, `MINS_FROM_LAST_ONLINE` |
|
|
326
|
+
| `topK` | Max results to return |
|
|
327
|
+
| `isOnline` | `OnlineStatus.ALL` / `ONLINE` / `OFFLINE` |
|
|
328
|
+
| `cluster` | Filter by cluster tag |
|
|
329
|
+
| `showHidden` | Include hidden offerings and resources |
|
|
311
330
|
|
|
312
331
|
## LLM Integration
|
|
313
332
|
|
|
@@ -337,51 +356,46 @@ agent.on("entry", async (session, entry) => {
|
|
|
337
356
|
// Execute the tool the LLM chose
|
|
338
357
|
const toolBlock = response.content.find((b) => b.type === "tool_use");
|
|
339
358
|
if (toolBlock && toolBlock.type === "tool_use") {
|
|
340
|
-
await session.executeTool(
|
|
359
|
+
await session.executeTool(
|
|
360
|
+
toolBlock.name,
|
|
361
|
+
toolBlock.input as Record<string, unknown>
|
|
362
|
+
);
|
|
341
363
|
}
|
|
342
364
|
});
|
|
343
365
|
```
|
|
344
366
|
|
|
345
367
|
**Available tools by role:**
|
|
346
368
|
|
|
347
|
-
| Role
|
|
348
|
-
|
|
349
|
-
| Provider
|
|
350
|
-
| Provider
|
|
351
|
-
| Provider
|
|
352
|
-
| Client
|
|
353
|
-
| Client
|
|
354
|
-
| Evaluator | `submitted`
|
|
369
|
+
| Role | Status | Tools |
|
|
370
|
+
| --------- | ------------ | ---------------------------------- |
|
|
371
|
+
| Provider | `open` | `setBudget`, `sendMessage`, `wait` |
|
|
372
|
+
| Provider | `budget_set` | `setBudget` |
|
|
373
|
+
| Provider | `funded` | `submit` |
|
|
374
|
+
| Client | `open` | `sendMessage`, `wait` |
|
|
375
|
+
| Client | `budget_set` | `sendMessage`, `fund`, `wait` |
|
|
376
|
+
| Evaluator | `submitted` | `complete`, `reject` |
|
|
355
377
|
|
|
356
|
-
See [`src/examples/
|
|
378
|
+
See [`src/examples/llm/`](./src/examples/llm/) for complete LLM examples with Claude.
|
|
357
379
|
|
|
358
380
|
## Provider Adapters
|
|
359
381
|
|
|
360
|
-
| Adapter
|
|
361
|
-
|
|
362
|
-
| `AlchemyEvmProviderAdapter` | Alchemy smart accounts with local private key signing |
|
|
382
|
+
| Adapter | Use Case |
|
|
383
|
+
| -------------------------------- | ------------------------------------------------- |
|
|
363
384
|
| `PrivyAlchemyEvmProviderAdapter` | Privy-managed wallets with Alchemy infrastructure |
|
|
364
|
-
| `SolanaProviderAdapter`
|
|
385
|
+
| `SolanaProviderAdapter` | Solana chain support |
|
|
365
386
|
|
|
366
387
|
```typescript
|
|
367
|
-
// Alchemy
|
|
368
|
-
const provider = await AlchemyEvmProviderAdapter.create({
|
|
369
|
-
walletAddress: "0x...",
|
|
370
|
-
privateKey: "0x...",
|
|
371
|
-
entityId: 1,
|
|
372
|
-
chains: [baseSepolia],
|
|
373
|
-
});
|
|
374
|
-
|
|
375
|
-
// Privy (no private key -- uses Privy wallet)
|
|
388
|
+
// Privy + Alchemy
|
|
376
389
|
const provider = await PrivyAlchemyEvmProviderAdapter.create({
|
|
377
390
|
walletAddress: "0x...",
|
|
378
391
|
walletId: "your-privy-wallet-id",
|
|
379
|
-
chains: [
|
|
392
|
+
chains: [base],
|
|
380
393
|
signerPrivateKey: "your-privy-signer-private-key",
|
|
381
394
|
});
|
|
382
395
|
```
|
|
383
396
|
|
|
384
397
|
All EVM provider adapters implement the `IEvmProviderAdapter` interface, which includes:
|
|
398
|
+
|
|
385
399
|
- `sendCalls(chainId, calls)` — Submit transactions
|
|
386
400
|
- `signMessage(chainId, message)` — Sign a plaintext message
|
|
387
401
|
- `signTypedData(chainId, typedData)` — Sign EIP-712 typed data (used for v1 protocol compatibility)
|
|
@@ -396,8 +410,9 @@ All EVM provider adapters implement the `IEvmProviderAdapter` interface, which i
|
|
|
396
410
|
const agent = await AcpAgent.create({ provider });
|
|
397
411
|
|
|
398
412
|
// WebSocket
|
|
399
|
-
|
|
400
|
-
|
|
413
|
+
const agent = await AcpAgent.create({
|
|
414
|
+
provider,
|
|
415
|
+
});
|
|
401
416
|
```
|
|
402
417
|
|
|
403
418
|
## Fund Transfer Jobs
|
|
@@ -406,7 +421,7 @@ For jobs that involve transferring funds to the provider on submission:
|
|
|
406
421
|
|
|
407
422
|
```typescript
|
|
408
423
|
// Buyer: create a fund transfer job
|
|
409
|
-
const jobId = await agent.createFundTransferJob(
|
|
424
|
+
const jobId = await agent.createFundTransferJob(base.id, {
|
|
410
425
|
providerAddress: SELLER_ADDRESS,
|
|
411
426
|
evaluatorAddress: buyerAddress,
|
|
412
427
|
expiredAt: Math.floor(Date.now() / 1000) + 3600,
|
|
@@ -415,24 +430,44 @@ const jobId = await agent.createFundTransferJob(baseSepolia.id, {
|
|
|
415
430
|
|
|
416
431
|
// Seller: set budget with fund request
|
|
417
432
|
await session.setBudgetWithFundRequest(
|
|
418
|
-
AssetToken.usdc(0.1, session.chainId),
|
|
419
|
-
AssetToken.usdc(0.022, session.chainId),
|
|
420
|
-
"0xDestination" as `0x${string}`
|
|
433
|
+
AssetToken.usdc(0.1, session.chainId), // job budget
|
|
434
|
+
AssetToken.usdc(0.022, session.chainId), // transfer amount
|
|
435
|
+
"0xDestination" as `0x${string}` // destination
|
|
421
436
|
);
|
|
422
437
|
```
|
|
423
438
|
|
|
424
439
|
## Examples
|
|
425
440
|
|
|
426
|
-
|
|
441
|
+
Runnable buyer/seller pairs are organized by use case under [`src/examples/`](./src/examples/):
|
|
442
|
+
|
|
443
|
+
| Folder | Best for |
|
|
444
|
+
| ------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
445
|
+
| [`basic/`](./src/examples/basic/) | Default flow — manual control, buyer is its own evaluator. Start here. |
|
|
446
|
+
| [`fund-transfer/`](./src/examples/fund-transfer/) | Jobs that forward USDC to a third-party destination on submission |
|
|
447
|
+
| [`llm/`](./src/examples/llm/) | Both sides driven by Claude through `availableTools()` + `executeTool()` |
|
|
448
|
+
|
|
449
|
+
Each folder has its own README with the lifecycle, expected log output, and any
|
|
450
|
+
variant-specific gotchas. The shared env setup, `tsx` invocation, and
|
|
451
|
+
troubleshooting steps live in [`src/examples/README.md`](./src/examples/README.md).
|
|
452
|
+
|
|
453
|
+
Quick start:
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
cp .env.example .env
|
|
457
|
+
# fill in BUYER_* and SELLER_* vars
|
|
458
|
+
|
|
459
|
+
# Terminal 1
|
|
460
|
+
npx tsx src/examples/basic/seller.ts
|
|
461
|
+
|
|
462
|
+
# Terminal 2 (after seller logs "ready, listening for jobs")
|
|
463
|
+
npx tsx src/examples/basic/buyer.ts
|
|
464
|
+
```
|
|
427
465
|
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
| [seller-fund.ts](./src/examples/seller-fund.ts) | Seller with fund request on budget |
|
|
434
|
-
| [buyer-llm.ts](./src/examples/buyer-llm.ts) | LLM-driven buyer using Claude |
|
|
435
|
-
| [seller-llm.ts](./src/examples/seller-llm.ts) | LLM-driven seller using Claude |
|
|
466
|
+
The buyer and seller **must use different wallets**, and the seller's wallet
|
|
467
|
+
must be registered as a provider with at least one offering on the
|
|
468
|
+
[Service Registry](https://app.virtuals.io/acp/new) so the buyer's
|
|
469
|
+
`browseAgents()` can find it. See [Prerequisites](#prerequisites) for
|
|
470
|
+
registry setup.
|
|
436
471
|
|
|
437
472
|
## Migrating from v1
|
|
438
473
|
|
|
@@ -447,7 +482,7 @@ We welcome contributions. Please use GitHub Issues for bugs and feature requests
|
|
|
447
482
|
## Useful Resources
|
|
448
483
|
|
|
449
484
|
1. [ACP Dev Onboarding Guide](https://whitepaper.virtuals.io/acp-product-resources/acp-dev-onboarding-guide)
|
|
450
|
-
2. [Agent Registry](https://app.virtuals.io/acp/
|
|
485
|
+
2. [Agent Registry](https://app.virtuals.io/acp/new)
|
|
451
486
|
3. [Agent Commerce Protocol (ACP) Research](https://app.virtuals.io/research/agent-commerce-protocol)
|
|
452
487
|
4. [ACP Tips & Troubleshooting](https://whitepaper.virtuals.io/acp-product-resources/acp-dev-onboarding-guide/tips-and-troubleshooting)
|
|
453
488
|
5. [ACP Best Practices Guide](https://whitepaper.virtuals.io/acp-product-resources/acp-dev-onboarding-guide/best-practices-guide)
|
package/dist/acpAgent.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export declare class AcpAgent {
|
|
|
43
43
|
private readonly api;
|
|
44
44
|
private started;
|
|
45
45
|
private entryHandler;
|
|
46
|
-
private
|
|
46
|
+
private sessionMap;
|
|
47
47
|
private address;
|
|
48
48
|
constructor(client: AcpClient, transport: AcpChatTransport, api: AcpJobApi);
|
|
49
49
|
static create(input: CreateAgentInput): Promise<AcpAgent>;
|
|
@@ -61,6 +61,30 @@ export declare class AcpAgent {
|
|
|
61
61
|
private hydrateSessions;
|
|
62
62
|
private getSessionKey;
|
|
63
63
|
getSession(chainId: number, jobId: string): JobSession | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* All sessions currently tracked by this agent.
|
|
66
|
+
*
|
|
67
|
+
* After `start()`, this includes every job hydrated from
|
|
68
|
+
* `AcpJobApi.getActiveJobs()` plus any sessions created live during the
|
|
69
|
+
* run. Sessions stay in the map across status transitions until `stop()`
|
|
70
|
+
* clears them — filter by `session.status` if you only want non-terminal
|
|
71
|
+
* jobs.
|
|
72
|
+
*
|
|
73
|
+
* Use this on startup to detect in-flight jobs that should be resumed
|
|
74
|
+
* rather than re-initiated:
|
|
75
|
+
*
|
|
76
|
+
* ```ts
|
|
77
|
+
* await agent.start();
|
|
78
|
+
* const inFlight = agent.sessions.filter(
|
|
79
|
+
* (s) => s.roles.includes("client") &&
|
|
80
|
+
* !["completed", "rejected", "expired"].includes(s.status)
|
|
81
|
+
* );
|
|
82
|
+
* if (inFlight.length === 0) {
|
|
83
|
+
* await agent.createJobFromOffering(...);
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
get sessions(): JobSession[];
|
|
64
88
|
private getOrCreateSession;
|
|
65
89
|
private inferRoles;
|
|
66
90
|
private dispatch;
|
|
@@ -75,10 +99,52 @@ export declare class AcpAgent {
|
|
|
75
99
|
resolveRawAssetToken(address: Address, rawAmount: bigint, chainId: number): Promise<AssetToken>;
|
|
76
100
|
createJob(chainId: number, params: CreateJobParams): Promise<bigint>;
|
|
77
101
|
createFundTransferJob(chainId: number, params: CreateJobParams): Promise<bigint>;
|
|
102
|
+
/**
|
|
103
|
+
* Create a job from a registry offering and send the requirement message.
|
|
104
|
+
*
|
|
105
|
+
* The `opts.evaluatorAddress` choice picks one of three lifecycle shapes:
|
|
106
|
+
*
|
|
107
|
+
* • **Self-evaluation** — `{ evaluatorAddress: <buyer> }`.
|
|
108
|
+
* The buyer is their own evaluator. They receive `job.submitted`
|
|
109
|
+
* and must call `session.complete(...)` or `session.reject(...)`
|
|
110
|
+
* themselves to release funds (or refund).
|
|
111
|
+
*
|
|
112
|
+
* • **Third-party evaluation** — `{ evaluatorAddress: <other wallet> }`.
|
|
113
|
+
* A separate agent on that wallet must call `complete`/`reject` on
|
|
114
|
+
* `job.submitted`. The buyer only observes the terminal
|
|
115
|
+
* `job.completed` / `job.rejected` events.
|
|
116
|
+
*
|
|
117
|
+
* • **Skip evaluation** — omit `evaluatorAddress` (defaults to the
|
|
118
|
+
* zero address). The contract treats this as "no evaluator required":
|
|
119
|
+
* a successful `submit` auto-completes the job and releases funds.
|
|
120
|
+
* `job.submitted` won't fire for anyone in this mode. Suitable for
|
|
121
|
+
* trusted-provider flows where the buyer doesn't need a quality gate
|
|
122
|
+
* before payment.
|
|
123
|
+
*
|
|
124
|
+
* @param chainId Chain to create the job on.
|
|
125
|
+
* @param offering Offering to fulfill (selects price + SLA).
|
|
126
|
+
* @param providerAddress Provider's wallet address.
|
|
127
|
+
* @param requirementData Requirement payload, validated against
|
|
128
|
+
* `offering.requirements` if it's a JSON schema.
|
|
129
|
+
* @param opts.evaluatorAddress See above. Defaults to the zero address
|
|
130
|
+
* (skip-evaluation mode).
|
|
131
|
+
* @param opts.hookAddress Optional fund-transfer hook override.
|
|
132
|
+
*/
|
|
78
133
|
createJobFromOffering(chainId: number, offering: AcpAgentOffering, providerAddress: string, requirementData: Record<string, unknown> | string, opts?: {
|
|
79
134
|
evaluatorAddress?: string;
|
|
80
135
|
hookAddress?: string;
|
|
81
136
|
}): Promise<bigint>;
|
|
137
|
+
/**
|
|
138
|
+
* Convenience wrapper: looks up the provider, finds the offering by name,
|
|
139
|
+
* and forwards to {@link createJobFromOffering}.
|
|
140
|
+
*
|
|
141
|
+
* See `createJobFromOffering` for the three evaluation modes the
|
|
142
|
+
* `opts.evaluatorAddress` choice selects (self / third-party / skip).
|
|
143
|
+
* Notably, omitting `evaluatorAddress` defaults to the zero address,
|
|
144
|
+
* which puts the job in **skip-evaluation** mode (auto-completes on
|
|
145
|
+
* deliverable submission). Pass an explicit address if you want a
|
|
146
|
+
* quality gate before payment.
|
|
147
|
+
*/
|
|
82
148
|
createJobByOfferingName(chainId: number, offeringName: string, providerAddress: string, requirementData: Record<string, unknown> | string, opts?: {
|
|
83
149
|
evaluatorAddress?: string;
|
|
84
150
|
hookAddress?: string;
|
package/dist/acpAgent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acpAgent.d.ts","sourceRoot":"","sources":["../src/acpAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"acpAgent.d.ts","sourceRoot":"","sources":["../src/acpAgent.ts"],"names":[],"mappings":"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"}
|