@temporalabs/treasury 0.1.1 → 0.1.3

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 (103) hide show
  1. package/NOTICE +4 -2
  2. package/README.md +100 -44
  3. package/THIRD_PARTY_NOTICES.connect-page.md +7836 -0
  4. package/THIRD_PARTY_NOTICES.md +543 -162
  5. package/dist/cli.d.ts +6 -0
  6. package/dist/cli.js +243 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/client.d.ts +366 -239
  9. package/dist/client.js +202 -25
  10. package/dist/client.js.map +1 -1
  11. package/dist/config/earn.d.ts +48 -12
  12. package/dist/config/earn.js +48 -12
  13. package/dist/config/earn.js.map +1 -1
  14. package/dist/connect/ack.d.ts +76 -0
  15. package/dist/connect/ack.js +147 -0
  16. package/dist/connect/ack.js.map +1 -0
  17. package/dist/connect/commands.d.ts +81 -0
  18. package/dist/connect/commands.js +555 -0
  19. package/dist/connect/commands.js.map +1 -0
  20. package/dist/connect/config.d.ts +24 -0
  21. package/dist/connect/config.js +35 -0
  22. package/dist/connect/config.js.map +1 -0
  23. package/dist/connect/gate-solana.d.ts +8 -0
  24. package/dist/connect/gate-solana.js +147 -0
  25. package/dist/connect/gate-solana.js.map +1 -0
  26. package/dist/connect/gate.d.ts +37 -0
  27. package/dist/connect/gate.js +115 -0
  28. package/dist/connect/gate.js.map +1 -0
  29. package/dist/connect/http.d.ts +60 -0
  30. package/dist/connect/http.js +235 -0
  31. package/dist/connect/http.js.map +1 -0
  32. package/dist/connect/open.d.ts +2 -0
  33. package/dist/connect/open.js +35 -0
  34. package/dist/connect/open.js.map +1 -0
  35. package/dist/connect/page.d.ts +5 -0
  36. package/dist/connect/page.js +69 -0
  37. package/dist/connect/page.js.map +1 -0
  38. package/dist/connect/session.d.ts +39 -0
  39. package/dist/connect/session.js +198 -0
  40. package/dist/connect/session.js.map +1 -0
  41. package/dist/connect/solana.d.ts +73 -0
  42. package/dist/connect/solana.js +267 -0
  43. package/dist/connect/solana.js.map +1 -0
  44. package/dist/connect/verify.d.ts +37 -0
  45. package/dist/connect/verify.js +89 -0
  46. package/dist/connect/verify.js.map +1 -0
  47. package/dist/connect-page.js +5143 -0
  48. package/dist/disclosures.d.ts +22 -6
  49. package/dist/disclosures.js +34 -8
  50. package/dist/disclosures.js.map +1 -1
  51. package/dist/earn/commands.d.ts +46 -0
  52. package/dist/earn/commands.js +556 -0
  53. package/dist/earn/commands.js.map +1 -0
  54. package/dist/earn/solana.d.ts +278 -0
  55. package/dist/earn/solana.js +302 -0
  56. package/dist/earn/solana.js.map +1 -0
  57. package/dist/guide.d.ts +15 -0
  58. package/dist/guide.js +50 -0
  59. package/dist/guide.js.map +1 -0
  60. package/dist/links.d.ts +2 -0
  61. package/dist/links.js +40 -14
  62. package/dist/links.js.map +1 -1
  63. package/dist/position.d.ts +9 -6
  64. package/dist/position.js +39 -19
  65. package/dist/position.js.map +1 -1
  66. package/dist/preflight.d.ts +9 -0
  67. package/dist/preflight.js +14 -3
  68. package/dist/preflight.js.map +1 -1
  69. package/dist/quote.js +24 -7
  70. package/dist/quote.js.map +1 -1
  71. package/dist/redact.d.ts +3 -3
  72. package/dist/redact.js +3 -3
  73. package/dist/redact.js.map +1 -1
  74. package/dist/registry-schema.d.ts +82 -5
  75. package/dist/registry-schema.js +105 -15
  76. package/dist/registry-schema.js.map +1 -1
  77. package/dist/registry.d.ts +50 -7
  78. package/dist/registry.js +122 -21
  79. package/dist/registry.js.map +1 -1
  80. package/dist/solana/constants.d.ts +49 -0
  81. package/dist/solana/constants.js +50 -0
  82. package/dist/solana/constants.js.map +1 -0
  83. package/dist/solana/kvault.d.ts +99 -0
  84. package/dist/solana/kvault.js +192 -0
  85. package/dist/solana/kvault.js.map +1 -0
  86. package/dist/solana/layout.d.ts +143 -0
  87. package/dist/solana/layout.js +209 -0
  88. package/dist/solana/layout.js.map +1 -0
  89. package/dist/solana/rpc.d.ts +24 -0
  90. package/dist/solana/rpc.js +66 -0
  91. package/dist/solana/rpc.js.map +1 -0
  92. package/dist/solana/vault.d.ts +153 -0
  93. package/dist/solana/vault.js +324 -0
  94. package/dist/solana/vault.js.map +1 -0
  95. package/dist/{mcp-server.mjs → treasury.mjs} +41101 -49486
  96. package/dist/version.js +5 -10
  97. package/dist/version.js.map +1 -1
  98. package/llms.txt +621 -0
  99. package/package.json +12 -9
  100. package/registry/vaults.json +218 -4
  101. package/dist/mcp/server.d.ts +0 -8
  102. package/dist/mcp/server.js +0 -368
  103. package/dist/mcp/server.js.map +0 -1
