@wirecat/whatsapp-cli 0.4.0 → 0.6.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 (117) hide show
  1. package/README.md +3 -0
  2. package/dist/adapter/adapter.d.ts +1 -1
  3. package/dist/adapter/adapter.d.ts.map +1 -1
  4. package/dist/adapter/adapter.js +16 -406
  5. package/dist/adapter/adapter.js.map +1 -1
  6. package/dist/adapter/channels.d.ts.map +1 -1
  7. package/dist/adapter/channels.js.map +1 -1
  8. package/dist/adapter/errors.d.ts +1 -1
  9. package/dist/adapter/errors.d.ts.map +1 -1
  10. package/dist/adapter/errors.js +4 -2
  11. package/dist/adapter/errors.js.map +1 -1
  12. package/dist/adapter/groups.d.ts.map +1 -1
  13. package/dist/adapter/groups.js +1 -1
  14. package/dist/adapter/groups.js.map +1 -1
  15. package/dist/adapter/listen.d.ts +11 -0
  16. package/dist/adapter/listen.d.ts.map +1 -0
  17. package/dist/adapter/listen.js +261 -0
  18. package/dist/adapter/listen.js.map +1 -0
  19. package/dist/adapter/map.d.ts +1 -1
  20. package/dist/adapter/map.d.ts.map +1 -1
  21. package/dist/adapter/map.js +12 -22
  22. package/dist/adapter/map.js.map +1 -1
  23. package/dist/adapter/polls.d.ts +2 -1
  24. package/dist/adapter/polls.d.ts.map +1 -1
  25. package/dist/adapter/polls.js +14 -3
  26. package/dist/adapter/polls.js.map +1 -1
  27. package/dist/adapter/privacy.d.ts.map +1 -1
  28. package/dist/adapter/privacy.js +26 -11
  29. package/dist/adapter/privacy.js.map +1 -1
  30. package/dist/adapter/sends.d.ts +14 -0
  31. package/dist/adapter/sends.d.ts.map +1 -0
  32. package/dist/adapter/sends.js +156 -0
  33. package/dist/adapter/sends.js.map +1 -0
  34. package/dist/adapter/settings.js +4 -1
  35. package/dist/adapter/settings.js.map +1 -1
  36. package/dist/app.d.ts +8 -0
  37. package/dist/app.d.ts.map +1 -1
  38. package/dist/app.js +20 -1
  39. package/dist/app.js.map +1 -1
  40. package/dist/bot/adapter.d.ts +18 -0
  41. package/dist/bot/adapter.d.ts.map +1 -0
  42. package/dist/bot/adapter.js +74 -0
  43. package/dist/bot/adapter.js.map +1 -0
  44. package/dist/bot/generated/definitions.d.ts +3 -0
  45. package/dist/bot/generated/definitions.d.ts.map +1 -0
  46. package/dist/bot/generated/definitions.js +9254 -0
  47. package/dist/bot/generated/definitions.js.map +1 -0
  48. package/dist/bot/generated/manifest.d.ts +3 -0
  49. package/dist/bot/generated/manifest.d.ts.map +1 -0
  50. package/dist/bot/generated/manifest.js +2614 -0
  51. package/dist/bot/generated/manifest.js.map +1 -0
  52. package/dist/bot/generated/schemas.d.ts +803 -0
  53. package/dist/bot/generated/schemas.d.ts.map +1 -0
  54. package/dist/bot/generated/schemas.js +3052 -0
  55. package/dist/bot/generated/schemas.js.map +1 -0
  56. package/dist/bot/generated/types.d.ts +3439 -0
  57. package/dist/bot/generated/types.d.ts.map +1 -0
  58. package/dist/bot/generated/types.js +5 -0
  59. package/dist/bot/generated/types.js.map +1 -0
  60. package/dist/bot/graph.d.ts +53 -0
  61. package/dist/bot/graph.d.ts.map +1 -0
  62. package/dist/bot/graph.js +141 -0
  63. package/dist/bot/graph.js.map +1 -0
  64. package/dist/bot/messaging.d.ts +30 -0
  65. package/dist/bot/messaging.d.ts.map +1 -0
  66. package/dist/bot/messaging.js +124 -0
  67. package/dist/bot/messaging.js.map +1 -0
  68. package/dist/bot/mime.d.ts +3 -0
  69. package/dist/bot/mime.d.ts.map +1 -0
  70. package/dist/bot/mime.js +20 -0
  71. package/dist/bot/mime.js.map +1 -0
  72. package/dist/bot/webhook.d.ts +13 -0
  73. package/dist/bot/webhook.d.ts.map +1 -0
  74. package/dist/bot/webhook.js +148 -0
  75. package/dist/bot/webhook.js.map +1 -0
  76. package/dist/commands/bot-templates.d.ts +9 -0
  77. package/dist/commands/bot-templates.d.ts.map +1 -0
  78. package/dist/commands/bot-templates.js +141 -0
  79. package/dist/commands/bot-templates.js.map +1 -0
  80. package/dist/commands/bot.d.ts +14 -0
  81. package/dist/commands/bot.d.ts.map +1 -0
  82. package/dist/commands/bot.js +208 -0
  83. package/dist/commands/bot.js.map +1 -0
  84. package/dist/commands/session.d.ts +0 -44
  85. package/dist/commands/session.d.ts.map +1 -1
  86. package/dist/commands/session.js +15 -141
  87. package/dist/commands/session.js.map +1 -1
  88. package/dist/commands/setup.d.ts.map +1 -1
  89. package/dist/commands/setup.js +9 -8
  90. package/dist/commands/setup.js.map +1 -1
  91. package/dist/commands/update.d.ts +2 -1
  92. package/dist/commands/update.d.ts.map +1 -1
  93. package/dist/commands/update.js.map +1 -1
  94. package/dist/diagnose.d.ts +6 -41
  95. package/dist/diagnose.d.ts.map +1 -1
  96. package/dist/diagnose.js.map +1 -1
  97. package/dist/engine/events.d.ts +1 -1
  98. package/dist/engine/events.d.ts.map +1 -1
  99. package/dist/engine/events.js.map +1 -1
  100. package/dist/engine/go-engine.d.ts.map +1 -1
  101. package/dist/engine/go-engine.js +2 -0
  102. package/dist/engine/go-engine.js.map +1 -1
  103. package/dist/messenger.d.ts +4 -1
  104. package/dist/messenger.d.ts.map +1 -1
  105. package/dist/messenger.js +5 -3
  106. package/dist/messenger.js.map +1 -1
  107. package/dist/program.d.ts.map +1 -1
  108. package/dist/program.js +7 -1
  109. package/dist/program.js.map +1 -1
  110. package/dist/session.d.ts +56 -0
  111. package/dist/session.d.ts.map +1 -0
  112. package/dist/session.js +136 -0
  113. package/dist/session.js.map +1 -0
  114. package/dist/version.d.ts +1 -1
  115. package/dist/version.js +1 -1
  116. package/package.json +16 -11
  117. package/skills/whatsapp-cli/SKILL.md +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAiB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC7G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQxC,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAIvE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,yCAAyC;IACzC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7E,8EAA8E;IAC9E,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IAChD,4EAA4E;IAC5E,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,iHAAiH;IACjH,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;AAaD,kFAAkF;AAClF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,YACZ,OAAO,QACV,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC,qBACtB;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,KACrE,OAAO,CAAC,cAAc,CASxB,CAAA;AA+BD,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC5C,wDAAwD;IACxD,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,YACZ,OAAO,QACV,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC,0CAMrD;IACD,MAAM,EAAE,IAAI,GAAG,OAAO,CAAA;IACtB,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;IAChC,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB,KACA,OAAO,CAAC,MAAM,CAkBhB,CAAA;AAED,eAAO,MAAM,KAAK,mBAA8D,CAAA;AAEhF,eAAO,MAAM,QAAQ,EAAE,SAqGtB,CAAA"}
