Skip to content

Conversation

matthew1809
Copy link

Description

Add Dynamic as a wallet provider (PR for app generation to follow)

Tests

I tested with the example chatbot.

Other

  • Added documentation to all relevant README.md files
  • Added a changelog entry

@matthew1809 matthew1809 requested a review from murrlincoln as a code owner May 29, 2025 14:04
@cb-heimdall
Copy link

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@github-actions github-actions bot added documentation Improvements or additions to documentation wallet provider New wallet provider example New example agent typescript labels May 29, 2025
@matthew1809
Copy link
Author

Hi @murrlincoln, let me know if you'd like anything changed here!

@phdargen
Copy link
Contributor

phdargen commented Aug 4, 2025

Hi @matthew1809, thanks for your contribution! Could you please rebase against main and bump the dynamic packages to the latest versions (if appropriate), then I will do some testing. A few initial comments below

@phdargen
Copy link
Contributor

phdargen commented Aug 4, 2025

Please make sure to run pnpm run format and pnpm run lint before you commit, there are several unused imports/vars that would lead to failed checks

"@coinbase/agentkit": minor
---

Adds Dynamic as wallet provider
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor -> patch
Adds -> Added

DYNAMIC_BASE_API_URL=https://app.dynamicauth.com
DYNAMIC_BASE_MPC_RELAY_API_URL=https://relay.dynamicauth.com

# Optional Network ID. If you'd like to use a Dynamic Solana wallet, set to "solana-devnet". Otherwise, defaults to "base-sepolia"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

defaults to "mainnet-beta" according to chatbot code

"dependencies": {
"@coinbase/agentkit": "workspace:*",
"@coinbase/agentkit-langchain": "^0.3.0",
"@dynamic-labs-wallet/core": "^0.0.71",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are the dynamic dependencies needed here? If so, should use the same versions as in typescript/agentkit/package.json.

Please update other dep to be consistent with https://github.com/coinbase/agentkit/blob/main/typescript/examples/langchain-cdp-chatbot/package.json

pythActionProvider(),
walletActionProvider(),
erc20ActionProvider(),
cdpApiActionProvider({
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Following #785, cdpApiActionProvider needs to be renamed to legacyCdpApiActionProvider

apiKeyName: process.env.CDP_API_KEY_NAME as string,
apiKeyPrivateKey: process.env.CDP_API_KEY_PRIVATE_KEY as string,
}),
splActionProvider(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is mixing up evm-only and svm-only actions, while the wallet setup is only for svm.

I'd suggest to check from config vars wether evm or svm wallet should be initialized and then add actions accordingly. Have a look at https://github.com/coinbase/agentkit/blob/main/typescript/examples/langchain-cdp-chatbot/chatbot.ts for inspiration

@phdargen
Copy link
Contributor

phdargen commented Aug 4, 2025

It would be great if you could include the result of some manual end-to-end testing in the PR description including prompt + reply for both evm and svm wallets

type: "json-rpc",
},
chain,
transport: http(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Following #824, this should include an optional config to set custom RPC_URL

throw new Error(`Chain with ID ${chainId} not found`);
}

const publicClient = (dynamic as DynamicEvmWalletClient).createViemPublicClient({
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

publicClient appears to be unused, please remove

@matthew1809 matthew1809 force-pushed the feat/dynamic-server-wallets branch from 55c414c to 12b91f3 Compare August 19, 2025 12:58
@phdargen phdargen mentioned this pull request Sep 30, 2025
10 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation example New example agent typescript wallet provider New wallet provider

Development

Successfully merging this pull request may close these issues.

3 participants