package/dist/guide.js ADDED
@@ -0,0 +1,50 @@
1
+ /**
2
+ * The pointer from `treasury --help` to the guide, `llms.txt`.
3
+ *
4
+ * An agent that runs the CLI without the plugin never sees the rules in the earn skill (ask which chain,
5
+ * show the full terms before a first deposit, post the acknowledgement word for word). A guide that is
6
+ * only in the package or the README is not found: measured on 0.1.2, agents read it 0 times in 9 when it
7
+ * was merely there and 9 times in 9 when `--help` named it. So `--help` names it, here, on the top level
8
+ * and on each skill's command list.
9
+ *
10
+ * Not from the plugin: its Earn skill is the same text and is already loaded, and a pointer there would send
11
+ * every plugin user to re-read it. The plugin folder is recognised by the manifest that sits at its root.
12
+ *
13
+ * `llms.txt` is generated from the skill and the command descriptions by `scripts/llms-txt.ts`, and CI
14
+ * fails when the committed file differs.
15
+ */
16
+ import { existsSync, realpathSync } from "node:fs";
17
+ import { dirname, resolve } from "node:path";
18
+ import { fileURLToPath } from "node:url";
19
+ import { PACKAGE_VERSION } from "./version.js";
20
+ /**
21
+ * The public copy for THIS version: the file at its release tag, so the guide an agent reads describes the
22
+ * CLI it is running. The default branch does not: it moves with each release, and before v0.1.3 it had no
23
+ * llms.txt at all. A tag exists only once the release is cut, so an unreleased build's URL resolves then.
24
+ */
25
+ export const GUIDE_URL = `https://raw.githubusercontent.com/TemporaLabs/treasury/v${PACKAGE_VERSION}/llms.txt`;
26
+ /** The folder above this module: the package root for dist/treasury.mjs, plugin/ for the plugin's copy. */
27
+ function root() {
28
+ try {
29
+ return resolve(dirname(realpathSync(fileURLToPath(import.meta.url))), "..");
30
+ }
31
+ catch {
32
+ return undefined;
33
+ }
34
+ }
35
+ /**
36
+ * The `guide` field of the top-level and per-skill `--help`; undefined when this is the plugin's copy.
37
+ * Only the existence of `llms.txt` beside the CLI is checked, to name its path; nothing in the CLI reads it.
38
+ */
39
+ export function guidePointer() {
40
+ const base = root();
41
+ if (base !== undefined && (existsSync(resolve(base, ".claude-plugin/plugin.json")) || existsSync(resolve(base, ".codex-plugin/plugin.json"))))
42
+ return undefined;
43
+ const file = base !== undefined && existsSync(resolve(base, "llms.txt")) ? resolve(base, "llms.txt") : undefined;
44
+ return {
45
+ read_first: `Read the guide before you run any command: it carries the rules for using treasury safely (which questions to ask the operator, what to show before a first deposit, what to post word for word). ${file ? `It is the file at "file" below, or at "url".` : `It is at "url".`}`,
46
+ ...(file ? { file } : {}),
47
+ url: GUIDE_URL,
48
+ };
49
+ }
50
+ //# sourceMappingURL=guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guide.js","sourceRoot":"","sources":["../src/guide.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,2DAA2D,eAAe,WAAW,CAAC;AAE/G,2GAA2G;AAC3G,SAAS,IAAI;IACX,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC;IACpB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAChK,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjH,OAAO;QACL,UAAU,EAAE,qMAAqM,IAAI,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,iBAAiB,EAAE;QAC5R,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,GAAG,EAAE,SAAS;KACf,CAAC;AACJ,CAAC"}
package/dist/links.d.ts CHANGED
@@ -19,3 +19,5 @@ export interface VaultLinks {
19
19
  app?: string;
20
20
  }
21
21
  export declare function linksFor(vault: Pick<VaultEntry, "chainId" | "address" | "chassis">): VaultLinks;
22
+ /** A transaction on the chain's block explorer, from the same table as the address links. */
23
+ export declare function explorerTxUrl(chainId: VaultEntry["chainId"], hash: string): string;
package/dist/links.js CHANGED
@@ -1,32 +1,58 @@
1
1
  /**
2
2
  * Block explorers, by chain.
3
3
  *
4
- * 🔴 THIS MAP MAY NOT BE MISSED A CHAIN. An unknown `chainId` interpolates `undefined` into the
5
- * URL — `undefined0x040f…` — which is a well-formed string, so nothing throws and the caller
6
- * receives a link that goes nowhere. Today that is unreachable, but only because the registry
7
- * schema pins `chainId: z.literal(8453)`: a wrong value is a compile-time error wherever a
8
- * `VaultEntry` is built, and `loadRegistry()` rejects the whole file on any parse failure.
9
- *
10
- * So the safety here is the LITERAL, not this map. **Widening the schema to a second chain
11
- * without adding its row below reintroduces the broken link**, silently. Add the row in the same
12
- * change, or make the lookup fail loudly instead.
4
+ * 🔴 THIS MAP MAY NOT MISS A CHAIN, and the lookup below throws if it does. An unknown `chainId`
5
+ * used to interpolate `undefined` into the URL — `undefined0x040f…` — which is a well-formed string,
6
+ * so nothing threw and the caller received a link that goes nowhere. That was unreachable only
7
+ * while the registry schema pinned one chain. It now accepts several, so the safety is the throw:
8
+ * a chain added to the schema without a row here does not compile (the map is typed by the schema's
9
+ * own chain ids), and a value that reaches here from outside the schema throws.
10
+ * `registry.test.ts` builds a link for every chain the schema accepts.
13
11
  */
14
12
  const EXPLORER = {
15
13
  8453: "https://basescan.org/address/",
14
+ 42161: "https://arbiscan.io/address/",
15
+ 4663: "https://robinhoodchain.blockscout.com/address/",
16
+ 1: "https://etherscan.io/address/",
17
+ 143: "https://monadscan.com/address/",
16
18
  };
17
19
  /**
18
- * The protocol's own front end, where one exists and the URL shape is known. A chassis with no
19
- * entry gets no link rather than a guessed one — a wrong app URL sends an operator to someone
20
- * else's vault, which is worse than sending them nowhere.
20
+ * The protocol's own front end, where one exists, the URL shape is known, AND the page resolves. A
21
+ * chassis or chain with no entry gets no link rather than a guessed one — a wrong app URL sends an
22
+ * operator to someone else's vault, which is worse than sending them nowhere, and a dead one teaches
23
+ * them the links are not worth opening.
24
+ *
25
+ * Morpho's app: Base only, and only for vaults it lists. Measured 2026-10-02:
26
+ * `app.morpho.org/arbitrum/vault/<address>` answers 404 for the Arbitrum vault in the registry, and
27
+ * Morpho's API does not know that address on chain 42161; Test 2B on Base is absent the same way.
28
+ * Test 2's Base page and API both resolve.
21
29
  */
30
+ const MORPHO_APP_CHAIN = { 8453: "base" };
31
+ /**
32
+ * Vaults Morpho's app is KNOWN to list, by address. A chain slug alone is not enough: Morpho's app
33
+ * and API list only some Vault V2 vaults, and the registry's Tempora Labs vaults are not all among them
34
+ * (measured 2026-10-02: Test 2 resolves; Test 2B answers 404 and is absent from Morpho's API).
35
+ * Add an address here once its page resolves — never before.
36
+ */
37
+ const MORPHO_LISTED = new Set(["0x040fCA12673778FEED5DA7b2ccFbbAb0cc0134Cf"]);
22
38
  const APP = {
23
- "morpho-v2": (chainId, address) => (chainId === 8453 ? `https://app.morpho.org/base/vault/${address}` : undefined),
39
+ "morpho-v2": (chainId, address) => MORPHO_APP_CHAIN[chainId] && MORPHO_LISTED.has(address) ? `https://app.morpho.org/${MORPHO_APP_CHAIN[chainId]}/vault/${address}` : undefined,
24
40
  };
25
41
  export function linksFor(vault) {
26
- const links = { explorer: `${EXPLORER[vault.chainId]}${vault.address}` };
42
+ const explorer = EXPLORER[vault.chainId];
43
+ if (explorer === undefined)
44
+ throw new Error(`no block explorer is recorded for chain ${vault.chainId}; add it to EXPLORER in src/links.ts`);
45
+ const links = { explorer: `${explorer}${vault.address}` };
27
46
  const app = APP[vault.chassis]?.(vault.chainId, vault.address);
28
47
  if (app)
29
48
  links.app = app;
30
49
  return links;
31
50
  }
