@leemour/cli-messaging 0.96.0 → 0.98.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 (203) hide show
  1. package/README.md +11 -3
  2. package/dist/cli/bot/admins.d.ts +10 -0
  3. package/dist/cli/bot/admins.d.ts.map +1 -0
  4. package/dist/cli/bot/admins.js +114 -0
  5. package/dist/cli/bot/admins.js.map +1 -0
  6. package/dist/cli/bot/command.d.ts +1 -1
  7. package/dist/cli/bot/command.d.ts.map +1 -1
  8. package/dist/cli/bot/command.js +60 -23
  9. package/dist/cli/bot/command.js.map +1 -1
  10. package/dist/cli/bot/context.d.ts +19 -1
  11. package/dist/cli/bot/context.d.ts.map +1 -1
  12. package/dist/cli/bot/context.js +44 -3
  13. package/dist/cli/bot/context.js.map +1 -1
  14. package/dist/cli/bot/copy.d.ts +19 -0
  15. package/dist/cli/bot/copy.d.ts.map +1 -0
  16. package/dist/cli/bot/copy.js +85 -0
  17. package/dist/cli/bot/copy.js.map +1 -0
  18. package/dist/cli/bot/messages.d.ts +10 -0
  19. package/dist/cli/bot/messages.d.ts.map +1 -0
  20. package/dist/cli/bot/messages.js +252 -0
  21. package/dist/cli/bot/messages.js.map +1 -0
  22. package/dist/cli/bot/port.d.ts +83 -5
  23. package/dist/cli/bot/port.d.ts.map +1 -1
  24. package/dist/cli/bot/port.js +2 -1
  25. package/dist/cli/bot/port.js.map +1 -1
  26. package/dist/cli/config-command.js +1 -1
  27. package/dist/cli/config-command.js.map +1 -1
  28. package/dist/cli/deadline.d.ts.map +1 -1
  29. package/dist/cli/deadline.js +11 -2
  30. package/dist/cli/deadline.js.map +1 -1
  31. package/dist/cli/index.d.ts +6 -2
  32. package/dist/cli/index.d.ts.map +1 -1
  33. package/dist/cli/index.js +4 -0
  34. package/dist/cli/index.js.map +1 -1
  35. package/dist/cli/messenger/admin-moderation-command.js +2 -2
  36. package/dist/cli/messenger/admin-moderation-command.js.map +1 -1
  37. package/dist/cli/messenger/ask.d.ts.map +1 -1
  38. package/dist/cli/messenger/ask.js +1 -1
  39. package/dist/cli/messenger/ask.js.map +1 -1
  40. package/dist/cli/messenger/context.d.ts +18 -2
  41. package/dist/cli/messenger/context.d.ts.map +1 -1
  42. package/dist/cli/messenger/context.js +30 -8
  43. package/dist/cli/messenger/context.js.map +1 -1
  44. package/dist/cli/messenger/download-command.d.ts.map +1 -1
  45. package/dist/cli/messenger/download-command.js +97 -30
  46. package/dist/cli/messenger/download-command.js.map +1 -1
  47. package/dist/cli/messenger/guard-commands.js +3 -3
  48. package/dist/cli/messenger/guard-commands.js.map +1 -1
  49. package/dist/cli/messenger/port.d.ts +12 -1
  50. package/dist/cli/messenger/port.d.ts.map +1 -1
  51. package/dist/cli/messenger/port.js.map +1 -1
  52. package/dist/cli/messenger/stored.d.ts +3 -2
  53. package/dist/cli/messenger/stored.d.ts.map +1 -1
  54. package/dist/cli/messenger/stored.js +34 -4
  55. package/dist/cli/messenger/stored.js.map +1 -1
  56. package/dist/cli/messenger/watch-command.d.ts +2 -1
  57. package/dist/cli/messenger/watch-command.d.ts.map +1 -1
  58. package/dist/cli/messenger/watch-command.js +11 -2
  59. package/dist/cli/messenger/watch-command.js.map +1 -1
  60. package/dist/domain/capabilities.d.ts +3 -0
  61. package/dist/domain/capabilities.d.ts.map +1 -1
  62. package/dist/kit/contract.d.ts +37 -0
  63. package/dist/kit/contract.d.ts.map +1 -0
  64. package/dist/kit/contract.js +408 -0
  65. package/dist/kit/contract.js.map +1 -0
  66. package/dist/kit/fake.d.ts +16 -0
  67. package/dist/kit/fake.d.ts.map +1 -0
  68. package/dist/kit/fake.js +457 -0
  69. package/dist/kit/fake.js.map +1 -0
  70. package/dist/kit/index.d.ts +4 -0
  71. package/dist/kit/index.d.ts.map +1 -0
  72. package/dist/kit/index.js +4 -0
  73. package/dist/kit/index.js.map +1 -0
  74. package/dist/kit/seed.d.ts +38 -0
  75. package/dist/kit/seed.d.ts.map +1 -0
  76. package/dist/kit/seed.js +83 -0
  77. package/dist/kit/seed.js.map +1 -0
  78. package/dist/mcp/resources.d.ts +6 -1
  79. package/dist/mcp/resources.d.ts.map +1 -1
  80. package/dist/mcp/resources.js +14 -5
  81. package/dist/mcp/resources.js.map +1 -1
  82. package/dist/mcp/server.d.ts.map +1 -1
  83. package/dist/mcp/server.js +3 -0
  84. package/dist/mcp/server.js.map +1 -1
  85. package/dist/mcp/tool.d.ts +12 -2
  86. package/dist/mcp/tool.d.ts.map +1 -1
  87. package/dist/mcp/tool.js +15 -8
  88. package/dist/mcp/tool.js.map +1 -1
  89. package/dist/mcp/tools/chats.js +3 -3
  90. package/dist/mcp/tools/chats.js.map +1 -1
  91. package/dist/mcp/tools/contacts.js +3 -3
  92. package/dist/mcp/tools/contacts.js.map +1 -1
  93. package/dist/mcp/tools/inbox.d.ts.map +1 -1
  94. package/dist/mcp/tools/inbox.js +3 -4
  95. package/dist/mcp/tools/inbox.js.map +1 -1
  96. package/dist/mcp/tools/messages.d.ts.map +1 -1
  97. package/dist/mcp/tools/messages.js +5 -8
  98. package/dist/mcp/tools/messages.js.map +1 -1
  99. package/dist/mcp/tools/review.d.ts.map +1 -1
  100. package/dist/mcp/tools/review.js +3 -4
  101. package/dist/mcp/tools/review.js.map +1 -1
  102. package/dist/moderation/check.d.ts +3 -1
  103. package/dist/moderation/check.d.ts.map +1 -1
  104. package/dist/moderation/check.js +3 -2
  105. package/dist/moderation/check.js.map +1 -1
  106. package/dist/parity/audit.d.ts +11 -9
  107. package/dist/parity/audit.d.ts.map +1 -1
  108. package/dist/parity/audit.js +63 -46
  109. package/dist/parity/audit.js.map +1 -1
  110. package/dist/parity/bin.js +17 -8
  111. package/dist/parity/bin.js.map +1 -1
  112. package/dist/parity/catalogue.d.ts.map +1 -1
  113. package/dist/parity/catalogue.js +7 -1
  114. package/dist/parity/catalogue.js.map +1 -1
  115. package/dist/parity/manifest.d.ts +19 -12
  116. package/dist/parity/manifest.d.ts.map +1 -1
  117. package/dist/parity/manifest.js +60 -37
  118. package/dist/parity/manifest.js.map +1 -1
  119. package/dist/parity/pages.d.ts +3 -3
  120. package/dist/parity/pages.d.ts.map +1 -1
  121. package/dist/parity/pages.js +4 -5
  122. package/dist/parity/pages.js.map +1 -1
  123. package/dist/parity/seed.d.ts +11 -0
  124. package/dist/parity/seed.d.ts.map +1 -0
  125. package/dist/parity/seed.js +99 -0
  126. package/dist/parity/seed.js.map +1 -0
  127. package/dist/parity/wording.d.ts +4 -3
  128. package/dist/parity/wording.d.ts.map +1 -1
  129. package/dist/parity/wording.js +21 -10
  130. package/dist/parity/wording.js.map +1 -1
  131. package/dist/search/correct.d.ts +25 -0
  132. package/dist/search/correct.d.ts.map +1 -0
  133. package/dist/search/correct.js +65 -0
  134. package/dist/search/correct.js.map +1 -0
  135. package/dist/search/query.d.ts +5 -2
  136. package/dist/search/query.d.ts.map +1 -1
  137. package/dist/search/query.js +5 -4
  138. package/dist/search/query.js.map +1 -1
  139. package/dist/search/search.d.ts +27 -0
  140. package/dist/search/search.d.ts.map +1 -0
  141. package/dist/search/search.js +65 -0
  142. package/dist/search/search.js.map +1 -0
  143. package/dist/sends/guarded.d.ts +12 -0
  144. package/dist/sends/guarded.d.ts.map +1 -1
  145. package/dist/sends/guarded.js +24 -2
  146. package/dist/sends/guarded.js.map +1 -1
  147. package/dist/services/archive.d.ts +8 -3
  148. package/dist/services/archive.d.ts.map +1 -1
  149. package/dist/services/archive.js +21 -2
  150. package/dist/services/archive.js.map +1 -1
  151. package/dist/services/chats.d.ts.map +1 -1
  152. package/dist/services/chats.js +11 -7
  153. package/dist/services/chats.js.map +1 -1
  154. package/dist/services/deps.d.ts +13 -0
  155. package/dist/services/deps.d.ts.map +1 -1
  156. package/dist/services/deps.js +12 -0
  157. package/dist/services/deps.js.map +1 -1
  158. package/dist/services/inbox.d.ts +13 -3
  159. package/dist/services/inbox.d.ts.map +1 -1
  160. package/dist/services/inbox.js +45 -15
  161. package/dist/services/inbox.js.map +1 -1
  162. package/dist/services/messages.d.ts +9 -2
  163. package/dist/services/messages.d.ts.map +1 -1
  164. package/dist/services/messages.js +27 -4
  165. package/dist/services/messages.js.map +1 -1
  166. package/dist/services/moderation.d.ts.map +1 -1
  167. package/dist/services/moderation.js +7 -1
  168. package/dist/services/moderation.js.map +1 -1
  169. package/dist/services/people.d.ts.map +1 -1
  170. package/dist/services/people.js +5 -4
  171. package/dist/services/people.js.map +1 -1
  172. package/dist/speech/hearing.d.ts +1 -1
  173. package/dist/speech/hearing.d.ts.map +1 -1
  174. package/dist/speech/hearing.js +2 -2
  175. package/dist/speech/hearing.js.map +1 -1
  176. package/dist/store/index.d.ts +1 -1
  177. package/dist/store/index.d.ts.map +1 -1
  178. package/dist/store/index.js.map +1 -1
  179. package/dist/store/sqlite/completeness.d.ts +17 -0
  180. package/dist/store/sqlite/completeness.d.ts.map +1 -0
  181. package/dist/store/sqlite/completeness.js +30 -0
  182. package/dist/store/sqlite/completeness.js.map +1 -0
  183. package/dist/store/sqlite/messages.d.ts +2 -2
  184. package/dist/store/sqlite/messages.d.ts.map +1 -1
  185. package/dist/store/sqlite/messages.js +14 -2
  186. package/dist/store/sqlite/messages.js.map +1 -1
  187. package/dist/store/sqlite/search-index.d.ts.map +1 -1
  188. package/dist/store/sqlite/search-index.js +45 -9
  189. package/dist/store/sqlite/search-index.js.map +1 -1
  190. package/dist/store/sqlite/search.d.ts +2 -0
  191. package/dist/store/sqlite/search.d.ts.map +1 -1
  192. package/dist/store/sqlite/search.js +27 -17
  193. package/dist/store/sqlite/search.js.map +1 -1
  194. package/dist/store/sqlite/words.d.ts +78 -0
  195. package/dist/store/sqlite/words.d.ts.map +1 -0
  196. package/dist/store/sqlite/words.js +237 -0
  197. package/dist/store/sqlite/words.js.map +1 -0
  198. package/dist/store/store.d.ts +35 -0
  199. package/dist/store/store.d.ts.map +1 -1
  200. package/dist/store/store.js +14 -2
  201. package/dist/store/store.js.map +1 -1
  202. package/package.json +8 -3
  203. package/parity.json +533 -440
