@sherwoodagent/cli 0.72.3 → 0.73.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 (51) hide show
  1. package/dist/{agent-6IRZUPFT.js → agent-AML5SIMT.js} +4 -4
  2. package/dist/{chat-G5M3OK6M.js → chat-6RO4RS3L.js} +7 -7
  3. package/dist/{chunk-D4SPHYXA.js → chunk-5ECJMM3K.js} +2 -2
  4. package/dist/{chunk-3NMJ4LUL.js → chunk-AGZQWXAR.js} +2 -2
  5. package/dist/{chunk-UUHWD7Y3.js → chunk-FNJHLDRL.js} +2 -2
  6. package/dist/{chunk-WECQ6NVS.js → chunk-LZH4PJI4.js} +14 -5
  7. package/dist/chunk-LZH4PJI4.js.map +1 -0
  8. package/dist/{chunk-NWY2U753.js → chunk-RQZ53CV4.js} +2 -2
  9. package/dist/{chunk-S6XA7PK4.js → chunk-TSNHEU2C.js} +2 -2
  10. package/dist/{chunk-52U76TRE.js → chunk-WO4YDEDH.js} +2 -2
  11. package/dist/{chunk-ZYXFKVYF.js → chunk-XDGCHURW.js} +17 -1
  12. package/dist/chunk-XDGCHURW.js.map +1 -0
  13. package/dist/{chunk-FOS47623.js → chunk-XJJEZFOA.js} +3 -3
  14. package/dist/{chunk-FOAX5PGR.js → chunk-XMYD5SES.js} +2 -2
  15. package/dist/{client-QN6SA76M.js → client-HMUVPZEG.js} +2 -2
  16. package/dist/{eas-HM2AUOEY.js → eas-GDQYAUXR.js} +3 -3
  17. package/dist/{governor-RRBTDGDX.js → governor-PX6AMIAU.js} +3 -3
  18. package/dist/index.js +56 -44
  19. package/dist/index.js.map +1 -1
  20. package/dist/{ipfs-VGWTUORE.js → ipfs-RWSTXTZM.js} +4 -2
  21. package/dist/{price-AJ4JMHCT.js → price-SGQZC4DT.js} +2 -2
  22. package/dist/{research-6VEEPEPP.js → research-DDEAW7NP.js} +6 -6
  23. package/dist/{research-7Z6SFPPX.js → research-S5PLKE5V.js} +3 -3
  24. package/dist/{session-PURMITWE.js → session-2QRTQ6ID.js} +7 -7
  25. package/dist/{trade-YTGLGCRQ.js → trade-GNOISJNX.js} +9 -9
  26. package/dist/{vault-NIPA5JV4.js → vault-32RDL5HM.js} +3 -3
  27. package/dist/{xmtp-M32JSE4I.js → xmtp-AL5W36H6.js} +4 -4
  28. package/package.json +1 -1
  29. package/dist/chunk-WECQ6NVS.js.map +0 -1
  30. package/dist/chunk-ZYXFKVYF.js.map +0 -1
  31. /package/dist/{agent-6IRZUPFT.js.map → agent-AML5SIMT.js.map} +0 -0
  32. /package/dist/{chat-G5M3OK6M.js.map → chat-6RO4RS3L.js.map} +0 -0
  33. /package/dist/{chunk-D4SPHYXA.js.map → chunk-5ECJMM3K.js.map} +0 -0
  34. /package/dist/{chunk-3NMJ4LUL.js.map → chunk-AGZQWXAR.js.map} +0 -0
  35. /package/dist/{chunk-UUHWD7Y3.js.map → chunk-FNJHLDRL.js.map} +0 -0
  36. /package/dist/{chunk-NWY2U753.js.map → chunk-RQZ53CV4.js.map} +0 -0
  37. /package/dist/{chunk-S6XA7PK4.js.map → chunk-TSNHEU2C.js.map} +0 -0
  38. /package/dist/{chunk-52U76TRE.js.map → chunk-WO4YDEDH.js.map} +0 -0
  39. /package/dist/{chunk-FOS47623.js.map → chunk-XJJEZFOA.js.map} +0 -0
  40. /package/dist/{chunk-FOAX5PGR.js.map → chunk-XMYD5SES.js.map} +0 -0
  41. /package/dist/{client-QN6SA76M.js.map → client-HMUVPZEG.js.map} +0 -0
  42. /package/dist/{eas-HM2AUOEY.js.map → eas-GDQYAUXR.js.map} +0 -0
  43. /package/dist/{governor-RRBTDGDX.js.map → governor-PX6AMIAU.js.map} +0 -0
  44. /package/dist/{ipfs-VGWTUORE.js.map → ipfs-RWSTXTZM.js.map} +0 -0
  45. /package/dist/{price-AJ4JMHCT.js.map → price-SGQZC4DT.js.map} +0 -0
  46. /package/dist/{research-6VEEPEPP.js.map → research-DDEAW7NP.js.map} +0 -0
  47. /package/dist/{research-7Z6SFPPX.js.map → research-S5PLKE5V.js.map} +0 -0
  48. /package/dist/{session-PURMITWE.js.map → session-2QRTQ6ID.js.map} +0 -0
  49. /package/dist/{trade-YTGLGCRQ.js.map → trade-GNOISJNX.js.map} +0 -0
  50. /package/dist/{vault-NIPA5JV4.js.map → vault-32RDL5HM.js.map} +0 -0
  51. /package/dist/{xmtp-M32JSE4I.js.map → xmtp-AL5W36H6.js.map} +0 -0