51
+ /** A transaction on the chain's block explorer, from the same table as the address links. */
52
+ export function explorerTxUrl(chainId, hash) {
53
+ const explorer = EXPLORER[chainId];
54
+ if (explorer === undefined)
55
+ throw new Error(`no block explorer is recorded for chain ${chainId}; add it to EXPLORER in src/links.ts`);
56
+ return `${explorer.replace(/address\/$/, "tx/")}${hash}`;
57
+ }
32
58
  //# sourceMappingURL=links.js.map
package/dist/links.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"links.js","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;GAYG;AACH,MAAM,QAAQ,GAA2B;IACvC,IAAI,EAAE,+BAA+B;CACtC,CAAC;AAEF;;;;GAIG;AACH,MAAM,GAAG,GAA6E;IACpF,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;CACnH,CAAC;AASF,MAAM,UAAU,QAAQ,CAAC,KAA0D;IACjF,MAAM,KAAK,GAAe,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IACrF,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,GAAG;QAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;GAUG;AACH,MAAM,QAAQ,GAA0C;IACtD,IAAI,EAAE,+BAA+B;IACrC,KAAK,EAAE,8BAA8B;IACrC,IAAI,EAAE,gDAAgD;IACtD,CAAC,EAAE,+BAA+B;IAClC,GAAG,EAAE,gCAAgC;CACtC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,gBAAgB,GAA2B,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAClE;;;;;GAKG;AACH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC;AAC9E,MAAM,GAAG,GAA6E;IACpF,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAChC,gBAAgB,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,0BAA0B,gBAAgB,CAAC,OAAO,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;CAC/I,CAAC;AASF,MAAM,UAAU,QAAQ,CAAC,KAA0D;IACjF,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,CAAC,OAAO,sCAAsC,CAAC,CAAC;IAC5I,MAAM,KAAK,GAAe,EAAE,QAAQ,EAAE,GAAG,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IACtE,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,GAAG;QAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,aAAa,CAAC,OAA8B,EAAE,IAAY;IACxE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,OAAO,sCAAsC,CAAC,CAAC;IACtI,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;AAC3D,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type Address } from "viem";
2
2
  import { type VaultEntry } from "./registry-schema.js";
3
- import type { ReadClient } from "./client.js";
3
+ import { type ReadClient } from "./client.js";
4
4
  /** The value `entryBasisUsdc` / `accruedYieldUsdc` carry when the event scan failed outright: not a number. */
5
5
  export declare const UNKNOWN_AFTER_SCAN_FAILURE = "unknown \u2014 event scan failed; see scan.note";
6
6
  /**
@@ -45,7 +45,7 @@ export interface Position {
45
45
  sharePriceInAssets: string;
46
46
  /**
47
47
  * `source` names which RPC served the event scan, never its URL: `"logs rpc"` (the configured one)
48
- * or `"fallback"` (the endpoint `TREASURY_LOGS_FALLBACK` names, Base's public one by default, used
48
+ * or `"fallback"` (the endpoint `TREASURY_LOGS_FALLBACK` names, the chain's public one by default, used
49
49
  * when the configured one could not cover the range). 🔴 `complete` is only a RECONCILIATION and is
50
50
  * vacuously true for an empty window — `wholeHistory` is the coverage claim, and the note is written
51
51
  * from it.
@@ -99,8 +99,9 @@ export interface PositionArgs {
99
99
  * A second read client for the event scan, used only when `client` cannot cover the range: its
100
100
  * eth_getLogs error is one no window can be sized from (measured 2026-09-14: publicnode refuses any
101
101
  * range older than ~2,000 blocks with "Archive requests require a personal token"), or its window
102
- * would need more than `maxLogRequests` requests (Alchemy free tier: 10 blocks). The server passes
103
- * Base's public endpoint, whose 2,000-block window serves history. Omitted ⇒ no fallback.
102
+ * would need more than `maxLogRequests` requests (Alchemy free tier: 10 blocks). The CLI passes
103
+ * the chain's public endpoint: Base's, whose 2,000-block window serves history, or Arbitrum One's,
104
+ * which served an 800,000-block range in one request (measured 2026-10-02). Omitted ⇒ no fallback.
104
105
  */
105
106
  fallbackClient?: ReadClient;
106
107
  /**
@@ -117,8 +118,10 @@ export interface PositionArgs {
117
118
  }
118
119
  /**
119
120
  * Parses the provider's stated maximum range out of its error, e.g. "limited to a 2,000 range" /
120
- * "up to a 10 block range". `undefined` means the failure is NOT a window refusal — a caller must
121
- * rethrow rather than narrow, or a dead provider and an empty result become the same answer.
121
+ * "up to a 10 block range" / "range 798952 exceeds limit of 10000" (Infura on Arbitrum One, measured
122
+ * 2026-10-02) / "query exceeds max block range 100000" (Ethereum's public endpoint, measured
123
+ * 2026-10-11). `undefined` means the failure is NOT a window refusal — a caller must rethrow
124
+ * rather than narrow, or a dead provider and an empty result become the same answer.
122
125
  * Exported for `tests/access.ts`, which walks a different contract's logs and needs the same
123
126
  * distinction; NOT re-exported from index.ts.
124
127
  */
package/dist/position.js CHANGED
@@ -1,7 +1,9 @@
1
- import { BaseError, ContractFunctionRevertedError, ExecutionRevertedError, parseAbiItem } from "viem";
1
+ import { parseAbiItem } from "viem";
2
2
  import { erc4626Abi } from "./abi/erc4626.js";
3
3
  import { describeError } from "./redact.js";
4
+ import { isRevert } from "./preflight.js";
4
5
  import { formatAmount } from "./units.js";
6
+ import { CHAIN_INFO } from "./client.js";
5
7
  /** ERC-4626's own events — the only durable record of what an account put in and took out. */
6
8
  const depositEvent = parseAbiItem("event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)");
7
9
  const withdrawEvent = parseAbiItem("event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)");
@@ -17,13 +19,18 @@ export const UNKNOWN_AFTER_SCAN_FAILURE = "unknown — event scan failed; see sc
17
19
  export const UNKNOWN_INCOMPLETE_SCAN = "unknown — the scan did not cover this position's history; see scan.note";
18
20
  /**
19
21
  * Parses the provider's stated maximum range out of its error, e.g. "limited to a 2,000 range" /
20
- * "up to a 10 block range". `undefined` means the failure is NOT a window refusal — a caller must
21
- * rethrow rather than narrow, or a dead provider and an empty result become the same answer.
22
+ * "up to a 10 block range" / "range 798952 exceeds limit of 10000" (Infura on Arbitrum One, measured
23
+ * 2026-10-02) / "query exceeds max block range 100000" (Ethereum's public endpoint, measured
24
+ * 2026-10-11). `undefined` means the failure is NOT a window refusal — a caller must rethrow
25
+ * rather than narrow, or a dead provider and an empty result become the same answer.
22
26
  * Exported for `tests/access.ts`, which walks a different contract's logs and needs the same
23
27
  * distinction; NOT re-exported from index.ts.
24
28
  */
