@leemour/cli-messaging 0.148.2 → 0.149.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 (241) hide show
  1. package/dist/analysis/anthropic.d.ts +3 -0
  2. package/dist/analysis/anthropic.d.ts.map +1 -0
  3. package/dist/analysis/anthropic.js +28 -0
  4. package/dist/analysis/anthropic.js.map +1 -0
  5. package/dist/analysis/consents.d.ts +13 -0
  6. package/dist/analysis/consents.d.ts.map +1 -0
  7. package/dist/analysis/consents.js +36 -0
  8. package/dist/analysis/consents.js.map +1 -0
  9. package/dist/analysis/provider.d.ts +14 -0
  10. package/dist/analysis/provider.d.ts.map +1 -0
  11. package/dist/analysis/provider.js +46 -0
  12. package/dist/analysis/provider.js.map +1 -0
  13. package/dist/analysis/runner.d.ts +23 -0
  14. package/dist/analysis/runner.d.ts.map +1 -0
  15. package/dist/analysis/runner.js +84 -0
  16. package/dist/analysis/runner.js.map +1 -0
  17. package/dist/analysis/settings.d.ts +19 -0
  18. package/dist/analysis/settings.d.ts.map +1 -0
  19. package/dist/analysis/settings.js +47 -0
  20. package/dist/analysis/settings.js.map +1 -0
  21. package/dist/attachments/extract.d.ts +48 -0
  22. package/dist/attachments/extract.d.ts.map +1 -0
  23. package/dist/attachments/extract.js +119 -0
  24. package/dist/attachments/extract.js.map +1 -0
  25. package/dist/cli/analysis-choice.d.ts +10 -0
  26. package/dist/cli/analysis-choice.d.ts.map +1 -0
  27. package/dist/cli/analysis-choice.js +31 -0
  28. package/dist/cli/analysis-choice.js.map +1 -0
  29. package/dist/cli/embedding-choice.d.ts +15 -0
  30. package/dist/cli/embedding-choice.d.ts.map +1 -0
  31. package/dist/cli/embedding-choice.js +36 -0
  32. package/dist/cli/embedding-choice.js.map +1 -0
  33. package/dist/cli/embedding-keys.d.ts +2 -2
  34. package/dist/cli/embedding-keys.d.ts.map +1 -1
  35. package/dist/cli/embedding-keys.js +8 -4
  36. package/dist/cli/embedding-keys.js.map +1 -1
  37. package/dist/cli/index.d.ts +3 -0
  38. package/dist/cli/index.d.ts.map +1 -1
  39. package/dist/cli/index.js +3 -0
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/cli/messenger/attachments-command.d.ts +5 -0
  42. package/dist/cli/messenger/attachments-command.d.ts.map +1 -0
  43. package/dist/cli/messenger/attachments-command.js +122 -0
  44. package/dist/cli/messenger/attachments-command.js.map +1 -0
  45. package/dist/cli/messenger/chats-read-command.d.ts.map +1 -1
  46. package/dist/cli/messenger/chats-read-command.js +7 -2
  47. package/dist/cli/messenger/chats-read-command.js.map +1 -1
  48. package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
  49. package/dist/cli/messenger/conversations-command.js +129 -41
  50. package/dist/cli/messenger/conversations-command.js.map +1 -1
  51. package/dist/cli/messenger/download-command.d.ts +8 -1
  52. package/dist/cli/messenger/download-command.d.ts.map +1 -1
  53. package/dist/cli/messenger/download-command.js +41 -6
  54. package/dist/cli/messenger/download-command.js.map +1 -1
  55. package/dist/cli/messenger/messages-command.d.ts.map +1 -1
  56. package/dist/cli/messenger/messages-command.js +38 -3
  57. package/dist/cli/messenger/messages-command.js.map +1 -1
  58. package/dist/cli/messenger/messages-search-command.d.ts.map +1 -1
  59. package/dist/cli/messenger/messages-search-command.js +19 -3
  60. package/dist/cli/messenger/messages-search-command.js.map +1 -1
  61. package/dist/cli/messenger/messages-stats-command.d.ts.map +1 -1
  62. package/dist/cli/messenger/messages-stats-command.js +6 -2
  63. package/dist/cli/messenger/messages-stats-command.js.map +1 -1
  64. package/dist/cli/messenger/models-command.d.ts.map +1 -1
  65. package/dist/cli/messenger/models-command.js +3 -5
  66. package/dist/cli/messenger/models-command.js.map +1 -1
  67. package/dist/cli/messenger/port.d.ts +4 -0
  68. package/dist/cli/messenger/port.d.ts.map +1 -1
  69. package/dist/cli/messenger/port.js.map +1 -1
  70. package/dist/cli/messenger/search-sync-options.d.ts +9 -0
  71. package/dist/cli/messenger/search-sync-options.d.ts.map +1 -0
  72. package/dist/cli/messenger/search-sync-options.js +34 -0
  73. package/dist/cli/messenger/search-sync-options.js.map +1 -0
  74. package/dist/cli/messenger/store-maintenance-command.d.ts.map +1 -1
  75. package/dist/cli/messenger/store-maintenance-command.js +11 -2
  76. package/dist/cli/messenger/store-maintenance-command.js.map +1 -1
  77. package/dist/cli/messenger/thread-options.d.ts +7 -0
  78. package/dist/cli/messenger/thread-options.d.ts.map +1 -0
  79. package/dist/cli/messenger/thread-options.js +31 -0
  80. package/dist/cli/messenger/thread-options.js.map +1 -0
  81. package/dist/cli/settings.d.ts +16 -1
  82. package/dist/cli/settings.d.ts.map +1 -1
  83. package/dist/cli/settings.js +5 -0
  84. package/dist/cli/settings.js.map +1 -1
  85. package/dist/domain/attachments.d.ts +23 -0
  86. package/dist/domain/attachments.d.ts.map +1 -0
  87. package/dist/domain/attachments.js +28 -0
  88. package/dist/domain/attachments.js.map +1 -0
  89. package/dist/kit/fake.d.ts.map +1 -1
  90. package/dist/kit/fake.js +3 -0
  91. package/dist/kit/fake.js.map +1 -1
  92. package/dist/kit/index.d.ts +1 -0
  93. package/dist/kit/index.d.ts.map +1 -1
  94. package/dist/kit/index.js +1 -0
  95. package/dist/kit/index.js.map +1 -1
  96. package/dist/kit/search-recipes.d.ts +40 -0
  97. package/dist/kit/search-recipes.d.ts.map +1 -0
  98. package/dist/kit/search-recipes.js +33 -0
  99. package/dist/kit/search-recipes.js.map +1 -0
  100. package/dist/mcp/prompts.d.ts +4 -0
  101. package/dist/mcp/prompts.d.ts.map +1 -1
  102. package/dist/mcp/prompts.js +10 -0
  103. package/dist/mcp/prompts.js.map +1 -1
  104. package/dist/mcp/search-sync.d.ts +12 -0
  105. package/dist/mcp/search-sync.d.ts.map +1 -0
  106. package/dist/mcp/search-sync.js +18 -0
  107. package/dist/mcp/search-sync.js.map +1 -0
  108. package/dist/mcp/server.d.ts.map +1 -1
  109. package/dist/mcp/server.js +2 -0
  110. package/dist/mcp/server.js.map +1 -1
  111. package/dist/mcp/thread-options.d.ts +19 -0
  112. package/dist/mcp/thread-options.d.ts.map +1 -0
  113. package/dist/mcp/thread-options.js +20 -0
  114. package/dist/mcp/thread-options.js.map +1 -0
  115. package/dist/mcp/tool.d.ts +7 -4
  116. package/dist/mcp/tool.d.ts.map +1 -1
  117. package/dist/mcp/tool.js +13 -4
  118. package/dist/mcp/tool.js.map +1 -1
  119. package/dist/mcp/tools/attachments.d.ts +4 -0
  120. package/dist/mcp/tools/attachments.d.ts.map +1 -0
  121. package/dist/mcp/tools/attachments.js +60 -0
  122. package/dist/mcp/tools/attachments.js.map +1 -0
  123. package/dist/mcp/tools/chats-read.d.ts.map +1 -1
  124. package/dist/mcp/tools/chats-read.js +8 -2
  125. package/dist/mcp/tools/chats-read.js.map +1 -1
  126. package/dist/mcp/tools/conversations.d.ts.map +1 -1
  127. package/dist/mcp/tools/conversations.js +95 -12
  128. package/dist/mcp/tools/conversations.js.map +1 -1
  129. package/dist/mcp/tools/messages.d.ts.map +1 -1
  130. package/dist/mcp/tools/messages.js +45 -17
  131. package/dist/mcp/tools/messages.js.map +1 -1
  132. package/dist/mcp/tools/search.d.ts +32 -3
  133. package/dist/mcp/tools/search.d.ts.map +1 -1
  134. package/dist/mcp/tools/search.js +23 -3
  135. package/dist/mcp/tools/search.js.map +1 -1
  136. package/dist/mcp/tools.d.ts +1 -1
  137. package/dist/mcp/tools.d.ts.map +1 -1
  138. package/dist/mcp/tools.js +3 -1
  139. package/dist/mcp/tools.js.map +1 -1
  140. package/dist/render/thread-context.d.ts +3 -0
  141. package/dist/render/thread-context.d.ts.map +1 -0
  142. package/dist/render/thread-context.js +4 -0
  143. package/dist/render/thread-context.js.map +1 -0
  144. package/dist/search/lucene/registry.d.ts +9 -0
  145. package/dist/search/lucene/registry.d.ts.map +1 -1
  146. package/dist/search/lucene/registry.js +10 -0
  147. package/dist/search/lucene/registry.js.map +1 -1
  148. package/dist/search/lucene/resolved.d.ts +3 -0
  149. package/dist/search/lucene/resolved.d.ts.map +1 -1
  150. package/dist/search/lucene/resolved.js.map +1 -1
  151. package/dist/sends/permissions.d.ts +1 -1
  152. package/dist/sends/permissions.d.ts.map +1 -1
  153. package/dist/sends/permissions.js +7 -0
  154. package/dist/sends/permissions.js.map +1 -1
  155. package/dist/services/archive.d.ts.map +1 -1
  156. package/dist/services/archive.js +7 -0
  157. package/dist/services/archive.js.map +1 -1
  158. package/dist/services/attachments.d.ts +85 -0
  159. package/dist/services/attachments.d.ts.map +1 -0
  160. package/dist/services/attachments.js +194 -0
  161. package/dist/services/attachments.js.map +1 -0
  162. package/dist/services/chats.d.ts +3 -0
  163. package/dist/services/chats.d.ts.map +1 -1
  164. package/dist/services/chats.js +20 -4
  165. package/dist/services/chats.js.map +1 -1
  166. package/dist/services/deps.d.ts +2 -0
  167. package/dist/services/deps.d.ts.map +1 -1
  168. package/dist/services/deps.js.map +1 -1
  169. package/dist/services/embeddings.d.ts +21 -1
  170. package/dist/services/embeddings.d.ts.map +1 -1
  171. package/dist/services/embeddings.js +153 -41
  172. package/dist/services/embeddings.js.map +1 -1
  173. package/dist/services/index.d.ts +8 -0
  174. package/dist/services/index.d.ts.map +1 -1
  175. package/dist/services/index.js +5 -0
  176. package/dist/services/index.js.map +1 -1
  177. package/dist/services/messages-search.d.ts +15 -1
  178. package/dist/services/messages-search.d.ts.map +1 -1
  179. package/dist/services/messages-search.js +1 -1
  180. package/dist/services/messages-search.js.map +1 -1
  181. package/dist/services/messages.d.ts +25 -3
  182. package/dist/services/messages.d.ts.map +1 -1
  183. package/dist/services/messages.js +79 -24
  184. package/dist/services/messages.js.map +1 -1
  185. package/dist/services/patience.d.ts.map +1 -1
  186. package/dist/services/patience.js +1 -0
  187. package/dist/services/patience.js.map +1 -1
  188. package/dist/services/search-refresh.d.ts +37 -0
  189. package/dist/services/search-refresh.d.ts.map +1 -0
  190. package/dist/services/search-refresh.js +140 -0
  191. package/dist/services/search-refresh.js.map +1 -0
  192. package/dist/services/thread-context.d.ts +37 -0
  193. package/dist/services/thread-context.d.ts.map +1 -0
  194. package/dist/services/thread-context.js +227 -0
  195. package/dist/services/thread-context.js.map +1 -0
  196. package/dist/store/index.d.ts +2 -1
  197. package/dist/store/index.d.ts.map +1 -1
  198. package/dist/store/index.js +1 -0
  199. package/dist/store/index.js.map +1 -1
  200. package/dist/store/sqlite/attachment-texts.d.ts +77 -0
  201. package/dist/store/sqlite/attachment-texts.d.ts.map +1 -0
  202. package/dist/store/sqlite/attachment-texts.js +130 -0
  203. package/dist/store/sqlite/attachment-texts.js.map +1 -0
  204. package/dist/store/sqlite/attachments.d.ts +6 -0
  205. package/dist/store/sqlite/attachments.d.ts.map +1 -0
  206. package/dist/store/sqlite/attachments.js +33 -0
  207. package/dist/store/sqlite/attachments.js.map +1 -0
  208. package/dist/store/sqlite/conversation-eligibility.d.ts +12 -0
  209. package/dist/store/sqlite/conversation-eligibility.d.ts.map +1 -0
  210. package/dist/store/sqlite/conversation-eligibility.js +24 -0
  211. package/dist/store/sqlite/conversation-eligibility.js.map +1 -0
  212. package/dist/store/sqlite/conversations.d.ts +6 -2
  213. package/dist/store/sqlite/conversations.d.ts.map +1 -1
  214. package/dist/store/sqlite/conversations.js +33 -8
  215. package/dist/store/sqlite/conversations.js.map +1 -1
  216. package/dist/store/sqlite/lucene.d.ts +2 -0
  217. package/dist/store/sqlite/lucene.d.ts.map +1 -1
  218. package/dist/store/sqlite/lucene.js +32 -1
  219. package/dist/store/sqlite/lucene.js.map +1 -1
  220. package/dist/store/sqlite/manifest.d.ts.map +1 -1
  221. package/dist/store/sqlite/manifest.js +2 -0
  222. package/dist/store/sqlite/manifest.js.map +1 -1
  223. package/dist/store/sqlite/migrations.generated.d.ts.map +1 -1
  224. package/dist/store/sqlite/migrations.generated.js +18 -0
  225. package/dist/store/sqlite/migrations.generated.js.map +1 -1
  226. package/dist/store/sqlite/schema.d.ts +156 -0
  227. package/dist/store/sqlite/schema.d.ts.map +1 -1
  228. package/dist/store/sqlite/schema.js +20 -0
  229. package/dist/store/sqlite/schema.js.map +1 -1
  230. package/dist/store/sqlite/vectors.d.ts +2 -1
  231. package/dist/store/sqlite/vectors.d.ts.map +1 -1
  232. package/dist/store/sqlite/vectors.js +2 -1
  233. package/dist/store/sqlite/vectors.js.map +1 -1
  234. package/dist/store/store.d.ts +35 -1
  235. package/dist/store/store.d.ts.map +1 -1
  236. package/dist/store/store.js +50 -3
  237. package/dist/store/store.js.map +1 -1
  238. package/docs/search/recipes.json +119 -0
  239. package/package.json +17 -3
  240. package/parity.json +368 -41
  241. package/skills/link-conversations/SKILL.md +21 -1