1
+ {"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EAEpB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAIvE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,yCAAyC;IACzC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAA;IAC5C,8EAA8E;IAC9E,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IAChD,4EAA4E;IAC5E,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,iHAAiH;IACjH,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAaD,kFAAkF;AAClF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,YACZ,OAAO,QACV,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC,qBACtB;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,KACrE,OAAO,CAAC,cAAc,CAUxB,CAAA;AA+BD,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC5C,wDAAwD;IACxD,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,YACZ,OAAO,QACV,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC,0CAMrD;IACD,MAAM,EAAE,IAAI,GAAG,OAAO,CAAA;IACtB,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;IAChC,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB,KACA,OAAO,CAAC,MAAM,CAkBhB,CAAA;AAED,eAAO,MAAM,KAAK,mBAA8D,CAAA;AAEhF,eAAO,MAAM,QAAQ,EAAE,SAsGtB,CAAA"}
package/dist/messenger.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { CliError } from "@wirecat/cli-base";
3
3
  import { checkWords } from "@wirecat/cli-core";
4
- import { environmentOf } from "@wirecat/cli-core/cli";
4
+ import { asFirstWord, environmentOf, } from "@wirecat/cli-core/cli";
5
5
  import { whatsAppAdapter } from "./adapter/adapter.js";
