@moltzap/openclaw-channel 2026.413.0 → 2026.425.0

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.
@@ -0,0 +1,13 @@
1
+ /**
2
+ * OpenClaw-native cross-conversation formatter.
3
+ *
4
+ * Formats CrossConvMessage[] as a JSON metadata block with the
5
+ * "(untrusted metadata)" header that OpenClaw agents expect.
6
+ */
7
+ import type { CrossConvMessage } from "@moltzap/client";
8
+ export type { CrossConvMessage };
9
+ export declare const CROSS_CONV_HEADER = "Messages (untrusted metadata):";
10
+ export declare function formatCrossConvOpenClaw(messages: CrossConvMessage[], opts: {
11
+ ownAgentId: string;
12
+ }): string | null;
13
+ //# sourceMappingURL=format-cross-conv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-cross-conv.d.ts","sourceRoot":"","sources":["../src/format-cross-conv.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,eAAO,MAAM,iBAAiB,mCAAmC,CAAC;AAElE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAC3B,MAAM,GAAG,IAAI,CAWf"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * OpenClaw-native cross-conversation formatter.
3
+ *
4
+ * Formats CrossConvMessage[] as a JSON metadata block with the
5
+ * "(untrusted metadata)" header that OpenClaw agents expect.
6
+ */
7
+ export const CROSS_CONV_HEADER = "Messages (untrusted metadata):";
8
+ export function formatCrossConvOpenClaw(messages, opts) {
9
+ if (messages.length === 0)
10
+ return null;
11
+ const items = messages.map((m) => ({
12
+ conversation: m.conversationName ?? `DM with @${m.senderName}`,
13
+ sender: m.senderId === opts.ownAgentId ? "You" : m.senderName,
14
+ text: m.text,
15
+ timestamp: m.timestamp,
16
+ }));
17
+ return `${CROSS_CONV_HEADER}\n\`\`\`json\n${JSON.stringify(items, null, 2)}\n\`\`\``;
18
+ }
19
+ //# sourceMappingURL=format-cross-conv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-cross-conv.js","sourceRoot":"","sources":["../src/format-cross-conv.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,CAAC,MAAM,iBAAiB,GAAG,gCAAgC,CAAC;AAElE,MAAM,UAAU,uBAAuB,CACrC,QAA4B,EAC5B,IAA4B;IAE5B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,YAAY,EAAE,CAAC,CAAC,gBAAgB,IAAI,YAAY,CAAC,CAAC,UAAU,EAAE;QAC9D,MAAM,EAAE,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;QAC7D,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,CAAC,CAAC,SAAS;KACvB,CAAC,CAAC,CAAC;IAEJ,OAAO,GAAG,iBAAiB,iBAAiB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC;AACvF,CAAC"}
package/dist/mapping.d.ts CHANGED
@@ -1,34 +1,10 @@
1
1
  import type { Message, EventFrame } from "@moltzap/protocol";
2
2
  export declare function isMessageEvent(frame: EventFrame): boolean;
3
3
  export declare function extractMessage(frame: EventFrame): Message | null;
4
- export declare function extractReadReceipt(frame: EventFrame): {
5
- conversationId: string;
6
- participant: {
7
- type: string;
8
- id: string;
9
- };
10
- seq: number;
11
- } | null;
12
- export declare function extractReaction(frame: EventFrame): {
13
- messageId: string;
14
- emoji: string;
15
- participant: {
16
- type: string;
17
- id: string;
18
- };
19
- action: string;
20
- } | null;
21
4
  export declare function extractDelivery(frame: EventFrame): {
22
5
  messageId: string;
23
6
  conversationId: string;
24
- participant: {
25
- type: string;
26
- id: string;
27
- };
28
- } | null;
29
- export declare function extractDeletion(frame: EventFrame): {
30
- messageId: string;
31
- conversationId: string;
7
+ agentId: string;
32
8
  } | null;
