openclaw-messagebox-plugin 0.1.6 → 0.1.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,iBAEtC;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,GAAG,QAyJxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,iBAEtC;AAID,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,GAAG,QA4JxC"}
package/dist/index.js CHANGED
@@ -10,7 +10,11 @@ import { BSVAgentWallet } from "./src/core/wallet.js";
10
10
  export async function activate(api) {
11
11
  return register(api);
12
12
  }
13
+ let isInitialized = false;
13
14
  export default function register(api) {
15
+ if (isInitialized)
16
+ return;
17
+ isInitialized = true;
14
18
  // Capture configuration from the gateway (handle multiple IDs and flat/nested structures)
15
19
  const entries = api.getConfig?.()?.plugins?.entries || {};
16
20
  const entry = entries['openclaw-messagebox']
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,6 @@ export declare class MessageStore {
6
6
  saveMessage(msg: MessageRecord): Promise<void>;
7
7
  getInbox(limit?: number): Promise<any[]>;
8
8
  markAcknowledged(ids: string[]): Promise<void>;
9
+ destroy(): Promise<void>;
9
10
  }
10
11
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAO;gBAEL,MAAM,EAAE,MAAM;IAWpB,IAAI;IAcJ,WAAW,CAAC,GAAG,EAAE,aAAa;IAI9B,QAAQ,CAAC,KAAK,GAAE,MAAW;IAI3B,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE;CAGrC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAO;gBAEL,MAAM,EAAE,MAAM;IAWpB,IAAI;IAcJ,WAAW,CAAC,GAAG,EAAE,aAAa;IAI9B,QAAQ,CAAC,KAAK,GAAE,MAAW;IAI3B,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE;IAI9B,OAAO;CAGd"}
package/dist/src/store.js CHANGED
@@ -35,5 +35,8 @@ export class MessageStore {
35
35
  async markAcknowledged(ids) {
36
36
  await this.db('messages').whereIn('id', ids).update({ acknowledged: true });
37
37
  }
38
+ async destroy() {
39
+ await this.db.destroy();
40
+ }
38
41
  }
39
42
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,IAAc,MAAM,MAAM,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,OAAO,YAAY;IACf,EAAE,CAAO;IAEjB,YAAY,MAAc;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACb,MAAM,EAAE,gBAAgB;YACxB,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAChC,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC7B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC1B,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACpB,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAkB;QAClC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE;QAC/B,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAa;QAClC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;CACF"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,IAAc,MAAM,MAAM,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,OAAO,YAAY;IACf,EAAE,CAAO;IAEjB,YAAY,MAAc;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACb,MAAM,EAAE,gBAAgB;YACxB,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAChC,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC7B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC1B,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACpB,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAkB;QAClC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE;QAC/B,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAa;QAClC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * MessageBox Store tests
3
+ *
4
+ * Verifies that MessageStore correctly handles SQLite operations.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=store.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.test.d.ts","sourceRoot":"","sources":["../../src/store.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * MessageBox Store tests
3
+ *
4
+ * Verifies that MessageStore correctly handles SQLite operations.
5
+ */
6
+ import { MessageStore } from './store.js';
7
+ import * as fs from 'node:fs';
8
+ import * as path from 'node:path';
9
+ import * as os from 'node:os';
10
+ // Simple test runner
11
+ let passed = 0;
12
+ let failed = 0;
13
+ async function test(name, fn) {
14
+ try {
15
+ await fn();
16
+ console.log(` ✓ ${name}`);
17
+ passed++;
18
+ }
19
+ catch (err) {
20
+ console.log(` ✗ ${name}`);
21
+ console.log(err);
22
+ failed++;
23
+ }
24
+ }
25
+ function assert(condition, message) {
26
+ if (!condition)
27
+ throw new Error(`Assertion failed: ${message}`);
28
+ }
29
+ async function run() {
30
+ console.log('MessageBox Store tests\n');
31
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'msgbox-test-'));
32
+ const dbPath = path.join(tmpDir, 'test-messages.sqlite');
33
+ let store = null;
34
+ try {
35
+ store = new MessageStore(dbPath);
36
+ await store.init();
37
+ if (!store)
38
+ throw new Error('Failed to initialize store');
39
+ const activeStore = store; // Local non-null reference for closures
40
+ await test('Store saves and retrieves messages', async () => {
41
+ const msg = {
42
+ id: 'msg-1',
43
+ senderKey: 'pub-1',
44
+ recipientKey: 'pub-2',
45
+ body: 'Hello',
46
+ box: 'inbox',
47
+ ts: Date.now(),
48
+ acknowledged: false
49
+ };
50
+ await activeStore.saveMessage(msg);
51
+ const inbox = await activeStore.getInbox();
52
+ assert(inbox.length === 1, 'inbox should have 1 message');
53
+ assert(inbox[0].id === 'msg-1', 'message ID should match');
54
+ assert(inbox[0].body === 'Hello', 'message body should match');
55
+ });
56
+ await test('Store handles duplicate message IDs (onConflict ignore)', async () => {
57
+ const msg = {
58
+ id: 'msg-1',
59
+ senderKey: 'pub-1',
60
+ recipientKey: 'pub-2',
61
+ body: 'Hello Updated',
62
+ box: 'inbox',
63
+ ts: Date.now(),
64
+ acknowledged: false
65
+ };
66
+ await activeStore.saveMessage(msg);
67
+ const inbox = await activeStore.getInbox();
68
+ assert(inbox.length === 1, 'inbox should still have 1 message');
69
+ assert(inbox[0].body === 'Hello', 'original message body should be preserved');
70
+ });
71
+ await test('Store marks messages as acknowledged', async () => {
72
+ await activeStore.markAcknowledged(['msg-1']);
73
+ const inbox = await activeStore.getInbox();
74
+ assert(inbox[0].acknowledged === 1 || inbox[0].acknowledged === true, 'message should be acknowledged');
75
+ });
76
+ await test('Store respects limits and ordering', async () => {
77
+ // Add a newer message
78
+ await activeStore.saveMessage({
79
+ id: 'msg-2',
80
+ senderKey: 'pub-1',
81
+ recipientKey: 'pub-2',
82
+ body: 'World',
83
+ box: 'inbox',
84
+ ts: Date.now() + 1000,
85
+ acknowledged: false
86
+ });
87
+ const inboxFull = await activeStore.getInbox();
88
+ assert(inboxFull.length === 2, 'inbox should have 2 messages');
89
+ assert(inboxFull[0].id === 'msg-2', 'newest message should be first');
90
+ const inboxLimited = await activeStore.getInbox(1);
91
+ assert(inboxLimited.length === 1, 'limited inbox should have 1 message');
92
+ assert(inboxLimited[0].id === 'msg-2', 'limited inbox should have the newest message');
93
+ });
94
+ }
95
+ finally {
96
+ if (store)
97
+ await store.destroy();
98
+ fs.rmSync(tmpDir, { recursive: true, force: true });
99
+ }
100
+ console.log(`\n${passed} passed, ${failed} failed`);
101
+ if (failed > 0)
102
+ process.exit(1);
103
+ }
104
+ run().catch(err => {
105
+ console.error(err);
106
+ process.exit(1);
107
+ });
108
+ //# sourceMappingURL=store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.test.js","sourceRoot":"","sources":["../../src/store.test.ts"],"names":[],"mappings":"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"}
package/index.ts CHANGED
@@ -13,7 +13,12 @@ export async function activate(api: any) {
13
13
  return register(api);
14
14
  }
