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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/src/store.d.ts +1 -0
- package/dist/src/store.d.ts.map +1 -1
- package/dist/src/store.js +3 -0
- package/dist/src/store.js.map +1 -1
- package/dist/src/store.test.d.ts +7 -0
- package/dist/src/store.test.d.ts.map +1 -0
- package/dist/src/store.test.js +108 -0
- package/dist/src/store.test.js.map +1 -0
- package/index.ts +5 -0
- package/package.json +2 -6
- package/src/store.test.ts +123 -0
- package/src/store.ts +4 -0
- package/HOOK.md +0 -9
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAQ;IACrC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAQ;IACvC,IAAI,aAAa;QAAE,OAAO;IAC1B,aAAa,GAAG,IAAI,CAAC;IAErB,0FAA0F;IAC1F,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC;WACvC,OAAO,CAAC,4BAA4B,CAAC;WACrC,OAAO,CAAC,gBAAgB,CAAC;WACzB,EAAE,CAAC;IAER,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;IAClF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,wBAAwB,CAAC;IAC3D,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,SAAS,CAAC;IAClD,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,IAAI,oCAAoC,CAAC;IAC3F,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC;IACpI,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;IAErH,IAAI,OAAO,GAA6B,IAAI,CAAC;IAC7C,IAAI,KAAK,GAAwB,IAAI,CAAC;IACtC,IAAI,MAAM,GAA0B,IAAI,CAAC;IAEzC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,yDAAyD,OAAO,WAAW,IAAI,GAAG,CAAC,CAAC;IAEpG,KAAK,UAAU,iBAAiB;QAC9B,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAE5B,2BAA2B;QAC3B,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC;YACjC,OAAO,EAAE,OAAc;YACvB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAEnB,OAAO,GAAG,IAAI,iBAAiB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5E,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+BAA+B;IAC/B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,+DAA+D;QAC5E,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC;oBACvD,WAAW,EAAE,mBAAmB;iBACjC;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yCAAyC;iBACvD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iDAAiD;iBAC/D;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,SAAS;oBAClB,WAAW,EAAE,uBAAuB;iBACrC;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2CAA2C;iBACzD;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,sDAAsD;iBACpE;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;QACD,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBAEpC,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;oBACtB,KAAK,MAAM;wBACT,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI;4BAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBAC5F,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;wBACzE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;oBAE5F,KAAK,OAAO;wBACV,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACzB,MAAM,QAAQ,GAAG,MAAM,KAAM,CAAC,QAAQ,EAAE,CAAC;wBACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;4BAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,EAAE,CAAC;wBAEhG,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,WAAW,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC7I,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,QAAQ,CAAC,MAAM,kBAAkB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;oBAE1G,KAAK,aAAa;wBAChB,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;4BAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;wBACvG,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;wBACvC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,UAAU,CAAC,MAAM,YAAY,EAAE,CAAC,EAAE,CAAC;oBAEvG,KAAK,QAAQ;wBACX,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,IAAI,eAAe,CAAC,CAAC,cAAc,EAAE,eAAe,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;oBAE1I,KAAK,KAAK;wBACR,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI;4BAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBAC5F,MAAM,SAAS,GAAG,MAAM,MAAO,CAAC,aAAa,CAAC;4BAC5C,EAAE,EAAE,MAAM,CAAC,YAAY;4BACvB,QAAQ,EAAE,MAAM,CAAC,IAAI;4BACrB,WAAW,EAAE,4BAA4B;yBAC1C,CAAC,CAAC;wBACH,sEAAsE;wBACtE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;wBAC7F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,MAAM,CAAC,IAAI,2BAA2B,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;oBAE9H;wBACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,UAAU,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;yBACjD,CAAC;iBACH,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,yDAAyD;IACzD,GAAG,CAAC,eAAe,CAAC;QAClB,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBAE/D,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;oBACrB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;oBAEpF,wDAAwD;oBACxD,MAAM,QAAQ,GAAG,4CAA4C,GAAG,CAAC,SAAS,cAAc,GAAG,CAAC,IAAI,uEAAuE,GAAG,CAAC,SAAS,mBAAmB,CAAC;oBAExM,GAAG,CAAC,SAAS,EAAE,CAAC;wBACd,MAAM,EAAE,QAAQ;wBAChB,UAAU,EAAE,mBAAmB,GAAG,CAAC,EAAE,EAAE;qBACxC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/src/store.d.ts
CHANGED
package/dist/src/store.d.ts.map
CHANGED
|
@@ -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;
|
|
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
package/dist/src/store.js.map
CHANGED
|
@@ -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 @@
|
|
|
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.
|
|
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
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.
|