@leemour/cli-messaging 0.95.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 +52 -11
- 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/dist/cli/messenger/conversations-command.d.ts.map +1 -1
- package/dist/cli/messenger/conversations-command.js +66 -0
- package/dist/cli/messenger/conversations-command.js.map +1 -1
- package/dist/cli/messenger/store-maintenance-command.d.ts.map +1 -1
- package/dist/cli/messenger/store-maintenance-command.js +50 -11
- package/dist/cli/messenger/store-maintenance-command.js.map +1 -1
- package/dist/cli/skill-command.d.ts.map +1 -1
- package/dist/cli/skill-command.js +5 -1
- package/dist/cli/skill-command.js.map +1 -1
- package/dist/search/query.d.ts +28 -0
- package/dist/search/query.d.ts.map +1 -0
- package/dist/search/query.js +109 -0
- package/dist/search/query.js.map +1 -0
- package/dist/search/trigrams.d.ts +7 -0
- package/dist/search/trigrams.d.ts.map +1 -0
- package/dist/search/trigrams.js +13 -0
- package/dist/search/trigrams.js.map +1 -0
- package/dist/sends/permissions.d.ts +1 -1
- package/dist/sends/permissions.d.ts.map +1 -1
- package/dist/sends/permissions.js +14 -1
- package/dist/sends/permissions.js.map +1 -1
- package/dist/services/conversations.d.ts +11 -1
- package/dist/services/conversations.d.ts.map +1 -1
- package/dist/services/conversations.js +8 -0
- package/dist/services/conversations.js.map +1 -1
- package/dist/services/messages.d.ts +2 -0
- package/dist/services/messages.d.ts.map +1 -1
- package/dist/services/messages.js +13 -6
- package/dist/services/messages.js.map +1 -1
- package/dist/sqlite-runtime.d.ts +29 -0
- package/dist/sqlite-runtime.d.ts.map +1 -0
- package/dist/sqlite-runtime.js +105 -0
- package/dist/sqlite-runtime.js.map +1 -0
- package/dist/store/drivers/bun-sqlite.d.ts +5 -0
- package/dist/store/drivers/bun-sqlite.d.ts.map +1 -1
- package/dist/store/drivers/bun-sqlite.js +24 -2
- package/dist/store/drivers/bun-sqlite.js.map +1 -1
- package/dist/store/index.d.ts +1 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +1 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/open.d.ts +2 -0
- package/dist/store/open.d.ts.map +1 -1
- package/dist/store/open.js +10 -5
- package/dist/store/open.js.map +1 -1
- package/dist/store/sqlite/backfill.d.ts +2 -1
- package/dist/store/sqlite/backfill.d.ts.map +1 -1
- package/dist/store/sqlite/backfill.js +3 -1
- package/dist/store/sqlite/backfill.js.map +1 -1
- package/dist/store/sqlite/batches.d.ts +17 -3
- package/dist/store/sqlite/batches.d.ts.map +1 -1
- package/dist/store/sqlite/batches.js +93 -6
- package/dist/store/sqlite/batches.js.map +1 -1
- package/dist/store/sqlite/chats.d.ts +2 -0
- package/dist/store/sqlite/chats.d.ts.map +1 -1
- package/dist/store/sqlite/chats.js +6 -0
- package/dist/store/sqlite/chats.js.map +1 -1
- package/dist/store/sqlite/open.d.ts.map +1 -1
- package/dist/store/sqlite/open.js +2 -4
- package/dist/store/sqlite/open.js.map +1 -1
- package/dist/store/sqlite/search-index.d.ts +36 -0
- package/dist/store/sqlite/search-index.d.ts.map +1 -0
- package/dist/store/sqlite/search-index.js +131 -0
- package/dist/store/sqlite/search-index.js.map +1 -0
- package/dist/store/store.d.ts +29 -0
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +26 -0
- package/dist/store/store.js.map +1 -1
- package/package.json +9 -2
- package/parity.json +20 -72
- package/skills/link-conversations/SKILL.md +77 -0
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 })
|
|
@@ -108,7 +104,7 @@ const listCommand = (bot, tokenVariable) => new Command("list")
|
|
|
108
104
|
});
|
|
109
105
|
});
|
|
110
106
|
const recipientsCommand = (bot) => {
|
|
111
|
-
const command = new Command("recipients").description("the chats this bot may write to; with no list, every chat — `
|
|
107
|
+
const command = new Command("recipients").description("the chats this bot may write to; with no list, every chat — `clear` removes the list");
|
|
112
108
|
command
|
|
113
109
|
.command("list")
|
|
114
110
|
.description("the chats on the list, or nothing when there is no list")
|
|
@@ -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"}
|