@wirecat/max-cli 0.59.0 → 0.61.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/dist/bin/max.js +0 -13
- package/dist/bin/max.js.map +1 -1
- package/dist/bot/permissions.d.ts +8 -2
- package/dist/bot/permissions.d.ts.map +1 -1
- package/dist/bot/permissions.js +8 -2
- package/dist/bot/permissions.js.map +1 -1
- package/dist/commands/bot-comments.js +4 -4
- package/dist/commands/bot-comments.js.map +1 -1
- package/dist/commands/bot-context.d.ts +1 -0
- package/dist/commands/bot-context.d.ts.map +1 -1
- package/dist/commands/bot-context.js +15 -4
- package/dist/commands/bot-context.js.map +1 -1
- package/dist/commands/bot-members.js +1 -1
- package/dist/commands/bot-members.js.map +1 -1
- package/dist/commands/bot-messenger.d.ts +2 -2
- package/dist/commands/bot-messenger.d.ts.map +1 -1
- package/dist/commands/bot-messenger.js +19 -11
- package/dist/commands/bot-messenger.js.map +1 -1
- package/dist/commands/bot-sends.d.ts.map +1 -1
- package/dist/commands/bot-sends.js +15 -8
- package/dist/commands/bot-sends.js.map +1 -1
- package/dist/commands/bot-setup.d.ts.map +1 -1
- package/dist/commands/bot-setup.js +2 -1
- package/dist/commands/bot-setup.js.map +1 -1
- package/dist/commands/bot.d.ts.map +1 -1
- package/dist/commands/bot.js +34 -3
- package/dist/commands/bot.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +1 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +3 -1
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +3 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/read-only.d.ts +3 -0
- package/dist/commands/read-only.d.ts.map +1 -0
- package/dist/commands/read-only.js +15 -0
- package/dist/commands/read-only.js.map +1 -0
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +10 -11
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/setup.js +2 -2
- package/dist/commands/setup.js.map +1 -1
- package/dist/permissions.d.ts +2 -0
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +10 -2
- package/dist/permissions.js.map +1 -1
- package/dist/program.d.ts +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +4 -24
- package/dist/program.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/dist/bot/mcp-tools.d.ts +0 -4
- package/dist/bot/mcp-tools.d.ts.map +0 -1
- package/dist/bot/mcp-tools.js +0 -78
- package/dist/bot/mcp-tools.js.map +0 -1
package/dist/bin/max.js
CHANGED
|
@@ -3,19 +3,6 @@ import { enableCompileCache } from "node:module";
|
|
|
3
3
|
import { catchCrashes } from "@wirecat/cli-base";
|
|
4
4
|
import { ensureSqlite } from "@wirecat/cli-core/sqlite-runtime";
|
|
5
5
|
import { MAX_APP } from "../app.js";
|
|
6
|
-
// `max chats --json | head` closes the pipe while we are still writing, and an unhandled EPIPE
|
|
7
|
-
// makes Node print a stack trace over the output of the command that just worked. A reader that
|
|
8
|
-
// stopped reading is not an error: leave quietly, as every other Unix tool does.
|
|
9
|
-
for (const stream of [process.stdout, process.stderr]) {
|
|
10
|
-
stream.on("error", (error) => {
|
|
11
|
-
if (error.code === "EPIPE") {
|
|
12
|
-
if (stream.listenerCount("error") === 1)
|
|
13
|
-
process.exit(0);
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
throw error;
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
6
|
// Compiling about 1,100 module files is most of a start; later runs reuse what this one compiled.
|
|
20
7
|
enableCompileCache();
|
|
21
8
|
const stopCatching = catchCrashes({ cli: MAX_APP.command, interactive: process.stdout.isTTY === true });
|
package/dist/bin/max.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max.js","sourceRoot":"","sources":["../../src/bin/max.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC
|
|
1
|
+
{"version":3,"file":"max.js","sourceRoot":"","sources":["../../src/bin/max.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,kGAAkG;AAClG,kBAAkB,EAAE,CAAA;AACpB,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC,CAAA;AACvG,MAAM,YAAY,EAAE,CAAA;AACpB,YAAY,EAAE,CAAA;AACd,mGAAmG;AACnG,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;AAC7C,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -6,9 +6,15 @@ import type { Permission, SendKind } from "@wirecat/cli-core/sends";
|
|
|
6
6
|
*/
|
|
7
7
|
export declare const BOT_PERMISSIONS: Readonly<Record<string, Permission>>;
|
|
8
8
|
/**
|
|
9
|
-
* How a bot write is journaled.
|
|
10
|
-
*
|
|
9
|
+
* How a bot write is journaled. A write missing here and from `UNJOURNALED_WRITES` is refused, so
|
|
10
|
+
* one added by a future schema sync cannot skip the recipient list and the journal.
|
|
11
11
|
*/
|
|
12
12
|
export declare const BOT_JOURNAL_KINDS: Readonly<Record<string, SendKind>>;
|
|
13
|
+
/**
|
|
14
|
+
* Writes that pass only the permission checks. `getUpdates` is a write only because it commits the
|
|
15
|
+
* marker: it reaches no chat, so a recipient list has nothing to say about it, and it sends nothing
|
|
16
|
+
* an hourly limit or the journal would count.
|
|
17
|
+
*/
|
|
18
|
+
export declare const UNJOURNALED_WRITES: ReadonlySet<string>;
|
|
13
19
|
export declare const BOT_KEYS: Readonly<Record<string, string>>;
|
|
14
20
|
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/bot/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAEnE;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAoBhE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAqBhE,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkCrD,CAAA"}
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/bot/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAEnE;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAoBhE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAqBhE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAA2B,CAAA;AAE9E,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkCrD,CAAA"}
|
package/dist/bot/permissions.js
CHANGED
|
@@ -25,8 +25,8 @@ export const BOT_PERMISSIONS = {
|
|
|
25
25
|
getUpdates: "read",
|
|
26
26
|
};
|
|
27
27
|
/**
|
|
28
|
-
* How a bot write is journaled.
|
|
29
|
-
*
|
|
28
|
+
* How a bot write is journaled. A write missing here and from `UNJOURNALED_WRITES` is refused, so
|
|
29
|
+
* one added by a future schema sync cannot skip the recipient list and the journal.
|
|
30
30
|
*/
|
|
31
31
|
export const BOT_JOURNAL_KINDS = {
|
|
32
32
|
sendMessage: "message",
|
|
@@ -50,6 +50,12 @@ export const BOT_JOURNAL_KINDS = {
|
|
|
50
50
|
unsubscribe: "account",
|
|
51
51
|
getUploadUrl: "account",
|
|
52
52
|
};
|
|
53
|
+
/**
|
|
54
|
+
* Writes that pass only the permission checks. `getUpdates` is a write only because it commits the
|
|
55
|
+
* marker: it reaches no chat, so a recipient list has nothing to say about it, and it sends nothing
|
|
56
|
+
* an hourly limit or the journal would count.
|
|
57
|
+
*/
|
|
58
|
+
export const UNJOURNALED_WRITES = new Set(["getUpdates"]);
|
|
53
59
|
export const BOT_KEYS = {
|
|
54
60
|
getMyInfo: "bot.me",
|
|
55
61
|
editMyCommands: "bot.commands.set",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/bot/permissions.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAyC;IACnE,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,MAAM;IAClB,gBAAgB,EAAE,MAAM;IACxB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,aAAa,EAAE,QAAQ;IACvB,aAAa,EAAE,QAAQ;IACvB,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,QAAQ;IACtB,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,QAAQ;IACtB,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,MAAM;CACnB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAuC;IACnE,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,gBAAgB,EAAE,SAAS;IAC3B,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,aAAa,EAAE,QAAQ;IACvB,aAAa,EAAE,QAAQ;IACvB,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,MAAM;IACpB,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,MAAM;IACpB,cAAc,EAAE,SAAS;IACzB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,SAAS;CACxB,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAqC;IACxD,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,kBAAkB;IAClC,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,kBAAkB;IAC9B,gBAAgB,EAAE,qBAAqB;IACvC,UAAU,EAAE,kBAAkB;IAC9B,YAAY,EAAE,oBAAoB;IAClC,aAAa,EAAE,sBAAsB;IACrC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,uBAAuB;IAClC,UAAU,EAAE,sBAAsB;IAClC,YAAY,EAAE,yBAAyB;IACvC,UAAU,EAAE,wBAAwB;IACpC,UAAU,EAAE,uBAAuB;IACnC,YAAY,EAAE,0BAA0B;IACxC,gBAAgB,EAAE,mBAAmB;IACrC,SAAS,EAAE,kBAAkB;IAC7B,WAAW,EAAE,qBAAqB;IAClC,YAAY,EAAE,aAAa;IAC3B,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,qBAAqB;IACpC,cAAc,EAAE,mBAAmB;IACnC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,qBAAqB;IACpC,cAAc,EAAE,mBAAmB;IACnC,yBAAyB,EAAE,uBAAuB;IAClD,gBAAgB,EAAE,mBAAmB;IACrC,UAAU,EAAE,kBAAkB;CAC/B,CAAA"}
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/bot/permissions.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAyC;IACnE,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,MAAM;IAClB,gBAAgB,EAAE,MAAM;IACxB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,aAAa,EAAE,QAAQ;IACvB,aAAa,EAAE,QAAQ;IACvB,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,QAAQ;IACtB,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,QAAQ;IACtB,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,MAAM;CACnB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAuC;IACnE,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,gBAAgB,EAAE,SAAS;IAC3B,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,aAAa,EAAE,QAAQ;IACvB,aAAa,EAAE,QAAQ;IACvB,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,MAAM;IACpB,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,MAAM;IACpB,cAAc,EAAE,SAAS;IACzB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,SAAS;CACxB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;AAE9E,MAAM,CAAC,MAAM,QAAQ,GAAqC;IACxD,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,kBAAkB;IAClC,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,kBAAkB;IAC9B,gBAAgB,EAAE,qBAAqB;IACvC,UAAU,EAAE,kBAAkB;IAC9B,YAAY,EAAE,oBAAoB;IAClC,aAAa,EAAE,sBAAsB;IACrC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,uBAAuB;IAClC,UAAU,EAAE,sBAAsB;IAClC,YAAY,EAAE,yBAAyB;IACvC,UAAU,EAAE,wBAAwB;IACpC,UAAU,EAAE,uBAAuB;IACnC,YAAY,EAAE,0BAA0B;IACxC,gBAAgB,EAAE,mBAAmB;IACrC,SAAS,EAAE,kBAAkB;IAC7B,WAAW,EAAE,qBAAqB;IAClC,YAAY,EAAE,aAAa;IAC3B,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,qBAAqB;IACpC,cAAc,EAAE,mBAAmB;IACnC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,qBAAqB;IACpC,cAAc,EAAE,mBAAmB;IACnC,yBAAyB,EAAE,uBAAuB;IAClD,gBAAgB,EAAE,mBAAmB;IACrC,UAAU,EAAE,kBAAkB;CAC/B,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
|
-
import { itemOf, listOf, REMOTE_READ, REMOTE_WRITE, renderAnswer } from "@wirecat/cli-core/cli";
|
|
3
|
+
import { itemOf, listOf, ownerOnlyOption, REMOTE_READ, REMOTE_WRITE, renderAnswer } from "@wirecat/cli-core/cli";
|
|
4
4
|
import { Command, Option } from "commander";
|
|
5
5
|
import { plainJson } from "../bot/transport.js";
|
|
6
6
|
import { botContext } from "./bot-context.js";
|
|
@@ -11,7 +11,7 @@ const format = () => new Option("--format <format>", "how the text is marked up"
|
|
|
11
11
|
const commentBody = (id, text, format) => checked(id, JSON.stringify({ text: textOf(text), ...(format ? { format } : {}) }));
|
|
12
12
|
export const commentsCommand = () => {
|
|
13
13
|
const command = new Command("comments").description("comments under a channel post — each command takes the post's message id (mid.…) first");
|
|
14
|
-
annotate(command.command("list <message>"), { effects: REMOTE_READ })
|
|
14
|
+
annotate(command.command("list <message>"), { effects: REMOTE_READ, offline: false })
|
|
15
15
|
.description("the comments under a post, newest last")
|
|
16
16
|
.option("--limit <n>", "how many, up to 100", wholeNumber("--limit"))
|
|
17
17
|
.action(async function (message) {
|
|
@@ -26,7 +26,7 @@ export const commentsCommand = () => {
|
|
|
26
26
|
const items = plainJson(answer)?.messages ?? [];
|
|
27
27
|
renderAnswer(this, context, listOf("bot comments list", { items, limit, has_more: false }));
|
|
28
28
|
});
|
|
29
|
-
annotate(command.command("get <message> <comment>"), { effects: REMOTE_READ })
|
|
29
|
+
annotate(command.command("get <message> <comment>"), { effects: REMOTE_READ, offline: false })
|
|
30
30
|
.description("one comment under a post")
|
|
31
31
|
.action(async function (message, comment) {
|
|
32
32
|
const context = botContext(this);
|
|
@@ -60,7 +60,7 @@ export const commentsCommand = () => {
|
|
|
60
60
|
});
|
|
61
61
|
annotate(command.command("delete <message> <comment>"), { effects: REMOTE_WRITE })
|
|
62
62
|
.description("delete a comment under a post")
|
|
63
|
-
.
|
|
63
|
+
.addOption(ownerOnlyOption("--allow-dangerous", "skip confirmation for bot.messages.delete at level ask"))
|
|
64
64
|
.action(async function (message, comment) {
|
|
65
65
|
const context = botContext(this);
|
|
66
66
|
const answer = await guardedCall(context, operation("deleteComment"), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-comments.js","sourceRoot":"","sources":["../../src/commands/bot-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"bot-comments.js","sourceRoot":"","sources":["../../src/commands/bot-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAChH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAE/G,MAAM,WAAW,GAAG,CAAC,EAAU,EAAE,IAAY,EAAE,MAAe,EAAE,EAAE,CAChE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEpF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAY,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CACjD,wFAAwF,CACzF,CAAA;IAED,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAClF,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;SACpE,MAAM,CAAC,KAAK,WAA0B,OAAe;QACpD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAA;QACpC,IAAI,KAAK,GAAG,GAAG;YAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,+CAA+C,CAAC,CAAA;QACxG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;YAC1E,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE;YAC5B,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;SAChC,CAAC,CAAA;QACF,MAAM,KAAK,GAAI,SAAS,CAAC,MAAM,CAAqC,EAAE,QAAQ,IAAI,EAAE,CAAA;QACpF,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAC7F,CAAC,CAAC,CAAA;IAEJ,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC3F,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,WAA0B,OAAe,EAAE,OAAe;QACrE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE;YAC7E,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;SACjD,CAAC,CAAA;QACF,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEJ,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;SAC1E,WAAW,CAAC,gDAAgD,CAAC;SAC7D,SAAS,CAAC,MAAM,EAAE,CAAC;SACnB,MAAM,CAAC,KAAK,WAA0B,OAAe,EAAE,IAAY;QAClE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC,EAAE;YAClE,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE;YAC5B,IAAI,EAAE,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAuB,CAAC,MAAM,CAAC;SAChF,CAAC,CAAA;QACF,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEJ,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;SACpF,WAAW,CAAC,4DAA4D,CAAC;SACzE,SAAS,CAAC,MAAM,EAAE,CAAC;SACnB,MAAM,CAAC,KAAK,WAA0B,OAAe,EAAE,OAAe,EAAE,IAAY;QACnF,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC,EAAE;YAClE,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE;YAC5B,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;YAC9B,IAAI,EAAE,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAuB,CAAC,MAAM,CAAC;SAChF,CAAC,CAAA;QACF,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEJ,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;SAC/E,WAAW,CAAC,+BAA+B,CAAC;SAC5C,SAAS,CAAC,eAAe,CAAC,mBAAmB,EAAE,wDAAwD,CAAC,CAAC;SACzG,MAAM,CAAC,KAAK,WAA0B,OAAe,EAAE,OAAe;QACrE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE;YACpE,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE;YAC5B,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;SAC/B,CAAC,CAAA;QACF,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -16,6 +16,7 @@ export declare const botContext: (command: Command, { offline: answersOffline }?
|
|
|
16
16
|
offline?: boolean;
|
|
17
17
|
}) => {
|
|
18
18
|
askPermission: import("@wirecat/cli-core/sends").Asker;
|
|
19
|
+
env: NodeJS.ProcessEnv;
|
|
19
20
|
sleep: import("@wirecat/cli-base").SleepLike | undefined;
|
|
20
21
|
/** The run's sink, for the requests that do not go through the transport — the upload. */
|
|
21
22
|
events: EventSink | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-context.d.ts","sourceRoot":"","sources":["../../src/commands/bot-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAmC,MAAM,uBAAuB,CAAA;AAEvG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAS/E;;;GAGG;AACH,eAAO,MAAM,iBAAiB,YAAa,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"bot-context.d.ts","sourceRoot":"","sources":["../../src/commands/bot-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAmC,MAAM,uBAAuB,CAAA;AAEvG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAS/E;;;GAGG;AACH,eAAO,MAAM,iBAAiB,YAAa,OAAO,KAAG,IAiCpD,CAAA;AAED,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,SAAS,GAAG,SAA4C,CAAA;AAE1G,wGAAwG;AACxG,eAAO,MAAM,UAAU,YAAa,OAAO,gCAAuC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE;;;;IA2DnG,0FAA0F;;;;;;;;;oBA/BrE,MAAM,SAAS,WAAW,WAAW,SAAS;;2BAevC,WAAW;;;;CAgC1C,CAAA;AAED,sGAAsG;AACtG,eAAO,MAAM,aAAa,cAAe,iBAAiB,YAAY,QAAQ,KAAG,IAQhF,CAAA"}
|
|
@@ -21,7 +21,10 @@ const recordings = new WeakMap();
|
|
|
21
21
|
export const startBotRecording = (command) => {
|
|
22
22
|
const environment = environmentOf(command);
|
|
23
23
|
// The program's own flags only: `bot api get-updates --limit` is the API's limit, not ours.
|
|
24
|
-
const settings = resolveSettings(rootOf(command).opts(), {
|
|
24
|
+
const settings = resolveSettings(rootOf(command).opts(), {
|
|
25
|
+
kind: "bot",
|
|
26
|
+
env: environment.env ?? process.env,
|
|
27
|
+
});
|
|
25
28
|
const { streams, format } = resolveOutput({
|
|
26
29
|
...settings,
|
|
27
30
|
...(environment.streams ? { streams: environment.streams } : {}),
|
|
@@ -54,19 +57,26 @@ export const botRecordingOf = (command) => recordings.get(rootOf(command));
|
|
|
54
57
|
/** `offline` is for the reads the local copy can answer; every other command still refuses the flag. */
|
|
55
58
|
export const botContext = (command, { offline: answersOffline = false } = {}) => {
|
|
56
59
|
const environment = environmentOf(command);
|
|
60
|
+
const env = environment.env ?? process.env;
|
|
57
61
|
const flags = command.optsWithGlobals();
|
|
58
62
|
const offline = flags.offline === true;
|
|
59
63
|
if (offline && !answersOffline) {
|
|
60
64
|
throw new CliError("validation_error", `--offline reads the local copy; \`${command.name()}\` has to ask MAX`);
|
|
61
65
|
}
|
|
62
66
|
const nativeApi = command.name() === "api" || command.parent?.name() === "api";
|
|
63
|
-
const settings = resolveSettings(nativeApi ? rootOf(command).opts() : flags, { kind: "bot" });
|
|
67
|
+
const settings = resolveSettings(nativeApi ? rootOf(command).opts() : flags, { kind: "bot", env });
|
|
64
68
|
const { renderer, streams, format, color } = resolveOutput({
|
|
65
69
|
...settings,
|
|
70
|
+
...(environment.agent ? { capture: environment.agent.result } : {}),
|
|
66
71
|
...(environment.streams ? { streams: environment.streams } : {}),
|
|
67
72
|
...(environment.tty === undefined ? {} : { tty: environment.tty }),
|
|
68
73
|
});
|
|
69
|
-
const store = environment.botStore?.(settings.profile) ??
|
|
74
|
+
const store = environment.botStore?.(settings.profile) ??
|
|
75
|
+
new BotTokenStore({
|
|
76
|
+
profile: settings.profile,
|
|
77
|
+
env,
|
|
78
|
+
...(environment.keyring ? { keyring: environment.keyring } : {}),
|
|
79
|
+
});
|
|
70
80
|
const recording = botRecordingOf(command);
|
|
71
81
|
const timeout = settings.commandTimeoutMs === undefined ? undefined : AbortSignal.timeout(settings.commandTimeoutMs);
|
|
72
82
|
const deadline = timeout && environment.signal ? AbortSignal.any([timeout, environment.signal]) : (timeout ?? environment.signal);
|
|
@@ -93,10 +103,11 @@ export const botContext = (command, { offline: answersOffline = false } = {}) =>
|
|
|
93
103
|
}
|
|
94
104
|
return client(stored.token, stop);
|
|
95
105
|
};
|
|
96
|
-
const registry = environment.botRegistry?.(settings.profile) ?? new ChatRegistry(settings.profile);
|
|
106
|
+
const registry = environment.botRegistry?.(settings.profile) ?? new ChatRegistry(settings.profile, env);
|
|
97
107
|
const uploadFetch = () => environment.botFetch ?? botFetch();
|
|
98
108
|
return {
|
|
99
109
|
askPermission: askerFor(command.optsWithGlobals(), environment),
|
|
110
|
+
env,
|
|
100
111
|
sleep: environment.sleep,
|
|
101
112
|
/** The run's sink, for the requests that do not go through the transport — the upload. */
|
|
102
113
|
events: recording?.events,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-context.js","sourceRoot":"","sources":["../../src/commands/bot-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAkC,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvG,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAoB,eAAe,EAAiB,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,UAAU,GAAG,IAAI,OAAO,EAAsB,CAAA;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAC1D,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IAC1C,4FAA4F;IAC5F,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"bot-context.js","sourceRoot":"","sources":["../../src/commands/bot-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,7 @@ const showMembers = (command, context, chat, answer) => {
|
|
|
46
46
|
* `remove` comes from cli-core with the admins.
|
|
47
47
|
*/
|
|
48
48
|
export const addMembersCommands = (members) => {
|
|
49
|
-
annotate(members.command("list <chat>"), { effects: REMOTE_READ })
|
|
49
|
+
annotate(members.command("list <chat>"), { effects: REMOTE_READ, offline: false })
|
|
50
50
|
.description("members of a chat, a page at a time — --cursor takes the `page.next_cursor` the last page gave")
|
|
51
51
|
.option("--limit <n>", "how many, up to 100", wholeNumber("--limit"))
|
|
52
52
|
.option("--cursor <cursor>", "continue from here")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-members.js","sourceRoot":"","sources":["../../src/commands/bot-members.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAE/F,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,OAAO,GAAG,OAAO,CAAA;AAEvB;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAsB,EAAU,EAAE;IAC5D,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,iCAAiC,EAAE,EAAE,CAAC,CAAA;IACtG,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;AAC7B,CAAC,CAAA;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,IAAY,EAAU,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAA;AAEnG,gFAAgF;AAChF,MAAM,WAAW,GAAG,GAAG,CAAA;AAEvB,MAAM,OAAO,GAAG,CAAC,KAAa,EAAU,EAAE;IACxC,IAAI,KAAK,GAAG,GAAG;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,+CAA+C,CAAC,CAAA;IACxG,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC,CAAA;AAED,wHAAwH;AACxH,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,OAAsC,EAAE,IAAY,EAAE,MAAe,EAAQ,EAAE;IACpH,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAA8D,CAAA;IAC1G,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/F,YAAY,CACV,OAAO,EACP,OAAO,EACP,MAAM,CAAC,wBAAwB,EAAE;QAC/B,KAAK;QACL,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK;QAC7B,QAAQ,EAAE,MAAM,IAAI,IAAI;QACxB,MAAM,EAAE,QAAQ;QAChB,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,IAAI,EAAE,EAAE,IAAI,EAAE;KACf,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAC3D,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;SAC/
|
|
1
|
+
{"version":3,"file":"bot-members.js","sourceRoot":"","sources":["../../src/commands/bot-members.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { BotMcp, BotMessenger, RunBotCommand } from "@wirecat/cli-core/cli";
|
|
2
2
|
import type { run } from "../program.js";
|
|
3
3
|
/**
|
|
4
|
-
* max's `run` as the shared bot MCP server calls it
|
|
5
|
-
* `extra`.
|
|
4
|
+
* max's `run` as the shared bot MCP server calls it, with the whole environment it is handed. A test adds its
|
|
5
|
+
* keyring and Bot API stand-in as `extra`.
|
|
6
6
|
*/
|
|
7
7
|
export declare const botMcpRun: (program: typeof run, extra?: Parameters<typeof run>[1]) => RunBotCommand;
|
|
8
8
|
/** `bot mcp`. The program hands in its own `run`: importing it here would close a loop through the program. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-messenger.d.ts","sourceRoot":"","sources":["../../src/commands/bot-messenger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAA+B,aAAa,EAAY,MAAM,uBAAuB,CAAA;AAYvH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAMxC;;;GAGG;AACH,eAAO,MAAM,SAAS,YACV,OAAO,GAAG,UAAS,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAQ,
|
|
1
|
+
{"version":3,"file":"bot-messenger.d.ts","sourceRoot":"","sources":["../../src/commands/bot-messenger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAA+B,aAAa,EAAY,MAAM,uBAAuB,CAAA;AAYvH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAMxC;;;GAGG;AACH,eAAO,MAAM,SAAS,YACV,OAAO,GAAG,UAAS,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAQ,aAGjB,CAAA;AAE/C,+GAA+G;AAC/G,eAAO,MAAM,SAAS,YAAa,OAAO,GAAG,KAAG,MAI9C,CAAA;AAEF,yGAAyG;AACzG,eAAO,MAAM,MAAM,EAAE,YAmFpB,CAAA"}
|
|
@@ -6,22 +6,24 @@ import { BotTokenStore } from "../bot/auth.js";
|
|
|
6
6
|
import { JoinLog } from "../bot/joins.js";
|
|
7
7
|
import { PROVIDER } from "../bot/keep.js";
|
|
8
8
|
import { KINDS } from "../bot/map.js";
|
|
9
|
-
import { MAX_BOT_TOOLS } from "../bot/mcp-tools.js";
|
|
10
9
|
import { ChatRegistry } from "../bot/registry.js";
|
|
11
10
|
import { resolveSettings } from "../config.js";
|
|
11
|
+
import { botCommandKey } from "../permissions.js";
|
|
12
12
|
import { readSecret } from "../session/prompt.js";
|
|
13
13
|
import { SKILL } from "../skill.js";
|
|
14
14
|
import { botContext } from "./bot-context.js";
|
|
15
15
|
import { environmentOf } from "./context.js";
|
|
16
16
|
/**
|
|
17
|
-
* max's `run` as the shared bot MCP server calls it
|
|
18
|
-
* `extra`.
|
|
17
|
+
* max's `run` as the shared bot MCP server calls it, with the whole environment it is handed. A test adds its
|
|
18
|
+
* keyring and Bot API stand-in as `extra`.
|
|
19
19
|
*/
|
|
20
|
-
export const botMcpRun = (program, extra = {}) =>
|
|
20
|
+
export const botMcpRun = (program, extra = {}) =>
|
|
21
|
+
// An agent's run hears nothing: the recognizer is a test's stand-in, typed differently on each side.
|
|
22
|
+
(argv, { recognizer: _recognizer, ...environment }) => program(argv, { ...extra, ...environment });
|
|
21
23
|
/** `bot mcp`. The program hands in its own `run`: importing it here would close a loop through the program. */
|
|
22
24
|
export const maxBotMcp = (program) => ({
|
|
23
25
|
program: async () => botMcpRun(program),
|
|
24
|
-
|
|
26
|
+
keyOf: botCommandKey,
|
|
25
27
|
skill: SKILL,
|
|
26
28
|
});
|
|
27
29
|
/** What the shared `bot` commands need from max: its settings, its Bot API client and its test seams. */
|
|
@@ -32,8 +34,8 @@ export const maxBot = {
|
|
|
32
34
|
adminRights: BOT_ADMIN_RIGHTS,
|
|
33
35
|
manyWebhooks: true,
|
|
34
36
|
// `bot chats check` reads joins from here: MAX hands each update to one reader only.
|
|
35
|
-
keepUpdates: (
|
|
36
|
-
JoinLog.for(profile).add(events.flatMap((event) => (event.event === "joined" || event.event === "added" || event.event === "left" || event.event === "removed") &&
|
|
37
|
+
keepUpdates: (command, profile, events) => {
|
|
38
|
+
JoinLog.for(profile, environmentOf(command).env).add(events.flatMap((event) => (event.event === "joined" || event.event === "added" || event.event === "left" || event.event === "removed") &&
|
|
37
39
|
event.person
|
|
38
40
|
? [
|
|
39
41
|
{
|
|
@@ -54,8 +56,8 @@ export const maxBot = {
|
|
|
54
56
|
return `${config} permissions.${key} allow`;
|
|
55
57
|
},
|
|
56
58
|
chatKindOf: (hit) => KINDS[String(hit.providerMetadata?.chatType)] ?? "unknown",
|
|
57
|
-
joinsSince: (
|
|
58
|
-
const log = JoinLog.for(profile);
|
|
59
|
+
joinsSince: (command, profile, chatId, since) => {
|
|
60
|
+
const log = JoinLog.for(profile, environmentOf(command).env);
|
|
59
61
|
if (!log.kept())
|
|
60
62
|
return undefined;
|
|
61
63
|
return log
|
|
@@ -90,8 +92,14 @@ export const maxBot = {
|
|
|
90
92
|
...(context.settings.timeoutMs === undefined ? {} : { timeoutMs: context.settings.timeoutMs }),
|
|
91
93
|
});
|
|
92
94
|
},
|
|
93
|
-
tokenStore: (command, profile) =>
|
|
94
|
-
|
|
95
|
+
tokenStore: (command, profile) => {
|
|
96
|
+
const { botStore, env, keyring } = environmentOf(command);
|
|
97
|
+
return (botStore?.(profile) ?? new BotTokenStore({ profile, ...(env ? { env } : {}), ...(keyring ? { keyring } : {}) }));
|
|
98
|
+
},
|
|
99
|
+
registry: (command, profile) => {
|
|
100
|
+
const { botRegistry, env } = environmentOf(command);
|
|
101
|
+
return botRegistry?.(profile) ?? new ChatRegistry(profile, env);
|
|
102
|
+
},
|
|
95
103
|
readSecret: (command, prompt) => (environmentOf(command).ask ?? ((text) => readSecret(text, { echo: false })))(prompt, { secret: true }),
|
|
96
104
|
};
|
|
97
105
|
//# sourceMappingURL=bot-messenger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-messenger.js","sourceRoot":"","sources":["../../src/commands/bot-messenger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bot-messenger.js","sourceRoot":"","sources":["../../src/commands/bot-messenger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-sends.d.ts","sourceRoot":"","sources":["../../src/commands/bot-sends.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"bot-sends.d.ts","sourceRoot":"","sources":["../../src/commands/bot-sends.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAelE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAc,KAAK,UAAU,EAA4B,MAAM,mBAAmB,CAAA;AAEzF,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEjE,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AAE5C,eAAO,MAAM,SAAS,OAAQ,MAAM,sBAInC,CAAA;AA2BD,+FAA+F;AAC/F,eAAO,MAAM,QAAQ,YACV,OAAO,QACV,MAAM,SACN,UAAU,SACV,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,oDAaxE,CAAA;AAED,eAAO,MAAM,MAAM,SAAU,MAAM,KAAG,MAA4E,CAAA;AA8ClH,sGAAsG;AACtG,eAAO,MAAM,WAAW,YAAmB,OAAO,UAAU,iBAAiB,SAAS,SAAS,KAAG,OAAO,CAAC,OAAO,CAkBhH,CAAA"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { CliError } from "@wirecat/cli-base";
|
|
4
|
+
import { readOnlyRefusal } from "@wirecat/cli-core/cli";
|
|
4
5
|
import { guardedWrite, newOperationId, newSendId, RecipientList, SendJournal, sendGuard, } from "@wirecat/cli-core/sends";
|
|
5
6
|
import { MAX_APP } from "../app.js";
|
|
6
7
|
import { botOperations } from "../bot/client.js";
|
|
7
|
-
import { BOT_JOURNAL_KINDS, BOT_KEYS } from "../bot/permissions.js";
|
|
8
|
+
import { BOT_JOURNAL_KINDS, BOT_KEYS, UNJOURNALED_WRITES } from "../bot/permissions.js";
|
|
8
9
|
import { botsDirectory } from "../bot/registry.js";
|
|
9
10
|
import { endpointOf, uploadFile, uploadTypeOf } from "../bot/uploads.js";
|
|
10
11
|
import { asFirstWord } from "../profile.js";
|
|
@@ -17,17 +18,17 @@ export const operation = (id) => {
|
|
|
17
18
|
};
|
|
18
19
|
/** How the owner types this bot, so every refusal names the command that fixes it. */
|
|
19
20
|
const botWords = (profile) => `${asFirstWord(profile)}bot`;
|
|
20
|
-
const files = (
|
|
21
|
-
journal: join(botsDirectory(), "sends", `${profile}.jsonl`),
|
|
22
|
-
recipients: join(botsDirectory(), "recipients", `${profile}.json`),
|
|
21
|
+
const files = ({ settings, env }) => ({
|
|
22
|
+
journal: join(botsDirectory(env), "sends", `${settings.profile}.jsonl`),
|
|
23
|
+
recipients: join(botsDirectory(env), "recipients", `${settings.profile}.json`),
|
|
23
24
|
});
|
|
24
|
-
const recipientsOf = (context) => new RecipientList(files(context
|
|
25
|
+
const recipientsOf = (context) => new RecipientList(files(context).recipients, `max ${botWords(context.settings.profile)}`);
|
|
25
26
|
/** cli-core's guard with the bot's own recipient list and journal; no hourly limit unless `bot.*` sets one (`NEED-305`, `NEED-356`). */
|
|
26
27
|
const guardOf = (context) => sendGuard({
|
|
27
28
|
profile: botWords(context.settings.profile),
|
|
28
29
|
command: "max",
|
|
29
30
|
sendsPerHour: context.settings.sendsPerHour,
|
|
30
|
-
journal: new SendJournal(files(context
|
|
31
|
+
journal: new SendJournal(files(context).journal, {
|
|
31
32
|
service: MAX_APP.command,
|
|
32
33
|
version: MAX_APP.version,
|
|
33
34
|
}),
|
|
@@ -84,6 +85,9 @@ const chatOfCall = async (context, input) => {
|
|
|
84
85
|
};
|
|
85
86
|
/** Every bot write, from any command: readOnly and allow, then the recipient list and the journal. */
|
|
86
87
|
export const guardedCall = async (context, target, input) => {
|
|
88
|
+
const lock = context.settings.readOnlyLock;
|
|
89
|
+
if (target.effect !== "read" && lock)
|
|
90
|
+
throw readOnlyRefusal(lock, "send, react, change chats or change the account");
|
|
87
91
|
const client = context.authenticated();
|
|
88
92
|
assertAllowed(target, context.settings);
|
|
89
93
|
if (target.effect === "read")
|
|
@@ -92,8 +96,11 @@ export const guardedCall = async (context, target, input) => {
|
|
|
92
96
|
if (key && (await import("@wirecat/cli-core/sends")).levelFor(context.settings.permissions, key).level === "ask")
|
|
93
97
|
await context.askPermission(key, { chatId: null });
|
|
94
98
|
const kind = BOT_JOURNAL_KINDS[target.id];
|
|
95
|
-
if (!kind)
|
|
96
|
-
|
|
99
|
+
if (!kind) {
|
|
100
|
+
if (UNJOURNALED_WRITES.has(target.id))
|
|
101
|
+
return client.call(target, input);
|
|
102
|
+
throw new CliError("configuration_error", `no journal kind for the Bot API write ${target.id}`, { sent: false });
|
|
103
|
+
}
|
|
97
104
|
const chatId = await chatOfCall(context, input);
|
|
98
105
|
// The guard names every account change; the bot's own `allow` check has already run in assertAllowed.
|
|
99
106
|
const action = kind === "account" ? { action: "profile" } : {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-sends.js","sourceRoot":"","sources":["../../src/commands/bot-sends.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,SAAS,EACT,aAAa,EACb,WAAW,EAEX,SAAS,GACV,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"bot-sends.js","sourceRoot":"","sources":["../../src/commands/bot-sends.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-setup.d.ts","sourceRoot":"","sources":["../../src/commands/bot-setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAM3C,eAAO,MAAM,cAAc,QAAO,
|
|
1
|
+
{"version":3,"file":"bot-setup.d.ts","sourceRoot":"","sources":["../../src/commands/bot-setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAM3C,eAAO,MAAM,cAAc,QAAO,OAwBjC,CAAA"}
|
|
@@ -6,7 +6,8 @@ import { refuseProtected } from "../upload.js";
|
|
|
6
6
|
import { botContext } from "./bot-context.js";
|
|
7
7
|
import { guardedCall, uploaded } from "./bot-sends.js";
|
|
8
8
|
export const uploadsCommand = () => {
|
|
9
|
-
|
|
9
|
+
// It reads a file from this machine and hands it to MAX: agents get no file options (NEED-1411).
|
|
10
|
+
const command = annotate(new Command("uploads"), { mcp: false }).description("files uploaded to MAX, to attach to a message");
|
|
10
11
|
annotate(command.command("put <file>"), { effects: REMOTE_WRITE })
|
|
11
12
|
.description("upload a file from disk and print the attachment to put in a message's `attachments` — " +
|
|
12
13
|
"`messages send --file` does both steps at once")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-setup.js","sourceRoot":"","sources":["../../src/commands/bot-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"bot-setup.js","sourceRoot":"","sources":["../../src/commands/bot-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE;IAC1C,iGAAiG;IACjG,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,CAC1E,+CAA+C,CAChD,CAAA;IAED,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;SAC/D,WAAW,CACV,yFAAyF;QACvF,gDAAgD,CACnD;SACA,SAAS,CACR,IAAI,MAAM,CAAC,eAAe,EAAE,sDAAsD,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAC1G;SACA,MAAM,CAAC,kBAAkB,EAAE,qEAAqE,CAAC;SACjG,MAAM,CAAC,KAAK,WAA0B,IAAY;QACjD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,EAAiD,CAAA;QACzF,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;QAC9G,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../src/commands/bot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../src/commands/bot.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAqBxC,eAAO,MAAM,UAAU,YAAa,OAAO,GAAG,KAAG,OAgEhD,CAAA"}
|
package/dist/commands/bot.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
1
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
2
|
-
import { generatedApiCommand, itemOf, REMOTE_READ, renderAnswer, botCommand as sharedBotCommand, } from "@wirecat/cli-core/cli";
|
|
3
|
+
import { generatedApiCommand, itemOf, ownerOnlyOption, REMOTE_READ, renderAnswer, botCommand as sharedBotCommand, } from "@wirecat/cli-core/cli";
|
|
3
4
|
import { botOperations } from "../bot/client.js";
|
|
4
5
|
import { checkBody, checkParameter } from "../bot/input.js";
|
|
5
6
|
import { plainJson } from "../bot/transport.js";
|
|
@@ -9,6 +10,14 @@ import { addMembersCommands } from "./bot-members.js";
|
|
|
9
10
|
import { maxBot, maxBotMcp } from "./bot-messenger.js";
|
|
10
11
|
import { guardedCall } from "./bot-sends.js";
|
|
11
12
|
import { uploadsCommand } from "./bot-setup.js";
|
|
13
|
+
const MESSAGE_ID = /^mid\.[\w.-]+$/;
|
|
14
|
+
const messageId = (value) => {
|
|
15
|
+
const id = value.trim();
|
|
16
|
+
if (!MESSAGE_ID.test(id))
|
|
17
|
+
throw new CliError("validation_error", `a message id is mid.…, not "${value}"`);
|
|
18
|
+
return id;
|
|
19
|
+
};
|
|
20
|
+
const messageIds = (value, previous = []) => [...previous, messageId(value)];
|
|
12
21
|
/** Every command under `node`, itself included. */
|
|
13
22
|
const allOf = (node) => [node, ...node.commands.flatMap(allOf)];
|
|
14
23
|
export const botCommand = (program) => {
|
|
@@ -21,12 +30,34 @@ export const botCommand = (program) => {
|
|
|
21
30
|
startBotRecording(action);
|
|
22
31
|
})
|
|
23
32
|
.hook("postAction", async (_group, action) => botRecordingOf(action)?.succeed());
|
|
24
|
-
annotate(command.command("me"), { effects: REMOTE_READ })
|
|
33
|
+
annotate(command.command("me"), { effects: REMOTE_READ, offline: false })
|
|
25
34
|
.description("the bot this profile's token belongs to: name, id, description, commands")
|
|
26
35
|
.action(async function () {
|
|
27
36
|
const context = botContext(this);
|
|
28
37
|
renderAnswer(this, context, itemOf(plainJson(await context.authenticated().me())));
|
|
29
38
|
});
|
|
39
|
+
const messages = (name) => {
|
|
40
|
+
const found = command.commands
|
|
41
|
+
.find((child) => child.name() === "messages")
|
|
42
|
+
?.commands.find((child) => child.name() === name);
|
|
43
|
+
if (!found)
|
|
44
|
+
throw new Error(`the shared bot group has no messages ${name}`);
|
|
45
|
+
return found;
|
|
46
|
+
};
|
|
47
|
+
const replyTo = messages("send").options.find((option) => option.long === "--reply-to");
|
|
48
|
+
if (!replyTo)
|
|
49
|
+
throw new Error("the shared bot group has no messages send --reply-to");
|
|
50
|
+
replyTo.argParser(messageId);
|
|
51
|
+
for (const name of ["show", "edit", "pin", "unpin"]) {
|
|
52
|
+
const message = messages(name).registeredArguments.find((argument) => argument.name() === "message");
|
|
53
|
+
if (!message)
|
|
54
|
+
throw new Error(`the shared bot group has no messages ${name} <message>`);
|
|
55
|
+
message.argParser(messageId);
|
|
56
|
+
}
|
|
57
|
+
const deleted = messages("delete").registeredArguments.find((argument) => argument.name() === "messages");
|
|
58
|
+
if (!deleted)
|
|
59
|
+
throw new Error("the shared bot group has no messages delete <messages...>");
|
|
60
|
+
deleted.argParser(messageIds);
|
|
30
61
|
const chats = command.commands.find((child) => child.name() === "chats");
|
|
31
62
|
if (!chats)
|
|
32
63
|
throw new Error("the shared bot group has no chats");
|
|
@@ -53,7 +84,7 @@ export const botCommand = (program) => {
|
|
|
53
84
|
});
|
|
54
85
|
for (const child of api.commands)
|
|
55
86
|
if (["delete-message", "delete-comment"].includes(child.name()))
|
|
56
|
-
child.
|
|
87
|
+
child.addOption(ownerOnlyOption("--allow-dangerous", "skip confirmation for bot.messages.delete at level ask"));
|
|
57
88
|
command.addCommand(api);
|
|
58
89
|
return command;
|
|
59
90
|
};
|