package/dist/index.js CHANGED
@@ -15,13 +15,13 @@ import {
15
15
  encodeSwapPath,
16
16
  getMultiHopQuote,
17
17
  getQuote
18
- } from "./chunk-D4SPHYXA.js";
18
+ } from "./chunk-5ECJMM3K.js";
19
19
  import {
20
20
  chatCompletion,
21
21
  checkApiKeyValid,
22
22
  listModels,
23
23
  provisionApiKey
24
- } from "./chunk-52U76TRE.js";
24
+ } from "./chunk-WO4YDEDH.js";
25
25
  import {
26
26
  createApproval,
27
27
  createJoinRequest,
@@ -32,20 +32,20 @@ import {
32
32
  queryJoinRequests,
33
33
  revokeJoinRequest,
34
34
  stripReferrerPrefix
35
- } from "./chunk-FOAX5PGR.js";
35
+ } from "./chunk-XMYD5SES.js";
36
36
  import {
37
37
  createFund,
38
38
  getActiveFunds,
39
39
  getFund,
40
40
  subdomainExists,
41
41
  updateMetadata
42
- } from "./chunk-3NMJ4LUL.js";
42
+ } from "./chunk-AGZQWXAR.js";
43
43
  import {
44
44
  resolveFund,
45
45
  resolveVaultFund,
46
46
  searchFundAcrossChains,
47
47
  setTextRecord
48
- } from "./chunk-FOS47623.js";
48
+ } from "./chunk-XJJEZFOA.js";
49
49
  import {
50
50
  approveDepositor,
51
51
  deposit,
@@ -67,7 +67,7 @@ import {
67
67
  removeDepositor,
68
68
  setAgentFeeBps,
69
69
  setVaultAddress
70
- } from "./chunk-UUHWD7Y3.js";
70
+ } from "./chunk-FNJHLDRL.js";
71
71
  import {
72
72
  PROPOSAL_STATE,
73
73
  PROPOSAL_STATES,
@@ -101,7 +101,7 @@ import {
101
101
  setVotingPeriod,
102
102
  settleProposal,
103
103
  vote
104
- } from "./chunk-S6XA7PK4.js";
104
+ } from "./chunk-TSNHEU2C.js";
105
105
  import {
106
106
  AERODROME,
107
107
  AGENT_REGISTRY,
@@ -124,7 +124,7 @@ import {
124
124
  sendTxWithRetry,
125
125
  waitForReceipt,
126
126
  writeContractWithRetry
127
- } from "./chunk-WECQ6NVS.js";
127
+ } from "./chunk-LZH4PJI4.js";
128
128
  import {
129
129
  DEFAULT_NETWORK,
130
130
  VALID_NETWORKS,
@@ -171,8 +171,9 @@ import {
171
171
  } from "./chunk-BQMOE4FJ.js";
172
172
  import {
173
173
  fetchMetadata,
174
+ mergeFundMetadata,
174
175
  uploadMetadata
175
- } from "./chunk-ZYXFKVYF.js";
176
+ } from "./chunk-XDGCHURW.js";
176
177
 