6
6
  import { fromEngine } from "./adapter/errors.js";
7
7
  import { ADMIN_RIGHTS, GROUP_SETTINGS } from "./adapter/groups.js";
@@ -19,7 +19,7 @@ const holderOf = (command) => {
19
19
  };
20
20
  /** The commands the adapter's messages send a person to, with this profile named first. */
21
21
  const wordsFor = (profile) => checkWords("wa", profile);
22
- const loginHint = (profile) => wordsFor(profile)("session.start");
22
+ const loginHint = (profile) => `\`wa ${asFirstWord(profile)}setup\``;
23
23
  /**
24
24
  * Starts the engine for the command's profile, or throws saying how to log in. Only a login (`link`) may start on
25
25
  * a profile that has no device yet.
@@ -30,7 +30,8 @@ export const openEngine = async (command, base, { listen = false, link = false }
30
30
  const { engine: given, engineCommand, trackCloseable } = environmentOf(command);
31
31
  // The engine ignores Ctrl+C and lives until its stdin closes, so the runner must be able to close it on a signal or
32
32
  // a deadline: a login waiting for a scan would otherwise keep the process alive.
33
- const engine = given ? await given(request) : await startEngine(request, base, engineCommand);
33
+ // The test hook stays opaque above this composition boundary; fixtures implement the engine contract.
34
+ const engine = given ? (await given(request)) : await startEngine(request, base, engineCommand);
34
35
  trackCloseable?.(engine);
35
36
  return engine;
36
37
  };
@@ -157,6 +158,7 @@ export const WHATSAPP = {
157
158
  "sessions",
158
159
  "endOtherSessions",
159
160
  "chatEvents",
161
+ "comments",
160
162
  "inspect",
161
163
  "folders",
162
164
  "createFolder",
@@ -1 +1 @@
1
- {"version":3,"file":"messenger.js","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messenger.js","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,gBAAgB,CAAA;AAGlE;;;;GAIG;AACH,eAAO,MAAM,aAAa,UAAyE,CAAA;AAkEnG,eAAO,MAAM,aAAa,QAAO,OAA6B,CAAA;AAE9D,0FAA0F;AAC1F,eAAO,MAAM,GAAG,SAAgB,MAAM,EAAE,gBAAe,WAAW,KAAQ,OAAO,CAAC,MAAM,CAUvF,CAAA"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,gBAAgB,CAAA;AAGlE;;;;GAIG;AACH,eAAO,MAAM,aAAa,UAAyE,CAAA;AAsEnG,eAAO,MAAM,aAAa,QAAO,OAA6B,CAAA;AAE9D,0FAA0F;AAC1F,eAAO,MAAM,GAAG,SAAgB,MAAM,EAAE,gBAAe,WAAW,KAAQ,OAAO,CAAC,MAAM,CAUvF,CAAA"}
package/dist/program.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { exitCodeFor, processStreams } from "@wirecat/cli-base";
2
- import { accountCommand, attachmentsCommand, chatsCommand, commandsCommand, completeCommand, configCommand, contactsCommand, conversationsCommand, createProgram as create, doctorCommand, floodCommand, imagesCommand, inboxCommand, mcpCommand, mentionsCommand, messagesCommand, metadataCommand, modelsCommand, pollsCommand, reactionsCommand, recipientsCommand, reviewCommand, run as runCli, runsCommand, searchCommand, searchesCommand, sendsCommand, serveCommand, serverCommand, skillCommand, statsCommand, storeCommand, tagsCommand, tasksCommand, watchCommand, } from "@wirecat/cli-core/cli";
2
+ import { accountCommand, attachmentsCommand, botCommand, chatsCommand, commandsCommand, completeCommand, configCommand, contactsCommand, conversationsCommand, createProgram as create, doctorCommand, floodCommand, imagesCommand, inboxCommand, mcpCommand, mentionsCommand, messagesCommand, metadataCommand, modelsCommand, pollsCommand, reactionsCommand, recipientsCommand, reviewCommand, run as runCli, runsCommand, searchCommand, searchesCommand, sendsCommand, serveCommand, serverCommand, skillCommand, statsCommand, storeCommand, tagsCommand, tasksCommand, watchCommand, } from "@wirecat/cli-core/cli";
3
3
  import { CONFIG, WA } from "./app.js";
4
+ import { botMcp, WHATSAPP_BOT, whatsappBotApiCommand } from "./commands/bot.js";
5
+ import { botMediaCommand, botTemplatesCommand } from "./commands/bot-templates.js";
4
6
  import { sessionCommand } from "./commands/session.js";
5
7
  import { setupCommand } from "./commands/setup.js";
6
8
  import { upgradeCommand } from "./commands/update.js";
@@ -66,6 +68,10 @@ const definition = {
66
68
  completeCommand(WHATSAPP, CONFIG),
67
69
  upgradeCommand(),
68
70
  mcpCommand(WHATSAPP),
71
+ botCommand({ ...WHATSAPP_BOT, mcp: botMcp(run) })
72
+ .addCommand(whatsappBotApiCommand())
73
+ .addCommand(botTemplatesCommand())
74
+ .addCommand(botMediaCommand()),
69
75
  skillCommand(WA, SKILL),
70
76
  ],
71
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type MessengerAdapter, type MessengerContext } from "@wirecat/cli-core/cli";
2
+ import type { 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
+ /**
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
+ export declare const receiveHistory: (adapter: MessengerAdapter, wait: HistoryWait, onSlow: () => void, signal?: AbortSignal) => Promise<Received>;
26
+ export interface StartSessionOptions {
27
+ method: "qr" | "phone";
28
+ /** The command as typed, for the messages that name it. */
29
+ command?: string;
30
+ signal?: AbortSignal;
31
+ /** How far the questions and the QR code sit right, to line up under a setup step. */
32
+ indent?: number;
33
+ /**
34
+ * Ctrl+C, a cancel or --timeout ends the history wait alone, and the command answers with what was kept. A command
35
+ * with steps after the wait calls `endUntilStopped()` when it returns, so those steps get a deadline again.
36
+ */
37
+ stopEndsWait?: boolean;
38
+ }
39
+ export interface Session {
40
+ profile: string;
41
+ account: {
42
+ id: string;
43
+ name: string | null;
44
+ };
45
+ alreadyLinked: boolean;
46
+ /** Left out for a device linked before: nothing was pushed, so nothing was counted. */
47
+ received?: Received;
48
+ }
49
+ /** Links the profile's device unless it is linked already, then keeps the history the phone pushes once. */
50
+ export declare const startSession: (command: Command, context: MessengerContext, { method, command: typed, signal, indent: pad, stopEndsWait }: StartSessionOptions) => Promise<Session>;
51
+ export declare const endSession: (context: Pick<MessengerContext, "profile" | "env" | "withMessenger">) => Promise<{
52
+ profile: string;
53
+ ended: boolean;
54
+ alreadyDropped?: boolean;
55
+ }>;
56
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EAEtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC;;;GAGG;AACH,eAAO,MAAM,WAAW,QAKZ,CAAA;AAEZ,6FAA6F;AAC7F,eAAO,MAAM,YAAY,EAAE,WAAmE,CAAA;AAE9F,qHAAqH;AACrH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,YAChB,gBAAgB,QACnB,WAAW,UACT,MAAM,IAAI,WACT,WAAW,KACnB,OAAO,CAAC,QAAQ,CAyBlB,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAA;IACtB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC5C,aAAa,EAAE,OAAO,CAAA;IACtB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB;AAED,4GAA4G;AAC5G,eAAO,MAAM,YAAY,YACd,OAAO,WACP,gBAAgB,iEACuE,mBAAmB,KAClH,OAAO,CAAC,OAAO,CA+EjB,CAAA;AAED,eAAO,MAAM,UAAU,YACZ,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,KAAK,GAAG,eAAe,CAAC,KACnE,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAsBA,CAAA"}
@@ -0,0 +1,136 @@
1
+ import { existsSync, rmSync } from "node:fs";
2
+ import { CliError, indent } from "@wirecat/cli-base";
3
+ import { atTerminal, loginQr, readSecret } from "@wirecat/cli-core";
4
+ import { asFirstWord, environmentOf, secretInputOf, } from "@wirecat/cli-core/cli";
5
+ import { linkDevice } from "./messenger.js";
6
+ import { privateStore } from "./paths.js";
7
+ /**
8
+ * Shown once, before the code that links the device. It ignores `--quiet` the way the QR code does: it belongs to
9
+ * the prompt the person is answering, and after the link it is too late to read it.
10
+ */
11
+ export const BAN_WARNING = [
12
+ "Before you link: wa is not an official WhatsApp app, and WhatsApp may ban an account that uses one.",
13
+ "It also bans accounts that send in bulk or write to people who do not know them.",
14
+ "wa writes only when a command asks, sends at most 30 messages an hour by default, and holds every",
15
+ "write when WhatsApp says to slow down or restricts the account. Never send in bulk or to strangers.",
16
+ ].join("\n");
17
+ /** The phone pushes its history right after linking, once; how long to keep receiving it. */
18
+ export const HISTORY_WAIT = { firstMs: 120_000, quietMs: 45_000, slowMs: 20_000 };
19
+ /**
20
+ * Saves what the phone pushes until it goes quiet or `signal` aborts. Live messages that arrive meanwhile are saved
21
+ * too, through the same connection.
22
+ */
23
+ export const receiveHistory = async (adapter, wait, onSlow, signal) => {
24
+ const received = { chats: 0, messages: 0, people: 0 };
25
+ const stop = new AbortController();
26
+ const end = () => stop.abort();
27
+ let timer = setTimeout(end, wait.firstMs);
28
+ const slow = wait.slowMs === undefined ? undefined : setTimeout(onSlow, wait.slowMs);
29
+ signal?.addEventListener("abort", end, { once: true });
30
+ try {
31
+ await Promise.all([
32
+ adapter.feed?.((batch) => {
33
+ received.chats += batch.chats?.length ?? 0;
34
+ received.messages += batch.messages?.length ?? 0;
35
+ received.people += batch.people?.length ?? 0;
36
+ clearTimeout(slow);
37
+ clearTimeout(timer);
38
+ timer = setTimeout(end, wait.quietMs);
39
+ }, stop.signal),
40
+ adapter.watch?.(() => { }, stop.signal),
41
+ ]);
42
+ }
43
+ finally {
44
+ clearTimeout(slow);
45
+ clearTimeout(timer);
46
+ signal?.removeEventListener("abort", end);
47
+ }
48
+ return received;
49
+ };
50
+ /** Links the profile's device unless it is linked already, then keeps the history the phone pushes once. */
51
+ export const startSession = async (command, context, { method, command: typed = "wa session start", signal, indent: pad = 0, stopEndsWait = false }) => {
52
+ const input = context.stdin;
53
+ const terminal = atTerminal(input);
54
+ const unanswerable = () => new CliError("validation_error", `${typed} asks questions — run it in a terminal`, {
55
+ reason: "input.required",
56
+ });
57
+ // A device that is linked already asks nothing, so only a profile without one is refused before the engine starts.
58
+ if (!terminal && method === "phone" && !existsSync(privateStore(context.profile, context.env)))
59
+ throw unanswerable();
60
+ const qr = loginQr({
61
+ diagnostic: context.streams.diagnostic,
62
+ note: context.renderer.note,
63
+ indent: pad,
64
+ terminal,
65
+ json: context.format !== "pretty",
66
+ });
67
+ const environment = environmentOf(command);
68
+ const linked = await linkDevice(command, context, {
69
+ method,
70
+ beforeLink: () => {
71
+ signal?.throwIfAborted();
72
+ if (!terminal && method === "phone")
73
+ throw unanswerable();
74
+ context.streams.diagnostic(indent(BAN_WARNING, pad));
75
+ },
76
+ phone: async () => {
77
+ if (!terminal)
78
+ throw new CliError("validation_error", `${typed} phone needs a terminal to ask for the number`, {
79
+ reason: "input.required",
80
+ });
81
+ const number = await readSecret(`${" ".repeat(pad)}phone number, international format: `, {
82
+ ...secretInputOf(command),
83
+ echo: true,
84
+ ...(signal === undefined ? {} : { signal }),
85
+ });
86
+ // WhatsApp reads the leading digits as the country code, so a number typed without one pairs someone else's.
87
+ if (!number.trim().startsWith("+"))
88
+ throw new CliError("validation_error", "write the phone number with + and the country code, such as +34", {
89
+ param: "phone",
90
+ reason: "input.invalid",
91
+ });
92
+ return number;
93
+ },
94
+ onCode: ({ login, code }) => {
95
+ if (login === "pair") {
96
+ context.renderer.note(`pairing code: ${code}\n` +
97
+ "On the phone: tap the WhatsApp notification, or Settings > Linked devices > Link a device >\n" +
98
+ "Link with phone number instead, and type the code. It expires in about two minutes.");
99
+ return;
100
+ }
101
+ qr.show(code, "scan in WhatsApp → Settings → Linked devices → Link a device");
102
+ },
103
+ });
104
+ signal?.throwIfAborted();
105
+ const session = { profile: context.profile, account: linked.account, alreadyLinked: linked.alreadyLinked };
106
+ if (!linked.alreadyLinked) {
107
+ context.renderer.note("receiving history from the phone; keep WhatsApp open on it. Ctrl+C stops — `serve` picks up the rest.");
108
+ const stop = stopEndsWait ? environment.untilStopped?.() : environment.signal;
109
+ const ended = AbortSignal.any([signal, stop].filter((one) => one !== undefined));
110
+ 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 });
111
+ }
112
+ return session;
113
+ };
114
+ export const endSession = async (context) => {
115
+ const store = privateStore(context.profile, context.env);
116
+ if (!existsSync(store)) {
117
+ return { profile: context.profile, ended: false };
118
+ }
119
+ let dropped = false;
120
+ try {
121
+ await context.withMessenger((adapter) => adapter.logout());
122
+ }
123
+ catch (error) {
124
+ if (error instanceof CliError && error.details.reason === "device.in-use")
125
+ throw new CliError("provider_unavailable", `${error.message} — stop it first (\`wa ${asFirstWord(context.profile)}server stop\` for serve, or Ctrl+C ` +
126
+ "where it runs), then end the session", { ...error.details, sent: false });
127
+ // The phone may have removed the device already; the keys here are then worth nothing, and still go.
128
+ if (!(error instanceof CliError && error.code === "authentication_error"))
129
+ throw error;
130
+ dropped = true;
131
+ }
132
+ for (const suffix of ["", "-wal", "-shm", ".lock"])
133
+ rmSync(`${store}${suffix}`, { force: true });
134
+ return { profile: context.profile, ended: true, ...(dropped ? { alreadyDropped: true } : {}) };
135
+ };
136
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.4.0";
1
+ export declare const VERSION = "0.6.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.4.0";
1
+ export const VERSION = "0.6.0";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/whatsapp-cli",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "A personal WhatsApp account from the terminal, as a linked device — built for agents and scripts",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Viacheslav Ptsarev",
@@ -34,6 +34,9 @@
34
34
  "test:matrix": "vitest run >/dev/null && pnpm build >/dev/null && cli-dev test-matrix --program dist/program.js --untested scripts/test-matrix-untested.ts --name wa --check",
