@wirecat/cli-core 0.314.0 → 0.316.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 (122) hide show
  1. package/dist/cli/bot/watch.d.ts.map +1 -1
  2. package/dist/cli/bot/watch.js +2 -1
  3. package/dist/cli/bot/watch.js.map +1 -1
  4. package/dist/cli/envelope.d.ts.map +1 -1
  5. package/dist/cli/envelope.js +3 -2
  6. package/dist/cli/envelope.js.map +1 -1
  7. package/dist/cli/index.d.ts +2 -2
  8. package/dist/cli/index.d.ts.map +1 -1
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/cli/messenger/admin-commands.d.ts.map +1 -1
  11. package/dist/cli/messenger/admin-commands.js +36 -16
  12. package/dist/cli/messenger/admin-commands.js.map +1 -1
  13. package/dist/cli/messenger/backfill-command.d.ts.map +1 -1
  14. package/dist/cli/messenger/backfill-command.js +4 -0
  15. package/dist/cli/messenger/backfill-command.js.map +1 -1
  16. package/dist/cli/messenger/chat-answers.d.ts +5 -2
  17. package/dist/cli/messenger/chat-answers.d.ts.map +1 -1
  18. package/dist/cli/messenger/chat-answers.js +3 -0
  19. package/dist/cli/messenger/chat-answers.js.map +1 -1
  20. package/dist/cli/messenger/chat-lists.d.ts +3 -0
  21. package/dist/cli/messenger/chat-lists.d.ts.map +1 -1
  22. package/dist/cli/messenger/chats-documents-command.d.ts.map +1 -1
  23. package/dist/cli/messenger/chats-documents-command.js +4 -1
  24. package/dist/cli/messenger/chats-documents-command.js.map +1 -1
  25. package/dist/cli/messenger/contacts-command.d.ts.map +1 -1
  26. package/dist/cli/messenger/contacts-command.js +19 -11
  27. package/dist/cli/messenger/contacts-command.js.map +1 -1
  28. package/dist/cli/messenger/context.d.ts +35 -3
  29. package/dist/cli/messenger/context.d.ts.map +1 -1
  30. package/dist/cli/messenger/context.js +75 -16
  31. package/dist/cli/messenger/context.js.map +1 -1
  32. package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
  33. package/dist/cli/messenger/conversations-command.js +1 -1
  34. package/dist/cli/messenger/conversations-command.js.map +1 -1
  35. package/dist/cli/messenger/download-command.js +1 -1
  36. package/dist/cli/messenger/download-command.js.map +1 -1
  37. package/dist/cli/messenger/messages-search-command.d.ts.map +1 -1
  38. package/dist/cli/messenger/messages-search-command.js +11 -7
  39. package/dist/cli/messenger/messages-search-command.js.map +1 -1
  40. package/dist/cli/messenger/messages-stats-command.js +3 -3
  41. package/dist/cli/messenger/messages-stats-command.js.map +1 -1
  42. package/dist/cli/messenger/rankings-command.d.ts.map +1 -1
  43. package/dist/cli/messenger/rankings-command.js +1 -1
  44. package/dist/cli/messenger/rankings-command.js.map +1 -1
  45. package/dist/cli/messenger/search-sync-options.d.ts +4 -2
  46. package/dist/cli/messenger/search-sync-options.d.ts.map +1 -1
  47. package/dist/cli/messenger/search-sync-options.js +5 -1
  48. package/dist/cli/messenger/search-sync-options.js.map +1 -1
  49. package/dist/cli/messenger/serve-relay.d.ts +3 -1
  50. package/dist/cli/messenger/serve-relay.d.ts.map +1 -1
  51. package/dist/cli/messenger/watch-command.d.ts.map +1 -1
  52. package/dist/cli/messenger/watch-command.js +2 -1
  53. package/dist/cli/messenger/watch-command.js.map +1 -1
  54. package/dist/cli/provider-refs.d.ts +6 -0
  55. package/dist/cli/provider-refs.d.ts.map +1 -0
  56. package/dist/cli/provider-refs.js +17 -0
  57. package/dist/cli/provider-refs.js.map +1 -0
  58. package/dist/domain/models.d.ts +16 -2
  59. package/dist/domain/models.d.ts.map +1 -1
  60. package/dist/domain/models.js.map +1 -1
  61. package/dist/entities/chat.d.ts +3 -0
  62. package/dist/entities/chat.d.ts.map +1 -1
  63. package/dist/entities/chat.js +3 -0
  64. package/dist/entities/chat.js.map +1 -1
  65. package/dist/entities/contact.d.ts +6 -0
  66. package/dist/entities/contact.d.ts.map +1 -1
  67. package/dist/entities/index.d.ts +9 -0
  68. package/dist/entities/index.d.ts.map +1 -1
  69. package/dist/kit/contract.d.ts +1 -1
  70. package/dist/kit/contract.d.ts.map +1 -1
  71. package/dist/kit/contract.js +1 -0
  72. package/dist/kit/contract.js.map +1 -1
  73. package/dist/kit/fake.d.ts +2 -2
  74. package/dist/kit/fake.d.ts.map +1 -1
  75. package/dist/kit/fake.js.map +1 -1
  76. package/dist/mcp/instructions.d.ts.map +1 -1
  77. package/dist/mcp/instructions.js +1 -3
  78. package/dist/mcp/instructions.js.map +1 -1
  79. package/dist/mcp/server.d.ts.map +1 -1
  80. package/dist/mcp/server.js +4 -3
  81. package/dist/mcp/server.js.map +1 -1
  82. package/dist/mcp/tools/admin.d.ts.map +1 -1
  83. package/dist/mcp/tools/admin.js +29 -12
  84. package/dist/mcp/tools/admin.js.map +1 -1
  85. package/dist/mcp/tools/chats-read.d.ts.map +1 -1
  86. package/dist/mcp/tools/chats-read.js +4 -2
  87. package/dist/mcp/tools/chats-read.js.map +1 -1
  88. package/dist/mcp/tools/conversations.d.ts.map +1 -1
  89. package/dist/mcp/tools/conversations.js +7 -3
  90. package/dist/mcp/tools/conversations.js.map +1 -1
  91. package/dist/mcp/tools/messages-delete.d.ts.map +1 -1
  92. package/dist/mcp/tools/messages-delete.js +4 -2
  93. package/dist/mcp/tools/messages-delete.js.map +1 -1
  94. package/dist/mcp/tools/messages.js +2 -2
  95. package/dist/mcp/tools/messages.js.map +1 -1
  96. package/dist/mcp/tools/search-tools.js +2 -2
  97. package/dist/mcp/tools/search-tools.js.map +1 -1
  98. package/dist/mcp/tools/search.d.ts +3 -0
  99. package/dist/mcp/tools/search.d.ts.map +1 -1
  100. package/dist/mcp/tools/search.js +10 -0
  101. package/dist/mcp/tools/search.js.map +1 -1
  102. package/dist/meetings/mcp/index.d.ts +15 -15
  103. package/dist/meetings/mcp/index.d.ts.map +1 -1
  104. package/dist/ports/messenger.d.ts +4 -1
  105. package/dist/ports/messenger.d.ts.map +1 -1
  106. package/dist/ports/messenger.js.map +1 -1
  107. package/dist/ports/traits.d.ts +5 -0
  108. package/dist/ports/traits.d.ts.map +1 -1
  109. package/dist/services/archive.d.ts.map +1 -1
  110. package/dist/services/archive.js +4 -2
  111. package/dist/services/archive.js.map +1 -1
  112. package/dist/services/chats.d.ts.map +1 -1
  113. package/dist/services/chats.js +10 -6
  114. package/dist/services/chats.js.map +1 -1
  115. package/dist/services/messages.d.ts.map +1 -1
  116. package/dist/services/messages.js +5 -1
  117. package/dist/services/messages.js.map +1 -1
  118. package/dist/store/sqlite/messages.d.ts.map +1 -1
  119. package/dist/store/sqlite/messages.js +10 -2
  120. package/dist/store/sqlite/messages.js.map +1 -1
  121. package/package.json +1 -1
  122. package/parity.json +843 -319
package/parity.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "clis": ["max", "tg"],
2
+ "clis": ["max", "tg", "wa"],
3
3
  "options": {
4
4
  "--accept-terms": {
5
5
  "meaning": "accept the model's licence terms, for a model that has its own"
@@ -271,6 +271,10 @@
271
271
  "value": "<n>",
272
272
  "meaning": "remote: the vector size — needed with --base-url; shortens an OpenAI model's"
273
273
  },
274
+ "--disappear-time": {
275
+ "value": "<duration|off>",
276
+ "meaning": "new messages disappear this long after sending: 24h, 7d, 90d; off keeps them"
277
+ },
274
278
  "--discover": {
275
279
  "meaning": "find partial lexical matches and eligible replies in the local archive; results are evidence, not confirmed answers"
276
280
  },
@@ -678,6 +682,14 @@
678
682
  "value": "<on|off>",
679
683
  "meaning": "only admins may start a call"
680
684
  },
685
+ "--only-admins-edit-info": {
686
+ "value": "<on|off>",
687
+ "meaning": "only admins may change the name, photo and description"
688
+ },
689
+ "--only-admins-send": {
690
+ "value": "<on|off>",
691
+ "meaning": "only admins may send messages"
692
+ },
681
693
  "--only-missing": {
682
694
  "meaning": "only chats with no metadata yet; without --chat, every stored group/channel"
683
695
  },
@@ -1082,7 +1094,7 @@
1082
1094
  },
