kawasekit 0.1.0-beta.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/asset-domain-4Ioxqn28.d.cts +348 -0
  2. package/dist/asset-domain-4Ioxqn28.d.ts +348 -0
  3. package/dist/{chunk-YMABXRCK.js → chunk-6CNAYQOL.js} +2 -2
  4. package/dist/chunk-6CNAYQOL.js.map +1 -0
  5. package/dist/{chunk-E2EG72U2.js → chunk-SMAZUZFO.js} +4 -9
  6. package/dist/chunk-SMAZUZFO.js.map +1 -0
  7. package/dist/{chunk-RUWCCP37.js → chunk-THTVJZ2Q.js} +5 -10
  8. package/dist/chunk-THTVJZ2Q.js.map +1 -0
  9. package/dist/{chunk-VPRR3TNA.js → chunk-VXZHS74W.js} +59 -51
  10. package/dist/chunk-VXZHS74W.js.map +1 -0
  11. package/dist/{chunk-UQ7WJY6O.js → chunk-XRSZTZVZ.js} +2 -2
  12. package/dist/{chunk-UQ7WJY6O.js.map → chunk-XRSZTZVZ.js.map} +1 -1
  13. package/dist/cli/index.cjs +1 -1
  14. package/dist/cli/index.cjs.map +1 -1
  15. package/dist/cli/index.js +6 -6
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/{index-Z6AL1MR_.d.cts → index-Cn6kg7KH.d.cts} +1 -1
  18. package/dist/{index-BaAOB0xd.d.ts → index-f-Xg86P9.d.ts} +1 -1
  19. package/dist/index.cjs +14 -12
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +5 -170
  22. package/dist/index.d.ts +5 -170
  23. package/dist/index.js +5 -5
  24. package/dist/policy/index.cjs.map +1 -1
  25. package/dist/policy/index.d.cts +1 -1
  26. package/dist/policy/index.d.ts +1 -1
  27. package/dist/policy/index.js +1 -1
  28. package/dist/signer/index.cjs +9 -6
  29. package/dist/signer/index.cjs.map +1 -1
  30. package/dist/signer/index.d.cts +2 -2
  31. package/dist/signer/index.d.ts +2 -2
  32. package/dist/signer/index.js +3 -3
  33. package/dist/{spending-policy-DZSNHqnD.d.ts → spending-policy-DKZN3Sg8.d.ts} +3 -2
  34. package/dist/{spending-policy-DqBRDUxx.d.cts → spending-policy-DaajDg9B.d.cts} +3 -2
  35. package/dist/x402/index.cjs +9 -6
  36. package/dist/x402/index.cjs.map +1 -1
  37. package/dist/x402/index.d.cts +2 -2
  38. package/dist/x402/index.d.ts +2 -2
  39. package/dist/x402/index.js +2 -2
  40. package/package.json +1 -1
  41. package/dist/asset-domain-CpJuDkI2.d.cts +0 -102
  42. package/dist/asset-domain-CpJuDkI2.d.ts +0 -102
  43. package/dist/chunk-E2EG72U2.js.map +0 -1
  44. package/dist/chunk-RUWCCP37.js.map +0 -1
  45. package/dist/chunk-VPRR3TNA.js.map +0 -1
  46. package/dist/chunk-YMABXRCK.js.map +0 -1
package/dist/cli/index.js CHANGED
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
- import { transferJpyc } from '../chunk-UQ7WJY6O.js';
3
- import '../chunk-E2EG72U2.js';
2
+ import { transferJpyc } from '../chunk-XRSZTZVZ.js';
3
+ import '../chunk-SMAZUZFO.js';
4
4
  import '../chunk-PVUKX6IF.js';
5
5
  import '../chunk-LEHWRDVS.js';
6
6
  import '../chunk-TTX3RBIZ.js';
7
7
  import '../chunk-QHUCU5YX.js';
8
8
  import { issueSessionKey, serializeSessionEnvelope, restoreSessionAccount, revokeSessionKey, rotateSessionKey, parseSessionEnvelope } from '../chunk-N3CVLISJ.js';
9
- import '../chunk-RUWCCP37.js';
10
- import '../chunk-VPRR3TNA.js';
9
+ import '../chunk-THTVJZ2Q.js';
10
+ import '../chunk-VXZHS74W.js';
11
11
  import '../chunk-WMVJNPX2.js';
12
12
  import { createJpycDailyLimitPolicies } from '../chunk-E47SIVFY.js';
13
- import '../chunk-YMABXRCK.js';
13
+ import '../chunk-6CNAYQOL.js';
14
14
  import { JPYC_DECIMALS, getJpycAddress, jpycAbi } from '../chunk-KT7XDT2T.js';
15
15
  import { zerodevRpcUrl, polygon, polygonAmoy } from '../chunk-SOTYGX67.js';
16
16
  import { __commonJS, __require, __toESM } from '../chunk-7D4SUZUM.js';
@@ -980,7 +980,7 @@ function registerTransferCommand(program2) {
980
980
  }
981
981
 
982
982
  // cli/index.ts
983
- var CLI_VERSION = "0.1.0-beta.6" ;
983
+ var CLI_VERSION = "0.2.0" ;
984
984
  var program = new Command();
