openclaw-arcade-plugin 0.2.9 → 0.2.11
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/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -5
- package/dist/index.js.map +1 -1
- package/index.ts +24 -6
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -2
- package/src/ambient.d.ts +2 -0
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,QAmK9B;AAEH,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
const log = debug('openclaw:plugin:arcade');
|
|
1
3
|
let isInitialized = false;
|
|
2
4
|
/**
|
|
3
5
|
* OpenClaw Arcade Plugin
|
|
@@ -45,37 +47,50 @@ export function register(api) {
|
|
|
45
47
|
required: ["action"]
|
|
46
48
|
},
|
|
47
49
|
async execute(_id, params) {
|
|
50
|
+
log('Executing tool action: %s with params: %O', params.action, params);
|
|
48
51
|
try {
|
|
49
52
|
const { action, txhex, txid } = params;
|
|
50
53
|
switch (action) {
|
|
51
54
|
case "broadcast":
|
|
52
55
|
if (!txhex)
|
|
53
56
|
throw new Error("txhex is required for broadcast");
|
|
57
|
+
log('Broadcasting transaction: %s...', txhex.slice(0, 64));
|
|
54
58
|
const bResp = await fetch(`${arcadeUrl}/v1/tx`, {
|
|
55
59
|
method: 'POST',
|
|
56
60
|
headers: { 'Content-Type': 'application/json' },
|
|
57
61
|
body: JSON.stringify({ rawTx: txhex })
|
|
58
62
|
});
|
|
59
63
|
const bData = await bResp.json();
|
|
60
|
-
if (!bResp.ok)
|
|
64
|
+
if (!bResp.ok) {
|
|
65
|
+
log('Broadcast failed: %O', bData);
|
|
61
66
|
throw new Error(`Broadcast failed: ${JSON.stringify(bData)}`);
|
|
67
|
+
}
|
|
68
|
+
log('Broadcast successful, TXID: %s', bData.txid);
|
|
62
69
|
return { content: [{ type: "text", text: `Transaction broadcasted! TXID: ${bData.txid}\nStatus: ${bData.txStatus}` }] };
|
|
63
70
|
case "status":
|
|
64
71
|
if (!txid)
|
|
65
72
|
throw new Error("txid is required for status check");
|
|
73
|
+
log('Checking status for TXID: %s', txid);
|
|
66
74
|
const sResp = await fetch(`${arcadeUrl}/v1/tx/${txid}`);
|
|
67
75
|
const sData = await sResp.json();
|
|
68
|
-
if (!sResp.ok)
|
|
76
|
+
if (!sResp.ok) {
|
|
77
|
+
log('Status check failed: %O', sData);
|
|
69
78
|
throw new Error(`Status check failed: ${JSON.stringify(sData)}`);
|
|
79
|
+
}
|
|
80
|
+
log('Status: %s, Block: %s', sData.txStatus, sData.blockHeight);
|
|
70
81
|
return { content: [{ type: "text", text: `Transaction ${txid}:\nStatus: ${sData.txStatus}\nBlock: ${sData.blockHeight || 'Pending'}` }] };
|
|
71
82
|
case "proof":
|
|
72
83
|
if (!txid)
|
|
73
84
|
throw new Error("txid is required for proof retrieval");
|
|
85
|
+
log('Fetching proof for TXID: %s', txid);
|
|
74
86
|
const pResp = await fetch(`${arcadeUrl}/v1/tx/${txid}/proof`);
|
|
75
|
-
if (!pResp.ok)
|
|
87
|
+
if (!pResp.ok) {
|
|
88
|
+
log('Proof retrieval failed: %d', pResp.status);
|
|
76
89
|
throw new Error(`Proof retrieval failed: ${pResp.status}`);
|
|
90
|
+
}
|
|
77
91
|
const pData = await pResp.arrayBuffer();
|
|
78
92
|
const base64Proof = Buffer.from(pData).toString('base64');
|
|
93
|
+
log('Proof retrieved, length: %d bytes', pData.byteLength);
|
|
79
94
|
return { content: [{ type: "text", text: `Merkle Proof (Base64): ${base64Proof}` }] };
|
|
80
95
|
case "config":
|
|
81
96
|
return { content: [{ type: "text", text: `Arcade Configuration:\nURL: ${arcadeUrl}\nNetwork: ${network}` }] };
|
|
@@ -98,10 +113,10 @@ export function register(api) {
|
|
|
98
113
|
name: "arcade",
|
|
99
114
|
description: "BSV transaction tracking commands",
|
|
100
115
|
acceptsArgs: true,
|
|
101
|
-
requireAuth: true,
|
|
102
116
|
handler: async (ctx) => {
|
|
103
117
|
try {
|
|
104
|
-
|
|
118
|
+
api.logger?.info?.(`[openclaw-arcade] Command received with args: ${JSON.stringify(ctx.args)} (type: ${typeof ctx.args})`);
|
|
119
|
+
const args = Array.isArray(ctx.args) ? ctx.args : (typeof ctx.args === 'string' ? ctx.args.split(' ').filter(Boolean) : []);
|
|
105
120
|
const action = args[0] || 'config';
|
|
106
121
|
const params = { action };
|
|
107
122
|
if (action === 'help') {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import os from "node:os";
|
|
3
|
+
import debug from 'debug';
|
|
4
|
+
|
|
5
|
+
const log = debug('openclaw:plugin:arcade');
|
|
3
6
|
|
|
4
7
|
let isInitialized = false;
|
|
5
8
|
/**
|
|
@@ -51,36 +54,51 @@ export function register(api: any) {
|
|
|
51
54
|
required: ["action"]
|
|
52
55
|
},
|
|
53
56
|
async execute(_id: string, params: any) {
|
|
57
|
+
log('Executing tool action: %s with params: %O', params.action, params);
|
|
54
58
|
try {
|
|
55
59
|
const { action, txhex, txid } = params;
|
|
56
60
|
|
|
57
61
|
switch (action) {
|
|
58
62
|
case "broadcast":
|
|
59
63
|
if (!txhex) throw new Error("txhex is required for broadcast");
|
|
64
|
+
log('Broadcasting transaction: %s...', txhex.slice(0, 64));
|
|
60
65
|
const bResp = await fetch(`${arcadeUrl}/v1/tx`, {
|
|
61
66
|
method: 'POST',
|
|
62
67
|
headers: { 'Content-Type': 'application/json' },
|
|
63
68
|
body: JSON.stringify({ rawTx: txhex })
|
|
64
69
|
});
|
|
65
70
|
const bData: any = await bResp.json();
|
|
66
|
-
if (!bResp.ok)
|
|
71
|
+
if (!bResp.ok) {
|
|
72
|
+
log('Broadcast failed: %O', bData);
|
|
73
|
+
throw new Error(`Broadcast failed: ${JSON.stringify(bData)}`);
|
|
74
|
+
}
|
|
75
|
+
log('Broadcast successful, TXID: %s', bData.txid);
|
|
67
76
|
return { content: [{ type: "text", text: `Transaction broadcasted! TXID: ${bData.txid}\nStatus: ${bData.txStatus}` }] };
|
|
68
77
|
|
|
69
78
|
case "status":
|
|
70
79
|
if (!txid) throw new Error("txid is required for status check");
|
|
80
|
+
log('Checking status for TXID: %s', txid);
|
|
71
81
|
const sResp = await fetch(`${arcadeUrl}/v1/tx/${txid}`);
|
|
72
82
|
const sData: any = await sResp.json();
|
|
73
|
-
if (!sResp.ok)
|
|
83
|
+
if (!sResp.ok) {
|
|
84
|
+
log('Status check failed: %O', sData);
|
|
85
|
+
throw new Error(`Status check failed: ${JSON.stringify(sData)}`);
|
|
86
|
+
}
|
|
87
|
+
log('Status: %s, Block: %s', sData.txStatus, sData.blockHeight);
|
|
74
88
|
return { content: [{ type: "text", text: `Transaction ${txid}:\nStatus: ${sData.txStatus}\nBlock: ${sData.blockHeight || 'Pending'}` }] };
|
|
75
89
|
|
|
76
90
|
case "proof":
|
|
77
91
|
if (!txid) throw new Error("txid is required for proof retrieval");
|
|
92
|
+
log('Fetching proof for TXID: %s', txid);
|
|
78
93
|
const pResp = await fetch(`${arcadeUrl}/v1/tx/${txid}/proof`);
|
|
79
|
-
if (!pResp.ok)
|
|
94
|
+
if (!pResp.ok) {
|
|
95
|
+
log('Proof retrieval failed: %d', pResp.status);
|
|
96
|
+
throw new Error(`Proof retrieval failed: ${pResp.status}`);
|
|
97
|
+
}
|
|
80
98
|
const pData = await pResp.arrayBuffer();
|
|
81
99
|
const base64Proof = Buffer.from(pData).toString('base64');
|
|
100
|
+
log('Proof retrieved, length: %d bytes', pData.byteLength);
|
|
82
101
|
return { content: [{ type: "text", text: `Merkle Proof (Base64): ${base64Proof}` }] };
|
|
83
|
-
|
|
84
102
|
case "config":
|
|
85
103
|
return { content: [{ type: "text", text: `Arcade Configuration:\nURL: ${arcadeUrl}\nNetwork: ${network}` }] };
|
|
86
104
|
|
|
@@ -103,10 +121,10 @@ export function register(api: any) {
|
|
|
103
121
|
name: "arcade",
|
|
104
122
|
description: "BSV transaction tracking commands",
|
|
105
123
|
acceptsArgs: true,
|
|
106
|
-
requireAuth: true,
|
|
107
124
|
handler: async (ctx: any) => {
|
|
108
125
|
try {
|
|
109
|
-
|
|
126
|
+
api.logger?.info?.(`[openclaw-arcade] Command received with args: ${JSON.stringify(ctx.args)} (type: ${typeof ctx.args})`);
|
|
127
|
+
const args = Array.isArray(ctx.args) ? ctx.args : (typeof ctx.args === 'string' ? ctx.args.split(' ').filter(Boolean) : []);
|
|
110
128
|
const action = args[0] || 'config';
|
|
111
129
|
const params: any = { action };
|
|
112
130
|
|
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openclaw-arcade-plugin",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.11",
|
|
4
4
|
"description": "OpenClaw plugin for transaction broadcasting and lifecycle tracking via BSV Arcade",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,9 +22,11 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@bsv/sdk": "^2.0.13",
|
|
25
|
-
"better-sqlite3": "^11.0.0"
|
|
25
|
+
"better-sqlite3": "^11.0.0",
|
|
26
|
+
"debug": "^4.4.0"
|
|
26
27
|
},
|
|
27
28
|
"devDependencies": {
|
|
29
|
+
"@types/debug": "^4.1.12",
|
|
28
30
|
"@types/node": "^22.10.0",
|
|
29
31
|
"eslint": "^10.1.0",
|
|
30
32
|
"typescript": "^5.7.0"
|
package/src/ambient.d.ts
ADDED