package/parity.json CHANGED
@@ -59,6 +59,9 @@
59
59
  "--allow-writes": {
60
60
  "meaning": "acknowledge that the profile offers writing tools when installing local MCP"
61
61
  },
62
+ "--analyze": {
63
+ "meaning": "link conversation batches using the configured analysis provider, with remembered chat/provider consent"
64
+ },
62
65
  "--anonymous": {
63
66
  "meaning": "nobody sees who voted for what"
64
67
  },
@@ -74,6 +77,10 @@
74
77
  "value": "<time>",
75
78
  "meaning": "let the messenger send it later, even with this machine off: a local time like 2026-09-25T09:00, or 30m"
76
79
  },
80
+ "--attachment": {
81
+ "value": "<n>",
82
+ "meaning": "which file of the message, from 1; needed when it has more than one"
83
+ },
77
84
  "--background": {
78
85
  "meaning": "run as a job that outlives this command; `store jobs show` follows it"
79
86
  },
@@ -157,6 +164,9 @@
157
164
  "value": "<n>",
158
165
  "meaning": "remote: the vector size — needed with --base-url; shortens an OpenAI model's"
159
166
  },
167
+ "--download": {
168
+ "meaning": "first save, from the messenger, the files no download saved yet"
169
+ },
160
170
  "--dry-run": {
161
171
  "meaning": "judge and plan; do nothing"
162
172
  },