177
178
  // src/index.ts
178
179
  import { config as loadDotenv } from "dotenv";
@@ -1180,13 +1181,17 @@ var ROBINHOOD_L2 = {
1180
1181
  slug: "robinhood-l2",
1181
1182
  // V2 redeploy (chain 46630): fresh core contracts + a full guardian layer
1182
1183
  // (registry + sWOOD) and a deployed StrategyFactory for the keyless
1183
- // clone+init path (#387).
1184
+ // clone+init path (#387). Post-#421 per-vault-governor redeploy — kept in
1185
+ // sync with the canonical source of truth contracts/chains/46630.json (and
1186
+ // the app's app/src/lib/contracts.ts ROBINHOOD_TESTNET_ADDRESSES). A stale
1187
+ // factory here made /api/v1/funds?chain=46630 read the old deployment and
1188
+ // return {count: 0} while the UI listed funds (issue #459).
1184
1189
  sherwood: {
1185
- factory: "0xa5351b91E0A6348a78dA4E47bcd7DFC49fa353F3",
1186
- guardianRegistry: "0xA1b4C376c9C9e7257F654Fe1C4c10f51760407D4",
1187
- vaultImpl: "0x382cCfe80c430De671b15A45A7EDED96b5bFB383",
1188
- batchExecutorLib: "0x039825a3750c27C5f85Bb8486860B867A8D201E5",
1189
- strategyFactory: "0x85a598ADA4fb9654BaF77234864fa100C4B5a204"
1190
+ factory: "0xB9E71Fb33075328d6e94eCFFf8a8629D6d057cce",
1191
+ guardianRegistry: "0x57f0fa384d0d7e2F234535d1235440312866872B",
1192
+ vaultImpl: "0x189160156d470B9ce8A55206DE19Ea60D2638ec6",
1193
+ batchExecutorLib: "0xd83dc3A79Bb41a02Ca7aC812c0f52212C1BdBC1B",
1194
+ strategyFactory: "0xE1D082ef1CE17f9C6a46e97928337267BFF0C309"
1190
1195
  },
1191
1196
  // No ERC-8004 registry and no EAS path on Robinhood L2.
1192
1197
  identityRegistry: ZERO_ADDRESS,
@@ -3512,7 +3517,7 @@ function registerStrategyTemplateCommands(strategy2) {
3512
3517
  process.exit(1);
3513
3518
  }
3514
3519
  if (!opts.agent) opts.agent = proposer;
3515
- const { parseDuration: parseDuration3, getGovernorOf: getGovernorOf2 } = await import("./governor-RRBTDGDX.js");
3520
+ const { parseDuration: parseDuration3, getGovernorOf: getGovernorOf2 } = await import("./governor-PX6AMIAU.js");
3516
3521
  const strategyDuration2 = parseDuration3(opts.duration);
3517
3522
  const chainId = getChain().id;
3518
3523
  try {
@@ -3738,9 +3743,9 @@ function registerStrategyTemplateCommands(strategy2) {
3738
3743
  console.error(chalk.red("Missing --name or --duration. Use --write-calls to skip proposal submission."));
3739
3744
  process.exit(1);
3740
3745
  }
3741
- const { propose: propose2 } = await import("./governor-RRBTDGDX.js");
3742
- const { pinJSON } = await import("./ipfs-VGWTUORE.js");
3743
- const { parseDuration: parseDuration2 } = await import("./governor-RRBTDGDX.js");
3746
+ const { propose: propose2 } = await import("./governor-PX6AMIAU.js");
3747
+ const { pinJSON } = await import("./ipfs-RWSTXTZM.js");
3748
+ const { parseDuration: parseDuration2 } = await import("./governor-PX6AMIAU.js");
3744
3749
  const strategyDuration = parseDuration2(opts.duration);
3745
3750
  const metaSpinner = ora("Pinning metadata to IPFS...").start();
3746
3751
  let metadataURI;
@@ -3763,7 +3768,7 @@ function registerStrategyTemplateCommands(strategy2) {
3763
3768
  process.exit(1);
3764
3769
  }
3765
3770
  try {
3766
- const { getAgentFeeBps: getAgentFeeBps2 } = await import("./vault-NIPA5JV4.js");
3771
+ const { getAgentFeeBps: getAgentFeeBps2 } = await import("./vault-32RDL5HM.js");
3767
3772
  const feeBps = await getAgentFeeBps2(vault);
3768
3773
  console.log(
3769
3774
  chalk.yellow(
@@ -3851,7 +3856,7 @@ function registerStrategyTemplateCommands(strategy2) {
3851
3856
  let prices = [];
3852
3857
  let priceSource = null;
3853
3858
  try {
3854
- const { getTokenPricesInAsset } = await import("./price-AJ4JMHCT.js");
3859
+ const { getTokenPricesInAsset } = await import("./price-SGQZC4DT.js");
3855
3860
  prices = await getTokenPricesInAsset({
3856
3861
  tokens: allocations.map((a, i) => ({
3857
3862
  token: a.token,
@@ -4281,7 +4286,7 @@ function registerVeniceCommands(program2) {
4281
4286
  console.log(chalk2.dim(` Key: ${apiKey.slice(0, 8)}...${apiKey.slice(-4)}`));
4282
4287
  console.log(chalk2.dim(" Saved to ~/.sherwood/config.json"));
4283
4288
  try {
4284
- const { createVeniceProvisionAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-HM2AUOEY.js");
4289
+ const { createVeniceProvisionAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-GDQYAUXR.js");
4285
4290
  const { uid } = await createVeniceProvisionAttestation(account.address);
4286
4291
  if (uid !== "0x0000000000000000000000000000000000000000000000000000000000000000") {
4287
4292
  console.log(chalk2.dim(` Attested: ${getEasScanUrl2(uid)}`));
@@ -4637,7 +4642,7 @@ ${opts.prompt}`;
4637
4642
  console.log(chalk2.dim(`Model: ${result.model} | Tokens: ${result.usage.promptTokens} in, ${result.usage.completionTokens} out, ${result.usage.totalTokens} total`));
4638
4643
  }
4639
4644
  try {
4640
- const { createVeniceInferenceAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-HM2AUOEY.js");
4645
+ const { createVeniceInferenceAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-GDQYAUXR.js");
4641
4646
  const { keccak256: keccak2563, toHex, isAddress: isAddr } = await import("viem");
4642
4647
  const { getChainContracts: getChainContracts2 } = await import("./config-FAQO37S7.js");
4643
4648
  const { getChain: getActiveChain } = await import("./network-L6JKNYOJ.js");
@@ -5895,8 +5900,8 @@ function printSimulationResult(result, callType) {
5895
5900
  }
5896
5901
  async function sendSimulationAlert(subdomain, proposalId, vault, execResult, settleResult) {
5897
5902
  try {
5898
- const xmtp = await import("./xmtp-M32JSE4I.js");
5899
- const { getAccount: getAccount2 } = await import("./client-QN6SA76M.js");
5903
+ const xmtp = await import("./xmtp-AL5W36H6.js");
5904
+ const { getAccount: getAccount2 } = await import("./client-HMUVPZEG.js");
5900
5905
  const group = await xmtp.getGroup("", subdomain);
5901
5906
  const allRisks = [...execResult.risks, ...settleResult?.risks ?? []];
5902
5907
  const criticals = allRisks.filter((r) => r.level === "critical");
@@ -10331,9 +10336,9 @@ try {
10331
10336
  } catch {
10332
10337
  }
10333
10338
  var require2 = createRequire(import.meta.url);
10334
- var CLI_VERSION = "0.72.3";
10339
+ var CLI_VERSION = "0.73.2";
10335
10340
  async function loadXmtp() {
10336
- return import("./xmtp-M32JSE4I.js");
10341
+ return import("./xmtp-AL5W36H6.js");
10337
10342
  }
10338
10343
  async function loadCron() {
10339
10344
  return import("./cron-QMLRWDJG.js");
@@ -10798,18 +10803,25 @@ fund.command("update-metadata").description("Update fund metadata (creator only)
10798
10803
  spinner.fail(`Fund #${opts.id} not found.`);
10799
10804
  process.exit(1);
10800
10805
  }
10801
- const name = opts.name || info.subdomain;
10802
- const description = opts.description || `${name} \u2014 a Sherwood fund on ${info.subdomain}.sherwoodagent.eth`;
10806
+ spinner.text = W6("Fetching current metadata...");
10807
+ let current = null;
10808
+ try {
10809
+ current = await fetchMetadata(info.metadataURI);
10810
+ } catch (fetchErr) {
10811
+ console.warn(
10812
+ chalk16.yellow(
10813
+ " \u26A0 Could not fetch current metadata \u2014 rebuilding from flags (unknown fields like xmtpGroupId may be dropped)"
10814
+ )
10815
+ );
10816
+ console.warn(DIM6(` ${fetchErr instanceof Error ? fetchErr.message : String(fetchErr)}`));
10817
+ }
10803
10818
  spinner.text = W6("Uploading metadata to IPFS...");
10804
- const metadata = {
10805
- schema: "sherwood/fund/v1",
10806
- name,
10807
- description,
10808
- chain: getChain().name,
10809
- strategies: [],
10810
- terms: {},
10811
- links: {}
10812
- };
10819
+ const metadata = mergeFundMetadata(current, {
10820
+ name: opts.name,
10821
+ description: opts.description,
10822
+ subdomain: info.subdomain,
10823
+ defaultChain: getChain().name
10824
+ });
10813
10825
  metadataURI = await uploadMetadata(metadata);
10814
10826
  spinner.text = W6("Updating on-chain metadata...");
10815
10827
  }
@@ -11644,7 +11656,7 @@ vaultCmd.command("redeem").description("Redeem vault shares for the underlying a
11644
11656
  var strategy = program.command("strategy").description("Strategy templates \u2014 list, clone, propose");
11645
11657
  registerStrategyTemplateCommands(strategy);
11646
11658
  program.command("providers").description("List available DeFi providers").action(async () => {
11647
- const { MessariProvider, NansenProvider } = await import("./research-7Z6SFPPX.js");
11659
+ const { MessariProvider, NansenProvider } = await import("./research-S5PLKE5V.js");
11648
11660
  const providers = [new MoonwellProvider(), new UniswapProvider(), new MessariProvider(), new NansenProvider()];
11649
11661
  for (const p of providers) {
11650
11662
  const info = p.info();
@@ -11655,7 +11667,7 @@ ${info.name} (${info.type})`);
11655
11667
  }
11656
11668
  });
11657
11669
  try {
11658
- const { registerChatCommands } = await import("./chat-G5M3OK6M.js");
11670
+ const { registerChatCommands } = await import("./chat-6RO4RS3L.js");
11659
11671
  registerChatCommands(program);
11660
11672
  } catch {
11661
11673
  program.command("chat <name> [action] [actionArgs...]").description("Fund chat (XMTP) \u2014 requires @xmtp/cli").action(() => {
@@ -11665,7 +11677,7 @@ try {
11665
11677
  process.exit(1);
11666
11678
  });
11667
11679
  }
11668
- var { registerSessionCommands } = await import("./session-PURMITWE.js");
11680
+ var { registerSessionCommands } = await import("./session-2QRTQ6ID.js");
11669
11681
  registerSessionCommands(program);
11670
11682
  registerVeniceCommands(program);
11671
11683
  registerAllowanceCommands(program);
@@ -11674,11 +11686,11 @@ registerProposalCommands(program);
11674
11686
  registerQueueCommands(program);
11675
11687
  registerGovernorCommands(program);
11676
11688
  registerGuardianCommands(program);
11677
- var { registerResearchCommands } = await import("./research-6VEEPEPP.js");
11689
+ var { registerResearchCommands } = await import("./research-DDEAW7NP.js");
11678
11690
  registerResearchCommands(program);
11679
- var { registerAgentCommands } = await import("./agent-6IRZUPFT.js");
11691
+ var { registerAgentCommands } = await import("./agent-AML5SIMT.js");
11680
11692
  registerAgentCommands(program);
11681
- var { registerTradeCommands } = await import("./trade-YTGLGCRQ.js");
11693
+ var { registerTradeCommands } = await import("./trade-GNOISJNX.js");
11682
11694
  registerTradeCommands(program);
11683
11695
  registerGridCommand(program);
11684
11696
  var configCmd = program.command("config");