@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.
- package/dist/{addresses-FXTJXDI7.js → addresses-J2LMGUCT.js} +2 -2
- package/dist/{chat-SL4O7Y3C.js → chat-JSSTSE4K.js} +6 -6
- package/dist/{chunk-OKGTNYYW.js → chunk-A6TOJEUD.js} +2 -2
- package/dist/{chunk-VAOCUQMY.js → chunk-GWMTAW6A.js} +10 -5
- package/dist/{chunk-VAOCUQMY.js.map → chunk-GWMTAW6A.js.map} +1 -1
- package/dist/{chunk-D4AQBGF4.js → chunk-IL43IMOC.js} +2 -2
- package/dist/{chunk-7INQASHO.js → chunk-O4G3SBCI.js} +2 -2
- package/dist/{chunk-2H6IGGKN.js → chunk-RHRLYVKM.js} +2 -2
- package/dist/chunk-RHRLYVKM.js.map +1 -0
- package/dist/{chunk-HE3NY4JJ.js → chunk-UCQEEF3Z.js} +2 -2
- package/dist/{chunk-AQNHSYJ7.js → chunk-VYF2TXPX.js} +2 -2
- package/dist/{eas-5VIHTS3N.js → eas-K4ZBACYN.js} +3 -3
- package/dist/{governor-UBUNIO3U.js → governor-2CDSMSG7.js} +3 -3
- package/dist/index.js +183 -152
- package/dist/index.js.map +1 -1
- package/dist/{ipfs-IGXLLJCF.js → ipfs-FAYWUCS2.js} +2 -2
- package/dist/{price-3BXZKK6B.js → price-LCTECRQP.js} +2 -2
- package/dist/{research-OGMEJBX3.js → research-FUQOQWKK.js} +4 -4
- package/dist/{session-FPQGAMSS.js → session-FJB2RV2X.js} +6 -6
- package/dist/{trade-5KIGBEOP.js → trade-U7H5IFH6.js} +6 -6
- package/dist/{xmtp-MR6OJ76L.js → xmtp-6NJ4PW6L.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-2H6IGGKN.js.map +0 -1
- /package/dist/{addresses-FXTJXDI7.js.map → addresses-J2LMGUCT.js.map} +0 -0
- /package/dist/{chat-SL4O7Y3C.js.map → chat-JSSTSE4K.js.map} +0 -0
- /package/dist/{chunk-OKGTNYYW.js.map → chunk-A6TOJEUD.js.map} +0 -0
- /package/dist/{chunk-D4AQBGF4.js.map → chunk-IL43IMOC.js.map} +0 -0
- /package/dist/{chunk-7INQASHO.js.map → chunk-O4G3SBCI.js.map} +0 -0
- /package/dist/{chunk-HE3NY4JJ.js.map → chunk-UCQEEF3Z.js.map} +0 -0
- /package/dist/{chunk-AQNHSYJ7.js.map → chunk-VYF2TXPX.js.map} +0 -0
- /package/dist/{eas-5VIHTS3N.js.map → eas-K4ZBACYN.js.map} +0 -0
- /package/dist/{governor-UBUNIO3U.js.map → governor-2CDSMSG7.js.map} +0 -0
- /package/dist/{ipfs-IGXLLJCF.js.map → ipfs-FAYWUCS2.js.map} +0 -0
- /package/dist/{price-3BXZKK6B.js.map → price-LCTECRQP.js.map} +0 -0
- /package/dist/{research-OGMEJBX3.js.map → research-FUQOQWKK.js.map} +0 -0
- /package/dist/{session-FPQGAMSS.js.map → session-FJB2RV2X.js.map} +0 -0
- /package/dist/{trade-5KIGBEOP.js.map → trade-U7H5IFH6.js.map} +0 -0
- /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-
|
|
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-
|
|
13
|
+
//# sourceMappingURL=ipfs-FAYWUCS2.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SYNTHRA,
|
|
3
3
|
UNISWAP
|
|
4
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
86
|
-
const { createResearchAttestation, getEasScanUrl } = await import("./eas-
|
|
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-
|
|
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-
|
|
9
|
+
} from "./chunk-O4G3SBCI.js";
|
|
10
10
|
import {
|
|
11
11
|
PROPOSAL_STATES,
|
|
12
12
|
getProposal
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-A6TOJEUD.js";
|
|
14
14
|
import {
|
|
15
15
|
SHERWOOD
|
|
16
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
480
|
+
//# sourceMappingURL=session-FJB2RV2X.js.map
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
UniswapProvider,
|
|
6
6
|
getQuote
|
|
7
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
949
|
+
//# sourceMappingURL=trade-U7H5IFH6.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getTextRecord
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
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-
|
|
321
|
+
//# sourceMappingURL=xmtp-6NJ4PW6L.js.map
|
package/package.json
CHANGED
|
@@ -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":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|