@@ -175,6 +185,10 @@
175
185
  "value": "<file>",
176
186
  "meaning": "attach a file; images go as a photo, videos as a video. Repeat it for more"
177
187
  },
188
+ "--filter": {
189
+ "value": "query",
190
+ "meaning": "Strict Lucene filter: any message in the conversation must match; the meaning query stays unchanged"
191
+ },
178
192
  "--first-name": {
179
193
  "value": "<name>",
180
194
  "meaning": "your first name"
@@ -264,16 +278,21 @@
264
278
  "--max-chats": {
265
279
  "value": "<n>",
266
280
  "meaning": "at most this many chats in one run",
267
- "default": "20"
281
+ "default": "20",
282
+ "note": "local graph work defaults to 20; opt-in --sync-first network refresh defaults to 5, so help distinguishes the two uses"
268
283
  },
269
284
  "--max-chunks": {
270
285
  "value": "<n>",
271
286
  "meaning": "at most this many chunks embedded in one run",
272
287
  "default": "2000"
273
288
  },
289
+ "--max-messages": {
290
+ "value": "<n>",
291
+ "meaning": "fetch at most this many messages total (default: 500)"
292
+ },
274
293
  "--max-tokens": {
275
294
  "value": "<n>",
276
- "meaning": "remote: stop before a run that could send more tokens than this"
295
+ "meaning": "remote embeddings: bound input tokens; analysis: reserve input and output tokens across this run"
277
296
  },
278
297
  "--md": {
279
298
  "meaning": "read this messenger's Markdown; see its formatting guide for supported syntax"
@@ -299,6 +318,9 @@
299
318
  "--multiple": {
300
319
  "meaning": "people may pick several answers"
301
320
  },
321
+ "--needs-text": {
322
+ "meaning": "only files saved here whose text nobody has yet: what an agent reads and writes back"
323
+ },
302
324
  "--new": {
303
325
  "meaning": "what arrived since the last check, each message once — for scheduled runs"
304
326
  },
@@ -362,7 +384,8 @@
362
384
  "--output-dir": {
363
385
  "value": "<dir>",
364
386
  "meaning": "the folder to write into, created if missing",
365
- "default": "."
387
+ "default": ".",
388
+ "note": "`attachments extract` takes it only with --download, and has no default there, so extraction never fills the working folder unasked"
366
389
  },
367
390
  "--page": {
368
391
  "value": "<n>",
@@ -392,7 +415,7 @@
392
415
  },
393
416
  "--provider": {
394
417
  "value": "<provider>",
395
- "meaning": "embed through a service with your key instead of on this machine: openai"
418
+ "meaning": "embedding provider: local or openai; analysis: agent, openai or anthropic; consents revoke: exact provider identity from the list"
396
419
  },
397
420
  "--public-url": {
398
421
  "value": "<url>",
@@ -486,6 +509,13 @@
486
509
  "value": "<profile>",
487
510
  "meaning": "keep a returned authentication token only in this bot profile's OS keyring; never print it"
488
511
  },
512
+ "--sync-first": {
513
+ "meaning": "first fetch new messages within the chat, time and message bounds"
514
+ },
515
+ "--sync-time": {
516
+ "value": "<duration>",
517
+ "meaning": "stop fetching after this long (default: 30s)"
518
+ },
489
519
  "--tag": {
490
520
  "value": "<tag>",
491
521
  "meaning": "only this tag"
@@ -494,6 +524,29 @@
494
524
  "value": "<text>",
495
525
  "meaning": "the message's new text; - reads stdin"
496
526
  },
527
+ "--text-file": {
528
+ "value": "<path>",
529
+ "meaning": "read the text from this file; - or none reads stdin"
530
+ },
531
+ "--thread": {
532
+ "meaning": "the stored reply chain and replies instead of time neighbours; falls back when no graph exists"
533
+ },
534
+ "--thread-bytes": {
535
+ "value": "<n>",
536
+ "meaning": "at most this many bytes of whole messages and links in each context (default: 65536)"
537
+ },
538
+ "--thread-hops": {
539
+ "value": "<n>",
540
+ "meaning": "at most this many links from the hit (default: 8)"
541
+ },
542
+ "--thread-messages": {
543
+ "value": "<n>",
544
+ "meaning": "at most this many messages in each thread context (default: 50)"
545
+ },
546
+ "--thread-within": {
547
+ "value": "<duration>",
548
+ "meaning": "messages within this long either side of the hit (default: 1d)"
549
+ },
497
550
  "--threads": {
498
551
  "value": "<n>",
499
552
  "meaning": "threads in all",
@@ -519,7 +572,7 @@
519
572
  },
520
573
  "--topic": {
521
574
  "value": "<id>",
522
- "meaning": "send to this forum topic",
575
+ "meaning": "address this forum topic: send to it, or mark only it read",
523
576
  "note": "Telegram group forums only; MAX explicitly refuses this option before sending"
524
577
  },
525
578
  "--trace": {
@@ -639,6 +692,76 @@
639
692
  "--photo": "all"
640
693
  }
641
694
  },
695
+ "attachments": {
696
+ "in": [],
697
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
698
+ },
699
+ "attachments extract": {
700
+ "in": [],
701
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" },
702
+ "options": {
703
+ "--chat": {
704
+ "in": [],
705
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
706
+ },
707
+ "--download": {
708
+ "in": [],
709
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
710
+ },
711
+ "--limit": {
712
+ "in": [],
713
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
714
+ },
715
+ "--output-dir": {
716
+ "in": [],
717
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
718
+ }
719
+ }
720
+ },
721
+ "attachments list": {
722
+ "in": [],
723
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" },
724
+ "options": {
725
+ "--all": {
726
+ "in": [],
727
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
728
+ },
729
+ "--chat": {
730
+ "in": [],
731
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
732
+ },
733
+ "--limit": {
734
+ "in": [],
735
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
736
+ },
737
+ "--needs-text": {
738
+ "in": [],
739
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
740
+ },
741
+ "--page": {
742
+ "in": [],
743
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
744
+ }
745
+ }
746
+ },
747
+ "attachments text": {
748
+ "in": [],
749
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
750
+ },
751
+ "attachments text set": {
752
+ "in": [],
753
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" },
754
+ "options": {
755
+ "--attachment": {
756
+ "in": [],
757
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
758
+ },
759
+ "--text-file": {
760
+ "in": [],
761
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
762
+ }
763
+ }
764
+ },
642
765
  "bot": {
643
766
  "in": "all"
644
767
  },
@@ -1037,6 +1160,10 @@
1037
1160
  "chats mark-read": {
1038
1161
  "in": "all",
1039
1162
  "options": {
1163
+ "--topic": {
1164
+ "in": [],
1165
+ "planned": { "max": "G2 feat/topic-mark-read", "tg": "G2 feat/topic-mark-read" }
1166
+ },
1040
1167
  "--until": "all"
1041
1168
  }
1042
1169
  },
@@ -1253,25 +1380,17 @@
1253
1380
  "in": "all"
1254
1381
  },