25
29
  export function rangeLimitFromError(e) {
26
- const m = String(e).replace(/,/g, "").match(/(?:limited to a|up to a)\s+(\d+)\s*(?:block)?\s*range/i);
30
+ const text = String(e).replace(/,/g, "");
31
+ const m = text.match(/(?:limited to a|up to a)\s+(\d+)\s*(?:block)?\s*range/i) ??
32
+ text.match(/range\s+\d+\s+exceeds limit of\s+(\d+)/i) ??
33
+ text.match(/exceeds max block range\s+(\d+)/i);
27
34
  return m ? BigInt(m[1]) : undefined;
28
35
  }
29
36
  async function scanLogs(client, address, event, owner, from, to, maxRequests, refuseIfCapped, deadline, now) {
@@ -93,17 +100,6 @@ function txsOf(logs, decimals, symbol) {
93
100
  amountUsdc: `${formatAmount(l.args.assets ?? 0n, decimals)} ${symbol}`,
94
101
  }));
95
102
  }
96
- /**
97
- * Did the CHAIN refuse this, or did the RPC fail to ask it? Every failure used to read as "cannot pay",
98
- * so one HTTP 502 on the first simulation reported a fully-exitable position as unexitable AND blamed
99
- * the vault for it (measured through a proxy that failed exactly one call: one attempt made, the vault
100
- * never asked, `exitableNow: "unknown"`, note "the refusal is the vault's").
101
- * viem's own error chain separates them: a real revert carries a ContractFunctionRevertedError or an
102
- * ExecutionRevertedError; a transport failure does not.
103
- */
104
- function isRevert(e) {
105
- return e instanceof BaseError && e.walk((x) => x instanceof ContractFunctionRevertedError || x instanceof ExecutionRevertedError) !== null;
106
- }
107
103
  /**
108
104
  * At most two simulated withdrawals — the whole position, then the vault's own liquid balance — and the
109
105
  * answer is whichever the chain accepts. Simulation rather than arithmetic because the ceiling is
@@ -184,6 +180,19 @@ async function measureExit(a) {
184
180
  // must NOT happen is describing it as something it was not: the note says what was
185
181
  // asked, and a success is believed whatever bound produced it.
186
182
  const boundedByLiquid = liquid < value;
183
+ // A liquid bound of 0 is no withdrawal to ask about: say it was not tried, never count it as a refusal.
184
+ if (liquid === 0n) {
185
+ return {
186
+ exitableNow: "unknown",
187
+ measuredAs: "refused, size unknown",
188
+ instantLiquidity: liquidText,
189
+ maxWithdrawSays: maxText,
190
+ // Whether a smaller amount can pass depends on the chassis, as in the liquid-bound note below.
191
+ note: `the vault REFUSED a full-position withdrawal at this block. Its liquid balance is ${liquidText}, so no smaller withdrawal bounded by it was tried. ${vault.chassis === "fusion"
192
+ ? "This chassis pays withdrawals from the vault's own balance unless the fund has instant-withdrawal fuses, so a smaller amount is likely to be refused too until the fund unwinds"
193
+ : "This chassis also pays out of its markets, so a smaller amount may still pass"} — quote one with \`earn quote --direction withdraw\`. The refusal came from the vault, but it is not a shortfall this client could size.${advisory}`,
194
+ };
195
+ }
187
196
  const askedFor = boundedByLiquid ? liquid : value;
188
197
  const bounded = await attempt(askedFor);
189
198
  if (bounded === "paid" && boundedByLiquid) {
@@ -192,7 +201,13 @@ async function measureExit(a) {
192
201
  measuredAs: "vault's liquid balance",
193
202
  instantLiquidity: liquidText,
194
203
  maxWithdrawSays: maxText,
195
- note: `the whole position does NOT come out at this block: this chassis pays withdrawals from the vault's own balance, and the rest is deployed. ${fmt(liquid)} of ${fmt(value)} is payable now; the remainder needs the fund to unwind first.${advisory}`,
204
+ // Only Fusion pays a withdrawal from the vault's own balance, so only there is the idle balance the
205
+ // ceiling and "the rest needs an unwind" the explanation. A Morpho Vault V2 also pays through its
206
+ // liquidity adapter: there the idle balance is a bound that was probed and paid, not the most that can
207
+ // come out (#78; sizing the rest is #69).
208
+ note: vault.chassis === "fusion"
209
+ ? `the whole position does NOT come out at this block: this chassis pays withdrawals from the vault's own balance, and the rest is deployed. ${fmt(liquid)} of ${fmt(value)} is payable now; the remainder needs the fund to unwind first.${advisory}`
210
+ : `the whole position does NOT come out at this block; a withdrawal of ${fmt(liquid)}, the vault's idle balance, simulates OK. This chassis also pays out of its markets, so more than that may be withdrawable now; the larger amount was not sized.${advisory}`,
196
211
  };
197
212
  }
198
213
  // 🔴 A success is a success whatever bound produced it. The old gate reused the ATTEMPT condition as
@@ -314,6 +329,11 @@ export async function getPosition(args) {
314
329
  // confident "0 USDC"). `!wholeHistory` subsumes both, including the honest zero.
315
330
  const basisUnknown = !wholeHistory;
316
331
  const fmtA = (x) => `${formatAmount(x, vault.asset.decimals)} ${vault.asset.symbol}`;
332
+ // The notes name the variable an operator would set, and that differs by chain.
333
+ const chain = CHAIN_INFO[vault.chainId];
334
+ const logsEnv = chain.logsRpcEnv;
335
+ // TREASURY_LOGS_FALLBACK can NAME a fallback on Base only; elsewhere it can only forbid one.
336
+ const fallbackNamedBy = vault.chainId === 8453 ? `TREASURY_LOGS_FALLBACK, ${chain.name}'s public endpoint by default` : `${chain.name}'s public endpoint; TREASURY_LOGS_FALLBACK=off forbids it`;
317
337
  return {
318
338
  vault: vault.symbol,
319
339
  principal,
@@ -338,12 +358,12 @@ export async function getPosition(args) {
338
358
  ...(providerWindow !== undefined ? { providerWindow: providerWindow.toString() } : {}),
339
359
  source,
340
360
  wholeHistory,
341
- note: (handover && !scanFailure ? `the configured logs RPC could not cover this range (${handover}), so the fallback endpoint (TREASURY_LOGS_FALLBACK, Base's public endpoint by default) served the scan. ` : "") + (scanFailure
342
- ? `event scan FAILED (${scanFailure}): the provider's eth_getLogs error was not one this client can size a window from, so no history was read — basis and yield are unknown, not zero. Set TREASURY_LOGS_RPC_BASE to a provider with a known window (Alchemy, Base public), or use the agent's own deposit receipts.`
361
+ note: (handover && !scanFailure ? `the configured logs RPC could not cover this range (${handover}), so the fallback endpoint (${fallbackNamedBy}) served the scan. ` : "") + (scanFailure
362
+ ? `event scan FAILED (${scanFailure}): the provider's eth_getLogs error was not one this client can size a window from, so no history was read — basis and yield are unknown, not zero. Set ${logsEnv} to a provider with a known window (Alchemy, Infura, ${chain.name} public), or use the agent's own deposit receipts.`
343
363
  : wholeHistory
344
364
  ? "the scan covered every block from the vault's deployment, and shares in − shares out reconciles to the balance: the basis covers this position's whole history"
345
365
  : capped
346
- ? `the scan was CUT SHORT — ${block - fromBlock + 1n} of the ${block - (deployed ?? 0n) + 1n} blocks since deployment, at the provider's ${providerWindow ?? "?"}-block eth_getLogs window and ${timedOut ? `a ${Math.round((args.budgetMs ?? 30_000) / 1000)}s time budget` : `${maxReq} requests`}; covering the rest needs about ${providerWindow ? (block - (deployed ?? 0n) + providerWindow) / providerWindow : BigInt(maxReq)} requests per event. ${complete ? "Shares in − shares out happens to reconcile over that window, which an empty window does vacuously — it is NOT evidence the history was covered." : "Basis and yield are unknown, not bounds."} Set TREASURY_LOGS_RPC_BASE to a provider with a wide eth_getLogs range${timedOut ? "" : ", raise max_log_requests"}, or use the agent's own deposit receipts.`
366
+ ? `the scan was CUT SHORT — ${block - fromBlock + 1n} of the ${block - (deployed ?? 0n) + 1n} blocks since deployment, at the provider's ${providerWindow ?? "?"}-block eth_getLogs window and ${timedOut ? `a ${Math.round((args.budgetMs ?? 30_000) / 1000)}s time budget` : `${maxReq} requests`}; covering the rest needs about ${providerWindow ? (block - (deployed ?? 0n) + providerWindow) / providerWindow : BigInt(maxReq)} requests per event. ${complete ? "Shares in − shares out happens to reconcile over that window, which an empty window does vacuously — it is NOT evidence the history was covered." : "Basis and yield are unknown, not bounds."} Set ${logsEnv} to a provider with a wide eth_getLogs range${timedOut ? "" : ", raise max_log_requests"}, or use the agent's own deposit receipts.`
347
367
  : complete
348
368
  ? `shares in − shares out reconciles over the ${block - fromBlock + 1n} blocks scanned, but the scan started at block ${fromBlock}${deployed === undefined ? " and the registry does not record when this vault was deployed" : `, after the vault's deployment block ${deployed}`} — deposits and withdrawals before it cancel out unseen, so this is a WINDOW, NOT the whole history. Omit lookback_blocks to scan from deployment.`
349
369
  : "shares in − shares out ≠ balance: history predates the window or shares moved by transfer — basis and yield are unknown, not totals"),
@@ -1 +1 @@
1
- {"version":3,"file":"position.js","sourceRoot":"","sources":["../src/position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,YAAY,EAAgB,MAAM,MAAM,CAAC;AACpH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,8FAA8F;AAC9F,MAAM,YAAY,GAAG,YAAY,CAAC,8FAA8F,CAAC,CAAC;AAClI,MAAM,aAAa,GAAG,YAAY,CAChC,yHAAyH,CAC1H,CAAC;AAEF,+GAA+G;AAC/G,MAAM,CAAC,MAAM,0BAA0B,GAAG,4CAA4C,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,yEAAyE,CAAC;AA8GjH;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,CAAU;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IACtG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,MAAkB,EAClB,OAAgB,EAChB,KAAQ,EACR,KAAc,EACd,IAAY,EACZ,EAAU,EACV,WAAmB,EACnB,cAAuB,EACvB,QAAgB,EAChB,GAAiB;IAEjB,MAAM,UAAU,GAAG,EAAE,KAAK,EAAW,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACtG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,CAAC;QACrB,yFAAyF;QACzF,6FAA6F;QAC7F,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;QAC7C,IAAI,cAAc,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9F,sGAAsG;QACtG,MAAM,GAAG,GAAkD,EAAW,CAAC;QACvE,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,OAAO,EAAE,IAAI,IAAI,IAAI,QAAQ,GAAG,WAAW,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAChE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACpG,GAAiB,CAAC,IAAI,CAAC,GAAI,KAAmB,CAAC,CAAC;YACjD,QAAQ,IAAI,CAAC,CAAC;YACd,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACf,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;IACnF,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,eAAgB,SAAQ,KAAK;IAEtB;IACA;IAFX,YACW,MAAc,EACd,MAAc;QAEvB,KAAK,CAAC,kBAAkB,MAAM,mCAAmC,MAAM,0BAA0B,CAAC,CAAC;QAH1F,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;IAGzB,CAAC;CACF;AAyBD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAEhC;;;;;;GAMG;AACH,SAAS,KAAK,CAAC,IAAgB,EAAE,QAAgB,EAAE,MAAc;IAC/D,MAAM,GAAG,GAAG,CAAC,CAAW,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,CAAC,CAAC,eAAe;QACzB,WAAW,EAAE,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE;QACrE,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,EAAE;KACvE,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,CAAC,YAAY,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,6BAA6B,IAAI,CAAC,YAAY,sBAAsB,CAAC,KAAK,IAAI,CAAC;AAC7I,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,WAAW,CAAC,CAQ1B;IACC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAE5F,mFAAmF;IACnF,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;IACtK,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,EAAE,EAAyB,EAAqE,EAAE;QAClH,IAAI,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAClD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACpD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAoB,CAAC;QACvJ,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAoB,CAAC;KAChJ,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5I,MAAM,OAAO,GACX,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtI,iGAAiG;IACjG,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,uBAAuB,OAAO,4DAA4D,CAAC,CAAC,CAAC,EAAE,CAAC;IAErK,yEAAyE;IACzE,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,OAAO;YACL,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;YACpB,UAAU,EAAE,qBAAqB;YACjC,gBAAgB,EAAE,UAAU;YAC5B,eAAe,EAAE,OAAO;YACxB,IAAI,EAAE,qBAAqB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,+EAA+E;SACpK,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,EAAE,MAAc,EAA8C,EAAE;QACnF,IAAI,MAAM,KAAK,EAAE;YAAE,OAAO,SAAS,CAAC;QACpC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ;YAAE,OAAO,YAAY,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/J,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAoB,EAAE,CAAC,CAAC;QACtD,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,cAAc;QAC1B,gBAAgB,EAAE,UAAU;QAC5B,eAAe,EAAE,OAAO;QACxB,IAAI,EAAE,GAAG,IAAI,2HAA2H,QAAQ,EAAE;KACnJ,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,iEAAiE,QAAQ,EAAE,EAAE,CAAC;IAC7M,CAAC;IACD,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,UAAU,CAAC,+DAA+D,CAAC,CAAC;IAE9G,sGAAsG;IACtG,iGAAiG;IACjG,sCAAsC;IACtC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC,+FAA+F,CAAC,CAAC;IAC7I,+FAA+F;IAC/F,0FAA0F;IAC1F,sGAAsG;IACtG,mFAAmF;IACnF,+DAA+D;IAC/D,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,CAAC;IACvC,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,MAAM,IAAI,eAAe,EAAE,CAAC;QAC1C,OAAO;YACL,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC;YACxB,UAAU,EAAE,wBAAwB;YACpC,gBAAgB,EAAE,UAAU;YAC5B,eAAe,EAAE,OAAO;YACxB,IAAI,EAAE,6IAA6I,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,iEAAiE,QAAQ,EAAE;SAC3P,CAAC;IACJ,CAAC;IACD,qGAAqG;IACrG,sGAAsG;IACtG,gGAAgG;IAChG,wCAAwC;IACxC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,iNAAiN,QAAQ,EAAE,EAAE,CAAC;IAC7V,CAAC;IACD,IAAI,OAAO,KAAK,YAAY;QAAE,OAAO,UAAU,CAAC,yFAAyF,CAAC,CAAC;IAC3I,OAAO;QACL,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,uBAAuB;QACnC,gBAAgB,EAAE,UAAU;QAC5B,eAAe,EAAE,OAAO;QACxB,kGAAkG;QAClG,6FAA6F;QAC7F,+BAA+B;QAC/B,IAAI,EAAE,qBAAqB,eAAe,CAAC,CAAC,CAAC,qEAAqE,UAAU,GAAG,CAAC,CAAC,CAAC,2DAA2D,UAAU,qEAAqE,+HAA+H,QAAQ,EAAE;KACtZ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAkB;IAClD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,QAAU,CAAC;IACnD,MAAM,QAAQ,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEpD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1D,MAAM,CAAC,cAAc,EAAE;QACvB,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9G,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;KACpH,CAAC,CAAC;IACH,MAAM,KAAK,GACT,MAAM,KAAK,EAAE;QACX,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE9H,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,iHAAiH;IACjH,mGAAmG;IACnG,yGAAyG;IACzG,qGAAqG;IACrG,uBAAuB;IACvB,MAAM,YAAY,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;IACzG,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;IAEnD,kGAAkG;IAClG,mGAAmG;IACnG,gDAAgD;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACjG,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,MAAM,GACV,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrI,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;IAErC,mGAAmG;IACnG,iEAAiE;IACjE,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAa,EAAE,cAAuB,EAAyB,EAAE;QACvF,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC1H,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3H,OAAO,CAAC,CAAoB,EAAE,CAAoB,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,8FAA8F;IAC9F,qGAAqG;IACrG,yEAAyE;IACzE,kGAAkG;IAClG,+FAA+F;IAC/F,yEAAyE;IACzE,IAAI,WAA+B,CAAC;IACpC,IAAI,MAAM,GAA4B,UAAU,CAAC;IACjD,IAAI,QAA4B,CAAC;IACjC,MAAM,KAAK,GAAS,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtF,IAAI,MAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,YAAqB,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YAC1C,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,YAAY,YAAY,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,aAAa,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;YACtI,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACzC,6FAA6F;gBAC7F,2CAA2C;gBAC3C,MAAM,GAAG,UAAU,CAAC;YACtB,CAAC;YAAC,OAAO,aAAsB,EAAE,CAAC;gBAChC,WAAW,GAAG,aAAa,QAAQ,eAAe,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjF,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IACtB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;IACnB,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAChF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,GAAG,EAAE,IAAI,QAAQ,CAAC;IAC7C,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,eAAe,GAAG,eAAe,CAAC;IAChD,iGAAiG;IACjG,sFAAsF;IACtF,MAAM,QAAQ,GAAG,eAAe,GAAG,eAAe,KAAK,MAAM,CAAC;IAC9D,8FAA8F;IAC9F,qGAAqG;IACrG,iGAAiG;IACjG,oFAAoF;IACpF,MAAM,YAAY,GAAG,QAAQ,KAAK,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC;IAC5F,4FAA4F;IAC5F,kGAAkG;IAClG,mEAAmE;IACnE,gGAAgG;IAChG,gGAAgG;IAChG,yFAAyF;IACzF,gGAAgG;IAChG,iFAAiF;IACjF,MAAM,YAAY,GAAG,CAAC,YAAY,CAAC;IAEnC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC7F,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,SAAS;QACT,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;QACtD,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;QACtE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;QACtB,IAAI;QACJ,kGAAkG;QAClG,0EAA0E;QAC1E,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/G,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACzH,kBAAkB,EAAE,GAAG,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,YAAY;QAC7G,IAAI,EAAE;YACJ,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;YAC/B,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;YACzB,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,WAAW,EAAE,GAAG,CAAC,MAAM;YACvB,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACjE,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACjE,QAAQ;YACR,MAAM;YACN,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,MAAM;YACN,YAAY;YACZ,IAAI,EAAE,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,uDAAuD,QAAQ,2GAA2G,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW;gBAC/N,CAAC,CAAC,sBAAsB,WAAW,mRAAmR;gBACtT,CAAC,CAAC,YAAY;oBACZ,CAAC,CAAC,gKAAgK;oBAClK,CAAC,CAAC,MAAM;wBACN,CAAC,CAAC,4BAA4B,KAAK,GAAG,SAAS,GAAG,EAAE,WAAW,KAAK,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,EAAE,+CAA+C,cAAc,IAAI,GAAG,iCAAiC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,WAAW,mCAAmC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,QAAQ,CAAC,CAAC,CAAC,kJAAkJ,CAAC,CAAC,CAAC,0CAA0C,0EAA0E,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,4CAA4C;wBACtyB,CAAC,CAAC,QAAQ;4BACR,CAAC,CAAC,8CAA8C,KAAK,GAAG,SAAS,GAAG,EAAE,kDAAkD,SAAS,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,wCAAwC,QAAQ,EAAE,oJAAoJ;4BACta,CAAC,CAAC,qIAAqI,CAAC;SACjJ;QACD,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC;KAC/B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"position.js","sourceRoot":"","sources":["../src/position.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,15 @@ export declare function classifyRevert(obs: RevertObservation): {
27
27
  status: PreflightStatus;
28
28
  note: string;
29
29
  };
30
+ /**
31
+ * Did the CHAIN refuse this, or did the RPC fail to ask it? Every failure used to read as "cannot pay",
32
+ * so one HTTP 502 on the first simulation reported a fully-exitable position as unexitable AND blamed
33
+ * the vault for it (measured through a proxy that failed exactly one call: one attempt made, the vault
34
+ * never asked, `exitableNow: "unknown"`, note "the refusal is the vault's").
35
+ * viem's own error chain separates them: a real revert carries a ContractFunctionRevertedError or an
36
+ * ExecutionRevertedError; a transport failure does not.
37
+ */
38
+ export declare function isRevert(e: unknown): boolean;
30
39
  /** Pulls the revert payload out of viem's error chain. Returns undefined for anything that is not a definite revert. */
