@moltzap/openclaw-channel 2026.329.0 → 2026.411.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
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.
@@ -13,6 +13,11 @@ type MoltZapAccount = {
13
13
  serverUrl: string;
14
14
  agentName: string;
15
15
  enabled?: boolean;
16
+ contextAdapter?: {
17
+ type: "cross-conversation";
18
+ maxConversations?: number;
19
+ maxMessagesPerConv?: number;
20
+ };
16
21
  };
17
22
  type OpenClawConfig = Record<string, unknown> & {
18
23
  channels?: {
@@ -21,8 +26,6 @@ type OpenClawConfig = Record<string, unknown> & {
21
26
  };
22
27
  };
23
28
  };
24
- /** Cache: accountId → (agentName → conversationId) for auto-created DM conversations. */
25
- export declare const agentConversationCache: Map<string, Map<string, string>>;
26
29
  export declare const moltzapChannelPlugin: {
27
30
  id: "moltzap";
28
31
  meta: {
@@ -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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"}
@@ -7,8 +7,9 @@
7
7
  * Installed via: openclaw plugin install @moltzap/openclaw-channel
8
8
  * Config: channels.moltzap.accounts[].{apiKey, serverUrl, agentName}
9
9
  */
10
- import { MoltZapWsClient } from "./ws-client.js";
11
- import { extractMessage, extractReadReceipt, extractReaction, extractDelivery, extractDeletion, extractConversationCreated, extractConversationUpdated, extractContactRequest, extractContactAccepted, extractPresenceChanged, extractTypingIndicator, mapMessageToEnvelope, } from "./mapping.js";
10
+ import { MoltZapService } from "@moltzap/client";
11
+ import { extractReadReceipt, extractReaction, extractDelivery, extractDeletion, extractConversationCreated, extractConversationUpdated, extractContactRequest, extractContactAccepted, extractPresenceChanged, extractTypingIndicator, mapMessageToEnvelope, } from "./mapping.js";
12
+ import { EventNames } from "@moltzap/protocol";
12
13
  const DEFAULT_ACCOUNT_ID = "default";
13
14
  const CHANNEL_ID = "moltzap";
14
15
  const TARGET_PREFIX_AGENT = "agent:";
@@ -30,8 +31,6 @@ function resolveAccount(cfg, accountId) {
30
31
  accounts[0] ?? { id, apiKey: "", serverUrl: "", agentName: "" });
31
32
  }
32
33
  const activeClients = new Map();
33
- /** Cache: accountId → (agentName → conversationId) for auto-created DM conversations. */
34
- export const agentConversationCache = new Map();
35
34
  export const moltzapChannelPlugin = {
36
35
  id: CHANNEL_ID,
37
36
  meta: {
@@ -73,17 +72,17 @@ export const moltzapChannelPlugin = {
73
72
  },
74
73
  directory: {
75
74
  async listPeers(params) {
76
- const client = activeClients.get(params.accountId ?? DEFAULT_ACCOUNT_ID);
77
- if (!client)
75
+ const service = activeClients.get(params.accountId ?? DEFAULT_ACCOUNT_ID);
76
+ if (!service)
78
77
  return [];
79
78
  try {
80
- const { contacts } = (await client.sendRpc("contacts/list", {
79
+ const { contacts } = (await service.sendRpc("contacts/list", {
81
80
  status: "accepted",
82
81
  }));
83
82
  const agentIds = contacts.flatMap((c) => (c.agents ?? []).map((a) => a.id));
84
83
  if (agentIds.length === 0)
85
84
  return [];
86
- const { agents } = (await client.sendRpc("agents/lookup", {
85
+ const { agents } = (await service.sendRpc("agents/lookup", {
87
86
  agentIds,
88
87
  }));
89
88
  return agents.map((a) => ({
@@ -97,11 +96,11 @@ export const moltzapChannelPlugin = {
97
96
  }
98
97
  },
99
98
  async listGroups(params) {
100
- const client = activeClients.get(params.accountId ?? DEFAULT_ACCOUNT_ID);
101
- if (!client)
99
+ const service = activeClients.get(params.accountId ?? DEFAULT_ACCOUNT_ID);
100
+ if (!service)
102
101
  return [];
103
102
  try {
104
- const { conversations } = (await client.sendRpc("conversations/list", {}));
103
+ const { conversations } = (await service.sendRpc("conversations/list", {}));
105
104
  return conversations
106
105
  .filter((c) => c.type === "group" && c.name)
107
106
  .map((c) => ({
@@ -143,67 +142,34 @@ export const moltzapChannelPlugin = {
143
142
  return;
144
143
  }
145
144
  log?.info?.(`MoltZap: connecting as ${account.agentName} to ${account.serverUrl}`);
146
- const senderNameCache = new Map();
147
- const conversationMetaCache = new Map();
148
- async function lookupSenderName(client, agentId) {
149
- const cached = senderNameCache.get(agentId);
150
- if (cached)
151
- return cached;
152
- try {
153
- const result = (await client.sendRpc("agents/lookup", {
154
- agentIds: [agentId],
155
- }));
156
- const agent = result.agents[0];
157
- if (agent) {
158
- senderNameCache.set(agentId, agent.name);
159
- return agent.name;
145
+ const service = new MoltZapService({
146
+ serverUrl: account.serverUrl,
147
+ agentKey: account.apiKey,
148
+ logger: log
149
+ ? {
150
+ info: log.info ?? (() => { }),
151
+ warn: log.warn ?? (() => { }),
152
+ error: log.error ?? (() => { }),
160
153
  }
154
+ : undefined,
155
+ });
156
+ const contextConfig = account.contextAdapter
157
+ ? {
158
+ type: "cross-conversation",
159
+ maxConversations: account.contextAdapter.maxConversations,
160
+ maxMessagesPerConv: account.contextAdapter.maxMessagesPerConv,
161
161
  }
162
- catch {
163
- log?.warn?.(`MoltZap: agents/lookup failed for ${agentId}`);
164
- }
165
- return agentId;
166
- }
167
- async function getConversationMeta(client, conversationId) {
168
- const cached = conversationMetaCache.get(conversationId);
169
- if (cached)
170
- return cached;
171
- try {
172
- const result = (await client.sendRpc("conversations/get", {
173
- conversationId,
174
- }));
175
- const meta = {
176
- type: result.conversation.type,
177
- name: result.conversation.name,
178
- participants: result.participants.map((p) => `${p.participant.type}:${p.participant.id}`),
179
- };
180
- conversationMetaCache.set(conversationId, meta);
181
- return meta;
182
- }
183
- catch {
184
- log?.warn?.(`MoltZap: conversations/get failed for ${conversationId}`);
185
- return undefined;
186
- }
187
- }
162
+ : null;
188
163
  // Serialize dispatches — OpenClaw's workspace-state writer can't handle
189
164
  // concurrent writes within the same process.
190
165
  let dispatchChain = Promise.resolve();
191
- let ownAgentId;
192
- function dispatchMessage(message, client) {
193
- // Skip messages sent by this agent (avoid echo loops)
194
- if (ownAgentId &&
195
- message.sender.type === "agent" &&
196
- message.sender.id === ownAgentId) {
197
- return;
198
- }
166
+ // Handle inbound messages from other agents
167
+ service.on("message", (message) => {
199
168
  dispatchChain = dispatchChain
200
169
  .then(async () => {
201
- const [senderName, convMeta] = await Promise.all([
202
- message.sender.type === "agent"
203
- ? lookupSenderName(client, message.sender.id)
204
- : Promise.resolve(undefined),
205
- getConversationMeta(client, message.conversationId),
206
- ]);
170
+ const senderName = service.getAgentName(message.sender.id) ??
171
+ (await service.resolveAgentName(message.sender.id));
172
+ const convMeta = service.getConversation(message.conversationId);
207
173
  const envelope = mapMessageToEnvelope(message, {
208
174
  senderName,
209
175
  chatType: convMeta?.type === "group"
@@ -221,16 +187,23 @@ export const moltzapChannelPlugin = {
221
187
  lastInboundAt: Date.now(),
222
188
  lastEventAt: Date.now(),
223
189
  });
190
+ // Cross-conversation context injection
191
+ const crossConvContext = contextConfig
192
+ ? service.getContext(message.conversationId, contextConfig)
193
+ : null;
194
+ const bodyForAgent = crossConvContext
195
+ ? `${crossConvContext}\n\n${envelope.text}`
196
+ : envelope.text;
224
197
  if (ctx.channelRuntime?.reply
225
198
  ?.dispatchReplyWithBufferedBlockDispatcher) {
226
199
  try {
227
200
  const result = await ctx.channelRuntime.reply.dispatchReplyWithBufferedBlockDispatcher({
228
201
  ctx: {
229
202
  Body: envelope.text,
230
- BodyForAgent: envelope.text,
203
+ BodyForAgent: bodyForAgent,
231
204
  From: envelope.peer.id,
232
205
  To: account.agentName ?? accountId,
233
- SessionKey: `agent:main:moltzap:dm:${envelope.conversationId}`,
206
+ SessionKey: `agent:main:moltzap:${envelope.chatType === "group" ? "group" : "dm"}:${envelope.conversationId}`,
234
207
  AccountId: accountId,
235
208
  Provider: CHANNEL_ID,
236
209
  Surface: CHANNEL_ID,
@@ -261,10 +234,7 @@ export const moltzapChannelPlugin = {
261
234
  if (!text)
262
235
  return true;
263
236
  try {
264
- await client.sendRpc("messages/send", {
265
- conversationId: envelope.conversationId,
266
- parts: [{ type: "text", text }],
267
- });
237
+ await service.send(envelope.conversationId, text);
268
238
  log?.info?.(`MoltZap: outbound reply to ${envelope.conversationId}: ${text.slice(0, 80)}`);
269
239
  return true;
270
240
  }
@@ -287,188 +257,126 @@ export const moltzapChannelPlugin = {
287
257
  .catch((err) => {
288
258
  log?.error?.(`MoltZap: dispatch chain error: ${err}`);
289
259
  });
290
- }
291
- async function fetchMissedMessages(client, helloOk) {
292
- const hello = helloOk;
293
- const unreadCounts = hello?.unreadCounts;
294
- if (!unreadCounts)
295
- return;
296
- const sorted = Object.entries(unreadCounts)
297
- .filter(([, count]) => count > 0)
298
- .sort(([, a], [, b]) => b - a)
299
- .slice(0, 5);
300
- let totalFetched = 0;
301
- for (const [conversationId] of sorted) {
302
- try {
303
- const result = (await client.sendRpc("messages/list", {
304
- conversationId,
305
- limit: 50,
306
- }));
307
- for (const msg of result.messages) {
308
- dispatchMessage(msg, client);
260
+ });
261
+ // Forward non-message events for status/logging
262
+ service.on("rawEvent", (event) => {
263
+ switch (event.event) {
264
+ case EventNames.MessageRead: {
265
+ const receipt = extractReadReceipt(event);
266
+ if (receipt) {
267
+ log?.debug?.(`MoltZap: read receipt from ${receipt.participant.id} in ${receipt.conversationId} up to seq ${receipt.seq}`);
268
+ setStatus({ accountId, lastEventAt: Date.now() });
309
269
  }
310
- totalFetched += result.messages.length;
270
+ break;
311
271
  }
312
- catch {
313
- log?.warn?.(`MoltZap: failed to fetch missed messages for ${conversationId}`);
314
- }
315
- }
316
- if (totalFetched > 0) {
317
- log?.info?.(`MoltZap: fetched ${totalFetched} missed messages from ${sorted.length} conversations`);
318
- }
319
- }
320
- const eventHandlers = {
321
- "messages/received": (event) => {
322
- const message = extractMessage(event);
323
- if (message)
324
- dispatchMessage(message, client);
325
- },
326
- "messages/read": (event) => {
327
- const receipt = extractReadReceipt(event);
328
- if (receipt) {
329
- log?.debug?.(`MoltZap: read receipt from ${receipt.participant.id} in ${receipt.conversationId} up to seq ${receipt.seq}`);
330
- setStatus({ accountId, lastEventAt: Date.now() });
331
- }
332
- },
333
- "messages/delivered": (event) => {
334
- const delivery = extractDelivery(event);
335
- if (delivery) {
336
- log?.debug?.(`MoltZap: delivery for ${delivery.messageId} in ${delivery.conversationId}`);
337
- setStatus({ accountId, lastEventAt: Date.now() });
338
- }
339
- },
340
- "messages/reacted": (event) => {
341
- const reaction = extractReaction(event);
342
- if (reaction) {
343
- log?.debug?.(`MoltZap: reaction ${reaction.action} ${reaction.emoji} on ${reaction.messageId}`);
344
- setStatus({ accountId, lastEventAt: Date.now() });
345
- }
346
- },
347
- "messages/deleted": (event) => {
348
- const deletion = extractDeletion(event);
349
- if (deletion) {
350
- log?.debug?.(`MoltZap: message ${deletion.messageId} deleted in ${deletion.conversationId}`);
351
- setStatus({ accountId, lastEventAt: Date.now() });
352
- }
353
- },
354
- "conversations/created": (event) => {
355
- const created = extractConversationCreated(event);
356
- if (created) {
357
- conversationMetaCache.set(created.conversation.id, {
358
- type: created.conversation.type,
359
- name: created.conversation.name,
360
- participants: [],
361
- });
362
- log?.debug?.(`MoltZap: conversation created ${created.conversation.id}`);
363
- setStatus({ accountId, lastEventAt: Date.now() });
272
+ case EventNames.MessageDelivered: {
273
+ const delivery = extractDelivery(event);
274
+ if (delivery) {
275
+ log?.debug?.(`MoltZap: delivery for ${delivery.messageId} in ${delivery.conversationId}`);
276
+ setStatus({ accountId, lastEventAt: Date.now() });
277
+ }
278
+ break;
364
279
  }
365
- },
366
- "conversations/updated": (event) => {
367
- const updated = extractConversationUpdated(event);
368
- if (updated) {
369
- const existing = conversationMetaCache.get(updated.conversation.id);
370
- conversationMetaCache.set(updated.conversation.id, {
371
- type: updated.conversation.type,
372
- name: updated.conversation.name,
373
- participants: existing?.participants ?? [],
374
- });
375
- log?.debug?.(`MoltZap: conversation updated ${updated.conversation.id}`);
376
- setStatus({ accountId, lastEventAt: Date.now() });
280
+ case EventNames.MessageReacted: {
281
+ const reaction = extractReaction(event);
282
+ if (reaction) {
283
+ log?.debug?.(`MoltZap: reaction ${reaction.action} ${reaction.emoji} on ${reaction.messageId}`);
284
+ setStatus({ accountId, lastEventAt: Date.now() });
285
+ }
286
+ break;
377
287
  }
378
- },
379
- "contact/request": (event) => {
380
- const contact = extractContactRequest(event);
381
- if (contact) {
382
- log?.debug?.(`MoltZap: contact request from ${contact.contact.requesterId}`);
383
- setStatus({ accountId, lastEventAt: Date.now() });
288
+ case EventNames.MessageDeleted: {
289
+ const deletion = extractDeletion(event);
290
+ if (deletion) {
291
+ log?.debug?.(`MoltZap: message ${deletion.messageId} deleted in ${deletion.conversationId}`);
292
+ setStatus({ accountId, lastEventAt: Date.now() });
293
+ }
294
+ break;
384
295
  }
385
- },
386
- "contact/accepted": (event) => {
387
- const contact = extractContactAccepted(event);
388
- if (contact) {
389
- log?.debug?.(`MoltZap: contact accepted ${contact.contact.id}`);
390
- setStatus({ accountId, lastEventAt: Date.now() });
296
+ case EventNames.ConversationCreated: {
297
+ const created = extractConversationCreated(event);
298
+ if (created) {
299
+ log?.debug?.(`MoltZap: conversation created ${created.conversation.id}`);
300
+ setStatus({ accountId, lastEventAt: Date.now() });
301
+ }
302
+ break;
391
303
  }
392
- },
393
- "presence/changed": (event) => {
394
- const presence = extractPresenceChanged(event);
395
- if (presence) {
396
- log?.debug?.(`MoltZap: ${presence.participant.id} is now ${presence.status}`);
397
- setStatus({ accountId, lastEventAt: Date.now() });
304
+ case EventNames.ConversationUpdated: {
305
+ const updated = extractConversationUpdated(event);
306
+ if (updated) {
307
+ log?.debug?.(`MoltZap: conversation updated ${updated.conversation.id}`);
308
+ setStatus({ accountId, lastEventAt: Date.now() });
309
+ }
310
+ break;
398
311
  }
399
- },
400
- "typing/indicator": (event) => {
401
- const typing = extractTypingIndicator(event);
402
- if (typing) {
403
- log?.debug?.(`MoltZap: typing in ${typing.conversationId} by ${typing.participant.id}`);
312
+ case "contact/request": {
313
+ const contact = extractContactRequest(event);
314
+ if (contact) {
315
+ log?.debug?.(`MoltZap: contact request from ${contact.contact.requesterId}`);
316
+ setStatus({ accountId, lastEventAt: Date.now() });
317
+ }
318
+ break;
404
319
  }
405
- },
406
- };
407
- const client = new MoltZapWsClient({
408
- serverUrl: account.serverUrl,
409
- agentKey: account.apiKey,
410
- logger: log
411
- ? {
412
- info: log.info ?? (() => { }),
413
- warn: log.warn ?? (() => { }),
414
- error: log.error ?? (() => { }),
320
+ case "contact/accepted": {
321
+ const contact = extractContactAccepted(event);
322
+ if (contact) {
323
+ log?.debug?.(`MoltZap: contact accepted ${contact.contact.id}`);
324
+ setStatus({ accountId, lastEventAt: Date.now() });
325
+ }
326
+ break;
415
327
  }
416
- : undefined,
417
- onEvent: (event) => {
418
- const handler = eventHandlers[event.event];
419
- if (handler) {
420
- handler(event);
328
+ case EventNames.PresenceChanged: {
329
+ const presence = extractPresenceChanged(event);
330
+ if (presence) {
331
+ log?.debug?.(`MoltZap: ${presence.participant.id} is now ${presence.status}`);
332
+ setStatus({ accountId, lastEventAt: Date.now() });
333
+ }
334
+ break;
421
335
  }
422
- else {
423
- log?.debug?.(`MoltZap: unhandled event type: ${event.event}`);
336
+ case EventNames.TypingIndicator: {
337
+ const typing = extractTypingIndicator(event);
338
+ if (typing) {
339
+ log?.debug?.(`MoltZap: typing in ${typing.conversationId} by ${typing.participant.id}`);
340
+ }
341
+ break;
424
342
  }
425
- },
426
- onDisconnect: () => {
427
- log?.warn?.("MoltZap: disconnected");
428
- setStatus({
429
- accountId,
430
- connected: false,
431
- lastDisconnect: { at: Date.now() },
432
- });
433
- },
434
- onReconnect: (helloOk) => {
435
- log?.info?.("MoltZap: reconnected");
436
- setStatus({
437
- accountId,
438
- connected: true,
439
- lastConnectedAt: Date.now(),
440
- });
441
- populateConversationCache(helloOk);
442
- void fetchMissedMessages(client, helloOk);
443
- },
444
- });
445
- function populateConversationCache(helloOk) {
446
- const hello = helloOk;
447
- if (!hello?.conversations)
448
- return;
449
- for (const conv of hello.conversations) {
450
- conversationMetaCache.set(conv.id, {
451
- type: conv.type,
452
- name: conv.name,
453
- participants: (conv.participants ?? []).map((p) => `${p.type}:${p.id}`),
454
- });
455
343
  }
344
+ });
345
+ service.on("disconnect", () => {
346
+ log?.warn?.("MoltZap: disconnected");
347
+ setStatus({
348
+ accountId,
349
+ connected: false,
350
+ lastDisconnect: { at: Date.now() },
351
+ });
352
+ });
353
+ service.on("reconnect", () => {
354
+ log?.info?.("MoltZap: reconnected");
355
+ setStatus({
356
+ accountId,
357
+ connected: true,
358
+ lastConnectedAt: Date.now(),
359
+ });
360
+ });
361
+ activeClients.set(accountId, service);
362
+ if (abortSignal.aborted) {
363
+ service.close();
364
+ activeClients.delete(accountId);
365
+ return;
456
366
  }
457
- activeClients.set(accountId, client);
458
367
  abortSignal.addEventListener("abort", () => {
459
- client.close();
368
+ service.close();
460
369
  activeClients.delete(accountId);
461
370
  }, { once: true });
462
371
  try {
463
- const helloOk = await client.connect();
464
- ownAgentId = helloOk?.agentId;
465
- log?.info?.(`MoltZap: connected as ${account.agentName} (${ownAgentId})`);
372
+ await service.connect();
373
+ service.startSocketServer();
374
+ log?.info?.(`MoltZap: connected as ${account.agentName} (${service.ownAgentId})`);
466
375
  setStatus({
467
376
  accountId,
468
377
  connected: true,
469
378
  lastConnectedAt: Date.now(),
470
379
  });
471
- populateConversationCache(helloOk);
472
380
  // Keep the gateway task alive until abort.
473
381
  await new Promise((resolve) => {
474
382
  abortSignal.addEventListener("abort", () => resolve(), {
@@ -482,12 +390,11 @@ export const moltzapChannelPlugin = {
482
390
  }
483
391
  },
484
392
  async stopAccount(ctx) {
485
- const client = activeClients.get(ctx.accountId);
486
- if (client) {
393
+ const service = activeClients.get(ctx.accountId);
394
+ if (service) {
487
395
  ctx.log?.info?.("MoltZap: stopping");
488
- client.close();
396
+ service.close();
489
397
  activeClients.delete(ctx.accountId);
490
- agentConversationCache.delete(ctx.accountId);
491
398
  }
492
399
  },
493
400
  },
@@ -508,43 +415,28 @@ export const moltzapChannelPlugin = {
508
415
  },
509
416
  async sendText(ctx) {
510
417
  const accountId = ctx.accountId ?? DEFAULT_ACCOUNT_ID;
511
- const client = activeClients.get(accountId);
512
- if (!client) {
418
+ const service = activeClients.get(accountId);
419
+ if (!service) {
513
420
  return {
514
421
  ok: false,
515
422
  error: new Error("MoltZap client not connected"),
516
423
  };
517
424
  }
518
425
  try {
519
- let conversationId;
520
426
  if (ctx.to.startsWith(TARGET_PREFIX_AGENT)) {
521
427
  const agentName = ctx.to.slice(TARGET_PREFIX_AGENT.length);
522
- const accountCache = agentConversationCache.get(accountId) ?? new Map();
523
- conversationId = accountCache.get(agentName);
524
- if (!conversationId) {
525
- const lookupResult = (await client.sendRpc("agents/lookupByName", {
526
- name: agentName,
527
- }));
528
- const createResult = (await client.sendRpc("conversations/create", {
529
- type: "dm",
530
- participants: [{ type: "agent", id: lookupResult.agent.id }],
531
- }));
532
- conversationId = createResult.conversation.id;
533
- accountCache.set(agentName, conversationId);
534
- agentConversationCache.set(accountId, accountCache);
535
- }
536
- }
537
- else if (ctx.to.startsWith(TARGET_PREFIX_CONV)) {
538
- conversationId = ctx.to.slice(TARGET_PREFIX_CONV.length);
428
+ await service.sendToAgent(agentName, ctx.text, {
429
+ replyTo: ctx.replyToId,
430
+ });
539
431
  }
540
432
  else {
541
- conversationId = ctx.to;
433
+ const conversationId = ctx.to.startsWith(TARGET_PREFIX_CONV)
434
+ ? ctx.to.slice(TARGET_PREFIX_CONV.length)
435
+ : ctx.to;
436
+ await service.send(conversationId, ctx.text, {
437
+ replyTo: ctx.replyToId,
438
+ });
542
439
  }
543
- await client.sendRpc("messages/send", {
544
- conversationId,
545
- parts: [{ type: "text", text: ctx.text }],
546
- ...(ctx.replyToId ? { replyToId: ctx.replyToId } : {}),
547
- });
548
440
  return { ok: true };
549
441
  }
550
442
  catch (err) {
@@ -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,53 @@
1
+ /**
2
+ * Shared Docker container management for OpenClaw integration tests and evals.
3
+ * Both test tiers import from here to avoid duplicating config-building and lifecycle logic.
4
+ */
5
+ export declare const IMAGE_NAME = "moltzap-eval-agent:local";
6
+ export declare const OPENCLAW_STATE_DIR = "/home/node/.openclaw";
7
+ export type ContainerModelConfig = {
8
+ modelString: string;
9
+ providerConfig?: {
10
+ provider: string;
11
+ modelId: string;
12
+ baseUrl: string;
13
+ api: string;
14
+ apiKey: string;
15
+ };
16
+ };
17
+ export type OpenClawContainer = {
18
+ containerId: string;
19
+ controlPort: number;
20
+ tmpDir: string;
21
+ };
22
+ export declare function isImageAvailable(): boolean;
23
+ /** Build openclaw.json config for a container. */
24
+ export declare function buildOpenClawConfig(opts: {
25
+ model: ContainerModelConfig;
26
+ serverUrl: string;
27
+ agentApiKey: string;
28
+ agentName: string;
29
+ contextAdapter?: {
30
+ type: string;
31
+ maxConversations?: number;
32
+ maxMessagesPerConv?: number;
33
+ };
34
+ }): Record<string, unknown>;
35
+ /** Create, configure, and start an OpenClaw Docker container. */
36
+ export declare function startRawContainer(config: Record<string, unknown>, opts: {
37
+ name: string;
38
+ agentName: string;
39
+ envVars?: Record<string, string>;
40
+ portRange?: [number, number];
41
+ }): OpenClawContainer;
42
+ export declare function getLogs(containerId: string): string;
43
+ /** Stream `docker logs -f` and resolve when all patterns appear. */
44
+ export declare function waitForLogMatch(containerId: string, patterns: string | string[], timeoutMs: number): Promise<void>;
45
+ /** Wait for the OpenClaw gateway process to start. */
46
+ export declare function waitForGateway(containerId: string, timeoutMs?: number): Promise<void>;
47
+ /** Wait for the MoltZap channel to connect within the container. */
48
+ export declare function waitForChannel(containerId: string, timeoutMs?: number): Promise<void>;
49
+ /** Wait for both gateway and channel to be ready (single log stream). */
50
+ export declare function waitForReady(containerId: string): Promise<void>;
51
+ /** Stop and remove a container, clean up temp files. */
52
+ export declare function stopContainer(container: OpenClawContainer): void;
53
+ //# sourceMappingURL=container-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-core.d.ts","sourceRoot":"","sources":["../../src/test-utils/container-core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,eAAO,MAAM,UAAU,6BAA6B,CAAC;AACrD,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AAEzD,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,OAAO,CAO1C;AAED,kDAAkD;AAClD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqE1B;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,GACA,iBAAiB,CAoDnB;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA2Gf;AAED,sDAAsD;AACtD,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,oEAAoE;AACpE,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,SAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,yEAAyE;AACzE,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrE;AAED,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAWhE"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Shared Docker container management for OpenClaw integration tests and evals.
3
+ * Both test tiers import from here to avoid duplicating config-building and lifecycle logic.
4
+ */
5
+ import { execSync, spawn } from "node:child_process";
6
+ import fs from "node:fs";
7
+ import path from "node:path";
8
+ import os from "node:os";
9
+ const CONTROL_UI_PORT = 18789;
10
+ export const IMAGE_NAME = "moltzap-eval-agent:local";
11
+ export const OPENCLAW_STATE_DIR = "/home/node/.openclaw";
12
+ export function isImageAvailable() {
13
+ try {
14
+ execSync(`docker image inspect ${IMAGE_NAME}`, { stdio: "pipe" });
15
+ return true;
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ }
21
+ /** Build openclaw.json config for a container. */
22
+ export function buildOpenClawConfig(opts) {
23
+ const serverUrl = opts.serverUrl
24
+ .replace(/\/ws$/, "")
25
+ .replace(/^ws:/, "http:")
26
+ .replace("localhost", "host.docker.internal")
27
+ .replace("127.0.0.1", "host.docker.internal");
28
+ const config = {
29
+ agents: {
30
+ defaults: {
31
+ model: { primary: opts.model.modelString },
32
+ workspace: `${OPENCLAW_STATE_DIR}/workspace`,
33
+ compaction: { mode: "safeguard" },
34
+ },
35
+ },
36
+ commands: {
37
+ native: "auto",
38
+ nativeSkills: "auto",
39
+ restart: true,
40
+ ownerDisplay: "raw",
41
+ },
42
+ messages: {
43
+ // Keep one inbound -> one outbound behavior in integration tests.
44
+ queue: { mode: "queue", debounceMs: 0, cap: 100, drop: "new" },
45
+ },
46
+ channels: {
47
+ moltzap: {
48
+ accounts: [
49
+ {
50
+ id: "default",
51
+ apiKey: opts.agentApiKey,
52
+ serverUrl,
53
+ agentName: opts.agentName,
54
+ ...(opts.contextAdapter
55
+ ? { contextAdapter: opts.contextAdapter }
56
+ : {}),
57
+ },
58
+ ],
59
+ },
60
+ },
61
+ gateway: {
62
+ mode: "local",
63
+ controlUi: {
64
+ dangerouslyAllowHostHeaderOriginFallback: true,
65
+ dangerouslyDisableDeviceAuth: true,
66
+ },
67
+ auth: { mode: "token", token: `e2e-${Date.now().toString(36)}` },
68
+ },
69
+ meta: {
70
+ lastTouchedVersion: "2026.3.14",
71
+ lastTouchedAt: new Date().toISOString(),
72
+ },
73
+ };
74
+ if (opts.model.providerConfig) {
75
+ const pc = opts.model.providerConfig;
76
+ config.models = {
77
+ providers: {
78
+ [pc.provider]: {
79
+ baseUrl: pc.baseUrl,
80
+ api: pc.api,
81
+ apiKey: pc.apiKey,
82
+ models: [{ id: pc.modelId, name: pc.modelId }],
83
+ },
84
+ },
85
+ };
86
+ }
87
+ return config;
88
+ }
89
+ /** Create, configure, and start an OpenClaw Docker container. */
90
+ export function startRawContainer(config, opts) {
91
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-e2e-"));
92
+ const [lo, hi] = opts.portRange ?? [19000, 19999];
93
+ const controlPort = lo + Math.floor(Math.random() * (hi - lo));
94
+ fs.writeFileSync(path.join(tmpDir, "openclaw.json"), JSON.stringify(config, null, 2));
95
+ for (const sub of ["workspace", "logs"]) {
96
+ fs.mkdirSync(path.join(tmpDir, sub), { recursive: true });
97
+ }
98
+ fs.writeFileSync(path.join(tmpDir, "workspace", "IDENTITY.md"), `---\nName: ${opts.agentName}\nCreature: AI agent\nVibe: helpful\n---\n`);
99
+ const containerName = `moltzap-e2e-${opts.name}-${Date.now()}`;
100
+ const startedEpoch = Math.floor(Date.now() / 1000);
101
+ const envParts = [`-e OPENCLAW_STATE_DIR=${OPENCLAW_STATE_DIR}`];
102
+ if (opts.envVars) {
103
+ for (const [k, v] of Object.entries(opts.envVars)) {
104
+ envParts.push(`-e ${k}=${v}`);
105
+ }
106
+ }
107
+ const containerId = execSync([
108
+ "docker create",
109
+ `--name ${containerName}`,
110
+ `--label moltzap-eval=true`,
111
+ `--label moltzap-eval-started=${startedEpoch}`,
112
+ `--stop-timeout 5`,
113
+ ...envParts,
114
+ `--add-host host.docker.internal:host-gateway`,
115
+ `-p ${controlPort}:${CONTROL_UI_PORT}`,
116
+ IMAGE_NAME,
117
+ "node openclaw.mjs gateway run --allow-unconfigured --bind lan",
118
+ ].join(" "), { encoding: "utf-8" }).trim();
119
+ execSync(`docker cp ${tmpDir}/. ${containerId}:${OPENCLAW_STATE_DIR}/`);
120
+ execSync(`docker start ${containerId}`);
121
+ // Only chown the files we copied; recursively chowning the entire state dir
122
+ // is much slower because the eval image already contains plugin dependencies.
123
+ execSync(`docker exec -u root ${containerId} sh -lc "chown node:node ${OPENCLAW_STATE_DIR}/openclaw.json && chown -R node:node ${OPENCLAW_STATE_DIR}/workspace ${OPENCLAW_STATE_DIR}/logs"`);
124
+ return { containerId, controlPort, tmpDir };
125
+ }
126
+ export function getLogs(containerId) {
127
+ try {
128
+ return execSync(`docker logs ${containerId} 2>&1`, {
129
+ encoding: "utf-8",
130
+ });
131
+ }
132
+ catch {
133
+ return "";
134
+ }
135
+ }
136
+ /** Stream `docker logs -f` and resolve when all patterns appear. */
137
+ export function waitForLogMatch(containerId, patterns, timeoutMs) {
138
+ const required = Array.isArray(patterns) ? patterns : [patterns];
139
+ return new Promise((resolve, reject) => {
140
+ // Pre-flight: verify the container is still running before streaming.
141
+ try {
142
+ const status = execSync(`docker inspect ${containerId} --format='{{.State.Status}}'`, { encoding: "utf-8" }).trim();
143
+ if (status !== "running") {
144
+ reject(new Error(`Container not running (status: ${status}) before log stream.\nLogs:\n${getLogs(containerId)}`));
145
+ return;
146
+ }
147
+ }
148
+ catch (err) {
149
+ reject(new Error(`Failed to inspect container ${containerId}: ${err instanceof Error ? err.message : err}`));
150
+ return;
151
+ }
152
+ const matched = new Set();
153
+ let settled = false;
154
+ let buffer = "";
155
+ const proc = spawn("docker", ["logs", "-f", containerId]);
156
+ const finish = (error) => {
157
+ if (settled)
158
+ return;
159
+ settled = true;
160
+ clearTimeout(timer);
161
+ proc.kill();
162
+ if (error)
163
+ reject(error);
164
+ else
165
+ resolve();
166
+ };
167
+ const timer = setTimeout(() => {
168
+ const missing = required.filter((p) => !matched.has(p));
169
+ finish(new Error(`waitForLogMatch timed out after ${timeoutMs}ms.\n` +
170
+ `Matched: [${[...matched].join(", ")}]\n` +
171
+ `Missing: [${missing.join(", ")}]\n` +
172
+ `Logs:\n${getLogs(containerId)}`));
173
+ }, timeoutMs);
174
+ const processData = (chunk) => {
175
+ buffer += chunk.toString();
176
+ const lines = buffer.split("\n");
177
+ // Keep the last incomplete line in the buffer.
178
+ buffer = lines.pop();
179
+ for (const line of lines) {
180
+ for (const pattern of required) {
181
+ if (!matched.has(pattern) && line.includes(pattern))
182
+ matched.add(pattern);
183
+ }
184
+ if (matched.size === required.length) {
185
+ finish();
186
+ return;
187
+ }
188
+ }
189
+ };
190
+ // docker logs writes to stderr by default, but listen on both to be safe.
191
+ proc.stdout.on("data", processData);
192
+ proc.stderr.on("data", processData);
193
+ proc.on("error", (err) => {
194
+ finish(new Error(`docker logs process error: ${err.message}\nLogs:\n${getLogs(containerId)}`));
195
+ });
196
+ proc.on("close", (code) => {
197
+ if (!settled) {
198
+ // Process exited before all patterns matched — check remaining buffer.
199
+ if (buffer.length > 0) {
200
+ for (const pattern of required) {
201
+ if (buffer.includes(pattern))
202
+ matched.add(pattern);
203
+ }
204
+ if (matched.size === required.length) {
205
+ finish();
206
+ return;
207
+ }
208
+ }
209
+ const missing = required.filter((p) => !matched.has(p));
210
+ finish(new Error(`docker logs exited (code ${code}) before all patterns matched.\n` +
211
+ `Matched: [${[...matched].join(", ")}]\n` +
212
+ `Missing: [${missing.join(", ")}]\n` +
213
+ `Logs:\n${getLogs(containerId)}`));
214
+ }
215
+ });
216
+ });
217
+ }
218
+ /** Wait for the OpenClaw gateway process to start. */
219
+ export async function waitForGateway(containerId, timeoutMs = 30_000) {
220
+ await waitForLogMatch(containerId, "[gateway]", timeoutMs);
221
+ }
222
+ /** Wait for the MoltZap channel to connect within the container. */
223
+ export async function waitForChannel(containerId, timeoutMs = 180_000) {
224
+ await waitForLogMatch(containerId, ["[moltzap]", "connected as"], timeoutMs);
225
+ }
226
+ /** Wait for both gateway and channel to be ready (single log stream). */
227
+ export async function waitForReady(containerId) {
228
+ await waitForLogMatch(containerId, ["[gateway]", "[moltzap]", "connected as"], 180_000);
229
+ }
230
+ /** Stop and remove a container, clean up temp files. */
231
+ export function stopContainer(container) {
232
+ try {
233
+ execSync(`docker rm -f ${container.containerId}`, { stdio: "pipe" });
234
+ }
235
+ catch {
236
+ // best effort
237
+ }
238
+ try {
239
+ fs.rmSync(container.tmpDir, { recursive: true, force: true });
240
+ }
241
+ catch {
242
+ // best effort
243
+ }
244
+ }
245
+ //# sourceMappingURL=container-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-core.js","sourceRoot":"","sources":["../../src/test-utils/container-core.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,2 @@
1
- import { type EventFrame } from "@moltzap/protocol";
2
- export interface WsClientLogger {
3
- info: (...args: unknown[]) => void;
4
- warn: (...args: unknown[]) => void;
5
- error: (...args: unknown[]) => void;
6
- }
7
- export interface MoltZapWsClientOptions {
8
- serverUrl: string;
9
- agentKey: string;
10
- onEvent: (event: EventFrame) => void;
11
- onDisconnect: () => void;
12
- onReconnect: (helloOk: unknown) => void;
13
- logger?: WsClientLogger;
14
- }
15
- /**
16
- * WebSocket connection lifecycle:
17
- *
18
- * connect -> auth/connect -> HelloOk -> active
19
- * | (disconnect)
20
- * backoff (1s, 2s, 4s, 8s, max 30s with jitter) -> reconnect -> auth/connect -> ...
21
- */
22
- export declare class MoltZapWsClient {
23
- private options;
24
- private ws;
25
- private reconnectAttempt;
26
- private maxReconnectDelay;
27
- private pendingRequests;
28
- private requestCounter;
29
- private closed;
30
- private _helloOk;
31
- constructor(options: MoltZapWsClientOptions);
32
- get helloOk(): unknown;
33
- connect(): Promise<unknown>;
34
- sendRpc(method: string, params?: unknown): Promise<unknown>;
35
- /** Close the socket permanently (no reconnection). */
36
- close(): void;
37
- /** Close the socket without marking as permanently closed, triggering reconnection. */
38
- disconnect(): void;
39
- private scheduleReconnect;
40
- }
1
+ export { MoltZapWsClient, type WsClientLogger, type MoltZapWsClientOptions, } from "@moltzap/client";
41
2
  //# sourceMappingURL=ws-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED;;;;;;GAMG;AACH,qBAAa,eAAe;IAed,OAAO,CAAC,OAAO;IAd3B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,eAAe,CAMnB;IACJ,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAiB;gBAEb,OAAO,EAAE,sBAAsB;IAEnD,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAqD3B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA4CjE,sDAAsD;IACtD,KAAK,IAAI,IAAI;IAKb,uFAAuF;IACvF,UAAU,IAAI,IAAI;IAIlB,OAAO,CAAC,iBAAiB;CAiB1B"}
1
+ {"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC"}
package/dist/ws-client.js CHANGED
@@ -1,138 +1,2 @@
1
- import WebSocket from "ws";
2
- import { PROTOCOL_VERSION, } from "@moltzap/protocol";
3
- /**
4
- * WebSocket connection lifecycle:
5
- *
6
- * connect -> auth/connect -> HelloOk -> active
7
- * | (disconnect)
8
- * backoff (1s, 2s, 4s, 8s, max 30s with jitter) -> reconnect -> auth/connect -> ...
9
- */
10
- export class MoltZapWsClient {
11
- options;
12
- ws = null;
13
- reconnectAttempt = 0;
14
- maxReconnectDelay = 30_000;
15
- pendingRequests = new Map();
16
- requestCounter = 0;
17
- closed = false;
18
- _helloOk = null;
19
- constructor(options) {
20
- this.options = options;
21
- }
22
- get helloOk() {
23
- return this._helloOk;
24
- }
25
- async connect() {
26
- return new Promise((resolve, reject) => {
27
- const url = this.options.serverUrl.replace(/^http/, "ws") + "/ws";
28
- this.ws = new WebSocket(url);
29
- this.ws.on("open", async () => {
30
- try {
31
- const helloOk = await this.sendRpc("auth/connect", {
32
- agentKey: this.options.agentKey,
33
- minProtocol: PROTOCOL_VERSION,
34
- maxProtocol: PROTOCOL_VERSION,
35
- });
36
- this._helloOk = helloOk;
37
- this.reconnectAttempt = 0;
38
- resolve(helloOk);
39
- }
40
- catch (err) {
41
- reject(err);
42
- }
43
- });
44
- this.ws.on("message", (data) => {
45
- try {
46
- const frame = JSON.parse(data.toString());
47
- if (frame.type === "response" && frame.id) {
48
- const pending = this.pendingRequests.get(frame.id);
49
- if (pending) {
50
- this.pendingRequests.delete(frame.id);
51
- if (frame.error) {
52
- const err = frame.error;
53
- pending.reject(new Error(err.message ?? "RPC error"));
54
- }
55
- else {
56
- pending.resolve(frame.result);
57
- }
58
- }
59
- }
60
- else if (frame.type === "event") {
61
- this.options.onEvent(frame);
62
- }
63
- }
64
- catch {
65
- this.options.logger?.warn("Malformed frame:", data.toString());
66
- }
67
- });
68
- this.ws.on("close", () => {
69
- this.options.onDisconnect();
70
- if (!this.closed)
71
- this.scheduleReconnect();
72
- });
73
- this.ws.on("error", () => {
74
- // error is followed by close
75
- });
76
- });
77
- }
78
- async sendRpc(method, params) {
79
- const attempt = () => new Promise((resolve, reject) => {
80
- const id = `rpc-${++this.requestCounter}`;
81
- const frame = {
82
- jsonrpc: "2.0",
83
- type: "request",
84
- id,
85
- method,
86
- params,
87
- };
88
- this.pendingRequests.set(id, { resolve, reject });
89
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
90
- this.pendingRequests.delete(id);
91
- reject(new Error("WebSocket not connected"));
92
- return;
93
- }
94
- this.ws.send(JSON.stringify(frame));
95
- setTimeout(() => {
96
- if (this.pendingRequests.has(id)) {
97
- this.pendingRequests.delete(id);
98
- reject(new Error(`RPC timeout: ${method}`));
99
- }
100
- }, 30_000);
101
- });
102
- try {
103
- return await attempt();
104
- }
105
- catch (err) {
106
- if (err instanceof Error &&
107
- err.message.startsWith("RPC timeout:") &&
108
- method !== "auth/connect") {
109
- return attempt();
110
- }
111
- throw err;
112
- }
113
- }
114
- /** Close the socket permanently (no reconnection). */
115
- close() {
116
- this.closed = true;
117
- this.ws?.close();
118
- }
119
- /** Close the socket without marking as permanently closed, triggering reconnection. */
120
- disconnect() {
121
- this.ws?.close();
122
- }
123
- scheduleReconnect() {
124
- const baseDelay = Math.min(1000 * 2 ** this.reconnectAttempt, this.maxReconnectDelay);
125
- const jitter = baseDelay * (0.5 + Math.random() * 0.5);
126
- this.reconnectAttempt++;
127
- setTimeout(async () => {
128
- try {
129
- const helloOk = await this.connect();
130
- this.options.onReconnect(helloOk);
131
- }
132
- catch {
133
- // connect failed, will retry on close event
134
- }
135
- }, jitter);
136
- }
137
- }
1
+ export { MoltZapWsClient, } from "@moltzap/client";
138
2
  //# sourceMappingURL=ws-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAGhB,MAAM,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moltzap/openclaw-channel",
3
- "version": "2026.329.0",
3
+ "version": "2026.411.0",
4
4
  "description": "OpenClaw channel plugin for MoltZap messaging",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -11,18 +11,21 @@
11
11
  "files": [
12
12
  "dist",
13
13
  "!dist/__tests__",
14
- "!dist/test-utils",
15
14
  "openclaw.plugin.json"
16
15
  ],
17
16
  "main": "./dist/channel.js",
18
17
  "types": "./dist/channel.d.ts",
19
18
  "exports": {
20
19
  ".": "./dist/channel.js",
21
- "./test-utils": "./src/test-utils/container-core.ts"
20
+ "./test-utils": {
21
+ "import": "./dist/test-utils/container-core.js",
22
+ "types": "./dist/test-utils/container-core.d.ts"
23
+ }
22
24
  },
23
25
  "dependencies": {
24
26
  "ws": "^8.18.0",
25
- "@moltzap/protocol": "2026.329.0"
27
+ "@moltzap/client": "2026.411.0",
28
+ "@moltzap/protocol": "2026.408.0"
26
29
  },
27
30
  "devDependencies": {
28
31
  "@testcontainers/postgresql": "^10.18.0",