@dfm-fi/agent 0.2.707 → 0.2.730

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 (35) hide show
  1. package/dist/create-flow.d.ts +25 -0
  2. package/dist/create-flow.d.ts.map +1 -1
  3. package/dist/create-flow.js +59 -19
  4. package/dist/create-flow.js.map +1 -1
  5. package/dist/create-flow.metadata.test.d.ts +2 -0
  6. package/dist/create-flow.metadata.test.d.ts.map +1 -0
  7. package/dist/create-flow.metadata.test.js +100 -0
  8. package/dist/create-flow.metadata.test.js.map +1 -0
  9. package/dist/manager-flow.d.ts +12 -2
  10. package/dist/manager-flow.d.ts.map +1 -1
  11. package/dist/manager-flow.js +48 -5
  12. package/dist/manager-flow.js.map +1 -1
  13. package/dist/manager-flow.reconfigure.test.d.ts +2 -0
  14. package/dist/manager-flow.reconfigure.test.d.ts.map +1 -0
  15. package/dist/manager-flow.reconfigure.test.js +153 -0
  16. package/dist/manager-flow.reconfigure.test.js.map +1 -0
  17. package/dist/mcp-server.d.ts.map +1 -1
  18. package/dist/mcp-server.js +8 -2
  19. package/dist/mcp-server.js.map +1 -1
  20. package/dist/recovery-flow.d.ts.map +1 -1
  21. package/dist/recovery-flow.deadleg.test.d.ts +2 -0
  22. package/dist/recovery-flow.deadleg.test.d.ts.map +1 -0
  23. package/dist/recovery-flow.deadleg.test.js +143 -0
  24. package/dist/recovery-flow.deadleg.test.js.map +1 -0
  25. package/dist/recovery-flow.js +50 -1
  26. package/dist/recovery-flow.js.map +1 -1
  27. package/dist/zap-v2-flow.d.ts +13 -0
  28. package/dist/zap-v2-flow.d.ts.map +1 -1
  29. package/dist/zap-v2-flow.js +71 -18
  30. package/dist/zap-v2-flow.js.map +1 -1
  31. package/dist/zap-v2-flow.pending.test.d.ts +2 -0
  32. package/dist/zap-v2-flow.pending.test.d.ts.map +1 -0
  33. package/dist/zap-v2-flow.pending.test.js +119 -0
  34. package/dist/zap-v2-flow.pending.test.js.map +1 -0
  35. package/package.json +1 -1
@@ -23,6 +23,8 @@
23
23
  import type { AgentConfig } from './config.js';
24
24
  import type { DfmApiClient } from './api-client.js';
25
25
  import type { CreateAssetInput } from './types.js';
