@leemour/cli-messaging 0.96.0 → 0.97.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -2
- package/dist/cli/bot/command.d.ts +1 -1
- package/dist/cli/bot/command.d.ts.map +1 -1
- package/dist/cli/bot/command.js +51 -10
- package/dist/cli/bot/command.js.map +1 -1
- package/dist/cli/bot/context.d.ts +17 -1
- package/dist/cli/bot/context.d.ts.map +1 -1
- package/dist/cli/bot/context.js +37 -3
- package/dist/cli/bot/context.js.map +1 -1
- package/dist/cli/bot/copy.d.ts +19 -0
- package/dist/cli/bot/copy.d.ts.map +1 -0
- package/dist/cli/bot/copy.js +85 -0
- package/dist/cli/bot/copy.js.map +1 -0
- package/dist/cli/bot/messages.d.ts +10 -0
- package/dist/cli/bot/messages.d.ts.map +1 -0
- package/dist/cli/bot/messages.js +242 -0
- package/dist/cli/bot/messages.js.map +1 -0
- package/dist/cli/bot/port.d.ts +50 -5
- package/dist/cli/bot/port.d.ts.map +1 -1
- package/dist/cli/bot/port.js +2 -1
- package/dist/cli/bot/port.js.map +1 -1
- package/dist/cli/index.d.ts +3 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/messenger/ask.d.ts.map +1 -1
- package/dist/cli/messenger/ask.js +1 -1
- package/dist/cli/messenger/ask.js.map +1 -1
- package/package.json +3 -2
- package/parity.json +23 -75
package/README.md
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
The messenger-neutral half of a messaging command line tool, shared by
|
|
4
4
|
[`tg-cli`](https://github.com/leemour/tg-cli) and, later, [`max-cli`](https://github.com/leemour/max-cli).
|
|
5
|
-
Built on [`@leemour/cli-core`](https://github.com/leemour/cli-core)
|
|
5
|
+
Built on [`@leemour/cli-core`](https://github.com/leemour/cli-core), a peer dependency: the CLI installs
|
|
6
|
+
it itself, so the install holds one copy.
|
|
6
7
|
|
|
7
8
|
**Status: on npm** — what each version changed is in [CHANGELOG.md](CHANGELOG.md). The domain model, message locators, message rendering, name
|
|
8
9
|
resolution, the SQLite seam that runs under Node and Bun, and the first part of the command
|
|
@@ -56,7 +57,13 @@ Both refuse a dirty tree, a branch other than `main` and an unpushed `main`. Whe
|
|
|
56
57
|
version, or a higher one, they commit the next free version to `main` — the next minor for `x.y.0`,
|
|
57
58
|
the next patch otherwise — and publish that. They run every check, and tag `v<version>` once npm
|
|
58
59
|
shows it. The token is never printed and never
|
|
59
|
-
written to a file.
|
|
60
|
+
written to a file.
|
|
61
|
+
|
|
62
|
+
Both also refuse within 24 hours of the last version npm shows, and say when the next one may go. A
|
|
63
|
+
consumer blocked today is the exception (below): `bin/release --blocked "<consumer and reason>"`
|
|
64
|
+
writes `Released early: <reason>` under the version's changelog heading, commits it to `main` and
|
|
65
|
+
publishes. Name the consumer and what it cannot do, in plain words — `pnpm docs:check` refuses an
|
|
66
|
+
internal id. When npm cannot be asked, they refuse rather than skip the check. The GitHub form publishes from the job in the `npm` environment, which is what
|
|
60
67
|
npm's trusted publisher names: `leemour` / `cli-messaging` / `release.yml` / environment `npm`.
|
|
61
68
|
|
|
62
69
|
### How often, and what may break
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import type
|
|
2
|
+
import { type BotMessenger } from "./port.js";
|
|
3
3
|
/**
|
|
4
4
|
* The `bot` group: a bot account through the messenger's official Bot API and a bot token. A CLI adds
|
|
5
5
|
* the commands that are still its own with `addCommand`, on this group or on its `chats`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/cli/bot/command.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/cli/bot/command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,OAAO,EAAE,MAAM,WAAW,CAAA;AAO7C,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AAiO1E;;;GAGG;AACH,eAAO,MAAM,UAAU,QAAS,YAAY,KAAG,OAY9C,CAAA"}
|
package/dist/cli/bot/command.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { CliError } from "@leemour/cli-core";
|
|
2
2
|
import { annotate } from "@leemour/cli-core/commands";
|
|
3
|
-
import { Command } from "commander";
|
|
4
|
-
import {
|
|
3
|
+
import { Argument, Command } from "commander";
|
|
4
|
+
import { guardedWrite } from "../../sends/guarded.js";
|
|
5
|
+
import { newOperationId } from "../../sends/send-id.js";
|
|
5
6
|
import { envName } from "../app.js";
|
|
6
7
|
import { renderList } from "../paging.js";
|
|
7
8
|
import { botContext } from "./context.js";
|
|
9
|
+
import { botCan, botIdOf, botMessagesCommand } from "./messages.js";
|
|
10
|
+
import { BOT_ACTIONS } from "./port.js";
|
|
8
11
|
import { registryProfiles } from "./registry.js";
|
|
9
12
|
import { BotTokenStore } from "./token.js";
|
|
10
13
|
/** `--offline` reads the local copy; a command that has to ask the messenger refuses it rather than ignoring it. */
|
|
@@ -14,13 +17,6 @@ const online = (context, command) => {
|
|
|
14
17
|
}
|
|
15
18
|
return context;
|
|
16
19
|
};
|
|
17
|
-
const DIGITS = /^-?\d+$/;
|
|
18
|
-
/** What the recipient list names: a chat id, `user:<id>` for a person, or the id of a seen chat with that title. */
|
|
19
|
-
const recipientKey = (reference, context) => {
|
|
20
|
-
if (DIGITS.test(reference) || /^user:\d+$/.test(reference))
|
|
21
|
-
return reference;
|
|
22
|
-
return pickChat(reference, context.registry.list()).id;
|
|
23
|
-
};
|
|
24
20
|
const authCommand = (bot, tokenVariable) => {
|
|
25
21
|
const auth = new Command("auth").description("the bot token this profile uses");
|
|
26
22
|
annotate(auth.command("set"), { mutates: true })
|
|
@@ -121,7 +117,7 @@ const recipientsCommand = (bot) => {
|
|
|
121
117
|
.action(async function (chat) {
|
|
122
118
|
const context = botContext(this, bot);
|
|
123
119
|
await context.run(async () => {
|
|
124
|
-
const id =
|
|
120
|
+
const id = context.chatRef(chat);
|
|
125
121
|
const title = context.registry.list().find((seen) => seen.id === id)?.title ?? null;
|
|
126
122
|
context.recipients().add({ id, title, addedAt: new Date().toISOString() });
|
|
127
123
|
renderList(context.renderer, context.format, context.recipients().read() ?? []);
|
|
@@ -156,6 +152,50 @@ const chatsCommand = (bot) => {
|
|
|
156
152
|
const context = botContext(this, bot);
|
|
157
153
|
await context.run(async () => renderList(context.renderer, context.format, context.registry.list()));
|
|
158
154
|
});
|
|
155
|
+
command
|
|
156
|
+
.command("show")
|
|
157
|
+
.description(`one chat from ${bot.name ?? "the messenger"}, and remember it`)
|
|
158
|
+
.argument("<chat>", "a chat id, user:<id> for a person, or the title of a chat this bot has seen")
|
|
159
|
+
.action(async function (chat) {
|
|
160
|
+
const context = online(botContext(this, bot), this);
|
|
161
|
+
const ref = context.chatRef(chat);
|
|
162
|
+
await context.run(async (events) => {
|
|
163
|
+
const adapter = await context.authenticated({ events });
|
|
164
|
+
const found = await botCan(adapter, "chat", bot, "describe a chat")(ref);
|
|
165
|
+
context.registry.observe([found]);
|
|
166
|
+
await context.copy.keepChat(await botIdOf(context, adapter), found, context.renderer.warn);
|
|
167
|
+
context.renderer.result(found);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
annotate(command.command("leave"), { mutates: true })
|
|
171
|
+
.description("take the bot out of a chat; only an admin of the chat can bring it back")
|
|
172
|
+
.argument("<chat>", "a chat id, or the title of a chat this bot has seen")
|
|
173
|
+
.action(async function (chat) {
|
|
174
|
+
const context = online(botContext(this, bot), this);
|
|
175
|
+
const ref = context.chatRef(chat);
|
|
176
|
+
await context.run(async (events) => {
|
|
177
|
+
const adapter = await context.authenticated({ events });
|
|
178
|
+
const leave = botCan(adapter, "leave", bot, "leave a chat");
|
|
179
|
+
const operationId = newOperationId();
|
|
180
|
+
await guardedWrite(context.guard(), { operationId, chatId: ref, kind: "chat", action: "leave", key: "bot.chats.leave" }, () => leave(ref));
|
|
181
|
+
context.renderer.result({ operationId, chatId: ref, left: true });
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
annotate(command.command("action"), { mutates: true })
|
|
185
|
+
.description("show what the bot is doing in a chat — typing, sending a photo — for a few seconds")
|
|
186
|
+
.argument("<chat>", "a chat id, user:<id> for a person, or the title of a chat this bot has seen")
|
|
187
|
+
.addArgument(new Argument("<action>", "what the chat sees").choices(BOT_ACTIONS))
|
|
188
|
+
.action(async function (chat, action) {
|
|
189
|
+
const context = online(botContext(this, bot), this);
|
|
190
|
+
const ref = context.chatRef(chat);
|
|
191
|
+
await context.run(async (events) => {
|
|
192
|
+
const adapter = await context.authenticated({ events });
|
|
193
|
+
const act = botCan(adapter, "action", bot, "show an action");
|
|
194
|
+
const operationId = newOperationId();
|
|
195
|
+
await guardedWrite(context.guard(), { operationId, chatId: ref, kind: "chat", key: "bot.chats.action" }, () => act(ref, action));
|
|
196
|
+
context.renderer.result({ operationId, chatId: ref, action });
|
|
197
|
+
});
|
|
198
|
+
});
|
|
159
199
|
return command;
|
|
160
200
|
};
|
|
161
201
|
/**
|
|
@@ -169,6 +209,7 @@ export const botCommand = (bot) => {
|
|
|
169
209
|
.addCommand(authCommand(bot, tokenVariable))
|
|
170
210
|
.addCommand(listCommand(bot, tokenVariable))
|
|
171
211
|
.addCommand(chatsCommand(bot))
|
|
212
|
+
.addCommand(botMessagesCommand(bot))
|
|
172
213
|
.addCommand(recipientsCommand(bot))
|
|
173
214
|
.addCommand(sendsCommand(bot));
|
|
174
215
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cli/bot/command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cli/bot/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import { SendJournal } from "../../sends/journal.js";
|
|
3
3
|
import { RecipientList } from "../../sends/recipients.js";
|
|
4
|
-
import type { BotAdapter, BotConnectOptions, BotMessenger } from "./port.js";
|
|
4
|
+
import type { BotAdapter, BotChatRef, BotConnectOptions, BotMessenger } from "./port.js";
|
|
5
5
|
import { ChatRegistry } from "./registry.js";
|
|
6
6
|
import { BotTokenStore } from "./token.js";
|
|
7
7
|
/** How the owner types this bot — `max sales bot` — so a refusal names the command that fixes it. */
|
|
@@ -25,6 +25,22 @@ export declare const botContext: (command: Command, bot: BotMessenger) => {
|
|
|
25
25
|
registry: ChatRegistry;
|
|
26
26
|
recipients: () => RecipientList;
|
|
27
27
|
journal: () => SendJournal;
|
|
28
|
+
/** What this bot has read, sent and received, in the shared store. */
|
|
29
|
+
copy: {
|
|
30
|
+
accountOf: (botId: string) => import("../../store/store.js").AccountKey;
|
|
31
|
+
keep: (botId: string, messages: readonly import("../../index.js").Message[], via: import("../../store/store.js").IngestedVia, warn: (message: string) => void, senders?: readonly import("../../store/store.js").PersonFacts[]) => Promise<boolean>;
|
|
32
|
+
keepChat: (botId: string, chat: import("../../index.js").Chat, warn: (message: string) => void) => Promise<void>;
|
|
33
|
+
forget: (botId: string, chatId: string, messageIds: string[], warn: (message: string) => void) => Promise<boolean>;
|
|
34
|
+
read: <T>(read: (store: import("../../store/store.js").MessageStore) => Promise<T>) => Promise<T>;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* The profile's guard with this bot's recipient list and journal. `profile` reads as the words
|
|
38
|
+
* a fix is typed with — `max sales bot recipients add …` — and a bot has no hourly limit unless
|
|
39
|
+
* its section sets one.
|
|
40
|
+
*/
|
|
41
|
+
guard: () => import("../../sends/guard.js").SendGuard;
|
|
42
|
+
/** A chat id, `user:<id>`, or the title of a chat this bot has seen — never a guess. */
|
|
43
|
+
chatRef: (typed: string) => BotChatRef;
|
|
28
44
|
readSecret: (prompt: string) => Promise<string>;
|
|
29
45
|
/** A client for this token, closed when the command ends. */
|
|
30
46
|
connect: (token: string, options?: BotConnectOptions) => Promise<BotAdapter>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/bot/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/bot/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAMzD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxF,OAAO,EAAY,YAAY,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,qGAAqG;AACrG,eAAO,MAAM,QAAQ,QAAS,YAAY,WAAW,MAAM,KAAG,MAAyD,CAAA;AAEvH,yFAAyF;AACzF,eAAO,MAAM,UAAU,YAAa,OAAO,OAAO,YAAY;;;;;;;;;;;;;;;;;;IAuB1D,sEAAsE;;;;;;;;IAEtE;;;;OAIG;;IAeH,wFAAwF;qBACvE,MAAM,KAAG,UAAU;yBAKf,MAAM;IAI3B,6DAA6D;qBA5CjC,MAAM,YAAW,iBAAiB,KAAQ,OAAO,CAAC,UAAU,CAAC;IA8CzF,8EAA8E;8BACrD,iBAAiB,KAAQ,OAAO,CAAC,UAAU,CAAC;CAQxE,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA"}
|
package/dist/cli/bot/context.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { CliError } from "@leemour/cli-core";
|
|
2
|
+
import { pickChat } from "../../resolve.js";
|
|
3
|
+
import { sendGuard } from "../../sends/guard.js";
|
|
2
4
|
import { SendJournal } from "../../sends/journal.js";
|
|
3
5
|
import { RecipientList } from "../../sends/recipients.js";
|
|
4
6
|
import { readSecret } from "../../terminal/prompt.js";
|
|
5
7
|
import { baseContext, environmentOf } from "../context.js";
|
|
8
|
+
import { terminalAsker } from "../messenger/ask.js";
|
|
6
9
|
import { asFirstWord } from "../profile.js";
|
|
10
|
+
import { botCopy } from "./copy.js";
|
|
7
11
|
import { botFiles, ChatRegistry } from "./registry.js";
|
|
8
12
|
import { BotTokenStore } from "./token.js";
|
|
9
13
|
/** How the owner types this bot — `max sales bot` — so a refusal names the command that fixes it. */
|
|
@@ -16,6 +20,9 @@ export const botContext = (command, bot) => {
|
|
|
16
20
|
const files = botFiles(bot.app, profile, env);
|
|
17
21
|
const tokens = bot.tokenStore?.(command, profile) ?? new BotTokenStore({ app: bot.app, profile, env });
|
|
18
22
|
const words = botWords(bot, profile);
|
|
23
|
+
const registry = bot.registry?.(command, profile) ?? new ChatRegistry(bot.app, profile, env);
|
|
24
|
+
const recipients = () => new RecipientList(files.recipients, words);
|
|
25
|
+
const journal = () => new SendJournal(files.journal);
|
|
19
26
|
const connect = async (token, options = {}) => {
|
|
20
27
|
const adapter = await bot.connect(command, token, options);
|
|
21
28
|
base.track(adapter);
|
|
@@ -26,9 +33,36 @@ export const botContext = (command, bot) => {
|
|
|
26
33
|
profile,
|
|
27
34
|
words,
|
|
28
35
|
tokens,
|
|
29
|
-
registry
|
|
30
|
-
recipients
|
|
31
|
-
journal
|
|
36
|
+
registry,
|
|
37
|
+
recipients,
|
|
38
|
+
journal,
|
|
39
|
+
/** What this bot has read, sent and received, in the shared store. */
|
|
40
|
+
copy: botCopy(bot.provider),
|
|
41
|
+
/**
|
|
42
|
+
* The profile's guard with this bot's recipient list and journal. `profile` reads as the words
|
|
43
|
+
* a fix is typed with — `max sales bot recipients add …` — and a bot has no hourly limit unless
|
|
44
|
+
* its section sets one.
|
|
45
|
+
*/
|
|
46
|
+
guard: () => sendGuard({
|
|
47
|
+
profile: `${asFirstWord(profile)}bot`,
|
|
48
|
+
command: bot.app.command,
|
|
49
|
+
readOnly: settings.readOnly,
|
|
50
|
+
readOnlyFrom: settings.sources.readOnly ?? "default",
|
|
51
|
+
permissions: settings.permissions,
|
|
52
|
+
permissionSources: settings.permissionSources,
|
|
53
|
+
ask: terminalAsker(command),
|
|
54
|
+
sendsPerHour: settings.sendsPerHour,
|
|
55
|
+
journal: journal(),
|
|
56
|
+
recipients: recipients(),
|
|
57
|
+
warn: base.renderer.warn,
|
|
58
|
+
}),
|
|
59
|
+
/** A chat id, `user:<id>`, or the title of a chat this bot has seen — never a guess. */
|
|
60
|
+
chatRef: (typed) => {
|
|
61
|
+
const trimmed = typed.trim();
|
|
62
|
+
if (/^-?\d+$/.test(trimmed) || /^user:\d+$/.test(trimmed))
|
|
63
|
+
return trimmed;
|
|
64
|
+
return pickChat(trimmed, registry.list()).id;
|
|
65
|
+
},
|
|
32
66
|
readSecret: (prompt) => {
|
|
33
67
|
const stdin = environmentOf(command).stdin;
|
|
34
68
|
return bot.readSecret?.(command, prompt) ?? readSecret(prompt, stdin ? { input: stdin } : {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/bot/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/bot/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Chat, Message, Provider } from "../../domain/models.js";
|
|
2
|
+
import type { AccountKey, IngestedVia, MessageStore, PersonFacts } from "../../store/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* What a bot read, sent or received, kept in the shared store under its own provider and the bot's
|
|
5
|
+
* id, so each bot sees only its own copy. Only a real chat is kept: `user:<id>` is a send address,
|
|
6
|
+
* and stored it would make a chat that does not exist.
|
|
7
|
+
*/
|
|
8
|
+
export declare const botCopy: (provider: Provider) => {
|
|
9
|
+
accountOf: (botId: string) => AccountKey;
|
|
10
|
+
keep: (botId: string, messages: readonly Message[], via: IngestedVia, warn: (message: string) => void, senders?: readonly PersonFacts[]) => Promise<boolean>;
|
|
11
|
+
/** Only a chat the messenger has just described in full: the store replaces a title it is not given. */
|
|
12
|
+
keepChat: (botId: string, chat: Chat, warn: (message: string) => void) => Promise<void>;
|
|
13
|
+
/** Messages the bot deleted, kept as tombstones: reads and search stop returning them. */
|
|
14
|
+
forget: (botId: string, chatId: string, messageIds: string[], warn: (message: string) => void) => Promise<boolean>;
|
|
15
|
+
/** For a read the local copy answers: here the store is the answer, so a failure is the command's. */
|
|
16
|
+
read: <T>(read: (store: MessageStore) => Promise<T>) => Promise<T>;
|
|
17
|
+
};
|
|
18
|
+
export type BotCopy = ReturnType<typeof botCopy>;
|
|
19
|
+
//# sourceMappingURL=copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../src/cli/bot/copy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AA+B9F;;;;GAIG;AACH,eAAO,MAAM,OAAO,aAAc,QAAQ;uBACd,MAAM,KAAG,UAAU;kBAOlC,MAAM,YACH,SAAS,OAAO,EAAE,OACvB,WAAW,QACV,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,YACtB,SAAS,WAAW,EAAE,KAC9B,OAAO,CAAC,OAAO,CAAC;IAcnB,wGAAwG;sBAChF,MAAM,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IAI3E,0FAA0F;oBACpE,MAAM,UAAU,MAAM,cAAc,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IAKnG,sGAAsG;WACzF,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC;CAczE,CAAA;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { CliError } from "@leemour/cli-core";
|
|
2
|
+
import { openStore } from "../../store/index.js";
|
|
3
|
+
const CHAT_ID = /^-?\d+$/;
|
|
4
|
+
/** The reason, never the path — a home directory is nobody else's business. */
|
|
5
|
+
const reasonOf = (error) => {
|
|
6
|
+
const code = error?.code;
|
|
7
|
+
if (typeof code === "string")
|
|
8
|
+
return code;
|
|
9
|
+
return error instanceof Error ? error.name : "an unknown problem";
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* **A store that fails never fails the command** — the messenger answered, and the answer is printed
|
|
13
|
+
* either way; the reason goes to stderr. Answers whether it was saved, for `watch`, which must not
|
|
14
|
+
* move its marker past what it failed to keep.
|
|
15
|
+
*/
|
|
16
|
+
const quietly = async (write, warn) => {
|
|
17
|
+
let store;
|
|
18
|
+
try {
|
|
19
|
+
store = await openStore();
|
|
20
|
+
await write(store);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
warn(`the local copy was not updated: ${reasonOf(error)}`);
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
await store?.close();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* What a bot read, sent or received, kept in the shared store under its own provider and the bot's
|
|
33
|
+
* id, so each bot sees only its own copy. Only a real chat is kept: `user:<id>` is a send address,
|
|
34
|
+
* and stored it would make a chat that does not exist.
|
|
35
|
+
*/
|
|
36
|
+
export const botCopy = (provider) => {
|
|
37
|
+
const accountOf = (botId) => ({ provider, account: botId });
|
|
38
|
+
const storable = (message) => CHAT_ID.test(message.chatId) && message.id !== "unknown";
|
|
39
|
+
return {
|
|
40
|
+
accountOf,
|
|
41
|
+
keep: async (botId, messages, via, warn, senders = []) => {
|
|
42
|
+
const byChat = new Map();
|
|
43
|
+
for (const message of messages.filter(storable)) {
|
|
44
|
+
byChat.set(message.chatId, [...(byChat.get(message.chatId) ?? []), message]);
|
|
45
|
+
}
|
|
46
|
+
if (byChat.size === 0 && senders.length === 0)
|
|
47
|
+
return true;
|
|
48
|
+
return quietly(async (store) => {
|
|
49
|
+
for (const [chatId, chatMessages] of byChat) {
|
|
50
|
+
await store.saveMessages(accountOf(botId), chatId, chatMessages, { via });
|
|
51
|
+
}
|
|
52
|
+
if (senders.length > 0)
|
|
53
|
+
await store.savePeople(accountOf(botId), [...senders]);
|
|
54
|
+
}, warn);
|
|
55
|
+
},
|
|
56
|
+
/** Only a chat the messenger has just described in full: the store replaces a title it is not given. */
|
|
57
|
+
keepChat: async (botId, chat, warn) => {
|
|
58
|
+
if (CHAT_ID.test(chat.id))
|
|
59
|
+
await quietly((store) => store.saveChats(accountOf(botId), [chat]), warn);
|
|
60
|
+
},
|
|
61
|
+
/** Messages the bot deleted, kept as tombstones: reads and search stop returning them. */
|
|
62
|
+
forget: async (botId, chatId, messageIds, warn) => {
|
|
63
|
+
if (!CHAT_ID.test(chatId) || messageIds.length === 0)
|
|
64
|
+
return true;
|
|
65
|
+
return quietly((store) => store.markDeleted(accountOf(botId), messageIds, { chatId }), warn);
|
|
66
|
+
},
|
|
67
|
+
/** For a read the local copy answers: here the store is the answer, so a failure is the command's. */
|
|
68
|
+
read: async (read) => {
|
|
69
|
+
let store;
|
|
70
|
+
try {
|
|
71
|
+
store = await openStore();
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
throw new CliError("configuration_error", `the local copy cannot be opened: ${reasonOf(error)}`);
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
return await read(store);
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
await store.close();
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../../src/cli/bot/copy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { type BotContext } from "./context.js";
|
|
3
|
+
import type { BotAdapter, BotMessenger } from "./port.js";
|
|
4
|
+
/** The adapter's `method`, or a refusal naming what this messenger's bot cannot do. */
|
|
5
|
+
export declare const botCan: <K extends keyof BotAdapter>(adapter: BotAdapter, method: K, bot: BotMessenger, what: string) => NonNullable<BotAdapter[K]>;
|
|
6
|
+
/** The bot's own id — the key its local copy is kept under — remembered after the first time it is asked. */
|
|
7
|
+
export declare const botIdOf: (context: BotContext, adapter: BotAdapter) => Promise<string>;
|
|
8
|
+
/** `bot messages`: the bot's own messages, under the names the personal account uses. */
|
|
9
|
+
export declare const botMessagesCommand: (bot: BotMessenger) => Command;
|
|
10
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/cli/bot/messages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,OAAO,EAAE,KAAK,UAAU,EAAc,MAAM,cAAc,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAEzD,uFAAuF;AACvF,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,UAAU,WACtC,UAAU,UACX,CAAC,OACJ,YAAY,QACX,MAAM,KACX,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAM3B,CAAA;AAED,6GAA6G;AAC7G,eAAO,MAAM,OAAO,YAAmB,UAAU,WAAW,UAAU,KAAG,OAAO,CAAC,MAAM,CAMtF,CAAA;AAkPD,yFAAyF;AACzF,eAAO,MAAM,kBAAkB,QAAS,YAAY,KAAG,OAShB,CAAA"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { CliError } from "@leemour/cli-core";
|
|
2
|
+
import { annotate } from "@leemour/cli-core/commands";
|
|
3
|
+
import { Command } from "commander";
|
|
4
|
+
import { parseMarkdown } from "../../domain/markdown.js";
|
|
5
|
+
import { renderMessages } from "../../render/messages.js";
|
|
6
|
+
import { guardedWrite } from "../../sends/guarded.js";
|
|
7
|
+
import { newOperationId } from "../../sends/send-id.js";
|
|
8
|
+
import { readAttachments } from "../../sends/upload.js";
|
|
9
|
+
import { environmentOf } from "../context.js";
|
|
10
|
+
import { readAll } from "../messenger/stdin.js";
|
|
11
|
+
import { listed } from "../paging.js";
|
|
12
|
+
import { botContext } from "./context.js";
|
|
13
|
+
/** The adapter's `method`, or a refusal naming what this messenger's bot cannot do. */
|
|
14
|
+
export const botCan = (adapter, method, bot, what) => {
|
|
15
|
+
const found = adapter[method];
|
|
16
|
+
if (typeof found !== "function") {
|
|
17
|
+
throw new CliError("validation_error", `a ${bot.name ?? "messenger"} bot cannot ${what}`);
|
|
18
|
+
}
|
|
19
|
+
return found.bind(adapter);
|
|
20
|
+
};
|
|
21
|
+
/** The bot's own id — the key its local copy is kept under — remembered after the first time it is asked. */
|
|
22
|
+
export const botIdOf = async (context, adapter) => {
|
|
23
|
+
const known = context.registry.botId();
|
|
24
|
+
if (known)
|
|
25
|
+
return known;
|
|
26
|
+
const { id } = await adapter.me();
|
|
27
|
+
context.registry.rememberBot(id);
|
|
28
|
+
return id;
|
|
29
|
+
};
|
|
30
|
+
const show = (context, bot, messages, one = false) => {
|
|
31
|
+
if (context.format === "pretty") {
|
|
32
|
+
context.streams.data(renderMessages(messages, {
|
|
33
|
+
color: context.color,
|
|
34
|
+
verbosity: context.settings.detail,
|
|
35
|
+
senderColors: context.settings.senderColors,
|
|
36
|
+
profile: context.profile,
|
|
37
|
+
provider: bot.provider,
|
|
38
|
+
locale: bot.app.locale,
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
else if (context.format === "jsonl")
|
|
42
|
+
context.renderer.stream(messages);
|
|
43
|
+
else
|
|
44
|
+
context.renderer.result(one ? messages[0] : listed(messages));
|
|
45
|
+
};
|
|
46
|
+
const marks = (md, html) => {
|
|
47
|
+
if (md && html)
|
|
48
|
+
throw new CliError("validation_error", "--md and --html mark up the text two ways; use one");
|
|
49
|
+
};
|
|
50
|
+
/** Wrote somewhere real — a numeric chat — so the bot has seen that chat. */
|
|
51
|
+
const seen = (context, message) => {
|
|
52
|
+
if (/^-?\d+$/.test(message.chatId))
|
|
53
|
+
context.registry.observe([{ id: message.chatId }]);
|
|
54
|
+
};
|
|
55
|
+
const sendCommand = (bot) => annotate(new Command("send"), { mutates: true })
|
|
56
|
+
.description("send a message as the bot; without [text], the text is read from stdin")
|
|
57
|
+
.argument("<chat>", "a chat id, user:<id> for a person, or the title of a chat this bot has seen")
|
|
58
|
+
.argument("[text]", "the message")
|
|
59
|
+
.option("--reply-to <message>", "answer this message, by its id in the same chat")
|
|
60
|
+
.option("--silent", "deliver without a notification")
|
|
61
|
+
.option("--md", "read **bold**, _italic_, ~~struck~~ and `code` in the text; \\ keeps a mark literal")
|
|
62
|
+
.option("--html", "the text is HTML: <b>, <i>, <a href>, <code>")
|
|
63
|
+
.option("--file <file>", "attach a file; the text becomes its caption")
|
|
64
|
+
.option("--photo <file>", "attach a .jpg, .png or .webp as a photo; the text becomes its caption")
|
|
65
|
+
.option("--as-file", "send the --file as a file to download, a video included")
|
|
66
|
+
.option("--voice <file>", "send an Ogg Opus file as a voice message, alone, with no text")
|
|
67
|
+
.option("--allow-any-file", "send a file even from a hidden folder, ~/.ssh or this CLI's own folders")
|
|
68
|
+
.action(async function (chat, text) {
|
|
69
|
+
const context = botContext(this, bot);
|
|
70
|
+
const options = this.opts();
|
|
71
|
+
marks(options.md, options.html);
|
|
72
|
+
const ref = context.chatRef(chat);
|
|
73
|
+
const attachments = await readAttachments({
|
|
74
|
+
...(options.photo === undefined ? {} : { photo: options.photo }),
|
|
75
|
+
...(options.file === undefined ? {} : { file: options.file }),
|
|
76
|
+
...(options.voice === undefined ? {} : { voice: options.voice }),
|
|
77
|
+
...(text === undefined ? {} : { text }),
|
|
78
|
+
asFile: options.asFile === true,
|
|
79
|
+
}, { app: bot.app, env: context.env, anyFile: options.allowAnyFile === true });
|
|
80
|
+
const body = text ?? (attachments.length > 0 ? "" : await readAll(environmentOf(this).stdin ?? process.stdin));
|
|
81
|
+
if (body.trim() === "" && attachments.length === 0) {
|
|
82
|
+
throw new CliError("validation_error", "nothing to send — give the text or pipe it in");
|
|
83
|
+
}
|
|
84
|
+
const { text: plain, markup } = options.md ? parseMarkdown(body) : { text: body, markup: undefined };
|
|
85
|
+
const replyTo = options.replyTo?.trim();
|
|
86
|
+
await context.run(async (events) => {
|
|
87
|
+
const adapter = await context.authenticated({ events });
|
|
88
|
+
const send = botCan(adapter, "send", bot, "send messages");
|
|
89
|
+
const operationId = newOperationId();
|
|
90
|
+
const message = await guardedWrite(context.guard(), { operationId, chatId: ref, kind: "message", key: "bot.messages.send", ...(replyTo ? { replyTo } : {}) }, () => send(ref, plain, {
|
|
91
|
+
...(replyTo ? { replyTo } : {}),
|
|
92
|
+
...(options.silent ? { silent: true } : {}),
|
|
93
|
+
...(markup ? { markup } : {}),
|
|
94
|
+
...(options.html ? { html: true } : {}),
|
|
95
|
+
...(attachments.length > 0 ? { attachments } : {}),
|
|
96
|
+
}), (sent) => ({ messageId: sent.id }));
|
|
97
|
+
seen(context, message);
|
|
98
|
+
if (message.senderId)
|
|
99
|
+
context.registry.rememberBot(message.senderId);
|
|
100
|
+
const botId = message.senderId ?? (await botIdOf(context, adapter));
|
|
101
|
+
await context.copy.keep(botId, [message], "send", context.renderer.warn);
|
|
102
|
+
context.renderer.result({ operationId, message });
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
const listCommand = (bot) => new Command("list")
|
|
106
|
+
.description(`the latest messages in a chat; where ${bot.name ?? "the messenger"} gives a bot no history, and with --offline, ` +
|
|
107
|
+
"the ones this bot has seen on this machine")
|
|
108
|
+
.argument("<chat>", "a chat id, user:<id> for a person, or the title of a chat this bot has seen")
|
|
109
|
+
.action(async function (chat) {
|
|
110
|
+
const context = botContext(this, bot);
|
|
111
|
+
const ref = context.chatRef(chat);
|
|
112
|
+
const limit = context.settings.limit;
|
|
113
|
+
await context.run(async (events) => {
|
|
114
|
+
const fromCopy = async (botId) => {
|
|
115
|
+
const page = await context.copy.read((store) => store.messages(context.copy.accountOf(botId), ref, { limit }));
|
|
116
|
+
return page.items;
|
|
117
|
+
};
|
|
118
|
+
if (context.settings.offline) {
|
|
119
|
+
const botId = context.registry.botId();
|
|
120
|
+
if (!botId)
|
|
121
|
+
throw new CliError("not_found", "this bot has kept nothing on this machine yet");
|
|
122
|
+
show(context, bot, await fromCopy(botId));
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const adapter = await context.authenticated({ events });
|
|
126
|
+
const botId = await botIdOf(context, adapter);
|
|
127
|
+
if (!adapter.history) {
|
|
128
|
+
context.renderer.note(`${bot.name ?? "the messenger"} gives a bot no history: these are the messages it kept`);
|
|
129
|
+
show(context, bot, await fromCopy(botId));
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const messages = await adapter.history(ref, { limit });
|
|
133
|
+
await context.copy.keep(botId, messages, "history", context.renderer.warn);
|
|
134
|
+
if (/^-?\d+$/.test(ref))
|
|
135
|
+
context.registry.observe([{ id: ref }]);
|
|
136
|
+
show(context, bot, messages);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
const showCommand = (bot) => new Command("show")
|
|
140
|
+
.description("one message by its id in a chat")
|
|
141
|
+
.argument("<chat>", "a chat id, user:<id> for a person, or the title of a chat this bot has seen")
|
|
142
|
+
.argument("<message>", "message id")
|
|
143
|
+
.action(async function (chat, messageId) {
|
|
144
|
+
const context = botContext(this, bot);
|
|
145
|
+
const ref = context.chatRef(chat);
|
|
146
|
+
await context.run(async (events) => {
|
|
147
|
+
const fromCopy = async (botId) => {
|
|
148
|
+
const kept = await context.copy.read((store) => store.message(context.copy.accountOf(botId), messageId, { chatId: ref }));
|
|
149
|
+
if (!kept)
|
|
150
|
+
throw new CliError("not_found", `message ${messageId} is not in this bot's local copy`);
|
|
151
|
+
return kept;
|
|
152
|
+
};
|
|
153
|
+
if (context.settings.offline) {
|
|
154
|
+
const botId = context.registry.botId();
|
|
155
|
+
if (!botId)
|
|
156
|
+
throw new CliError("not_found", "this bot has kept nothing on this machine yet");
|
|
157
|
+
show(context, bot, [await fromCopy(botId)], true);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const adapter = await context.authenticated({ events });
|
|
161
|
+
const botId = await botIdOf(context, adapter);
|
|
162
|
+
if (!adapter.message) {
|
|
163
|
+
show(context, bot, [await fromCopy(botId)], true);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const found = await adapter.message(ref, messageId);
|
|
167
|
+
await context.copy.keep(botId, [found], "history", context.renderer.warn);
|
|
168
|
+
show(context, bot, [found], true);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
const editCommand = (bot) => annotate(new Command("edit"), { mutates: true })
|
|
172
|
+
.description("replace the text of a message the bot sent")
|
|
173
|
+
.argument("<chat>", "a chat id, user:<id> for a person, or the title of a chat this bot has seen")
|
|
174
|
+
.argument("<message>", "message id")
|
|
175
|
+
.argument("<text>", "the new text")
|
|
176
|
+
.option("--md", "read **bold**, _italic_, ~~struck~~ and `code` in the text; \\ keeps a mark literal")
|
|
177
|
+
.option("--html", "the text is HTML: <b>, <i>, <a href>, <code>")
|
|
178
|
+
.action(async function (chat, messageId, text) {
|
|
179
|
+
const context = botContext(this, bot);
|
|
180
|
+
const options = this.opts();
|
|
181
|
+
marks(options.md, options.html);
|
|
182
|
+
const ref = context.chatRef(chat);
|
|
183
|
+
const { text: plain, markup } = options.md ? parseMarkdown(text) : { text, markup: undefined };
|
|
184
|
+
await context.run(async (events) => {
|
|
185
|
+
const adapter = await context.authenticated({ events });
|
|
186
|
+
const edit = botCan(adapter, "edit", bot, "edit messages");
|
|
187
|
+
const operationId = newOperationId();
|
|
188
|
+
const message = await guardedWrite(context.guard(), { operationId, chatId: ref, kind: "edit", key: "bot.messages.edit", messageId }, () => edit(ref, messageId, plain, { ...(markup ? { markup } : {}), ...(options.html ? { html: true } : {}) }));
|
|
189
|
+
await context.copy.keep(await botIdOf(context, adapter), [message], "send", context.renderer.warn);
|
|
190
|
+
context.renderer.result({ operationId, message });
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
const deleteCommand = (bot) => annotate(new Command("delete"), { mutates: true })
|
|
194
|
+
.description("delete messages in a chat the bot can delete in; it cannot be undone")
|
|
195
|
+
.argument("<chat>", "a chat id, user:<id> for a person, or the title of a chat this bot has seen")
|
|
196
|
+
.argument("<messages...>", "message ids")
|
|
197
|
+
.option("--allow-dangerous", "delete without asking")
|
|
198
|
+
.action(async function (chat, messageIds) {
|
|
199
|
+
const context = botContext(this, bot);
|
|
200
|
+
const ref = context.chatRef(chat);
|
|
201
|
+
await context.run(async (events) => {
|
|
202
|
+
const adapter = await context.authenticated({ events });
|
|
203
|
+
const remove = botCan(adapter, "delete", bot, "delete messages");
|
|
204
|
+
const operationId = newOperationId();
|
|
205
|
+
await guardedWrite(context.guard(), { operationId, chatId: ref, kind: "delete", key: "bot.messages.delete", count: messageIds.length }, () => remove(ref, messageIds));
|
|
206
|
+
await context.copy.forget(await botIdOf(context, adapter), ref, messageIds, context.renderer.warn);
|
|
207
|
+
context.renderer.result({ operationId, deleted: messageIds });
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
const pinCommand = (bot, pin) => {
|
|
211
|
+
const command = annotate(new Command(pin ? "pin" : "unpin"), { mutates: true })
|
|
212
|
+
.description(pin ? "pin a message in a chat; quietly unless --notify" : "unpin a message in a chat")
|
|
213
|
+
.argument("<chat>", "a chat id, user:<id> for a person, or the title of a chat this bot has seen")
|
|
214
|
+
.argument("<message>", "message id");
|
|
215
|
+
if (pin)
|
|
216
|
+
command.option("--notify", "tell the chat's members");
|
|
217
|
+
return command.action(async function (chat, messageId) {
|
|
218
|
+
const context = botContext(this, bot);
|
|
219
|
+
const ref = context.chatRef(chat);
|
|
220
|
+
const notify = this.opts().notify === true;
|
|
221
|
+
await context.run(async (events) => {
|
|
222
|
+
const adapter = await context.authenticated({ events });
|
|
223
|
+
const operationId = newOperationId();
|
|
224
|
+
const key = pin ? "bot.messages.pin" : "bot.messages.unpin";
|
|
225
|
+
await guardedWrite(context.guard(), { operationId, chatId: ref, kind: "pin", key, messageId }, () => pin
|
|
226
|
+
? botCan(adapter, "pin", bot, "pin messages")(ref, messageId, { notify })
|
|
227
|
+
: botCan(adapter, "unpin", bot, "unpin messages")(ref, messageId));
|
|
228
|
+
context.renderer.result({ operationId, chatId: ref, messageId, pinned: pin });
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
};
|
|
232
|
+
/** `bot messages`: the bot's own messages, under the names the personal account uses. */
|
|
233
|
+
export const botMessagesCommand = (bot) => new Command("messages")
|
|
234
|
+
.description("the messages in the chats this bot is in")
|
|
235
|
+
.addCommand(sendCommand(bot))
|
|
236
|
+
.addCommand(listCommand(bot))
|
|
237
|
+
.addCommand(showCommand(bot))
|
|
238
|
+
.addCommand(editCommand(bot))
|
|
239
|
+
.addCommand(deleteCommand(bot))
|
|
240
|
+
.addCommand(pinCommand(bot, true))
|
|
241
|
+
.addCommand(pinCommand(bot, false));
|
|
242
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/cli/bot/messages.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/bot/port.d.ts
CHANGED
|
@@ -1,16 +1,61 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Markup } from "../../domain/markdown.js";
|
|
3
|
+
import type { Chat, Id, Message, Provider } from "../../domain/models.js";
|
|
4
|
+
import type { Upload } from "../../sends/upload.js";
|
|
3
5
|
import type { AppIdentity } from "../app.js";
|
|
4
|
-
import type { MessengerCore } from "../messenger/port.js";
|
|
6
|
+
import type { MessagePins, MessengerCore } from "../messenger/port.js";
|
|
5
7
|
import type { EventSink } from "../runs/events.js";
|
|
6
8
|
import type { GlobalFlags, ResolveOptions, Settings } from "../settings.js";
|
|
7
9
|
import type { ChatRegistry } from "./registry.js";
|
|
8
10
|
import type { BotTokenStore } from "./token.js";
|
|
9
11
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
+
* A chat as a bot command names it, resolved: a chat id, or `user:<id>` for the dialog with a person —
|
|
13
|
+
* MAX's Bot API writes to a person by user id, and Telegram's chat id for a dialog is the person's id.
|
|
12
14
|
*/
|
|
13
|
-
export type
|
|
15
|
+
export type BotChatRef = string;
|
|
16
|
+
/** How one bot message goes. A bot send is never repeated — neither Bot API makes a repeat safe — so it has no send id. */
|
|
17
|
+
export interface BotSendOptions {
|
|
18
|
+
/** A message id in the same chat. */
|
|
19
|
+
replyTo?: Id;
|
|
20
|
+
silent?: boolean;
|
|
21
|
+
/** Spans of `text`, from `--md`. */
|
|
22
|
+
markup?: Markup[];
|
|
23
|
+
/** `text` is the messenger's HTML. */
|
|
24
|
+
html?: boolean;
|
|
25
|
+
attachments?: Upload[];
|
|
26
|
+
}
|
|
27
|
+
/** Sending, changing and deleting the bot's messages. */
|
|
28
|
+
export interface BotMessaging {
|
|
29
|
+
send(chat: BotChatRef, text: string, options: BotSendOptions): Promise<Message>;
|
|
30
|
+
edit(chat: BotChatRef, messageId: Id, text: string, options: {
|
|
31
|
+
markup?: Markup[];
|
|
32
|
+
html?: boolean;
|
|
33
|
+
}): Promise<Message>;
|
|
34
|
+
delete(chat: BotChatRef, messageIds: Id[]): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
/** Reading from the messenger, where its Bot API allows it — MAX's does, Telegram's does not. */
|
|
37
|
+
export interface BotHistory {
|
|
38
|
+
/** The newest `limit`, oldest first. */
|
|
39
|
+
history(chat: BotChatRef, window: {
|
|
40
|
+
limit: number;
|
|
41
|
+
}): Promise<Message[]>;
|
|
42
|
+
message(chat: BotChatRef, messageId: Id): Promise<Message>;
|
|
43
|
+
}
|
|
44
|
+
/** What a bot shows in a chat while it works. */
|
|
45
|
+
export declare const BOT_ACTIONS: readonly ["typing", "photo", "video", "voice", "file"];
|
|
46
|
+
export type BotAction = (typeof BOT_ACTIONS)[number];
|
|
47
|
+
/** One chat the bot is in. */
|
|
48
|
+
export interface BotChatTools {
|
|
49
|
+
chat(chat: BotChatRef): Promise<Chat>;
|
|
50
|
+
/** Only an admin of the chat can bring the bot back. */
|
|
51
|
+
leave(chat: BotChatRef): Promise<void>;
|
|
52
|
+
action(chat: BotChatRef, action: BotAction): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The part of the personal core a bot can do, and the groups its Bot API has. A bot never gets
|
|
56
|
+
* `chats` from this type: neither Bot API lists a bot's chats.
|
|
57
|
+
*/
|
|
58
|
+
export type BotAdapter = Pick<MessengerCore, "me" | "close"> & Partial<BotMessaging> & Partial<BotHistory> & Partial<MessagePins> & Partial<BotChatTools>;
|
|
14
59
|
export interface BotConnectOptions {
|
|
15
60
|
stop?: AbortSignal;
|
|
16
61
|
events?: EventSink;
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../../src/cli/bot/port.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/bot/port.js
CHANGED
package/dist/cli/bot/port.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../../src/cli/bot/port.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../../src/cli/bot/port.ts"],"names":[],"mappings":"AA2CA,iDAAiD;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAU,CAAA"}
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ export { maskedAccount } from "../services/people.js";
|
|
|
5
5
|
export { type AppIdentity, envName } from "./app.js";
|
|
6
6
|
export { botCommand } from "./bot/command.js";
|
|
7
7
|
export { type BotContext, botContext, botWords } from "./bot/context.js";
|
|
8
|
-
export
|
|
8
|
+
export { type BotCopy, botCopy } from "./bot/copy.js";
|
|
9
|
+
export { botCan, botIdOf, botMessagesCommand } from "./bot/messages.js";
|
|
10
|
+
export { BOT_ACTIONS, type BotAction, type BotAdapter, type BotChatRef, type BotChatTools, type BotConnectOptions, type BotHistory, type BotMessaging, type BotMessenger, type BotSendOptions, } from "./bot/port.js";
|
|
9
11
|
export { botFiles, botsDirectory, ChatRegistry, registryProfiles, type SeenChat } from "./bot/registry.js";
|
|
10
12
|
export { BotTokenStore, type BotTokenStoreOptions } from "./bot/token.js";
|
|
11
13
|
export { CONTRACT, commandsCommand } from "./commands-command.js";
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACvG,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACxE,
|
|
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
|
@@ -5,6 +5,9 @@ export { maskedAccount } from "../services/people.js";
|
|
|
5
5
|
export { envName } from "./app.js";
|
|
6
6
|
export { botCommand } from "./bot/command.js";
|
|
7
7
|
export { botContext, botWords } from "./bot/context.js";
|
|
8
|
+
export { botCopy } from "./bot/copy.js";
|
|
9
|
+
export { botCan, botIdOf, botMessagesCommand } from "./bot/messages.js";
|
|
10
|
+
export { BOT_ACTIONS, } from "./bot/port.js";
|
|
8
11
|
export { botFiles, botsDirectory, ChatRegistry, registryProfiles } from "./bot/registry.js";
|
|
9
12
|
export { BotTokenStore } from "./bot/token.js";
|
|
10
13
|
export { CONTRACT, commandsCommand } from "./commands-command.js";
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACvG,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAoB,OAAO,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAmB,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.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,
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,4GAA4G;AAC5G,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAiC,EAAE,CACxE,GAAG,KAAK,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/cli/messenger/ask.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leemour/cli-messaging",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.97.0",
|
|
4
4
|
"description": "The messenger-neutral half of a messaging CLI: domain model, message locators, rendering, name resolution, the SQLite seam, the command skeleton and shared read commands, the send guard, run records and the message store",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Viacheslav Ptsarev",
|
|
@@ -78,7 +78,6 @@
|
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"@bomb.sh/tab": "0.0.22",
|
|
81
|
-
"@leemour/cli-core": "0.13.0",
|
|
82
81
|
"@leemour/cli-messaging-sqlite": "1.0.0",
|
|
83
82
|
"@modelcontextprotocol/server": "2.1.0",
|
|
84
83
|
"@valibot/to-json-schema": "1.8.0",
|
|
@@ -91,6 +90,7 @@
|
|
|
91
90
|
},
|
|
92
91
|
"devDependencies": {
|
|
93
92
|
"@biomejs/biome": "^2.3.14",
|
|
93
|
+
"@leemour/cli-core": "0.13.0",
|
|
94
94
|
"@modelcontextprotocol/client": "2.1.0",
|
|
95
95
|
"@types/node": "^22.20.4",
|
|
96
96
|
"@types/pngjs": "6.0.5",
|
|
@@ -112,6 +112,7 @@
|
|
|
112
112
|
"access": "public"
|
|
113
113
|
},
|
|
114
114
|
"peerDependencies": {
|
|
115
|
+
"@leemour/cli-core": ">=0.13.0 <0.15.0",
|
|
115
116
|
"commander": ">=15"
|
|
116
117
|
},
|
|
117
118
|
"bin": {
|
package/parity.json
CHANGED
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
"value": "<chat>",
|
|
5
5
|
"meaning": "put a chat into a folder; repeat it for more"
|
|
6
6
|
},
|
|
7
|
-
"--after": {
|
|
8
|
-
"value": "<id-or-time>",
|
|
9
|
-
"meaning": "read what came after this message id, this ISO 8601 time, or 2h / 1d ago; not with --before",
|
|
10
|
-
"note": "becomes `--after-id`, `--after-time` (`messages list`) and `--after-n` (`messages context`) — NEED-485"
|
|
11
|
-
},
|
|
12
7
|
"--after-id": {
|
|
13
8
|
"value": "<id>",
|
|
14
9
|
"meaning": "read what came after this message id; not with --after-time or the --before pair"
|
|
@@ -61,11 +56,6 @@
|
|
|
61
56
|
"--as-file": {
|
|
62
57
|
"meaning": "send every --file as a plain file to download, a video included"
|
|
63
58
|
},
|
|
64
|
-
"--at": {
|
|
65
|
-
"value": "<time>",
|
|
66
|
-
"meaning": "let the messenger send it later, even with this machine off: a local time like 2026-09-25T09:00, or 30m",
|
|
67
|
-
"note": "becomes `--at-time` — NEED-493"
|
|
68
|
-
},
|
|
69
59
|
"--at-time": {
|
|
70
60
|
"value": "<time>",
|
|
71
61
|
"meaning": "let the messenger send it later, even with this machine off: a local time like 2026-09-25T09:00, or 30m"
|
|
@@ -73,11 +63,6 @@
|
|
|
73
63
|
"--background": {
|
|
74
64
|
"meaning": "run as a job that outlives this command; `store jobs show` follows it"
|
|
75
65
|
},
|
|
76
|
-
"--before": {
|
|
77
|
-
"value": "<id-or-time>",
|
|
78
|
-
"meaning": "read what came before this message id, this ISO 8601 time, or 2h / 1d ago",
|
|
79
|
-
"note": "becomes `--before-id`, `--before-time` (`messages list`) and `--before-n` (`messages context`) — NEED-485"
|
|
80
|
-
},
|
|
81
66
|
"--before-id": {
|
|
82
67
|
"value": "<id>",
|
|
83
68
|
"meaning": "read what came before this message id; not with --before-time"
|
|
@@ -850,22 +835,8 @@
|
|
|
850
835
|
"messages context": {
|
|
851
836
|
"state": "both",
|
|
852
837
|
"options": {
|
|
853
|
-
"--after":
|
|
854
|
-
|
|
855
|
-
"by": "T6"
|
|
856
|
-
},
|
|
857
|
-
"--after-n": {
|
|
858
|
-
"state": "planned",
|
|
859
|
-
"by": "T6"
|
|
860
|
-
},
|
|
861
|
-
"--before": {
|
|
862
|
-
"state": "planned",
|
|
863
|
-
"by": "T6"
|
|
864
|
-
},
|
|
865
|
-
"--before-n": {
|
|
866
|
-
"state": "planned",
|
|
867
|
-
"by": "T6"
|
|
868
|
-
}
|
|
838
|
+
"--after-n": "both",
|
|
839
|
+
"--before-n": "both"
|
|
869
840
|
}
|
|
870
841
|
},
|
|
871
842
|
"messages delete": {
|
|
@@ -917,30 +888,10 @@
|
|
|
917
888
|
"messages list": {
|
|
918
889
|
"state": "both",
|
|
919
890
|
"options": {
|
|
920
|
-
"--after":
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
"--after-id": {
|
|
925
|
-
"state": "planned",
|
|
926
|
-
"by": "T6"
|
|
927
|
-
},
|
|
928
|
-
"--after-time": {
|
|
929
|
-
"state": "planned",
|
|
930
|
-
"by": "T6"
|
|
931
|
-
},
|
|
932
|
-
"--before": {
|
|
933
|
-
"state": "planned",
|
|
934
|
-
"by": "T6"
|
|
935
|
-
},
|
|
936
|
-
"--before-id": {
|
|
937
|
-
"state": "planned",
|
|
938
|
-
"by": "T6"
|
|
939
|
-
},
|
|
940
|
-
"--before-time": {
|
|
941
|
-
"state": "planned",
|
|
942
|
-
"by": "T6"
|
|
943
|
-
},
|
|
891
|
+
"--after-id": "both",
|
|
892
|
+
"--after-time": "both",
|
|
893
|
+
"--before-id": "both",
|
|
894
|
+
"--before-time": "both",
|
|
944
895
|
"--limit": "both",
|
|
945
896
|
"--mark-read": "both",
|
|
946
897
|
"--model": "both",
|
|
@@ -972,14 +923,7 @@
|
|
|
972
923
|
"options": {
|
|
973
924
|
"--allow-any-file": "both",
|
|
974
925
|
"--as-file": "both",
|
|
975
|
-
"--at":
|
|
976
|
-
"state": "planned",
|
|
977
|
-
"by": "T6"
|
|
978
|
-
},
|
|
979
|
-
"--at-time": {
|
|
980
|
-
"state": "planned",
|
|
981
|
-
"by": "T6"
|
|
982
|
-
},
|
|
926
|
+
"--at-time": "both",
|
|
983
927
|
"--file": "both",
|
|
984
928
|
"--md": "both",
|
|
985
929
|
"--no-preview": "both",
|
|
@@ -1210,16 +1154,16 @@
|
|
|
1210
1154
|
"by": "T6"
|
|
1211
1155
|
},
|
|
1212
1156
|
"store clear": {
|
|
1213
|
-
"state": "
|
|
1214
|
-
"
|
|
1157
|
+
"state": "planned",
|
|
1158
|
+
"by": "T6",
|
|
1215
1159
|
"options": {
|
|
1216
1160
|
"--allow-dangerous": {
|
|
1217
|
-
"state": "
|
|
1218
|
-
"
|
|
1161
|
+
"state": "planned",
|
|
1162
|
+
"by": "T6"
|
|
1219
1163
|
},
|
|
1220
1164
|
"--left": {
|
|
1221
|
-
"state": "
|
|
1222
|
-
"
|
|
1165
|
+
"state": "planned",
|
|
1166
|
+
"by": "T6"
|
|
1223
1167
|
}
|
|
1224
1168
|
}
|
|
1225
1169
|
},
|
|
@@ -1229,8 +1173,8 @@
|
|
|
1229
1173
|
"--format": "both",
|
|
1230
1174
|
"--output": "both",
|
|
1231
1175
|
"--since": {
|
|
1232
|
-
"state": "
|
|
1233
|
-
"
|
|
1176
|
+
"state": "planned",
|
|
1177
|
+
"by": "T6"
|
|
1234
1178
|
},
|
|
1235
1179
|
"--since-time": {
|
|
1236
1180
|
"state": "planned",
|
|
@@ -1252,8 +1196,8 @@
|
|
|
1252
1196
|
"by": "T6"
|
|
1253
1197
|
},
|
|
1254
1198
|
"--max-pages": {
|
|
1255
|
-
"state": "
|
|
1256
|
-
"
|
|
1199
|
+
"state": "planned",
|
|
1200
|
+
"by": "T6"
|
|
1257
1201
|
},
|
|
1258
1202
|
"--page-size": {
|
|
1259
1203
|
"state": "planned",
|
|
@@ -1261,8 +1205,8 @@
|
|
|
1261
1205
|
},
|
|
1262
1206
|
"--pause": "both",
|
|
1263
1207
|
"--since": {
|
|
1264
|
-
"state": "
|
|
1265
|
-
"
|
|
1208
|
+
"state": "planned",
|
|
1209
|
+
"by": "T6"
|
|
1266
1210
|
},
|
|
1267
1211
|
"--since-time": {
|
|
1268
1212
|
"state": "planned",
|
|
@@ -1294,6 +1238,10 @@
|
|
|
1294
1238
|
"state": "planned",
|
|
1295
1239
|
"by": "T6"
|
|
1296
1240
|
},
|
|
1241
|
+
"store reindex": {
|
|
1242
|
+
"state": "planned",
|
|
1243
|
+
"by": "T6"
|
|
1244
|
+
},
|
|
1297
1245
|
"store restore": {
|
|
1298
1246
|
"state": "planned",
|
|
1299
1247
|
"by": "T6"
|