@wirecat/whatsapp-cli 0.0.0-stage → 0.2.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.
Files changed (134) hide show
  1. package/LICENSE +204 -0
  2. package/README.md +401 -2
  3. package/dist/adapter/adapter.d.ts +13 -0
  4. package/dist/adapter/adapter.d.ts.map +1 -0
  5. package/dist/adapter/adapter.js +554 -0
  6. package/dist/adapter/adapter.js.map +1 -0
  7. package/dist/adapter/channels.d.ts +43 -0
  8. package/dist/adapter/channels.d.ts.map +1 -0
  9. package/dist/adapter/channels.js +100 -0
  10. package/dist/adapter/channels.js.map +1 -0
  11. package/dist/adapter/checks.d.ts +6 -0
  12. package/dist/adapter/checks.d.ts.map +1 -0
  13. package/dist/adapter/checks.js +2 -0
  14. package/dist/adapter/checks.js.map +1 -0
  15. package/dist/adapter/errors.d.ts +13 -0
  16. package/dist/adapter/errors.d.ts.map +1 -0
  17. package/dist/adapter/errors.js +38 -0
  18. package/dist/adapter/errors.js.map +1 -0
  19. package/dist/adapter/format-markdown.d.ts +8 -0
  20. package/dist/adapter/format-markdown.d.ts.map +1 -0
  21. package/dist/adapter/format-markdown.js +80 -0
  22. package/dist/adapter/format-markdown.js.map +1 -0
  23. package/dist/adapter/groups.d.ts +25 -0
  24. package/dist/adapter/groups.d.ts.map +1 -0
  25. package/dist/adapter/groups.js +252 -0
  26. package/dist/adapter/groups.js.map +1 -0
  27. package/dist/adapter/map.d.ts +23 -0
  28. package/dist/adapter/map.d.ts.map +1 -0
  29. package/dist/adapter/map.js +121 -0
  30. package/dist/adapter/map.js.map +1 -0
  31. package/dist/adapter/pins.d.ts +11 -0
  32. package/dist/adapter/pins.d.ts.map +1 -0
  33. package/dist/adapter/pins.js +10 -0
  34. package/dist/adapter/pins.js.map +1 -0
  35. package/dist/adapter/polls.d.ts +21 -0
  36. package/dist/adapter/polls.d.ts.map +1 -0
  37. package/dist/adapter/polls.js +103 -0
  38. package/dist/adapter/polls.js.map +1 -0
  39. package/dist/adapter/privacy.d.ts +18 -0
  40. package/dist/adapter/privacy.d.ts.map +1 -0
  41. package/dist/adapter/privacy.js +94 -0
  42. package/dist/adapter/privacy.js.map +1 -0
  43. package/dist/adapter/settings.d.ts +21 -0
  44. package/dist/adapter/settings.d.ts.map +1 -0
  45. package/dist/adapter/settings.js +76 -0
  46. package/dist/adapter/settings.js.map +1 -0
  47. package/dist/app.d.ts +6 -0
  48. package/dist/app.d.ts.map +1 -0
  49. package/dist/app.js +16 -0
  50. package/dist/app.js.map +1 -0
  51. package/dist/bin/wa.d.ts +3 -0
  52. package/dist/bin/wa.d.ts.map +1 -0
  53. package/dist/bin/wa.js +14 -0
  54. package/dist/bin/wa.js.map +1 -0
  55. package/dist/commands/session.d.ts +48 -0
  56. package/dist/commands/session.d.ts.map +1 -0
  57. package/dist/commands/session.js +201 -0
  58. package/dist/commands/session.js.map +1 -0
  59. package/dist/commands/setup.d.ts +3 -0
  60. package/dist/commands/setup.d.ts.map +1 -0
  61. package/dist/commands/setup.js +140 -0
  62. package/dist/commands/setup.js.map +1 -0
  63. package/dist/commands/update.d.ts +2 -0
  64. package/dist/commands/update.d.ts.map +1 -0
  65. package/dist/commands/update.js +17 -0
  66. package/dist/commands/update.js.map +1 -0
  67. package/dist/diagnose.d.ts +77 -0
  68. package/dist/diagnose.d.ts.map +1 -0
  69. package/dist/diagnose.js +84 -0
  70. package/dist/diagnose.js.map +1 -0
  71. package/dist/engine/channels.d.ts +100 -0
  72. package/dist/engine/channels.d.ts.map +1 -0
  73. package/dist/engine/channels.js +29 -0
  74. package/dist/engine/channels.js.map +1 -0
  75. package/dist/engine/contract.d.ts +1049 -0
  76. package/dist/engine/contract.d.ts.map +1 -0
  77. package/dist/engine/contract.js +353 -0
  78. package/dist/engine/contract.js.map +1 -0
  79. package/dist/engine/events.d.ts +9 -0
  80. package/dist/engine/events.d.ts.map +1 -0
  81. package/dist/engine/events.js +23 -0
  82. package/dist/engine/events.js.map +1 -0
  83. package/dist/engine/go-engine.d.ts +23 -0
  84. package/dist/engine/go-engine.d.ts.map +1 -0
  85. package/dist/engine/go-engine.js +227 -0
  86. package/dist/engine/go-engine.js.map +1 -0
  87. package/dist/engine/groups.d.ts +171 -0
  88. package/dist/engine/groups.d.ts.map +1 -0
  89. package/dist/engine/groups.js +66 -0
  90. package/dist/engine/groups.js.map +1 -0
  91. package/dist/engine/privacy.d.ts +33 -0
  92. package/dist/engine/privacy.d.ts.map +1 -0
  93. package/dist/engine/privacy.js +23 -0
  94. package/dist/engine/privacy.js.map +1 -0
  95. package/dist/engine/settings.d.ts +45 -0
  96. package/dist/engine/settings.d.ts.map +1 -0
  97. package/dist/engine/settings.js +34 -0
  98. package/dist/engine/settings.js.map +1 -0
  99. package/dist/engine-binary.d.ts +5 -0
  100. package/dist/engine-binary.d.ts.map +1 -0
  101. package/dist/engine-binary.js +18 -0
  102. package/dist/engine-binary.js.map +1 -0
  103. package/dist/install/postinstall.d.ts +8 -0
  104. package/dist/install/postinstall.d.ts.map +1 -0
  105. package/dist/install/postinstall.js +63 -0
  106. package/dist/install/postinstall.js.map +1 -0
  107. package/dist/messenger.d.ts +63 -0
  108. package/dist/messenger.d.ts.map +1 -0
  109. package/dist/messenger.js +186 -0
  110. package/dist/messenger.js.map +1 -0
  111. package/dist/paths.d.ts +5 -0
  112. package/dist/paths.d.ts.map +1 -0
  113. package/dist/paths.js +7 -0
  114. package/dist/paths.js.map +1 -0
  115. package/dist/program.d.ts +12 -0
  116. package/dist/program.d.ts.map +1 -0
  117. package/dist/program.js +86 -0
  118. package/dist/program.js.map +1 -0
  119. package/dist/reasons.d.ts +4 -0
  120. package/dist/reasons.d.ts.map +1 -0
  121. package/dist/reasons.js +21 -0
  122. package/dist/reasons.js.map +1 -0
  123. package/dist/update.d.ts +7 -0
  124. package/dist/update.d.ts.map +1 -0
  125. package/dist/update.js +19 -0
  126. package/dist/update.js.map +1 -0
  127. package/dist/version.d.ts +2 -0
  128. package/dist/version.d.ts.map +1 -0
  129. package/dist/version.js +2 -0
  130. package/dist/version.js.map +1 -0
  131. package/install/postinstall.mjs +3 -0
  132. package/install/windows.ps1 +161 -0
  133. package/package.json +89 -4
  134. package/skills/whatsapp-cli/SKILL.md +325 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/engine/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,353 @@
