@openclaw/crabline 0.1.16 → 0.1.18

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.
Files changed (39) hide show
  1. package/README.md +8 -0
  2. package/dist/src/openclaw/bridges/whatsapp.js +21 -1
  3. package/dist/src/openclaw/bridges/whatsapp.js.map +1 -1
  4. package/dist/src/openclaw/private-file.js +87 -30
  5. package/dist/src/openclaw/private-file.js.map +1 -1
  6. package/dist/src/openclaw/shared.d.ts +9 -0
  7. package/dist/src/openclaw/shared.js +2 -1
  8. package/dist/src/openclaw/shared.js.map +1 -1
  9. package/dist/src/platform/process-owned-lock.d.ts +5 -2
  10. package/dist/src/platform/process-owned-lock.js +20 -10
  11. package/dist/src/platform/process-owned-lock.js.map +1 -1
  12. package/dist/src/servers/discord.js +25 -35
  13. package/dist/src/servers/discord.js.map +1 -1
  14. package/dist/src/servers/http.d.ts +3 -0
  15. package/dist/src/servers/http.js +15 -0
  16. package/dist/src/servers/http.js.map +1 -1
  17. package/dist/src/servers/matrix.js +8 -8
  18. package/dist/src/servers/matrix.js.map +1 -1
  19. package/dist/src/servers/mattermost.js +7 -10
  20. package/dist/src/servers/mattermost.js.map +1 -1
  21. package/dist/src/servers/recorder.d.ts +16 -6
  22. package/dist/src/servers/recorder.js +52 -12
  23. package/dist/src/servers/recorder.js.map +1 -1
  24. package/dist/src/servers/signal.js +8 -8
  25. package/dist/src/servers/signal.js.map +1 -1
  26. package/dist/src/servers/slack.js +8 -8
  27. package/dist/src/servers/slack.js.map +1 -1
  28. package/dist/src/servers/telegram.d.ts +2 -2
  29. package/dist/src/servers/telegram.js +8 -8
  30. package/dist/src/servers/telegram.js.map +1 -1
  31. package/dist/src/servers/whatsapp-baileys-websocket.d.ts +15 -0
  32. package/dist/src/servers/whatsapp-baileys-websocket.js +32 -2
  33. package/dist/src/servers/whatsapp-baileys-websocket.js.map +1 -1
  34. package/dist/src/servers/whatsapp.js +189 -29
  35. package/dist/src/servers/whatsapp.js.map +1 -1
  36. package/dist/src/servers/zalo.js +8 -7
  37. package/dist/src/servers/zalo.js.map +1 -1
  38. package/docs/channel-setup.md +65 -1
  39. package/package.json +12 -12
@@ -49,11 +49,26 @@ export type WhatsAppBaileysInboundMessage = {
49
49
  remoteJid: string;
50
50
  };
51
51
  message: {
52
+ audioMessage?: never;
52
53
  conversation: string;
54
+ } | {
55
+ audioMessage: WhatsAppBaileysAudioMessage;
56
+ conversation?: never;
53
57
  };
54
58
  messageTimestamp: number;
55
59
  pushName?: string | undefined;
56
60
  };
61
+ export type WhatsAppBaileysAudioMessage = {
62
+ fileEncSha256: Buffer;
63
+ fileLength: number;
64
+ fileSha256: Buffer;
65
+ mediaKey: Buffer;
66
+ mediaKeyTimestamp: number;
67
+ mimetype: string;
68
+ ptt: boolean;
69
+ seconds?: number | undefined;
70
+ url: string;
71
+ };
57
72
  export declare function resolveMaxPendingWhatsAppInboundMessages(value: number | undefined): number;
58
73
  export type MockSignalBundle = {
59
74
  identityKey: KeyPair;
@@ -953,7 +953,7 @@ class WhatsAppBaileysWebSocketSession {
953
953
  }
954
954
  }
955
955
  async #handleNode(node) {
956
- await this.#recordNode(node);
956
+ await awaitWithAbort(this.#recordNode(node), this.#acceptanceAbort.signal);
957
957
  if (node.tag === "iq") {
958
958
  await this.#sendNode(this.#createIqResult(node));
959
959
  return;
@@ -1787,7 +1787,7 @@ function createInboundMessageNode(message) {
1787
1787
  content: [
1788
1788
  {
1789
1789
  attrs: {},
1790
- content: encodePlaintextConversationMessage(message.message.conversation),
1790
+ content: encodePlaintextInboundMessage(message.message),
1791
1791
  tag: "plaintext",
1792
1792
  },
1793
1793
  ],
@@ -1814,6 +1814,36 @@ function encodePlaintextConversationMessage(text) {
1814
1814
  const textBytes = Buffer.from(text, "utf8");
1815
1815
  return Buffer.from([0x0a, ...encodeVarint(textBytes.byteLength), ...textBytes]);
1816
1816
  }
1817
+ function encodePlaintextInboundMessage(message) {
1818
+ if (message.audioMessage) {
1819
+ return encodePlaintextAudioMessage(message.audioMessage);
1820
+ }
1821
+ return encodePlaintextConversationMessage(message.conversation);
1822
+ }
1823
+ function encodePlaintextAudioMessage(audio) {
1824
+ const fields = [
1825
+ encodeLengthDelimitedProtobufField(1, Buffer.from(audio.url, "utf8")),
1826
+ encodeLengthDelimitedProtobufField(2, Buffer.from(audio.mimetype, "utf8")),
1827
+ encodeLengthDelimitedProtobufField(3, audio.fileSha256),
1828
+ encodeVarintProtobufField(4, audio.fileLength),
1829
+ ...(audio.seconds === undefined ? [] : [encodeVarintProtobufField(5, audio.seconds)]),
1830
+ encodeVarintProtobufField(6, audio.ptt ? 1 : 0),
1831
+ encodeLengthDelimitedProtobufField(7, audio.mediaKey),
1832
+ encodeLengthDelimitedProtobufField(8, audio.fileEncSha256),
1833
+ encodeVarintProtobufField(10, audio.mediaKeyTimestamp),
1834
+ ];
1835
+ return encodeLengthDelimitedProtobufField(8, Buffer.concat(fields));
1836
+ }
1837
+ function encodeLengthDelimitedProtobufField(fieldNumber, value) {
1838
+ return Buffer.concat([
1839
+ Buffer.from(encodeVarint((fieldNumber << 3) | 2)),
1840
+ Buffer.from(encodeVarint(value.byteLength)),
1841
+ Buffer.from(value),
1842
+ ]);
1843
+ }
1844
+ function encodeVarintProtobufField(fieldNumber, value) {
1845
+ return Buffer.from([...encodeVarint(fieldNumber << 3), ...encodeVarint(value)]);
1846
+ }
1817
1847
  function encodeVarint(value) {
1818
1848
  const bytes = [];
1819
1849
  let remaining = value;