feat: added CdpV2WalletProvider (EVM and Solana) - #678

Merged
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2
Apr 25, 2025
Merged

feat: added CdpV2WalletProvider (EVM and Solana)#678
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2

Conversation

@CarsonRoscoe

@CarsonRoscoeCarsonRoscoe commented Apr 15, 2025

Copy link
Copy Markdown
Contributor

Description

Added:

  • CdpV2EvmWalletProvider using @coinbase/cdp-sdk
  • CdpV2SolanaWalletProvider using @coinbase/cdp-sdk
  • CdpV2WalletProvider, which allows for one entry point into either wallet provider based on config
  • Unified langchain-cdp-v2-chatbot using CdpV2WalletProvider, allowing you to swap networks

Notes:

  • @coinbase/cdp-sdk adds a dependency on jose, which is esm only. Our unit tests run as cjs. To get passed this, we had to mock jose in the packages before any tests run.
  • This jose dependency is also causing (WARN) Using hybrid module kind (Node16/18/Next) is only supported in "isolatedModules: true". Please set "isolatedModules: true" in your tsconfig.json. logs to spam in the console when running unit tests. We cannot follow its advice.

These are further justification for the dual-cjs/esm builds, while writing in esm. These logs and mocking will go away after that change.

Tests

CdpV2EvmWalletProvider unit tests

 PASS src/wallet-providers/cdpV2EvmWalletProvider.test.ts
