@sherwoodagent/cli 0.90.0 → 0.90.2

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 (70) hide show
  1. package/dist/{agent-QU2OSWS4.js → agent-LVDMPKHK.js} +9 -9
  2. package/dist/agent-LVDMPKHK.js.map +1 -0
  3. package/dist/{chat-PFXIL6WT.js → chat-HS7OIE2Y.js} +8 -8
  4. package/dist/{chunk-KXUA5BEH.js → chunk-5G4SESMO.js} +47 -8
  5. package/dist/chunk-5G4SESMO.js.map +1 -0
  6. package/dist/{chunk-KPTKX226.js → chunk-6H6EFHDS.js} +4 -4
  7. package/dist/{chunk-ZCRVHITI.js → chunk-7GITFGA4.js} +4 -4
  8. package/dist/{chunk-WIUPOQNS.js → chunk-D5Y73ITZ.js} +2 -2
  9. package/dist/{chunk-2SIUEMPV.js → chunk-FS5DXFRG.js} +4 -4
  10. package/dist/{chunk-74QYNLJE.js → chunk-G3LPD43A.js} +3 -3
  11. package/dist/{chunk-J3JMMJLN.js → chunk-IDMSU2X4.js} +6 -6
  12. package/dist/{chunk-KRASHQRB.js → chunk-IXU23PP5.js} +3 -3
  13. package/dist/{chunk-LIW6K4OJ.js → chunk-JDTTJDGP.js} +2 -2
  14. package/dist/{chunk-3R57ETXQ.js → chunk-LSY4GYJ2.js} +2 -2
  15. package/dist/{chunk-DQZJULNP.js → chunk-POTFZJYN.js} +4 -4
  16. package/dist/{chunk-I7NYU4JB.js → chunk-RYKETWBU.js} +5 -3
  17. package/dist/{chunk-5XMQQ4LX.js → chunk-V6XUXLJF.js} +4 -4
  18. package/dist/{chunk-XQHRKFFH.js → chunk-WJWLM5QE.js} +6 -6
  19. package/dist/{chunk-QUAVAJWE.js → chunk-XJR2YQK3.js} +1 -15
  20. package/dist/chunk-XJR2YQK3.js.map +1 -0
  21. package/dist/{client-3BFK7TNL.js → client-4CKVYBRP.js} +4 -4
  22. package/dist/{config-UZ2GIXAO.js → config-WIHIVOGZ.js} +2 -6
  23. package/dist/{eas-YTAAJSLU.js → eas-JOU76WZ2.js} +6 -6
  24. package/dist/{governor-53PNPDCZ.js → governor-4XHJ52H4.js} +6 -6
  25. package/dist/{identity-M6UIVBNX.js → identity-3BLNFZ42.js} +7 -7
  26. package/dist/index.js +41 -47
  27. package/dist/index.js.map +1 -1
  28. package/dist/{launchpad-LHMBN4TV.js → launchpad-ZVC7Z5JJ.js} +8 -6
  29. package/dist/{lighter-preflight-R7C6HY3M.js → lighter-preflight-ERF425PP.js} +6 -6
  30. package/dist/{network-EZ5X2BF7.js → network-XQLQ4MSH.js} +3 -3
  31. package/dist/{price-PBFF6NFU.js → price-4QVQAIHX.js} +6 -6
  32. package/dist/{providers-22A42FKP.js → providers-P27BDYZ2.js} +5 -5
  33. package/dist/{research-ZH34O7YL.js → research-N2R76ELJ.js} +9 -9
  34. package/dist/{session-GSWEE4M3.js → session-ZIJYGOAT.js} +11 -11
  35. package/dist/{trade-SHK7GKSI.js → trade-2J555BS7.js} +17 -17
  36. package/dist/{vault-3T6UHCPE.js → vault-WC7AS7SM.js} +8 -8
  37. package/dist/{xmtp-EOMKXRTB.js → xmtp-NJXD7T7E.js} +6 -6
  38. package/package.json +1 -2
  39. package/dist/agent-QU2OSWS4.js.map +0 -1
  40. package/dist/chunk-KXUA5BEH.js.map +0 -1
  41. package/dist/chunk-QUAVAJWE.js.map +0 -1
  42. /package/dist/{chat-PFXIL6WT.js.map → chat-HS7OIE2Y.js.map} +0 -0
  43. /package/dist/{chunk-KPTKX226.js.map → chunk-6H6EFHDS.js.map} +0 -0
  44. /package/dist/{chunk-ZCRVHITI.js.map → chunk-7GITFGA4.js.map} +0 -0
  45. /package/dist/{chunk-WIUPOQNS.js.map → chunk-D5Y73ITZ.js.map} +0 -0
  46. /package/dist/{chunk-2SIUEMPV.js.map → chunk-FS5DXFRG.js.map} +0 -0
  47. /package/dist/{chunk-74QYNLJE.js.map → chunk-G3LPD43A.js.map} +0 -0
  48. /package/dist/{chunk-J3JMMJLN.js.map → chunk-IDMSU2X4.js.map} +0 -0
  49. /package/dist/{chunk-KRASHQRB.js.map → chunk-IXU23PP5.js.map} +0 -0
  50. /package/dist/{chunk-LIW6K4OJ.js.map → chunk-JDTTJDGP.js.map} +0 -0
  51. /package/dist/{chunk-3R57ETXQ.js.map → chunk-LSY4GYJ2.js.map} +0 -0
  52. /package/dist/{chunk-DQZJULNP.js.map → chunk-POTFZJYN.js.map} +0 -0
  53. /package/dist/{chunk-I7NYU4JB.js.map → chunk-RYKETWBU.js.map} +0 -0
  54. /package/dist/{chunk-5XMQQ4LX.js.map → chunk-V6XUXLJF.js.map} +0 -0
  55. /package/dist/{chunk-XQHRKFFH.js.map → chunk-WJWLM5QE.js.map} +0 -0
  56. /package/dist/{client-3BFK7TNL.js.map → client-4CKVYBRP.js.map} +0 -0
  57. /package/dist/{config-UZ2GIXAO.js.map → config-WIHIVOGZ.js.map} +0 -0
  58. /package/dist/{eas-YTAAJSLU.js.map → eas-JOU76WZ2.js.map} +0 -0
  59. /package/dist/{governor-53PNPDCZ.js.map → governor-4XHJ52H4.js.map} +0 -0
  60. /package/dist/{identity-M6UIVBNX.js.map → identity-3BLNFZ42.js.map} +0 -0
  61. /package/dist/{launchpad-LHMBN4TV.js.map → launchpad-ZVC7Z5JJ.js.map} +0 -0
  62. /package/dist/{lighter-preflight-R7C6HY3M.js.map → lighter-preflight-ERF425PP.js.map} +0 -0
  63. /package/dist/{network-EZ5X2BF7.js.map → network-XQLQ4MSH.js.map} +0 -0
  64. /package/dist/{price-PBFF6NFU.js.map → price-4QVQAIHX.js.map} +0 -0
  65. /package/dist/{providers-22A42FKP.js.map → providers-P27BDYZ2.js.map} +0 -0
  66. /package/dist/{research-ZH34O7YL.js.map → research-N2R76ELJ.js.map} +0 -0
  67. /package/dist/{session-GSWEE4M3.js.map → session-ZIJYGOAT.js.map} +0 -0
  68. /package/dist/{trade-SHK7GKSI.js.map → trade-2J555BS7.js.map} +0 -0
  69. /package/dist/{vault-3T6UHCPE.js.map → vault-WC7AS7SM.js.map} +0 -0
  70. /package/dist/{xmtp-EOMKXRTB.js.map → xmtp-NJXD7T7E.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/config.ts","../src/lib/settings.ts"],"sourcesContent":["/**\n * Local config management — ~/.sherwood/config.json\n *\n * Stores group ID cache, per-chain contract addresses, and wallet config.\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { resolveSetting } from \"./settings.js\";\n\nconst CONFIG_DIR = path.join(os.homedir(), \".sherwood\");\nconst CONFIG_PATH = path.join(CONFIG_DIR, \"config.json\");\nconst DASHBOARD_BRIDGE_PATH = path.join(CONFIG_DIR, \"dashboard.json\");\n\n/** Per-chain user-specific addresses (stored by chainId). */\nexport interface ChainContracts {\n vault?: string; // user's default vault address\n}\n\n/** A fund the agent belongs to (creator or member). */\nexport interface FundMembership {\n subdomain: string;\n vault: string;\n role: \"creator\" | \"agent\";\n}\n\nexport interface SherwoodConfig {\n dbEncryptionKey?: string; // legacy — no longer used, XMTP CLI manages its own DB\n privateKey?: string; // wallet private key (0x-prefixed)\n xmtpInboxId?: string;\n groupCache: Record<string, string>; // subdomain → XMTP group ID\n veniceApiKey?: string; // Venice AI inference API key\n agentId?: number; // ERC-8004 identity token ID\n identityProvider?: \"agent0\" | \"virtuals\"; // who issued the identity (absent ⇒ agent0)\n identityChainId?: number; // chain the ERC-8004 NFT lives on (absent ⇒ active chain)\n virtuals?: VirtualsIdentity; // economyOS link details (identityProvider === \"virtuals\")\n contracts?: Record<string, ChainContracts>; // chainId → user addresses\n funds?: Record<string, FundMembership[]>; // chainId → fund memberships\n primaryFund?: Record<string, string>; // chainId → subdomain of the active fund\n rpc?: Record<string, string>; // network name → custom RPC URL\n notifyTo?: string; // destination for cron summaries (Telegram chat ID, phone, etc.)\n uniswapApiKey?: string; // Uniswap Trading API key (from developers.uniswap.org)\n positions?: unknown[]; // open trade positions (typed in positions.ts)\n closedPositions?: unknown[]; // historical closed positions\n _xmtpMigrated?: boolean; // one-time flag: revoked stale installations from ~/.xmtp/ era\n /** Cached swap routes per chain: chainId → { tokenPair → SwapRoute } */\n swapRoutes?: Record<string, Record<string, SwapRoute>>;\n // ── lighter ──\n /** Lighter L2 agent key from `sherwood lighter keygen` (see LighterKeyConfig). */\n lighter?: LighterKeyConfig;\n}\n\n/** Linked Virtuals economyOS identity (see lib/virtuals.ts). */\nexport interface VirtualsIdentity {\n agentId?: string; // Virtuals platform agent ID (opaque, e.g. \"abc-123\")\n wallet: string; // economyOS agent wallet (identity holder)\n binding?: {\n sig: string; // EIP-191 signature by the economyOS wallet\n message: string; // the exact signed binding message\n };\n}\n\n/** Persisted swap route detected by the CLI during portfolio strategy proposal. */\nexport interface SwapRoute {\n mode: \"direct\" | \"multi-hop\";\n feeTier: number; // direct pool fee tier\n hop?: { via: string; feeIn: number; feeOut: number }; // multi-hop details\n detectedAt: number; // unix timestamp\n}\n\nexport function loadConfig(): SherwoodConfig {\n if (fs.existsSync(CONFIG_PATH)) {\n const config = JSON.parse(fs.readFileSync(CONFIG_PATH, \"utf-8\"));\n if (!config.groupCache) config.groupCache = {};\n return config;\n }\n\n return { groupCache: {} };\n}\n\nexport function saveConfig(config: SherwoodConfig): void {\n fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2), { mode: 0o600 });\n writeDashboardBridge(config);\n}\n\n/**\n * Public-safe derivation of config.json for Hermes dashboard plugins to read.\n * Excludes privateKey + every other sensitive field. Hermes' sherwood-companion\n * plugin reads ~/.sherwood/dashboard.json to auto-detect the operator's\n * primary fund without prompting.\n *\n * Wrapped in try/catch — bridge-write failure must not break a config save.\n */\nfunction writeDashboardBridge(config: SherwoodConfig): void {\n try {\n let agentWallet: string | null = null;\n if (config.privateKey) {\n const key = config.privateKey.startsWith(\"0x\")\n ? (config.privateKey as `0x${string}`)\n : (`0x${config.privateKey}` as `0x${string}`);\n agentWallet = privateKeyToAccount(key).address;\n }\n const bridge = {\n version: 1,\n agentWallet,\n funds: config.funds ?? {},\n primaryFund: config.primaryFund ?? {},\n };\n fs.writeFileSync(\n DASHBOARD_BRIDGE_PATH,\n JSON.stringify(bridge, null, 2),\n { mode: 0o600 },\n );\n } catch {\n // Non-fatal: plugin will fall back to manual subdomain entry.\n }\n}\n\nexport function cacheGroupId(subdomain: string, groupId: string): void {\n const config = loadConfig();\n config.groupCache[subdomain] = groupId;\n saveConfig(config);\n}\n\nexport function getCachedGroupId(subdomain: string): string | undefined {\n const config = loadConfig();\n return config.groupCache[subdomain];\n}\n\nexport function invalidateCachedGroupId(subdomain: string): void {\n const config = loadConfig();\n if (config.groupCache[subdomain]) {\n delete config.groupCache[subdomain];\n saveConfig(config);\n }\n}\n\nexport function setVeniceApiKey(apiKey: string): void {\n const config = loadConfig();\n config.veniceApiKey = apiKey;\n saveConfig(config);\n}\n\nexport function getVeniceApiKey(): string | undefined {\n return resolveSetting(\"veniceApiKey\", loadConfig(), process.env);\n}\n\n/**\n * Bind an agent0-minted (or loaded) identity. Clears any previously linked\n * Virtuals state — otherwise `fund join` would emit a vid tag mixing the new\n * agent0 token with the stale economyOS wallet/binding (renders ✘ to\n * creators) and `identity status` would misreport the provider.\n */\nexport function setAgentId(agentId: number): void {\n const config = loadConfig();\n config.agentId = agentId;\n delete config.identityProvider;\n delete config.identityChainId;\n delete config.virtuals;\n saveConfig(config);\n}\n\n/**\n * Persist a linked Virtuals economyOS identity. Sets the ERC-8004 token ID\n * as the active agentId and stamps provider + issuing chain alongside it.\n */\nexport function setVirtualsIdentity(\n tokenId: number,\n issuingChainId: number,\n identity: VirtualsIdentity,\n): void {\n const config = loadConfig();\n config.agentId = tokenId;\n config.identityProvider = \"virtuals\";\n config.identityChainId = issuingChainId;\n config.virtuals = identity;\n saveConfig(config);\n}\n\nexport function getVirtualsIdentity(): VirtualsIdentity | undefined {\n return loadConfig().virtuals;\n}\n\n/** Identity provider for the saved agentId. Absent field ⇒ legacy agent0 mint. */\nexport function getIdentityProvider(): \"agent0\" | \"virtuals\" {\n return loadConfig().identityProvider ?? \"agent0\";\n}\n\nexport function getIdentityChainId(): number | undefined {\n return loadConfig().identityChainId;\n}\n\nexport function getAgentId(): number | undefined {\n return loadConfig().agentId;\n}\n\nexport function setPrivateKey(key: string): void {\n const config = loadConfig();\n config.privateKey = key.startsWith(\"0x\") ? key : `0x${key}`;\n saveConfig(config);\n}\n\n/**\n * Resolve the signing key (config → PRIVATE_KEY env, 0x-normalized) or\n * throw with the canonical setup hint. Every path that signs or derives\n * identity from the key (viem clients, Agent0 SDK, XMTP) must use this,\n * so they can never resolve different keys.\n */\nexport function requirePrivateKey(): `0x${string}` {\n const key = resolveSetting(\"privateKey\", loadConfig(), process.env);\n if (!key) {\n throw new Error(\n \"Private key not found. Run 'sherwood config set --private-key <key>' or set PRIVATE_KEY env var.\",\n );\n }\n return key as `0x${string}`;\n}\n\n// ── Uniswap Trading API Key ──\n\nexport function setUniswapApiKey(apiKey: string): void {\n const config = loadConfig();\n config.uniswapApiKey = apiKey;\n saveConfig(config);\n}\n\nexport function getUniswapApiKey(): string | undefined {\n return resolveSetting(\"uniswapApiKey\", loadConfig(), process.env);\n}\n\n// ── Per-network RPC URLs ──\n\nexport function getConfigRpcUrl(network: string): string | undefined {\n return loadConfig().rpc?.[network];\n}\n\nexport function setConfigRpcUrl(network: string, url: string): void {\n const config = loadConfig();\n if (!config.rpc) config.rpc = {};\n config.rpc[network] = url;\n saveConfig(config);\n}\n\n// ── Per-chain contract addresses ──\n\nexport function getChainContracts(chainId: number): ChainContracts {\n const config = loadConfig();\n return config.contracts?.[String(chainId)] ?? {};\n}\n\nexport function getNotifyTo(): string | undefined {\n return loadConfig().notifyTo;\n}\n\nexport function setNotifyTo(id: string): void {\n const config = loadConfig();\n config.notifyTo = id;\n saveConfig(config);\n}\n\nexport function setChainContract(\n chainId: number,\n key: keyof ChainContracts,\n value: string,\n): void {\n const config = loadConfig();\n if (!config.contracts) config.contracts = {};\n const cid = String(chainId);\n if (!config.contracts[cid]) config.contracts[cid] = {};\n config.contracts[cid][key] = value;\n saveConfig(config);\n}\n\n// ── Fund Membership ──\n\n/**\n * Add (or update) a fund membership. Deduplicates by subdomain.\n * Automatically sets it as primary if it's the first fund on this chain.\n */\nexport function addFund(\n chainId: number,\n membership: FundMembership,\n): void {\n const config = loadConfig();\n const cid = String(chainId);\n if (!config.funds) config.funds = {};\n if (!config.funds[cid]) config.funds[cid] = [];\n\n // Upsert — replace existing entry with same subdomain\n const idx = config.funds[cid].findIndex(\n (s) => s.subdomain === membership.subdomain,\n );\n if (idx >= 0) {\n config.funds[cid][idx] = membership;\n } else {\n config.funds[cid].push(membership);\n }\n\n // Auto-set as primary if it's the first fund (or no primary set)\n if (!config.primaryFund) config.primaryFund = {};\n if (!config.primaryFund[cid]) {\n config.primaryFund[cid] = membership.subdomain;\n }\n\n saveConfig(config);\n}\n\n/** Get all fund memberships for a chain. */\nexport function getFunds(chainId: number): FundMembership[] {\n const config = loadConfig();\n return config.funds?.[String(chainId)] ?? [];\n}\n\n/** Set which fund is the active/primary one for CLI commands. */\nexport function setPrimaryFund(\n chainId: number,\n subdomain: string,\n): void {\n const config = loadConfig();\n if (!config.primaryFund) config.primaryFund = {};\n config.primaryFund[String(chainId)] = subdomain;\n saveConfig(config);\n}\n\n/**\n * Get the primary fund for this chain.\n * Falls back to ChainContracts.vault for backwards compat with older configs.\n */\nexport function getPrimaryFund(\n chainId: number,\n): FundMembership | undefined {\n const config = loadConfig();\n const cid = String(chainId);\n\n // Check new funds store first\n const primarySubdomain = config.primaryFund?.[cid];\n if (primarySubdomain && config.funds?.[cid]) {\n const found = config.funds[cid].find(\n (s) => s.subdomain === primarySubdomain,\n );\n if (found) return found;\n }\n\n // Backwards compat: if funds list has entries but no primary, use the first one\n if (config.funds?.[cid]?.length) {\n return config.funds[cid][0];\n }\n\n // Legacy fallback: config only has a vault address, no subdomain\n const vault = config.contracts?.[cid]?.vault;\n if (vault) {\n return { subdomain: \"\", vault, role: \"creator\" };\n }\n\n return undefined;\n}\n\n// ── Swap Route Cache ──\n\nfunction swapRouteKey(asset: string, token: string): string {\n return `${asset.toLowerCase()}→${token.toLowerCase()}`;\n}\n\n/** Get a cached swap route for a token pair on a chain. */\nexport function getCachedSwapRoute(chainId: number, asset: string, token: string): SwapRoute | undefined {\n const config = loadConfig();\n return config.swapRoutes?.[String(chainId)]?.[swapRouteKey(asset, token)];\n}\n\n/** Save a detected swap route to the config cache. */\nexport function cacheSwapRoute(chainId: number, asset: string, token: string, route: SwapRoute): void {\n const config = loadConfig();\n const cid = String(chainId);\n if (!config.swapRoutes) config.swapRoutes = {};\n if (!config.swapRoutes[cid]) config.swapRoutes[cid] = {};\n config.swapRoutes[cid][swapRouteKey(asset, token)] = route;\n saveConfig(config);\n}\n\n/** Clear all cached swap routes for a chain (e.g. after pool migration). */\nexport function clearSwapRoutes(chainId: number): void {\n const config = loadConfig();\n delete config.swapRoutes?.[String(chainId)];\n saveConfig(config);\n}\n\n// ── lighter ──\n//\n// The Lighter L2 agent key `sherwood lighter keygen` generates. The pubkey goes\n// into a lighter-perp proposal's init data (`--pubkey` defaults to it); the\n// private key is the off-chain agent's TRADE-ONLY secret — it can place and\n// cancel orders on the strategy's account but can never withdraw (withdrawals\n// are venue-authed to the strategy contract). Kept in the 0600 config file.\n\nexport interface LighterKeyConfig {\n pubKey: string; // 40-byte Goldilocks pubkey, 0x-hex\n privateKey: string; // L2 API private key, 0x-hex\n apiKeyIndex: number; // 2..254\n createdAt: string; // ISO timestamp\n}\n\nexport function getLighterKeyConfig(): LighterKeyConfig | undefined {\n return loadConfig().lighter;\n}\n\n/**\n * Saves the L2 PRIVATE key, so it also forces config.json to 0600: saveConfig's\n * `mode` only applies when the file is created, and an existing config may be\n * 0644 (older CLIs, a hand-edit, a restore).\n */\nexport function setLighterKeyConfig(key: LighterKeyConfig): void {\n const config = loadConfig();\n config.lighter = key;\n saveConfig(config);\n fs.chmodSync(CONFIG_PATH, 0o600);\n}\n// ── /lighter ──\n","/**\n * Single owner of config → env resolution for user settings. Every\n * config-or-env setting resolves through the table below — accessors in\n * config.ts and requirePrivateKey() delegate here.\n */\n\nimport { type SherwoodConfig } from \"./config.js\";\n\ntype Env = Record<string, string | undefined>;\n\nconst hex0x = (v: string): string => (v.startsWith(\"0x\") ? v : `0x${v}`);\n\ninterface SettingSpec {\n fromConfig: (c: Partial<SherwoodConfig>) => string | undefined;\n envVar?: string;\n normalize?: (v: string) => string;\n}\n\nconst SETTINGS = {\n privateKey: {\n fromConfig: (c) => c.privateKey,\n envVar: \"PRIVATE_KEY\",\n normalize: hex0x,\n },\n veniceApiKey: {\n fromConfig: (c) => c.veniceApiKey,\n envVar: \"VENICE_API_KEY\",\n },\n uniswapApiKey: {\n fromConfig: (c) => c.uniswapApiKey,\n envVar: \"UNISWAP_API_KEY\",\n },\n} satisfies Record<string, SettingSpec>;\n\nexport type SettingKey = keyof typeof SETTINGS;\n\nexport function resolveSetting(\n key: SettingKey,\n config: Partial<SherwoodConfig>,\n env: Env,\n): string | undefined {\n const spec: SettingSpec = SETTINGS[key];\n // Empty string counts as absent on both sources: an empty config key\n // falls through to the env, and a blank `PRIVATE_KEY=` dotenv line\n // resolves to undefined (so callers show the setup hint) instead of\n // normalizing to a bare \"0x\".\n const raw =\n spec.fromConfig(config) || (spec.envVar ? env[spec.envVar] : undefined);\n if (!raw) return undefined;\n return spec.normalize ? spec.normalize(raw) : raw;\n}\n"],"mappings":"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","names":[]}
@@ -12,9 +12,9 @@ import {
12
12
  unstickWallet,
13
13
  waitForReceipt,
14
14
  writeContractWithRetry
15
- } from "./chunk-I7NYU4JB.js";
16
- import "./chunk-LIW6K4OJ.js";
17
- import "./chunk-QUAVAJWE.js";
15
+ } from "./chunk-RYKETWBU.js";
16
+ import "./chunk-JDTTJDGP.js";
17
+ import "./chunk-XJR2YQK3.js";
18
18
  export {
19
19
  GAS_UNITS,
20
20
  detectStuckNonce,
@@ -30,4 +30,4 @@ export {
30
30
  waitForReceipt,
31
31
  writeContractWithRetry
32
32
  };
33
- //# sourceMappingURL=client-3BFK7TNL.js.map
33
+ //# sourceMappingURL=client-4CKVYBRP.js.map
@@ -4,7 +4,6 @@ import {
4
4
  cacheSwapRoute,
5
5
  clearSwapRoutes,
6
6
  getAgentId,
7
- getAnthropicApiKey,
8
7
  getCachedGroupId,
9
8
  getCachedSwapRoute,
10
9
  getChainContracts,
@@ -23,7 +22,6 @@ import {
23
22
  requirePrivateKey,
24
23
  saveConfig,
25
24
  setAgentId,
26
- setAnthropicApiKey,
27
25
  setChainContract,
28
26
  setConfigRpcUrl,
29
27
  setLighterKeyConfig,
@@ -33,14 +31,13 @@ import {
33
31
  setUniswapApiKey,
34
32
  setVeniceApiKey,
35
33
  setVirtualsIdentity
36
- } from "./chunk-QUAVAJWE.js";
34
+ } from "./chunk-XJR2YQK3.js";
37
35
  export {
38
36
  addFund,
39
37
  cacheGroupId,
40
38
  cacheSwapRoute,
41
39
  clearSwapRoutes,
42
40
  getAgentId,
43
- getAnthropicApiKey,
44
41
  getCachedGroupId,
45
42
  getCachedSwapRoute,
46
43
  getChainContracts,
@@ -59,7 +56,6 @@ export {
59
56
  requirePrivateKey,
60
57
  saveConfig,
61
58
  setAgentId,
62
- setAnthropicApiKey,
63
59
  setChainContract,
64
60
  setConfigRpcUrl,
65
61
  setLighterKeyConfig,
@@ -70,4 +66,4 @@ export {
70
66
  setVeniceApiKey,
71
67
  setVirtualsIdentity
72
68
  };
73
- //# sourceMappingURL=config-UZ2GIXAO.js.map
69
+ //# sourceMappingURL=config-WIHIVOGZ.js.map
@@ -23,11 +23,11 @@ import {
23
23
  revokeAttestation,
24
24
  revokeJoinRequest,
25
25
  stripReferrerPrefix
26
- } from "./chunk-2SIUEMPV.js";
27
- import "./chunk-3R57ETXQ.js";
28
- import "./chunk-I7NYU4JB.js";
29
- import "./chunk-LIW6K4OJ.js";
30
- import "./chunk-QUAVAJWE.js";
26
+ } from "./chunk-FS5DXFRG.js";
27
+ import "./chunk-LSY4GYJ2.js";
28
+ import "./chunk-RYKETWBU.js";
29
+ import "./chunk-JDTTJDGP.js";
30
+ import "./chunk-XJR2YQK3.js";
31
31
  import "./chunk-SCWNKVNW.js";
32
32
  export {
33
33
  COORDINATION_NETWORK,
@@ -55,4 +55,4 @@ export {
55
55
  revokeJoinRequest,
56
56
  stripReferrerPrefix
57
57
  };
58
- //# sourceMappingURL=eas-YTAAJSLU.js.map
58
+ //# sourceMappingURL=eas-JOU76WZ2.js.map
@@ -41,11 +41,11 @@ import {
41
41
  settleProposal,
42
42
  vetoProposal,
43
43
  vote
44
- } from "./chunk-5XMQQ4LX.js";
45
- import "./chunk-3R57ETXQ.js";
46
- import "./chunk-I7NYU4JB.js";
47
- import "./chunk-LIW6K4OJ.js";
48
- import "./chunk-QUAVAJWE.js";
44
+ } from "./chunk-V6XUXLJF.js";
45
+ import "./chunk-LSY4GYJ2.js";
46
+ import "./chunk-RYKETWBU.js";
47
+ import "./chunk-JDTTJDGP.js";
48
+ import "./chunk-XJR2YQK3.js";
49
49
  import "./chunk-SCWNKVNW.js";
50
50
  export {
51
51
  PROPOSAL_STATE,
@@ -91,4 +91,4 @@ export {
91
91
  vetoProposal,
92
92
  vote
93
93
  };
94
- //# sourceMappingURL=governor-53PNPDCZ.js.map
94
+ //# sourceMappingURL=governor-4XHJ52H4.js.map
@@ -2,13 +2,13 @@ import {
2
2
  lookupAgentIdByWallet,
3
3
  lookupAgentIdsByWallet,
4
4
  registerIdentityCommands
5
- } from "./chunk-XQHRKFFH.js";
5
+ } from "./chunk-WJWLM5QE.js";
6
6
  import "./chunk-GAQMHH44.js";
7
- import "./chunk-2SIUEMPV.js";
8
- import "./chunk-3R57ETXQ.js";
9
- import "./chunk-I7NYU4JB.js";
10
- import "./chunk-LIW6K4OJ.js";
11
- import "./chunk-QUAVAJWE.js";
7
+ import "./chunk-FS5DXFRG.js";
8
+ import "./chunk-LSY4GYJ2.js";
9
+ import "./chunk-RYKETWBU.js";
10
+ import "./chunk-JDTTJDGP.js";
11
+ import "./chunk-XJR2YQK3.js";
12
12
  import "./chunk-SCWNKVNW.js";
13
13
  import "./chunk-YMB4RJOR.js";
14
14
  export {
@@ -16,4 +16,4 @@ export {
16
16
  lookupAgentIdsByWallet,
17
17
  registerIdentityCommands
18
18
  };
19
- //# sourceMappingURL=identity-M6UIVBNX.js.map
19
+ //# sourceMappingURL=identity-3BLNFZ42.js.map
package/dist/index.js CHANGED
@@ -15,17 +15,17 @@ import {
15
15
  checkApiKeyValid,
16
16
  listModels,
17
17
  provisionApiKey
18
- } from "./chunk-74QYNLJE.js";
18
+ } from "./chunk-G3LPD43A.js";
19
19
  import {
20
20
  createFund,
21
21
  getActiveFunds,
22
22
  getFund,
23
23
  subdomainExists,
24
24
  updateMetadata
25
- } from "./chunk-DQZJULNP.js";
25
+ } from "./chunk-POTFZJYN.js";
26
26
  import {
27
27
  addLaunchpadTemplateOptions
28
- } from "./chunk-KXUA5BEH.js";
28
+ } from "./chunk-5G4SESMO.js";
29
29
  import {
30
30
  FORK_UNOBSERVABLE_REASON,
31
31
  LIGHTER_API_PROFILES,
@@ -57,8 +57,8 @@ import {
57
57
  removeDepositor,
58
58
  setAgentFeeBps,
59
59
  setVaultAddress
60
- } from "./chunk-J3JMMJLN.js";
61
- import "./chunk-KRASHQRB.js";
60
+ } from "./chunk-IDMSU2X4.js";
61
+ import "./chunk-IXU23PP5.js";
62
62
  import {
63
63
  CL_DEFAULTS,
64
64
  DEFAULT_FEE_TIER,
@@ -92,7 +92,7 @@ import {
92
92
  selectBestFeeTier,
93
93
  twapTickFromCumulatives,
94
94
  v3SingleHopExtraData
95
- } from "./chunk-ZCRVHITI.js";
95
+ } from "./chunk-7GITFGA4.js";
96
96
  import {
97
97
  CLAIM_SETTLE_BUFFER_SECONDS,
98
98
  DEFAULT_DEADLINE_MARGIN_SECONDS,
@@ -142,7 +142,7 @@ import {
142
142
  registerIdentityCommands,
143
143
  stripVidTag,
144
144
  verifyVidTag
145
- } from "./chunk-XQHRKFFH.js";
145
+ } from "./chunk-WJWLM5QE.js";
146
146
  import {
147
147
  emitCalldata,
148
148
  isCalldataOnly,
@@ -157,13 +157,13 @@ import {
157
157
  queryJoinRequests,
158
158
  revokeJoinRequest,
159
159
  stripReferrerPrefix
160
- } from "./chunk-2SIUEMPV.js";
160
+ } from "./chunk-FS5DXFRG.js";
161
161
  import {
162
162
  resolveFund,
163
163
  resolveVaultFund,
164
164
  searchFundAcrossChains,
165
165
  setTextRecord
166
- } from "./chunk-KPTKX226.js";
166
+ } from "./chunk-6H6EFHDS.js";
167
167
  import {
168
168
  PROPOSAL_STATE,
169
169
  PROPOSAL_STATES,
@@ -202,7 +202,7 @@ import {
202
202
  setVotingPeriod,
203
203
  settleProposal,
204
204
  vote
205
- } from "./chunk-5XMQQ4LX.js";
205
+ } from "./chunk-V6XUXLJF.js";
206
206
  import {
207
207
  AERODROME,
208
208
  LAUNCH_ADAPTERS,
@@ -212,7 +212,7 @@ import {
212
212
  TOKENS,
213
213
  UNISWAP,
214
214
  VENICE
215
- } from "./chunk-3R57ETXQ.js";
215
+ } from "./chunk-LSY4GYJ2.js";
216
216
  import {
217
217
  GAS_UNITS,
218
218
  estimateGasCushion,
@@ -223,7 +223,7 @@ import {
223
223
  sendTxWithRetry,
224
224
  waitForReceipt,
225
225
  writeContractWithRetry
226
- } from "./chunk-I7NYU4JB.js";
226
+ } from "./chunk-RYKETWBU.js";
227
227
  import {
228
228
  DEFAULT_NETWORK,
229
229
  VALID_NETWORKS,
@@ -233,7 +233,7 @@ import {
233
233
  isTestnet,
234
234
  setNetwork,
235
235
  withNetwork
236
- } from "./chunk-LIW6K4OJ.js";
236
+ } from "./chunk-JDTTJDGP.js";
237
237
  import {
238
238
  addFund,
239
239
  cacheGroupId,
@@ -250,7 +250,6 @@ import {
250
250
  getVeniceApiKey,
251
251
  getVirtualsIdentity,
252
252
  loadConfig,
253
- setAnthropicApiKey,
254
253
  setChainContract,
255
254
  setConfigRpcUrl,
256
255
  setLighterKeyConfig,
@@ -259,7 +258,7 @@ import {
259
258
  setPrivateKey,
260
259
  setUniswapApiKey,
261
260
  setVeniceApiKey
262
- } from "./chunk-QUAVAJWE.js";
261
+ } from "./chunk-XJR2YQK3.js";
263
262
  import {
264
263
  LIGHTER_DEFAULT_API_KEY_INDEX,
265
264
  LIGHTER_MAX_DEPOSIT,
@@ -1776,7 +1775,7 @@ async function resolveChainInputsForTemplate(templateKey, opts, deps = {}) {
1776
1775
  }
1777
1776
  if (templateKey === "lighter-perp") {
1778
1777
  if (opts.pubkey) return {};
1779
- const { getLighterKeyConfig: getLighterKeyConfig2 } = await import("./config-UZ2GIXAO.js");
1778
+ const { getLighterKeyConfig: getLighterKeyConfig2 } = await import("./config-WIHIVOGZ.js");
1780
1779
  const saved = getLighterKeyConfig2();
1781
1780
  return saved ? { lighterSavedKey: { pubKey: saved.pubKey, apiKeyIndex: saved.apiKeyIndex } } : {};
1782
1781
  }
@@ -2035,7 +2034,7 @@ function registerStrategyProposeCommands(strategy2) {
2035
2034
  }
2036
2035
  }
2037
2036
  if (templateKey === "lighter-perp") {
2038
- const { runLighterProposePreflight } = await import("./lighter-preflight-R7C6HY3M.js");
2037
+ const { runLighterProposePreflight } = await import("./lighter-preflight-ERF425PP.js");
2039
2038
  await runLighterProposePreflight(vault, opts, maxDrawdownBps);
2040
2039
  }
2041
2040
  } catch (err) {
@@ -2043,7 +2042,7 @@ function registerStrategyProposeCommands(strategy2) {
2043
2042
  process.exit(1);
2044
2043
  }
2045
2044
  if (!opts.agent) opts.agent = proposer;
2046
- const { parseDuration: parseDuration3, getGovernorOf: getGovernorOf2 } = await import("./governor-53PNPDCZ.js");
2045
+ const { parseDuration: parseDuration3, getGovernorOf: getGovernorOf2 } = await import("./governor-4XHJ52H4.js");
2047
2046
  const strategyDuration2 = parseDuration3(opts.duration);
2048
2047
  const chainId = getChain().id;
2049
2048
  try {
@@ -2172,7 +2171,7 @@ function registerStrategyProposeCommands(strategy2) {
2172
2171
  }
2173
2172
  }
2174
2173
  if (templateKey === "lighter-perp") {
2175
- const { runLighterProposePreflight } = await import("./lighter-preflight-R7C6HY3M.js");
2174
+ const { runLighterProposePreflight } = await import("./lighter-preflight-ERF425PP.js");
2176
2175
  await runLighterProposePreflight(vault, opts, maxDrawdownBps);
2177
2176
  }
2178
2177
  preflightSpinner.succeed("Preflight OK");
@@ -2289,9 +2288,9 @@ function registerStrategyProposeCommands(strategy2) {
2289
2288
  console.error(chalk4.red("Missing --name or --duration. Use --write-calls to skip proposal submission."));
2290
2289
  process.exit(1);
2291
2290
  }
2292
- const { propose: propose2 } = await import("./governor-53PNPDCZ.js");
2291
+ const { propose: propose2 } = await import("./governor-4XHJ52H4.js");
2293
2292
  const { pinJSON } = await import("./ipfs-M56BLMCW.js");
2294
- const { parseDuration: parseDuration2 } = await import("./governor-53PNPDCZ.js");
2293
+ const { parseDuration: parseDuration2 } = await import("./governor-4XHJ52H4.js");
2295
2294
  const strategyDuration = parseDuration2(opts.duration);
2296
2295
  const metaSpinner = ora2("Pinning metadata to IPFS...").start();
2297
2296
  let metadataURI;
@@ -2323,7 +2322,7 @@ function registerStrategyProposeCommands(strategy2) {
2323
2322
  metadataURI = `data:application/json;base64,${Buffer.from(inline).toString("base64")}`;
2324
2323
  }
2325
2324
  try {
2326
- const { getAgentFeeBps: getAgentFeeBps2 } = await import("./vault-3T6UHCPE.js");
2325
+ const { getAgentFeeBps: getAgentFeeBps2 } = await import("./vault-WC7AS7SM.js");
2327
2326
  const feeBps = await getAgentFeeBps2(vault);
2328
2327
  console.log(
2329
2328
  chalk4.yellow(
@@ -2374,7 +2373,7 @@ function registerStrategyProposeCommands(strategy2) {
2374
2373
  console.log(chalk4.yellow(` asset.approve(${clone}, <repaymentAmount>)`));
2375
2374
  }
2376
2375
  if (templateKey === "lighter-perp") {
2377
- const { lighterNextSteps } = await import("./lighter-preflight-R7C6HY3M.js");
2376
+ const { lighterNextSteps } = await import("./lighter-preflight-ERF425PP.js");
2378
2377
  console.log();
2379
2378
  for (const line of lighterNextSteps(clone)) console.log(chalk4.yellow(line));
2380
2379
  }
@@ -2646,7 +2645,7 @@ function registerStrategyTemplateCommands(strategy2) {
2646
2645
  let prices = [];
2647
2646
  let priceSource = null;
2648
2647
  try {
2649
- const { getTokenPricesInAsset } = await import("./price-PBFF6NFU.js");
2648
+ const { getTokenPricesInAsset } = await import("./price-4QVQAIHX.js");
2650
2649
  prices = await getTokenPricesInAsset({
2651
2650
  tokens: allocations.map((a, i) => ({
2652
2651
  token: a.token,
@@ -3063,7 +3062,7 @@ function registerVeniceCommands(program2) {
3063
3062
  console.log(chalk6.dim(` Key: ${apiKey.slice(0, 8)}...${apiKey.slice(-4)}`));
3064
3063
  console.log(chalk6.dim(" Saved to ~/.sherwood/config.json"));
3065
3064
  try {
3066
- const { createVeniceProvisionAttestation, getEasScanUrl } = await import("./eas-YTAAJSLU.js");
3065
+ const { createVeniceProvisionAttestation, getEasScanUrl } = await import("./eas-JOU76WZ2.js");
3067
3066
  const attestation = await createVeniceProvisionAttestation(account.address);
3068
3067
  if (attestation) {
3069
3068
  console.log(chalk6.dim(` Attested: ${getEasScanUrl(attestation.uid)}`));
@@ -3419,10 +3418,10 @@ ${opts.prompt}`;
3419
3418
  console.log(chalk6.dim(`Model: ${result.model} | Tokens: ${result.usage.promptTokens} in, ${result.usage.completionTokens} out, ${result.usage.totalTokens} total`));
3420
3419
  }
3421
3420
  try {
3422
- const { createVeniceInferenceAttestation, getEasScanUrl } = await import("./eas-YTAAJSLU.js");
3421
+ const { createVeniceInferenceAttestation, getEasScanUrl } = await import("./eas-JOU76WZ2.js");
3423
3422
  const { keccak256: keccak2562, toHex, isAddress: isAddr } = await import("viem");
3424
- const { getChainContracts: getChainContracts2 } = await import("./config-UZ2GIXAO.js");
3425
- const { getChain: getActiveChain } = await import("./network-EZ5X2BF7.js");
3423
+ const { getChainContracts: getChainContracts2 } = await import("./config-WIHIVOGZ.js");
3424
+ const { getChain: getActiveChain } = await import("./network-XQLQ4MSH.js");
3426
3425
  const vaultRecipient = opts.vault && isAddr(opts.vault) ? opts.vault : getChainContracts2(getActiveChain().id).vault;
3427
3426
  const promptHash = keccak2562(toHex(userContent)).slice(0, 18);
3428
3427
  const attestation = await createVeniceInferenceAttestation(
@@ -4418,8 +4417,8 @@ function printSimulationResult(result, callType) {
4418
4417
  }
4419
4418
  async function sendSimulationAlert(subdomain, proposalId, vault, execResult, settleResult) {
4420
4419
  try {
4421
- const xmtp = await import("./xmtp-EOMKXRTB.js");
4422
- const { getAccount: getAccount2 } = await import("./client-3BFK7TNL.js");
4420
+ const xmtp = await import("./xmtp-NJXD7T7E.js");
4421
+ const { getAccount: getAccount2 } = await import("./client-4CKVYBRP.js");
4423
4422
  const group = await xmtp.getGroup("", subdomain);
4424
4423
  const allRisks = [...execResult.risks, ...settleResult?.risks ?? []];
4425
4424
  const criticals = allRisks.filter((r) => r.level === "critical");
@@ -10177,9 +10176,9 @@ try {
10177
10176
  } catch {
10178
10177
  }
10179
10178
  var require2 = createRequire(import.meta.url);
10180
- var CLI_VERSION = "0.90.0";
10179
+ var CLI_VERSION = "0.90.2";
10181
10180
  async function loadXmtp() {
10182
- return import("./xmtp-EOMKXRTB.js");
10181
+ return import("./xmtp-NJXD7T7E.js");
10183
10182
  }
10184
10183
  async function loadCron() {
10185
10184
  return import("./cron-E3UAZF5B.js");
@@ -10856,7 +10855,7 @@ vaultCmd.command("add").description("Register an agent on a vault (creator only)
10856
10855
  agentId = BigInt(opts.agentId);
10857
10856
  } else {
10858
10857
  spinner.text = "Looking up ERC-8004 identity from wallet...";
10859
- const { lookupAgentIdByWallet } = await import("./identity-M6UIVBNX.js");
10858
+ const { lookupAgentIdByWallet } = await import("./identity-3BLNFZ42.js");
10860
10859
  const resolved = await lookupAgentIdByWallet(agentWallet);
10861
10860
  if (resolved === null) {
10862
10861
  spinner.fail("Agent wallet does not own an ERC-8004 identity NFT");
@@ -11559,7 +11558,7 @@ vaultCmd.command("redeem").description("Redeem vault shares for the underlying a
11559
11558
  var strategy = program.command("strategy").description("Strategy templates \u2014 list, clone, propose");
11560
11559
  registerStrategyTemplateCommands(strategy);
11561
11560
  program.command("providers").description("List available providers (research + swap routing)").action(async () => {
11562
- const { listProviders } = await import("./providers-22A42FKP.js");
11561
+ const { listProviders } = await import("./providers-P27BDYZ2.js");
11563
11562
  for (const info2 of listProviders()) {
11564
11563
  console.log(`
11565
11564
  ${info2.name} (${info2.type})`);
@@ -11569,7 +11568,7 @@ ${info2.name} (${info2.type})`);
11569
11568
  }
11570
11569
  });
11571
11570
  try {
11572
- const { registerChatCommands } = await import("./chat-PFXIL6WT.js");
11571
+ const { registerChatCommands } = await import("./chat-HS7OIE2Y.js");
11573
11572
  registerChatCommands(program);
11574
11573
  } catch {
11575
11574
  program.command("chat <name> [action] [actionArgs...]").description("Vault chat (XMTP) \u2014 requires @xmtp/cli").action(() => {
@@ -11579,7 +11578,7 @@ try {
11579
11578
  process.exit(1);
11580
11579
  });
11581
11580
  }
11582
- var { registerSessionCommands } = await import("./session-GSWEE4M3.js");
11581
+ var { registerSessionCommands } = await import("./session-ZIJYGOAT.js");
11583
11582
  registerSessionCommands(program);
11584
11583
  registerVeniceCommands(program);
11585
11584
  registerAllowanceCommands(program);
@@ -11588,18 +11587,18 @@ registerProposalCommands(program);
11588
11587
  registerQueueCommands(program);
11589
11588
  registerGovernorCommands(program);
11590
11589
  registerGuardianCommands(program);
11591
- var { registerResearchCommands } = await import("./research-ZH34O7YL.js");
11590
+ var { registerResearchCommands } = await import("./research-N2R76ELJ.js");
11592
11591
  registerResearchCommands(program);
11593
- var { registerAgentCommands } = await import("./agent-QU2OSWS4.js");
11592
+ var { registerAgentCommands } = await import("./agent-LVDMPKHK.js");
11594
11593
  registerAgentCommands(program);
11595
- var { registerTradeCommands } = await import("./trade-SHK7GKSI.js");
11594
+ var { registerTradeCommands } = await import("./trade-2J555BS7.js");
11596
11595
  registerTradeCommands(program);
11597
11596
  registerGridCommand(program);
11598
11597
  registerLighterCommands(program);
11599
- var { registerLaunchpadCommands } = await import("./launchpad-LHMBN4TV.js");
11598
+ var { registerLaunchpadCommands } = await import("./launchpad-ZVC7Z5JJ.js");
11600
11599
  registerLaunchpadCommands(program);
11601
11600
  var configCmd = program.command("config");
11602
- configCmd.command("set").description("Save settings to ~/.sherwood/config.json (persists across sessions)").option("--private-key <key>", "Wallet private key (0x-prefixed)").option("--vault <address>", "Default vault address").option("--rpc <url>", "Custom RPC URL for the active --chain network").option("--notify-to <id>", "Destination for cron summaries (Telegram chat ID, phone, etc.)").option("--uniswap-api-key <key>", "Uniswap Trading API key (from developers.uniswap.org)").option("--venice-api-key <key>", "Venice AI inference API key").option("--anthropic-api-key <key>", "Anthropic Claude API key (for LLM judge)").option("--xmtp-group <subdomain:groupId>", "Cache an XMTP group ID for a vault (e.g. my-vault:abc123)").action((opts) => {
11601
+ configCmd.command("set").description("Save settings to ~/.sherwood/config.json (persists across sessions)").option("--private-key <key>", "Wallet private key (0x-prefixed)").option("--vault <address>", "Default vault address").option("--rpc <url>", "Custom RPC URL for the active --chain network").option("--notify-to <id>", "Destination for cron summaries (Telegram chat ID, phone, etc.)").option("--uniswap-api-key <key>", "Uniswap Trading API key (from developers.uniswap.org)").option("--venice-api-key <key>", "Venice AI inference API key").option("--xmtp-group <subdomain:groupId>", "Cache an XMTP group ID for a vault (e.g. my-vault:abc123)").action((opts) => {
11603
11602
  let saved = false;
11604
11603
  if (opts.privateKey) {
11605
11604
  setPrivateKey(opts.privateKey);
@@ -11638,11 +11637,6 @@ configCmd.command("set").description("Save settings to ~/.sherwood/config.json (
11638
11637
  console.log(chalk19.green("Venice API key saved to ~/.sherwood/config.json"));
11639
11638
  saved = true;
11640
11639
  }
11641
- if (opts.anthropicApiKey) {
11642
- setAnthropicApiKey(opts.anthropicApiKey);
11643
- console.log(chalk19.green("Anthropic API key saved to ~/.sherwood/config.json"));
11644
- saved = true;
11645
- }
11646
11640
  if (opts.xmtpGroup) {
11647
11641
  const parts = opts.xmtpGroup.split(":");
11648
11642
  if (parts.length !== 2 || !parts[0] || !parts[1]) {
@@ -11655,7 +11649,7 @@ configCmd.command("set").description("Save settings to ~/.sherwood/config.json (
11655
11649
  saved = true;
11656
11650
  }
11657
11651
  if (!saved) {
11658
- console.log(chalk19.red("Provide at least one of: --private-key, --vault, --rpc, --notify-to, --uniswap-api-key, --venice-api-key, --anthropic-api-key, --xmtp-group"));
11652
+ console.log(chalk19.red("Provide at least one of: --private-key, --vault, --rpc, --notify-to, --uniswap-api-key, --venice-api-key, --xmtp-group"));
11659
11653
  process.exit(1);
11660
11654
  }
11661
11655
  });