1083
1095
  "globalOptions": {
1084
1096
  "--brief": {
1085
- "in": [],
1097
+ "in": ["wa"],
1086
1098
  "planned": {
1087
1099
  "max": "each CLI’s next cli-core bump",
1088
1100
  "tg": "each CLI’s next cli-core bump"
@@ -1091,7 +1103,7 @@
1091
1103
  "--debug": "all",
1092
1104
  "--dry-run": "all",
1093
1105
  "--full": {
1094
- "in": [],
1106
+ "in": ["wa"],
1095
1107
  "planned": {
1096
1108
  "max": "each CLI’s next cli-core bump",
1097
1109
  "tg": "each CLI’s next cli-core bump"
@@ -1107,7 +1119,8 @@
1107
1119
  "in": [],
1108
1120
  "planned": {
1109
1121
  "max": "P6",
1110
- "tg": "P6"
1122
+ "tg": "P6",
1123
+ "wa": "P6"
1111
1124
  }
1112
1125
  },
1113
1126
  "--offline": "all",
@@ -1117,7 +1130,8 @@
1117
1130
  "in": [],
1118
1131
  "planned": {
1119
1132
  "max": "P6",
1120
- "tg": "P6"
1133
+ "tg": "P6",
1134
+ "wa": "P6"
1121
1135
  }
1122
1136
  },
1123
1137
  "--timeout": "all",
@@ -1136,43 +1150,50 @@
1136
1150
  "account privacy": {
1137
1151
  "in": ["max"],
1138
1152
  "planned": {
1139
- "tg": "tg-cli backlog: server reads (calls, chat media, privacy)"
1153
+ "tg": "tg-cli backlog: server reads (calls, chat media, privacy)",
1154
+ "wa": "wa backlog: account privacy"
1140
1155
  }
1141
1156
  },
1142
1157
  "account privacy set": {
1143
1158
  "in": ["max"],
1144
1159
  "planned": {
1145
- "tg": "tg-cli backlog: settings writes (mute, privacy)"
1160
+ "tg": "tg-cli backlog: settings writes (mute, privacy)",
1161
+ "wa": "wa backlog: account privacy"
1146
1162
  },
1147
1163
  "options": {
1148
1164
  "--calls": {
1149
1165
  "in": ["max"],
1150
1166
  "planned": {
1151
- "tg": "tg-cli backlog: settings writes (mute, privacy)"
1167
+ "tg": "tg-cli backlog: settings writes (mute, privacy)",
1168
+ "wa": "wa backlog: account privacy"
1152
1169
  }
1153
1170
  },
1154
1171
  "--chat-invites": {
1155
1172
  "in": ["max"],
1156
1173
  "planned": {
1157
- "tg": "tg-cli backlog: settings writes (mute, privacy)"
1174
+ "tg": "tg-cli backlog: settings writes (mute, privacy)",
1175
+ "wa": "wa backlog: account privacy"
1158
1176
  }
1159
1177
  },
1160
1178
  "--find-by-phone": {
1161
1179
  "in": ["max"],
1162
1180
  "planned": {
1163
- "tg": "tg-cli backlog: settings writes (mute, privacy)"
1181
+ "tg": "tg-cli backlog: settings writes (mute, privacy)",
1182
+ "wa": "wa backlog: account privacy"
1164
1183
  }
1165
1184
  },
1166
1185
  "--hide-online": {
1167
1186
  "in": ["max"],
1168
1187
  "planned": {
1169
- "tg": "tg-cli backlog: settings writes (mute, privacy)"
1188
+ "tg": "tg-cli backlog: settings writes (mute, privacy)",
1189
+ "wa": "wa backlog: account privacy"
1170
1190
  }
1171
1191
  },
1172
1192
  "--phone-number": {
1173
1193
  "in": ["max"],
1174
1194
  "planned": {
1175
- "tg": "tg-cli backlog: settings writes (mute, privacy)"
1195
+ "tg": "tg-cli backlog: settings writes (mute, privacy)",
1196
+ "wa": "wa backlog: account privacy"
1176
1197
  }
1177
1198
  }
1178
1199
  }
@@ -1180,7 +1201,8 @@
1180
1201
  "account privacy show": {
1181
1202
  "in": ["max"],
1182
1203
  "planned": {
1183
- "tg": "tg-cli backlog: server reads (calls, chat media, privacy)"
1204
+ "tg": "tg-cli backlog: server reads (calls, chat media, privacy)",
1205
+ "wa": "wa backlog: account privacy"
1184
1206
  }
1185
1207
  },
1186
1208
  "account sessions": {
@@ -1194,7 +1216,8 @@
1194
1216
  "in": [],
1195
1217
  "planned": {
1196
1218
  "max": "P2",
1197
- "tg": "P2"
1219
+ "tg": "P2",
1220
+ "wa": "P2"
1198
1221
  }
1199
1222
  }
1200
1223
  }
@@ -1292,325 +1315,529 @@
1292
1315
  }
1293
1316
  },
1294
1317
  "bot": {
1295
- "in": "all"
1318
+ "in": ["max", "tg"],
1319
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1296
1320
  },
1297
1321
  "bot api": {
1298
- "in": "all",
1322
+ "in": ["max", "tg"],
1323
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1299
1324
  "options": {
1300
1325
  "--allow-any-file": {
1301
1326
  "in": [],
1302
1327
  "planned": {
1303
1328
  "tg": "tg's next cli-core bump: one flag on bot api for every @path field, not one per file-carrying operation"
1304
1329
  },
1305
- "reason": "max's bot api reads no @path files; max uploads bot files through bot uploads put, which has the flag"
1330
+ "reason": "max's bot api reads no @path files; max uploads bot files through bot uploads put, which has the flag; WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1306
1331
  },
1307
1332
  "--store-token": {
1308
- "in": "all"
1333
+ "in": ["max", "tg"],
1334
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1309
1335
  }
1310
1336
  }
1311
1337
  },
1312
1338
  "bot auth": {
1313
- "in": "all"
1339
+ "in": ["max", "tg"],
1340
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1314
1341
  },
1315
1342
  "bot auth remove": {
1316
- "in": "all"
1343
+ "in": ["max", "tg"],
1344
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1317
1345
  },
1318
1346
  "bot auth set": {
1319
- "in": "all"
1347
+ "in": ["max", "tg"],
1348
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1320
1349
  },
1321
1350
  "bot auth show": {
1322
- "in": "all"
1351
+ "in": ["max", "tg"],
1352
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1323
1353
  },
1324
1354
  "bot callbacks": {
1325
- "in": "all"
1355
+ "in": ["max", "tg"],
1356
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1326
1357
  },
1327
1358
  "bot callbacks answer": {
1328
- "in": "all",
1359
+ "in": ["max", "tg"],
1360
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1329
1361
  "options": {
1330
- "--notification": "all",
1331
- "--text": "all"
1362
+ "--notification": {
1363
+ "in": ["max", "tg"],
1364
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1365
+ },
1366
+ "--text": {
1367
+ "in": ["max", "tg"],
1368
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1369
+ }
1332
1370
  }
1333
1371
  },
1334
1372
  "bot chats": {
1335
- "in": "all"
1373
+ "in": ["max", "tg"],
1374
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1336
1375
  },
1337
1376
  "bot chats action": {
1338
- "in": "all"
1377
+ "in": ["max", "tg"],
1378
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1339
1379
  },
1340
1380
  "bot chats admins": {
1341
- "in": "all"
1381
+ "in": ["max", "tg"],
1382
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1342
1383
  },
1343
1384
  "bot chats admins add": {
1344
- "in": "all",
1385
+ "in": ["max", "tg"],
1386
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1345
1387
  "options": {
1346
- "--can": "all",
1347
- "--title": "all"
1388
+ "--can": {
1389
+ "in": ["max", "tg"],
1390
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1391
+ },
1392
+ "--title": {
1393
+ "in": ["max", "tg"],
1394
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1395
+ }
1348
1396
  }
1349
1397
  },
1350
1398
  "bot chats admins list": {
1351
- "in": "all"
1399
+ "in": ["max", "tg"],
1400
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1352
1401
  },
1353
1402
  "bot chats admins remove": {
1354
- "in": "all"
1403
+ "in": ["max", "tg"],
1404
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1355
1405
  },
1356
1406
  "bot chats leave": {
1357
- "in": "all"
1407
+ "in": ["max", "tg"],
1408
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1358
1409
  },
1359
1410
  "bot chats list": {
1360
- "in": "all"
1411
+ "in": ["max", "tg"],
1412
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1361
1413
  },
1362
1414
  "bot chats members": {
1363
- "in": "all"
1415
+ "in": ["max", "tg"],
1416
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1364
1417
  },
1365
1418
  "bot chats members add": {
1366
1419
  "in": ["max"],
1367
- "reason": "a Telegram bot cannot add people to a chat"
1420
+ "reason": "a Telegram bot cannot add people to a chat; WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1368
1421
  },
1369
1422
  "bot chats members list": {
1370
1423
  "in": ["max"],
1424
+ "reason": "Telegram's Bot API cannot list a chat's members, only its admins and a count; WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1371
1425
  "options": {
1372
1426
  "--limit": {
1373
1427
  "in": ["max"],
1374
- "reason": "Telegram's Bot API cannot list a chat's members, only its admins and a count"
1428
+ "reason": "Telegram's Bot API cannot list a chat's members, only its admins and a count; WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1375
1429
  },
1376
1430
  "--marker": {
1377
1431
  "in": ["max"],
1378
- "reason": "Telegram's Bot API cannot list a chat's members, only its admins and a count"
1432
+ "reason": "Telegram's Bot API cannot list a chat's members, only its admins and a count; WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1379
1433
  }
1380
- },
1381
- "reason": "Telegram's Bot API cannot list a chat's members, only its admins and a count"
1434
+ }
1382
1435
  },
1383
1436
  "bot chats members remove": {
1384
- "in": "all",
1437
+ "in": ["max", "tg"],
1438
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1385
1439
  "options": {
1386
- "--block": "all"
1440
+ "--block": {
1441
+ "in": ["max", "tg"],
1442
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1443
+ }
1387
1444
  }
1388
1445
  },
1389
1446
  "bot chats moderate": {
1390
- "in": "all",
1447
+ "in": ["max", "tg"],
1448
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1391
1449
  "options": {
1392
- "--allow-dangerous": "all",
1393
- "--dry-run": "all",
1394
- "--max-actions": "all",
1395
- "--no-block": "all",
1396
- "--since-time": "all"
1450
+ "--allow-dangerous": {
1451
+ "in": ["max", "tg"],
1452
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1453
+ },
1454
+ "--dry-run": {
1455
+ "in": ["max", "tg"],
1456
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1457
+ },
1458
+ "--max-actions": {
1459
+ "in": ["max", "tg"],
1460
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1461
+ },
1462
+ "--no-block": {
1463
+ "in": ["max", "tg"],
1464
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1465
+ },
1466
+ "--since-time": {
1467
+ "in": ["max", "tg"],
1468
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1469
+ }
1397
1470
  }
1398
1471
  },
1399
1472
  "bot chats rules": {
1400
- "in": "all"
1473
+ "in": ["max", "tg"],
1474
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1401
1475
  },
1402
1476
  "bot chats rules set": {
1403
- "in": "all"
1477
+ "in": ["max", "tg"],
1478
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1404
1479
  },
1405
1480
  "bot chats rules show": {
1406
- "in": "all"
1481
+ "in": ["max", "tg"],
1482
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1407
1483
  },
1408
1484
  "bot chats rules unset": {
1409
- "in": "all"
1485
+ "in": ["max", "tg"],
1486
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1410
1487
  },
1411
1488
  "bot chats show": {
1412
- "in": "all"
1489
+ "in": ["max", "tg"],
1490
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1413
1491
  },
1414
1492
  "bot commands": {
1415
- "in": "all"
1493
+ "in": ["max", "tg"],
1494
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1416
1495
  },
1417
1496
  "bot commands clear": {
1418
- "in": "all"
1497
+ "in": ["max", "tg"],
1498
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1419
1499
  },
1420
1500
  "bot commands list": {
1421
- "in": "all"
1501
+ "in": ["max", "tg"],
1502
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1422
1503
  },
1423
1504
  "bot commands set": {
1424
- "in": "all"
1505
+ "in": ["max", "tg"],
1506
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1425
1507
  },
1426
1508
  "bot comments": {
1427
1509
  "in": ["max"],
1428
- "reason": "a Telegram channel's comments are messages in a separate discussion group, reached by ids only an update gives"
1510
+ "reason": "a Telegram channel's comments are messages in a separate discussion group, reached by ids only an update gives; WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1429
1511
  },
1430
1512
  "bot contacts": {
1431
- "in": "all"
1513
+ "in": ["max", "tg"],
1514
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1432
1515
  },
1433
1516
  "bot contacts show": {
1434
- "in": "all",
1517
+ "in": ["max", "tg"],
1518
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1435
1519
  "options": {
1436
- "--all-bots": "all",
1437
- "--bots": "all",
1438
- "--limit": "all",
1439
- "--sync-first": "all"
1520
+ "--all-bots": {
1521
+ "in": ["max", "tg"],
1522
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1523
+ },
1524
+ "--bots": {
1525
+ "in": ["max", "tg"],
1526
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1527
+ },
1528
+ "--limit": {
1529
+ "in": ["max", "tg"],
1530
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1531
+ },
1532
+ "--sync-first": {
1533
+ "in": ["max", "tg"],
1534
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1535
+ }
1440
1536
  }
1441
1537
  },
1442
1538
  "bot list": {
1443
- "in": "all",
1539
+ "in": ["max", "tg"],
1540
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1444
1541
  "options": {
1445
- "--check": "all"
1542
+ "--check": {
1543
+ "in": ["max", "tg"],
1544
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1545
+ }
1446
1546
  }
1447
1547
  },
1448
1548
  "bot mcp": {
1449
- "in": "all",
1549
+ "in": ["max", "tg"],
1550
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1450
1551
  "options": {}
1451
1552
  },
