@wirecat/cli-core 0.339.0 → 0.341.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 (350) 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 +4 -2
  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/account-command.d.ts.map +1 -1
  18. package/dist/cli/messenger/account-command.js +3 -3
  19. package/dist/cli/messenger/account-command.js.map +1 -1
  20. package/dist/cli/messenger/admin-commands.d.ts +3 -0
  21. package/dist/cli/messenger/admin-commands.d.ts.map +1 -1
  22. package/dist/cli/messenger/admin-commands.js +15 -4
  23. package/dist/cli/messenger/admin-commands.js.map +1 -1
  24. package/dist/cli/messenger/attachments-command.d.ts.map +1 -1
  25. package/dist/cli/messenger/attachments-command.js +10 -3
  26. package/dist/cli/messenger/attachments-command.js.map +1 -1
  27. package/dist/cli/messenger/catch-up.d.ts +8 -2
  28. package/dist/cli/messenger/catch-up.d.ts.map +1 -1
  29. package/dist/cli/messenger/catch-up.js +11 -3
  30. package/dist/cli/messenger/catch-up.js.map +1 -1
  31. package/dist/cli/messenger/context.d.ts +14 -0
  32. package/dist/cli/messenger/context.d.ts.map +1 -1
  33. package/dist/cli/messenger/context.js +8 -4
  34. package/dist/cli/messenger/context.js.map +1 -1
  35. package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
  36. package/dist/cli/messenger/conversations-command.js +25 -1
  37. package/dist/cli/messenger/conversations-command.js.map +1 -1
  38. package/dist/cli/messenger/flood-command.js +2 -2
  39. package/dist/cli/messenger/flood-command.js.map +1 -1
  40. package/dist/cli/messenger/flooded.js +10 -10
  41. package/dist/cli/messenger/flooded.js.map +1 -1
  42. package/dist/cli/messenger/guard-commands.js +1 -1
  43. package/dist/cli/messenger/guard-commands.js.map +1 -1
  44. package/dist/cli/messenger/inbox.d.ts.map +1 -1
  45. package/dist/cli/messenger/inbox.js +11 -6
  46. package/dist/cli/messenger/inbox.js.map +1 -1
  47. package/dist/cli/messenger/mcp-command.js +1 -1
  48. package/dist/cli/messenger/mcp-command.js.map +1 -1
  49. package/dist/cli/messenger/mentions-command.d.ts.map +1 -1
  50. package/dist/cli/messenger/mentions-command.js +6 -7
  51. package/dist/cli/messenger/mentions-command.js.map +1 -1
  52. package/dist/cli/messenger/messages-command.d.ts.map +1 -1
  53. package/dist/cli/messenger/messages-command.js +2 -2
  54. package/dist/cli/messenger/messages-command.js.map +1 -1
  55. package/dist/cli/messenger/messages-send-command.d.ts.map +1 -1
  56. package/dist/cli/messenger/messages-send-command.js +13 -6
  57. package/dist/cli/messenger/messages-send-command.js.map +1 -1
  58. package/dist/cli/messenger/private-people-command.d.ts.map +1 -1
  59. package/dist/cli/messenger/private-people-command.js +5 -4
  60. package/dist/cli/messenger/private-people-command.js.map +1 -1
  61. package/dist/cli/messenger/refreshed-refs.d.ts +16 -0
  62. package/dist/cli/messenger/refreshed-refs.d.ts.map +1 -0
  63. package/dist/cli/messenger/refreshed-refs.js +31 -0
  64. package/dist/cli/messenger/refreshed-refs.js.map +1 -0
  65. package/dist/cli/messenger/review.js +6 -6
  66. package/dist/cli/messenger/review.js.map +1 -1
  67. package/dist/cli/messenger/serve-relay.d.ts +3 -0
  68. package/dist/cli/messenger/serve-relay.d.ts.map +1 -1
  69. package/dist/cli/messenger/stored.d.ts +1 -1
  70. package/dist/cli/messenger/stored.d.ts.map +1 -1
  71. package/dist/cli/messenger/stored.js +1 -1
  72. package/dist/cli/messenger/stored.js.map +1 -1
  73. package/dist/cli/messenger/tasks-command.d.ts.map +1 -1
  74. package/dist/cli/messenger/tasks-command.js +11 -9
  75. package/dist/cli/messenger/tasks-command.js.map +1 -1
  76. package/dist/cli/messenger/transcribe-command.d.ts.map +1 -1
  77. package/dist/cli/messenger/transcribe-command.js +3 -1
  78. package/dist/cli/messenger/transcribe-command.js.map +1 -1
  79. package/dist/cli/program.d.ts.map +1 -1
  80. package/dist/cli/program.js +7 -3
  81. package/dist/cli/program.js.map +1 -1
  82. package/dist/cli/stdin-field.d.ts +11 -0
  83. package/dist/cli/stdin-field.d.ts.map +1 -0
  84. package/dist/cli/stdin-field.js +7 -0
  85. package/dist/cli/stdin-field.js.map +1 -0
  86. package/dist/domain/attachments.d.ts +15 -1
  87. package/dist/domain/attachments.d.ts.map +1 -1
  88. package/dist/domain/attachments.js.map +1 -1
  89. package/dist/domain/models.d.ts +2 -0
  90. package/dist/domain/models.d.ts.map +1 -1
  91. package/dist/domain/models.js.map +1 -1
  92. package/dist/domain/tag-consolidation.d.ts +78 -0
  93. package/dist/domain/tag-consolidation.d.ts.map +1 -0
  94. package/dist/domain/tag-consolidation.js +2 -0
  95. package/dist/domain/tag-consolidation.js.map +1 -0
  96. package/dist/errors/reasons.d.ts.map +1 -1
  97. package/dist/errors/reasons.js +7 -1
  98. package/dist/errors/reasons.js.map +1 -1
  99. package/dist/mcp/agent.d.ts +10 -1
  100. package/dist/mcp/agent.d.ts.map +1 -1
  101. package/dist/mcp/agent.js +65 -20
  102. package/dist/mcp/agent.js.map +1 -1
  103. package/dist/mcp/prompts.js +1 -1
  104. package/dist/mcp/prompts.js.map +1 -1
  105. package/dist/mcp/server.d.ts +5 -0
  106. package/dist/mcp/server.d.ts.map +1 -1
  107. package/dist/mcp/server.js +278 -32
  108. package/dist/mcp/server.js.map +1 -1
  109. package/dist/mcp/session.d.ts +2 -0
  110. package/dist/mcp/session.d.ts.map +1 -1
  111. package/dist/mcp/session.js +2 -0
  112. package/dist/mcp/session.js.map +1 -1
  113. package/dist/mcp/surface.d.ts +5 -2
  114. package/dist/mcp/surface.d.ts.map +1 -1
  115. package/dist/mcp/surface.js +7 -4
  116. package/dist/mcp/surface.js.map +1 -1
  117. package/dist/mcp/tool.d.ts +3 -6
  118. package/dist/mcp/tool.d.ts.map +1 -1
  119. package/dist/mcp/tool.js +3 -36
  120. package/dist/mcp/tool.js.map +1 -1
  121. package/dist/mcp/tools/attachments.d.ts.map +1 -1
  122. package/dist/mcp/tools/attachments.js +3 -138
  123. package/dist/mcp/tools/attachments.js.map +1 -1
  124. package/dist/mcp/tools/messages-photo.d.ts.map +1 -1
  125. package/dist/mcp/tools/messages-photo.js +3 -1
  126. package/dist/mcp/tools/messages-photo.js.map +1 -1
  127. package/dist/mcp/tools.d.ts +4 -21
  128. package/dist/mcp/tools.d.ts.map +1 -1
  129. package/dist/mcp/tools.js +4 -97
  130. package/dist/mcp/tools.js.map +1 -1
  131. package/dist/meetings/mcp/index.d.ts +15 -15
  132. package/dist/meetings/mcp/index.d.ts.map +1 -1
  133. package/dist/ports/messenger.d.ts +3 -1
  134. package/dist/ports/messenger.d.ts.map +1 -1
  135. package/dist/ports/messenger.js.map +1 -1
  136. package/dist/sends/file-lock.d.ts +10 -1
  137. package/dist/sends/file-lock.d.ts.map +1 -1
  138. package/dist/sends/file-lock.js +42 -14
  139. package/dist/sends/file-lock.js.map +1 -1
  140. package/dist/sends/guard.d.ts +5 -0
  141. package/dist/sends/guard.d.ts.map +1 -1
  142. package/dist/sends/guard.js +54 -42
  143. package/dist/sends/guard.js.map +1 -1
  144. package/dist/sends/guarded.d.ts.map +1 -1
  145. package/dist/sends/guarded.js +14 -1
  146. package/dist/sends/guarded.js.map +1 -1
  147. package/dist/sends/index.d.ts +1 -1
  148. package/dist/sends/index.d.ts.map +1 -1
  149. package/dist/sends/journal.d.ts +3 -1
  150. package/dist/sends/journal.d.ts.map +1 -1
  151. package/dist/sends/journal.js +5 -1
  152. package/dist/sends/journal.js.map +1 -1
  153. package/dist/sends/pace.d.ts +3 -3
  154. package/dist/sends/pace.d.ts.map +1 -1
  155. package/dist/sends/pace.js +7 -7
  156. package/dist/sends/pace.js.map +1 -1
  157. package/dist/sends/permissions.d.ts.map +1 -1
  158. package/dist/sends/permissions.js +2 -1
  159. package/dist/sends/permissions.js.map +1 -1
  160. package/dist/sends/recipients.d.ts +3 -1
  161. package/dist/sends/recipients.d.ts.map +1 -1
  162. package/dist/sends/recipients.js +23 -16
  163. package/dist/sends/recipients.js.map +1 -1
  164. package/dist/sends/upload.d.ts +15 -2
  165. package/dist/sends/upload.d.ts.map +1 -1
  166. package/dist/sends/upload.js +58 -9
  167. package/dist/sends/upload.js.map +1 -1
  168. package/dist/services/admin.d.ts.map +1 -1
  169. package/dist/services/admin.js +7 -1
  170. package/dist/services/admin.js.map +1 -1
  171. package/dist/services/file-download.d.ts +3 -0
  172. package/dist/services/file-download.d.ts.map +1 -1
  173. package/dist/services/file-download.js +11 -0
  174. package/dist/services/file-download.js.map +1 -1
  175. package/dist/services/messages.d.ts +3 -1
  176. package/dist/services/messages.d.ts.map +1 -1
  177. package/dist/services/messages.js +14 -5
  178. package/dist/services/messages.js.map +1 -1
  179. package/dist/services/pictures.d.ts.map +1 -1
  180. package/dist/services/pictures.js +12 -2
  181. package/dist/services/pictures.js.map +1 -1
  182. package/dist/speech/transcribe.d.ts +3 -2
  183. package/dist/speech/transcribe.d.ts.map +1 -1
  184. package/dist/speech/transcribe.js +5 -2
  185. package/dist/speech/transcribe.js.map +1 -1
  186. package/dist/store/attachments.d.ts +6 -1
  187. package/dist/store/attachments.d.ts.map +1 -1
  188. package/dist/store/attachments.js +10 -0
  189. package/dist/store/attachments.js.map +1 -1
  190. package/dist/store/drivers/node-sqlite.d.ts +2 -3
  191. package/dist/store/drivers/node-sqlite.d.ts.map +1 -1
  192. package/dist/store/drivers/node-sqlite.js +2 -3
  193. package/dist/store/drivers/node-sqlite.js.map +1 -1
  194. package/dist/store/index.d.ts +1 -0
  195. package/dist/store/index.d.ts.map +1 -1
  196. package/dist/store/index.js.map +1 -1
  197. package/dist/store/open.d.ts.map +1 -1
  198. package/dist/store/open.js +2 -0
  199. package/dist/store/open.js.map +1 -1
  200. package/dist/store/sqlite/attachments.d.ts +4 -2
  201. package/dist/store/sqlite/attachments.d.ts.map +1 -1
  202. package/dist/store/sqlite/attachments.js +15 -12
  203. package/dist/store/sqlite/attachments.js.map +1 -1
  204. package/dist/store/sqlite/open.d.ts.map +1 -1
  205. package/dist/store/sqlite/open.js +2 -0
  206. package/dist/store/sqlite/open.js.map +1 -1
  207. package/dist/store/sqlite/tag-consolidation.d.ts +5 -0
  208. package/dist/store/sqlite/tag-consolidation.d.ts.map +1 -0
  209. package/dist/store/sqlite/tag-consolidation.js +178 -0
  210. package/dist/store/sqlite/tag-consolidation.js.map +1 -0
  211. package/dist/store/sqlite/tags.js +1 -1
  212. package/dist/store/sqlite/tags.js.map +1 -1
  213. package/dist/store/sqlite/vocabulary.d.ts +2 -1
  214. package/dist/store/sqlite/vocabulary.d.ts.map +1 -1
  215. package/dist/store/sqlite/vocabulary.js +2 -0
  216. package/dist/store/sqlite/vocabulary.js.map +1 -1
  217. package/dist/store/sqlite-warning.d.ts +8 -0
  218. package/dist/store/sqlite-warning.d.ts.map +1 -0
  219. package/dist/store/sqlite-warning.js +26 -0
  220. package/dist/store/sqlite-warning.js.map +1 -0
  221. package/package.json +2 -2
  222. package/parity.json +36 -2
  223. package/dist/mcp/search-sync.d.ts +0 -12
  224. package/dist/mcp/search-sync.d.ts.map +0 -1
  225. package/dist/mcp/search-sync.js +0 -18
  226. package/dist/mcp/search-sync.js.map +0 -1
  227. package/dist/mcp/thread-options.d.ts +0 -19
  228. package/dist/mcp/thread-options.d.ts.map +0 -1
  229. package/dist/mcp/thread-options.js +0 -20
  230. package/dist/mcp/thread-options.js.map +0 -1
  231. package/dist/mcp/tools/account.d.ts +0 -4
  232. package/dist/mcp/tools/account.d.ts.map +0 -1
  233. package/dist/mcp/tools/account.js +0 -31
  234. package/dist/mcp/tools/account.js.map +0 -1
  235. package/dist/mcp/tools/admin-statistics.d.ts +0 -4
  236. package/dist/mcp/tools/admin-statistics.d.ts.map +0 -1
  237. package/dist/mcp/tools/admin-statistics.js +0 -163
  238. package/dist/mcp/tools/admin-statistics.js.map +0 -1
  239. package/dist/mcp/tools/admin.d.ts +0 -5
  240. package/dist/mcp/tools/admin.d.ts.map +0 -1
  241. package/dist/mcp/tools/admin.js +0 -257
  242. package/dist/mcp/tools/admin.js.map +0 -1
  243. package/dist/mcp/tools/chats-read.d.ts +0 -4
  244. package/dist/mcp/tools/chats-read.d.ts.map +0 -1
  245. package/dist/mcp/tools/chats-read.js +0 -28
  246. package/dist/mcp/tools/chats-read.js.map +0 -1
  247. package/dist/mcp/tools/chats-state.d.ts +0 -5
  248. package/dist/mcp/tools/chats-state.d.ts.map +0 -1
  249. package/dist/mcp/tools/chats-state.js +0 -58
  250. package/dist/mcp/tools/chats-state.js.map +0 -1
  251. package/dist/mcp/tools/chats.d.ts +0 -4
  252. package/dist/mcp/tools/chats.d.ts.map +0 -1
  253. package/dist/mcp/tools/chats.js +0 -194
  254. package/dist/mcp/tools/chats.js.map +0 -1
  255. package/dist/mcp/tools/contacts-write.d.ts +0 -5
  256. package/dist/mcp/tools/contacts-write.d.ts.map +0 -1
  257. package/dist/mcp/tools/contacts-write.js +0 -53
  258. package/dist/mcp/tools/contacts-write.js.map +0 -1
  259. package/dist/mcp/tools/contacts.d.ts +0 -4
  260. package/dist/mcp/tools/contacts.d.ts.map +0 -1
  261. package/dist/mcp/tools/contacts.js +0 -196
  262. package/dist/mcp/tools/contacts.js.map +0 -1
  263. package/dist/mcp/tools/conversations.d.ts +0 -5
  264. package/dist/mcp/tools/conversations.d.ts.map +0 -1
  265. package/dist/mcp/tools/conversations.js +0 -265
  266. package/dist/mcp/tools/conversations.js.map +0 -1
  267. package/dist/mcp/tools/folders.d.ts +0 -5
  268. package/dist/mcp/tools/folders.d.ts.map +0 -1
  269. package/dist/mcp/tools/folders.js +0 -103
  270. package/dist/mcp/tools/folders.js.map +0 -1
  271. package/dist/mcp/tools/inbox.d.ts +0 -6
  272. package/dist/mcp/tools/inbox.d.ts.map +0 -1
  273. package/dist/mcp/tools/inbox.js +0 -65
  274. package/dist/mcp/tools/inbox.js.map +0 -1
  275. package/dist/mcp/tools/messages-actions.d.ts +0 -5
  276. package/dist/mcp/tools/messages-actions.d.ts.map +0 -1
  277. package/dist/mcp/tools/messages-actions.js +0 -129
  278. package/dist/mcp/tools/messages-actions.js.map +0 -1
  279. package/dist/mcp/tools/messages-delete.d.ts +0 -4
  280. package/dist/mcp/tools/messages-delete.d.ts.map +0 -1
  281. package/dist/mcp/tools/messages-delete.js +0 -39
  282. package/dist/mcp/tools/messages-delete.js.map +0 -1
  283. package/dist/mcp/tools/messages-send.d.ts +0 -8
  284. package/dist/mcp/tools/messages-send.d.ts.map +0 -1
  285. package/dist/mcp/tools/messages-send.js +0 -99
  286. package/dist/mcp/tools/messages-send.js.map +0 -1
  287. package/dist/mcp/tools/messages-transcribe.d.ts +0 -4
  288. package/dist/mcp/tools/messages-transcribe.d.ts.map +0 -1
  289. package/dist/mcp/tools/messages-transcribe.js +0 -32
  290. package/dist/mcp/tools/messages-transcribe.js.map +0 -1
  291. package/dist/mcp/tools/messages.d.ts +0 -4
  292. package/dist/mcp/tools/messages.d.ts.map +0 -1
  293. package/dist/mcp/tools/messages.js +0 -205
  294. package/dist/mcp/tools/messages.js.map +0 -1
  295. package/dist/mcp/tools/moderation.d.ts +0 -8
  296. package/dist/mcp/tools/moderation.d.ts.map +0 -1
  297. package/dist/mcp/tools/moderation.js +0 -36
  298. package/dist/mcp/tools/moderation.js.map +0 -1
  299. package/dist/mcp/tools/polls.d.ts +0 -6
  300. package/dist/mcp/tools/polls.d.ts.map +0 -1
  301. package/dist/mcp/tools/polls.js +0 -140
  302. package/dist/mcp/tools/polls.js.map +0 -1
  303. package/dist/mcp/tools/private-people.d.ts +0 -4
  304. package/dist/mcp/tools/private-people.d.ts.map +0 -1
  305. package/dist/mcp/tools/private-people.js +0 -121
  306. package/dist/mcp/tools/private-people.js.map +0 -1
  307. package/dist/mcp/tools/rankings.d.ts +0 -4
  308. package/dist/mcp/tools/rankings.d.ts.map +0 -1
  309. package/dist/mcp/tools/rankings.js +0 -112
  310. package/dist/mcp/tools/rankings.js.map +0 -1
  311. package/dist/mcp/tools/reactions.d.ts +0 -5
  312. package/dist/mcp/tools/reactions.d.ts.map +0 -1
  313. package/dist/mcp/tools/reactions.js +0 -33
  314. package/dist/mcp/tools/reactions.js.map +0 -1
  315. package/dist/mcp/tools/review.d.ts +0 -4
  316. package/dist/mcp/tools/review.d.ts.map +0 -1
  317. package/dist/mcp/tools/review.js +0 -68
  318. package/dist/mcp/tools/review.js.map +0 -1
  319. package/dist/mcp/tools/runs.d.ts +0 -4
  320. package/dist/mcp/tools/runs.d.ts.map +0 -1
  321. package/dist/mcp/tools/runs.js +0 -28
  322. package/dist/mcp/tools/runs.js.map +0 -1
  323. package/dist/mcp/tools/search-tools.d.ts +0 -5
  324. package/dist/mcp/tools/search-tools.d.ts.map +0 -1
  325. package/dist/mcp/tools/search-tools.js +0 -132
  326. package/dist/mcp/tools/search-tools.js.map +0 -1
  327. package/dist/mcp/tools/search.d.ts +0 -154
  328. package/dist/mcp/tools/search.d.ts.map +0 -1
  329. package/dist/mcp/tools/search.js +0 -163
  330. package/dist/mcp/tools/search.js.map +0 -1
  331. package/dist/mcp/tools/searches.d.ts +0 -4
  332. package/dist/mcp/tools/searches.d.ts.map +0 -1
  333. package/dist/mcp/tools/searches.js +0 -108
  334. package/dist/mcp/tools/searches.js.map +0 -1
  335. package/dist/mcp/tools/store.d.ts +0 -4
  336. package/dist/mcp/tools/store.d.ts.map +0 -1
  337. package/dist/mcp/tools/store.js +0 -163
  338. package/dist/mcp/tools/store.js.map +0 -1
  339. package/dist/mcp/tools/tags.d.ts +0 -4
  340. package/dist/mcp/tools/tags.d.ts.map +0 -1
  341. package/dist/mcp/tools/tags.js +0 -64
  342. package/dist/mcp/tools/tags.js.map +0 -1
  343. package/dist/mcp/tools/tasks.d.ts +0 -4
  344. package/dist/mcp/tools/tasks.d.ts.map +0 -1
  345. package/dist/mcp/tools/tasks.js +0 -369
  346. package/dist/mcp/tools/tasks.js.map +0 -1
  347. package/dist/mcp/tools/topics.d.ts +0 -5
  348. package/dist/mcp/tools/topics.d.ts.map +0 -1
  349. package/dist/mcp/tools/topics.js +0 -134
  350. package/dist/mcp/tools/topics.js.map +0 -1
@@ -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"}
@@ -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,4 +0,0 @@
1
- import type { Messenger } from "../../cli/messenger/context.js";
2
- import { type AnyTool } from "../tool.js";
3
- export declare const rankingTools: (messenger: Messenger) => Record<string, AnyTool>;
4
- //# sourceMappingURL=rankings.d.ts.map
@@ -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,4 +0,0 @@
1
- import type { Messenger } from "../../cli/messenger/context.js";
2
- import { type AnyTool } from "../tool.js";
3
- export declare const reviewTools: (messenger: Messenger) => Record<string, AnyTool>;
4
- //# sourceMappingURL=review.d.ts.map
@@ -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"}