35
35
  "test:slow": "vitest run --reporter=json --outputFile=coverage/tests.json >/dev/null; cli-dev slow-tests",
36
36
  "engine:test": "cd engine && unformatted=$(\"$(go env GOROOT)/bin/gofmt\" -l .) && { test -z \"$unformatted\" || { echo \"not gofmt-formatted: $unformatted\" >&2; exit 1; }; } && go vet ./... && go test ./...",
37
+ "bot:spec:sync": "node --experimental-strip-types scripts/bot/sync-spec.ts",
38
+ "bot:generate": "node --experimental-strip-types scripts/bot/generate.ts",
39
+ "bot:generate:check": "node --experimental-strip-types scripts/bot/generate.ts --check",
37
40
  "generate": "pnpm build && node --experimental-strip-types scripts/commands.ts",
38
41
  "smoke:bun": "bun run scripts/smoke.ts",
39
42
  "release:check": "pnpm build && node --experimental-strip-types scripts/release-check.ts",
@@ -50,6 +53,7 @@
50
53
  "docs:lint": "markdownlint-cli2",
51
54
  "docs:spell": "cspell lint --config cspell.json --no-progress README.md",
52
55
  "ci:quick": "pnpm typecheck && pnpm build && pnpm lint:commands",
56
+ "contracts:upgrade": "pnpm --dir contracts/previous install --frozen-lockfile --ignore-scripts && cli-contract contracts/upgrade.json",
53
57
  "contracts:check": "cli-contract contracts/plan.json",
