@moltchats/connector 0.4.2 → 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.
@@ -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;AAiB1C,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;YA2Eb,mBAAmB;YAwCnB,oBAAoB;YAwBpB,mBAAmB;YAMnB,aAAa;YAqCb,iBAAiB;IAkB/B,OAAO,CAAC,OAAO;CAOhB"}
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 {
@@ -141,9 +142,8 @@ export class MoltChatsConnector {
141
142
  return;
142
143
  }
143
144
  // Suppress NO_REPLY control signal (including truncated variants from streaming)
144
- const firstLine = trimmed.split('\n')[0].trim();
145
- if (firstLine === 'NO_REPLY' || (firstLine.length >= 2 && 'NO_REPLY'.startsWith(firstLine))) {
146
- this.logger.debug(`Suppressed NO_REPLY response: "${firstLine}"`);
145
+ if (isNoReply(trimmed)) {
146
+ this.logger.debug(`Suppressed NO_REPLY response: "${trimmed.slice(0, 80)}"`);
147
147
  return;
148
148
  }
149
149
  // Split and send response
@@ -1 +1 @@
1
- {"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,aAAa,EACb,0BAA0B,EAC1B,YAAY,GACb,MAAM,wBAAwB,CAAC;AAEhC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAkB;IACxB,QAAQ,CAAiB;IACzB,WAAW,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACvC,MAAM,CAAS;IACf,MAAM,CAAkB;IACxB,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7C,cAAc,GAA0C,IAAI,CAAC;IAC7D,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,kBAAkB,GAA0C,IAAI,CAAC;IACjE,aAAa,GAAkB,IAAI,CAAC;IACpC,aAAa,GAAkB,IAAI,CAAC;IAE5C,YAAY,MAAuB,EAAE,WAA8B,EAAE,MAAc;QACjF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAChC;YACE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;YACtC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;YACpC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;SACvC,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,+BAA+B;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAEjC,iCAAiC;QACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE9B,iCAAiC;QACjC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAE9B,uCAAuC;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAExC,6BAA6B;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,0CAA0C;QAC1C,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAE1B,+BAA+B;QAC/B,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;YACzC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;gBACzD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBACjC,KAAK,MAAM,EAAE,IAAI,MAAM;oBAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,0BAA0B,IAAI,CAAC,MAAM,CAAC,QAAQ,kCAAkC,CACjF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACxC,CAAC;IAEO,qBAAqB;QAC3B,2BAA2B;QAC3B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAgB,EAAE,EAAE;YAC7C,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS;gBAAE,OAAO;YAElC,0BAA0B;YAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAElD,0EAA0E;YAC1E,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,OAAO;YAClD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAgB,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,EAAE,KAAK,gBAAgB;gBAAE,OAAO;YACzC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAgB,EAAE,EAAE;YACrD,IAAI,IAAI,CAAC,EAAE,KAAK,iBAAiB;gBAAE,OAAO;YAC1C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAgB,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,EAAE,KAAK,gBAAgB;gBAAE,OAAO;YACzC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,GAAmC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;QAEjC,gDAAgD;QAChD,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE;oBAChE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;iBACnC,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;gBACjE,aAAa,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,IAAI;YACrC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC;YAC7E,CAAC,CAAC,8BAA8B,CAC5B,GAAG,CAAC,KAAK,CAAC,QAAQ,EAClB,GAAG,CAAC,KAAK,CAAC,WAAW,EACrB,GAAG,CAAC,OAAO,EACX,IAAI,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CACjD,CAAC,CAAC;QAEP,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7H,CAAC;QAEF,yCAAyC;QACzC,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEhE,aAAa,CAAC,cAAc,CAAC,CAAC;YAE9B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YAED,iFAAiF;YACjF,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChD,IAAI,SAAS,KAAK,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC5F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,SAAS,GAAG,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC;oBAC9E,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,cAAc,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,YAAoB;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QAEzD,8CAA8C;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAC3B,CAAC,CAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CACjE,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,MAAM,SAAS,GAAG,8BAA8B,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;YAElE,2CAA2C;YAC3C,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC/C,SAAS,EAAE,MAAM,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI;oBACV,cAAc,EAAE,YAAY;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAgD,YAAY,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,cAAsB;QACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,8BAA8B,CAAC,CAAC;QAEnE,+BAA+B;QAC/B,MAAM,SAAS,GAAG,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAEpE,8BAA8B;QAC9B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC;YACxF,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC/C,SAAS,EAAE,MAAM,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI;oBACV,cAAc;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,IAA2C;QAC3E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,IAAI,CAAC,QAAQ,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,MAAM,YAAY,GAAG,6BAA6B,IAAI,CAAC,IAAI,CAAC,QAAQ,uCAAuC,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,cAAc,GAAG,CAAC;QACpJ,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CACrD,IAAI,CAAC,aAAa,IAAI,SAAS,CAChC,CAAC;YACF,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;YAEvC,+BAA+B;YAC/B,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC5E,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,OAAO;YAEjC,+CAA+C;YAC/C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACnC,4EAA4E;gBAC5E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE;wBACzC,SAAS,EAAE,EAAE,CAAC,SAAS;wBACvB,IAAI,EAAE,IAAI;wBACV,cAAc,EAAE,EAAE,CAAC,cAAc;qBAClC,CAAC,CAAC;oBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,CAAC,cAAc,gBAAgB,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBAChD,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,OAAe;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACzE,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAC5B,0GAA0G,OAAO,EAAE,EACnH,wBAAwB,CACzB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,OAAO,mBAAmB,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,GAAW,EAAE,EAAuB;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,aAAa,EACb,0BAA0B,EAC1B,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAkB;IACxB,QAAQ,CAAiB;IACzB,WAAW,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACvC,MAAM,CAAS;IACf,MAAM,CAAkB;IACxB,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7C,cAAc,GAA0C,IAAI,CAAC;IAC7D,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,kBAAkB,GAA0C,IAAI,CAAC;IACjE,aAAa,GAAkB,IAAI,CAAC;IACpC,aAAa,GAAkB,IAAI,CAAC;IAE5C,YAAY,MAAuB,EAAE,WAA8B,EAAE,MAAc;QACjF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAChC;YACE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;YACtC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;YACpC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;SACvC,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,+BAA+B;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAEjC,iCAAiC;QACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE9B,iCAAiC;QACjC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAE9B,uCAAuC;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAExC,6BAA6B;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,0CAA0C;QAC1C,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAE1B,+BAA+B;QAC/B,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;YACzC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;gBACzD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBACjC,KAAK,MAAM,EAAE,IAAI,MAAM;oBAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,0BAA0B,IAAI,CAAC,MAAM,CAAC,QAAQ,kCAAkC,CACjF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACxC,CAAC;IAEO,qBAAqB;QAC3B,2BAA2B;QAC3B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAgB,EAAE,EAAE;YAC7C,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS;gBAAE,OAAO;YAElC,0BAA0B;YAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAElD,0EAA0E;YAC1E,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,OAAO;YAClD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAgB,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,EAAE,KAAK,gBAAgB;gBAAE,OAAO;YACzC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAgB,EAAE,EAAE;YACrD,IAAI,IAAI,CAAC,EAAE,KAAK,iBAAiB;gBAAE,OAAO;YAC1C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAgB,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,EAAE,KAAK,gBAAgB;gBAAE,OAAO;YACzC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,GAAmC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;QAEjC,gDAAgD;QAChD,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE;oBAChE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;iBACnC,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;gBACjE,aAAa,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,IAAI;YACrC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC;YAC7E,CAAC,CAAC,8BAA8B,CAC5B,GAAG,CAAC,KAAK,CAAC,QAAQ,EAClB,GAAG,CAAC,KAAK,CAAC,WAAW,EACrB,GAAG,CAAC,OAAO,EACX,IAAI,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CACjD,CAAC,CAAC;QAEP,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7H,CAAC;QAEF,yCAAyC;QACzC,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEhE,aAAa,CAAC,cAAc,CAAC,CAAC;YAE9B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YAED,iFAAiF;YACjF,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC7E,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC;oBAC9E,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,cAAc,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,YAAoB;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QAEzD,8CAA8C;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAC3B,CAAC,CAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CACjE,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,MAAM,SAAS,GAAG,8BAA8B,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;YAElE,2CAA2C;YAC3C,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC/C,SAAS,EAAE,MAAM,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI;oBACV,cAAc,EAAE,YAAY;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAgD,YAAY,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,cAAsB;QACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,8BAA8B,CAAC,CAAC;QAEnE,+BAA+B;QAC/B,MAAM,SAAS,GAAG,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAEpE,8BAA8B;QAC9B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC;YACxF,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC/C,SAAS,EAAE,MAAM,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI;oBACV,cAAc;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,IAA2C;QAC3E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,IAAI,CAAC,QAAQ,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,MAAM,YAAY,GAAG,6BAA6B,IAAI,CAAC,IAAI,CAAC,QAAQ,uCAAuC,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,cAAc,GAAG,CAAC;QACpJ,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CACrD,IAAI,CAAC,aAAa,IAAI,SAAS,CAChC,CAAC;YACF,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;YAEvC,+BAA+B;YAC/B,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC5E,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,OAAO;YAEjC,+CAA+C;YAC/C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACnC,4EAA4E;gBAC5E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE;wBACzC,SAAS,EAAE,EAAE,CAAC,SAAS;wBACvB,IAAI,EAAE,IAAI;wBACV,cAAc,EAAE,EAAE,CAAC,cAAc;qBAClC,CAAC,CAAC;oBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,CAAC,cAAc,gBAAgB,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBAChD,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,OAAe;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACzE,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAC5B,0GAA0G,OAAO,EAAE,EACnH,wBAAwB,CACzB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,OAAO,mBAAmB,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,GAAW,EAAE,EAAuB;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -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"}
@@ -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;AAE1C,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,WAAW;IAsBnB,OAAO,CAAC,oBAAoB;YAoCd,OAAO;IAYrB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,iBAAiB;CAmB1B"}
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"}
@@ -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', 'output', 'result', 'answer', 'reply', 'body', 'data', 'value']) {
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
- let accumulated = '';
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(() => { });
@@ -190,14 +170,25 @@ export class OpenClawClient {
190
170
  if (event.runId !== runId)
191
171
  return;
192
172
  switch (event.state) {
193
- case 'delta':
194
- accumulated = this.extractText(event.message) || accumulated;
173
+ case 'delta': {
174
+ const text = extractText(event.message);
175
+ if (text) {
176
+ latestSnapshot = text;
177
+ appended += text;
178
+ }
195
179
  break;
196
- case 'final':
180
+ }
181
+ case 'final': {
197
182
  clearTimeout(timeout);
198
183
  off();
199
- resolve(this.extractText(event.message) || this.extractText(event) || accumulated);
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);
200
190
  break;
191
+ }
201
192
  case 'aborted':
202
193
  clearTimeout(timeout);
203
194
  off();
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw-client.js","sourceRoot":"","sources":["../src/openclaw-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openclaw-client.js","sourceRoot":"","sources":["../src/openclaw-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moltchats/connector",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "bin": {
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;
@@ -184,9 +185,8 @@ export class MoltChatsConnector {
184
185
  }
185
186
 
186
187
  // Suppress NO_REPLY control signal (including truncated variants from streaming)
187
- const firstLine = trimmed.split('\n')[0].trim();
188
- if (firstLine === 'NO_REPLY' || (firstLine.length >= 2 && 'NO_REPLY'.startsWith(firstLine))) {
189
- this.logger.debug(`Suppressed NO_REPLY response: "${firstLine}"`);
188
+ if (isNoReply(trimmed)) {
189
+ this.logger.debug(`Suppressed NO_REPLY response: "${trimmed.slice(0, 80)}"`);
190
190
  return;
191
191
  }
192
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
+ }
@@ -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
+ }
@@ -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', 'output', 'result', 'answer', 'reply', 'body', 'data', 'value']) {
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
- let accumulated = '';
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(() => {});
@@ -233,14 +217,26 @@ export class OpenClawClient {
233
217
  if (event.runId !== runId) return;
234
218
 
235
219
  switch (event.state) {
236
- case 'delta':
237
- accumulated = this.extractText(event.message) || accumulated;
220
+ case 'delta': {
221
+ const text = extractText(event.message);
222
+ if (text) {
223
+ latestSnapshot = text;
224
+ appended += text;
225
+ }
238
226
  break;
239
- case 'final':
227
+ }
228
+ case 'final': {
240
229
  clearTimeout(timeout);
241
230
  off();
242
- resolve(this.extractText(event.message) || this.extractText(event) || accumulated);
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);
243
238
  break;
239
+ }
244
240
  case 'aborted':
245
241
  clearTimeout(timeout);
246
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
+ });