26
+ import { signBase64Transaction } from './signing.js';
27
+ import { submitSignedTx, submitViaBackendConfirmed } from './submit.js';
26
28
  export interface LaunchVaultParams {
27
29
  name: string;
28
30
  symbol: string;
@@ -44,8 +46,31 @@ export interface LaunchVaultResult {
44
46
  confirmError?: string;
45
47
  /** board #47: tx sig of the share-mint Metaplex metadata attach (undefined if it was skipped/failed — non-fatal). */
46
48
  metadataSignature?: string;
49
+ /** board #47: the reason the metadata attach failed (surfaced, not swallowed) so the operator can retry. */
50
+ metadataError?: string;
47
51
  message: string;
48
52
  }
53
+ /**
54
+ * #47 — attach Metaplex name/symbol/uri to a vault's share mint so explorers/
55
+ * wallets show the DTF instead of "SPL Token". Uses the SAME dual submit path as
56
+ * the create tx (backend-confirmed when no client RPC, else direct).
57
+ *
58
+ * 🐛 THE BUG this fixes: the prior inline version called `submitSignedTx` directly,
59
+ * which THROWS when `config.rpcUrl` is unset — but the MCP's DEFAULT is backend
60
+ * mode (no RPC) — and the throw was swallowed, so EVERY agent-launched vault's
61
+ * share token shipped with no name/ticker. Now it backend-submits via the
62
+ * `preparedTxId`, retries transient failures, and SURFACES the error. Idempotent
63
+ * (a re-attach reverts "already in use" = already attached). Non-fatal to launch.
64
+ * `_deps` injects sign/submit for tests; real defaults → production unchanged.
65
+ */
66
+ export declare function attachShareMintMetadata(config: AgentConfig, api: DfmApiClient, vaultAddress: string, _deps?: {
67
+ signBase64Transaction?: typeof signBase64Transaction;
68
+ submitViaBackendConfirmed?: typeof submitViaBackendConfirmed;
69
+ submitSignedTx?: typeof submitSignedTx;
70
+ }): Promise<{
71
+ signature?: string;
72
+ error?: string;
73
+ }>;
49
74
  /**
50
75
  * Validate the basket client-side BEFORE hitting the network — fast, clear
51
76
  * failures the agent can fix without a round-trip. (The API re-validates
@@ -1 +1 @@
1
- {"version":3,"file":"create-flow.d.ts","sourceRoot":"","sources":["../src/create-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qHAAqH;IACrH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAsBpE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAiH5B"}
1
+ {"version":3,"file":"create-flow.d.ts","sourceRoot":"","sources":["../src/create-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qHAAqH;IACrH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4GAA4G;IAC5G,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,YAAY,EACjB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE;IACN,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACrD,yBAAyB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IAC7D,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;CACxC,GACA,OAAO,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA0CjD;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAsBpE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAoG5B"}
@@ -1,5 +1,54 @@
1
1
  import { signBase64Transaction } from './signing.js';
2
2
  import { submitSignedTx, submitViaBackendConfirmed } from './submit.js';
3
+ /**
4
+ * #47 — attach Metaplex name/symbol/uri to a vault's share mint so explorers/
5
+ * wallets show the DTF instead of "SPL Token". Uses the SAME dual submit path as
6
+ * the create tx (backend-confirmed when no client RPC, else direct).
7
+ *
8
+ * 🐛 THE BUG this fixes: the prior inline version called `submitSignedTx` directly,
9
+ * which THROWS when `config.rpcUrl` is unset — but the MCP's DEFAULT is backend
10
+ * mode (no RPC) — and the throw was swallowed, so EVERY agent-launched vault's
11
+ * share token shipped with no name/ticker. Now it backend-submits via the
12
+ * `preparedTxId`, retries transient failures, and SURFACES the error. Idempotent
13
+ * (a re-attach reverts "already in use" = already attached). Non-fatal to launch.
14
+ * `_deps` injects sign/submit for tests; real defaults → production unchanged.
15
+ */
16
+ export async function attachShareMintMetadata(config, api, vaultAddress, _deps) {
17
+ const sign = _deps?.signBase64Transaction ?? signBase64Transaction;
18
+ const backendSubmit = _deps?.submitViaBackendConfirmed ?? submitViaBackendConfirmed;
19
+ const directSubmit = _deps?.submitSignedTx ?? submitSignedTx;
20
+ let signature;
21
+ let error;
22
+ for (let attempt = 1; attempt <= 3 && !signature; attempt++) {
23
+ try {
24
+ const metaPrepared = await api.prepareCreateVaultMetadata(vaultAddress);
25
+ const metaSigned = sign(config, metaPrepared.transaction);
26
+ if (!config.rpcUrl) {
27
+ if (!metaPrepared.preparedTxId) {
28
+ throw new Error('No preparedTxId on metadata/prepare — cannot backend-submit (set HELIUS_RPC_URL for direct submit).');
29
+ }
30
+ const { signature: sig, confirmed } = await backendSubmit({ api, preparedTxId: metaPrepared.preparedTxId }, metaSigned);
31
+ if (!confirmed)
32
+ throw new Error(`metadata tx ${sig} broadcast but did not confirm`);
33
+ signature = sig;
34
+ }
35
+ else {
36
+ signature = await directSubmit(config, metaSigned, metaPrepared.blockhash, metaPrepared.lastValidBlockHeight);
37
+ }
38
+ error = undefined;
39
+ }
40
+ catch (e) {
41
+ error = e.message;
42
+ // Idempotent: a re-attach onto an existing metadata account reverts "already
43
+ // in use" — treat that as already-attached (clear the error, stop).
44
+ if (/already in use|already initialized|0x0\b|custom program error: 0x0/i.test(error)) {
45
+ error = undefined;
46
+ break;
47
+ }
48
+ }
49
+ }
50
+ return { signature, error };
51
+ }
3
52
  const MAX_ASSETS = 15; // mainnet basket cap (zap-v2 OPEN tx ceiling)
4
53
  /**
5
54
  * Validate the basket client-side BEFORE hitting the network — fast, clear
@@ -92,23 +141,11 @@ export async function runLaunchVault(config, api, params) {
92
141
  `or it will need a chain reconcile.`,
93
142
  };
94
143
  }
95
- // 5. METADATA (board #47) — attach Metaplex name/symbol/uri to the share mint so
96
- // explorers/wallets show the DTF instead of "Unknown Token". Creator-signed +
97
- // creator-paid (~0.0056 SOL rent); the vault must already exist on-chain (it does,
98
- // step 3 confirmed). Best-effort + non-fatal: the vault is fully usable without it,
99
- // and it's idempotent (a 2nd call reverts, so a retry is safe). If it fails the
100
- // operator can re-run POST /vaults/:address/metadata/prepare later.
101
- let metadataSignature;
102
- try {
103
- const metaPrepared = await api.prepareCreateVaultMetadata(prepared.vaultAddress);
104
- const metaSigned = signBase64Transaction(config, metaPrepared.transaction);
105
- metadataSignature = await submitSignedTx(config, metaSigned, metaPrepared.blockhash, metaPrepared.lastValidBlockHeight);
106
- }
107
- catch (e) {
108
- // Swallow: metadata is cosmetic, the launch already succeeded.
109
- metadataSignature = undefined;
110
- void e;
111
- }
144
+ // 5. METADATA (board #47) — attach Metaplex name/symbol/uri to the share mint
145
+ // (the dual-submit fix lives in attachShareMintMetadata; non-fatal + surfaced).
146
+ const meta = await attachShareMintMetadata(config, api, prepared.vaultAddress);
147
+ const metadataSignature = meta.signature;
148
+ const metadataError = meta.error;
112
149
  return {
113
150
  ok: true,
114
151
  vault: prepared.vaultAddress,
@@ -116,11 +153,14 @@ export async function runLaunchVault(config, api, params) {
116
153
  vaultMint: prepared.vaultMint,
117
154
  vaultIndex: prepared.vaultIndex,
118
155
  metadataSignature,
156
+ metadataError,
119
157
  message: `Vault "${params.name}" (${params.symbol}) launched: ${prepared.vaultAddress} ` +
120
158
  `(index ${prepared.vaultIndex}). Recorded. ` +
121
159
  (metadataSignature
122
- ? `Share-mint metadata attached (#47). `
123
- : `Share-mint metadata pending retry POST /vaults/${prepared.vaultAddress}/metadata/prepare. `) +
160
+ ? `Share-mint metadata attached (#47, tx ${metadataSignature.slice(0, 16)}…). `
161
+ : `⚠️ Share-mint metadata NOT attached${metadataError ? ` (${metadataError})` : ''} — ` +
162
+ `the share token will show no name/ticker. Retry by calling launch_vault's metadata step ` +
163
+ `again or POST /vaults/${prepared.vaultAddress}/metadata/prepare. `) +
124
164
  `Fund the first deposit ≥ ~$12 to clear the $10 floor.`,
125
165
  };
126
166
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-flow.js","sourceRoot":"","sources":["../src/create-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-flow.js","sourceRoot":"","sources":["../src/create-flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-flow.metadata.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-flow.metadata.test.d.ts","sourceRoot":"","sources":["../src/create-flow.metadata.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * #47 regression (runnable: `npx tsx agent/src/create-flow.metadata.test.ts`).
3
+ *
4
+ * THE BUG: a vault launched via the MCP shipped with NO share-mint metadata
5
+ * ("SPL Token", no name/ticker). Root cause: the metadata attach called
6
+ * `submitSignedTx` directly, which THROWS when `config.rpcUrl` is unset — and the
7
+ * MCP's DEFAULT is backend-broadcast mode (no RPC) — and the throw was swallowed.
8
+ * So in backend mode the metadata tx could NEVER be submitted.
9
+ *
10
+ * This locks the fix: with no client RPC, `attachShareMintMetadata` must submit via
11
+ * the BACKEND path (the `preparedTxId`), NOT `submitSignedTx`; it must surface a
12
+ * missing-preparedTxId as an error (not silently lose it); and an "already in use"
13
+ * revert is idempotent (treated as already-attached, no error). sign/submit are
14
+ * injected so no real keypair/RPC is needed.
15
+ */
16
+ import { attachShareMintMetadata } from './create-flow.js';
17
+ let failures = 0;
18
+ function assert(cond, msg) {
19
+ if (!cond) {
20
+ console.error(` ✗ ${msg}`);
21
+ failures++;
22
+ }
23
+ else {
24
+ console.log(` ✓ ${msg}`);
25
+ }
26
+ }
27
+ const VAULT = 'Vau1t1111111111111111111111111111111111111';
28
+ const sign = (_c, t) => t; // no real keypair
29
+ async function caseBackendPath() {
30
+ console.log('case: no client RPC → backend-submit via preparedTxId (NOT submitSignedTx)');
31
+ let directCalled = 0;
32
+ let backendCalled = 0;
33
+ const api = {
34
+ prepareCreateVaultMetadata: async () => ({
35
+ transaction: 'BASE64TX',
36
+ blockhash: 'bh',
37
+ lastValidBlockHeight: 1,
38
+ preparedTxId: 'pid-123',
39
+ }),
40
+ };
41
+ const res = await attachShareMintMetadata({ rpcUrl: undefined }, api, VAULT, {
42
+ signBase64Transaction: sign,
43
+ submitViaBackendConfirmed: (async (opts) => {
44
+ backendCalled++;
45
+ assert(opts.preparedTxId === 'pid-123', 'backend got the preparedTxId');
46
+ return { signature: 'metaSig', confirmed: true };
47
+ }),
48
+ submitSignedTx: (async () => {
49
+ directCalled++;
50
+ throw new Error('submitSignedTx must NOT be called in backend mode (the old bug)');
51
+ }),
52
+ });
53
+ assert(res.signature === 'metaSig', `returns the metadata signature (got '${res.signature}')`);
54
+ assert(res.error === undefined, 'no error');
55
+ assert(backendCalled === 1, 'backend submit called once');
56
+ assert(directCalled === 0, 'submitSignedTx was NOT called');
57
+ }
58
+ async function caseNoPreparedTxId() {
59
+ console.log('case: no RPC + no preparedTxId → surfaced error, not a silent loss');
60
+ const api = {
61
+ prepareCreateVaultMetadata: async () => ({
62
+ transaction: 'BASE64TX',
63
+ blockhash: 'bh',
64
+ lastValidBlockHeight: 1,
65
+ // preparedTxId missing
66
+ }),
67
+ };
68
+ const res = await attachShareMintMetadata({ rpcUrl: undefined }, api, VAULT, { signBase64Transaction: sign });
69
+ assert(res.signature === undefined, 'no signature');
70
+ assert(!!res.error && /preparedTxId/i.test(res.error), `error mentions preparedTxId (got '${res.error}')`);
71
+ }
72
+ async function caseIdempotent() {
73
+ console.log('case: "already in use" revert → treated as already-attached (no error)');
74
+ const api = {
75
+ prepareCreateVaultMetadata: async () => ({
76
+ transaction: 'BASE64TX',
77
+ blockhash: 'bh',
78
+ lastValidBlockHeight: 1,
79
+ preparedTxId: 'pid-123',
80
+ }),
81
+ };
82
+ const res = await attachShareMintMetadata({ rpcUrl: undefined }, api, VAULT, {
83
+ signBase64Transaction: sign,
84
+ submitViaBackendConfirmed: (async () => {
85
+ throw new Error('Allocate: account Address already in use');
86
+ }),
87
+ });
88
+ assert(res.error === undefined, `idempotent revert cleared the error (got '${res.error}')`);
89
+ }
90
+ (async () => {
91
+ await caseBackendPath();
92
+ await caseNoPreparedTxId();
93
+ await caseIdempotent();
94
+ if (failures > 0) {
95
+ console.error(`\n#47 regression FAILED (${failures} assertion(s))`);
96
+ process.exit(1);
97
+ }
98
+ console.log('\n#47 regression PASSED');
99
+ })();
100
+ //# sourceMappingURL=create-flow.metadata.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-flow.metadata.test.js","sourceRoot":"","sources":["../src/create-flow.metadata.test.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@
20
20
  */
21
21
  import type { AgentConfig } from './config.js';
22
22
  import type { DfmApiClient } from './api-client.js';
23
- import type { CreateAssetInput, ReconfigureTargetInput } from './types.js';
23
+ import type { CreateAssetInput, ConvergeLegTx, ReconfigureTargetInput } from './types.js';
24
24
  export interface UpdateAssetsResult {
25
25
  ok: boolean;
26
26
  vault: string;
@@ -127,5 +127,15 @@ export declare function runRebalanceToTargets(config: AgentConfig, api: DfmApiCl
127
127
  * passes (`VaultAssetsNotDecommissioned`/`MintNotInBasket` avoided). A config
128
128
  * change ALWAYS converges — never config-only.
129
129
  */
130
- export declare function runReconfigure(config: AgentConfig, api: DfmApiClient, vault: string, targets: ReconfigureTargetInput[], maxSlippageBps?: number): Promise<ReconfigureResult>;
130
+ export declare function runReconfigure(config: AgentConfig, api: DfmApiClient, vault: string, targets: ReconfigureTargetInput[], maxSlippageBps?: number, _deps?: {
131
+ submitConvergeLegs?: typeof submitConvergeLegs;
132
+ runUpdateVaultAssets?: typeof runUpdateVaultAssets;
133
+ }): Promise<ReconfigureResult>;
134
+ /**
135
+ * Sign + submit a list of pre-prepared converge legs (each its OWN blockhash)
136
+ * IN ORDER, sleeping the 5s on-chain rebalance cooldown between legs. Each leg is
137
+ * an admin-signed `execute_rebalance` (on-chain velocity-ceiling + min_out guarded, oracle-free).
138
+ */
139
+ declare function submitConvergeLegs(config: AgentConfig, api: DfmApiClient, legs: ConvergeLegTx[], preparedTxIds?: string[]): Promise<string[]>;
140
+ export {};
131
141
  //# sourceMappingURL=manager-flow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager-flow.d.ts","sourceRoot":"","sources":["../src/manager-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager-flow.d.ts","sourceRoot":"","sources":["../src/manager-flow.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { signBase64Transaction } from './signing.js';
2
- import { submitSignedTx } from './submit.js';
2
+ import { submitSignedTx, BlockhashExpiredError } from './submit.js';
3
3
  /** On-chain rebalance cooldown (5s) — keep a small margin so back-to-back legs
4
4
  * never trip `HARD_MIN_REBALANCE_INTERVAL_SECS`. */
5
5
  const REBALANCE_COOLDOWN_MS = 6_000;
@@ -168,12 +168,55 @@ export async function runRebalanceToTargets(config, api, vault, maxSlippageBps)
168
168
  * passes (`VaultAssetsNotDecommissioned`/`MintNotInBasket` avoided). A config
169
169
  * change ALWAYS converges — never config-only.
170
170
  */
171
- export async function runReconfigure(config, api, vault, targets, maxSlippageBps) {
171
+ export async function runReconfigure(config, api, vault, targets, maxSlippageBps,
172
+ // TEST SEAM (production-unaffected): the two sub-steps that touch the real
173
+ // signing/RPC stack are injectable so the resumable-drain control flow can be
174
+ // unit-tested without a wallet or a validator. Both default to the real
175
+ // functions, so every production caller is byte-identical.
176
+ _deps) {
177
+ const submitLegs = _deps?.submitConvergeLegs ?? submitConvergeLegs;
178
+ const updateAssets = _deps?.runUpdateVaultAssets ?? runUpdateVaultAssets;
172
179
  // Client-side guard mirrors the API + contract (Σ bps == 10000, ≤15, no dupes).
173
180
  validateManagerBasket(targets.map((t) => ({ mint: t.mint, symbol: t.symbol, mintBps: t.allocationBps })));
174
181
  const prepared = await api.prepareReconfigure(vault, targets, maxSlippageBps);
175
- // (1) Drain the removed assets to ~0 (each its own admin-signed execute_rebalance).
176
- const drainSignatures = await submitConvergeLegs(config, api, prepared.drainTxs, prepared.preparedTxIds);
182
+ // (1) Drain the removed assets to ~0, RESILIENT to mid-sequence blockhash expiry
183
+ // (#57 repro 3). The drain legs are pre-prepared with blockhashes from the
184
+ // same instant, but submit sequentially over ~50s+, so late legs could expire
185
+ // ("Blockhash not found") leaving a PARTIAL drain. That partial state is
186
+ // CONSISTENT + RESUMABLE — `update_vault_assets` (step 2) hasn't run, so the
187
+ // config is still the OLD basket — and `prepareReconfigure` is IDEMPOTENT
188
+ // (it recomputes drains from CURRENT holdings, skipping already-drained ~0
189
+ // legs). So on a transient expiry we re-prepare the REMAINING drains afresh
190
+ // and continue, instead of throwing a half-done reconfigure. A non-transient
191
+ // error (a real revert) is NOT retried — it surfaces the resumable guidance.
192
+ const drainSignatures = [];
193
+ let drainTxs = prepared.drainTxs;
194
+ let drainTxIds = prepared.preparedTxIds;
195
+ const MAX_DRAIN_ROUNDS = 4;
196
+ for (let round = 1; drainTxs.length > 0; round++) {
197
+ try {
198
+ const sigs = await submitLegs(config, api, drainTxs, drainTxIds);
199
+ drainSignatures.push(...sigs);
200
+ break; // all remaining drains landed
201
+ }
202
+ catch (e) {
203
+ const msg = e instanceof Error ? e.message : String(e);
204
+ const transient = e instanceof BlockhashExpiredError ||
205
+ /blockhash.*not found|block height exceeded|was not confirmed|expired/i.test(msg);
206
+ if (!transient || round >= MAX_DRAIN_ROUNDS) {
207
+ throw new Error(`${msg}\nReconfigure drain did not finish — but the basket CONFIG was NOT changed ` +
208
+ `(update_vault_assets runs only AFTER all drains), so holdings are consistent and this ` +
209
+ `is RESUMABLE: call reconfigure again (same targets) to drain the remainder, then it ` +
210
+ `proceeds. No rollback needed; no value left the basket.`);
211
+ }
212
+ // Transient expiry mid-sequence — re-prepare the REMAINING drains (fresh
213
+ // blockhashes) from current holdings and retry. Already-drained legs are ~0
214
+ // now, so the recomputed plan skips them.
215
+ const reprepared = await api.prepareReconfigure(vault, targets, maxSlippageBps);
216
+ drainTxs = reprepared.drainTxs;
217
+ drainTxIds = reprepared.preparedTxIds;
218
+ }
219
+ }
177
220
  // (2) Full-replace the basket targets. After the drains confirm, the removed
178
221
  // mints hold ~0 so update_vault_assets accepts dropping them. Reuse the
179
222
  // existing assets-prepare → sign → submit → confirm path.
@@ -182,7 +225,7 @@ export async function runReconfigure(config, api, vault, targets, maxSlippageBps
182
225
  symbol: t.symbol,
183
226
  mintBps: t.allocationBps,
184
227
  }));
185
- const updateRes = await runUpdateVaultAssets(config, api, vault, newAssets);
228
+ const updateRes = await updateAssets(config, api, vault, newAssets);
186
229
  return {
187
230
  ok: true,
188
231
  vault,
@@ -1 +1 @@
1
- {"version":3,"file":"manager-flow.js","sourceRoot":"","sources":["../src/manager-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager-flow.js","sourceRoot":"","sources":["../src/manager-flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=manager-flow.reconfigure.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager-flow.reconfigure.test.d.ts","sourceRoot":"","sources":["../src/manager-flow.reconfigure.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * #57 reconfigure-drain resilience regression
3
+ * (runnable: `npx tsx agent/src/manager-flow.reconfigure.test.ts`).
4
+ *
5
+ * The agent package has no jest runner — this is a self-contained assertion
6
+ * script (exit 1 on failure), same pattern as `zap-v2-flow.pending.test.ts`.
7
+ *
8
+ * Locks the #57 (commit f99b870) `runReconfigure` drain control flow that shipped
9
+ * WITHOUT a named regression test. The fix makes the removed-asset DRAIN phase
10
+ * resilient to a mid-sequence blockhash expiry:
11
+ *
12
+ * CASE A (TRANSIENT → re-prep): a `BlockhashExpiredError` from `submitConvergeLegs`
13
+ * mid-sequence is RECOVERABLE — `update_vault_assets` (the basket drop) has NOT
14
+ * run yet, so holdings are consistent and `prepareReconfigure` is idempotent.
15
+ * The driver re-calls `prepareReconfigure` for the REMAINING drains (≤4 rounds)
16
+ * and continues. `update_vault_assets` runs exactly ONCE, only AFTER all drains.
17
+ *
18
+ * CASE B (NON-TRANSIENT → NO retry): a real revert (e.g. `0x1793`) is NOT retried
19
+ * — `prepareReconfigure` is called exactly ONCE (no double-drain), `runReconfigure`
20
+ * rejects, and the error message contains "RESUMABLE" guidance.
21
+ *
22
+ * To drive `submitConvergeLegs`'s outcome without the real signing/RPC stack, the
23
+ * test uses the minimal `_deps` seam added to `runReconfigure` (injectable
24
+ * `submitConvergeLegs` + `runUpdateVaultAssets`, both defaulting to the real fns so
25
+ * production is byte-identical).
26
+ */
27
+ import { runReconfigure } from './manager-flow.js';
28
+ import { BlockhashExpiredError } from './submit.js';
29
+ const VAULT = 'Vau1t1111111111111111111111111111111111111';
30
+ // Two real-ish mints; allocations must sum to 10000 (validateManagerBasket).
31
+ const MINT_KEEP = 'So11111111111111111111111111111111111111112';
32
+ const MINT_ADD = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
33
+ const TARGETS = [
34
+ { mint: MINT_KEEP, symbol: 'SOL', allocationBps: 6000 },
35
+ { mint: MINT_ADD, symbol: 'USDC', allocationBps: 4000 },
36
+ ];
37
+ function drainLeg(i) {
38
+ return {
39
+ kind: 'drain',
40
+ inputMint: `Drain${i}1111111111111111111111111111111111111`.slice(0, 43),
41
+ outputMint: MINT_ADD,
42
+ amountIn: '1000000',
43
+ minOut: '0',
44
+ valueUsdc: 1,
45
+ slippageBps: 300,
46
+ transaction: 'AA==',
47
+ blockhash: '11111111111111111111111111111111',
48
+ lastValidBlockHeight: 1,
49
+ };
50
+ }
51
+ function reconfigureResponse(drainTxs) {
52
+ return {
53
+ vaultAddress: VAULT,
54
+ gavUsdc: 100,
55
+ plan: {
56
+ diff: { reweight: [], add: [MINT_ADD], remove: ['DriX'], isCompositionChange: true },
57
+ steps: [],
58
+ reweight: [],
59
+ maxSlippageBps: 300,
60
+ gavUsdc: 100,
61
+ },
62
+ drainTxs,
63
+ transactions: drainTxs.map((d) => d.transaction),
64
+ preparedTxIds: drainTxs.map((_, i) => `prep-${i}`),
65
+ note: '',
66
+ };
67
+ }
68
+ let failures = 0;
69
+ function assert(cond, msg) {
70
+ if (!cond) {
71
+ console.error(` ✗ ${msg}`);
72
+ failures++;
73
+ }
74
+ else {
75
+ console.log(` ✓ ${msg}`);
76
+ }
77
+ }
78
+ async function caseTransient() {
79
+ console.log('case A: TRANSIENT blockhash expiry mid-drain → re-prep remaining + continue');
80
+ let prepareCalls = 0;
81
+ // Round 1: two drain legs. Round 2 (after the transient): one remaining leg.
82
+ const api = {
83
+ prepareReconfigure: async () => {
84
+ prepareCalls++;
85
+ return prepareCalls === 1
86
+ ? reconfigureResponse([drainLeg(1), drainLeg(2)])
87
+ : reconfigureResponse([drainLeg(2)]); // one leg left
88
+ },
89
+ };
90
+ let submitCalls = 0;
91
+ let updateCalls = 0;
92
+ const submitConvergeLegs = async (_c, _a, legs) => {
93
+ submitCalls++;
94
+ if (submitCalls === 1) {
95
+ // First call: expire mid-sequence (a transient, recoverable failure).
96
+ throw new BlockhashExpiredError('Blockhash not found / window expired');
97
+ }
98
+ // Second call (round 2): the remaining drains land.
99
+ return legs.map((_, i) => `drainSig-${submitCalls}-${i}`);
100
+ };
101
+ const runUpdateVaultAssets = async () => {
102
+ updateCalls++;
103
+ return { ok: true, vault: VAULT, signature: 'updateSig111', message: 'updated' };
104
+ };
105
+ const res = await runReconfigure({}, api, VAULT, TARGETS, 300, { submitConvergeLegs: submitConvergeLegs, runUpdateVaultAssets: runUpdateVaultAssets });
106
+ assert(prepareCalls === 2, `prepareReconfigure called 2× (re-prepped remaining drains) — got ${prepareCalls}`);
107
+ assert(submitCalls === 2, `submitConvergeLegs called 2× (retry after transient) — got ${submitCalls}`);
108
+ assert(updateCalls === 1, `update_vault_assets ran exactly 1× — got ${updateCalls}`);
109
+ assert(res.ok === true, `result.ok === true — got ${res.ok}`);
110
+ // The basket drop ran AFTER the drains completed (1 update, both drain rounds done).
111
+ assert(res.drainSignatures.length === 1, `drain signatures from the successful round — got ${res.drainSignatures.length}`);
112
+ }
113
+ async function caseNonTransient() {
114
+ console.log('case B: NON-TRANSIENT revert mid-drain → NO retry, reject with RESUMABLE guidance');
115
+ let prepareCalls = 0;
116
+ const api = {
117
+ prepareReconfigure: async () => {
118
+ prepareCalls++;
119
+ return reconfigureResponse([drainLeg(1), drainLeg(2)]);
120
+ },
121
+ };
122
+ let updateCalls = 0;
123
+ const submitConvergeLegs = async () => {
124
+ // A real on-chain revert — NOT transient. Must NOT be retried.
125
+ throw new Error('custom program error: 0x1793');
126
+ };
127
+ const runUpdateVaultAssets = async () => {
128
+ updateCalls++;
129
+ throw new Error('update_vault_assets MUST NOT run after a failed drain');
130
+ };
131
+ let caught;
132
+ try {
133
+ await runReconfigure({}, api, VAULT, TARGETS, 300, { submitConvergeLegs: submitConvergeLegs, runUpdateVaultAssets: runUpdateVaultAssets });
134
+ }
135
+ catch (e) {
136
+ caught = e;
137
+ }
138
+ assert(caught !== undefined, 'runReconfigure rejected (did not silently succeed)');
139
+ assert(prepareCalls === 1, `prepareReconfigure called exactly 1× (NO retry → no double-drain) — got ${prepareCalls}`);
140
+ assert(updateCalls === 0, `update_vault_assets did NOT run (basket config unchanged) — got ${updateCalls}`);
141
+ assert(!!caught && /RESUMABLE/.test(caught.message), `error message carries "RESUMABLE" guidance — got: ${caught?.message?.slice(0, 60)}…`);
142
+ assert(!!caught && /0x1793/.test(caught.message), 'error message preserves the original on-chain revert');
143
+ }
144
+ (async () => {
145
+ await caseTransient();
146
+ await caseNonTransient();
147
+ if (failures > 0) {
148
+ console.error(`\n#57 reconfigure-drain regression FAILED (${failures} assertion(s))`);
149
+ process.exit(1);
150
+ }
151
+ console.log('\n#57 reconfigure-drain regression PASSED');
152
+ })();
153
+ //# sourceMappingURL=manager-flow.reconfigure.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager-flow.reconfigure.test.js","sourceRoot":"","sources":["../src/manager-flow.reconfigure.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AAquBA;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAMjD"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AA2uBA;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAMjD"}