@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
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { CliError } from "@wirecat/cli-base";
|
|
2
|
-
import * as v from "valibot";
|
|
3
|
-
import { itemOf, listOf, snakeKeys } from "../../cli/envelope.js";
|
|
4
|
-
import { servicesFor, storedDeps } from "../../services/index.js";
|
|
5
|
-
import { READ, tool } from "../tool.js";
|
|
6
|
-
const person = v.pipe(v.string(), v.minLength(1));
|
|
7
|
-
const id = v.pipe(v.string(), v.minLength(1));
|
|
8
|
-
const text = v.pipe(v.string(), v.minLength(1), v.maxLength(100_000));
|
|
9
|
-
const LOCAL = { readOnlyHint: false, openWorldHint: false };
|
|
10
|
-
export const privatePeopleTools = (messenger) => ({
|
|
11
|
-
contacts_alias_set: tool({
|
|
12
|
-
changesStore: true,
|
|
13
|
-
title: "Set a private contact alias",
|
|
14
|
-
description: "Set a display name only in this account's local store; never rename a messenger contact.",
|
|
15
|
-
input: v.object({ person, alias: v.pipe(v.string(), v.minLength(1), v.maxLength(200)) }),
|
|
16
|
-
annotations: { ...LOCAL, idempotentHint: true, destructiveHint: false },
|
|
17
|
-
stored: async (store, account, args, defaults) => itemOf(snakeKeys(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).privatePeople.alias(args.person, args.alias))),
|
|
18
|
-
}),
|
|
19
|
-
contacts_alias_rm: tool({
|
|
20
|
-
changesStore: true,
|
|
21
|
-
title: "Remove a private contact alias",
|
|
22
|
-
description: "Remove only this account's local alias.",
|
|
23
|
-
input: v.object({ person }),
|
|
24
|
-
annotations: { ...LOCAL, idempotentHint: true, destructiveHint: true },
|
|
25
|
-
stored: async (store, account, args, defaults) => itemOf(snakeKeys(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).privatePeople.alias(args.person, null))),
|
|
26
|
-
}),
|
|
27
|
-
contacts_notes_list: tool({
|
|
28
|
-
title: "Private notes on a contact",
|
|
29
|
-
description: "User-authored notes stored locally for this account; they are separate from the person's public bio.",
|
|
30
|
-
input: v.object({ person }),
|
|
31
|
-
annotations: { ...READ, openWorldHint: false },
|
|
32
|
-
output: { entity: "contact_note", list: true },
|
|
33
|
-
stored: async (store, account, args, defaults) => {
|
|
34
|
-
const items = await servicesFor(storedDeps(messenger, store, account, defaults.guard)).privatePeople.notes(args.person);
|
|
35
|
-
return listOf("contacts notes list", { items, limit: Math.max(1, items.length), has_more: false });
|
|
36
|
-
},
|
|
37
|
-
}),
|
|
38
|
-
contacts_notes_show: tool({
|
|
39
|
-
title: "Read a private contact note",
|
|
40
|
-
description: "Read one account-scoped note and its revision.",
|
|
41
|
-
input: v.object({ person, id }),
|
|
42
|
-
annotations: { ...READ, openWorldHint: false },
|
|
43
|
-
output: { entity: "contact_note", list: false },
|
|
44
|
-
stored: async (store, account, args, defaults) => itemOf(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).privatePeople.note(args.person, args.id)),
|
|
45
|
-
}),
|
|
46
|
-
contacts_notes_add: tool({
|
|
47
|
-
changesStore: true,
|
|
48
|
-
title: "Add a private contact note",
|
|
49
|
-
description: "Save the user's note locally with a stable id; nothing is sent to the person.",
|
|
50
|
-
input: v.object({ person, text }),
|
|
51
|
-
annotations: { ...LOCAL, idempotentHint: false, destructiveHint: false },
|
|
52
|
-
output: { entity: "contact_note", list: false },
|
|
53
|
-
stored: async (store, account, args, defaults) => itemOf(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).privatePeople.add(args.person, args.text)),
|
|
54
|
-
}),
|
|
55
|
-
contacts_notes_edit: tool({
|
|
56
|
-
changesStore: true,
|
|
57
|
-
title: "Edit a private contact note",
|
|
58
|
-
description: "Replace note text only if its revision still matches the one read.",
|
|
59
|
-
input: v.object({ person, id, text, revision: v.pipe(v.number(), v.integer(), v.minValue(1)) }),
|
|
60
|
-
annotations: { ...LOCAL, idempotentHint: false, destructiveHint: true },
|
|
61
|
-
output: { entity: "contact_note", list: false },
|
|
62
|
-
stored: async (store, account, args, defaults) => itemOf(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).privatePeople.edit(args.person, args.id, args.text, args.revision)),
|
|
63
|
-
}),
|
|
64
|
-
contacts_notes_remove: tool({
|
|
65
|
-
changesStore: true,
|
|
66
|
-
title: "Delete a private contact note",
|
|
67
|
-
description: "Delete this local note's text; the contact and source messages remain.",
|
|
68
|
-
input: v.object({ person, id }),
|
|
69
|
-
annotations: { ...LOCAL, idempotentHint: false, destructiveHint: true },
|
|
70
|
-
stored: async (store, account, args, defaults) => itemOf(snakeKeys(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).privatePeople.remove(args.person, args.id))),
|
|
71
|
-
}),
|
|
72
|
-
metadata_get: tool({
|
|
73
|
-
title: "Cached channel metadata",
|
|
74
|
-
description: "Read locally stored group/channel title, username, description and refresh time.",
|
|
75
|
-
input: v.object({ chat: person }),
|
|
76
|
-
annotations: { ...READ, openWorldHint: false },
|
|
77
|
-
stored: async (store, account, args, defaults) => itemOf(snakeKeys(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).metadata.get(args.chat))),
|
|
78
|
-
}),
|
|
79
|
-
metadata_refresh: tool({
|
|
80
|
-
title: "Refresh channel metadata",
|
|
81
|
-
description: "Read a group/channel description from the messenger and cache it locally. No remote mutation.",
|
|
82
|
-
input: v.object({ chat: person }),
|
|
83
|
-
annotations: { ...LOCAL, idempotentHint: true, destructiveHint: false },
|
|
84
|
-
stored: async (store, account, args, defaults, connect) => {
|
|
85
|
-
if (!connect)
|
|
86
|
-
throw new CliError("validation_error", "metadata refresh needs a connection");
|
|
87
|
-
const deps = {
|
|
88
|
-
...storedDeps(messenger, store, account, defaults.guard),
|
|
89
|
-
offline: defaults.settings.offline ?? false,
|
|
90
|
-
withConnection: connect,
|
|
91
|
-
};
|
|
92
|
-
return itemOf(snakeKeys({ chats: [await servicesFor(deps).metadata.refresh(args.chat)], has_more: false }));
|
|
93
|
-
},
|
|
94
|
-
}),
|
|
95
|
-
tags_auto: tool({
|
|
96
|
-
changesStore: true,
|
|
97
|
-
title: "Classify cached channels",
|
|
98
|
-
description: "Derive local keyword tags from title, username and description, preserving manual tags. sync_first reads current descriptions first. Dry-run uses cached data only.",
|
|
99
|
-
input: v.object({
|
|
100
|
-
chats: v.optional(v.array(person)),
|
|
101
|
-
limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(500))),
|
|
102
|
-
sync_first: v.optional(v.boolean()),
|
|
103
|
-
dry_run: v.optional(v.boolean()),
|
|
104
|
-
}),
|
|
105
|
-
annotations: { ...LOCAL, idempotentHint: true, destructiveHint: false },
|
|
106
|
-
stored: async (store, account, args, defaults, connect) => {
|
|
107
|
-
const deps = {
|
|
108
|
-
...storedDeps(messenger, store, account, defaults.guard),
|
|
109
|
-
offline: args.sync_first ? (defaults.settings.offline ?? false) : true,
|
|
110
|
-
withConnection: connect,
|
|
111
|
-
};
|
|
112
|
-
return itemOf(snakeKeys(await servicesFor(deps).metadata.auto({
|
|
113
|
-
chats: args.chats,
|
|
114
|
-
limit: args.limit,
|
|
115
|
-
refresh: args.sync_first,
|
|
116
|
-
dryRun: args.dry_run,
|
|
117
|
-
})));
|
|
118
|
-
},
|
|
119
|
-
}),
|
|
120
|
-
});
|
|
121
|
-
//# sourceMappingURL=private-people.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"private-people.js","sourceRoot":"","sources":["../../../src/mcp/tools/private-people.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rankings.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/rankings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAQ/D,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,YAAY,CAAA;AAwCrD,eAAO,MAAM,YAAY,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAoFzE,CAAA"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { CliError } from "@wirecat/cli-base";
|
|
2
|
-
import * as v from "valibot";
|
|
3
|
-
import { evidenceAnswer, rankingAnswer } from "../../cli/messenger/stats-answers.js";
|
|
4
|
-
import { AUTHOR_MEASURES, MESSAGE_MEASURES } from "../../domain/rankings-options.js";
|
|
5
|
-
import { assertRetentionEvidenceRead } from "../../sends/permissions.js";
|
|
6
|
-
import { isAdminSelection } from "../../services/admin-statistics.js";
|
|
7
|
-
import { isRetentionSelection } from "../../services/retention.js";
|
|
8
|
-
import { searchServices, syncInputs } from "../search-sync.js";
|
|
9
|
-
import { READ, tool } from "../tool.js";
|
|
10
|
-
import { syncArgs } from "./search.js";
|
|
11
|
-
const commonTop = {
|
|
12
|
-
...syncInputs,
|
|
13
|
-
text: v.optional(v.string()),
|
|
14
|
-
ast: v.optional(v.unknown()),
|
|
15
|
-
chat: v.optional(v.string()),
|
|
16
|
-
source: v.optional(v.string()),
|
|
17
|
-
timezone: v.optional(v.string()),
|
|
18
|
-
exact: v.optional(v.boolean()),
|
|
19
|
-
saved: v.optional(v.string()),
|
|
20
|
-
weights: v.optional(v.union([v.string(), v.record(v.string(), v.number())])),
|
|
21
|
-
message_kind: v.optional(v.picklist(["all", "posts", "comments"])),
|
|
22
|
-
limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
|
|
23
|
-
};
|
|
24
|
-
const topInput = (target) => target === "messages"
|
|
25
|
-
? v.object({
|
|
26
|
-
...commonTop,
|
|
27
|
-
measure: v.optional(v.picklist(MESSAGE_MEASURES)),
|
|
28
|
-
score: v.optional(v.picklist(["engaging"])),
|
|
29
|
-
})
|
|
30
|
-
: v.object({
|
|
31
|
-
...commonTop,
|
|
32
|
-
measure: v.optional(v.picklist(AUTHOR_MEASURES)),
|
|
33
|
-
score: v.optional(v.picklist(["helpful", "active", "engaging"])),
|
|
34
|
-
min_messages: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
|
|
35
|
-
});
|
|
36
|
-
const commonEvidence = {
|
|
37
|
-
selection: v.union([v.string(), v.record(v.string(), v.unknown())]),
|
|
38
|
-
component: v.string(),
|
|
39
|
-
limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
|
|
40
|
-
cursor: v.optional(v.pipe(v.string(), v.maxLength(4096))),
|
|
41
|
-
};
|
|
42
|
-
const evidenceInput = (target) => target === "messages"
|
|
43
|
-
? v.object({ ...commonEvidence, message: v.string() })
|
|
44
|
-
: v.object({ ...commonEvidence, person: v.string() });
|
|
45
|
-
export const rankingTools = (messenger) => {
|
|
46
|
-
const definitions = {};
|
|
47
|
-
for (const target of ["messages", "contacts"]) {
|
|
48
|
-
definitions[`stats_${target}_top`] = tool({
|
|
49
|
-
title: `Rank ${target === "messages" ? "messages" : "authors"}`,
|
|
50
|
-
description: "Rank the local matching population by a measure or explainable score; limit is applied after normalization. Unknown counters are not zero. Per-counter observation freshness is disclosed and counts are cumulative snapshots; graph counts describe stored events in the query period. Returns { item: { population, eligible, excluded, rows } }: each row has its score components and the selection its evidence takes; next names the top row's evidence; missing names what the store does not hold. No sends or mark-read; optional sync_first has separate write permissions.",
|
|
51
|
-
input: topInput(target),
|
|
52
|
-
annotations: { ...READ, openWorldHint: false },
|
|
53
|
-
output: { entity: "ranking", list: false },
|
|
54
|
-
stored: async (store, account, args, defaults, connect) => {
|
|
55
|
-
const services = searchServices(messenger, store, account, defaults, args.sync_first ? connect : undefined);
|
|
56
|
-
const min_messages = "min_messages" in args && typeof args.min_messages === "number" ? args.min_messages : undefined;
|
|
57
|
-
const { message_kind, saved, sync_first: _sync, sync_time: _time, max_chats: _chats, max_messages: _messages, ...plain } = args;
|
|
58
|
-
let params = {
|
|
59
|
-
...plain,
|
|
60
|
-
...(min_messages === undefined ? {} : { minMessages: min_messages }),
|
|
61
|
-
...(message_kind === undefined ? {} : { messageKind: message_kind }),
|
|
62
|
-
};
|
|
63
|
-
if (saved !== undefined) {
|
|
64
|
-
if (args.ast !== undefined)
|
|
65
|
-
throw new CliError("validation_error", "with saved, give extra query words rather than an AST");
|
|
66
|
-
params = (await services.searches.resolve(saved, params)).params;
|
|
67
|
-
}
|
|
68
|
-
if (params.target !== undefined && params.target !== target)
|
|
69
|
-
throw new CliError("validation_error", "saved ranking belongs to a different target");
|
|
70
|
-
if (params.newest || params.context)
|
|
71
|
-
throw new CliError("validation_error", "saved ranking must not use newest/context modes");
|
|
72
|
-
return rankingAnswer(await services.rankings.top(target, {
|
|
73
|
-
...params,
|
|
74
|
-
...syncArgs(args),
|
|
75
|
-
limit: params.limit ?? defaults.limit,
|
|
76
|
-
signal: defaults.signal,
|
|
77
|
-
...(saved ? { saved } : {}),
|
|
78
|
-
}));
|
|
79
|
-
},
|
|
80
|
-
});
|
|
81
|
-
definitions[`stats_${target}_evidence`] = tool({
|
|
82
|
-
title: `Inspect ${target} ranking evidence`,
|
|
83
|
-
description: "Page through contributing messages, question/answer pairs or retention cohort members from a row's selection. Never fetches, sends, marks read or records evidence bodies. A cursor binds the component, selection and contributing stored rows; changed evidence requires a restart. JSON items are bounded to 64 KiB; page.next_cursor continues, and next has the call for the next page.",
|
|
84
|
-
input: evidenceInput(target),
|
|
85
|
-
annotations: { ...READ, openWorldHint: false },
|
|
86
|
-
output: { entity: "evidence", list: true },
|
|
87
|
-
stored: async (store, account, args, defaults) => {
|
|
88
|
-
const services = searchServices(messenger, store, account, defaults);
|
|
89
|
-
if (isRetentionSelection(args.selection))
|
|
90
|
-
assertRetentionEvidenceRead(defaults.settings.permissions ?? {});
|
|
91
|
-
const reference = "message" in args ? args.message : args.person;
|
|
92
|
-
if (reference === undefined)
|
|
93
|
-
throw new CliError("validation_error", "ranking evidence needs its exact message or person reference");
|
|
94
|
-
const limit = args.limit ?? 20;
|
|
95
|
-
const found = await (isRetentionSelection(args.selection)
|
|
96
|
-
? services.retention
|
|
97
|
-
: isAdminSelection(args.selection)
|
|
98
|
-
? services.adminStatistics
|
|
99
|
-
: services.rankings).evidence(target, reference, args.selection, {
|
|
100
|
-
component: args.component,
|
|
101
|
-
limit,
|
|
102
|
-
...(args.cursor ? { cursor: args.cursor } : {}),
|
|
103
|
-
signal: defaults.signal,
|
|
104
|
-
});
|
|
105
|
-
const selection = typeof args.selection === "string" ? args.selection : JSON.stringify(args.selection);
|
|
106
|
-
return evidenceAnswer(`stats ${target} evidence`, found, { [target === "messages" ? "message" : "person"]: reference, selection, component: args.component }, limit);
|
|
107
|
-
},
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
return definitions;
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=rankings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rankings.js","sourceRoot":"","sources":["../../../src/mcp/tools/rankings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { Messenger } from "../../cli/messenger/context.js";
|
|
2
|
-
import { type AnyTool } from "../tool.js";
|
|
3
|
-
/** Offered by the profile's permissions, under the `reaction` permission. */
|
|
4
|
-
export declare const reactionTools: (messenger: Messenger) => Record<string, AnyTool>;
|
|
5
|
-
//# sourceMappingURL=reactions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/reactions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAI/D,OAAO,EAAE,KAAK,OAAO,EAAgC,MAAM,YAAY,CAAA;AAEvE,6EAA6E;AAC7E,eAAO,MAAM,aAAa,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAoC1E,CAAA"}
|
|
@@ -1,33 +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
|
-
/** Offered by the profile's permissions, under the `reaction` permission. */
|
|
6
|
-
export const reactionTools = (messenger) => {
|
|
7
|
-
const chat = chatOf(messenger);
|
|
8
|
-
const messages = (adapter, guard) => servicesFor(onlineDeps(messenger, adapter, guard)).messages;
|
|
9
|
-
return {
|
|
10
|
-
reactions_add: tool({
|
|
11
|
-
title: "React to a message",
|
|
12
|
-
description: "Put the owner's reaction on one message; it replaces the one there was. The sender sees it. " +
|
|
13
|
-
"Only when the owner asked for this reaction on this message.",
|
|
14
|
-
input: v.object({
|
|
15
|
-
chat,
|
|
16
|
-
message,
|
|
17
|
-
emoji: v.pipe(v.string(), v.minLength(1), v.description("one emoji, for example 👍")),
|
|
18
|
-
}),
|
|
19
|
-
annotations: WRITE,
|
|
20
|
-
permission: "reaction",
|
|
21
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await messages(adapter, guard).react({ chat: args.chat, message: args.message, emoji: args.emoji }))),
|
|
22
|
-
}),
|
|
23
|
-
reactions_remove: tool({
|
|
24
|
-
title: "Take a reaction off",
|
|
25
|
-
description: "Take the owner's reaction off one message. Only when the owner asked for it.",
|
|
26
|
-
input: v.object({ chat, message }),
|
|
27
|
-
annotations: WRITE,
|
|
28
|
-
permission: "reaction",
|
|
29
|
-
online: async (adapter, args, { guard }) => itemOf(snakeKeys(await messages(adapter, guard).react({ chat: args.chat, message: args.message, emoji: null }))),
|
|
30
|
-
}),
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=reactions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../../src/mcp/tools/reactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAIzD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAgB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAoB,EAA2B,EAAE;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;IAC9B,MAAM,QAAQ,GAAG,CAAC,OAAyB,EAAE,KAAgB,EAAE,EAAE,CAC/D,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC7D,OAAO;QACL,aAAa,EAAE,IAAI,CAAC;YAClB,KAAK,EAAE,oBAAoB;YAC3B,WAAW,EACT,8FAA8F;gBAC9F,8DAA8D;YAChE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,IAAI;gBACJ,OAAO;gBACP,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;aACtF,CAAC;YACF,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CACJ,SAAS,CACP,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CACpG,CACF;SACJ,CAAC;QACF,gBAAgB,EAAE,IAAI,CAAC;YACrB,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EAAE,8EAA8E;YAC3F,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAClC,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CACJ,SAAS,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CACzG;SACJ,CAAC;KACH,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/review.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAI/D,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,YAAY,CAAA;AAGrD,eAAO,MAAM,WAAW,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAwFvE,CAAA"}
|
package/dist/mcp/tools/review.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { CliError } from "@wirecat/cli-base";
|
|
2
|
-
import * as v from "valibot";
|
|
3
|
-
import { catchUpQuery, REVIEW_QUERY, reviewAnswer } from "../../cli/messenger/catch-up-answers.js";
|
|
4
|
-
import { checkPoints } from "../../cli/messenger/points.js";
|
|
5
|
-
import { REVIEW_DAYS, reviewStart, UNANSWERED_HOURS } from "../../services/inbox.js";
|
|
6
|
-
import { heard, hearForTool, modelWith } from "../../speech/hearing.js";
|
|
7
|
-
import { READ, tool } from "../tool.js";
|
|
8
|
-
import { kindsInput } from "./inbox.js";
|
|
9
|
-
export const reviewTools = (messenger) => ({
|
|
10
|
-
review: tool({
|
|
11
|
-
title: "Review who owes what",
|
|
12
|
-
description: "Every message, the owner's too (outgoing: true), in each chat that changed since a point — for sorting out " +
|
|
13
|
-
`what the owner owes and what others owe. Without a date in \`query\`, the last ${REVIEW_DAYS} days; with \`new\`, ` +
|
|
14
|
-
"what changed since the last call with new, from points this tool keeps apart from the owner's own. Muted and archived " +
|
|
15
|
-
"chats are left out unless they mention the owner, or `all` is set. Items are messages, oldest first, each " +
|
|
16
|
-
"naming its chat. The first next step, review.next, is the query the next review starts from; chats cut short, " +
|
|
17
|
-
"skipped or left out are `missing` entries.",
|
|
18
|
-
input: v.object({
|
|
19
|
-
query: v.optional(v.pipe(v.string(), v.description('where the last review ended and which chat: date>"2026-10-01T09:00:00Z", chat:"Book club"'))),
|
|
20
|
-
new: v.optional(v.pipe(v.boolean(), v.description("what changed since the last call with new"))),
|
|
21
|
-
kinds: kindsInput,
|
|
22
|
-
unanswered: v.optional(v.pipe(v.number(), v.minValue(0), v.description(`only questions nobody answered, asked at least this many hours ago (${UNANSWERED_HOURS} is usual)`))),
|
|
23
|
-
all: v.optional(v.pipe(v.boolean(), v.description("muted and archived chats too"))),
|
|
24
|
-
transcribe: v.optional(v.pipe(v.boolean(), v.description("turn voice messages not heard yet into text; can take minutes"))),
|
|
25
|
-
model: v.optional(v.pipe(v.string(), v.minLength(1), v.description("which downloaded speech model hears them, with transcribe"))),
|
|
26
|
-
}),
|
|
27
|
-
annotations: READ,
|
|
28
|
-
output: { entity: "message.summary", list: true },
|
|
29
|
-
served: async (services, args, defaults, connect) => {
|
|
30
|
-
const { since: from, chat } = catchUpQuery(args.query, REVIEW_QUERY, "review");
|
|
31
|
-
if (args.new && (from !== undefined || args.unanswered !== undefined)) {
|
|
32
|
-
// An open question stays open: moving past it would drop it from the next review.
|
|
33
|
-
throw new CliError("validation_error", "new keeps its own point — not with a date or unanswered");
|
|
34
|
-
}
|
|
35
|
-
const saved = args.new
|
|
36
|
-
? checkPoints(messenger.app, {
|
|
37
|
-
command: "mcp-review",
|
|
38
|
-
profile: defaults.settings.profile,
|
|
39
|
-
env: defaults.env,
|
|
40
|
-
firstLookMs: REVIEW_DAYS * 86_400_000,
|
|
41
|
-
})
|
|
42
|
-
: undefined;
|
|
43
|
-
const model = modelWith(args.transcribe, args.model);
|
|
44
|
-
let hearing;
|
|
45
|
-
const transcribe = args.transcribe === true;
|
|
46
|
-
const found = await services.inbox.review({
|
|
47
|
-
since: from ?? saved?.first ?? reviewStart(),
|
|
48
|
-
...(saved === undefined ? {} : { points: saved.chats }),
|
|
49
|
-
...(chat === undefined ? {} : { chat }),
|
|
50
|
-
...(args.kinds === undefined ? {} : { kinds: args.kinds }),
|
|
51
|
-
...(args.all ? { all: true } : {}),
|
|
52
|
-
...(args.unanswered === undefined ? {} : { unansweredAfterHours: args.unanswered }),
|
|
53
|
-
enrich: async (raw) => {
|
|
54
|
-
hearing = await hearForTool(messenger, connect, raw.chats.flatMap((chat) => chat.messages), transcribe, defaults, model);
|
|
55
|
-
return {
|
|
56
|
-
...raw,
|
|
57
|
-
complete: raw.complete && (hearing?.unheard.length ?? 0) === 0,
|
|
58
|
-
chats: raw.chats.map((chat) => ({ ...chat, messages: heard(chat.messages, hearing) })),
|
|
59
|
-
};
|
|
60
|
-
},
|
|
61
|
-
});
|
|
62
|
-
const answer = reviewAnswer({ ...found, complete: found.complete && (hearing?.unheard.length ?? 0) === 0 }, hearing, await services.messages.reader(), { transcribe, fresh: saved !== undefined, ...(chat === undefined ? {} : { chat }) });
|
|
63
|
-
saved?.save(found.checked ?? {});
|
|
64
|
-
return answer;
|
|
65
|
-
},
|
|
66
|
-
}),
|
|
67
|
-
});
|
|
68
|
-
//# sourceMappingURL=review.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/mcp/tools/review.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/tools/runs.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/runs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAG/D,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,YAAY,CAAA;AAErD,eAAO,MAAM,SAAS,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA2BrE,CAAA"}
|
package/dist/mcp/tools/runs.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import * as v from "valibot";
|
|
2
|
-
import { runsFound, searchRuns } from "../../cli/runs/search.js";
|
|
3
|
-
import { runsDirFor } from "../../runs/run.js";
|
|
4
|
-
import { READ, tool } from "../tool.js";
|
|
5
|
-
export const runsTools = (messenger) => ({
|
|
6
|
-
runs_search: tool({
|
|
7
|
-
title: "Search recorded diagnostic logs",
|
|
8
|
-
description: "Search this profile's run metadata and safe diagnostic events, including partial batches and failed IDs. No message contents, tokens or raw job logs. Literal query plus status, error_code, operation and since_time filters; paged results. Does not connect or record its own search. Each run has at most 100 matched events, with events_truncated.",
|
|
9
|
-
key: null,
|
|
10
|
-
annotations: { ...READ, openWorldHint: false },
|
|
11
|
-
input: v.object({
|
|
12
|
-
query: v.optional(v.string()),
|
|
13
|
-
status: v.optional(v.picklist(["success", "failed", "partial", "running"])),
|
|
14
|
-
error_code: v.optional(v.string()),
|
|
15
|
-
operation: v.optional(v.string()),
|
|
16
|
-
since_time: v.optional(v.string()),
|
|
17
|
-
limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
|
|
18
|
-
page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
|
|
19
|
-
}),
|
|
20
|
-
local: async (args, defaults) => runsFound(searchRuns(runsDirFor(messenger.app, defaults.env), {
|
|
21
|
-
...args,
|
|
22
|
-
errorCode: args.error_code,
|
|
23
|
-
since: args.since_time,
|
|
24
|
-
profile: defaults.settings.profile ?? "default",
|
|
25
|
-
}), { ...args }),
|
|
26
|
-
}),
|
|
27
|
-
});
|
|
28
|
-
//# sourceMappingURL=runs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../../../src/mcp/tools/runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAgB,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAErD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAoB,EAA2B,EAAE,CAAC,CAAC;IAC3E,WAAW,EAAE,IAAI,CAAC;QAChB,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,0VAA0V;QAC5V,GAAG,EAAE,IAAI;QACT,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;QAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YAC3E,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAClC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACjC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAClC,KAAK,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,GAAG,CAAC,CAAC,CAAC;YAClF,IAAI,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,CAAC,CAAC;SACjE,CAAC;QACF,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAC9B,SAAS,CACP,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;YAClD,GAAG,IAAI;YACP,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,IAAI,SAAS;SAChD,CAAC,EACF,EAAE,GAAG,IAAI,EAAE,CACZ;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
|
-
/** One tool per `search` leaf; `search all` is the one an agent reaches for first. */
|
|
4
|
-
export declare const searchTools: (messenger: Messenger) => Record<string, AnyTool>;
|
|
5
|
-
//# sourceMappingURL=search-tools.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAI/D,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,YAAY,CAAA;AAgB5D,sFAAsF;AACtF,eAAO,MAAM,WAAW,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAyJvE,CAAA"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import * as v from "valibot";
|
|
2
|
-
import { allAnswer, notesAnswer, offsetOf, SOURCE_SEARCHED } from "../../cli/messenger/search-answers.js";
|
|
3
|
-
import { searchNotesOf } from "../../services/notes-search.js";
|
|
4
|
-
import { searchServices } from "../search-sync.js";
|
|
5
|
-
import { limit, READ, tool } from "../tool.js";
|
|
6
|
-
import { answerMessagesSearch, backendArgs, backendInputs, messagesSearchDescription, messagesSearchInput, page, } from "./search.js";
|
|
7
|
-
const text = v.pipe(v.string(), v.minLength(1), v.description("the query, in the strict Lucene language"));
|
|
8
|
-
const exact = v.optional(v.pipe(v.boolean(), v.description("bare words and quotes match their exact form only; meaning is not searched")));
|
|
9
|
-
const timezone = v.optional(v.pipe(v.string(), v.description("the IANA timezone for calendar date boundaries")));
|
|
10
|
-
/** One tool per `search` leaf; `search all` is the one an agent reaches for first. */
|
|
11
|
-
export const searchTools = (messenger) => ({
|
|
12
|
-
search_all: tool({
|
|
13
|
-
title: "Search messages and notes",
|
|
14
|
-
description: "Messenger messages and notes held in the local store, merged best first — only these two kinds, and one " +
|
|
15
|
-
"meeting account when `source` names it; mail is memo's (its search_mail), and tasks, people, memories, " +
|
|
16
|
-
"projects, organizations and decisions are not searched here. Use it when you do not know where something was " +
|
|
17
|
-
"written. When you know the kind, call its own tool: `search messages`, `search notes`, or `search conversations` to " +
|
|
18
|
-
"find by meaning. An empty answer means neither holds it: try the kind's own tool, looser words or search by " +
|
|
19
|
-
"meaning before you conclude it was never written. Where the messenger's server can search, it is asked for " +
|
|
20
|
-
"messages too, as `search messages` asks it (backend=both by default; archive for the local store only; server " +
|
|
21
|
-
"for the server's hits only) — notes are local only. Each item says its kind (message, note), ref (msg:… or " +
|
|
22
|
-
"note:…), provider and account. A query field one kind lacks skips that kind and meta.issues names it; `only` " +
|
|
23
|
-
"narrows the kinds. `source` names the accounts: provider:account as an item shows it, a provider, a kind or " +
|
|
24
|
-
"group:<name>; each kind reads its own of them, and meta.issues names an entry no kind reads. Meetings are read " +
|
|
25
|
-
"only when `source` names one meeting account (zoom:<account>, zoom, meetings, or all when one account holds " +
|
|
26
|
-
"meetings): its transcripts, chat and summaries join in as kind meeting, with offset_ms into the meeting, and a " +
|
|
27
|
-
"null timestamp when the start is unknown; otherwise meta.issues says meetings were not searched. Returns " +
|
|
28
|
-
"{ items, page, next?, missing?, meta }; meta.accounts lists every account read as provider:account; a missing " +
|
|
29
|
-
"entry says when a bounded meeting scan stopped before it could tell whether more match.",
|
|
30
|
-
input: v.object({
|
|
31
|
-
// Typed as present so the answer code reads them; offered only where the server can search.
|
|
32
|
-
...(messenger.serverSearch ? backendInputs : {}),
|
|
33
|
-
text,
|
|
34
|
-
page,
|
|
35
|
-
only: v.optional(v.pipe(v.array(v.picklist(SOURCE_SEARCHED)), v.minLength(1), v.description("only these kinds: messages, notes; meetings when `source` names a meeting account"))),
|
|
36
|
-
source: v.optional(v.pipe(v.string(), v.minLength(1), v.description("only these accounts, comma-separated: provider:account as an item shows it, a provider, a kind or group:<name>"))),
|
|
37
|
-
max_meetings: v.optional(v.pipe(v.union([v.pipe(v.number(), v.integer(), v.minValue(1)), v.literal("all")]), v.description("how many of the meeting account's meetings to look through, newest first, or all (default 100)"))),
|
|
38
|
-
exact,
|
|
39
|
-
timezone,
|
|
40
|
-
limit,
|
|
41
|
-
}),
|
|
42
|
-
annotations: { ...READ, openWorldHint: Boolean(messenger.serverSearch) },
|
|
43
|
-
output: { entity: "hit", list: true },
|
|
44
|
-
stored: async (store, account, args, defaults, connect) => {
|
|
45
|
-
const network = Boolean(messenger.serverSearch) && args.backend !== "archive";
|
|
46
|
-
const services = searchServices(messenger, store, account, defaults, network ? connect : undefined);
|
|
47
|
-
const size = args.limit ?? defaults.limit;
|
|
48
|
-
const offset = offsetOf(args.page, size);
|
|
49
|
-
const request = {
|
|
50
|
-
text: args.text,
|
|
51
|
-
limit: size,
|
|
52
|
-
...(offset === undefined ? {} : { offset }),
|
|
53
|
-
...(args.exact ? { exact: true } : {}),
|
|
54
|
-
...(args.timezone === undefined ? {} : { timezone: args.timezone }),
|
|
55
|
-
...backendArgs(args),
|
|
56
|
-
env: defaults.env,
|
|
57
|
-
...(defaults.signal === undefined ? {} : { signal: defaults.signal }),
|
|
58
|
-
};
|
|
59
|
-
const found = await services.messages.searchAllWithMeetings({
|
|
60
|
-
...request,
|
|
61
|
-
only: args.only ?? SOURCE_SEARCHED,
|
|
62
|
-
...(args.source === undefined ? {} : { source: args.source }),
|
|
63
|
-
...(args.max_meetings === undefined ? {} : { maxMeetings: args.max_meetings }),
|
|
64
|
-
});
|
|
65
|
-
const again = {
|
|
66
|
-
query: args.text,
|
|
67
|
-
...(args.only === undefined ? {} : { only: args.only.join(",") }),
|
|
68
|
-
...(args.source === undefined ? {} : { source: args.source }),
|
|
69
|
-
...(args.max_meetings === undefined ? {} : { max_meetings: args.max_meetings }),
|
|
70
|
-
...(args.exact ? { exact: true } : {}),
|
|
71
|
-
...(args.timezone === undefined ? {} : { timezone: args.timezone }),
|
|
72
|
-
};
|
|
73
|
-
return allAnswer("search all", found, { limit: size, page: args.page ?? 1, again }, args.exact === true);
|
|
74
|
-
},
|
|
75
|
-
}),
|
|
76
|
-
search_messages: tool({
|
|
77
|
-
title: "Search messenger messages",
|
|
78
|
-
description: messagesSearchDescription(messenger),
|
|
79
|
-
input: messagesSearchInput(messenger),
|
|
80
|
-
annotations: { ...READ, openWorldHint: Boolean(messenger.serverSearch) },
|
|
81
|
-
output: { entity: "message.hit", list: true },
|
|
82
|
-
stored: (store, account, args, defaults, connect) => {
|
|
83
|
-
const network = args.sync_first || (Boolean(messenger.serverSearch) && args.backend !== "archive");
|
|
84
|
-
const services = searchServices(messenger, store, account, defaults, network ? connect : undefined);
|
|
85
|
-
return answerMessagesSearch(services.messages, args, defaults, services.searches);
|
|
86
|
-
},
|
|
87
|
-
}),
|
|
88
|
-
search_notes: tool({
|
|
89
|
-
title: "Search notes",
|
|
90
|
-
description: "Search the notes — written in memo, or imported from a notes folder — by words and, with the local text " +
|
|
91
|
-
"model, by meaning. Each item says which found it (found_by) and what it links to (links). source:internal in " +
|
|
92
|
-
"text keeps the notes written in memo, source:file those from a notes folder. The `source` input narrows " +
|
|
93
|
-
"which accounts are read: notes:internal for notes written in memo, notes:<folder id> as an item's folder_id shows it, or a list " +
|
|
94
|
-
"with group:<name>; an entry naming none is in meta.issues. `filter` is a query every item must also match, " +
|
|
95
|
-
"tag:work among them, and leaves the search by meaning as it is. Returns { items, page, next?, missing?, meta }.",
|
|
96
|
-
input: v.object({
|
|
97
|
-
text,
|
|
98
|
-
source: v.optional(v.pipe(v.string(), v.minLength(1), v.description("only these notes accounts, comma-separated: notes:internal, notes:<folder id>, or group:<name>"))),
|
|
99
|
-
filter: v.optional(v.pipe(v.string(), v.description("a query every hit must also match"))),
|
|
100
|
-
page,
|
|
101
|
-
exact,
|
|
102
|
-
timezone,
|
|
103
|
-
limit,
|
|
104
|
-
}),
|
|
105
|
-
annotations: { ...READ, openWorldHint: false },
|
|
106
|
-
output: { entity: "note.hit", list: true },
|
|
107
|
-
stored: async (store, account, args, defaults) => {
|
|
108
|
-
const size = args.limit ?? defaults.limit;
|
|
109
|
-
const offset = offsetOf(args.page, size);
|
|
110
|
-
const found = await searchNotesOf(store, account, args.text, {
|
|
111
|
-
limit: size,
|
|
112
|
-
command: messenger.app.command,
|
|
113
|
-
env: defaults.env,
|
|
114
|
-
...(offset === undefined ? {} : { offset }),
|
|
115
|
-
...(args.source === undefined ? {} : { accounts: args.source }),
|
|
116
|
-
app: messenger.app,
|
|
117
|
-
...(args.filter === undefined ? {} : { filter: args.filter }),
|
|
118
|
-
...(args.exact ? { exact: true } : {}),
|
|
119
|
-
...(args.timezone === undefined ? {} : { timezone: args.timezone }),
|
|
120
|
-
});
|
|
121
|
-
const again = {
|
|
122
|
-
query: args.text,
|
|
123
|
-
...(args.source === undefined ? {} : { source: args.source }),
|
|
124
|
-
...(args.filter === undefined ? {} : { filter: args.filter }),
|
|
125
|
-
...(args.exact ? { exact: true } : {}),
|
|
126
|
-
...(args.timezone === undefined ? {} : { timezone: args.timezone }),
|
|
127
|
-
};
|
|
128
|
-
return notesAnswer("search notes", found, { limit: size, page: args.page ?? 1, again }, args.exact === true);
|
|
129
|
-
},
|
|
130
|
-
}),
|
|
131
|
-
});
|
|
132
|
-
//# sourceMappingURL=search-tools.js.map
|