openclaw-overlay-plugin 0.7.34 → 0.7.36
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 +56 -337
- package/SKILL.md +2 -2
- package/dist/index.js +13 -2
- package/dist/src/scripts/config.d.ts +1 -1
- package/dist/src/scripts/config.js +1 -1
- package/index.ts +15 -2
- package/openclaw.plugin.json +3 -2
- package/package.json +1 -1
- package/{dist → src}/core/config.d.ts +1 -0
- package/src/core/config.d.ts.map +1 -0
- package/{dist → src}/core/config.js +1 -0
- package/src/core/config.js.map +1 -0
- package/{dist → src}/core/payment.d.ts +1 -0
- package/src/core/payment.d.ts.map +1 -0
- package/{dist → src}/core/payment.js +1 -0
- package/src/core/payment.js.map +1 -0
- package/{dist → src}/core/types.d.ts +1 -0
- package/src/core/types.d.ts.map +1 -0
- package/{dist → src}/core/types.js +1 -0
- package/src/core/types.js.map +1 -0
- package/{dist → src}/core/verify.d.ts +1 -0
- package/src/core/verify.d.ts.map +1 -0
- package/{dist → src}/core/verify.js +1 -0
- package/src/core/verify.js.map +1 -0
- package/{dist → src}/core/wallet.d.ts +1 -0
- package/src/core/wallet.d.ts.map +1 -0
- package/{dist → src}/core/wallet.js +7 -1
- package/src/core/wallet.js.map +1 -0
- package/src/scripts/config.ts +1 -1
- package/dist/cli-main.d.ts +0 -7
- package/dist/cli-main.js +0 -192
- package/dist/cli.d.ts +0 -8
- package/dist/cli.js +0 -14
- package/dist/core/index.d.ts +0 -25
- package/dist/core/index.js +0 -26
- package/dist/scripts/baemail/commands.d.ts +0 -64
- package/dist/scripts/baemail/commands.js +0 -259
- package/dist/scripts/baemail/handler.d.ts +0 -36
- package/dist/scripts/baemail/handler.js +0 -284
- package/dist/scripts/baemail/index.d.ts +0 -5
- package/dist/scripts/baemail/index.js +0 -5
- package/dist/scripts/config.d.ts +0 -48
- package/dist/scripts/config.js +0 -68
- package/dist/scripts/index.d.ts +0 -7
- package/dist/scripts/index.js +0 -7
- package/dist/scripts/messaging/connect.d.ts +0 -8
- package/dist/scripts/messaging/connect.js +0 -114
- package/dist/scripts/messaging/handlers.d.ts +0 -21
- package/dist/scripts/messaging/handlers.js +0 -334
- package/dist/scripts/messaging/inbox.d.ts +0 -11
- package/dist/scripts/messaging/inbox.js +0 -51
- package/dist/scripts/messaging/index.d.ts +0 -8
- package/dist/scripts/messaging/index.js +0 -8
- package/dist/scripts/messaging/poll.d.ts +0 -7
- package/dist/scripts/messaging/poll.js +0 -52
- package/dist/scripts/messaging/send.d.ts +0 -7
- package/dist/scripts/messaging/send.js +0 -43
- package/dist/scripts/output.d.ts +0 -12
- package/dist/scripts/output.js +0 -19
- package/dist/scripts/overlay/discover.d.ts +0 -7
- package/dist/scripts/overlay/discover.js +0 -72
- package/dist/scripts/overlay/index.d.ts +0 -7
- package/dist/scripts/overlay/index.js +0 -7
- package/dist/scripts/overlay/registration.d.ts +0 -19
- package/dist/scripts/overlay/registration.js +0 -176
- package/dist/scripts/overlay/services.d.ts +0 -29
- package/dist/scripts/overlay/services.js +0 -167
- package/dist/scripts/overlay/transaction.d.ts +0 -42
- package/dist/scripts/overlay/transaction.js +0 -103
- package/dist/scripts/payment/build.d.ts +0 -24
- package/dist/scripts/payment/build.js +0 -54
- package/dist/scripts/payment/commands.d.ts +0 -15
- package/dist/scripts/payment/commands.js +0 -73
- package/dist/scripts/payment/index.d.ts +0 -6
- package/dist/scripts/payment/index.js +0 -6
- package/dist/scripts/payment/types.d.ts +0 -56
- package/dist/scripts/payment/types.js +0 -4
- package/dist/scripts/services/index.d.ts +0 -6
- package/dist/scripts/services/index.js +0 -6
- package/dist/scripts/services/queue.d.ts +0 -11
- package/dist/scripts/services/queue.js +0 -28
- package/dist/scripts/services/request.d.ts +0 -7
- package/dist/scripts/services/request.js +0 -82
- package/dist/scripts/services/respond.d.ts +0 -11
- package/dist/scripts/services/respond.js +0 -132
- package/dist/scripts/types.d.ts +0 -107
- package/dist/scripts/types.js +0 -4
- package/dist/scripts/utils/index.d.ts +0 -6
- package/dist/scripts/utils/index.js +0 -6
- package/dist/scripts/utils/merkle.d.ts +0 -12
- package/dist/scripts/utils/merkle.js +0 -47
- package/dist/scripts/utils/storage.d.ts +0 -66
- package/dist/scripts/utils/storage.js +0 -211
- package/dist/scripts/utils/woc.d.ts +0 -26
- package/dist/scripts/utils/woc.js +0 -91
- package/dist/scripts/wallet/balance.d.ts +0 -22
- package/dist/scripts/wallet/balance.js +0 -240
- package/dist/scripts/wallet/identity.d.ts +0 -70
- package/dist/scripts/wallet/identity.js +0 -151
- package/dist/scripts/wallet/index.d.ts +0 -6
- package/dist/scripts/wallet/index.js +0 -6
- package/dist/scripts/wallet/setup.d.ts +0 -15
- package/dist/scripts/wallet/setup.js +0 -105
- package/dist/scripts/x-verification/commands.d.ts +0 -27
- package/dist/scripts/x-verification/commands.js +0 -222
- package/dist/scripts/x-verification/index.d.ts +0 -4
- package/dist/scripts/x-verification/index.js +0 -4
- package/dist/services/built-in/api-proxy/index.d.ts +0 -6
- package/dist/services/built-in/api-proxy/index.js +0 -23
- package/dist/services/built-in/code-develop/index.d.ts +0 -6
- package/dist/services/built-in/code-develop/index.js +0 -23
- package/dist/services/built-in/code-review/index.d.ts +0 -10
- package/dist/services/built-in/code-review/index.js +0 -51
- package/dist/services/built-in/image-analysis/index.d.ts +0 -6
- package/dist/services/built-in/image-analysis/index.js +0 -33
- package/dist/services/built-in/memory-store/index.d.ts +0 -6
- package/dist/services/built-in/memory-store/index.js +0 -22
- package/dist/services/built-in/roulette/index.d.ts +0 -6
- package/dist/services/built-in/roulette/index.js +0 -27
- package/dist/services/built-in/summarize/index.d.ts +0 -6
- package/dist/services/built-in/summarize/index.js +0 -21
- package/dist/services/built-in/tell-joke/handler.d.ts +0 -7
- package/dist/services/built-in/tell-joke/handler.js +0 -122
- package/dist/services/built-in/tell-joke/index.d.ts +0 -9
- package/dist/services/built-in/tell-joke/index.js +0 -31
- package/dist/services/built-in/translate/index.d.ts +0 -6
- package/dist/services/built-in/translate/index.js +0 -21
- package/dist/services/built-in/web-research/index.d.ts +0 -9
- package/dist/services/built-in/web-research/index.js +0 -51
- package/dist/services/index.d.ts +0 -13
- package/dist/services/index.js +0 -14
- package/dist/services/loader.d.ts +0 -77
- package/dist/services/loader.js +0 -292
- package/dist/services/manager.d.ts +0 -86
- package/dist/services/manager.js +0 -255
- package/dist/services/registry.d.ts +0 -98
- package/dist/services/registry.js +0 -204
- package/dist/services/types.d.ts +0 -230
- package/dist/services/types.js +0 -30
- package/dist/test/cli.test.d.ts +0 -7
- package/dist/test/cli.test.js +0 -329
- package/dist/test/comprehensive-overlay.test.d.ts +0 -13
- package/dist/test/comprehensive-overlay.test.js +0 -593
- package/dist/test/key-derivation.test.d.ts +0 -12
- package/dist/test/key-derivation.test.js +0 -86
- package/dist/test/overlay-submit.test.d.ts +0 -10
- package/dist/test/overlay-submit.test.js +0 -460
- package/dist/test/request-response-flow.test.d.ts +0 -5
- package/dist/test/request-response-flow.test.js +0 -209
- package/dist/test/service-system.test.d.ts +0 -5
- package/dist/test/service-system.test.js +0 -190
- package/dist/test/utils/server-logic.d.ts +0 -98
- package/dist/test/utils/server-logic.js +0 -286
- package/dist/test/wallet.test.d.ts +0 -7
- package/dist/test/wallet.test.js +0 -146
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["wallet.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKvD,OAAO,KAAK,EACV,YAAY,EAEZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AAQpB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAc;IACzB,kFAAkF;IAClF,SAAgB,MAAM,EAAE,WAAW,CAAC;IAEpC,OAAO;IAQP;;;OAGG;mBACkB,MAAM;IAwB3B;;;OAGG;WACU,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAoBhE;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAQlE;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhE;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAQhE,6EAA6E;IAC7E,QAAQ,IAAI,WAAW;IAQvB;;;;;;OAMG;mBACkB,UAAU;CAyEhC"}
|
|
@@ -175,7 +175,12 @@ export class BSVAgentWallet {
|
|
|
175
175
|
const storage = new WalletStorageManager(identityKey);
|
|
176
176
|
// 3. Network services (ARC broadcasting, chain tracking, etc.)
|
|
177
177
|
const serviceOptions = Services.createDefaultOptions(chain);
|
|
178
|
-
|
|
178
|
+
const chaintracksUrl = process.env.BSV_CHAINTRACKS_URL || 'https://chaintracks-us-1.bsvb.tech';
|
|
179
|
+
const arcUrl = process.env.BSV_ARC_URL;
|
|
180
|
+
serviceOptions.chaintracks = new ChaintracksServiceClient(chain, chaintracksUrl);
|
|
181
|
+
if (arcUrl) {
|
|
182
|
+
serviceOptions.arcUrl = arcUrl;
|
|
183
|
+
}
|
|
179
184
|
serviceOptions.taalApiKey = taalApiKey;
|
|
180
185
|
const services = new Services(serviceOptions);
|
|
181
186
|
// 4. Background monitor
|
|
@@ -217,3 +222,4 @@ export class BSVAgentWallet {
|
|
|
217
222
|
};
|
|
218
223
|
}
|
|
219
224
|
}
|
|
225
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["wallet.ts"],"names":[],"mappings":"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"}
|
package/src/scripts/config.ts
CHANGED
|
@@ -46,7 +46,7 @@ export const WOC_API_KEY = process.env.WOC_API_KEY || '';
|
|
|
46
46
|
export const OVERLAY_STATE_DIR = path.join(os.homedir(), '.openclaw', 'openclaw-overlay');
|
|
47
47
|
|
|
48
48
|
/** Protocol identifier for overlay transactions */
|
|
49
|
-
export const PROTOCOL_ID = '
|
|
49
|
+
export const PROTOCOL_ID = 'clawdbot-overlay-v1';
|
|
50
50
|
|
|
51
51
|
/** Topic managers for overlay submissions */
|
|
52
52
|
export const TOPICS = {
|
package/dist/cli-main.d.ts
DELETED
package/dist/cli-main.js
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BSV Overlay CLI - Main Command Dispatcher
|
|
3
|
-
*
|
|
4
|
-
* Routes commands to the appropriate modules.
|
|
5
|
-
* All business logic is in the scripts/ modules.
|
|
6
|
-
*/
|
|
7
|
-
import { ok, fail } from './scripts/output.js';
|
|
8
|
-
// Wallet commands
|
|
9
|
-
import { cmdSetup, cmdIdentity, cmdAddress } from './scripts/wallet/setup.js';
|
|
10
|
-
import { cmdBalance, cmdImport, cmdRefund } from './scripts/wallet/balance.js';
|
|
11
|
-
// Overlay registration commands
|
|
12
|
-
import { cmdRegister, cmdUnregister } from './scripts/overlay/registration.js';
|
|
13
|
-
// Service commands
|
|
14
|
-
import { cmdServices, cmdAdvertise, cmdRemove, cmdReadvertise } from './scripts/overlay/services.js';
|
|
15
|
-
// Discovery commands
|
|
16
|
-
import { cmdDiscover } from './scripts/overlay/discover.js';
|
|
17
|
-
// Payment commands
|
|
18
|
-
import { cmdPay, cmdVerify, cmdAccept } from './scripts/payment/commands.js';
|
|
19
|
-
// Messaging commands
|
|
20
|
-
import { cmdSend } from './scripts/messaging/send.js';
|
|
21
|
-
import { cmdInbox, cmdAck } from './scripts/messaging/inbox.js';
|
|
22
|
-
import { cmdPoll } from './scripts/messaging/poll.js';
|
|
23
|
-
import { cmdConnect } from './scripts/messaging/connect.js';
|
|
24
|
-
// Service request/response commands
|
|
25
|
-
import { cmdRequestService } from './scripts/services/request.js';
|
|
26
|
-
import { cmdRespondService, cmdResearchRespond } from './scripts/services/respond.js';
|
|
27
|
-
import { cmdServiceQueue, cmdResearchQueue } from './scripts/services/queue.js';
|
|
28
|
-
// X verification commands
|
|
29
|
-
import { cmdXVerifyStart, cmdXVerifyComplete, cmdXVerifications, cmdXLookup, cmdXEngagementQueue, cmdXEngagementFulfill, } from './scripts/x-verification/commands.js';
|
|
30
|
-
// Baemail commands
|
|
31
|
-
import { cmdBaemailSetup, cmdBaemailConfig, cmdBaemailBlock, cmdBaemailUnblock, cmdBaemailLog, cmdBaemailRefund, } from './scripts/baemail/commands.js';
|
|
32
|
-
const [, , command, ...args] = process.argv;
|
|
33
|
-
async function main() {
|
|
34
|
-
try {
|
|
35
|
-
switch (command) {
|
|
36
|
-
// Help
|
|
37
|
-
case 'help':
|
|
38
|
-
case '--help':
|
|
39
|
-
case '-h':
|
|
40
|
-
ok({
|
|
41
|
-
usage: 'openclaw-overlay <command> [args...]',
|
|
42
|
-
commands: {
|
|
43
|
-
wallet: ['setup', 'identity', 'address', 'balance', 'import <txid> [vout]', 'refund <address>'],
|
|
44
|
-
registration: ['register', 'unregister'],
|
|
45
|
-
services: ['services', 'advertise <id> <name> <priceSats> [desc]', 'readvertise <id> [name] [priceSats] [desc]', 'remove <id>'],
|
|
46
|
-
discovery: ['discover [--service <type>] [--agent <name>]'],
|
|
47
|
-
payments: ['pay <pubkey> <sats> [desc]', 'verify <beef>', 'accept <beef> <prefix> <suffix> <senderKey> [desc]'],
|
|
48
|
-
messaging: ['send <key> <type> <json>', 'inbox', 'ack', 'poll', 'connect'],
|
|
49
|
-
'service-requests': ['request-service <key> <serviceId> <sats> [input]', 'service-queue', 'respond-service <reqId> <key> <serviceId> <result>'],
|
|
50
|
-
research: ['research-queue', 'research-respond <reqId>'],
|
|
51
|
-
'x-verification': ['x-verify-start <handle>', 'x-verify-complete <handle>', 'x-verifications', 'x-lookup <handle>', 'x-engagement-queue', 'x-engagement-fulfill <reqId> <result>'],
|
|
52
|
-
baemail: ['baemail-setup <price> <xHandle> <forwardEmail> <greeting>', 'baemail-config', 'baemail-block <sender>', 'baemail-unblock <sender>', 'baemail-log [limit]', 'baemail-refund <msgId>'],
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
break;
|
|
56
|
-
// Wallet
|
|
57
|
-
case 'setup':
|
|
58
|
-
await cmdSetup();
|
|
59
|
-
break;
|
|
60
|
-
case 'identity':
|
|
61
|
-
await cmdIdentity();
|
|
62
|
-
break;
|
|
63
|
-
case 'address':
|
|
64
|
-
await cmdAddress();
|
|
65
|
-
break;
|
|
66
|
-
case 'balance':
|
|
67
|
-
await cmdBalance();
|
|
68
|
-
break;
|
|
69
|
-
case 'import':
|
|
70
|
-
await cmdImport(args[0], args[1]);
|
|
71
|
-
break;
|
|
72
|
-
case 'refund':
|
|
73
|
-
await cmdRefund(args[0]);
|
|
74
|
-
break;
|
|
75
|
-
// Overlay registration
|
|
76
|
-
case 'register':
|
|
77
|
-
await cmdRegister();
|
|
78
|
-
break;
|
|
79
|
-
case 'unregister':
|
|
80
|
-
await cmdUnregister();
|
|
81
|
-
break;
|
|
82
|
-
// Services
|
|
83
|
-
case 'services':
|
|
84
|
-
await cmdServices();
|
|
85
|
-
break;
|
|
86
|
-
case 'advertise':
|
|
87
|
-
await cmdAdvertise(args[0], args[1], args[2], args[3]);
|
|
88
|
-
break;
|
|
89
|
-
case 'remove':
|
|
90
|
-
await cmdRemove(args[0]);
|
|
91
|
-
break;
|
|
92
|
-
case 'readvertise':
|
|
93
|
-
await cmdReadvertise(args[0], args[1], args[2], args.slice(3).join(' ') || undefined);
|
|
94
|
-
break;
|
|
95
|
-
// Discovery
|
|
96
|
-
case 'discover':
|
|
97
|
-
await cmdDiscover(args);
|
|
98
|
-
break;
|
|
99
|
-
// Payments
|
|
100
|
-
case 'pay':
|
|
101
|
-
await cmdPay(args[0], args[1], args.slice(2).join(' ') || undefined);
|
|
102
|
-
break;
|
|
103
|
-
case 'verify':
|
|
104
|
-
await cmdVerify(args[0]);
|
|
105
|
-
break;
|
|
106
|
-
case 'accept':
|
|
107
|
-
await cmdAccept(args[0], args[1], args[2], args[3], args.slice(4).join(' ') || undefined);
|
|
108
|
-
break;
|
|
109
|
-
// Messaging (relay)
|
|
110
|
-
case 'send':
|
|
111
|
-
await cmdSend(args[0], args[1], args[2]);
|
|
112
|
-
break;
|
|
113
|
-
case 'inbox':
|
|
114
|
-
await cmdInbox(args);
|
|
115
|
-
break;
|
|
116
|
-
case 'ack':
|
|
117
|
-
await cmdAck(args);
|
|
118
|
-
break;
|
|
119
|
-
case 'poll':
|
|
120
|
-
await cmdPoll();
|
|
121
|
-
break;
|
|
122
|
-
case 'connect':
|
|
123
|
-
await cmdConnect();
|
|
124
|
-
break;
|
|
125
|
-
case 'request-service':
|
|
126
|
-
await cmdRequestService(args[0], args[1], args[2], args[3]);
|
|
127
|
-
break;
|
|
128
|
-
case 'research-respond':
|
|
129
|
-
await cmdResearchRespond(args[0]);
|
|
130
|
-
break;
|
|
131
|
-
case 'research-queue':
|
|
132
|
-
await cmdResearchQueue();
|
|
133
|
-
break;
|
|
134
|
-
case 'service-queue':
|
|
135
|
-
await cmdServiceQueue();
|
|
136
|
-
break;
|
|
137
|
-
case 'respond-service':
|
|
138
|
-
await cmdRespondService(args[0], args[1], args[2], args.slice(3).join(' '));
|
|
139
|
-
break;
|
|
140
|
-
// X Account Verification
|
|
141
|
-
case 'x-verify-start':
|
|
142
|
-
await cmdXVerifyStart(args[0]);
|
|
143
|
-
break;
|
|
144
|
-
case 'x-verify-complete':
|
|
145
|
-
await cmdXVerifyComplete(args[0]);
|
|
146
|
-
break;
|
|
147
|
-
case 'x-verifications':
|
|
148
|
-
await cmdXVerifications();
|
|
149
|
-
break;
|
|
150
|
-
case 'x-lookup':
|
|
151
|
-
await cmdXLookup(args[0]);
|
|
152
|
-
break;
|
|
153
|
-
// X Engagement Service
|
|
154
|
-
case 'x-engagement-queue':
|
|
155
|
-
await cmdXEngagementQueue();
|
|
156
|
-
break;
|
|
157
|
-
case 'x-engagement-fulfill':
|
|
158
|
-
await cmdXEngagementFulfill(args[0], args[1]);
|
|
159
|
-
break;
|
|
160
|
-
// Baemail Service
|
|
161
|
-
case 'baemail-setup':
|
|
162
|
-
await cmdBaemailSetup(args[0], args[1], args[2], args[3]);
|
|
163
|
-
break;
|
|
164
|
-
case 'baemail-config':
|
|
165
|
-
await cmdBaemailConfig();
|
|
166
|
-
break;
|
|
167
|
-
case 'baemail-block':
|
|
168
|
-
await cmdBaemailBlock(args[0]);
|
|
169
|
-
break;
|
|
170
|
-
case 'baemail-unblock':
|
|
171
|
-
await cmdBaemailUnblock(args[0]);
|
|
172
|
-
break;
|
|
173
|
-
case 'baemail-log':
|
|
174
|
-
await cmdBaemailLog(args[0]);
|
|
175
|
-
break;
|
|
176
|
-
case 'baemail-refund':
|
|
177
|
-
await cmdBaemailRefund(args[0]);
|
|
178
|
-
break;
|
|
179
|
-
default:
|
|
180
|
-
fail(`Unknown command: ${command || '(none)'}. Commands: setup, identity, address, balance, import, refund, ` +
|
|
181
|
-
`register, unregister, services, advertise, readvertise, remove, discover, pay, verify, accept, ` +
|
|
182
|
-
`send, inbox, ack, poll, connect, request-service, research-queue, research-respond, ` +
|
|
183
|
-
`service-queue, respond-service, x-verify-start, x-verify-complete, x-verifications, x-lookup, ` +
|
|
184
|
-
`x-engagement-queue, x-engagement-fulfill, baemail-setup, baemail-config, baemail-block, ` +
|
|
185
|
-
`baemail-unblock, baemail-log, baemail-refund`);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
catch (err) {
|
|
189
|
-
fail(err.message || String(err));
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
main();
|
package/dist/cli.d.ts
DELETED
package/dist/cli.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* BSV Overlay CLI - Bootstrap Entry Point
|
|
4
|
-
*
|
|
5
|
-
* Sets environment variables before importing the main CLI module
|
|
6
|
-
* to suppress dotenv v17 verbose logging.
|
|
7
|
-
*/
|
|
8
|
-
// Must be set before any imports that might load dotenv
|
|
9
|
-
process.env.DOTENV_CONFIG_QUIET = 'true';
|
|
10
|
-
// Dynamic import to ensure env var is set first
|
|
11
|
-
import('./cli-main.js');
|
|
12
|
-
// Before importing the library
|
|
13
|
-
globalThis.window = { fetch: globalThis.fetch };
|
|
14
|
-
export {};
|
package/dist/core/index.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @a2a-bsv/core — Agent-to-agent BSV payment library.
|
|
3
|
-
*
|
|
4
|
-
* Wraps @bsv/sdk and @bsv/wallet-toolbox to provide a clean, minimal API
|
|
5
|
-
* for AI agents to pay each other using BSV blockchain transactions.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```ts
|
|
9
|
-
* import { BSVAgentWallet } from '@a2a-bsv/core';
|
|
10
|
-
*
|
|
11
|
-
* const wallet = await BSVAgentWallet.load({
|
|
12
|
-
* network: 'testnet',
|
|
13
|
-
* storageDir: './my-agent-wallet',
|
|
14
|
-
* });
|
|
15
|
-
*
|
|
16
|
-
* const identityKey = await wallet.getIdentityKey();
|
|
17
|
-
* console.log('My identity:', identityKey);
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export { BSVAgentWallet } from './wallet.js';
|
|
21
|
-
export type { WalletConfig, WalletIdentity, PaymentParams, PaymentResult, VerifyParams, VerifyResult, AcceptParams, AcceptResult, } from './types.js';
|
|
22
|
-
export { toChain, DEFAULT_TAAL_API_KEYS, DEFAULT_DB_NAME } from './config.js';
|
|
23
|
-
export type { Chain } from './config.js';
|
|
24
|
-
export { buildPayment } from './payment.js';
|
|
25
|
-
export { verifyPayment, acceptPayment } from './verify.js';
|
package/dist/core/index.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @a2a-bsv/core — Agent-to-agent BSV payment library.
|
|
3
|
-
*
|
|
4
|
-
* Wraps @bsv/sdk and @bsv/wallet-toolbox to provide a clean, minimal API
|
|
5
|
-
* for AI agents to pay each other using BSV blockchain transactions.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```ts
|
|
9
|
-
* import { BSVAgentWallet } from '@a2a-bsv/core';
|
|
10
|
-
*
|
|
11
|
-
* const wallet = await BSVAgentWallet.load({
|
|
12
|
-
* network: 'testnet',
|
|
13
|
-
* storageDir: './my-agent-wallet',
|
|
14
|
-
* });
|
|
15
|
-
*
|
|
16
|
-
* const identityKey = await wallet.getIdentityKey();
|
|
17
|
-
* console.log('My identity:', identityKey);
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
// Main wallet class
|
|
21
|
-
export { BSVAgentWallet } from './wallet.js';
|
|
22
|
-
// Config helpers (for advanced use)
|
|
23
|
-
export { toChain, DEFAULT_TAAL_API_KEYS, DEFAULT_DB_NAME } from './config.js';
|
|
24
|
-
// Lower-level helpers (for advanced use)
|
|
25
|
-
export { buildPayment } from './payment.js';
|
|
26
|
-
export { verifyPayment, acceptPayment } from './verify.js';
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Baemail commands - paid message forwarding service.
|
|
3
|
-
*/
|
|
4
|
-
export interface BaemailConfig {
|
|
5
|
-
deliveryChannel: string;
|
|
6
|
-
tiers: {
|
|
7
|
-
standard: number;
|
|
8
|
-
priority: number;
|
|
9
|
-
urgent: number;
|
|
10
|
-
};
|
|
11
|
-
maxMessageLength: number;
|
|
12
|
-
blocklist: string[];
|
|
13
|
-
createdAt: string;
|
|
14
|
-
updatedAt: string;
|
|
15
|
-
}
|
|
16
|
-
export interface BaemailLogEntry {
|
|
17
|
-
requestId: string;
|
|
18
|
-
from: string;
|
|
19
|
-
senderName: string;
|
|
20
|
-
tier: string;
|
|
21
|
-
paidSats: number;
|
|
22
|
-
messageLength: number;
|
|
23
|
-
deliveryChannel: string;
|
|
24
|
-
deliverySuccess: boolean;
|
|
25
|
-
deliveryError: string | null;
|
|
26
|
-
paymentTxid: string;
|
|
27
|
-
refundStatus: string | null;
|
|
28
|
-
refundTxid?: string;
|
|
29
|
-
refundedAt?: string;
|
|
30
|
-
timestamp: string;
|
|
31
|
-
_lineIdx?: number;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Load baemail configuration.
|
|
35
|
-
*/
|
|
36
|
-
export declare function loadBaemailConfig(): BaemailConfig | null;
|
|
37
|
-
/**
|
|
38
|
-
* Save baemail configuration.
|
|
39
|
-
*/
|
|
40
|
-
export declare function saveBaemailConfig(config: BaemailConfig): void;
|
|
41
|
-
/**
|
|
42
|
-
* Setup baemail service with delivery channel and tier pricing.
|
|
43
|
-
*/
|
|
44
|
-
export declare function cmdBaemailSetup(channel: string | undefined, standardStr: string | undefined, priorityStr?: string, urgentStr?: string): Promise<never>;
|
|
45
|
-
/**
|
|
46
|
-
* View current baemail configuration.
|
|
47
|
-
*/
|
|
48
|
-
export declare function cmdBaemailConfig(): Promise<never>;
|
|
49
|
-
/**
|
|
50
|
-
* Block a sender from using baemail.
|
|
51
|
-
*/
|
|
52
|
-
export declare function cmdBaemailBlock(identityKey: string | undefined): Promise<never>;
|
|
53
|
-
/**
|
|
54
|
-
* Unblock a sender.
|
|
55
|
-
*/
|
|
56
|
-
export declare function cmdBaemailUnblock(identityKey: string | undefined): Promise<never>;
|
|
57
|
-
/**
|
|
58
|
-
* View baemail delivery log.
|
|
59
|
-
*/
|
|
60
|
-
export declare function cmdBaemailLog(limitStr?: string): Promise<never>;
|
|
61
|
-
/**
|
|
62
|
-
* Refund a failed baemail delivery.
|
|
63
|
-
*/
|
|
64
|
-
export declare function cmdBaemailRefund(requestId: string | undefined): Promise<never>;
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Baemail commands - paid message forwarding service.
|
|
3
|
-
*/
|
|
4
|
-
import fs from 'node:fs';
|
|
5
|
-
import { PATHS } from '../config.js';
|
|
6
|
-
import { ok, fail } from '../output.js';
|
|
7
|
-
import { loadIdentity } from '../wallet/identity.js';
|
|
8
|
-
import { ensureStateDir } from '../utils/storage.js';
|
|
9
|
-
import { fetchWithTimeout } from '../utils/woc.js';
|
|
10
|
-
/**
|
|
11
|
-
* Load baemail configuration.
|
|
12
|
-
*/
|
|
13
|
-
export function loadBaemailConfig() {
|
|
14
|
-
try {
|
|
15
|
-
if (fs.existsSync(PATHS.baemailConfig)) {
|
|
16
|
-
return JSON.parse(fs.readFileSync(PATHS.baemailConfig, 'utf-8'));
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
catch (err) {
|
|
20
|
-
console.warn(`[baemail] Warning: Could not read config: ${err.message}`);
|
|
21
|
-
}
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Save baemail configuration.
|
|
26
|
-
*/
|
|
27
|
-
export function saveBaemailConfig(config) {
|
|
28
|
-
ensureStateDir();
|
|
29
|
-
fs.writeFileSync(PATHS.baemailConfig, JSON.stringify(config, null, 2));
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Setup baemail service with delivery channel and tier pricing.
|
|
33
|
-
*/
|
|
34
|
-
export async function cmdBaemailSetup(channel, standardStr, priorityStr, urgentStr) {
|
|
35
|
-
if (!channel || !standardStr) {
|
|
36
|
-
return fail('Usage: baemail-setup <channel> <standardSats> [prioritySats] [urgentSats]');
|
|
37
|
-
}
|
|
38
|
-
const standard = parseInt(standardStr, 10);
|
|
39
|
-
const priority = priorityStr ? parseInt(priorityStr, 10) : standard * 2;
|
|
40
|
-
const urgent = urgentStr ? parseInt(urgentStr, 10) : standard * 5;
|
|
41
|
-
if (isNaN(standard) || standard < 1) {
|
|
42
|
-
return fail('Standard rate must be a positive integer (sats)');
|
|
43
|
-
}
|
|
44
|
-
if (priority < standard) {
|
|
45
|
-
return fail('Priority rate must be >= standard rate');
|
|
46
|
-
}
|
|
47
|
-
if (urgent < priority) {
|
|
48
|
-
return fail('Urgent rate must be >= priority rate');
|
|
49
|
-
}
|
|
50
|
-
const config = {
|
|
51
|
-
deliveryChannel: channel,
|
|
52
|
-
tiers: { standard, priority, urgent },
|
|
53
|
-
maxMessageLength: 4000,
|
|
54
|
-
blocklist: [],
|
|
55
|
-
createdAt: new Date().toISOString(),
|
|
56
|
-
updatedAt: new Date().toISOString(),
|
|
57
|
-
};
|
|
58
|
-
saveBaemailConfig(config);
|
|
59
|
-
return ok({
|
|
60
|
-
configured: true,
|
|
61
|
-
deliveryChannel: channel,
|
|
62
|
-
tiers: config.tiers,
|
|
63
|
-
note: `Advertise with: cli advertise baemail "Baemail" "Paid message forwarding. Pay ${standard}+ sats to reach me." ${standard}`,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* View current baemail configuration.
|
|
68
|
-
*/
|
|
69
|
-
export async function cmdBaemailConfig() {
|
|
70
|
-
const config = loadBaemailConfig();
|
|
71
|
-
if (!config) {
|
|
72
|
-
return fail('Baemail not configured. Run: baemail-setup <channel> <standardSats> [prioritySats] [urgentSats]');
|
|
73
|
-
}
|
|
74
|
-
return ok(config);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Block a sender from using baemail.
|
|
78
|
-
*/
|
|
79
|
-
export async function cmdBaemailBlock(identityKey) {
|
|
80
|
-
if (!identityKey)
|
|
81
|
-
return fail('Usage: baemail-block <identityKey>');
|
|
82
|
-
const config = loadBaemailConfig();
|
|
83
|
-
if (!config) {
|
|
84
|
-
return fail('Baemail not configured. Run baemail-setup first.');
|
|
85
|
-
}
|
|
86
|
-
if (!config.blocklist)
|
|
87
|
-
config.blocklist = [];
|
|
88
|
-
if (config.blocklist.includes(identityKey)) {
|
|
89
|
-
return fail('Identity already blocked');
|
|
90
|
-
}
|
|
91
|
-
config.blocklist.push(identityKey);
|
|
92
|
-
config.updatedAt = new Date().toISOString();
|
|
93
|
-
saveBaemailConfig(config);
|
|
94
|
-
return ok({ blocked: identityKey, totalBlocked: config.blocklist.length });
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Unblock a sender.
|
|
98
|
-
*/
|
|
99
|
-
export async function cmdBaemailUnblock(identityKey) {
|
|
100
|
-
if (!identityKey)
|
|
101
|
-
return fail('Usage: baemail-unblock <identityKey>');
|
|
102
|
-
const config = loadBaemailConfig();
|
|
103
|
-
if (!config) {
|
|
104
|
-
return fail('Baemail not configured. Run baemail-setup first.');
|
|
105
|
-
}
|
|
106
|
-
if (!config.blocklist || !config.blocklist.includes(identityKey)) {
|
|
107
|
-
return fail('Identity not in blocklist');
|
|
108
|
-
}
|
|
109
|
-
config.blocklist = config.blocklist.filter(k => k !== identityKey);
|
|
110
|
-
config.updatedAt = new Date().toISOString();
|
|
111
|
-
saveBaemailConfig(config);
|
|
112
|
-
return ok({ unblocked: identityKey, totalBlocked: config.blocklist.length });
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* View baemail delivery log.
|
|
116
|
-
*/
|
|
117
|
-
export async function cmdBaemailLog(limitStr) {
|
|
118
|
-
const limit = parseInt(limitStr || '20', 10) || 20;
|
|
119
|
-
if (!fs.existsSync(PATHS.baemailLog)) {
|
|
120
|
-
return ok({ log: [], count: 0 });
|
|
121
|
-
}
|
|
122
|
-
const lines = fs.readFileSync(PATHS.baemailLog, 'utf-8').split('\n').filter(l => l.trim());
|
|
123
|
-
const entries = lines.map(l => {
|
|
124
|
-
try {
|
|
125
|
-
return JSON.parse(l);
|
|
126
|
-
}
|
|
127
|
-
catch {
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
}).filter(Boolean);
|
|
131
|
-
const recent = entries.slice(-limit).reverse();
|
|
132
|
-
return ok({ log: recent, count: entries.length, showing: recent.length });
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Refund a failed baemail delivery.
|
|
136
|
-
*/
|
|
137
|
-
export async function cmdBaemailRefund(requestId) {
|
|
138
|
-
if (!requestId)
|
|
139
|
-
return fail('Usage: baemail-refund <requestId>');
|
|
140
|
-
if (!fs.existsSync(PATHS.baemailLog)) {
|
|
141
|
-
return fail('No baemail log found');
|
|
142
|
-
}
|
|
143
|
-
// Find the entry
|
|
144
|
-
const lines = fs.readFileSync(PATHS.baemailLog, 'utf-8').split('\n').filter(l => l.trim());
|
|
145
|
-
const entries = lines.map((l, idx) => {
|
|
146
|
-
try {
|
|
147
|
-
return { ...JSON.parse(l), _lineIdx: idx };
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
152
|
-
}).filter(Boolean);
|
|
153
|
-
const entry = entries.find(e => e.requestId === requestId);
|
|
154
|
-
if (!entry) {
|
|
155
|
-
return fail(`Request ${requestId} not found in baemail log`);
|
|
156
|
-
}
|
|
157
|
-
if (entry.deliverySuccess) {
|
|
158
|
-
return fail('This delivery was successful — no refund needed');
|
|
159
|
-
}
|
|
160
|
-
if (entry.refundStatus === 'completed') {
|
|
161
|
-
return fail('Refund already processed for this request');
|
|
162
|
-
}
|
|
163
|
-
// Load wallet and SDK
|
|
164
|
-
const { identityKey, privKey } = await loadIdentity();
|
|
165
|
-
const walletIdentityRaw = fs.readFileSync(PATHS.walletIdentity, 'utf-8');
|
|
166
|
-
const walletIdentity = JSON.parse(walletIdentityRaw);
|
|
167
|
-
// Dynamic import SDK
|
|
168
|
-
let sdk;
|
|
169
|
-
try {
|
|
170
|
-
sdk = await import('@bsv/sdk');
|
|
171
|
-
}
|
|
172
|
-
catch {
|
|
173
|
-
return fail('Cannot load @bsv/sdk for refund transaction');
|
|
174
|
-
}
|
|
175
|
-
const { Transaction, P2PKH, PrivateKey, PublicKey, Hash } = sdk;
|
|
176
|
-
// Calculate refund amount
|
|
177
|
-
const refundSats = entry.paidSats - 1; // Keep 1 sat for tx fee
|
|
178
|
-
if (refundSats < 1) {
|
|
179
|
-
return fail('Amount too small to refund');
|
|
180
|
-
}
|
|
181
|
-
// Derive refund address from sender's identity key
|
|
182
|
-
const senderPubKey = PublicKey.fromString(entry.from);
|
|
183
|
-
const refundAddress = senderPubKey.toAddress().toString();
|
|
184
|
-
try {
|
|
185
|
-
// Load UTXOs
|
|
186
|
-
const address = walletIdentity.address;
|
|
187
|
-
const utxosResp = await fetchWithTimeout(`https://api.whatsonchain.com/v1/bsv/main/address/${address}/unspent/all`);
|
|
188
|
-
const data = await utxosResp.json();
|
|
189
|
-
const utxos = data.result || [];
|
|
190
|
-
if (!utxos || utxos.length === 0) {
|
|
191
|
-
return fail('No UTXOs available for refund');
|
|
192
|
-
}
|
|
193
|
-
// Build transaction
|
|
194
|
-
const tx = new Transaction();
|
|
195
|
-
let totalInput = 0;
|
|
196
|
-
const rootKey = PrivateKey.fromHex(walletIdentity.rootKeyHex);
|
|
197
|
-
for (const utxo of utxos) {
|
|
198
|
-
if (totalInput >= refundSats + 50)
|
|
199
|
-
break;
|
|
200
|
-
tx.addInput({
|
|
201
|
-
sourceTXID: utxo.tx_hash,
|
|
202
|
-
sourceOutputIndex: utxo.tx_pos,
|
|
203
|
-
sourceSatoshis: utxo.value,
|
|
204
|
-
script: new P2PKH().lock(rootKey.toPublicKey().toAddress()).toHex(),
|
|
205
|
-
unlockingScriptTemplate: new P2PKH().unlock(rootKey),
|
|
206
|
-
});
|
|
207
|
-
totalInput += utxo.value;
|
|
208
|
-
}
|
|
209
|
-
if (totalInput < refundSats + 10) {
|
|
210
|
-
return fail('Insufficient funds for refund');
|
|
211
|
-
}
|
|
212
|
-
// Refund output
|
|
213
|
-
tx.addOutput({
|
|
214
|
-
satoshis: refundSats,
|
|
215
|
-
lockingScript: new P2PKH().lock(refundAddress),
|
|
216
|
-
});
|
|
217
|
-
// Change output
|
|
218
|
-
const fee = 10;
|
|
219
|
-
const change = totalInput - refundSats - fee;
|
|
220
|
-
if (change > 1) {
|
|
221
|
-
tx.addOutput({
|
|
222
|
-
satoshis: change,
|
|
223
|
-
lockingScript: new P2PKH().lock(rootKey.toPublicKey().toAddress()),
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
await tx.sign();
|
|
227
|
-
// Broadcast
|
|
228
|
-
const broadcastResp = await fetchWithTimeout('https://api.whatsonchain.com/v1/bsv/main/tx/raw', {
|
|
229
|
-
method: 'POST',
|
|
230
|
-
headers: { 'Content-Type': 'application/json' },
|
|
231
|
-
body: JSON.stringify({ txhex: tx.toHex() }),
|
|
232
|
-
});
|
|
233
|
-
if (!broadcastResp.ok) {
|
|
234
|
-
const errBody = await broadcastResp.text();
|
|
235
|
-
return fail(`Broadcast failed: ${errBody}`);
|
|
236
|
-
}
|
|
237
|
-
const txid = tx.id('hex');
|
|
238
|
-
// Update log entry
|
|
239
|
-
const updatedLines = lines.map((l, idx) => {
|
|
240
|
-
if (idx === entry._lineIdx) {
|
|
241
|
-
const updated = { ...JSON.parse(l), refundStatus: 'completed', refundTxid: txid, refundedAt: new Date().toISOString() };
|
|
242
|
-
return JSON.stringify(updated);
|
|
243
|
-
}
|
|
244
|
-
return l;
|
|
245
|
-
});
|
|
246
|
-
fs.writeFileSync(PATHS.baemailLog, updatedLines.join('\n') + '\n');
|
|
247
|
-
return ok({
|
|
248
|
-
refunded: true,
|
|
249
|
-
requestId,
|
|
250
|
-
refundSats,
|
|
251
|
-
refundAddress,
|
|
252
|
-
txid,
|
|
253
|
-
note: `Refunded ${refundSats} sats to sender`,
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
catch (err) {
|
|
257
|
-
return fail(`Refund failed: ${err.message}`);
|
|
258
|
-
}
|
|
259
|
-
}
|