@@ -1,11 +1,15 @@
1
1
  export { guardedClose, guardedCreatePoll, guardedVote } from "../sends/polls.js";
2
+ export type { InboxReader } from "../services/inbox.js";
2
3
  export { INBOX_CHATS, newIn, REVIEW_CHATS, reviewIn, unanswered, unreadIn } from "../services/inbox.js";
3
4
  export { momentOf } from "../services/moment.js";
4
5
  export { maskedAccount } from "../services/people.js";
5
6
  export { type AppIdentity, envName } from "./app.js";
7
+ export { botAdminsCommand, botMembersCommand } from "./bot/admins.js";
6
8
  export { botCommand } from "./bot/command.js";
7
9
  export { type BotContext, botContext, botWords } from "./bot/context.js";
8
- export type { BotAdapter, BotConnectOptions, BotMessenger } from "./bot/port.js";
10
+ export { type BotCopy, botCopy } from "./bot/copy.js";
11
+ export { botCan, botIdOf, botMessagesCommand } from "./bot/messages.js";
12
+ export { BOT_ACTIONS, type BotAction, type BotAdapter, type BotChatAdmin, type BotChatAdmins, type BotChatMembers, type BotChatRef, type BotChatTools, type BotConnectOptions, type BotHistory, type BotMessaging, type BotMessenger, type BotPeople, type BotSendOptions, } from "./bot/port.js";
9
13
  export { botFiles, botsDirectory, ChatRegistry, registryProfiles, type SeenChat } from "./bot/registry.js";