33
9
  export declare function extractConversationCreated(frame: EventFrame): {
34
10
  conversation: {
@@ -47,31 +23,19 @@ export declare function extractConversationUpdated(frame: EventFrame): {
47
23
  export declare function extractContactRequest(frame: EventFrame): {
48
24
  contact: {
49
25
  id: string;
50
- requesterId: string;
51
- targetId: string;
52
- status: string;
26
+ contactUserId: string;
27
+ source: string;
53
28
  };
54
29
  } | null;
55
30
  export declare function extractContactAccepted(frame: EventFrame): {
56
31
  contact: {
57
32
  id: string;
58
- requesterId: string;
59
- targetId: string;
60
- status: string;
33
+ contactUserId: string;
34
+ source: string;
61
35
  };
62
36
  } | null;
63
37
  export declare function extractPresenceChanged(frame: EventFrame): {
64
- participant: {
65
- type: string;
66
- id: string;
67
- };
38
+ agentId: string;
68
39
  status: string;
69
40
  } | null;
70
- export declare function extractTypingIndicator(frame: EventFrame): {
71
- conversationId: string;
72
- participant: {
73
- type: string;
74
- id: string;
75
- };
76
- } | null;
77
41
  //# sourceMappingURL=mapping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG7D,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEzD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,CAIhE;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,IAAI,CAgBP;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAkBP;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,GAAG,IAAI,CAgBP;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,GAChB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOtD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,GAAG;IAC7D,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3D,GAAG,IAAI,CAOP;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,GAAG;IAC7D,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3D,GAAG,IAAI,CAOP;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG;IACxD,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,GAAG,IAAI,CAcP;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG;IACzD,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,GAAG,IAAI,CAcP;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG;IACzD,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAOP;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,GAAG,IAAI,CAaP"}
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG7D,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEzD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,CAIhE;AAID,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,IAAI,CAeP;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,GAAG;IAC7D,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3D,GAAG,IAAI,CAOP;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,GAAG;IAC7D,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3D,GAAG,IAAI,CAOP;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG;IACxD,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,GAAG,IAAI,CAaP;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG;IACzD,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,GAAG,IAAI,CAaP;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAKP"}
package/dist/mapping.js CHANGED
@@ -8,52 +8,19 @@ export function extractMessage(frame) {
8
8
  const data = frame.data;
9
9
  return data?.message ?? null;
10
10
  }
11
- // --- Event extractors for all 11 event types ---
12
- export function extractReadReceipt(frame) {
13
- if (frame.event !== EventNames.MessageRead)
14
- return null;
15
- const data = frame.data;
16
- if (!data?.conversationId || !data.participant || data.seq == null)
17
- return null;
18
- return {
19
- conversationId: data.conversationId,
20
- participant: data.participant,
21
- seq: data.seq,
22
- };
23
- }
24
- export function extractReaction(frame) {
25
- if (frame.event !== EventNames.MessageReacted)
26
- return null;
27
- const data = frame.data;
28
- if (!data?.messageId || !data.emoji || !data.participant || !data.action)
29
- return null;
30
- return {
31
- messageId: data.messageId,
32
- emoji: data.emoji,
33
- participant: data.participant,
34
- action: data.action,
35
- };
36
- }
11
+ // --- Event extractors ---
37
12
  export function extractDelivery(frame) {
38
13
  if (frame.event !== EventNames.MessageDelivered)
39
14
  return null;
40
15
  const data = frame.data;
41
- if (!data?.messageId || !data.conversationId || !data.participant)
16
+ if (!data?.messageId || !data.conversationId || !data.agentId)
42
17
  return null;
43
18
  return {
44
19
  messageId: data.messageId,
45
20
  conversationId: data.conversationId,
46
- participant: data.participant,
21
+ agentId: data.agentId,
47
22
  };
48
23
  }
49
- export function extractDeletion(frame) {
50
- if (frame.event !== EventNames.MessageDeleted)
51
- return null;
52
- const data = frame.data;
53
- if (!data?.messageId || !data.conversationId)
54
- return null;
55
- return { messageId: data.messageId, conversationId: data.conversationId };
56
- }
57
24
  export function extractConversationCreated(frame) {
58
25
  if (frame.event !== EventNames.ConversationCreated)
59
26
  return null;
@@ -90,19 +57,8 @@ export function extractPresenceChanged(frame) {
90
57
  if (frame.event !== EventNames.PresenceChanged)
91
58
  return null;
92
59
  const data = frame.data;
93
- if (!data?.participant || !data.status)
94
- return null;
95
- return { participant: data.participant, status: data.status };
96
- }
97
- export function extractTypingIndicator(frame) {
98
- if (frame.event !== EventNames.TypingIndicator)
99
- return null;
100
- const data = frame.data;
101
- if (!data?.conversationId || !data.participant)
60
+ if (!data?.agentId || !data.status)
102
61
  return null;
103
- return {
104
- conversationId: data.conversationId,
105
- participant: data.participant,
106
- };
62
+ return { agentId: data.agentId, status: data.status };
107
63
  }
108
64
  //# sourceMappingURL=mapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,11 @@
6
6
  *
7
7
  * Installed via: openclaw plugin install @moltzap/openclaw-channel
8
8
  * Config: channels.moltzap.accounts[].{apiKey, serverUrl, agentName}
9
+ *
10
+ * OpenClaw's plugin interface imposes Promise-based contracts at the boundary
11
+ * (`startAccount`, `sendText`, `deliver`, `listPeers`, `listGroups`, etc.) —
12
+ * those shapes are fixed. Internally we use Effect and only pay the
13
+ * `Effect.runPromise` tax at the plugin surface.
9
14
  */
10
15
  type MoltZapAccount = {
11
16
  id: string;
@@ -21,7 +26,12 @@ type OpenClawConfig = Record<string, unknown> & {
21
26
  };
22
27
  };
23
28
  };
24
- export declare const moltzapChannelPlugin: {
29
+ /**
30
+ * Factory: returns a fresh plugin object whose `activeClients` map lives in
31
+ * this closure. `register(api)` calls this so each registration gets its own
32
+ * per-plugin state, eliminating module-level mutable globals.
33
+ */
34
+ export declare function createMoltzapChannelPlugin(): {
25
35
  id: "moltzap";
26
36
  meta: {
27
37
  id: "moltzap";
@@ -61,21 +71,21 @@ export declare const moltzapChannelPlugin: {
61
71
  accountId?: string | null;
62
72
  query?: string | null;
63
73
  limit?: number | null;
64
- }): Promise<{
74
+ }): Promise<Array<{
65
75
  id: string;
66
76
  name: string;
67
77
  kind: "user";
68
- }[]>;
78
+ }>>;
69
79
  listGroups(params: {
70
80
  cfg: OpenClawConfig;
71
81
  accountId?: string | null;
72
82
  query?: string | null;
73
83
  limit?: number | null;
74
- }): Promise<{
84
+ }): Promise<Array<{
75
85
  id: string;
76
86
  name: string;
77
87
  kind: "group";
78
- }[]>;
88
+ }>>;
79
89
  };
80
90
  config: {
81
91
  listAccountIds(cfg: OpenClawConfig): string[];
@@ -144,14 +154,20 @@ export declare const moltzapChannelPlugin: {
144
154
  accountId?: string | null;
145
155
  replyToId?: string;
146
156
  }): Promise<{
157
+ ok: true;
158
+ } | {
147
159
  ok: false;
148
160
  error: Error;
149
- } | {
150
- ok: true;
151
- error?: undefined;
152
161
  }>;
153
162
  };
154
163
  };
