From 41c75c3713daa1593ca1c32bf026a98d5292ba5a Mon Sep 17 00:00:00 2001 From: Wyatt Barnes Date: Fri, 30 Jan 2026 13:38:24 -1000 Subject: [PATCH 1/9] fix: convert jwt auth to siwe --- .../{.env.test.example => .env.example} | 0 .../completeAppInstallation.ts | 1 - .../vincent-registry-api/generateSiweAuth.ts | 155 ++++++++++++++++++ .../vincent-registry-api/registerApp.ts | 10 +- .../registerAppVersion.ts | 10 +- .../setActiveAppVersion.ts | 10 +- .../test/setupVincentDevEnv.spec.ts | 57 ++++--- 7 files changed, 208 insertions(+), 35 deletions(-) rename packages/libs/e2e-test-utils/{.env.test.example => .env.example} (100%) create mode 100644 packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateSiweAuth.ts diff --git a/packages/libs/e2e-test-utils/.env.test.example b/packages/libs/e2e-test-utils/.env.example similarity index 100% rename from packages/libs/e2e-test-utils/.env.test.example rename to packages/libs/e2e-test-utils/.env.example diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/completeAppInstallation.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/completeAppInstallation.ts index b12560644..9ba5f27ad 100644 --- a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/completeAppInstallation.ts +++ b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/completeAppInstallation.ts @@ -56,7 +56,6 @@ export async function completeAppInstallation({ body: JSON.stringify({ userControllerAddress: viemAccount.address, agentSignerAddress, - appId, appInstallation: { typedDataSignature: appInstallationSignature, dataToSign: appInstallationDataToSign, diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateSiweAuth.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateSiweAuth.ts new file mode 100644 index 000000000..787afb8fb --- /dev/null +++ b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateSiweAuth.ts @@ -0,0 +1,155 @@ +import { Wallet } from 'ethers'; +import { getAddress } from 'viem'; +import crypto from 'crypto'; + +/** + * Generate a secure random nonce for SIWE + */ +function generateNonce(): string { + // Generate 16 random bytes and convert to hex string + const array = new Uint8Array(16); + crypto.randomFillSync(array); + return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join(''); +} + +/** + * Creates a SIWE message following the EIP-4361 spec + */ +function createSiweMessage(params: { + domain: string; + address: string; + uri: string; + nonce: string; + issuedAt: string; + expirationTime?: string; + statement?: string; + chainId?: number; + version?: string; +}): string { + const { + domain, + address, + uri, + nonce, + issuedAt, + expirationTime, + statement = 'Sign in with Ethereum to authenticate with Vincent Registry API', + chainId = 85452, + version = '1', + } = params; + + const lines = [ + `${domain} wants you to sign in with your Ethereum account:`, + address, + '', + statement, + '', + `URI: ${uri}`, + `Version: ${version}`, + `Chain ID: ${chainId}`, + `Nonce: ${nonce}`, + `Issued At: ${issuedAt}`, + ]; + + if (expirationTime) { + lines.push(`Expiration Time: ${expirationTime}`); + } + + return lines.join('\n'); +} + +/** + * Infers the SIWE domain and URI from the Vincent API URL + * Production: url='https://api.heyvincent.ai' -> domain='vincent-dashboard-20.vercel.app', uri='https://api.heyvincent.ai' + * Development: url='http://localhost:3000' -> domain='localhost:3000', uri='http://localhost:3000' + */ +function inferDomainAndUri(apiUrl: string): { domain: string; uri: string } { + const urlObj = new URL(apiUrl); + + // Check if it's production API + if (urlObj.hostname === 'api.heyvincent.ai') { + return { + domain: 'vincent-dashboard-20.vercel.app', + uri: apiUrl, + }; + } + + // For localhost or other environments, use the URL's host (including port) + return { + domain: urlObj.host, // includes port if present + uri: apiUrl, + }; +} + +/** + * Generates a SIWE (Sign-In with Ethereum) authentication header for Vincent Registry API + * @param appManagerPrivateKey - The private key of the app manager + * @param vincentApiUrl - The Vincent Registry API URL (e.g., 'http://localhost:3000' or 'https://api.heyvincent.ai') + * @param domain - Optional override for the domain (if not provided, will be inferred from vincentApiUrl) + * @returns The Authorization header value in the format "SIWE " + */ +export async function generateSiweAuth({ + appManagerPrivateKey, + vincentApiUrl, + domain: domainOverride, +}: { + appManagerPrivateKey: `0x${string}`; + vincentApiUrl?: string; + domain?: string; +}): Promise { + const wallet = new Wallet(appManagerPrivateKey); + + // Get checksummed address (EIP-55 required by SIWE) + const address = await wallet.getAddress(); + const checksummedAddress = getAddress(address); + + // Infer domain and URI from the API URL, or use override + let domain: string; + let uri: string; + + if (domainOverride) { + // If domain is explicitly provided, use it + domain = domainOverride; + // Infer URI from domain if not using vincentApiUrl + uri = + vincentApiUrl || (domain.includes('localhost') ? `http://${domain}` : `https://${domain}`); + } else if (vincentApiUrl) { + // Infer both domain and URI from the API URL + const inferred = inferDomainAndUri(vincentApiUrl); + domain = inferred.domain; + uri = inferred.uri; + } else { + // Fallback to localhost defaults + domain = 'localhost:3000'; + uri = 'http://localhost:3000'; + } + + const timestamp = Date.now(); + const issuedAt = new Date(timestamp).toISOString(); + const expirationTime = new Date(timestamp + 7 * 24 * 60 * 60 * 1000).toISOString(); // 7 days + + // Create the SIWE message + const message = createSiweMessage({ + domain, + address: checksummedAddress, + uri, + nonce: generateNonce(), + issuedAt, + expirationTime, + }); + + // Request signature from wallet + const signature = await wallet.signMessage(message); + + // Create the payload + const payload = JSON.stringify({ + message, + signature, + }); + + // Encode as base64 + const base64Payload = Buffer.from(payload, 'utf-8').toString('base64'); + + // Return the Authorization header value + return `SIWE ${base64Payload}`; +} diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/registerApp.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/registerApp.ts index 7834a8a3e..c4230ba09 100644 --- a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/registerApp.ts +++ b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/registerApp.ts @@ -1,27 +1,31 @@ import type { AppMetadata } from '../setupVincentDevEnv'; -import { generateAppManagerJwt } from './generateAppManagerJwt'; +import { generateSiweAuth } from './generateSiweAuth'; export async function registerApp({ vincentApiUrl, appManagerPrivateKey, appId, appMetadata, + domain, }: { vincentApiUrl: string; appManagerPrivateKey: `0x${string}`; appId: number; appMetadata: AppMetadata; + domain?: string; }): Promise { - const jwtToken = await generateAppManagerJwt({ + const authHeader = await generateSiweAuth({ appManagerPrivateKey, + vincentApiUrl, + domain, }); const response = await fetch(`${vincentApiUrl}/app`, { method: 'POST', headers: { 'Content-Type': 'application/json', - Authorization: `Bearer ${jwtToken}`, + Authorization: authHeader, }, body: JSON.stringify({ appId, diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/registerAppVersion.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/registerAppVersion.ts index f1efa8606..adf46807b 100644 --- a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/registerAppVersion.ts +++ b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/registerAppVersion.ts @@ -1,25 +1,29 @@ -import { generateAppManagerJwt } from './generateAppManagerJwt'; +import { generateSiweAuth } from './generateSiweAuth'; export async function registerAppVersion({ vincentApiUrl, appManagerPrivateKey, appId, whatChanged, + domain, }: { vincentApiUrl: string; appManagerPrivateKey: `0x${string}`; appId: number; whatChanged: string; + domain?: string; }): Promise<{ newAppVersion: number }> { - const jwtToken = await generateAppManagerJwt({ + const authHeader = await generateSiweAuth({ appManagerPrivateKey, + vincentApiUrl, + domain, }); const response = await fetch(`${vincentApiUrl}/app/${appId}/version`, { method: 'POST', headers: { 'Content-Type': 'application/json', - Authorization: `Bearer ${jwtToken}`, + Authorization: authHeader, }, body: JSON.stringify({ changes: whatChanged, diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/setActiveAppVersion.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/setActiveAppVersion.ts index 7c0c1428a..d9c39aabe 100644 --- a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/setActiveAppVersion.ts +++ b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/setActiveAppVersion.ts @@ -1,27 +1,31 @@ -import { generateAppManagerJwt } from './generateAppManagerJwt'; +import { generateSiweAuth } from './generateSiweAuth'; export async function setActiveVersion({ vincentApiUrl, appManagerPrivateKey, appId, activeVersion, + domain, }: { vincentApiUrl: string; appManagerPrivateKey: `0x${string}`; appId: number; activeVersion: number; + domain?: string; }): Promise { console.log('=== Setting active version with Vincent API ==='); - const jwtToken = await generateAppManagerJwt({ + const authHeader = await generateSiweAuth({ appManagerPrivateKey, + vincentApiUrl, + domain, }); const response = await fetch(`${vincentApiUrl}/app/${appId}/setActiveVersion`, { method: 'POST', headers: { 'Content-Type': 'application/json', - Authorization: `Bearer ${jwtToken}`, + Authorization: authHeader, }, body: JSON.stringify({ activeVersion, diff --git a/packages/libs/e2e-test-utils/test/setupVincentDevEnv.spec.ts b/packages/libs/e2e-test-utils/test/setupVincentDevEnv.spec.ts index dd7246714..90a122406 100644 --- a/packages/libs/e2e-test-utils/test/setupVincentDevEnv.spec.ts +++ b/packages/libs/e2e-test-utils/test/setupVincentDevEnv.spec.ts @@ -1,5 +1,5 @@ import { ethers } from 'ethers'; -import { baseSepolia } from 'viem/chains'; +import { base, baseSepolia } from 'viem/chains'; import { getClient } from '@lit-protocol/vincent-contracts-sdk'; @@ -172,19 +172,19 @@ describe('Vincent Development Environment Setup', () => { describe('PKP and Smart Account', () => { it('should have PKP signer address from registry API', () => { - expect(env.agentSmartAccount.agentSignerAddress).toBeDefined(); - expect(env.agentSmartAccount.agentSignerAddress).toMatch(/^0x[a-fA-F0-9]{40}$/); + expect(env.agentSmartAccount!.agentSignerAddress).toBeDefined(); + expect(env.agentSmartAccount!.agentSignerAddress).toMatch(/^0x[a-fA-F0-9]{40}$/); }); it('should have smart account address', () => { - expect(env.agentSmartAccount.address).toBeDefined(); - expect(env.agentSmartAccount.address).toMatch(/^0x[a-fA-F0-9]{40}$/); + expect(env.agentSmartAccount!.address).toBeDefined(); + expect(env.agentSmartAccount!.address).toMatch(/^0x[a-fA-F0-9]{40}$/); }); it('should have smart account deployed on-chain', async () => { // Smart account is deployed on the smart account chain, not the Vincent Registry chain const provider = new ethers.providers.JsonRpcProvider(env.smartAccountChainRpcUrl); - const code = await provider.getCode(env.agentSmartAccount.address); + const code = await provider.getCode(env.agentSmartAccount!.address); expect(code).toBeDefined(); expect(code).not.toBe('0x'); @@ -193,24 +193,31 @@ describe('Vincent Development Environment Setup', () => { it('should have deployment transaction hash (or be already deployed)', () => { // deploymentTxHash might be undefined if already installed - if (env.agentSmartAccount.deploymentTxHash) { - expect(env.agentSmartAccount.deploymentTxHash).toMatch(/^0x[a-fA-F0-9]{64}$/); + if (env.agentSmartAccount!.deploymentTxHash) { + expect(env.agentSmartAccount!.deploymentTxHash).toMatch(/^0x[a-fA-F0-9]{64}$/); } }); it('should have serialized permission account (or be already installed)', () => { // serializedPermissionAccount might be undefined if already installed - if (env.agentSmartAccount.serializedPermissionAccount) { - expect(env.agentSmartAccount.serializedPermissionAccount).toBeTruthy(); - expect(env.agentSmartAccount.serializedPermissionAccount.length).toBeGreaterThan(0); - expect(() => JSON.parse(env.agentSmartAccount.serializedPermissionAccount!)).not.toThrow(); + if (env.agentSmartAccount!.serializedPermissionAccount) { + expect(env.agentSmartAccount!.serializedPermissionAccount).toBeTruthy(); + expect(env.agentSmartAccount!.serializedPermissionAccount.length).toBeGreaterThan(0); + expect(() => + Buffer.from(env.agentSmartAccount!.serializedPermissionAccount!, 'base64'), + ).not.toThrow(); + const decoded = Buffer.from( + env.agentSmartAccount!.serializedPermissionAccount!, + 'base64', + ).toString('utf-8'); + expect(() => JSON.parse(decoded)).not.toThrow(); } }); it('should have permit app version transaction hash (or be already installed)', () => { // permitAppVersionTxHash might be undefined if already installed - if (env.agentSmartAccount.permitAppVersionTxHash) { - expect(env.agentSmartAccount.permitAppVersionTxHash).toMatch(/^0x[a-fA-F0-9]{64}$/); + if (env.agentSmartAccount!.permitAppVersionTxHash) { + expect(env.agentSmartAccount!.permitAppVersionTxHash).toMatch(/^0x[a-fA-F0-9]{64}$/); } }); @@ -220,7 +227,7 @@ describe('Vincent Development Environment Setup', () => { const contractClient = getClient({ signer: wallet }); const userAddress = await contractClient.getUserAddressForAgent({ - agentAddress: env.agentSmartAccount.address as `0x${string}`, + agentAddress: env.agentSmartAccount!.address as `0x${string}`, }); expect(userAddress).toBeDefined(); @@ -336,12 +343,12 @@ describe('Vincent Development Environment Setup', () => { describe('Integration Checks', () => { it('should have PKP and smart account addresses that are different', () => { - expect(env.agentSmartAccount.agentSignerAddress).not.toBe(env.agentSmartAccount.address); - expect(env.agentSmartAccount.agentSignerAddress).not.toBe(env.accounts.userEoa.address); + expect(env.agentSmartAccount!.agentSignerAddress).not.toBe(env.agentSmartAccount!.address); + expect(env.agentSmartAccount!.agentSignerAddress).not.toBe(env.accounts.userEoa.address); }); it('should have smart account different from user EOA', () => { - expect(env.agentSmartAccount.address.toLowerCase()).not.toBe( + expect(env.agentSmartAccount!.address.toLowerCase()).not.toBe( env.accounts.userEoa.address.toLowerCase(), ); }); @@ -355,7 +362,7 @@ describe('Vincent Development Environment Setup', () => { expect(env.accounts).toBeDefined(); expect(env.ethersWallets).toBeDefined(); expect(env.clients).toBeDefined(); - expect(env.agentSmartAccount).toBeDefined(); + expect(env.agentSmartAccount!).toBeDefined(); }); it('should have correct chain ID for Vincent Registry', () => { @@ -375,15 +382,15 @@ describe('Vincent Development Environment Setup', () => { 'App Manager': env.accounts.appManager.address, 'App Delegatee': env.accounts.appDelegatee.address, 'User EOA': env.accounts.userEoa.address, - 'Agent Signer Address': env.agentSmartAccount.agentSignerAddress, - 'Agent Smart Account Address': env.agentSmartAccount.address, + 'Agent Signer Address': env.agentSmartAccount!.agentSignerAddress, + 'Agent Smart Account Address': env.agentSmartAccount!.address, 'Smart Account Deployment Tx': - env.agentSmartAccount.deploymentTxHash || 'N/A (already installed)', - 'Serialized Permission Account': env.agentSmartAccount.serializedPermissionAccount - ? env.agentSmartAccount.serializedPermissionAccount.substring(0, 50) + '...' + env.agentSmartAccount!.deploymentTxHash || 'N/A (already installed)', + 'Serialized Permission Account': env.agentSmartAccount!.serializedPermissionAccount + ? env.agentSmartAccount!.serializedPermissionAccount.substring(0, 50) + '...' : 'N/A (already installed)', 'Permit App Version Tx': - env.agentSmartAccount.permitAppVersionTxHash || 'N/A (already installed)', + env.agentSmartAccount!.permitAppVersionTxHash || 'N/A (already installed)', 'Vincent Registry Chain': `${vincentRegistryChain.name} (${vincentRegistryChain.id})`, 'Smart Account Chain': `${smartAccountChain.name} (${smartAccountChain.id})`, }); From 4d7da1f5f259044deb2ffbb48674974ca7e9e27f Mon Sep 17 00:00:00 2001 From: Wyatt Barnes Date: Fri, 30 Jan 2026 13:41:32 -1000 Subject: [PATCH 2/9] chore: bump e2e-test-utils to alpha version --- packages/libs/e2e-test-utils/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/libs/e2e-test-utils/package.json b/packages/libs/e2e-test-utils/package.json index ab7434cd7..ec7bc06b1 100644 --- a/packages/libs/e2e-test-utils/package.json +++ b/packages/libs/e2e-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@lit-protocol/vincent-e2e-test-utils", - "version": "4.0.0", + "version": "4.0.1-alpha.0", "publishConfig": { "access": "public" }, From b08cc44c4b563ac5b3b815153e2486e922ba2045 Mon Sep 17 00:00:00 2001 From: Wyatt Barnes Date: Fri, 30 Jan 2026 14:00:29 -1000 Subject: [PATCH 3/9] chore: linter --- packages/libs/e2e-test-utils/package.json | 5 ----- .../setup-dev-env/vincent-registry-api/generateSiweAuth.ts | 3 ++- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/libs/e2e-test-utils/package.json b/packages/libs/e2e-test-utils/package.json index ec7bc06b1..ab9be406c 100644 --- a/packages/libs/e2e-test-utils/package.json +++ b/packages/libs/e2e-test-utils/package.json @@ -6,12 +6,7 @@ }, "dependencies": { "@lit-protocol/vincent-app-sdk": "workspace:*", - "@lit-protocol/contracts-sdk": "^7.2.3", - "@lit-protocol/pkp-ethers": "^7.3.1", "@lit-protocol/vincent-contracts-sdk": "workspace:*", - "@zerodev/ecdsa-validator": "^5.4.9", - "@zerodev/permissions": "^5.6.2", - "@zerodev/sdk": "^5.5.3", "ethers": "^5.7.2", "tslib": "^2.8.1", "viem": "^2.38.3" diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateSiweAuth.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateSiweAuth.ts index 787afb8fb..59d8b8c0c 100644 --- a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateSiweAuth.ts +++ b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateSiweAuth.ts @@ -1,6 +1,7 @@ +import crypto from 'crypto'; + import { Wallet } from 'ethers'; import { getAddress } from 'viem'; -import crypto from 'crypto'; /** * Generate a secure random nonce for SIWE From 06263294abfe287db0cb341d9fdf26c55a954f9c Mon Sep 17 00:00:00 2001 From: Wyatt Barnes Date: Fri, 30 Jan 2026 14:01:57 -1000 Subject: [PATCH 4/9] chore: pnpm i --- pnpm-lock.yaml | 40 ---------------------------------------- 1 file changed, 40 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c5fff4524..5f2165821 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1488,27 +1488,12 @@ importers: packages/libs/e2e-test-utils: dependencies: - '@lit-protocol/contracts-sdk': - specifier: ^7.2.3 - version: 7.3.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@lit-protocol/pkp-ethers': - specifier: ^7.3.1 - version: 7.3.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) '@lit-protocol/vincent-app-sdk': specifier: workspace:* version: link:../app-sdk '@lit-protocol/vincent-contracts-sdk': specifier: workspace:* version: link:../contracts-sdk - '@zerodev/ecdsa-validator': - specifier: ^5.4.9 - version: 5.4.9(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) - '@zerodev/permissions': - specifier: ^5.6.2 - version: 5.6.3(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(@zerodev/webauthn-key@5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) - '@zerodev/sdk': - specifier: ^5.5.3 - version: 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) ethers: specifier: ^5.7.2 version: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -23758,11 +23743,6 @@ snapshots: '@zerodev/sdk': 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)) viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) - '@zerodev/ecdsa-validator@5.4.9(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': - dependencies: - '@zerodev/sdk': 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) - viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) - '@zerodev/permissions@5.6.3(@zerodev/sdk@5.5.7(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)))(@zerodev/webauthn-key@5.5.0(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: '@simplewebauthn/browser': 9.0.1 @@ -23787,14 +23767,6 @@ snapshots: merkletreejs: 0.3.11 viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) - '@zerodev/permissions@5.6.3(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(@zerodev/webauthn-key@5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': - dependencies: - '@simplewebauthn/browser': 9.0.1 - '@zerodev/sdk': 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) - '@zerodev/webauthn-key': 5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) - merkletreejs: 0.3.11 - viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) - '@zerodev/permissions@5.6.3(@zerodev/sdk@5.5.7(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)))(@zerodev/webauthn-key@5.5.0(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)))(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: '@simplewebauthn/browser': 9.0.1 @@ -23813,11 +23785,6 @@ snapshots: semver: 7.7.3 viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) - '@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': - dependencies: - semver: 7.7.3 - viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) - '@zerodev/sdk@5.5.7(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: semver: 7.7.3 @@ -23837,13 +23804,6 @@ snapshots: '@simplewebauthn/types': 12.0.0 viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) - '@zerodev/webauthn-key@5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': - dependencies: - '@noble/curves': 1.9.7 - '@simplewebauthn/browser': 8.3.7 - '@simplewebauthn/types': 12.0.0 - viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) - '@zerodev/webauthn-key@5.5.0(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: '@noble/curves': 1.9.7 From 725370cad75224529fa122e6cfe499fb618355e3 Mon Sep 17 00:00:00 2001 From: Wyatt Barnes Date: Fri, 30 Jan 2026 14:19:57 -1000 Subject: [PATCH 5/9] chore: linter --- packages/libs/e2e-test-utils/eslint.config.js | 19 ++ packages/libs/e2e-test-utils/package.json | 1 - .../generateAppManagerJwt.ts | 34 ---- pnpm-lock.yaml | 182 +++++------------- 4 files changed, 62 insertions(+), 174 deletions(-) delete mode 100644 packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateAppManagerJwt.ts diff --git a/packages/libs/e2e-test-utils/eslint.config.js b/packages/libs/e2e-test-utils/eslint.config.js index 295a0d9f5..0db0bd0e8 100644 --- a/packages/libs/e2e-test-utils/eslint.config.js +++ b/packages/libs/e2e-test-utils/eslint.config.js @@ -7,6 +7,25 @@ module.exports = [ files: ['**/*.ts', '**/*.tsx'], rules: { '@typescript-eslint/no-floating-promises': 'off', + '@nx/dependency-checks': [ + 'error', + { + buildTargets: ['build'], + checkVersionMismatches: true, + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/jest.config.{js,cjs,mjs,ts}', + '{projectRoot}/vite.config.*', + '{projectRoot}/esbuild.config.{js,cjs,mjs}', + ], + ignoredDependencies: [ + '@lit-protocol/vincent-app-sdk', + '@zerodev/ecdsa-validator', + '@zerodev/permissions', + '@zerodev/sdk', + ], + }, + ], }, }, ]; diff --git a/packages/libs/e2e-test-utils/package.json b/packages/libs/e2e-test-utils/package.json index ab9be406c..b50f0bb27 100644 --- a/packages/libs/e2e-test-utils/package.json +++ b/packages/libs/e2e-test-utils/package.json @@ -5,7 +5,6 @@ "access": "public" }, "dependencies": { - "@lit-protocol/vincent-app-sdk": "workspace:*", "@lit-protocol/vincent-contracts-sdk": "workspace:*", "ethers": "^5.7.2", "tslib": "^2.8.1", diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateAppManagerJwt.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateAppManagerJwt.ts deleted file mode 100644 index c3793138f..000000000 --- a/packages/libs/e2e-test-utils/src/setup-dev-env/vincent-registry-api/generateAppManagerJwt.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Wallet } from 'ethers'; - -import type { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; - -import { createPlatformUserJWT } from '@lit-protocol/vincent-app-sdk/jwt'; - -export async function generateAppManagerJwt({ - appManagerPrivateKey, -}: { - appManagerPrivateKey: `0x${string}`; -}): Promise { - const wallet = new Wallet(appManagerPrivateKey); - const address = await wallet.getAddress(); - - const jwt = await createPlatformUserJWT({ - pkpWallet: wallet as unknown as PKPEthersWallet, - pkpInfo: { - tokenId: '0', // Not used for app manager auth - publicKey: wallet.publicKey, - ethAddress: address, - }, - payload: { - name: 'Vincent App Manager', - }, - expiresInMinutes: 2, - audience: 'registry.heyvincent.ai', - authentication: { - type: 'wallet', - value: address, - }, - }); - - return jwt; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ccf6c9f63..81e1c518d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1268,7 +1268,7 @@ importers: version: 1.3.4 jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + version: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) jest-process-manager: specifier: ^0.2.9 version: 0.2.9(debug@4.4.3) @@ -1277,7 +1277,7 @@ importers: version: 10.4.1 ts-jest: specifier: ^29.1.0 - version: 29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.19.12)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.19.12)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3) unbuild: specifier: ^3.5.0 version: 3.6.1(typescript@5.8.3) @@ -1475,13 +1475,13 @@ importers: version: 4.0.0 jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + version: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) pino-pretty: specifier: ^13.0.0 version: 13.1.3 ts-jest: specifier: ^29.1.0 - version: 29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.24.2)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.24.2)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3) viem: specifier: ^2.34.0 version: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) @@ -1494,6 +1494,15 @@ importers: '@lit-protocol/vincent-contracts-sdk': specifier: workspace:* version: link:../contracts-sdk + '@zerodev/ecdsa-validator': + specifier: ^5.4.9 + version: 5.4.9(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) + '@zerodev/permissions': + specifier: ^5.6.2 + version: 5.6.3(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(@zerodev/webauthn-key@5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) + '@zerodev/sdk': + specifier: ^5.5.7 + version: 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) ethers: specifier: ^5.7.2 version: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -7475,6 +7484,7 @@ packages: bun@1.3.4: resolution: {integrity: sha512-xV6KgD5ImquuKsoghzbWmYzeCXmmSgN6yJGz444hri2W+NGKNRFUNrEhy9+/rRXbvNA2qF0K0jAwqFNy1/GhBg==} + cpu: [arm64, x64] os: [darwin, linux, win32] hasBin: true @@ -13368,10 +13378,12 @@ packages: tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me tar@7.5.2: resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me tcp-port-used@1.0.2: resolution: {integrity: sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==} @@ -17385,41 +17397,6 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.19.26 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - '@jest/create-cache-key-function@30.2.0': dependencies: '@jest/types': 30.2.0 @@ -23819,6 +23796,11 @@ snapshots: '@zerodev/sdk': 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)) viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) + '@zerodev/ecdsa-validator@5.4.9(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': + dependencies: + '@zerodev/sdk': 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) + viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) + '@zerodev/ecdsa-validator@5.4.9(@zerodev/sdk@5.5.7(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)))(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: '@zerodev/sdk': 5.5.7(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)) @@ -23848,6 +23830,14 @@ snapshots: merkletreejs: 0.3.11 viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) + '@zerodev/permissions@5.6.3(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(@zerodev/webauthn-key@5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': + dependencies: + '@simplewebauthn/browser': 9.0.1 + '@zerodev/sdk': 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) + '@zerodev/webauthn-key': 5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) + merkletreejs: 0.3.11 + viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) + '@zerodev/permissions@5.6.3(@zerodev/sdk@5.5.7(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)))(@zerodev/webauthn-key@5.5.0(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)))(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: '@simplewebauthn/browser': 9.0.1 @@ -23866,6 +23856,11 @@ snapshots: semver: 7.7.3 viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) + '@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': + dependencies: + semver: 7.7.3 + viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) + '@zerodev/sdk@5.5.7(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: semver: 7.7.3 @@ -23885,6 +23880,13 @@ snapshots: '@simplewebauthn/types': 12.0.0 viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) + '@zerodev/webauthn-key@5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': + dependencies: + '@noble/curves': 1.9.7 + '@simplewebauthn/browser': 8.3.7 + '@simplewebauthn/types': 12.0.0 + viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) + '@zerodev/webauthn-key@5.5.0(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: '@noble/curves': 1.9.7 @@ -25106,21 +25108,6 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - create-require@1.1.1: {} cross-fetch@3.1.8: @@ -28067,25 +28054,6 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jest-config@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)): dependencies: '@babel/core': 7.28.5 @@ -28117,37 +28085,6 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)): - dependencies: - '@babel/core': 7.28.5 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.5) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.19.26 - ts-node: 10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -28408,18 +28345,6 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jiti@1.21.7: {} jiti@2.6.1: {} @@ -31961,33 +31886,12 @@ snapshots: esbuild: 0.19.12 jest-util: 29.7.0 - ts-jest@29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.19.12)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - handlebars: 4.7.8 - jest: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.3 - type-fest: 4.41.0 - typescript: 5.8.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.28.5 - '@jest/transform': 29.7.0 - '@jest/types': 30.2.0 - babel-jest: 29.7.0(@babel/core@7.28.5) - esbuild: 0.19.12 - jest-util: 29.7.0 - - ts-jest@29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.24.2)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.24.2)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.8 - jest: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + jest: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 From b5f48ef380f227aa567d5531785f3c34e99d8620 Mon Sep 17 00:00:00 2001 From: Wyatt Barnes Date: Fri, 30 Jan 2026 14:22:50 -1000 Subject: [PATCH 6/9] chore: pnpm i --- pnpm-lock.yaml | 183 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 139 insertions(+), 44 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81e1c518d..b17772393 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1268,7 +1268,7 @@ importers: version: 1.3.4 jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + version: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) jest-process-manager: specifier: ^0.2.9 version: 0.2.9(debug@4.4.3) @@ -1277,7 +1277,7 @@ importers: version: 10.4.1 ts-jest: specifier: ^29.1.0 - version: 29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.19.12)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.19.12)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3) unbuild: specifier: ^3.5.0 version: 3.6.1(typescript@5.8.3) @@ -1475,34 +1475,22 @@ importers: version: 4.0.0 jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + version: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) pino-pretty: specifier: ^13.0.0 version: 13.1.3 ts-jest: specifier: ^29.1.0 - version: 29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.24.2)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.24.2)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3) viem: specifier: ^2.34.0 version: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) packages/libs/e2e-test-utils: dependencies: - '@lit-protocol/vincent-app-sdk': - specifier: workspace:* - version: link:../app-sdk '@lit-protocol/vincent-contracts-sdk': specifier: workspace:* version: link:../contracts-sdk - '@zerodev/ecdsa-validator': - specifier: ^5.4.9 - version: 5.4.9(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) - '@zerodev/permissions': - specifier: ^5.6.2 - version: 5.6.3(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(@zerodev/webauthn-key@5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) - '@zerodev/sdk': - specifier: ^5.5.7 - version: 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) ethers: specifier: ^5.7.2 version: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -7484,7 +7472,6 @@ packages: bun@1.3.4: resolution: {integrity: sha512-xV6KgD5ImquuKsoghzbWmYzeCXmmSgN6yJGz444hri2W+NGKNRFUNrEhy9+/rRXbvNA2qF0K0jAwqFNy1/GhBg==} - cpu: [arm64, x64] os: [darwin, linux, win32] hasBin: true @@ -17397,6 +17384,41 @@ snapshots: - supports-color - ts-node + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.26 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + '@jest/create-cache-key-function@30.2.0': dependencies: '@jest/types': 30.2.0 @@ -23796,11 +23818,6 @@ snapshots: '@zerodev/sdk': 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)) viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) - '@zerodev/ecdsa-validator@5.4.9(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': - dependencies: - '@zerodev/sdk': 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) - viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) - '@zerodev/ecdsa-validator@5.4.9(@zerodev/sdk@5.5.7(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)))(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: '@zerodev/sdk': 5.5.7(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)) @@ -23830,14 +23847,6 @@ snapshots: merkletreejs: 0.3.11 viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) - '@zerodev/permissions@5.6.3(@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(@zerodev/webauthn-key@5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': - dependencies: - '@simplewebauthn/browser': 9.0.1 - '@zerodev/sdk': 5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) - '@zerodev/webauthn-key': 5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13)) - merkletreejs: 0.3.11 - viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) - '@zerodev/permissions@5.6.3(@zerodev/sdk@5.5.7(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)))(@zerodev/webauthn-key@5.5.0(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64)))(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: '@simplewebauthn/browser': 9.0.1 @@ -23856,11 +23865,6 @@ snapshots: semver: 7.7.3 viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) - '@zerodev/sdk@5.5.7(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': - dependencies: - semver: 7.7.3 - viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) - '@zerodev/sdk@5.5.7(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: semver: 7.7.3 @@ -23880,13 +23884,6 @@ snapshots: '@simplewebauthn/types': 12.0.0 viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64) - '@zerodev/webauthn-key@5.5.0(viem@2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13))': - dependencies: - '@noble/curves': 1.9.7 - '@simplewebauthn/browser': 8.3.7 - '@simplewebauthn/types': 12.0.0 - viem: 2.41.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@4.1.13) - '@zerodev/webauthn-key@5.5.0(viem@2.43.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.64))': dependencies: '@noble/curves': 1.9.7 @@ -25108,6 +25105,21 @@ snapshots: - supports-color - ts-node + create-jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + create-require@1.1.1: {} cross-fetch@3.1.8: @@ -28054,6 +28066,25 @@ snapshots: - supports-color - ts-node + jest-cli@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jest-config@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)): dependencies: '@babel/core': 7.28.5 @@ -28085,6 +28116,37 @@ snapshots: - babel-plugin-macros - supports-color + jest-config@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.28.5 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.28.5) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.19.26 + ts-node: 10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -28345,6 +28407,18 @@ snapshots: - supports-color - ts-node + jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jiti@1.21.7: {} jiti@2.6.1: {} @@ -31886,12 +31960,33 @@ snapshots: esbuild: 0.19.12 jest-util: 29.7.0 - ts-jest@29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.24.2)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.19.12)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.8 - jest: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + jest: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.3 + type-fest: 4.41.0 + typescript: 5.8.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.28.5 + '@jest/transform': 29.7.0 + '@jest/types': 30.2.0 + babel-jest: 29.7.0(@babel/core@7.28.5) + esbuild: 0.19.12 + jest-util: 29.7.0 + + ts-jest@29.4.6(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.24.2)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)))(typescript@5.8.3): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + handlebars: 4.7.8 + jest: 29.7.0(@types/node@20.19.26)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.26)(typescript@5.8.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 From f7da4e285e7bfbf63ae6724b56f3f61154874e32 Mon Sep 17 00:00:00 2001 From: Wyatt Barnes Date: Fri, 30 Jan 2026 14:34:51 -1000 Subject: [PATCH 7/9] chore: linter fixes --- packages/libs/e2e-test-utils/eslint.config.js | 7 +- packages/libs/e2e-test-utils/package.json | 1 - .../e2e-test-utils/src/setup-dev-env/index.ts | 2 - .../smart-account/createPermissionApproval.ts | 77 -------- .../smart-account/deploySmartAccount.ts | 169 ------------------ .../deriveSmartAccountAddress.ts | 20 --- 6 files changed, 1 insertion(+), 275 deletions(-) delete mode 100644 packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/createPermissionApproval.ts delete mode 100644 packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/deploySmartAccount.ts delete mode 100644 packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/deriveSmartAccountAddress.ts diff --git a/packages/libs/e2e-test-utils/eslint.config.js b/packages/libs/e2e-test-utils/eslint.config.js index 0db0bd0e8..f4b6083cc 100644 --- a/packages/libs/e2e-test-utils/eslint.config.js +++ b/packages/libs/e2e-test-utils/eslint.config.js @@ -18,12 +18,7 @@ module.exports = [ '{projectRoot}/vite.config.*', '{projectRoot}/esbuild.config.{js,cjs,mjs}', ], - ignoredDependencies: [ - '@lit-protocol/vincent-app-sdk', - '@zerodev/ecdsa-validator', - '@zerodev/permissions', - '@zerodev/sdk', - ], + ignoredDependencies: ['@lit-protocol/contracts-sdk'], }, ], }, diff --git a/packages/libs/e2e-test-utils/package.json b/packages/libs/e2e-test-utils/package.json index b50f0bb27..53dd4b474 100644 --- a/packages/libs/e2e-test-utils/package.json +++ b/packages/libs/e2e-test-utils/package.json @@ -23,7 +23,6 @@ } }, "devDependencies": { - "@lit-protocol/vincent-contracts-sdk": "workspace:*", "@types/semver": "^7.7.0", "chokidar-cli": "^3.0.0", "dotenv-cli": "^7.4.2", diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/index.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/index.ts index 47c6c182e..ab1bd58ff 100644 --- a/packages/libs/e2e-test-utils/src/setup-dev-env/index.ts +++ b/packages/libs/e2e-test-utils/src/setup-dev-env/index.ts @@ -1,7 +1,5 @@ export { setupVincentDevelopmentEnvironment } from './setupVincentDevEnv'; export { getEnv } from './getEnv'; -export { deploySmartAccount } from './smart-account/deploySmartAccount'; export { ensureWalletHasTokens } from './wallets/ensureWalletHasTokens'; export type { SetupConfig, VincentDevEnvironment } from './setupVincentDevEnv'; -export type { SmartAccountInfo } from './smart-account/deploySmartAccount'; diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/createPermissionApproval.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/createPermissionApproval.ts deleted file mode 100644 index e70ca12ab..000000000 --- a/packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/createPermissionApproval.ts +++ /dev/null @@ -1,77 +0,0 @@ -import type { Address, Chain } from 'viem'; - -import { signerToEcdsaValidator } from '@zerodev/ecdsa-validator'; -import { serializePermissionAccount, toPermissionValidator } from '@zerodev/permissions'; -import { toSudoPolicy } from '@zerodev/permissions/policies'; -import { toECDSASigner } from '@zerodev/permissions/signers'; -import { addressToEmptyAccount, createKernelAccount } from '@zerodev/sdk'; -import { getEntryPoint, KERNEL_V3_3 } from '@zerodev/sdk/constants'; -import { createPublicClient, http } from 'viem'; -import { privateKeyToAccount } from 'viem/accounts'; - -/** - * Creates a serialized permission approval that allows a session key (PKP) to act on behalf of the smart account. - * - * This follows the ZeroDev pattern from transaction-automation.ts: - * 1. Owner creates an account with BOTH validators (EOA sudo + session key permission) - * 2. Serializes the permission account - * 3. Session key can later deserialize and use it to sign transactions - * - * The serialized approval contains: - * - Smart account configuration (sudo validator = EOA) - * - Permission validator configuration (session key = PKP with sudo policy) - * - All necessary data for the session key to reconstruct the account - * - * @param params Configuration for creating the permission approval - * @returns Serialized permission approval string that can be deserialized by the session key - */ -export async function createPermissionApproval({ - userEoaPrivateKey, - sessionKeyAddress, - accountIndexHash, - targetChain, - targetChainRpcUrl, -}: { - userEoaPrivateKey: `0x${string}`; - sessionKeyAddress: Address; - accountIndexHash: string; - targetChain: Chain; - targetChainRpcUrl: string; -}): Promise { - const publicClient = createPublicClient({ - chain: targetChain, - transport: http(targetChainRpcUrl), - }); - - const userEoaAccount = privateKeyToAccount(userEoaPrivateKey); - - const ecdsaValidator = await signerToEcdsaValidator(publicClient, { - entryPoint: getEntryPoint('0.7'), - signer: userEoaAccount, - kernelVersion: KERNEL_V3_3, - }); - - const emptySessionKeyAccount = addressToEmptyAccount(sessionKeyAddress); - const emptySessionKeySigner = await toECDSASigner({ - signer: emptySessionKeyAccount, - }); - - const permissionPlugin = await toPermissionValidator(publicClient, { - entryPoint: getEntryPoint('0.7'), - signer: emptySessionKeySigner, - policies: [toSudoPolicy({})], - kernelVersion: KERNEL_V3_3, - }); - - const sessionKeyAccount = await createKernelAccount(publicClient, { - entryPoint: getEntryPoint('0.7'), - plugins: { - sudo: ecdsaValidator, - regular: permissionPlugin, - }, - kernelVersion: KERNEL_V3_3, - index: BigInt(accountIndexHash), - }); - - return await serializePermissionAccount(sessionKeyAccount); -} diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/deploySmartAccount.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/deploySmartAccount.ts deleted file mode 100644 index cae2af0c0..000000000 --- a/packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/deploySmartAccount.ts +++ /dev/null @@ -1,169 +0,0 @@ -import type { Address, Chain, Hex } from 'viem'; - -import { signerToEcdsaValidator } from '@zerodev/ecdsa-validator'; -import { createKernelAccount, createKernelAccountClient } from '@zerodev/sdk'; -import { getEntryPoint, KERNEL_V3_3 } from '@zerodev/sdk/constants'; -import { createPublicClient, createWalletClient, formatEther, http } from 'viem'; -import { privateKeyToAccount } from 'viem/accounts'; - -import { ensureWalletHasTokens } from '../wallets/ensureWalletHasTokens'; - -export interface SmartAccountInfo { - smartAccountAddress: Address; - deploymentTxHash?: Hex; -} - -export async function deploySmartAccount({ - userEoaPrivateKey, - accountIndexHash, - targetChain, - targetChainRpcUrl, - zerodevProjectId, - funderPrivateKey, - fundAmountBeforeDeployment, -}: { - userEoaPrivateKey: `0x${string}`; - accountIndexHash: string; - targetChain: Chain; - targetChainRpcUrl: string; - zerodevProjectId: string; - funderPrivateKey: `0x${string}`; - fundAmountBeforeDeployment?: bigint; -}): Promise { - console.log(`=== Deploying Smart Account to ${targetChain.name} ===`); - - const publicClient = createPublicClient({ - chain: targetChain, - transport: http(targetChainRpcUrl), - }); - - const userEoaWalletClient = createWalletClient({ - account: privateKeyToAccount(userEoaPrivateKey), - chain: targetChain, - transport: http(targetChainRpcUrl), - }); - - const funderWalletClient = createWalletClient({ - account: privateKeyToAccount(funderPrivateKey), - chain: targetChain, - transport: http(targetChainRpcUrl), - }); - - const userEoaEcdsaValidator = await signerToEcdsaValidator(publicClient, { - entryPoint: getEntryPoint('0.7'), - signer: userEoaWalletClient, - kernelVersion: KERNEL_V3_3, - }); - - const userEoaKernelAccount = await createKernelAccount(publicClient, { - entryPoint: getEntryPoint('0.7'), - plugins: { - sudo: userEoaEcdsaValidator, - }, - kernelVersion: KERNEL_V3_3, - index: BigInt(accountIndexHash), - }); - - const zerodevRpcUrl = `https://rpc.zerodev.app/api/v3/${zerodevProjectId}/chain/${targetChain.id}`; - const kernelClient = createKernelAccountClient({ - account: userEoaKernelAccount, - chain: targetChain, - bundlerTransport: http(zerodevRpcUrl), - client: publicClient, - }); - - // Check if smart account is already deployed on the target chain - const existingCode = await publicClient.getCode({ - address: userEoaKernelAccount.address, - }); - const isAlreadyDeployed = existingCode && existingCode !== '0x'; - - if (isAlreadyDeployed) { - console.log(`Smart account already deployed on ${targetChain.name}`); - console.table({ - Chain: `${targetChain.name} (${targetChain.id})`, - 'Smart Account Address': userEoaKernelAccount.address, - Status: 'Already Deployed', - }); - } - - // Step 2: Fund the smart account (if fundAmountBeforeDeployment is provided) - if (fundAmountBeforeDeployment !== undefined) { - console.log('Funding smart account...'); - const { currentBalance, fundingTxHash } = await ensureWalletHasTokens({ - address: userEoaKernelAccount.address, - funderWalletClient, - publicClient, - minAmount: fundAmountBeforeDeployment, - }); - - console.table({ - 'Smart Account Address': userEoaKernelAccount.address, - Balance: formatEther(currentBalance), - 'Funding Tx Hash': fundingTxHash, - }); - - if (fundingTxHash) { - console.log('Waiting for funding confirmation...'); - await publicClient.waitForTransactionReceipt({ - hash: fundingTxHash as `0x${string}`, - confirmations: 2, - }); - } - } else { - console.log('Skipping funding step (fundAmountBeforeDeployment not provided)'); - } - - // Step 3: Deploy the smart account (only if not already deployed) - let deploymentTxHash: `0x${string}` | undefined; - - if (!isAlreadyDeployed) { - console.log('Deploying smart account...'); - - const userOpHash = await kernelClient.sendUserOperation({ - callData: await userEoaKernelAccount.encodeCalls([ - { - to: '0x0000000000000000000000000000000000000000', - value: 0n, - data: '0x', - }, - ]), - }); - console.log(`Deployment UserOp Hash: ${userOpHash}`); - - // Wait for the UserOperation to be included in a block - const receipt = await kernelClient.waitForUserOperationReceipt({ - hash: userOpHash, - }); - deploymentTxHash = receipt.receipt.transactionHash; - console.log(`Deployment Tx Hash: ${deploymentTxHash}`); - - await publicClient.waitForTransactionReceipt({ - hash: deploymentTxHash as `0x${string}`, - confirmations: 2, - }); - - // Verify deployment - const deployedCode = await publicClient.getCode({ - address: userEoaKernelAccount.address, - }); - - if (!deployedCode || deployedCode === '0x') { - throw new Error( - `Smart account deployment failed on ${targetChain.name}, code is still empty (0x)`, - ); - } - - console.log(`Smart account deployed successfully`); - console.table({ - Chain: `${targetChain.name} (${targetChain.id})`, - 'Smart Account Address': userEoaKernelAccount.address, - 'Deployment Tx Hash': deploymentTxHash, - }); - } - - return { - smartAccountAddress: userEoaKernelAccount.address, - deploymentTxHash, - }; -} diff --git a/packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/deriveSmartAccountAddress.ts b/packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/deriveSmartAccountAddress.ts deleted file mode 100644 index 116765fd9..000000000 --- a/packages/libs/e2e-test-utils/src/setup-dev-env/smart-account/deriveSmartAccountAddress.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Address } from 'viem'; - -import { getKernelAddressFromECDSA } from '@zerodev/ecdsa-validator'; -import { KERNEL_V3_1, getEntryPoint } from '@zerodev/sdk/constants'; - -export async function deriveSmartAccountAddress( - eoaAddress: Address, - accountIndexHash: string, - publicClient: any, -): Promise
{ - const agentAddress = await getKernelAddressFromECDSA({ - entryPoint: getEntryPoint('0.7'), - kernelVersion: KERNEL_V3_1, - eoaAddress, - index: BigInt(accountIndexHash), - publicClient: publicClient as any, - }); - - return agentAddress as Address; -} From 03e38d7cab6489c86cf1638675dc2c06a72d8025 Mon Sep 17 00:00:00 2001 From: Wyatt Barnes Date: Fri, 30 Jan 2026 14:39:49 -1000 Subject: [PATCH 8/9] chore: linter --- packages/libs/e2e-test-utils/package.json | 1 + pnpm-lock.yaml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/packages/libs/e2e-test-utils/package.json b/packages/libs/e2e-test-utils/package.json index 53dd4b474..090492dd6 100644 --- a/packages/libs/e2e-test-utils/package.json +++ b/packages/libs/e2e-test-utils/package.json @@ -5,6 +5,7 @@ "access": "public" }, "dependencies": { + "@lit-protocol/contracts-sdk": "^7.2.3", "@lit-protocol/vincent-contracts-sdk": "workspace:*", "ethers": "^5.7.2", "tslib": "^2.8.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b17772393..badf9be2f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1488,6 +1488,9 @@ importers: packages/libs/e2e-test-utils: dependencies: + '@lit-protocol/contracts-sdk': + specifier: ^7.2.3 + version: 7.3.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) '@lit-protocol/vincent-contracts-sdk': specifier: workspace:* version: link:../contracts-sdk From b230ec6669d0007ec0c62dc0b78fdcb224da7e71 Mon Sep 17 00:00:00 2001 From: Wyatt Barnes Date: Fri, 30 Jan 2026 14:49:38 -1000 Subject: [PATCH 9/9] chore: build errors --- packages/libs/e2e-test-utils/src/index.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/libs/e2e-test-utils/src/index.ts b/packages/libs/e2e-test-utils/src/index.ts index de431d804..25ea5150c 100644 --- a/packages/libs/e2e-test-utils/src/index.ts +++ b/packages/libs/e2e-test-utils/src/index.ts @@ -1,8 +1,3 @@ -export { - deploySmartAccount, - ensureWalletHasTokens, - getEnv, - setupVincentDevelopmentEnvironment, -} from './setup-dev-env'; +export { ensureWalletHasTokens, getEnv, setupVincentDevelopmentEnvironment } from './setup-dev-env'; -export type { SetupConfig, SmartAccountInfo, VincentDevEnvironment } from './setup-dev-env'; +export type { SetupConfig, VincentDevEnvironment } from './setup-dev-env';