1452
1553
  "bot mcp config": {
1453
- "in": "all",
1554
+ "in": ["max", "tg"],
1555
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1454
1556
  "options": {}
1455
1557
  },
1456
1558
  "bot me": {
1457
- "in": "all"
1559
+ "in": ["max", "tg"],
1560
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1458
1561
  },
1459
1562
  "bot messages": {
1460
- "in": "all"
1563
+ "in": ["max", "tg"],
1564
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1461
1565
  },
1462
1566
  "bot messages between": {
1463
- "in": "all",
1567
+ "in": ["max", "tg"],
1568
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1464
1569
  "options": {
1465
- "--all-bots": "all",
1466
- "--bots": "all",
1467
- "--limit": "all"
1570
+ "--all-bots": {
1571
+ "in": ["max", "tg"],
1572
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1573
+ },
1574
+ "--bots": {
1575
+ "in": ["max", "tg"],
1576
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1577
+ },
1578
+ "--limit": {
1579
+ "in": ["max", "tg"],
1580
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1581
+ }
1468
1582
  }
1469
1583
  },
1470
1584
  "bot messages delete": {
1471
- "in": "all",
1585
+ "in": ["max", "tg"],
1586
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1472
1587
  "options": {
1473
- "--allow-dangerous": "all"
1588
+ "--allow-dangerous": {
1589
+ "in": ["max", "tg"],
1590
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1591
+ }
1474
1592
  }
1475
1593
  },
1476
1594
  "bot messages edit": {
1477
- "in": "all",
1595
+ "in": ["max", "tg"],
1596
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1478
1597
  "options": {
1479
- "--html": "all",
1480
- "--md": "all"
1598
+ "--html": {
1599
+ "in": ["max", "tg"],
1600
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1601
+ },
1602
+ "--md": {
1603
+ "in": ["max", "tg"],
1604
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1605
+ }
1481
1606
  }
1482
1607
  },
1483
1608
  "bot messages list": {
1484
- "in": "all",
1609
+ "in": ["max", "tg"],
1610
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1485
1611
  "options": {
1486
- "--limit": "all"
1612
+ "--limit": {
1613
+ "in": ["max", "tg"],
1614
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1615
+ }
1487
1616
  }
1488
1617
  },
1489
1618
  "bot messages pin": {
1490
- "in": "all",
1619
+ "in": ["max", "tg"],
1620
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1491
1621
  "options": {
1492
- "--notify": "all"
1622
+ "--notify": {
1623
+ "in": ["max", "tg"],
1624
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1625
+ }
1493
1626
  }
1494
1627
  },
1495
1628
  "bot messages send": {
1496
- "in": "all",
1629
+ "in": ["max", "tg"],
1630
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1497
1631
  "options": {
1498
- "--allow-any-file": "all",
1499
- "--as-file": "all",
1500
- "--file": "all",
1501
- "--html": "all",
1502
- "--md": "all",
1503
- "--photo": "all",
1504
- "--reply-to": "all",
1505
- "--silent": "all",
1506
- "--voice": "all"
1632
+ "--allow-any-file": {
1633
+ "in": ["max", "tg"],
1634
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1635
+ },
1636
+ "--as-file": {
1637
+ "in": ["max", "tg"],
1638
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1639
+ },
1640
+ "--file": {
1641
+ "in": ["max", "tg"],
1642
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1643
+ },
1644
+ "--html": {
1645
+ "in": ["max", "tg"],
1646
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1647
+ },
1648
+ "--md": {
1649
+ "in": ["max", "tg"],
1650
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1651
+ },
1652
+ "--photo": {
1653
+ "in": ["max", "tg"],
1654
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1655
+ },
1656
+ "--reply-to": {
1657
+ "in": ["max", "tg"],
1658
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1659
+ },
1660
+ "--silent": {
1661
+ "in": ["max", "tg"],
1662
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1663
+ },
1664
+ "--voice": {
1665
+ "in": ["max", "tg"],
1666
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1667
+ }
1507
1668
  }
1508
1669
  },
1509
1670
  "bot messages show": {
1510
- "in": "all"
1671
+ "in": ["max", "tg"],
1672
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1511
1673
  },
1512
1674
  "bot messages unpin": {
1513
- "in": "all"
1675
+ "in": ["max", "tg"],
1676
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1514
1677
  },
1515
1678
  "bot recipients": {
1516
- "in": "all"
1679
+ "in": ["max", "tg"],
1680
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1517
1681
  },
1518
1682
  "bot recipients add": {
1519
- "in": "all"
1683
+ "in": ["max", "tg"],
1684
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1520
1685
  },
1521
1686
  "bot recipients clear": {
1522
- "in": "all"
1687
+ "in": ["max", "tg"],
1688
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1523
1689
  },
1524
1690
  "bot recipients list": {
1525
- "in": "all"
1691
+ "in": ["max", "tg"],
1692
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1526
1693
  },
1527
1694
  "bot recipients remove": {
1528
- "in": "all"
1695
+ "in": ["max", "tg"],
1696
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1529
1697
  },
1530
1698
  "bot search": {
1531
- "in": "all"
1699
+ "in": ["max", "tg"],
1700
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1532
1701
  },
1533
1702
  "bot search messages": {
1534
- "in": "all",
1703
+ "in": ["max", "tg"],
1704
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1535
1705
  "options": {
1536
- "--all-bots": "all",
1537
- "--bots": "all",
1538
- "--from": "all",
1539
- "--limit": "all",
1540
- "--newest": "all",
1541
- "--page": "all"
1706
+ "--all-bots": {
1707
+ "in": ["max", "tg"],
1708
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1709
+ },
1710
+ "--bots": {
1711
+ "in": ["max", "tg"],
1712
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1713
+ },
1714
+ "--from": {
1715
+ "in": ["max", "tg"],
1716
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1717
+ },
1718
+ "--limit": {
1719
+ "in": ["max", "tg"],
1720
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1721
+ },
1722
+ "--newest": {
1723
+ "in": ["max", "tg"],
1724
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1725
+ },
1726
+ "--page": {
1727
+ "in": ["max", "tg"],
1728
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1729
+ }
1542
1730
  }
1543
1731
  },
1544
1732
  "bot sends": {
1545
- "in": "all"
1733
+ "in": ["max", "tg"],
1734
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1546
1735
  },
1547
1736
  "bot sends list": {
1548
- "in": "all"
1737
+ "in": ["max", "tg"],
1738
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1549
1739
  },
1550
1740
  "bot store": {
1551
- "in": "all"
1741
+ "in": ["max", "tg"],
1742
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1552
1743
  },
1553
1744
  "bot store fetch": {
1554
- "in": "all",
1745
+ "in": ["max", "tg"],
1746
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1555
1747
  "options": {
1556
- "--last": "all",
1557
- "--limit": "all",
1558
- "--page-size": "all",
1559
- "--pause": "all",
1560
- "--since-time": "all",
1748
+ "--last": {
1749
+ "in": ["max", "tg"],
1750
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1751
+ },
1752
+ "--limit": {
1753
+ "in": ["max", "tg"],
1754
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1755
+ },
1756
+ "--page-size": {
1757
+ "in": ["max", "tg"],
1758
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1759
+ },
1760
+ "--pause": {
1761
+ "in": ["max", "tg"],
1762
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1763
+ },
1764
+ "--since-time": {
1765
+ "in": ["max", "tg"],
1766
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1767
+ },
1561
1768
  "--until-id": {
1562
1769
  "in": ["tg"],
1563
- "reason": "Telegram bots read message numbers and need a starting link when none is known; MAX pages chat history directly"
1770
+ "reason": "Telegram bots read message numbers and need a starting link when none is known; MAX pages chat history directly; WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1564
1771
  }
1565
1772
  }
1566
1773
  },
1567
1774
  "bot uploads": {
1568
1775
  "in": ["max"],
1569
- "reason": "Telegram has no upload-only step: a file goes up with the message that carries it"
1776
+ "reason": "Telegram has no upload-only step: a file goes up with the message that carries it; WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1570
1777
  },
1571
1778
  "bot watch": {
1572
- "in": "all",
1779
+ "in": ["max", "tg"],
1780
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1573
1781
  "options": {
1574
- "--events": "all",
1575
- "--types": "all"
1782
+ "--events": {
1783
+ "in": ["max", "tg"],
1784
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1785
+ },
1786
+ "--types": {
1787
+ "in": ["max", "tg"],
1788
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1789
+ }
1576
1790
  }
1577
1791
  },
1578
1792
  "bot webhooks": {
1579
- "in": "all"
1793
+ "in": ["max", "tg"],
1794
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1580
1795
  },
1581
1796
  "bot webhooks delete": {
1582
- "in": "all"
1797
+ "in": ["max", "tg"],
1798
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1583
1799
  },
1584
1800
  "bot webhooks list": {
1585
- "in": "all"
1801
+ "in": ["max", "tg"],
1802
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1586
1803
  },
1587
1804
  "bot webhooks set": {
1588
- "in": "all",
1805
+ "in": ["max", "tg"],
1806
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account",
1589
1807
  "options": {
1590
1808
  "--add": {
1591
1809
  "in": ["max"],
1592
- "reason": "a Telegram bot holds one webhook address"
1810
+ "reason": "a Telegram bot holds one webhook address; WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1811
+ },
1812
+ "--secret-stdin": {
1813
+ "in": ["max", "tg"],
1814
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1593
1815
  },
1594
- "--secret-stdin": "all",
1595
- "--types": "all"
1816
+ "--types": {
1817
+ "in": ["max", "tg"],
1818
+ "reason": "WhatsApp's bots are the Business Platform's, on a business number; wa links a personal account"
1819
+ }
1596
1820
  }
1597
1821
  },
1598
1822
  "calls": {
1599
1823
  "in": ["max"],
1600
1824
  "planned": {
1601
- "tg": "tg-cli backlog: server reads (calls, chat media, privacy)"
1825
+ "tg": "tg-cli backlog: server reads (calls, chat media, privacy)",
1826
+ "wa": "wa backlog: calls"
1602
1827
  }
1603
1828
  },