1255
1382
  "contacts context": {
1256
- "in": [],
1257
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" },
1383
+ "in": "all",
1258
1384
  "options": {
1259
- "--limit": {
1260
- "in": [],
1261
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
1262
- },
1263
- "--since-time": {
1264
- "in": [],
1265
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
1266
- }
1385
+ "--limit": "all",
1386
+ "--since-time": "all"
1267
1387
  }
1268
1388
  },
1269
1389
  "contacts import": {
1270
1390
  "in": "all"
1271
1391
  },
1272
1392
  "contacts link": {
1273
- "in": [],
1274
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
1393
+ "in": "all"
1275
1394
  },
1276
1395
  "contacts list": {
1277
1396
  "in": "all",
@@ -1302,8 +1421,7 @@
1302
1421
  "in": "all"
1303
1422
  },
1304
1423
  "contacts unlink": {
1305
- "in": [],
1306
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
1424
+ "in": "all"
1307
1425
  },
1308
1426
  "conversations": {
1309
1427
  "in": "all"
@@ -1328,6 +1446,20 @@
1328
1446
  "conversations build": {
1329
1447
  "in": "all",
1330
1448
  "options": {
1449
+ "--analyze": {
1450
+ "in": [],
1451
+ "planned": {
1452
+ "max": "each CLI's next cli-messaging bump",
1453
+ "tg": "each CLI's next cli-messaging bump"
1454
+ }
1455
+ },
1456
+ "--base-url": {
1457
+ "in": [],
1458
+ "planned": {
1459
+ "max": "each CLI's next cli-messaging bump",
1460
+ "tg": "each CLI's next cli-messaging bump"
1461
+ }
1462
+ },
1331
1463
  "--chat": "all",
1332
1464
  "--max-chats": {
1333
1465
  "in": [],
@@ -1335,6 +1467,71 @@
1335
1467
  "max": "each CLI's next cli-messaging bump",
1336
1468
  "tg": "each CLI's next cli-messaging bump"
1337
1469
  }
1470
+ },
1471
+ "--max-tokens": {
1472
+ "in": [],
1473
+ "planned": {
1474
+ "max": "each CLI's next cli-messaging bump",
1475
+ "tg": "each CLI's next cli-messaging bump"
1476
+ }
1477
+ },
1478
+ "--model": {
1479
+ "in": [],
1480
+ "planned": {
1481
+ "max": "each CLI's next cli-messaging bump",
1482
+ "tg": "each CLI's next cli-messaging bump"
1483
+ }
1484
+ },
1485
+ "--provider": {
1486
+ "in": [],
1487
+ "planned": {
1488
+ "max": "each CLI's next cli-messaging bump",
1489
+ "tg": "each CLI's next cli-messaging bump"
1490
+ }
1491
+ },
1492
+ "--size": {
1493
+ "in": [],
1494
+ "planned": {
1495
+ "max": "each CLI's next cli-messaging bump",
1496
+ "tg": "each CLI's next cli-messaging bump"
1497
+ }
1498
+ }
1499
+ }
1500
+ },
1501
+ "conversations consents": {
1502
+ "in": [],
1503
+ "planned": {
1504
+ "max": "each CLI's next cli-messaging bump",
1505
+ "tg": "each CLI's next cli-messaging bump"
1506
+ }
1507
+ },
1508
+ "conversations consents list": {
1509
+ "in": [],
1510
+ "planned": {
1511
+ "max": "each CLI's next cli-messaging bump",
1512
+ "tg": "each CLI's next cli-messaging bump"
1513
+ }
1514
+ },
1515
+ "conversations consents revoke": {
1516
+ "in": [],
1517
+ "planned": {
1518
+ "max": "each CLI's next cli-messaging bump",
1519
+ "tg": "each CLI's next cli-messaging bump"
1520
+ },
1521
+ "options": {
1522
+ "--chat": {
1523
+ "in": [],
1524
+ "planned": {
1525
+ "max": "each CLI's next cli-messaging bump",
1526
+ "tg": "each CLI's next cli-messaging bump"
1527
+ }
1528
+ },
1529
+ "--provider": {
1530
+ "in": [],
1531
+ "planned": {
1532
+ "max": "each CLI's next cli-messaging bump",
1533
+ "tg": "each CLI's next cli-messaging bump"
1534
+ }
1338
1535
  }
1339
1536
  }
1340
1537
  },