1
+ import * as v from "valibot";
2
+ /**
3
+ * What the engine and the adapter say to each other, in WhatsApp's own terms. The Go engine speaks it as JSON
4
+ * lines; `FakeEngine` speaks it in memory. Bump `PROTOCOL` on any change an older peer would misread — the
5
+ * adapter refuses an engine whose hello names another version.
6
+ *
7
+ * Ids are JIDs as strings. A one-to-one chat is always in its LID form (`…@lid`) when WhatsApp has one for the
8
+ * user, never in phone form: cli-core cannot merge two stored chats, so the engine picks the one id before it
9
+ * emits a chat (cli-private plans/2026-10-16-whatsapp-foundation.md, decision 3). Names are what the address book or the
10
+ * person set; a phone number is never a name.
11
+ */
12
+ export const PROTOCOL = 41;
13
+ /**
14
+ * Every request the engine answers. A write changes something on WhatsApp or sends something: cut by a dropped
15
+ * connection or the engine's end, it may have gone through, so it answers `outcome_unknown`, never a retryable error
16
+ * (WC-LIFE-9). The engine's `writes` (engine/cmd/wa-engine/errors.go) must name the same writes; its tests check
17
+ * that and that it dispatches exactly these ops.
18
+ */
19
+ export const ENGINE_OPS = {
20
+ send: "write",
21
+ sendMedia: "write",
22
+ sendAlbum: "write",
23
+ forward: "write",
24
+ edit: "write",
25
+ revoke: "write",
26
+ react: "write",
27
+ read: "write",
28
+ createPoll: "write",
29
+ vote: "write",
30
+ pin: "write",
31
+ unpin: "write",
32
+ createGroup: "write",
33
+ join: "write",
34
+ leave: "write",
35
+ updateGroup: "write",
36
+ setGroupPhoto: "write",
37
+ resetLink: "write",
38
+ participants: "write",
39
+ answerRequest: "write",
40
+ block: "write",
41
+ setPrivacy: "write",
42
+ mute: "write",
43
+ updateProfile: "write",
44
+ deleteChat: "write",
45
+ clearChat: "write",
46
+ deleteForMe: "write",
47
+ star: "write",
48
+ archiveChat: "write",
49
+ unarchiveChat: "write",
50
+ pinChat: "write",
51
+ unpinChat: "write",
52
+ markChatRead: "write",
53
+ markChatUnread: "write",
54
+ followChannel: "write",
55
+ unfollowChannel: "write",
56
+ logout: "write",
57
+ connect: "read",
58
+ close: "read",
59
+ // A cut pairing is abandoned: a retry asks WhatsApp for a new code, and nobody else sees either.
60
+ link: "read",
61
+ me: "read",
62
+ directory: "read",
63
+ chat: "read",
64
+ download: "read",
65
+ // Asks the owner's own phone for older messages; asking twice only sends the same history again.
66
+ older: "read",
67
+ group: "read",
68
+ requests: "read",
69
+ profile: "read",
70
+ lookup: "read",
71
+ contacts: "read",
72
+ privacy: "read",
73
+ channel: "read",
74
+ channelMessages: "read",
75
+ // Records the store's phone-form chats in the engine's own table; nothing reaches WhatsApp.
76
+ storedChats: "read",
77
+ // Reads whatsmeow's LID map for a typed phone-form chat; nothing reaches WhatsApp.
78
+ canonicalChat: "read",
79
+ };
80
+ export const isWrite = (op) => ENGINE_OPS[op] === "write";
81
+ const jid = v.pipe(v.string(), v.includes("@"));
82
+ const time = v.pipe(v.string(), v.isoTimestamp());
83
+ export const waChat = v.strictObject({
84
+ jid,
85
+ /**
86
+ * `unread` and `lastMessageAt` are absent when the source does not say. Only a notice, such as a group leaving its
87
+ * community, leaves out `name` and `participants`: a pushed chat keeps the stored value of whatever is absent.
88
+ */
89
+ name: v.optional(v.nullable(v.string())),
90
+ kind: v.picklist(["dm", "self", "group", "newsletter", "broadcast"]),
91
+ unread: v.optional(v.nullable(v.number())),
92
+ lastMessageAt: v.optional(v.nullable(time)),
93
+ participants: v.optional(v.nullable(v.number())),
94
+ archived: v.optional(v.boolean()),
95
+ muted: v.optional(v.boolean()),
96
+ /** The community a group is linked to; `null` when a live read says it is in none, absent when nothing said. */
97
+ parent: v.optional(v.nullable(jid)),
98
+ /** A community itself: a group that holds other groups. */
99
+ community: v.optional(v.literal(true)),
100
+ /**
101
+ * `left` when WhatsApp said the owner left the group or was removed, `member` when it said the owner was added back;
102
+ * never `null`, which clears `archived` too.
103
+ */
104
+ membershipState: v.optional(v.picklist(["left", "member"])),
105
+ });
106
+ export const waContact = v.strictObject({ jid, name: v.nullable(v.string()) });
107
+ /**
108
+ * What whatsmeow needs to fetch and decrypt a file again, base64 where it is bytes. Stored as the attachment's opaque
109
+ * `providerRef`, so a download or a forward needs only the store. A channel's files are not encrypted and have no keys.
110
+ */
111
+ export const waMediaRef = v.strictObject({
112
+ media: v.picklist(["image", "video", "audio", "document", "sticker"]),
113
+ directPath: v.pipe(v.string(), v.nonEmpty()),
114
+ mediaKey: v.optional(v.string()),
115
+ fileSha256: v.optional(v.string()),
116
+ fileEncSha256: v.optional(v.string()),
117
+ /** The upload's URL: a phone does not show a photo or a video whose message lacks it. */
118
+ url: v.optional(v.string()),
119
+ mediaKeyTimestamp: v.optional(v.number()),
120
+ });
121
+ /**
122
+ * A download's answer: the new path when the phone had to upload the file again, `null` when WhatsApp still kept it.
123
+ * The key stays that of the stored ref; the checksums come too when the phone encrypted the file again.
124
+ */
125
+ export const waDownloaded = v.nullable(v.strictObject({
126
+ directPath: v.pipe(v.string(), v.nonEmpty()),
127
+ fileSha256: v.optional(v.string()),
128
+ fileEncSha256: v.optional(v.string()),
129
+ }));
130
+ /** A place as its message carried it, kept so a forward sends it again; `geo:` in `url` rounds the coordinates. */
131
+ export const waPlaceRef = v.strictObject({
132
+ place: v.strictObject({
133
+ latitude: v.number(),
134
+ longitude: v.number(),
135
+ name: v.optional(v.string()),
136
+ address: v.optional(v.string()),
137
+ url: v.optional(v.string()),
138
+ }),
139
+ });
140
+ /**
141
+ * A contact card as its message carried it, kept so a forward sends it again. The vCard holds a phone number: it
142
+ * stays in the opaque `providerRef`, which cli-core never prints, and never reaches a log or an error.
143
+ */
144
+ export const waCardRef = v.strictObject({ card: v.strictObject({ name: v.string(), vcard: v.string() }) });
145
+ /**
146
+ * cli-core's Attachment in WhatsApp's terms: `photo`, `video`, `voice`, `audio`, `document`, `sticker`, `location`
147
+ * (`url` is a `geo:` link), `contact` (its name; the card itself only in `ref`). `ref` is a file's keys, or what a
148
+ * place or a contact card needs to be sent again; a live location has none.
149
+ */
150
+ export const waAttachment = v.strictObject({
151
+ kind: v.picklist(["photo", "video", "voice", "audio", "document", "sticker", "location", "contact"]),
152
+ url: v.optional(v.string()),
153
+ width: v.optional(v.number()),
154
+ height: v.optional(v.number()),
155
+ title: v.optional(v.string()),
156
+ name: v.optional(v.string()),
157
+ size: v.optional(v.number()),
158
+ mime: v.optional(v.string()),
159
+ duration: v.optional(v.number()),
160
+ ref: v.optional(v.union([waMediaRef, waPlaceRef, waCardRef])),
161
+ });
162
+ /**
163
+ * A poll as its message carries it. An answer's `id` is the start of the SHA-256 of its text, which is what a vote
164
+ * names on the wire. Votes arrive later, live as `vote` events or in a history push's `votes`; cli-core's store
165
+ * counts them.
166
+ */
167
+ export const waPoll = v.strictObject({
168
+ question: v.string(),
169
+ answers: v.array(v.strictObject({ id: v.pipe(v.string(), v.nonEmpty()), text: v.string() })),
170
+ multiple: v.boolean(),
171
+ });
172
+ export const waMessage = v.strictObject({
173
+ id: v.pipe(v.string(), v.nonEmpty()),
174
+ chat: jid,
175
+ sender: v.nullable(jid),
176
+ senderName: v.nullable(v.string()),
177
+ fromMe: v.boolean(),
178
+ timestamp: time,
179
+ editedAt: v.nullable(time),
180
+ text: v.string(),
181
+ replyTo: v.nullable(v.string()),
182
+ attachments: v.optional(v.array(waAttachment)),
183
+ poll: v.optional(waPoll),
184
+ /** Only ever `true`, on a pushed message the owner starred: a push may be older than a star taken off since. */
185
+ starred: v.optional(v.literal(true)),
186
+ /** A channel post's number on WhatsApp's servers: a channel's history is read back from it. */
187
+ serverId: v.optional(v.number()),
188
+ });
189
+ /**
190
+ * One person's newest choice in a poll: `selected` is the full SHA-256 of each chosen answer's text, and none takes
191
+ * the vote back. `voter` is in LID form like a sender, and the account's own vote is under `self()`. A vote in a
192
+ * history push carries its `poll`, since the push may not hold that poll; a live `vote` event has none. `votedAt` is
193
+ * when the voter cast it, by WhatsApp's clock: the store keeps a voter's newest vote by it.
194
+ */
195
+ export const waVote = v.strictObject({
196
+ chat: jid,
197
+ message: v.pipe(v.string(), v.nonEmpty()),
198
+ voter: jid,
199
+ voterName: v.nullable(v.string()),
200
+ selected: v.array(v.string()),
201
+ votedAt: time,
202
+ poll: v.optional(waPoll),
203
+ });
204
+ /**
205
+ * A one-to-one chat the engine emitted before in phone form (`from`), now named by its person's LID (`to`). The store
206
+ * moves the old chat to the new id before anything under the new id lands. The engine repeats a re-key for a while,
207
+ * since the CLI may not have been listening; a repeat changes nothing.
208
+ */
209
+ export const waRekey = v.strictObject({ from: jid, to: jid });
210
+ /**
211
+ * Who joined, left, was added, removed, promoted or demoted in a group, or its new title, live or from the group's
212
+ * service message in a history push. WhatsApp gives a live change no id, so `id` is derived from the chat, the time in
213
+ * seconds, the action and the sorted people: both paths give one change the same id, and the store keeps it once.
214
+ * `by` and `people` are in LID form like a sender; `by` is `null` where WhatsApp did not say who.
215
+ */
216
+ export const waChatEvent = v.strictObject({
217
+ chat: jid,
218
+ id: v.pipe(v.string(), v.nonEmpty()),
219
+ timestamp: time,
220
+ event: v.picklist(["join", "leave", "add", "remove", "promote", "demote", "title"]),
221
+ by: v.nullable(jid),
222
+ byName: v.nullable(v.string()),
223
+ people: v.array(waContact),
224
+ title: v.optional(v.string()),
225
+ });
226
+ /**
227
+ * One push from the phone. `kind` follows whatsmeow's sync types; the adapter treats them all alike. `votes` are the
228
+ * votes in the pushed polls, which the store saves with the push, not as `vote` events. `events` are the groups'
229
+ * service messages in the push, which come as no message. `rekeys` apply first.
230
+ */
231
+ export const waHistory = v.strictObject({
232
+ kind: v.picklist(["bootstrap", "recent", "full", "on_demand", "push_name", "other"]),
233
+ chats: v.array(waChat),
234
+ contacts: v.array(waContact),
235
+ messages: v.array(waMessage),
236
+ votes: v.array(waVote),
237
+ rekeys: v.optional(v.array(waRekey)),
238
+ events: v.optional(v.array(waChatEvent)),
239
+ });
240
+ /**
241
+ * The phone's answer to `older`: the chat's messages sent before the anchor, as many as were asked or fewer. No
242
+ * messages and `more: false` is the chat's start. The engine never answers no messages with `more: true`: a batch of
243
+ * only messages the contract skips is asked past, since cli-core reads any empty page as the start.
244
+ */
245
+ export const waOlder = v.strictObject({ messages: v.array(waMessage), more: v.boolean() });
246
+ /** `outdated`: WhatsApp refuses this engine's version. `stopped`: the engine process ended without being asked. */
247
+ export const connectionState = v.picklist([
248
+ "connected",
249
+ "disconnected",
250
+ "logged_out",
251
+ "replaced",
252
+ "banned",
253
+ "outdated",
254
+ "stopped",
255
+ ]);
256
+ export const engineEvent = v.variant("event", [
257
+ v.strictObject({ event: v.literal("history"), history: waHistory }),
258
+ v.strictObject({ event: v.literal("message"), message: waMessage }),
259
+ v.strictObject({ event: v.literal("edit"), message: waMessage }),
260
+ v.strictObject({ event: v.literal("delete"), chat: jid, id: v.string() }),
261
+ v.strictObject({ event: v.literal("vote"), vote: waVote }),
262
+ v.strictObject({ event: v.literal("chat_event"), change: waChatEvent }),
263
+ /** The owner starred a message or took the star off on another device. */
264
+ v.strictObject({ event: v.literal("star"), chat: jid, id: v.pipe(v.string(), v.nonEmpty()), starred: v.boolean() }),
265
+ /** A re-key outside a history push, sent before the first message under the new id. */
266
+ v.strictObject({ event: v.literal("rekey"), ...waRekey.entries }),
267
+ /** `until`: when a temporary ban ends, if WhatsApp said. */
268
+ v.strictObject({ event: v.literal("connection"), state: connectionState, until: v.optional(time) }),
269
+ ]);
270
+ export const engineErrorCode = v.picklist([
271
+ "validation_error",
272
+ "authentication_error",
273
+ "permission_error",
274
+ "not_found",
275
+ "rate_limited",
276
+ "timeout",
277
+ "network_error",
278
+ "provider_error",
279
+ "provider_unavailable",
280
+ "outcome_unknown",
281
+ ]);
282
+ /**
283
+ * Why, for the refusals an agent recovers from differently than their code says: another process holds the device
284
+ * (`device.in-use`), WhatsApp handed the login to another connection (`device.replaced`), logged the device out, refuses
285
+ * this version (`client.outdated`), banned the account, or asked it to slow down (`account.rate-limited`, never the
286
+ * engine's own lookup pace), or has not yet sent the keys a settings change is sealed with (`settings.keys-missing`).
287
+ * A download WhatsApp no longer keeps the file for says how asking the phone to upload it again ended (`media.*`), or
288
+ * that the engine stopped while it waited (`engine.stopped`). The CLI registers each one (`src/reasons.ts`).
289
+ */
290
+ export const engineReason = v.picklist([
291
+ "device.in-use",
292
+ "device.replaced",
293
+ "device.logged-out",
294
+ "client.outdated",
295
+ "account.banned",
296
+ "account.rate-limited",
297
+ "settings.keys-missing",
298
+ "media.not-on-phone",
299
+ "media.phone-cannot-decrypt",
300
+ "media.phone-answer-unreadable",
301
+ "media.phone-failed",
302
+ "media.phone-timeout",
303
+ "media.retry-failed",
304
+ "engine.stopped",
305
+ ]);
306
+ export const engineError = v.strictObject({
307
+ code: engineErrorCode,
308
+ message: v.string(),
309
+ reason: v.optional(engineReason),
310
+ /** When a temporary ban ends, if WhatsApp said. */
311
+ until: v.optional(time),
312
+ });
313
+ /** The engine's first line: its protocol and the linked account (`self()`), or `null` before a login. */
314
+ export const hello = v.strictObject({
315
+ protocol: v.number(),
316
+ engine: v.string(),
317
+ version: v.string(),
318
+ self: v.nullable(jid),
319
+ });
320
+ export const waAccount = v.strictObject({ jid, name: v.nullable(v.string()) });
321
+ export const waChatCard = v.strictObject({ chat: waChat, members: v.nullable(v.array(waContact)) });
322
+ /**
323
+ * A code to show while linking: `qr` is the text of a QR code to draw, `pair` the eight characters to type on the
324
+ * phone. Either one links the account for as long as it is valid, so it is shown and never stored or logged.
325
+ */
326
+ export const loginCode = v.strictObject({ login: v.picklist(["qr", "pair"]), code: v.pipe(v.string(), v.nonEmpty()) });
327
+ /** A message key as the engine reads it from a request. */
328
+ export const keyFields = ({ chat, id, fromMe, sender }) => ({
329
+ chat,
330
+ message: id,
331
+ fromMe,
332
+ ...(sender === null ? {} : { sender }),
333
+ });
334
+ /** The most messages one `older` request asks the phone for, as WhatsApp's own clients ask. */
335
+ export const OLDER_MAX = 50;
336
+ /**
337
+ * A refusal from the engine, already in the closed list of codes. Its message is fixed wording: it never repeats a
338
+ * chat name, a JID or anything typed, since errors reach logs and run records.
339
+ */
340
+ export class EngineError extends Error {
341
+ code;
342
+ reason;
343
+ until;
344
+ constructor(code, message, reason,
345
+ /** When a temporary ban ends, if WhatsApp said. */
346
+ until) {
347
+ super(message);
348
+ this.code = code;
349
+ this.reason = reason;
350
+ this.until = until;
351
+ }
352
+ }
353
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/engine/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { EngineEvent } from "./contract.js";
2
+ type Kind = EngineEvent["event"];
3
+ /** Fans events out by kind, and keeps each one nobody listens for until a listener of its kind arrives. */
4
+ export declare const eventHub: () => {
5
+ emit: (event: EngineEvent) => void;
6
+ listen: (kinds: readonly Kind[], onEvent: (event: EngineEvent) => void) => (() => void);
7
+ };
8
+ export {};
9
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/engine/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,KAAK,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAOhC,2GAA2G;AAC3G,eAAO,MAAM,QAAQ;kBAIE,WAAW,KAAG,IAAI;oBAMhB,SAAS,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC;CAU7F,CAAA"}
@@ -0,0 +1,23 @@
1
+ /** Fans events out by kind, and keeps each one nobody listens for until a listener of its kind arrives. */
2
+ export const eventHub = () => {
3
+ const listeners = new Set();
4
+ let kept = [];
5
+ const emit = (event) => {
6
+ const takers = [...listeners].filter((listener) => listener.kinds.has(event.event));
7
+ if (takers.length === 0)
8
+ kept.push(event);
9
+ for (const listener of takers)
10
+ listener.onEvent(event);
11
+ };
12
+ const listen = (kinds, onEvent) => {
13
+ const listener = { kinds: new Set(kinds), onEvent };
14
+ listeners.add(listener);
15
+ const mine = kept.filter((event) => listener.kinds.has(event.event));
16
+ kept = kept.filter((event) => !listener.kinds.has(event.event));
17
+ for (const event of mine)
18
+ onEvent(event);
19
+ return () => listeners.delete(listener);
20
+ };
21
+ return { emit, listen };
22
+ };
23
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/engine/events.ts"],"names":[],"mappings":"AASA,2GAA2G;AAC3G,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAY,CAAA;IACrC,IAAI,IAAI,GAAkB,EAAE,CAAA;IAE5B,MAAM,IAAI,GAAG,CAAC,KAAkB,EAAQ,EAAE;QACxC,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QACnF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzC,KAAK,MAAM,QAAQ,IAAI,MAAM;YAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACxD,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,KAAsB,EAAE,OAAqC,EAAgB,EAAE;QAC7F,MAAM,QAAQ,GAAa,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;QAC7D,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QACpE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QAC/D,KAAK,MAAM,KAAK,IAAI,IAAI;YAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACxC,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC,CAAA;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;AACzB,CAAC,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { type WhatsAppEngine } from "./contract.js";
2
+ export interface GoEngineOptions {
3
+ /** The profile's `private.db`. */
4
+ storePath: string;
5
+ /** Who holds the connection — `serve`, `messages send` — named to anyone the lock refuses. */
6
+ holder: string;
7
+ /** Allows an empty store: this run links a new device. */
8
+ link?: boolean;
9
+ env?: NodeJS.ProcessEnv;
10
+ /** The engine's own diagnostics, fixed wording only. */
11
+ warn?: (line: string) => void;
12
+ /** Tests run a stand-in: the program, and the arguments before the engine's own. */
13
+ command?: {
14
+ file: string;
15
+ args: string[];
16
+ };
17
+ }
18
+ /**
19
+ * Runs the Go engine as a child process and speaks JSON lines with it. It starts the engine and waits for its hello;
20
+ * a refusal there (the lock is held, the profile is not linked) rejects with the engine's own code and wording.
21
+ */
22
+ export declare const startGoEngine: (options: GoEngineOptions) => Promise<WhatsAppEngine>;
23
+ //# sourceMappingURL=go-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go-engine.d.ts","sourceRoot":"","sources":["../../src/engine/go-engine.ts"],"names":[],"mappings":"AAKA,OAAO,EAaL,KAAK,cAAc,EAOpB,MAAM,eAAe,CAAA;AAMtB,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,wDAAwD;IACxD,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,oFAAoF;IACpF,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAC3C;AA4BD;;;GAGG;AACH,eAAO,MAAM,aAAa,YAAmB,eAAe,KAAG,OAAO,CAAC,cAAc,CAkMpF,CAAA"}