1604
1829
  "calls list": {
1605
1830
  "in": ["max"],
1606
1831
  "planned": {
1607
- "tg": "tg-cli backlog: server reads (calls, chat media, privacy)"
1832
+ "tg": "tg-cli backlog: server reads (calls, chat media, privacy)",
1833
+ "wa": "wa backlog: calls"
1608
1834
  },
1609
1835
  "options": {
1610
1836
  "--limit": {
1611
1837
  "in": ["max"],
1612
1838
  "planned": {
1613
- "tg": "tg-cli backlog: server reads (calls, chat media, privacy)"
1839
+ "tg": "tg-cli backlog: server reads (calls, chat media, privacy)",
1840
+ "wa": "wa backlog: calls"
1614
1841
  }
1615
1842
  }
1616
1843
  }
@@ -1624,7 +1851,12 @@
1624
1851
  "chats admins add": {
1625
1852
  "in": "all",
1626
1853
  "options": {
1627
- "--can": "all"
1854
+ "--can": {
1855
+ "in": ["max", "tg"],
1856
+ "planned": {
1857
+ "wa": "wa's next cli-core bump (pickAdminRights: false drops --can)"
1858
+ }
1859
+ }
1628
1860
  }
1629
1861
  },
1630
1862
  "chats admins remove": {
@@ -1633,13 +1865,15 @@
1633
1865
  "chats app": {
1634
1866
  "in": ["max"],
1635
1867
  "planned": {
1636
- "tg": "tg-cli backlog: start a bot, open its mini app"
1868
+ "tg": "tg-cli backlog: start a bot, open its mini app",
1869
+ "wa": "wa backlog: not assessed yet"
1637
1870
  },
1638
1871
  "options": {
1639
1872
  "--start": {
1640
1873
  "in": ["max"],
1641
1874
  "planned": {
1642
- "tg": "tg-cli backlog: start a bot, open its mini app"
1875
+ "tg": "tg-cli backlog: start a bot, open its mini app",
1876
+ "wa": "wa backlog: not assessed yet"
1643
1877
  }
1644
1878
  }
1645
1879
  }
@@ -1647,13 +1881,15 @@
1647
1881
  "chats clear": {
1648
1882
  "in": ["max"],
1649
1883
  "planned": {
1650
- "tg": "tg-cli backlog: chats delete and clear"
1884
+ "tg": "tg-cli backlog: chats delete and clear",
1885
+ "wa": "wa backlog: chats delete and clear"
1651
1886
  },
1652
1887
  "options": {
1653
1888
  "--allow-dangerous": {
1654
1889
  "in": ["max"],
1655
1890
  "planned": {
1656
- "tg": "tg-cli backlog: chats delete and clear"
1891
+ "tg": "tg-cli backlog: chats delete and clear",
1892
+ "wa": "wa backlog: chats delete and clear"
1657
1893
  }
1658
1894
  }
1659
1895
  }
@@ -1667,13 +1903,15 @@
1667
1903
  "chats delete": {
1668
1904
  "in": ["max"],
1669
1905
  "planned": {
1670
- "tg": "tg-cli backlog: chats delete and clear"
1906
+ "tg": "tg-cli backlog: chats delete and clear",
1907
+ "wa": "wa backlog: chats delete and clear"
1671
1908
  },
1672
1909
  "options": {
1673
1910
  "--allow-dangerous": {
1674
1911
  "in": ["max"],
1675
1912
  "planned": {
1676
- "tg": "tg-cli backlog: chats delete and clear"
1913
+ "tg": "tg-cli backlog: chats delete and clear",
1914
+ "wa": "wa backlog: chats delete and clear"
1677
1915
  }
1678
1916
  }
1679
1917
  }
@@ -1684,8 +1922,12 @@
1684
1922
  "chats documents list": {
1685
1923
  "in": "all",
1686
1924
  "options": {
1687
- "--limit": { "in": "all" },
1688
- "--page": { "in": "all" }
1925
+ "--limit": {
1926
+ "in": "all"
1927
+ },
1928
+ "--page": {
1929
+ "in": "all"
1930
+ }
1689
1931
  }
1690
1932
  },
1691
1933
  "chats events": {
@@ -1700,23 +1942,38 @@
1700
1942
  "--chat": "all",
1701
1943
  "--emoji": {
1702
1944
  "in": ["tg"],
1703
- "reason": "max-cli folders hold only the chats named in them"
1945
+ "reason": "max-cli folders hold only the chats named in them",
1946
+ "planned": {
1947
+ "wa": "wa backlog: not assessed yet"
1948
+ }
1704
1949
  },
1705
1950
  "--exclude-chat": {
1706
1951
  "in": ["tg"],
1707
- "reason": "max-cli folders hold only the chats named in them"
1952
+ "reason": "max-cli folders hold only the chats named in them",
1953
+ "planned": {
1954
+ "wa": "wa backlog: not assessed yet"
1955
+ }
1708
1956
  },
1709
1957
  "--include": {
1710
1958
  "in": ["tg"],
1711
- "reason": "max-cli folders hold only the chats named in them"
1959
+ "reason": "max-cli folders hold only the chats named in them",
1960
+ "planned": {
1961
+ "wa": "wa backlog: not assessed yet"
1962
+ }
1712
1963
  },
1713
1964
  "--pin": {
1714
1965
  "in": ["tg"],
1715
- "reason": "max-cli folders hold only the chats named in them"
1966
+ "reason": "max-cli folders hold only the chats named in them",
1967
+ "planned": {
1968
+ "wa": "wa backlog: not assessed yet"
1969
+ }
1716
1970
  },
1717
1971
  "--skip": {
1718
1972
  "in": ["tg"],
1719
- "reason": "max-cli folders hold only the chats named in them"
1973
+ "reason": "max-cli folders hold only the chats named in them",
1974
+ "planned": {
1975
+ "wa": "wa backlog: not assessed yet"
1976
+ }
1720
1977
  }
1721
1978
  }
1722
1979
  },
@@ -1725,13 +1982,17 @@
1725
1982
  },
1726
1983
  "chats folders join": {
1727
1984
  "in": ["tg"],
1728
- "reason": "max-cli does not map folders shared by a link yet"
1985
+ "reason": "max-cli does not map folders shared by a link yet",
1986
+ "planned": {
1987
+ "wa": "wa backlog: not assessed yet"
1988
+ }
1729
1989
  },
1730
1990
  "chats folders list": {
1731
1991
  "in": "all"
1732
1992
  },
1733
1993
  "chats folders order": {
1734
- "in": "all"
1994
+ "in": ["max", "tg"],
1995
+ "reason": "wa declares folderOrder: false — WhatsApp's chat lists have no order a linked device sets"
1735
1996
  },
1736
1997
  "chats folders show": {
1737
1998
  "in": "all"
@@ -1742,24 +2003,39 @@
1742
2003
  "--add": "all",
1743
2004
  "--emoji": {
1744
2005
  "in": ["tg"],
1745
- "reason": "max-cli folders hold only the chats named in them"
2006
+ "reason": "max-cli folders hold only the chats named in them",
2007
+ "planned": {
2008
+ "wa": "wa backlog: not assessed yet"
2009
+ }
1746
2010
  },
1747
2011
  "--exclude-chat": {
1748
2012
  "in": ["tg"],
1749
- "reason": "max-cli folders hold only the chats named in them"
2013
+ "reason": "max-cli folders hold only the chats named in them",
2014
+ "planned": {
2015
+ "wa": "wa backlog: not assessed yet"
2016
+ }
1750
2017
  },
1751
2018
  "--include": {
1752
2019
  "in": ["tg"],
1753
- "reason": "max-cli folders hold only the chats named in them"
2020
+ "reason": "max-cli folders hold only the chats named in them",
2021
+ "planned": {
2022
+ "wa": "wa backlog: not assessed yet"
2023
+ }
1754
2024
  },
1755
2025
  "--pin": {
1756
2026
  "in": ["tg"],
1757
- "reason": "max-cli folders hold only the chats named in them"
2027
+ "reason": "max-cli folders hold only the chats named in them",
2028
+ "planned": {
2029
+ "wa": "wa backlog: not assessed yet"
2030
+ }
1758
2031
  },
1759
2032
  "--remove": "all",
1760
2033
  "--skip": {
1761
2034
  "in": ["tg"],
1762
- "reason": "max-cli folders hold only the chats named in them"
2035
+ "reason": "max-cli folders hold only the chats named in them",
2036
+ "planned": {
2037
+ "wa": "wa backlog: not assessed yet"
2038
+ }
1763
2039
  },
1764
2040
  "--title": "all"
1765
2041
  }
@@ -1778,61 +2054,61 @@
1778
2054
  },
1779
2055
  "chats link create": {
1780
2056
  "in": ["tg"],
2057
+ "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke; WhatsApp has one invite link per group, which chats link reset replaces",
1781
2058
  "options": {
1782
2059
  "--approval": {
1783
2060
  "in": ["tg"],
1784
- "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke"
2061
+ "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke; WhatsApp has one invite link per group, which chats link reset replaces"
1785
2062
  },
1786
2063
  "--expire-time": {
1787
2064
  "in": ["tg"],
1788
- "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke"
2065
+ "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke; WhatsApp has one invite link per group, which chats link reset replaces"
1789
2066
  },
1790
2067
  "--max-uses": {
1791
2068
  "in": ["tg"],
1792
- "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke"
2069
+ "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke; WhatsApp has one invite link per group, which chats link reset replaces"
1793
2070
  }
1794
- },
1795
- "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke"
2071
+ }
1796
2072
  },
1797
2073
  "chats link list": {
1798
2074
  "in": ["tg"],
2075
+ "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke; WhatsApp has one invite link per group, which chats link reset replaces",
1799
2076
  "options": {
1800
2077
  "--limit": {
1801
2078
  "in": ["tg"],
1802
- "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke"
2079
+ "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke; WhatsApp has one invite link per group, which chats link reset replaces"
1803
2080
  }
1804
- },
1805
- "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke"
2081
+ }
1806
2082
  },
1807
2083
  "chats link reset": {
1808
2084
  "in": "all"
1809
2085
  },
1810
2086
  "chats link revoke": {
1811
2087
  "in": ["tg"],
1812
- "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke"
2088
+ "reason": "MAX's protocol only resets a group's link: PyMax 53103f0 has rework_invite_link (CHAT_UPDATE, revokePrivateLink) and no create, list or revoke; WhatsApp has one invite link per group, which chats link reset replaces"
1813
2089
  },
1814
2090
  "chats link show": {
1815
2091
  "in": "all"
1816
2092
  },
1817
2093
  "chats link update": {
1818
2094
  "in": ["tg"],
1819
- "reason": "max-cli has no way to change an invite link",
2095
+ "reason": "max-cli has no way to change an invite link; WhatsApp has one invite link per group, which chats link reset replaces",
1820
2096
  "options": {
1821
2097
  "--approval": {
1822
2098
  "in": ["tg"],
1823
- "reason": "max-cli has no way to change an invite link"
2099
+ "reason": "max-cli has no way to change an invite link; WhatsApp has one invite link per group, which chats link reset replaces"
1824
2100
  },
1825
2101
  "--expire-time": {
1826
2102
  "in": ["tg"],
1827
- "reason": "max-cli has no way to change an invite link"
2103
+ "reason": "max-cli has no way to change an invite link; WhatsApp has one invite link per group, which chats link reset replaces"
1828
2104
  },
1829
2105
  "--max-uses": {
1830
2106
  "in": ["tg"],
1831
- "reason": "max-cli has no way to change an invite link"
2107
+ "reason": "max-cli has no way to change an invite link; WhatsApp has one invite link per group, which chats link reset replaces"
1832
2108
  },
1833
2109
  "--no-approval": {
1834
2110
  "in": ["tg"],
1835
- "reason": "max-cli has no way to change an invite link"
2111
+ "reason": "max-cli has no way to change an invite link; WhatsApp has one invite link per group, which chats link reset replaces"
1836
2112
  }
1837
2113
  }
1838
2114
  },
@@ -1849,7 +2125,7 @@
1849
2125
  "options": {
1850
2126
  "--topic": {
1851
2127
  "in": ["tg"],
1852
- "reason": "MAX has no forum topics"
2128
+ "reason": "MAX has no forum topics; WhatsApp has no forum topics"
1853
2129
  },
1854
2130
  "--until-id": "all"
1855
2131
  }
