@sherwoodagent/cli 0.65.1 → 0.65.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 (38) hide show
  1. package/dist/{addresses-FXTJXDI7.js → addresses-J2LMGUCT.js} +2 -2
  2. package/dist/{chat-SL4O7Y3C.js → chat-JSSTSE4K.js} +6 -6
  3. package/dist/{chunk-OKGTNYYW.js → chunk-A6TOJEUD.js} +2 -2
  4. package/dist/{chunk-VAOCUQMY.js → chunk-GWMTAW6A.js} +10 -5
  5. package/dist/{chunk-VAOCUQMY.js.map → chunk-GWMTAW6A.js.map} +1 -1
  6. package/dist/{chunk-D4AQBGF4.js → chunk-IL43IMOC.js} +2 -2
  7. package/dist/{chunk-7INQASHO.js → chunk-O4G3SBCI.js} +2 -2
  8. package/dist/{chunk-2H6IGGKN.js → chunk-RHRLYVKM.js} +2 -2
  9. package/dist/chunk-RHRLYVKM.js.map +1 -0
  10. package/dist/{chunk-HE3NY4JJ.js → chunk-UCQEEF3Z.js} +2 -2
  11. package/dist/{chunk-AQNHSYJ7.js → chunk-VYF2TXPX.js} +2 -2
  12. package/dist/{eas-5VIHTS3N.js → eas-K4ZBACYN.js} +3 -3
  13. package/dist/{governor-UBUNIO3U.js → governor-2CDSMSG7.js} +3 -3
  14. package/dist/index.js +183 -152
  15. package/dist/index.js.map +1 -1
  16. package/dist/{ipfs-IGXLLJCF.js → ipfs-FAYWUCS2.js} +2 -2
  17. package/dist/{price-3BXZKK6B.js → price-LCTECRQP.js} +2 -2
  18. package/dist/{research-OGMEJBX3.js → research-FUQOQWKK.js} +4 -4
  19. package/dist/{session-FPQGAMSS.js → session-FJB2RV2X.js} +6 -6
  20. package/dist/{trade-5KIGBEOP.js → trade-U7H5IFH6.js} +6 -6
  21. package/dist/{xmtp-MR6OJ76L.js → xmtp-6NJ4PW6L.js} +3 -3
  22. package/package.json +1 -1
  23. package/dist/chunk-2H6IGGKN.js.map +0 -1
  24. /package/dist/{addresses-FXTJXDI7.js.map → addresses-J2LMGUCT.js.map} +0 -0
  25. /package/dist/{chat-SL4O7Y3C.js.map → chat-JSSTSE4K.js.map} +0 -0
  26. /package/dist/{chunk-OKGTNYYW.js.map → chunk-A6TOJEUD.js.map} +0 -0
  27. /package/dist/{chunk-D4AQBGF4.js.map → chunk-IL43IMOC.js.map} +0 -0
  28. /package/dist/{chunk-7INQASHO.js.map → chunk-O4G3SBCI.js.map} +0 -0
  29. /package/dist/{chunk-HE3NY4JJ.js.map → chunk-UCQEEF3Z.js.map} +0 -0
  30. /package/dist/{chunk-AQNHSYJ7.js.map → chunk-VYF2TXPX.js.map} +0 -0
  31. /package/dist/{eas-5VIHTS3N.js.map → eas-K4ZBACYN.js.map} +0 -0
  32. /package/dist/{governor-UBUNIO3U.js.map → governor-2CDSMSG7.js.map} +0 -0
  33. /package/dist/{ipfs-IGXLLJCF.js.map → ipfs-FAYWUCS2.js.map} +0 -0
  34. /package/dist/{price-3BXZKK6B.js.map → price-LCTECRQP.js.map} +0 -0
  35. /package/dist/{research-OGMEJBX3.js.map → research-FUQOQWKK.js.map} +0 -0
  36. /package/dist/{session-FPQGAMSS.js.map → session-FJB2RV2X.js.map} +0 -0
  37. /package/dist/{trade-5KIGBEOP.js.map → trade-U7H5IFH6.js.map} +0 -0
  38. /package/dist/{xmtp-MR6OJ76L.js.map → xmtp-6NJ4PW6L.js.map} +0 -0
