@moltchats/connector 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/connector.d.ts.map +1 -1
- package/dist/connector.js +8 -2
- package/dist/connector.js.map +1 -1
- package/dist/extract-text.d.ts +9 -0
- package/dist/extract-text.d.ts.map +1 -0
- package/dist/extract-text.js +52 -0
- package/dist/extract-text.js.map +1 -0
- package/dist/no-reply.d.ts +10 -0
- package/dist/no-reply.d.ts.map +1 -0
- package/dist/no-reply.js +27 -0
- package/dist/no-reply.js.map +1 -0
- package/dist/openclaw-client.d.ts +0 -1
- package/dist/openclaw-client.d.ts.map +1 -1
- package/dist/openclaw-client.js +19 -31
- package/dist/openclaw-client.js.map +1 -1
- package/package.json +1 -1
- package/src/connector.ts +9 -2
- package/src/extract-text.ts +54 -0
- package/src/no-reply.ts +27 -0
- package/src/openclaw-client.ts +21 -27
- package/test/extract-text.test.mjs +135 -0
- package/test/no-reply.test.mjs +101 -0
package/dist/connector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAkB1C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,aAAa,CAAuB;gBAEhC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM;IAc7E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,OAAO,CAAC,qBAAqB;YAsCf,aAAa;YA0Eb,mBAAmB;YAwCnB,oBAAoB;YAwBpB,mBAAmB;YAMnB,aAAa;YAqCb,iBAAiB;IAkB/B,OAAO,CAAC,OAAO;CAOhB"}
|
package/dist/connector.js
CHANGED
|
@@ -2,6 +2,7 @@ import { MoltChatsBridge } from './moltchats-bridge.js';
|
|
|
2
2
|
import { OpenClawClient } from './openclaw-client.js';
|
|
3
3
|
import { ChannelRateLimiter } from './rate-limiter.js';
|
|
4
4
|
import { formatDMForOpenClaw, formatServerMessageForOpenClaw, formatFriendRequestForOpenClaw, formatFriendAcceptedForOpenClaw, formatHistory, parseFriendRequestDecision, splitMessage, } from './message-formatter.js';
|
|
5
|
+
import { isNoReply } from './no-reply.js';
|
|
5
6
|
const HEARTBEAT_INTERVAL_MS = 60_000;
|
|
6
7
|
const TYPING_INTERVAL_MS = 5_000;
|
|
7
8
|
export class MoltChatsConnector {
|
|
@@ -136,8 +137,13 @@ export class MoltChatsConnector {
|
|
|
136
137
|
const response = await this.openclaw.chatSendAndWait(formatted);
|
|
137
138
|
clearInterval(typingInterval);
|
|
138
139
|
const trimmed = response.trim();
|
|
139
|
-
if (!trimmed
|
|
140
|
-
this.logger.debug(
|
|
140
|
+
if (!trimmed) {
|
|
141
|
+
this.logger.debug('Empty response from OpenClaw, skipping');
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
// Suppress NO_REPLY control signal (including truncated variants from streaming)
|
|
145
|
+
if (isNoReply(trimmed)) {
|
|
146
|
+
this.logger.debug(`Suppressed NO_REPLY response: "${trimmed.slice(0, 80)}"`);
|
|
141
147
|
return;
|
|
142
148
|
}
|
|
143
149
|
// Split and send response
|
package/dist/connector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively extract text from an OpenClaw response payload.
|
|
3
|
+
*
|
|
4
|
+
* The OpenClaw Gateway wraps response text in varying structures depending
|
|
5
|
+
* on the agent implementation. This function searches priority keys first,
|
|
6
|
+
* then falls back to scanning all remaining keys (skipping known metadata).
|
|
7
|
+
*/
|
|
8
|
+
export declare function extractText(value: unknown, depth?: number): string;
|
|
9
|
+
//# sourceMappingURL=extract-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-text.d.ts","sourceRoot":"","sources":["../src/extract-text.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,MAAM,CAgC7D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively extract text from an OpenClaw response payload.
|
|
3
|
+
*
|
|
4
|
+
* The OpenClaw Gateway wraps response text in varying structures depending
|
|
5
|
+
* on the agent implementation. This function searches priority keys first,
|
|
6
|
+
* then falls back to scanning all remaining keys (skipping known metadata).
|
|
7
|
+
*/
|
|
8
|
+
const PRIORITY_KEYS = [
|
|
9
|
+
'text', 'content', 'message', 'response', 'output', 'result',
|
|
10
|
+
'answer', 'reply', 'body', 'data', 'value', 'delta', 'choices',
|
|
11
|
+
];
|
|
12
|
+
const METADATA_KEYS = new Set([
|
|
13
|
+
...PRIORITY_KEYS,
|
|
14
|
+
'runId', 'sessionKey', 'state', 'errorMessage',
|
|
15
|
+
'id', 'type', 'event', 'ok', 'error', 'method', 'params',
|
|
16
|
+
]);
|
|
17
|
+
const MAX_DEPTH = 5;
|
|
18
|
+
export function extractText(value, depth = 0) {
|
|
19
|
+
if (depth > MAX_DEPTH)
|
|
20
|
+
return '';
|
|
21
|
+
if (typeof value === 'string')
|
|
22
|
+
return value;
|
|
23
|
+
if (Array.isArray(value)) {
|
|
24
|
+
for (const item of value) {
|
|
25
|
+
const text = extractText(item, depth + 1);
|
|
26
|
+
if (text)
|
|
27
|
+
return text;
|
|
28
|
+
}
|
|
29
|
+
return '';
|
|
30
|
+
}
|
|
31
|
+
if (typeof value === 'object' && value !== null) {
|
|
32
|
+
const obj = value;
|
|
33
|
+
// Priority keys — common response field names
|
|
34
|
+
for (const key of PRIORITY_KEYS) {
|
|
35
|
+
if (obj[key] !== undefined) {
|
|
36
|
+
const text = extractText(obj[key], depth + 1);
|
|
37
|
+
if (text)
|
|
38
|
+
return text;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Fallback: try all remaining keys (skip known metadata)
|
|
42
|
+
for (const key of Object.keys(obj)) {
|
|
43
|
+
if (METADATA_KEYS.has(key))
|
|
44
|
+
continue;
|
|
45
|
+
const text = extractText(obj[key], depth + 1);
|
|
46
|
+
if (text)
|
|
47
|
+
return text;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=extract-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-text.js","sourceRoot":"","sources":["../src/extract-text.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,aAAa,GAAG;IACpB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ;IAC5D,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS;CAC/D,CAAC;AAEF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,GAAG,aAAa;IAChB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc;IAC9C,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;CACzD,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IACnD,IAAI,KAAK,GAAG,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1C,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,KAAgC,CAAC;QAE7C,8CAA8C;QAC9C,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC9C,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC;YACxB,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACrC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect NO_REPLY control signal from OpenClaw agents.
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Exact "NO_REPLY" on any line (including after agent reasoning)
|
|
6
|
+
* - Truncated streaming artifacts ("NO", "NO_", "NO_R", etc.) when the
|
|
7
|
+
* entire response is just the truncated prefix
|
|
8
|
+
*/
|
|
9
|
+
export declare function isNoReply(text: string): boolean;
|
|
10
|
+
//# sourceMappingURL=no-reply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-reply.d.ts","sourceRoot":"","sources":["../src/no-reply.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAkB/C"}
|
package/dist/no-reply.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect NO_REPLY control signal from OpenClaw agents.
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Exact "NO_REPLY" on any line (including after agent reasoning)
|
|
6
|
+
* - Truncated streaming artifacts ("NO", "NO_", "NO_R", etc.) when the
|
|
7
|
+
* entire response is just the truncated prefix
|
|
8
|
+
*/
|
|
9
|
+
export function isNoReply(text) {
|
|
10
|
+
const trimmed = text.trim();
|
|
11
|
+
if (!trimmed)
|
|
12
|
+
return false;
|
|
13
|
+
// Truncated variant: entire response is a short prefix of NO_REPLY
|
|
14
|
+
// (only when the whole response is just the prefix — avoids false positives
|
|
15
|
+
// on multi-line responses that happen to contain "NO" on a line)
|
|
16
|
+
if (trimmed.length >= 2 && trimmed.length < 8 && 'NO_REPLY'.startsWith(trimmed)) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
// Check if any line is exactly NO_REPLY
|
|
20
|
+
const lines = trimmed.split('\n');
|
|
21
|
+
for (const line of lines) {
|
|
22
|
+
if (line.trim() === 'NO_REPLY')
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=no-reply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-reply.js","sourceRoot":"","sources":["../src/no-reply.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,mEAAmE;IACnE,4EAA4E;IAC5E,iEAAiE;IACjE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wCAAwC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -38,7 +38,6 @@ export declare class OpenClawClient {
|
|
|
38
38
|
chatInject(message: string, label?: string): Promise<void>;
|
|
39
39
|
chatAbort(runId: string): Promise<void>;
|
|
40
40
|
disconnect(): void;
|
|
41
|
-
private extractText;
|
|
42
41
|
private waitForRunCompletion;
|
|
43
42
|
private request;
|
|
44
43
|
private handleFrame;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-client.d.ts","sourceRoot":"","sources":["../src/openclaw-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"openclaw-client.d.ts","sourceRoot":"","sources":["../src/openclaw-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAQD,KAAK,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AAQnD,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM;IAKlD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAKvC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmFxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAa3D;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,UAAU,IAAI,IAAI;IAmBlB,OAAO,CAAC,oBAAoB;YAqDd,OAAO;IAYrB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,iBAAiB;CAmB1B"}
|
package/dist/openclaw-client.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import WebSocket from 'ws';
|
|
3
|
+
import { extractText } from './extract-text.js';
|
|
3
4
|
const MAX_RECONNECT_ATTEMPTS = 20;
|
|
4
5
|
const RECONNECT_BASE_MS = 2000;
|
|
5
6
|
const RECONNECT_CAP_MS = 30000;
|
|
@@ -153,34 +154,13 @@ export class OpenClawClient {
|
|
|
153
154
|
this.ws = null;
|
|
154
155
|
}
|
|
155
156
|
}
|
|
156
|
-
extractText(value, depth = 0) {
|
|
157
|
-
if (depth > 5)
|
|
158
|
-
return '';
|
|
159
|
-
if (typeof value === 'string')
|
|
160
|
-
return value;
|
|
161
|
-
if (Array.isArray(value)) {
|
|
162
|
-
for (const item of value) {
|
|
163
|
-
const text = this.extractText(item, depth + 1);
|
|
164
|
-
if (text)
|
|
165
|
-
return text;
|
|
166
|
-
}
|
|
167
|
-
return '';
|
|
168
|
-
}
|
|
169
|
-
if (typeof value === 'object' && value !== null) {
|
|
170
|
-
const obj = value;
|
|
171
|
-
for (const key of ['text', 'content', 'message', 'response']) {
|
|
172
|
-
if (obj[key] !== undefined) {
|
|
173
|
-
const text = this.extractText(obj[key], depth + 1);
|
|
174
|
-
if (text)
|
|
175
|
-
return text;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
return '';
|
|
180
|
-
}
|
|
181
157
|
waitForRunCompletion(runId) {
|
|
182
158
|
return new Promise((resolve, reject) => {
|
|
183
|
-
|
|
159
|
+
// Dual accumulation: snapshot (replace) handles snapshot-style deltas,
|
|
160
|
+
// appended (concat) handles incremental-style deltas. We don't know
|
|
161
|
+
// which format OpenClaw uses, so we keep both as fallback.
|
|
162
|
+
let latestSnapshot = '';
|
|
163
|
+
let appended = '';
|
|
184
164
|
const timeout = setTimeout(() => {
|
|
185
165
|
off();
|
|
186
166
|
this.chatAbort(runId).catch(() => { });
|
|
@@ -191,16 +171,24 @@ export class OpenClawClient {
|
|
|
191
171
|
return;
|
|
192
172
|
switch (event.state) {
|
|
193
173
|
case 'delta': {
|
|
194
|
-
const text =
|
|
195
|
-
if (text)
|
|
196
|
-
|
|
174
|
+
const text = extractText(event.message);
|
|
175
|
+
if (text) {
|
|
176
|
+
latestSnapshot = text;
|
|
177
|
+
appended += text;
|
|
178
|
+
}
|
|
197
179
|
break;
|
|
198
180
|
}
|
|
199
|
-
case 'final':
|
|
181
|
+
case 'final': {
|
|
200
182
|
clearTimeout(timeout);
|
|
201
183
|
off();
|
|
202
|
-
|
|
184
|
+
const finalText = extractText(event.message) ||
|
|
185
|
+
extractText(event) ||
|
|
186
|
+
latestSnapshot ||
|
|
187
|
+
appended;
|
|
188
|
+
this.logger.debug(`Run ${runId} completed (${finalText.length} chars)`);
|
|
189
|
+
resolve(finalText);
|
|
203
190
|
break;
|
|
191
|
+
}
|
|
204
192
|
case 'aborted':
|
|
205
193
|
clearTimeout(timeout);
|
|
206
194
|
off();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-client.js","sourceRoot":"","sources":["../src/openclaw-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,SAAS,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"openclaw-client.js","sourceRoot":"","sources":["../src/openclaw-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/connector.ts
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
parseFriendRequestDecision,
|
|
14
14
|
splitMessage,
|
|
15
15
|
} from './message-formatter.js';
|
|
16
|
+
import { isNoReply } from './no-reply.js';
|
|
16
17
|
|
|
17
18
|
const HEARTBEAT_INTERVAL_MS = 60_000;
|
|
18
19
|
const TYPING_INTERVAL_MS = 5_000;
|
|
@@ -178,8 +179,14 @@ export class MoltChatsConnector {
|
|
|
178
179
|
clearInterval(typingInterval);
|
|
179
180
|
|
|
180
181
|
const trimmed = response.trim();
|
|
181
|
-
if (!trimmed
|
|
182
|
-
this.logger.debug(
|
|
182
|
+
if (!trimmed) {
|
|
183
|
+
this.logger.debug('Empty response from OpenClaw, skipping');
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Suppress NO_REPLY control signal (including truncated variants from streaming)
|
|
188
|
+
if (isNoReply(trimmed)) {
|
|
189
|
+
this.logger.debug(`Suppressed NO_REPLY response: "${trimmed.slice(0, 80)}"`);
|
|
183
190
|
return;
|
|
184
191
|
}
|
|
185
192
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively extract text from an OpenClaw response payload.
|
|
3
|
+
*
|
|
4
|
+
* The OpenClaw Gateway wraps response text in varying structures depending
|
|
5
|
+
* on the agent implementation. This function searches priority keys first,
|
|
6
|
+
* then falls back to scanning all remaining keys (skipping known metadata).
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const PRIORITY_KEYS = [
|
|
10
|
+
'text', 'content', 'message', 'response', 'output', 'result',
|
|
11
|
+
'answer', 'reply', 'body', 'data', 'value', 'delta', 'choices',
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
const METADATA_KEYS = new Set([
|
|
15
|
+
...PRIORITY_KEYS,
|
|
16
|
+
'runId', 'sessionKey', 'state', 'errorMessage',
|
|
17
|
+
'id', 'type', 'event', 'ok', 'error', 'method', 'params',
|
|
18
|
+
]);
|
|
19
|
+
|
|
20
|
+
const MAX_DEPTH = 5;
|
|
21
|
+
|
|
22
|
+
export function extractText(value: unknown, depth = 0): string {
|
|
23
|
+
if (depth > MAX_DEPTH) return '';
|
|
24
|
+
if (typeof value === 'string') return value;
|
|
25
|
+
|
|
26
|
+
if (Array.isArray(value)) {
|
|
27
|
+
for (const item of value) {
|
|
28
|
+
const text = extractText(item, depth + 1);
|
|
29
|
+
if (text) return text;
|
|
30
|
+
}
|
|
31
|
+
return '';
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (typeof value === 'object' && value !== null) {
|
|
35
|
+
const obj = value as Record<string, unknown>;
|
|
36
|
+
|
|
37
|
+
// Priority keys — common response field names
|
|
38
|
+
for (const key of PRIORITY_KEYS) {
|
|
39
|
+
if (obj[key] !== undefined) {
|
|
40
|
+
const text = extractText(obj[key], depth + 1);
|
|
41
|
+
if (text) return text;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Fallback: try all remaining keys (skip known metadata)
|
|
46
|
+
for (const key of Object.keys(obj)) {
|
|
47
|
+
if (METADATA_KEYS.has(key)) continue;
|
|
48
|
+
const text = extractText(obj[key], depth + 1);
|
|
49
|
+
if (text) return text;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return '';
|
|
54
|
+
}
|
package/src/no-reply.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect NO_REPLY control signal from OpenClaw agents.
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Exact "NO_REPLY" on any line (including after agent reasoning)
|
|
6
|
+
* - Truncated streaming artifacts ("NO", "NO_", "NO_R", etc.) when the
|
|
7
|
+
* entire response is just the truncated prefix
|
|
8
|
+
*/
|
|
9
|
+
export function isNoReply(text: string): boolean {
|
|
10
|
+
const trimmed = text.trim();
|
|
11
|
+
if (!trimmed) return false;
|
|
12
|
+
|
|
13
|
+
// Truncated variant: entire response is a short prefix of NO_REPLY
|
|
14
|
+
// (only when the whole response is just the prefix — avoids false positives
|
|
15
|
+
// on multi-line responses that happen to contain "NO" on a line)
|
|
16
|
+
if (trimmed.length >= 2 && trimmed.length < 8 && 'NO_REPLY'.startsWith(trimmed)) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Check if any line is exactly NO_REPLY
|
|
21
|
+
const lines = trimmed.split('\n');
|
|
22
|
+
for (const line of lines) {
|
|
23
|
+
if (line.trim() === 'NO_REPLY') return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return false;
|
|
27
|
+
}
|
package/src/openclaw-client.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import WebSocket from 'ws';
|
|
3
3
|
import type { Logger } from './logger.js';
|
|
4
|
+
import { extractText } from './extract-text.js';
|
|
4
5
|
|
|
5
6
|
export interface OpenClawConfig {
|
|
6
7
|
gatewayUrl: string;
|
|
@@ -198,31 +199,14 @@ export class OpenClawClient {
|
|
|
198
199
|
}
|
|
199
200
|
}
|
|
200
201
|
|
|
201
|
-
private extractText(value: unknown, depth = 0): string {
|
|
202
|
-
if (depth > 5) return '';
|
|
203
|
-
if (typeof value === 'string') return value;
|
|
204
|
-
if (Array.isArray(value)) {
|
|
205
|
-
for (const item of value) {
|
|
206
|
-
const text = this.extractText(item, depth + 1);
|
|
207
|
-
if (text) return text;
|
|
208
|
-
}
|
|
209
|
-
return '';
|
|
210
|
-
}
|
|
211
|
-
if (typeof value === 'object' && value !== null) {
|
|
212
|
-
const obj = value as Record<string, unknown>;
|
|
213
|
-
for (const key of ['text', 'content', 'message', 'response']) {
|
|
214
|
-
if (obj[key] !== undefined) {
|
|
215
|
-
const text = this.extractText(obj[key], depth + 1);
|
|
216
|
-
if (text) return text;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
return '';
|
|
221
|
-
}
|
|
222
|
-
|
|
223
202
|
private waitForRunCompletion(runId: string): Promise<string> {
|
|
224
203
|
return new Promise((resolve, reject) => {
|
|
225
|
-
|
|
204
|
+
// Dual accumulation: snapshot (replace) handles snapshot-style deltas,
|
|
205
|
+
// appended (concat) handles incremental-style deltas. We don't know
|
|
206
|
+
// which format OpenClaw uses, so we keep both as fallback.
|
|
207
|
+
let latestSnapshot = '';
|
|
208
|
+
let appended = '';
|
|
209
|
+
|
|
226
210
|
const timeout = setTimeout(() => {
|
|
227
211
|
off();
|
|
228
212
|
this.chatAbort(runId).catch(() => {});
|
|
@@ -234,15 +218,25 @@ export class OpenClawClient {
|
|
|
234
218
|
|
|
235
219
|
switch (event.state) {
|
|
236
220
|
case 'delta': {
|
|
237
|
-
const text =
|
|
238
|
-
if (text)
|
|
221
|
+
const text = extractText(event.message);
|
|
222
|
+
if (text) {
|
|
223
|
+
latestSnapshot = text;
|
|
224
|
+
appended += text;
|
|
225
|
+
}
|
|
239
226
|
break;
|
|
240
227
|
}
|
|
241
|
-
case 'final':
|
|
228
|
+
case 'final': {
|
|
242
229
|
clearTimeout(timeout);
|
|
243
230
|
off();
|
|
244
|
-
|
|
231
|
+
const finalText =
|
|
232
|
+
extractText(event.message) ||
|
|
233
|
+
extractText(event) ||
|
|
234
|
+
latestSnapshot ||
|
|
235
|
+
appended;
|
|
236
|
+
this.logger.debug(`Run ${runId} completed (${finalText.length} chars)`);
|
|
237
|
+
resolve(finalText);
|
|
245
238
|
break;
|
|
239
|
+
}
|
|
246
240
|
case 'aborted':
|
|
247
241
|
clearTimeout(timeout);
|
|
248
242
|
off();
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { extractText } from '../dist/extract-text.js';
|
|
4
|
+
|
|
5
|
+
describe('extractText', () => {
|
|
6
|
+
describe('basic extraction', () => {
|
|
7
|
+
it('returns string directly', () => {
|
|
8
|
+
assert.equal(extractText('hello'), 'hello');
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('extracts from text key', () => {
|
|
12
|
+
assert.equal(extractText({ text: 'hello' }), 'hello');
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('extracts from content key', () => {
|
|
16
|
+
assert.equal(extractText({ content: 'hello' }), 'hello');
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('extracts from response key', () => {
|
|
20
|
+
assert.equal(extractText({ response: 'hello' }), 'hello');
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('extracts from output key', () => {
|
|
24
|
+
assert.equal(extractText({ output: 'hello' }), 'hello');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('extracts from delta key', () => {
|
|
28
|
+
assert.equal(extractText({ delta: { content: 'hello' } }), 'hello');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe('nested structures', () => {
|
|
33
|
+
it('extracts from nested message.content', () => {
|
|
34
|
+
assert.equal(extractText({ message: { content: 'hello' } }), 'hello');
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('extracts from OpenAI-style choices', () => {
|
|
38
|
+
assert.equal(
|
|
39
|
+
extractText({ choices: [{ delta: { content: 'hello' } }] }),
|
|
40
|
+
'hello',
|
|
41
|
+
);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('extracts from array', () => {
|
|
45
|
+
assert.equal(extractText(['hello']), 'hello');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('skips empty strings in array', () => {
|
|
49
|
+
assert.equal(extractText(['', '', 'hello']), 'hello');
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('extracts from deeply nested object', () => {
|
|
53
|
+
assert.equal(
|
|
54
|
+
extractText({ data: { result: { text: 'hello' } } }),
|
|
55
|
+
'hello',
|
|
56
|
+
);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe('fallback scan', () => {
|
|
61
|
+
it('finds text in unknown key', () => {
|
|
62
|
+
assert.equal(extractText({ customField: 'hello' }), 'hello');
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('skips metadata keys and finds text in unknown key', () => {
|
|
66
|
+
assert.equal(
|
|
67
|
+
extractText({ runId: 'abc123', customField: 'hello' }),
|
|
68
|
+
'hello',
|
|
69
|
+
);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('finds nested text via fallback key', () => {
|
|
73
|
+
assert.equal(
|
|
74
|
+
extractText({ runId: 'abc', state: 'final', payload: { nested: 'hello' } }),
|
|
75
|
+
'hello',
|
|
76
|
+
);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('prefers priority keys over fallback keys', () => {
|
|
80
|
+
assert.equal(
|
|
81
|
+
extractText({ customField: 'wrong', text: 'right' }),
|
|
82
|
+
'right',
|
|
83
|
+
);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
describe('edge cases', () => {
|
|
88
|
+
it('returns empty for null', () => {
|
|
89
|
+
assert.equal(extractText(null), '');
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('returns empty for undefined', () => {
|
|
93
|
+
assert.equal(extractText(undefined), '');
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it('returns empty for number', () => {
|
|
97
|
+
assert.equal(extractText(42), '');
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it('returns empty for boolean', () => {
|
|
101
|
+
assert.equal(extractText(true), '');
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it('returns empty for empty object', () => {
|
|
105
|
+
assert.equal(extractText({}), '');
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it('returns empty for empty string', () => {
|
|
109
|
+
assert.equal(extractText(''), '');
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('returns empty for object with empty text', () => {
|
|
113
|
+
assert.equal(extractText({ text: '' }), '');
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('respects depth limit', () => {
|
|
117
|
+
// Build object nested 7 levels deep
|
|
118
|
+
let obj = { text: 'deep' };
|
|
119
|
+
for (let i = 0; i < 7; i++) {
|
|
120
|
+
obj = { data: obj };
|
|
121
|
+
}
|
|
122
|
+
// Should not find it past depth 5
|
|
123
|
+
assert.equal(extractText(obj), '');
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
it('finds text within depth limit', () => {
|
|
127
|
+
// Build object nested 4 levels deep (within limit)
|
|
128
|
+
let obj = { text: 'found' };
|
|
129
|
+
for (let i = 0; i < 3; i++) {
|
|
130
|
+
obj = { data: obj };
|
|
131
|
+
}
|
|
132
|
+
assert.equal(extractText(obj), 'found');
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
});
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { isNoReply } from '../dist/no-reply.js';
|
|
4
|
+
|
|
5
|
+
describe('isNoReply', () => {
|
|
6
|
+
describe('should suppress', () => {
|
|
7
|
+
it('exact NO_REPLY', () => {
|
|
8
|
+
assert.ok(isNoReply('NO_REPLY'));
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('NO_REPLY with surrounding whitespace', () => {
|
|
12
|
+
assert.ok(isNoReply(' NO_REPLY '));
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('NO_REPLY with trailing newline', () => {
|
|
16
|
+
assert.ok(isNoReply('NO_REPLY\n'));
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('truncated: NO', () => {
|
|
20
|
+
assert.ok(isNoReply('NO'));
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('truncated: NO_', () => {
|
|
24
|
+
assert.ok(isNoReply('NO_'));
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('truncated: NO_R', () => {
|
|
28
|
+
assert.ok(isNoReply('NO_R'));
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('truncated: NO_RE', () => {
|
|
32
|
+
assert.ok(isNoReply('NO_RE'));
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('truncated: NO_REP', () => {
|
|
36
|
+
assert.ok(isNoReply('NO_REP'));
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('truncated: NO_REPL', () => {
|
|
40
|
+
assert.ok(isNoReply('NO_REPL'));
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('NO_REPLY on last line after reasoning', () => {
|
|
44
|
+
assert.ok(isNoReply('I decided not to respond.\nNO_REPLY'));
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('NO_REPLY separated by blank lines', () => {
|
|
48
|
+
assert.ok(isNoReply('Thinking about it...\n\nNO_REPLY'));
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('NO_REPLY on first line of multi-line', () => {
|
|
52
|
+
assert.ok(isNoReply('NO_REPLY\nSome trailing text'));
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('NO_REPLY in middle of multi-line', () => {
|
|
56
|
+
assert.ok(isNoReply('Some reasoning\nNO_REPLY\nMore text'));
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe('should NOT suppress', () => {
|
|
61
|
+
it('empty string', () => {
|
|
62
|
+
assert.ok(!isNoReply(''));
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('normal response', () => {
|
|
66
|
+
assert.ok(!isNoReply('Hello there'));
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('response starting with No', () => {
|
|
70
|
+
assert.ok(!isNoReply('No, I don\'t think so'));
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('response starting with NO as exclamation', () => {
|
|
74
|
+
assert.ok(!isNoReply('NO way!'));
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it('NOTHING (starts with NO but is a word)', () => {
|
|
78
|
+
assert.ok(!isNoReply('NOTHING to report'));
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('NO_REPLY embedded in text', () => {
|
|
82
|
+
assert.ok(!isNoReply('The phrase NO_REPLY means don\'t respond.'));
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it('NO on a line in multi-line response (not truncation)', () => {
|
|
86
|
+
assert.ok(!isNoReply('Here\'s my answer:\nNO\nThat\'s what I think.'));
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it('single character N', () => {
|
|
90
|
+
assert.ok(!isNoReply('N'));
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('legitimate short response', () => {
|
|
94
|
+
assert.ok(!isNoReply('OK'));
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('NO_REPLY as part of a longer word', () => {
|
|
98
|
+
assert.ok(!isNoReply('NO_REPLY_NEEDED'));
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|