@temporalabs/treasury 0.1.2 → 0.1.4

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 (83) hide show
  1. package/README.md +45 -13
  2. package/THIRD_PARTY_NOTICES.connect-page.md +494 -24
  3. package/THIRD_PARTY_NOTICES.md +579 -6
  4. package/dist/cli.js +28 -5
  5. package/dist/cli.js.map +1 -1
  6. package/dist/client.d.ts +50 -209
  7. package/dist/client.js +66 -11
  8. package/dist/client.js.map +1 -1
  9. package/dist/config/earn.d.ts +16 -1
  10. package/dist/config/earn.js +16 -1
  11. package/dist/config/earn.js.map +1 -1
  12. package/dist/connect/ack.d.ts +88 -1
  13. package/dist/connect/ack.js +177 -6
  14. package/dist/connect/ack.js.map +1 -1
  15. package/dist/connect/commands.d.ts +30 -0
  16. package/dist/connect/commands.js +846 -88
  17. package/dist/connect/commands.js.map +1 -1
  18. package/dist/connect/config.d.ts +7 -5
  19. package/dist/connect/config.js +8 -6
  20. package/dist/connect/config.js.map +1 -1
  21. package/dist/connect/gate-solana.d.ts +8 -0
  22. package/dist/connect/gate-solana.js +147 -0
  23. package/dist/connect/gate-solana.js.map +1 -0
  24. package/dist/connect/http.d.ts +17 -2
  25. package/dist/connect/http.js +45 -13
  26. package/dist/connect/http.js.map +1 -1
  27. package/dist/connect/page.d.ts +1 -1
  28. package/dist/connect/page.js +2 -2
  29. package/dist/connect/page.js.map +1 -1
  30. package/dist/connect/session.d.ts +40 -1
  31. package/dist/connect/session.js +243 -2
  32. package/dist/connect/session.js.map +1 -1
  33. package/dist/connect/solana.d.ts +112 -0
  34. package/dist/connect/solana.js +370 -0
  35. package/dist/connect/solana.js.map +1 -0
  36. package/dist/connect-page.js +835 -671
  37. package/dist/disclosures.d.ts +7 -4
  38. package/dist/disclosures.js +7 -4
  39. package/dist/disclosures.js.map +1 -1
  40. package/dist/earn/commands.js +127 -54
  41. package/dist/earn/commands.js.map +1 -1
  42. package/dist/earn/solana.d.ts +278 -0
  43. package/dist/earn/solana.js +316 -0
  44. package/dist/earn/solana.js.map +1 -0
  45. package/dist/guide.d.ts +15 -0
  46. package/dist/guide.js +50 -0
  47. package/dist/guide.js.map +1 -0
  48. package/dist/links.js +2 -0
  49. package/dist/links.js.map +1 -1
  50. package/dist/position.d.ts +3 -2
  51. package/dist/position.js +6 -3
  52. package/dist/position.js.map +1 -1
  53. package/dist/quote.js +2 -2
  54. package/dist/quote.js.map +1 -1
  55. package/dist/redact.js +7 -1
  56. package/dist/redact.js.map +1 -1
  57. package/dist/registry-schema.d.ts +79 -2
  58. package/dist/registry-schema.js +77 -1
  59. package/dist/registry-schema.js.map +1 -1
  60. package/dist/registry.d.ts +21 -1
  61. package/dist/registry.js +48 -10
  62. package/dist/registry.js.map +1 -1
  63. package/dist/solana/constants.d.ts +49 -0
  64. package/dist/solana/constants.js +50 -0
  65. package/dist/solana/constants.js.map +1 -0
  66. package/dist/solana/kvault.d.ts +99 -0
  67. package/dist/solana/kvault.js +192 -0
  68. package/dist/solana/kvault.js.map +1 -0
  69. package/dist/solana/layout.d.ts +143 -0
  70. package/dist/solana/layout.js +209 -0
  71. package/dist/solana/layout.js.map +1 -0
  72. package/dist/solana/rpc.d.ts +24 -0
  73. package/dist/solana/rpc.js +66 -0
  74. package/dist/solana/rpc.js.map +1 -0
  75. package/dist/solana/vault.d.ts +153 -0
  76. package/dist/solana/vault.js +322 -0
  77. package/dist/solana/vault.js.map +1 -0
  78. package/dist/treasury.mjs +37410 -27965
  79. package/dist/version.js +5 -10
  80. package/dist/version.js.map +1 -1
  81. package/llms.txt +637 -0
  82. package/package.json +14 -8
  83. package/registry/vaults.json +113 -0
@@ -3,13 +3,14 @@
3
3
  * An agent skill IS a distribution surface, so `earn_terms` returns these verbatim and the
4
4
  * skill instructs the agent to show them and get an explicit acknowledgement before building a
5
5
  * first deposit. They are written for the vaults this registry actually offers — Tempora Labs test
6
- * vaults on ERC-4626 chassis, on Base, Arbitrum One and Robinhood Chain — and say what is true of
7
- * those, not of a fund that has not launched. Change them when the offering changes, and nowhere else.
6
+ * vaults on ERC-4626 chassis on Base, Arbitrum One, Robinhood Chain, Ethereum and Monad, and a Kamino
7
+ * vault on Solana — and say what is true of those, not of a fund that has not launched. Change them when the offering changes,
8
+ * and nowhere else.
8
9
  */