985
985
  program.name("kawasekit").description(
986
986
  "kawasekit \u2014 CLI for the kawasekit SDK (AI-agent stablecoin payments, Japan-first, JPYC-native)."
@@ -1 +1 @@
1
- {"version":3,"sources":["../../node_modules/.pnpm/dotenv@17.4.2/node_modules/dotenv/lib/main.js","../../cli/lib/env.ts","../../cli/lib/chain.ts","../../cli/commands/account.ts","../../cli/commands/init.ts","../../cli/commands/policy.ts","../../cli/commands/session-key.ts","../../cli/commands/transfer.ts","../../cli/index.ts"],"names":["path","loadDotenv","program","getAddress","parseUnits","resolve","privateKeyToAccount","createPublicClient","http","writeFileSync","getEntryPoint","KERNEL_V3_1","signerToEcdsaValidator","createKernelAccount","createZeroDevPaymasterClient","createKernelAccountClient"],"mappings":"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","file":"index.js","sourcesContent":["const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\n\n// Array of tips to display randomly\nconst TIPS = [\n '◈ encrypted .env [www.dotenvx.com]',\n '◈ secrets for agents [www.dotenvx.com]',\n '⌁ auth for agents [www.vestauth.com]',\n '⌘ custom filepath { path: \\'/custom/path/.env\\' }',\n '⌘ enable debugging { debug: true }',\n '⌘ override existing { override: true }',\n '⌘ suppress logs { quiet: true }',\n '⌘ multiple files { path: [\\'.env.local\\', \\'.env\\'] }'\n]\n\n// Get a random tip from the tips array\nfunction _getRandomTip () {\n return TIPS[Math.floor(Math.random() * TIPS.length)]\n}\n\nfunction parseBoolean (value) {\n if (typeof value === 'string') {\n return !['false', '0', 'no', 'off', ''].includes(value.toLowerCase())\n }\n return Boolean(value)\n}\n\nfunction supportsAnsi () {\n return process.stdout.isTTY // && process.env.TERM !== 'dumb'\n}\n\nfunction dim (text) {\n return supportsAnsi() ? `\\x1b[2m${text}\\x1b[0m` : text\n}\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n options = options || {}\n\n const vaultPath = _vaultPath(options)\n options.path = vaultPath // parse .env.vault\n const result = DotenvModule.configDotenv(options)\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _warn (message) {\n console.error(`⚠ ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`┆ ${message}`)\n}\n\nfunction _log (message) {\n console.log(`◇ ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || (options && options.debug))\n const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (debug || !quiet) {\n _log('loading env from encrypted .env.vault')\n }\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || (options && options.debug))\n let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('no encoding is specified (UTF-8 is used by default)')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n const populated = DotenvModule.populate(processEnv, parsedAll, options)\n\n // handle user settings DOTENV_CONFIG_ options inside .env file(s)\n debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug)\n quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet)\n\n if (debug || !quiet) {\n const keysCount = Object.keys(populated).length\n const shortPaths = []\n for (const filePath of optionPaths) {\n try {\n const relative = path.relative(process.cwd(), filePath)\n shortPaths.push(relative)\n } catch (e) {\n if (debug) {\n _debug(`failed to load ${filePath} ${e.message}`)\n }\n lastError = e\n }\n }\n\n _log(`injected env (${keysCount}) from ${shortPaths.join(',')} ${dim(`// tip: ${_getRandomTip()}`)}`)\n }\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`you set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n const populated = {}\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n }\n\n return populated\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n","/**\n * Environment loading helpers shared by every CLI command.\n *\n * The CLI loads `.env` from the current working directory (so a user can\n * `cd ~/my-agent-project && kawasekit transfer …` and have their secrets\n * picked up automatically) but every command also accepts the same value\n * as an explicit `--xxx` flag for ad-hoc use.\n */\n\nimport { config as loadDotenv } from \"dotenv\";\nimport type { Hex } from \"viem\";\n\nlet dotenvLoaded = false;\n\n/**\n * Ensure `.env` from the current working directory has been merged into\n * `process.env`. Safe to call multiple times — subsequent calls are no-ops.\n */\nexport function ensureDotenvLoaded(): void {\n\tif (dotenvLoaded) return;\n\t// `quiet: true` suppresses dotenv v17's promotional \"injecting env … (tip:\n\t// …)\" banner — a CLI loading secrets should not print to stdout, and it\n\t// otherwise leaks onto `--version` / `--help` output.\n\tloadDotenv({ override: false, quiet: true });\n\tdotenvLoaded = true;\n}\n\n/**\n * Resolve a value that may come from either an explicit CLI flag or a\n * named environment variable. Returns the flag value if present, otherwise\n * the env value, otherwise `undefined`.\n */\nexport function resolveValue(flagValue: string | undefined, envName: string): string | undefined {\n\tif (flagValue !== undefined && flagValue.trim() !== \"\") return flagValue;\n\tensureDotenvLoaded();\n\tconst raw = process.env[envName];\n\tif (raw === undefined || raw.trim() === \"\") return undefined;\n\treturn raw;\n}\n\n/**\n * Like {@link resolveValue} but throws a CLI-flavoured error if no value\n * was found. Use for inputs the command genuinely cannot proceed without.\n */\nexport function requireValue(flagValue: string | undefined, envName: string, hint: string): string {\n\tconst value = resolveValue(flagValue, envName);\n\tif (value === undefined) {\n\t\tthrow new Error(\n\t\t\t`Missing required value: pass --${hint} or set ${envName} in your environment / .env file.`,\n\t\t);\n\t}\n\treturn value;\n}\n\n/**\n * Validates a value as a 0x-prefixed 32-byte hex private key and returns it\n * typed as `Hex`. Throws with a CLI-friendly message on malformed input.\n */\nexport function asPrivateKey(value: string, source: string): Hex {\n\tif (!/^0x[0-9a-fA-F]{64}$/.test(value)) {\n\t\tthrow new Error(\n\t\t\t`${source} must be a 0x-prefixed 32-byte hex string (got ${value.length} chars).`,\n\t\t);\n\t}\n\treturn value as Hex;\n}\n\n/**\n * Resolves a required private key from a `--private-key` flag or an env var.\n */\nexport function requirePrivateKey(\n\tflagValue: string | undefined,\n\tenvName: string,\n\thint: string,\n): Hex {\n\treturn asPrivateKey(requireValue(flagValue, envName, hint), envName);\n}\n","/**\n * Chain selection shared by every CLI command that touches a network.\n *\n * Every command accepts a `--chain` flag whose value is one of the\n * kawasekit chain keys (`polygon`, `polygonAmoy`). The string is mapped to\n * the corresponding `KawaseChain` and a `network: \"mainnet\" | \"testnet\"`\n * literal that the SDK's M4-1 fail-fast guards expect.\n *\n * No default — the CLI requires an explicit choice so a user cannot silently\n * point a testnet config at mainnet (or vice versa).\n */\n\nimport { polygon, polygonAmoy } from \"../../src\";\nimport { resolveValue } from \"./env\";\n\nexport type CliChainKey = \"polygon\" | \"polygonAmoy\";\n\nexport interface CliChainProfile {\n\treadonly key: CliChainKey;\n\treadonly chain: typeof polygon | typeof polygonAmoy;\n\treadonly network: \"mainnet\" | \"testnet\";\n\treadonly explorerTxBase: string;\n\treadonly displayName: string;\n}\n\nexport function resolveChain(flagValue: string | undefined): CliChainProfile {\n\tconst key = flagValue;\n\tif (key === \"polygon\") {\n\t\treturn {\n\t\t\tkey,\n\t\t\tchain: polygon,\n\t\t\tnetwork: \"mainnet\",\n\t\t\texplorerTxBase: \"https://polygonscan.com/tx/\",\n\t\t\tdisplayName: \"Polygon mainnet (137)\",\n\t\t};\n\t}\n\tif (key === \"polygonAmoy\") {\n\t\treturn {\n\t\t\tkey,\n\t\t\tchain: polygonAmoy,\n\t\t\tnetwork: \"testnet\",\n\t\t\texplorerTxBase: \"https://amoy.polygonscan.com/tx/\",\n\t\t\tdisplayName: \"Polygon Amoy testnet (80002)\",\n\t\t};\n\t}\n\tthrow new Error(\n\t\t`--chain must be one of \"polygon\" (mainnet) or \"polygonAmoy\" (testnet). Got ${JSON.stringify(key ?? \"<missing>\")}.`,\n\t);\n}\n\n/**\n * Mainnet broadcast guard. Throws if the chosen chain is mainnet but the\n * operator has not explicitly set `KAWASEKIT_ALLOW_MAINNET=1`. CLI subcommands\n * that broadcast real-funds transactions MUST call this before any RPC work.\n */\nexport function assertMainnetGuard(profile: CliChainProfile): void {\n\tif (profile.network !== \"mainnet\") return;\n\tconst gate = resolveValue(undefined, \"KAWASEKIT_ALLOW_MAINNET\");\n\tif (gate !== \"1\") {\n\t\tthrow new Error(\n\t\t\t\"Refusing to broadcast on Polygon mainnet without explicit consent. Set KAWASEKIT_ALLOW_MAINNET=1 to acknowledge that this command will spend real funds.\",\n\t\t);\n\t}\n}\n","import { signerToEcdsaValidator } from \"@zerodev/ecdsa-validator\";\nimport {\n\tcreateKernelAccount,\n\tcreateKernelAccountClient,\n\tcreateZeroDevPaymasterClient,\n} from \"@zerodev/sdk\";\nimport { getEntryPoint, KERNEL_V3_1 } from \"@zerodev/sdk/constants\";\nimport type { Command } from \"commander\";\nimport { createPublicClient, http } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { zerodevRpcUrl } from \"../../src\";\nimport { assertMainnetGuard, resolveChain } from \"../lib/chain\";\nimport { requirePrivateKey, requireValue } from \"../lib/env\";\n\ninterface AccountCreateOptions {\n\treadonly chain?: string;\n\treadonly ownerPrivateKey?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly deploy?: boolean;\n}\n\nasync function runAccountCreate(options: AccountCreateOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tif (options.deploy === true) {\n\t\tassertMainnetGuard(profile);\n\t}\n\n\tconst ownerKey = requirePrivateKey(\n\t\toptions.ownerPrivateKey,\n\t\t\"OWNER_PRIVATE_KEY\",\n\t\t\"owner-private-key\",\n\t);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\n\tconst owner = privateKeyToAccount(ownerKey);\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\n\tconst entryPoint = getEntryPoint(\"0.7\");\n\tconst kernelVersion = KERNEL_V3_1;\n\tconst sudoValidator = await signerToEcdsaValidator(publicClient, {\n\t\tsigner: owner,\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst account = await createKernelAccount(publicClient, {\n\t\tplugins: { sudo: sudoValidator },\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Owner (EOA): \", owner.address);\n\tconsole.log(\"Smart account address: \", account.address);\n\n\tif (options.deploy !== true) {\n\t\tconsole.log(\n\t\t\t\"\\n(counterfactual — pass --deploy to broadcast a sponsored UserOp that deploys the account.)\",\n\t\t);\n\t\treturn;\n\t}\n\n\tconsole.log(\"\\nDeploying via a sponsored self-call UserOp...\");\n\tconst paymasterClient = createZeroDevPaymasterClient({\n\t\tchain: profile.chain,\n\t\ttransport: http(rpcUrl),\n\t});\n\tconst kernelClient = createKernelAccountClient({\n\t\taccount,\n\t\tchain: profile.chain,\n\t\tclient: publicClient,\n\t\tbundlerTransport: http(rpcUrl),\n\t\tpaymaster: {\n\t\t\tgetPaymasterData: (userOperation) => paymasterClient.sponsorUserOperation({ userOperation }),\n\t\t},\n\t});\n\tconst userOpHash = await kernelClient.sendUserOperation({\n\t\tcallData: await account.encodeCalls([{ to: account.address, value: 0n, data: \"0x\" }]),\n\t});\n\tconsole.log(\"userOp hash: \", userOpHash);\n\tconst receipt = await kernelClient.waitForUserOperationReceipt({ hash: userOpHash });\n\tconst txHash = receipt.receipt.transactionHash;\n\tconsole.log(\"bundle tx hash: \", txHash);\n\tconsole.log(\"explorer: \", `${profile.explorerTxBase}${txHash}`);\n}\n\nexport function registerAccountCommand(program: Command): void {\n\tconst account = program.command(\"account\").description(\"Smart-account lifecycle commands\");\n\n\taccount\n\t\t.command(\"create\")\n\t\t.description(\"Compute (or deploy) the smart-account address for an owner key\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--owner-private-key <hex>\", \"Owner EOA private key (or env OWNER_PRIVATE_KEY)\")\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\n\t\t\t\"--deploy\",\n\t\t\t\"Broadcast a sponsored self-call UserOp that deploys the account (mainnet requires KAWASEKIT_ALLOW_MAINNET=1)\",\n\t\t)\n\t\t.action(async (options: AccountCreateOptions) => {\n\t\t\tawait runAccountCreate(options);\n\t\t});\n}\n","import { existsSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { Command } from \"commander\";\n\n/**\n * `kawasekit init` — writes a starter `.env.example` into the current\n * working directory and prints next steps. Idempotent unless `--force`.\n *\n * The starter env is intentionally narrow: only the variables a brand-new\n * kawasekit consumer needs to follow the README quick-start. Operators add\n * additional vars (X402_*, KAWASEKIT_X402_CHAIN, KAWASEKIT_ALLOW_MAINNET, …)\n * as they reach those sections of the docs.\n */\nconst STARTER_ENV_EXAMPLE = `# kawasekit — environment variables\n#\n# Copy this file to \\`.env\\` and fill in real values:\n# cp .env.example .env\n#\n# NEVER commit the real \\`.env\\` file. It is gitignored on purpose.\n\n# Private key of the smart-account OWNER (the EOA signer).\n# 0x-prefixed 32-byte hex. Use a throwaway testnet key for testnet work.\nOWNER_PRIVATE_KEY=0x...\n\n# ZeroDev project ID. Create a project at https://dashboard.zerodev.app\n# and copy its ID here. Used for bundler + paymaster sponsorship.\nZERODEV_PROJECT_ID=\n\n# Recipient of the test transfer. Defaults to the smart account itself.\n# JPYC_RECIPIENT=0x...\n`;\n\ninterface InitOptions {\n\treadonly force?: boolean;\n}\n\nasync function runInit(options: InitOptions): Promise<void> {\n\tconst targetPath = resolve(process.cwd(), \".env.example\");\n\tconst alreadyExists = existsSync(targetPath);\n\tif (alreadyExists && options.force !== true) {\n\t\tconsole.log(`.env.example already exists at ${targetPath} — pass --force to overwrite.`);\n\t\tconsole.log(`Next: copy it to .env and fill in the required values.`);\n\t\treturn;\n\t}\n\twriteFileSync(targetPath, STARTER_ENV_EXAMPLE, \"utf8\");\n\tconsole.log(`${alreadyExists ? \"Overwrote\" : \"Wrote\"} ${targetPath}`);\n\tconsole.log(`Next: copy it to .env (cp .env.example .env) and fill in the required values.`);\n}\n\nexport function registerInitCommand(program: Command): void {\n\tprogram\n\t\t.command(\"init\")\n\t\t.description(\"Scaffold a starter .env.example in the current directory\")\n\t\t.option(\"--force\", \"Overwrite an existing .env.example\")\n\t\t.action(async (options: InitOptions) => {\n\t\t\tawait runInit(options);\n\t\t});\n}\n","import type { Command } from \"commander\";\nimport { getAddress, parseUnits } from \"viem\";\nimport { createJpycDailyLimitPolicies, getJpycAddress, JPYC_DECIMALS } from \"../../src\";\nimport { resolveChain } from \"../lib/chain\";\n\ninterface PolicyCreateOptions {\n\treadonly chain?: string;\n\treadonly maxPerTx?: string;\n\treadonly maxPerDay?: string;\n\treadonly jpycAddress?: string;\n}\n\nfunction parsePositiveInt(value: string, label: string): number {\n\tconst n = Number.parseInt(value, 10);\n\tif (!Number.isFinite(n) || n <= 0) {\n\t\tthrow new Error(`${label} must be a positive integer, got ${JSON.stringify(value)}.`);\n\t}\n\treturn n;\n}\n\nasync function runPolicyCreate(options: PolicyCreateOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tconst maxPerTxHuman = options.maxPerTx ?? \"100\";\n\tconst maxPerDay = parsePositiveInt(options.maxPerDay ?? \"10\", \"--max-per-day\");\n\tconst maxPerTransfer = parseUnits(maxPerTxHuman, JPYC_DECIMALS);\n\n\tconst jpycAddress = options.jpycAddress\n\t\t? getAddress(options.jpycAddress)\n\t\t: getJpycAddress(profile.chain.id);\n\n\t// Build the actual policy array — this validates the inputs end-to-end\n\t// using the same path the SDK will at issue time, so a `policy create`\n\t// dry-run catches malformed inputs before the operator commits to issuing.\n\tconst policies = createJpycDailyLimitPolicies({\n\t\tjpycAddress,\n\t\tmaxPerTransfer,\n\t\tmaxTransfersPerDay: maxPerDay,\n\t});\n\n\tconst summary = {\n\t\tchain: profile.displayName,\n\t\tjpycAddress,\n\t\tmaxPerTransfer: {\n\t\t\thuman: maxPerTxHuman,\n\t\t\twei: maxPerTransfer.toString(),\n\t\t},\n\t\tmaxTransfersPerDay: maxPerDay,\n\t\tpolicyCount: policies.length,\n\t\tnote: \"Dry-run. No on-chain action taken. Use `kawasekit session-key issue` with the same --max-per-tx / --max-per-day to install these on a session validator.\",\n\t};\n\n\tconsole.log(JSON.stringify(summary, null, 2));\n}\n\nexport function registerPolicyCommand(program: Command): void {\n\tconst policy = program.command(\"policy\").description(\"Policy builder + inspector\");\n\tpolicy\n\t\t.command(\"create\")\n\t\t.description(\"Dry-run the daily-limit policy and print the resolved parameters as JSON\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--max-per-tx <human>\", 'Per-transfer cap in decimal JPYC. Default \"100\".')\n\t\t.option(\"--max-per-day <count>\", 'Maximum transfers per 24h window. Default \"10\".')\n\t\t.option(\n\t\t\t\"--jpyc-address <address>\",\n\t\t\t\"JPYC contract address override. Defaults to the canonical kawasekit address for the chosen chain.\",\n\t\t)\n\t\t.action(async (options: PolicyCreateOptions) => {\n\t\t\tawait runPolicyCreate(options);\n\t\t});\n}\n","import { randomBytes } from \"node:crypto\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { signerToEcdsaValidator } from \"@zerodev/ecdsa-validator\";\nimport {\n\tcreateKernelAccount,\n\tcreateKernelAccountClient,\n\tcreateZeroDevPaymasterClient,\n} from \"@zerodev/sdk\";\nimport { getEntryPoint, KERNEL_V3_1 } from \"@zerodev/sdk/constants\";\nimport type { Command } from \"commander\";\nimport { createPublicClient, getAddress, type Hex, http, parseUnits } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport {\n\tcreateJpycDailyLimitPolicies,\n\tgetJpycAddress,\n\tissueSessionKey,\n\tJPYC_DECIMALS,\n\ttype KawasekitSessionEnvelope,\n\tparseSessionEnvelope,\n\trestoreSessionAccount,\n\trevokeSessionKey,\n\trotateSessionKey,\n\tserializeSessionEnvelope,\n\tzerodevRpcUrl,\n} from \"../../src\";\nimport { assertMainnetGuard, type CliChainProfile, resolveChain } from \"../lib/chain\";\nimport { asPrivateKey, requirePrivateKey, requireValue } from \"../lib/env\";\n\ninterface PolicyFlags {\n\treadonly maxPerTx?: string;\n\treadonly maxPerDay?: string;\n\treadonly jpycAddress?: string;\n}\n\nfunction buildPolicies(\n\tprofile: CliChainProfile,\n\tflags: PolicyFlags,\n): ReturnType<typeof createJpycDailyLimitPolicies> {\n\tconst jpycAddress = flags.jpycAddress\n\t\t? getAddress(flags.jpycAddress)\n\t\t: getJpycAddress(profile.chain.id);\n\tconst maxPerTransfer = parseUnits(flags.maxPerTx ?? \"100\", JPYC_DECIMALS);\n\tconst maxTransfersPerDay = Number.parseInt(flags.maxPerDay ?? \"10\", 10);\n\treturn createJpycDailyLimitPolicies({\n\t\tjpycAddress,\n\t\tmaxPerTransfer,\n\t\tmaxTransfersPerDay,\n\t});\n}\n\nfunction generateEphemeralSessionKey(): Hex {\n\treturn `0x${randomBytes(32).toString(\"hex\")}` as Hex;\n}\n\nfunction loadEnvelope(envelopePath: string): KawasekitSessionEnvelope {\n\tconst raw = readFileSync(resolve(process.cwd(), envelopePath), \"utf8\");\n\treturn parseSessionEnvelope(raw);\n}\n\n// ---------------------------------------------------------------------------\n// session-key issue\n// ---------------------------------------------------------------------------\n\ninterface IssueOptions extends PolicyFlags {\n\treadonly chain?: string;\n\treadonly ownerPrivateKey?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly sessionPrivateKey?: string;\n\treadonly ephemeralSession?: boolean;\n\treadonly output?: string;\n}\n\nasync function runIssue(options: IssueOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tconst ownerKey = requirePrivateKey(\n\t\toptions.ownerPrivateKey,\n\t\t\"OWNER_PRIVATE_KEY\",\n\t\t\"owner-private-key\",\n\t);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\tconst sessionKey =\n\t\toptions.ephemeralSession === true\n\t\t\t? generateEphemeralSessionKey()\n\t\t\t: asPrivateKey(\n\t\t\t\t\trequireValue(options.sessionPrivateKey, \"SESSION_KEY_PRIVATE_KEY\", \"session-private-key\"),\n\t\t\t\t\t\"SESSION_KEY_PRIVATE_KEY\",\n\t\t\t\t);\n\tconst owner = privateKeyToAccount(ownerKey);\n\tconst session = privateKeyToAccount(sessionKey);\n\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\tconst policies = buildPolicies(profile, options);\n\n\tconst envelope = await issueSessionKey({\n\t\tpublicClient,\n\t\townerSigner: owner,\n\t\tsessionKeySigner: session,\n\t\tpolicies,\n\t\tpolicySummary: {\n\t\t\tjpycAddress: options.jpycAddress\n\t\t\t\t? getAddress(options.jpycAddress)\n\t\t\t\t: getJpycAddress(profile.chain.id),\n\t\t\tmaxPerTransfer: parseUnits(options.maxPerTx ?? \"100\", JPYC_DECIMALS),\n\t\t\tmaxTransfersPerDay: Number.parseInt(options.maxPerDay ?? \"10\", 10),\n\t\t},\n\t});\n\n\tconst wire = serializeSessionEnvelope(envelope);\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Owner (EOA): \", owner.address);\n\tconsole.log(\n\t\t\"Session key (EOA): \",\n\t\tsession.address,\n\t\toptions.ephemeralSession === true ? \"(fresh ephemeral, this run only)\" : \"\",\n\t);\n\tconsole.log(\"Smart account: \", envelope.smartAccountAddress);\n\n\tif (options.output !== undefined) {\n\t\tconst outPath = resolve(process.cwd(), options.output);\n\t\twriteFileSync(outPath, wire, \"utf8\");\n\t\tconsole.log(\"Envelope written to: \", outPath);\n\t} else {\n\t\tconsole.log(\"\\n--- envelope (JSON) ---\");\n\t\tconsole.log(wire);\n\t}\n\n\tif (options.ephemeralSession === true) {\n\t\tconsole.log(\n\t\t\t\"\\n⚠️ The ephemeral session-key private key is NOT stored anywhere. Save it now if you need to restore later:\",\n\t\t);\n\t\tconsole.log(\" SESSION_KEY_PRIVATE_KEY=\", sessionKey);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// session-key restore\n// ---------------------------------------------------------------------------\n\ninterface RestoreOptions {\n\treadonly chain?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly sessionPrivateKey?: string;\n\treadonly envelope?: string;\n}\n\nasync function runRestore(options: RestoreOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\tconst sessionKey = requirePrivateKey(\n\t\toptions.sessionPrivateKey,\n\t\t\"SESSION_KEY_PRIVATE_KEY\",\n\t\t\"session-private-key\",\n\t);\n\tconst envelopePath = requireValue(options.envelope, \"KAWASEKIT_ENVELOPE_PATH\", \"envelope\");\n\tconst envelope = loadEnvelope(envelopePath);\n\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\n\tconst account = await restoreSessionAccount({\n\t\tpublicClient,\n\t\tenvelope,\n\t\tsessionKeySigner: privateKeyToAccount(sessionKey),\n\t});\n\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Envelope chainId: \", envelope.chainId);\n\tconsole.log(\"Envelope smart account: \", envelope.smartAccountAddress);\n\tconsole.log(\"Restored account: \", account.address);\n\tif (getAddress(account.address) !== getAddress(envelope.smartAccountAddress)) {\n\t\tthrow new Error(\n\t\t\t\"Restored account address does not match the envelope's smart-account address.\",\n\t\t);\n\t}\n\tconsole.log(\"\\n✅ Envelope restored — the agent can now sign UserOps with the session key.\");\n}\n\n// ---------------------------------------------------------------------------\n// session-key revoke\n// ---------------------------------------------------------------------------\n\ninterface RevokeOptions extends PolicyFlags {\n\treadonly chain?: string;\n\treadonly ownerPrivateKey?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly sessionPrivateKey?: string;\n\treadonly envelope?: string;\n}\n\nasync function runRevoke(options: RevokeOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tassertMainnetGuard(profile);\n\n\tconst ownerKey = requirePrivateKey(\n\t\toptions.ownerPrivateKey,\n\t\t\"OWNER_PRIVATE_KEY\",\n\t\t\"owner-private-key\",\n\t);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\tconst sessionKey = requirePrivateKey(\n\t\toptions.sessionPrivateKey,\n\t\t\"SESSION_KEY_PRIVATE_KEY\",\n\t\t\"session-private-key\",\n\t);\n\tconst envelopePath = requireValue(options.envelope, \"KAWASEKIT_ENVELOPE_PATH\", \"envelope\");\n\tconst envelope = loadEnvelope(envelopePath);\n\n\tconst owner = privateKeyToAccount(ownerKey);\n\tconst session = privateKeyToAccount(sessionKey);\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\n\t// Build a sudo-only kernel client — revoke MUST go through the ECDSA\n\t// validator, not the session-key permission validator. See SDK JSDoc in\n\t// src/session/revoke.ts.\n\tconst entryPoint = getEntryPoint(\"0.7\");\n\tconst kernelVersion = KERNEL_V3_1;\n\tconst sudoValidator = await signerToEcdsaValidator(publicClient, {\n\t\tsigner: owner,\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst sudoAccount = await createKernelAccount(publicClient, {\n\t\tplugins: { sudo: sudoValidator },\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst paymasterClient = createZeroDevPaymasterClient({\n\t\tchain: profile.chain,\n\t\ttransport: http(rpcUrl),\n\t});\n\tconst ownerKernelClient = createKernelAccountClient({\n\t\taccount: sudoAccount,\n\t\tchain: profile.chain,\n\t\tclient: publicClient,\n\t\tbundlerTransport: http(rpcUrl),\n\t\tpaymaster: {\n\t\t\tgetPaymasterData: (userOperation) => paymasterClient.sponsorUserOperation({ userOperation }),\n\t\t},\n\t});\n\n\tconst policies = buildPolicies(profile, options);\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Owner (EOA): \", owner.address);\n\tconsole.log(\"Session key (EOA): \", session.address);\n\tconsole.log(\"Smart account: \", envelope.smartAccountAddress);\n\tconsole.log(\"\\nRevoking session validator (uninstallValidation)...\");\n\n\tconst result = await revokeSessionKey({\n\t\townerKernelClient,\n\t\tenvelope,\n\t\tsessionKeySigner: session,\n\t\tpolicies,\n\t});\n\tconsole.log(\"userOp hash: \", result.userOpHash);\n\tconsole.log(\"bundle tx hash: \", result.transactionHash);\n\tif (result.transactionHash) {\n\t\tconsole.log(\"explorer: \", `${profile.explorerTxBase}${result.transactionHash}`);\n\t}\n\tif (!result.success) {\n\t\tthrow new Error(\"Revoke UserOp reported failure.\");\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// session-key rotate\n// ---------------------------------------------------------------------------\n\ninterface RotateOptions extends PolicyFlags {\n\treadonly chain?: string;\n\treadonly ownerPrivateKey?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly oldSessionPrivateKey?: string;\n\treadonly oldEnvelope?: string;\n\treadonly newSessionPrivateKey?: string;\n\treadonly ephemeralNewSession?: boolean;\n\treadonly output?: string;\n}\n\nasync function runRotate(options: RotateOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tassertMainnetGuard(profile);\n\n\tconst ownerKey = requirePrivateKey(\n\t\toptions.ownerPrivateKey,\n\t\t\"OWNER_PRIVATE_KEY\",\n\t\t\"owner-private-key\",\n\t);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\tconst oldSessionKey = requirePrivateKey(\n\t\toptions.oldSessionPrivateKey,\n\t\t\"SESSION_KEY_PRIVATE_KEY\",\n\t\t\"old-session-private-key\",\n\t);\n\tconst oldEnvelopePath = requireValue(\n\t\toptions.oldEnvelope,\n\t\t\"KAWASEKIT_ENVELOPE_PATH\",\n\t\t\"old-envelope\",\n\t);\n\tconst oldEnvelope = loadEnvelope(oldEnvelopePath);\n\n\tconst newSessionKey =\n\t\toptions.ephemeralNewSession === true\n\t\t\t? generateEphemeralSessionKey()\n\t\t\t: asPrivateKey(\n\t\t\t\t\trequireValue(\n\t\t\t\t\t\toptions.newSessionPrivateKey,\n\t\t\t\t\t\t\"SESSION_KEY_PRIVATE_KEY_NEW\",\n\t\t\t\t\t\t\"new-session-private-key\",\n\t\t\t\t\t),\n\t\t\t\t\t\"new session private key\",\n\t\t\t\t);\n\n\tconst owner = privateKeyToAccount(ownerKey);\n\tconst oldSession = privateKeyToAccount(oldSessionKey);\n\tconst newSession = privateKeyToAccount(newSessionKey);\n\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\tconst entryPoint = getEntryPoint(\"0.7\");\n\tconst kernelVersion = KERNEL_V3_1;\n\tconst sudoValidator = await signerToEcdsaValidator(publicClient, {\n\t\tsigner: owner,\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst sudoAccount = await createKernelAccount(publicClient, {\n\t\tplugins: { sudo: sudoValidator },\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst paymasterClient = createZeroDevPaymasterClient({\n\t\tchain: profile.chain,\n\t\ttransport: http(rpcUrl),\n\t});\n\tconst ownerKernelClient = createKernelAccountClient({\n\t\taccount: sudoAccount,\n\t\tchain: profile.chain,\n\t\tclient: publicClient,\n\t\tbundlerTransport: http(rpcUrl),\n\t\tpaymaster: {\n\t\t\tgetPaymasterData: (userOperation) => paymasterClient.sponsorUserOperation({ userOperation }),\n\t\t},\n\t});\n\n\tconst policies = buildPolicies(profile, options);\n\tconst policySummary = {\n\t\tjpycAddress: options.jpycAddress\n\t\t\t? getAddress(options.jpycAddress)\n\t\t\t: getJpycAddress(profile.chain.id),\n\t\tmaxPerTransfer: parseUnits(options.maxPerTx ?? \"100\", JPYC_DECIMALS),\n\t\tmaxTransfersPerDay: Number.parseInt(options.maxPerDay ?? \"10\", 10),\n\t};\n\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Owner (EOA): \", owner.address);\n\tconsole.log(\"Old session key (EOA): \", oldSession.address);\n\tconsole.log(\"New session key (EOA): \", newSession.address);\n\tconsole.log(\"Smart account: \", oldEnvelope.smartAccountAddress);\n\tconsole.log(\"\\nRotating: revoke old → issue new (awaits revoke receipt)...\");\n\n\tconst { revoke, envelope } = await rotateSessionKey({\n\t\trevoke: {\n\t\t\townerKernelClient,\n\t\t\tenvelope: oldEnvelope,\n\t\t\tsessionKeySigner: oldSession,\n\t\t\tpolicies,\n\t\t},\n\t\tissue: {\n\t\t\tpublicClient,\n\t\t\townerSigner: owner,\n\t\t\tsessionKeySigner: newSession,\n\t\t\tpolicies,\n\t\t\tpolicySummary,\n\t\t},\n\t});\n\tconsole.log(\"revoke userOp hash: \", revoke.userOpHash);\n\tconsole.log(\"revoke bundle tx: \", revoke.transactionHash);\n\tif (revoke.transactionHash) {\n\t\tconsole.log(\"revoke explorer: \", `${profile.explorerTxBase}${revoke.transactionHash}`);\n\t}\n\tif (!revoke.success) {\n\t\tthrow new Error(\"Revoke step failed — new envelope was NOT issued.\");\n\t}\n\n\tconst wire = serializeSessionEnvelope(envelope);\n\tif (options.output !== undefined) {\n\t\tconst outPath = resolve(process.cwd(), options.output);\n\t\twriteFileSync(outPath, wire, \"utf8\");\n\t\tconsole.log(\"\\nNew envelope written: \", outPath);\n\t} else {\n\t\tconsole.log(\"\\n--- new envelope (JSON) ---\");\n\t\tconsole.log(wire);\n\t}\n\tif (options.ephemeralNewSession === true) {\n\t\tconsole.log(\n\t\t\t\"\\n⚠️ The new ephemeral session-key private key is NOT stored anywhere. Save it now if you need to restore later:\",\n\t\t);\n\t\tconsole.log(\" SESSION_KEY_PRIVATE_KEY=\", newSessionKey);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Command registration\n// ---------------------------------------------------------------------------\n\nexport function registerSessionKeyCommand(program: Command): void {\n\tconst sessionKey = program\n\t\t.command(\"session-key\")\n\t\t.description(\"Issue / restore / revoke / rotate agent session keys\");\n\n\tsessionKey\n\t\t.command(\"issue\")\n\t\t.description(\"Owner issues a session-key envelope for the agent\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--owner-private-key <hex>\", \"Owner EOA private key (or env OWNER_PRIVATE_KEY)\")\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\n\t\t\t\"--session-private-key <hex>\",\n\t\t\t\"Session EOA private key (or env SESSION_KEY_PRIVATE_KEY)\",\n\t\t)\n\t\t.option(\n\t\t\t\"--ephemeral-session\",\n\t\t\t\"Generate a fresh ephemeral session key for this run (use for production rotation; printed at end, never stored automatically)\",\n\t\t)\n\t\t.option(\"--max-per-tx <human>\", 'Per-transfer cap in decimal JPYC. Default \"100\".')\n\t\t.option(\"--max-per-day <count>\", 'Maximum transfers per 24h window. Default \"10\".')\n\t\t.option(\n\t\t\t\"--jpyc-address <address>\",\n\t\t\t\"JPYC contract override. Defaults to the canonical kawasekit address.\",\n\t\t)\n\t\t.option(\"--output <path>\", \"Write the envelope JSON to this path instead of stdout.\")\n\t\t.action(async (options: IssueOptions) => {\n\t\t\tawait runIssue(options);\n\t\t});\n\n\tsessionKey\n\t\t.command(\"restore\")\n\t\t.description(\"Agent restores a smart-account client from an envelope file\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\n\t\t\t\"--session-private-key <hex>\",\n\t\t\t\"Session EOA private key (or env SESSION_KEY_PRIVATE_KEY)\",\n\t\t)\n\t\t.option(\"--envelope <path>\", \"Path to the envelope JSON file\")\n\t\t.action(async (options: RestoreOptions) => {\n\t\t\tawait runRestore(options);\n\t\t});\n\n\tsessionKey\n\t\t.command(\"revoke\")\n\t\t.description(\"Owner revokes a session key by uninstalling its permission validator\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--owner-private-key <hex>\", \"Owner EOA private key (or env OWNER_PRIVATE_KEY)\")\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\"--session-private-key <hex>\", \"Session EOA private key the validator was issued under\")\n\t\t.option(\"--envelope <path>\", \"Path to the envelope JSON file to revoke\")\n\t\t.option(\n\t\t\t\"--max-per-tx <human>\",\n\t\t\t'Per-transfer cap (must match issue-time value). Default \"100\".',\n\t\t)\n\t\t.option(\n\t\t\t\"--max-per-day <count>\",\n\t\t\t'Daily transfer count (must match issue-time value). Default \"10\".',\n\t\t)\n\t\t.option(\"--jpyc-address <address>\", \"JPYC contract override.\")\n\t\t.action(async (options: RevokeOptions) => {\n\t\t\tawait runRevoke(options);\n\t\t});\n\n\tsessionKey\n\t\t.command(\"rotate\")\n\t\t.description(\"Revoke the old session and issue a new one in one shot (atomic-ish)\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--owner-private-key <hex>\", \"Owner EOA private key (or env OWNER_PRIVATE_KEY)\")\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\n\t\t\t\"--old-session-private-key <hex>\",\n\t\t\t\"Old session-key private key (or env SESSION_KEY_PRIVATE_KEY)\",\n\t\t)\n\t\t.option(\"--old-envelope <path>\", \"Path to the old envelope JSON file\")\n\t\t.option(\n\t\t\t\"--new-session-private-key <hex>\",\n\t\t\t\"New session-key private key (or env SESSION_KEY_PRIVATE_KEY_NEW)\",\n\t\t)\n\t\t.option(\n\t\t\t\"--ephemeral-new-session\",\n\t\t\t\"Generate a fresh ephemeral new session key for this rotation\",\n\t\t)\n\t\t.option(\"--max-per-tx <human>\", 'Per-transfer cap (same for old + new). Default \"100\".')\n\t\t.option(\"--max-per-day <count>\", 'Daily transfer count (same for old + new). Default \"10\".')\n\t\t.option(\"--jpyc-address <address>\", \"JPYC contract override.\")\n\t\t.option(\"--output <path>\", \"Write the new envelope JSON to this path.\")\n\t\t.action(async (options: RotateOptions) => {\n\t\t\tawait runRotate(options);\n\t\t});\n}\n","import { signerToEcdsaValidator } from \"@zerodev/ecdsa-validator\";\nimport {\n\tcreateKernelAccount,\n\tcreateKernelAccountClient,\n\tcreateZeroDevPaymasterClient,\n} from \"@zerodev/sdk\";\nimport { getEntryPoint, KERNEL_V3_1 } from \"@zerodev/sdk/constants\";\nimport type { Command } from \"commander\";\nimport { type Address, createPublicClient, getAddress, http, parseUnits } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { getJpycAddress, JPYC_DECIMALS, jpycAbi, transferJpyc, zerodevRpcUrl } from \"../../src\";\nimport { assertMainnetGuard, resolveChain } from \"../lib/chain\";\nimport { requirePrivateKey, requireValue, resolveValue } from \"../lib/env\";\n\ninterface TransferOptions {\n\treadonly chain?: string;\n\treadonly ownerPrivateKey?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly to?: string;\n\treadonly amount?: string;\n}\n\nasync function runTransfer(options: TransferOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tassertMainnetGuard(profile);\n\n\tconst ownerKey = requirePrivateKey(\n\t\toptions.ownerPrivateKey,\n\t\t\"OWNER_PRIVATE_KEY\",\n\t\t\"owner-private-key\",\n\t);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\tconst amountHuman = options.amount ?? resolveValue(undefined, \"JPYC_AMOUNT_HUMAN\") ?? \"1\";\n\tconst amount = parseUnits(amountHuman, JPYC_DECIMALS);\n\n\tconst owner = privateKeyToAccount(ownerKey);\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\tconst entryPoint = getEntryPoint(\"0.7\");\n\tconst kernelVersion = KERNEL_V3_1;\n\tconst sudoValidator = await signerToEcdsaValidator(publicClient, {\n\t\tsigner: owner,\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst account = await createKernelAccount(publicClient, {\n\t\tplugins: { sudo: sudoValidator },\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst paymasterClient = createZeroDevPaymasterClient({\n\t\tchain: profile.chain,\n\t\ttransport: http(rpcUrl),\n\t});\n\tconst kernelClient = createKernelAccountClient({\n\t\taccount,\n\t\tchain: profile.chain,\n\t\tclient: publicClient,\n\t\tbundlerTransport: http(rpcUrl),\n\t\tpaymaster: {\n\t\t\tgetPaymasterData: (userOperation) => paymasterClient.sponsorUserOperation({ userOperation }),\n\t\t},\n\t});\n\n\tconst jpycAddress = getJpycAddress(profile.chain.id);\n\tconst balance = (await publicClient.readContract({\n\t\taddress: jpycAddress,\n\t\tabi: jpycAbi,\n\t\tfunctionName: \"balanceOf\",\n\t\targs: [account.address],\n\t})) as bigint;\n\n\tconst recipientRaw = options.to ?? resolveValue(undefined, \"JPYC_RECIPIENT\") ?? account.address;\n\tconst recipient: Address = getAddress(recipientRaw);\n\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Owner (EOA): \", owner.address);\n\tconsole.log(\"Smart account: \", account.address);\n\tconsole.log(\"JPYC contract: \", jpycAddress);\n\tconsole.log(\"Smart-account JPYC balance:\", balance.toString(), \"wei\");\n\tconsole.log(\"Recipient: \", recipient);\n\tconsole.log(\"Amount: \", amountHuman, \"JPYC =\", amount.toString(), \"wei\");\n\n\tif (amount === 0n) {\n\t\tthrow new Error(\"--amount must be greater than 0.\");\n\t}\n\tif (balance < amount) {\n\t\tthrow new Error(\n\t\t\t`Smart account has insufficient JPYC. Need ${amount.toString()} wei, has ${balance.toString()} wei. Fund ${account.address} before retrying.`,\n\t\t);\n\t}\n\n\tconsole.log(`\\nSending ${amountHuman} JPYC via sponsored UserOp...`);\n\tconst result = await transferJpyc(kernelClient, { to: recipient, amount });\n\tconsole.log(\"userOp hash: \", result.userOpHash);\n\tconsole.log(\"bundle tx hash: \", result.transactionHash);\n\tif (result.transactionHash) {\n\t\tconsole.log(\"explorer: \", `${profile.explorerTxBase}${result.transactionHash}`);\n\t}\n\tif (!result.success) {\n\t\tthrow new Error(\"UserOp reported failure — see explorer for revert reason.\");\n\t}\n}\n\nexport function registerTransferCommand(program: Command): void {\n\tprogram\n\t\t.command(\"transfer\")\n\t\t.description(\"Send JPYC from a smart account via a sponsored UserOp\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--owner-private-key <hex>\", \"Owner EOA private key (or env OWNER_PRIVATE_KEY)\")\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\n\t\t\t\"--to <address>\",\n\t\t\t\"Recipient address. Defaults to the smart account itself (loop-back) when unset.\",\n\t\t)\n\t\t.option(\"--amount <human>\", 'Amount in decimal JPYC (e.g. 0.001). Default \"1\".')\n\t\t.action(async (options: TransferOptions) => {\n\t\t\tawait runTransfer(options);\n\t\t});\n}\n","#!/usr/bin/env node\n\n/**\n * kawasekit CLI entry.\n *\n * Subcommands:\n * init — scaffold .env.example\n * account create — derive / deploy a smart account\n * transfer — send JPYC via sponsored UserOp\n * policy create — dry-run the daily-limit policy\n * session-key issue|restore|revoke|rotate\n * — agent session-key lifecycle\n *\n * Every subcommand that touches a network requires `--chain polygon|polygonAmoy`.\n * Mainnet broadcasts additionally require `KAWASEKIT_ALLOW_MAINNET=1` in the\n * environment.\n */\n\nimport { Command } from \"commander\";\nimport { registerAccountCommand } from \"./commands/account\";\nimport { registerInitCommand } from \"./commands/init\";\nimport { registerPolicyCommand } from \"./commands/policy\";\nimport { registerSessionKeyCommand } from \"./commands/session-key\";\nimport { registerTransferCommand } from \"./commands/transfer\";\n\n// `.env` is loaded lazily by resolveValue / requireValue (cli/lib/env.ts),\n// only when a command actually reads a value — so `--version` / `--help`\n// never touch the filesystem or the environment.\n//\n// __KAWASEKIT_VERSION__ is replaced at build time by tsup's `define` (see\n// tsup.config.ts) with the literal package.json version. When the CLI runs\n// from un-built source (tsx, the cli-smoke tests) the identifier is undefined;\n// the `typeof` guard avoids a ReferenceError and falls back to a dev marker.\ndeclare const __KAWASEKIT_VERSION__: string;\nconst CLI_VERSION = typeof __KAWASEKIT_VERSION__ === \"string\" ? __KAWASEKIT_VERSION__ : \"0.0.0-dev\";\n\nconst program = new Command();\nprogram\n\t.name(\"kawasekit\")\n\t.description(\n\t\t\"kawasekit — CLI for the kawasekit SDK (AI-agent stablecoin payments, Japan-first, JPYC-native).\",\n\t)\n\t.version(CLI_VERSION);\n\nregisterInitCommand(program);\nregisterAccountCommand(program);\nregisterTransferCommand(program);\nregisterPolicyCommand(program);\nregisterSessionKeyCommand(program);\n\nprogram.parseAsync().catch((error: unknown) => {\n\tconsole.error(error instanceof Error ? error.message : String(error));\n\tprocess.exitCode = 1;\n});\n"]}
1
+ {"version":3,"sources":["../../node_modules/.pnpm/dotenv@17.4.2/node_modules/dotenv/lib/main.js","../../cli/lib/env.ts","../../cli/lib/chain.ts","../../cli/commands/account.ts","../../cli/commands/init.ts","../../cli/commands/policy.ts","../../cli/commands/session-key.ts","../../cli/commands/transfer.ts","../../cli/index.ts"],"names":["path","loadDotenv","program","getAddress","parseUnits","resolve","privateKeyToAccount","createPublicClient","http","writeFileSync","getEntryPoint","KERNEL_V3_1","signerToEcdsaValidator","createKernelAccount","createZeroDevPaymasterClient","createKernelAccountClient"],"mappings":"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","file":"index.js","sourcesContent":["const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\n\n// Array of tips to display randomly\nconst TIPS = [\n '◈ encrypted .env [www.dotenvx.com]',\n '◈ secrets for agents [www.dotenvx.com]',\n '⌁ auth for agents [www.vestauth.com]',\n '⌘ custom filepath { path: \\'/custom/path/.env\\' }',\n '⌘ enable debugging { debug: true }',\n '⌘ override existing { override: true }',\n '⌘ suppress logs { quiet: true }',\n '⌘ multiple files { path: [\\'.env.local\\', \\'.env\\'] }'\n]\n\n// Get a random tip from the tips array\nfunction _getRandomTip () {\n return TIPS[Math.floor(Math.random() * TIPS.length)]\n}\n\nfunction parseBoolean (value) {\n if (typeof value === 'string') {\n return !['false', '0', 'no', 'off', ''].includes(value.toLowerCase())\n }\n return Boolean(value)\n}\n\nfunction supportsAnsi () {\n return process.stdout.isTTY // && process.env.TERM !== 'dumb'\n}\n\nfunction dim (text) {\n return supportsAnsi() ? `\\x1b[2m${text}\\x1b[0m` : text\n}\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n options = options || {}\n\n const vaultPath = _vaultPath(options)\n options.path = vaultPath // parse .env.vault\n const result = DotenvModule.configDotenv(options)\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _warn (message) {\n console.error(`⚠ ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`┆ ${message}`)\n}\n\nfunction _log (message) {\n console.log(`◇ ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || (options && options.debug))\n const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (debug || !quiet) {\n _log('loading env from encrypted .env.vault')\n }\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || (options && options.debug))\n let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('no encoding is specified (UTF-8 is used by default)')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n const populated = DotenvModule.populate(processEnv, parsedAll, options)\n\n // handle user settings DOTENV_CONFIG_ options inside .env file(s)\n debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug)\n quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet)\n\n if (debug || !quiet) {\n const keysCount = Object.keys(populated).length\n const shortPaths = []\n for (const filePath of optionPaths) {\n try {\n const relative = path.relative(process.cwd(), filePath)\n shortPaths.push(relative)\n } catch (e) {\n if (debug) {\n _debug(`failed to load ${filePath} ${e.message}`)\n }\n lastError = e\n }\n }\n\n _log(`injected env (${keysCount}) from ${shortPaths.join(',')} ${dim(`// tip: ${_getRandomTip()}`)}`)\n }\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`you set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n const populated = {}\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n }\n\n return populated\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n","/**\n * Environment loading helpers shared by every CLI command.\n *\n * The CLI loads `.env` from the current working directory (so a user can\n * `cd ~/my-agent-project && kawasekit transfer …` and have their secrets\n * picked up automatically) but every command also accepts the same value\n * as an explicit `--xxx` flag for ad-hoc use.\n */\n\nimport { config as loadDotenv } from \"dotenv\";\nimport type { Hex } from \"viem\";\n\nlet dotenvLoaded = false;\n\n/**\n * Ensure `.env` from the current working directory has been merged into\n * `process.env`. Safe to call multiple times — subsequent calls are no-ops.\n */\nexport function ensureDotenvLoaded(): void {\n\tif (dotenvLoaded) return;\n\t// `quiet: true` suppresses dotenv v17's promotional \"injecting env … (tip:\n\t// …)\" banner — a CLI loading secrets should not print to stdout, and it\n\t// otherwise leaks onto `--version` / `--help` output.\n\tloadDotenv({ override: false, quiet: true });\n\tdotenvLoaded = true;\n}\n\n/**\n * Resolve a value that may come from either an explicit CLI flag or a\n * named environment variable. Returns the flag value if present, otherwise\n * the env value, otherwise `undefined`.\n */\nexport function resolveValue(flagValue: string | undefined, envName: string): string | undefined {\n\tif (flagValue !== undefined && flagValue.trim() !== \"\") return flagValue;\n\tensureDotenvLoaded();\n\tconst raw = process.env[envName];\n\tif (raw === undefined || raw.trim() === \"\") return undefined;\n\treturn raw;\n}\n\n/**\n * Like {@link resolveValue} but throws a CLI-flavoured error if no value\n * was found. Use for inputs the command genuinely cannot proceed without.\n */\nexport function requireValue(flagValue: string | undefined, envName: string, hint: string): string {\n\tconst value = resolveValue(flagValue, envName);\n\tif (value === undefined) {\n\t\tthrow new Error(\n\t\t\t`Missing required value: pass --${hint} or set ${envName} in your environment / .env file.`,\n\t\t);\n\t}\n\treturn value;\n}\n\n/**\n * Validates a value as a 0x-prefixed 32-byte hex private key and returns it\n * typed as `Hex`. Throws with a CLI-friendly message on malformed input.\n */\nexport function asPrivateKey(value: string, source: string): Hex {\n\tif (!/^0x[0-9a-fA-F]{64}$/.test(value)) {\n\t\tthrow new Error(\n\t\t\t`${source} must be a 0x-prefixed 32-byte hex string (got ${value.length} chars).`,\n\t\t);\n\t}\n\treturn value as Hex;\n}\n\n/**\n * Resolves a required private key from a `--private-key` flag or an env var.\n */\nexport function requirePrivateKey(\n\tflagValue: string | undefined,\n\tenvName: string,\n\thint: string,\n): Hex {\n\treturn asPrivateKey(requireValue(flagValue, envName, hint), envName);\n}\n","/**\n * Chain selection shared by every CLI command that touches a network.\n *\n * Every command accepts a `--chain` flag whose value is one of the\n * kawasekit chain keys (`polygon`, `polygonAmoy`). The string is mapped to\n * the corresponding `KawaseChain` and a `network: \"mainnet\" | \"testnet\"`\n * literal that the SDK's M4-1 fail-fast guards expect.\n *\n * No default — the CLI requires an explicit choice so a user cannot silently\n * point a testnet config at mainnet (or vice versa).\n */\n\nimport { polygon, polygonAmoy } from \"../../src\";\nimport { resolveValue } from \"./env\";\n\nexport type CliChainKey = \"polygon\" | \"polygonAmoy\";\n\nexport interface CliChainProfile {\n\treadonly key: CliChainKey;\n\treadonly chain: typeof polygon | typeof polygonAmoy;\n\treadonly network: \"mainnet\" | \"testnet\";\n\treadonly explorerTxBase: string;\n\treadonly displayName: string;\n}\n\nexport function resolveChain(flagValue: string | undefined): CliChainProfile {\n\tconst key = flagValue;\n\tif (key === \"polygon\") {\n\t\treturn {\n\t\t\tkey,\n\t\t\tchain: polygon,\n\t\t\tnetwork: \"mainnet\",\n\t\t\texplorerTxBase: \"https://polygonscan.com/tx/\",\n\t\t\tdisplayName: \"Polygon mainnet (137)\",\n\t\t};\n\t}\n\tif (key === \"polygonAmoy\") {\n\t\treturn {\n\t\t\tkey,\n\t\t\tchain: polygonAmoy,\n\t\t\tnetwork: \"testnet\",\n\t\t\texplorerTxBase: \"https://amoy.polygonscan.com/tx/\",\n\t\t\tdisplayName: \"Polygon Amoy testnet (80002)\",\n\t\t};\n\t}\n\tthrow new Error(\n\t\t`--chain must be one of \"polygon\" (mainnet) or \"polygonAmoy\" (testnet). Got ${JSON.stringify(key ?? \"<missing>\")}.`,\n\t);\n}\n\n/**\n * Mainnet broadcast guard. Throws if the chosen chain is mainnet but the\n * operator has not explicitly set `KAWASEKIT_ALLOW_MAINNET=1`. CLI subcommands\n * that broadcast real-funds transactions MUST call this before any RPC work.\n */\nexport function assertMainnetGuard(profile: CliChainProfile): void {\n\tif (profile.network !== \"mainnet\") return;\n\tconst gate = resolveValue(undefined, \"KAWASEKIT_ALLOW_MAINNET\");\n\tif (gate !== \"1\") {\n\t\tthrow new Error(\n\t\t\t\"Refusing to broadcast on Polygon mainnet without explicit consent. Set KAWASEKIT_ALLOW_MAINNET=1 to acknowledge that this command will spend real funds.\",\n\t\t);\n\t}\n}\n","import { signerToEcdsaValidator } from \"@zerodev/ecdsa-validator\";\nimport {\n\tcreateKernelAccount,\n\tcreateKernelAccountClient,\n\tcreateZeroDevPaymasterClient,\n} from \"@zerodev/sdk\";\nimport { getEntryPoint, KERNEL_V3_1 } from \"@zerodev/sdk/constants\";\nimport type { Command } from \"commander\";\nimport { createPublicClient, http } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { zerodevRpcUrl } from \"../../src\";\nimport { assertMainnetGuard, resolveChain } from \"../lib/chain\";\nimport { requirePrivateKey, requireValue } from \"../lib/env\";\n\ninterface AccountCreateOptions {\n\treadonly chain?: string;\n\treadonly ownerPrivateKey?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly deploy?: boolean;\n}\n\nasync function runAccountCreate(options: AccountCreateOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tif (options.deploy === true) {\n\t\tassertMainnetGuard(profile);\n\t}\n\n\tconst ownerKey = requirePrivateKey(\n\t\toptions.ownerPrivateKey,\n\t\t\"OWNER_PRIVATE_KEY\",\n\t\t\"owner-private-key\",\n\t);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\n\tconst owner = privateKeyToAccount(ownerKey);\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\n\tconst entryPoint = getEntryPoint(\"0.7\");\n\tconst kernelVersion = KERNEL_V3_1;\n\tconst sudoValidator = await signerToEcdsaValidator(publicClient, {\n\t\tsigner: owner,\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst account = await createKernelAccount(publicClient, {\n\t\tplugins: { sudo: sudoValidator },\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Owner (EOA): \", owner.address);\n\tconsole.log(\"Smart account address: \", account.address);\n\n\tif (options.deploy !== true) {\n\t\tconsole.log(\n\t\t\t\"\\n(counterfactual — pass --deploy to broadcast a sponsored UserOp that deploys the account.)\",\n\t\t);\n\t\treturn;\n\t}\n\n\tconsole.log(\"\\nDeploying via a sponsored self-call UserOp...\");\n\tconst paymasterClient = createZeroDevPaymasterClient({\n\t\tchain: profile.chain,\n\t\ttransport: http(rpcUrl),\n\t});\n\tconst kernelClient = createKernelAccountClient({\n\t\taccount,\n\t\tchain: profile.chain,\n\t\tclient: publicClient,\n\t\tbundlerTransport: http(rpcUrl),\n\t\tpaymaster: {\n\t\t\tgetPaymasterData: (userOperation) => paymasterClient.sponsorUserOperation({ userOperation }),\n\t\t},\n\t});\n\tconst userOpHash = await kernelClient.sendUserOperation({\n\t\tcallData: await account.encodeCalls([{ to: account.address, value: 0n, data: \"0x\" }]),\n\t});\n\tconsole.log(\"userOp hash: \", userOpHash);\n\tconst receipt = await kernelClient.waitForUserOperationReceipt({ hash: userOpHash });\n\tconst txHash = receipt.receipt.transactionHash;\n\tconsole.log(\"bundle tx hash: \", txHash);\n\tconsole.log(\"explorer: \", `${profile.explorerTxBase}${txHash}`);\n}\n\nexport function registerAccountCommand(program: Command): void {\n\tconst account = program.command(\"account\").description(\"Smart-account lifecycle commands\");\n\n\taccount\n\t\t.command(\"create\")\n\t\t.description(\"Compute (or deploy) the smart-account address for an owner key\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--owner-private-key <hex>\", \"Owner EOA private key (or env OWNER_PRIVATE_KEY)\")\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\n\t\t\t\"--deploy\",\n\t\t\t\"Broadcast a sponsored self-call UserOp that deploys the account (mainnet requires KAWASEKIT_ALLOW_MAINNET=1)\",\n\t\t)\n\t\t.action(async (options: AccountCreateOptions) => {\n\t\t\tawait runAccountCreate(options);\n\t\t});\n}\n","import { existsSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { Command } from \"commander\";\n\n/**\n * `kawasekit init` — writes a starter `.env.example` into the current\n * working directory and prints next steps. Idempotent unless `--force`.\n *\n * The starter env is intentionally narrow: only the variables a brand-new\n * kawasekit consumer needs to follow the README quick-start. Operators add\n * additional vars (X402_*, KAWASEKIT_X402_CHAIN, KAWASEKIT_ALLOW_MAINNET, …)\n * as they reach those sections of the docs.\n */\nconst STARTER_ENV_EXAMPLE = `# kawasekit — environment variables\n#\n# Copy this file to \\`.env\\` and fill in real values:\n# cp .env.example .env\n#\n# NEVER commit the real \\`.env\\` file. It is gitignored on purpose.\n\n# Private key of the smart-account OWNER (the EOA signer).\n# 0x-prefixed 32-byte hex. Use a throwaway testnet key for testnet work.\nOWNER_PRIVATE_KEY=0x...\n\n# ZeroDev project ID. Create a project at https://dashboard.zerodev.app\n# and copy its ID here. Used for bundler + paymaster sponsorship.\nZERODEV_PROJECT_ID=\n\n# Recipient of the test transfer. Defaults to the smart account itself.\n# JPYC_RECIPIENT=0x...\n`;\n\ninterface InitOptions {\n\treadonly force?: boolean;\n}\n\nasync function runInit(options: InitOptions): Promise<void> {\n\tconst targetPath = resolve(process.cwd(), \".env.example\");\n\tconst alreadyExists = existsSync(targetPath);\n\tif (alreadyExists && options.force !== true) {\n\t\tconsole.log(`.env.example already exists at ${targetPath} — pass --force to overwrite.`);\n\t\tconsole.log(`Next: copy it to .env and fill in the required values.`);\n\t\treturn;\n\t}\n\twriteFileSync(targetPath, STARTER_ENV_EXAMPLE, \"utf8\");\n\tconsole.log(`${alreadyExists ? \"Overwrote\" : \"Wrote\"} ${targetPath}`);\n\tconsole.log(`Next: copy it to .env (cp .env.example .env) and fill in the required values.`);\n}\n\nexport function registerInitCommand(program: Command): void {\n\tprogram\n\t\t.command(\"init\")\n\t\t.description(\"Scaffold a starter .env.example in the current directory\")\n\t\t.option(\"--force\", \"Overwrite an existing .env.example\")\n\t\t.action(async (options: InitOptions) => {\n\t\t\tawait runInit(options);\n\t\t});\n}\n","import type { Command } from \"commander\";\nimport { getAddress, parseUnits } from \"viem\";\nimport { createJpycDailyLimitPolicies, getJpycAddress, JPYC_DECIMALS } from \"../../src\";\nimport { resolveChain } from \"../lib/chain\";\n\ninterface PolicyCreateOptions {\n\treadonly chain?: string;\n\treadonly maxPerTx?: string;\n\treadonly maxPerDay?: string;\n\treadonly jpycAddress?: string;\n}\n\nfunction parsePositiveInt(value: string, label: string): number {\n\tconst n = Number.parseInt(value, 10);\n\tif (!Number.isFinite(n) || n <= 0) {\n\t\tthrow new Error(`${label} must be a positive integer, got ${JSON.stringify(value)}.`);\n\t}\n\treturn n;\n}\n\nasync function runPolicyCreate(options: PolicyCreateOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tconst maxPerTxHuman = options.maxPerTx ?? \"100\";\n\tconst maxPerDay = parsePositiveInt(options.maxPerDay ?? \"10\", \"--max-per-day\");\n\tconst maxPerTransfer = parseUnits(maxPerTxHuman, JPYC_DECIMALS);\n\n\tconst jpycAddress = options.jpycAddress\n\t\t? getAddress(options.jpycAddress)\n\t\t: getJpycAddress(profile.chain.id);\n\n\t// Build the actual policy array — this validates the inputs end-to-end\n\t// using the same path the SDK will at issue time, so a `policy create`\n\t// dry-run catches malformed inputs before the operator commits to issuing.\n\tconst policies = createJpycDailyLimitPolicies({\n\t\tjpycAddress,\n\t\tmaxPerTransfer,\n\t\tmaxTransfersPerDay: maxPerDay,\n\t});\n\n\tconst summary = {\n\t\tchain: profile.displayName,\n\t\tjpycAddress,\n\t\tmaxPerTransfer: {\n\t\t\thuman: maxPerTxHuman,\n\t\t\twei: maxPerTransfer.toString(),\n\t\t},\n\t\tmaxTransfersPerDay: maxPerDay,\n\t\tpolicyCount: policies.length,\n\t\tnote: \"Dry-run. No on-chain action taken. Use `kawasekit session-key issue` with the same --max-per-tx / --max-per-day to install these on a session validator.\",\n\t};\n\n\tconsole.log(JSON.stringify(summary, null, 2));\n}\n\nexport function registerPolicyCommand(program: Command): void {\n\tconst policy = program.command(\"policy\").description(\"Policy builder + inspector\");\n\tpolicy\n\t\t.command(\"create\")\n\t\t.description(\"Dry-run the daily-limit policy and print the resolved parameters as JSON\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--max-per-tx <human>\", 'Per-transfer cap in decimal JPYC. Default \"100\".')\n\t\t.option(\"--max-per-day <count>\", 'Maximum transfers per 24h window. Default \"10\".')\n\t\t.option(\n\t\t\t\"--jpyc-address <address>\",\n\t\t\t\"JPYC contract address override. Defaults to the canonical kawasekit address for the chosen chain.\",\n\t\t)\n\t\t.action(async (options: PolicyCreateOptions) => {\n\t\t\tawait runPolicyCreate(options);\n\t\t});\n}\n","import { randomBytes } from \"node:crypto\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { signerToEcdsaValidator } from \"@zerodev/ecdsa-validator\";\nimport {\n\tcreateKernelAccount,\n\tcreateKernelAccountClient,\n\tcreateZeroDevPaymasterClient,\n} from \"@zerodev/sdk\";\nimport { getEntryPoint, KERNEL_V3_1 } from \"@zerodev/sdk/constants\";\nimport type { Command } from \"commander\";\nimport { createPublicClient, getAddress, type Hex, http, parseUnits } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport {\n\tcreateJpycDailyLimitPolicies,\n\tgetJpycAddress,\n\tissueSessionKey,\n\tJPYC_DECIMALS,\n\ttype KawasekitSessionEnvelope,\n\tparseSessionEnvelope,\n\trestoreSessionAccount,\n\trevokeSessionKey,\n\trotateSessionKey,\n\tserializeSessionEnvelope,\n\tzerodevRpcUrl,\n} from \"../../src\";\nimport { assertMainnetGuard, type CliChainProfile, resolveChain } from \"../lib/chain\";\nimport { asPrivateKey, requirePrivateKey, requireValue } from \"../lib/env\";\n\ninterface PolicyFlags {\n\treadonly maxPerTx?: string;\n\treadonly maxPerDay?: string;\n\treadonly jpycAddress?: string;\n}\n\nfunction buildPolicies(\n\tprofile: CliChainProfile,\n\tflags: PolicyFlags,\n): ReturnType<typeof createJpycDailyLimitPolicies> {\n\tconst jpycAddress = flags.jpycAddress\n\t\t? getAddress(flags.jpycAddress)\n\t\t: getJpycAddress(profile.chain.id);\n\tconst maxPerTransfer = parseUnits(flags.maxPerTx ?? \"100\", JPYC_DECIMALS);\n\tconst maxTransfersPerDay = Number.parseInt(flags.maxPerDay ?? \"10\", 10);\n\treturn createJpycDailyLimitPolicies({\n\t\tjpycAddress,\n\t\tmaxPerTransfer,\n\t\tmaxTransfersPerDay,\n\t});\n}\n\nfunction generateEphemeralSessionKey(): Hex {\n\treturn `0x${randomBytes(32).toString(\"hex\")}` as Hex;\n}\n\nfunction loadEnvelope(envelopePath: string): KawasekitSessionEnvelope {\n\tconst raw = readFileSync(resolve(process.cwd(), envelopePath), \"utf8\");\n\treturn parseSessionEnvelope(raw);\n}\n\n// ---------------------------------------------------------------------------\n// session-key issue\n// ---------------------------------------------------------------------------\n\ninterface IssueOptions extends PolicyFlags {\n\treadonly chain?: string;\n\treadonly ownerPrivateKey?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly sessionPrivateKey?: string;\n\treadonly ephemeralSession?: boolean;\n\treadonly output?: string;\n}\n\nasync function runIssue(options: IssueOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tconst ownerKey = requirePrivateKey(\n\t\toptions.ownerPrivateKey,\n\t\t\"OWNER_PRIVATE_KEY\",\n\t\t\"owner-private-key\",\n\t);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\tconst sessionKey =\n\t\toptions.ephemeralSession === true\n\t\t\t? generateEphemeralSessionKey()\n\t\t\t: asPrivateKey(\n\t\t\t\t\trequireValue(options.sessionPrivateKey, \"SESSION_KEY_PRIVATE_KEY\", \"session-private-key\"),\n\t\t\t\t\t\"SESSION_KEY_PRIVATE_KEY\",\n\t\t\t\t);\n\tconst owner = privateKeyToAccount(ownerKey);\n\tconst session = privateKeyToAccount(sessionKey);\n\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\tconst policies = buildPolicies(profile, options);\n\n\tconst envelope = await issueSessionKey({\n\t\tpublicClient,\n\t\townerSigner: owner,\n\t\tsessionKeySigner: session,\n\t\tpolicies,\n\t\tpolicySummary: {\n\t\t\tjpycAddress: options.jpycAddress\n\t\t\t\t? getAddress(options.jpycAddress)\n\t\t\t\t: getJpycAddress(profile.chain.id),\n\t\t\tmaxPerTransfer: parseUnits(options.maxPerTx ?? \"100\", JPYC_DECIMALS),\n\t\t\tmaxTransfersPerDay: Number.parseInt(options.maxPerDay ?? \"10\", 10),\n\t\t},\n\t});\n\n\tconst wire = serializeSessionEnvelope(envelope);\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Owner (EOA): \", owner.address);\n\tconsole.log(\n\t\t\"Session key (EOA): \",\n\t\tsession.address,\n\t\toptions.ephemeralSession === true ? \"(fresh ephemeral, this run only)\" : \"\",\n\t);\n\tconsole.log(\"Smart account: \", envelope.smartAccountAddress);\n\n\tif (options.output !== undefined) {\n\t\tconst outPath = resolve(process.cwd(), options.output);\n\t\twriteFileSync(outPath, wire, \"utf8\");\n\t\tconsole.log(\"Envelope written to: \", outPath);\n\t} else {\n\t\tconsole.log(\"\\n--- envelope (JSON) ---\");\n\t\tconsole.log(wire);\n\t}\n\n\tif (options.ephemeralSession === true) {\n\t\tconsole.log(\n\t\t\t\"\\n⚠️ The ephemeral session-key private key is NOT stored anywhere. Save it now if you need to restore later:\",\n\t\t);\n\t\tconsole.log(\" SESSION_KEY_PRIVATE_KEY=\", sessionKey);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// session-key restore\n// ---------------------------------------------------------------------------\n\ninterface RestoreOptions {\n\treadonly chain?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly sessionPrivateKey?: string;\n\treadonly envelope?: string;\n}\n\nasync function runRestore(options: RestoreOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\tconst sessionKey = requirePrivateKey(\n\t\toptions.sessionPrivateKey,\n\t\t\"SESSION_KEY_PRIVATE_KEY\",\n\t\t\"session-private-key\",\n\t);\n\tconst envelopePath = requireValue(options.envelope, \"KAWASEKIT_ENVELOPE_PATH\", \"envelope\");\n\tconst envelope = loadEnvelope(envelopePath);\n\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\n\tconst account = await restoreSessionAccount({\n\t\tpublicClient,\n\t\tenvelope,\n\t\tsessionKeySigner: privateKeyToAccount(sessionKey),\n\t});\n\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Envelope chainId: \", envelope.chainId);\n\tconsole.log(\"Envelope smart account: \", envelope.smartAccountAddress);\n\tconsole.log(\"Restored account: \", account.address);\n\tif (getAddress(account.address) !== getAddress(envelope.smartAccountAddress)) {\n\t\tthrow new Error(\n\t\t\t\"Restored account address does not match the envelope's smart-account address.\",\n\t\t);\n\t}\n\tconsole.log(\"\\n✅ Envelope restored — the agent can now sign UserOps with the session key.\");\n}\n\n// ---------------------------------------------------------------------------\n// session-key revoke\n// ---------------------------------------------------------------------------\n\ninterface RevokeOptions extends PolicyFlags {\n\treadonly chain?: string;\n\treadonly ownerPrivateKey?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly sessionPrivateKey?: string;\n\treadonly envelope?: string;\n}\n\nasync function runRevoke(options: RevokeOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tassertMainnetGuard(profile);\n\n\tconst ownerKey = requirePrivateKey(\n\t\toptions.ownerPrivateKey,\n\t\t\"OWNER_PRIVATE_KEY\",\n\t\t\"owner-private-key\",\n\t);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\tconst sessionKey = requirePrivateKey(\n\t\toptions.sessionPrivateKey,\n\t\t\"SESSION_KEY_PRIVATE_KEY\",\n\t\t\"session-private-key\",\n\t);\n\tconst envelopePath = requireValue(options.envelope, \"KAWASEKIT_ENVELOPE_PATH\", \"envelope\");\n\tconst envelope = loadEnvelope(envelopePath);\n\n\tconst owner = privateKeyToAccount(ownerKey);\n\tconst session = privateKeyToAccount(sessionKey);\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\n\t// Build a sudo-only kernel client — revoke MUST go through the ECDSA\n\t// validator, not the session-key permission validator. See SDK JSDoc in\n\t// src/session/revoke.ts.\n\tconst entryPoint = getEntryPoint(\"0.7\");\n\tconst kernelVersion = KERNEL_V3_1;\n\tconst sudoValidator = await signerToEcdsaValidator(publicClient, {\n\t\tsigner: owner,\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst sudoAccount = await createKernelAccount(publicClient, {\n\t\tplugins: { sudo: sudoValidator },\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst paymasterClient = createZeroDevPaymasterClient({\n\t\tchain: profile.chain,\n\t\ttransport: http(rpcUrl),\n\t});\n\tconst ownerKernelClient = createKernelAccountClient({\n\t\taccount: sudoAccount,\n\t\tchain: profile.chain,\n\t\tclient: publicClient,\n\t\tbundlerTransport: http(rpcUrl),\n\t\tpaymaster: {\n\t\t\tgetPaymasterData: (userOperation) => paymasterClient.sponsorUserOperation({ userOperation }),\n\t\t},\n\t});\n\n\tconst policies = buildPolicies(profile, options);\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Owner (EOA): \", owner.address);\n\tconsole.log(\"Session key (EOA): \", session.address);\n\tconsole.log(\"Smart account: \", envelope.smartAccountAddress);\n\tconsole.log(\"\\nRevoking session validator (uninstallValidation)...\");\n\n\tconst result = await revokeSessionKey({\n\t\townerKernelClient,\n\t\tenvelope,\n\t\tsessionKeySigner: session,\n\t\tpolicies,\n\t});\n\tconsole.log(\"userOp hash: \", result.userOpHash);\n\tconsole.log(\"bundle tx hash: \", result.transactionHash);\n\tif (result.transactionHash) {\n\t\tconsole.log(\"explorer: \", `${profile.explorerTxBase}${result.transactionHash}`);\n\t}\n\tif (!result.success) {\n\t\tthrow new Error(\"Revoke UserOp reported failure.\");\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// session-key rotate\n// ---------------------------------------------------------------------------\n\ninterface RotateOptions extends PolicyFlags {\n\treadonly chain?: string;\n\treadonly ownerPrivateKey?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly oldSessionPrivateKey?: string;\n\treadonly oldEnvelope?: string;\n\treadonly newSessionPrivateKey?: string;\n\treadonly ephemeralNewSession?: boolean;\n\treadonly output?: string;\n}\n\nasync function runRotate(options: RotateOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tassertMainnetGuard(profile);\n\n\tconst ownerKey = requirePrivateKey(\n\t\toptions.ownerPrivateKey,\n\t\t\"OWNER_PRIVATE_KEY\",\n\t\t\"owner-private-key\",\n\t);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\tconst oldSessionKey = requirePrivateKey(\n\t\toptions.oldSessionPrivateKey,\n\t\t\"SESSION_KEY_PRIVATE_KEY\",\n\t\t\"old-session-private-key\",\n\t);\n\tconst oldEnvelopePath = requireValue(\n\t\toptions.oldEnvelope,\n\t\t\"KAWASEKIT_ENVELOPE_PATH\",\n\t\t\"old-envelope\",\n\t);\n\tconst oldEnvelope = loadEnvelope(oldEnvelopePath);\n\n\tconst newSessionKey =\n\t\toptions.ephemeralNewSession === true\n\t\t\t? generateEphemeralSessionKey()\n\t\t\t: asPrivateKey(\n\t\t\t\t\trequireValue(\n\t\t\t\t\t\toptions.newSessionPrivateKey,\n\t\t\t\t\t\t\"SESSION_KEY_PRIVATE_KEY_NEW\",\n\t\t\t\t\t\t\"new-session-private-key\",\n\t\t\t\t\t),\n\t\t\t\t\t\"new session private key\",\n\t\t\t\t);\n\n\tconst owner = privateKeyToAccount(ownerKey);\n\tconst oldSession = privateKeyToAccount(oldSessionKey);\n\tconst newSession = privateKeyToAccount(newSessionKey);\n\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\tconst entryPoint = getEntryPoint(\"0.7\");\n\tconst kernelVersion = KERNEL_V3_1;\n\tconst sudoValidator = await signerToEcdsaValidator(publicClient, {\n\t\tsigner: owner,\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst sudoAccount = await createKernelAccount(publicClient, {\n\t\tplugins: { sudo: sudoValidator },\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst paymasterClient = createZeroDevPaymasterClient({\n\t\tchain: profile.chain,\n\t\ttransport: http(rpcUrl),\n\t});\n\tconst ownerKernelClient = createKernelAccountClient({\n\t\taccount: sudoAccount,\n\t\tchain: profile.chain,\n\t\tclient: publicClient,\n\t\tbundlerTransport: http(rpcUrl),\n\t\tpaymaster: {\n\t\t\tgetPaymasterData: (userOperation) => paymasterClient.sponsorUserOperation({ userOperation }),\n\t\t},\n\t});\n\n\tconst policies = buildPolicies(profile, options);\n\tconst policySummary = {\n\t\tjpycAddress: options.jpycAddress\n\t\t\t? getAddress(options.jpycAddress)\n\t\t\t: getJpycAddress(profile.chain.id),\n\t\tmaxPerTransfer: parseUnits(options.maxPerTx ?? \"100\", JPYC_DECIMALS),\n\t\tmaxTransfersPerDay: Number.parseInt(options.maxPerDay ?? \"10\", 10),\n\t};\n\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Owner (EOA): \", owner.address);\n\tconsole.log(\"Old session key (EOA): \", oldSession.address);\n\tconsole.log(\"New session key (EOA): \", newSession.address);\n\tconsole.log(\"Smart account: \", oldEnvelope.smartAccountAddress);\n\tconsole.log(\"\\nRotating: revoke old → issue new (awaits revoke receipt)...\");\n\n\tconst { revoke, envelope } = await rotateSessionKey({\n\t\trevoke: {\n\t\t\townerKernelClient,\n\t\t\tenvelope: oldEnvelope,\n\t\t\tsessionKeySigner: oldSession,\n\t\t\tpolicies,\n\t\t},\n\t\tissue: {\n\t\t\tpublicClient,\n\t\t\townerSigner: owner,\n\t\t\tsessionKeySigner: newSession,\n\t\t\tpolicies,\n\t\t\tpolicySummary,\n\t\t},\n\t});\n\tconsole.log(\"revoke userOp hash: \", revoke.userOpHash);\n\tconsole.log(\"revoke bundle tx: \", revoke.transactionHash);\n\tif (revoke.transactionHash) {\n\t\tconsole.log(\"revoke explorer: \", `${profile.explorerTxBase}${revoke.transactionHash}`);\n\t}\n\tif (!revoke.success) {\n\t\tthrow new Error(\"Revoke step failed — new envelope was NOT issued.\");\n\t}\n\n\tconst wire = serializeSessionEnvelope(envelope);\n\tif (options.output !== undefined) {\n\t\tconst outPath = resolve(process.cwd(), options.output);\n\t\twriteFileSync(outPath, wire, \"utf8\");\n\t\tconsole.log(\"\\nNew envelope written: \", outPath);\n\t} else {\n\t\tconsole.log(\"\\n--- new envelope (JSON) ---\");\n\t\tconsole.log(wire);\n\t}\n\tif (options.ephemeralNewSession === true) {\n\t\tconsole.log(\n\t\t\t\"\\n⚠️ The new ephemeral session-key private key is NOT stored anywhere. Save it now if you need to restore later:\",\n\t\t);\n\t\tconsole.log(\" SESSION_KEY_PRIVATE_KEY=\", newSessionKey);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Command registration\n// ---------------------------------------------------------------------------\n\nexport function registerSessionKeyCommand(program: Command): void {\n\tconst sessionKey = program\n\t\t.command(\"session-key\")\n\t\t.description(\"Issue / restore / revoke / rotate agent session keys\");\n\n\tsessionKey\n\t\t.command(\"issue\")\n\t\t.description(\"Owner issues a session-key envelope for the agent\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--owner-private-key <hex>\", \"Owner EOA private key (or env OWNER_PRIVATE_KEY)\")\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\n\t\t\t\"--session-private-key <hex>\",\n\t\t\t\"Session EOA private key (or env SESSION_KEY_PRIVATE_KEY)\",\n\t\t)\n\t\t.option(\n\t\t\t\"--ephemeral-session\",\n\t\t\t\"Generate a fresh ephemeral session key for this run (use for production rotation; printed at end, never stored automatically)\",\n\t\t)\n\t\t.option(\"--max-per-tx <human>\", 'Per-transfer cap in decimal JPYC. Default \"100\".')\n\t\t.option(\"--max-per-day <count>\", 'Maximum transfers per 24h window. Default \"10\".')\n\t\t.option(\n\t\t\t\"--jpyc-address <address>\",\n\t\t\t\"JPYC contract override. Defaults to the canonical kawasekit address.\",\n\t\t)\n\t\t.option(\"--output <path>\", \"Write the envelope JSON to this path instead of stdout.\")\n\t\t.action(async (options: IssueOptions) => {\n\t\t\tawait runIssue(options);\n\t\t});\n\n\tsessionKey\n\t\t.command(\"restore\")\n\t\t.description(\"Agent restores a smart-account client from an envelope file\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\n\t\t\t\"--session-private-key <hex>\",\n\t\t\t\"Session EOA private key (or env SESSION_KEY_PRIVATE_KEY)\",\n\t\t)\n\t\t.option(\"--envelope <path>\", \"Path to the envelope JSON file\")\n\t\t.action(async (options: RestoreOptions) => {\n\t\t\tawait runRestore(options);\n\t\t});\n\n\tsessionKey\n\t\t.command(\"revoke\")\n\t\t.description(\"Owner revokes a session key by uninstalling its permission validator\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--owner-private-key <hex>\", \"Owner EOA private key (or env OWNER_PRIVATE_KEY)\")\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\"--session-private-key <hex>\", \"Session EOA private key the validator was issued under\")\n\t\t.option(\"--envelope <path>\", \"Path to the envelope JSON file to revoke\")\n\t\t.option(\n\t\t\t\"--max-per-tx <human>\",\n\t\t\t'Per-transfer cap (must match issue-time value). Default \"100\".',\n\t\t)\n\t\t.option(\n\t\t\t\"--max-per-day <count>\",\n\t\t\t'Daily transfer count (must match issue-time value). Default \"10\".',\n\t\t)\n\t\t.option(\"--jpyc-address <address>\", \"JPYC contract override.\")\n\t\t.action(async (options: RevokeOptions) => {\n\t\t\tawait runRevoke(options);\n\t\t});\n\n\tsessionKey\n\t\t.command(\"rotate\")\n\t\t.description(\"Revoke the old session and issue a new one in one shot (atomic-ish)\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--owner-private-key <hex>\", \"Owner EOA private key (or env OWNER_PRIVATE_KEY)\")\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\n\t\t\t\"--old-session-private-key <hex>\",\n\t\t\t\"Old session-key private key (or env SESSION_KEY_PRIVATE_KEY)\",\n\t\t)\n\t\t.option(\"--old-envelope <path>\", \"Path to the old envelope JSON file\")\n\t\t.option(\n\t\t\t\"--new-session-private-key <hex>\",\n\t\t\t\"New session-key private key (or env SESSION_KEY_PRIVATE_KEY_NEW)\",\n\t\t)\n\t\t.option(\n\t\t\t\"--ephemeral-new-session\",\n\t\t\t\"Generate a fresh ephemeral new session key for this rotation\",\n\t\t)\n\t\t.option(\"--max-per-tx <human>\", 'Per-transfer cap (same for old + new). Default \"100\".')\n\t\t.option(\"--max-per-day <count>\", 'Daily transfer count (same for old + new). Default \"10\".')\n\t\t.option(\"--jpyc-address <address>\", \"JPYC contract override.\")\n\t\t.option(\"--output <path>\", \"Write the new envelope JSON to this path.\")\n\t\t.action(async (options: RotateOptions) => {\n\t\t\tawait runRotate(options);\n\t\t});\n}\n","import { signerToEcdsaValidator } from \"@zerodev/ecdsa-validator\";\nimport {\n\tcreateKernelAccount,\n\tcreateKernelAccountClient,\n\tcreateZeroDevPaymasterClient,\n} from \"@zerodev/sdk\";\nimport { getEntryPoint, KERNEL_V3_1 } from \"@zerodev/sdk/constants\";\nimport type { Command } from \"commander\";\nimport { type Address, createPublicClient, getAddress, http, parseUnits } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { getJpycAddress, JPYC_DECIMALS, jpycAbi, transferJpyc, zerodevRpcUrl } from \"../../src\";\nimport { assertMainnetGuard, resolveChain } from \"../lib/chain\";\nimport { requirePrivateKey, requireValue, resolveValue } from \"../lib/env\";\n\ninterface TransferOptions {\n\treadonly chain?: string;\n\treadonly ownerPrivateKey?: string;\n\treadonly zerodevProjectId?: string;\n\treadonly to?: string;\n\treadonly amount?: string;\n}\n\nasync function runTransfer(options: TransferOptions): Promise<void> {\n\tconst profile = resolveChain(options.chain);\n\tassertMainnetGuard(profile);\n\n\tconst ownerKey = requirePrivateKey(\n\t\toptions.ownerPrivateKey,\n\t\t\"OWNER_PRIVATE_KEY\",\n\t\t\"owner-private-key\",\n\t);\n\tconst projectId = requireValue(\n\t\toptions.zerodevProjectId,\n\t\t\"ZERODEV_PROJECT_ID\",\n\t\t\"zerodev-project-id\",\n\t);\n\tconst amountHuman = options.amount ?? resolveValue(undefined, \"JPYC_AMOUNT_HUMAN\") ?? \"1\";\n\tconst amount = parseUnits(amountHuman, JPYC_DECIMALS);\n\n\tconst owner = privateKeyToAccount(ownerKey);\n\tconst rpcUrl = zerodevRpcUrl(profile.chain, projectId);\n\tconst publicClient = createPublicClient({ chain: profile.chain, transport: http(rpcUrl) });\n\tconst entryPoint = getEntryPoint(\"0.7\");\n\tconst kernelVersion = KERNEL_V3_1;\n\tconst sudoValidator = await signerToEcdsaValidator(publicClient, {\n\t\tsigner: owner,\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst account = await createKernelAccount(publicClient, {\n\t\tplugins: { sudo: sudoValidator },\n\t\tentryPoint,\n\t\tkernelVersion,\n\t});\n\tconst paymasterClient = createZeroDevPaymasterClient({\n\t\tchain: profile.chain,\n\t\ttransport: http(rpcUrl),\n\t});\n\tconst kernelClient = createKernelAccountClient({\n\t\taccount,\n\t\tchain: profile.chain,\n\t\tclient: publicClient,\n\t\tbundlerTransport: http(rpcUrl),\n\t\tpaymaster: {\n\t\t\tgetPaymasterData: (userOperation) => paymasterClient.sponsorUserOperation({ userOperation }),\n\t\t},\n\t});\n\n\tconst jpycAddress = getJpycAddress(profile.chain.id);\n\tconst balance = (await publicClient.readContract({\n\t\taddress: jpycAddress,\n\t\tabi: jpycAbi,\n\t\tfunctionName: \"balanceOf\",\n\t\targs: [account.address],\n\t})) as bigint;\n\n\tconst recipientRaw = options.to ?? resolveValue(undefined, \"JPYC_RECIPIENT\") ?? account.address;\n\tconst recipient: Address = getAddress(recipientRaw);\n\n\tconsole.log(\"Chain: \", profile.displayName);\n\tconsole.log(\"Owner (EOA): \", owner.address);\n\tconsole.log(\"Smart account: \", account.address);\n\tconsole.log(\"JPYC contract: \", jpycAddress);\n\tconsole.log(\"Smart-account JPYC balance:\", balance.toString(), \"wei\");\n\tconsole.log(\"Recipient: \", recipient);\n\tconsole.log(\"Amount: \", amountHuman, \"JPYC =\", amount.toString(), \"wei\");\n\n\tif (amount === 0n) {\n\t\tthrow new Error(\"--amount must be greater than 0.\");\n\t}\n\tif (balance < amount) {\n\t\tthrow new Error(\n\t\t\t`Smart account has insufficient JPYC. Need ${amount.toString()} wei, has ${balance.toString()} wei. Fund ${account.address} before retrying.`,\n\t\t);\n\t}\n\n\tconsole.log(`\\nSending ${amountHuman} JPYC via sponsored UserOp...`);\n\tconst result = await transferJpyc(kernelClient, { to: recipient, amount });\n\tconsole.log(\"userOp hash: \", result.userOpHash);\n\tconsole.log(\"bundle tx hash: \", result.transactionHash);\n\tif (result.transactionHash) {\n\t\tconsole.log(\"explorer: \", `${profile.explorerTxBase}${result.transactionHash}`);\n\t}\n\tif (!result.success) {\n\t\tthrow new Error(\"UserOp reported failure — see explorer for revert reason.\");\n\t}\n}\n\nexport function registerTransferCommand(program: Command): void {\n\tprogram\n\t\t.command(\"transfer\")\n\t\t.description(\"Send JPYC from a smart account via a sponsored UserOp\")\n\t\t.requiredOption(\"--chain <chain>\", '\"polygon\" | \"polygonAmoy\"')\n\t\t.option(\"--owner-private-key <hex>\", \"Owner EOA private key (or env OWNER_PRIVATE_KEY)\")\n\t\t.option(\"--zerodev-project-id <id>\", \"ZeroDev project ID (or env ZERODEV_PROJECT_ID)\")\n\t\t.option(\n\t\t\t\"--to <address>\",\n\t\t\t\"Recipient address. Defaults to the smart account itself (loop-back) when unset.\",\n\t\t)\n\t\t.option(\"--amount <human>\", 'Amount in decimal JPYC (e.g. 0.001). Default \"1\".')\n\t\t.action(async (options: TransferOptions) => {\n\t\t\tawait runTransfer(options);\n\t\t});\n}\n","#!/usr/bin/env node\n\n/**\n * kawasekit CLI entry.\n *\n * Subcommands:\n * init — scaffold .env.example\n * account create — derive / deploy a smart account\n * transfer — send JPYC via sponsored UserOp\n * policy create — dry-run the daily-limit policy\n * session-key issue|restore|revoke|rotate\n * — agent session-key lifecycle\n *\n * Every subcommand that touches a network requires `--chain polygon|polygonAmoy`.\n * Mainnet broadcasts additionally require `KAWASEKIT_ALLOW_MAINNET=1` in the\n * environment.\n */\n\nimport { Command } from \"commander\";\nimport { registerAccountCommand } from \"./commands/account\";\nimport { registerInitCommand } from \"./commands/init\";\nimport { registerPolicyCommand } from \"./commands/policy\";\nimport { registerSessionKeyCommand } from \"./commands/session-key\";\nimport { registerTransferCommand } from \"./commands/transfer\";\n\n// `.env` is loaded lazily by resolveValue / requireValue (cli/lib/env.ts),\n// only when a command actually reads a value — so `--version` / `--help`\n// never touch the filesystem or the environment.\n//\n// __KAWASEKIT_VERSION__ is replaced at build time by tsup's `define` (see\n// tsup.config.ts) with the literal package.json version. When the CLI runs\n// from un-built source (tsx, the cli-smoke tests) the identifier is undefined;\n// the `typeof` guard avoids a ReferenceError and falls back to a dev marker.\ndeclare const __KAWASEKIT_VERSION__: string;\nconst CLI_VERSION = typeof __KAWASEKIT_VERSION__ === \"string\" ? __KAWASEKIT_VERSION__ : \"0.0.0-dev\";\n\nconst program = new Command();\nprogram\n\t.name(\"kawasekit\")\n\t.description(\n\t\t\"kawasekit — CLI for the kawasekit SDK (AI-agent stablecoin payments, Japan-first, JPYC-native).\",\n\t)\n\t.version(CLI_VERSION);\n\nregisterInitCommand(program);\nregisterAccountCommand(program);\nregisterTransferCommand(program);\nregisterPolicyCommand(program);\nregisterSessionKeyCommand(program);\n\nprogram.parseAsync().catch((error: unknown) => {\n\tconsole.error(error instanceof Error ? error.message : String(error));\n\tprocess.exitCode = 1;\n});\n"]}
@@ -1,4 +1,4 @@
1
- import { X as X402AssetParam } from './asset-domain-CpJuDkI2.cjs';
1
+ import { X as X402AssetParam } from './asset-domain-4Ioxqn28.cjs';
2
2
  import { Chain, Account, Address, WalletClient, Transport, PublicClient } from 'viem';
3
3
  import { a as PolicyGatedSigner, N as NonBypassableEnforcement, b as PolicyRejection } from './types-IEl-iOIx.cjs';
4
4
  import { g as X402PaymentRequirements, h as X402ResourceInfo, e as X402PaymentPayload, f as X402PaymentRequiredResponse, l as X402SettlementResponse, F as Facilitator } from './types-TpS_8ztt.cjs';
@@ -1,4 +1,4 @@
1
- import { X as X402AssetParam } from './asset-domain-CpJuDkI2.js';
1
+ import { X as X402AssetParam } from './asset-domain-4Ioxqn28.js';
2
2
  import { Chain, Account, Address, WalletClient, Transport, PublicClient } from 'viem';
3
3
  import { a as PolicyGatedSigner, N as NonBypassableEnforcement, b as PolicyRejection } from './types-IEl-iOIx.js';
4
4
  import { g as X402PaymentRequirements, h as X402ResourceInfo, e as X402PaymentPayload, f as X402PaymentRequiredResponse, l as X402SettlementResponse, F as Facilitator } from './types-BR9UcvJO.js';
package/dist/index.cjs CHANGED
@@ -646,6 +646,14 @@ function resolveAssetParam(asset) {
646
646
  `unsupported kind ${JSON.stringify(exhaustive.kind)}. Expected "known" or "unsafeOverride".`
647
647
  );
648
648
  }