10
14
  export { BotTokenStore, type BotTokenStoreOptions } from "./bot/token.js";
11
15
  export { CONTRACT, commandsCommand } from "./commands-command.js";
@@ -33,7 +37,7 @@ export { forwardCommand } from "./messenger/messages-forward-command.js";
33
37
  export { pinCommand, unpinCommand } from "./messenger/messages-pin-command.js";
34
38
  export { modelsCommand } from "./messenger/models-command.js";
35
39
  export { pollsCommand } from "./messenger/polls-command.js";
36
- export type { AccountTools, After, ChatReading, Download, GroupModeration, LiveUpdates, MessageEditing, MessageMedia, MessagePins, MessagePolls, MessageReactions, MessengerAdapter, MessengerCore, NewPoll, ReadState, RemoteFile, ScheduledMessages, SendOptions, Sent, Transcript, } from "./messenger/port.js";
40
+ export type { AccountTools, After, ChatReading, Download, GroupModeration, HistoryBatch, LiveUpdates, MessageEditing, MessageMedia, MessagePins, MessagePolls, MessageReactions, MessengerAdapter, MessengerCore, NewPoll, PushedHistory, ReadState, RemoteFile, ScheduledMessages, SendOptions, Sent, Transcript, } from "./messenger/port.js";
37
41
  export { reactionsCommand } from "./messenger/reactions-command.js";
38
42
  export { reviewCommand } from "./messenger/review.js";
