@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,58 +0,0 @@
1
- import * as v from "valibot";
2
- import { itemOf, snakeKeys } from "../../cli/envelope.js";
3
- import { sendTime } from "../../domain/send-time.js";
4
- import { onlineDeps, servicesFor } from "../../services/index.js";
5
- import { chatOf, tool, WRITE } from "../tool.js";
6
- const OWN = "Only the owner sees it; nobody in the chat is told. Only when the owner asked for it.";
7
- /** The owner's own chat list — mute, archive, pin, unread — each behind the switch that mounts its command. */
8
- export const chatStateTools = (messenger) => {
9
- const account = (adapter, guard) => servicesFor(onlineDeps(messenger, adapter, guard)).account;
10
- const chat = chatOf(messenger);
11
- const onChat = (title, description, change) => tool({
12
- title,
13
- description: `${description} ${OWN}`,
14
- input: v.object({ chat }),
15
- annotations: WRITE,
16
- permission: "profile",
17
- online: async (adapter, args, { guard }) => itemOf(snakeKeys(await change(account(adapter, guard), args.chat))),
18
- });
19
- return {
20
- ...(messenger.chatMute === true
21
- ? {
22
- chats_mute: tool({
23
- title: "Mute a chat",
24
- description: `Stop notifications from a chat, for good or until a time. ${OWN}`,
25
- input: v.object({
26
- chat,
27
- until: v.optional(v.pipe(v.string(), v.minLength(1), v.description("only until then: 2026-09-25T09:00 (local time), or 30m, 2h, 7d from now"))),
28
- }),
29
- annotations: WRITE,
30
- permission: "profile",
31
- online: async (adapter, args, { guard }) => itemOf(snakeKeys(await account(adapter, guard).mute(args.chat, args.until === undefined ? "forever" : sendTime(args.until, Date.now(), "until")))),
32
- }),
33
- chats_unmute: onChat("Unmute a chat", "Hear a muted chat again.", (one, id) => one.mute(id, null)),
34
- }
35
- : {}),
36
- ...(messenger.chatArchive === true
37
- ? {
38
- chats_archive: onChat("Archive a chat", "Move a chat into the archive.", (one, id) => one.archive(id, true)),
39
- chats_unarchive: onChat("Unarchive a chat", "Bring an archived chat back to the chat list.", (one, id) => one.archive(id, false)),
40
- }
41
- : {}),
42
- ...(messenger.chatPin === true
43
- ? {
44
- chats_pin: onChat("Pin a chat", "Keep a chat at the top of the owner's chat list; messages pin pins a message for everyone.", (one, id) => one.pinChat(id, true)),
45
- chats_unpin: onChat("Unpin a chat", "Let a pinned chat move down the chat list again.", (one, id) => one.pinChat(id, false)),
46
- }
47
- : {}),
48
- ...(messenger.chatMarkUnread === true
49
- ? {
50
- chats_mark_unread: {
51
- ...onChat("Mark a chat unread", "Mark a chat unread on the owner's own devices; chats mark-read undoes it, and that one the other side sees.", (one, id) => one.markUnread(id)),
52
- command: "chats mark-unread",
53
- },
54
- }
55
- : {}),
56
- };
57
- };
58
- //# sourceMappingURL=chats-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chats-state.js","sourceRoot":"","sources":["../../../src/mcp/tools/chats-state.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { Messenger } from "../../cli/messenger/context.js";
2
- import { type AnyTool } from "../tool.js";
3
- export declare const chatsTools: (messenger: Messenger) => Record<string, AnyTool>;
4
- //# sourceMappingURL=chats.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/chats.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAO/D,OAAO,EAAE,KAAK,OAAO,EAA2C,MAAM,YAAY,CAAA;AAOlF,eAAO,MAAM,UAAU,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAIvE,CAAA"}
@@ -1,194 +0,0 @@
1
- import * as v from "valibot";
2
- import { registriesCover } from "../../botcheck/registries.js";
3
- import { itemOf, listOf, snakeKeys } from "../../cli/envelope.js";
4
- import { queryArgument } from "../../cli/list-query.js";
5
- import { chatShown, documentLinkAnswer, wholeList } from "../../cli/messenger/chat-answers.js";
6
- import { chatEvents, chatsList, membersAudit, membersHistory, membersList } from "../../cli/messenger/chat-lists.js";
7
- import { AUDIT_QUERY, CHATS_QUERY, EVENTS_QUERY, HISTORY_QUERY } from "../../cli/messenger/chat-queries.js";
8
- import { chatStatsAnswer } from "../../cli/messenger/stats-answers.js";
9
- import { casKey } from "../../cli/registry-keys.js";
10
- import { nextStep } from "../../cli/steps.js";
11
- import { syncsOneChat } from "../../ports/traits.js";
12
- import { EVENTS_DAYS, onlineDeps, servicesFor, storedDeps } from "../../services/index.js";
13
- import { momentOf } from "../../services/moment.js";
14
- import { chatOf, limit, page, paging, READ, tool } from "../tool.js";
15
- const pagingOf = (args, defaults) => {
16
- const { size, number } = paging(args, defaults);
17
- return { limit: size, page: number };
18
- };
19
- export const chatsTools = (messenger) => {
20
- const tools = chatTools(messenger);
21
- if (messenger.sendAs === false)
22
- delete tools.chats_send_as;
23
- return tools;
24
- };
25
- const chatTools = (messenger) => {
26
- const chat = chatOf(messenger);
27
- return {
28
- chats_list: tool({
29
- title: "List chats",
30
- description: "Chats the owner is in, most recent first. Use it to find a chat's id before reading or sending. " +
31
- "query (kind:group unread_count>0, title:book) is answered from the local store: when the chats are read " +
32
- "from the messenger it filters nothing, and a query is refused.",
33
- input: v.object({ query: queryArgument(CHATS_QUERY), limit, page }),
34
- annotations: READ,
35
- output: { entity: "chat", list: true },
36
- served: (services, args, defaults) => chatsList(services, args.query, pagingOf(args, defaults)),
37
- }),
38
- chats_events: tool({
39
- title: "Who joined or left a chat",
40
- description: "A chat's service messages: who joined, left, was added or removed, and by whom, oldest first — type is " +
41
- `join, leave, add, remove, create, title or pin. The last ${EVENTS_DAYS} days unless query names time ` +
42
- '(time>=2d, time>="2026-10-01"). meta.truncated when the history was longer than one run reads.',
43
- input: v.object({ chat, query: queryArgument(EVENTS_QUERY) }),
44
- annotations: READ,
45
- output: { entity: "chat_event", list: true },
46
- served: (services, args) => chatEvents(services, args.chat, args.query),
47
- }),
48
- stats_chats_show: tool({
49
- title: "A chat's numbers for a period",
50
- description: `Counts over a chat's stored messages since \`since_time\` (${EVENTS_DAYS} days back if not given): messages, ` +
51
- "senders, replies, threads, reactions, views, forwards and comments where the messenger gave them, top_posts, and " +
52
- "questions { asked, answered, median_minutes_to_answer }. `by` adds a series row per day or week. Reads the local " +
53
- (messenger.history === "store"
54
- ? "store only, joins and leaves included; until the store holds one chat event for the chat, members is " +
55
- "left out and missing says they are not recorded yet. "
56
- : "store only, so joins and leaves are not in it — `chats events` has them. ") +
57
- "complete is false when the store does not hold the chat whole: then every number is a lower bound, and next " +
58
- "names the sync that fills it.",
59
- input: v.object({
60
- chat,
61
- since_time: v.optional(v.pipe(v.string(), v.description("an ISO 8601 time, or 2h / 1d ago"))),
62
- by: v.optional(v.picklist(["day", "week"])),
63
- timezone: v.optional(v.pipe(v.string(), v.description("the IANA timezone for calendar days"))),
64
- }),
65
- annotations: { ...READ, openWorldHint: false },
66
- output: { entity: "chat_stats", list: false },
67
- stored: async (store, account, args, defaults) => chatStatsAnswer(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).chats.stats(args.chat, {
68
- ...(args.since_time === undefined ? {} : { since: momentOf(args.since_time, "since_time") }),
69
- ...(args.by ? { by: args.by } : {}),
70
- ...(args.timezone === undefined ? {} : { timezone: args.timezone }),
71
- }), account),
72
- }),
73
- chats_members: tool({
74
- title: "Everyone in a group",
75
- description: "A group's members, a page at a time: { id, name, username, role?, last_seen_at? }. role is owner, admin or " +
76
- "member; last_seen_at is null when their privacy hides it.",
77
- input: v.object({ chat, limit, page }),
78
- annotations: READ,
79
- command: "chats members list",
80
- output: { entity: "member", list: true },
81
- online: (adapter, args, defaults) => membersList(servicesFor(onlineDeps(messenger, adapter, defaults.guard)), args.chat, pagingOf(args, defaults)),
82
- }),
83
- chats_members_audit: tool({
84
- title: "Members that look like bots",
85
- description: "Members of a group that look like bots, highest score first: { id, name, username, score, reasons }. " +
86
- "Reasons: bot, scam, fake, deleted, no_photo, no_username, odd_name, never_wrote, link_first, burst_join, " +
87
- "mass_invited. A score is a hint, never a verdict; the owner and admins are left out. query sets the lowest " +
88
- "score shown (score>=3; score>=2 unless named). Reads the member list a page at a time, at most max_pages; " +
89
- "meta.truncated says some members were not read. With deep, the top members also get the full `contacts check`, " +
90
- "one person a second" +
91
- (registriesCover(messenger.provider)
92
- ? " — and their ids are sent to the public ban lists"
93
- : "; the public ban lists cover Telegram only, so nothing is sent") +
94
- ". Removes nobody — that is `chats moderate`, with the owner's confirmation.",
95
- input: v.object({
96
- chat,
97
- query: queryArgument(AUDIT_QUERY),
98
- max_pages: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.description("pages of members to read"))),
99
- deep: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(50), v.description("check the top n in full"))),
100
- }),
101
- annotations: READ,
102
- output: { entity: "member", list: true },
103
- online: async (adapter, args, { guard, env, keyring }) => {
104
- const key = args.deep === undefined ? undefined : casKey(messenger.app, env, keyring);
105
- const { body } = await membersAudit(servicesFor(onlineDeps(messenger, adapter, guard)), args.chat, args.query, {
106
- ...(args.max_pages === undefined ? {} : { budget: args.max_pages }),
107
- ...(args.deep === undefined ? {} : { deep: args.deep }),
108
- ...(key ? { registry: { casKey: key } } : {}),
109
- });
110
- return body;
111
- },
112
- }),
113
- chats_members_history: tool({
114
- title: "Who joined, left or changed their profile",
115
- description: "A group's member history as the local store recorded it with chats members fetch, oldest first: type is " +
116
- "join, leave or profile; before is the profile seen until then. A leave is recorded only from a member list " +
117
- "read whole. query names time to read from (time>=7d). Reads the local store only; empty until the owner " +
118
- "fetches or tracks the chat.",
119
- input: v.object({ chat, query: queryArgument(HISTORY_QUERY) }),
120
- annotations: { ...READ, openWorldHint: false },
121
- output: { entity: "chat_event", list: true },
122
- stored: (store, account, args, defaults) => membersHistory(servicesFor(storedDeps(messenger, store, account, defaults.guard)), args.chat, args.query),
123
- }),
124
- chats_documents_list: tool({
125
- title: "Google documents linked in a chat",
126
- description: "Every Google Docs, Sheets, Slides, Forms or Drive link in a chat's stored messages, newest first, one item " +
127
- "per link: { url, document_id, title, in_store, ref, sent_at, sender: { id, name } }. document_id is the " +
128
- "Google file id in the URL, null when it carries none; title is the stored document's, null unless in_store; " +
129
- "ref is the message's locator. Reads the local store only.",
130
- input: v.object({ chat, limit, page }),
131
- annotations: { ...READ, openWorldHint: false },
132
- stored: async (store, account, args, defaults) => {
133
- const { size, number, window } = paging(args, defaults);
134
- const found = await servicesFor(storedDeps(messenger, store, account, defaults.guard)).chatDocuments.list(args.chat, window);
135
- return listOf("chats documents list", {
136
- items: found.items.map(documentLinkAnswer),
137
- limit: size,
138
- has_more: found.hasMore,
139
- page: number,
140
- args: { chat: args.chat },
141
- ...(found.empty && syncsOneChat(messenger)
142
- ? { next: [nextStep("messages.sync", { args: { chat: found.chatId } })] }
143
- : {}),
144
- });
145
- },
146
- }),
147
- chats_tracking_list: tool({
148
- title: "Chats whose members are recorded daily",
149
- description: "The chats whose member lists serve fetches daily into the local store: { chat_id, title, tracked_at, " +
150
- "last_count: { day, participants, listed, complete } | null }. Reads the local store only. The owner adds " +
151
- "one with the CLI: chats members fetch <chat> --track, or chats tracking add.",
152
- input: v.object({}),
153
- annotations: { ...READ, openWorldHint: false },
154
- stored: async (store, account) => wholeList("chats tracking list", (await store.roster.trackedChats(account)).map(snakeKeys)),
155
- }),
156
- chats_tracking_show: tool({
157
- title: "A chat's member count per day",
158
- description: "Whether a chat's members are recorded daily, and its member count per day for the last 30 days: " +
159
- "{ chat_id, tracked_at | null, counts: [{ day, participants, listed, complete }] }. complete is false for a " +
160
- "day whose member list was not read whole. Reads the local store only.",
161
- input: v.object({ chat }),
162
- annotations: { ...READ, openWorldHint: false },
163
- stored: async (store, account, args, defaults) => itemOf(snakeKeys(await servicesFor(storedDeps(messenger, store, account, defaults.guard)).chats.trackedChat(args.chat))),
164
- }),
165
- chats_inspect: tool({
166
- title: "What a link leads to",
167
- description: "What an invite or public link leads to, read without joining: { kind, title, id, username, " +
168
- "participants_count, description, member, approval_needed? }. id is null for a private chat the owner is not in.",
169
- input: v.object({ link: v.pipe(v.string(), v.minLength(1), v.description("an invite link or a public one")) }),
170
- annotations: READ,
171
- online: async (adapter, args, { guard }) => itemOf(snakeKeys(await servicesFor(onlineDeps(messenger, adapter, guard)).chats.inspect(args.link))),
172
- }),
173
- chats_send_as: tool({
174
- title: "Who the owner may post as",
175
- description: "The identities the owner may post as in a chat: { id, title, kind, premium_required, default }. kind is " +
176
- "self, channel or group; self is always there; default is the chat's saved choice. Reading changes nothing. " +
177
- "Pass an id as `send_as` to `messages send`.",
178
- input: v.object({ chat }),
179
- annotations: READ,
180
- command: "chats send-as",
181
- served: async (services, args) => wholeList("chats send-as", (await services.chats.sendAs(args.chat)).map(snakeKeys)),
182
- }),
183
- chats_show: tool({
184
- title: "Show a chat",
185
- description: "One chat: its kind, unread count, last message time and who is in it; a group's description, invite link " +
186
- "and settings where the messenger gives them.",
187
- input: v.object({ chat }),
188
- annotations: READ,
189
- output: { entity: "chat", list: false },
190
- served: async (services, args) => chatShown(await services.chats.account(), await services.chats.show(args.chat)),
191
- }),
192
- };
193
- };
194
- //# sourceMappingURL=chats.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chats.js","sourceRoot":"","sources":["../../../src/mcp/tools/chats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAC9F,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AACpH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAE3G,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAgB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAElF,MAAM,QAAQ,GAAG,CAAC,IAAuC,EAAE,QAA2B,EAAE,EAAE;IACxF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,QAAwC,CAAC,CAAA;IAC/E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAoB,EAA2B,EAAE;IAC1E,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;IAClC,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,aAAa,CAAA;IAC1D,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,SAAoB,EAA2B,EAAE;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;IAC9B,OAAO;QACL,UAAU,EAAE,IAAI,CAAC;YACf,KAAK,EAAE,YAAY;YACnB,WAAW,EACT,kGAAkG;gBAClG,0GAA0G;gBAC1G,gEAAgE;YAClE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACnE,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YACtC,MAAM,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAChG,CAAC;QAEF,YAAY,EAAE,IAAI,CAAC;YACjB,KAAK,EAAE,2BAA2B;YAClC,WAAW,EACT,yGAAyG;gBACzG,4DAA4D,WAAW,gCAAgC;gBACvG,gGAAgG;YAClG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7D,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;YAC5C,MAAM,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;SACxE,CAAC;QAEF,gBAAgB,EAAE,IAAI,CAAC;YACrB,KAAK,EAAE,+BAA+B;YACtC,WAAW,EACT,8DAA8D,WAAW,sCAAsC;gBAC/G,mHAAmH;gBACnH,mHAAmH;gBACnH,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO;oBAC5B,CAAC,CAAC,uGAAuG;wBACvG,uDAAuD;oBACzD,CAAC,CAAC,2EAA2E,CAAC;gBAChF,8GAA8G;gBAC9G,+BAA+B;YACjC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,IAAI;gBACJ,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC7F,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC3C,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC,CAAC;aAC/F,CAAC;YACF,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;YAC9C,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE;YAC7C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAC/C,eAAe,CACb,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC9F,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;gBAC5F,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;aACpE,CAAC,EACF,OAAO,CACR;SACJ,CAAC;QAEF,aAAa,EAAE,IAAI,CAAC;YAClB,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EACT,6GAA6G;gBAC7G,2DAA2D;YAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACtC,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,oBAAoB;YAC7B,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;YACxC,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAClC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAChH,CAAC;QAEF,mBAAmB,EAAE,IAAI,CAAC;YACxB,KAAK,EAAE,6BAA6B;YACpC,WAAW,EACT,uGAAuG;gBACvG,2GAA2G;gBAC3G,6GAA6G;gBAC7G,4GAA4G;gBAC5G,iHAAiH;gBACjH,qBAAqB;gBACrB,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC;oBAClC,CAAC,CAAC,mDAAmD;oBACrD,CAAC,CAAC,gEAAgE,CAAC;gBACrE,6EAA6E;YAC/E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,IAAI;gBACJ,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC;gBACjC,SAAS,EAAE,CAAC,CAAC,QAAQ,CACnB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,CAC1F;gBACD,IAAI,EAAE,CAAC,CAAC,QAAQ,CACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,CACzG;aACF,CAAC;YACF,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;YACxC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;gBACvD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;gBACrF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;oBAC7G,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBACvD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9C,CAAC,CAAA;gBACF,OAAO,IAAI,CAAA;YACb,CAAC;SACF,CAAC;QAEF,qBAAqB,EAAE,IAAI,CAAC;YAC1B,KAAK,EAAE,2CAA2C;YAClD,WAAW,EACT,0GAA0G;gBAC1G,6GAA6G;gBAC7G,0GAA0G;gBAC1G,6BAA6B;YAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9D,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;YAC9C,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;YAC5C,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CACzC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;SAC5G,CAAC;QAEF,oBAAoB,EAAE,IAAI,CAAC;YACzB,KAAK,EAAE,mCAAmC;YAC1C,WAAW,EACT,6GAA6G;gBAC7G,0GAA0G;gBAC1G,8GAA8G;gBAC9G,2DAA2D;YAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACtC,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;YAC9C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBAC/C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;gBACvD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CACvG,IAAI,CAAC,IAAI,EACT,MAAM,CACP,CAAA;gBACD,OAAO,MAAM,CAAC,sBAAsB,EAAE;oBACpC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC;oBAC1C,KAAK,EAAE,IAAI;oBACX,QAAQ,EAAE,KAAK,CAAC,OAAO;oBACvB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;oBACzB,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,YAAY,CAAC,SAAS,CAAC;wBACxC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE;wBACzE,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CAAA;YACJ,CAAC;SACF,CAAC;QAEF,mBAAmB,EAAE,IAAI,CAAC;YACxB,KAAK,EAAE,wCAAwC;YAC/C,WAAW,EACT,uGAAuG;gBACvG,2GAA2G;gBAC3G,8EAA8E;YAChF,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACnB,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;YAC9C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC/B,SAAS,CAAC,qBAAqB,EAAE,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SAC9F,CAAC;QAEF,mBAAmB,EAAE,IAAI,CAAC;YACxB,KAAK,EAAE,+BAA+B;YACtC,WAAW,EACT,kGAAkG;gBAClG,6GAA6G;gBAC7G,uEAAuE;YACzE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;YACzB,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;YAC9C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAC/C,MAAM,CACJ,SAAS,CACP,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CACtG,CACF;SACJ,CAAC;QAEF,aAAa,EAAE,IAAI,CAAC;YAClB,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EACT,6FAA6F;gBAC7F,iHAAiH;YACnH,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC;YAC9G,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACzC,MAAM,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACvG,CAAC;QAEF,aAAa,EAAE,IAAI,CAAC;YAClB,KAAK,EAAE,2BAA2B;YAClC,WAAW,EACT,0GAA0G;gBAC1G,6GAA6G;gBAC7G,6CAA6C;YAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;YACzB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAC/B,SAAS,CAAC,eAAe,EAAE,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACtF,CAAC;QAEF,UAAU,EAAE,IAAI,CAAC;YACf,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,2GAA2G;gBAC3G,8CAA8C;YAChD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;YACzB,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;YACvC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClH,CAAC;KACH,CAAA;AACH,CAAC,CAAA"}
@@ -1,5 +0,0 @@
1
- import type { Messenger } from "../../cli/messenger/context.js";
2
- import { type AnyTool } from "../tool.js";
3
- /** The address book's writes, and the owner's profile. `contacts import` has no tool: it takes phone numbers, from a file the owner names. */
4
- export declare const contactWriteTools: (messenger: Messenger) => Record<string, AnyTool>;
5
- //# sourceMappingURL=contacts-write.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contacts-write.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/contacts-write.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAI/D,OAAO,EAAE,KAAK,OAAO,EAAe,MAAM,YAAY,CAAA;AAItD,8IAA8I;AAC9I,eAAO,MAAM,iBAAiB,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAsD9E,CAAA"}
@@ -1,53 +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 { tool, WRITE } from "../tool.js";
5
- const person = v.pipe(v.string(), v.minLength(1), v.description("person id, or part of a known name"));
6
- /** The address book's writes, and the owner's profile. `contacts import` has no tool: it takes phone numbers, from a file the owner names. */
7
- export const contactWriteTools = (messenger) => {
8
- const people = (adapter, guard) => servicesFor(onlineDeps(messenger, adapter, guard)).people;
9
- const simple = (name, title, description) => tool({
10
- title,
11
- description: `${description} Only when the owner asked, for this person.`,
12
- input: v.object({ person }),
13
- annotations: WRITE,
14
- permission: "contacts",
15
- online: async (adapter, args, { guard }) => itemOf(snakeKeys(await people(adapter, guard)[name](args.person))),
16
- });
17
- return {
18
- contacts_add: simple("add", "Add a contact", "Add a person to the owner's contacts."),
19
- contacts_remove: simple("remove", "Remove a contact", "Remove a person from the owner's contacts; the chat stays."),
20
- contacts_block: simple("block", "Block a person", "Stop a person from writing to the owner."),
21
- contacts_unblock: simple("unblock", "Unblock a person", "Let a blocked person write to the owner again."),
22
- account_update: tool({
23
- title: "Change the owner's profile",
24
- description: "Change the name or the description everyone sees on the owner's profile. Only when the owner asked " +
25
- "for this exact change.",
26
- input: v.object({
27
- first_name: v.optional(v.pipe(v.string(), v.minLength(1))),
28
- last_name: v.optional(v.string()),
29
- description: v.optional(v.string()),
30
- }),
31
- annotations: WRITE,
32
- permission: "profile",
33
- online: async (adapter, args, { guard }) => itemOf(snakeKeys(await servicesFor(onlineDeps(messenger, adapter, guard)).account.update({
34
- ...(args.first_name === undefined ? {} : { firstName: args.first_name }),
35
- ...(args.last_name === undefined ? {} : { lastName: args.last_name }),
36
- ...(args.description === undefined ? {} : { description: args.description }),
37
- }))),
38
- }),
39
- contacts_rename: tool({
40
- title: "Rename a contact",
41
- description: "Give a person a name only the owner sees. Only when the owner asked for this name.",
42
- input: v.object({
43
- person,
44
- first_name: v.pipe(v.string(), v.minLength(1)),
45
- last_name: v.optional(v.string()),
46
- }),
47
- annotations: WRITE,
48
- permission: "contacts",
49
- online: async (adapter, args, { guard }) => itemOf(snakeKeys(await people(adapter, guard).rename(args.person, args.first_name, args.last_name))),
50
- }),
51
- };
52
- };
53
- //# sourceMappingURL=contacts-write.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contacts-write.js","sourceRoot":"","sources":["../../../src/mcp/tools/contacts-write.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 contactsTools: (messenger: Messenger) => Record<string, AnyTool>;
4
- //# sourceMappingURL=contacts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/contacts.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAW/D,OAAO,EAAE,KAAK,OAAO,EAAmC,MAAM,YAAY,CAAA;AAE1E,eAAO,MAAM,aAAa,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA8N1E,CAAA"}
@@ -1,196 +0,0 @@
1
- import { CliError } from "@wirecat/cli-base";
2
- import * as v from "valibot";
3
- import { REGISTRIES, registriesCover } from "../../botcheck/registries.js";
4
- import { itemOf, listOf, snakeKeys } from "../../cli/envelope.js";
5
- import { listQuery, nativeTerms, queryArgument } from "../../cli/list-query.js";
6
- import { contactAnswer } from "../../cli/messenger/chat-answers.js";
7
- import { CONTACTS_QUERY, notesAllowed } from "../../cli/messenger/people-queries.js";
8
- import { casKey } from "../../cli/registry-keys.js";
9
- import { levelFor } from "../../sends/permissions.js";
10
- import { onlineDeps, phoneOf, servicesFor, storedDeps } from "../../services/index.js";
11
- import { momentOf } from "../../services/moment.js";
12
- import { maskedAccount } from "../../services/people.js";
13
- import { CONTEXT_BYTES, CONTEXT_MESSAGES } from "../../services/person-context.js";
14
- import { SCOPES, TIMELINE_ITEMS } from "../../services/person-timeline.js";
15
- import { limit, page, paging, READ, tool } from "../tool.js";
16
- export const contactsTools = (messenger) => {
17
- const people = (adapter, guard) => servicesFor(onlineDeps(messenger, adapter, guard)).people;
18
- return {
19
- contacts_list: tool({
20
- title: "List contacts",
21
- description: "People the owner has a one-to-one chat with. query name:<text> matches the name, the local alias or the " +
22
- "@username; notes:<text> the owner's private notes about them (needs contacts.notes.list); nothing else is " +
23
- "filtered.",
24
- input: v.object({
25
- query: queryArgument(CONTACTS_QUERY),
26
- order: v.optional(v.picklist(["recent", "name"])),
27
- limit,
28
- page,
29
- }),
30
- annotations: READ,
31
- output: { entity: "contact", list: true },
32
- served: async (services, { query: words, order, ...rest }, defaults) => {
33
- const terms = nativeTerms(listQuery(words ?? "", CONTACTS_QUERY, "contacts list"), "contacts list");
34
- const name = terms.get("name");
35
- const notes = terms.get("notes");
36
- notesAllowed(defaults.settings.permissions ?? {}, notes);
37
- const { size, number, window } = paging(rest, defaults);
38
- const found = await services.people.list({
39
- order: order ?? "recent",
40
- ...(name ? { name } : {}),
41
- ...(notes ? { notes } : {}),
42
- ...window,
43
- });
44
- const account = await services.chats.account();
45
- return listOf("contacts list", {
46
- items: found.items.map((one) => contactAnswer(account, one)),
47
- limit: size,
48
- has_more: found.hasMore,
49
- page: number,
50
- args: { order: order ?? "recent", ...(words ? { query: words } : {}) },
51
- });
52
- },
53
- }),
54
- contacts_lookup: tool({
55
- title: "Find a person by phone",
56
- description: "Who has this phone number, where their privacy lets the owner find them: { id, name, username }. " +
57
- "not_found otherwise. Nothing is added to the owner's contacts.",
58
- input: v.object({ phone: v.pipe(v.string(), v.description("with the country code; spaces and + are fine")) }),
59
- annotations: READ,
60
- online: async (adapter, args, { guard }) => itemOf(snakeKeys(await people(adapter, guard).lookup(phoneOf(args.phone)))),
61
- }),
62
- contacts_show: tool({
63
- title: "Show a person",
64
- description: "One person and the chats shared with them.",
65
- input: v.object({
66
- with_notes: v.optional(v.boolean()),
67
- person: v.pipe(v.string(), v.minLength(1), v.description("person id, @username, or part of a name")),
68
- }),
69
- annotations: READ,
70
- output: { entity: "contact", list: false },
71
- storedWhen: (args) => args.with_notes === true,
72
- stored: async (store, account, args, defaults) => {
73
- if (levelFor(defaults.settings.permissions ?? {}, "contacts.notes.list").level === "deny")
74
- throw new CliError("permission_error", "profile denies contacts.notes.list");
75
- const card = await servicesFor(storedDeps(messenger, store, account, defaults.guard)).people.show(args.person, {
76
- notes: true,
77
- });
78
- return itemOf(contactAnswer(account, card));
79
- },
80
- served: async (services, args) => itemOf(contactAnswer(await services.chats.account(), await services.people.show(args.person))),
81
- }),
82
- contacts_profile: tool({
83
- title: "Profile of a person",
84
- description: "What the messenger says about one person — { id, name, usernames, bio, birthday?, phone? (last four " +
85
- "digits), flags { bot, verified, premium, scam, fake, restricted, deleted, support }, seen (online, recently, " +
86
- "week, month, hidden or a time), contact?, mutualContact?, commonChatsCount?, registered? { at, source: " +
87
- "telegram | max | estimate, precision }, hasPhoto? } — and chats: for each chat shared with them, " +
88
- "theirMessages stored, firstAt, lastAt and complete (false: the count is a floor); aliases: earlier names " +
89
- "and usernames the store saw — { name?, username?, link?, firstSeenAt, lastSeenAt, source: profile | " +
90
- "messages (approximate) }. Reading tells them nothing.",
91
- input: v.object({
92
- person: v.pipe(v.string(), v.minLength(1), v.description("person id, @username, or part of a name")),
93
- }),
94
- annotations: READ,
95
- served: async (services, args) => itemOf(snakeKeys(maskedAccount(await services.people.profile(args.person)))),
96
- }),
97
- contacts_context: tool({
98
- title: "What is known about a person",
99
- description: "Everything the local store holds about one person, in every messenger linked to them: person { uid, " +
100
- "identities }, shared chats, last { fromThem, fromMe, fromThemAnywhere }, recent { direct, groups }, " +
101
- "mentions — each message with a locator. complete is false when a shared chat is not stored whole; notRead " +
102
- "names it and why. Reads the store only; marks nothing read. Never assumes two people with one name are one. " +
103
- "With chats: instead, { person, chats: [{ chat, messages, complete, more }] } — their newest messages in each " +
104
- "chat named, oldest first, as { at, text } unless detail asks for ids and locators (1) or everything (2).",
105
- input: v.object({
106
- person: v.pipe(v.string(), v.minLength(1), v.description("person id, @username, or part of a name")),
107
- limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100), v.description("at most this many per list"))),
108
- since_time: v.optional(v.pipe(v.string(), v.description("an ISO 8601 time, or 2h / 1d ago"))),
109
- chats: v.optional(v.pipe(v.array(v.pipe(v.string(), v.minLength(1))), v.minLength(1), v.description("chats by id or name: their newest messages in each"))),
110
- detail: v.optional(v.pipe(v.picklist([0, 1, 2]), v.description("with chats: 1 adds ids and locators, 2 everything"))),
111
- }),
112
- annotations: { ...READ, openWorldHint: false },
113
- stored: async (store, account, args, defaults) => {
114
- const people = servicesFor(storedDeps(messenger, store, account, defaults.guard)).people;
115
- if (args.chats !== undefined) {
116
- if (args.since_time !== undefined)
117
- throw new CliError("validation_error", "since_time is not used with chats");
118
- return itemOf(snakeKeys(await people.messagesIn(args.person, {
119
- chats: args.chats,
120
- ...(args.limit === undefined ? {} : { limit: args.limit }),
121
- ...(args.detail === undefined ? {} : { detail: args.detail }),
122
- })));
123
- }
124
- const { hasMore, ...found } = await people.context(args.person, {
125
- messages: args.limit ?? CONTEXT_MESSAGES,
126
- bytes: CONTEXT_BYTES,
127
- ...(args.since_time === undefined ? {} : { since: momentOf(args.since_time, "since_time") }),
128
- });
129
- return itemOf(snakeKeys(found), hasMore ? { meta: { truncated: true } } : {});
130
- },
131
- }),
132
- contacts_timeline: tool({
133
- title: "What a person took part in",
134
- description: "Everything one person took part in, in every messenger linked to them, newest first: items [{ at, subject " +
135
- "(message, chat, email, meeting, task, document…), subject_id, role (sender, mentioned, participant, " +
136
- "recipient, assignee, author…), scope, provider, account, chat_id, locator, project_id }]; page.has_more " +
137
- "and page.next_cursor when cut at limit (pass the cursor back with the same filters); meta.truncated when " +
138
- "changes still queued are left out. A message carries a locator other tools take. Reads the store only.",
139
- input: v.object({
140
- person: v.pipe(v.string(), v.minLength(1), v.description("person id, @username, or part of a name")),
141
- scope: v.optional(v.pipe(v.picklist(SCOPES), v.description("only personal or only work"))),
142
- since_time: v.optional(v.pipe(v.string(), v.description("an ISO 8601 time, or 2h / 1d ago"))),
143
- until_time: v.optional(v.pipe(v.string(), v.description("through this ISO 8601 time, or 2h / 1d ago"))),
144
- limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100), v.description(`at most this many; ${TIMELINE_ITEMS} if not given`))),
145
- cursor: v.optional(v.pipe(v.string(), v.description("page.next_cursor of the previous answer, with the same filters"))),
146
- }),
147
- annotations: { ...READ, openWorldHint: false },
148
- stored: async (store, account, args, defaults) => {
149
- const found = await servicesFor(storedDeps(messenger, store, account, defaults.guard)).people.timeline(args.person, {
150
- ...(args.scope === undefined ? {} : { scope: args.scope }),
151
- ...(args.since_time === undefined ? {} : { since: momentOf(args.since_time, "since_time") }),
152
- ...(args.until_time === undefined ? {} : { until: momentOf(args.until_time, "until_time") }),
153
- ...(args.limit === undefined ? {} : { limit: args.limit }),
154
- ...(args.cursor === undefined ? {} : { cursor: args.cursor }),
155
- });
156
- return listOf("contacts timeline", {
157
- items: found.items.map(snakeKeys),
158
- limit: found.limits.items,
159
- has_more: found.hasMore,
160
- paging: "cursor",
161
- ...(found.cursor === undefined ? {} : { cursor: found.cursor }),
162
- ...(found.pending > 0 ? { meta: { truncated: true } } : {}),
163
- });
164
- },
165
- }),
166
- contacts_check: tool({
167
- title: "Does a person look like a bot",
168
- description: "Scores one person as a possible bot, fake or spammer: the messenger's own marks, their profile, what they " +
169
- (registriesCover(messenger.provider)
170
- ? "wrote in the store, and the public ban lists " +
171
- `${Object.values(REGISTRIES)
172
- .map(({ title, docs }) => `${title} (${docs})`)
173
- .join(", ")} — **the person's id is sent to each of them** unless registries is false. `
174
- : "wrote in the store. The public ban lists cover Telegram only, so nothing is sent. ") +
175
- "Returns { person, " +
176
- "score, reasons: [{ reason, weight, source, detail }], registries: [{ name, answer: listed|clean|unknown, " +
177
- "checked_at, detail }], unknown, notes }. A hint, never a verdict; changes nothing.",
178
- input: v.object({
179
- person: v.pipe(v.string(), v.minLength(1), v.description("person id, @username, or part of a name")),
180
- registries: v.optional(v.pipe(v.boolean(), v.description("false: skip public ban lists; default true asks them"))),
181
- }),
182
- annotations: READ,
183
- served: async (services, args, defaults) => {
184
- const registries = args.registries !== false;
185
- const asks = registries && defaults.settings.offline !== true && registriesCover(messenger.provider);
186
- const key = asks ? casKey(messenger.app, defaults.env, defaults.keyring) : undefined;
187
- const checked = await services.botcheck.person(args.person, {
188
- registries,
189
- ...(key ? { registry: { casKey: key } } : {}),
190
- });
191
- return itemOf(snakeKeys(checked));
192
- },
193
- }),
194
- };
195
- };
196
- //# sourceMappingURL=contacts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../src/mcp/tools/contacts.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
- /** Reads, and `conversations refresh`, which writes derived indexes to the local store and never to the messenger. */
4
- export declare const conversationsTools: (messenger: Messenger) => Record<string, AnyTool>;
5
- //# sourceMappingURL=conversations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/conversations.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAc/D,OAAO,EAAE,KAAK,OAAO,EAAoD,MAAM,YAAY,CAAA;AAM3F,sHAAsH;AACtH,eAAO,MAAM,kBAAkB,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA8S/E,CAAA"}