CdpV2EvmWalletProvider
initialization
✓ should initialize with API keys (2 ms)
✓ should default to base-sepolia if network not provided
✓ should handle initialization failures gracefully (6 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name (1 ms)
✓ should get the balance
✓ should handle connection errors during balance check
signing operations
✓ should sign messages
✓ should sign typed data
✓ should sign transactions
✓ should handle signing failures
transaction operations
✓ should send transactions
✓ should handle transaction failures during send
✓ should handle receipt timeout errors
✓ should handle transaction with invalid address
contract interactions
✓ should read contract data
✓ should handle network errors during contract reads (3 ms)
✓ should handle invalid ABI format in contract reads
Test Suites: 1 passed, 1 total
Tests: 19 passed, 19 total
Ran all test suites.

CdpV2SolanaWalletProvider unit tests

 PASS src/wallet-providers/cdpV2SolanaWalletProvider.test.ts
CdpV2SolanaWalletProvider
initialization
✓ should initialize with API keys (1 ms)
✓ should default to solana-devnet if network not provided
✓ should handle initialization failures gracefully (5 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name
✓ should get the balance (1 ms)
✓ should handle connection errors during balance check
transaction operations
✓ should sign transactions (1 ms)
✓ should send transactions
✓ should sign and send transactions
✓ should handle transaction failures during send (1 ms)
✓ should get signature status
✓ should wait for signature result
native transfer
✓ should transfer SOL
✓ should handle insufficient balance (3 ms)
✓ should handle invalid address (1 ms)
Test Suites: 1 passed, 1 total
Tests: 17 passed, 17 total
Ran all test suites.

Checklist

A couple of things to include in your PR for completeness:

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

@cb-heimdall

cb-heimdall commented Apr 15, 2025

Copy link
Copy Markdown

✅ Heimdall Review Status

RequirementStatusMore Info
Reviews1/1
Denominator calculation
Show calculation
1 if user is bot0
1 if user is external0
From .codeflow.yml1
Additional review requirements
Show calculation
Max0
0
From CODEOWNERS0
Global minimum0
Max 1
1
1 if commit is unverified0
Sum1

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation action provider New action provider wallet provider New wallet provider example New example agent typescript labels Apr 15, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 0334fdd to c14a299CompareApril 17, 2025 15:36
@CarsonRoscoeCarsonRoscoe changed the title feat: added CdpV2WalletProvider and CdpV2SolanaWalletProviderfeat: added CdpV2WalletProvider (EVM and Solana)Apr 17, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c14a299 to 3d397f6CompareApril 24, 2025 14:58
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 4129b46 to 347a889CompareApril 24, 2025 16:29
@github-actionsgithub-actionsBot added the framework extension New framework extension label Apr 24, 2025
@CarsonRoscoe
CarsonRoscoe marked this pull request as ready for review April 24, 2025 18:21
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 24, 2025 19:35
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 1f4f3c0 to c9fb0b3CompareApril 25, 2025 14:27
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c9fb0b3 to cc7f07cCompareApril 25, 2025 14:28
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/network/svm.ts
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2SolanaWalletProvider.ts Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/.env-local Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/chatbot.ts
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 25, 2025 21:08
@CarsonRoscoe
CarsonRoscoe merged commit f6b464a into mainApr 25, 2025
@CarsonRoscoe
CarsonRoscoe deleted the feat/cdp-wallet-provider-v2 branch April 25, 2025 21:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action providerNew action providerdocumentationImprovements or additions to documentationexampleNew example agentframework extensionNew framework extensiontypescriptwallet providerNew wallet provider

Development

Successfully merging this pull request may close these issues.

3 participants

@CarsonRoscoe@cb-heimdall@0xRAG
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat: added CdpV2WalletProvider (EVM and Solana) - #678

Merged
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2
Apr 25, 2025
Merged

feat: added CdpV2WalletProvider (EVM and Solana)#678
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2

Conversation

@CarsonRoscoe

@CarsonRoscoeCarsonRoscoe commented Apr 15, 2025

Copy link
Copy Markdown
Contributor

Description

Added:

  • CdpV2EvmWalletProvider using @coinbase/cdp-sdk
  • CdpV2SolanaWalletProvider using @coinbase/cdp-sdk
  • CdpV2WalletProvider, which allows for one entry point into either wallet provider based on config
  • Unified langchain-cdp-v2-chatbot using CdpV2WalletProvider, allowing you to swap networks

Notes:

  • @coinbase/cdp-sdk adds a dependency on jose, which is esm only. Our unit tests run as cjs. To get passed this, we had to mock jose in the packages before any tests run.
  • This jose dependency is also causing (WARN) Using hybrid module kind (Node16/18/Next) is only supported in "isolatedModules: true". Please set "isolatedModules: true" in your tsconfig.json. logs to spam in the console when running unit tests. We cannot follow its advice.

These are further justification for the dual-cjs/esm builds, while writing in esm. These logs and mocking will go away after that change.

Tests

CdpV2EvmWalletProvider unit tests

 PASS src/wallet-providers/cdpV2EvmWalletProvider.test.ts
CdpV2EvmWalletProvider
initialization
✓ should initialize with API keys (2 ms)
✓ should default to base-sepolia if network not provided
✓ should handle initialization failures gracefully (6 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name (1 ms)
✓ should get the balance
✓ should handle connection errors during balance check
signing operations
✓ should sign messages
✓ should sign typed data
✓ should sign transactions
✓ should handle signing failures
transaction operations
✓ should send transactions
✓ should handle transaction failures during send
✓ should handle receipt timeout errors
✓ should handle transaction with invalid address
contract interactions
✓ should read contract data
✓ should handle network errors during contract reads (3 ms)
✓ should handle invalid ABI format in contract reads
Test Suites: 1 passed, 1 total
Tests: 19 passed, 19 total
Ran all test suites.

CdpV2SolanaWalletProvider unit tests

 PASS src/wallet-providers/cdpV2SolanaWalletProvider.test.ts
CdpV2SolanaWalletProvider
initialization
✓ should initialize with API keys (1 ms)
✓ should default to solana-devnet if network not provided
✓ should handle initialization failures gracefully (5 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name
✓ should get the balance (1 ms)
✓ should handle connection errors during balance check
transaction operations
✓ should sign transactions (1 ms)
✓ should send transactions
✓ should sign and send transactions
✓ should handle transaction failures during send (1 ms)
✓ should get signature status
✓ should wait for signature result
native transfer
✓ should transfer SOL
✓ should handle insufficient balance (3 ms)
✓ should handle invalid address (1 ms)
Test Suites: 1 passed, 1 total
Tests: 17 passed, 17 total
Ran all test suites.

Checklist

A couple of things to include in your PR for completeness:

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

@cb-heimdall

cb-heimdall commented Apr 15, 2025

Copy link
Copy Markdown

✅ Heimdall Review Status

RequirementStatusMore Info
Reviews1/1
Denominator calculation
Show calculation
1 if user is bot0
1 if user is external0
From .codeflow.yml1
Additional review requirements
Show calculation
Max0
0
From CODEOWNERS0
Global minimum0
Max 1
1
1 if commit is unverified0
Sum1

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation action provider New action provider wallet provider New wallet provider example New example agent typescript labels Apr 15, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 0334fdd to c14a299CompareApril 17, 2025 15:36
@CarsonRoscoeCarsonRoscoe changed the title feat: added CdpV2WalletProvider and CdpV2SolanaWalletProviderfeat: added CdpV2WalletProvider (EVM and Solana)Apr 17, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c14a299 to 3d397f6CompareApril 24, 2025 14:58
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 4129b46 to 347a889CompareApril 24, 2025 16:29
@github-actionsgithub-actionsBot added the framework extension New framework extension label Apr 24, 2025
@CarsonRoscoe
CarsonRoscoe marked this pull request as ready for review April 24, 2025 18:21
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 24, 2025 19:35
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 1f4f3c0 to c9fb0b3CompareApril 25, 2025 14:27
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c9fb0b3 to cc7f07cCompareApril 25, 2025 14:28
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/network/svm.ts
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2SolanaWalletProvider.ts Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/.env-local Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/chatbot.ts
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 25, 2025 21:08
@CarsonRoscoe
CarsonRoscoe merged commit f6b464a into mainApr 25, 2025
@CarsonRoscoe
CarsonRoscoe deleted the feat/cdp-wallet-provider-v2 branch April 25, 2025 21:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action providerNew action providerdocumentationImprovements or additions to documentationexampleNew example agentframework extensionNew framework extensiontypescriptwallet providerNew wallet provider

Development

Successfully merging this pull request may close these issues.

3 participants

@CarsonRoscoe@cb-heimdall@0xRAG
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: added CdpV2WalletProvider (EVM and Solana) - #678

Merged
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2
Apr 25, 2025
Merged

feat: added CdpV2WalletProvider (EVM and Solana)#678
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2

Conversation

@CarsonRoscoe

@CarsonRoscoeCarsonRoscoe commented Apr 15, 2025

Copy link
Copy Markdown
Contributor

Description

Added:

  • CdpV2EvmWalletProvider using @coinbase/cdp-sdk
  • CdpV2SolanaWalletProvider using @coinbase/cdp-sdk
  • CdpV2WalletProvider, which allows for one entry point into either wallet provider based on config
  • Unified langchain-cdp-v2-chatbot using CdpV2WalletProvider, allowing you to swap networks

Notes:

  • @coinbase/cdp-sdk adds a dependency on jose, which is esm only. Our unit tests run as cjs. To get passed this, we had to mock jose in the packages before any tests run.
  • This jose dependency is also causing (WARN) Using hybrid module kind (Node16/18/Next) is only supported in "isolatedModules: true". Please set "isolatedModules: true" in your tsconfig.json. logs to spam in the console when running unit tests. We cannot follow its advice.

These are further justification for the dual-cjs/esm builds, while writing in esm. These logs and mocking will go away after that change.

Tests

CdpV2EvmWalletProvider unit tests

 PASS src/wallet-providers/cdpV2EvmWalletProvider.test.ts
CdpV2EvmWalletProvider
initialization
✓ should initialize with API keys (2 ms)
✓ should default to base-sepolia if network not provided
✓ should handle initialization failures gracefully (6 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name (1 ms)
✓ should get the balance
✓ should handle connection errors during balance check
signing operations
✓ should sign messages
✓ should sign typed data
✓ should sign transactions
✓ should handle signing failures
transaction operations
✓ should send transactions
✓ should handle transaction failures during send
✓ should handle receipt timeout errors
✓ should handle transaction with invalid address
contract interactions
✓ should read contract data
✓ should handle network errors during contract reads (3 ms)
✓ should handle invalid ABI format in contract reads
Test Suites: 1 passed, 1 total
Tests: 19 passed, 19 total
Ran all test suites.

CdpV2SolanaWalletProvider unit tests

 PASS src/wallet-providers/cdpV2SolanaWalletProvider.test.ts
CdpV2SolanaWalletProvider
initialization
✓ should initialize with API keys (1 ms)
✓ should default to solana-devnet if network not provided
✓ should handle initialization failures gracefully (5 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name
✓ should get the balance (1 ms)
✓ should handle connection errors during balance check
transaction operations
✓ should sign transactions (1 ms)
✓ should send transactions
✓ should sign and send transactions
✓ should handle transaction failures during send (1 ms)
✓ should get signature status
✓ should wait for signature result
native transfer
✓ should transfer SOL
✓ should handle insufficient balance (3 ms)
✓ should handle invalid address (1 ms)
Test Suites: 1 passed, 1 total
Tests: 17 passed, 17 total
Ran all test suites.

Checklist

A couple of things to include in your PR for completeness:

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

@cb-heimdall

cb-heimdall commented Apr 15, 2025

Copy link
Copy Markdown

✅ Heimdall Review Status

RequirementStatusMore Info
Reviews1/1
Denominator calculation
Show calculation
1 if user is bot0
1 if user is external0
From .codeflow.yml1
Additional review requirements
Show calculation
Max0
0
From CODEOWNERS0
Global minimum0
Max 1
1
1 if commit is unverified0
Sum1

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation action provider New action provider wallet provider New wallet provider example New example agent typescript labels Apr 15, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 0334fdd to c14a299CompareApril 17, 2025 15:36
@CarsonRoscoeCarsonRoscoe changed the title feat: added CdpV2WalletProvider and CdpV2SolanaWalletProviderfeat: added CdpV2WalletProvider (EVM and Solana)Apr 17, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c14a299 to 3d397f6CompareApril 24, 2025 14:58
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 4129b46 to 347a889CompareApril 24, 2025 16:29
@github-actionsgithub-actionsBot added the framework extension New framework extension label Apr 24, 2025
@CarsonRoscoe
CarsonRoscoe marked this pull request as ready for review April 24, 2025 18:21
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 24, 2025 19:35
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 1f4f3c0 to c9fb0b3CompareApril 25, 2025 14:27
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c9fb0b3 to cc7f07cCompareApril 25, 2025 14:28
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/network/svm.ts
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2SolanaWalletProvider.ts Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/.env-local Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/chatbot.ts
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 25, 2025 21:08
@CarsonRoscoe
CarsonRoscoe merged commit f6b464a into mainApr 25, 2025
@CarsonRoscoe
CarsonRoscoe deleted the feat/cdp-wallet-provider-v2 branch April 25, 2025 21:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action providerNew action providerdocumentationImprovements or additions to documentationexampleNew example agentframework extensionNew framework extensiontypescriptwallet providerNew wallet provider

Development

Successfully merging this pull request may close these issues.

3 participants

@CarsonRoscoe@cb-heimdall@0xRAG
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: added CdpV2WalletProvider (EVM and Solana) - #678

Merged
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2
Apr 25, 2025
Merged

feat: added CdpV2WalletProvider (EVM and Solana)#678
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2

Conversation

@CarsonRoscoe

@CarsonRoscoeCarsonRoscoe commented Apr 15, 2025

Copy link
Copy Markdown
Contributor

Description

Added:

  • CdpV2EvmWalletProvider using @coinbase/cdp-sdk
  • CdpV2SolanaWalletProvider using @coinbase/cdp-sdk
  • CdpV2WalletProvider, which allows for one entry point into either wallet provider based on config
  • Unified langchain-cdp-v2-chatbot using CdpV2WalletProvider, allowing you to swap networks

Notes:

  • @coinbase/cdp-sdk adds a dependency on jose, which is esm only. Our unit tests run as cjs. To get passed this, we had to mock jose in the packages before any tests run.
  • This jose dependency is also causing (WARN) Using hybrid module kind (Node16/18/Next) is only supported in "isolatedModules: true". Please set "isolatedModules: true" in your tsconfig.json. logs to spam in the console when running unit tests. We cannot follow its advice.

These are further justification for the dual-cjs/esm builds, while writing in esm. These logs and mocking will go away after that change.

Tests

CdpV2EvmWalletProvider unit tests

 PASS src/wallet-providers/cdpV2EvmWalletProvider.test.ts
CdpV2EvmWalletProvider
initialization
✓ should initialize with API keys (2 ms)
✓ should default to base-sepolia if network not provided
✓ should handle initialization failures gracefully (6 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name (1 ms)
✓ should get the balance
✓ should handle connection errors during balance check
signing operations
✓ should sign messages
✓ should sign typed data
✓ should sign transactions
✓ should handle signing failures
transaction operations
✓ should send transactions
✓ should handle transaction failures during send
✓ should handle receipt timeout errors
✓ should handle transaction with invalid address
contract interactions
✓ should read contract data
✓ should handle network errors during contract reads (3 ms)
✓ should handle invalid ABI format in contract reads
Test Suites: 1 passed, 1 total
Tests: 19 passed, 19 total
Ran all test suites.

CdpV2SolanaWalletProvider unit tests

 PASS src/wallet-providers/cdpV2SolanaWalletProvider.test.ts
CdpV2SolanaWalletProvider
initialization
✓ should initialize with API keys (1 ms)
✓ should default to solana-devnet if network not provided
✓ should handle initialization failures gracefully (5 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name
✓ should get the balance (1 ms)
✓ should handle connection errors during balance check
transaction operations
✓ should sign transactions (1 ms)
✓ should send transactions
✓ should sign and send transactions
✓ should handle transaction failures during send (1 ms)
✓ should get signature status
✓ should wait for signature result
native transfer
✓ should transfer SOL
✓ should handle insufficient balance (3 ms)
✓ should handle invalid address (1 ms)
Test Suites: 1 passed, 1 total
Tests: 17 passed, 17 total
Ran all test suites.

Checklist

A couple of things to include in your PR for completeness:

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

@cb-heimdall

cb-heimdall commented Apr 15, 2025

Copy link
Copy Markdown

✅ Heimdall Review Status

RequirementStatusMore Info
Reviews1/1
Denominator calculation
Show calculation
1 if user is bot0
1 if user is external0
From .codeflow.yml1
Additional review requirements
Show calculation
Max0
0
From CODEOWNERS0
Global minimum0
Max 1
1
1 if commit is unverified0
Sum1

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation action provider New action provider wallet provider New wallet provider example New example agent typescript labels Apr 15, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 0334fdd to c14a299CompareApril 17, 2025 15:36
@CarsonRoscoeCarsonRoscoe changed the title feat: added CdpV2WalletProvider and CdpV2SolanaWalletProviderfeat: added CdpV2WalletProvider (EVM and Solana)Apr 17, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c14a299 to 3d397f6CompareApril 24, 2025 14:58
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 4129b46 to 347a889CompareApril 24, 2025 16:29
@github-actionsgithub-actionsBot added the framework extension New framework extension label Apr 24, 2025
@CarsonRoscoe
CarsonRoscoe marked this pull request as ready for review April 24, 2025 18:21
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 24, 2025 19:35
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 1f4f3c0 to c9fb0b3CompareApril 25, 2025 14:27
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c9fb0b3 to cc7f07cCompareApril 25, 2025 14:28
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/network/svm.ts
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2SolanaWalletProvider.ts Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/.env-local Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/chatbot.ts
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 25, 2025 21:08
@CarsonRoscoe
CarsonRoscoe merged commit f6b464a into mainApr 25, 2025
@CarsonRoscoe
CarsonRoscoe deleted the feat/cdp-wallet-provider-v2 branch April 25, 2025 21:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action providerNew action providerdocumentationImprovements or additions to documentationexampleNew example agentframework extensionNew framework extensiontypescriptwallet providerNew wallet provider

Development

Successfully merging this pull request may close these issues.

3 participants

@CarsonRoscoe@cb-heimdall@0xRAG
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat: added CdpV2WalletProvider (EVM and Solana) - #678

Merged
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2
Apr 25, 2025
Merged

feat: added CdpV2WalletProvider (EVM and Solana)#678
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2

Conversation

@CarsonRoscoe

@CarsonRoscoeCarsonRoscoe commented Apr 15, 2025

Copy link
Copy Markdown
Contributor

Description

Added:

  • CdpV2EvmWalletProvider using @coinbase/cdp-sdk
  • CdpV2SolanaWalletProvider using @coinbase/cdp-sdk
  • CdpV2WalletProvider, which allows for one entry point into either wallet provider based on config
  • Unified langchain-cdp-v2-chatbot using CdpV2WalletProvider, allowing you to swap networks

Notes:

  • @coinbase/cdp-sdk adds a dependency on jose, which is esm only. Our unit tests run as cjs. To get passed this, we had to mock jose in the packages before any tests run.
  • This jose dependency is also causing (WARN) Using hybrid module kind (Node16/18/Next) is only supported in "isolatedModules: true". Please set "isolatedModules: true" in your tsconfig.json. logs to spam in the console when running unit tests. We cannot follow its advice.

These are further justification for the dual-cjs/esm builds, while writing in esm. These logs and mocking will go away after that change.

Tests

CdpV2EvmWalletProvider unit tests

 PASS src/wallet-providers/cdpV2EvmWalletProvider.test.ts
CdpV2EvmWalletProvider
initialization
✓ should initialize with API keys (2 ms)
✓ should default to base-sepolia if network not provided
✓ should handle initialization failures gracefully (6 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name (1 ms)
✓ should get the balance
✓ should handle connection errors during balance check
signing operations
✓ should sign messages
✓ should sign typed data
✓ should sign transactions
✓ should handle signing failures
transaction operations
✓ should send transactions
✓ should handle transaction failures during send
✓ should handle receipt timeout errors
✓ should handle transaction with invalid address
contract interactions
✓ should read contract data
✓ should handle network errors during contract reads (3 ms)
✓ should handle invalid ABI format in contract reads
Test Suites: 1 passed, 1 total
Tests: 19 passed, 19 total
Ran all test suites.

CdpV2SolanaWalletProvider unit tests

 PASS src/wallet-providers/cdpV2SolanaWalletProvider.test.ts
CdpV2SolanaWalletProvider
initialization
✓ should initialize with API keys (1 ms)
✓ should default to solana-devnet if network not provided
✓ should handle initialization failures gracefully (5 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name
✓ should get the balance (1 ms)
✓ should handle connection errors during balance check
transaction operations
✓ should sign transactions (1 ms)
✓ should send transactions
✓ should sign and send transactions
✓ should handle transaction failures during send (1 ms)
✓ should get signature status
✓ should wait for signature result
native transfer
✓ should transfer SOL
✓ should handle insufficient balance (3 ms)
✓ should handle invalid address (1 ms)
Test Suites: 1 passed, 1 total
Tests: 17 passed, 17 total
Ran all test suites.

Checklist

A couple of things to include in your PR for completeness:

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

@cb-heimdall

cb-heimdall commented Apr 15, 2025

Copy link
Copy Markdown

✅ Heimdall Review Status

RequirementStatusMore Info
Reviews1/1
Denominator calculation
Show calculation
1 if user is bot0
1 if user is external0
From .codeflow.yml1
Additional review requirements
Show calculation
Max0
0
From CODEOWNERS0
Global minimum0
Max 1
1
1 if commit is unverified0
Sum1

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation action provider New action provider wallet provider New wallet provider example New example agent typescript labels Apr 15, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 0334fdd to c14a299CompareApril 17, 2025 15:36
@CarsonRoscoeCarsonRoscoe changed the title feat: added CdpV2WalletProvider and CdpV2SolanaWalletProviderfeat: added CdpV2WalletProvider (EVM and Solana)Apr 17, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c14a299 to 3d397f6CompareApril 24, 2025 14:58
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 4129b46 to 347a889CompareApril 24, 2025 16:29
@github-actionsgithub-actionsBot added the framework extension New framework extension label Apr 24, 2025
@CarsonRoscoe
CarsonRoscoe marked this pull request as ready for review April 24, 2025 18:21
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 24, 2025 19:35
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 1f4f3c0 to c9fb0b3CompareApril 25, 2025 14:27
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c9fb0b3 to cc7f07cCompareApril 25, 2025 14:28
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/network/svm.ts
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2SolanaWalletProvider.ts Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/.env-local Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/chatbot.ts
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 25, 2025 21:08
@CarsonRoscoe
CarsonRoscoe merged commit f6b464a into mainApr 25, 2025
@CarsonRoscoe
CarsonRoscoe deleted the feat/cdp-wallet-provider-v2 branch April 25, 2025 21:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action providerNew action providerdocumentationImprovements or additions to documentationexampleNew example agentframework extensionNew framework extensiontypescriptwallet providerNew wallet provider

Development

Successfully merging this pull request may close these issues.

3 participants

@CarsonRoscoe@cb-heimdall@0xRAG
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: added CdpV2WalletProvider (EVM and Solana) - #678

Merged
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2
Apr 25, 2025
Merged

feat: added CdpV2WalletProvider (EVM and Solana)#678
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2

Conversation

@CarsonRoscoe

@CarsonRoscoeCarsonRoscoe commented Apr 15, 2025

Copy link
Copy Markdown
Contributor

Description

Added:

  • CdpV2EvmWalletProvider using @coinbase/cdp-sdk
  • CdpV2SolanaWalletProvider using @coinbase/cdp-sdk
  • CdpV2WalletProvider, which allows for one entry point into either wallet provider based on config
  • Unified langchain-cdp-v2-chatbot using CdpV2WalletProvider, allowing you to swap networks

Notes:

  • @coinbase/cdp-sdk adds a dependency on jose, which is esm only. Our unit tests run as cjs. To get passed this, we had to mock jose in the packages before any tests run.
  • This jose dependency is also causing (WARN) Using hybrid module kind (Node16/18/Next) is only supported in "isolatedModules: true". Please set "isolatedModules: true" in your tsconfig.json. logs to spam in the console when running unit tests. We cannot follow its advice.

These are further justification for the dual-cjs/esm builds, while writing in esm. These logs and mocking will go away after that change.

Tests

CdpV2EvmWalletProvider unit tests

 PASS src/wallet-providers/cdpV2EvmWalletProvider.test.ts
CdpV2EvmWalletProvider
initialization
✓ should initialize with API keys (2 ms)
✓ should default to base-sepolia if network not provided
✓ should handle initialization failures gracefully (6 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name (1 ms)
✓ should get the balance
✓ should handle connection errors during balance check
signing operations
✓ should sign messages
✓ should sign typed data
✓ should sign transactions
✓ should handle signing failures
transaction operations
✓ should send transactions
✓ should handle transaction failures during send
✓ should handle receipt timeout errors
✓ should handle transaction with invalid address
contract interactions
✓ should read contract data
✓ should handle network errors during contract reads (3 ms)
✓ should handle invalid ABI format in contract reads
Test Suites: 1 passed, 1 total
Tests: 19 passed, 19 total
Ran all test suites.

CdpV2SolanaWalletProvider unit tests

 PASS src/wallet-providers/cdpV2SolanaWalletProvider.test.ts
CdpV2SolanaWalletProvider
initialization
✓ should initialize with API keys (1 ms)
✓ should default to solana-devnet if network not provided
✓ should handle initialization failures gracefully (5 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name
✓ should get the balance (1 ms)
✓ should handle connection errors during balance check
transaction operations
✓ should sign transactions (1 ms)
✓ should send transactions
✓ should sign and send transactions
✓ should handle transaction failures during send (1 ms)
✓ should get signature status
✓ should wait for signature result
native transfer
✓ should transfer SOL
✓ should handle insufficient balance (3 ms)
✓ should handle invalid address (1 ms)
Test Suites: 1 passed, 1 total
Tests: 17 passed, 17 total
Ran all test suites.

Checklist

A couple of things to include in your PR for completeness:

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

@cb-heimdall

cb-heimdall commented Apr 15, 2025

Copy link
Copy Markdown

✅ Heimdall Review Status

RequirementStatusMore Info
Reviews1/1
Denominator calculation
Show calculation
1 if user is bot0
1 if user is external0
From .codeflow.yml1
Additional review requirements
Show calculation
Max0
0
From CODEOWNERS0
Global minimum0
Max 1
1
1 if commit is unverified0
Sum1

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation action provider New action provider wallet provider New wallet provider example New example agent typescript labels Apr 15, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 0334fdd to c14a299CompareApril 17, 2025 15:36
@CarsonRoscoeCarsonRoscoe changed the title feat: added CdpV2WalletProvider and CdpV2SolanaWalletProviderfeat: added CdpV2WalletProvider (EVM and Solana)Apr 17, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c14a299 to 3d397f6CompareApril 24, 2025 14:58
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 4129b46 to 347a889CompareApril 24, 2025 16:29
@github-actionsgithub-actionsBot added the framework extension New framework extension label Apr 24, 2025
@CarsonRoscoe
CarsonRoscoe marked this pull request as ready for review April 24, 2025 18:21
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 24, 2025 19:35
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 1f4f3c0 to c9fb0b3CompareApril 25, 2025 14:27
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c9fb0b3 to cc7f07cCompareApril 25, 2025 14:28
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/network/svm.ts
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2SolanaWalletProvider.ts Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/.env-local Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/chatbot.ts
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 25, 2025 21:08
@CarsonRoscoe
CarsonRoscoe merged commit f6b464a into mainApr 25, 2025
@CarsonRoscoe
CarsonRoscoe deleted the feat/cdp-wallet-provider-v2 branch April 25, 2025 21:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action providerNew action providerdocumentationImprovements or additions to documentationexampleNew example agentframework extensionNew framework extensiontypescriptwallet providerNew wallet provider

Development

Successfully merging this pull request may close these issues.

3 participants

@CarsonRoscoe@cb-heimdall@0xRAG
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: added CdpV2WalletProvider (EVM and Solana) - #678

Merged
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2
Apr 25, 2025
Merged

feat: added CdpV2WalletProvider (EVM and Solana)#678
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2

Conversation

@CarsonRoscoe

@CarsonRoscoeCarsonRoscoe commented Apr 15, 2025

Copy link
Copy Markdown
Contributor

Description

Added:

  • CdpV2EvmWalletProvider using @coinbase/cdp-sdk
  • CdpV2SolanaWalletProvider using @coinbase/cdp-sdk
  • CdpV2WalletProvider, which allows for one entry point into either wallet provider based on config
  • Unified langchain-cdp-v2-chatbot using CdpV2WalletProvider, allowing you to swap networks

Notes:

  • @coinbase/cdp-sdk adds a dependency on jose, which is esm only. Our unit tests run as cjs. To get passed this, we had to mock jose in the packages before any tests run.
  • This jose dependency is also causing (WARN) Using hybrid module kind (Node16/18/Next) is only supported in "isolatedModules: true". Please set "isolatedModules: true" in your tsconfig.json. logs to spam in the console when running unit tests. We cannot follow its advice.

These are further justification for the dual-cjs/esm builds, while writing in esm. These logs and mocking will go away after that change.

Tests

CdpV2EvmWalletProvider unit tests

 PASS src/wallet-providers/cdpV2EvmWalletProvider.test.ts
CdpV2EvmWalletProvider
initialization
✓ should initialize with API keys (2 ms)
✓ should default to base-sepolia if network not provided
✓ should handle initialization failures gracefully (6 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name (1 ms)
✓ should get the balance
✓ should handle connection errors during balance check
signing operations
✓ should sign messages
✓ should sign typed data
✓ should sign transactions
✓ should handle signing failures
transaction operations
✓ should send transactions
✓ should handle transaction failures during send
✓ should handle receipt timeout errors
✓ should handle transaction with invalid address
contract interactions
✓ should read contract data
✓ should handle network errors during contract reads (3 ms)
✓ should handle invalid ABI format in contract reads
Test Suites: 1 passed, 1 total
Tests: 19 passed, 19 total
Ran all test suites.

CdpV2SolanaWalletProvider unit tests

 PASS src/wallet-providers/cdpV2SolanaWalletProvider.test.ts
CdpV2SolanaWalletProvider
initialization
✓ should initialize with API keys (1 ms)
✓ should default to solana-devnet if network not provided
✓ should handle initialization failures gracefully (5 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name
✓ should get the balance (1 ms)
✓ should handle connection errors during balance check
transaction operations
✓ should sign transactions (1 ms)
✓ should send transactions
✓ should sign and send transactions
✓ should handle transaction failures during send (1 ms)
✓ should get signature status
✓ should wait for signature result
native transfer
✓ should transfer SOL
✓ should handle insufficient balance (3 ms)
✓ should handle invalid address (1 ms)
Test Suites: 1 passed, 1 total
Tests: 17 passed, 17 total
Ran all test suites.

Checklist

A couple of things to include in your PR for completeness:

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

@cb-heimdall

cb-heimdall commented Apr 15, 2025

Copy link
Copy Markdown

✅ Heimdall Review Status

RequirementStatusMore Info
Reviews1/1
Denominator calculation
Show calculation
1 if user is bot0
1 if user is external0
From .codeflow.yml1
Additional review requirements
Show calculation
Max0
0
From CODEOWNERS0
Global minimum0
Max 1
1
1 if commit is unverified0
Sum1

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation action provider New action provider wallet provider New wallet provider example New example agent typescript labels Apr 15, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 0334fdd to c14a299CompareApril 17, 2025 15:36
@CarsonRoscoeCarsonRoscoe changed the title feat: added CdpV2WalletProvider and CdpV2SolanaWalletProviderfeat: added CdpV2WalletProvider (EVM and Solana)Apr 17, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c14a299 to 3d397f6CompareApril 24, 2025 14:58
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 4129b46 to 347a889CompareApril 24, 2025 16:29
@github-actionsgithub-actionsBot added the framework extension New framework extension label Apr 24, 2025
@CarsonRoscoe
CarsonRoscoe marked this pull request as ready for review April 24, 2025 18:21
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 24, 2025 19:35
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 1f4f3c0 to c9fb0b3CompareApril 25, 2025 14:27
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c9fb0b3 to cc7f07cCompareApril 25, 2025 14:28
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/network/svm.ts
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2SolanaWalletProvider.ts Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/.env-local Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/chatbot.ts
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 25, 2025 21:08
@CarsonRoscoe
CarsonRoscoe merged commit f6b464a into mainApr 25, 2025
@CarsonRoscoe
CarsonRoscoe deleted the feat/cdp-wallet-provider-v2 branch April 25, 2025 21:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action providerNew action providerdocumentationImprovements or additions to documentationexampleNew example agentframework extensionNew framework extensiontypescriptwallet providerNew wallet provider

Development

Successfully merging this pull request may close these issues.

3 participants

@CarsonRoscoe@cb-heimdall@0xRAG
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat: added CdpV2WalletProvider (EVM and Solana) - #678

Merged
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2
Apr 25, 2025
Merged

feat: added CdpV2WalletProvider (EVM and Solana)#678
CarsonRoscoe merged 11 commits into
mainfrom
feat/cdp-wallet-provider-v2

Conversation

@CarsonRoscoe

@CarsonRoscoeCarsonRoscoe commented Apr 15, 2025

Copy link
Copy Markdown
Contributor

Description

Added:

  • CdpV2EvmWalletProvider using @coinbase/cdp-sdk
  • CdpV2SolanaWalletProvider using @coinbase/cdp-sdk
  • CdpV2WalletProvider, which allows for one entry point into either wallet provider based on config
  • Unified langchain-cdp-v2-chatbot using CdpV2WalletProvider, allowing you to swap networks

Notes:

  • @coinbase/cdp-sdk adds a dependency on jose, which is esm only. Our unit tests run as cjs. To get passed this, we had to mock jose in the packages before any tests run.
  • This jose dependency is also causing (WARN) Using hybrid module kind (Node16/18/Next) is only supported in "isolatedModules: true". Please set "isolatedModules: true" in your tsconfig.json. logs to spam in the console when running unit tests. We cannot follow its advice.

These are further justification for the dual-cjs/esm builds, while writing in esm. These logs and mocking will go away after that change.

Tests

CdpV2EvmWalletProvider unit tests

 PASS src/wallet-providers/cdpV2EvmWalletProvider.test.ts
CdpV2EvmWalletProvider
initialization
✓ should initialize with API keys (2 ms)
✓ should default to base-sepolia if network not provided
✓ should handle initialization failures gracefully (6 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name (1 ms)
✓ should get the balance
✓ should handle connection errors during balance check
signing operations
✓ should sign messages
✓ should sign typed data
✓ should sign transactions
✓ should handle signing failures
transaction operations
✓ should send transactions
✓ should handle transaction failures during send
✓ should handle receipt timeout errors
✓ should handle transaction with invalid address
contract interactions
✓ should read contract data
✓ should handle network errors during contract reads (3 ms)
✓ should handle invalid ABI format in contract reads
Test Suites: 1 passed, 1 total
Tests: 19 passed, 19 total
Ran all test suites.

CdpV2SolanaWalletProvider unit tests

 PASS src/wallet-providers/cdpV2SolanaWalletProvider.test.ts
CdpV2SolanaWalletProvider
initialization
✓ should initialize with API keys (1 ms)
✓ should default to solana-devnet if network not provided
✓ should handle initialization failures gracefully (5 ms)
basic wallet methods
✓ should get the address
✓ should get the network
✓ should get the name
✓ should get the balance (1 ms)
✓ should handle connection errors during balance check
transaction operations
✓ should sign transactions (1 ms)
✓ should send transactions
✓ should sign and send transactions
✓ should handle transaction failures during send (1 ms)
✓ should get signature status
✓ should wait for signature result
native transfer
✓ should transfer SOL
✓ should handle insufficient balance (3 ms)
✓ should handle invalid address (1 ms)
Test Suites: 1 passed, 1 total
Tests: 17 passed, 17 total
Ran all test suites.

Checklist

A couple of things to include in your PR for completeness:

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

@cb-heimdall

cb-heimdall commented Apr 15, 2025

Copy link
Copy Markdown

✅ Heimdall Review Status

RequirementStatusMore Info
Reviews1/1
Denominator calculation
Show calculation
1 if user is bot0
1 if user is external0
From .codeflow.yml1
Additional review requirements
Show calculation
Max0
0
From CODEOWNERS0
Global minimum0
Max 1
1
1 if commit is unverified0
Sum1

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation action provider New action provider wallet provider New wallet provider example New example agent typescript labels Apr 15, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 0334fdd to c14a299CompareApril 17, 2025 15:36
@CarsonRoscoeCarsonRoscoe changed the title feat: added CdpV2WalletProvider and CdpV2SolanaWalletProviderfeat: added CdpV2WalletProvider (EVM and Solana)Apr 17, 2025
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c14a299 to 3d397f6CompareApril 24, 2025 14:58
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 4129b46 to 347a889CompareApril 24, 2025 16:29
@github-actionsgithub-actionsBot added the framework extension New framework extension label Apr 24, 2025
@CarsonRoscoe
CarsonRoscoe marked this pull request as ready for review April 24, 2025 18:21
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 24, 2025 19:35
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from 1f4f3c0 to c9fb0b3CompareApril 25, 2025 14:27
@CarsonRoscoe
CarsonRoscoeforce-pushed the feat/cdp-wallet-provider-v2 branch from c9fb0b3 to cc7f07cCompareApril 25, 2025 14:28
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/action-providers/cdp-v2/cdpApiV2ActionProvider.ts Outdated
Comment threadtypescript/agentkit/src/network/svm.ts
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2EvmWalletProvider.ts Outdated
Comment threadtypescript/agentkit/src/wallet-providers/cdpV2SolanaWalletProvider.ts Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/.env-local Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/README.md Outdated
Comment threadtypescript/examples/langchain-cdp-v2-chatbot/chatbot.ts
@CarsonRoscoe
CarsonRoscoe requested a review from 0xRAGApril 25, 2025 21:08
@CarsonRoscoe
CarsonRoscoe merged commit f6b464a into mainApr 25, 2025
@CarsonRoscoe
CarsonRoscoe deleted the feat/cdp-wallet-provider-v2 branch April 25, 2025 21:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action providerNew action providerdocumentationImprovements or additions to documentationexampleNew example agentframework extensionNew framework extensiontypescriptwallet providerNew wallet provider

Development

Successfully merging this pull request may close these issues.

3 participants

@CarsonRoscoe@cb-heimdall@0xRAG