@1sat/actions 0.0.126 → 0.0.129
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.
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
* Cosign Token Deliveries Sync Action
|
|
3
3
|
*
|
|
4
4
|
* One-shot pull from a MessageBox slot used by cosign-wrapped BSV21 mints
|
|
5
|
-
* and transfers. Each message body carries a finalized BEEF,
|
|
6
|
-
* customInstructions the recipient will need
|
|
5
|
+
* and transfers. Each (decrypted) message body carries a finalized BEEF,
|
|
6
|
+
* the cosign customInstructions the recipient will need at spend time, and
|
|
7
7
|
* the output index that's owned by this wallet. We internalize the output
|
|
8
|
-
* into the bsv21 basket with the supplied customInstructions verbatim
|
|
9
|
-
* (no derivation re-write — these are cosign-protocol keys, not BRC-29).
|
|
8
|
+
* into the bsv21 basket with the supplied customInstructions verbatim.
|
|
10
9
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* Uses `@bsv/p2p` MessageBoxClient so encrypted bodies are decrypted using
|
|
11
|
+
* BRC-2 ECDH/AES-256-GCM via the wallet (matches what the sender used to
|
|
12
|
+
* encrypt). Intended call sites: any UI mount where a fresh sync is
|
|
13
|
+
* desired (e.g. yours-wallet popup mount). Not a polling loop.
|
|
13
14
|
*/
|
|
14
15
|
import type { Action } from '../types';
|
|
15
16
|
export interface SyncCosignDeliveriesInput {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCosignDeliveries.d.ts","sourceRoot":"","sources":["../../src/sync/syncCosignDeliveries.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"syncCosignDeliveries.d.ts","sourceRoot":"","sources":["../../src/sync/syncCosignDeliveries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AA6DtC,MAAM,WAAW,yBAAyB;IACzC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,0BAA0B;IAC1C,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAA;IACjB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;CACd;AAiBD,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACxC,yBAAyB,EACzB,0BAA0B,CAoI1B,CAAA"}
|
|
@@ -2,17 +2,63 @@
|
|
|
2
2
|
* Cosign Token Deliveries Sync Action
|
|
3
3
|
*
|
|
4
4
|
* One-shot pull from a MessageBox slot used by cosign-wrapped BSV21 mints
|
|
5
|
-
* and transfers. Each message body carries a finalized BEEF,
|
|
6
|
-
* customInstructions the recipient will need
|
|
5
|
+
* and transfers. Each (decrypted) message body carries a finalized BEEF,
|
|
6
|
+
* the cosign customInstructions the recipient will need at spend time, and
|
|
7
7
|
* the output index that's owned by this wallet. We internalize the output
|
|
8
|
-
* into the bsv21 basket with the supplied customInstructions verbatim
|
|
9
|
-
* (no derivation re-write — these are cosign-protocol keys, not BRC-29).
|
|
8
|
+
* into the bsv21 basket with the supplied customInstructions verbatim.
|
|
10
9
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* Uses `@bsv/p2p` MessageBoxClient so encrypted bodies are decrypted using
|
|
11
|
+
* BRC-2 ECDH/AES-256-GCM via the wallet (matches what the sender used to
|
|
12
|
+
* encrypt). Intended call sites: any UI mount where a fresh sync is
|
|
13
|
+
* desired (e.g. yours-wallet popup mount). Not a polling loop.
|
|
13
14
|
*/
|
|
15
|
+
import { MessageBoxClient } from '@bsv/p2p';
|
|
14
16
|
import { Utils } from '@bsv/sdk';
|
|
15
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Unwrap the server's {message: <string>} envelope, detect the nested
|
|
19
|
+
* {encryptedMessage: <base64>} ciphertext, and decrypt with the wallet
|
|
20
|
+
* using the same BRC-2 ECDH/AES-256-GCM keys the sender used.
|
|
21
|
+
*
|
|
22
|
+
* Falls through to a plain JSON parse when neither layer is present.
|
|
23
|
+
*/
|
|
24
|
+
async function unwrapAndDecryptMessageBody(rawBody, sender, wallet) {
|
|
25
|
+
const tryParse = (s) => {
|
|
26
|
+
try {
|
|
27
|
+
return JSON.parse(s);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return s;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
let level = rawBody;
|
|
34
|
+
if (typeof level === 'string')
|
|
35
|
+
level = tryParse(level);
|
|
36
|
+
// Server wraps as {message: <inner string>}.
|
|
37
|
+
if (level !== null &&
|
|
38
|
+
typeof level === 'object' &&
|
|
39
|
+
typeof level.message === 'string') {
|
|
40
|
+
level = tryParse(level.message);
|
|
41
|
+
}
|
|
42
|
+
// If we now have {encryptedMessage: <base64>}, decrypt.
|
|
43
|
+
if (level !== null &&
|
|
44
|
+
typeof level === 'object' &&
|
|
45
|
+
typeof level.encryptedMessage ===
|
|
46
|
+
'string') {
|
|
47
|
+
const ciphertext = Utils.toArray(level.encryptedMessage, 'base64');
|
|
48
|
+
const decrypted = await wallet.decrypt({
|
|
49
|
+
protocolID: [1, 'messagebox'],
|
|
50
|
+
keyID: '1',
|
|
51
|
+
counterparty: sender,
|
|
52
|
+
ciphertext,
|
|
53
|
+
});
|
|
54
|
+
const plaintext = Utils.toUTF8(decrypted.plaintext);
|
|
55
|
+
level = tryParse(plaintext);
|
|
56
|
+
}
|
|
57
|
+
if (level === null || typeof level !== 'object') {
|
|
58
|
+
throw new Error('message body did not resolve to a JSON object');
|
|
59
|
+
}
|
|
60
|
+
return level;
|
|
61
|
+
}
|
|
16
62
|
// ============================================================================
|
|
17
63
|
// Action
|
|
18
64
|
// ============================================================================
|
|
@@ -38,52 +84,71 @@ export const syncCosignDeliveries = {
|
|
|
38
84
|
},
|
|
39
85
|
async execute(ctx, input) {
|
|
40
86
|
const messageBox = input.messageBox || 'cosign_token_inbox';
|
|
41
|
-
const
|
|
87
|
+
const host = input.messageboxUrl?.replace(/\/+$/, '') ||
|
|
42
88
|
'https://messagebox.1sat.app';
|
|
43
|
-
|
|
44
|
-
//
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (!listResponse.ok) {
|
|
51
|
-
throw new Error(`Failed to list messages: ${listResponse.status} ${listResponse.statusText}`);
|
|
52
|
-
}
|
|
53
|
-
const { messages } = (await listResponse.json());
|
|
54
|
-
if (!messages || messages.length === 0) {
|
|
89
|
+
// MessageBoxClient encrypts on send and decrypts on listMessages,
|
|
90
|
+
// so we go through it (not raw AuthFetch) — the bodies on the wire
|
|
91
|
+
// are AES-256-GCM ciphertext under BRC-2 ECDH keys.
|
|
92
|
+
// biome-ignore lint/suspicious/noExplicitAny: WalletInterface typing diff between @bsv/sdk versions
|
|
93
|
+
const client = new MessageBoxClient({ walletClient: ctx.wallet, host });
|
|
94
|
+
const messages = await client.listMessages({ messageBox, host });
|
|
95
|
+
if (messages.length === 0) {
|
|
55
96
|
return { processed: 0, failed: 0 };
|
|
56
97
|
}
|
|
57
|
-
// 2. Internalize each delivery into the wallet's bsv21 basket.
|
|
58
98
|
let processed = 0;
|
|
59
99
|
let failed = 0;
|
|
60
100
|
const acknowledgedIds = [];
|
|
61
101
|
for (const msg of messages) {
|
|
62
102
|
try {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
103
|
+
// The server stores message bodies wrapped as {message: <inner>}
|
|
104
|
+
// where <inner> is itself a JSON string of {encryptedMessage:
|
|
105
|
+
// "<base64>"} (BRC-2 ECDH/AES-256-GCM ciphertext). MessageBox
|
|
106
|
+
// Client.listMessages's auto-decrypt only matches when the top-
|
|
107
|
+
// level parsed body has `encryptedMessage` directly, so it
|
|
108
|
+
// silently skips this nested envelope. Unwrap + decrypt here.
|
|
109
|
+
const body = await unwrapAndDecryptMessageBody(msg.body, msg.sender, ctx.wallet);
|
|
110
|
+
console.log(`[syncCosignDeliveries] message ${msg.messageId} parsed body keys:`, Object.keys(body));
|
|
111
|
+
const tokenId = typeof body.tokenId === 'string' ? body.tokenId : '';
|
|
112
|
+
const vout = typeof body.vout === 'number' ? body.vout : -1;
|
|
113
|
+
const beefField = body.beef;
|
|
114
|
+
const customInstructions = typeof body.customInstructions === 'string'
|
|
115
|
+
? body.customInstructions
|
|
116
|
+
: '';
|
|
117
|
+
const amount = typeof body.amount === 'string' || typeof body.amount === 'number'
|
|
118
|
+
? String(body.amount)
|
|
119
|
+
: '0';
|
|
120
|
+
if (!tokenId || vout < 0 || !beefField || !customInstructions) {
|
|
121
|
+
throw new Error(`message body missing required fields (have keys: ${Object.keys(body).join(',')})`);
|
|
122
|
+
}
|
|
123
|
+
const beefBytes = Array.isArray(beefField)
|
|
124
|
+
? beefField
|
|
125
|
+
: typeof beefField === 'string'
|
|
126
|
+
? Utils.toArray(beefField, 'hex')
|
|
127
|
+
: [];
|
|
128
|
+
if (beefBytes.length === 0) {
|
|
129
|
+
throw new Error('beef field could not be decoded as bytes');
|
|
130
|
+
}
|
|
131
|
+
const tokenIdShort = tokenId.slice(0, 8);
|
|
67
132
|
const tags = [
|
|
68
|
-
`bsv21:${
|
|
69
|
-
`amt:${
|
|
70
|
-
`tokenId:${
|
|
133
|
+
`bsv21:${tokenId}`,
|
|
134
|
+
`amt:${amount}`,
|
|
135
|
+
`tokenId:${tokenId}`,
|
|
71
136
|
];
|
|
72
137
|
await ctx.wallet.internalizeAction({
|
|
73
138
|
tx: beefBytes,
|
|
74
139
|
outputs: [
|
|
75
140
|
{
|
|
76
|
-
outputIndex:
|
|
141
|
+
outputIndex: vout,
|
|
77
142
|
protocol: 'basket insertion',
|
|
78
143
|
insertionRemittance: {
|
|
79
144
|
basket: 'bsv21',
|
|
80
145
|
tags,
|
|
81
|
-
customInstructions
|
|
146
|
+
customInstructions,
|
|
82
147
|
},
|
|
83
148
|
},
|
|
84
149
|
],
|
|
85
|
-
description: `Cosign token delivery (${
|
|
86
|
-
labels: [`bsv21:${
|
|
150
|
+
description: `Cosign token delivery (${tokenIdShort}…)`.slice(0, 50),
|
|
151
|
+
labels: [`bsv21:${tokenId}`],
|
|
87
152
|
});
|
|
88
153
|
acknowledgedIds.push(msg.messageId);
|
|
89
154
|
processed++;
|
|
@@ -93,15 +158,12 @@ export const syncCosignDeliveries = {
|
|
|
93
158
|
failed++;
|
|
94
159
|
}
|
|
95
160
|
}
|
|
96
|
-
// 3. Acknowledge successfully internalized messages.
|
|
97
161
|
if (acknowledgedIds.length > 0) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (!ackResponse.ok) {
|
|
104
|
-
console.error(`[syncCosignDeliveries] Failed to acknowledge messages: ${ackResponse.status}`);
|
|
162
|
+
try {
|
|
163
|
+
await client.acknowledgeMessage({ messageIds: acknowledgedIds, host });
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
console.error('[syncCosignDeliveries] Failed to acknowledge messages:', err instanceof Error ? err.message : String(err));
|
|
105
167
|
}
|
|
106
168
|
}
|
|
107
169
|
return { processed, failed };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCosignDeliveries.js","sourceRoot":"","sources":["../../src/sync/syncCosignDeliveries.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"syncCosignDeliveries.js","sourceRoot":"","sources":["../../src/sync/syncCosignDeliveries.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1sat/actions",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.129",
|
|
4
4
|
"description": "Action definitions for the 1Sat SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"@1sat/types": "0.0.20",
|
|
34
34
|
"@1sat/utils": "0.0.16",
|
|
35
35
|
"@1sat/wallet": "0.0.68",
|
|
36
|
-
"@1sat/templates": "0.0.12"
|
|
36
|
+
"@1sat/templates": "0.0.12",
|
|
37
|
+
"@bsv/p2p": "^1.1.6"
|
|
37
38
|
},
|
|
38
39
|
"peerDependencies": {
|
|
39
40
|
"@bsv/sdk": "^2.0.13"
|