15
15
 
16
+ let isInitialized = false;
17
+
16
18
  export default function register(api: any) {
19
+ if (isInitialized) return;
20
+ isInitialized = true;
21
+
17
22
  // Capture configuration from the gateway (handle multiple IDs and flat/nested structures)
18
23
  const entries = api.getConfig?.()?.plugins?.entries || {};
19
24
  const entry = entries['openclaw-messagebox']
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-messagebox-plugin",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "OpenClaw plugin for P2P encrypted messaging and payments via BSV MessageBox",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -10,14 +10,13 @@
10
10
  "src/",
11
11
  "dist/",
12
12
  "SKILL.md",
13
- "HOOK.md",
14
13
  "README.md"
15
14
  ],
16
15
  "scripts": {
17
16
  "build": "tsc",
18
17
  "prepublishOnly": "npm run build",
19
18
  "lint": "eslint src/**/*.ts",
20
- "test": "npx tsx src/messagebox.test.ts",
19
+ "test": "npx tsx src/messagebox.test.ts && npx tsx src/store.test.ts",
21
20
  "postinstall": "node -e \"try{require('better-sqlite3')}catch{console.log('Note: better-sqlite3 requires build tools. If install failed, ensure python3 and a C++ compiler are available.')}\""
22
21
  },
23
22
  "dependencies": {
@@ -37,9 +36,6 @@
37
36
  "extensions": [
38
37
  "./dist/index.js"
39
38
  ],
40
- "hooks": [
41
- "./"
42
- ],
43
39
  "compat": {
44
40
  "pluginApi": "1",
45
41
  "minGatewayVersion": "2026.3.1"
@@ -0,0 +1,123 @@
1
+ /**
2
+ * MessageBox Store tests
3
+ *
4
+ * Verifies that MessageStore correctly handles SQLite operations.
5
+ */
6
+
7
+ import { MessageStore } from './store.js';
8
+ import * as fs from 'node:fs';
9
+ import * as path from 'node:path';
10
+ import * as os from 'node:os';
11
+
12
+ // Simple test runner
13
+ let passed = 0;
14
+ let failed = 0;
15
+
16
+ async function test(name: string, fn: () => void | Promise<void>) {
17
+ try {
18
+ await fn();
19
+ console.log(` ✓ ${name}`);
20
+ passed++;
21
+ } catch (err: unknown) {
22
+ console.log(` ✗ ${name}`);
23
+ console.log(err);
24
+ failed++;
25
+ }
26
+ }
27
+
28
+ function assert(condition: boolean, message: string) {
29
+ if (!condition) throw new Error(`Assertion failed: ${message}`);
30
+ }
31
+
32
+ async function run() {
33
+ console.log('MessageBox Store tests\n');
34
+
35
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'msgbox-test-'));
36
+ const dbPath = path.join(tmpDir, 'test-messages.sqlite');
37
+ let store: MessageStore | null = null;
38
+
39
+ try {
40
+ store = new MessageStore(dbPath);
41
+ await store.init();
42
+
43
+ if (!store) throw new Error('Failed to initialize store');
44
+ const activeStore = store; // Local non-null reference for closures
45
+
46
+ await test('Store saves and retrieves messages', async () => {
47
+ const msg = {
48
+ id: 'msg-1',
49
+ senderKey: 'pub-1',
50
+ recipientKey: 'pub-2',
51
+ body: 'Hello',
52
+ box: 'inbox',
53
+ ts: Date.now(),
54
+ acknowledged: false
55
+ };
56
+
57
+ await activeStore.saveMessage(msg);
58
+ const inbox = await activeStore.getInbox();
59
+
60
+ assert(inbox.length === 1, 'inbox should have 1 message');
61
+ assert(inbox[0].id === 'msg-1', 'message ID should match');
62
+ assert(inbox[0].body === 'Hello', 'message body should match');
63
+ });
64
+
65
+ await test('Store handles duplicate message IDs (onConflict ignore)', async () => {
66
+ const msg = {
67
+ id: 'msg-1',
68
+ senderKey: 'pub-1',
69
+ recipientKey: 'pub-2',
70
+ body: 'Hello Updated',
71
+ box: 'inbox',
72
+ ts: Date.now(),
73
+ acknowledged: false
74
+ };
75
+
76
+ await activeStore.saveMessage(msg);
77
+ const inbox = await activeStore.getInbox();
78
+
79
+ assert(inbox.length === 1, 'inbox should still have 1 message');
80
+ assert(inbox[0].body === 'Hello', 'original message body should be preserved');
81
+ });
82
+
83
+ await test('Store marks messages as acknowledged', async () => {
84
+ await activeStore.markAcknowledged(['msg-1']);
85
+ const inbox = await activeStore.getInbox();
86
+
87
+ assert(inbox[0].acknowledged === 1 || inbox[0].acknowledged === true, 'message should be acknowledged');
88
+ });
89
+
90
+ await test('Store respects limits and ordering', async () => {
91
+ // Add a newer message
92
+ await activeStore.saveMessage({
93
+ id: 'msg-2',
94
+ senderKey: 'pub-1',
95
+ recipientKey: 'pub-2',
96
+ body: 'World',
97
+ box: 'inbox',
98
+ ts: Date.now() + 1000,
99
+ acknowledged: false
100
+ });
101
+
102
+ const inboxFull = await activeStore.getInbox();
103
+ assert(inboxFull.length === 2, 'inbox should have 2 messages');
104
+ assert(inboxFull[0].id === 'msg-2', 'newest message should be first');
105
+
106
+ const inboxLimited = await activeStore.getInbox(1);
107
+ assert(inboxLimited.length === 1, 'limited inbox should have 1 message');
108
+ assert(inboxLimited[0].id === 'msg-2', 'limited inbox should have the newest message');
109
+ });
110
+
111
+ } finally {
112
+ if (store) await store.destroy();
113
+ fs.rmSync(tmpDir, { recursive: true, force: true });
114
+ }
115
+
116
+ console.log(`\n${passed} passed, ${failed} failed`);
117
+ if (failed > 0) process.exit(1);
118
+ }
119
+
120
+ run().catch(err => {
121
+ console.error(err);
122
+ process.exit(1);
123
+ });
package/src/store.ts CHANGED
@@ -42,4 +42,8 @@ export class MessageStore {
42
42
  async markAcknowledged(ids: string[]) {
43
43
  await this.db('messages').whereIn('id', ids).update({ acknowledged: true });
44
44
  }
45
+
46
+ async destroy() {
47
+ await this.db.destroy();
48
+ }
45
49
  }
package/HOOK.md DELETED
@@ -1,9 +0,0 @@
1
- ---
2
- name: openclaw-messagebox-hooks
3
- description: Background automation for P2P messaging.
4
- metadata: '{"openclaw": {"events": ["gateway:start"]}}'
5
- ---
6
-
7
- # MessageBox Hooks
8
- Ensures compatibility with the OpenClaw installer.
9
- Real-time message listening is handled programmatically in index.ts.