39
43
  export { serveCommand, servingProfiles } from "./messenger/serve-command.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -3,8 +3,12 @@ export { INBOX_CHATS, newIn, REVIEW_CHATS, reviewIn, unanswered, unreadIn } from
3
3
  export { momentOf } from "../services/moment.js";
4
4
  export { maskedAccount } from "../services/people.js";
5
5
  export { envName } from "./app.js";
6
+ export { botAdminsCommand, botMembersCommand } from "./bot/admins.js";
6
7
  export { botCommand } from "./bot/command.js";
7
8
  export { botContext, botWords } from "./bot/context.js";
9
+ export { botCopy } from "./bot/copy.js";
10
+ export { botCan, botIdOf, botMessagesCommand } from "./bot/messages.js";
11
+ export { BOT_ACTIONS, } from "./bot/port.js";
8
12
  export { botFiles, botsDirectory, ChatRegistry, registryProfiles } from "./bot/registry.js";
9
13
  export { BotTokenStore } from "./bot/token.js";
10
14
  export { CONTRACT, commandsCommand } from "./commands-command.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export const rulesCommand = (messenger) => {
17
17
  const context = messengerContext(this, messenger);
18
18
  context.renderer.result(await context.withServices((services) => services.moderation.rules(chat)));
19
19
  });
20
- rules.addCommand(annotate(new Command("set"), { mutates: true })
20
+ rules.addCommand(annotate(new Command("set"), { mutates: true, local: true })
21
21
  .description("change one rule; the group's first change writes every rule with its default")
22
22
  .argument("<chat>", messenger.chatArgument)
23
23
  .argument("<key>", `one of: ${RULE_KEYS.join(", ")}`)
@@ -26,7 +26,7 @@ export const rulesCommand = (messenger) => {
26
26
  const context = messengerContext(this, messenger);
27
27
  context.renderer.result(await context.withServices((services) => services.moderation.set(chat, key, value)));
28
28
  }));
