@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.
Files changed (256) hide show
  1. package/dist/cli/author.d.ts +6 -0
  2. package/dist/cli/author.d.ts.map +1 -1
  3. package/dist/cli/author.js +15 -0
  4. package/dist/cli/author.js.map +1 -1
  5. package/dist/cli/context.d.ts +2 -1
  6. package/dist/cli/context.d.ts.map +1 -1
  7. package/dist/cli/context.js +2 -1
  8. package/dist/cli/context.js.map +1 -1
  9. package/dist/cli/effects.d.ts +2 -1
  10. package/dist/cli/effects.d.ts.map +1 -1
  11. package/dist/cli/effects.js +3 -2
  12. package/dist/cli/effects.js.map +1 -1
  13. package/dist/cli/index.d.ts +0 -1
  14. package/dist/cli/index.d.ts.map +1 -1
  15. package/dist/cli/index.js +0 -1
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/messenger/attachments-command.d.ts.map +1 -1
  18. package/dist/cli/messenger/attachments-command.js +10 -3
  19. package/dist/cli/messenger/attachments-command.js.map +1 -1
  20. package/dist/cli/messenger/catch-up.d.ts +8 -2
  21. package/dist/cli/messenger/catch-up.d.ts.map +1 -1
  22. package/dist/cli/messenger/catch-up.js +11 -3
  23. package/dist/cli/messenger/catch-up.js.map +1 -1
  24. package/dist/cli/messenger/context.d.ts +2 -0
  25. package/dist/cli/messenger/context.d.ts.map +1 -1
  26. package/dist/cli/messenger/context.js +5 -1
  27. package/dist/cli/messenger/context.js.map +1 -1
  28. package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
  29. package/dist/cli/messenger/conversations-command.js +25 -1
  30. package/dist/cli/messenger/conversations-command.js.map +1 -1
  31. package/dist/cli/messenger/inbox.d.ts.map +1 -1
  32. package/dist/cli/messenger/inbox.js +11 -6
  33. package/dist/cli/messenger/inbox.js.map +1 -1
  34. package/dist/cli/messenger/mcp-command.js +1 -1
  35. package/dist/cli/messenger/mcp-command.js.map +1 -1
  36. package/dist/cli/messenger/mentions-command.d.ts.map +1 -1
  37. package/dist/cli/messenger/mentions-command.js +6 -7
  38. package/dist/cli/messenger/mentions-command.js.map +1 -1
  39. package/dist/cli/messenger/messages-command.d.ts.map +1 -1
  40. package/dist/cli/messenger/messages-command.js +2 -2
  41. package/dist/cli/messenger/messages-command.js.map +1 -1
  42. package/dist/cli/messenger/messages-send-command.d.ts.map +1 -1
  43. package/dist/cli/messenger/messages-send-command.js +2 -2
  44. package/dist/cli/messenger/messages-send-command.js.map +1 -1
  45. package/dist/cli/messenger/private-people-command.d.ts.map +1 -1
  46. package/dist/cli/messenger/private-people-command.js +5 -4
  47. package/dist/cli/messenger/private-people-command.js.map +1 -1
  48. package/dist/cli/messenger/review.js +6 -6
  49. package/dist/cli/messenger/review.js.map +1 -1
  50. package/dist/cli/messenger/store-maintenance-command.d.ts +1 -1
  51. package/dist/cli/messenger/tasks-command.d.ts.map +1 -1
  52. package/dist/cli/messenger/tasks-command.js +12 -10
  53. package/dist/cli/messenger/tasks-command.js.map +1 -1
  54. package/dist/cli/program.d.ts.map +1 -1
  55. package/dist/cli/program.js +3 -2
  56. package/dist/cli/program.js.map +1 -1
  57. package/dist/cli/stdin-field.d.ts +11 -0
  58. package/dist/cli/stdin-field.d.ts.map +1 -0
  59. package/dist/cli/stdin-field.js +7 -0
  60. package/dist/cli/stdin-field.js.map +1 -0
  61. package/dist/domain/tag-consolidation.d.ts +78 -0
  62. package/dist/domain/tag-consolidation.d.ts.map +1 -0
  63. package/dist/domain/tag-consolidation.js +2 -0
  64. package/dist/domain/tag-consolidation.js.map +1 -0
  65. package/dist/errors/reasons.d.ts.map +1 -1
  66. package/dist/errors/reasons.js +7 -1
  67. package/dist/errors/reasons.js.map +1 -1
  68. package/dist/mcp/agent.d.ts +10 -1
  69. package/dist/mcp/agent.d.ts.map +1 -1
  70. package/dist/mcp/agent.js +67 -21
  71. package/dist/mcp/agent.js.map +1 -1
  72. package/dist/mcp/prompts.js +1 -1
  73. package/dist/mcp/prompts.js.map +1 -1
  74. package/dist/mcp/server.d.ts +5 -0
  75. package/dist/mcp/server.d.ts.map +1 -1
  76. package/dist/mcp/server.js +278 -32
  77. package/dist/mcp/server.js.map +1 -1
  78. package/dist/mcp/session.d.ts +2 -0
  79. package/dist/mcp/session.d.ts.map +1 -1
  80. package/dist/mcp/session.js +2 -0
  81. package/dist/mcp/session.js.map +1 -1
  82. package/dist/mcp/surface.d.ts +5 -2
  83. package/dist/mcp/surface.d.ts.map +1 -1
  84. package/dist/mcp/surface.js +7 -4
  85. package/dist/mcp/surface.js.map +1 -1
  86. package/dist/mcp/tool.d.ts +3 -6
  87. package/dist/mcp/tool.d.ts.map +1 -1
  88. package/dist/mcp/tool.js +3 -36
  89. package/dist/mcp/tool.js.map +1 -1
  90. package/dist/mcp/tools/attachments.d.ts.map +1 -1
  91. package/dist/mcp/tools/attachments.js +3 -138
  92. package/dist/mcp/tools/attachments.js.map +1 -1
  93. package/dist/mcp/tools.d.ts +4 -21
  94. package/dist/mcp/tools.d.ts.map +1 -1
  95. package/dist/mcp/tools.js +4 -97
  96. package/dist/mcp/tools.js.map +1 -1
  97. package/dist/sends/permissions.d.ts.map +1 -1
  98. package/dist/sends/permissions.js +2 -1
  99. package/dist/sends/permissions.js.map +1 -1
  100. package/dist/store/drivers/node-sqlite.d.ts +2 -3
  101. package/dist/store/drivers/node-sqlite.d.ts.map +1 -1
  102. package/dist/store/drivers/node-sqlite.js +2 -3
  103. package/dist/store/drivers/node-sqlite.js.map +1 -1
  104. package/dist/store/index.d.ts +1 -0
  105. package/dist/store/index.d.ts.map +1 -1
  106. package/dist/store/index.js.map +1 -1
  107. package/dist/store/open.d.ts.map +1 -1
  108. package/dist/store/open.js +2 -0
  109. package/dist/store/open.js.map +1 -1
  110. package/dist/store/sqlite/open.d.ts.map +1 -1
  111. package/dist/store/sqlite/open.js +2 -0
  112. package/dist/store/sqlite/open.js.map +1 -1
  113. package/dist/store/sqlite/tag-consolidation.d.ts +5 -0
  114. package/dist/store/sqlite/tag-consolidation.d.ts.map +1 -0
  115. package/dist/store/sqlite/tag-consolidation.js +178 -0
  116. package/dist/store/sqlite/tag-consolidation.js.map +1 -0
  117. package/dist/store/sqlite/tags.js +1 -1
  118. package/dist/store/sqlite/tags.js.map +1 -1
  119. package/dist/store/sqlite/vocabulary.d.ts +2 -1
  120. package/dist/store/sqlite/vocabulary.d.ts.map +1 -1
  121. package/dist/store/sqlite/vocabulary.js +2 -0
  122. package/dist/store/sqlite/vocabulary.js.map +1 -1
  123. package/dist/store/sqlite-warning.d.ts +8 -0
  124. package/dist/store/sqlite-warning.d.ts.map +1 -0
  125. package/dist/store/sqlite-warning.js +26 -0
  126. package/dist/store/sqlite-warning.js.map +1 -0
  127. package/package.json +3 -3
  128. package/parity.json +12 -0
  129. package/dist/mcp/search-sync.d.ts +0 -12
  130. package/dist/mcp/search-sync.d.ts.map +0 -1
  131. package/dist/mcp/search-sync.js +0 -18
  132. package/dist/mcp/search-sync.js.map +0 -1
  133. package/dist/mcp/thread-options.d.ts +0 -19
  134. package/dist/mcp/thread-options.d.ts.map +0 -1
  135. package/dist/mcp/thread-options.js +0 -20
  136. package/dist/mcp/thread-options.js.map +0 -1
  137. package/dist/mcp/tools/account.d.ts +0 -4
  138. package/dist/mcp/tools/account.d.ts.map +0 -1
  139. package/dist/mcp/tools/account.js +0 -31
  140. package/dist/mcp/tools/account.js.map +0 -1
  141. package/dist/mcp/tools/admin-statistics.d.ts +0 -4
  142. package/dist/mcp/tools/admin-statistics.d.ts.map +0 -1
  143. package/dist/mcp/tools/admin-statistics.js +0 -163
  144. package/dist/mcp/tools/admin-statistics.js.map +0 -1
  145. package/dist/mcp/tools/admin.d.ts +0 -5
  146. package/dist/mcp/tools/admin.d.ts.map +0 -1
  147. package/dist/mcp/tools/admin.js +0 -262
  148. package/dist/mcp/tools/admin.js.map +0 -1
  149. package/dist/mcp/tools/chats-read.d.ts +0 -4
  150. package/dist/mcp/tools/chats-read.d.ts.map +0 -1
  151. package/dist/mcp/tools/chats-read.js +0 -28
  152. package/dist/mcp/tools/chats-read.js.map +0 -1
  153. package/dist/mcp/tools/chats-state.d.ts +0 -5
  154. package/dist/mcp/tools/chats-state.d.ts.map +0 -1
  155. package/dist/mcp/tools/chats-state.js +0 -58
  156. package/dist/mcp/tools/chats-state.js.map +0 -1
  157. package/dist/mcp/tools/chats.d.ts +0 -4
  158. package/dist/mcp/tools/chats.d.ts.map +0 -1
  159. package/dist/mcp/tools/chats.js +0 -194
  160. package/dist/mcp/tools/chats.js.map +0 -1
  161. package/dist/mcp/tools/contacts-write.d.ts +0 -5
  162. package/dist/mcp/tools/contacts-write.d.ts.map +0 -1
  163. package/dist/mcp/tools/contacts-write.js +0 -53
  164. package/dist/mcp/tools/contacts-write.js.map +0 -1
  165. package/dist/mcp/tools/contacts.d.ts +0 -4
  166. package/dist/mcp/tools/contacts.d.ts.map +0 -1
  167. package/dist/mcp/tools/contacts.js +0 -196
  168. package/dist/mcp/tools/contacts.js.map +0 -1
  169. package/dist/mcp/tools/conversations.d.ts +0 -5
  170. package/dist/mcp/tools/conversations.d.ts.map +0 -1
  171. package/dist/mcp/tools/conversations.js +0 -265
  172. package/dist/mcp/tools/conversations.js.map +0 -1
  173. package/dist/mcp/tools/folders.d.ts +0 -5
  174. package/dist/mcp/tools/folders.d.ts.map +0 -1
  175. package/dist/mcp/tools/folders.js +0 -103
  176. package/dist/mcp/tools/folders.js.map +0 -1
  177. package/dist/mcp/tools/inbox.d.ts +0 -6
  178. package/dist/mcp/tools/inbox.d.ts.map +0 -1
  179. package/dist/mcp/tools/inbox.js +0 -65
  180. package/dist/mcp/tools/inbox.js.map +0 -1
  181. package/dist/mcp/tools/messages-actions.d.ts +0 -5
  182. package/dist/mcp/tools/messages-actions.d.ts.map +0 -1
  183. package/dist/mcp/tools/messages-actions.js +0 -129
  184. package/dist/mcp/tools/messages-actions.js.map +0 -1
  185. package/dist/mcp/tools/messages-delete.d.ts +0 -4
  186. package/dist/mcp/tools/messages-delete.d.ts.map +0 -1
  187. package/dist/mcp/tools/messages-delete.js +0 -39
  188. package/dist/mcp/tools/messages-delete.js.map +0 -1
  189. package/dist/mcp/tools/messages-send.d.ts +0 -8
  190. package/dist/mcp/tools/messages-send.d.ts.map +0 -1
  191. package/dist/mcp/tools/messages-send.js +0 -107
  192. package/dist/mcp/tools/messages-send.js.map +0 -1
  193. package/dist/mcp/tools/messages-transcribe.d.ts +0 -4
  194. package/dist/mcp/tools/messages-transcribe.d.ts.map +0 -1
  195. package/dist/mcp/tools/messages-transcribe.js +0 -32
  196. package/dist/mcp/tools/messages-transcribe.js.map +0 -1
  197. package/dist/mcp/tools/messages.d.ts +0 -4
  198. package/dist/mcp/tools/messages.d.ts.map +0 -1
  199. package/dist/mcp/tools/messages.js +0 -207
  200. package/dist/mcp/tools/messages.js.map +0 -1
  201. package/dist/mcp/tools/moderation.d.ts +0 -8
  202. package/dist/mcp/tools/moderation.d.ts.map +0 -1
  203. package/dist/mcp/tools/moderation.js +0 -36
  204. package/dist/mcp/tools/moderation.js.map +0 -1
  205. package/dist/mcp/tools/polls.d.ts +0 -6
  206. package/dist/mcp/tools/polls.d.ts.map +0 -1
  207. package/dist/mcp/tools/polls.js +0 -140
  208. package/dist/mcp/tools/polls.js.map +0 -1
  209. package/dist/mcp/tools/private-people.d.ts +0 -4
  210. package/dist/mcp/tools/private-people.d.ts.map +0 -1
  211. package/dist/mcp/tools/private-people.js +0 -121
  212. package/dist/mcp/tools/private-people.js.map +0 -1
  213. package/dist/mcp/tools/rankings.d.ts +0 -4
  214. package/dist/mcp/tools/rankings.d.ts.map +0 -1
  215. package/dist/mcp/tools/rankings.js +0 -112
  216. package/dist/mcp/tools/rankings.js.map +0 -1
  217. package/dist/mcp/tools/reactions.d.ts +0 -5
  218. package/dist/mcp/tools/reactions.d.ts.map +0 -1
  219. package/dist/mcp/tools/reactions.js +0 -33
  220. package/dist/mcp/tools/reactions.js.map +0 -1
  221. package/dist/mcp/tools/review.d.ts +0 -4
  222. package/dist/mcp/tools/review.d.ts.map +0 -1
  223. package/dist/mcp/tools/review.js +0 -68
  224. package/dist/mcp/tools/review.js.map +0 -1
  225. package/dist/mcp/tools/runs.d.ts +0 -4
  226. package/dist/mcp/tools/runs.d.ts.map +0 -1
  227. package/dist/mcp/tools/runs.js +0 -28
  228. package/dist/mcp/tools/runs.js.map +0 -1
  229. package/dist/mcp/tools/search-tools.d.ts +0 -5
  230. package/dist/mcp/tools/search-tools.d.ts.map +0 -1
  231. package/dist/mcp/tools/search-tools.js +0 -132
  232. package/dist/mcp/tools/search-tools.js.map +0 -1
  233. package/dist/mcp/tools/search.d.ts +0 -154
  234. package/dist/mcp/tools/search.d.ts.map +0 -1
  235. package/dist/mcp/tools/search.js +0 -163
  236. package/dist/mcp/tools/search.js.map +0 -1
  237. package/dist/mcp/tools/searches.d.ts +0 -4
  238. package/dist/mcp/tools/searches.d.ts.map +0 -1
  239. package/dist/mcp/tools/searches.js +0 -108
  240. package/dist/mcp/tools/searches.js.map +0 -1
  241. package/dist/mcp/tools/store.d.ts +0 -4
  242. package/dist/mcp/tools/store.d.ts.map +0 -1
  243. package/dist/mcp/tools/store.js +0 -163
  244. package/dist/mcp/tools/store.js.map +0 -1
  245. package/dist/mcp/tools/tags.d.ts +0 -4
  246. package/dist/mcp/tools/tags.d.ts.map +0 -1
  247. package/dist/mcp/tools/tags.js +0 -64
  248. package/dist/mcp/tools/tags.js.map +0 -1
  249. package/dist/mcp/tools/tasks.d.ts +0 -4
  250. package/dist/mcp/tools/tasks.d.ts.map +0 -1
  251. package/dist/mcp/tools/tasks.js +0 -369
  252. package/dist/mcp/tools/tasks.js.map +0 -1
  253. package/dist/mcp/tools/topics.d.ts +0 -5
  254. package/dist/mcp/tools/topics.d.ts.map +0 -1
  255. package/dist/mcp/tools/topics.js +0 -134
  256. package/dist/mcp/tools/topics.js.map +0 -1