54
58
  "security:no-leak": "cli-testing security no-leak . contracts/no-leak.json",
55
59
  "lint:commands": "cli-dev lint --cli dist/bin/wa.js",
@@ -57,18 +61,18 @@
57
61
  "engine:packages": "node scripts/engine-packages.mjs build"
58
62
  },
59
63
  "dependencies": {
60
- "@wirecat/cli-base": "0.49.0",
61
- "@wirecat/cli-core": "0.385.0",
64
+ "@wirecat/cli-base": "0.50.2",
65
+ "@wirecat/cli-core": "0.399.0",
62
66
  "commander": "15.0.0",
63
67
  "valibot": "1.5.0"
64
68
  },
65
69
  "optionalDependencies": {
66
- "@wirecat/whatsapp-engine-darwin-arm64": "0.4.0",
67
- "@wirecat/whatsapp-engine-darwin-x64": "0.4.0",
68
- "@wirecat/whatsapp-engine-linux-arm64": "0.4.0",
69
- "@wirecat/whatsapp-engine-linux-x64": "0.4.0",
70
- "@wirecat/whatsapp-engine-win32-arm64": "0.4.0",
71
- "@wirecat/whatsapp-engine-win32-x64": "0.4.0"
70
+ "@wirecat/whatsapp-engine-darwin-arm64": "0.6.0",
71
+ "@wirecat/whatsapp-engine-darwin-x64": "0.6.0",
72
+ "@wirecat/whatsapp-engine-linux-arm64": "0.6.0",
73
+ "@wirecat/whatsapp-engine-linux-x64": "0.6.0",
74
+ "@wirecat/whatsapp-engine-win32-arm64": "0.6.0",
75
+ "@wirecat/whatsapp-engine-win32-x64": "0.6.0"
72
76
  },
