@1sat/actions 0.0.44 → 0.0.46

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.
@@ -6,9 +6,9 @@
6
6
  * with the indexer pipeline, and internalizes them into the wallet.
7
7
  */
8
8
  import { BRC29_PROTOCOL_ID } from '@1sat/types';
9
- import { Beef, PublicKey, Transaction, Utils, } from '@bsv/sdk';
10
- import { Bsv21Indexer, FundIndexer, InscriptionIndexer, MapIndexer, OpNSIndexer, OriginIndexer, Outpoint, SigmaIndexer, } from '@1sat/wallet';
11
- import { randomActionId } from '../utils/createTrackedAction';
9
+ import { PublicKey, Utils } from '@bsv/sdk';
10
+ import { internalizeBeef, } from '../utils/internalizeBeef';
11
+ import { syncMessages } from './syncMessages';
12
12
  import { ProcessedTxStoreIdb } from './ProcessedTxStoreIdb';
13
13
  import { ProcessedTxStoreSqlite } from './ProcessedTxStoreSqlite';
14
14
  const REORG_SAFE_DEPTH = 6;
@@ -104,19 +104,7 @@ export const syncAddresses = {
104
104
  // 3. Get current block height and last score
105
105
  const { height: currentHeight } = await ctx.wallet.getHeight({});
106
106
  const lastScore = await store.getLastScore();
107
- // 4. Build indexers
108
- const owners = new Set(addresses);
109
- const network = ctx.chain === 'main' ? 'mainnet' : 'testnet';
110
- const indexers = [
111
- new FundIndexer(owners, network),
112
- new InscriptionIndexer(owners, network),
113
- new Bsv21Indexer(owners, network, services),
114
- new OriginIndexer(owners, network, services),
115
- new OpNSIndexer(owners, network),
116
- new SigmaIndexer(owners, network),
117
- new MapIndexer(owners, network),
118
- ];
119
- // 5. Fetch sync stream and group outputs by txid
107
+ // 4. Fetch sync stream and group outputs by txid
120
108
  const outputsByTxid = new Map();
121
109
  let maxSafeScore = lastScore;
122
110
  for await (const output of services.owner.sync(addresses, lastScore || undefined, onProgress)) {
@@ -133,7 +121,7 @@ export const syncAddresses = {
133
121
  }
134
122
  }
135
123
  }
136
- // 6. Process each txid
124
+ // 5. Process each txid
137
125
  let processed = 0;
138
126
  let failed = 0;
139
127
  for (const [txid, outputs] of outputsByTxid) {
@@ -141,7 +129,7 @@ export const syncAddresses = {
141
129
  if (await store.has(txid))
142
130
  continue;
143
131
  try {
144
- await processTxid(txid, outputs, ctx, services, indexers, addressMap);
132
+ await processTxid(txid, outputs, ctx, services, addressMap);
145
133
  await store.add(txid);
146
134
  processed++;
147
135
  }
@@ -150,7 +138,7 @@ export const syncAddresses = {
150
138
  failed++;
151
139
  }
152
140
  }
153
- // 7. Update last score
141
+ // 6. Update last score
154
142
  if (maxSafeScore > lastScore) {
155
143
  await store.setLastScore(maxSafeScore);
156
144
  }
@@ -162,226 +150,37 @@ export const syncAddresses = {
162
150
  },
163
151
  };
164
152
  // ============================================================================
165
- // Transaction processing (adapted from AddressSyncProcessor)
153
+ // Transaction processing
166
154
  // ============================================================================