@@ -1857,25 +2133,29 @@
1857
2133
  "chats media": {
1858
2134
  "in": ["max"],
1859
2135
  "planned": {
1860
- "tg": "tg-cli backlog: server reads (calls, chat media, privacy)"
2136
+ "tg": "tg-cli backlog: server reads (calls, chat media, privacy)",
2137
+ "wa": "wa backlog: not assessed yet"
1861
2138
  },
1862
2139
  "options": {
1863
2140
  "--cursor": {
1864
2141
  "in": ["max"],
1865
2142
  "planned": {
1866
- "tg": "tg-cli backlog: server reads (calls, chat media, privacy)"
2143
+ "tg": "tg-cli backlog: server reads (calls, chat media, privacy)",
2144
+ "wa": "wa backlog: not assessed yet"
1867
2145
  }
1868
2146
  },
1869
2147
  "--limit": {
1870
2148
  "in": ["max"],
1871
2149
  "planned": {
1872
- "tg": "tg-cli backlog: server reads (calls, chat media, privacy)"
2150
+ "tg": "tg-cli backlog: server reads (calls, chat media, privacy)",
2151
+ "wa": "wa backlog: not assessed yet"
1873
2152
  }
1874
2153
  },
1875
2154
  "--type": {
1876
2155
  "in": ["max"],
1877
2156
  "planned": {
1878
- "tg": "tg-cli backlog: server reads (calls, chat media, privacy)"
2157
+ "tg": "tg-cli backlog: server reads (calls, chat media, privacy)",
2158
+ "wa": "wa backlog: not assessed yet"
1879
2159
  }
1880
2160
  }
1881
2161
  }
@@ -1888,7 +2168,7 @@
1888
2168
  "options": {
1889
2169
  "--history": {
1890
2170
  "in": ["max"],
1891
- "reason": "Telegram shows history to new members only in legacy groups, and P2 makes supergroups"
2171
+ "reason": "Telegram shows history to new members only in legacy groups, and P2 makes supergroups; WhatsApp does not show earlier messages to people added"
1892
2172
  }
1893
2173
  }
1894
2174
  },
@@ -1932,13 +2212,15 @@
1932
2212
  "chats mute": {
1933
2213
  "in": ["max"],
1934
2214
  "planned": {
1935
- "tg": "tg-cli backlog: settings writes (mute, privacy)"
2215
+ "tg": "tg-cli backlog: settings writes (mute, privacy)",
2216
+ "wa": "wa backlog: chats mute"
1936
2217
  },
1937
2218
  "options": {
1938
2219
  "--until": {
1939
2220
  "in": ["max"],
1940
2221
  "planned": {
1941
- "tg": "tg-cli backlog: settings writes (mute, privacy)"
2222
+ "tg": "tg-cli backlog: settings writes (mute, privacy)",
2223
+ "wa": "wa backlog: chats mute"
1942
2224
  }
1943
2225
  }
1944
2226
  }
@@ -1951,11 +2233,11 @@
1951
2233
  "options": {
1952
2234
  "--all": {
1953
2235
  "in": ["tg"],
1954
- "reason": "MAX answers one join request at a time"
2236
+ "reason": "MAX answers one join request at a time; WhatsApp answers one join request at a time"
1955
2237
  },
1956
2238
  "--link": {
1957
2239
  "in": ["tg"],
1958
- "reason": "MAX answers one join request at a time"
2240
+ "reason": "MAX answers one join request at a time; WhatsApp answers one join request at a time"
1959
2241
  }
1960
2242
  }
1961
2243
  },
@@ -1964,11 +2246,11 @@
1964
2246
  "options": {
1965
2247
  "--all": {
1966
2248
  "in": ["tg"],
1967
- "reason": "MAX answers one join request at a time"
2249
+ "reason": "MAX answers one join request at a time; WhatsApp answers one join request at a time"
1968
2250
  },
1969
2251
  "--link": {
1970
2252
  "in": ["tg"],
1971
- "reason": "MAX answers one join request at a time"
2253
+ "reason": "MAX answers one join request at a time; WhatsApp answers one join request at a time"
1972
2254
  }
1973
2255
  }
1974
2256
  },
@@ -1992,7 +2274,7 @@
1992
2274
  "in": "all"
1993
2275
  },
1994
2276
  "chats send-as": {
1995
- "in": ["tg"],
2277
+ "in": ["tg", "wa"],
1996
2278
  "reason": "MAX has no identities to post as other than the account itself"
1997
2279
  },
1998
2280
  "chats show": {
@@ -2001,13 +2283,15 @@
2001
2283
  "chats start": {
2002
2284
  "in": ["max"],
2003
2285
  "planned": {
2004
- "tg": "tg-cli backlog: start a bot, open its mini app"
2286
+ "tg": "tg-cli backlog: start a bot, open its mini app",
2287
+ "wa": "wa backlog: not assessed yet"
2005
2288
  },
2006
2289
  "options": {
2007
2290
  "--start": {
2008
2291
  "in": ["max"],
2009
2292
  "planned": {
2010
- "tg": "tg-cli backlog: start a bot, open its mini app"
2293
+ "tg": "tg-cli backlog: start a bot, open its mini app",
2294
+ "wa": "wa backlog: not assessed yet"
2011
2295
  }
2012
2296
  }
2013
2297
  }
@@ -2030,35 +2314,64 @@
2030
2314
  "chats unmute": {
2031
2315
  "in": ["max"],
2032
2316
  "planned": {
2033
- "tg": "tg-cli backlog: settings writes (mute, privacy)"
2317
+ "tg": "tg-cli backlog: settings writes (mute, privacy)",
2318
+ "wa": "wa backlog: chats mute"
2034
2319
  }
2035
2320
  },
2036
2321
  "chats update": {
2037
2322
  "in": "all",
2038
2323
  "options": {
2039
- "--all-can-pin": "all",
2324
+ "--all-can-pin": {
2325
+ "in": ["max", "tg"],
2326
+ "reason": "WhatsApp has no pin switch of its own: who may pin follows who may edit the group's info"
2327
+ },
2040
2328
  "--description": "all",
2329
+ "--disappear-time": {
2330
+ "in": [],
2331
+ "planned": {
2332
+ "tg": "tg-cli backlog: Telegram's default banned rights (send, change info) and auto-delete timer",
2333
+ "wa": "wa's next cli-core bump"
2334
+ },
2335
+ "reason": "MAX has no such switch: PyMax's ChatOption has five, and cli-core names them all"
2336
+ },
2041
2337
  "--join-approval": {
2042
- "in": ["tg"],
2338
+ "in": ["tg", "wa"],
2043
2339
  "reason": "MAX groups have no join approval"
2044
2340
  },
2045
2341
  "--members-see-link": {
2046
2342
  "in": ["max"],
2047
- "reason": "Telegram shows a group's invite link to whoever may invite, not by a setting of its own"
2343
+ "reason": "Telegram shows a group's invite link to whoever may invite, not by a setting of its own; WhatsApp has no such switch"
2048
2344
  },
2049
2345
  "--only-admins-add": "all",
2050
2346
  "--only-admins-call": {
2051
2347
  "in": ["max"],
2052
- "reason": "Telegram has no setting for who may start a call"
2348
+ "reason": "Telegram has no setting for who may start a call; WhatsApp has no such switch"
2349
+ },
2350
+ "--only-admins-edit-info": {
2351
+ "in": [],
2352
+ "planned": {
2353
+ "tg": "tg-cli backlog: Telegram's default banned rights (send, change info) and auto-delete timer",
2354
+ "wa": "wa's next cli-core bump"
2355
+ },
2356
+ "reason": "MAX has no such switch: PyMax's ChatOption has five, and cli-core names them all"
2357
+ },
2358
+ "--only-admins-send": {
2359
+ "in": [],
2360
+ "planned": {
2361
+ "tg": "tg-cli backlog: Telegram's default banned rights (send, change info) and auto-delete timer",
2362
+ "wa": "wa's next cli-core bump"
2363
+ },
2364
+ "reason": "MAX has no such switch: PyMax's ChatOption has five, and cli-core names them all"
2053
2365
  },
2054
2366
  "--only-owner-edits-info": {
2055
2367
  "in": ["max"],
2056
- "reason": "Telegram lets admins with the right change the info, never only the owner; a different meaning gets a different name"
2368
+ "reason": "Telegram lets admins with the right change the info, never only the owner; a different meaning gets a different name; WhatsApp's switch lets every admin edit the info: --only-admins-edit-info"
2057
2369
  },
2058
2370
  "--photo": {
2059
2371
  "in": ["max"],
2060
2372
  "planned": {
2061
- "tg": "tg-cli backlog: chats update --photo"
2373
+ "tg": "tg-cli backlog: chats update --photo",
2374
+ "wa": "wa backlog: the group photo"
2062
2375
  }
2063
2376
  },
2064
2377
  "--title": "all"
@@ -2128,7 +2441,10 @@
2128
2441
  "--chat": "all",
2129
2442
  "--limit": "all",
2130
2443
  "--since-time": "all",
2131
- "--sync-first": "all"
2444
+ "--sync-first": {
2445
+ "in": ["max", "tg"],
2446
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
2447
+ }
2132
2448
  }
2133
2449
  },
2134
2450
  "contacts import": {
@@ -2404,10 +2720,16 @@
2404
2720
  }
2405
2721
  },
2406
2722
  "flood": {
2407
- "in": "all"
2723
+ "in": ["max", "tg"],
2724
+ "planned": {
2725
+ "wa": "wa backlog: mount the shared flood command"
2726
+ }
2408
2727
  },
2409
2728
  "flood clear": {
2410
- "in": "all"
2729
+ "in": ["max", "tg"],
2730
+ "planned": {
2731
+ "wa": "wa backlog: mount the shared flood command"
2732
+ }
2411
2733
  },
2412
2734
  "images": {
2413
2735
  "in": "all"
@@ -2460,7 +2782,8 @@
2460
2782
  "in": [],
2461
2783
  "planned": {
2462
2784
  "max": "P7",
2463
- "tg": "P7"
2785
+ "tg": "P7",
2786
+ "wa": "P7"
2464
2787
  }
2465
2788
  }
2466
2789
  }
@@ -2473,7 +2796,8 @@
2473
2796
  "in": [],
2474
2797
  "planned": {
2475
2798
  "max": "P7",
2476
- "tg": "P7"
2799
+ "tg": "P7",
2800
+ "wa": "P7"
2477
2801
  }
2478
2802
  }
2479
2803
  }
@@ -2492,28 +2816,28 @@
2492
2816
  }
2493
2817
  },
2494
2818
  "mentions": {
2495
- "in": [],
2819
+ "in": ["wa"],
2496
2820
  "planned": {
2497
2821
  "max": "mentions (docs/dev/mentions-plan.md)",
2498
2822
  "tg": "mentions (docs/dev/mentions-plan.md)"
2499
2823
  }
2500
2824
  },