73
77
  "devDependencies": {
74
78
  "@biomejs/biome": "2.5.15",
@@ -77,13 +81,14 @@
77
81
  "@cspell/dict-ru_ru": "2.3.3",
78
82
  "@types/node": "^22.20.4",
79
83
  "@vitest/coverage-v8": "^5.0.3",
80
- "@wirecat/cli-testing": "0.5.2",
84
+ "@wirecat/cli-testing": "0.5.3",
81
85
  "cspell": "10.3.6",
82
86
  "lefthook": "2.1.16",
83
87
  "markdownlint-cli2": "0.23.3",
84
88
  "rumdl": "^0.2.79",
85
89
  "typescript": "^7.0.2",
86
- "vitest": "^5.0.3"
90
+ "vitest": "^5.0.3",
91
+ "yaml": "^2.9.1"
87
92
  },
88
93
  "publishConfig": {
89
94
  "access": "public"
@@ -61,7 +61,7 @@ edit or deletion in a channel.
61
61
  **Group changes are writes the members see**, and go through the profile's permissions like a send. `chats create`
62
62
  and `members add` refuse anyone the owner never wrote to and has not saved — WhatsApp bans accounts that add
63
63
  strangers; never work round it. `admins add` takes no `--can`: a WhatsApp admin has every right.
64
- `chats update --disappear-time` takes 24h, 7d, 90d or off, nothing else. A chat or person named by name is looked up
64
+ `chats update --disappear-after` takes 24h, 7d, 90d or off, nothing else. A chat or person named by name is looked up
65
65
  in the store first (part of the name is enough; several matches are refused), then in WhatsApp's chat list; a group
66
66
  the store does not hold yet needs its `…@g.us` id.
67
67
  `contacts lookup` takes one number on stdin, at most one every 10 seconds per profile; never loop it.