@wirecat/cli-core 0.340.0 → 0.342.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/cli/author.d.ts +6 -0
- package/dist/cli/author.d.ts.map +1 -1
- package/dist/cli/author.js +15 -0
- package/dist/cli/author.js.map +1 -1
- package/dist/cli/context.d.ts +2 -1
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js +2 -1
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/effects.d.ts +2 -1
- package/dist/cli/effects.d.ts.map +1 -1
- package/dist/cli/effects.js +3 -2
- package/dist/cli/effects.js.map +1 -1
- package/dist/cli/index.d.ts +0 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +0 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/messenger/attachments-command.d.ts.map +1 -1
- package/dist/cli/messenger/attachments-command.js +10 -3
- package/dist/cli/messenger/attachments-command.js.map +1 -1
- package/dist/cli/messenger/catch-up.d.ts +8 -2
- package/dist/cli/messenger/catch-up.d.ts.map +1 -1
- package/dist/cli/messenger/catch-up.js +11 -3
- package/dist/cli/messenger/catch-up.js.map +1 -1
- package/dist/cli/messenger/context.d.ts +2 -0
- package/dist/cli/messenger/context.d.ts.map +1 -1
- package/dist/cli/messenger/context.js +5 -1
- package/dist/cli/messenger/context.js.map +1 -1
- package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
- package/dist/cli/messenger/conversations-command.js +25 -1
- package/dist/cli/messenger/conversations-command.js.map +1 -1
- package/dist/cli/messenger/inbox.d.ts.map +1 -1
- package/dist/cli/messenger/inbox.js +11 -6
- package/dist/cli/messenger/inbox.js.map +1 -1
- package/dist/cli/messenger/mcp-command.js +1 -1
- package/dist/cli/messenger/mcp-command.js.map +1 -1
- package/dist/cli/messenger/mentions-command.d.ts.map +1 -1
- package/dist/cli/messenger/mentions-command.js +6 -7
- package/dist/cli/messenger/mentions-command.js.map +1 -1
- package/dist/cli/messenger/messages-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-command.js +2 -2
- package/dist/cli/messenger/messages-command.js.map +1 -1
- package/dist/cli/messenger/messages-send-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-send-command.js +2 -2
- package/dist/cli/messenger/messages-send-command.js.map +1 -1
- package/dist/cli/messenger/private-people-command.d.ts.map +1 -1
- package/dist/cli/messenger/private-people-command.js +5 -4
- package/dist/cli/messenger/private-people-command.js.map +1 -1
- package/dist/cli/messenger/review.js +6 -6
- package/dist/cli/messenger/review.js.map +1 -1
- package/dist/cli/messenger/store-maintenance-command.d.ts +1 -1
- package/dist/cli/messenger/tasks-command.d.ts.map +1 -1
- package/dist/cli/messenger/tasks-command.js +12 -10
- package/dist/cli/messenger/tasks-command.js.map +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +3 -2
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/stdin-field.d.ts +11 -0
- package/dist/cli/stdin-field.d.ts.map +1 -0
- package/dist/cli/stdin-field.js +7 -0
- package/dist/cli/stdin-field.js.map +1 -0
- package/dist/domain/tag-consolidation.d.ts +78 -0
- package/dist/domain/tag-consolidation.d.ts.map +1 -0
- package/dist/domain/tag-consolidation.js +2 -0
- package/dist/domain/tag-consolidation.js.map +1 -0
- package/dist/errors/reasons.d.ts.map +1 -1
- package/dist/errors/reasons.js +7 -1
- package/dist/errors/reasons.js.map +1 -1
- package/dist/mcp/agent.d.ts +10 -1
- package/dist/mcp/agent.d.ts.map +1 -1
- package/dist/mcp/agent.js +67 -21
- package/dist/mcp/agent.js.map +1 -1
- package/dist/mcp/prompts.js +1 -1
- package/dist/mcp/prompts.js.map +1 -1
- package/dist/mcp/server.d.ts +5 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +278 -32
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +2 -0
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +2 -0
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/surface.d.ts +5 -2
- package/dist/mcp/surface.d.ts.map +1 -1
- package/dist/mcp/surface.js +7 -4
- package/dist/mcp/surface.js.map +1 -1
- package/dist/mcp/tool.d.ts +3 -6
- package/dist/mcp/tool.d.ts.map +1 -1
- package/dist/mcp/tool.js +3 -36
- package/dist/mcp/tool.js.map +1 -1
- package/dist/mcp/tools/attachments.d.ts.map +1 -1
- package/dist/mcp/tools/attachments.js +3 -138
- package/dist/mcp/tools/attachments.js.map +1 -1
- package/dist/mcp/tools.d.ts +4 -21
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +4 -97
- package/dist/mcp/tools.js.map +1 -1
- package/dist/sends/permissions.d.ts.map +1 -1
- package/dist/sends/permissions.js +2 -1
- package/dist/sends/permissions.js.map +1 -1
- package/dist/store/drivers/node-sqlite.d.ts +2 -3
- package/dist/store/drivers/node-sqlite.d.ts.map +1 -1
- package/dist/store/drivers/node-sqlite.js +2 -3
- package/dist/store/drivers/node-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.map +1 -1
- package/dist/store/open.d.ts.map +1 -1
- package/dist/store/open.js +2 -0
- package/dist/store/open.js.map +1 -1
- package/dist/store/sqlite/open.d.ts.map +1 -1
- package/dist/store/sqlite/open.js +2 -0
- package/dist/store/sqlite/open.js.map +1 -1
- package/dist/store/sqlite/tag-consolidation.d.ts +5 -0
- package/dist/store/sqlite/tag-consolidation.d.ts.map +1 -0
- package/dist/store/sqlite/tag-consolidation.js +178 -0
- package/dist/store/sqlite/tag-consolidation.js.map +1 -0
- package/dist/store/sqlite/tags.js +1 -1
- package/dist/store/sqlite/tags.js.map +1 -1
- package/dist/store/sqlite/vocabulary.d.ts +2 -1
- package/dist/store/sqlite/vocabulary.d.ts.map +1 -1
- package/dist/store/sqlite/vocabulary.js +2 -0
- package/dist/store/sqlite/vocabulary.js.map +1 -1
- package/dist/store/sqlite-warning.d.ts +8 -0
- package/dist/store/sqlite-warning.d.ts.map +1 -0
- package/dist/store/sqlite-warning.js +26 -0
- package/dist/store/sqlite-warning.js.map +1 -0
- package/package.json +3 -3
- package/parity.json +12 -0
- package/dist/mcp/search-sync.d.ts +0 -12
- package/dist/mcp/search-sync.d.ts.map +0 -1
- package/dist/mcp/search-sync.js +0 -18
- package/dist/mcp/search-sync.js.map +0 -1
- package/dist/mcp/thread-options.d.ts +0 -19
- package/dist/mcp/thread-options.d.ts.map +0 -1
- package/dist/mcp/thread-options.js +0 -20
- package/dist/mcp/thread-options.js.map +0 -1
- package/dist/mcp/tools/account.d.ts +0 -4
- package/dist/mcp/tools/account.d.ts.map +0 -1
- package/dist/mcp/tools/account.js +0 -31
- package/dist/mcp/tools/account.js.map +0 -1
- package/dist/mcp/tools/admin-statistics.d.ts +0 -4
- package/dist/mcp/tools/admin-statistics.d.ts.map +0 -1
- package/dist/mcp/tools/admin-statistics.js +0 -163
- package/dist/mcp/tools/admin-statistics.js.map +0 -1
- package/dist/mcp/tools/admin.d.ts +0 -5
- package/dist/mcp/tools/admin.d.ts.map +0 -1
- package/dist/mcp/tools/admin.js +0 -262
- package/dist/mcp/tools/admin.js.map +0 -1
- package/dist/mcp/tools/chats-read.d.ts +0 -4
- package/dist/mcp/tools/chats-read.d.ts.map +0 -1
- package/dist/mcp/tools/chats-read.js +0 -28
- package/dist/mcp/tools/chats-read.js.map +0 -1
- package/dist/mcp/tools/chats-state.d.ts +0 -5
- package/dist/mcp/tools/chats-state.d.ts.map +0 -1
- package/dist/mcp/tools/chats-state.js +0 -58
- package/dist/mcp/tools/chats-state.js.map +0 -1
- package/dist/mcp/tools/chats.d.ts +0 -4
- package/dist/mcp/tools/chats.d.ts.map +0 -1
- package/dist/mcp/tools/chats.js +0 -194
- package/dist/mcp/tools/chats.js.map +0 -1
- package/dist/mcp/tools/contacts-write.d.ts +0 -5
- package/dist/mcp/tools/contacts-write.d.ts.map +0 -1
- package/dist/mcp/tools/contacts-write.js +0 -53
- package/dist/mcp/tools/contacts-write.js.map +0 -1
- package/dist/mcp/tools/contacts.d.ts +0 -4
- package/dist/mcp/tools/contacts.d.ts.map +0 -1
- package/dist/mcp/tools/contacts.js +0 -196
- package/dist/mcp/tools/contacts.js.map +0 -1
- package/dist/mcp/tools/conversations.d.ts +0 -5
- package/dist/mcp/tools/conversations.d.ts.map +0 -1
- package/dist/mcp/tools/conversations.js +0 -265
- package/dist/mcp/tools/conversations.js.map +0 -1
- package/dist/mcp/tools/folders.d.ts +0 -5
- package/dist/mcp/tools/folders.d.ts.map +0 -1
- package/dist/mcp/tools/folders.js +0 -103
- package/dist/mcp/tools/folders.js.map +0 -1
- package/dist/mcp/tools/inbox.d.ts +0 -6
- package/dist/mcp/tools/inbox.d.ts.map +0 -1
- package/dist/mcp/tools/inbox.js +0 -65
- package/dist/mcp/tools/inbox.js.map +0 -1
- package/dist/mcp/tools/messages-actions.d.ts +0 -5
- package/dist/mcp/tools/messages-actions.d.ts.map +0 -1
- package/dist/mcp/tools/messages-actions.js +0 -129
- package/dist/mcp/tools/messages-actions.js.map +0 -1
- package/dist/mcp/tools/messages-delete.d.ts +0 -4
- package/dist/mcp/tools/messages-delete.d.ts.map +0 -1
- package/dist/mcp/tools/messages-delete.js +0 -39
- package/dist/mcp/tools/messages-delete.js.map +0 -1
- package/dist/mcp/tools/messages-send.d.ts +0 -8
- package/dist/mcp/tools/messages-send.d.ts.map +0 -1
- package/dist/mcp/tools/messages-send.js +0 -107
- package/dist/mcp/tools/messages-send.js.map +0 -1
- package/dist/mcp/tools/messages-transcribe.d.ts +0 -4
- package/dist/mcp/tools/messages-transcribe.d.ts.map +0 -1
- package/dist/mcp/tools/messages-transcribe.js +0 -32
- package/dist/mcp/tools/messages-transcribe.js.map +0 -1
- package/dist/mcp/tools/messages.d.ts +0 -4
- package/dist/mcp/tools/messages.d.ts.map +0 -1
- package/dist/mcp/tools/messages.js +0 -207
- package/dist/mcp/tools/messages.js.map +0 -1
- package/dist/mcp/tools/moderation.d.ts +0 -8
- package/dist/mcp/tools/moderation.d.ts.map +0 -1
- package/dist/mcp/tools/moderation.js +0 -36
- package/dist/mcp/tools/moderation.js.map +0 -1
- package/dist/mcp/tools/polls.d.ts +0 -6
- package/dist/mcp/tools/polls.d.ts.map +0 -1
- package/dist/mcp/tools/polls.js +0 -140
- package/dist/mcp/tools/polls.js.map +0 -1
- package/dist/mcp/tools/private-people.d.ts +0 -4
- package/dist/mcp/tools/private-people.d.ts.map +0 -1
- package/dist/mcp/tools/private-people.js +0 -121
- package/dist/mcp/tools/private-people.js.map +0 -1
- package/dist/mcp/tools/rankings.d.ts +0 -4
- package/dist/mcp/tools/rankings.d.ts.map +0 -1
- package/dist/mcp/tools/rankings.js +0 -112
- package/dist/mcp/tools/rankings.js.map +0 -1
- package/dist/mcp/tools/reactions.d.ts +0 -5
- package/dist/mcp/tools/reactions.d.ts.map +0 -1
- package/dist/mcp/tools/reactions.js +0 -33
- package/dist/mcp/tools/reactions.js.map +0 -1
- package/dist/mcp/tools/review.d.ts +0 -4
- package/dist/mcp/tools/review.d.ts.map +0 -1
- package/dist/mcp/tools/review.js +0 -68
- package/dist/mcp/tools/review.js.map +0 -1
- package/dist/mcp/tools/runs.d.ts +0 -4
- package/dist/mcp/tools/runs.d.ts.map +0 -1
- package/dist/mcp/tools/runs.js +0 -28
- package/dist/mcp/tools/runs.js.map +0 -1
- package/dist/mcp/tools/search-tools.d.ts +0 -5
- package/dist/mcp/tools/search-tools.d.ts.map +0 -1
- package/dist/mcp/tools/search-tools.js +0 -132
- package/dist/mcp/tools/search-tools.js.map +0 -1
- package/dist/mcp/tools/search.d.ts +0 -154
- package/dist/mcp/tools/search.d.ts.map +0 -1
- package/dist/mcp/tools/search.js +0 -163
- package/dist/mcp/tools/search.js.map +0 -1
- package/dist/mcp/tools/searches.d.ts +0 -4
- package/dist/mcp/tools/searches.d.ts.map +0 -1
- package/dist/mcp/tools/searches.js +0 -108
- package/dist/mcp/tools/searches.js.map +0 -1
- package/dist/mcp/tools/store.d.ts +0 -4
- package/dist/mcp/tools/store.d.ts.map +0 -1
- package/dist/mcp/tools/store.js +0 -163
- package/dist/mcp/tools/store.js.map +0 -1
- package/dist/mcp/tools/tags.d.ts +0 -4
- package/dist/mcp/tools/tags.d.ts.map +0 -1
- package/dist/mcp/tools/tags.js +0 -64
- package/dist/mcp/tools/tags.js.map +0 -1
- package/dist/mcp/tools/tasks.d.ts +0 -4
- package/dist/mcp/tools/tasks.d.ts.map +0 -1
- package/dist/mcp/tools/tasks.js +0 -369
- package/dist/mcp/tools/tasks.js.map +0 -1
- package/dist/mcp/tools/topics.d.ts +0 -5
- package/dist/mcp/tools/topics.d.ts.map +0 -1
- package/dist/mcp/tools/topics.js +0 -134
- package/dist/mcp/tools/topics.js.map +0 -1
package/dist/mcp/tools/admin.js
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
import { CliError } from "@wirecat/cli-base";
|
|
2
|
-
import * as v from "valibot";
|
|
3
|
-
import { itemOf, snakeKeys } from "../../cli/envelope.js";
|
|
4
|
-
import { queryArgument } from "../../cli/list-query.js";
|
|
5
|
-
import { inviteLinks, joinRequests } from "../../cli/messenger/chat-lists.js";
|
|
6
|
-
import { LINKS_QUERY, REQUESTS_QUERY } from "../../cli/messenger/chat-queries.js";
|
|
7
|
-
import { ADMIN_RIGHTS, GROUP_SETTINGS } from "../../domain/models.js";
|
|
8
|
-
import { onlineDeps, servicesFor } from "../../services/index.js";
|
|
9
|
-
import { chatOf, limit, page, READ, tool, WRITE } from "../tool.js";
|
|
10
|
-
const answer = (service, args, accept) => {
|
|
11
|
-
if ((args.person === undefined) === (args.all !== true))
|
|
12
|
-
throw new CliError("validation_error", "give one person, or all — not both, not neither");
|
|
13
|
-
if (args.link !== undefined && args.all !== true)
|
|
14
|
-
throw new CliError("validation_error", "link goes with all");
|
|
15
|
-
return args.person === undefined
|
|
16
|
-
? service.answerAllRequests(args.chat, accept, args.link === undefined ? {} : { link: args.link })
|
|
17
|
-
: service.answerRequest(args.chat, args.person, accept);
|
|
18
|
-
};
|
|
19
|
-
/** Groups the owner makes, joins and leaves: other people see each one, so each is behind its permission level. */
|
|
20
|
-
export const adminTools = (messenger) => {
|
|
21
|
-
const admin = (adapter, guard) => servicesFor(onlineDeps(messenger, adapter, guard)).admin;
|
|
22
|
-
const photoRemoval = messenger.groupPhotoRemoval === true
|
|
23
|
-
? { remove_photo: v.optional(v.pipe(v.literal(true), v.description("take the group's photo away"))) }
|
|
24
|
-
: {};
|
|
25
|
-
const definitions = {
|
|
26
|
-
chats_create: tool({
|
|
27
|
-
title: "Create a group",
|
|
28
|
-
description: "Create a group, or a channel, with these people in it; each of them is told they were added. " +
|
|
29
|
-
"Only when the owner asked for this group with these people.",
|
|
30
|
-
input: v.object({
|
|
31
|
-
title: v.pipe(v.string(), v.minLength(1)),
|
|
32
|
-
people: v.optional(v.array(v.pipe(v.string(), v.minLength(1)))),
|
|
33
|
-
channel: v.optional(v.pipe(v.boolean(), v.description("a channel people join by its link, not a group"))),
|
|
34
|
-
}),
|
|
35
|
-
annotations: WRITE,
|
|
36
|
-
permission: "groups",
|
|
37
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).create({
|
|
38
|
-
title: args.title,
|
|
39
|
-
people: args.people ?? [],
|
|
40
|
-
channel: args.channel === true,
|
|
41
|
-
}))),
|
|
42
|
-
}),
|
|
43
|
-
chats_join: tool({
|
|
44
|
-
title: "Join a group by its link",
|
|
45
|
-
description: "Join a group or channel by an invite or public link; the others in it see it. Where its admins approve " +
|
|
46
|
-
"who joins, the answer is { requested: true }: the request is sent. Only when the owner asked.",
|
|
47
|
-
input: v.object({ link: v.pipe(v.string(), v.minLength(1)) }),
|
|
48
|
-
annotations: WRITE,
|
|
49
|
-
permission: "groups",
|
|
50
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).join(args.link))),
|
|
51
|
-
}),
|
|
52
|
-
chats_leave: tool({
|
|
53
|
-
title: "Leave a group",
|
|
54
|
-
description: "Leave a group or channel; the others in it see it. Only when the owner asked to leave this chat.",
|
|
55
|
-
input: v.object({ chat: chatOf(messenger) }),
|
|
56
|
-
annotations: WRITE,
|
|
57
|
-
permission: "groups",
|
|
58
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).leave(args.chat))),
|
|
59
|
-
}),
|
|
60
|
-
chats_update: tool({
|
|
61
|
-
title: "Change a group",
|
|
62
|
-
description: "Rename a group or channel, change its description, or turn its settings on or off; its members see the " +
|
|
63
|
-
"change. Only when the owner asked for this change.",
|
|
64
|
-
input: v.object({
|
|
65
|
-
chat: chatOf(messenger),
|
|
66
|
-
title: v.optional(v.pipe(v.string(), v.minLength(1))),
|
|
67
|
-
description: v.optional(v.string()),
|
|
68
|
-
settings: v.optional(v.pipe(v.partial(v.object(Object.fromEntries((messenger.groupSettings ?? GROUP_SETTINGS).map((key) => [
|
|
69
|
-
key,
|
|
70
|
-
key === "disappearingSeconds"
|
|
71
|
-
? v.pipe(v.number(), v.integer(), v.minValue(0), v.description("seconds; 0 keeps messages"))
|
|
72
|
-
: v.boolean(),
|
|
73
|
-
])))), v.description("true turns a setting on, false off; one left out stays as it is"))),
|
|
74
|
-
...photoRemoval,
|
|
75
|
-
}),
|
|
76
|
-
annotations: WRITE,
|
|
77
|
-
permission: "groups",
|
|
78
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).update(args.chat, {
|
|
79
|
-
...(args.title === undefined ? {} : { title: args.title }),
|
|
80
|
-
...(args.description === undefined ? {} : { description: args.description }),
|
|
81
|
-
...(args.settings === undefined ? {} : { settings: args.settings }),
|
|
82
|
-
...(args.remove_photo === true ? { removePhoto: true } : {}),
|
|
83
|
-
}))),
|
|
84
|
-
}),
|
|
85
|
-
chats_link_show: tool({
|
|
86
|
-
title: "A group's invite link",
|
|
87
|
-
description: "The invite link of a group or channel, when the owner may see it. Reading changes nothing.",
|
|
88
|
-
input: v.object({ chat: chatOf(messenger) }),
|
|
89
|
-
annotations: READ,
|
|
90
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).link(args.chat))),
|
|
91
|
-
}),
|
|
92
|
-
chats_link_reset: tool({
|
|
93
|
-
title: "Replace a group's invite link",
|
|
94
|
-
description: "Make a new invite link for a group or channel; the old one stops working for everyone who has it. " +
|
|
95
|
-
"Only when the owner asked.",
|
|
96
|
-
input: v.object({ chat: chatOf(messenger) }),
|
|
97
|
-
annotations: WRITE,
|
|
98
|
-
permission: "groups",
|
|
99
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).resetLink(args.chat))),
|
|
100
|
-
}),
|
|
101
|
-
chats_link_create: tool({
|
|
102
|
-
title: "Make another invite link",
|
|
103
|
-
description: "Make an additional invite link for a group or channel: { chatId, link, approval, expiresAt, maxUses }. " +
|
|
104
|
-
"Nobody is told until the link is shared. Only when the owner asked.",
|
|
105
|
-
input: v.object({
|
|
106
|
-
chat: chatOf(messenger),
|
|
107
|
-
approval: v.optional(v.pipe(v.boolean(), v.description("who joins by it asks first, and an admin lets them in; not with max_uses"))),
|
|
108
|
-
expire_time: v.optional(v.pipe(v.string(), v.description("it stops working then: 2026-09-25T09:00 (local time), or 30m, 2h, 7d"))),
|
|
109
|
-
max_uses: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(99_999))),
|
|
110
|
-
}),
|
|
111
|
-
annotations: WRITE,
|
|
112
|
-
permission: "groups",
|
|
113
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).createLink(args.chat, {
|
|
114
|
-
approval: args.approval === true,
|
|
115
|
-
...(args.expire_time === undefined ? {} : { expires: args.expire_time }),
|
|
116
|
-
...(args.max_uses === undefined ? {} : { maxUses: args.max_uses }),
|
|
117
|
-
}))),
|
|
118
|
-
}),
|
|
119
|
-
chats_link_list: tool({
|
|
120
|
-
title: "A group's invite links",
|
|
121
|
-
description: "The owner's own invite links of a group, newest first: { link, approval, expires_at, max_uses, primary, " +
|
|
122
|
-
"revoked, pending_count, joined_count }. query revoked:true lists the stopped ones. Reading changes nothing.",
|
|
123
|
-
input: v.object({ chat: chatOf(messenger), query: queryArgument(LINKS_QUERY), limit, page }),
|
|
124
|
-
annotations: READ,
|
|
125
|
-
output: { entity: "invite_link", list: true },
|
|
126
|
-
online: (adapter, args, defaults) => inviteLinks(servicesFor(onlineDeps(messenger, adapter, defaults.guard)), args.chat, args.query, {
|
|
127
|
-
limit: args.limit ?? defaults.limit,
|
|
128
|
-
page: args.page ?? 1,
|
|
129
|
-
}),
|
|
130
|
-
}),
|
|
131
|
-
chats_link_revoke: tool({
|
|
132
|
-
title: "Revoke an invite link",
|
|
133
|
-
description: "Stop one invite link; for the group's own link the answer is the new one the messenger made. " +
|
|
134
|
-
"Only the link the owner named.",
|
|
135
|
-
input: v.object({ chat: chatOf(messenger), link: v.pipe(v.string(), v.minLength(1)) }),
|
|
136
|
-
annotations: WRITE,
|
|
137
|
-
permission: "groups",
|
|
138
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).revokeLink(args.chat, args.link))),
|
|
139
|
-
}),
|
|
140
|
-
chats_link_update: tool({
|
|
141
|
-
title: "Change an invite link",
|
|
142
|
-
description: "Change one of the owner's invite links, the group's own one too: { chatId, link, approval, expiresAt, " +
|
|
143
|
-
"maxUses }. Only the fields given change. Only when the owner asked.",
|
|
144
|
-
input: v.object({
|
|
145
|
-
chat: chatOf(messenger),
|
|
146
|
-
link: v.pipe(v.string(), v.minLength(1)),
|
|
147
|
-
approval: v.optional(v.pipe(v.boolean(), v.description("true: who joins by it asks first, not with max_uses; false: anyone with it joins at once"))),
|
|
148
|
-
expire_time: v.optional(v.pipe(v.string(), v.description("it stops working then: 2026-09-25T09:00 (local time), or 30m, 2h, 7d; never takes the expiry away"))),
|
|
149
|
-
max_uses: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(99_999))),
|
|
150
|
-
}),
|
|
151
|
-
annotations: WRITE,
|
|
152
|
-
permission: "groups",
|
|
153
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).updateLink(args.chat, args.link, {
|
|
154
|
-
...(args.approval === undefined ? {} : { approval: args.approval }),
|
|
155
|
-
...(args.expire_time === undefined ? {} : { expires: args.expire_time }),
|
|
156
|
-
...(args.max_uses === undefined ? {} : { maxUses: args.max_uses }),
|
|
157
|
-
}))),
|
|
158
|
-
}),
|
|
159
|
-
chats_requests_list: tool({
|
|
160
|
-
title: "Requests to join a group",
|
|
161
|
-
description: "Who asked to join a group or channel that needs an admin's approval, newest first: { person_id, name, " +
|
|
162
|
-
'username, requested_at, about? }. query narrows by name:ana or username:ana, or by link:"<invite link>" ' +
|
|
163
|
-
"— not both. Only admins see them. Reading tells nobody.",
|
|
164
|
-
input: v.object({ chat: chatOf(messenger), query: queryArgument(REQUESTS_QUERY), limit, page }),
|
|
165
|
-
annotations: READ,
|
|
166
|
-
output: { entity: "join_request", list: true },
|
|
167
|
-
online: (adapter, args, defaults) => joinRequests(servicesFor(onlineDeps(messenger, adapter, defaults.guard)), args.chat, args.query, {
|
|
168
|
-
limit: args.limit ?? defaults.limit,
|
|
169
|
-
page: args.page ?? 1,
|
|
170
|
-
}),
|
|
171
|
-
}),
|
|
172
|
-
chats_requests_accept: tool({
|
|
173
|
-
title: "Accept a request to join",
|
|
174
|
-
description: "Let one person who asked to join into the group. Only the person and group the owner named.",
|
|
175
|
-
input: v.object({
|
|
176
|
-
chat: chatOf(messenger),
|
|
177
|
-
person: v.optional(v.pipe(v.string(), v.minLength(1))),
|
|
178
|
-
all: v.optional(v.pipe(v.boolean(), v.description("every pending request instead of one person"))),
|
|
179
|
-
link: v.optional(v.pipe(v.string(), v.minLength(1), v.description("with all: only requests by this link"))),
|
|
180
|
-
}),
|
|
181
|
-
annotations: WRITE,
|
|
182
|
-
permission: "groups",
|
|
183
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await answer(admin(adapter, guard), args, true))),
|
|
184
|
-
}),
|
|
185
|
-
chats_requests_decline: tool({
|
|
186
|
-
title: "Decline a request to join",
|
|
187
|
-
description: "Turn away one person who asked to join the group. Only the person and group the owner named.",
|
|
188
|
-
input: v.object({
|
|
189
|
-
chat: chatOf(messenger),
|
|
190
|
-
person: v.optional(v.pipe(v.string(), v.minLength(1))),
|
|
191
|
-
all: v.optional(v.pipe(v.boolean(), v.description("every pending request instead of one person"))),
|
|
192
|
-
link: v.optional(v.pipe(v.string(), v.minLength(1), v.description("with all: only requests by this link"))),
|
|
193
|
-
}),
|
|
194
|
-
annotations: WRITE,
|
|
195
|
-
permission: "groups",
|
|
196
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await answer(admin(adapter, guard), args, false))),
|
|
197
|
-
}),
|
|
198
|
-
chats_members_add: tool({
|
|
199
|
-
title: "Add people to a group",
|
|
200
|
-
description: "Add people to a group; each is told. Only the people the owner named, to the group the owner named.",
|
|
201
|
-
input: v.object({
|
|
202
|
-
chat: chatOf(messenger),
|
|
203
|
-
people: v.pipe(v.array(v.pipe(v.string(), v.minLength(1))), v.minLength(1)),
|
|
204
|
-
history: v.optional(v.pipe(v.boolean(), v.description("they also see the messages from before; refused where the messenger cannot"))),
|
|
205
|
-
}),
|
|
206
|
-
annotations: WRITE,
|
|
207
|
-
permission: "groups",
|
|
208
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).addMembers(args.chat, args.people, args.history === true ? { history: true } : {}))),
|
|
209
|
-
}),
|
|
210
|
-
chats_members_remove: tool({
|
|
211
|
-
title: "Remove people from a group",
|
|
212
|
-
description: "Remove people from a group; their messages stay. Only the people the owner named.",
|
|
213
|
-
input: v.object({
|
|
214
|
-
chat: chatOf(messenger),
|
|
215
|
-
people: v.pipe(v.array(v.pipe(v.string(), v.minLength(1))), v.minLength(1)),
|
|
216
|
-
}),
|
|
217
|
-
annotations: WRITE,
|
|
218
|
-
permission: "groups",
|
|
219
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).removeMembers(args.chat, args.people))),
|
|
220
|
-
}),
|
|
221
|
-
chats_admins_add: messenger.pickAdminRights === false
|
|
222
|
-
? tool({
|
|
223
|
-
title: "Make someone an admin",
|
|
224
|
-
description: "Make a member of a group an admin; this messenger gives every admin every right. Only when the owner " +
|
|
225
|
-
"asked.",
|
|
226
|
-
input: v.object({ chat: chatOf(messenger), person: v.pipe(v.string(), v.minLength(1)) }),
|
|
227
|
-
annotations: WRITE,
|
|
228
|
-
permission: "groups",
|
|
229
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).addAdmin(args.chat, args.person, [
|
|
230
|
-
...(messenger.adminRights ?? ADMIN_RIGHTS),
|
|
231
|
-
]))),
|
|
232
|
-
})
|
|
233
|
-
: tool({
|
|
234
|
-
title: "Make someone an admin",
|
|
235
|
-
description: "Make a member of a group an admin with these rights. Only when the owner asked, with these rights.",
|
|
236
|
-
input: v.object({
|
|
237
|
-
chat: chatOf(messenger),
|
|
238
|
-
person: v.pipe(v.string(), v.minLength(1)),
|
|
239
|
-
rights: v.pipe(v.array(v.picklist(messenger.adminRights ?? ADMIN_RIGHTS)), v.minLength(1)),
|
|
240
|
-
}),
|
|
241
|
-
annotations: WRITE,
|
|
242
|
-
permission: "groups",
|
|
243
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).addAdmin(args.chat, args.person, args.rights))),
|
|
244
|
-
}),
|
|
245
|
-
chats_admins_remove: tool({
|
|
246
|
-
title: "Take admin rights back",
|
|
247
|
-
description: "Take a group admin's rights back; they stay a member. Only when the owner asked.",
|
|
248
|
-
input: v.object({ chat: chatOf(messenger), person: v.pipe(v.string(), v.minLength(1)) }),
|
|
249
|
-
annotations: WRITE,
|
|
250
|
-
permission: "groups",
|
|
251
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await admin(adapter, guard).removeAdmin(args.chat, args.person))),
|
|
252
|
-
}),
|
|
253
|
-
};
|
|
254
|
-
if (messenger.inviteLinkList === false)
|
|
255
|
-
delete definitions.chats_link_list;
|
|
256
|
-
if (messenger.inviteLinkRevoke === false)
|
|
257
|
-
delete definitions.chats_link_revoke;
|
|
258
|
-
if (messenger.inviteLinkUpdate !== true)
|
|
259
|
-
delete definitions.chats_link_update;
|
|
260
|
-
return definitions;
|
|
261
|
-
};
|
|
262
|
-
//# sourceMappingURL=admin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/mcp/tools/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAEjF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGrE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAgB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAIjF,MAAM,MAAM,GAAG,CAAC,OAAgD,EAAE,IAAe,EAAE,MAAe,EAAE,EAAE;IACpG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;QACrD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,iDAAiD,CAAC,CAAA;IAC3F,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAA;IAC9G,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;QAC9B,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAClG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC3D,CAAC,CAAA;AAED,mHAAmH;AACnH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAoB,EAA2B,EAAE;IAC1E,MAAM,KAAK,GAAG,CAAC,OAAyB,EAAE,KAAgB,EAAE,EAAE,CAC5D,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;IAC1D,MAAM,YAAY,GAChB,SAAS,CAAC,iBAAiB,KAAK,IAAI;QAClC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE;QACrG,CAAC,CAAC,EAAE,CAAA;IACR,MAAM,WAAW,GAA4B;QAC3C,YAAY,EAAE,IAAI,CAAC;YACjB,KAAK,EAAE,gBAAgB;YACvB,WAAW,EACT,+FAA+F;gBAC/F,6DAA6D;YAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACzC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC,CAAC;aAC1G,CAAC;YACF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CACJ,SAAS,CACP,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC;gBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI;aAC/B,CAAC,CACH,CACF;SACJ,CAAC;QACF,UAAU,EAAE,IAAI,CAAC;YACf,KAAK,EAAE,0BAA0B;YACjC,WAAW,EACT,yGAAyG;gBACzG,+FAA+F;YACjG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3G,CAAC;QACF,WAAW,EAAE,IAAI,CAAC;YAChB,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,kGAAkG;YAC/G,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC5G,CAAC;QACF,YAAY,EAAE,IAAI,CAAC;YACjB,KAAK,EAAE,gBAAgB;YACvB,WAAW,EACT,yGAAyG;gBACzG,oDAAoD;YACtD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;gBACvB,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAClB,CAAC,CAAC,IAAI,CACJ,CAAC,CAAC,OAAO,CACP,CAAC,CAAC,MAAM,CACN,MAAM,CAAC,WAAW,CAChB,CAAC,SAAS,CAAC,aAAa,IAAI,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;oBACvD,GAAG;oBACH,GAAG,KAAK,qBAAqB;wBAC3B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;wBAC5F,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;iBAChB,CAAC,CACH,CACF,CACF,EACD,CAAC,CAAC,WAAW,CAAC,iEAAiE,CAAC,CACjF,CACF;gBACD,GAAG,YAAY;aAChB,CAAC;YACF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CACJ,SAAS,CACP,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC5C,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1D,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5E,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnE,GAAG,CAAE,IAAgC,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1F,CAAC,CACH,CACF;SACJ,CAAC;QACF,eAAe,EAAE,IAAI,CAAC;YACpB,KAAK,EAAE,uBAAuB;YAC9B,WAAW,EAAE,4FAA4F;YACzG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3G,CAAC;QACF,gBAAgB,EAAE,IAAI,CAAC;YACrB,KAAK,EAAE,+BAA+B;YACtC,WAAW,EACT,oGAAoG;gBACpG,4BAA4B;YAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAChH,CAAC;QACF,iBAAiB,EAAE,IAAI,CAAC;YACtB,KAAK,EAAE,0BAA0B;YACjC,WAAW,EACT,yGAAyG;gBACzG,qEAAqE;YACvE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;gBACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAClB,CAAC,CAAC,IAAI,CACJ,CAAC,CAAC,OAAO,EAAE,EACX,CAAC,CAAC,WAAW,CAAC,0EAA0E,CAAC,CAC1F,CACF;gBACD,WAAW,EAAE,CAAC,CAAC,QAAQ,CACrB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,sEAAsE,CAAC,CAAC,CAC1G;gBACD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;aACzF,CAAC;YACF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CACJ,SAAS,CACP,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE;gBAChD,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI;gBAChC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;aACnE,CAAC,CACH,CACF;SACJ,CAAC;QACF,eAAe,EAAE,IAAI,CAAC;YACpB,KAAK,EAAE,wBAAwB;YAC/B,WAAW,EACT,0GAA0G;gBAC1G,6GAA6G;YAC/G,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC5F,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;YAC7C,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAClC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;gBAC9F,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;gBACnC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;aACrB,CAAC;SACL,CAAC;QACF,iBAAiB,EAAE,IAAI,CAAC;YACtB,KAAK,EAAE,uBAAuB;YAC9B,WAAW,EACT,+FAA+F;gBAC/F,gCAAgC;YAClC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAClF,CAAC;QACF,iBAAiB,EAAE,IAAI,CAAC;YACtB,KAAK,EAAE,uBAAuB;YAC9B,WAAW,EACT,wGAAwG;gBACxG,qEAAqE;YACvE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;gBACvB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACxC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAClB,CAAC,CAAC,IAAI,CACJ,CAAC,CAAC,OAAO,EAAE,EACX,CAAC,CAAC,WAAW,CAAC,0FAA0F,CAAC,CAC1G,CACF;gBACD,WAAW,EAAE,CAAC,CAAC,QAAQ,CACrB,CAAC,CAAC,IAAI,CACJ,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,WAAW,CACX,mGAAmG,CACpG,CACF,CACF;gBACD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;aACzF,CAAC;YACF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CACJ,SAAS,CACP,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBAC3D,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnE,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;aACnE,CAAC,CACH,CACF;SACJ,CAAC;QACF,mBAAmB,EAAE,IAAI,CAAC;YACxB,KAAK,EAAE,0BAA0B;YACjC,WAAW,EACT,wGAAwG;gBACxG,0GAA0G;gBAC1G,yDAAyD;YAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC/F,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;YAC9C,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAClC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;gBAC/F,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;gBACnC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;aACrB,CAAC;SACL,CAAC;QACF,qBAAqB,EAAE,IAAI,CAAC;YAC1B,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,6FAA6F;YAC1G,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;gBACvB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAAC,CAAC;gBAClG,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC,CAAC;aAC5G,CAAC;YACF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;SAC/G,CAAC;QACF,sBAAsB,EAAE,IAAI,CAAC;YAC3B,KAAK,EAAE,2BAA2B;YAClC,WAAW,EAAE,8FAA8F;YAC3G,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;gBACvB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAAC,CAAC;gBAClG,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC,CAAC;aAC5G,CAAC;YACF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SAChH,CAAC;QACF,iBAAiB,EAAE,IAAI,CAAC;YACtB,KAAK,EAAE,uBAAuB;YAC9B,WAAW,EACT,qGAAqG;YACvG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;gBACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC3E,OAAO,EAAE,CAAC,CAAC,QAAQ,CACjB,CAAC,CAAC,IAAI,CACJ,CAAC,CAAC,OAAO,EAAE,EACX,CAAC,CAAC,WAAW,CAAC,4EAA4E,CAAC,CAC5F,CACF;aACF,CAAC;YACF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CACJ,SAAS,CACP,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,UAAU,CACpC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAC/C,CACF,CACF;SACJ,CAAC;QACF,oBAAoB,EAAE,IAAI,CAAC;YACzB,KAAK,EAAE,4BAA4B;YACnC,WAAW,EAAE,mFAAmF;YAChG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;gBACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC5E,CAAC;YACF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SACvF,CAAC;QACF,gBAAgB,EACd,SAAS,CAAC,eAAe,KAAK,KAAK;YACjC,CAAC,CAAC,IAAI,CAAC;gBACH,KAAK,EAAE,uBAAuB;gBAC9B,WAAW,EACT,uGAAuG;oBACvG,QAAQ;gBACV,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxF,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CACJ,SAAS,CACP,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;oBAC3D,GAAG,CAAC,SAAS,CAAC,WAAW,IAAI,YAAY,CAAC;iBAC3C,CAAC,CACH,CACF;aACJ,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC;gBACH,KAAK,EAAE,uBAAuB;gBAC9B,WAAW,EACT,oGAAoG;gBACtG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;oBACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;oBACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC1C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iBAC3F,CAAC;gBACF,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;aAC/F,CAAC;QACR,mBAAmB,EAAE,IAAI,CAAC;YACxB,KAAK,EAAE,wBAAwB;YAC/B,WAAW,EAAE,kFAAkF;YAC/F,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SACrF,CAAC;KACH,CAAA;IACD,IAAI,SAAS,CAAC,cAAc,KAAK,KAAK;QAAE,OAAO,WAAW,CAAC,eAAe,CAAA;IAC1E,IAAI,SAAS,CAAC,gBAAgB,KAAK,KAAK;QAAE,OAAO,WAAW,CAAC,iBAAiB,CAAA;IAC9E,IAAI,SAAS,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,WAAW,CAAC,iBAAiB,CAAA;IAC7E,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chats-read.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/chats-read.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE/D,OAAO,EAAE,KAAK,OAAO,EAAgC,MAAM,YAAY,CAAA;AAIvE,eAAO,MAAM,cAAc,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA2B1E,CAAA"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import * as v from "valibot";
|
|
2
|
-
import { itemOf, snakeKeys } from "../../cli/envelope.js";
|
|
3
|
-
import { onlineDeps, servicesFor } from "../../services/index.js";
|
|
4
|
-
import { chatOf, message, tool, WRITE } from "../tool.js";
|
|
5
|
-
const TOPIC = v.optional(v.pipe(v.string(), v.minLength(1), v.description("only this forum topic")));
|
|
6
|
-
export const chatsReadTools = (messenger) => ({
|
|
7
|
-
chats_mark_read: tool({
|
|
8
|
-
title: "Mark a chat read",
|
|
9
|
-
description: `Mark a chat read up to a message, or up to its newest message${messenger.topics === false ? "" : "; with topic, only that forum topic"}. ` +
|
|
10
|
-
"The other side sees that it was read. " +
|
|
11
|
-
"Only when the owner asked for it.",
|
|
12
|
-
input: v.object({
|
|
13
|
-
chat: chatOf(messenger),
|
|
14
|
-
until_id: v.optional(message),
|
|
15
|
-
// Typed as present so the call reads it; offered only where the messenger has forum topics.
|
|
16
|
-
...(messenger.topics === false ? {} : { topic: TOPIC }),
|
|
17
|
-
}),
|
|
18
|
-
annotations: WRITE,
|
|
19
|
-
permission: "read",
|
|
20
|
-
command: "chats mark-read",
|
|
21
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await servicesFor(onlineDeps(messenger, adapter, guard)).chats.markRead({
|
|
22
|
-
chat: args.chat,
|
|
23
|
-
...(args.until_id === undefined ? {} : { until: args.until_id }),
|
|
24
|
-
...(args.topic === undefined ? {} : { threadId: args.topic }),
|
|
25
|
-
}))),
|
|
26
|
-
}),
|
|
27
|
-
});
|
|
28
|
-
//# sourceMappingURL=chats-read.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chats-read.js","sourceRoot":"","sources":["../../../src/mcp/tools/chats-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAgB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvE,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAA;AAEpG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAoB,EAA2B,EAAE,CAAC,CAAC;IAChF,eAAe,EAAE,IAAI,CAAC;QACpB,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,gEAAgE,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,IAAI;YAC3I,wCAAwC;YACxC,mCAAmC;QACrC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;YACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC7B,4FAA4F;YAC5F,GAAI,CAAC,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAA6B;SACrF,CAAC;QACF,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CACJ,SAAS,CACP,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;YACtE,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SAC9D,CAAC,CACH,CACF;KACJ,CAAC;CACH,CAAC,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { Messenger } from "../../cli/messenger/context.js";
|
|
2
|
-
import { type AnyTool } from "../tool.js";
|
|
3
|
-
/** The owner's own chat list — mute, archive, pin, unread — each behind the switch that mounts its command. */
|
|
4
|
-
export declare const chatStateTools: (messenger: Messenger) => Record<string, AnyTool>;
|
|
5
|
-
//# sourceMappingURL=chats-state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chats-state.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/chats-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAM/D,OAAO,EAAE,KAAK,OAAO,EAAuB,MAAM,YAAY,CAAA;AAI9D,+GAA+G;AAC/G,eAAO,MAAM,cAAc,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAiF3E,CAAA"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import * as v from "valibot";
|
|
2
|
-
import { itemOf, snakeKeys } from "../../cli/envelope.js";
|
|
3
|
-
import { sendTime } from "../../domain/send-time.js";
|
|
4
|
-
import { onlineDeps, servicesFor } from "../../services/index.js";
|
|
5
|
-
import { chatOf, tool, WRITE } from "../tool.js";
|
|
6
|
-
const OWN = "Only the owner sees it; nobody in the chat is told. Only when the owner asked for it.";
|
|
7
|
-
/** The owner's own chat list — mute, archive, pin, unread — each behind the switch that mounts its command. */
|
|
8
|
-
export const chatStateTools = (messenger) => {
|
|
9
|
-
const account = (adapter, guard) => servicesFor(onlineDeps(messenger, adapter, guard)).account;
|
|
10
|
-
const chat = chatOf(messenger);
|
|
11
|
-
const onChat = (title, description, change) => tool({
|
|
12
|
-
title,
|
|
13
|
-
description: `${description} ${OWN}`,
|
|
14
|
-
input: v.object({ chat }),
|
|
15
|
-
annotations: WRITE,
|
|
16
|
-
permission: "profile",
|
|
17
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await change(account(adapter, guard), args.chat))),
|
|
18
|
-
});
|
|
19
|
-
return {
|
|
20
|
-
...(messenger.chatMute === true
|
|
21
|
-
? {
|
|
22
|
-
chats_mute: tool({
|
|
23
|
-
title: "Mute a chat",
|
|
24
|
-
description: `Stop notifications from a chat, for good or until a time. ${OWN}`,
|
|
25
|
-
input: v.object({
|
|
26
|
-
chat,
|
|
27
|
-
until: v.optional(v.pipe(v.string(), v.minLength(1), v.description("only until then: 2026-09-25T09:00 (local time), or 30m, 2h, 7d from now"))),
|
|
28
|
-
}),
|
|
29
|
-
annotations: WRITE,
|
|
30
|
-
permission: "profile",
|
|
31
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await account(adapter, guard).mute(args.chat, args.until === undefined ? "forever" : sendTime(args.until, Date.now(), "until")))),
|
|
32
|
-
}),
|
|
33
|
-
chats_unmute: onChat("Unmute a chat", "Hear a muted chat again.", (one, id) => one.mute(id, null)),
|
|
34
|
-
}
|
|
35
|
-
: {}),
|
|
36
|
-
...(messenger.chatArchive === true
|
|
37
|
-
? {
|
|
38
|
-
chats_archive: onChat("Archive a chat", "Move a chat into the archive.", (one, id) => one.archive(id, true)),
|
|
39
|
-
chats_unarchive: onChat("Unarchive a chat", "Bring an archived chat back to the chat list.", (one, id) => one.archive(id, false)),
|
|
40
|
-
}
|
|
41
|
-
: {}),
|
|
42
|
-
...(messenger.chatPin === true
|
|
43
|
-
? {
|
|
44
|
-
chats_pin: onChat("Pin a chat", "Keep a chat at the top of the owner's chat list; messages pin pins a message for everyone.", (one, id) => one.pinChat(id, true)),
|
|
45
|
-
chats_unpin: onChat("Unpin a chat", "Let a pinned chat move down the chat list again.", (one, id) => one.pinChat(id, false)),
|
|
46
|
-
}
|
|
47
|
-
: {}),
|
|
48
|
-
...(messenger.chatMarkUnread === true
|
|
49
|
-
? {
|
|
50
|
-
chats_mark_unread: {
|
|
51
|
-
...onChat("Mark a chat unread", "Mark a chat unread on the owner's own devices; chats mark-read undoes it, and that one the other side sees.", (one, id) => one.markUnread(id)),
|
|
52
|
-
command: "chats mark-unread",
|
|
53
|
-
},
|
|
54
|
-
}
|
|
55
|
-
: {}),
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
//# sourceMappingURL=chats-state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chats-state.js","sourceRoot":"","sources":["../../../src/mcp/tools/chats-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/chats.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAO/D,OAAO,EAAE,KAAK,OAAO,EAA2C,MAAM,YAAY,CAAA;AAOlF,eAAO,MAAM,UAAU,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAIvE,CAAA"}
|
package/dist/mcp/tools/chats.js
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import * as v from "valibot";
|
|
2
|
-
import { registriesCover } from "../../botcheck/registries.js";
|
|
3
|
-
import { itemOf, listOf, snakeKeys } from "../../cli/envelope.js";
|
|
4
|
-
import { queryArgument } from "../../cli/list-query.js";
|
|
5
|
-
import { chatShown, documentLinkAnswer, wholeList } from "../../cli/messenger/chat-answers.js";
|
|
6
|
-
import { chatEvents, chatsList, membersAudit, membersHistory, membersList } from "../../cli/messenger/chat-lists.js";
|
|
7
|
-
import { AUDIT_QUERY, CHATS_QUERY, EVENTS_QUERY, HISTORY_QUERY } from "../../cli/messenger/chat-queries.js";
|
|
8
|
-
import { chatStatsAnswer } from "../../cli/messenger/stats-answers.js";
|
|
9
|
-
import { casKey } from "../../cli/registry-keys.js";
|
|
10
|
-
import { nextStep } from "../../cli/steps.js";
|
|
11
|
-
import { syncsOneChat } from "../../ports/traits.js";
|
|
12
|
-
import { EVENTS_DAYS, onlineDeps, servicesFor, storedDeps } from "../../services/index.js";
|
|
13
|
-
import { momentOf } from "../../services/moment.js";
|
|
14
|
-
import { chatOf, limit, page, paging, READ, tool } from "../tool.js";
|
|
15
|
-
const pagingOf = (args, defaults) => {
|
|
16
|
-
const { size, number } = paging(args, defaults);
|
|
17
|
-
return { limit: size, page: number };
|
|
18
|
-
};
|
|
19
|
-
export const chatsTools = (messenger) => {
|
|
20
|
-
const tools = chatTools(messenger);
|
|
21
|
-
if (messenger.sendAs === false)
|
|
22
|
-
delete tools.chats_send_as;
|
|
23
|
-
return tools;
|
|
24
|
-
};
|
|
25
|
-
const chatTools = (messenger) => {
|
|
26
|
-
const chat = chatOf(messenger);
|
|
27
|
-
return {
|
|
28
|
-
chats_list: tool({
|
|
29
|
-
title: "List chats",
|
|
30
|
-
description: "Chats the owner is in, most recent first. Use it to find a chat's id before reading or sending. " +
|
|
31
|
-
"query (kind:group unread_count>0, title:book) is answered from the local store: when the chats are read " +
|
|
32
|
-
"from the messenger it filters nothing, and a query is refused.",
|
|
33
|
-
input: v.object({ query: queryArgument(CHATS_QUERY), limit, page }),
|
|
34
|
-
annotations: READ,
|
|
35
|
-
output: { entity: "chat", list: true },
|
|
36
|
-
served: (services, args, defaults) => chatsList(services, args.query, pagingOf(args, defaults)),
|
|
37
|
-
}),
|
|
38
|
-
chats_events: tool({
|
|
39
|
-
title: "Who joined or left a chat",
|
|
40
|
-
description: "A chat's service messages: who joined, left, was added or removed, and by whom, oldest first — type is " +
|
|
41
|
-
`join, leave, add, remove, create, title or pin. The last ${EVENTS_DAYS} days unless query names time ` +
|
|
42
|
-
'(time>=2d, time>="2026-10-01"). meta.truncated when the history was longer than one run reads.',
|
|
43
|
-
input: v.object({ chat, query: queryArgument(EVENTS_QUERY) }),
|
|
44
|
-
annotations: READ,
|
|
45
|
-
output: { entity: "chat_event", list: true },
|
|
46
|
-
served: (services, args) => chatEvents(services, args.chat, args.query),
|
|
47
|
-
}),
|
|
48
|
-
stats_chats_show: tool({
|
|
49
|
-
title: "A chat's numbers for a period",
|
|
50
|
-
description: `Counts over a chat's stored messages since \`since_time\` (${EVENTS_DAYS} days back if not given): messages, ` +
|
|
51
|
-
"senders, replies, threads, reactions, views, forwards and comments where the messenger gave them, top_posts, and " +
|
|
52
|
-
"questions { asked, answered, median_minutes_to_answer }. `by` adds a series row per day or week. Reads the local " +
|
|
53
|
-
(messenger.history === "store"
|
|
54
|
-
? "store only, joins and leaves included; until the store holds one chat event for the chat, members is " +
|
|
55
|
-
"left out and missing says they are not recorded yet. "
|
|
56
|
-
: "store only, so joins and leaves are not in it — `chats events` has them. ") +
|
|
57
|
-
"complete is false when the store does not hold the chat whole: then every number is a lower bound, and next " +
|
|
58
|
-
"names the sync that fills it.",
|
|
59
|
-
input: v.object({
|
|
60
|
-
chat,
|
|
61
|
-
since_time: v.optional(v.pipe(v.string(), v.description("an ISO 8601 time, or 2h / 1d ago"))),
|
|
62
|
-
by: v.optional(v.picklist(["day", "week"])),
|
|
63
|
-
timezone: v.optional(v.pipe(v.string(), v.description("the IANA timezone for calendar days"))),
|
|
64
|
-
}),
|
|
65
|
-
annotations: { ...READ, openWorldHint: false },
|
|
66
|
-
output: { entity: "chat_stats", list: false },
|
|
67
|
-
stored: async (store, account, args, defaults) => chatStatsAnswer(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).chats.stats(args.chat, {
|
|
68
|
-
...(args.since_time === undefined ? {} : { since: momentOf(args.since_time, "since_time") }),
|
|
69
|
-
...(args.by ? { by: args.by } : {}),
|
|
70
|
-
...(args.timezone === undefined ? {} : { timezone: args.timezone }),
|
|
71
|
-
}), account),
|
|
72
|
-
}),
|
|
73
|
-
chats_members: tool({
|
|
74
|
-
title: "Everyone in a group",
|
|
75
|
-
description: "A group's members, a page at a time: { id, name, username, role?, last_seen_at? }. role is owner, admin or " +
|
|
76
|
-
"member; last_seen_at is null when their privacy hides it.",
|
|
77
|
-
input: v.object({ chat, limit, page }),
|
|
78
|
-
annotations: READ,
|
|
79
|
-
command: "chats members list",
|
|
80
|
-
output: { entity: "member", list: true },
|
|
81
|
-
online: (adapter, args, defaults) => membersList(servicesFor(onlineDeps(messenger, adapter, defaults.guard)), args.chat, pagingOf(args, defaults)),
|
|
82
|
-
}),
|
|
83
|
-
chats_members_audit: tool({
|
|
84
|
-
title: "Members that look like bots",
|
|
85
|
-
description: "Members of a group that look like bots, highest score first: { id, name, username, score, reasons }. " +
|
|
86
|
-
"Reasons: bot, scam, fake, deleted, no_photo, no_username, odd_name, never_wrote, link_first, burst_join, " +
|
|
87
|
-
"mass_invited. A score is a hint, never a verdict; the owner and admins are left out. query sets the lowest " +
|
|
88
|
-
"score shown (score>=3; score>=2 unless named). Reads the member list a page at a time, at most max_pages; " +
|
|
89
|
-
"meta.truncated says some members were not read. With deep, the top members also get the full `contacts check`, " +
|
|
90
|
-
"one person a second" +
|
|
91
|
-
(registriesCover(messenger.provider)
|
|
92
|
-
? " — and their ids are sent to the public ban lists"
|
|
93
|
-
: "; the public ban lists cover Telegram only, so nothing is sent") +
|
|
94
|
-
". Removes nobody — that is `chats moderate`, with the owner's confirmation.",
|
|
95
|
-
input: v.object({
|
|
96
|
-
chat,
|
|
97
|
-
query: queryArgument(AUDIT_QUERY),
|
|
98
|
-
max_pages: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.description("pages of members to read"))),
|
|
99
|
-
deep: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(50), v.description("check the top n in full"))),
|
|
100
|
-
}),
|
|
101
|
-
annotations: READ,
|
|
102
|
-
output: { entity: "member", list: true },
|
|
103
|
-
online: async (adapter, args, { guard, env, keyring }) => {
|
|
104
|
-
const key = args.deep === undefined ? undefined : casKey(messenger.app, env, keyring);
|
|
105
|
-
const { body } = await membersAudit(servicesFor(onlineDeps(messenger, adapter, guard)), args.chat, args.query, {
|
|
106
|
-
...(args.max_pages === undefined ? {} : { budget: args.max_pages }),
|
|
107
|
-
...(args.deep === undefined ? {} : { deep: args.deep }),
|
|
108
|
-
...(key ? { registry: { casKey: key } } : {}),
|
|
109
|
-
});
|
|
110
|
-
return body;
|
|
111
|
-
},
|
|
112
|
-
}),
|
|
113
|
-
chats_members_history: tool({
|
|
114
|
-
title: "Who joined, left or changed their profile",
|
|
115
|
-
description: "A group's member history as the local store recorded it with chats members fetch, oldest first: type is " +
|
|
116
|
-
"join, leave or profile; before is the profile seen until then. A leave is recorded only from a member list " +
|
|
117
|
-
"read whole. query names time to read from (time>=7d). Reads the local store only; empty until the owner " +
|
|
118
|
-
"fetches or tracks the chat.",
|
|
119
|
-
input: v.object({ chat, query: queryArgument(HISTORY_QUERY) }),
|
|
120
|
-
annotations: { ...READ, openWorldHint: false },
|
|
121
|
-
output: { entity: "chat_event", list: true },
|
|
122
|
-
stored: (store, account, args, defaults) => membersHistory(servicesFor(storedDeps(messenger, store, account, defaults.guard)), args.chat, args.query),
|
|
123
|
-
}),
|
|
124
|
-
chats_documents_list: tool({
|
|
125
|
-
title: "Google documents linked in a chat",
|
|
126
|
-
description: "Every Google Docs, Sheets, Slides, Forms or Drive link in a chat's stored messages, newest first, one item " +
|
|
127
|
-
"per link: { url, document_id, title, in_store, ref, sent_at, sender: { id, name } }. document_id is the " +
|
|
128
|
-
"Google file id in the URL, null when it carries none; title is the stored document's, null unless in_store; " +
|
|
129
|
-
"ref is the message's locator. Reads the local store only.",
|
|
130
|
-
input: v.object({ chat, limit, page }),
|
|
131
|
-
annotations: { ...READ, openWorldHint: false },
|
|
132
|
-
stored: async (store, account, args, defaults) => {
|
|
133
|
-
const { size, number, window } = paging(args, defaults);
|
|
134
|
-
const found = await servicesFor(storedDeps(messenger, store, account, defaults.guard)).chatDocuments.list(args.chat, window);
|
|
135
|
-
return listOf("chats documents list", {
|
|
136
|
-
items: found.items.map(documentLinkAnswer),
|
|
137
|
-
limit: size,
|
|
138
|
-
has_more: found.hasMore,
|
|
139
|
-
page: number,
|
|
140
|
-
args: { chat: args.chat },
|
|
141
|
-
...(found.empty && syncsOneChat(messenger)
|
|
142
|
-
? { next: [nextStep("messages.sync", { args: { chat: found.chatId } })] }
|
|
143
|
-
: {}),
|
|
144
|
-
});
|
|
145
|
-
},
|
|
146
|
-
}),
|
|
147
|
-
chats_tracking_list: tool({
|
|
148
|
-
title: "Chats whose members are recorded daily",
|
|
149
|
-
description: "The chats whose member lists serve fetches daily into the local store: { chat_id, title, tracked_at, " +
|
|
150
|
-
"last_count: { day, participants, listed, complete } | null }. Reads the local store only. The owner adds " +
|
|
151
|
-
"one with the CLI: chats members fetch <chat> --track, or chats tracking add.",
|
|
152
|
-
input: v.object({}),
|
|
153
|
-
annotations: { ...READ, openWorldHint: false },
|
|
154
|
-
stored: async (store, account) => wholeList("chats tracking list", (await store.roster.trackedChats(account)).map(snakeKeys)),
|
|
155
|
-
}),
|
|
156
|
-
chats_tracking_show: tool({
|
|
157
|
-
title: "A chat's member count per day",
|
|
158
|
-
description: "Whether a chat's members are recorded daily, and its member count per day for the last 30 days: " +
|
|
159
|
-
"{ chat_id, tracked_at | null, counts: [{ day, participants, listed, complete }] }. complete is false for a " +
|
|
160
|
-
"day whose member list was not read whole. Reads the local store only.",
|
|
161
|
-
input: v.object({ chat }),
|
|
162
|
-
annotations: { ...READ, openWorldHint: false },
|
|
163
|
-
stored: async (store, account, args, defaults) => itemOf(snakeKeys(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).chats.trackedChat(args.chat))),
|
|
164
|
-
}),
|
|
165
|
-
chats_inspect: tool({
|
|
166
|
-
title: "What a link leads to",
|
|
167
|
-
description: "What an invite or public link leads to, read without joining: { kind, title, id, username, " +
|
|
168
|
-
"participants_count, description, member, approval_needed? }. id is null for a private chat the owner is not in.",
|
|
169
|
-
input: v.object({ link: v.pipe(v.string(), v.minLength(1), v.description("an invite link or a public one")) }),
|
|
170
|
-
annotations: READ,
|
|
171
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await servicesFor(onlineDeps(messenger, adapter, guard)).chats.inspect(args.link))),
|
|
172
|
-
}),
|
|
173
|
-
chats_send_as: tool({
|
|
174
|
-
title: "Who the owner may post as",
|
|
175
|
-
description: "The identities the owner may post as in a chat: { id, title, kind, premium_required, default }. kind is " +
|
|
176
|
-
"self, channel or group; self is always there; default is the chat's saved choice. Reading changes nothing. " +
|
|
177
|
-
"Pass an id as `send_as` to `messages send`.",
|
|
178
|
-
input: v.object({ chat }),
|
|
179
|
-
annotations: READ,
|
|
180
|
-
command: "chats send-as",
|
|
181
|
-
served: async (services, args) => wholeList("chats send-as", (await services.chats.sendAs(args.chat)).map(snakeKeys)),
|
|
182
|
-
}),
|
|
183
|
-
chats_show: tool({
|
|
184
|
-
title: "Show a chat",
|
|
185
|
-
description: "One chat: its kind, unread count, last message time and who is in it; a group's description, invite link " +
|
|
186
|
-
"and settings where the messenger gives them.",
|
|
187
|
-
input: v.object({ chat }),
|
|
188
|
-
annotations: READ,
|
|
189
|
-
output: { entity: "chat", list: false },
|
|
190
|
-
served: async (services, args) => chatShown(await services.chats.account(), await services.chats.show(args.chat)),
|
|
191
|
-
}),
|
|
192
|
-
};
|
|
193
|
-
};
|
|
194
|
-
//# sourceMappingURL=chats.js.map
|