@@ -1484,6 +1681,13 @@
1484
1681
  "--base-url": "all",
1485
1682
  "--chat": "all",
1486
1683
  "--dims": "all",
1684
+ "--filter": {
1685
+ "in": [],
1686
+ "planned": {
1687
+ "max": "each CLI's next cli-messaging bump",
1688
+ "tg": "each CLI's next cli-messaging bump"
1689
+ }
1690
+ },
1487
1691
  "--limit": "all",
1488
1692
  "--max-chats": {
1489
1693
  "in": [],
@@ -1499,6 +1703,10 @@
1499
1703
  "tg": "each CLI's next cli-messaging bump"
1500
1704
  }
1501
1705
  },
1706
+ "--max-messages": {
1707
+ "in": [],
1708
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
1709
+ },
1502
1710
  "--model": "all",
1503
1711
  "--provider": "all",
1504
1712
  "--refresh": {
@@ -1508,7 +1716,29 @@
1508
1716
  "tg": "each CLI's next cli-messaging bump"
1509
1717
  }
1510
1718
  },
1511
- "--since-time": "all"
1719
+ "--since-time": "all",
1720
+ "--source": {
1721
+ "in": [],
1722
+ "planned": {
1723
+ "max": "each CLI's next cli-messaging bump",
1724
+ "tg": "each CLI's next cli-messaging bump"
1725
+ }
1726
+ },
1727
+ "--sync-first": {
1728
+ "in": [],
1729
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
1730
+ },
1731
+ "--sync-time": {
1732
+ "in": [],
1733
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
1734
+ },
1735
+ "--timezone": {
1736
+ "in": [],
1737
+ "planned": {
1738
+ "max": "each CLI's next cli-messaging bump",
1739
+ "tg": "each CLI's next cli-messaging bump"
1740
+ }
1741
+ }
1512
1742
  }
