@sherwoodagent/cli 0.7.3 → 0.8.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 (29) hide show
  1. package/dist/{chat-BSLMAYM5.js → chat-O34BTHII.js} +5 -5
  2. package/dist/{chunk-EDR5AHSC.js → chunk-4MTHXGTK.js} +2 -2
  3. package/dist/{chunk-QMWMT6EH.js → chunk-5ADWTXNT.js} +115 -31
  4. package/dist/chunk-5ADWTXNT.js.map +1 -0
  5. package/dist/{chunk-B7XDUFI3.js → chunk-ARZIQ7YZ.js} +3 -3
  6. package/dist/{chunk-6MEYSN2W.js → chunk-BXUNWV52.js} +480 -36
  7. package/dist/chunk-BXUNWV52.js.map +1 -0
  8. package/dist/{chunk-P3GYAMGZ.js → chunk-VQP4XR67.js} +15 -5
  9. package/dist/chunk-VQP4XR67.js.map +1 -0
  10. package/dist/{eas-TMHFTX43.js → eas-TI4XI5VU.js} +4 -4
  11. package/dist/index.js +1064 -210
  12. package/dist/index.js.map +1 -1
  13. package/dist/{research-ILKLSHVP.js → research-GX32VMP7.js} +5 -5
  14. package/dist/{research-5QALNYVS.js → research-ZR7HXITG.js} +3 -3
  15. package/dist/{session-XUOMZWOT.js → session-QEIVURQO.js} +5 -5
  16. package/dist/{xmtp-4XTQQ7RE.js → xmtp-A6F63GZH.js} +6 -6
  17. package/dist/xmtp-A6F63GZH.js.map +1 -0
  18. package/package.json +1 -1
  19. package/dist/chunk-6MEYSN2W.js.map +0 -1
  20. package/dist/chunk-P3GYAMGZ.js.map +0 -1
  21. package/dist/chunk-QMWMT6EH.js.map +0 -1
  22. package/dist/xmtp-4XTQQ7RE.js.map +0 -1
  23. /package/dist/{chat-BSLMAYM5.js.map → chat-O34BTHII.js.map} +0 -0
  24. /package/dist/{chunk-EDR5AHSC.js.map → chunk-4MTHXGTK.js.map} +0 -0
  25. /package/dist/{chunk-B7XDUFI3.js.map → chunk-ARZIQ7YZ.js.map} +0 -0
  26. /package/dist/{eas-TMHFTX43.js.map → eas-TI4XI5VU.js.map} +0 -0
  27. /package/dist/{research-ILKLSHVP.js.map → research-GX32VMP7.js.map} +0 -0
  28. /package/dist/{research-5QALNYVS.js.map → research-ZR7HXITG.js.map} +0 -0
  29. /package/dist/{session-XUOMZWOT.js.map → session-QEIVURQO.js.map} +0 -0
@@ -2,19 +2,19 @@ import {
2
2
  getTextRecord,
3
3
  resolveSyndicate,
4
4
  setTextRecord
5
- } from "./chunk-B7XDUFI3.js";
6
- import "./chunk-6MEYSN2W.js";
5
+ } from "./chunk-ARZIQ7YZ.js";
6
+ import "./chunk-BXUNWV52.js";
7
7
  import {
8
8
  cacheGroupId,
9
9
  getAccount,
10
10
  getCachedGroupId
11
- } from "./chunk-QMWMT6EH.js";
11
+ } from "./chunk-5ADWTXNT.js";
12
12
 
13
13
  // src/commands/chat.ts
14
14
  import chalk from "chalk";
15
15
  import ora from "ora";
16
16
  async function loadXmtp() {
17
- return import("./xmtp-4XTQQ7RE.js");
17
+ return import("./xmtp-A6F63GZH.js");
18
18
  }
19
19
  function formatTimestamp(date) {
20
20
  return `${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}`;
@@ -349,4 +349,4 @@ function registerChatCommands(program) {
349
349
  export {
350
350
  registerChatCommands
351
351
  };
352
- //# sourceMappingURL=chat-BSLMAYM5.js.map
352
+ //# sourceMappingURL=chat-O34BTHII.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getAccount
3
- } from "./chunk-QMWMT6EH.js";
3
+ } from "./chunk-5ADWTXNT.js";
4
4
 
5
5
  // src/providers/research/messari.ts
6
6
  import { base, baseSepolia } from "viem/chains";
@@ -436,4 +436,4 @@ export {
436
436
  NansenProvider,
437
437
  getResearchProvider
438
438
  };
