@dfm-fi/agent 0.2.1846 → 0.2.1849
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -400
- package/package.json +4 -6
- package/dist/api-client.d.ts.map +0 -1
- package/dist/api-client.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/control-flow.test.d.ts +0 -2
- package/dist/control-flow.test.d.ts.map +0 -1
- package/dist/control-flow.test.js +0 -259
- package/dist/control-flow.test.js.map +0 -1
- package/dist/create-flow.d.ts.map +0 -1
- package/dist/create-flow.js.map +0 -1
- package/dist/create-flow.metadata.test.d.ts +0 -2
- package/dist/create-flow.metadata.test.d.ts.map +0 -1
- package/dist/create-flow.metadata.test.js +0 -100
- package/dist/create-flow.metadata.test.js.map +0 -1
- package/dist/examples/fund-app-wallet.d.ts +0 -2
- package/dist/examples/fund-app-wallet.d.ts.map +0 -1
- package/dist/examples/fund-app-wallet.js +0 -39
- package/dist/examples/fund-app-wallet.js.map +0 -1
- package/dist/examples/launch-deposit-redeem.d.ts +0 -2
- package/dist/examples/launch-deposit-redeem.d.ts.map +0 -1
- package/dist/examples/launch-deposit-redeem.js +0 -150
- package/dist/examples/launch-deposit-redeem.js.map +0 -1
- package/dist/examples/list-and-status.d.ts +0 -2
- package/dist/examples/list-and-status.d.ts.map +0 -1
- package/dist/examples/list-and-status.js +0 -66
- package/dist/examples/list-and-status.js.map +0 -1
- package/dist/examples/rebalance-drill.d.ts +0 -2
- package/dist/examples/rebalance-drill.d.ts.map +0 -1
- package/dist/examples/rebalance-drill.js +0 -20
- package/dist/examples/rebalance-drill.js.map +0 -1
- package/dist/examples/recover-app-wallet-assets.d.ts +0 -2
- package/dist/examples/recover-app-wallet-assets.d.ts.map +0 -1
- package/dist/examples/recover-app-wallet-assets.js +0 -86
- package/dist/examples/recover-app-wallet-assets.js.map +0 -1
- package/dist/examples/zap-cycle.d.ts +0 -2
- package/dist/examples/zap-cycle.d.ts.map +0 -1
- package/dist/examples/zap-cycle.js +0 -56
- package/dist/examples/zap-cycle.js.map +0 -1
- package/dist/examples/zap-soak.d.ts +0 -2
- package/dist/examples/zap-soak.d.ts.map +0 -1
- package/dist/examples/zap-soak.js +0 -164
- package/dist/examples/zap-soak.js.map +0 -1
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/keyless.d.ts.map +0 -1
- package/dist/keyless.js.map +0 -1
- package/dist/manager-flow.d.ts.map +0 -1
- package/dist/manager-flow.js.map +0 -1
- package/dist/manager-flow.reconfigure.test.d.ts +0 -2
- package/dist/manager-flow.reconfigure.test.d.ts.map +0 -1
- package/dist/manager-flow.reconfigure.test.js +0 -210
- package/dist/manager-flow.reconfigure.test.js.map +0 -1
- package/dist/mcp-server.confirm-gate.test.d.ts +0 -2
- package/dist/mcp-server.confirm-gate.test.d.ts.map +0 -1
- package/dist/mcp-server.confirm-gate.test.js +0 -222
- package/dist/mcp-server.confirm-gate.test.js.map +0 -1
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mcp-server.js.map +0 -1
- package/dist/money-path.test.d.ts +0 -2
- package/dist/money-path.test.d.ts.map +0 -1
- package/dist/money-path.test.js +0 -193
- package/dist/money-path.test.js.map +0 -1
- package/dist/recovery-flow.d.ts.map +0 -1
- package/dist/recovery-flow.deadleg.test.d.ts +0 -2
- package/dist/recovery-flow.deadleg.test.d.ts.map +0 -1
- package/dist/recovery-flow.deadleg.test.js +0 -143
- package/dist/recovery-flow.deadleg.test.js.map +0 -1
- package/dist/recovery-flow.js.map +0 -1
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js.map +0 -1
- package/dist/signing.d.ts.map +0 -1
- package/dist/signing.js.map +0 -1
- package/dist/submit.d.ts.map +0 -1
- package/dist/submit.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/wallet-identity.d.ts.map +0 -1
- package/dist/wallet-identity.js.map +0 -1
- package/dist/wallet-identity.test.d.ts +0 -2
- package/dist/wallet-identity.test.d.ts.map +0 -1
- package/dist/wallet-identity.test.js +0 -56
- package/dist/wallet-identity.test.js.map +0 -1
- package/dist/who-pays.test.d.ts +0 -2
- package/dist/who-pays.test.d.ts.map +0 -1
- package/dist/who-pays.test.js +0 -56
- package/dist/who-pays.test.js.map +0 -1
- package/dist/zap-v2-flow.d.ts.map +0 -1
- package/dist/zap-v2-flow.js.map +0 -1
- package/dist/zap-v2-flow.pending.test.d.ts +0 -2
- package/dist/zap-v2-flow.pending.test.d.ts.map +0 -1
- package/dist/zap-v2-flow.pending.test.js +0 -147
- package/dist/zap-v2-flow.pending.test.js.map +0 -1
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
import { runAcceptAdminTransfer, reconcileKeylessUpdateVaultPolicy, runUpdateVaultPolicy, validateVaultPolicy, } from './manager-flow.js';
|
|
2
|
-
let failures = 0;
|
|
3
|
-
function assert(condition, message) {
|
|
4
|
-
if (condition) {
|
|
5
|
-
console.log(` ✓ ${message}`);
|
|
6
|
-
}
|
|
7
|
-
else {
|
|
8
|
-
console.error(` ✗ ${message}`);
|
|
9
|
-
failures++;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
async function expectReject(operation, expected, message) {
|
|
13
|
-
try {
|
|
14
|
-
await operation();
|
|
15
|
-
assert(false, `${message} (did not reject)`);
|
|
16
|
-
}
|
|
17
|
-
catch (thrownObject) {
|
|
18
|
-
const reason = thrownObject instanceof Error ? thrownObject.message : String(thrownObject);
|
|
19
|
-
assert(expected.test(reason), `${message} (${reason})`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
function expectValidationReject(policy, expected, message) {
|
|
23
|
-
try {
|
|
24
|
-
validateVaultPolicy(policy);
|
|
25
|
-
assert(false, `${message} (did not reject)`);
|
|
26
|
-
}
|
|
27
|
-
catch (thrownObject) {
|
|
28
|
-
const reason = thrownObject instanceof Error ? thrownObject.message : String(thrownObject);
|
|
29
|
-
assert(expected.test(reason), `${message} (${reason})`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
const config = {};
|
|
33
|
-
const vault = 'Vau1t1111111111111111111111111111111111111';
|
|
34
|
-
const signatureOne = '5'.repeat(88);
|
|
35
|
-
const signatureTwo = '6'.repeat(88);
|
|
36
|
-
const prepared = (transaction) => ({
|
|
37
|
-
transaction,
|
|
38
|
-
blockhash: `blockhash-${transaction}`,
|
|
39
|
-
lastValidBlockHeight: 123,
|
|
40
|
-
preparedTxId: `prepared-${transaction}`,
|
|
41
|
-
});
|
|
42
|
-
const policy = {
|
|
43
|
-
assetMode: 0,
|
|
44
|
-
maxAssetBps: 6_000,
|
|
45
|
-
minAssetBps: 500,
|
|
46
|
-
maxRebalanceBps: 2_000,
|
|
47
|
-
minRebalanceIntervalSecs: 300,
|
|
48
|
-
maxRebalancesPerDay: 5,
|
|
49
|
-
maxRebalancesPerWeek: 15,
|
|
50
|
-
launchBlackoutSecs: 3_600,
|
|
51
|
-
minAssets: 2,
|
|
52
|
-
maxAssets: 10,
|
|
53
|
-
};
|
|
54
|
-
const signingDependencies = (signatures, sequence) => ({
|
|
55
|
-
signBase64Transaction: (_config, transaction) => {
|
|
56
|
-
sequence.push(`sign:${transaction}`);
|
|
57
|
-
return `signed:${transaction}`;
|
|
58
|
-
},
|
|
59
|
-
submitSignedTx: async (_config, signedTransaction) => {
|
|
60
|
-
sequence.push(`submit:${signedTransaction}`);
|
|
61
|
-
const signature = signatures.shift();
|
|
62
|
-
if (!signature)
|
|
63
|
-
throw new Error('missing test signature');
|
|
64
|
-
return signature;
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
console.log('case: policy bounds reject every out-of-range integer and invalid relation');
|
|
68
|
-
validateVaultPolicy(policy);
|
|
69
|
-
const invalidPolicies = [
|
|
70
|
-
[{ ...policy, assetMode: 4 }, /assetMode/, 'assetMode > 3'],
|
|
71
|
-
[{ ...policy, maxAssetBps: 10_001 }, /maxAssetBps/, 'maxAssetBps > 10000'],
|
|
72
|
-
[{ ...policy, minAssetBps: -1 }, /minAssetBps/, 'minAssetBps < 0'],
|
|
73
|
-
[{ ...policy, maxRebalanceBps: 0.5 }, /maxRebalanceBps/, 'fractional maxRebalanceBps'],
|
|
74
|
-
[
|
|
75
|
-
{ ...policy, minRebalanceIntervalSecs: Number.MAX_SAFE_INTEGER + 1 },
|
|
76
|
-
/minRebalanceIntervalSecs/,
|
|
77
|
-
'unsafe minRebalanceIntervalSecs',
|
|
78
|
-
],
|
|
79
|
-
[{ ...policy, maxRebalancesPerDay: 11 }, /maxRebalancesPerDay/, 'daily cap > 10'],
|
|
80
|
-
[{ ...policy, maxRebalancesPerWeek: 31 }, /maxRebalancesPerWeek/, 'weekly cap > 30'],
|
|
81
|
-
[{ ...policy, launchBlackoutSecs: 2_592_001 }, /launchBlackoutSecs/, 'blackout > 30d'],
|
|
82
|
-
[{ ...policy, minAssets: 11 }, /minAssets/, 'minAssets > product cap 10'],
|
|
83
|
-
[{ ...policy, maxAssets: 11 }, /maxAssets/, 'maxAssets > product cap 10'],
|
|
84
|
-
[
|
|
85
|
-
{ ...policy, minAssetBps: 6_001, maxAssetBps: 6_000 },
|
|
86
|
-
/minAssetBps cannot exceed/,
|
|
87
|
-
'minimum weight exceeds maximum',
|
|
88
|
-
],
|
|
89
|
-
[
|
|
90
|
-
{ ...policy, minAssets: 8, maxAssets: 7 },
|
|
91
|
-
/minAssets cannot exceed/,
|
|
92
|
-
'minimum asset count exceeds maximum',
|
|
93
|
-
],
|
|
94
|
-
];
|
|
95
|
-
for (const [invalidPolicy, expected, message] of invalidPolicies) {
|
|
96
|
-
expectValidationReject(invalidPolicy, expected, message);
|
|
97
|
-
}
|
|
98
|
-
console.log('case: local admin acceptance signs, lands, then confirms before success');
|
|
99
|
-
{
|
|
100
|
-
const sequence = [];
|
|
101
|
-
const api = {
|
|
102
|
-
prepareAcceptAdminTransfer: async () => {
|
|
103
|
-
sequence.push('prepare');
|
|
104
|
-
return prepared('accept');
|
|
105
|
-
},
|
|
106
|
-
confirmAcceptAdminTransfer: async (_vault, signature) => {
|
|
107
|
-
sequence.push(`confirm:${signature}`);
|
|
108
|
-
return { status: 'confirmed', signature, vaultAdmin: 'NewAdmin11111111111111111111111111111111111' };
|
|
109
|
-
},
|
|
110
|
-
};
|
|
111
|
-
const result = await runAcceptAdminTransfer(config, api, vault, undefined, signingDependencies([signatureOne], sequence));
|
|
112
|
-
assert(result.reconciled === true, 'success is marked reconciled');
|
|
113
|
-
assert(sequence.join('|') ===
|
|
114
|
-
`prepare|sign:accept|submit:signed:accept|confirm:${signatureOne}`, 'post-chain confirm runs after submit');
|
|
115
|
-
}
|
|
116
|
-
console.log('case: local admin acceptance never reports success when confirm fails');
|
|
117
|
-
{
|
|
118
|
-
const api = {
|
|
119
|
-
prepareAcceptAdminTransfer: async () => prepared('accept'),
|
|
120
|
-
confirmAcceptAdminTransfer: async () => {
|
|
121
|
-
throw new Error('indexer unavailable');
|
|
122
|
-
},
|
|
123
|
-
};
|
|
124
|
-
await expectReject(() => runAcceptAdminTransfer(config, api, vault, undefined, signingDependencies([signatureOne], [])), new RegExp(`transaction ${signatureOne} landed.*Do not submit another`, 'i'), 'landed acceptance with failed reconciliation is an error with recovery guidance');
|
|
125
|
-
}
|
|
126
|
-
console.log('case: landed admin signature retries confirm only');
|
|
127
|
-
{
|
|
128
|
-
let prepareCalls = 0;
|
|
129
|
-
let confirmedSignature = '';
|
|
130
|
-
const api = {
|
|
131
|
-
prepareAcceptAdminTransfer: async () => {
|
|
132
|
-
prepareCalls++;
|
|
133
|
-
return prepared('must-not-run');
|
|
134
|
-
},
|
|
135
|
-
confirmAcceptAdminTransfer: async (_vault, signature) => {
|
|
136
|
-
confirmedSignature = signature;
|
|
137
|
-
return { status: 'confirmed', signature, vaultAdmin: 'NewAdmin11111111111111111111111111111111111' };
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
await runAcceptAdminTransfer(config, api, vault, signatureOne);
|
|
141
|
-
assert(prepareCalls === 0, 'recovery does not prepare or submit another acceptance');
|
|
142
|
-
assert(confirmedSignature === signatureOne, 'recovery confirms the supplied landed signature');
|
|
143
|
-
}
|
|
144
|
-
console.log('case: legacy policy creates one transaction and reconciles it');
|
|
145
|
-
{
|
|
146
|
-
const sequence = [];
|
|
147
|
-
const api = {
|
|
148
|
-
getOnchainPolicy: async () => null,
|
|
149
|
-
prepareCreateVaultPolicy: async () => {
|
|
150
|
-
sequence.push('prepare:create');
|
|
151
|
-
return prepared('create');
|
|
152
|
-
},
|
|
153
|
-
confirmVaultPolicy: async (_vault, signature) => {
|
|
154
|
-
sequence.push(`confirm:${signature}`);
|
|
155
|
-
return { onChain: true };
|
|
156
|
-
},
|
|
157
|
-
};
|
|
158
|
-
const result = await runUpdateVaultPolicy(config, api, vault, policy, undefined, signingDependencies([signatureOne], sequence));
|
|
159
|
-
assert(result.mode === 'create' && result.reconciled, 'legacy policy returns reconciled create');
|
|
160
|
-
assert(sequence.at(-1) === `confirm:${signatureOne}`, 'create is reconciled after landing');
|
|
161
|
-
}
|
|
162
|
-
console.log('case: existing policy proposes then accepts in order and confirms final signature');
|
|
163
|
-
{
|
|
164
|
-
const sequence = [];
|
|
165
|
-
let proposedEffectiveAt = 0;
|
|
166
|
-
let acceptedEffectiveAt = 0;
|
|
167
|
-
const api = {
|
|
168
|
-
getOnchainPolicy: async () => ({ pendingProposedAt: 0, pendingEffectiveAt: 0 }),
|
|
169
|
-
prepareProposeVaultPolicy: async (_vault, amendment) => {
|
|
170
|
-
proposedEffectiveAt = amendment.effectiveAt;
|
|
171
|
-
sequence.push('prepare:propose');
|
|
172
|
-
return prepared('propose');
|
|
173
|
-
},
|
|
174
|
-
prepareAcceptVaultPolicy: async (_vault, amendment) => {
|
|
175
|
-
acceptedEffectiveAt = amendment.effectiveAt;
|
|
176
|
-
sequence.push('prepare:accept');
|
|
177
|
-
return prepared('accept');
|
|
178
|
-
},
|
|
179
|
-
confirmVaultPolicy: async (_vault, signature) => {
|
|
180
|
-
sequence.push(`confirm:${signature}`);
|
|
181
|
-
return { onChain: true };
|
|
182
|
-
},
|
|
183
|
-
};
|
|
184
|
-
const result = await runUpdateVaultPolicy(config, api, vault, policy, undefined, signingDependencies([signatureOne, signatureTwo], sequence));
|
|
185
|
-
assert(result.mode === 'amend', 'existing policy chooses amendment mode');
|
|
186
|
-
assert(proposedEffectiveAt > 0 && proposedEffectiveAt === acceptedEffectiveAt, 'proposal and acceptance commit the same effectiveAt');
|
|
187
|
-
assert(sequence.join('|') ===
|
|
188
|
-
`prepare:propose|prepare:accept|sign:propose|submit:signed:propose|sign:accept|submit:signed:accept|confirm:${signatureTwo}`, 'ordered proposal and acceptance reconcile only after the final signature');
|
|
189
|
-
}
|
|
190
|
-
console.log('case: pending policy prepares only acceptance with chain-pinned effectiveAt');
|
|
191
|
-
{
|
|
192
|
-
let proposeCalls = 0;
|
|
193
|
-
let acceptedEffectiveAt = 0;
|
|
194
|
-
const api = {
|
|
195
|
-
getOnchainPolicy: async () => ({ pendingProposedAt: 99, pendingEffectiveAt: 123_456 }),
|
|
196
|
-
prepareProposeVaultPolicy: async () => {
|
|
197
|
-
proposeCalls++;
|
|
198
|
-
return prepared('must-not-run');
|
|
199
|
-
},
|
|
200
|
-
prepareAcceptVaultPolicy: async (_vault, amendment) => {
|
|
201
|
-
acceptedEffectiveAt = amendment.effectiveAt;
|
|
202
|
-
return prepared('accept');
|
|
203
|
-
},
|
|
204
|
-
confirmVaultPolicy: async () => ({ onChain: true }),
|
|
205
|
-
};
|
|
206
|
-
const result = await runUpdateVaultPolicy(config, api, vault, policy, undefined, signingDependencies([signatureTwo], []));
|
|
207
|
-
assert(result.mode === 'accept', 'pending proposal chooses accept mode');
|
|
208
|
-
assert(proposeCalls === 0, 'pending recovery never proposes a second policy');
|
|
209
|
-
assert(acceptedEffectiveAt === 123_456, 'acceptance uses chain-pinned effectiveAt');
|
|
210
|
-
}
|
|
211
|
-
console.log('case: partial amendment reports landed proposal and does not confirm');
|
|
212
|
-
{
|
|
213
|
-
let submitCalls = 0;
|
|
214
|
-
let confirmCalls = 0;
|
|
215
|
-
const api = {
|
|
216
|
-
getOnchainPolicy: async () => ({ pendingProposedAt: 0, pendingEffectiveAt: 0 }),
|
|
217
|
-
prepareProposeVaultPolicy: async () => prepared('propose'),
|
|
218
|
-
prepareAcceptVaultPolicy: async () => prepared('accept'),
|
|
219
|
-
confirmVaultPolicy: async () => {
|
|
220
|
-
confirmCalls++;
|
|
221
|
-
return { onChain: true };
|
|
222
|
-
},
|
|
223
|
-
};
|
|
224
|
-
await expectReject(() => runUpdateVaultPolicy(config, api, vault, policy, undefined, {
|
|
225
|
-
signBase64Transaction: (_config, transaction) => transaction,
|
|
226
|
-
submitSignedTx: async () => {
|
|
227
|
-
submitCalls++;
|
|
228
|
-
if (submitCalls === 1)
|
|
229
|
-
return signatureOne;
|
|
230
|
-
throw new Error('second transaction rejected');
|
|
231
|
-
},
|
|
232
|
-
}), new RegExp(`proposal ${signatureOne} landed.*exact same policy values`, 'i'), 'partial amendment cannot be mistaken for no change');
|
|
233
|
-
assert(confirmCalls === 0, 'a partial proposal is not reported as reconciled completion');
|
|
234
|
-
}
|
|
235
|
-
console.log('case: keyless policy confirms complete writes and preserves pending status');
|
|
236
|
-
{
|
|
237
|
-
let confirmCalls = 0;
|
|
238
|
-
const completeApi = {
|
|
239
|
-
confirmVaultPolicy: async () => {
|
|
240
|
-
confirmCalls++;
|
|
241
|
-
return { onChain: true };
|
|
242
|
-
},
|
|
243
|
-
};
|
|
244
|
-
const complete = await reconcileKeylessUpdateVaultPolicy(completeApi, vault, policy, { signature: signatureTwo, status: 'complete' });
|
|
245
|
-
assert(complete.reconciled && confirmCalls === 1, 'keyless completion is independently reconciled');
|
|
246
|
-
const pendingApi = {
|
|
247
|
-
confirmVaultPolicy: async () => {
|
|
248
|
-
throw new Error('must not report a partial proposal as complete');
|
|
249
|
-
},
|
|
250
|
-
};
|
|
251
|
-
const pending = await reconcileKeylessUpdateVaultPolicy(pendingApi, vault, policy, { signature: signatureOne, status: 'pending', note: 'proposal landed' });
|
|
252
|
-
assert(pending.status === 'pending' && pending.reconciled === false, 'keyless partial proposal remains pending and unreconciled');
|
|
253
|
-
}
|
|
254
|
-
if (failures > 0) {
|
|
255
|
-
console.error(`\n${failures} control-flow assertion(s) FAILED`);
|
|
256
|
-
process.exit(1);
|
|
257
|
-
}
|
|
258
|
-
console.log('\ncontrol-flow: all assertions passed');
|
|
259
|
-
//# sourceMappingURL=control-flow.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"control-flow.test.js","sourceRoot":"","sources":["../src/control-flow.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-flow.d.ts","sourceRoot":"","sources":["../src/create-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;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,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,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"}
|
package/dist/create-flow.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-flow.js","sourceRoot":"","sources":["../src/create-flow.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AA0BxE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAmB,EACnB,GAAiB,EACjB,YAAoB,EACpB,KAIC;IAED,MAAM,IAAI,GAAG,KAAK,EAAE,qBAAqB,IAAI,qBAAqB,CAAC;IACnE,MAAM,aAAa,GAAG,KAAK,EAAE,yBAAyB,IAAI,yBAAyB,CAAC;IACpF,MAAM,YAAY,GAAG,KAAK,EAAE,cAAc,IAAI,cAAc,CAAC;IAC7D,IAAI,SAA6B,CAAC;IAClC,IAAI,KAAyB,CAAC;IAC9B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;oBAC/B,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CACvD,EAAE,GAAG,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,EAAE,EAChD,UAAU,CACX,CAAC;gBACF,IAAI,CAAC,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,gCAAgC,CAAC,CAAC;gBACpF,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,MAAM,YAAY,CAC5B,MAAM,EACN,UAAU,EACV,YAAY,CAAC,SAAS,EACtB,YAAY,CAAC,oBAAoB,CAClC,CAAC;YACJ,CAAC;YACD,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,GAAI,CAAW,CAAC,OAAO,CAAC;YAC7B,6EAA6E;YAC7E,oEAAoE;YACpE,IAAI,qEAAqE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtF,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,yEAAyE;AAEhG;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAyB;IAC5D,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,cAAc,MAAM,CAAC,MAAM,CAAC,MAAM,gCAAgC,UAAU,GAAG;YAC7E,mDAAmD,CACtD,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjE,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,yDAAyD,GAAG,IAAI;YAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACzE,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,wBAAwB,CAAC,CAAC,OAAO,sBAAsB,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAmB,EACnB,GAAiB,EACjB,MAAyB;IAEzB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,yEAAyE;IACzE,+EAA+E;IAC/E,gFAAgF;IAChF,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC;QAC5C,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,GAAG;QAChC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,0EAA0E;QAC1E,8EAA8E;QAC9E,4EAA4E;QAC5E,yEAAyE;QACzE,6EAA6E;QAC7E,8EAA8E;QAC9E,uCAAuC;QACvC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,0EAA0E;gBACxE,uGAAuG,CAC1G,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,yBAAyB,CACnE,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,EAC5C,MAAM,CACP,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,aAAa,GAAG,6DAA6D;gBAC3E,+EAA+E;gBAC/E,uEAAuE,CAC1E,CAAC;QACJ,CAAC;QACD,SAAS,GAAG,GAAG,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,8EAA8E;QAC9E,SAAS,GAAG,MAAM,cAAc,CAC9B,MAAM,EACN,MAAM,EACN,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,oBAAoB,CAC9B,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,0EAA0E;IAC1E,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,QAAQ,CAAC,YAAY;YAC5B,SAAS;YACT,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,YAAY,EAAG,CAAW,CAAC,OAAO;YAClC,OAAO,EACL,sCAAsC,QAAQ,CAAC,YAAY,wBAAwB;gBACnF,WAAY,CAAW,CAAC,OAAO,uDAAuD;gBACtF,uFAAuF;gBACvF,oCAAoC;SACvC,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,gFAAgF;IAChF,MAAM,IAAI,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/E,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;IAEjC,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,QAAQ,CAAC,YAAY;QAC5B,SAAS;QACT,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,iBAAiB;QACjB,aAAa;QACb,OAAO,EACL,UAAU,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,MAAM,eAAe,QAAQ,CAAC,YAAY,GAAG;YAC/E,UAAU,QAAQ,CAAC,UAAU,eAAe;YAC5C,CAAC,iBAAiB;gBAChB,CAAC,CAAC,yCAAyC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM;gBAC/E,CAAC,CAAC,sCAAsC,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;oBACrF,0FAA0F;oBAC1F,yBAAyB,QAAQ,CAAC,YAAY,qBAAqB,CAAC;YACxE,uDAAuD;KAC1D,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-flow.metadata.test.d.ts","sourceRoot":"","sources":["../src/create-flow.metadata.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,100 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-flow.metadata.test.js","sourceRoot":"","sources":["../src/create-flow.metadata.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fund-app-wallet.d.ts","sourceRoot":"","sources":["../../src/examples/fund-app-wallet.ts"],"names":[],"mappings":""}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Top up the app wallet from its owner — the ONE signature the app-wallet model
|
|
3
|
-
* cannot avoid, because it is the owner's money leaving the owner's wallet.
|
|
4
|
-
*
|
|
5
|
-
* The other direction (app wallet → owner) is `recover-app-wallet-assets.ts`.
|
|
6
|
-
*
|
|
7
|
-
* DFM_API_URL=https://app.dfm.finance \
|
|
8
|
-
* DFM_AGENT_KEYPAIR_PATH=~/.config/dfm/test-6vch.json \
|
|
9
|
-
* USDC=11.1 [SOL=0.01] npx tsx src/examples/fund-app-wallet.ts
|
|
10
|
-
*/
|
|
11
|
-
import { loadConfig } from '../config.js';
|
|
12
|
-
import { SiwsSession } from '../session.js';
|
|
13
|
-
import { DfmApiClient } from '../api-client.js';
|
|
14
|
-
import { signBase64Transaction } from '../signing.js';
|
|
15
|
-
import { submitSignedTx } from '../submit.js';
|
|
16
|
-
async function main() {
|
|
17
|
-
const config = loadConfig();
|
|
18
|
-
const api = new DfmApiClient(config, new SiwsSession(config));
|
|
19
|
-
const usdcMicros = Math.round(Number(process.env.USDC ?? '0') * 1e6);
|
|
20
|
-
const solLamports = Math.round(Number(process.env.SOL ?? '0') * 1e9);
|
|
21
|
-
if (usdcMicros <= 0 && solLamports <= 0)
|
|
22
|
-
throw new Error('set USDC and/or SOL');
|
|
23
|
-
const prepared = await api.prepareOperatingFund({
|
|
24
|
-
...(usdcMicros > 0 ? { usdcMicros } : {}),
|
|
25
|
-
...(solLamports > 0 ? { solLamports } : {}),
|
|
26
|
-
});
|
|
27
|
-
const signed = signBase64Transaction(config, prepared.transaction);
|
|
28
|
-
const signature = await submitSignedTx(config, signed, prepared.blockhash, prepared.lastValidBlockHeight,
|
|
29
|
-
// Backend broadcast: without `preparedTxId` this is the one write that
|
|
30
|
-
// demands a client RPC.
|
|
31
|
-
{ api, preparedTxId: prepared.preparedTxId });
|
|
32
|
-
console.log(`funded ${prepared.operatingWalletAddress} with ${usdcMicros / 1e6} USDC ` +
|
|
33
|
-
`+ ${solLamports / 1e9} SOL — ${signature}`);
|
|
34
|
-
}
|
|
35
|
-
main().catch((e) => {
|
|
36
|
-
console.error('FAILED', e instanceof Error ? e.message : e);
|
|
37
|
-
process.exit(1);
|
|
38
|
-
});
|
|
39
|
-
//# sourceMappingURL=fund-app-wallet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fund-app-wallet.js","sourceRoot":"","sources":["../../src/examples/fund-app-wallet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACrE,IAAI,UAAU,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAEhF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC;QAC9C,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,MAAM,cAAc,CACpC,MAAM,EACN,MAAM,EACN,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,oBAAoB;IAC7B,uEAAuE;IACvE,wBAAwB;IACxB,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAC7C,CAAC;IACF,OAAO,CAAC,GAAG,CACT,UAAU,QAAQ,CAAC,sBAAsB,SAAS,UAAU,GAAG,GAAG,QAAQ;QACxE,KAAK,WAAW,GAAG,GAAG,UAAU,SAAS,EAAE,CAC9C,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"launch-deposit-redeem.d.ts","sourceRoot":"","sources":["../../src/examples/launch-deposit-redeem.ts"],"names":[],"mappings":""}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Example: the FULL DTF lifecycle a tester runs programmatically —
|
|
3
|
-
* launch (create a vault) → deposit USDC → redeem back to USDC.
|
|
4
|
-
*
|
|
5
|
-
* SAFE WHEN WRITE IS OFF: with DFM_AGENT_WRITE_ENABLED unset, this script does
|
|
6
|
-
* the read-only parts (sign-in, list vaults) and then PRINTS the
|
|
7
|
-
* exact launch/deposit/redeem calls it WOULD make, without moving any funds. Set
|
|
8
|
-
* DFM_AGENT_WRITE_ENABLED=true (+ an RPC + a funded keypair) to
|
|
9
|
-
* actually run the real-money flow.
|
|
10
|
-
*
|
|
11
|
-
* ⚠️ With write ON this MOVES REAL FUNDS on mainnet.
|
|
12
|
-
* REVIEW: real-money path — parent must review before relying on this.
|
|
13
|
-
*
|
|
14
|
-
* Usage (dry-run, default):
|
|
15
|
-
* DFM_API_URL=https://app.dfm.finance \
|
|
16
|
-
* DFM_AGENT_KEYPAIR_PATH=/abs/path/test-wallet.json \
|
|
17
|
-
* npx tsx src/examples/launch-deposit-redeem.ts
|
|
18
|
-
*
|
|
19
|
-
* Usage (real-money, full loop):
|
|
20
|
-
* DFM_API_URL=https://app.dfm.finance \
|
|
21
|
-
* HELIUS_RPC_URL=https://mainnet.helius-rpc.com/?api-key=… \
|
|
22
|
-
* DFM_AGENT_KEYPAIR_PATH=/abs/path/test-wallet.json \
|
|
23
|
-
* DFM_AGENT_WRITE_ENABLED=true \
|
|
24
|
-
* npx tsx src/examples/launch-deposit-redeem.ts
|
|
25
|
-
*
|
|
26
|
-
* Optional env:
|
|
27
|
-
* DEPOSIT_USDC_RAW default "12000000" ($12 — clears the $10 first-mint floor)
|
|
28
|
-
* REDEEM_SHARES_RAW if set, redeems exactly this many raw shares; if unset the
|
|
29
|
-
* script reads the share balance from the portfolio and
|
|
30
|
-
* redeems the full position.
|
|
31
|
-
*/
|
|
32
|
-
import { loadConfig } from '../config.js';
|
|
33
|
-
import { SiwsSession } from '../session.js';
|
|
34
|
-
import { DfmApiClient } from '../api-client.js';
|
|
35
|
-
import { runLaunchVault } from '../create-flow.js';
|
|
36
|
-
import { runDeposit, runRedeem } from '../zap-v2-flow.js';
|
|
37
|
-
// A tiny 2-asset basket of established mints (open universe — no pre-registration
|
|
38
|
-
// or Pyth feed). Listing is validated inline against the live factory/fund-tier
|
|
39
|
-
// rules; freeze authority is a disclosed risk and not a v1 hard block. Weights sum to
|
|
40
|
-
// 10000 bps. Fees are read from the factory; callers cannot override them.
|
|
41
|
-
const ETH = '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs'; // Wormhole WETH
|
|
42
|
-
const JUP = 'JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN'; // Jupiter
|
|
43
|
-
const DEMO_BASKET = {
|
|
44
|
-
name: 'Agent Demo Fund',
|
|
45
|
-
symbol: 'AGTDEMO',
|
|
46
|
-
category: 255,
|
|
47
|
-
assets: [
|
|
48
|
-
{ mint: ETH, symbol: 'ETH', mintBps: 5000 },
|
|
49
|
-
{ mint: JUP, symbol: 'JUP', mintBps: 5000 },
|
|
50
|
-
],
|
|
51
|
-
};
|
|
52
|
-
async function main() {
|
|
53
|
-
const config = loadConfig();
|
|
54
|
-
const session = new SiwsSession(config);
|
|
55
|
-
const api = new DfmApiClient(config, session);
|
|
56
|
-
const depositRaw = process.env.DEPOSIT_USDC_RAW ?? '12000000';
|
|
57
|
-
console.log(`API: ${config.apiUrl} (${config.cluster})`);
|
|
58
|
-
console.log(`Write: ${config.writeEnabled ? 'ENABLED (real funds)' : 'OFF (dry-run)'}`);
|
|
59
|
-
// Load the wallet pubkey (needs a keypair). In dry-run we tolerate its absence
|
|
60
|
-
// so the plan still prints; the real-money path requires it.
|
|
61
|
-
let wallet = null;
|
|
62
|
-
try {
|
|
63
|
-
wallet = session.walletAddress; // loads the keypair, surfaces pubkey only
|
|
64
|
-
console.log(`Wallet: ${wallet}`);
|
|
65
|
-
}
|
|
66
|
-
catch (e) {
|
|
67
|
-
if (config.writeEnabled)
|
|
68
|
-
throw e;
|
|
69
|
-
console.log(`Wallet: (no keypair configured — ${e.message})`);
|
|
70
|
-
}
|
|
71
|
-
// A read to prove the public API works (and show the current vault count).
|
|
72
|
-
const list = await api.listVaults({ limit: 5 });
|
|
73
|
-
console.log(`\nVaults visible: ${list.total}`);
|
|
74
|
-
if (!config.writeEnabled) {
|
|
75
|
-
console.log('\n── DRY-RUN (write OFF) — the real-money calls that WOULD run: ──');
|
|
76
|
-
console.log(`1. launch_vault ${JSON.stringify(DEMO_BASKET, null, 2)}`);
|
|
77
|
-
console.log(`2. deposit { vault: <new vault>, usdcAmount: "${depositRaw}" }`);
|
|
78
|
-
console.log(`3. redeem { vault: <new vault>, shares: "<full position>" }`);
|
|
79
|
-
console.log('\nSet DFM_AGENT_WRITE_ENABLED=true (+ HELIUS_RPC_URL + funded keypair) to execute.');
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
if (!config.rpcUrl) {
|
|
83
|
-
console.error('\nRefusing: write is ON but no RPC. Set HELIUS_RPC_URL to submit transactions.');
|
|
84
|
-
process.exit(1);
|
|
85
|
-
}
|
|
86
|
-
if (!wallet) {
|
|
87
|
-
// Unreachable (write-enabled loads the keypair above, which throws if absent)
|
|
88
|
-
// — narrows the type for the deposit/redeem calls below.
|
|
89
|
-
console.error('\nRefusing: no test wallet loaded.');
|
|
90
|
-
process.exit(1);
|
|
91
|
-
}
|
|
92
|
-
// 1. LAUNCH.
|
|
93
|
-
console.log('\n→ LAUNCH (create fund)…');
|
|
94
|
-
const launch = await runLaunchVault(config, api, DEMO_BASKET);
|
|
95
|
-
console.log(JSON.stringify(launch, null, 2));
|
|
96
|
-
if (!launch.ok) {
|
|
97
|
-
console.error('Launch did not fully complete — see message above. Stopping.');
|
|
98
|
-
process.exit(1);
|
|
99
|
-
}
|
|
100
|
-
const vault = launch.vault;
|
|
101
|
-
// 2. DEPOSIT.
|
|
102
|
-
console.log(`\n→ DEPOSIT ${depositRaw} raw USDC into ${vault}…`);
|
|
103
|
-
const dep = await runDeposit(config, api, wallet, vault, depositRaw);
|
|
104
|
-
console.log(JSON.stringify(dep, null, 2));
|
|
105
|
-
// Read the resulting position to size the redeem.
|
|
106
|
-
console.log('\n→ position after deposit…');
|
|
107
|
-
const positions = (await api.getPortfolioPositions());
|
|
108
|
-
console.log(JSON.stringify(positions, null, 2));
|
|
109
|
-
// 3. REDEEM. Prefer an explicit env; else try to read the share balance for
|
|
110
|
-
// this vault out of the portfolio payload (shape-tolerant).
|
|
111
|
-
const sharesRaw = process.env.REDEEM_SHARES_RAW ?? extractShareBalance(positions, vault);
|
|
112
|
-
if (!sharesRaw) {
|
|
113
|
-
console.log('\nCould not auto-determine the share balance to redeem. Set REDEEM_SHARES_RAW ' +
|
|
114
|
-
'(raw 6dp) to the amount to redeem and re-run, or call redeem manually.');
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
console.log(`\n→ REDEEM ${sharesRaw} raw shares from ${vault}…`);
|
|
118
|
-
const red = await runRedeem(config, api, wallet, vault, sharesRaw);
|
|
119
|
-
console.log(JSON.stringify(red, null, 2));
|
|
120
|
-
console.log('\n✓ Full launch → deposit → redeem loop complete.');
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Best-effort extraction of a raw 6dp share balance for `vault` from the
|
|
124
|
-
* /portfolio payload. The shape isn't strictly typed by the API, so we probe a
|
|
125
|
-
* few likely fields and fall back to null (caller then asks for an explicit env).
|
|
126
|
-
*/
|
|
127
|
-
function extractShareBalance(positions, vault) {
|
|
128
|
-
const arr = Array.isArray(positions)
|
|
129
|
-
? positions
|
|
130
|
-
: positions?.positions;
|
|
131
|
-
if (!Array.isArray(arr))
|
|
132
|
-
return null;
|
|
133
|
-
for (const p of arr) {
|
|
134
|
-
const row = p;
|
|
135
|
-
const addr = row.vault ?? row.vaultAddress ?? row.address;
|
|
136
|
-
if (addr !== vault)
|
|
137
|
-
continue;
|
|
138
|
-
const bal = row.sharesRaw ?? row.shareBalanceRaw ?? row.balanceRaw ?? row.shares ?? row.balance;
|
|
139
|
-
if (typeof bal === 'string' && /^[1-9]\d*$/.test(bal))
|
|
140
|
-
return bal;
|
|
141
|
-
if (typeof bal === 'number' && Number.isInteger(bal) && bal > 0)
|
|
142
|
-
return String(bal);
|
|
143
|
-
}
|
|
144
|
-
return null;
|
|
145
|
-
}
|
|
146
|
-
main().catch((e) => {
|
|
147
|
-
console.error(e);
|
|
148
|
-
process.exit(1);
|
|
149
|
-
});
|
|
150
|
-
//# sourceMappingURL=launch-deposit-redeem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"launch-deposit-redeem.js","sourceRoot":"","sources":["../../src/examples/launch-deposit-redeem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-and-status.d.ts","sourceRoot":"","sources":["../../src/examples/list-and-status.ts"],"names":[],"mappings":""}
|