1513
1743
  },
1514
1744
  "conversations show": {
@@ -1795,7 +2025,42 @@
1795
2025
  "in": "all",
1796
2026
  "options": {
1797
2027
  "--after-n": "all",
1798
- "--before-n": "all"
2028
+ "--before-n": "all",
2029
+ "--thread": {
2030
+ "in": [],
2031
+ "planned": {
2032
+ "max": "each CLI's next cli-messaging bump",
2033
+ "tg": "each CLI's next cli-messaging bump"
2034
+ }
2035
+ },
2036
+ "--thread-bytes": {
2037
+ "in": [],
2038
+ "planned": {
2039
+ "max": "each CLI's next cli-messaging bump",
2040
+ "tg": "each CLI's next cli-messaging bump"
2041
+ }
2042
+ },
2043
+ "--thread-hops": {
2044
+ "in": [],
2045
+ "planned": {
2046
+ "max": "each CLI's next cli-messaging bump",
2047
+ "tg": "each CLI's next cli-messaging bump"
2048
+ }
2049
+ },
2050
+ "--thread-messages": {
2051
+ "in": [],
2052
+ "planned": {
2053
+ "max": "each CLI's next cli-messaging bump",
2054
+ "tg": "each CLI's next cli-messaging bump"
2055
+ }
2056
+ },
2057
+ "--thread-within": {
2058
+ "in": [],
2059
+ "planned": {
2060
+ "max": "each CLI's next cli-messaging bump",
2061
+ "tg": "each CLI's next cli-messaging bump"
2062
+ }
2063
+ }
1799
2064
  }
1800
2065
  },