439
- //# sourceMappingURL=chunk-EDR5AHSC.js.map
439
+ //# sourceMappingURL=chunk-4MTHXGTK.js.map
@@ -1,26 +1,3 @@
1
- // src/lib/network.ts
2
- import { base, baseSepolia } from "viem/chains";
3
- var _network = "base";
4
- function setNetwork(n) {
5
- _network = n;
6
- }
7
- function getNetwork() {
8
- return _network;
9
- }
10
- function getChain() {
11
- return _network === "base" ? base : baseSepolia;
12
- }
13
- function getRpcUrl() {
14
- if (_network === "base-sepolia") {
15
- return process.env.BASE_SEPOLIA_RPC_URL || "https://sepolia.base.org";
16
- }
17
- return process.env.BASE_RPC_URL || "https://mainnet.base.org";
18
- }
19
- function getExplorerUrl(txHash) {
20
- const host = _network === "base" ? "basescan.org" : "sepolia.basescan.org";
21
- return `https://${host}/tx/${txHash}`;
22
- }
23
-
24
1
  // src/lib/config.ts
25
2
  import fs from "fs";
26
3
  import path from "path";
@@ -69,6 +46,15 @@ function setPrivateKey(key) {
69
46
  config.privateKey = key.startsWith("0x") ? key : `0x${key}`;
70
47
  saveConfig(config);
71
48
  }
49
+ function getConfigRpcUrl(network) {
50
+ return loadConfig().rpc?.[network];
51
+ }
52
+ function setConfigRpcUrl(network, url) {
53
+ const config = loadConfig();
54
+ if (!config.rpc) config.rpc = {};
55
+ config.rpc[network] = url;
56
+ saveConfig(config);
57
+ }
72
58
  function getChainContracts(chainId) {
73
59
  const config = loadConfig();
74
60
  return config.contracts?.[String(chainId)] ?? {};
@@ -82,6 +68,93 @@ function setChainContract(chainId, key, value) {
82
68
  saveConfig(config);
83
69
  }
84
70
 
71
+ // src/lib/network.ts
72
+ import { defineChain } from "viem";
73
+ import { base, baseSepolia } from "viem/chains";
74
+ var robinhoodTestnet = defineChain({
75
+ id: 46630,
76
+ name: "Robinhood Chain Testnet",
77
+ nativeCurrency: { name: "Ethereum", symbol: "ETH", decimals: 18 },
78
+ rpcUrls: {
79
+ default: { http: ["https://rpc.testnet.chain.robinhood.com"] }
80
+ },
81
+ blockExplorers: {
82
+ default: {
83
+ name: "Blockscout",
84
+ url: "https://explorer.testnet.chain.robinhood.com"
85
+ }
86
+ },
87
+ testnet: true
88
+ });
89
+ var CHAIN_REGISTRY = {
90
+ base: {
91
+ chain: base,
92
+ rpcFallback: "https://mainnet.base.org",
93
+ rpcEnvVar: "BASE_RPC_URL",
94
+ explorerHost: "basescan.org",
95
+ easGraphqlUrl: "https://base.easscan.org/graphql",
96
+ easScanHost: "base.easscan.org",
97
+ xmtpEnv: "production",
98
+ isTestnet: false
99
+ },
100
+ "base-sepolia": {
101
+ chain: baseSepolia,
102
+ rpcFallback: "https://sepolia.base.org",
103
+ rpcEnvVar: "BASE_SEPOLIA_RPC_URL",
104
+ explorerHost: "sepolia.basescan.org",
105
+ easGraphqlUrl: "https://base-sepolia.easscan.org/graphql",
106
+ easScanHost: "base-sepolia.easscan.org",
107
+ xmtpEnv: "dev",
108
+ isTestnet: true
109
+ },
110
+ "robinhood-testnet": {
111
+ chain: robinhoodTestnet,
112
+ rpcFallback: "https://rpc.testnet.chain.robinhood.com",
113
+ explorerHost: "explorer.testnet.chain.robinhood.com",
114
+ easGraphqlUrl: null,
115
+ easScanHost: null,
116
+ xmtpEnv: "dev",
117
+ isTestnet: true
118
+ }
119
+ };
120
+ var VALID_NETWORKS = Object.keys(CHAIN_REGISTRY);
121
+ var _network = "base";
122
+ function setNetwork(n) {
123
+ const config = CHAIN_REGISTRY[n];
124
+ if (!config) {
125
+ throw new Error(
126
+ `Unknown network: ${n}. Valid: ${VALID_NETWORKS.join(", ")}`
127
+ );
128
+ }
129
+ if (config.isTestnet && process.env.ENABLE_TESTNET !== "true") {
130
+ throw new Error(
131
+ `Testnet "${n}" is disabled. Set ENABLE_TESTNET=true to enable.`
132
+ );
133
+ }
134
+ _network = n;
135
+ }
136
+ function getNetwork() {
137
+ return _network;
138
+ }
139
+ function getChainConfig() {
140
+ return CHAIN_REGISTRY[_network];
141
+ }
142
+ function getChain() {
143
+ return CHAIN_REGISTRY[_network].chain;
144
+ }
145
+ function getRpcUrl() {
146
+ const fromConfig = getConfigRpcUrl(_network);
147
+ if (fromConfig) return fromConfig;
148
+ const cfg = CHAIN_REGISTRY[_network];
149
+ if (cfg.rpcEnvVar && process.env[cfg.rpcEnvVar]) {
150
+ return process.env[cfg.rpcEnvVar];
151
+ }
152
+ return cfg.rpcFallback;
153
+ }
154
+ function getExplorerUrl(txHash) {
155
+ return `https://${CHAIN_REGISTRY[_network].explorerHost}/tx/${txHash}`;
156
+ }
157
+
85
158
  // src/lib/client.ts
86
159
  import { createPublicClient, createWalletClient, http } from "viem";
87
160
  import { privateKeyToAccount } from "viem/accounts";
@@ -102,20 +175,28 @@ function getPrivateKey() {
102
175
  );
103
176
  }
