@wirecat/whatsapp-cli 0.4.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -3
- package/dist/adapter/adapter.d.ts +4 -2
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +20 -406
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/channels.d.ts.map +1 -1
- package/dist/adapter/channels.js.map +1 -1
- package/dist/adapter/comments.d.ts +5 -0
- package/dist/adapter/comments.d.ts.map +1 -0
- package/dist/adapter/comments.js +14 -0
- package/dist/adapter/comments.js.map +1 -0
- package/dist/adapter/discovery.d.ts +5 -0
- package/dist/adapter/discovery.d.ts.map +1 -0
- package/dist/adapter/discovery.js +28 -0
- package/dist/adapter/discovery.js.map +1 -0
- package/dist/adapter/errors.d.ts +1 -1
- package/dist/adapter/errors.d.ts.map +1 -1
- package/dist/adapter/errors.js +4 -2
- package/dist/adapter/errors.js.map +1 -1
- package/dist/adapter/groups.d.ts.map +1 -1
- package/dist/adapter/groups.js +1 -1
- package/dist/adapter/groups.js.map +1 -1
- package/dist/adapter/listen.d.ts +11 -0
- package/dist/adapter/listen.d.ts.map +1 -0
- package/dist/adapter/listen.js +264 -0
- package/dist/adapter/listen.js.map +1 -0
- package/dist/adapter/map.d.ts +1 -1
- package/dist/adapter/map.d.ts.map +1 -1
- package/dist/adapter/map.js +13 -22
- package/dist/adapter/map.js.map +1 -1
- package/dist/adapter/polls.d.ts +2 -1
- package/dist/adapter/polls.d.ts.map +1 -1
- package/dist/adapter/polls.js +14 -3
- package/dist/adapter/polls.js.map +1 -1
- package/dist/adapter/privacy.d.ts.map +1 -1
- package/dist/adapter/privacy.js +26 -11
- package/dist/adapter/privacy.js.map +1 -1
- package/dist/adapter/sends.d.ts +14 -0
- package/dist/adapter/sends.d.ts.map +1 -0
- package/dist/adapter/sends.js +156 -0
- package/dist/adapter/sends.js.map +1 -0
- package/dist/adapter/settings.js +4 -1
- package/dist/adapter/settings.js.map +1 -1
- package/dist/app.d.ts +8 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +20 -1
- package/dist/app.js.map +1 -1
- package/dist/bot/adapter.d.ts +18 -0
- package/dist/bot/adapter.d.ts.map +1 -0
- package/dist/bot/adapter.js +74 -0
- package/dist/bot/adapter.js.map +1 -0
- package/dist/bot/generated/definitions.d.ts +3 -0
- package/dist/bot/generated/definitions.d.ts.map +1 -0
- package/dist/bot/generated/definitions.js +9254 -0
- package/dist/bot/generated/definitions.js.map +1 -0
- package/dist/bot/generated/manifest.d.ts +3 -0
- package/dist/bot/generated/manifest.d.ts.map +1 -0
- package/dist/bot/generated/manifest.js +2614 -0
- package/dist/bot/generated/manifest.js.map +1 -0
- package/dist/bot/generated/schemas.d.ts +803 -0
- package/dist/bot/generated/schemas.d.ts.map +1 -0
- package/dist/bot/generated/schemas.js +3052 -0
- package/dist/bot/generated/schemas.js.map +1 -0
- package/dist/bot/generated/types.d.ts +3439 -0
- package/dist/bot/generated/types.d.ts.map +1 -0
- package/dist/bot/generated/types.js +5 -0
- package/dist/bot/generated/types.js.map +1 -0
- package/dist/bot/graph.d.ts +53 -0
- package/dist/bot/graph.d.ts.map +1 -0
- package/dist/bot/graph.js +141 -0
- package/dist/bot/graph.js.map +1 -0
- package/dist/bot/messaging.d.ts +30 -0
- package/dist/bot/messaging.d.ts.map +1 -0
- package/dist/bot/messaging.js +124 -0
- package/dist/bot/messaging.js.map +1 -0
- package/dist/bot/mime.d.ts +3 -0
- package/dist/bot/mime.d.ts.map +1 -0
- package/dist/bot/mime.js +20 -0
- package/dist/bot/mime.js.map +1 -0
- package/dist/bot/webhook.d.ts +13 -0
- package/dist/bot/webhook.d.ts.map +1 -0
- package/dist/bot/webhook.js +148 -0
- package/dist/bot/webhook.js.map +1 -0
- package/dist/commands/bot-templates.d.ts +9 -0
- package/dist/commands/bot-templates.d.ts.map +1 -0
- package/dist/commands/bot-templates.js +141 -0
- package/dist/commands/bot-templates.js.map +1 -0
- package/dist/commands/bot.d.ts +14 -0
- package/dist/commands/bot.d.ts.map +1 -0
- package/dist/commands/bot.js +208 -0
- package/dist/commands/bot.js.map +1 -0
- package/dist/commands/session.d.ts +0 -44
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +15 -141
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +9 -8
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/update.d.ts +2 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/diagnose.d.ts +6 -41
- package/dist/diagnose.d.ts.map +1 -1
- package/dist/diagnose.js.map +1 -1
- package/dist/engine/channels.d.ts +1 -0
- package/dist/engine/channels.d.ts.map +1 -1
- package/dist/engine/contract.d.ts +32 -2
- package/dist/engine/contract.d.ts.map +1 -1
- package/dist/engine/contract.js +9 -1
- package/dist/engine/contract.js.map +1 -1
- package/dist/engine/discovery.d.ts +34 -0
- package/dist/engine/discovery.d.ts.map +1 -0
- package/dist/engine/discovery.js +22 -0
- package/dist/engine/discovery.js.map +1 -0
- package/dist/engine/events.d.ts +1 -1
- package/dist/engine/events.d.ts.map +1 -1
- package/dist/engine/events.js.map +1 -1
- package/dist/engine/go-engine.d.ts.map +1 -1
- package/dist/engine/go-engine.js +4 -0
- package/dist/engine/go-engine.js.map +1 -1
- package/dist/messenger.d.ts +4 -1
- package/dist/messenger.d.ts.map +1 -1
- package/dist/messenger.js +8 -10
- package/dist/messenger.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +8 -2
- package/dist/program.js.map +1 -1
- package/dist/session.d.ts +56 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +136 -0
- package/dist/session.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +16 -11
- package/skills/whatsapp-cli/SKILL.md +16 -13
|
@@ -1,48 +1,4 @@
|
|
|
1
|
-
import { type MessengerContext } from "@wirecat/cli-core/cli";
|
|
2
1
|
import { Command } from "commander";
|
|
3
|
-
/**
|
|
4
|
-
* Shown once, before the code that links the device. It ignores `--quiet` the way the QR code does: it belongs to
|
|
5
|
-
* the prompt the person is answering, and after the link it is too late to read it.
|
|
6
|
-
*/
|
|
7
|
-
export declare const BAN_WARNING: string;
|
|
8
|
-
/** The phone pushes its history right after linking, once; how long to keep receiving it. */
|
|
9
|
-
export declare const HISTORY_WAIT: HistoryWait;
|
|
10
|
-
/** `slowMs`: with nothing pushed by then, say once that the wait goes on, so the silence does not read as a hang. */
|
|
11
|
-
export interface HistoryWait {
|
|
12
|
-
firstMs: number;
|
|
13
|
-
quietMs: number;
|
|
14
|
-
slowMs?: number;
|
|
15
|
-
}
|
|
16
|
-
export interface Received {
|
|
17
|
-
chats: number;
|
|
18
|
-
messages: number;
|
|
19
|
-
people: number;
|
|
20
|
-
}
|
|
21
|
-
export interface StartSessionOptions {
|
|
22
|
-
method: "qr" | "phone";
|
|
23
|
-
/** The command as typed, for the messages that name it. */
|
|
24
|
-
command?: string;
|
|
25
|
-
signal?: AbortSignal;
|
|
26
|
-
/** How far the questions and the QR code sit right, to line up under a setup step. */
|
|
27
|
-
indent?: number;
|
|
28
|
-
/**
|
|
29
|
-
* Ctrl+C, a cancel or --timeout ends the history wait alone, and the command answers with what was kept. A command
|
|
30
|
-
* with steps after the wait calls `endUntilStopped()` when it returns, so those steps get a deadline again.
|
|
31
|
-
*/
|
|
32
|
-
stopEndsWait?: boolean;
|
|
33
|
-
}
|
|
34
|
-
export interface Session {
|
|
35
|
-
profile: string;
|
|
36
|
-
account: {
|
|
37
|
-
id: string;
|
|
38
|
-
name: string | null;
|
|
39
|
-
};
|
|
40
|
-
alreadyLinked: boolean;
|
|
41
|
-
/** Left out for a device linked before: nothing was pushed, so nothing was counted. */
|
|
42
|
-
received?: Received;
|
|
43
|
-
}
|
|
44
|
-
/** Links the profile's device unless it is linked already, then keeps the history the phone pushes once. */
|
|
45
|
-
export declare const startSession: (command: Command, context: MessengerContext, { method, command: typed, signal, indent: pad, stopEndsWait }: StartSessionOptions) => Promise<Session>;
|
|
46
2
|
export declare const AGENTS_LINK_BY_QR: string;
|
|
47
3
|
export declare const sessionCommand: () => Command;
|
|
48
4
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAYA,OAAO,EAAY,OAAO,EAAE,MAAM,WAAW,CAAA;AAiB7C,eAAO,MAAM,iBAAiB,QAKmE,CAAA;AAEjG,eAAO,MAAM,cAAc,QAAO,OAyDjC,CAAA"}
|
package/dist/commands/session.js
CHANGED
|
@@ -1,54 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CliError, indent, singleLine } from "@wirecat/cli-base";
|
|
1
|
+
import { singleLine } from "@wirecat/cli-base";
|
|
3
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
4
|
-
import {
|
|
5
|
-
import { asFirstWord, commandWords, environmentOf, logsInOrOut, messengerContext, printItem, REMOTE_WRITE, refuseCommandName, rootOf, secretInputOf, } from "@wirecat/cli-core/cli";
|
|
3
|
+
import { asFirstWord, commandWords, logsInOrOut, messengerContext, printItem, REMOTE_WRITE, refuseCommandName, rootOf, } from "@wirecat/cli-core/cli";
|
|
6
4
|
import { Argument, Command } from "commander";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
/**
|
|
10
|
-
* Shown once, before the code that links the device. It ignores `--quiet` the way the QR code does: it belongs to
|
|
11
|
-
* the prompt the person is answering, and after the link it is too late to read it.
|
|
12
|
-
*/
|
|
13
|
-
export const BAN_WARNING = [
|
|
14
|
-
"Before you link: wa is not an official WhatsApp app, and WhatsApp may ban an account that uses one.",
|
|
15
|
-
"It also bans accounts that send in bulk or write to people who do not know them.",
|
|
16
|
-
"wa writes only when a command asks, sends at most 30 messages an hour by default, and holds every",
|
|
17
|
-
"write when WhatsApp says to slow down or restricts the account. Never send in bulk or to strangers.",
|
|
18
|
-
].join("\n");
|
|
19
|
-
/** The phone pushes its history right after linking, once; how long to keep receiving it. */
|
|
20
|
-
export const HISTORY_WAIT = { firstMs: 120_000, quietMs: 45_000, slowMs: 20_000 };
|
|
21
|
-
/**
|
|
22
|
-
* Saves what the phone pushes until it goes quiet or `signal` aborts. Live messages that arrive meanwhile are saved
|
|
23
|
-
* too, through the same connection.
|
|
24
|
-
*/
|
|
25
|
-
const receiveHistory = async (adapter, wait, onSlow, signal) => {
|
|
26
|
-
const received = { chats: 0, messages: 0, people: 0 };
|
|
27
|
-
const stop = new AbortController();
|
|
28
|
-
const end = () => stop.abort();
|
|
29
|
-
let timer = setTimeout(end, wait.firstMs);
|
|
30
|
-
const slow = wait.slowMs === undefined ? undefined : setTimeout(onSlow, wait.slowMs);
|
|
31
|
-
signal?.addEventListener("abort", end, { once: true });
|
|
32
|
-
try {
|
|
33
|
-
await Promise.all([
|
|
34
|
-
adapter.feed?.((batch) => {
|
|
35
|
-
received.chats += batch.chats?.length ?? 0;
|
|
36
|
-
received.messages += batch.messages?.length ?? 0;
|
|
37
|
-
received.people += batch.people?.length ?? 0;
|
|
38
|
-
clearTimeout(slow);
|
|
39
|
-
clearTimeout(timer);
|
|
40
|
-
timer = setTimeout(end, wait.quietMs);
|
|
41
|
-
}, stop.signal),
|
|
42
|
-
adapter.watch?.(() => { }, stop.signal),
|
|
43
|
-
]);
|
|
44
|
-
}
|
|
45
|
-
finally {
|
|
46
|
-
clearTimeout(slow);
|
|
47
|
-
clearTimeout(timer);
|
|
48
|
-
signal?.removeEventListener("abort", end);
|
|
49
|
-
}
|
|
50
|
-
return received;
|
|
51
|
-
};
|
|
5
|
+
import { WHATSAPP } from "../messenger.js";
|
|
6
|
+
import { endSession, startSession } from "../session.js";
|
|
52
7
|
const linkedText = (profile, account, got) => {
|
|
53
8
|
const word = asFirstWord(profile);
|
|
54
9
|
const name = account.name === null ? "you" : singleLine(account.name);
|
|
@@ -61,96 +16,6 @@ const linkedText = (profile, account, got) => {
|
|
|
61
16
|
`Next: wa ${word}chats list · wa ${word}server install to keep receiving`,
|
|
62
17
|
].join("\n");
|
|
63
18
|
};
|
|
64
|
-
/** Links the profile's device unless it is linked already, then keeps the history the phone pushes once. */
|
|
65
|
-
export const startSession = async (command, context, { method, command: typed = "wa session start", signal, indent: pad = 0, stopEndsWait = false }) => {
|
|
66
|
-
const input = context.stdin;
|
|
67
|
-
const terminal = atTerminal(input);
|
|
68
|
-
const unanswerable = () => new CliError("validation_error", `${typed} asks questions — run it in a terminal`, {
|
|
69
|
-
reason: "input.required",
|
|
70
|
-
});
|
|
71
|
-
// A device that is linked already asks nothing, so only a profile without one is refused before the engine starts.
|
|
72
|
-
if (!terminal && method === "phone" && !existsSync(privateStore(context.profile, context.env)))
|
|
73
|
-
throw unanswerable();
|
|
74
|
-
const qr = loginQr({
|
|
75
|
-
diagnostic: context.streams.diagnostic,
|
|
76
|
-
note: context.renderer.note,
|
|
77
|
-
indent: pad,
|
|
78
|
-
terminal,
|
|
79
|
-
json: context.format !== "pretty",
|
|
80
|
-
});
|
|
81
|
-
const environment = environmentOf(command);
|
|
82
|
-
const linked = await linkDevice(command, context, {
|
|
83
|
-
method,
|
|
84
|
-
beforeLink: () => {
|
|
85
|
-
signal?.throwIfAborted();
|
|
86
|
-
if (!terminal && method === "phone")
|
|
87
|
-
throw unanswerable();
|
|
88
|
-
context.streams.diagnostic(indent(BAN_WARNING, pad));
|
|
89
|
-
},
|
|
90
|
-
phone: async () => {
|
|
91
|
-
if (!terminal)
|
|
92
|
-
throw new CliError("validation_error", `${typed} phone needs a terminal to ask for the number`, {
|
|
93
|
-
reason: "input.required",
|
|
94
|
-
});
|
|
95
|
-
const number = await readSecret(`${" ".repeat(pad)}phone number, international format: `, {
|
|
96
|
-
...secretInputOf(command),
|
|
97
|
-
echo: true,
|
|
98
|
-
...(signal === undefined ? {} : { signal }),
|
|
99
|
-
});
|
|
100
|
-
// WhatsApp reads the leading digits as the country code, so a number typed without one pairs someone else's.
|
|
101
|
-
if (!number.trim().startsWith("+"))
|
|
102
|
-
throw new CliError("validation_error", "write the phone number with + and the country code, such as +34", {
|
|
103
|
-
param: "phone",
|
|
104
|
-
reason: "input.invalid",
|
|
105
|
-
});
|
|
106
|
-
return number;
|
|
107
|
-
},
|
|
108
|
-
onCode: ({ login, code }) => {
|
|
109
|
-
if (login === "pair") {
|
|
110
|
-
context.renderer.note(`pairing code: ${code}\n` +
|
|
111
|
-
"On the phone: tap the WhatsApp notification, or Settings > Linked devices > Link a device >\n" +
|
|
112
|
-
"Link with phone number instead, and type the code. It expires in about two minutes.");
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
qr.show(code, "scan in WhatsApp → Settings → Linked devices → Link a device");
|
|
116
|
-
},
|
|
117
|
-
});
|
|
118
|
-
signal?.throwIfAborted();
|
|
119
|
-
const session = { profile: context.profile, account: linked.account, alreadyLinked: linked.alreadyLinked };
|
|
120
|
-
if (!linked.alreadyLinked) {
|
|
121
|
-
context.renderer.note("receiving history from the phone; keep WhatsApp open on it. Ctrl+C stops — `serve` picks up the rest.");
|
|
122
|
-
const stop = stopEndsWait ? environment.untilStopped?.() : environment.signal;
|
|
123
|
-
const ended = AbortSignal.any([signal, stop].filter((one) => one !== undefined));
|
|
124
|
-
session.received = await context.withMessenger((adapter) => receiveHistory(adapter, environment.historyWait ?? HISTORY_WAIT, () => context.renderer.note("still waiting for the phone's history — keep WhatsApp open on the phone; it can take a minute"), ended), { listen: true });
|
|
125
|
-
}
|
|
126
|
-
return session;
|
|
127
|
-
};
|
|
128
|
-
const end = async (command) => {
|
|
129
|
-
const context = messengerContext(command, WHATSAPP);
|
|
130
|
-
const store = privateStore(context.profile, context.env);
|
|
131
|
-
if (!existsSync(store)) {
|
|
132
|
-
printItem(context, { profile: context.profile, ended: false });
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
let dropped = false;
|
|
136
|
-
try {
|
|
137
|
-
await context.withMessenger((adapter) => adapter.logout());
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
if (error instanceof CliError && error.details.reason === "device.in-use")
|
|
141
|
-
throw new CliError("provider_unavailable", `${error.message} — stop it first (\`wa ${asFirstWord(context.profile)}server stop\` for serve, or Ctrl+C ` +
|
|
142
|
-
"where it runs), then end the session", { ...error.details, sent: false });
|
|
143
|
-
// The phone may have removed the device already; the keys here are then worth nothing, and still go.
|
|
144
|
-
if (!(error instanceof CliError && error.code === "authentication_error"))
|
|
145
|
-
throw error;
|
|
146
|
-
dropped = true;
|
|
147
|
-
}
|
|
148
|
-
for (const suffix of ["", "-wal", "-shm", ".lock"])
|
|
149
|
-
rmSync(`${store}${suffix}`, { force: true });
|
|
150
|
-
if (dropped)
|
|
151
|
-
context.renderer.note("WhatsApp had already dropped this device; deleted its keys here");
|
|
152
|
-
printItem(context, { profile: context.profile, ended: true });
|
|
153
|
-
};
|
|
154
19
|
export const AGENTS_LINK_BY_QR = "Agents: run `wa <profile> session start qr` in the background — it waits for the scan, and a shell tool\n" +
|
|
155
20
|
"shows nothing until it exits. Read its output and paste the QR text block into the chat as a code block,\n" +
|
|
156
21
|
"exactly as printed. WhatsApp renews the code after 60 seconds, then about every 20: paste each new block\n" +
|
|
@@ -161,6 +26,7 @@ export const sessionCommand = () => {
|
|
|
161
26
|
const session = annotate(new Command("session"), { mcp: false }).description("link this profile to WhatsApp as a device, or unlink it");
|
|
162
27
|
annotate(logsInOrOut(session.command("start")), {
|
|
163
28
|
effects: REMOTE_WRITE,
|
|
29
|
+
output: { entity: "session" },
|
|
164
30
|
lifetime: "interactive",
|
|
165
31
|
examples: ["wa personal session start", "wa personal session start phone"],
|
|
166
32
|
})
|
|
@@ -191,10 +57,18 @@ export const sessionCommand = () => {
|
|
|
191
57
|
...(session.received ? { received: session.received } : {}),
|
|
192
58
|
});
|
|
193
59
|
});
|
|
194
|
-
annotate(logsInOrOut(session.command("end")), {
|
|
60
|
+
annotate(logsInOrOut(session.command("end")), {
|
|
61
|
+
effects: REMOTE_WRITE,
|
|
62
|
+
output: { entity: "session" },
|
|
63
|
+
examples: ["wa personal session end"],
|
|
64
|
+
})
|
|
195
65
|
.description("unlink this device on WhatsApp's side and delete its keys here")
|
|
196
66
|
.action(async function () {
|
|
197
|
-
|
|
67
|
+
const context = messengerContext(this, WHATSAPP);
|
|
68
|
+
const { alreadyDropped, ...answer } = await endSession(context);
|
|
69
|
+
if (alreadyDropped)
|
|
70
|
+
context.renderer.note("WhatsApp had already dropped this device; deleted its keys here");
|
|
71
|
+
printItem(context, answer);
|
|
198
72
|
});
|
|
199
73
|
return session;
|
|
200
74
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,MAAM,GACP,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAiB,YAAY,EAAE,MAAM,eAAe,CAAA;AAEvE,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,OAAgC,EAAE,GAAyB,EAAE,EAAE;IAClG,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,OAAO;QACL,GAAG;YACD,CAAC,CAAC,aAAa,IAAI,cAAc,OAAO,GAAG;YAC3C,CAAC,CAAC,qBAAqB,IAAI,cAAc,OAAO,uBAAuB;gBACrE,QAAQ,IAAI,oCAAoC;QACpD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,KAAK,WAAW,GAAG,CAAC,QAAQ,gCAAgC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,eAAe,IAAI,mBAAmB,IAAI,kCAAkC;KAC7E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAC5B,2GAA2G;IAC3G,4GAA4G;IAC5G,4GAA4G;IAC5G,+GAA+G;IAC/G,+FAA+F,CAAA;AAEjG,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE;IAC1C,oGAAoG;IACpG,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,CAC1E,yDAAyD,CAC1D,CAAA;IAED,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;QAC9C,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;QAC7B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,CAAC,2BAA2B,EAAE,iCAAiC,CAAC;KAC3E,CAAC;SACC,WAAW,CAAC,2EAA2E,CAAC;SACxF,WAAW,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC3F,WAAW,CACV,OAAO,EACP,gGAAgG;QAC9F,gFAAgF;QAChF,yGAAyG;QACzG,cAAc;QACd,uGAAuG;QACvG,yFAAyF;QACzF,KAAK,iBAAiB,EAAE,CAC3B;SACA,MAAM,CAAC,KAAK,WAA0B,MAAsB;QAC3D,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAChD,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACpE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE;YAChD,OAAO,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe;YAC1D,MAAM;YACN,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;QACF,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ;YAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;;YAEpF,SAAS,CAAC,OAAO,EAAE;gBACjB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,cAAc,EAAE,OAAO,CAAC,aAAa;gBACrC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEJ,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QAC5C,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;QAC7B,QAAQ,EAAE,CAAC,yBAAyB,CAAC;KACtC,CAAC;SACC,WAAW,CAAC,gEAAgE,CAAC;SAC7E,MAAM,CAAC,KAAK;QACX,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAChD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;QAC/D,IAAI,cAAc;YAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;QAC5G,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAe3C,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAe3C,eAAO,MAAM,YAAY,QAAO,OA4J1B,CAAA"}
|
package/dist/commands/setup.js
CHANGED
|
@@ -8,12 +8,13 @@ import { Command, Option } from "commander";
|
|
|
8
8
|
import { WA } from "../app.js";
|
|
9
9
|
import { SKILL, WHATSAPP } from "../messenger.js";
|
|
10
10
|
import { pathsFor, privateStore } from "../paths.js";
|
|
11
|
+
import { startSession } from "../session.js";
|
|
11
12
|
import { installer, PACKAGE } from "../update.js";
|
|
12
|
-
import { startSession } from "./session.js";
|
|
13
13
|
const STEPS = 5;
|
|
14
14
|
const chatCount = (count) => `${count} ${count === 1 ? "chat" : "chats"}`;
|
|
15
15
|
export const setupCommand = () => annotate(logsInOrOut(new Command("setup")), {
|
|
16
16
|
effects: REMOTE_WRITE,
|
|
17
|
+
output: { entity: "setup" },
|
|
17
18
|
lifetime: "interactive",
|
|
18
19
|
mcp: false,
|
|
19
20
|
examples: ["wa personal setup", "wa personal setup --agent codex", "wa personal setup --agent claude --json"],
|
|
@@ -103,7 +104,7 @@ export const setupCommand = () => annotate(logsInOrOut(new Command("setup")), {
|
|
|
103
104
|
const targets = agent === "all" ? ["claude", "agents"] : [agent === "claude" ? "claude" : "agents"];
|
|
104
105
|
signal.throwIfAborted();
|
|
105
106
|
const written = agent === "none" ? [] : installSkill(WA, SKILL, { targets, env: context.env });
|
|
106
|
-
const
|
|
107
|
+
const commands = {
|
|
107
108
|
instructions: `${command}skill show`,
|
|
108
109
|
inbox: `${command}inbox --limit 5`,
|
|
109
110
|
chats: `${command}chats list --limit 5`,
|
|
@@ -115,23 +116,23 @@ export const setupCommand = () => annotate(logsInOrOut(new Command("setup")), {
|
|
|
115
116
|
profile: context.profile,
|
|
116
117
|
runtime: runtime(),
|
|
117
118
|
paths,
|
|
118
|
-
|
|
119
|
+
session: { path: devicePath, reused },
|
|
119
120
|
account: { id: account.id, name: account.name },
|
|
120
121
|
...(history ? { history } : {}),
|
|
121
122
|
chats: { checked: chats.items.length, has_more: chats.hasMore },
|
|
122
123
|
agent: { name: agent, written },
|
|
123
|
-
|
|
124
|
+
commands,
|
|
124
125
|
};
|
|
125
126
|
if (context.format !== "pretty")
|
|
126
127
|
printItem(context, answer);
|
|
127
128
|
else {
|
|
128
129
|
const rows = {
|
|
129
|
-
"Try now":
|
|
130
|
-
"Keep receiving": `${
|
|
130
|
+
"Try now": commands.inbox,
|
|
131
|
+
"Keep receiving": `${commands.receive} (a background server saves new messages)`,
|
|
131
132
|
"Agent skill": agent === "none"
|
|
132
|
-
? `skipped — install later: ${
|
|
133
|
+
? `skipped — install later: ${commands.skill}`
|
|
133
134
|
: `installed for ${agent}; start a new agent session if it is not found`,
|
|
134
|
-
"For an agent":
|
|
135
|
+
"For an agent": commands.instructions,
|
|
135
136
|
};
|
|
136
137
|
context.streams.data(`\n✓ WhatsApp is ready — profile ${context.profile}, ${chatCount(chats.items.length)} checked\n\n` +
|
|
137
138
|
indent(renderPretty(rows, { color: context.color }), 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,YAAY,EAAoB,MAAM,yBAAyB,CAAA;AACxE,OAAO,EACL,MAAM,EAEN,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EAEX,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,SAAS,EACT,aAAa,GACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAoB,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,eAAO,MAAM,cAAc,QAAO,OAe/B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAExH,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE,CAC1C,QAAQ,CACN,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;IAC5C,MAAM,OAAO,GAAG,aAAa,CAAc,OAAO,CAAC,CAAA;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACtC,OAAO;QACL,GAAG,SAAS,CAAC,OAAO,CAAC;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC;QACvC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;QACjC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC;QAC/C,WAAW,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;KAC1E,CAAA;AACH,CAAC,CAAC,EACF,EAAE,QAAQ,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAE,CACnD,CAAA"}
|
package/dist/diagnose.d.ts
CHANGED
|
@@ -3,21 +3,14 @@ import { type UpdateEnvironment } from "./update.js";
|
|
|
3
3
|
export declare const engineState: (env: NodeJS.ProcessEnv, update?: UpdateEnvironment) => {
|
|
4
4
|
path: string;
|
|
5
5
|
found: boolean;
|
|
6
|
-
hint?:
|
|
7
|
-
} | {
|
|
8
|
-
path: string;
|
|
9
|
-
found: boolean;
|
|
10
|
-
hint: string;
|
|
6
|
+
hint?: string;
|
|
11
7
|
};
|
|
12
8
|
/** The device keys' file modes, from `stat` alone: the keys are a credential and are never opened here. */
|
|
13
9
|
export declare const deviceModes: (storePath: string, platform?: NodeJS.Platform) => {
|
|
14
|
-
checked:
|
|
10
|
+
checked: false;
|
|
15
11
|
reason: string;
|
|
16
|
-
ok?: undefined;
|
|
17
|
-
problems?: undefined;
|
|
18
12
|
} | {
|
|
19
|
-
|
|
20
|
-
checked: boolean;
|
|
13
|
+
checked: true;
|
|
21
14
|
ok: boolean;
|
|
22
15
|
problems: {
|
|
23
16
|
path: string;
|
|
@@ -38,40 +31,12 @@ export declare const lockState: (lockPath: string) => {
|
|
|
38
31
|
};
|
|
39
32
|
/** `doctor`'s WhatsApp block: the engine, the device keys and the lock, read from disk without starting anything. */
|
|
40
33
|
export declare const diagnoseWhatsApp: (profile: string, env: NodeJS.ProcessEnv, update?: UpdateEnvironment) => {
|
|
41
|
-
engine:
|
|
42
|
-
path: string;
|
|
43
|
-
found: boolean;
|
|
44
|
-
hint?: undefined;
|
|
45
|
-
} | {
|
|
46
|
-
path: string;
|
|
47
|
-
found: boolean;
|
|
48
|
-
hint: string;
|
|
49
|
-
};
|
|
34
|
+
engine: ReturnType<typeof engineState>;
|
|
50
35
|
device: {
|
|
51
36
|
path: string;
|
|
52
37
|
exists: boolean;
|
|
53
|
-
files:
|
|
54
|
-
checked: boolean;
|
|
55
|
-
reason: string;
|
|
56
|
-
ok?: undefined;
|
|
57
|
-
problems?: undefined;
|
|
58
|
-
} | {
|
|
59
|
-
reason?: undefined;
|
|
60
|
-
checked: boolean;
|
|
61
|
-
ok: boolean;
|
|
62
|
-
problems: {
|
|
63
|
-
path: string;
|
|
64
|
-
mode: string;
|
|
65
|
-
want: string;
|
|
66
|
-
fix: string;
|
|
67
|
-
}[];
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
lock: {
|
|
71
|
-
path: string;
|
|
72
|
-
holder: string | null;
|
|
73
|
-
pid: number | null;
|
|
74
|
-
running: boolean;
|
|
38
|
+
files: ReturnType<typeof deviceModes>;
|
|
75
39
|
};
|
|
40
|
+
lock: ReturnType<typeof lockState>;
|
|
76
41
|
};
|
|
77
42
|
//# sourceMappingURL=diagnose.d.ts.map
|
package/dist/diagnose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAI/D,wEAAwE;AACxE,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAI/D,wEAAwE;AACxE,eAAO,MAAM,WAAW,QACjB,MAAM,CAAC,UAAU,WACd,iBAAiB,KACxB;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CAad,CAAA;AAED,2GAA2G;AAC3G,eAAO,MAAM,WAAW,cACX,MAAM,aACP,MAAM,CAAC,QAAQ,KAEvB;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAoBtG,CAAA;AAWD;;;GAGG;AACH,eAAO,MAAM,SAAS,aACV,MAAM,KACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAa7E,CAAA;AAED,qHAAqH;AACrH,eAAO,MAAM,gBAAgB,YAClB,MAAM,OACV,MAAM,CAAC,UAAU,WACb,iBAAiB,KACzB;IACD,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IACtC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;KAAE,CAAA;IAChF,IAAI,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAA;CAQnC,CAAA"}
|
package/dist/diagnose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACpG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,SAAS,EAA0B,MAAM,aAAa,CAAA;AAE/D,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;AAEtD,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACpG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,SAAS,EAA0B,MAAM,aAAa,CAAA;AAE/D,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;AAEtD,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAsB,EACtB,MAAM,GAAsB,EAAE,EAK9B,EAAE;IACF,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAChC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,GACR,SAAS,CAAC,MAAM,CAAC,KAAK,UAAU;YAC9B,CAAC,CAAC,mCAAmC;YACrC,CAAC,CAAC,qDAAqD,CAAA;QAC3D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACrC,CAAC;AACH,CAAC,CAAA;AAED,2GAA2G;AAC3G,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAAiB,EACjB,QAAQ,GAAoB,OAAO,CAAC,QAAQ,EAG4D,EAAE;IAC1G,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAA;IAC7F,MAAM,MAAM,GAAuB;QACjC,GAAG,CAAC,SAAS,EAAE,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAoB,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;KAC5B,CAAA;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAA;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,CAAA;QACxC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QACnC,OAAO;YACL;gBACE,IAAI;gBACJ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;gBACjB,GAAG,EAAE,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG;aACpE;SACF,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,CAAC,GAAW,EAAW,EAAE;IACrC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAA;IAC5E,CAAC;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAAgB,EAC+D,EAAE;IACjF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC7F,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAClC,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAClD,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAA;IACf,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAA;IACvF,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACpE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAA;AAC7E,CAAC,CAAA;AAED,qHAAqH;AACrH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAe,EACf,GAAsB,EACtB,MAA0B,EAK1B,EAAE;IACF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACxC,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;QAChC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE;QAC7E,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,OAAO,CAAC;KACjC,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -39,6 +39,7 @@ export declare const waChannelPage: v.StrictObjectSchema<{
|
|
|
39
39
|
readonly editedAt: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
40
40
|
readonly text: v.StringSchema<undefined>;
|
|
41
41
|
readonly replyTo: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
42
|
+
readonly thread: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
42
43
|
readonly attachments: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
43
44
|
readonly kind: v.PicklistSchema<["photo", "video", "voice", "audio", "document", "sticker", "location", "contact"], undefined>;
|
|
44
45
|
readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/engine/channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;aAKpB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/engine/channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;aAKpB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAAsE,CAAA;AAEhG,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,SAAS,CAAC,CAAA;AACvD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,aAAa,CAAC,CAAA;AAE/D,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAElC,iGAAiG;AACjG,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACxC,iGAAiG;IACjG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACpF,0DAA0D;IAC1D,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/C,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C;AAID,eAAO,MAAM,UAAU,YAAa,aAAa,KAAG,aAQlD,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as v from "valibot";
|
|
2
2
|
import type { ChannelEngine } from "./channels.js";
|
|
3
|
+
import type { DiscoveryEngine } from "./discovery.js";
|
|
3
4
|
import type { GroupEngine } from "./groups.js";
|
|
4
5
|
import type { PrivacyEngine } from "./privacy.js";
|
|
5
6
|
import type { SettingsEngine } from "./settings.js";
|
|
@@ -13,7 +14,7 @@ import type { SettingsEngine } from "./settings.js";
|
|
|
13
14
|
* emits a chat (cli-private plans/2026-10-16-whatsapp-foundation.md, decision 3). Names are what the address book or the
|
|
14
15
|
* person set; a phone number is never a name.
|
|
15
16
|
*/
|
|
16
|
-
export declare const PROTOCOL =
|
|
17
|
+
export declare const PROTOCOL = 46;
|
|
17
18
|
/**
|
|
18
19
|
* Every request the engine answers. A write changes something on WhatsApp or sends something: cut by a dropped
|
|
19
20
|
* connection or the engine's end, it may have gone through, so it answers `outcome_unknown`, never a retryable error
|
|
@@ -22,6 +23,7 @@ export declare const PROTOCOL = 45;
|
|
|
22
23
|
*/
|
|
23
24
|
export declare const ENGINE_OPS: {
|
|
24
25
|
readonly send: "write";
|
|
26
|
+
readonly saveContact: "write";
|
|
25
27
|
readonly sendMedia: "write";
|
|
26
28
|
readonly sendAlbum: "write";
|
|
27
29
|
readonly forward: "write";
|
|
@@ -62,6 +64,10 @@ export declare const ENGINE_OPS: {
|
|
|
62
64
|
readonly close: "read";
|
|
63
65
|
readonly link: "read";
|
|
64
66
|
readonly me: "read";
|
|
67
|
+
readonly inspect: "read";
|
|
68
|
+
readonly devices: "read";
|
|
69
|
+
readonly folders: "read";
|
|
70
|
+
readonly commentGroup: "read";
|
|
65
71
|
readonly directory: "read";
|
|
66
72
|
readonly chat: "read";
|
|
67
73
|
readonly download: "read";
|
|
@@ -237,6 +243,7 @@ export declare const waMessage: v.StrictObjectSchema<{
|
|
|
237
243
|
readonly editedAt: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
238
244
|
readonly text: v.StringSchema<undefined>;
|
|
239
245
|
readonly replyTo: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
246
|
+
readonly thread: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
240
247
|
readonly attachments: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
241
248
|
readonly kind: v.PicklistSchema<["photo", "video", "voice", "audio", "document", "sticker", "location", "contact"], undefined>;
|
|
242
249
|
readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -407,6 +414,7 @@ export declare const waHistory: v.StrictObjectSchema<{
|
|
|
407
414
|
readonly editedAt: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
408
415
|
readonly text: v.StringSchema<undefined>;
|
|
409
416
|
readonly replyTo: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
417
|
+
readonly thread: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
410
418
|
readonly attachments: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
411
419
|
readonly kind: v.PicklistSchema<["photo", "video", "voice", "audio", "document", "sticker", "location", "contact"], undefined>;
|
|
412
420
|
readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -487,6 +495,15 @@ export declare const waHistory: v.StrictObjectSchema<{
|
|
|
487
495
|
readonly reaction: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.NonEmptyAction<string, undefined>]>, undefined>;
|
|
488
496
|
readonly reactedAt: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>;
|
|
489
497
|
}, undefined>, undefined>, undefined>;
|
|
498
|
+
readonly stars: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
499
|
+
readonly chat: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
500
|
+
readonly message: v.StringSchema<undefined>;
|
|
501
|
+
readonly starred: v.BooleanSchema<undefined>;
|
|
502
|
+
}, undefined>, undefined>, undefined>;
|
|
503
|
+
readonly deletions: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
504
|
+
readonly chat: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
505
|
+
readonly message: v.StringSchema<undefined>;
|
|
506
|
+
}, undefined>, undefined>, undefined>;
|
|
490
507
|
readonly rekeys: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
491
508
|
readonly from: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
492
509
|
readonly to: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
@@ -521,6 +538,7 @@ export declare const waOlder: v.StrictObjectSchema<{
|
|
|
521
538
|
readonly editedAt: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
522
539
|
readonly text: v.StringSchema<undefined>;
|
|
523
540
|
readonly replyTo: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
541
|
+
readonly thread: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
524
542
|
readonly attachments: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
525
543
|
readonly kind: v.PicklistSchema<["photo", "video", "voice", "audio", "document", "sticker", "location", "contact"], undefined>;
|
|
526
544
|
readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -626,6 +644,7 @@ export declare const engineEvent: v.VariantSchema<"event", [v.StrictObjectSchema
|
|
|
626
644
|
readonly editedAt: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
627
645
|
readonly text: v.StringSchema<undefined>;
|
|
628
646
|
readonly replyTo: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
647
|
+
readonly thread: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
629
648
|
readonly attachments: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
630
649
|
readonly kind: v.PicklistSchema<["photo", "video", "voice", "audio", "document", "sticker", "location", "contact"], undefined>;
|
|
631
650
|
readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -706,6 +725,15 @@ export declare const engineEvent: v.VariantSchema<"event", [v.StrictObjectSchema
|
|
|
706
725
|
readonly reaction: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.NonEmptyAction<string, undefined>]>, undefined>;
|
|
707
726
|
readonly reactedAt: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>;
|
|
708
727
|
}, undefined>, undefined>, undefined>;
|
|
728
|
+
readonly stars: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
729
|
+
readonly chat: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
730
|
+
readonly message: v.StringSchema<undefined>;
|
|
731
|
+
readonly starred: v.BooleanSchema<undefined>;
|
|
732
|
+
}, undefined>, undefined>, undefined>;
|
|
733
|
+
readonly deletions: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
734
|
+
readonly chat: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
735
|
+
readonly message: v.StringSchema<undefined>;
|
|
736
|
+
}, undefined>, undefined>, undefined>;
|
|
709
737
|
readonly rekeys: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
710
738
|
readonly from: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
711
739
|
readonly to: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
@@ -736,6 +764,7 @@ export declare const engineEvent: v.VariantSchema<"event", [v.StrictObjectSchema
|
|
|
736
764
|
readonly editedAt: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
737
765
|
readonly text: v.StringSchema<undefined>;
|
|
738
766
|
readonly replyTo: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
767
|
+
readonly thread: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
739
768
|
readonly attachments: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
740
769
|
readonly kind: v.PicklistSchema<["photo", "video", "voice", "audio", "document", "sticker", "location", "contact"], undefined>;
|
|
741
770
|
readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -803,6 +832,7 @@ export declare const engineEvent: v.VariantSchema<"event", [v.StrictObjectSchema
|
|
|
803
832
|
readonly editedAt: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
804
833
|
readonly text: v.StringSchema<undefined>;
|
|
805
834
|
readonly replyTo: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
835
|
+
readonly thread: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
806
836
|
readonly attachments: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
807
837
|
readonly kind: v.PicklistSchema<["photo", "video", "voice", "audio", "document", "sticker", "location", "contact"], undefined>;
|
|
808
838
|
readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -1115,7 +1145,7 @@ export declare class EngineError extends Error {
|
|
|
1115
1145
|
* An event nobody listens for yet is kept and handed to the first listener of its kind, so a history push that
|
|
1116
1146
|
* comes right after connecting is not lost to a `feed` that started a moment after `watch`.
|
|
1117
1147
|
*/
|
|
1118
|
-
export interface WhatsAppEngine extends GroupEngine, PrivacyEngine, SettingsEngine, ChannelEngine {
|
|
1148
|
+
export interface WhatsAppEngine extends GroupEngine, PrivacyEngine, SettingsEngine, ChannelEngine, DiscoveryEngine {
|
|
1119
1149
|
/**
|
|
1120
1150
|
* The linked account, from the engine's own store: no request. `null` before a login. Always the user JID in LID
|
|
1121
1151
|
* form with no device part (`…@lid`, not `…:12@s.whatsapp.net`): the store keys the account by it, so a change of
|