openclaw-arcade-plugin 0.2.21 → 0.2.22

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.js CHANGED
@@ -3,7 +3,7 @@ import debug from "debug";
3
3
  var log = debug("openclaw:plugin:arcade");
4
4
  var isInitialized = false;
5
5
  function register(api) {
6
- const version = "0.2.21";
6
+ const version = "0.2.22";
7
7
  if (isInitialized) return;
8
8
  isInitialized = true;
9
9
  api.logger.info(`[arcade] Initializing Arcade Plugin v${version}`);
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../index.ts"],
4
- "sourcesContent": ["import path from \"node:path\";\nimport os from \"node:os\";\nimport debug from 'debug';\n\nconst log = debug('openclaw:plugin:arcade');\n\nlet isInitialized = false;\n/**\n * OpenClaw Arcade Plugin\n * Transaction broadcasting and lifecycle tracking via BSV Arcade.\n */\nexport function register(api: any) {\n const version = \"0.2.21\";\n if (isInitialized) return;\n isInitialized = true;\n\n api.logger.info(`[arcade] Initializing Arcade Plugin v${version}`);\n const entries = api.getConfig?.()?.plugins?.entries || {};\n const entry = entries['sv_arcade'] \n || entries['arcade'] \n || entries['openclaw-arcade-plugin'] \n || entries['openclaw-arcade'] \n || entries['bsv-arcade'] \n || {};\n \n const pluginConfig = { ...entry, ...(entry.config || {}), ...(api.config || {}) };\n const network = pluginConfig.network || 'mainnet';\n const defaultArcadeUrl = network === 'testnet' \n ? 'https://testnet.arc.gorillapool.io' \n : 'https://arc.gorillapool.io';\n const arcadeUrl = (pluginConfig.arcadeUrl || defaultArcadeUrl).replace(/\\/$/, '');\n\n // 1. Tool\n api.registerTool({\n name: \"arcade\",\n description: \"Submit and track BSV transactions with full lifecycle visibility\",\n parameters: {\n type: \"object\",\n properties: {\n action: {\n type: \"string\",\n enum: [\"broadcast\", \"status\", \"proof\", \"config\"],\n description: \"Action to perform\"\n },\n txhex: {\n type: \"string\",\n description: \"Hex-encoded raw transaction to broadcast\"\n },\n txid: {\n type: \"string\",\n description: \"Transaction ID to track or fetch proof for\"\n }\n },\n required: [\"action\"]\n },\n async execute(_id: string, params: any) {\n log('Executing tool action: %s with params: %O', params.action, params);\n try {\n const { action, txhex, txid } = params;\n\n switch (action) {\n case \"broadcast\":\n if (!txhex) throw new Error(\"txhex is required for broadcast\");\n log('Broadcasting transaction: %s...', txhex.slice(0, 64));\n const bResp = await fetch(`${arcadeUrl}/v1/tx`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ rawTx: txhex })\n });\n const bData: any = await bResp.json();\n if (!bResp.ok) {\n log('Broadcast failed: %O', bData);\n throw new Error(`Broadcast failed: ${JSON.stringify(bData)}`);\n }\n log('Broadcast successful, TXID: %s', bData.txid);\n return { content: [{ type: \"text\", text: `Transaction broadcasted! TXID: ${bData.txid}\\nStatus: ${bData.txStatus}` }] };\n\n case \"status\":\n if (!txid) throw new Error(\"txid is required for status check\");\n log('Checking status for TXID: %s', txid);\n const sResp = await fetch(`${arcadeUrl}/v1/tx/${txid}`);\n const sData: any = await sResp.json();\n if (!sResp.ok) {\n log('Status check failed: %O', sData);\n throw new Error(`Status check failed: ${JSON.stringify(sData)}`);\n }\n log('Status: %s, Block: %s', sData.txStatus, sData.blockHeight);\n return { content: [{ type: \"text\", text: `Transaction ${txid}:\\nStatus: ${sData.txStatus}\\nBlock: ${sData.blockHeight || 'Pending'}` }] };\n\n case \"proof\":\n if (!txid) throw new Error(\"txid is required for proof retrieval\");\n log('Fetching proof for TXID: %s', txid);\n const pResp = await fetch(`${arcadeUrl}/v1/tx/${txid}/proof`);\n if (!pResp.ok) {\n log('Proof retrieval failed: %d', pResp.status);\n throw new Error(`Proof retrieval failed: ${pResp.status}`);\n }\n const pData = await pResp.arrayBuffer();\n const base64Proof = Buffer.from(pData).toString('base64');\n log('Proof retrieved, length: %d bytes', pData.byteLength);\n return { content: [{ type: \"text\", text: `Merkle Proof (Base64): ${base64Proof}` }] };\n case \"config\":\n return { content: [{ type: \"text\", text: `Arcade Configuration:\\nURL: ${arcadeUrl}\\nNetwork: ${network}` }] };\n\n default:\n throw new Error(`Unknown action: ${action}`);\n }\n } catch (error: any) {\n return {\n content: [{\n type: \"text\",\n text: `Error: ${error.message || String(error)}`\n }]\n };\n }\n }\n });\n\n // 2. Command\n api.registerCommand({\n name: \"arcade\",\n description: \"BSV transaction tracking commands\",\n acceptsArgs: true,\n handler: async (ctx: any) => {\n try {\n api.logger?.info?.(`[openclaw-arcade] Command received with args: ${JSON.stringify(ctx.args)} (type: ${typeof ctx.args})`);\n const args = Array.isArray(ctx.args) ? ctx.args : (typeof ctx.args === 'string' ? ctx.args.split(' ').filter(Boolean) : []);\n const action = args[0] || 'config';\n const params: any = { action };\n \n if (action === 'help') {\n return { text: `\uD83D\uDEE1\uFE0F **Arcade Help**\\n\\n**Subcommands**:\\n- \\`status <txid>\\`: Check broadcast status\\n- \\`broadcast <hex>\\`: Send raw transaction\\n- \\`proof <txid>\\`: Fetch Merkle Proof\\n- \\`config\\`: Show active URL` };\n }\n\n if (action === 'status' && args[1]) params.txid = args[1];\n if (action === 'broadcast' && args[1]) params.txhex = args[1];\n\n // Custom logic for simplified chat output\n if (action === 'status' && params.txid) {\n const res = await fetch(`${arcadeUrl}/v1/tx/${params.txid}`);\n const data: any = await res.json();\n return { text: `\uD83D\uDEE1\uFE0F **Transaction Status**\\n**TXID**: ${params.txid}\\n**Status**: ${data.txStatus || 'Unknown'}` };\n }\n\n return { text: `Command '${action}' executed.` };\n } catch (error: any) {\n return { text: `\u274C Arcade Error: ${error.message}` };\n }\n }\n });\n\n // 3. CLI\n api.registerCli(({ program }: any) => {\n const arc = program.command(\"arcade\").description(\"BSV transaction tracking commands\");\n arc.command(\"status <txid>\").description(\"Check broadcast status\").action(async (txid: string) => {\n const res = await fetch(`${arcadeUrl}/v1/tx/${txid}`);\n const data: any = await res.json();\n console.log(JSON.stringify(data, null, 2));\n });\n\n arc.command(\"broadcast <hex>\").description(\"Send raw transaction\").action(async (txhex: string) => {\n const res = await fetch(`${arcadeUrl}/v1/tx`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ rawTx: txhex })\n });\n const data: any = await res.json();\n console.log(JSON.stringify(data, null, 2));\n });\n\n arc.command(\"config\").description(\"Show current Arcade configuration\").action(() => {\n console.log(JSON.stringify({ arcadeUrl, network }, null, 2));\n });\n }, { commands: [\"arcade\"] });\n }\n\nexport const plugin = {\n id: \"openclaw-arcade-plugin\",\n name: \"BSV Arcade Broadcaster\",\n description: \"Submit and track BSV transactions with full lifecycle visibility\",\n activate: register,\n register: register\n};\n\nexport default register;\n"],
4
+ "sourcesContent": ["import path from \"node:path\";\nimport os from \"node:os\";\nimport debug from 'debug';\n\nconst log = debug('openclaw:plugin:arcade');\n\nlet isInitialized = false;\n/**\n * OpenClaw Arcade Plugin\n * Transaction broadcasting and lifecycle tracking via BSV Arcade.\n */\nexport function register(api: any) {\n const version = \"0.2.22\";\n if (isInitialized) return;\n isInitialized = true;\n\n api.logger.info(`[arcade] Initializing Arcade Plugin v${version}`);\n const entries = api.getConfig?.()?.plugins?.entries || {};\n const entry = entries['sv_arcade'] \n || entries['arcade'] \n || entries['openclaw-arcade-plugin'] \n || entries['openclaw-arcade'] \n || entries['bsv-arcade'] \n || {};\n \n const pluginConfig = { ...entry, ...(entry.config || {}), ...(api.config || {}) };\n const network = pluginConfig.network || 'mainnet';\n const defaultArcadeUrl = network === 'testnet' \n ? 'https://testnet.arc.gorillapool.io' \n : 'https://arc.gorillapool.io';\n const arcadeUrl = (pluginConfig.arcadeUrl || defaultArcadeUrl).replace(/\\/$/, '');\n\n // 1. Tool\n api.registerTool({\n name: \"arcade\",\n description: \"Submit and track BSV transactions with full lifecycle visibility\",\n parameters: {\n type: \"object\",\n properties: {\n action: {\n type: \"string\",\n enum: [\"broadcast\", \"status\", \"proof\", \"config\"],\n description: \"Action to perform\"\n },\n txhex: {\n type: \"string\",\n description: \"Hex-encoded raw transaction to broadcast\"\n },\n txid: {\n type: \"string\",\n description: \"Transaction ID to track or fetch proof for\"\n }\n },\n required: [\"action\"]\n },\n async execute(_id: string, params: any) {\n log('Executing tool action: %s with params: %O', params.action, params);\n try {\n const { action, txhex, txid } = params;\n\n switch (action) {\n case \"broadcast\":\n if (!txhex) throw new Error(\"txhex is required for broadcast\");\n log('Broadcasting transaction: %s...', txhex.slice(0, 64));\n const bResp = await fetch(`${arcadeUrl}/v1/tx`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ rawTx: txhex })\n });\n const bData: any = await bResp.json();\n if (!bResp.ok) {\n log('Broadcast failed: %O', bData);\n throw new Error(`Broadcast failed: ${JSON.stringify(bData)}`);\n }\n log('Broadcast successful, TXID: %s', bData.txid);\n return { content: [{ type: \"text\", text: `Transaction broadcasted! TXID: ${bData.txid}\\nStatus: ${bData.txStatus}` }] };\n\n case \"status\":\n if (!txid) throw new Error(\"txid is required for status check\");\n log('Checking status for TXID: %s', txid);\n const sResp = await fetch(`${arcadeUrl}/v1/tx/${txid}`);\n const sData: any = await sResp.json();\n if (!sResp.ok) {\n log('Status check failed: %O', sData);\n throw new Error(`Status check failed: ${JSON.stringify(sData)}`);\n }\n log('Status: %s, Block: %s', sData.txStatus, sData.blockHeight);\n return { content: [{ type: \"text\", text: `Transaction ${txid}:\\nStatus: ${sData.txStatus}\\nBlock: ${sData.blockHeight || 'Pending'}` }] };\n\n case \"proof\":\n if (!txid) throw new Error(\"txid is required for proof retrieval\");\n log('Fetching proof for TXID: %s', txid);\n const pResp = await fetch(`${arcadeUrl}/v1/tx/${txid}/proof`);\n if (!pResp.ok) {\n log('Proof retrieval failed: %d', pResp.status);\n throw new Error(`Proof retrieval failed: ${pResp.status}`);\n }\n const pData = await pResp.arrayBuffer();\n const base64Proof = Buffer.from(pData).toString('base64');\n log('Proof retrieved, length: %d bytes', pData.byteLength);\n return { content: [{ type: \"text\", text: `Merkle Proof (Base64): ${base64Proof}` }] };\n case \"config\":\n return { content: [{ type: \"text\", text: `Arcade Configuration:\\nURL: ${arcadeUrl}\\nNetwork: ${network}` }] };\n\n default:\n throw new Error(`Unknown action: ${action}`);\n }\n } catch (error: any) {\n return {\n content: [{\n type: \"text\",\n text: `Error: ${error.message || String(error)}`\n }]\n };\n }\n }\n });\n\n // 2. Command\n api.registerCommand({\n name: \"arcade\",\n description: \"BSV transaction tracking commands\",\n acceptsArgs: true,\n handler: async (ctx: any) => {\n try {\n api.logger?.info?.(`[openclaw-arcade] Command received with args: ${JSON.stringify(ctx.args)} (type: ${typeof ctx.args})`);\n const args = Array.isArray(ctx.args) ? ctx.args : (typeof ctx.args === 'string' ? ctx.args.split(' ').filter(Boolean) : []);\n const action = args[0] || 'config';\n const params: any = { action };\n \n if (action === 'help') {\n return { text: `\uD83D\uDEE1\uFE0F **Arcade Help**\\n\\n**Subcommands**:\\n- \\`status <txid>\\`: Check broadcast status\\n- \\`broadcast <hex>\\`: Send raw transaction\\n- \\`proof <txid>\\`: Fetch Merkle Proof\\n- \\`config\\`: Show active URL` };\n }\n\n if (action === 'status' && args[1]) params.txid = args[1];\n if (action === 'broadcast' && args[1]) params.txhex = args[1];\n\n // Custom logic for simplified chat output\n if (action === 'status' && params.txid) {\n const res = await fetch(`${arcadeUrl}/v1/tx/${params.txid}`);\n const data: any = await res.json();\n return { text: `\uD83D\uDEE1\uFE0F **Transaction Status**\\n**TXID**: ${params.txid}\\n**Status**: ${data.txStatus || 'Unknown'}` };\n }\n\n return { text: `Command '${action}' executed.` };\n } catch (error: any) {\n return { text: `\u274C Arcade Error: ${error.message}` };\n }\n }\n });\n\n // 3. CLI\n api.registerCli(({ program }: any) => {\n const arc = program.command(\"arcade\").description(\"BSV transaction tracking commands\");\n arc.command(\"status <txid>\").description(\"Check broadcast status\").action(async (txid: string) => {\n const res = await fetch(`${arcadeUrl}/v1/tx/${txid}`);\n const data: any = await res.json();\n console.log(JSON.stringify(data, null, 2));\n });\n\n arc.command(\"broadcast <hex>\").description(\"Send raw transaction\").action(async (txhex: string) => {\n const res = await fetch(`${arcadeUrl}/v1/tx`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ rawTx: txhex })\n });\n const data: any = await res.json();\n console.log(JSON.stringify(data, null, 2));\n });\n\n arc.command(\"config\").description(\"Show current Arcade configuration\").action(() => {\n console.log(JSON.stringify({ arcadeUrl, network }, null, 2));\n });\n }, { commands: [\"arcade\"] });\n }\n\nexport const plugin = {\n id: \"openclaw-arcade-plugin\",\n name: \"BSV Arcade Broadcaster\",\n description: \"Submit and track BSV transactions with full lifecycle visibility\",\n activate: register,\n register: register\n};\n\nexport default register;\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
package/index.ts CHANGED
@@ -10,7 +10,7 @@ let isInitialized = false;
10
10
  * Transaction broadcasting and lifecycle tracking via BSV Arcade.
11
11
  */
12
12
  export function register(api: any) {
13
- const version = "0.2.21";
13
+ const version = "0.2.22";
14
14
  if (isInitialized) return;
15
15
  isInitialized = true;
16
16
 
@@ -2,7 +2,7 @@
2
2
  "id": "openclaw-arcade-plugin",
3
3
  "name": "BSV Arcade Broadcaster",
4
4
  "description": "Submit and track BSV transactions with full lifecycle visibility",
5
- "version": "0.2.17",
5
+ "version": "0.2.22",
6
6
  "skills": [
7
7
  "./SKILL.md"
8
8
  ],
@@ -20,8 +20,7 @@
20
20
  "commands": [
21
21
  {
22
22
  "name": "arcade",
23
- "description": "BSV transaction tracking commands",
24
- "isAutoreply": true
23
+ "description": "BSV transaction tracking commands"
25
24
  }
26
25
  ],
27
26
  "contracts": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-arcade-plugin",
3
- "version": "0.2.21",
3
+ "version": "0.2.22",
4
4
  "description": "OpenClaw plugin for transaction broadcasting and lifecycle tracking via BSV Arcade",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",