31
40
  export declare function extractRevert(err: unknown): RevertObservation | undefined;
32
41
  export interface PreflightResult {
package/dist/preflight.js CHANGED
@@ -1,4 +1,4 @@
1
- import { BaseError, ContractFunctionRevertedError, } from "viem";
1
+ import { BaseError, ContractFunctionRevertedError, ExecutionRevertedError, } from "viem";
2
2
  import { erc4626Abi, knownRevertSelectors } from "./abi/erc4626.js";
3
3
  import { erc4626Chassis } from "./registry-schema.js";
4
4
  import { describeError } from "./redact.js";
@@ -34,6 +34,17 @@ export function classifyRevert(obs) {
34
34
  `insufficient asset balance at the depositor; a chassis-specific gate this client has not seen. Raw: ${obs.raw ?? "n/a"}.`,
35
35
  };
36
36
  }
37
+ /**
38
+ * Did the CHAIN refuse this, or did the RPC fail to ask it? Every failure used to read as "cannot pay",
39
+ * so one HTTP 502 on the first simulation reported a fully-exitable position as unexitable AND blamed
40
+ * the vault for it (measured through a proxy that failed exactly one call: one attempt made, the vault
41
+ * never asked, `exitableNow: "unknown"`, note "the refusal is the vault's").
42
+ * viem's own error chain separates them: a real revert carries a ContractFunctionRevertedError or an
43
+ * ExecutionRevertedError; a transport failure does not.
44
+ */
45
+ export function isRevert(e) {
46
+ return e instanceof BaseError && e.walk((x) => x instanceof ContractFunctionRevertedError || x instanceof ExecutionRevertedError) !== null;
47
+ }
37
48
  /** Pulls the revert payload out of viem's error chain. Returns undefined for anything that is not a definite revert. */