164
+ export type MoltzapChannelPlugin = ReturnType<typeof createMoltzapChannelPlugin>;
165
+ /**
166
+ * Shared singleton so a single registration reuses the same `activeClients`
167
+ * closure across `startAccount` and `sendText`. Tests import this directly
168
+ * to assert against that shared state.
169
+ */
170
+ export declare const moltzapChannelPlugin: MoltzapChannelPlugin;
155
171
  declare const plugin: {
156
172
  id: string;
157
173
  name: string;
@@ -159,7 +175,7 @@ declare const plugin: {
159
175
  configSchema: {};
160
176
  register(api: {
161
177
  registerChannel: (params: {
162
- plugin: typeof moltzapChannelPlugin;
178
+ plugin: MoltzapChannelPlugin;
163
179
  }) => void;
164
180
  }): void;
165
181
  };
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw-entry.d.ts","sourceRoot":"","sources":["../src/openclaw-entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openclaw-entry.d.ts","sourceRoot":"","sources":["../src/openclaw-entry.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,16 @@
6
6
  *
7
7
  * Installed via: openclaw plugin install @moltzap/openclaw-channel
8
8
  * Config: channels.moltzap.accounts[].{apiKey, serverUrl, agentName}
9
+ *
10
+ * OpenClaw's plugin interface imposes Promise-based contracts at the boundary
11
+ * (`startAccount`, `sendText`, `deliver`, `listPeers`, `listGroups`, etc.) —
12
+ * those shapes are fixed. Internally we use Effect and only pay the
13
+ * `Effect.runPromise` tax at the plugin surface.
9
14
  */
10
- import { MoltZapChannelCore, MoltZapService, formatCrossConversationBlock, } from "@moltzap/client";
11
- import { extractReadReceipt, extractReaction, extractDelivery, extractDeletion, extractConversationCreated, extractConversationUpdated, extractContactRequest, extractContactAccepted, extractPresenceChanged, extractTypingIndicator, } from "./mapping.js";
15
+ import { MoltZapChannelCore, MoltZapService, } from "@moltzap/client";
16
+ import { Effect } from "effect";
17
+ import { formatCrossConvOpenClaw } from "./format-cross-conv.js";
18
+ import { extractDelivery, extractConversationCreated, extractConversationUpdated, extractContactRequest, extractContactAccepted, extractPresenceChanged, } from "./mapping.js";
12
19
  import { EventNames } from "@moltzap/protocol";
13
20
  const DEFAULT_ACCOUNT_ID = "default";
14
21
  const CHANNEL_ID = "moltzap";
@@ -30,392 +37,389 @@ function resolveAccount(cfg, accountId) {
30
37
  return (accounts.find((a) => a.id === id) ??
31
38
  accounts[0] ?? { id, apiKey: "", serverUrl: "", agentName: "" });
32
39
  }
33
- const activeClients = new Map();
34
- export const moltzapChannelPlugin = {
35
- id: CHANNEL_ID,
36
- meta: {
40
+ /**
41
+ * Wait for an AbortSignal to fire, as an Effect. Completes synchronously if
42
+ * the signal is already aborted; otherwise registers a one-shot `abort`
43
+ * listener and resolves when it fires. Replaces the ad-hoc
44
+ * `new Promise((resolve) => signal.addEventListener("abort", resolve))`.
45
+ */
46
+ const waitForAbort = (signal) => Effect.async((resume) => {
47
+ if (signal.aborted) {
48
+ resume(Effect.void);
49
+ return;
50
+ }
51
+ signal.addEventListener("abort", () => resume(Effect.void), { once: true });
52
+ });
53
+ /**
54
+ * Factory: returns a fresh plugin object whose `activeClients` map lives in
55
+ * this closure. `register(api)` calls this so each registration gets its own
56
+ * per-plugin state, eliminating module-level mutable globals.
57
+ */
58
+ export function createMoltzapChannelPlugin() {
59
+ const activeClients = new Map();
60
+ return {
37
61
  id: CHANNEL_ID,
38
- label: "MoltZap",
39
- selectionLabel: "MoltZap (agent messaging)",
40
- docsPath: "/channels/moltzap",
41
- docsLabel: "moltzap",
42
- blurb: "Agent-to-agent messaging via the MoltZap protocol.",
43
- detailLabel: "MoltZap",
44
- aliases: ["mz"],
45
- order: 200,
46
- },
47
- capabilities: {
48
- chatTypes: ["dm", "group"],
49
- },
50
- messaging: {
51
- targetResolver: {
52
- looksLikeId(raw) {
53
- return isMoltZapTarget(raw);
54
- },
55
- hint: 'Use "agent:<name>" for DMs or "conv:<id>" for existing conversations',
56
- async resolveTarget(params) {
57
- const { normalized } = params;
58
- if (!isMoltZapTarget(normalized))
59
- return null;
60
- // "user" = DM target (agent:*), "group" = conversation target (conv:*)
61
- const kind = normalized.startsWith(TARGET_PREFIX_CONV)
62
- ? "group"
63
- : "user";
64
- return {
65
- to: normalized,
66
- kind,
67
- display: normalized.split(":").slice(1).join(":"),
68
- source: "normalized",
69
- };
70
- },
62
+ meta: {
63
+ id: CHANNEL_ID,
64
+ label: "MoltZap",
65
+ selectionLabel: "MoltZap (agent messaging)",
66
+ docsPath: "/channels/moltzap",
67
+ docsLabel: "moltzap",
68
+ blurb: "Agent-to-agent messaging via the MoltZap protocol.",
69
+ detailLabel: "MoltZap",
70
+ aliases: ["mz"],
71
+ order: 200,
71
72
  },
72
- },
73
- directory: {
74
- async listPeers(params) {
75
- const service = activeClients.get(params.accountId ?? DEFAULT_ACCOUNT_ID);
76
- if (!service)
77
- return [];
78
- try {
79
- const { contacts } = (await service.sendRpc("contacts/list", {
80
- status: "accepted",
81
- }));
82
- const agentIds = contacts.flatMap((c) => (c.agents ?? []).map((a) => a.id));
83
- if (agentIds.length === 0)
84
- return [];
85
- const { agents } = (await service.sendRpc("agents/lookup", {
86
- agentIds,
87
- }));
88
- return agents.map((a) => ({
89
- id: `agent:${a.name}`,
90
- name: a.displayName ?? a.name,
91
- kind: "user",
92
- }));
93
- }
94
- catch {
95
- return [];
96
- }
97
- },
98
- async listGroups(params) {
99
- const service = activeClients.get(params.accountId ?? DEFAULT_ACCOUNT_ID);
100
- if (!service)
101
- return [];
102
- try {
103
- const { conversations } = (await service.sendRpc("conversations/list", {}));
104
- return conversations
105
- .filter((c) => c.type === "group" && c.name)
106
- .map((c) => ({
107
- id: `conv:${c.id}`,
108
- name: c.name,
109
- kind: "group",
110
- }));
111
- }
112
- catch {
113
- return [];
114
- }
115
- },
116
- },
117
- config: {
118
- listAccountIds(cfg) {
119
- const accounts = resolveAccountList(cfg);
120
- return accounts.length > 0
121
- ? accounts.map((a) => a.id || DEFAULT_ACCOUNT_ID)
122
- : [];
123
- },
124
- resolveAccount(cfg, accountId) {
125
- return resolveAccount(cfg, accountId);
73
+ capabilities: {
74
+ chatTypes: ["dm", "group"],
126
75
  },
127
- isConfigured(account) {
128
- return Boolean(account.apiKey && account.serverUrl);
76
+ messaging: {
77
+ targetResolver: {
78
+ looksLikeId(raw) {
79
+ return isMoltZapTarget(raw);
80
+ },
81
+ hint: 'Use "agent:<name>" for DMs or "conv:<id>" for existing conversations',
82
+ // #ignore-sloppy-code-next-line[async-keyword]: OpenClaw targetResolver interface contract
83
+ async resolveTarget(params) {
84
+ const { normalized } = params;
85
+ if (!isMoltZapTarget(normalized))
86
+ return null;
87
+ // "user" = DM target (agent:*), "group" = conversation target (conv:*)
88
+ const kind = normalized.startsWith(TARGET_PREFIX_CONV)
89
+ ? "group"
90
+ : "user";
91
+ return {
92
+ to: normalized,
93
+ kind,
94
+ display: normalized.split(":").slice(1).join(":"),
95
+ source: "normalized",
96
+ };
97
+ },
98
+ },
129
99
  },
130
- unconfiguredReason() {
131
- return "missing apiKey or serverUrl";
100
+ directory: {
101
+ listPeers(params) {
102
+ const effect = Effect.gen(function* () {
103
+ const service = activeClients.get(params.accountId ?? DEFAULT_ACCOUNT_ID);
104
+ if (!service)
105
+ return [];
106
+ const { contacts } = (yield* service.sendRpc("contacts/list", {}));
107
+ const agentIds = contacts.flatMap((c) => (c.agents ?? []).map((a) => a.id));
108
+ if (agentIds.length === 0)
109
+ return [];
110
+ const { agents } = (yield* service.sendRpc("agents/lookup", {
111
+ agentIds,
112
+ }));
113
+ return agents.map((a) => ({
114
+ id: `agent:${a.name}`,
115
+ name: a.displayName ?? a.name,
116
+ kind: "user",
117
+ }));
118
+ }).pipe(Effect.catchAll(() => Effect.succeed([])));
119
+ return Effect.runPromise(effect);
120
+ },
121
+ listGroups(params) {
122
+ const effect = Effect.gen(function* () {
123
+ const service = activeClients.get(params.accountId ?? DEFAULT_ACCOUNT_ID);
124
+ if (!service)
125
+ return [];
126
+ const { conversations } = (yield* service.sendRpc("conversations/list", {}));
127
+ return conversations
128
+ .filter((c) => c.type === "group" && c.name)
129
+ .map((c) => ({
130
+ id: `conv:${c.id}`,
131
+ name: c.name,
132
+ kind: "group",
133
+ }));
134
+ }).pipe(Effect.catchAll(() => Effect.succeed([])));
135
+ return Effect.runPromise(effect);
136
+ },
132
137
  },
133
- isEnabled(account) {
134
- return account.enabled !== false;
138
+ config: {
139
+ listAccountIds(cfg) {
140
+ const accounts = resolveAccountList(cfg);
141
+ return accounts.length > 0
142
+ ? accounts.map((a) => a.id || DEFAULT_ACCOUNT_ID)
143
+ : [];
144
+ },
145
+ resolveAccount(cfg, accountId) {
146
+ return resolveAccount(cfg, accountId);
147
+ },
148
+ isConfigured(account) {
149
+ return Boolean(account.apiKey && account.serverUrl);
150
+ },
151
+ unconfiguredReason() {
152
+ return "missing apiKey or serverUrl";
153
+ },
154
+ isEnabled(account) {
155
+ return account.enabled !== false;
156
+ },
135
157
  },
136
- },
137
- gateway: {
138
- async startAccount(ctx) {
139
- const { accountId, account, abortSignal, log, setStatus } = ctx;
140
- if (!account.apiKey || !account.serverUrl) {
141
- log?.error?.("MoltZap: missing apiKey or serverUrl");
142
- return;
143
- }
144
- log?.info?.(`MoltZap: connecting as ${account.agentName} to ${account.serverUrl}`);
145
- const wsLogger = log
146
- ? {
147
- info: log.info ?? (() => { }),
148
- warn: log.warn ?? (() => { }),
149
- error: log.error ?? (() => { }),
150
- }
151
- : undefined;
152
- const service = new MoltZapService({
153
- serverUrl: account.serverUrl,
154
- agentKey: account.apiKey,
155
- logger: wsLogger,
156
- });
157
- const core = new MoltZapChannelCore({ service, logger: wsLogger });
158
- core.onInbound(async (enriched) => {
159
- const chatType = enriched.conversationMeta?.type === "group" ? "group" : "direct";
160
- const fromId = `${enriched.sender.type}:${enriched.sender.id}`;
161
- log?.info?.(`MoltZap: inbound from ${fromId}: ${enriched.text.slice(0, 80)}`);
162
- setStatus({
163
- accountId,
164
- lastInboundAt: Date.now(),
165
- lastEventAt: Date.now(),
166
- });
167
- const crossConvBlock = formatCrossConversationBlock(enriched.contextBlocks.crossConversation ?? [], {
168
- header: `Recent updates (you are in conv:${enriched.conversationId}):`,
169
- });
170
- const bodyForAgent = crossConvBlock
171
- ? `${crossConvBlock}\n\n${enriched.text}`
172
- : enriched.text;
173
- if (!ctx.channelRuntime?.reply?.dispatchReplyWithBufferedBlockDispatcher) {
158
+ gateway: {
159
+ // #ignore-sloppy-code-next-line[async-keyword]: OpenClaw gateway startAccount interface contract
160
+ async startAccount(ctx) {
161
+ const { accountId, account, abortSignal, log, setStatus } = ctx;
162
+ if (!account.apiKey || !account.serverUrl) {
163
+ log?.error?.("MoltZap: missing apiKey or serverUrl");
174
164
  return;
175
165
  }
176
- const groupSubject = enriched.conversationMeta?.name;
177
- const groupMembers = enriched.conversationMeta?.type === "group"
178
- ? enriched.conversationMeta.participants.join(",")
166
+ log?.info?.(`MoltZap: connecting as ${account.agentName} to ${account.serverUrl}`);
167
+ const wsLogger = log
168
+ ? {
169
+ info: log.info ?? (() => { }),
170
+ warn: log.warn ?? (() => { }),
171
+ error: log.error ?? (() => { }),
172
+ }
179
173
  : undefined;
180
- try {
181
- const result = await ctx.channelRuntime.reply.dispatchReplyWithBufferedBlockDispatcher({
182
- ctx: {
183
- Body: enriched.text,
184
- BodyForAgent: bodyForAgent,
185
- From: fromId,
186
- To: account.agentName ?? accountId,
187
- SessionKey: `agent:main:moltzap:${chatType === "group" ? "group" : "dm"}:${enriched.conversationId}`,
188
- AccountId: accountId,
189
- Provider: CHANNEL_ID,
190
- Surface: CHANNEL_ID,
191
- OriginatingChannel: CHANNEL_ID,
192
- OriginatingTo: enriched.conversationId,
193
- ChatType: chatType,
194
- ...(groupSubject ? { GroupSubject: groupSubject } : {}),
195
- ...(groupMembers ? { GroupMembers: groupMembers } : {}),
196
- ...(enriched.conversationMeta?.name
197
- ? { ConversationLabel: enriched.conversationMeta.name }
198
- : {}),
199
- SenderName: enriched.sender.name,
200
- },
201
- cfg: ctx.cfg,
202
- dispatcherOptions: {
203
- deliver: async (payload, info) => {
204
- if (info?.kind !== "final")
205
- return true;
206
- const text = payload.text ?? payload.body;
207
- if (!text)
208
- return true;
209
- try {
210
- await core.sendReply(enriched.conversationId, text);
211
- log?.info?.(`MoltZap: outbound reply to ${enriched.conversationId}: ${text.slice(0, 80)}`);
212
- return true;
213
- }
214
- catch (sendErr) {
215
- log?.error?.(`MoltZap: failed to send reply: ${sendErr}`);
216
- return false;
217
- }
218
- },
219
- },
174
+ const service = new MoltZapService({
175
+ serverUrl: account.serverUrl,
176
+ agentKey: account.apiKey,
177
+ logger: wsLogger,
178
+ });
179
+ const core = new MoltZapChannelCore({ service, logger: wsLogger });
180
+ core.onInbound((enriched) => Effect.gen(function* () {
181
+ const chatType = enriched.conversationMeta?.type === "group" ? "group" : "direct";
182
+ const fromId = `agent:${enriched.sender.id}`;
183
+ log?.info?.(`MoltZap: inbound from ${fromId}: ${enriched.text.slice(0, 80)}`);
184
+ setStatus({
185
+ accountId,
186
+ lastInboundAt: Date.now(),
187
+ lastEventAt: Date.now(),
220
188
  });
221
- if (!result.queuedFinal) {
222
- log?.debug?.(`MoltZap: dispatch completed without final reply for ${enriched.conversationId}`);
223
- }
224
- }
225
- catch (err) {
226
- log?.error?.(`MoltZap: dispatch error: ${err}`);
227
- }
228
- });
229
- // Forward non-message events for status/logging
230
- service.on("rawEvent", (event) => {
231
- switch (event.event) {
232
- case EventNames.MessageRead: {
233
- const receipt = extractReadReceipt(event);
234
- if (receipt) {
235
- log?.debug?.(`MoltZap: read receipt from ${receipt.participant.id} in ${receipt.conversationId} up to seq ${receipt.seq}`);
236
- setStatus({ accountId, lastEventAt: Date.now() });
237
- }
238
- break;
239
- }
240
- case EventNames.MessageDelivered: {
241
- const delivery = extractDelivery(event);
242
- if (delivery) {
243
- log?.debug?.(`MoltZap: delivery for ${delivery.messageId} in ${delivery.conversationId}`);
244
- setStatus({ accountId, lastEventAt: Date.now() });
245
- }
246
- break;
189
+ const crossConvBlock = formatCrossConvOpenClaw(enriched.contextBlocks.crossConversationMessages ?? [], { ownAgentId: service.ownAgentId ?? "" });
190
+ const bodyForAgent = crossConvBlock
191
+ ? `${crossConvBlock}\n\n${enriched.text}`
192
+ : enriched.text;
193
+ if (crossConvBlock) {
194
+ log?.info?.(`MoltZap: BodyForAgent has cross-conv context (${enriched.contextBlocks.crossConversationMessages?.length ?? 0} msgs) for ${enriched.conversationId}: ${bodyForAgent.slice(0, 500)}`);
247
195
  }
248
- case EventNames.MessageReacted: {
249
- const reaction = extractReaction(event);
250
- if (reaction) {
251
- log?.debug?.(`MoltZap: reaction ${reaction.action} ${reaction.emoji} on ${reaction.messageId}`);
252
- setStatus({ accountId, lastEventAt: Date.now() });
253
- }
254
- break;
196
+ const dispatch = ctx.channelRuntime?.reply
197
+ ?.dispatchReplyWithBufferedBlockDispatcher;
198
+ if (!dispatch) {
199
+ return;
255
200
  }
256
- case EventNames.MessageDeleted: {
257
- const deletion = extractDeletion(event);
258
- if (deletion) {
259
- log?.debug?.(`MoltZap: message ${deletion.messageId} deleted in ${deletion.conversationId}`);
260
- setStatus({ accountId, lastEventAt: Date.now() });
261
- }
262
- break;
201
+ const groupSubject = enriched.conversationMeta?.name;
202
+ const groupMembers = enriched.conversationMeta?.type === "group"
203
+ ? enriched.conversationMeta.participants.join(",")
204
+ : undefined;
205
+ // Bridge OpenClaw's Promise-shaped dispatch into Effect, then
206
+ // catchAll back to a logged no-op so a single failed reply doesn't
207
+ // crash the consumer fiber.
208
+ const result = yield* Effect.tryPromise({
209
+ try: () => dispatch({
210
+ ctx: {
211
+ Body: enriched.text,
212
+ BodyForAgent: bodyForAgent,
213
+ From: fromId,
214
+ To: account.agentName ?? accountId,
215
+ SessionKey: `agent:main:moltzap:${chatType === "group" ? "group" : "dm"}:${enriched.conversationId}`,
216
+ AccountId: accountId,
217
+ Provider: CHANNEL_ID,
218
+ Surface: CHANNEL_ID,
219
+ OriginatingChannel: CHANNEL_ID,
220
+ OriginatingTo: enriched.conversationId,
221
+ ChatType: chatType,
222
+ ...(groupSubject ? { GroupSubject: groupSubject } : {}),
223
+ ...(groupMembers ? { GroupMembers: groupMembers } : {}),
224
+ ...(enriched.conversationMeta?.name
225
+ ? { ConversationLabel: enriched.conversationMeta.name }
226
+ : {}),
227
+ SenderName: enriched.sender.name,
228
+ },
229
+ cfg: ctx.cfg,
230
+ dispatcherOptions: {
231
+ deliver: (payload, info) => {
232
+ if (info?.kind !== "final")
233
+ return Promise.resolve(true);
234
+ const text = payload.text ?? payload.body;
235
+ if (!text)
236
+ return Promise.resolve(true);
237
+ // core.sendReply is Effect-native; run it at the
238
+ // OpenClaw boundary which demands a Promise.
239
+ const deliverEffect = core
240
+ .sendReply(enriched.conversationId, text)
241
+ .pipe(Effect.tap(() => Effect.sync(() => log?.info?.(`MoltZap: outbound reply to ${enriched.conversationId}: ${text.slice(0, 80)}`))), Effect.map(() => true), Effect.catchAll((err) => Effect.sync(() => {
242
+ log?.error?.(`MoltZap: failed to send reply: ${err}`);
243
+ return false;
244
+ })));
245
+ return Effect.runPromise(deliverEffect);
246
+ },
247
+ },
248
+ }),
249
+ catch: (err) => err,
250
+ }).pipe(Effect.catchAll((err) => Effect.sync(() => {
251
+ log?.error?.(`MoltZap: dispatch error: ${err}`);
252
+ return null;
253
+ })));
254
+ if (result && !result.queuedFinal) {
255
+ log?.debug?.(`MoltZap: dispatch completed without final reply for ${enriched.conversationId}`);
263
256
  }
264
- case EventNames.ConversationCreated: {
265
- const created = extractConversationCreated(event);
266
- if (created) {
267
- log?.debug?.(`MoltZap: conversation created ${created.conversation.id}`);
268
- setStatus({ accountId, lastEventAt: Date.now() });
257
+ }));
258
+ // Forward non-message events for status/logging.
259
+ // Sync dispatcher — no async work, just log + setStatus. // #ignore-sloppy-code[async-keyword]: comment prose only, not code
260
+ service.on("rawEvent", (event) => {
261
+ switch (event.event) {
262
+ case EventNames.MessageDelivered: {
263
+ const delivery = extractDelivery(event);
264
+ if (delivery) {
265
+ log?.debug?.(`MoltZap: delivery for ${delivery.messageId} in ${delivery.conversationId}`);
266
+ setStatus({ accountId, lastEventAt: Date.now() });
267
+ }
268
+ break;
269
269
  }
270
- break;
271
- }
272
- case EventNames.ConversationUpdated: {
273
- const updated = extractConversationUpdated(event);
274
- if (updated) {
275
- log?.debug?.(`MoltZap: conversation updated ${updated.conversation.id}`);
276
- setStatus({ accountId, lastEventAt: Date.now() });
270
+ case EventNames.ConversationCreated: {
271
+ const created = extractConversationCreated(event);
272
+ if (created) {
273
+ log?.debug?.(`MoltZap: conversation created ${created.conversation.id}`);
274
+ setStatus({ accountId, lastEventAt: Date.now() });
275
+ }
276
+ break;
277
277
  }
278
- break;
279
- }
280
- case EventNames.ContactRequest: {
281
- const contact = extractContactRequest(event);
282
- if (contact) {
283
- log?.debug?.(`MoltZap: contact request from ${contact.contact.requesterId}`);
284
- setStatus({ accountId, lastEventAt: Date.now() });
278
+ case EventNames.ConversationUpdated: {
279
+ const updated = extractConversationUpdated(event);
280
+ if (updated) {
281
+ log?.debug?.(`MoltZap: conversation updated ${updated.conversation.id}`);
282
+ setStatus({ accountId, lastEventAt: Date.now() });
283
+ }
284
+ break;
285
285
  }
286
- break;
287
- }
288
- case EventNames.ContactAccepted: {
289
- const contact = extractContactAccepted(event);
290
- if (contact) {
291
- log?.debug?.(`MoltZap: contact accepted ${contact.contact.id}`);
292
- setStatus({ accountId, lastEventAt: Date.now() });
286
+ case EventNames.ContactRequest: {
287
+ const contact = extractContactRequest(event);
288
+ if (contact) {
289
+ log?.debug?.(`MoltZap: contact request from ${contact.contact.contactUserId}`);
290
+ setStatus({ accountId, lastEventAt: Date.now() });
291
+ }
292
+ break;
293
293
  }
294
- break;
295
- }
296
- case EventNames.PresenceChanged: {
297
- const presence = extractPresenceChanged(event);
298
- if (presence) {
299
- log?.debug?.(`MoltZap: ${presence.participant.id} is now ${presence.status}`);
300
- setStatus({ accountId, lastEventAt: Date.now() });
294
+ case EventNames.ContactAccepted: {
295
+ const contact = extractContactAccepted(event);
296
+ if (contact) {
297
+ log?.debug?.(`MoltZap: contact accepted ${contact.contact.id}`);
298
+ setStatus({ accountId, lastEventAt: Date.now() });
299
+ }
300
+ break;
301
301
  }
302
- break;
303
- }
304
- case EventNames.TypingIndicator: {
305
- const typing = extractTypingIndicator(event);
306
- if (typing) {
307
- log?.debug?.(`MoltZap: typing in ${typing.conversationId} by ${typing.participant.id}`);
302
+ case EventNames.PresenceChanged: {
303
+ const presence = extractPresenceChanged(event);
304
+ if (presence) {
305
+ log?.debug?.(`MoltZap: ${presence.agentId} is now ${presence.status}`);
306
+ setStatus({ accountId, lastEventAt: Date.now() });
307
+ }
308
+ break;
308
309
  }
309
- break;
310
310
  }
311
- }
312
- });
313
- core.onDisconnect(() => {
314
- log?.warn?.("MoltZap: disconnected");
315
- setStatus({
316
- accountId,
317
- connected: false,
318
- lastDisconnect: { at: Date.now() },
319
- });
320
- });
321
- core.onReconnect(() => {
322
- log?.info?.("MoltZap: reconnected");
323
- setStatus({
324
- accountId,
325
- connected: true,
326
- lastConnectedAt: Date.now(),
327
311
  });
328
- });
329
- activeClients.set(accountId, service);
330
- if (abortSignal.aborted) {
331
- await core.disconnect();
332
- activeClients.delete(accountId);
333
- return;
334
- }
335
- abortSignal.addEventListener("abort", () => {
336
- void core.disconnect();
337
- activeClients.delete(accountId);
338
- }, { once: true });
339
- try {
340
- await core.connect();
341
- service.startSocketServer();
342
- log?.info?.(`MoltZap: connected as ${account.agentName} (${service.ownAgentId})`);
343
- setStatus({
344
- accountId,
345
- connected: true,
346
- lastConnectedAt: Date.now(),
347
- });
348
- // Keep the gateway task alive until abort.
349
- await new Promise((resolve) => {
350
- abortSignal.addEventListener("abort", () => resolve(), {
351
- once: true,
312
+ core.onDisconnect(() => {
313
+ log?.warn?.("MoltZap: disconnected");
314
+ setStatus({
315
+ accountId,
316
+ connected: false,
317
+ lastDisconnect: { at: Date.now() },
352
318
  });
353
319
  });
354
- }
355
- catch (err) {
356
- log?.error?.(`MoltZap: connection failed: ${err}`);
357
- throw err;
358
- }
359
- },
360
- async stopAccount(ctx) {
361
- const service = activeClients.get(ctx.accountId);
362
- if (service) {
363
- ctx.log?.info?.("MoltZap: stopping");
364
- service.close();
365
- activeClients.delete(ctx.accountId);
366
- }
367
- },
368
- },
369
- outbound: {
370
- deliveryMode: "gateway",
371
- resolveTarget(params) {
372
- const to = params.to?.trim();
373
- if (!to) {
374
- return { ok: false, error: new Error("MoltZap: target is required") };
375
- }
376
- if (to.includes(":") && !isMoltZapTarget(to)) {
377
- return {
378
- ok: false,
379
- error: new Error(`MoltZap: unsupported target format "${to}" — use agent:<name> or conv:<id>`),
380
- };
381
- }
382
- return { ok: true, to };
383
- },
384
- async sendText(ctx) {
385
- const accountId = ctx.accountId ?? DEFAULT_ACCOUNT_ID;
386
- const service = activeClients.get(accountId);
387
- if (!service) {
388
- return {
389
- ok: false,
390
- error: new Error("MoltZap client not connected"),
391
- };
392
- }
393
- try {
394
- if (ctx.to.startsWith(TARGET_PREFIX_AGENT)) {
395
- const agentName = ctx.to.slice(TARGET_PREFIX_AGENT.length);
396
- await service.sendToAgent(agentName, ctx.text, {
397
- replyTo: ctx.replyToId,
320
+ core.onReconnect(() => {
321
+ log?.info?.("MoltZap: reconnected");
322
+ setStatus({
323
+ accountId,
324
+ connected: true,
325
+ lastConnectedAt: Date.now(),
398
326
  });
327
+ });
328
+ activeClients.set(accountId, service);
329
+ if (abortSignal.aborted) {
330
+ await Effect.runPromise(core.disconnect());
331
+ activeClients.delete(accountId);
332
+ return;
399
333
  }
400
- else {
401
- const conversationId = ctx.to.startsWith(TARGET_PREFIX_CONV)
402
- ? ctx.to.slice(TARGET_PREFIX_CONV.length)
403
- : ctx.to;
404
- await service.send(conversationId, ctx.text, {
405
- replyTo: ctx.replyToId,
334
+ abortSignal.addEventListener("abort", () => {
335
+ void Effect.runPromise(core.disconnect());
336
+ activeClients.delete(accountId);
337
+ }, { once: true });
338
+ try {
339
+ await Effect.runPromise(core.connect());
340
+ service.startSocketServer();
341
+ log?.info?.(`MoltZap: connected as ${account.agentName} (${service.ownAgentId})`);
342
+ setStatus({
343
+ accountId,
344
+ connected: true,
345
+ lastConnectedAt: Date.now(),
406
346
  });
347
+ // Keep the gateway task alive until abort — expressed as Effect.
348
+ await Effect.runPromise(waitForAbort(abortSignal));
349
+ }
350
+ catch (err) {
351
+ log?.error?.(`MoltZap: connection failed: ${err}`);
352
+ throw err;
353
+ }
354
+ },
355
+ // #ignore-sloppy-code-next-line[async-keyword]: OpenClaw gateway stopAccount interface contract
356
+ async stopAccount(ctx) {
357
+ const service = activeClients.get(ctx.accountId);
358
+ if (service) {
359
+ ctx.log?.info?.("MoltZap: stopping");
360
+ service.close();
361
+ activeClients.delete(ctx.accountId);
407
362
  }
408
- return { ok: true };
409
- }
410
- catch (err) {
411
- return {
412
- ok: false,
413
- error: err instanceof Error ? err : new Error(String(err)),
414
- };
415
- }
363
+ },
416
364
  },
417
- },
418
- };
365
+ outbound: {
366
+ deliveryMode: "gateway",
367
+ resolveTarget(params) {
368
+ const to = params.to?.trim();
369
+ if (!to) {
370
+ return {
371
+ ok: false,
372
+ error: new Error("MoltZap: target is required"),
373
+ };
374
+ }
375
+ if (to.includes(":") && !isMoltZapTarget(to)) {
376
+ return {
377
+ ok: false,
378
+ error: new Error(`MoltZap: unsupported target format "${to}" — use agent:<name> or conv:<id>`),
379
+ };
380
+ }
381
+ return { ok: true, to };
382
+ },
383
+ sendText(ctx) {
384
+ const effect = Effect.gen(function* () {
385
+ const accountId = ctx.accountId ?? DEFAULT_ACCOUNT_ID;
386
+ const service = activeClients.get(accountId);
387
+ if (!service) {
388
+ return yield* Effect.fail(new Error("MoltZap client not connected"));
389
+ }
390
+ if (ctx.to.startsWith(TARGET_PREFIX_AGENT)) {
391
+ const agentName = ctx.to.slice(TARGET_PREFIX_AGENT.length);
392
+ yield* service.sendToAgent(agentName, ctx.text, {
393
+ replyTo: ctx.replyToId,
394
+ });
395
+ }
396
+ else {
397
+ const conversationId = ctx.to.startsWith(TARGET_PREFIX_CONV)
398
+ ? ctx.to.slice(TARGET_PREFIX_CONV.length)
399
+ : ctx.to;
400
+ yield* service.send(conversationId, ctx.text, {
401
+ replyTo: ctx.replyToId,
402
+ });
403
+ }
404
+ return { ok: true };
405
+ }).pipe(Effect.match({
406
+ onSuccess: (ok) => ok,
407
+ onFailure: (err) => ({
408
+ ok: false,
409
+ error: err instanceof Error ? err : new Error(String(err)),
410
+ }),
411
+ }));
412
+ return Effect.runPromise(effect);
413
+ },
414
+ },
415
+ };
416
+ }
417
+ /**
418
+ * Shared singleton so a single registration reuses the same `activeClients`
419
+ * closure across `startAccount` and `sendText`. Tests import this directly
420
+ * to assert against that shared state.
421
+ */
422
+ export const moltzapChannelPlugin = createMoltzapChannelPlugin();
419
423
  const plugin = {
420
424
  id: "openclaw-channel",
421
425
  name: "MoltZap",
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw-entry.js","sourceRoot":"","sources":["../src/openclaw-entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openclaw-entry.js","sourceRoot":"","sources":["../src/openclaw-entry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `@moltzap/openclaw-channel/test-support` — narrow public subpath
3
+ * export so the protocol conformance suite can instantiate a real
4
+ * MoltZap WS client in the shape OpenClaw ships (AC16).
5
+ *
6
+ * Architect-201 §8 O5: the channel plugin embeds `MoltZapChannelCore`
7
+ * (which internally composes `MoltZapWsClient`) via a private path. A
8
+ * conformance wrapper would need to reach through that plugin surface
9
+ * to exercise the client directly. Instead, this module re-uses the
10
+ * client adapter shipped by `@moltzap/client/test-utils` (which is the
11
+ * transport core all three consumers share) — keeping the plugin's
12
+ * public contract unchanged.
13
+ */
14
+ export { createMoltZapRealClientFactory, type RealClientFactoryOptions, } from "@moltzap/client/test-utils";
15
+ //# sourceMappingURL=test-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-support.d.ts","sourceRoot":"","sources":["../src/test-support.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,8BAA8B,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `@moltzap/openclaw-channel/test-support` — narrow public subpath
3
+ * export so the protocol conformance suite can instantiate a real
4
+ * MoltZap WS client in the shape OpenClaw ships (AC16).
5
+ *
6
+ * Architect-201 §8 O5: the channel plugin embeds `MoltZapChannelCore`
7
+ * (which internally composes `MoltZapWsClient`) via a private path. A
8
+ * conformance wrapper would need to reach through that plugin surface
9
+ * to exercise the client directly. Instead, this module re-uses the
10
+ * client adapter shipped by `@moltzap/client/test-utils` (which is the
11
+ * transport core all three consumers share) — keeping the plugin's
12
+ * public contract unchanged.
13
+ */
14
+ export { createMoltZapRealClientFactory, } from "@moltzap/client/test-utils";
15
+ //# sourceMappingURL=test-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-support.js","sourceRoot":"","sources":["../src/test-support.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,8BAA8B,GAE/B,MAAM,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@moltzap/openclaw-channel",
3
- "version": "2026.413.0",
3
+ "version": "2026.425.0",
4
4
  "description": "OpenClaw channel plugin for MoltZap messaging",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "https://github.com/chughtapan/moltzap"
8
+ "url": "git+https://github.com/chughtapan/moltzap.git"
9
9
  },
10
10
  "type": "module",
11
11
  "files": [
@@ -20,17 +20,26 @@
20
20
  "./test-utils": {
21
21
  "import": "./dist/test-utils/container-core.js",
22
22
  "types": "./dist/test-utils/container-core.d.ts"
23
+ },
24
+ "./test-support": {
25
+ "import": "./dist/test-support.js",
26
+ "types": "./dist/test-support.d.ts"
23
27
  }
24
28
  },
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "test": "vitest run",
32
+ "test:integration": "vitest run --config vitest.integration.config.ts",
33
+ "test:conformance": "bash ../protocol/scripts/check-divergence-proofs.sh && vitest run -c vitest.conformance.config.ts"
34
+ },
25
35
  "dependencies": {
26
- "ws": "^8.18.0",
27
- "@moltzap/client": "2026.413.0",
28
- "@moltzap/protocol": "2026.408.0"
36
+ "@moltzap/client": "workspace:*",
37
+ "@moltzap/protocol": "workspace:*",
38
+ "effect": "3.21.0"
29
39
  },
30
40
  "devDependencies": {
31
41
  "@testcontainers/postgresql": "^10.18.0",
32
42
  "@types/pg": "^8.11.0",
33
- "@types/ws": "^8.5.0",
34
43
  "openai": "^6.26.0",
35
44
  "pg": "^8.13.0",
36
45
  "testcontainers": "^10.18.0",
@@ -44,10 +53,5 @@
44
53
  "extensions": [
45
54
  "./dist/openclaw-entry.js"
46
55
  ]
47
- },
48
- "scripts": {
49
- "build": "tsc",
50
- "test": "vitest run",
51
- "test:integration": "vitest run --config vitest.integration.config.ts"
52
56
  }
53
- }
57
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Tapan Chugh
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.