@@ -1,32 +0,0 @@
1
- import * as v from "valibot";
2
- import { heardAnswer } from "../../cli/messenger/message-answers.js";
3
- import { choose, hearLocally, hearOnline } from "../../speech/transcribe.js";
4
- import { chatOf, message, nameOf, READ, tool } from "../tool.js";
5
- export const messagesTranscribeTools = (messenger) => ({
6
- messages_transcribe: tool({
7
- title: "Read a voice message",
8
- description: `A voice message as text — by ${nameOf(messenger)} where the account allows it, else by a speech model ` +
9
- "on this machine. Can take up to a minute; pending: true means it was not finished yet — ask again later. " +
10
- "Never downloads a model: a missing one is refused with the command the owner runs. " +
11
- "Answers item { message_id, text, pending, via, model? }.",
12
- input: v.object({
13
- chat: chatOf(messenger),
14
- message,
15
- local: v.optional(v.pipe(v.boolean(), v.description("use the model on this machine, never the messenger"))),
16
- model: v.optional(v.pipe(v.string(), v.minLength(1), v.description("which downloaded speech model hears it"))),
17
- }),
18
- annotations: READ,
19
- online: async (adapter, args, defaults) => {
20
- const choice = choose(messenger, defaults.settings, {
21
- local: args.local === true,
22
- ...(args.model === undefined ? {} : { model: args.model }),
23
- }, defaults.env);
24
- const heard = await hearOnline(messenger, adapter, args.chat, args.message, choice);
25
- if (!(heard instanceof Uint8Array))
26
- return heardAnswer(heard, args.chat);
27
- await defaults.release?.();
28
- return heardAnswer(await hearLocally(heard, args.message, choice), args.chat);
29
- },
30
- }),
31
- });
32
- //# sourceMappingURL=messages-transcribe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages-transcribe.js","sourceRoot":"","sources":["../../../src/mcp/tools/messages-transcribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC5E,OAAO,EAAgB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,SAAoB,EAA2B,EAAE,CAAC,CAAC;IACzF,mBAAmB,EAAE,IAAI,CAAC;QACxB,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,gCAAgC,MAAM,CAAC,SAAS,CAAC,uDAAuD;YACxG,2GAA2G;YAC3G,qFAAqF;YACrF,0DAA0D;QAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;YACvB,OAAO;YACP,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC3G,KAAK,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,wCAAwC,CAAC,CAAC,CAAC;SAC/G,CAAC;QACF,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,MAAM,CACnB,SAAS,EACT,QAAQ,CAAC,QAAQ,EACjB;gBACE,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI;gBAC1B,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;aAC3D,EACD,QAAQ,CAAC,GAAG,CACb,CAAA;YACD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACnF,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;gBAAE,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YACxE,MAAM,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAA;YAC1B,OAAO,WAAW,CAAC,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/E,CAAC;KACF,CAAC;CACH,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { Messenger } from "../../cli/messenger/context.js";
2
- import { type AnyTool } from "../tool.js";
3
- export declare const messagesTools: (messenger: Messenger) => Record<string, AnyTool>;
4
- //# sourceMappingURL=messages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/messages.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAW/D,OAAO,EAAE,KAAK,OAAO,EAA8C,MAAM,YAAY,CAAA;AAcrF,eAAO,MAAM,aAAa,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAI1E,CAAA"}
@@ -1,207 +0,0 @@
1
- import { CliError } from "@wirecat/cli-base";
2
- import * as v from "valibot";
3
- import { itemOf, listOf } from "../../cli/envelope.js";
4
- import { COMMENTS_QUERY, cursorOf, historyQuery, historyWindow } from "../../cli/messenger/history-query.js";
5
- import { evidenceAnswer, threadAnswer } from "../../cli/messenger/message-answers.js";
6
- import { messageItems, selfOf } from "../../cli/messenger/message-items.js";
7
- import { isLocator, parseLocator } from "../../domain/locator.js";
8
- import { capability } from "../../ports/messenger.js";
9
- import { readEvidencePacket, readMail } from "../../services/index.js";
10
- import { heard, hearForTool, hearingMissing, modelWith } from "../../speech/hearing.js";
11
- import { searchServices } from "../search-sync.js";
12
- import { threadArgs, threadInputs } from "../thread-options.js";
13
- import { chatOf, limit, message, nameOf, READ, tool } from "../tool.js";
14
- import { answerMessagesStats, messagesStatsDescription, messagesStatsInput } from "./search.js";
15
- const windowOf = (found, reader, window) => listOf("messages context", {
16
- items: messageItems(found, reader),
17
- limit: window.before + window.after + 1,
18
- has_more: false,
19
- });
20
- /** Mail lives in the store's mail tables, whichever messenger serves the tool. */
21
- const isMail = (chat, message) => message === undefined && isLocator(chat) && parseLocator(chat).provider === "email";
22
- export const messagesTools = (messenger) => {
23
- const tools = messageTools(messenger);
24
- if (messenger.scheduledSends === false)
25
- delete tools.messages_scheduled;
26
- return tools;
27
- };
28
- const messageTools = (messenger) => {
29
- const chat = chatOf(messenger);
30
- const name = nameOf(messenger);
31
- const topics = messenger.topics !== false;
32
- return {
33
- messages_evidence: tool({
34
- title: "Prepare stored chat evidence",
35
- description: "A chat evidence packet from the current profile's local archive, newest first. Never connects or marks " +
36
- "read. Whole messages fill at most 64 KiB of JSON items; the packet envelope is additional. Returns " +
37
- "the packet as item: source locators, fingerprints and coverage (history unknown). When older messages " +
38
- "exist, next has page.next: pass its cursor. An oversized first message returns an empty, byte-truncated " +
39
- "packet with no next step; handle that obstruction explicitly. Prepares evidence, not a generated summary.",
40
- input: v.object({
41
- chat,
42
- limit,
43
- cursor: v.optional(v.pipe(v.string(), v.minLength(1), v.description("page.next's cursor"))),
44
- }),
45
- annotations: { ...READ, openWorldHint: false },
46
- stored: async (store, account, args, defaults) => {
47
- const limit = args.limit ?? defaults.limit;
48
- const packet = await readEvidencePacket(store, account, { chat: args.chat, limit, ...(args.cursor === undefined ? {} : { before: args.cursor }) }, messenger);
49
- return evidenceAnswer(packet, args.chat, limit);
50
- },
51
- }),
52
- messages_list: tool({
53
- title: "Read a chat",
54
- description: "Recent messages in a chat, oldest first. Does not mark anything read. `query` says where to start" +
55
- (topics ? " and which topic" : "") +
56
- ", all terms together: id<42 or date<2h reads back, id>42 or date>2026-10-01 forward" +
57
- (topics ? ", topic:12 one forum topic" : "") +
58
- (messenger.messageStars === true ? ", starred:true only the ones the owner starred" : "") +
59
- ". When more exist, next has page.next: pass its cursor. A voice message carries " +
60
- "`transcript` once heard; `transcribe` hears the rest.",
61
- input: v.object({
62
- chat,
63
- query: v.optional(v.pipe(v.string(), v.description(topics ? "id<42, date>2026-10-01, topic:12" : "id<42, date>2026-10-01"))),
64
- cursor: v.optional(v.pipe(v.string(), v.minLength(1), v.description("page.next's cursor"))),
65
- limit,
66
- transcribe: v.optional(v.pipe(v.boolean(), v.description("turn voice messages not heard yet into text; can take minutes"))),
67
- model: v.optional(v.pipe(v.string(), v.minLength(1), v.description("which downloaded speech model hears them, with transcribe"))),
68
- }),
69
- annotations: READ,
70
- output: { entity: "message", list: true },
71
- served: async (services, args, defaults, connect) => {
72
- const size = args.limit ?? defaults.limit;
73
- const window = historyWindow(args.query, args.cursor, "messages list", historyQuery(messenger));
74
- const found = await services.messages.list(args.chat, { limit: size, ...window });
75
- const hearing = await hearForTool(messenger, connect, found.items, args.transcribe === true, defaults, modelWith(args.transcribe, args.model));
76
- const cursor = found.hasMore
77
- ? cursorOf(window, { first: found.items[0]?.id, last: found.items.at(-1)?.id })
78
- : undefined;
79
- return listOf("messages list", {
80
- items: messageItems(heard(found.items, hearing), await services.messages.reader()),
81
- limit: size,
82
- has_more: found.hasMore,
83
- paging: "cursor",
84
- ...(cursor === undefined ? {} : { cursor }),
85
- args: { chat: args.chat, ...(args.query === undefined ? {} : { query: args.query }) },
86
- missing: hearingMissing(hearing, args.transcribe === true),
87
- });
88
- },
89
- }),
90
- messages_comments: tool({
91
- title: "Comments under a channel post",
92
- description: "The comments under one channel post, oldest to newest, read from the messenger. They live in the " +
93
- "channel's discussion group, which each item's chat_id names. `query` id<42 reads back from a comment; " +
94
- "page.next's cursor goes on. A post that takes no comments is not_found. Does not mark read.",
95
- input: v.object({
96
- chat,
97
- post: v.pipe(message, v.description("the post's message id in the channel")),
98
- query: v.optional(v.pipe(v.string(), v.description("id<42"))),
99
- cursor: v.optional(v.pipe(v.string(), v.minLength(1), v.description("page.next's cursor"))),
100
- limit,
101
- }),
102
- annotations: READ,
103
- output: { entity: "message", list: true },
104
- served: async (services, args, defaults) => {
105
- const size = args.limit ?? defaults.limit;
106
- const window = historyWindow(args.query, args.cursor, "messages comments", COMMENTS_QUERY);
107
- const found = await services.messages.comments(args.chat, args.post, {
108
- limit: size,
109
- ...(window.before === undefined ? {} : { before: window.before }),
110
- });
111
- const cursor = found.hasMore ? cursorOf(window, { first: found.items[0]?.id }) : undefined;
112
- return listOf("messages comments", {
113
- items: messageItems(found.items, await services.messages.reader()),
114
- limit: size,
115
- has_more: found.hasMore,
116
- paging: "cursor",
117
- ...(cursor === undefined ? {} : { cursor }),
118
- args: { chat: args.chat, post: args.post, ...(args.query === undefined ? {} : { query: args.query }) },
119
- });
120
- },
121
- }),
122
- messages_link: tool({
123
- title: "Get a message link",
124
- description: "An account-scoped locator (ref) and optional provider permalink, without message content; access describes the link audience, not permission granted to its reader. Does not mark read. A locator can replace chat and message.",
125
- input: v.object({ chat, message: v.optional(message) }),
126
- annotations: READ,
127
- output: { entity: "message_link", list: false },
128
- served: async (services, args) => {
129
- const { locator, ...link } = await services.messages.link(args.chat, args.message);
130
- return itemOf({ ref: locator, ...link });
131
- },
132
- }),
133
- messages_context: tool({
134
- title: "Show a message",
135
- description: "One message by id, and optionally the messages either side of it, oldest first. The one asked for " +
136
- "carries anchor: true; `before_n` and `after_n` say how many either side. " +
137
- "With thread=true, reads the stored parent chain and replies without connecting: returns locator, mode, items, links with provenance/stale labels, chain, stale, stopped and bounds. " +
138
- "thread_hops (8), thread_messages (50), thread_bytes (65536) and thread_within (1d) bound it; no graph gives a labelled local time fallback. " +
139
- "A msg: locator in chat needs no message argument; it must belong to the active account. offline=true reads ordinary context from this account's local store without connecting. " +
140
- "A msg:email/… locator reads the whole email and its thread from the stored mail, with people, labels and thread references.",
141
- input: v.object({
142
- ...threadInputs,
143
- offline: v.optional(v.boolean()),
144
- chat,
145
- message: v.optional(message),
146
- before_n: v.optional(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(100))),
147
- after_n: v.optional(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(100))),
148
- }),
149
- annotations: READ,
150
- storedWhen: (args) => {
151
- if (args.thread || args.offline || isMail(args.chat, args.message))
152
- return true;
153
- if (args.message === undefined && !isLocator(args.chat))
154
- throw new CliError("validation_error", "give a message id, or a msg: locator");
155
- return false;
156
- },
157
- stored: async (store, account, args, defaults) => {
158
- const window = { before: args.before_n ?? 0, after: args.after_n ?? 0 };
159
- if (isMail(args.chat, args.message))
160
- return windowOf(await readMail(store, args.chat, window), parseLocator(args.chat), window);
161
- const services = searchServices(messenger, store, account, defaults);
162
- if (!args.thread)
163
- return windowOf(await services.messages.around(args.chat, args.message, window), account, window);
164
- return threadAnswer(await services.messages.thread(args.chat, args.message, {
165
- ...threadArgs(args).thread,
166
- before: args.before_n ?? 5,
167
- after: args.after_n ?? 5,
168
- signal: defaults.signal,
169
- }), account);
170
- },
171
- served: async (services, args) => {
172
- if (args.message === undefined && !isLocator(args.chat))
173
- throw new CliError("validation_error", "give a message id, or a msg: locator");
174
- const window = { before: args.before_n ?? 0, after: args.after_n ?? 0 };
175
- return windowOf(await services.messages.around(args.chat, args.message, window), await services.messages.reader(), window);
176
- },
177
- }),
178
- messages_scheduled: tool({
179
- title: "Messages scheduled in a chat",
180
- description: "Messages waiting to be sent later in a chat, soonest first, each with scheduled_for. Look here after a " +
181
- `scheduled send ended in outcome_unknown. Cancelling one is done in the ${name} app.`,
182
- input: v.object({ chat }),
183
- annotations: READ,
184
- output: { entity: "message", list: true },
185
- online: async (adapter, args) => {
186
- const items = await capability(adapter, "scheduled", "list scheduled messages")(args.chat);
187
- return listOf("messages scheduled", {
188
- items: messageItems(items, selfOf(messenger, adapter)),
189
- limit: Math.max(items.length, 1),
190
- has_more: false,
191
- });
192
- },
193
- }),
194
- stats_messages_show: tool({
195
- title: "Count messages",
196
- description: messagesStatsDescription(messenger),
197
- input: messagesStatsInput(messenger),
198
- annotations: { ...READ, openWorldHint: false },
199
- output: { entity: "message_counts", list: false },
200
- stored: (store, account, args, defaults, connect) => {
201
- const services = searchServices(messenger, store, account, defaults, args.sync_first ? connect : undefined);
202
- return answerMessagesStats(services.messages, args, defaults, services.searches);
203
- },
204
- }),
205
- };
206
- };
207
- //# sourceMappingURL=messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/mcp/tools/messages.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { Messenger } from "../../cli/messenger/context.js";
2
- import { type AnyTool } from "../tool.js";
3
- /**
4
- * A group's rules, and the run that acts on them. Over MCP nobody can answer a question per action,
5
- * so an action whose level in the group's rules is `ask` is planned, not taken.
6
- */
7
- export declare const moderationTools: (messenger: Messenger) => Record<string, AnyTool>;
8
- //# sourceMappingURL=moderation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"moderation.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/moderation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAG/D,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,YAAY,CAAA;AAEpE;;;GAGG;AACH,eAAO,MAAM,eAAe,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAwC3E,CAAA"}
@@ -1,36 +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 { momentOf } from "../../services/moment.js";
5
- import { chatOf, READ, tool, WRITE } from "../tool.js";
6
- /**
7
- * A group's rules, and the run that acts on them. Over MCP nobody can answer a question per action,
8
- * so an action whose level in the group's rules is `ask` is planned, not taken.
9
- */
10
- export const moderationTools = (messenger) => ({
11
- chats_rules_show: tool({
12
- title: "A group's moderation rules",
13
- description: "The rules `chats moderate` judges a group by; the defaults, marked not saved, if it has none.",
14
- input: v.object({ chat: chatOf(messenger) }),
15
- annotations: READ,
16
- online: async (adapter, args, { guard, settings, env }) => itemOf(snakeKeys(await servicesFor(onlineDeps(messenger, adapter, guard, { profile: settings.profile, env })).moderation.rules(args.chat))),
17
- }),
18
- chats_moderate: tool({
19
- title: "Apply a group's rules",
20
- description: "Judge a group's new messages and members by its rules, and delete or remove where the rules' levels allow; " +
21
- "an action at level ask is planned for the owner, not taken. Only when the owner asked for this group.",
22
- input: v.object({
23
- chat: chatOf(messenger),
24
- since_time: v.optional(v.pipe(v.string(), v.description("ISO 8601, or 2h / 1d ago; the saved point stays"))),
25
- dry_run: v.optional(v.pipe(v.boolean(), v.description("judge and plan; do nothing"))),
26
- }),
27
- annotations: WRITE,
28
- permission: "groups",
29
- online: async (adapter, args, { guard, settings, env }) => itemOf(snakeKeys(await servicesFor(onlineDeps(messenger, adapter, guard, { profile: settings.profile, env })).moderation.moderate(args.chat, {
30
- ...(args.since_time === undefined ? {} : { since: momentOf(args.since_time, "since_time") }),
31
- dryRun: args.dry_run === true,
32
- allowDangerous: false,
33
- }))),
34
- }),
35
- });
36
- //# sourceMappingURL=moderation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"moderation.js","sourceRoot":"","sources":["../../../src/mcp/tools/moderation.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,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAgB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAoB,EAA2B,EAAE,CAAC,CAAC;IACjF,gBAAgB,EAAE,IAAI,CAAC;QACrB,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,+FAA+F;QAC5G,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,CACxD,MAAM,CACJ,SAAS,CACP,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAC3G,IAAI,CAAC,IAAI,CACV,CACF,CACF;KACJ,CAAC;IACF,cAAc,EAAE,IAAI,CAAC;QACnB,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,6GAA6G;YAC7G,uGAAuG;QACzG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;YACvB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC5G,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC,CAAC;SACtF,CAAC;QACF,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,CACxD,MAAM,CACJ,SAAS,CACP,MAAM,WAAW,CACf,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAC1E,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;YAC/B,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;YAC5F,MAAM,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI;YAC7B,cAAc,EAAE,KAAK;SACtB,CAAC,CACH,CACF;KACJ,CAAC;CACH,CAAC,CAAA"}
@@ -1,6 +0,0 @@
1
- import type { Messenger } from "../../cli/messenger/context.js";
2
- import { type AnyTool } from "../tool.js";
3
- export declare const pollReadTools: (messenger: Messenger) => Record<string, AnyTool>;
4
- /** Offered by the profile's permissions, each under the permission its guard kind names. */
5
- export declare const pollWriteTools: (messenger: Messenger) => Record<string, AnyTool>;
6
- //# sourceMappingURL=polls.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polls.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/polls.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAM/D,OAAO,EAAE,KAAK,OAAO,EAAmD,MAAM,YAAY,CAAA;AAc1F,eAAO,MAAM,aAAa,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA6CzE,CAAA;AAEF,4FAA4F;AAC5F,eAAO,MAAM,cAAc,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAkH3E,CAAA"}
@@ -1,140 +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 { listQuery, nativeTerms, queryArgument } from "../../cli/list-query.js";
5
- import { pollVoteAnswer } from "../../cli/messenger/chat-answers.js";
6
- import { selfOf } from "../../cli/messenger/message-items.js";
7
- import { writtenAnswer } from "../../cli/messenger/message-writes.js";
8
- import { VOTERS_QUERY } from "../../cli/messenger/people-queries.js";
9
- import { capability } from "../../ports/messenger.js";
10
- import { closeAfterOf, guardedClose, guardedCreatePoll, guardedVote, pollVoters, quizOf } from "../../sends/polls.js";
11
- import { chatOf, limit, message, page, READ, tool, WRITE } from "../tool.js";
12
- const ANONYMOUS = v.optional(v.boolean());
13
- const TOPIC = v.optional(v.pipe(v.string(), v.minLength(1), v.description("the forum topic id")));
14
- const SEND_AS = v.optional(v.pipe(v.string(), v.minLength(1), v.description("an id from `chats send-as` to post as; required where the chat posts as someone else by default")));
15
- const answerId = v.pipe(v.string(), v.minLength(1), v.description("an answer id, as `polls show` gives it"));
16
- export const pollReadTools = (messenger) => ({
17
- ...(messenger.pollVoters
18
- ? {
19
- polls_voters: tool({
20
- title: "Who voted in a poll",
21
- description: `Who voted for what${messenger.pollAnonymous === false ? "" : " in a poll that is not anonymous"}, newest ` +
22
- "first: items [{ person_id, name, username, " +
23
- "answers, voted_at }]. query answers:<id> keeps those who chose that answer. Reading changes nothing.",
24
- input: v.object({ chat: chatOf(messenger), message, query: queryArgument(VOTERS_QUERY), limit, page }),
25
- annotations: { ...READ, idempotentHint: true },
26
- output: { entity: "poll_vote", list: true },
27
- online: async (adapter, args, defaults) => {
28
- const answer = nativeTerms(listQuery(args.query ?? "", VOTERS_QUERY, "polls voters"), "polls voters").get("answers")?.value;
29
- const size = args.limit ?? defaults.limit;
30
- const number = args.page ?? 1;
31
- const found = await pollVoters(adapter, {
32
- chat: args.chat,
33
- message: args.message,
34
- limit: size * number,
35
- ...(answer === undefined ? {} : { answer }),
36
- });
37
- return listOf("polls voters", {
38
- items: found.items.slice((number - 1) * size).map(pollVoteAnswer),
39
- limit: size,
40
- has_more: found.hasMore,
41
- page: number,
42
- args: { chat: args.chat, message: args.message, ...(args.query ? { query: args.query } : {}) },
43
- });
44
- },
45
- }),
46
- }
47
- : {}),
48
- polls_show: tool({
49
- title: "Show a poll",
50
- description: "A poll as the message carries it now: its question, and each answer with the id a vote names.",
51
- input: v.object({ chat: chatOf(messenger), message }),
52
- annotations: { ...READ, idempotentHint: true },
53
- online: async (adapter, args) => {
54
- const poll = capability(adapter, "poll", "read a poll");
55
- return itemOf(snakeKeys(await poll((await adapter.resolve(args.chat)).id, args.message)));
56
- },
57
- }),
58
- });
59
- /** Offered by the profile's permissions, each under the permission its guard kind names. */
60
- export const pollWriteTools = (messenger) => {
61
- const chat = chatOf(messenger);
62
- return {
63
- polls_vote: tool({
64
- title: "Vote in a poll",
65
- description: "Vote as the owner, by answer ids from `polls show`; an empty list takes the vote back. The others see it" +
66
- `${messenger.pollAnonymous === false ? "" : " unless the poll is anonymous"}. Only when the owner asked for this vote.`,
67
- input: v.object({ chat, message, answers: v.array(answerId) }),
68
- annotations: WRITE,
69
- permission: "reaction",
70
- online: async (adapter, args, { guard }) => itemOf(snakeKeys(await guardedVote(guard, adapter, { chat: args.chat, message: args.message, answers: args.answers }))),
71
- }),
72
- ...(messenger.pollClose === false
73
- ? {}
74
- : {
75
- polls_close: tool({
76
- title: "Close a poll",
77
- description: "Close the owner's own poll; it cannot be reopened. Only when the owner asked for it.",
78
- input: v.object({ chat, message }),
79
- annotations: WRITE,
80
- permission: "edit",
81
- online: async (adapter, args, { guard }) => itemOf(snakeKeys(await guardedClose(guard, adapter, { chat: args.chat, message: args.message }))),
82
- }),
83
- }),
84
- polls_create: tool({
85
- title: "Create a poll",
86
- description: `Send a poll as the owner: ${messenger.pollAnonymous === false ? "everyone sees who voted for what" : "public unless anonymous is true"}. ` +
87
- "Only when the owner asked for this exact poll in this exact chat. On outcome_unknown, retry with the " +
88
- "operation_id it returns, never a new one.",
89
- input: v.object({
90
- chat,
91
- text: v.pipe(v.string(), v.minLength(1), v.description("the question")),
92
- answers: v.pipe(v.array(v.pipe(v.string(), v.minLength(1))), v.minLength(2)),
93
- multiple: v.optional(v.boolean()),
94
- // Typed as present so the call reads them; offered only where the messenger has them.
95
- ...(messenger.pollAnonymous === false ? {} : { anonymous: ANONYMOUS }),
96
- revote: v.optional(v.pipe(v.boolean(), v.description(messenger.pollRevote === false
97
- ? "ignored: this messenger decides alone whether a vote can be changed"
98
- : "people may change their vote; without it they cannot"))),
99
- ...(messenger.topics === false ? {} : { topic: TOPIC }),
100
- ...(messenger.sendAs === false ? {} : { send_as: SEND_AS }),
101
- operation_id: v.optional(v.pipe(v.string(), v.minLength(1), v.description("from an earlier outcome_unknown"))),
102
- quiz: v.optional(v.pipe(v.boolean(), v.description("a quiz: one answer is right, and a vote is final; where the messenger makes them"))),
103
- correct: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.description("with quiz: the right answer's position, from 1"))),
104
- solution: v.optional(v.pipe(v.string(), v.minLength(1), v.description("with quiz: what people see once they answered"))),
105
- close_time: v.optional(v.pipe(v.string(), v.minLength(1), v.description("it closes by itself this long after sending, like 90s or 5m; where the messenger can"))),
106
- }),
107
- annotations: WRITE,
108
- permission: "send",
109
- online: async (adapter, args, { guard }) => {
110
- if (args.quiz === true && !messenger.pollQuiz)
111
- throw new CliError("validation_error", "this messenger makes no quizzes");
112
- const asQuiz = quizOf({
113
- ...(args.quiz === undefined ? {} : { quiz: args.quiz }),
114
- ...(args.correct === undefined ? {} : { correct: args.correct }),
115
- ...(args.solution === undefined ? {} : { solution: args.solution }),
116
- });
117
- const closeAfter = closeAfterOf(args.close_time, messenger.pollCloseSeconds);
118
- const reader = selfOf(messenger, adapter);
119
- const sent = await guardedCreatePoll(guard, adapter, {
120
- chat: args.chat,
121
- poll: {
122
- question: args.text,
123
- answers: args.answers,
124
- multiple: args.multiple === true,
125
- anonymous: args.anonymous === true,
126
- revote: args.revote === true,
127
- ...(asQuiz === undefined ? {} : { quiz: asQuiz }),
128
- ...(closeAfter === undefined ? {} : { closeAfter }),
129
- },
130
- silent: false,
131
- ...(args.operation_id === undefined ? {} : { sendId: args.operation_id }),
132
- ...(args.topic === undefined ? {} : { threadId: args.topic }),
133
- ...(args.send_as === undefined ? {} : { sendAs: args.send_as }),
134
- });
135
- return writtenAnswer(sent, reader);
136
- },
137
- }),
138
- };
139
- };
140
- //# sourceMappingURL=polls.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polls.js","sourceRoot":"","sources":["../../../src/mcp/tools/polls.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { Messenger } from "../../cli/messenger/context.js";
2
- import { type AnyTool } from "../tool.js";
3
- export declare const privatePeopleTools: (messenger: Messenger) => Record<string, AnyTool>;
4
- //# sourceMappingURL=private-people.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"private-people.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/private-people.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE/D,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,YAAY,CAAA;AAOrD,eAAO,MAAM,kBAAkB,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAmK9E,CAAA"}