104
177
  function getPublicClient() {
178
+ const chain = getChain();
179
+ if (_publicClient && _publicClient.chain?.id !== chain.id) {
180
+ _publicClient = null;
181
+ }
105
182
  if (!_publicClient) {
106
183
  _publicClient = createPublicClient({
107
- chain: getChain(),
184
+ chain,
108
185
  transport: http(getRpcUrl())
109
186
  });
110
187
  }
111
188
  return _publicClient;
112
189
  }
113
190
  function getWalletClient() {
191
+ const chain = getChain();
192
+ if (_walletClient && _walletClient.chain?.id !== chain.id) {
193
+ _walletClient = null;
194
+ }
114
195
  if (!_walletClient) {
115
196
  const account = privateKeyToAccount(getPrivateKey());
116
197
  _walletClient = createWalletClient({
117
198
  account,
118
- chain: getChain(),
199
+ chain,
119
200
  transport: http(getRpcUrl())
120
201
  });
121
202
  }
@@ -126,11 +207,6 @@ function getAccount() {
126
207
  }
127
208
 
128
209
  export {
129
- setNetwork,
130
- getNetwork,
131
- getChain,
132
- getRpcUrl,
133
- getExplorerUrl,
134
210
  loadConfig,
135
211
  saveConfig,
136
212
  cacheGroupId,
@@ -140,10 +216,18 @@ export {
140
216
  setAgentId,
141
217
  getAgentId,
142
218
  setPrivateKey,
219
+ setConfigRpcUrl,
143
220
  getChainContracts,
144
221
  setChainContract,
222
+ VALID_NETWORKS,
223
+ setNetwork,
224
+ getNetwork,
225
+ getChainConfig,
226
+ getChain,
227
+ getRpcUrl,
228
+ getExplorerUrl,
145
229
  getPublicClient,
146
230
  getWalletClient,
147
231
  getAccount
148
232
  };
149
- //# sourceMappingURL=chunk-QMWMT6EH.js.map
233
+ //# sourceMappingURL=chunk-5ADWTXNT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/config.ts","../src/lib/network.ts","../src/lib/client.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 path from \"node:path\";\n\nconst CONFIG_DIR = path.join(process.env.HOME || \"~\", \".sherwood\");\nconst CONFIG_PATH = path.join(CONFIG_DIR, \"config.json\");\n\n/** Per-chain user-specific addresses (stored by chainId). */\nexport interface ChainContracts {\n vault?: string; // user's default vault address\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 contracts?: Record<string, ChainContracts>; // chainId → user addresses\n rpc?: Record<string, string>; // network name → custom RPC URL\n}\n\nexport function loadConfig(): SherwoodConfig {\n if (fs.existsSync(CONFIG_PATH)) {\n return JSON.parse(fs.readFileSync(CONFIG_PATH, \"utf-8\"));\n }\n\n const config: SherwoodConfig = { groupCache: {} };\n fs.mkdirSync(CONFIG_DIR, { recursive: true });\n fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2));\n return config;\n}\n\nexport function saveConfig(config: SherwoodConfig): void {\n fs.mkdirSync(CONFIG_DIR, { recursive: true });\n fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2));\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 setVeniceApiKey(apiKey: string): void {\n const config = loadConfig();\n config.veniceApiKey = apiKey;\n saveConfig(config);\n}\n\nexport function getVeniceApiKey(): string | undefined {\n return loadConfig().veniceApiKey;\n}\n\nexport function setAgentId(agentId: number): void {\n const config = loadConfig();\n config.agentId = agentId;\n saveConfig(config);\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\nexport function getPrivateKey(): string | undefined {\n return loadConfig().privateKey;\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 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 * Network state singleton.\n *\n * Called once at CLI startup via the --chain flag's preAction hook.\n * Every other module reads from here — never hardcodes a chain.\n */\n\nimport { type Chain, defineChain } from \"viem\";\nimport { base, baseSepolia } from \"viem/chains\";\nimport { getConfigRpcUrl } from \"./config.js\";\n\n// ── Robinhood L2 Testnet (Arbitrum Orbit, chain ID 46630) ──\n\nexport const robinhoodTestnet = defineChain({\n id: 46630,\n name: \"Robinhood Chain Testnet\",\n nativeCurrency: { name: \"Ethereum\", symbol: \"ETH\", decimals: 18 },\n rpcUrls: {\n default: { http: [\"https://rpc.testnet.chain.robinhood.com\"] },\n },\n blockExplorers: {\n default: {\n name: \"Blockscout\",\n url: \"https://explorer.testnet.chain.robinhood.com\",\n },\n },\n testnet: true,\n});\n\n// ── Types ──\n\nexport type Network = \"base\" | \"base-sepolia\" | \"robinhood-testnet\";\n\nexport interface ChainConfig {\n chain: Chain;\n rpcFallback: string;\n /** Legacy env var for backwards compat (base / base-sepolia only) */\n rpcEnvVar?: string;\n explorerHost: string;\n /** EAS GraphQL endpoint — null if EAS is not available on this chain */\n easGraphqlUrl: string | null;\n /** EAS scan host — null if unavailable */\n easScanHost: string | null;\n xmtpEnv: \"production\" | \"dev\";\n isTestnet: boolean;\n}\n\n// ── Chain Registry ──\n\nexport const CHAIN_REGISTRY: Record<Network, ChainConfig> = {\n base: {\n chain: base,\n rpcFallback: \"https://mainnet.base.org\",\n rpcEnvVar: \"BASE_RPC_URL\",\n explorerHost: \"basescan.org\",\n easGraphqlUrl: \"https://base.easscan.org/graphql\",\n easScanHost: \"base.easscan.org\",\n xmtpEnv: \"production\",\n isTestnet: false,\n },\n \"base-sepolia\": {\n chain: baseSepolia,\n rpcFallback: \"https://sepolia.base.org\",\n rpcEnvVar: \"BASE_SEPOLIA_RPC_URL\",\n explorerHost: \"sepolia.basescan.org\",\n easGraphqlUrl: \"https://base-sepolia.easscan.org/graphql\",\n easScanHost: \"base-sepolia.easscan.org\",\n xmtpEnv: \"dev\",\n isTestnet: true,\n },\n \"robinhood-testnet\": {\n chain: robinhoodTestnet,\n rpcFallback: \"https://rpc.testnet.chain.robinhood.com\",\n explorerHost: \"explorer.testnet.chain.robinhood.com\",\n easGraphqlUrl: null,\n easScanHost: null,\n xmtpEnv: \"dev\",\n isTestnet: true,\n },\n};\n\nexport const VALID_NETWORKS = Object.keys(CHAIN_REGISTRY) as Network[];\n\n// ── Singleton state ──\n\nlet _network: Network = \"base\";\n\nexport function setNetwork(n: Network) {\n const config = CHAIN_REGISTRY[n];\n if (!config) {\n throw new Error(\n `Unknown network: ${n}. Valid: ${VALID_NETWORKS.join(\", \")}`,\n );\n }\n if (config.isTestnet && process.env.ENABLE_TESTNET !== \"true\") {\n throw new Error(\n `Testnet \"${n}\" is disabled. Set ENABLE_TESTNET=true to enable.`,\n );\n }\n _network = n;\n}\n\nexport function getNetwork(): Network {\n return _network;\n}\n\nexport function getChainConfig(): ChainConfig {\n return CHAIN_REGISTRY[_network];\n}\n\nexport function getChain(): Chain {\n return CHAIN_REGISTRY[_network].chain;\n}\n\nexport function getRpcUrl(): string {\n // 1. User config (~/.sherwood/config.json)\n const fromConfig = getConfigRpcUrl(_network);\n if (fromConfig) return fromConfig;\n\n // 2. Legacy env var (backwards compat for base / base-sepolia)\n const cfg = CHAIN_REGISTRY[_network];\n if (cfg.rpcEnvVar && process.env[cfg.rpcEnvVar]) {\n return process.env[cfg.rpcEnvVar]!;\n }\n\n // 3. Public fallback\n return cfg.rpcFallback;\n}\n\nexport function getExplorerUrl(txHash: string): string {\n return `https://${CHAIN_REGISTRY[_network].explorerHost}/tx/${txHash}`;\n}\n\nexport function isTestnet(): boolean {\n return CHAIN_REGISTRY[_network].isTestnet;\n}\n","/**\n * viem client factory — resolves chain and RPC from the network module.\n * Private key is read from ~/.sherwood/config.json (set via `sherwood config set --private-key`),\n * with PRIVATE_KEY env var as fallback.\n */\n\n// dotenv loaded at entrypoint\nimport { createPublicClient, createWalletClient, http } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { getChain, getRpcUrl } from \"./network.js\";\nimport { loadConfig } from \"./config.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet _publicClient: any = null;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet _walletClient: any = null;\n\n/**\n * Resolve the private key: config → env → error.\n */\nfunction getPrivateKey(): `0x${string}` {\n // 1. Config (~/.sherwood/config.json)\n const config = loadConfig();\n if (config.privateKey) {\n const k = config.privateKey;\n return (k.startsWith(\"0x\") ? k : `0x${k}`) as `0x${string}`;\n }\n\n // 2. Env var fallback\n const env = process.env.PRIVATE_KEY;\n if (env) {\n return (env.startsWith(\"0x\") ? env : `0x${env}`) as `0x${string}`;\n }\n\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\nexport function getPublicClient() {\n const chain = getChain();\n // Auto-invalidate if network changed since last creation\n if (_publicClient && _publicClient.chain?.id !== chain.id) {\n _publicClient = null;\n }\n if (!_publicClient) {\n _publicClient = createPublicClient({\n chain,\n transport: http(getRpcUrl()),\n });\n }\n return _publicClient as ReturnType<typeof createPublicClient>;\n}\n\nexport function getWalletClient() {\n const chain = getChain();\n // Auto-invalidate if network changed since last creation\n if (_walletClient && _walletClient.chain?.id !== chain.id) {\n _walletClient = null;\n }\n if (!_walletClient) {\n const account = privateKeyToAccount(getPrivateKey());\n _walletClient = createWalletClient({\n account,\n chain,\n transport: http(getRpcUrl()),\n });\n }\n return _walletClient as ReturnType<typeof createWalletClient>;\n}\n\n/**\n * Reset cached clients. Required for tests that call setNetwork()\n * after a client was already created.\n */\nexport function resetClients() {\n _publicClient = null;\n _walletClient = null;\n}\n\nexport function getAccount() {\n return privateKeyToAccount(getPrivateKey());\n}\n"],"mappings":"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","names":[]}
@@ -5,14 +5,14 @@ import {
5
5
  SHERWOOD,
6
6
  SYNDICATE_FACTORY_ABI,
7
7
  SYNDICATE_VAULT_ABI
8
- } from "./chunk-6MEYSN2W.js";
8
+ } from "./chunk-BXUNWV52.js";
9
9
  import {
10
10
  getAccount,
11
11
  getChain,
12
12
  getChainContracts,
13
13
  getPublicClient,
14
14
  getWalletClient
15
- } from "./chunk-QMWMT6EH.js";
15
+ } from "./chunk-5ADWTXNT.js";
16
16
 
17
17
  // src/lib/vault.ts
18
18
  import { formatUnits, encodeFunctionData, decodeFunctionResult } from "viem";
@@ -347,4 +347,4 @@ export {
347
347
  setTextRecord,
348
348
  getTextRecord
349
349
  };
350
- //# sourceMappingURL=chunk-B7XDUFI3.js.map
350
+ //# sourceMappingURL=chunk-ARZIQ7YZ.js.map