@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 +21 -0
- package/dist/openclaw-entry.d.ts +5 -2
- package/dist/openclaw-entry.d.ts.map +1 -1
- package/dist/openclaw-entry.js +153 -261
- package/dist/openclaw-entry.js.map +1 -1
- package/dist/test-utils/container-core.d.ts +53 -0
- package/dist/test-utils/container-core.d.ts.map +1 -0
- package/dist/test-utils/container-core.js +245 -0
- package/dist/test-utils/container-core.js.map +1 -0
- package/dist/ws-client.d.ts +1 -40
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +1 -137
- package/dist/ws-client.js.map +1 -1
- package/package.json +7 -4
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.
|
package/dist/openclaw-entry.d.ts
CHANGED
|
@@ -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":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"openclaw-entry.d.ts","sourceRoot":"","sources":["../src/openclaw-entry.ts"],"names":[],"mappings":"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"}
|
package/dist/openclaw-entry.js
CHANGED
|
@@ -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 {
|
|
11
|
-
import {
|
|
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
|
|
77
|
-
if (!
|
|
75
|
+
const service = activeClients.get(params.accountId ?? DEFAULT_ACCOUNT_ID);
|
|
76
|
+
if (!service)
|
|
78
77
|
return [];
|
|
79
78
|
try {
|
|
80
|
-
const { contacts } = (await
|
|
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
|
|
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
|
|
101
|
-
if (!
|
|
99
|
+
const service = activeClients.get(params.accountId ?? DEFAULT_ACCOUNT_ID);
|
|
100
|
+
if (!service)
|
|
102
101
|
return [];
|
|
103
102
|
try {
|
|
104
|
-
const { conversations } = (await
|
|
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
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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
|
-
|
|
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
|
-
|
|
192
|
-
|
|
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
|
|
202
|
-
message.sender.
|
|
203
|
-
|
|
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:
|
|
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
|
|
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
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
-
|
|
270
|
+
break;
|
|
311
271
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
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
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
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
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
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
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
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
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
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
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
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
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
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
|
-
:
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
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
|
-
|
|
423
|
-
|
|
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
|
-
|
|
368
|
+
service.close();
|
|
460
369
|
activeClients.delete(accountId);
|
|
461
370
|
}, { once: true });
|
|
462
371
|
try {
|
|
463
|
-
|
|
464
|
-
|
|
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
|
|
486
|
-
if (
|
|
393
|
+
const service = activeClients.get(ctx.accountId);
|
|
394
|
+
if (service) {
|
|
487
395
|
ctx.log?.info?.("MoltZap: stopping");
|
|
488
|
-
|
|
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
|
|
512
|
-
if (!
|
|
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
|
-
|
|
523
|
-
|
|
524
|
-
|
|
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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"}
|
package/dist/ws-client.d.ts
CHANGED
|
@@ -1,41 +1,2 @@
|
|
|
1
|
-
|
|
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
|
package/dist/ws-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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
|
package/dist/ws-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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.
|
|
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":
|
|
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/
|
|
27
|
+
"@moltzap/client": "2026.411.0",
|
|
28
|
+
"@moltzap/protocol": "2026.408.0"
|
|
26
29
|
},
|
|
27
30
|
"devDependencies": {
|
|
28
31
|
"@testcontainers/postgresql": "^10.18.0",
|