@leemour/cli-messaging 0.88.0 → 0.90.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 (111) hide show
  1. package/dist/background/units.d.ts +7 -0
  2. package/dist/background/units.d.ts.map +1 -1
  3. package/dist/background/units.js +3 -2
  4. package/dist/background/units.js.map +1 -1
  5. package/dist/cli/bot/port.d.ts +29 -0
  6. package/dist/cli/bot/port.d.ts.map +1 -0
  7. package/dist/cli/bot/port.js +2 -0
  8. package/dist/cli/bot/port.js.map +1 -0
  9. package/dist/cli/bot/registry.d.ts +37 -0
  10. package/dist/cli/bot/registry.d.ts.map +1 -0
  11. package/dist/cli/bot/registry.js +94 -0
  12. package/dist/cli/bot/registry.js.map +1 -0
  13. package/dist/cli/bot/token.d.ts +25 -0
  14. package/dist/cli/bot/token.d.ts.map +1 -0
  15. package/dist/cli/bot/token.js +36 -0
  16. package/dist/cli/bot/token.js.map +1 -0
  17. package/dist/cli/index.d.ts +5 -1
  18. package/dist/cli/index.d.ts.map +1 -1
  19. package/dist/cli/index.js +4 -1
  20. package/dist/cli/index.js.map +1 -1
  21. package/dist/cli/messenger/after.d.ts +18 -5
  22. package/dist/cli/messenger/after.d.ts.map +1 -1
  23. package/dist/cli/messenger/after.js +19 -31
  24. package/dist/cli/messenger/after.js.map +1 -1
  25. package/dist/cli/messenger/conversations-command.d.ts +10 -0
  26. package/dist/cli/messenger/conversations-command.d.ts.map +1 -0
  27. package/dist/cli/messenger/conversations-command.js +101 -0
  28. package/dist/cli/messenger/conversations-command.js.map +1 -0
  29. package/dist/cli/messenger/messages-command.d.ts.map +1 -1
  30. package/dist/cli/messenger/messages-command.js +6 -7
  31. package/dist/cli/messenger/messages-command.js.map +1 -1
  32. package/dist/cli/messenger/server-command.d.ts +37 -6
  33. package/dist/cli/messenger/server-command.d.ts.map +1 -1
  34. package/dist/cli/messenger/server-command.js +114 -64
  35. package/dist/cli/messenger/server-command.js.map +1 -1
  36. package/dist/cli/messenger/store-maintenance-command.d.ts.map +1 -1
  37. package/dist/cli/messenger/store-maintenance-command.js +34 -0
  38. package/dist/cli/messenger/store-maintenance-command.js.map +1 -1
  39. package/dist/conversations/link.d.ts +2 -2
  40. package/dist/conversations/link.d.ts.map +1 -1
  41. package/dist/conversations/link.js +6 -4
  42. package/dist/conversations/link.js.map +1 -1
  43. package/dist/domain/models.d.ts +2 -0
  44. package/dist/domain/models.d.ts.map +1 -1
  45. package/dist/mcp/confirm.js +1 -1
  46. package/dist/mcp/confirm.js.map +1 -1
  47. package/dist/mcp/tool.d.ts +2 -0
  48. package/dist/mcp/tool.d.ts.map +1 -1
  49. package/dist/mcp/tool.js +2 -0
  50. package/dist/mcp/tool.js.map +1 -1
  51. package/dist/mcp/tools/chats.d.ts.map +1 -1
  52. package/dist/mcp/tools/chats.js +13 -8
  53. package/dist/mcp/tools/chats.js.map +1 -1
  54. package/dist/mcp/tools/conversations.d.ts +5 -0
  55. package/dist/mcp/tools/conversations.d.ts.map +1 -0
  56. package/dist/mcp/tools/conversations.js +56 -0
  57. package/dist/mcp/tools/conversations.js.map +1 -0
  58. package/dist/mcp/tools/inbox.js +3 -3
  59. package/dist/mcp/tools/inbox.js.map +1 -1
  60. package/dist/mcp/tools/messages-actions.js +2 -2
  61. package/dist/mcp/tools/messages-actions.js.map +1 -1
  62. package/dist/mcp/tools/messages-send.js +4 -4
  63. package/dist/mcp/tools/messages-send.js.map +1 -1
  64. package/dist/mcp/tools/messages.d.ts.map +1 -1
  65. package/dist/mcp/tools/messages.js +25 -18
  66. package/dist/mcp/tools/messages.js.map +1 -1
  67. package/dist/mcp/tools/review.d.ts.map +1 -1
  68. package/dist/mcp/tools/review.js +3 -3
  69. package/dist/mcp/tools/review.js.map +1 -1
  70. package/dist/mcp/tools.d.ts.map +1 -1
  71. package/dist/mcp/tools.js +2 -0
  72. package/dist/mcp/tools.js.map +1 -1
  73. package/dist/parity/bin.js +15 -2
  74. package/dist/parity/bin.js.map +1 -1
  75. package/dist/parity/index.d.ts +1 -0
  76. package/dist/parity/index.d.ts.map +1 -1
  77. package/dist/parity/index.js +1 -0
  78. package/dist/parity/index.js.map +1 -1
  79. package/dist/parity/wording.d.ts +7 -0
  80. package/dist/parity/wording.d.ts.map +1 -0
  81. package/dist/parity/wording.js +31 -0
  82. package/dist/parity/wording.js.map +1 -0
  83. package/dist/sends/permissions.js +1 -1
  84. package/dist/sends/permissions.js.map +1 -1
  85. package/dist/services/conversations.d.ts +45 -0
  86. package/dist/services/conversations.d.ts.map +1 -0
  87. package/dist/services/conversations.js +92 -0
  88. package/dist/services/conversations.js.map +1 -0
  89. package/dist/services/index.d.ts +4 -0
  90. package/dist/services/index.d.ts.map +1 -1
  91. package/dist/services/index.js +3 -0
  92. package/dist/services/index.js.map +1 -1
  93. package/dist/store/sqlite/conversations.d.ts +45 -0
  94. package/dist/store/sqlite/conversations.d.ts.map +1 -0
  95. package/dist/store/sqlite/conversations.js +309 -0
  96. package/dist/store/sqlite/conversations.js.map +1 -0
  97. package/dist/store/sqlite/messages.d.ts.map +1 -1
  98. package/dist/store/sqlite/messages.js +2 -0
  99. package/dist/store/sqlite/messages.js.map +1 -1
  100. package/dist/store/sqlite/reads.d.ts +50 -0
  101. package/dist/store/sqlite/reads.d.ts.map +1 -1
  102. package/dist/store/sqlite/reads.js +2 -1
  103. package/dist/store/sqlite/reads.js.map +1 -1
  104. package/dist/store/sqlite/search.d.ts +33 -0
  105. package/dist/store/sqlite/search.d.ts.map +1 -1
  106. package/dist/store/store.d.ts +70 -0
  107. package/dist/store/store.d.ts.map +1 -1
  108. package/dist/store/store.js +46 -0
  109. package/dist/store/store.js.map +1 -1
  110. package/package.json +1 -1
  111. package/parity.json +47 -21