29
- rules.addCommand(annotate(new Command("unset"), { mutates: true })
29
+ rules.addCommand(annotate(new Command("unset"), { mutates: true, local: true })
30
30
  .description("put one rule back to its default")
31
31
  .argument("<chat>", messenger.chatArgument)
32
32
  .argument("<key>", `one of: ${RULE_KEYS.join(", ")}`)
@@ -1 +1 @@
1
- {"version":3,"file":"admin-moderation-command.js","sourceRoot":"","sources":["../../../src/cli/messenger/admin-moderation-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-moderation-command.js","sourceRoot":"","sources":["../../../src/cli/messenger/admin-moderation-command.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/ask.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAGjD,4GAA4G;AAC5G,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,mBAAmB,GAAG,OACL,CAAA;AAuC3D,wGAAwG;AACxG,eAAO,MAAM,QAAQ,YAAmB,OAAO,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAIxF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,YACd,OAAO,KAAG,KAsBnB,CAAA"}
1
+ {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/ask.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAGjD,4GAA4G;AAC5G,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,mBAAmB,GAAG,OAC4B,CAAA;AAuC5F,wGAAwG;AACxG,eAAO,MAAM,QAAQ,YAAmB,OAAO,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAIxF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,YACd,OAAO,KAAG,KAsBnB,CAAA"}
@@ -4,7 +4,7 @@ import { ReadStream } from "node:tty";
4
4
  import { CliError } from "@leemour/cli-core";
5
5
  import { environmentOf } from "../context.js";
6
6
  /** Deleting has its own word for "yes": the flag a person has to mean, not a habit (max-cli `NEED-238`). */
7
- export const skipFlagFor = (key) => key === "messages.delete" ? "--allow-dangerous" : "--yes";
7
+ export const skipFlagFor = (key) => key === "messages.delete" || key === "bot.messages.delete" ? "--allow-dangerous" : "--yes";
8
8
  /**
9
9
  * One line from the terminal itself, not stdin — stdin may be the text being sent. `null` when no
10
10
  * person is there. Ctrl-C and a closed terminal cancel, as `readSecret` does.
@@ -1 +1 @@
1
- {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/cli/messenger/ask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/cli/messenger/ask.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { AdminRight, Chat, GroupSettings, Id, Provider } from "../../domain
3
3
  import { type SendGuard } from "../../sends/guard.js";
4
4
  import { type Override, type Services } from "../../services/index.js";
5
5
  import type { OpenRecognizer } from "../../speech/transcribe.js";
6
- import { type AccountKey, type MessageStore } from "../../store/store.js";
6
+ import { type AccountKey, type DeletionScope, type MessageStore } from "../../store/store.js";
7
7
  import type { AppIdentity } from "../app.js";
8
8
  import { type BaseContext } from "../context.js";
9
9
  import type { EventSink } from "../runs/events.js";
@@ -50,6 +50,11 @@ export interface Messenger {
50
50
  groupSettings?: readonly (keyof GroupSettings)[];
51
51
  /** Whether the messenger says when an account was made — the moderation rule `newAccount`; yes when unset. */
52
52
  knowsAccountAge?: boolean;
53
+ /**
54
+ * This messenger's invite links, which `chats moderate` judges under `invites`. Telegram's and MAX's
55
+ * are built in for now.
56
+ */
57
+ inviteLinks?: RegExp;
53
58
  /** Whether people added can be shown the messages from before they came — `members add --history`; yes when unset. */
54
59
  addsWithHistory?: boolean;
55
60
  /** The admin rights this messenger has, as `admins add --can` offers them; every one when unset. */
@@ -58,8 +63,19 @@ export interface Messenger {
58
63
  savedChatId?: (account: AccountKey) => Id;
59
64
  /** The other person in a one-to-one chat, when the chat says who — a recipient list matches on it. */
60
65
  partnerOf?: (chat: Chat) => Id | undefined;
66
+ /**
67
+ * Whether a stored chat may hold a message the messenger deleted without naming its chat. When
68
+ * unset, the store applies Telegram's rule.
69
+ */
70
+ deletedWithoutChat?: DeletionScope;
61
71
  /** How `store fetch` reads this messenger's history, where Telegram's defaults do not fit it. */
62
72
  fetching?: Fetching;
73
+ /**
74
+ * Where `chats`, `messages list|context` and `contacts` read from. `store` is for a messenger that
75
+ * pushes its history instead of answering for it: those reads answer from the local store, which
76
+ * `serve` keeps filled, and never connect; writes still do. `server` when unset.
77
+ */
78
+ history?: "server" | "store";
63
79
  /** Speech model ids, most suitable first, for `messages transcribe --local`; the first is the default. */
64
80
  speechModels?: readonly string[];
65
81
  /** Replaces shared use cases for this messenger; its commands and MCP tools both get the replacement. */
@@ -102,7 +118,7 @@ export interface MessengerContext extends BaseContext {
102
118
  * the reads answer saved to the store. `close` closes the connection and the store it opened. One
103
119
  * function, so a command and an MCP tool call save and record exactly alike.
104
120
  */
105
- export declare const connected: (connection: MessengerAdapter, { app, provider }: Pick<Messenger, "app" | "provider">, { settings, env, renderer }: Pick<BaseContext, "settings" | "env" | "renderer">, events: EventSink) => {
121
+ export declare const connected: (connection: MessengerAdapter, { app, provider, deletedWithoutChat }: Pick<Messenger, "app" | "provider" | "deletedWithoutChat">, { settings, env, renderer }: Pick<BaseContext, "settings" | "env" | "renderer">, events: EventSink) => {
106
122
  adapter: MessengerAdapter;
107
123
  close: () => Promise<void>;
108
124
  };
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/context.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { CliError } from "@leemour/cli-core";
2
+ import { servingProfiles } from "../../background/lock.js";
2
3
  import { guardFor } from "../../sends/guard.js";
3
4
  import { keyForCommand, levelFor } from "../../sends/permissions.js";
4
5
  import { OFFLINE, servicesFor } from "../../services/index.js";
@@ -30,7 +31,7 @@ const settled = async (pending, ms) => {
30
31
  * the reads answer saved to the store. `close` closes the connection and the store it opened. One
31
32
  * function, so a command and an MCP tool call save and record exactly alike.
32
33
  */
33
- export const connected = (connection, { app, provider }, { settings, env, renderer }, events) => {
34
+ export const connected = (connection, { app, provider, deletedWithoutChat }, { settings, env, renderer }, events) => {
34
35
  const self = connection.self();
35
36
  if (self !== null)
36
37
  rememberAccount(app, settings.profile, self, env);
@@ -49,6 +50,7 @@ export const connected = (connection, { app, provider }, { settings, env, render
49
50
  warn: renderer.warn,
50
51
  events,
51
52
  pending,
53
+ ...(deletedWithoutChat ? { deletedWithoutChat } : {}),
52
54
  }),
53
55
  close: async () => {
54
56
  await connection.close();
@@ -61,6 +63,23 @@ export const connected = (connection, { app, provider }, { settings, env, render
61
63
  },
62
64
  };
63
65
  };
66
+ const unrecorded = (messenger, profile) => new CliError("not_found", messenger.history === "store"
67
+ ? `nothing recorded for profile "${profile}" yet — run \`${messenger.app.command} serve\` or ` +
68
+ `\`${messenger.app.command} watch\` once to fill the local store`
69
+ : `nothing recorded for profile "${profile}" yet — run the command once without --offline`);
70
+ /** NEED-506 A: without it, an agent cannot tell a quiet chat from a store nothing keeps up to date. */
71
+ const warnUnserved = async (messenger, profile, { env, renderer }, store) => {
72
+ if (servingProfiles(messenger.app, env).includes(profile))
73
+ return;
74
+ const account = recalledAccount(messenger.app, messenger.provider, profile, env);
75
+ if (!account)
76
+ return;
77
+ const newest = (await store.chatStats(account))
78
+ .map((one) => one.newestAt)
79
+ .reduce((latest, at) => (at !== null && (latest === null || at > latest) ? at : latest), null);
80
+ renderer.warn(`no \`${messenger.app.command} serve\` keeps profile "${profile}" up to date — ` +
81
+ (newest === null ? "the local store holds no messages yet" : `the newest stored message is from ${newest}`));
82
+ };
64
83
  /** The words of a command below the program, `["messages", "list"]` — the profile word is not one of them. */
65
84
  const pathOf = (command) => {
66
85
  const words = [];
@@ -107,9 +126,8 @@ export const messengerContext = (command, messenger) => {
107
126
  }, { unbounded: options.listen === true }),
108
127
  withStore: (work, { name } = {}) => base.run(async () => {
109
128
  const account = recalledAccount(app, provider, profile, base.env);
110
- if (!account) {
111
- throw new CliError("not_found", `nothing recorded for profile "${profile}" yet — run the command once without --offline`);
112
- }
129
+ if (!account)
130
+ throw unrecorded(messenger, profile);
113
131
  const store = await openStore({ env: base.env });
114
132
  try {
115
133
  return await work(store, account);
@@ -126,6 +144,7 @@ export const messengerContext = (command, messenger) => {
126
144
  profile,
127
145
  env: base.env,
128
146
  offline: base.settings.offline,
147
+ reads: messenger.history ?? "server",
129
148
  guard,
130
149
  connection: async () => {
131
150
  if (base.settings.offline)
@@ -139,13 +158,16 @@ export const messengerContext = (command, messenger) => {
139
158
  },
140
159
  account: async () => {
141
160
  const account = recalledAccount(app, provider, profile, base.env);
142
- if (!account) {
143
- throw new CliError("not_found", `nothing recorded for profile "${profile}" yet — run the command once without --offline`);
144
- }
161
+ if (!account)
162
+ throw unrecorded(messenger, profile);
145
163
  return account;
146
164
  },
147
165
  store: () => {
148
- store ??= openStore({ env: base.env });
166
+ store ??= openStore({ env: base.env }).then(async (opened) => {
167
+ if (messenger.history === "store")
168
+ await warnUnserved(messenger, profile, base, opened);
169
+ return opened;
170
+ });
149
171
  return store;
150
172
  },
151
173
  };
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/messenger/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/messenger/context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"download-command.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/download-command.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,EAAE,KAAK,SAAS,EAA2C,MAAM,cAAc,CAAA;AAEtF,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,WAAW,CAAA;AAE9E,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,iGAAiG;IACjG,QAAQ,CAAC,EAAE,IAAI,CAAA;CAChB;AAED,wHAAwH;AACxH,eAAO,MAAM,kBAAkB,aAAc,OAAO,aAAa,SAAS,KAAG,OAiCvE,CAAA;AAsKN;;;GAGG;AACH,eAAO,MAAM,QAAQ,SAAU,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAQ5D,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,SACT,UAAU,aACL,MAAM,gBACH,MAAM,eACA;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,KACvC,OAAO,CAAC,KAAK,CAgCf,CAAA"}
1
+ {"version":3,"file":"download-command.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/download-command.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,OAAO,EAAiB,KAAK,SAAS,EAA2C,MAAM,cAAc,CAAA;AAErG,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,WAAW,CAAA;AAEvD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,iGAAiG;IACjG,QAAQ,CAAC,EAAE,IAAI,CAAA;CAChB;AAED,wHAAwH;AACxH,eAAO,MAAM,kBAAkB,aAAc,OAAO,aAAa,SAAS,KAAG,OAiCvE,CAAA;AA+ON;;;GAGG;AACH,eAAO,MAAM,QAAQ,SAAU,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAQ5D,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,SACT,UAAU,aACL,MAAM,gBACH,MAAM,eACA;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,KACvC,OAAO,CAAC,KAAK,CAgCf,CAAA"}
@@ -5,6 +5,8 @@ import { Readable, Transform } from "node:stream";
5
5
  import { pipeline } from "node:stream/promises";
6
6
  import { setTimeout as sleep } from "node:timers/promises";
7
7
  import { CliError } from "@leemour/cli-core";
8
+ import { FETCHING, keyOf } from "../../services/archive.js";
9
+ import { OFFLINE } from "../../services/deps.js";
8
10
  import { patiently } from "../../services/patience.js";
9
11
  import { parseDuration } from "../settings.js";
10
12
  import { messengerContext } from "./context.js";
@@ -26,7 +28,7 @@ export const downloadSubcommand = (messages, messenger) => messages
26
28
  throw new CliError("validation_error", "--all saves the whole chat; leave out the message id");
27
29
  }
28
30
  if (all) {
29
- await downloadChat(this, context, chat, output, parseDuration(pause, "--pause"));
31
+ await downloadChat(this, context, messenger, chat, output, parseDuration(pause, "--pause"));
30
32
  return;
31
33
  }
32
34
  if (messageId === undefined)
@@ -56,22 +58,29 @@ const PAGE = 100;
56
58
  /** Attachments that are never a file, so their messages cost no download request. */
57
59
  const NOT_FILES = new Set(["webpage", "share", "poll", "location", "contact"]);
58
60
  /**
59
- * Stretches of message ids already walked, in a dot file beside the files — not in the store, which
60
- * this would need a migration for. Written after every message with a file, so a run cut short by
61
- * `--timeout` or Ctrl-C repeats at most the file it was in the middle of.
61
+ * Stretches of message keys already walked (`keyOf`), in a dot file beside the files — not in the
62
+ * store, which this would need a migration for. Written after every message with a file, so a run cut
63
+ * short by `--timeout` or Ctrl-C repeats at most the file it was in the middle of.
62
64
  */
63
65
  const progressFile = (output, chatId) => join(output, `.download-${chatId.replace(/[^\w-]/g, "_")}.json`);
64
- const readProgress = (path) => {
66
+ /** A file from before `by` was written is keyed by id. One keyed the other way is set aside, not misread. */
67
+ const readProgress = (path, by, note) => {
65
68
  if (!existsSync(path))
66
69
  return [];
67
- const { done } = JSON.parse(readFileSync(path, "utf8"));
70
+ const { done, by: was = "id" } = JSON.parse(readFileSync(path, "utf8"));
71
+ if (was !== by) {
72
+ note(`${path} counts messages by ${was}, this messenger by ${by} — starting from the newest again`);
73
+ return [];
74
+ }
68
75
  return Array.isArray(done) ? done : [];
69
76
  };
70
- const writeProgress = (path, chatId, done) => {
71
- writeFileSync(`${path}.tmp`, `${JSON.stringify({ chat: chatId, done })}\n`, { mode: 0o600 });
77
+ const writeProgress = (path, chatId, progress) => {
78
+ writeFileSync(`${path}.tmp`, `${JSON.stringify({ chat: chatId, ...progress })}\n`, { mode: 0o600 });
72
79
  renameSync(`${path}.tmp`, path);
73
80
  };
74
- const downloadChat = async (command, context, chat, output, pauseMs) => {
81
+ const downloadChat = async (command, context, messenger, chat, output, pauseMs) => {
82
+ if (context.settings.offline)
83
+ throw new CliError("validation_error", OFFLINE);
75
84
  const items = [];
76
85
  const onSaved = (one) => {
77
86
  if (context.format === "pretty")
@@ -84,7 +93,15 @@ const downloadChat = async (command, context, chat, output, pauseMs) => {
84
93
  const stop = stopOnSignal(command);
85
94
  try {
86
95
  mkdirSync(output, { recursive: true });
87
- const result = await context.withMessenger((connection) => walkChat(connection, chat, { output, pauseMs, stop: stop.signal, note: context.renderer.note, onSaved }));
96
+ const result = await context.withServices((services) => walkChat(services.messages, chat, {
97
+ output,
98
+ pauseMs,
99
+ fetching: messenger.fetching ?? FETCHING,
100
+ fromStore: messenger.history === "store",
101
+ stop: stop.signal,
102
+ note: context.renderer.note,
103
+ onSaved,
104
+ }));
88
105
  if (context.format === "json")
89
106
  context.renderer.result({ items, ...result });
90
107
  else
@@ -95,13 +112,40 @@ const downloadChat = async (command, context, chat, output, pauseMs) => {
95
112
  }
96
113
  };
97
114
  const summary = ({ saved, existing, complete }) => `${saved} saved${existing > 0 ? `, ${existing} already there` : ""}${complete ? " — the whole chat" : " — run it again to continue"}`;
115
+ /** Both stretches as one, keeping by time the messages walked at its two ends. */
116
+ const joined = (a, b) => {
117
+ const from = Math.min(a.from, b.from);
118
+ const to = Math.max(a.to, b.to);
119
+ if (a.atFrom === undefined && b.atFrom === undefined)
120
+ return { from, to };
121
+ const at = (moment) => [
122
+ ...new Set([a, b].flatMap((one) => [
123
+ ...(one.from === moment ? (one.atFrom ?? []) : []),
124
+ ...(one.to === moment ? (one.atTo ?? []) : []),
125
+ ])),
126
+ ];
127
+ return { from, to, atFrom: at(from), atTo: at(to) };
128
+ };
98
129
  /**
99
- * Newest to oldest, page by page. A stretch an earlier run walked is jumped over, and joins this run's,
100
- * so the progress file stays a few stretches however often the download is cut and resumed.
130
+ * Newest to oldest, page by page, through the messages service — so a messenger whose history lives
131
+ * in the local store pages the store, and only the files come from the messenger. A stretch an earlier
132
+ * run walked is jumped over, and joins this run's, so the progress file stays a few stretches however
133
+ * often the download is cut and resumed.
134
+ *
135
+ * By time, the messenger pages back from an ISO time (`Fetching.orderBy`), and messages share a moment:
136
+ * a page is asked for up to and including the oldest moment seen, so none sent then is skipped, and
137
+ * what this run already walked is passed over. A stretch's ends hold only the messages it names.
101
138
  */
102
- const walkChat = async (connection, chat, { output, pauseMs, stop, note, onSaved }) => {
103
- const download = capability(connection, "download", "download attachments");
139
+ const walkChat = async (messages, chat, { output, pauseMs, fetching, fromStore, stop, note, onSaved }) => {
140
+ const by = fetching.orderBy ?? "id";
141
+ const keyed = keyOf(fetching);
142
+ const pagesByTime = by === "time" && !fromStore;
143
+ const inside = ({ from, to, atFrom, atTo }, key, id) => by === "time"
144
+ ? (from < key && key < to) || (key === from && !!atFrom?.includes(id)) || (key === to && !!atTo?.includes(id))
145
+ : from <= key && key <= to;
146
+ const point = (key, id) => by === "time" ? { from: key, to: key, atFrom: [id], atTo: [id] } : { from: key, to: key };
104
147
  let before;
148
+ let beforeMs = Number.POSITIVE_INFINITY;
105
149
  let chatId;
106
150
  let path = "";
107
151
  let done = [];
@@ -111,10 +155,14 @@ const walkChat = async (connection, chat, { output, pauseMs, stop, note, onSaved
111
155
  let complete = false;
112
156
  const remember = () => {
113
157
  if (chatId !== undefined)
114
- writeProgress(path, chatId, run ? [...done, run] : done);
158
+ writeProgress(path, chatId, { by, done: run ? [...done, run] : done });
159
+ };
160
+ const backTo = (ms) => {
161
+ beforeMs = ms;
162
+ before = new Date(ms).toISOString();
115
163
  };
116
164
  pages: while (!stop.aborted) {
117
- const page = await patiently(() => connection.history(chat, { limit: PAGE, ...(before ? { before } : {}) }), note, stop);
165
+ const page = await patiently(() => messages.list(chat, { limit: PAGE, ...(before ? { before } : {}) }), note, stop);
118
166
  const first = page.items[0];
119
167
  if (!first) {
120
168
  complete = true;
@@ -123,26 +171,36 @@ const walkChat = async (connection, chat, { output, pauseMs, stop, note, onSaved
123
171
  if (chatId === undefined) {
124
172
  chatId = first.chatId;
125
173
  path = progressFile(output, chatId);
126
- done = readProgress(path);
174
+ done = readProgress(path, by, note);
127
175
  }
128
- const newestFirst = page.items.toReversed().map((message) => ({ message, key: Number(message.id) }));
129
- // The stretches in the progress file compare ids as numbers; the order itself is the adapter's.
176
+ const newestFirst = page.items.toReversed().map((message) => ({ message, key: keyed(message) }));
130
177
  if (newestFirst.some(({ key }) => !Number.isSafeInteger(key))) {
131
- throw new CliError("validation_error", "this messenger's message ids do not order a chat, so --all cannot resume");
178
+ throw new CliError("validation_error", by === "id"
179
+ ? "this messenger's message ids are not whole numbers, so --all cannot resume"
180
+ : "a message here has no send time, so --all cannot resume");
132
181
  }
182
+ let fresh = 0;
133
183
  for (const { message, key } of newestFirst) {
134
184
  if (stop.aborted)
135
185
  break pages;
136
- const walked = done.find(({ from, to }) => from <= key && key <= to);
137
- if (walked) {
138
- done = done.filter((one) => one !== walked);
139
- run = { from: walked.from, to: Math.max(run?.to ?? walked.to, walked.to) };
186
+ if (run && inside(run, key, message.id))
187
+ continue;
188
+ fresh += 1;
189
+ const known = done.find((one) => inside(one, key, message.id));
190
+ if (known) {
191
+ done = done.filter((one) => one !== known);
192
+ run = run ? joined(run, known) : known;
140
193
  remember();
141
- before = String(walked.from);
194
+ if (fromStore)
195
+ continue;
196
+ if (pagesByTime)
197
+ backTo(known.from + 1);
198
+ else
199
+ before = String(known.from);
142
200
  continue pages;
143
201
  }
144
202
  if (message.attachments.some(({ kind }) => !NOT_FILES.has(kind))) {
145
- const { files } = await patiently(() => download(chat, message.id), note, stop);
203
+ const { files } = await patiently(() => messages.download(chat, message.id), note, stop);
146
204
  for (const [index, file] of files.entries()) {
147
205
  const one = await patiently(() => save(file, output, `${message.id}-${index + 1}`, { unique: true }), note, stop);
148
206
  if (one.existing)
@@ -151,19 +209,28 @@ const walkChat = async (connection, chat, { output, pauseMs, stop, note, onSaved
151
209
  saved += 1;
152
210
  onSaved(one);
153
211
  }
154
- run = { from: key, to: run?.to ?? key };
212
+ run = run ? joined(run, point(key, message.id)) : point(key, message.id);
155
213
  remember();
156
214
  }
157
215
  else
158
- run = { from: key, to: run?.to ?? key };
216
+ run = run ? joined(run, point(key, message.id)) : point(key, message.id);
159
217
  }
160
218
  remember();
161
219
  if (!page.hasMore) {
162
220
  complete = true;
163
221
  break;
164
222
  }
165
- before = newestFirst.at(-1)?.message.id;
166
- note(`${saved} files so far, back to message ${before}`);
223
+ const oldest = newestFirst.at(-1);
224
+ if (pagesByTime && oldest) {
225
+ // A page of nothing new means one moment holds more than a page: step past it rather than loop.
226
+ if (fresh > 0)
227
+ backTo(oldest.key + 1);
228
+ else
229
+ backTo(Math.min(beforeMs - 1, oldest.key));
230
+ }
231
+ else
232
+ before = oldest?.message.id;
233
+ note(`${saved} files so far, back to message ${oldest?.message.id}`);
167
234
  await sleep(pauseMs, undefined, { signal: stop }).catch(() => { });
168
235
  }
169
236
  remember();