@@ -3,11 +3,11 @@ import {
3
3
  pinJSON,
4
4
  resolveMetadataSummary,
5
5
  uploadMetadata
6
- } from "./chunk-2H6IGGKN.js";
6
+ } from "./chunk-RHRLYVKM.js";
7
7
  export {
8
8
  fetchMetadata,
9
9
  pinJSON,
10
10
  resolveMetadataSummary,
11
11
  uploadMetadata
12
12
  };
13
- //# sourceMappingURL=ipfs-IGXLLJCF.js.map
13
+ //# sourceMappingURL=ipfs-FAYWUCS2.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SYNTHRA,
3
3
  UNISWAP
4
- } from "./chunk-VAOCUQMY.js";
4
+ } from "./chunk-GWMTAW6A.js";
5
5
  import {
6
6
  getPublicClient
7
7
  } from "./chunk-YJSCIQUZ.js";
@@ -155,4 +155,4 @@ export {
155
155
  getTokenPriceInAsset,
156
156
  getTokenPricesInAsset
157
157
  };
158
- //# sourceMappingURL=price-3BXZKK6B.js.map
158
+ //# sourceMappingURL=price-LCTECRQP.js.map
@@ -16,7 +16,7 @@ import ora from "ora";
16
16
  import { confirm } from "@inquirer/prompts";
17
17
  import { isAddress } from "viem";
18
18
  async function loadXmtp() {
19
- return import("./xmtp-MR6OJ76L.js");
19
+ return import("./xmtp-6NJ4PW6L.js");
20
20
  }
21
21
  var COST_ESTIMATES = {
22
22
  messari: MESSARI_COST_ESTIMATE,
@@ -82,8 +82,8 @@ function formatValue(value) {
82
82
  return String(value);
83
83
  }
84
84
  async function postResearch(syndicateName, result, prompt) {
85
- const { pinJSON } = await import("./ipfs-IGXLLJCF.js");
86
- const { createResearchAttestation, getEasScanUrl } = await import("./eas-5VIHTS3N.js");
85
+ const { pinJSON } = await import("./ipfs-FAYWUCS2.js");
86
+ const { createResearchAttestation, getEasScanUrl } = await import("./eas-K4ZBACYN.js");
87
87
  const xmtp = await loadXmtp();
88
88
  const pinSpinner = ora("Pinning research result to IPFS...").start();
89
89
  let resultUri;
@@ -312,4 +312,4 @@ function registerResearchCommands(program) {
312
312
  export {
313
313
  registerResearchCommands
314
314
  };
315
- //# sourceMappingURL=research-OGMEJBX3.js.map
315
+ //# sourceMappingURL=research-FUQOQWKK.js.map
@@ -6,14 +6,14 @@ import {
6
6
  } from "./chunk-W2ZUPR3W.js";
7
7
  import {
8
8
  resolveSyndicate
9
- } from "./chunk-7INQASHO.js";
9
+ } from "./chunk-O4G3SBCI.js";
10
10
  import {
11
11
  PROPOSAL_STATES,
12
12
  getProposal
13
- } from "./chunk-OKGTNYYW.js";
13
+ } from "./chunk-A6TOJEUD.js";
14
14
  import {
15
15
  SHERWOOD
16
- } from "./chunk-VAOCUQMY.js";
16
+ } from "./chunk-GWMTAW6A.js";
17
17
  import {
18
18
  getPublicClient
19
19
  } from "./chunk-YJSCIQUZ.js";
@@ -26,7 +26,7 @@ import {
26
26
  } from "./chunk-YZHZSBES.js";
27
27
  import {
28
28
  resolveMetadataSummary
29
- } from "./chunk-2H6IGGKN.js";
29
+ } from "./chunk-RHRLYVKM.js";
30
30
 