167
- async function processTxid(txid, outputs, ctx, services, indexers, addressMap) {
168
- // Check if all outputs are spend-only (no new outputs to internalize)
169
- if (outputs.every((o) => !!o.spendTxid && !isNewOutput(o))) {
155
+ async function processTxid(txid, outputs, ctx, services, addressMap) {
156
+ if (outputs.every((o) => !!o.spendTxid)) {
170
157
  return;
171
158
  }
172
- // Load BEEF
173
159
  const beef = await services.beef.getBeef(txid);
174
160
  if (!beef) {
175
161
  throw new Error(`Failed to load BEEF for ${txid}`);
176
162
  }
177
- const beefObj = Beef.fromBinary(Array.from(beef));
178
- const btx = beefObj.findTxid(txid);
179
- if (!btx?.tx) {
180
- throw new Error(`Transaction ${txid} not found in BEEF`);
181
- }
182
- // Ensure source transactions are loaded for inputs
183
- for (const input of btx.tx.inputs) {
184
- if (!input.sourceTransaction && input.sourceTXID) {
185
- const rawTx = await services.beef.getRawTx(input.sourceTXID);
186
- input.sourceTransaction = Transaction.fromBinary(Array.from(rawTx));
187
- }
188
- }
189
- // Parse transaction with indexers
190
- const parseCtx = await parseTransaction(btx.tx, indexers);
191
- // Build InternalizeOutput entries for owned outputs
192
- const internalizeOutputs = [];
193
- const ownedTxos = [];
194
- const actionId = randomActionId();
195
- for (const txo of parseCtx.txos) {
196
- if (!txo.owner)
197
- continue;
198
- const derivation = addressMap.get(txo.owner);
199
- if (!derivation)
200
- continue;
201
- const internalizeOutput = buildInternalizeOutput(txo, derivation, actionId);
202
- if (internalizeOutput) {
203
- internalizeOutputs.push(internalizeOutput);
204
- ownedTxos.push(txo);
205
- }
206
- }
207
- if (internalizeOutputs.length === 0)
208
- return;
209
- const args = {
210
- tx: Array.from(beef),
211
- outputs: internalizeOutputs,
212
- description: buildDescription(ownedTxos),
213
- };
214
- await ctx.wallet.internalizeAction(args);
215
- }
216
- function isNewOutput(output) {
217
- // An output with only a spendTxid and no indication of being a new output
218
- // is a spend notification, not a new output to internalize
219
- return !output.spendTxid;
220
- }
221
- async function parseTransaction(tx, indexers) {
222
- const txid = tx.id('hex');
223
- const ctx = {
224
- tx,
225
- txid,
226
- txos: [],
227
- spends: [],
228
- summary: {},
229
- indexers,
230
- };
231
- // Parse inputs into spends
232
- for (let vin = 0; vin < tx.inputs.length; vin++) {
233
- const input = tx.inputs[vin];
234
- if (!input.sourceTransaction) {
235
- throw new Error(`Missing sourceTransaction for input ${vin}`);
236
- }
237
- const sourceTxid = input.sourceTransaction.id('hex');
238
- const txo = {
239
- output: input.sourceTransaction.outputs[input.sourceOutputIndex],
240
- outpoint: new Outpoint(sourceTxid, input.sourceOutputIndex),
241
- data: {},
242
- };
243
- for (const indexer of indexers) {
244
- const result = await indexer.parse(txo);
245
- if (result) {
246
- txo.data[indexer.tag] = {
247
- data: result.data,
248
- tags: result.tags,
249
- content: result.content,
250
- };
251
- if (result.owner && !txo.owner)
252
- txo.owner = result.owner;
253
- if (result.basket && !txo.basket)
254
- txo.basket = result.basket;
255
- }
256
- }
257
- ctx.spends.push(txo);
258
- }
259
- // Parse each output
260
- for (let vout = 0; vout < tx.outputs.length; vout++) {
261
- const output = tx.outputs[vout];
262
- const txo = {
263
- output,
264
- outpoint: new Outpoint(txid, vout),
265
- data: {},
266
- };
267
- for (const indexer of indexers) {
268
- const result = await indexer.parse(txo);
269
- if (result) {
270
- txo.data[indexer.tag] = {
271
- data: result.data,
272
- tags: result.tags,
273
- content: result.content,
274
- };
275
- if (result.owner && !txo.owner)
276
- txo.owner = result.owner;
277
- if (result.basket && !txo.basket)
278
- txo.basket = result.basket;
279
- if (result.protocol && !txo.protocol)
280
- txo.protocol = result.protocol;
281
- }
282
- }
283
- ctx.txos.push(txo);
284
- }
285
- // Summarize phase
286
- for (const indexer of indexers) {
287
- const summary = await indexer.summarize(ctx, true);
288
- if (summary) {
289
- ctx.summary[indexer.tag] = summary;
290
- }
291
- }
292
- return ctx;
293
- }
294
- function buildInternalizeOutput(txo, derivation, actionId) {
295
- const vout = txo.outpoint.vout;
296
- const protocol = txo.protocol || 'wallet payment';
297
- const idTag = `id:${actionId}`;
298
- if (protocol === 'basket insertion') {
299
- const basket = txo.basket || 'custom';
300
- const tags = [...collectTags(txo), idTag];
301
- const nameTag = tags.find((t) => t.startsWith('name:'));
302
- return {
303
- outputIndex: vout,
304
- protocol: 'basket insertion',
305
- insertionRemittance: {
306
- basket,
307
- tags,
308
- customInstructions: JSON.stringify({
309
- derivationPrefix: derivation.derivationPrefix,
310
- derivationSuffix: derivation.derivationSuffix,
311
- senderIdentityKey: derivation.senderIdentityKey,
312
- ...(nameTag && { name: nameTag.slice(5).slice(0, 64) }),
313
- }),
314
- },
315
- };
316
- }
317
- // P2PKH ordinals/tokens: basket insertion so they don't get consumed as change
318
- if (txo.basket && txo.basket !== 'fund') {
319
- const tags = [...collectTags(txo), idTag];
320
- const nameTag = tags.find((t) => t.startsWith('name:'));
321
- return {
322
- outputIndex: vout,
323
- protocol: 'basket insertion',
324
- insertionRemittance: {
325
- basket: txo.basket,
326
- tags,
327
- customInstructions: JSON.stringify({
328
- protocolID: BRC29_PROTOCOL_ID,
329
- keyID: `${derivation.derivationPrefix} ${derivation.derivationSuffix}`,
330
- ...(nameTag && { name: nameTag.slice(5).slice(0, 64) }),
331
- }),
332
- },
333
- };
334
- }
335
- // P2PKH funding output
336
- return {
337
- outputIndex: vout,
338
- protocol: 'wallet payment',
339
- paymentRemittance: {
340
- derivationPrefix: derivation.derivationPrefix,
341
- derivationSuffix: derivation.derivationSuffix,
342
- senderIdentityKey: derivation.senderIdentityKey,
343
- },
344
- };
345
- }
346
- function collectTags(txo) {
347
- const tags = [];
348
- for (const indexData of Object.values(txo.data)) {
349
- tags.push(...indexData.tags);
350
- }
351
- return tags;
352
- }
353
- function buildDescription(ownedTxos) {
354
- const parts = [];
355
- let sats = 0;
356
- for (const txo of ownedTxos) {
357
- if (txo.data.bsv21) {
358
- const token = txo.data.bsv21.data;
359
- const sym = token.sym || 'tokens';
360
- const amt = Number(token.amt) / 10 ** token.dec;
361
- parts.push(`${amt} ${sym}`);
362
- }
363
- else if (txo.basket === '1sat') {
364
- parts.push('ordinal');
365
- }
366
- else if (txo.basket === 'opns') {
367
- parts.push('OPNS name');
368
- }
369
- else if (txo.basket === 'fund') {
370
- sats += Number(txo.output.satoshis || 0);
371
- }
372
- }
373
- if (sats > 0) {
374
- parts.push(`${sats} sats`);
163
+ // Build address → derivation map for the indexer-based owner matching
164
+ const addrDerivations = new Map();
165
+ for (const [address, d] of addressMap) {
166
+ addrDerivations.set(address, {
167
+ outputIndex: 0, // not used in address mode
168
+ derivationPrefix: d.derivationPrefix,
169
+ derivationSuffix: d.derivationSuffix,
170
+ senderIdentityKey: d.senderIdentityKey,
171
+ });
375
172
  }
376
- if (parts.length === 0)
377
- return 'Received via address sync';
378
- const desc = `Received ${parts.join(' + ')}`;
379
- if (desc.length <= 50)
380
- return desc;
381
- return `${desc.slice(0, 47)}...`;
173
+ await internalizeBeef({
174
+ beef,
175
+ addressDerivations: addrDerivations,
176
+ wallet: ctx.wallet,
177
+ services,
178
+ chain: ctx.chain,
179
+ });
382
180
  }
181
+ export { syncMessages };
383
182
  /** All sync actions for registry */
384
- export const syncActions = [syncAddresses];
183
+ export const syncActions = [syncAddresses, syncMessages];
385
184
  export { ProcessedTxStoreIdb } from './ProcessedTxStoreIdb';
386
185
  export { ProcessedTxStoreSqlite } from './ProcessedTxStoreSqlite';
387
186
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Message Box Sync Action
3
+ *
4
+ * Polls the message box for incoming paymail payments,
5
+ * internalizes each one via the shared BEEF pipeline,
6
+ * and acknowledges only after successful internalization.
7
+ */
8
+ import type { Action } from '../types';
9
+ export interface SyncMessagesInput {
10
+ /** Message box name to poll (default: "payment_inbox") */
11
+ messageBox?: string;
12
+ }
13
+ export interface SyncMessagesResult {
14
+ /** Number of messages successfully internalized */
15
+ processed: number;
16
+ /** Number of messages that failed to internalize */
17
+ failed: number;
18
+ }
19
+ export declare const syncMessages: Action<SyncMessagesInput, SyncMessagesResult>;
20
+ //# sourceMappingURL=syncMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncMessages.d.ts","sourceRoot":"","sources":["../../src/sync/syncMessages.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAUtC,MAAM,WAAW,iBAAiB;IACjC,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IAClC,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAA;IACjB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;CACd;AA+BD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CA0GtE,CAAA"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Message Box Sync Action
3
+ *
4
+ * Polls the message box for incoming paymail payments,
5
+ * internalizes each one via the shared BEEF pipeline,
6
+ * and acknowledges only after successful internalization.
7
+ */
8
+ import { Utils } from '@bsv/sdk';
9
+ import { AuthFetch } from '@bsv/sdk/auth';
10
+ import { internalizeBeef, } from '../utils/internalizeBeef';
11
+ // ============================================================================
12
+ // Action
13
+ // ============================================================================
14
+ export const syncMessages = {
15
+ meta: {
16
+ name: 'syncMessages',
17
+ description: 'Sync incoming paymail payments from the message box into the wallet',
18
+ category: 'sync',
19
+ inputSchema: {
20
+ type: 'object',
21
+ properties: {
22
+ messageBox: {
23
+ type: 'string',
24
+ description: 'Message box name to poll (default: "payment_inbox")',
25
+ },
26
+ },
27
+ },
28
+ requiresServices: true,
29
+ },
30
+ async execute(ctx, input) {
31
+ const services = ctx.services;
32
+ if (!services) {
33
+ throw new Error('syncMessages requires services in context');
34
+ }
35
+ const messageBox = input.messageBox || 'payment_inbox';
36
+ const messageboxUrl = `${services.baseUrl}/1sat/messagebox`;
37
+ const authFetch = new AuthFetch(ctx.wallet);
38
+ // 1. List pending messages
39
+ const listResponse = await authFetch.fetch(`${messageboxUrl}/listMessages`, {
40
+ method: 'POST',
41
+ headers: { 'Content-Type': 'application/json' },
42
+ body: JSON.stringify({ messageBox }),
43
+ });
44
+ if (!listResponse.ok) {
45
+ throw new Error(`Failed to list messages: ${listResponse.status} ${listResponse.statusText}`);
46
+ }
47
+ const { messages } = (await listResponse.json());
48
+ if (!messages || messages.length === 0) {
49
+ return { processed: 0, failed: 0 };
50
+ }
51
+ // 2. Process each message
52
+ let processed = 0;
53
+ let failed = 0;
54
+ const acknowledgedIds = [];
55
+ for (const msg of messages) {
56
+ try {
57
+ const payment = JSON.parse(msg.body);
58
+ const beefBytes = new Uint8Array(Utils.toArray(payment.beef, 'hex'));
59
+ const outputDerivation = {
60
+ outputIndex: payment.outputIndex,
61
+ derivationPrefix: payment.derivationPrefix,
62
+ derivationSuffix: payment.derivationSuffix,
63
+ senderIdentityKey: payment.senderIdentityKey,
64
+ };
65
+ await internalizeBeef({
66
+ beef: beefBytes,
67
+ outputs: [outputDerivation],
68
+ wallet: ctx.wallet,
69
+ services,
70
+ chain: ctx.chain,
71
+ });
72
+ acknowledgedIds.push(msg.messageId);
73
+ processed++;
74
+ }
75
+ catch (error) {
76
+ console.error(`[syncMessages] Failed to process message ${msg.messageId}:`, error instanceof Error ? error.message : String(error));
77
+ failed++;
78
+ }
79
+ }
80
+ // 3. Acknowledge successfully internalized messages
81
+ if (acknowledgedIds.length > 0) {
82
+ const ackResponse = await authFetch.fetch(`${messageboxUrl}/acknowledgeMessage`, {
83
+ method: 'POST',
84
+ headers: { 'Content-Type': 'application/json' },
85
+ body: JSON.stringify({ messageIds: acknowledgedIds }),
86
+ });
87
+ if (!ackResponse.ok) {
88
+ console.error(`[syncMessages] Failed to acknowledge messages: ${ackResponse.status}`);
89
+ }
90
+ }
91
+ return { processed, failed };
92
+ },
93
+ };
94
+ //# sourceMappingURL=syncMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncMessages.js","sourceRoot":"","sources":["../../src/sync/syncMessages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Shared BEEF internalization pipeline.
3
+ *
4
+ * Takes raw BEEF bytes, parses the transaction with indexers to determine
5
+ * basket/tags/protocol, builds InternalizeOutput entries, and calls
6
+ * wallet.internalizeAction().
7
+ *
8
+ * Used by both address sync (external deposits) and message box sync (paymail payments).
9
+ */
10
+ import type { OneSatServices } from '@1sat/client';
11
+ import { type WalletInterface } from '@bsv/sdk';
12
+ /** A single output to internalize, with its derivation info. */
13
+ export interface OutputDerivation {
14
+ outputIndex: number;
15
+ derivationPrefix: string;
16
+ derivationSuffix: string;
17
+ senderIdentityKey: string;
18
+ }
19
+ export interface InternalizeBeefOptions {
20
+ /** Raw BEEF bytes */
21
+ beef: Uint8Array;
22
+ /** Wallet for calling internalizeAction */
23
+ wallet: WalletInterface;
24
+ /** Services for loading source transactions and running indexers */
25
+ services: OneSatServices;
26
+ /** Network chain */
27
+ chain: 'main' | 'test';
28
+ /**
29
+ * Explicit output derivations by vout index (message box sync).
30
+ * Provide either `outputs` or `addressDerivations`, not both.
31
+ */
32
+ outputs?: OutputDerivation[];
33
+ /**
34
+ * Address-based derivation lookup (address sync).
35
+ * Maps owner address → derivation info. After indexer parsing,
36
+ * txo.owner is matched against this map.
37
+ */
38
+ addressDerivations?: Map<string, OutputDerivation>;
39
+ }
40
+ export interface InternalizeBeefResult {
41
+ txid: string;
42
+ internalized: number;
43
+ }
44
+ export declare function internalizeBeef(opts: InternalizeBeefOptions): Promise<InternalizeBeefResult>;
45
+ //# sourceMappingURL=internalizeBeef.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internalizeBeef.d.ts","sourceRoot":"","sources":["../../src/utils/internalizeBeef.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAKN,KAAK,eAAe,EACpB,MAAM,UAAU,CAAA;AAkBjB,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,sBAAsB;IACtC,qBAAqB;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,2CAA2C;IAC3C,MAAM,EAAE,eAAe,CAAA;IACvB,oEAAoE;IACpE,QAAQ,EAAE,cAAc,CAAA;IACxB,oBAAoB;IACpB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;CACpB;AAMD,wBAAsB,eAAe,CACpC,IAAI,EAAE,sBAAsB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAoFhC"}