649
+ function resolvedAssetToEip3009Domain(asset, chainId) {
650
+ return {
651
+ name: asset.name,
652
+ version: asset.version,
653
+ chainId,
654
+ verifyingContract: asset.verifyingContract
655
+ };
656
+ }
649
657
  var transferWithAuthorizationTypes = {
650
658
  TransferWithAuthorization: [
651
659
  { name: "from", type: "address" },
@@ -797,12 +805,7 @@ function createLocalPolicyGatedSigner(params) {
797
805
  }
798
806
  const signed = await signTransferWithAuthorization(
799
807
  account,
800
- {
801
- name: pinned.name,
802
- version: pinned.version,
803
- chainId: intent.chainId,
804
- verifyingContract: pinned.verifyingContract
805
- },
808
+ resolvedAssetToEip3009Domain(pinned, intent.chainId),
806
809
  {
807
810
  from,
808
811
  to: intent.to,
@@ -977,12 +980,7 @@ function createX402PaymentSigner(params) {
977
980
  ) : generateAuthorizationNonce();
978
981
  const signed = await signTransferWithAuthorization(
979
982
  account,
980
- {
981
- name: pinnedDomain.name,
982
- version: pinnedDomain.version,
983
- chainId,
984
- verifyingContract: pinnedDomain.verifyingContract
985
- },
983
+ resolvedAssetToEip3009Domain(pinnedDomain, chainId),
986
984
  {
987
985
  from: account.address,
988
986
  to: payTo,
@@ -2861,6 +2859,7 @@ exports.avalanche = avalanche;
2861
2859
  exports.avalancheFuji = avalancheFuji;
2862
2860
  exports.buildPaymentRequiredResponse = buildPaymentRequiredResponse;
2863
2861
  exports.buildPaymentRequirements = buildPaymentRequirements;
2862
+ exports.cancelAuthorizationTypes = cancelAuthorizationTypes;
2864
2863
  exports.chainIdToX402Network = chainIdToX402Network;
2865
2864
  exports.createAgentSmartAccount = createAgentSmartAccount;
2866
2865
  exports.createCoinbaseFacilitator = createCoinbaseFacilitator;
@@ -2904,7 +2903,9 @@ exports.parseIdempotencyRecord = parseIdempotencyRecord;
2904
2903
  exports.parseSessionEnvelope = parseSessionEnvelope;
2905
2904
  exports.polygon = polygon;
2906
2905
  exports.polygonAmoy = polygonAmoy;
2906
+ exports.receiveWithAuthorizationTypes = receiveWithAuthorizationTypes;
2907
2907
  exports.requireNonBypassable = requireNonBypassable;
2908
+ exports.resolvedAssetToEip3009Domain = resolvedAssetToEip3009Domain;
2908
2909
  exports.restoreSessionAccount = restoreSessionAccount;
2909
2910
  exports.revokeSessionKey = revokeSessionKey;
2910
2911
  exports.rotateSessionKey = rotateSessionKey;
@@ -2916,6 +2917,7 @@ exports.signReceiveWithAuthorization = signReceiveWithAuthorization;
2916
2917
  exports.signTransferWithAuthorization = signTransferWithAuthorization;
2917
2918
  exports.supportedChains = supportedChains;
2918
2919
  exports.transferJpyc = transferJpyc;
2920
+ exports.transferWithAuthorizationTypes = transferWithAuthorizationTypes;
2919
2921
  exports.wrapFetch = wrapFetch;
2920
2922
  exports.x402NetworkToChainId = x402NetworkToChainId;
2921
2923
  exports.zerodevRpcUrl = zerodevRpcUrl;