9
10
  export declare const DISCLOSURES: {
10
- readonly source: "Agent Treasury — pre-deposit disclosures, 2026-09-15 (wording revised 2026-10-04: Tempora Labs named in full)";
11
+ readonly source: "Agent Treasury — pre-deposit disclosures, 2026-09-15 (wording revised 2026-10-04: Tempora Labs named in full; 2026-10-12: withdrawals subject to liquidity, and the Solana co-signer)";
11
12
  readonly presentBefore: "the depositor's first deposit, on every distribution surface";
12
- readonly items: readonly ["EVERY VAULT THIS CLIENT OFFERS TODAY IS A TEST VAULT — unproven, and named as such on-chain. They exist to exercise the product, not to hold savings. Deposit only an amount you are fully prepared to lose entirely, and do not move significant funds into one.", "This is a smart-contract vault, not a bank deposit. No deposit insurance of any kind applies.", "The share token's value is a function of the vault's underlying holdings and is not guaranteed. It can go down.", "The vault holds positions in third-party protocols, each of which carries smart-contract, custody, and mechanism risk that Tempora Labs does not control.", "Any yield figure is a measurement over a past window, not a promise. Historical performance is not indicative of future results.", "A withdrawal is served from the vault's liquid balance and then by unwinding its positions. In stressed conditions part of a position may not be withdrawable immediately; earn_balance reports what is exitable now, simulated at the current block.", "Deposits into a whitelist-gated vault are accepted only from accounts the fund has admitted. Withdrawals are public: an account that holds shares can always leave.", "The vault's current holdings, weights and fees are on-chain and publicly readable at the vault's address.", "Each default vault, and the demo vault, is a destination curated by Tempora Labs. Tempora Labs can set fees on it as curator (a management fee and a performance fee, both readable on-chain; check them before depositing). This client offers it because it is a Tempora Labs vault, not because it is the best-yielding vault available."];
13
+ readonly items: readonly ["EVERY VAULT THIS CLIENT OFFERS TODAY IS A TEST VAULT — unproven, and named as such on-chain. They exist to exercise the product, not to hold savings. Deposit only an amount you are fully prepared to lose entirely, and do not move significant funds into one.", "This is a smart-contract vault, not a bank deposit. No deposit insurance of any kind applies.", "The share token's value is a function of the vault's underlying holdings and is not guaranteed. It can go down.", "The vault holds positions in third-party protocols, each of which carries smart-contract, custody, and mechanism risk that Tempora Labs does not control.", "Any yield figure is a measurement over a past window, not a promise. Historical performance is not indicative of future results.", "A withdrawal is served from the vault's liquid balance and then by unwinding its positions. In stressed conditions part of a position may not be withdrawable immediately; earn_balance reports what is exitable now, simulated at the current block.", "Deposits into a whitelist-gated vault are accepted only from accounts the fund has admitted. Withdrawals are not gated: an account that holds shares can leave, subject to the vault's liquidity. On Solana, Kamino's program can require a co-signer on every withdrawal, which would stop exits until it co-signs; none is required today.", "The vault's current holdings, weights and fees are on-chain and publicly readable at the vault's address.", "Each default vault, and the demo vault, is a destination curated by Tempora Labs. Tempora Labs can set fees on it as curator (a management fee and a performance fee, both readable on-chain; check them before depositing). This client offers it because it is a Tempora Labs vault, not because it is the best-yielding vault available."];
13
14
  readonly clientNotes: readonly ["This client never signs, sends, or moves funds. Every transaction is signed by the operator's own wallet (through `connect`) or the operator's own signer, and the operator is responsible for what it signs.", "Geography: the operator is responsible for the depositor's eligibility in its own jurisdiction. This client has no geographic signal and makes no representation about eligibility."];
14
15
  /**
15
16
  * The same points in plain words, for the acknowledgement an operator reads before every signing
@@ -21,6 +22,8 @@ export declare const DISCLOSURES: {
21
22
  */
22
23
  readonly plain: {
23
24
  readonly deposit: readonly ["This is not a bank deposit, and there is no deposit insurance.", "The value of your shares is not guaranteed. It can go down.", "Your money goes into third-party protocols that Tempora Labs does not control. They can fail.", "Any yield you see is past performance, not a promise.", "You can withdraw, but in stressed markets part of your money may not come out right away.", "Tempora Labs runs this vault and can charge fees on it. It is offered because it is a Tempora Labs vault, not because it pays the most. Its holdings and fees are public on-chain."];
25
+ /** The last `deposit` sentence, for an acknowledgement that names more than one vault (`connect plan`). */
26
+ readonly feesSeveral: "Tempora Labs runs these vaults and can charge fees on them. They are offered because they are Tempora Labs vaults, not because they pay the most. Their holdings and fees are public on-chain.";
24
27
  /** Added before a deposit into a vault whose registry row is not open to every account. */
25
28
  readonly gatedDeposit: "This vault only accepts deposits from accounts Tempora Labs has admitted. If yours is not one, the deposit will fail.";
26
29
  readonly always: readonly ["This software never signs or moves your money. You approve every transaction in your own wallet, and you are responsible for what you approve.", "You are responsible for being allowed to use this where you live."];
@@ -3,11 +3,12 @@
3
3
  * An agent skill IS a distribution surface, so `earn_terms` returns these verbatim and the
4
4
  * skill instructs the agent to show them and get an explicit acknowledgement before building a
5
5
  * first deposit. They are written for the vaults this registry actually offers — Tempora Labs test
6
- * vaults on ERC-4626 chassis, on Base, Arbitrum One and Robinhood Chain — and say what is true of
7
- * those, not of a fund that has not launched. Change them when the offering changes, and nowhere else.
6
+ * vaults on ERC-4626 chassis on Base, Arbitrum One, Robinhood Chain, Ethereum and Monad, and a Kamino
7
+ * vault on Solana — and say what is true of those, not of a fund that has not launched. Change them when the offering changes,
8
+ * and nowhere else.
8
9
  */
9
10
  export const DISCLOSURES = {
10
- source: "Agent Treasury — pre-deposit disclosures, 2026-09-15 (wording revised 2026-10-04: Tempora Labs named in full)",
11
+ source: "Agent Treasury — pre-deposit disclosures, 2026-09-15 (wording revised 2026-10-04: Tempora Labs named in full; 2026-10-12: withdrawals subject to liquidity, and the Solana co-signer)",
11
12
  presentBefore: "the depositor's first deposit, on every distribution surface",
12
13
  items: [
13
14
  "EVERY VAULT THIS CLIENT OFFERS TODAY IS A TEST VAULT — unproven, and named as such on-chain. They exist to exercise the product, not to hold savings. Deposit only an amount you are fully prepared to lose entirely, and do not move significant funds into one.",
@@ -16,7 +17,7 @@ export const DISCLOSURES = {
16
17
  "The vault holds positions in third-party protocols, each of which carries smart-contract, custody, and mechanism risk that Tempora Labs does not control.",
17
18
  "Any yield figure is a measurement over a past window, not a promise. Historical performance is not indicative of future results.",
18
19
  "A withdrawal is served from the vault's liquid balance and then by unwinding its positions. In stressed conditions part of a position may not be withdrawable immediately; earn_balance reports what is exitable now, simulated at the current block.",
19
- "Deposits into a whitelist-gated vault are accepted only from accounts the fund has admitted. Withdrawals are public: an account that holds shares can always leave.",
20
+ "Deposits into a whitelist-gated vault are accepted only from accounts the fund has admitted. Withdrawals are not gated: an account that holds shares can leave, subject to the vault's liquidity. On Solana, Kamino's program can require a co-signer on every withdrawal, which would stop exits until it co-signs; none is required today.",
20
21
  "The vault's current holdings, weights and fees are on-chain and publicly readable at the vault's address.",
21
22
  "Each default vault, and the demo vault, is a destination curated by Tempora Labs. Tempora Labs can set fees on it as curator (a management fee and a performance fee, both readable on-chain; check them before depositing). This client offers it because it is a Tempora Labs vault, not because it is the best-yielding vault available.",
22
23
  ],
@@ -41,6 +42,8 @@ export const DISCLOSURES = {
41
42
  "You can withdraw, but in stressed markets part of your money may not come out right away.",
42
43
  "Tempora Labs runs this vault and can charge fees on it. It is offered because it is a Tempora Labs vault, not because it pays the most. Its holdings and fees are public on-chain.",
43
44
  ],
45
+ /** The last `deposit` sentence, for an acknowledgement that names more than one vault (`connect plan`). */
46
+ feesSeveral: "Tempora Labs runs these vaults and can charge fees on them. They are offered because they are Tempora Labs vaults, not because they pay the most. Their holdings and fees are public on-chain.",
44
47
  /** Added before a deposit into a vault whose registry row is not open to every account. */
45
48
  gatedDeposit: "This vault only accepts deposits from accounts Tempora Labs has admitted. If yours is not one, the deposit will fail.",
46
49
  always: [
@@ -1 +1 @@
1
- {"version":3,"file":"disclosures.js","sourceRoot":"","sources":["../src/disclosures.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,+GAA+G;IACvH,aAAa,EAAE,8DAA8D;IAC7E,KAAK,EAAE;QACL,mQAAmQ;QACnQ,+FAA+F;QAC/F,iHAAiH;QACjH,2JAA2J;QAC3J,kIAAkI;QAClI,uPAAuP;QACvP,qKAAqK;QACrK,2GAA2G;QAC3G,6UAA6U;KAC9U;IACD,WAAW,EAAE;QACX,+MAA+M;QAC/M,qLAAqL;KACtL;IACD;;;;;;;OAOG;IACH,KAAK,EAAE;QACL,OAAO,EAAE;YACP,gEAAgE;YAChE,6DAA6D;YAC7D,+FAA+F;YAC/F,uDAAuD;YACvD,2FAA2F;YAC3F,oLAAoL;SACrL;QACD,2FAA2F;QAC3F,YAAY,EAAE,uHAAuH;QACrI,MAAM,EAAE;YACN,gJAAgJ;YAChJ,mEAAmE;SACpE;QACD,SAAS,EAAE,gDAAgD;KAC5D;CACO,CAAC"}
1
+ {"version":3,"file":"disclosures.js","sourceRoot":"","sources":["../src/disclosures.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,uLAAuL;IAC/L,aAAa,EAAE,8DAA8D;IAC7E,KAAK,EAAE;QACL,mQAAmQ;QACnQ,+FAA+F;QAC/F,iHAAiH;QACjH,2JAA2J;QAC3J,kIAAkI;QAClI,uPAAuP;QACvP,8UAA8U;QAC9U,2GAA2G;QAC3G,6UAA6U;KAC9U;IACD,WAAW,EAAE;QACX,+MAA+M;QAC/M,qLAAqL;KACtL;IACD;;;;;;;OAOG;IACH,KAAK,EAAE;QACL,OAAO,EAAE;YACP,gEAAgE;YAChE,6DAA6D;YAC7D,+FAA+F;YAC/F,uDAAuD;YACvD,2FAA2F;YAC3F,oLAAoL;SACrL;QACD,2GAA2G;QAC3G,WAAW,EACT,gMAAgM;QAClM,2FAA2F;QAC3F,YAAY,EAAE,uHAAuH;QACrI,MAAM,EAAE;YACN,gJAAgJ;YAChJ,mEAAmE;SACpE;QACD,SAAS,EAAE,gDAAgD;KAC5D;CACO,CAAC"}
@@ -30,8 +30,11 @@
30
30
  import { z } from "zod";
31
31
  import { redactEndpoints, registerSecretSource } from "../redact.js";
32
32
  import { isAddress, getAddress } from "viem";
33
+ import { solanaPublicRpcHint } from "../client.js";
34
+ import { isAddress as isSolanaAddress } from "@solana/kit";
35
+ import { onSolana, solanaBalance, solanaHealth, solanaPrepareDeposit, solanaPrepareWithdraw, solanaPreflight, solanaQuoteDeposit, solanaQuoteWithdraw, solanaVaultRow } from "./solana.js";
33
36
  import { CHAIN_INFO, isSupportedChainId, makePublicClient, rpcUrlFromEnv, logsRpcUrlFromEnv, rpcSourceForEnv, logsRpcSourceForEnv, resolvedRpcSecrets, publicRpcHint, logsFallbackUrlFromEnv, endpointChainId, firstEndpointOnWrongChain, supportedChainIds } from "../client.js";
34
- import { defaultChainId, defaultVault, depositableVaults, listVaults, loadRegistry, offeredChains, resolveVault } from "../registry.js";
37
+ import { defaultChainId, defaultVault, depositableSolanaVaults, depositableVaults, listSolanaVaults, listVaults, loadRegistry, offeredChainKeys, offeredChains, resolveAnyVault, resolveVault } from "../registry.js";
35
38
  import { linksFor } from "../links.js";
36
39
  import { PACKAGE_VERSION } from "../version.js";
37
40
  import { preflightDeposit } from "../preflight.js";
@@ -39,12 +42,20 @@ import { getPosition } from "../position.js";
39
42
  import { quoteDeposit, quoteWithdraw } from "../quote.js";
40
43
  import { buildDeposit, buildWithdraw } from "../build.js";
41
44
  import { DISCLOSURES } from "../disclosures.js";
42
- const addressArg = z
43
- .string()
44
- .refine((s) => isAddress(s), "must be an EVM address")
45
- .transform((s) => getAddress(s));
45
+ /**
46
+ * An address, in either family's form: `0x…` for a vault on an EVM chain, base58 for a vault on Solana. Which
47
+ * one a command needs depends on the vault, which is resolved after the arguments parse, so each handler checks
48
+ * the family it got (`evm` below, `solanaAccount` in ./solana.ts) and refuses the other.
49
+ */
50
+ const addressArg = z.string().refine((s) => isAddress(s) || isSolanaAddress(s), "must be an EVM address (0x…), or a Solana address for a vault on Solana");
51
+ /** The EVM form of an address argument, checksummed; a Solana address here is refused, naming the slot. */
52
+ function evm(v, what) {
53
+ if (!isAddress(v))
54
+ throw new Error(`${what} must be an EVM address (0x…) for a vault on an EVM chain; got ${v}`);
55
+ return getAddress(v);
56
+ }
46
57
  const amountArg = z.string().regex(/^\d+(\.\d+)?$/, 'plain decimal amount of the vault\'s asset (USDC; USDG on Robinhood Chain), e.g. "25" or "12.5"');
47
- const vaultArg = z.string().optional().describe("the vault's ERC-20 ticker, e.g. tlCashPlusUSDC2 (`earn vaults` lists them); omit for the default vault of `chain`, or of the default chain when `chain` is omitted too");
58
+ const vaultArg = z.string().optional().describe("the vault's ticker, e.g. tlCashPlusUSDC2 (`earn vaults` lists them); omit for the default vault of `chain`, or of the default chain when `chain` is omitted too");
48
59
  const accountArg = addressArg.describe("the account whose shares these are — the depositor, the owner, the holder");
49
60
  /**
50
61
  * `chain`, as every vault-taking tool accepts it: one of the chains that have a vault in the
@@ -64,7 +75,7 @@ const accountArg = addressArg.describe("the account whose shares these are — t
64
75
  const chainArg = () => {
65
76
  let offered;
66
77
  try {
67
- offered = offeredChains().map((c) => c.key);
78
+ offered = offeredChainKeys();
68
79
  }
69
80
  catch {
70
81
  offered = supportedChainIds.map((id) => CHAIN_INFO[id].key);
@@ -125,14 +136,20 @@ const onChain = (vault) => ({ chain: CHAIN_INFO[vault.chainId].key, chainId: vau
125
136
  function hintChain(args) {
126
137
  try {
127
138
  const a = (args ?? {});
128
- return resolveVault(typeof a.vault === "string" ? a.vault : undefined, typeof a.chain === "string" ? a.chain : undefined).chainId;
139
+ const t = resolveAnyVault(typeof a.vault === "string" ? a.vault : undefined, typeof a.chain === "string" ? a.chain : undefined);
140
+ return t.family === "solana" ? "solana" : t.vault.chainId;
129
141
  }
130
142
  catch {
131
143
  return defaultChainId();
132
144
  }
133
145
  }
134
- /** Shapes that mean "the transport failed", as opposed to a verdict about the vault. */
135
- const RPC_FAILURE = /RPC Request failed|HTTP request failed|reads failed|over rate limit|rate.?limit|"unreachable"|fetch failed|ETIMEDOUT|ECONNREFUSED/i;
146
+ /** The setup sentence for a transport failure on the chain's unconfigured public endpoint. */
147
+ const hintFor = (chain) => (chain === "solana" ? solanaPublicRpcHint() : publicRpcHint(chain));
148
+ /**
149
+ * Shapes that mean "the transport failed", as opposed to a verdict about the vault. `HTTP error (429)` and
150
+ * `HTTP error (5xx)` are how the Solana client reports a rate limit or a failing endpoint.
151
+ */
152
+ const RPC_FAILURE = /RPC Request failed|HTTP request failed|HTTP error \((?:429|5\d\d)\)|reads failed|over rate limit|rate.?limit|"unreachable"|fetch failed|ETIMEDOUT|ECONNREFUSED/i;
136
153
  /**
137
154
  * Serialise a tool result, and when the payload shows a TRANSPORT failure while no RPC is
138
155
  * configured, attach the one sentence that turns "this is broken" into "set this variable".
@@ -141,7 +158,7 @@ const RPC_FAILURE = /RPC Request failed|HTTP request failed|reads failed|over ra
141
158
  const text = (v, chainId = defaultChainId()) => {
142
159
  let body = typeof v === "string" ? v : JSON.stringify(v, null, 2);
143
160
  if (RPC_FAILURE.test(body)) {
144
- const hint = publicRpcHint(chainId);
161
+ const hint = hintFor(chainId);
145
162
  if (hint) {
146
163
  body =
147
164
  typeof v === "string"
@@ -213,7 +230,7 @@ const guarded = (fn) => async (...a) => {
213
230
  const msg = e instanceof Error ? e.message : String(e);
214
231
  const redacted = redactEndpoints(msg);
215
232
  // A thrown transport error on the public endpoint gets the same sentence a returned one does.
216
- const hint = RPC_FAILURE.test(redacted) ? publicRpcHint(hintChain(a[0])) : undefined;
233
+ const hint = RPC_FAILURE.test(redacted) ? hintFor(hintChain(a[0])) : undefined;
217
234
  throw new Error(hint ? `${redacted}\n\n${hint}` : redacted);
218
235
  }
219
236
  };
@@ -230,7 +247,7 @@ export function buildCommands() {
230
247
  const chain = chainArg();
231
248
  register("earn_vaults", {
232
249
  title: "List vaults",
233
- description: "Every vault in the registry, on every chain. `symbol` is the vault's own on-chain ERC-20 ticker — the value every other tool takes as `vault` — and `name` its `name()`; `chain` is the chain it is on, the value every other tool takes as `chain`; `links` are openable without any RPC endpoint, so an operator can verify the contract independently. SHOW `warning` TO THE DEPOSITOR — every vault offered today is a test vault. Each row also carries its backend, chassis, decimals and MEASURED deposit-open status. `chains` lists the chains a deposit can go to, the default chain first, each with its own default vault: if the operator has not said which chain, show them these and ASK before preparing a deposit. `default` is used when a tool is called with neither `vault` nor `chain`, and is on `defaultChain`; `depositable` is the subset any account can put money into today, across all chains: ERC-4626 chassis + measured open. `defaultAccess` says whether a default takes deposits from any account (`open`) or only whitelisted ones (`whitelist`); for `whitelist`, run `earn status` for the account before preparing a deposit.",
250
+ description: "Every vault in the registry, on every chain. `symbol` is the vault's ticker — its own on-chain ERC-20 ticker on the EVM chains, one the registry assigns on Solana — the value every other tool takes as `vault`, and `name` its name; `chain` is the chain it is on, the value every other tool takes as `chain`; `links` are openable without any RPC endpoint, so an operator can verify the contract independently. SHOW `warning` TO THE DEPOSITOR — every vault offered today is a test vault. Each row also carries its backend, chassis, decimals and MEASURED deposit-open status. `chains` lists the chains a deposit can go to, the default chain first, each with its own default vault: if the operator has not said which chain, show them these and ASK before preparing a deposit. `default` is used when a tool is called with neither `vault` nor `chain`, and is on `defaultChain`; `depositable` is the subset any account can put money into today, across all chains: an ERC-4626 chassis (or the Kamino vault on Solana) + measured open. `defaultAccess` says whether a default takes deposits from any account (`open`) or only whitelisted ones (`whitelist`); for `whitelist`, run `earn status` for the account before preparing a deposit.",
234
251
  inputSchema: {},
235
252
  }, guarded(async () => {
236
253
  const reg = loadRegistry();
@@ -239,34 +256,52 @@ export function buildCommands() {
239
256
  defaultChain: CHAIN_INFO[defaultChainId()].key,
240
257
  default: defaultVault().symbol,
241
258
  defaultAccess: defaultVault().depositOpen.open ? "open" : "whitelist",
242
- depositable: depositableVaults().map((v) => v.symbol),
243
- chains: offeredChains().map((c) => {
244
- const d = defaultVault(c.chainId);
245
- return {
246
- chain: c.key,
247
- chainId: c.chainId,
248
- name: c.name,
249
- default: d.symbol,
250
- defaultAccess: d.depositOpen.open ? "open" : "whitelist",
251
- depositable: depositableVaults().filter((v) => v.chainId === c.chainId).map((v) => v.symbol),
252
- };
253
- }),
254
- vaults: listVaults().map((v) => ({
255
- symbol: v.symbol,
256
- name: v.name,
257
- warning: v.warning,
258
- links: linksFor(v),
259
- backend: v.backend,
260
- isDefault: v.isDefault,
261
- chain: CHAIN_INFO[v.chainId].key,
262
- chainId: v.chainId,
263
- address: v.address,
264
- chassis: v.chassis,
265
- asset: v.asset,
266
- shareDecimals: v.shareDecimals,
267
- depositOpen: v.depositOpen,
268
- notes: v.notes,
269
- })),
259
+ depositable: [...depositableVaults().map((v) => v.symbol), ...depositableSolanaVaults().map((v) => v.symbol)],
260
+ chains: [
261
+ ...offeredChains().map((c) => {
262
+ const d = defaultVault(c.chainId);
263
+ return {
264
+ chain: c.key,
265
+ chainId: c.chainId,
266
+ name: c.name,
267
+ default: d.symbol,
268
+ defaultAccess: d.depositOpen.open ? "open" : "whitelist",
269
+ depositable: depositableVaults().filter((v) => v.chainId === c.chainId).map((v) => v.symbol),
270
+ };
271
+ }),
272
+ // Solana, when the registry has a vault there: no chain id; the cluster is in each Solana row.
273
+ ...(listSolanaVaults().length === 0
274
+ ? []
275
+ : [
276
+ {
277
+ chain: onSolana.chain,
278
+ chainId: null,
279
+ name: "Solana",
280
+ default: listSolanaVaults().find((v) => v.isDefault).symbol,
281
+ defaultAccess: "open",
282
+ depositable: depositableSolanaVaults().map((v) => v.symbol),
283
+ },
284
+ ]),
285
+ ],
286
+ vaults: [
287
+ ...listVaults().map((v) => ({
288
+ symbol: v.symbol,
289
+ name: v.name,
290
+ warning: v.warning,
291
+ links: linksFor(v),
292
+ backend: v.backend,
293
+ isDefault: v.isDefault,
294
+ chain: CHAIN_INFO[v.chainId].key,
295
+ chainId: v.chainId,
296
+ address: v.address,
297
+ chassis: v.chassis,
298
+ asset: v.asset,
299
+ shareDecimals: v.shareDecimals,
300
+ depositOpen: v.depositOpen,
301
+ notes: v.notes,
302
+ })),
303
+ ...listSolanaVaults().map(solanaVaultRow),
304
+ ],
270
305
  });
271
306
  }));
272
307
  register("earn_terms", {
@@ -276,15 +311,25 @@ export function buildCommands() {
276
311
  }, guarded(async () => text(DISCLOSURES)));
277
312
  register("earn_status", {
278
313
  title: "Health check, or a deposit pre-flight verdict",
279
- description: "With NO `account`: is the CLI working and the chain's RPC reachable — chain, chain id, latest block, registry version, and which env var supplied the RPC (never the URL). Each chain has its own RPC, so pass `chain` to check the one you are about to use; `rpc` is `ok`, `unreachable`, or `wrong_chain` when the configured endpoint answers for a different chain. `chainVerified: false` beside `ok` means the endpoint answered but did not say which chain it is. When a separate logs RPC is set, `logsRpc` reports it the same way. With `account`: simulates deposit() from that address and reports OPEN_READY, NEEDS_APPROVAL, WHITELIST_GATED, REVERTED_OTHER, REFUSED_BY_CLIENT or UNRESOLVED, never trusting maxDeposit(). The `mode` field says which answer you got.",
314
+ description: "With NO `account`: is the CLI working and the chain's RPC reachable — chain, chain id, latest block, registry version, and which env var supplied the RPC (never the URL). Each chain has its own RPC, so pass `chain` to check the one you are about to use; `rpc` is `ok`, `unreachable`, or `wrong_chain` when the configured endpoint answers for a different chain. `chainVerified: false` beside `ok` means the endpoint answered but did not say which chain it is. When a separate logs RPC is set, `logsRpc` reports it the same way. With `account`: simulates deposit() from that address and reports OPEN_READY, NEEDS_APPROVAL, WHITELIST_GATED, REVERTED_OTHER, REFUSED_BY_CLIENT or UNRESOLVED, never trusting maxDeposit(); on Solana it simulates the deposit transaction and reports OPEN_READY, NEEDS_FUNDS (the account lacks the USDC, or SOL for fees and rent), REVERTED_OTHER or UNRESOLVED. The `mode` field says which answer you got.",
280
315
  inputSchema: { vault: vaultArg, chain, account: accountArg.optional(), amount_usdc: amountArg.optional() },
281
316
  }, guarded(async ({ vault: symbol, chain, account, amount_usdc }) => {
317
+ const target = resolveAnyVault(symbol, chain);
318
+ if (target.family === "solana") {
319
+ const v = target.vault;
320
+ if (account !== undefined) {
321
+ return text({ ...(await solanaPreflight(v, account, amount_usdc)), mode: "preflight", account, ...onSolana, ...commitsMoney(v) }, "solana");
322
+ }
323
+ return text(await solanaHealth(v, symbol !== undefined ? { requested: "preflight", missing: ["account"] } : {}), "solana");
324
+ }
282
325
  if (account !== undefined) {
283
326
  const { vault, client, endpoints } = clientFor(symbol, chain);
284
- const args = amount_usdc === undefined ? { vault, depositor: account, client } : { vault, depositor: account, client, assetsHuman: amount_usdc };
327
+ const depositor = evm(account, "account");
328
+ const args = amount_usdc === undefined ? { vault, depositor, client } : { vault, depositor, client, assetsHuman: amount_usdc };
285
329
  const verdict = await onItsChain(vault, endpoints, () => preflightDeposit(args));
286
330
  // spread FIRST so the discriminant cannot be overwritten by a field of the same name
287
- return text({ ...verdict, mode: "preflight", account, ...onChain(vault), ...commitsMoney(vault) }, vault.chainId);
331
+ // `account` is echoed checksummed, as every other result names an address.
332
+ return text({ ...verdict, mode: "preflight", account: depositor, ...onChain(vault), ...commitsMoney(vault) }, vault.chainId);
288
333
  }
289
334
  // Health. A partial call (a vault but no account) is answered here too, and says so in
290
335
  // STRUCTURE rather than in prose — a note is exactly what a consumer skips, and the risk is
@@ -370,7 +415,15 @@ export function buildCommands() {
370
415
  amount_usdc: amountArg,
371
416
  direction: z.enum(["deposit", "withdraw"]).describe("which side to quote — required, there is no default"),
372
417
  },
373
- }, guarded(async ({ vault: symbol, chain, account, amount_usdc, direction }) => {
418
+ }, guarded(async ({ vault: symbol, chain, account: rawAccount, amount_usdc, direction }) => {
419
+ const target = resolveAnyVault(symbol, chain);
420
+ if (target.family === "solana") {
421
+ const v = target.vault;
422
+ if (direction === "deposit")
423
+ return text({ direction: "deposit", ...onSolana, ...commitsMoney(v), ...(await solanaQuoteDeposit(v, rawAccount, amount_usdc)) }, "solana");
424
+ return text({ direction: "withdraw", ...onSolana, ...(await solanaQuoteWithdraw(v, rawAccount, amount_usdc)) }, "solana");
425
+ }
426
+ const account = evm(rawAccount, "account");
374
427
  const { vault, client, endpoints } = clientFor(symbol, chain);
375
428
  // 🔴 The tag is emitted from INSIDE each branch, beside the fields that branch produces —
376
429
  // never `{ direction, ...quote }` from the input argument. Measured in review: with the tag
@@ -392,7 +445,7 @@ export function buildCommands() {
392
445
  }));
393
446
  register("earn_prepare_deposit", {
394
447
  title: "Prepare an unsigned deposit",
395
- description: "Returns the UNSIGNED calls for a deposit — [approve(asset → vault), deposit(assets, receiver)] — inside an envelope with requires_signature: true. Amount is in the vault's asset — USDC, or USDG on Robinhood Chain; `amount_usdc` keeps its name for every asset. The envelope names the `chain` and `chainId` the calls are for: say which chain to the operator, and if they have not chosen one, ask before calling this. NOTHING IS SUBMITTED: hand the calls to a signer in order. This tool cannot sign or send, and the deposit has not happened until the signer's transactions confirm. Each call also carries `function` and `args` — the same call `data` encodes, decoded, e.g. `approve(address spender, uint256 value)` with `{ spender, value }` — so an operator without a CLI signer can fill a block explorer's Write Contract form directly. `args` values are RAW contract units, which is what the form takes; `description` is the human sentence.",
448
+ description: "Returns the UNSIGNED calls for a deposit — [approve(asset → vault), deposit(assets, receiver)] on the EVM chains, ONE unsigned transaction (`transaction.wire`) on Solana — inside an envelope with requires_signature: true. Amount is in the vault's asset — USDC, or USDG on Robinhood Chain; `amount_usdc` keeps its name for every asset. The envelope names the `chain` and `chainId` the calls are for: say which chain to the operator, and if they have not chosen one, ask before calling this. NOTHING IS SUBMITTED: hand the calls to a signer in order. This tool cannot sign or send, and the deposit has not happened until the signer's transactions confirm. On the EVM chains each call also carries `function` and `args` — the same call `data` encodes, decoded, e.g. `approve(address spender, uint256 value)` with `{ spender, value }` — so an operator without a CLI signer can fill a block explorer's Write Contract form directly. `args` values are RAW contract units, which is what the form takes; `description` is the human sentence.",
396
449
  inputSchema: {
397
450
  vault: vaultArg,
398
451
  chain,
@@ -401,12 +454,18 @@ export function buildCommands() {
401
454
  receiver: addressArg.describe("where the SHARES land — usually the account, not necessarily"),
402
455
  },
403
456
  }, guarded(async ({ vault: symbol, chain, account, amount_usdc, receiver }) => {
457
+ const target = resolveAnyVault(symbol, chain);
458
+ if (target.family === "solana") {
459
+ // The warning before `next_step`, through the chokepoint, exactly as on EVM.
460
+ const { requires_signature, status, ...rest } = await solanaPrepareDeposit(target.vault, account, amount_usdc, receiver);
461
+ return text({ requires_signature, status, ...onSolana, ...commitsMoney(target.vault), ...rest }, "solana");
462
+ }
404
463
  const vault = supportedVault(symbol, chain);
405
- return unsigned(buildDeposit(vault, { assetsHuman: amount_usdc, receiver, account }), vault, "deposit");
464
+ return unsigned(buildDeposit(vault, { assetsHuman: amount_usdc, receiver: evm(receiver, "receiver"), account: evm(account, "account") }), vault, "deposit");
406
465
  }));
407
466
  register("earn_prepare_withdraw", {
408
467
  title: "Prepare an unsigned withdrawal",
409
- description: "Returns the UNSIGNED call for a withdrawal in asset terms — withdraw(assets, receiver, owner) — inside an envelope with requires_signature: true, which names the `chain` the call is for: a position is withdrawn on the chain it is on, so name the vault (or its chain) and never ask the operator to choose one. To empty the account pass --all (a switch: it takes no value) with shares_exact copied verbatim from sharesExact from `earn balance` (redeem of the exact balance; never a rounded number). NOTHING IS SUBMITTED and no funds have moved until a signer confirms. Each call also carries `function` and `args` — the same call `data` encodes, decoded, e.g. `withdraw(uint256 assets, address receiver, address owner)` with `{ assets, receiver, owner }` — so an operator without a CLI signer can fill a block explorer's Write Contract form directly. `args` values are RAW contract units, which is what the form takes; `description` is the human sentence.",
468
+ description: "Returns the UNSIGNED call for a withdrawal in asset terms — withdraw(assets, receiver, owner) on the EVM chains, ONE unsigned transaction (`transaction.wire`) on Solana — inside an envelope with requires_signature: true, which names the `chain` the call is for: a position is withdrawn on the chain it is on, so name the vault (or its chain) and never ask the operator to choose one. To empty the account pass --all (a switch: it takes no value) with shares_exact copied verbatim from sharesExact from `earn balance` (redeem of the exact balance; never a rounded number). NOTHING IS SUBMITTED and no funds have moved until a signer confirms. On the EVM chains each call also carries `function` and `args` — the same call `data` encodes, decoded, e.g. `withdraw(uint256 assets, address receiver, address owner)` with `{ assets, receiver, owner }` — so an operator without a CLI signer can fill a block explorer's Write Contract form directly. `args` values are RAW contract units, which is what the form takes; `description` is the human sentence.",
410
469
  inputSchema: {
411
470
  vault: vaultArg,
412
471
  chain,
@@ -416,14 +475,24 @@ export function buildCommands() {
416
475
  all: z.boolean().optional(),
417
476
  shares_exact: z.string().regex(/^\d+(\.\d+)?$/).optional(),
418
477
  },
419
- }, guarded(async ({ vault: symbol, chain, receiver, account, amount_usdc, all, shares_exact }) => {
420
- const vault = supportedVault(symbol, chain);
421
- // ⚠️ `receiver` and `account` are DIFFERENT slots and both are addresses, so a transposition
422
- // here type-checks. `account` is the owner whose shares burn; `receiver` is the payee.
478
+ }, guarded(async ({ vault: symbol, chain, receiver: rawReceiver, account: rawAccount, amount_usdc, all, shares_exact }) => {
479
+ const target = resolveAnyVault(symbol, chain);
423
480
  if (all && amount_usdc)
424
481
  throw new Error("give --amount_usdc or --all with --shares_exact, not both");
425
482
  if (!all && shares_exact)
426
483
  throw new Error("--shares_exact goes with --all; for an amount in the asset, use --amount_usdc alone");
484
+ if (all && !shares_exact)
485
+ throw new Error("--all requires --shares_exact (copy sharesExact from `earn balance` verbatim)");
486
+ if (!all && !amount_usdc)
487
+ throw new Error("provide --amount_usdc, or --all with --shares_exact");
488
+ if (target.family === "solana") {
489
+ return text(await solanaPrepareWithdraw(target.vault, rawAccount, rawReceiver, all ? { sharesExact: shares_exact } : { amountHuman: amount_usdc }), "solana");
490
+ }
491
+ const vault = supportedVault(symbol, chain);
492
+ const receiver = evm(rawReceiver, "receiver");
493
+ const account = evm(rawAccount, "account");
494
+ // ⚠️ `receiver` and `account` are DIFFERENT slots and both are addresses, so a transposition
495
+ // here type-checks. `account` is the owner whose shares burn; `receiver` is the payee.
427
496
  if (all) {
428
497
  if (!shares_exact)
429
498
  throw new Error("--all requires --shares_exact (copy sharesExact from `earn balance` verbatim)");
@@ -441,9 +510,13 @@ export function buildCommands() {
441
510
  chain,
442
511
  account: accountArg,
443
512
  lookback_blocks: z.number().int().positive().optional().describe("how far back to scan for Deposit/Withdraw events; default: from the vault's deployment block, i.e. the whole history. The EFFECTIVE window is max_log_requests × the provider's eth_getLogs cap (Alchemy free 10 blocks, Base public 2,000, Infura on Arbitrum 10,000); if the configured RPC cannot cover it, the chain's public endpoint serves the scan and scan.source says so"),
444
- max_log_requests: z.number().int().positive().max(400).optional().describe("cap on eth_getLogs calls per event per scan; default 100 (= 1,000 blocks on Alchemy free, 200,000 on Base public). scan.wholeHistory says whether the scan actually covered every block since the vault was deployed — scan.complete alone is only a reconciliation and can be vacuously true. For an older vault, a provider with a wide eth_getLogs range (TREASURY_LOGS_RPC_BASE; TREASURY_LOGS_RPC_ARBITRUM on Arbitrum One; TREASURY_LOGS_RPC_ROBINHOOD on Robinhood Chain) is what makes it whole"),
513
+ max_log_requests: z.number().int().positive().max(400).optional().describe("cap on eth_getLogs calls per event per scan; default 100 (= 1,000 blocks on Alchemy free, 200,000 on Base public). scan.wholeHistory says whether the scan actually covered every block since the vault was deployed — scan.complete alone is only a reconciliation and can be vacuously true. For an older vault, a provider with a wide eth_getLogs range (TREASURY_LOGS_RPC_BASE; TREASURY_LOGS_RPC_ARBITRUM on Arbitrum One; TREASURY_LOGS_RPC_ROBINHOOD on Robinhood Chain; TREASURY_LOGS_RPC_ETHEREUM on Ethereum; TREASURY_LOGS_RPC_MONAD on Monad, whose public endpoint serves only 100 blocks per request) is what makes it whole"),
445
514
  },
446
- }, guarded(async ({ vault: symbol, chain, account, lookback_blocks, max_log_requests }) => {
515
+ }, guarded(async ({ vault: symbol, chain, account: rawAccount, lookback_blocks, max_log_requests }) => {
516
+ const target = resolveAnyVault(symbol, chain);
517
+ if (target.family === "solana")
518
+ return text({ ...onSolana, ...(await solanaBalance(target.vault, rawAccount)) }, "solana");
519
+ const account = evm(rawAccount, "account");
447
520
  const vault = supportedVault(symbol, chain);
448
521
  const logsUrl = logsRpcUrlFromEnv(vault.chainId);
449
522
  const client = makePublicClient(vault.chainId, logsUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/earn/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/earn/commands.ts"],"names":[],"mappings":"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"}