31
31
  // src/commands/session.ts
32
32
  import chalk from "chalk";
@@ -187,7 +187,7 @@ async function enrichProposalEvents(events, metadataCache) {
187
187
 
188
188
  // src/commands/session.ts
189
189
  async function loadXmtp() {
190
- return import("./xmtp-MR6OJ76L.js");
190
+ return import("./xmtp-6NJ4PW6L.js");
191
191
  }
192
192
  async function resolveGovernor(vaultAddress) {
193
193
  const client = getPublicClient();
@@ -477,4 +477,4 @@ function registerSessionCommands(program) {
477
477
  export {
478
478
  registerSessionCommands
479
479
  };
480
- //# sourceMappingURL=session-FPQGAMSS.js.map
480
+ //# sourceMappingURL=session-FJB2RV2X.js.map
@@ -4,13 +4,13 @@ import {
4
4
  import {
5
5
  UniswapProvider,
6
6
  getQuote
7
- } from "./chunk-AQNHSYJ7.js";
7
+ } from "./chunk-VYF2TXPX.js";
8
8
  import {
9
9
  chatCompletion
10
10
  } from "./chunk-UBAX22KA.js";
11
11
  import {
12
12
  TOKENS
13
- } from "./chunk-VAOCUQMY.js";
13
+ } from "./chunk-GWMTAW6A.js";
14
14
  import {
15
15
  formatContractError,
16
16
  getAccount,
@@ -334,7 +334,7 @@ async function getCurrentPrice(tokenAddress, tokenDecimals, feeTier) {
334
334
  // src/commands/trade.ts
335
335
  var uniswap = new UniswapProvider();
336
336
  async function loadXmtp() {
337
- return import("./xmtp-MR6OJ76L.js");
337
+ return import("./xmtp-6NJ4PW6L.js");
338
338
  }
339
339
  var ETH_ADDRESS = "0x0000000000000000000000000000000000000000";
340
340
  var KNOWN_MEMECOINS = {
@@ -641,7 +641,7 @@ function registerTradeCommands(program) {
641
641
  }
642
642
  console.log(` Tx: ${chalk.dim(getExplorerUrl(txHash))}`);
643
643
  try {
644
- const { createTradeAttestation, getEasScanUrl } = await import("./eas-5VIHTS3N.js");
644
+ const { createTradeAttestation, getEasScanUrl } = await import("./eas-K4ZBACYN.js");
645
645
  const { getChainContracts } = await import("./config-REASKDIK.js");
646
646
  const { getChain: getActiveChain } = await import("./network-3ZU7UBDU.js");
647
647
  const vaultRecipient = getChainContracts(getActiveChain().id).vault;
@@ -769,7 +769,7 @@ function registerTradeCommands(program) {
769
769
  }
770
770
  console.log(` Tx: ${chalk.dim(getExplorerUrl(txHash))}`);
771
771
  try {
772
- const { createTradeAttestation, getEasScanUrl } = await import("./eas-5VIHTS3N.js");
772
+ const { createTradeAttestation, getEasScanUrl } = await import("./eas-K4ZBACYN.js");
773
773
  const { getChainContracts } = await import("./config-REASKDIK.js");
774
774
  const { getChain: getActiveChain } = await import("./network-3ZU7UBDU.js");
775
775
  const vaultRecipient = getChainContracts(getActiveChain().id).vault;
@@ -946,4 +946,4 @@ function sleep(ms) {
946
946
  export {
947
947
  registerTradeCommands
948
948
  };
949
- //# sourceMappingURL=trade-5KIGBEOP.js.map
949
+ //# sourceMappingURL=trade-U7H5IFH6.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getTextRecord
3
- } from "./chunk-7INQASHO.js";
4
- import "./chunk-VAOCUQMY.js";
3
+ } from "./chunk-O4G3SBCI.js";
4
+ import "./chunk-GWMTAW6A.js";
5
5
  import {
6
6
  getAccount
7
7
  } from "./chunk-YJSCIQUZ.js";
@@ -318,4 +318,4 @@ export {
318
318
  sendReaction,
319
319
  streamMessages
320
320
  };
321
- //# sourceMappingURL=xmtp-MR6OJ76L.js.map
321
+ //# sourceMappingURL=xmtp-6NJ4PW6L.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sherwoodagent/cli",
3
- "version": "0.65.1",
3
+ "version": "0.65.2",
4
4
  "description": "CLI for agent-managed investment syndicates — onchain DeFi syndicates with XMTP chat",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/ipfs.ts"],"sourcesContent":["/**\n * IPFS metadata upload/fetch via Sherwood API.\n *\n * Uploads go through the server-side API at sherwood.sh/api/ipfs/upload\n * which holds the Pinata JWT. CLI and app only need the gateway URL for reads.\n */\n\nexport interface SyndicateMetadata {\n schema: string;\n name: string;\n description: string;\n logo?: string;\n chain: string;\n xmtpGroupId?: string;\n strategies: {\n id: string;\n name: string;\n description: string;\n protocols: string[];\n riskLevel: string;\n }[];\n terms: {\n minDeposit?: string;\n minDepositFormatted?: string;\n feeModel?: string;\n lockPeriod?: number;\n };\n links: {\n moltbook?: string;\n dashboard?: string;\n github?: string;\n };\n}\n\nconst DEFAULT_PINATA_GATEWAY = \"https://sherwood.mypinata.cloud\";\nconst DEFAULT_UPLOAD_API = \"https://sherwood.sh/api/ipfs/upload\";\n\nfunction getUploadApiUrl(): string {\n return process.env.SHERWOOD_API_URL\n ? `${process.env.SHERWOOD_API_URL}/api/ipfs/upload`\n : DEFAULT_UPLOAD_API;\n}\n\nfunction getPinataGateway(): string {\n return process.env.PINATA_GATEWAY || DEFAULT_PINATA_GATEWAY;\n}\n\n/**\n * Upload JSON to IPFS via the Sherwood API (server-side Pinata).\n * Returns the IPFS URI (ipfs://Qm...).\n */\nasync function uploadToIPFS(content: Record<string, unknown>, name: string): Promise<string> {\n const url = getUploadApiUrl();\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ content, name }),\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`IPFS upload failed (${response.status}): ${text}`);\n }\n\n const result = (await response.json()) as { ipfsHash: string };\n return `ipfs://${result.ipfsHash}`;\n}\n\n/**\n * Pin arbitrary JSON to IPFS.\n * Used for research results and other generic JSON payloads.\n * Returns the IPFS URI (ipfs://Qm...).\n */\nexport async function pinJSON(content: Record<string, unknown>, name: string): Promise<string> {\n return uploadToIPFS(content, name);\n}\n\n/**\n * Upload syndicate metadata to IPFS.\n * Returns the IPFS URI (ipfs://Qm...).\n */\nexport async function uploadMetadata(metadata: SyndicateMetadata): Promise<string> {\n const name = `sherwood-syndicate-${metadata.name.toLowerCase().replace(/\\s+/g, \"-\")}`;\n return uploadToIPFS(metadata as unknown as Record<string, unknown>, name);\n}\n\n/**\n * Fetch and parse metadata from an IPFS URI.\n * Supports ipfs:// protocol URIs and raw CIDs.\n */\nexport async function fetchMetadata(ipfsURI: string): Promise<SyndicateMetadata> {\n const gateway = getPinataGateway();\n let cid: string;\n\n if (ipfsURI.startsWith(\"ipfs://\")) {\n cid = ipfsURI.slice(7);\n } else if (ipfsURI.startsWith(\"Qm\") || ipfsURI.startsWith(\"bafy\")) {\n cid = ipfsURI;\n } else {\n throw new Error(`Invalid IPFS URI: ${ipfsURI}`);\n }\n\n const url = `${gateway}/ipfs/${cid}`;\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch metadata from ${url} (${response.status})`);\n }\n\n return (await response.json()) as SyndicateMetadata;\n}\n\n/**\n * Resolve a metadata URI (ipfs:// or data: base64) to name + description.\n * Returns null on any error — callers should treat enrichment as best-effort.\n */\nexport async function resolveMetadataSummary(\n uri: string,\n): Promise<{ name: string; description: string } | null> {\n try {\n if (uri.startsWith(\"data:application/json;base64,\")) {\n const b64 = uri.slice(\"data:application/json;base64,\".length);\n const json = JSON.parse(Buffer.from(b64, \"base64\").toString(\"utf-8\"));\n return { name: json.name || \"\", description: json.description || \"\" };\n }\n const meta = await fetchMetadata(uri);\n return { name: meta.name, description: meta.description };\n } catch {\n return null;\n }\n}\n"],"mappings":";AAkCA,IAAM,yBAAyB;AAC/B,IAAM,qBAAqB;AAE3B,SAAS,kBAA0B;AACjC,SAAO,QAAQ,IAAI,mBACf,GAAG,QAAQ,IAAI,gBAAgB,qBAC/B;AACN;AAEA,SAAS,mBAA2B;AAClC,SAAO,QAAQ,IAAI,kBAAkB;AACvC;AAMA,eAAe,aAAa,SAAkC,MAA+B;AAC3F,QAAM,MAAM,gBAAgB;AAE5B,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU,EAAE,SAAS,KAAK,CAAC;AAAA,EACxC,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,OAAO,MAAM,SAAS,KAAK;AACjC,UAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,MAAM,IAAI,EAAE;AAAA,EACpE;AAEA,QAAM,SAAU,MAAM,SAAS,KAAK;AACpC,SAAO,UAAU,OAAO,QAAQ;AAClC;AAOA,eAAsB,QAAQ,SAAkC,MAA+B;AAC7F,SAAO,aAAa,SAAS,IAAI;AACnC;AAMA,eAAsB,eAAe,UAA8C;AACjF,QAAM,OAAO,sBAAsB,SAAS,KAAK,YAAY,EAAE,QAAQ,QAAQ,GAAG,CAAC;AACnF,SAAO,aAAa,UAAgD,IAAI;AAC1E;AAMA,eAAsB,cAAc,SAA6C;AAC/E,QAAM,UAAU,iBAAiB;AACjC,MAAI;AAEJ,MAAI,QAAQ,WAAW,SAAS,GAAG;AACjC,UAAM,QAAQ,MAAM,CAAC;AAAA,EACvB,WAAW,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,MAAM,GAAG;AACjE,UAAM;AAAA,EACR,OAAO;AACL,UAAM,IAAI,MAAM,qBAAqB,OAAO,EAAE;AAAA,EAChD;AAEA,QAAM,MAAM,GAAG,OAAO,SAAS,GAAG;AAClC,QAAM,WAAW,MAAM,MAAM,GAAG;AAEhC,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,iCAAiC,GAAG,KAAK,SAAS,MAAM,GAAG;AAAA,EAC7E;AAEA,SAAQ,MAAM,SAAS,KAAK;AAC9B;AAMA,eAAsB,uBACpB,KACuD;AACvD,MAAI;AACF,QAAI,IAAI,WAAW,+BAA+B,GAAG;AACnD,YAAM,MAAM,IAAI,MAAM,gCAAgC,MAAM;AAC5D,YAAM,OAAO,KAAK,MAAM,OAAO,KAAK,KAAK,QAAQ,EAAE,SAAS,OAAO,CAAC;AACpE,aAAO,EAAE,MAAM,KAAK,QAAQ,IAAI,aAAa,KAAK,eAAe,GAAG;AAAA,IACtE;AACA,UAAM,OAAO,MAAM,cAAc,GAAG;AACpC,WAAO,EAAE,MAAM,KAAK,MAAM,aAAa,KAAK,YAAY;AAAA,EAC1D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;","names":[]}