1801
2066
  "messages delete": {
@@ -1879,6 +2144,14 @@
1879
2144
  "--context": "all",
1880
2145
  "--language": "all",
1881
2146
  "--limit": "all",
2147
+ "--max-chats": {
2148
+ "in": [],
2149
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2150
+ },
2151
+ "--max-messages": {
2152
+ "in": [],
2153
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2154
+ },
1882
2155
  "--newest": "all",
1883
2156
  "--regex": "all",
1884
2157
  "--saved": {
@@ -1886,6 +2159,49 @@
1886
2159
  "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
1887
2160
  },
1888
2161
  "--source": "all",
2162
+ "--sync-first": {
2163
+ "in": [],
2164
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2165
+ },
2166
+ "--sync-time": {
2167
+ "in": [],
2168
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2169
+ },
2170
+ "--thread": {
2171
+ "in": [],
2172
+ "planned": {
2173
+ "max": "each CLI's next cli-messaging bump",
2174
+ "tg": "each CLI's next cli-messaging bump"
2175
+ }
2176
+ },
2177
+ "--thread-bytes": {
2178
+ "in": [],
2179
+ "planned": {
2180
+ "max": "each CLI's next cli-messaging bump",
2181
+ "tg": "each CLI's next cli-messaging bump"
2182
+ }
2183
+ },
2184
+ "--thread-hops": {
2185
+ "in": [],
2186
+ "planned": {
2187
+ "max": "each CLI's next cli-messaging bump",
2188
+ "tg": "each CLI's next cli-messaging bump"
2189
+ }
2190
+ },
2191
+ "--thread-messages": {
2192
+ "in": [],
2193
+ "planned": {
2194
+ "max": "each CLI's next cli-messaging bump",
2195
+ "tg": "each CLI's next cli-messaging bump"
2196
+ }
2197
+ },
2198
+ "--thread-within": {
2199
+ "in": [],
2200
+ "planned": {
2201
+ "max": "each CLI's next cli-messaging bump",
2202
+ "tg": "each CLI's next cli-messaging bump"
2203
+ }
2204
+ },
1889
2205
  "--timezone": "all"
1890
2206
  }
1891
2207
  },
@@ -1925,6 +2241,14 @@
1925
2241
  "in": [],
1926
2242
  "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
1927
2243
  },
2244
+ "--max-chats": {
2245
+ "in": [],
2246
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2247
+ },
2248
+ "--max-messages": {
2249
+ "in": [],
2250
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2251
+ },
1928
2252
  "--saved": {
1929
2253
  "in": [],
1930
2254
  "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
@@ -1933,6 +2257,14 @@
1933
2257
  "in": [],
1934
2258
  "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
1935
2259
  },