@@ -9,6 +9,13 @@ export interface Unit {
9
9
  /** What the unit runs, and the variables it runs with. */
10
10
  command: string[];
11
11
  environment: Record<string, string>;
12
+ /** What the server does, for `systemctl status` and the agent list. */
13
+ purpose?: string;
14
+ /**
15
+ * Exit codes that must not start it again — a refused login retried every 30 s is a login per
16
+ * retry. launchd cannot leave out single codes, so with any of these its agent does not restart.
17
+ */
18
+ noRestartOn?: number[];
12
19
  }
13
20
  /**
14
21
  * Only the variables that say **where** the files are travel into the unit: a unit written from a
@@ -1 +1 @@
1
- {"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../src/background/units.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAS,WAAW,OAAO,MAAM,CAAC,UAAU,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAOjG,CAAA;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,CAAA;IACjD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,KAAK,MAAM,CAAA;IAC9C,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,EAAE,CAAA;IACjC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,EAAE,CAAA;IAChC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnG,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,kDAAkD;IAClD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC9B,+CAA+C;IAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAA;CAChC;AAaD,eAAO,MAAM,OAAO,QAAS,WAAW,UAAU,YAAY,OAAO,MAAM,CAAC,UAAU,KAAG,QAmExF,CAAA;AAID,eAAO,MAAM,OAAO,QAAS,WAAW,UAAU,YAAY,OAAO,MAAM,CAAC,UAAU,KAAG,QAgExF,CAAA;AAED,eAAO,MAAM,IAAI,SAAU,MAAM,GAAG,SAAS,SAAS,MAAM,KAAG,MACyD,CAAA;AAExH,4GAA4G;AAC5G,eAAO,MAAM,OAAO,QAAS,WAAW,UAAU,YAAY,KAAG,QAgBhE,CAAA;AAED,eAAO,MAAM,WAAW,QAAS,WAAW,UAAU,YAAY,OAAO,MAAM,CAAC,UAAU,KAAG,QAI5F,CAAA"}
1
+ {"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../src/background/units.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAS,WAAW,OAAO,MAAM,CAAC,UAAU,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAOjG,CAAA;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,CAAA;IACjD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,KAAK,MAAM,CAAA;IAC9C,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,EAAE,CAAA;IACjC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,EAAE,CAAA;IAChC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnG,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,kDAAkD;IAClD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC9B,+CAA+C;IAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAA;CAChC;AAaD,eAAO,MAAM,OAAO,QAAS,WAAW,UAAU,YAAY,OAAO,MAAM,CAAC,UAAU,KAAG,QAoExF,CAAA;AAID,eAAO,MAAM,OAAO,QAAS,WAAW,UAAU,YAAY,OAAO,MAAM,CAAC,UAAU,KAAG,QAgExF,CAAA;AAED,eAAO,MAAM,IAAI,SAAU,MAAM,GAAG,SAAS,SAAS,MAAM,KAAG,MACyD,CAAA;AAExH,4GAA4G;AAC5G,eAAO,MAAM,OAAO,QAAS,WAAW,UAAU,YAAY,KAAG,QAgBhE,CAAA;AAED,eAAO,MAAM,WAAW,QAAS,WAAW,UAAU,YAAY,OAAO,MAAM,CAAC,UAAU,KAAG,QAI5F,CAAA"}
@@ -39,13 +39,14 @@ export const systemd = (app, system, env) => {
39
39
  },
40
40
  text: (unit) => [
41
41
  "[Unit]",
42
- `Description=${app.command} serve — keep the local message archive current (profile ${unit.profile})`,
42
+ `Description=${app.command} serve — ${unit.purpose ?? "keep the local message archive current"} (profile ${unit.profile})`,
43
43
  "",
44
44
  "[Service]",
45
45
  `ExecStart=${unit.command.map((word) => systemdQuote(word, { command: true })).join(" ")}`,
46
46
  ...Object.entries(unit.environment).map(([name, value]) => `Environment=${systemdQuote(`${name}=${value}`)}`),
47
47
  "Restart=on-failure",
48
48
  "RestartSec=30",
49
+ ...(unit.noRestartOn?.length ? [`RestartPreventExitStatus=${unit.noRestartOn.join(" ")}`] : []),
49
50
  "",
50
51
  "[Install]",
51
52
  "WantedBy=default.target",
@@ -113,7 +114,7 @@ export const launchd = (app, system, env) => {
113
114
  // launchd loads every agent here at login; disabled, it waits for `server start` to enable it.
114
115
  " <key>Disabled</key><true/>",
115
116
  " <key>RunAtLoad</key><true/>",
116
- " <key>KeepAlive</key><dict><key>SuccessfulExit</key><false/></dict>",
117
+ ...(unit.noRestartOn?.length ? [] : [" <key>KeepAlive</key><dict><key>SuccessfulExit</key><false/></dict>"]),
117
118
  " <key>ThrottleInterval</key><integer>30</integer>",
118
119
  ` <key>StandardOutPath</key><string>${xml(unit.logPath ?? "")}</string>`,
119
120
  ` <key>StandardErrorPath</key><string>${xml(unit.logPath ?? "")}</string>`,
@@ -1 +1 @@
1
- {"version":3,"file":"units.js","sourceRoot":"","sources":["../../src/background/units.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"units.js","sourceRoot":"","sources":["../../src/background/units.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Command } from "commander";
2
+ import type { Provider } from "../../domain/models.js";
3
+ import type { AppIdentity } from "../app.js";
4
+ import type { MessengerCore } from "../messenger/port.js";
5
+ import type { GlobalFlags, ResolveOptions, Settings } from "../settings.js";
6
+ import type { ChatRegistry } from "./registry.js";
7
+ import type { BotTokenStore } from "./token.js";
8
+ /**
9
+ * The part of the personal core a bot can do. It grows as bot commands move here; a bot never gets
10
+ * `chats` or `history` from this type, because neither Bot API lists a bot's chats.
11
+ */
12
+ export type BotAdapter = Pick<MessengerCore, "me" | "close">;
13
+ /** What one messenger CLI hands the shared bot commands. */
14
+ export interface BotMessenger {
15
+ app: AppIdentity;
16
+ /** How the store tells this messenger's bots from its personal accounts: `max-bot`, `telegram-bot`. */
17
+ provider: Provider;
18
+ /** The messenger's own name, as its users write it — `MAX`, `Telegram`. */
19
+ name?: string;
20
+ /** Called with `kind: "bot"`. */
21
+ resolveSettings: (flags: GlobalFlags, options?: ResolveOptions) => Settings;
22
+ /** A client for this token; `stop` ends a command that runs until told to, and its request in flight. */
23
+ connect: (command: Command, token: string, stop?: AbortSignal) => Promise<BotAdapter>;
24
+ /** Where the token lives; the shared `BotTokenStore` when unset. A CLI's tests put their own here. */
25
+ tokenStore?: (command: Command, profile: string) => BotTokenStore;
26
+ /** The chats the bot has seen; the shared `ChatRegistry` when unset. */
27
+ registry?: (command: Command, profile: string) => ChatRegistry;
28
+ }
29
+ //# sourceMappingURL=port.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../../src/cli/bot/port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,OAAO,CAAC,CAAA;AAE5D,4DAA4D;AAC5D,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,WAAW,CAAA;IAChB,uGAAuG;IACvG,QAAQ,EAAE,QAAQ,CAAA;IAClB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iCAAiC;IACjC,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,QAAQ,CAAA;IAC3E,yGAAyG;IACzG,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IACrF,sGAAsG;IACtG,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAA;IACjE,wEAAwE;IACxE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,YAAY,CAAA;CAC/D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port.js","sourceRoot":"","sources":["../../../src/cli/bot/port.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import type { Chat } from "../../domain/models.js";
2
+ import type { AppIdentity } from "../app.js";
3
+ export interface SeenChat extends Chat {
4
+ firstSeenAt: string;
5
+ lastSeenAt: string;
6
+ }
7
+ /** Everything this machine keeps about its bots: seen chats, recipients, the send journal. */
8
+ export declare const botsDirectory: (app: AppIdentity, env?: NodeJS.ProcessEnv) => string;
9
+ /** One bot's files. The names are what max-cli has always used: a moved path would lose a recipient list, and with it the limit. */
10
+ export declare const botFiles: (app: AppIdentity, profile: string, env?: NodeJS.ProcessEnv) => {
11
+ registry: string;
12
+ recipients: string;
13
+ journal: string;
14
+ };
15
+ /**
16
+ * The chats this bot has seen, because neither MAX's nor Telegram's Bot API has a call that lists them.
17
+ *
18
+ * State, not cache: the messenger cannot give it back, so clearing a cache must not take it. Titles
19
+ * are in it, hence 0600.
20
+ */
21
+ export declare class ChatRegistry {
22
+ #private;
23
+ constructor(app: AppIdentity, profile: string, env?: NodeJS.ProcessEnv);
24
+ list(): SeenChat[];
25
+ /** The bot's own user id, once any command has learned it — the key its messages are stored under. */
26
+ botId(): string | undefined;
27
+ rememberBot(id: string): void;
28
+ /** Makes this bot known to `bot list` before it has seen any chat. */
29
+ touch(): void;
30
+ /** Newer facts win; a chat seen only as an id keeps the title it had. */
31
+ observe(chats: readonly (Partial<Chat> & {
32
+ id: string;
33
+ })[], now?: Date): void;
34
+ }
35
+ /** Every profile that has ever kept a registry — the bots this machine has used. */
36
+ export declare const registryProfiles: (app: AppIdentity, env?: NodeJS.ProcessEnv) => string[];
37
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/cli/bot/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE5C,MAAM,WAAW,QAAS,SAAQ,IAAI;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,8FAA8F;AAC9F,eAAO,MAAM,aAAa,QAAS,WAAW,QAAO,MAAM,CAAC,UAAU,KAAiB,MACC,CAAA;AAExF,oIAAoI;AACpI,eAAO,MAAM,QAAQ,QAAS,WAAW,WAAW,MAAM,QAAO,MAAM,CAAC,UAAU;IAG9E,QAAQ;IACR,UAAU;IACV,OAAO;CAEV,CAAA;AAED;;;;;GAKG;AACH,qBAAa,YAAY;;IAGvB,YAAY,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,EAElF;IAED,IAAI,IAAI,QAAQ,EAAE,CAGjB;IAED,sGAAsG;IACtG,KAAK,IAAI,MAAM,GAAG,SAAS,CAG1B;IAED,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG5B;IAED,sEAAsE;IACtE,KAAK,IAAI,IAAI,CAEZ;IAED,yEAAyE;IACzE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,EAAE,GAAG,GAAE,IAAiB,GAAG,IAAI,CAuBxF;CAeF;AAED,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,QAAS,WAAW,QAAO,MAAM,CAAC,UAAU,KAAiB,MAAM,EAO/F,CAAA"}
@@ -0,0 +1,94 @@
1
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { resolvePaths, writeSecurely } from "@leemour/cli-core";
4
+ /** Everything this machine keeps about its bots: seen chats, recipients, the send journal. */
5
+ export const botsDirectory = (app, env = process.env) => join(resolvePaths({ appName: app.appName, prefix: app.envPrefix, env }).state, "bots");
6
+ /** One bot's files. The names are what max-cli has always used: a moved path would lose a recipient list, and with it the limit. */
7
+ export const botFiles = (app, profile, env = process.env) => {
8
+ const directory = botsDirectory(app, env);
9
+ return {
10
+ registry: join(directory, `${profile}.json`),
11
+ recipients: join(directory, "recipients", `${profile}.json`),
12
+ journal: join(directory, "sends", `${profile}.jsonl`),
13
+ };
14
+ };
15
+ /**
16
+ * The chats this bot has seen, because neither MAX's nor Telegram's Bot API has a call that lists them.
17
+ *
18
+ * State, not cache: the messenger cannot give it back, so clearing a cache must not take it. Titles
19
+ * are in it, hence 0600.
20
+ */
21
+ export class ChatRegistry {
22
+ #path;
23
+ constructor(app, profile, env = process.env) {
24
+ this.#path = botFiles(app, profile, env).registry;
25
+ }
26
+ list() {
27
+ const { chats } = this.#read();
28
+ return Array.isArray(chats) ? chats : [];
29
+ }
30
+ /** The bot's own user id, once any command has learned it — the key its messages are stored under. */
31
+ botId() {
32
+ const { botId } = this.#read();
33
+ return typeof botId === "string" ? botId : undefined;
34
+ }
35
+ rememberBot(id) {
36
+ const file = this.#read();
37
+ if (file.botId !== id)
38
+ this.#write({ ...file, botId: id });
39
+ }
40
+ /** Makes this bot known to `bot list` before it has seen any chat. */
41
+ touch() {
42
+ if (!existsSync(this.#path))
43
+ writeSecurely(this.#path, `${JSON.stringify({ chats: [] }, null, 2)}\n`, 0o600);
44
+ }
45
+ /** Newer facts win; a chat seen only as an id keeps the title it had. */
46
+ observe(chats, now = new Date()) {
47
+ if (chats.length === 0)
48
+ return;
49
+ const byId = new Map(this.list().map((chat) => [chat.id, chat]));
50
+ const at = now.toISOString();
51
+ for (const chat of chats) {
52
+ const known = byId.get(chat.id);
53
+ const defined = Object.fromEntries(Object.entries(chat).filter(([, value]) => value !== undefined && value !== null));
54
+ byId.set(chat.id, {
55
+ title: null,
56
+ kind: "unknown",
57
+ unreadCount: null,
58
+ lastMessageAt: null,
59
+ participantsCount: null,
60
+ ...known,
61
+ ...defined,
62
+ id: chat.id,
63
+ firstSeenAt: known?.firstSeenAt ?? at,
64
+ lastSeenAt: at,
65
+ });
66
+ }
67
+ this.#write({ ...this.#read(), chats: [...byId.values()] });
68
+ }
69
+ #read() {
70
+ if (!existsSync(this.#path))
71
+ return {};
72
+ try {
73
+ const parsed = JSON.parse(readFileSync(this.#path, "utf8"));
74
+ return parsed && typeof parsed === "object" ? parsed : {};
75
+ }
76
+ catch {
77
+ return {};
78
+ }
79
+ }
80
+ #write(file) {
81
+ writeSecurely(this.#path, `${JSON.stringify(file, null, 2)}\n`, 0o600);
82
+ }
83
+ }
84
+ /** Every profile that has ever kept a registry — the bots this machine has used. */
85
+ export const registryProfiles = (app, env = process.env) => {
86
+ const directory = botsDirectory(app, env);
87
+ if (!existsSync(directory))
88
+ return [];
89
+ return readdirSync(directory, { withFileTypes: true })
90
+ .filter((entry) => entry.isFile() && entry.name.endsWith(".json"))
91
+ .map((entry) => entry.name)
92
+ .map((name) => name.slice(0, -".json".length));
93
+ };
94
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/cli/bot/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type CredentialSource, type KeyringStore } from "@leemour/cli-core";
2
+ import { type AppIdentity } from "../app.js";
3
+ export interface BotTokenStoreOptions {
4
+ app: AppIdentity;
5
+ profile: string;
6
+ env?: NodeJS.ProcessEnv;
7
+ keyring?: KeyringStore;
8
+ configDir?: string;
9
+ }
10
+ /**
11
+ * A bot token per profile, beside — never inside — the personal session: keyring account
12
+ * `bot:<profile>` under the app's own service, `<PREFIX>_BOT_TOKEN`, then a 0600 file.
13
+ */
14
+ export declare class BotTokenStore {
15
+ #private;
16
+ readonly profile: string;
17
+ constructor({ app, profile, env, keyring, configDir }: BotTokenStoreOptions);
18
+ read(): {
19
+ token: string;
20
+ source: CredentialSource;
21
+ } | undefined;
22
+ write(token: string): CredentialSource;
23
+ remove(): CredentialSource[];
24
+ }
25
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/cli/bot/token.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAGlB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,KAAK,WAAW,EAAW,MAAM,WAAW,CAAA;AAErD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,WAAW,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,aAAa;;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAIxB,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,GAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,oBAAoB,EAaxF;IAED,IAAI,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,GAAG,SAAS,CAG9D;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAErC;IAED,MAAM,IAAI,gBAAgB,EAAE,CAE3B;CACF"}
@@ -0,0 +1,36 @@
1
+ import { Credentials, pathsAreOverridden, resolvePaths, } from "@leemour/cli-core";
2
+ import { envName } from "../app.js";
3
+ /**
4
+ * A bot token per profile, beside — never inside — the personal session: keyring account
5
+ * `bot:<profile>` under the app's own service, `<PREFIX>_BOT_TOKEN`, then a 0600 file.
6
+ */
7
+ export class BotTokenStore {
8
+ profile;
9
+ #account;
10
+ #credentials;
11
+ constructor({ app, profile, env = process.env, keyring, configDir }) {
12
+ const where = { appName: app.appName, prefix: app.envPrefix, env };
13
+ this.profile = profile;
14
+ this.#account = `bot:${profile}`;
15
+ this.#credentials = new Credentials({
16
+ configDir: configDir ?? resolvePaths(where).config,
17
+ service: app.appName,
18
+ envVar: envName(app, "BOT_TOKEN"),
19
+ isolated: pathsAreOverridden(where),
20
+ ...(keyring ? { keyring } : {}),
21
+ env,
22
+ warn: (message) => process.stderr.write(`${message}\n`),
23
+ });
24
+ }
25
+ read() {
26
+ const stored = this.#credentials.read(this.#account);
27
+ return stored ? { token: stored.secret, source: stored.source } : undefined;
28
+ }
29
+ write(token) {
30
+ return this.#credentials.write(this.#account, token);
31
+ }
32
+ remove() {
33
+ return this.#credentials.remove(this.#account);
34
+ }
35
+ }
36
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/cli/bot/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEX,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAoB,OAAO,EAAE,MAAM,WAAW,CAAA;AAUrD;;;GAGG;AACH,MAAM,OAAO,aAAa;IACf,OAAO,CAAQ;IACf,QAAQ,CAAQ;IAChB,YAAY,CAAa;IAElC,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAwB;QACvF,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAA;QAClE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,OAAO,EAAE,CAAA;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC;YAClC,SAAS,EAAE,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM;YAClD,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC;YACjC,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC;YACnC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,GAAG;YACH,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC;SACxD,CAAC,CAAA;IACJ,CAAC;IAED,IAAI;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC7E,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACtD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChD,CAAC;CACF"}
@@ -3,6 +3,9 @@ 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 { type AppIdentity, envName } from "./app.js";
6
+ export type { BotAdapter, BotMessenger } from "./bot/port.js";
7
+ export { botFiles, botsDirectory, ChatRegistry, registryProfiles, type SeenChat } from "./bot/registry.js";
8
+ export { BotTokenStore, type BotTokenStoreOptions } from "./bot/token.js";
6
9
  export { CONTRACT, commandsCommand } from "./commands-command.js";
7
10
  export { configCommand } from "./config-command.js";
8
11
  export { type BaseContext, type BaseEnvironment, baseContext, environmentOf, outputFor, provide, } from "./context.js";
@@ -16,6 +19,7 @@ export { markReadCommand } from "./messenger/chats-read-command.js";
16
19
  export { completeCommand } from "./messenger/complete-command.js";
17
20
  export { contactsCommand } from "./messenger/contacts-command.js";
18
21
  export { type ConnectOptions, type Fetching, type Messenger, type MessengerContext, messengerContext, } from "./messenger/context.js";
22
+ export { conversationsCommand } from "./messenger/conversations-command.js";
19
23
  export { doctorCommand } from "./messenger/doctor-command.js";
20
24
  export { recipientsCommand, sendsCommand } from "./messenger/guard-commands.js";
21
25
  export { inboxCommand } from "./messenger/inbox.js";
@@ -31,7 +35,7 @@ export type { AccountTools, After, ChatReading, Download, GroupModeration, LiveU
31
35
  export { reactionsCommand } from "./messenger/reactions-command.js";
32
36
  export { reviewCommand } from "./messenger/review.js";
33
37
  export { serveCommand, servingProfiles } from "./messenger/serve-command.js";
34
- export { type ServerSystem, serverCommand } from "./messenger/server-command.js";
38
+ export { type Running, type ServerOptions, type ServerProcess, type ServerSystem, serverCommand, } from "./messenger/server-command.js";
35
39
  export { topicsCommand } from "./messenger/topics-command.js";
36
40
  export { watchCommand } from "./messenger/watch-command.js";
37
41
  export { listed, renderList, renderPage, window, withPaging } from "./paging.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,6 +3,8 @@ 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 { botFiles, botsDirectory, ChatRegistry, registryProfiles } from "./bot/registry.js";
7
+ export { BotTokenStore } from "./bot/token.js";
6
8
  export { CONTRACT, commandsCommand } from "./commands-command.js";
7
9
  export { configCommand } from "./config-command.js";
8
10
  export { baseContext, environmentOf, outputFor, provide, } from "./context.js";
@@ -16,6 +18,7 @@ export { markReadCommand } from "./messenger/chats-read-command.js";
16
18
  export { completeCommand } from "./messenger/complete-command.js";
17
19
  export { contactsCommand } from "./messenger/contacts-command.js";
18
20
  export { messengerContext, } from "./messenger/context.js";
21
+ export { conversationsCommand } from "./messenger/conversations-command.js";
19
22
  export { doctorCommand } from "./messenger/doctor-command.js";
20
23
  export { recipientsCommand, sendsCommand } from "./messenger/guard-commands.js";
21
24
  export { inboxCommand } from "./messenger/inbox.js";
@@ -30,7 +33,7 @@ export { pollsCommand } from "./messenger/polls-command.js";
30
33
  export { reactionsCommand } from "./messenger/reactions-command.js";
31
34
  export { reviewCommand } from "./messenger/review.js";
32
35
  export { serveCommand, servingProfiles } from "./messenger/serve-command.js";
33
- export { serverCommand } from "./messenger/server-command.js";
36
+ export { serverCommand, } from "./messenger/server-command.js";
34
37
  export { topicsCommand } from "./messenger/topics-command.js";
35
38
  export { watchCommand } from "./messenger/watch-command.js";
36
39
  export { listed, renderList, renderPage, window, withPaging } from "./paging.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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"}
@@ -1,7 +1,20 @@
1
1
  import type { After } from "./port.js";
2
- /** Ids are opaque to us — digits in Telegram and MAX, anything in another messenger — so only a moment's shape is a time. */
3
- export declare const afterOf: (reference: string, flag?: string) => After;
4
- export declare const oneDirection: (before: string | undefined, after: string | undefined) => void;
5
- /** A list reads one way from one place: at most one of `--before-id`, `--before-time`, `--after-id`, `--after-time`. */
6
- export declare const listStart: (beforeId?: string, afterId?: string, afterTime?: string, beforeTime?: string) => After | undefined;
2
+ export interface ListStart {
3
+ beforeId?: string;
4
+ beforeTime?: string;
5
+ afterId?: string;
6
+ afterTime?: string;
7
+ }
8
+ /** How each starting point is spelled where it was typed: `--before-id` on the command line, `before_id` in MCP. */
9
+ export type Spell = (key: keyof ListStart) => string;
10
+ export declare const flagOf: Spell;
11
+ /**
12
+ * A list reads one way from one place: at most one starting point. Ids are opaque to us, so
13
+ * `afterId` is never read as a time, however it looks.
14
+ */
15
+ export declare const listStart: (start: ListStart, spell?: Spell) => {
16
+ after?: After;
17
+ before?: string;
18
+ beforeTime?: number;
19
+ };
7
20
  //# sourceMappingURL=after.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"after.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/after.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAEtC,6HAA6H;AAC7H,eAAO,MAAM,OAAO,cAAe,MAAM,oBAAqB,KAU7D,CAAA;AAID,eAAO,MAAM,YAAY,WAAY,MAAM,GAAG,SAAS,SAAS,MAAM,GAAG,SAAS,KAAG,IAIpF,CAAA;AAED,wHAAwH;AACxH,eAAO,MAAM,SAAS,cACT,MAAM,YACP,MAAM,cACJ,MAAM,eACL,MAAM,KAClB,KAAK,GAAG,SAeV,CAAA"}
1
+ {"version":3,"file":"after.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/after.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAEtC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,oHAAoH;AACpH,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,MAAM,SAAS,KAAK,MAAM,CAAA;AAEpD,eAAO,MAAM,MAAM,EAAE,KAAqF,CAAA;AAI1G;;;GAGG;AACH,eAAO,MAAM,SAAS,UACb,SAAS,UACT,KAAK,KACX;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAgBvD,CAAA"}
@@ -1,39 +1,27 @@
1
1
  import { CliError } from "@leemour/cli-core";
2
- import { isMoment, momentOf } from "../../services/moment.js";
3
- /** Ids are opaque to us — digits in Telegram and MAX, anything in another messenger — so only a moment's shape is a time. */
4
- export const afterOf = (reference, flag = "--after") => {
5
- const wanted = reference.trim();
6
- if (isMoment(wanted))
7
- return { time: momentOf(wanted, flag) };
8
- if (!isId(wanted)) {
9
- throw new CliError("validation_error", `${flag} takes a message id, an ISO 8601 time or 30m, 2h, 1d ago — not "${wanted}"`);
10
- }
11
- return { id: wanted };
12
- };
2
+ import { momentOf } from "../../services/moment.js";
3
+ export const flagOf = (key) => `--${key.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)}`;
13
4
  const isId = (value) => value !== "" && !/[\s\p{Cc}]/u.test(value);
14
- export const oneDirection = (before, after) => {
15
- if (before !== undefined && after !== undefined) {
16
- throw new CliError("validation_error", "--before and --after are two directions; give one of them");
17
- }
18
- };
19
- /** A list reads one way from one place: at most one of `--before-id`, `--before-time`, `--after-id`, `--after-time`. */
20
- export const listStart = (beforeId, afterId, afterTime, beforeTime) => {
21
- const given = [
22
- beforeId === undefined ? undefined : "--before-id",
23
- beforeTime === undefined ? undefined : "--before-time",
24
- afterId === undefined ? undefined : "--after-id",
25
- afterTime === undefined ? undefined : "--after-time",
26
- ].filter((flag) => flag !== undefined);
5
+ /**
6
+ * A list reads one way from one place: at most one starting point. Ids are opaque to us, so
7
+ * `afterId` is never read as a time, however it looks.
8
+ */
9
+ export const listStart = (start, spell = flagOf) => {
10
+ const given = Object.keys(start).filter((key) => start[key] !== undefined);
27
11
  if (given.length > 1) {
28
- throw new CliError("validation_error", `${given.join(" and ")} are two starting points; give one of them`);
12
+ throw new CliError("validation_error", `${given.map(spell).join(" and ")} are two starting points; give one of them`);
29
13
  }
14
+ const { beforeId, beforeTime, afterId, afterTime } = start;
15
+ if (beforeTime !== undefined)
16
+ return { beforeTime: momentOf(beforeTime, spell("beforeTime")) };
30
17
  if (afterTime !== undefined)
31
- return { time: momentOf(afterTime, "--after-time") };
32
- if (afterId === undefined)
33
- return undefined;
34
- const id = afterId.trim();
18
+ return { after: { time: momentOf(afterTime, spell("afterTime")) } };
19
+ const id = (beforeId ?? afterId)?.trim();
20
+ if (id === undefined)
21
+ return {};
22
+ const key = beforeId === undefined ? "afterId" : "beforeId";
35
23
  if (!isId(id))
36
- throw new CliError("validation_error", `--after-id takes a message id — not "${afterId}"`);
37
- return { id };
24
+ throw new CliError("validation_error", `${spell(key)} takes a message id — not "${start[key]}"`);
25
+ return key === "beforeId" ? { before: id } : { after: { id } };
38
26
  };
39
27
  //# sourceMappingURL=after.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"after.js","sourceRoot":"","sources":["../../../src/cli/messenger/after.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAG7D,6HAA6H;AAC7H,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,IAAI,GAAG,SAAS,EAAS,EAAE;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAA;IAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,GAAG,IAAI,mEAAmE,MAAM,GAAG,CACpF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAE1E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAA0B,EAAE,KAAyB,EAAQ,EAAE;IAC1F,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAChD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,2DAA2D,CAAC,CAAA;IACrG,CAAC;AACH,CAAC,CAAA;AAED,wHAAwH;AACxH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAAiB,EACjB,OAAgB,EAChB,SAAkB,EAClB,UAAmB,EACA,EAAE;IACrB,MAAM,KAAK,GAAG;QACZ,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;QAClD,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe;QACtD,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;QAChD,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;KACrD,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IACtC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAA;IAC5G,CAAC;IACD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAA;IACjF,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,wCAAwC,OAAO,GAAG,CAAC,CAAA;IACzG,OAAO,EAAE,EAAE,EAAE,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"after.js","sourceRoot":"","sources":["../../../src/cli/messenger/after.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAanD,MAAM,CAAC,MAAM,MAAM,GAAU,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAA;AAE1G,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAE1E;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,KAAgB,EAChB,KAAK,GAAU,MAAM,EACoC,EAAE;IAC3D,MAAM,KAAK,GAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAyB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAA;IACnG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAC9E,CAAA;IACH,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAC1D,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAA;IAC9F,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAA;IAChG,MAAM,EAAE,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,CAAA;IACxC,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAC/B,MAAM,GAAG,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAA;IAC3D,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,8BAA8B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC/G,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA;AAChE,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { Command } from "commander";
2
+ import { type Messenger } from "./context.js";
3
+ /**
4
+ * `conversations`: the threads inside a group chat, found by rules over the stored messages — replies,
5
+ * mentions, one sender's messages in a row. From the store alone; nothing is built until asked (phase 3).
6
+ */
7
+ export declare const conversationsCommand: (messenger: Messenger) => Command;
8
+ /** `messages links`: why a message sits where it does in its conversation. */
9
+ export declare const linksCommand: (messenger: Messenger) => Command;
10
+ //# sourceMappingURL=conversations-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversations-command.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/conversations-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,cAAc,CAAA;AAE/D;;;GAGG;AACH,eAAO,MAAM,oBAAoB,cAAe,SAAS,KAAG,OA6E3D,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,YAAY,cAAe,SAAS,KAAG,OAwB9C,CAAA"}