38
49
  export function extractRevert(err) {
39
50
  if (!(err instanceof BaseError))
@@ -127,8 +138,8 @@ export async function preflightDeposit(args) {
127
138
  const previewShares = await client.readContract({ address: vault.address, abi: erc4626Abi, functionName: "previewDeposit", args: [assets] });
128
139
  quotes.previewShares = `${formatAmount(previewShares, vault.shareDecimals)} ${vault.symbol}`;
129
140
  }
130
- catch {
131
- findings.push("previewDeposit() reverted; no shares quote");
141
+ catch (e) {
142
+ findings.push(isRevert(e) ? "previewDeposit() reverted; no shares quote" : `previewDeposit() could not be read, so no shares quote (the RPC failed, not the vault): ${describeError(e)}`);
132
143
  }
133
144
  // The verdict: simulate the real call from the real depositor.
134
145
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"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"}
package/dist/quote.js CHANGED
@@ -1,20 +1,28 @@
1
1
  import { erc4626Abi } from "./abi/erc4626.js";
2
2
  import { describeError } from "./redact.js";
3
3
  import { parseAmount, formatAmount } from "./units.js";
4
- import { preflightDeposit, extractRevert } from "./preflight.js";
4
+ import { preflightDeposit, extractRevert, isRevert } from "./preflight.js";
5
5
  export async function quoteDeposit(args) {
6
6
  const { vault, depositor, client } = args;
7
7
  const assets = parseAmount(args.assetsHuman, vault.asset.decimals, `deposit amount (${vault.asset.symbol})`);
8
8
  const pre = await preflightDeposit({ vault, depositor, assetsHuman: args.assetsHuman, client });
9
+ let previewError;
9
10
  const [previewShares, oneShareInAssets] = await Promise.all([
10
- client.readContract({ address: vault.address, abi: erc4626Abi, functionName: "previewDeposit", args: [assets] }).catch(() => undefined),
11
+ client.readContract({ address: vault.address, abi: erc4626Abi, functionName: "previewDeposit", args: [assets] }).catch((e) => {
12
+ previewError = e;
13
+ return undefined;
14
+ }),
11
15
  client.readContract({ address: vault.address, abi: erc4626Abi, functionName: "convertToAssets", args: [10n ** BigInt(vault.shareDecimals)] }),
12
16
  ]);
13
17
  const q = {
14
18
  vault: vault.symbol,
15
19
  depositor,
16
20
  amountUsdc: `${formatAmount(assets, vault.asset.decimals)} ${vault.asset.symbol}`,
17
- expectedShares: previewShares === undefined ? "unavailable (previewDeposit reverted)" : `${formatAmount(previewShares, vault.shareDecimals)} ${vault.symbol}`,
21
+ expectedShares: previewShares !== undefined
22
+ ? `${formatAmount(previewShares, vault.shareDecimals)} ${vault.symbol}`
23
+ : isRevert(previewError)
24
+ ? "unavailable (previewDeposit reverted)"
25
+ : `unavailable (previewDeposit could not be read; the RPC failed, not the vault: ${describeError(previewError)})`,
18
26
  sharePriceInAssets: `${formatAmount(oneShareInAssets, vault.asset.decimals)} ${vault.asset.symbol} per share`,
19
27
  preflight: pre,
20
28
  canProceed: pre.canDeposit,
@@ -49,14 +57,23 @@ export async function quoteWithdraw(args) {
49
57
  // "approve first" wording is wrong here (it was reused, and told an agent to approve USDC
50
58
  // when the vault simply had 0.80 USDC liquid — measured 2026-09-13 on a Fusion vault).
51
59
  const reason = obs.reason ?? "";
60
+ const said = reason || obs.selector || "no reason returned";
52
61
  if (toBurn !== undefined && held < toBurn) {
53
- note = `withdraw() reverted: the owner holds ${formatAmount(held, vault.shareDecimals)} ${vault.symbol} against ${formatAmount(toBurn, vault.shareDecimals)} needed — insufficient shares. (${reason || obs.selector})`;
62
+ note = `withdraw() reverted: the owner holds ${formatAmount(held, vault.shareDecimals)} ${vault.symbol} against ${formatAmount(toBurn, vault.shareDecimals)} needed — insufficient shares. (${said})`;
54
63
  }
55
- else if (/transfer amount exceeds balance|ERC20InsufficientBalance/i.test(reason) || liquid < assets) {
56
- note = `withdraw() reverted: the vault holds ${formatAmount(liquid, vault.asset.decimals)} ${vault.asset.symbol} liquid against ${formatAmount(assets, vault.asset.decimals)} requested — this chassis pays withdrawals from its own balance in the same block; the rest is deployed and needs the fund to unwind first. Withdraw at most the liquid amount now, or wait. maxWithdraw() (${maxW === undefined ? "reverted" : formatAmount(maxW, vault.asset.decimals)}) does not know this.`;
64
+ else if (vault.chassis === "fusion" && (/transfer amount exceeds balance|ERC20InsufficientBalance/i.test(reason) || liquid < assets)) {
65
+ // Only Fusion pays a withdrawal from the vault's own balance (and, where it has them, its
66
+ // instant-withdrawal fuses), so only there does idle balance below the amount explain a revert.
67
+ // A Morpho Vault V2 holds almost no idle asset and pays out of its markets: reading
68
+ // `liquid < assets` there reported every revert as this note and hid the real one (#78).
69
+ note = `withdraw() reverted ("${said}"): the vault holds ${formatAmount(liquid, vault.asset.decimals)} ${vault.asset.symbol} liquid against ${formatAmount(assets, vault.asset.decimals)} requested — this chassis pays withdrawals from its own balance in the same block; the rest is deployed and needs the fund to unwind first. Up to the liquid amount can come out now: ask the operator whether to withdraw that, another amount, or wait. maxWithdraw() (${maxW === undefined ? "reverted" : formatAmount(maxW, vault.asset.decimals)}) does not know this.`;
70
+ }
71
+ else if (vault.chassis === "morpho-v2") {
72
+ const shares = toBurn === undefined ? "previewWithdraw reverted, so the shares needed are unknown" : `the owner holds enough shares (${formatAmount(held, vault.shareDecimals)} against ${formatAmount(toBurn, vault.shareDecimals)} needed)`;
73
+ note = `withdraw() reverted "${said}" for ${formatAmount(assets, vault.asset.decimals)} ${vault.asset.symbol}; ${shares}. A Morpho Vault V2 pays a withdrawal from its idle ${vault.asset.symbol} and then through its liquidity adapter, so the revert can come from the vault or from a market it withdraws from; the reason above is the chain's own. A smaller amount may still pass: say so, and quote only an amount the operator names.`;
57
74
  }
58
75
  else {
59
- note = `withdraw() reverted "${reason || obs.selector}" — not a balance or liquidity shortfall; treat as a vault-side refusal.`;
76
+ note = `withdraw() reverted "${said}" — not a balance or liquidity shortfall; treat as a vault-side refusal.`;
60
77
  }
61
78
  }
62
79
  else {
package/dist/quote.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAwB,MAAM,gBAAgB,CAAC;AAqBjG,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAwF;IACzH,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7G,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IAChG,IAAI,YAAqB,CAAC;IAC1B,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;YACpI,YAAY,GAAG,CAAC,CAAC;YACjB,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;KAC9I,CAAC,CAAC;IACH,MAAM,CAAC,GAAiB;QACtB,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,SAAS;QACT,UAAU,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;QACjF,cAAc,EACZ,aAAa,KAAK,SAAS;YACzB,CAAC,CAAC,GAAG,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;YACvE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACtB,CAAC,CAAC,uCAAuC;gBACzC,CAAC,CAAC,iFAAiF,aAAa,CAAC,YAAY,CAAC,GAAG;QACvH,kBAAkB,EAAE,GAAG,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,YAAY;QAC7G,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM,EACJ,+MAA+M;QACjN,UAAU,EAAE,qEAAqE;KAClF,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,UAAU;QAAE,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC;IACxE,OAAO,CAAC,CAAC;AACX,CAAC;AAqBD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAoF;IACtH,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,oBAAoB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9G,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1G,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACxI,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACnI,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;KACzH,CAAC,CAAC;IACH,IAAI,SAAS,GAA+B,YAAY,CAAC;IACzD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACnJ,SAAS,GAAG,IAAI,CAAC;QACjB,IAAI,GAAG,4DAA4D,CAAC;IACtE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,GAAG,EAAE,CAAC;YACR,SAAS,GAAG,UAAU,CAAC;YACvB,2FAA2F;YAC3F,0FAA0F;YAC1F,uFAAuF;YACvF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,oBAAoB,CAAC;YAC5D,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;gBAC1C,IAAI,GAAG,wCAAwC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,YAAY,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,mCAAmC,IAAI,GAAG,CAAC;YACxM,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,2DAA2D,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;gBACvI,0FAA0F;gBAC1F,gGAAgG;gBAChG,oFAAoF;gBACpF,yFAAyF;gBACzF,IAAI,GAAG,yBAAyB,IAAI,uBAAuB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,mBAAmB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,4QAA4Q,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACxiB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,kCAAkC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;gBAC9O,IAAI,GAAG,wBAAwB,IAAI,SAAS,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,uDAAuD,KAAK,CAAC,KAAK,CAAC,MAAM,+OAA+O,CAAC;YAClb,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,wBAAwB,IAAI,0EAA0E,CAAC;YAChH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,gDAAgD,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACjF,CAAC;IACH,CAAC;IACD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,KAAK;QACL,UAAU,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;QACjF,YAAY,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;QAC9I,UAAU,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;QACxE,SAAS;QACT,IAAI;QACJ,gBAAgB,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;QACvF,QAAQ,EAAE;YACR,cAAc,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjE,IAAI,EAAE,sHAAsH;SAC7H;QACD,KAAK,EAAE,gFAAgF;QACvF,UAAU,EAAE,SAAS,KAAK,IAAI;KAC/B,CAAC;AACJ,CAAC"}
package/dist/redact.d.ts CHANGED
@@ -13,7 +13,7 @@
13
13
  * `Request body:` / `http(s)://…` content masked → the error's name.
14
14
  */
15
15
  export declare function describeError(e: unknown, max?: number): string;
16
- /** Register the source of known-secret values. Called by the MCP server at build time. */
16
+ /** Register the source of known-secret values. Called by `buildCommands()` before any command runs. */
17
17
  export declare function registerSecretSource(f: () => readonly string[]): void;
18
18
  /**
19
19
  * Mask literal secret VALUES wherever they appear, in any shape.
@@ -34,8 +34,8 @@ export declare function registerSecretSource(f: () => readonly string[]): void;
34
34
  * split across whitespace. No implementation can, and attempting it would over-redact wildly; those
35
35
  * are the residual the shape rules below exist for (review).
36
36
  *
37
- * ⚠️ VALUE MASKING IS A PROPERTY OF THE SERVER, NOT OF THIS LIBRARY. `registerSecretSource` is
38
- * called by the MCP server in `buildServer()`. A consumer importing `describeError`/`redactEndpoints`
37
+ * ⚠️ VALUE MASKING IS A PROPERTY OF THE COMMANDS, NOT OF THIS LIBRARY. `registerSecretSource` is
38
+ * called in `buildCommands()`. A consumer importing `describeError`/`redactEndpoints`
39
39
  * directly gets `secretSource = () => []` and therefore the shape rules only — which degrades safely
40
40
  * and is the documented backstop, but is not inherited.
41
41
  */
package/dist/redact.js CHANGED
@@ -35,7 +35,7 @@ export function describeError(e, max = 200) {
35
35
  * process (tests do it), and a snapshot taken at import time would go stale.
36
36
  */
37
37
  let secretSource = () => [];
38
- /** Register the source of known-secret values. Called by the MCP server at build time. */
38
+ /** Register the source of known-secret values. Called by `buildCommands()` before any command runs. */
39
39
  export function registerSecretSource(f) {
40
40
  secretSource = f;
41
41
  }
@@ -58,8 +58,8 @@ export function registerSecretSource(f) {
58
58
  * split across whitespace. No implementation can, and attempting it would over-redact wildly; those
59
59
  * are the residual the shape rules below exist for (review).
60
60
  *
61
- * ⚠️ VALUE MASKING IS A PROPERTY OF THE SERVER, NOT OF THIS LIBRARY. `registerSecretSource` is
62
- * called by the MCP server in `buildServer()`. A consumer importing `describeError`/`redactEndpoints`
61
+ * ⚠️ VALUE MASKING IS A PROPERTY OF THE COMMANDS, NOT OF THIS LIBRARY. `registerSecretSource` is
62
+ * called in `buildCommands()`. A consumer importing `describeError`/`redactEndpoints`
63
63
  * directly gets `secretSource = () => []` and therefore the shape rules only — which degrades safely
64
64
  * and is the documented backstop, but is not inherited.
65
65
  */