2260
+ "--sync-first": {
2261
+ "in": [],
2262
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2263
+ },
2264
+ "--sync-time": {
2265
+ "in": [],
2266
+ "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2267
+ },
1936
2268
  "--timezone": {
1937
2269
  "in": [],
1938
2270
  "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
@@ -2036,28 +2368,28 @@
2036
2368
  "in": "all"
2037
2369
  },
2038
2370
  "replies": {
2039
- "in": [],
2040
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2371
+ "in": ["tg"],
2372
+ "planned": { "max": "max's own serve does not run the reply rules yet" }
2041
2373
  },
2042
2374
  "replies pause": {
2043
- "in": [],
2044
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2375
+ "in": ["tg"],
2376
+ "planned": { "max": "max's own serve does not run the reply rules yet" }
2045
2377
  },
2046
2378
  "replies resume": {
2047
- "in": [],
2048
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2379
+ "in": ["tg"],
2380
+ "planned": { "max": "max's own serve does not run the reply rules yet" }
2049
2381
  },
2050
2382
  "replies status": {
2051
- "in": [],
2052
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2383
+ "in": ["tg"],
2384
+ "planned": { "max": "max's own serve does not run the reply rules yet" }
2053
2385
  },
2054
2386
  "replies test": {
2055
- "in": [],
2056
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" },
2387
+ "in": ["tg"],
2388
+ "planned": { "max": "max's own serve does not run the reply rules yet" },
2057
2389
  "options": {
2058
2390
  "--since-time": {
2059
- "in": [],
2060
- "planned": { "max": "each CLI's next cli-messaging bump", "tg": "each CLI's next cli-messaging bump" }
2391
+ "in": ["tg"],
2392
+ "planned": { "max": "max's own serve does not run the reply rules yet" }
2061
2393
  }
2062
2394
  }
2063
2395
  },
@@ -2351,8 +2683,7 @@
2351
2683
  "planned": { "max": "max's next cli-messaging bump", "tg": "tg's next cli-messaging bump" }
2352
2684
  },
2353
2685
  "store copies delete": {
2354
- "in": [],
2355
- "planned": { "max": "max's next cli-messaging bump", "tg": "tg's next cli-messaging bump" }
2686
+ "in": "all"
2356
2687
  },
2357
2688
  "store decrypt": {
2358
2689
  "in": "all",
@@ -2409,13 +2740,9 @@
2409
2740
  }
2410
2741
  },
2411
2742
  "store repair": {
2412
- "in": [],
2413
- "planned": { "max": "max's next cli-messaging bump", "tg": "tg's next cli-messaging bump" },
2743
+ "in": "all",
2414
2744
  "options": {
2415
- "--dry-run": {
2416
- "in": [],
2417
- "planned": { "max": "max's next cli-messaging bump", "tg": "tg's next cli-messaging bump" }
2418
- }
2745
+ "--dry-run": "all"
2419
2746
  }
2420
2747
  },
2421
2748
  "store restore": {
@@ -10,7 +10,7 @@ metadata:
10
10
  A busy group mixes several conversations at once. `{{command}}` already links what it can without
11
11
  you: the messenger's own replies, mentions, and one person's messages in a row. You decide the rest:
12
12
  for each message, **which earlier message it answers**, or that it starts a new conversation. You
13
- read the messages; `{{command}}` checks and stores your answers. It never calls a model itself.
13
+ read the messages; `{{command}}` checks and stores your answers. By default it leaves analysis to your agent. An explicit configured analysis provider can also process these batches through `conversations build --analyze`; that path asks for consent and validates the same answers.
14
14
 
15
15
  ## Before the first batch: say what it costs, and wait
16
16
 
@@ -75,3 +75,23 @@ was added or deleted inside it: ask for the next batch instead.
75
75
  touched.
76
76
  - See your answers in place: `{{command}} conversations show "<chat>" <message>` prints a
77
77
  conversation, and `{{command}} messages links "<chat>" <message>` says why a message sits where it does.
78
+
79
+
80
+ ## Through MCP
81
+
82
+ Follow the same cost gate and loop using these tools instead of shell commands:
83
+
84
+ | CLI operation | MCP tool |
85
+ |---|---|
86
+ | conversations build | {{command}}_conversations_build |
87
+ | conversations batches status | {{command}}_conversations_batches_status |
88
+ | conversations batches next | {{command}}_conversations_batches_next |
89
+ | conversations links add | {{command}}_conversations_links_add |
90
+ | conversations links clear | {{command}}_conversations_links_clear |
91
+ | conversations show | {{command}}_conversations_show |
92
+
93
+ Use `chat` for the chat reference, and `size` for the batch size (10–200, default 50).
94
+ Send `batch`, `model`, `skill` and `answers` as the links-add tool's arguments.
95
+ Next returns `{ "batch": null }` when finished. Build before status and once more after the last
96
+ answer. The write tools need `permissions.conversations.links` set to `allow`; on `ask` they
97
+ refuse and explain the setting. A read-only profile offers only status and next.