2501
2825
  "mentions confirm": {
2502
- "in": [],
2826
+ "in": ["wa"],
2503
2827
  "planned": {
2504
2828
  "max": "mentions (docs/dev/mentions-plan.md)",
2505
2829
  "tg": "mentions (docs/dev/mentions-plan.md)"
2506
2830
  },
2507
2831
  "options": {
2508
2832
  "--all-in-chat": {
2509
- "in": [],
2833
+ "in": ["wa"],
2510
2834
  "planned": {
2511
2835
  "max": "mentions (docs/dev/mentions-plan.md)",
2512
2836
  "tg": "mentions (docs/dev/mentions-plan.md)"
2513
2837
  }
2514
2838
  },
2515
2839
  "--as-owner": {
2516
- "in": [],
2840
+ "in": ["wa"],
2517
2841
  "planned": {
2518
2842
  "max": "mentions (docs/dev/mentions-plan.md)",
2519
2843
  "tg": "mentions (docs/dev/mentions-plan.md)"
@@ -2522,21 +2846,21 @@
2522
2846
  }
2523
2847
  },
2524
2848
  "mentions domains": {
2525
- "in": [],
2849
+ "in": ["wa"],
2526
2850
  "planned": {
2527
2851
  "max": "mentions (docs/dev/mentions-plan.md)",
2528
2852
  "tg": "mentions (docs/dev/mentions-plan.md)"
2529
2853
  },
2530
2854
  "options": {
2531
2855
  "--limit": {
2532
- "in": [],
2856
+ "in": ["wa"],
2533
2857
  "planned": {
2534
2858
  "max": "mentions (docs/dev/mentions-plan.md)",
2535
2859
  "tg": "mentions (docs/dev/mentions-plan.md)"
2536
2860
  }
2537
2861
  },
2538
2862
  "--page": {
2539
- "in": [],
2863
+ "in": ["wa"],
2540
2864
  "planned": {
2541
2865
  "max": "mentions (docs/dev/mentions-plan.md)",
2542
2866
  "tg": "mentions (docs/dev/mentions-plan.md)"
@@ -2545,28 +2869,28 @@
2545
2869
  }
2546
2870
  },
2547
2871
  "mentions list": {
2548
- "in": [],
2872
+ "in": ["wa"],
2549
2873
  "planned": {
2550
2874
  "max": "mentions (docs/dev/mentions-plan.md)",
2551
2875
  "tg": "mentions (docs/dev/mentions-plan.md)"
2552
2876
  },
2553
2877
  "options": {
2554
2878
  "--limit": {
2555
- "in": [],
2879
+ "in": ["wa"],
2556
2880
  "planned": {
2557
2881
  "max": "mentions (docs/dev/mentions-plan.md)",
2558
2882
  "tg": "mentions (docs/dev/mentions-plan.md)"
2559
2883
  }
2560
2884
  },
2561
2885
  "--new": {
2562
- "in": [],
2886
+ "in": ["wa"],
2563
2887
  "planned": {
2564
2888
  "max": "mentions (docs/dev/mentions-plan.md)",
2565
2889
  "tg": "mentions (docs/dev/mentions-plan.md)"
2566
2890
  }
2567
2891
  },
2568
2892
  "--page": {
2569
- "in": [],
2893
+ "in": ["wa"],
2570
2894
  "planned": {
2571
2895
  "max": "mentions (docs/dev/mentions-plan.md)",
2572
2896
  "tg": "mentions (docs/dev/mentions-plan.md)"
@@ -2575,21 +2899,21 @@
2575
2899
  }
2576
2900
  },
2577
2901
  "mentions places": {
2578
- "in": [],
2902
+ "in": ["wa"],
2579
2903
  "planned": {
2580
2904
  "max": "mentions (docs/dev/mentions-plan.md)",
2581
2905
  "tg": "mentions (docs/dev/mentions-plan.md)"
2582
2906
  },
2583
2907
  "options": {
2584
2908
  "--limit": {
2585
- "in": [],
2909
+ "in": ["wa"],
2586
2910
  "planned": {
2587
2911
  "max": "mentions (docs/dev/mentions-plan.md)",
2588
2912
  "tg": "mentions (docs/dev/mentions-plan.md)"
2589
2913
  }
2590
2914
  },
2591
2915
  "--page": {
2592
- "in": [],
2916
+ "in": ["wa"],
2593
2917
  "planned": {
2594
2918
  "max": "mentions (docs/dev/mentions-plan.md)",
2595
2919
  "tg": "mentions (docs/dev/mentions-plan.md)"
@@ -2598,28 +2922,28 @@
2598
2922
  }
2599
2923
  },
2600
2924
  "mentions rebuild": {
2601
- "in": [],
2925
+ "in": ["wa"],
2602
2926
  "planned": {
2603
2927
  "max": "mentions (docs/dev/mentions-plan.md)",
2604
2928
  "tg": "mentions (docs/dev/mentions-plan.md)"
2605
2929
  }
2606
2930
  },
2607
2931
  "mentions reject": {
2608
- "in": [],
2932
+ "in": ["wa"],
2609
2933
  "planned": {
2610
2934
  "max": "mentions (docs/dev/mentions-plan.md)",
2611
2935
  "tg": "mentions (docs/dev/mentions-plan.md)"
2612
2936
  },
2613
2937
  "options": {
2614
2938
  "--all-in-chat": {
2615
- "in": [],
2939
+ "in": ["wa"],
2616
2940
  "planned": {
2617
2941
  "max": "mentions (docs/dev/mentions-plan.md)",
2618
2942
  "tg": "mentions (docs/dev/mentions-plan.md)"
2619
2943
  }
2620
2944
  },
2621
2945
  "--as-owner": {
2622
- "in": [],
2946
+ "in": ["wa"],
2623
2947
  "planned": {
2624
2948
  "max": "mentions (docs/dev/mentions-plan.md)",
2625
2949
  "tg": "mentions (docs/dev/mentions-plan.md)"
@@ -2628,7 +2952,7 @@
2628
2952
  }
2629
2953
  },
2630
2954
  "mentions show": {
2631
- "in": [],
2955
+ "in": ["wa"],
2632
2956
  "planned": {
2633
2957
  "max": "mentions (docs/dev/mentions-plan.md)",
2634
2958
  "tg": "mentions (docs/dev/mentions-plan.md)"
@@ -2638,15 +2962,15 @@
2638
2962
  "in": "all"
2639
2963
  },
2640
2964
  "messages comments": {
2641
- "in": ["tg"],
2965
+ "in": ["tg", "wa"],
2642
2966
  "reason": "MAX personal accounts have no channel comments; MAX's comments are a Bot API path",
2643
2967
  "options": {
2644
2968
  "--cursor": {
2645
- "in": ["tg"],
2969
+ "in": ["tg", "wa"],
2646
2970
  "reason": "MAX personal accounts have no channel comments"
2647
2971
  },
2648
2972
  "--limit": {
2649
- "in": ["tg"],
2973
+ "in": ["tg", "wa"],
2650
2974
  "reason": "MAX personal accounts have no channel comments"
2651
2975
  }
2652
2976
  }
@@ -2700,7 +3024,7 @@
2700
3024
  "options": {
2701
3025
  "--html": {
2702
3026
  "in": ["tg"],
2703
- "reason": "MAX formats a personal message with Markdown only"
3027
+ "reason": "MAX formats a personal message with Markdown only; WhatsApp formats with its own markup, not HTML"
2704
3028
  },
2705
3029
  "--md": "all"
2706
3030
  }
@@ -2721,7 +3045,7 @@
2721
3045
  "--to": "all",
2722
3046
  "--topic": {
2723
3047
  "in": ["tg"],
2724
- "reason": "MAX has no forum topics"
3048
+ "reason": "MAX has no forum topics; WhatsApp has no forum topics"
2725
3049
  }
2726
3050
  }
2727
3051
  },
@@ -2750,7 +3074,8 @@
2750
3074
  "messages press": {
2751
3075
  "in": ["max"],
2752
3076
  "planned": {
2753
- "tg": "tg-cli backlog: press inline buttons"
3077
+ "tg": "tg-cli backlog: press inline buttons",
3078
+ "wa": "wa backlog: not assessed yet"
2754
3079
  }
2755
3080
  },
2756
3081
  "messages scheduled": {
@@ -2764,20 +3089,20 @@
2764
3089
  "--at-time": "all",
2765
3090
  "--caption-above": {
2766
3091
  "in": ["tg"],
2767
- "reason": "MAX has no spoilers or caption placement"
3092
+ "reason": "MAX has no spoilers or caption placement; WhatsApp has no spoilers or caption placement"
2768
3093
  },
2769
3094
  "--comment-to": {
2770
3095
  "in": ["tg"],
2771
- "reason": "MAX personal accounts have no channel comments"
3096
+ "reason": "MAX personal accounts have no channel comments; WhatsApp has no channel comments"
2772
3097
  },
2773
3098
  "--file": "all",
2774
3099
  "--filename": {
2775
- "in": ["tg"],
3100
+ "in": ["tg", "wa"],
2776
3101
  "reason": "MAX names an upload by its path"
2777
3102
  },
2778
3103
  "--html": {
2779
3104
  "in": ["tg"],
2780
- "reason": "MAX formats a personal message with Markdown only"
3105
+ "reason": "MAX formats a personal message with Markdown only; WhatsApp formats with its own markup, not HTML"
2781
3106
  },
2782
3107
  "--md": "all",
2783
3108
  "--no-preview": "all",
@@ -2788,17 +3113,18 @@
2788
3113
  "--silent": "all",
2789
3114
  "--spoiler": {
2790
3115
  "in": ["tg"],
2791
- "reason": "MAX has no spoilers or caption placement"
3116
+ "reason": "MAX has no spoilers or caption placement; WhatsApp has no spoilers or caption placement"
2792
3117
  },
2793
3118
  "--sticker": {
2794
3119
  "in": ["max"],
2795
3120
  "planned": {
2796
- "tg": "tg-cli backlog: stickers"
3121
+ "tg": "tg-cli backlog: stickers",
3122
+ "wa": "wa backlog: stickers"
2797
3123
  }
2798
3124
  },
2799
3125
  "--topic": {
2800
3126
  "in": ["tg"],
2801
- "reason": "MAX has no forum topics"
3127
+ "reason": "MAX has no forum topics; WhatsApp has no forum topics"
2802
3128
  },
2803
3129
  "--voice": "all"
2804
3130
  }
@@ -2830,7 +3156,7 @@
2830
3156
  "in": "all",
2831
3157
  "options": {
2832
3158
  "--local": {
2833
- "in": ["tg"],
3159
+ "in": ["tg", "wa"],
2834
3160
  "reason": "Telegram can transcribe on its side; MAX cannot, so max always uses the local model"
2835
3161
  },
2836
3162
  "--model": "all"
@@ -2840,20 +3166,49 @@
2840
3166
  "in": "all"
2841
3167
  },
2842
3168
  "metadata": {
2843
- "in": "all"
3169
+ "in": ["max", "tg"],
3170
+ "planned": {
3171
+ "wa": "wa backlog: metadata (needs the group read)"
3172
+ }
2844
3173
  },
2845
3174
  "metadata get": {
2846
- "in": "all",
3175
+ "in": ["max", "tg"],
3176
+ "planned": {
3177
+ "wa": "wa backlog: metadata (needs the group read)"
3178
+ },
2847
3179
  "options": {
2848
- "--chat": "all"
3180
+ "--chat": {
3181
+ "in": ["max", "tg"],
3182
+ "planned": {
3183
+ "wa": "wa backlog: metadata (needs the group read)"
3184
+ }
3185
+ }
2849
3186
  }
2850
3187
  },
2851
3188
  "metadata refresh": {
2852
- "in": "all",
3189
+ "in": ["max", "tg"],
3190
+ "planned": {
3191
+ "wa": "wa backlog: metadata (needs the group read)"
3192
+ },
2853
3193
  "options": {
2854
- "--chat": "all",
2855
- "--limit": "all",
2856
- "--only-missing": "all"
3194
+ "--chat": {
3195
+ "in": ["max", "tg"],
3196
+ "planned": {
3197
+ "wa": "wa backlog: metadata (needs the group read)"
3198
+ }
3199
+ },
3200
+ "--limit": {
3201
+ "in": ["max", "tg"],
3202
+ "planned": {
3203
+ "wa": "wa backlog: metadata (needs the group read)"
3204
+ }
3205
+ },
3206
+ "--only-missing": {
3207
+ "in": ["max", "tg"],
3208
+ "planned": {
3209
+ "wa": "wa backlog: metadata (needs the group read)"
3210
+ }
3211
+ }
2857
3212
  }
2858
3213
  },
2859
3214
  "models": {
@@ -2890,58 +3245,129 @@
2890
3245
  "in": "all"
2891
3246
  },
2892
3247
  "polls": {
2893
- "in": "all"
3248
+ "in": ["max", "tg"],
3249
+ "planned": {
3250
+ "wa": "wa backlog: polls"
3251
+ }
2894
3252
  },
2895
3253
  "polls close": {
2896
- "in": "all"
3254
+ "in": ["max", "tg"],
3255
+ "planned": {
3256
+ "wa": "wa backlog: polls"
3257
+ }
2897
3258
  },
2898
3259
  "polls create": {
2899
- "in": "all",
3260
+ "in": ["max", "tg"],
3261
+ "planned": {
3262
+ "wa": "wa backlog: polls"
3263
+ },
2900
3264
  "options": {
2901
- "--anonymous": "all",
3265
+ "--anonymous": {
3266
+ "in": ["max", "tg"],
3267
+ "planned": {
3268
+ "wa": "wa backlog: polls"
3269
+ }
3270
+ },
2902
3271
  "--close-time": {
2903
3272
  "in": ["tg"],
2904
- "reason": "max-cli does not close a poll by itself"
3273
+ "reason": "max-cli does not close a poll by itself",
3274
+ "planned": {
3275
+ "wa": "wa backlog: polls"
3276
+ }
2905
3277
  },
2906
3278
  "--correct": {
2907
3279
  "in": ["tg"],
2908
- "reason": "max-cli creates no quizzes"
3280
+ "reason": "max-cli creates no quizzes",
3281
+ "planned": {
3282
+ "wa": "wa backlog: polls"
3283
+ }
3284
+ },
3285
+ "--multiple": {
3286
+ "in": ["max", "tg"],
3287
+ "planned": {
3288
+ "wa": "wa backlog: polls"
3289
+ }
3290
+ },
3291
+ "--operation-id": {
3292
+ "in": ["max", "tg"],
3293
+ "planned": {
3294
+ "wa": "wa backlog: polls"
3295
+ }
2909
3296
  },
2910
- "--multiple": "all",
2911
- "--operation-id": "all",
2912
3297
  "--quiz": {
2913
3298
  "in": ["tg"],
2914
- "reason": "max-cli creates no quizzes"
3299
+ "reason": "max-cli creates no quizzes",
3300
+ "planned": {
3301
+ "wa": "wa backlog: polls"
3302
+ }
3303
+ },
3304
+ "--revote": {
3305
+ "in": ["max", "tg"],
3306
+ "planned": {
3307
+ "wa": "wa backlog: polls"
3308
+ }
3309
+ },
3310
+ "--send-as": {
3311
+ "in": ["max", "tg"],
3312
+ "planned": {
3313
+ "wa": "wa backlog: polls"
3314
+ }
3315
+ },
3316
+ "--silent": {
3317
+ "in": ["max", "tg"],
3318
+ "planned": {
3319
+ "wa": "wa backlog: polls"
3320
+ }
2915
3321
  },
2916
- "--revote": "all",
2917
- "--send-as": "all",
2918
- "--silent": "all",
2919
3322
  "--solution": {
2920
3323
  "in": ["tg"],
2921
- "reason": "max-cli creates no quizzes"
3324
+ "reason": "max-cli creates no quizzes",
3325
+ "planned": {
3326
+ "wa": "wa backlog: polls"
3327
+ }
2922
3328
  },
2923
3329
  "--topic": {
2924
3330
  "in": ["tg"],
2925
- "reason": "MAX has no forum topics"
3331
+ "reason": "MAX has no forum topics",
3332
+ "planned": {
3333
+ "wa": "wa backlog: polls"
3334
+ }
2926
3335
  }
2927
3336
  }
2928
3337
  },
2929
3338
  "polls show": {
2930
- "in": "all"
3339
+ "in": ["max", "tg"],
3340
+ "planned": {
3341
+ "wa": "wa backlog: polls"
3342
+ }
2931
3343
  },
2932
3344
  "polls vote": {
2933
- "in": "all",
3345
+ "in": ["max", "tg"],
3346
+ "planned": {
3347
+ "wa": "wa backlog: polls"
3348
+ },
2934
3349
  "options": {
2935
- "--retract": "all"
3350
+ "--retract": {
3351
+ "in": ["max", "tg"],
3352
+ "planned": {
3353
+ "wa": "wa backlog: polls"
3354
+ }
3355
+ }
2936
3356
  }
2937
3357
  },
2938
3358
  "polls voters": {
2939
3359
  "in": ["tg"],
2940
3360
  "reason": "max-cli does not list who voted in a poll",
3361
+ "planned": {
3362
+ "wa": "wa backlog: polls"
3363
+ },
2941
3364
  "options": {
2942
3365
  "--limit": {
2943
3366
  "in": ["tg"],
2944
- "reason": "max-cli does not list who voted in a poll"
3367
+ "reason": "max-cli does not list who voted in a poll",
3368
+ "planned": {
3369
+ "wa": "wa backlog: polls"
3370
+ }
2945
3371
  }
2946
3372
  }
2947
3373
  },
@@ -3087,7 +3513,11 @@
3087
3513
  "in": "all"
3088
3514
  },
3089
3515
  "runs search": {
3090
- "in": [],
3516
+ "in": ["wa"],
3517
+ "planned": {
3518
+ "max": "max-cli: adopt the attachment-budget maintenance release",
3519
+ "tg": "tg-cli: adopt the attachment-budget maintenance release"
3520
+ },
3091
3521
  "options": {
3092
3522
  "--error-code": "all",
3093
3523
  "--limit": "all",
@@ -3096,10 +3526,6 @@
3096
3526
  "--profile": "all",
3097
3527
  "--since-time": "all",
3098
3528
  "--status": "all"
3099
- },
3100
- "planned": {
3101
- "max": "max-cli: adopt the attachment-budget maintenance release",
3102
- "tg": "tg-cli: adopt the attachment-budget maintenance release"
3103
3529
  }
3104
3530
  },
3105
3531
  "runs show": {
@@ -3109,36 +3535,92 @@
3109
3535
  }
3110
3536
  },
3111
3537
  "schedule": {
3112
- "in": "all"
3538
+ "in": ["max", "tg"],
3539
+ "planned": {
3540
+ "wa": "wa backlog: mount the shared schedule command"
3541
+ }
3113
3542
  },
3114
3543
  "schedule agent": {
3115
- "in": "all",
3544
+ "in": ["max", "tg"],
3545
+ "planned": {
3546
+ "wa": "wa backlog: mount the shared schedule command"
3547
+ },
3116
3548
  "options": {
3117
- "--at": "all",
3118
- "--at-time": "all",
3119
- "--every": "all",
3120
- "--max-cost": "all"
3549
+ "--at": {
3550
+ "in": ["max", "tg"],
3551
+ "planned": {
3552
+ "wa": "wa backlog: mount the shared schedule command"
3553
+ }
3554
+ },
3555
+ "--at-time": {
3556
+ "in": ["max", "tg"],
3557
+ "planned": {
3558
+ "wa": "wa backlog: mount the shared schedule command"
3559
+ }
3560
+ },
3561
+ "--every": {
3562
+ "in": ["max", "tg"],
3563
+ "planned": {
3564
+ "wa": "wa backlog: mount the shared schedule command"
3565
+ }
3566
+ },
3567
+ "--max-cost": {
3568
+ "in": ["max", "tg"],
3569
+ "planned": {
3570
+ "wa": "wa backlog: mount the shared schedule command"
3571
+ }
3572
+ }
3121
3573
  }
3122
3574
  },
3123
3575
  "schedule command": {
3124
- "in": "all",
3576
+ "in": ["max", "tg"],
3577
+ "planned": {
3578
+ "wa": "wa backlog: mount the shared schedule command"
3579
+ },
3125
3580
  "options": {
3126
- "--at": "all",
3127
- "--at-time": "all",
3128
- "--every": "all"
3581
+ "--at": {
3582
+ "in": ["max", "tg"],
3583
+ "planned": {
3584
+ "wa": "wa backlog: mount the shared schedule command"
3585
+ }
3586
+ },
3587
+ "--at-time": {
3588
+ "in": ["max", "tg"],
3589
+ "planned": {
3590
+ "wa": "wa backlog: mount the shared schedule command"
3591
+ }
3592
+ },
3593
+ "--every": {
3594
+ "in": ["max", "tg"],
3595
+ "planned": {
3596
+ "wa": "wa backlog: mount the shared schedule command"
3597
+ }
3598
+ }
3129
3599
  }
3130
3600
  },
3131
3601
  "schedule exec": {
3132
- "in": "all"
3602
+ "in": ["max", "tg"],
3603
+ "planned": {
3604
+ "wa": "wa backlog: mount the shared schedule command"
3605
+ }
3133
3606
  },
3134
3607
  "schedule list": {
3135
- "in": "all"
3608
+ "in": ["max", "tg"],
3609
+ "planned": {
3610
+ "wa": "wa backlog: mount the shared schedule command"
3611
+ }
3136
3612
  },
3137
3613
  "schedule remove": {
3138
- "in": "all"
3614
+ "in": ["max", "tg"],
3615
+ "planned": {
3616
+ "wa": "wa backlog: mount the shared schedule command"
3617
+ }
3139
3618
  },
3140
3619
  "schedule run": {
3141
- "in": "all"
3620
+ "in": ["max", "tg"],
3621
+ "planned": {
3622
+ "wa": "wa backlog: mount the shared schedule command"
3623
+ }
3142
3624
  },
3143
3625
  "search": {
3144
3626
  "in": "all"
@@ -3151,12 +3633,13 @@
3151
3633
  "planned": {
3152
3634
  "max": "each CLI’s next cli-core bump",
3153
3635
  "tg": "each CLI’s next cli-core bump"
3154
- }
3636
+ },
3637
+ "reason": "WhatsApp has no server search; wa reads its history from the local store"
3155
3638
  },
3156
3639
  "--exact": "all",
3157
3640
  "--limit": "all",
3158
3641
  "--max-meetings": {
3159
- "in": [],
3642
+ "in": ["wa"],
3160
3643
  "planned": {
3161
3644
  "max": "each CLI’s next cli-core bump",
3162
3645
  "tg": "each CLI’s next cli-core bump"
@@ -3169,10 +3652,11 @@
3169
3652
  "planned": {
3170
3653
  "max": "each CLI’s next cli-core bump",
3171
3654
  "tg": "each CLI’s next cli-core bump"
3172
- }
3655
+ },
3656
+ "reason": "WhatsApp has no server search; wa reads its history from the local store"
3173
3657
  },
3174
3658
  "--source": {
3175
- "in": [],
3659
+ "in": ["wa"],
3176
3660
  "planned": {
3177
3661
  "max": "each CLI’s next cli-core bump",
3178
3662
  "tg": "each CLI’s next cli-core bump"
@@ -3201,7 +3685,8 @@
3201
3685
  "in": "all"
3202
3686
  },
3203
3687
  "--max-messages": {
3204
- "in": "all"
3688
+ "in": ["max", "tg"],
3689
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3205
3690
  },
3206
3691
  "--model": "all",
3207
3692
  "--provider": "all",
@@ -3210,10 +3695,12 @@
3210
3695
  "in": "all"
3211
3696
  },
3212
3697
  "--sync-first": {
3213
- "in": "all"
3698
+ "in": ["max", "tg"],
3699
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3214
3700
  },
3215
3701
  "--sync-time": {
3216
- "in": "all"
3702
+ "in": ["max", "tg"],
3703
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3217
3704
  },
3218
3705
  "--timezone": {
3219
3706
  "in": "all"
@@ -3224,17 +3711,20 @@
3224
3711
  "in": "all",
3225
3712
  "options": {
3226
3713
  "--backend": {
3227
- "in": "all"
3714
+ "in": ["max", "tg"],
3715
+ "reason": "WhatsApp has no server search; wa reads its history from the local store"
3228
3716
  },
3229
3717
  "--context": "all",
3230
3718
  "--discover": "all",
3231
3719
  "--exact": "all",
3232
3720
  "--limit": "all",
3233
3721
  "--max-chats": {
3234
- "in": "all"
3722
+ "in": ["max", "tg"],
3723
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3235
3724
  },
3236
3725
  "--max-messages": {
3237
- "in": "all"
3726
+ "in": ["max", "tg"],
3727
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3238
3728
  },
3239
3729
  "--newest": "all",
3240
3730
  "--page": "all",
@@ -3242,14 +3732,17 @@
3242
3732
  "in": "all"
3243
3733
  },
3244
3734
  "--server-time": {
3245
- "in": "all"
3735
+ "in": ["max", "tg"],
3736
+ "reason": "WhatsApp has no server search; wa reads its history from the local store"
3246
3737
  },
3247
3738
  "--source": "all",
3248
3739
  "--sync-first": {
3249
- "in": "all"
3740
+ "in": ["max", "tg"],
3741
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3250
3742
  },
3251
3743
  "--sync-time": {
3252
- "in": "all"
3744
+ "in": ["max", "tg"],
3745
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3253
3746
  },
3254
3747
  "--thread": {
3255
3748
  "in": "all"
@@ -3277,7 +3770,7 @@
3277
3770
  "--limit": "all",
3278
3771
  "--page": "all",
3279
3772
  "--source": {
3280
- "in": [],
3773
+ "in": ["wa"],
3281
3774
  "planned": {
3282
3775
  "max": "each CLI’s next cli-core bump",
3283
3776
  "tg": "each CLI’s next cli-core bump"
@@ -3288,7 +3781,7 @@
3288
3781
  },
3289
3782
  "search topics": {
3290
3783
  "in": ["tg"],
3291
- "reason": "MAX has no forum topics"
3784
+ "reason": "MAX has no forum topics; WhatsApp has no forum topics"
3292
3785
  },
3293
3786
  "searches": {
3294
3787
  "in": "all"
@@ -3366,15 +3859,15 @@
3366
3859
  "options": {
3367
3860
  "--idle": {
3368
3861
  "in": ["max"],
3369
- "reason": "max's server stops when no command has used it for this long; tg's serve has no commands connected to it (NEED-495 A)"
3862
+ "reason": "max's server stops when no command has used it for this long; tg's serve has no commands connected to it (NEED-495 A); wa's serve has no idle stop or subscriber buffers"
3370
3863
  },
3371
3864
  "--max-subscriber-buffer-bytes": {
3372
3865
  "in": ["max"],
3373
- "reason": "max's server holds what it streams to each watching command; tg's serve has no commands connected to it (NEED-495 A)"
3866
+ "reason": "max's server holds what it streams to each watching command; tg's serve has no commands connected to it (NEED-495 A); wa's serve has no idle stop or subscriber buffers"
3374
3867
  },
3375
3868
  "--max-subscriber-total-buffer-bytes": {
3376
3869
  "in": ["max"],
3377
- "reason": "max's server holds what it streams to each watching command; tg's serve has no commands connected to it (NEED-495 A)"
3870
+ "reason": "max's server holds what it streams to each watching command; tg's serve has no commands connected to it (NEED-495 A); wa's serve has no idle stop or subscriber buffers"
3378
3871
  }
3379
3872
  }
3380
3873
  },
@@ -3395,7 +3888,7 @@
3395
3888
  "options": {
3396
3889
  "--idle": {
3397
3890
  "in": ["max"],
3398
- "reason": "max's server stops when no command has used it for this long; tg's serve has no commands connected to it (NEED-495 A)"
3891
+ "reason": "max's server stops when no command has used it for this long; tg's serve has no commands connected to it (NEED-495 A); wa's serve has no idle stop or subscriber buffers"
3399
3892
  }
3400
3893
  }
3401
3894
  },
@@ -3404,7 +3897,7 @@
3404
3897
  "options": {
3405
3898
  "--idle": {
3406
3899
  "in": ["max"],
3407
- "reason": "max's server stops when no command has used it for this long; tg's serve has no commands connected to it (NEED-495 A)"
3900
+ "reason": "max's server stops when no command has used it for this long; tg's serve has no commands connected to it (NEED-495 A); wa's serve has no idle stop or subscriber buffers"
3408
3901
  }
3409
3902
  }
3410
3903
  },
@@ -3428,15 +3921,15 @@
3428
3921
  "options": {
3429
3922
  "--app": {
3430
3923
  "in": ["tg"],
3431
- "reason": "Telegram asks each client for its own app from my.telegram.org; MAX has no such step"
3924
+ "reason": "Telegram asks each client for its own app from my.telegram.org; MAX has no such step; WhatsApp has no application registration"
3432
3925
  },
3433
3926
  "--qr-file": {
3434
- "in": ["tg"],
3927
+ "in": ["tg", "wa"],
3435
3928
  "reason": "ruled tg-only with the app registration it belongs to"
3436
3929
  },
3437
3930
  "--sms": {
3438
3931
  "in": ["tg"],
3439
- "reason": "asks Telegram to resend its login code by SMS; MAX has no such choice"
3932
+ "reason": "asks Telegram to resend its login code by SMS; MAX has no such choice; WhatsApp links a device by QR or pairing code, never by an SMS code"
3440
3933
  }
3441
3934
  }
3442
3935
  },
@@ -3446,11 +3939,11 @@
3446
3939
  "--agent": "all",
3447
3940
  "--app": {
3448
3941
  "in": ["tg"],
3449
- "reason": "Telegram requires an application from my.telegram.org; MAX has no application registration step"
3942
+ "reason": "Telegram requires an application from my.telegram.org; MAX has no application registration step; WhatsApp has no application registration"
3450
3943
  },
3451
3944
  "--method": "all",
3452
3945
  "--qr-file": {
3453
- "in": ["tg"],
3946
+ "in": ["tg", "wa"],
3454
3947
  "reason": "Telegram can expose its temporary QR login token as a PNG"
3455
3948
  }
3456
3949
  }
@@ -3507,7 +4000,7 @@
3507
4000
  },
3508
4001
  "stats chats official": {
3509
4002
  "in": ["tg"],
3510
- "reason": "MAX has no statistics request of its own for a chat"
4003
+ "reason": "MAX has no statistics request of its own for a chat; WhatsApp has no statistics request for a chat"
3511
4004
  },
3512
4005
  "stats chats retention": {
3513
4006
  "in": "all",
@@ -3565,16 +4058,28 @@
3565
4058
  "--chat": "all",
3566
4059
  "--exact": "all",
3567
4060
  "--limit": "all",
3568
- "--max-chats": "all",
3569
- "--max-messages": "all",
4061
+ "--max-chats": {
4062
+ "in": ["max", "tg"],
4063
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
4064
+ },
4065
+ "--max-messages": {
4066
+ "in": ["max", "tg"],
4067
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
4068
+ },
3570
4069
  "--measure": "all",
3571
4070
  "--message-kind": "all",
3572
4071
  "--min-messages": "all",
3573
4072
  "--saved": "all",
3574
4073
  "--score": "all",
3575
4074
  "--source": "all",
3576
- "--sync-first": "all",
3577
- "--sync-time": "all",
4075
+ "--sync-first": {
4076
+ "in": ["max", "tg"],
4077
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
4078
+ },
4079
+ "--sync-time": {
4080
+ "in": ["max", "tg"],
4081
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
4082
+ },
3578
4083
  "--timezone": "all",
3579
4084
  "--weights": "all"
3580
4085
  }
@@ -3649,10 +4154,12 @@
3649
4154
  "in": "all"
3650
4155
  },
3651
4156
  "--max-chats": {
3652
- "in": "all"
4157
+ "in": ["max", "tg"],
4158
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3653
4159
  },
3654
4160
  "--max-messages": {
3655
- "in": "all"
4161
+ "in": ["max", "tg"],
4162
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3656
4163
  },
3657
4164
  "--saved": {
3658
4165
  "in": "all"
@@ -3661,10 +4168,12 @@
3661
4168
  "in": "all"
3662
4169
  },
3663
4170
  "--sync-first": {
3664
- "in": "all"
4171
+ "in": ["max", "tg"],
4172
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3665
4173
  },
3666
4174
  "--sync-time": {
3667
- "in": "all"
4175
+ "in": ["max", "tg"],
4176
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
3668
4177
  },
3669
4178
  "--timezone": {
3670
4179
  "in": "all"
@@ -3677,15 +4186,27 @@
3677
4186
  "--chat": "all",
3678
4187
  "--exact": "all",
3679
4188
  "--limit": "all",
3680
- "--max-chats": "all",
3681
- "--max-messages": "all",
4189
+ "--max-chats": {
4190
+ "in": ["max", "tg"],
4191
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
4192
+ },
4193
+ "--max-messages": {
4194
+ "in": ["max", "tg"],
4195
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
4196
+ },
3682
4197
  "--measure": "all",
3683
4198
  "--message-kind": "all",
3684
4199
  "--saved": "all",
3685
4200
  "--score": "all",
3686
4201
  "--source": "all",
3687
- "--sync-first": "all",
3688
- "--sync-time": "all",
4202
+ "--sync-first": {
4203
+ "in": ["max", "tg"],
4204
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
4205
+ },
4206
+ "--sync-time": {
4207
+ "in": ["max", "tg"],
4208
+ "reason": "a messenger that pushes its history has nothing to sync first: wa reads the local store, which serve keeps filled"
4209
+ },
3689
4210
  "--timezone": "all",
3690
4211
  "--weights": "all"
3691
4212
  }
@@ -3720,19 +4241,22 @@
3720
4241
  "stickers": {
3721
4242
  "in": ["max"],
3722
4243
  "planned": {
3723
- "tg": "tg-cli backlog: stickers"
4244
+ "tg": "tg-cli backlog: stickers",
4245
+ "wa": "wa backlog: stickers"
3724
4246
  }
3725
4247
  },
3726
4248
  "stickers list": {
3727
4249
  "in": ["max"],
3728
4250
  "planned": {
3729
- "tg": "tg-cli backlog: stickers"
4251
+ "tg": "tg-cli backlog: stickers",
4252
+ "wa": "wa backlog: stickers"
3730
4253
  },
3731
4254
  "options": {
3732
4255
  "--set": {
3733
4256
  "in": ["max"],
3734
4257
  "planned": {
3735
- "tg": "tg-cli backlog: stickers"
4258
+ "tg": "tg-cli backlog: stickers",
4259
+ "wa": "wa backlog: stickers"
3736
4260
  }
3737
4261
  }
3738
4262
  }
@@ -3959,14 +4483,14 @@
3959
4483
  "in": "all"
3960
4484
  },
3961
4485
  "--as-owner": {
3962
- "in": [],
4486
+ "in": ["wa"],
3963
4487
  "planned": {
3964
4488
  "max": "each CLI’s next cli-core bump",
3965
4489
  "tg": "each CLI’s next cli-core bump"
3966
4490
  }
3967
4491
  },
3968
4492
  "--certainty": {
3969
- "in": [],
4493
+ "in": ["wa"],
3970
4494
  "planned": {
3971
4495
  "max": "each CLI’s next cli-core bump",
3972
4496
  "tg": "each CLI’s next cli-core bump"
@@ -4021,14 +4545,14 @@
4021
4545
  }
4022
4546
  },
4023
4547
  "tasks reject": {
4024
- "in": [],
4548
+ "in": ["wa"],
4025
4549
  "planned": {
4026
4550
  "max": "each CLI’s next cli-core bump",
4027
4551
  "tg": "each CLI’s next cli-core bump"
4028
4552
  },
4029
4553
  "options": {
4030
4554
  "--as-owner": {
4031
- "in": [],
4555
+ "in": ["wa"],
4032
4556
  "planned": {
4033
4557
  "max": "each CLI’s next cli-core bump",
4034
4558
  "tg": "each CLI’s next cli-core bump"
@@ -4056,7 +4580,7 @@
4056
4580
  },
4057
4581
  "topics": {
4058
4582
  "in": ["tg"],
4059
- "reason": "MAX has no forum topics"
4583
+ "reason": "MAX has no forum topics; WhatsApp has no forum topics"
4060
4584
  },
4061
4585
  "topics create": {
4062
4586
  "in": ["tg"],