@wirecat/mail-cli 0.5.0 → 0.6.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 (281) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/README.md +41 -10
  3. package/dist/bin/mail.js +2 -2
  4. package/dist/bundle/{all-profiles-GR5JXYEQ.js → all-profiles-GBFTKUHA.js} +9 -9
  5. package/dist/bundle/{anthropic-REBXE65F.js → anthropic-PTSCWUG6.js} +6 -6
  6. package/dist/bundle/{app-server-QJ7ICQXZ.js → app-server-5VJ2WCKJ.js} +46 -46
  7. package/dist/bundle/{bun-WAX4QHW5.js → bun-2KRUBPIN.js} +2 -2
  8. package/dist/bundle/{bun-sqlite-5S7TQ4SG.js → bun-sqlite-ELSRSJBM.js} +5 -5
  9. package/dist/bundle/{chunk-5CXAH4Y6.js → chunk-3KY7DA5A.js} +428 -434
  10. package/dist/bundle/{chunk-7JCRQX56.js → chunk-4PKHZQIM.js} +8 -8
  11. package/dist/bundle/{chunk-QXOSGGKS.js → chunk-56PI2BRH.js} +1 -1
  12. package/dist/bundle/{chunk-LFRHIXCF.js → chunk-5AQKM47C.js} +3 -3
  13. package/dist/bundle/{chunk-S677WGOQ.js → chunk-5KHJUYHQ.js} +8 -8
  14. package/dist/bundle/{chunk-IBYTYIYO.js → chunk-6MV2TBDB.js} +57 -54
  15. package/dist/bundle/{chunk-M6BDHZON.js → chunk-AGX7NR3S.js} +26 -13
  16. package/dist/bundle/{chunk-ZD3WUGR2.js → chunk-B337KHJ5.js} +4 -4
  17. package/dist/bundle/{chunk-5BVIWP3S.js → chunk-BM445GYF.js} +2 -2
  18. package/dist/bundle/{chunk-WNI5BZFB.js → chunk-BVIHT7KR.js} +9 -9
  19. package/dist/bundle/{chunk-6EO7GVYJ.js → chunk-DA46WQEA.js} +1 -1
  20. package/dist/bundle/{chunk-2MRECWJZ.js → chunk-DV4RSEAH.js} +6 -6
  21. package/dist/bundle/{chunk-ESNNQA7D.js → chunk-ES4PWHBJ.js} +28 -28
  22. package/dist/bundle/{chunk-KIDF77MA.js → chunk-FIQOBLHS.js} +1 -1
  23. package/dist/bundle/{chunk-TI6VBZKJ.js → chunk-FUB3X25H.js} +4 -4
  24. package/dist/bundle/{chunk-EL554DV2.js → chunk-H4VFIH5W.js} +3 -3
  25. package/dist/bundle/{chunk-7A7BHABA.js → chunk-J4C32YKH.js} +1 -1
  26. package/dist/bundle/{chunk-MMDCL42A.js → chunk-J5MYH4L5.js} +12 -6
  27. package/dist/bundle/{chunk-FSUNGHRI.js → chunk-JFJTDL22.js} +47 -46
  28. package/dist/bundle/{chunk-SWJAG5IE.js → chunk-JIQAFFPV.js} +2 -2
  29. package/dist/bundle/{chunk-2U4IANVV.js → chunk-JKA2AICL.js} +2 -2
  30. package/dist/bundle/{dist-KJOAJ6NF.js → chunk-JKLQHPED.js} +16 -116
  31. package/dist/bundle/{chunk-J3QXTBD2.js → chunk-JLRMSNPX.js} +18 -18
  32. package/dist/bundle/{chunk-4BMNP2FT.js → chunk-K5JUROGN.js} +1 -1
  33. package/dist/bundle/{chunk-7F3NDIYL.js → chunk-KUQYWIVR.js} +6 -6
  34. package/dist/bundle/{chunk-DXDQOZ2P.js → chunk-LWTG5UOF.js} +2 -2
  35. package/dist/bundle/{chunk-YKPBC3NL.js → chunk-M7V3GSJQ.js} +1 -1
  36. package/dist/bundle/chunk-MD2J3POF.js +52 -0
  37. package/dist/bundle/{chunk-MQUJEQTU.js → chunk-NCWO2FNC.js} +2 -2
  38. package/dist/bundle/{chunk-BLS5YG77.js → chunk-NOU6MWEM.js} +2 -2
  39. package/dist/bundle/{chunk-LQ37ALDJ.js → chunk-NXJLC2WK.js} +8 -8
  40. package/dist/bundle/{chunk-F3NYA4KN.js → chunk-NZB4WGQS.js} +6 -6
  41. package/dist/bundle/{chunk-2FXVBCA3.js → chunk-O555ZEQR.js} +4 -4
  42. package/dist/bundle/{chunk-7XNPSIWD.js → chunk-O7VK7CJX.js} +2 -2
  43. package/dist/bundle/{chunk-JJBQPA7D.js → chunk-OHV5RDFE.js} +4 -4
  44. package/dist/bundle/{chunk-BFJV4FWJ.js → chunk-P5B7IFOG.js} +2 -2
  45. package/dist/bundle/{chunk-5INWLYBD.js → chunk-PBYDT3CG.js} +13 -3
  46. package/dist/bundle/{chunk-AFCGOZR7.js → chunk-PHPC72DP.js} +7 -7
  47. package/dist/bundle/{chunk-B5WSIWY5.js → chunk-PKU6V4EQ.js} +17 -17
  48. package/dist/bundle/{chunk-P7P5MNAU.js → chunk-QZBT6BOU.js} +1 -1
  49. package/dist/bundle/{chunk-EB3R2PV3.js → chunk-RAZOSYEO.js} +23 -23
  50. package/dist/bundle/{chunk-IWDOGGMY.js → chunk-RDSAI6DC.js} +398 -293
  51. package/dist/bundle/{chunk-PJCTWPJB.js → chunk-SAZJDKEI.js} +8 -8
  52. package/dist/bundle/{chunk-QX7RCLRS.js → chunk-SQLCCKEL.js} +1 -1
  53. package/dist/bundle/{chunk-VXAZZGXE.js → chunk-TKJDGAHT.js} +23 -23
  54. package/dist/bundle/{chunk-6TY3DGCC.js → chunk-TPNC5VCJ.js} +4 -4
  55. package/dist/bundle/{chunk-6GE3EADU.js → chunk-UAXBLHZK.js} +2 -2
  56. package/dist/bundle/{chunk-SQ7KOBRA.js → chunk-VEAP5RVI.js} +10 -8
  57. package/dist/bundle/{chunk-2YQNBIDQ.js → chunk-VF24ZAPX.js} +4 -4
  58. package/dist/bundle/{chunk-LNS27BTB.js → chunk-WCL3WBH5.js} +3 -3
  59. package/dist/bundle/{chunk-4XJ4AM3K.js → chunk-WGK4AIRL.js} +12 -12
  60. package/dist/bundle/{chunk-VDAIJM5L.js → chunk-XERTHQ6D.js} +88 -34
  61. package/dist/bundle/{chunk-YRGBZZUW.js → chunk-XZGLY2LU.js} +14 -14
  62. package/dist/bundle/{chunk-WNCCYHRV.js → chunk-Y7JKWQC2.js} +96 -94
  63. package/dist/bundle/{chunk-LOA4X6JW.js → chunk-YBJMBPL7.js} +6 -6
  64. package/dist/bundle/{chunk-5FK6RD4M.js → chunk-ZMMIIBTM.js} +73 -57
  65. package/dist/bundle/{chunk-HCMUGUAG.js → chunk-ZPGLWMNH.js} +3 -3
  66. package/dist/bundle/{chunk-CEAANMJ2.js → chunk-ZRYFEEXZ.js} +3 -3
  67. package/dist/bundle/command-contract-NZF4B5OR.js +34 -0
  68. package/dist/bundle/{decode-D7BDVIVB.js → decode-HVXDCQ63.js} +5 -5
  69. package/dist/bundle/{dispatch-EUKKT3PD.js → dispatch-GDAH4JHS.js} +8 -8
  70. package/dist/bundle/dist-43DZXMBL.js +134 -0
  71. package/dist/bundle/{echarts-IVRX7XHP.js → echarts-LZ74IXHG.js} +2 -2
  72. package/dist/bundle/{embed-X527RBTG.js → embed-OQF5U2C6.js} +6 -6
  73. package/dist/bundle/{embedder-F4PSJS6S.js → embedder-OCWQAWKO.js} +9 -9
  74. package/dist/bundle/{failure-OAIC5VAP.js → failure-6COJAO7T.js} +2 -2
  75. package/dist/bundle/{first-run-M5CIX6NA.js → first-run-MTZPUPGA.js} +11 -11
  76. package/dist/bundle/first-screen-4PBS6QK5.js +32 -0
  77. package/dist/bundle/{instructions-UX36BT5F.js → instructions-M6F4FP7U.js} +1 -1
  78. package/dist/bundle/mail.js +12 -11
  79. package/dist/bundle/{mcp-L7SRVDRN.js → mcp-GAPDLFWA.js} +2 -2
  80. package/dist/bundle/{node-OXT7WE2T.js → node-NYBBFHGN.js} +2 -2
  81. package/dist/bundle/{node-sqlite-X2PSEHA4.js → node-sqlite-CWCNWO75.js} +5 -5
  82. package/dist/bundle/{oauth-MYK4BSYN.js → oauth-DVX45EME.js} +7 -7
  83. package/dist/bundle/{open-GONIP2DH.js → open-M7EQWWHL.js} +4 -4
  84. package/dist/bundle/{openai-YJFNUOQT.js → openai-63KRU5H2.js} +14 -14
  85. package/dist/bundle/{process-7IEUUSRK.js → process-DV5GQIGM.js} +1 -1
  86. package/dist/bundle/{program-Q73TTG3E.js → program-EPR3QCMX.js} +20562 -7617
  87. package/dist/bundle/{prompt-SKQ72KN7.js → prompt-EPWPWTB3.js} +5 -5
  88. package/dist/bundle/{recognize-GC7CU2DB.js → recognize-R46KDXK4.js} +4 -4
  89. package/dist/bundle/{remote-UEXFZP2I.js → remote-RENCYB5X.js} +7 -7
  90. package/dist/bundle/{rerank-2U2NDEZP.js → rerank-VHPC5O73.js} +7 -7
  91. package/dist/bundle/{serve-OOGKFEWL.js → serve-KCH3ORYO.js} +9 -9
  92. package/dist/bundle/server-FMCPE2ZK.js +63 -0
  93. package/dist/bundle/{server-FZ3LFQTF.js → server-HZVXSK7B.js} +38 -38
  94. package/dist/bundle/{sqlite-runtime-GIQSW6LJ.js → sqlite-runtime-XP7ZJCKJ.js} +5 -5
  95. package/dist/bundle/{state-EMFXPQVZ.js → state-GQ4MEQJ5.js} +6 -6
  96. package/dist/bundle/{store-LDI62AUG.js → store-CQNLNINW.js} +13 -13
  97. package/dist/bundle/{store-BDU4UPNK.js → store-WT7YTR3Y.js} +15 -15
  98. package/dist/bundle/store-maintenance-command-YYR42IT4.js +52 -0
  99. package/dist/commands/attachments.d.ts +3 -0
  100. package/dist/commands/attachments.d.ts.map +1 -0
  101. package/dist/commands/attachments.js +97 -0
  102. package/dist/commands/attachments.js.map +1 -0
  103. package/dist/commands/context.d.ts.map +1 -1
  104. package/dist/commands/context.js +11 -1
  105. package/dist/commands/context.js.map +1 -1
  106. package/dist/commands/drafts-send.d.ts +7 -0
  107. package/dist/commands/drafts-send.d.ts.map +1 -0
  108. package/dist/commands/drafts-send.js +58 -0
  109. package/dist/commands/drafts-send.js.map +1 -0
  110. package/dist/commands/drafts.d.ts +3 -0
  111. package/dist/commands/drafts.d.ts.map +1 -0
  112. package/dist/commands/drafts.js +239 -0
  113. package/dist/commands/drafts.js.map +1 -0
  114. package/dist/commands/export.d.ts +3 -0
  115. package/dist/commands/export.d.ts.map +1 -0
  116. package/dist/commands/export.js +275 -0
  117. package/dist/commands/export.js.map +1 -0
  118. package/dist/commands/folders.d.ts.map +1 -1
  119. package/dist/commands/folders.js +120 -2
  120. package/dist/commands/folders.js.map +1 -1
  121. package/dist/commands/messages.d.ts +25 -0
  122. package/dist/commands/messages.d.ts.map +1 -0
  123. package/dist/commands/messages.js +502 -0
  124. package/dist/commands/messages.js.map +1 -0
  125. package/dist/commands/read.d.ts +4 -1
  126. package/dist/commands/read.d.ts.map +1 -1
  127. package/dist/commands/read.js +12 -2
  128. package/dist/commands/read.js.map +1 -1
  129. package/dist/commands/rules.d.ts +3 -0
  130. package/dist/commands/rules.d.ts.map +1 -0
  131. package/dist/commands/rules.js +292 -0
  132. package/dist/commands/rules.js.map +1 -0
  133. package/dist/commands/send.d.ts +39 -0
  134. package/dist/commands/send.d.ts.map +1 -0
  135. package/dist/commands/send.js +309 -0
  136. package/dist/commands/send.js.map +1 -0
  137. package/dist/commands/server-search.d.ts +8 -0
  138. package/dist/commands/server-search.d.ts.map +1 -0
  139. package/dist/commands/server-search.js +38 -0
  140. package/dist/commands/server-search.js.map +1 -0
  141. package/dist/commands/stats.d.ts +3 -0
  142. package/dist/commands/stats.d.ts.map +1 -0
  143. package/dist/commands/stats.js +90 -0
  144. package/dist/commands/stats.js.map +1 -0
  145. package/dist/commands/sync.d.ts +7 -0
  146. package/dist/commands/sync.d.ts.map +1 -1
  147. package/dist/commands/sync.js +22 -7
  148. package/dist/commands/sync.js.map +1 -1
  149. package/dist/commands/tags.d.ts +3 -0
  150. package/dist/commands/tags.d.ts.map +1 -0
  151. package/dist/commands/tags.js +144 -0
  152. package/dist/commands/tags.js.map +1 -0
  153. package/dist/config.d.ts +13 -0
  154. package/dist/config.d.ts.map +1 -1
  155. package/dist/config.js +47 -1
  156. package/dist/config.js.map +1 -1
  157. package/dist/export/format.d.ts +19 -0
  158. package/dist/export/format.d.ts.map +1 -0
  159. package/dist/export/format.js +40 -0
  160. package/dist/export/format.js.map +1 -0
  161. package/dist/export/journal.d.ts +32 -0
  162. package/dist/export/journal.d.ts.map +1 -0
  163. package/dist/export/journal.js +84 -0
  164. package/dist/export/journal.js.map +1 -0
  165. package/dist/export/write.d.ts +14 -0
  166. package/dist/export/write.d.ts.map +1 -0
  167. package/dist/export/write.js +42 -0
  168. package/dist/export/write.js.map +1 -0
  169. package/dist/identity.d.ts.map +1 -1
  170. package/dist/identity.js +3 -0
  171. package/dist/identity.js.map +1 -1
  172. package/dist/mail/backend.d.ts +81 -1
  173. package/dist/mail/backend.d.ts.map +1 -1
  174. package/dist/mail/changes.d.ts +91 -0
  175. package/dist/mail/changes.d.ts.map +1 -0
  176. package/dist/mail/changes.js +198 -0
  177. package/dist/mail/changes.js.map +1 -0
  178. package/dist/mail/cleanup.d.ts +41 -0
  179. package/dist/mail/cleanup.d.ts.map +1 -0
  180. package/dist/mail/cleanup.js +119 -0
  181. package/dist/mail/cleanup.js.map +1 -0
  182. package/dist/mail/compose.d.ts +73 -0
  183. package/dist/mail/compose.d.ts.map +1 -0
  184. package/dist/mail/compose.js +122 -0
  185. package/dist/mail/compose.js.map +1 -0
  186. package/dist/mail/doctor.d.ts +25 -0
  187. package/dist/mail/doctor.d.ts.map +1 -0
  188. package/dist/mail/doctor.js +39 -0
  189. package/dist/mail/doctor.js.map +1 -0
  190. package/dist/mail/drafts.d.ts +54 -0
  191. package/dist/mail/drafts.d.ts.map +1 -0
  192. package/dist/mail/drafts.js +104 -0
  193. package/dist/mail/drafts.js.map +1 -0
  194. package/dist/mail/imap/connection.d.ts +7 -0
  195. package/dist/mail/imap/connection.d.ts.map +1 -1
  196. package/dist/mail/imap/connection.js +24 -2
  197. package/dist/mail/imap/connection.js.map +1 -1
  198. package/dist/mail/imap/index.d.ts +1 -1
  199. package/dist/mail/imap/index.d.ts.map +1 -1
  200. package/dist/mail/imap/index.js +12 -2
  201. package/dist/mail/imap/index.js.map +1 -1
  202. package/dist/mail/imap/messages.d.ts +5 -6
  203. package/dist/mail/imap/messages.d.ts.map +1 -1
  204. package/dist/mail/imap/messages.js +14 -28
  205. package/dist/mail/imap/messages.js.map +1 -1
  206. package/dist/mail/imap/read.d.ts.map +1 -1
  207. package/dist/mail/imap/read.js +27 -13
  208. package/dist/mail/imap/read.js.map +1 -1
  209. package/dist/mail/imap/search.d.ts +14 -0
  210. package/dist/mail/imap/search.d.ts.map +1 -0
  211. package/dist/mail/imap/search.js +49 -0
  212. package/dist/mail/imap/search.js.map +1 -0
  213. package/dist/mail/imap/write.d.ts +5 -0
  214. package/dist/mail/imap/write.d.ts.map +1 -0
  215. package/dist/mail/imap/write.js +93 -0
  216. package/dist/mail/imap/write.js.map +1 -0
  217. package/dist/mail/organise.d.ts +116 -0
  218. package/dist/mail/organise.d.ts.map +1 -0
  219. package/dist/mail/organise.js +531 -0
  220. package/dist/mail/organise.js.map +1 -0
  221. package/dist/mail/rethread.d.ts +1 -2
  222. package/dist/mail/rethread.d.ts.map +1 -1
  223. package/dist/mail/rethread.js +8 -3
  224. package/dist/mail/rethread.js.map +1 -1
  225. package/dist/mail/rules/apply.d.ts +40 -0
  226. package/dist/mail/rules/apply.d.ts.map +1 -0
  227. package/dist/mail/rules/apply.js +114 -0
  228. package/dist/mail/rules/apply.js.map +1 -0
  229. package/dist/mail/rules/file.d.ts +9 -0
  230. package/dist/mail/rules/file.d.ts.map +1 -0
  231. package/dist/mail/rules/file.js +51 -0
  232. package/dist/mail/rules/file.js.map +1 -0
  233. package/dist/mail/rules/filters.d.ts +11 -0
  234. package/dist/mail/rules/filters.d.ts.map +1 -0
  235. package/dist/mail/rules/filters.js +150 -0
  236. package/dist/mail/rules/filters.js.map +1 -0
  237. package/dist/mail/rules/folders.d.ts +11 -0
  238. package/dist/mail/rules/folders.d.ts.map +1 -0
  239. package/dist/mail/rules/folders.js +17 -0
  240. package/dist/mail/rules/folders.js.map +1 -0
  241. package/dist/mail/rules/query.d.ts +15 -0
  242. package/dist/mail/rules/query.d.ts.map +1 -0
  243. package/dist/mail/rules/query.js +103 -0
  244. package/dist/mail/rules/query.js.map +1 -0
  245. package/dist/mail/rules/store.d.ts +9 -0
  246. package/dist/mail/rules/store.d.ts.map +1 -0
  247. package/dist/mail/rules/store.js +17 -0
  248. package/dist/mail/rules/store.js.map +1 -0
  249. package/dist/mail/save.d.ts +12 -0
  250. package/dist/mail/save.d.ts.map +1 -0
  251. package/dist/mail/save.js +71 -0
  252. package/dist/mail/save.js.map +1 -0
  253. package/dist/mail/send.d.ts +67 -0
  254. package/dist/mail/send.d.ts.map +1 -0
  255. package/dist/mail/send.js +172 -0
  256. package/dist/mail/send.js.map +1 -0
  257. package/dist/mail/smtp.d.ts +4 -0
  258. package/dist/mail/smtp.d.ts.map +1 -0
  259. package/dist/mail/smtp.js +97 -0
  260. package/dist/mail/smtp.js.map +1 -0
  261. package/dist/program.d.ts.map +1 -1
  262. package/dist/program.js +26 -4
  263. package/dist/program.js.map +1 -1
  264. package/dist/providers.d.ts +71 -6
  265. package/dist/providers.d.ts.map +1 -1
  266. package/dist/providers.js +38 -9
  267. package/dist/providers.js.map +1 -1
  268. package/dist/reasons.d.ts +9 -0
  269. package/dist/reasons.d.ts.map +1 -0
  270. package/dist/reasons.js +21 -0
  271. package/dist/reasons.js.map +1 -0
  272. package/dist/version.d.ts +1 -1
  273. package/dist/version.js +1 -1
  274. package/package.json +8 -5
  275. package/skills/mail-cli/SKILL.md +30 -3
  276. package/dist/bundle/chunk-YD5WV757.js +0 -27
  277. package/dist/bundle/command-contract-GPUED3GT.js +0 -34
  278. package/dist/bundle/first-screen-M7MT776O.js +0 -32
  279. package/dist/bundle/server-4JMHDHZ7.js +0 -63
  280. package/dist/bundle/store-maintenance-command-OFRPORN2.js +0 -52
  281. /package/dist/bundle/{chunk-NPGVOZVK.js → chunk-WJWLHLQ7.js} +0 -0
@@ -0,0 +1,502 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { annotate } from "@wirecat/cli-base/commands";
3
+ import { timezoneOf, zonedMoment } from "@wirecat/cli-base/query";
4
+ import { answerEntity, baseContext, currentRun, envName, itemOf, outputFor, REMOTE_WRITE, renderAnswer, terminalAsker, } from "@wirecat/cli-core/cli";
5
+ import { decide, factsOf, listedOf, storedMailRules } from "@wirecat/cli-core/mail";
6
+ import { guardFor } from "@wirecat/cli-core/sends";
7
+ import { Command } from "commander";
8
+ import * as v from "valibot";
9
+ import { configuration } from "../config.js";
10
+ import { IDENTITY } from "../identity.js";
11
+ import { ChangeLog, readRun } from "../mail/changes.js";
12
+ import { CLEANUP_LIMIT, cleanupOf } from "../mail/cleanup.js";
13
+ import { BULK, Changer, changeFlags, FILTER_LIMIT, flagOf, locate, MAX_LIMIT, moveMessages, restoreRun, selectIds, targetOf, trashMessages, trashOf, } from "../mail/organise.js";
14
+ import { DEFAULT_ORGANISE, providerFor } from "../providers.js";
15
+ import { openMailStore } from "../store.js";
16
+ import { collect, contextOf, openMail, refuseOffline } from "./context.js";
17
+ const BULK_KEY = "messages.bulk";
18
+ const mailChange = v.looseObject({
19
+ action: v.string(),
20
+ applied: v.boolean(),
21
+ run: v.nullable(v.string()),
22
+ selected: v.number(),
23
+ located: v.number(),
24
+ changed: v.number(),
25
+ missing: v.number(),
26
+ already_deleted: v.number(),
27
+ in_trash: v.number(),
28
+ more: v.boolean(),
29
+ folders: v.array(v.strictObject({ folder: v.string(), messages: v.number() })),
30
+ to: v.optional(v.string()),
31
+ kept: v.optional(v.record(v.string(), v.number())),
32
+ hint: v.optional(v.string()),
33
+ });
34
+ const mailRestore = v.looseObject({
35
+ run: v.string(),
36
+ applied: v.boolean(),
37
+ restore_run: v.nullable(v.string()),
38
+ command: v.string(),
39
+ logged: v.number(),
40
+ restorable: v.number(),
41
+ missing: v.number(),
42
+ restored: v.number(),
43
+ expired: v.boolean(),
44
+ restorable_until: v.nullable(v.string()),
45
+ });
46
+ const limitOf = (value) => {
47
+ if (!/^\d+$/.test(value.trim()) || Number(value) < 1 || Number(value) > MAX_LIMIT)
48
+ throw new CliError("validation_error", `--limit takes a whole number from 1 to ${MAX_LIMIT}`, { param: "limit" });
49
+ return Number(value);
50
+ };
51
+ /** The y/N question once per key: a change made in several steps asks once. */
52
+ const askingOnce = (ask) => {
53
+ const answered = new Set();
54
+ return async (key, request) => {
55
+ if (answered.has(key))
56
+ return;
57
+ await ask(key, request);
58
+ answered.add(key);
59
+ };
60
+ };
61
+ /**
62
+ * The family asks `--allow-dangerous` before a deletion, which cannot be undone in a messenger. Mail's goes to Trash
63
+ * and `messages restore` brings it back, so `--yes` answers it; `--allow-dangerous` stays for what is lost for good.
64
+ */
65
+ const trashNeedsOnlyYes = (command, ask) => async (key, request) => {
66
+ if (key === "messages.delete" && command.optsWithGlobals().yes === true)
67
+ return;
68
+ await ask(key, request);
69
+ };
70
+ const commandLine = (command, profile) => {
71
+ const path = [];
72
+ for (let at = command; at?.parent; at = at.parent)
73
+ path.unshift(at.name());
74
+ return { path: path.join(" "), line: `${IDENTITY.command} ${profile} ${path.join(" ")}` };
75
+ };
76
+ /** Opens the store and the mailbox for one write command, and closes both after `work`. */
77
+ export const organising = async (command, work) => {
78
+ const context = contextOf(command);
79
+ refuseOffline(context.flags);
80
+ const address = context.settings.mailbox.address;
81
+ if (!address)
82
+ throw new CliError("configuration_error", `profile ${context.profile} has no address`);
83
+ const { backend } = await openMail(context);
84
+ try {
85
+ return await baseContext(command, configuration.resolveSettings).run(async () => {
86
+ const writes = backend.writes;
87
+ if (!writes)
88
+ throw new CliError("provider_unavailable", "this mailbox cannot be changed from here");
89
+ const store = await openMailStore(context.env);
90
+ context.environment.trackCloseable?.(store);
91
+ try {
92
+ const key = { provider: "email", account: address.toLowerCase() };
93
+ const stored = await store.accounts.storedAccount(key).catch(() => null);
94
+ if (stored === null)
95
+ throw new CliError("not_found", `no mail of ${address} is stored yet; run \`${IDENTITY.command} ${context.profile} sync\` first`);
96
+ let folders;
97
+ const mailbox = {
98
+ app: IDENTITY,
99
+ store,
100
+ key,
101
+ accountId: stored.id,
102
+ writes,
103
+ folders: async () => {
104
+ folders ??= await backend.folderList();
105
+ return folders;
106
+ },
107
+ organise: providerFor(address, context.settings.mailbox.host)?.organise ?? DEFAULT_ORGANISE,
108
+ now: Date.now,
109
+ };
110
+ // baseContext adds an MCP server's own --permission overrides, which a key checked only here would miss.
111
+ const { settings } = baseContext(command, configuration.resolveSettings);
112
+ const guard = guardFor(IDENTITY, { ...settings, permissionDefaults: configuration.permissions?.defaults ?? {} }, (message) => outputFor(command).renderer.warn(message), context.env, askingOnce(trashNeedsOnlyYes(command, terminalAsker(command))));
113
+ const { path, line } = commandLine(command, context.profile);
114
+ return await work({
115
+ mailbox,
116
+ backend,
117
+ guard,
118
+ profile: context.profile,
119
+ env: context.env,
120
+ path,
121
+ line,
122
+ log: (_action, extra = {}) => new ChangeLog(context.env, {
123
+ type: "run",
124
+ id: currentRun().runId,
125
+ account: key.account,
126
+ command: extra.command ?? line,
127
+ started_at: new Date().toISOString(),
128
+ ...(extra.restorableUntil ? { restorable_until: extra.restorableUntil } : {}),
129
+ }),
130
+ });
131
+ }
132
+ finally {
133
+ await store.close();
134
+ }
135
+ });
136
+ }
137
+ finally {
138
+ await backend.close();
139
+ }
140
+ };
141
+ /** A bulk change is checked as `messages.bulk` too, before anything is sent, so an owner can stop agents doing many. */
142
+ const checkBulk = async (guard, count) => {
143
+ const probe = { chatId: null, kind: "read", key: BULK_KEY, count };
144
+ await guard.ask?.(probe);
145
+ guard.check(probe, { reserve: false });
146
+ };
147
+ const restoreHint = (opened, run) => `${IDENTITY.command} ${opened.profile} messages restore --run ${run} --yes undoes it`;
148
+ /** Previews unless `--yes` (or always under `--dry-run`); a single small change that only flags or moves needs none. */
149
+ const answerChange = (command, opened, plan, outcome, given, extra = {}) => {
150
+ const { located, selected } = plan;
151
+ const folders = located.located.map(({ folder, items }) => ({ folder, messages: items.length }));
152
+ const count = located.located.reduce((sum, { items }) => sum + items.length, 0);
153
+ const kept = { ...plan.kept, ...outcome?.kept };
154
+ const next = outcome
155
+ ? [
156
+ {
157
+ kind: "command",
158
+ step: "mail.restore",
159
+ command: "messages restore",
160
+ args: { run: outcome.run },
161
+ why: "puts back what this run changed, while the server still holds it",
162
+ safe_to_auto_execute: false,
163
+ },
164
+ ]
165
+ : count > 0
166
+ ? [
167
+ {
168
+ kind: "command",
169
+ step: "mail.apply",
170
+ command: opened.path,
171
+ args: { ...given, yes: true },
172
+ why: "this was a preview; the same command with --yes makes the change",
173
+ safe_to_auto_execute: false,
174
+ },
175
+ ]
176
+ : [];
177
+ renderAnswer(command, outputFor(command), itemOf({
178
+ action: plan.action,
179
+ applied: outcome !== null,
180
+ run: outcome?.run ?? null,
181
+ selected: selected.ids.length,
182
+ located: count,
183
+ changed: outcome?.changed.length ?? 0,
184
+ missing: located.missing.length,
185
+ already_deleted: located.deleted.length,
186
+ in_trash: located.inTrash.length,
187
+ more: selected.more,
188
+ folders,
189
+ ...(plan.to ? { to: plan.to } : {}),
190
+ ...(Object.keys(kept).length ? { kept } : {}),
191
+ ...extra,
192
+ ...(outcome
193
+ ? { hint: restoreHint(opened, outcome.run) }
194
+ : count > 0
195
+ ? { hint: `a preview: nothing changed; add --yes to change ${count}` }
196
+ : {}),
197
+ }, { next }));
198
+ };
199
+ const selection = (command, max = FILTER_LIMIT) => command
200
+ .argument("[message...]", "msg:email/… references, as search messages shows them")
201
+ .option("--filter <query>", "the stored mail this query finds, instead of references (search messages syntax)")
202
+ .option("--limit <n>", `with --filter, at most this many, newest first (default ${max}, at most ${MAX_LIMIT})`, limitOf)
203
+ .option("--yes", "make the change; a deletion or a change of many is only a preview without it")
204
+ .option("--dry-run", "only preview what would change, even with --yes");
205
+ const yesOf = (command) => command.optsWithGlobals().yes === true;
206
+ const givenArgs = (refs, options) => ({
207
+ ...(refs.length ? { message: refs } : {}),
208
+ ...(options.filter === undefined ? {} : { filter: options.filter }),
209
+ ...(options.limit === undefined ? {} : { limit: options.limit }),
210
+ });
211
+ /** The shape of every flag and move command: select, locate, preview or change, answer. */
212
+ const organiseAction = (action, key, describe) => async function (refs, options) {
213
+ await organising(this, async (opened) => {
214
+ const plan = await describe(opened, options);
215
+ const selected = await selectIds(opened.mailbox, {
216
+ refs,
217
+ ...(options.filter === undefined ? {} : { filter: options.filter }),
218
+ ...(options.limit === undefined ? {} : { limit: options.limit }),
219
+ });
220
+ const located = await locate(opened.mailbox, selected.ids, {
221
+ everywhere: plan.everywhere === true,
222
+ ...(plan.destructive ? { trash: await trashOf(opened.mailbox) } : {}),
223
+ });
224
+ const count = located.located.reduce((sum, { items }) => sum + items.length, 0);
225
+ const bulk = options.filter !== undefined || count > BULK;
226
+ const preview = options.dryRun === true || ((bulk || plan.destructive === true) && !yesOf(this));
227
+ const planned = { action: plan.name, selected, located, ...(plan.to ? { to: plan.to } : {}) };
228
+ const given = givenArgs(refs, options);
229
+ if (preview || count === 0)
230
+ return answerChange(this, opened, planned, null, given);
231
+ if (bulk)
232
+ await checkBulk(opened.guard, count);
233
+ const log = opened.log(action);
234
+ const changer = new Changer(opened.mailbox, opened.guard, log, key, action);
235
+ try {
236
+ const changed = await plan.change(changer, located.located);
237
+ answerChange(this, opened, planned, { run: log.run.id, changed }, given);
238
+ }
239
+ finally {
240
+ log.end(Date.now());
241
+ }
242
+ });
243
+ };
244
+ const flagCommand = (name, summary, change, example) => answerEntity(selection(annotate(new Command(name), {
245
+ effects: REMOTE_WRITE,
246
+ examples: [
247
+ `${IDENTITY.command} ya messages ${name} ${example}`,
248
+ `${IDENTITY.command} ya messages ${name} --filter 'from:shop@example.com is:unread' --yes`,
249
+ ],
250
+ })), "mail_change", mailChange)
251
+ .summary(summary)
252
+ .description(`${summary}; on the server first, then in the store, so search shows it at once`)
253
+ .action(organiseAction("message-flag", `messages.${name}`, async () => ({
254
+ name,
255
+ everywhere: true,
256
+ change: (changer, located) => changeFlags(changer, located, change),
257
+ })));
258
+ const REF = "msg:email/me%40example.com/t1/m1";
259
+ const updateCommand = () => answerEntity(selection(annotate(new Command("update"), {
260
+ effects: REMOTE_WRITE,
261
+ examples: [
262
+ `${IDENTITY.command} ya messages update ${REF} --flag answered --unflag '$Junk'`,
263
+ `${IDENTITY.command} ya messages update ${REF} --flag read --flag flagged --replace`,
264
+ ],
265
+ })), "mail_change", mailChange)
266
+ .summary("set, unset or replace flags and keywords")
267
+ .description("set and unset flags (read, flagged, answered, draft) and keywords ($Forwarded, $Junk, words of your own); " +
268
+ "--replace makes --flag each message's whole set")
269
+ .option("--flag <flag>", "a flag or keyword to set; repeat it for more", collect)
270
+ .option("--unflag <flag>", "a flag or keyword to take away; repeat it for more", collect)
271
+ .option("--replace", "--flag is the whole set: every other flag and keyword is taken away")
272
+ .action(organiseAction("message-flag", "messages.update", async (_opened, options) => {
273
+ const add = (options.flag ?? []).map(flagOf);
274
+ const remove = (options.unflag ?? []).map(flagOf);
275
+ if (options.replace && remove.length)
276
+ throw new CliError("validation_error", "--replace takes --flag only: everything else is taken away");
277
+ if (!options.replace && add.length === 0 && remove.length === 0)
278
+ throw new CliError("validation_error", "give --flag or --unflag, or --replace with --flag");
279
+ return {
280
+ name: "update",
281
+ everywhere: true,
282
+ change: (changer, located) => changeFlags(changer, located, { add, remove, replace: options.replace === true }),
283
+ };
284
+ }));
285
+ const moveCommand = (op) => answerEntity(selection(annotate(new Command(op), {
286
+ effects: REMOTE_WRITE,
287
+ examples: [
288
+ `${IDENTITY.command} ya messages ${op} ${REF} --folder Archive`,
289
+ `${IDENTITY.command} ya messages ${op} --filter 'list:github.com date<2026-01-01' --folder Lists --yes`,
290
+ ],
291
+ })), "mail_change", mailChange)
292
+ .summary(op === "move" ? "move messages to another folder" : "copy messages to another folder")
293
+ .description(op === "move"
294
+ ? "move messages to a folder, by path, name or role (archive, junk, inbox); on Gmail, a label change that takes Inbox away"
295
+ : "copy messages to a folder, by path, name or role; on Gmail, a label added")
296
+ .requiredOption("--folder <folder>", "the folder: its path, its name, or a role (archive, junk, inbox)")
297
+ .action(organiseAction(op === "move" ? "message-move" : "message-copy", `messages.${op}`, async (opened, options) => {
298
+ const target = await targetOf(opened.mailbox, String(options.folder), op === "copy");
299
+ return {
300
+ name: op,
301
+ to: target.kind === "folder" ? target.path : target.name,
302
+ change: (changer, located) => moveMessages(changer, located, target, op),
303
+ };
304
+ }));
305
+ const sinceOf = (value) => {
306
+ if (value === undefined)
307
+ return undefined;
308
+ const since = zonedMoment(value, timezoneOf(), { start: 0, end: value.length });
309
+ return new Date(since);
310
+ };
311
+ const cleanupAnswer = (cleanup) => ({
312
+ envelopes: cleanup.envelopes,
313
+ candidates: cleanup.candidates,
314
+ bytes: cleanup.bytes,
315
+ limit: cleanup.limit,
316
+ first_run: cleanup.first_run,
317
+ backup: cleanup.backup,
318
+ rules: cleanup.rules.slice(0, 30),
319
+ });
320
+ const SYSTEM_LABEL = /^\\/;
321
+ /** Gmail's labels and stars as they are now: what the owner starred or labelled since the last sync stays. */
322
+ const keptNow = (rules) => (id, state) => {
323
+ const labels = state.labels ?? [];
324
+ if (state.flags.includes("\\Flagged") || labels.includes("\\Starred") || labels.includes("\\Important"))
325
+ return "starred";
326
+ const tags = rules.get(id)?.tags ?? [];
327
+ if (labels.some((label) => !SYSTEM_LABEL.test(label) && !tags.includes(label)))
328
+ return "labelled";
329
+ return undefined;
330
+ };
331
+ const deleteCommand = () => answerEntity(selection(annotate(new Command("delete"), {
332
+ effects: REMOTE_WRITE,
333
+ examples: [
334
+ `${IDENTITY.command} ya messages delete ${REF} --yes`,
335
+ `${IDENTITY.command} ya messages delete --filter 'from:shop@example.com date<2025-01-01'`,
336
+ `${IDENTITY.command} ya messages delete --rules --yes`,
337
+ ],
338
+ }), CLEANUP_LIMIT), "mail_change", mailChange)
339
+ .summary("move messages to Trash; messages restore brings them back")
340
+ .description("move messages to Trash, where the provider keeps them for a while (Gmail: 30 days) and messages restore brings them back; a preview unless --yes")
341
+ .option("--rules", "the envelope mail the owner's rules let go, each decided again (memo's mail delete)")
342
+ .option("--since-time <time>", "with --rules, only mail received from this time; older mail stays")
343
+ .addHelpText("after", `
344
+ Nothing is expunged: mail goes to Trash and the run's record keeps where it was, its flags and its Gmail labels.
345
+ --rules moves only envelope mail, each email decided again with today's rules: it stays when a protect or keep
346
+ rule matches, you replied to the sender, it is starred, important, sent or a draft, it carries a label of yours, or
347
+ it is under 30 days old; Gmail's labels and stars are read again just before the move. It refuses until the store
348
+ backup is under 8 days old, and a first run moves at most 100, to check by hand. It refuses to run from a schedule.`)
349
+ .action(async function (refs, options) {
350
+ if (options.rules && (refs.length || options.filter !== undefined))
351
+ throw new CliError("validation_error", "--rules chooses the mail itself: give no references or --filter");
352
+ if (options.sinceTime !== undefined && !options.rules)
353
+ throw new CliError("validation_error", "--since-time goes with --rules", { param: "since-time" });
354
+ const scheduled = envName(IDENTITY, "SCHEDULED");
355
+ if (options.rules && contextOf(this).env[scheduled] !== undefined)
356
+ throw new CliError("permission_error", `messages delete --rules does not run from a schedule (${scheduled} is set): the owner checks each run by hand`, { reason: "mail.cleanup-scheduled" });
357
+ await organising(this, async (opened) => {
358
+ const { mailbox } = opened;
359
+ const trash = await trashOf(mailbox);
360
+ let cleanup;
361
+ let rulesOf = new Map();
362
+ let selected;
363
+ if (options.rules) {
364
+ const rules = await storedMailRules(mailbox.store, { address: mailbox.key.account });
365
+ const since = sinceOf(options.sinceTime);
366
+ cleanup = await cleanupOf(mailbox, rules, {
367
+ limit: options.limit ?? CLEANUP_LIMIT,
368
+ env: opened.env,
369
+ ...(since ? { since } : {}),
370
+ });
371
+ const facts = (await mailbox.store.mail.emailFacts({ accountId: mailbox.accountId })).map(listedOf);
372
+ const factsFor = factsOf(facts, rules);
373
+ rulesOf = new Map(facts.flatMap((item) => {
374
+ const rule = decide(rules, factsFor(item));
375
+ return rule && cleanup?.ids.includes(item.messageId) ? [[item.messageId, rule]] : [];
376
+ }));
377
+ selected = { ids: cleanup.ids, more: cleanup.candidates > cleanup.ids.length };
378
+ }
379
+ else
380
+ selected = await selectIds(mailbox, {
381
+ refs,
382
+ ...(options.filter === undefined ? {} : { filter: options.filter }),
383
+ ...(options.limit === undefined ? {} : { limit: options.limit }),
384
+ });
385
+ const located = await locate(mailbox, selected.ids, { trash });
386
+ const count = located.located.reduce((sum, { items }) => sum + items.length, 0);
387
+ const planned = {
388
+ action: options.rules ? "delete by rules" : "delete",
389
+ selected,
390
+ located,
391
+ to: trash,
392
+ ...(cleanup ? { kept: cleanup.kept } : {}),
393
+ };
394
+ const given = {
395
+ ...givenArgs(refs, options),
396
+ ...(options.rules ? { rules: true } : {}),
397
+ ...(options.sinceTime ? { since_time: options.sinceTime } : {}),
398
+ };
399
+ const preview = options.dryRun === true || !yesOf(this);
400
+ const answer = (outcome) => answerChange(this, opened, planned, outcome, given, cleanup ? { cleanup: cleanupAnswer(cleanup) } : {});
401
+ if (preview || count === 0)
402
+ return answer(null);
403
+ if (cleanup && !cleanup.backup.fresh)
404
+ throw new CliError("validation_error", cleanup.backup.at === null
405
+ ? `no store backup is recorded at ${cleanup.backup.marker}; run the backup first`
406
+ : `the newest store backup is from ${cleanup.backup.at}, older than 8 days; run the backup first`, { reason: "mail.archive-unverified" });
407
+ if (options.filter !== undefined || options.rules || count > BULK)
408
+ await checkBulk(opened.guard, count);
409
+ const log = opened.log("message-delete", {
410
+ ...(options.rules ? { command: `${opened.line} --rules` } : {}),
411
+ ...(mailbox.organise.labels ? { restorableUntil: new Date(Date.now() + 30 * 86_400_000).toISOString() } : {}),
412
+ });
413
+ const changer = new Changer(mailbox, opened.guard, log, "messages.delete", "message-delete");
414
+ try {
415
+ const { changed, kept } = await trashMessages(changer, located.located, trash, options.rules ? keptNow(rulesOf) : undefined);
416
+ answer({ run: log.run.id, changed, kept });
417
+ }
418
+ finally {
419
+ log.end(Date.now());
420
+ }
421
+ });
422
+ });
423
+ const restoreCommand = () => answerEntity(annotate(new Command("restore"), {
424
+ effects: REMOTE_WRITE,
425
+ examples: [
426
+ `${IDENTITY.command} ya messages restore --run 20261101T101500Z-messages-delete-1a2b3c`,
427
+ `${IDENTITY.command} ya messages restore --run 20261101T101500Z-messages-delete-1a2b3c --yes`,
428
+ ],
429
+ }), "mail_restore", mailRestore)
430
+ .summary("undo a run of messages delete, move, copy or a flag change")
431
+ .description("undo a change run, last step first, for the messages still where it left them: Trash back to where they were, " +
432
+ "moves back, copies removed, flags as they were; a preview unless --yes")
433
+ .requiredOption("--run <id>", "the run id a change answered with (runs list shows recent runs)")
434
+ .option("--yes", "make the change; without it, only say what would come back")
435
+ .option("--dry-run", "only preview, even with --yes")
436
+ .addHelpText("after", `
437
+ memo's mail delete runs restore here too, by their id. Mail Gmail has emptied from Trash (30 days) cannot come back.
438
+ Envelopes come back to search at once; mail with text is saved again by the next sync.`)
439
+ .action(async function (options) {
440
+ await organising(this, async (opened) => {
441
+ const found = readRun(opened.env, opened.mailbox.key.account, options.run);
442
+ const apply = options.dryRun !== true && yesOf(this);
443
+ const log = apply ? opened.log("message-restore") : undefined;
444
+ const changer = new Changer(opened.mailbox, opened.guard, log ?? { begin: () => 0, done: () => { }, run: { id: "" } }, "messages.restore", "message-restore");
445
+ try {
446
+ const plan = await restoreRun(changer, found.run, found.path, apply);
447
+ const next = apply
448
+ ? plan.restored > 0
449
+ ? [
450
+ {
451
+ kind: "command",
452
+ step: "mail.sync",
453
+ command: "sync",
454
+ args: {},
455
+ why: "mail with text comes back to search when sync saves it again",
456
+ safe_to_auto_execute: true,
457
+ },
458
+ ]
459
+ : []
460
+ : plan.restorable > 0
461
+ ? [
462
+ {
463
+ kind: "command",
464
+ step: "mail.apply",
465
+ command: "messages restore",
466
+ args: { run: options.run, yes: true },
467
+ why: "this was a preview; --yes moves them back",
468
+ safe_to_auto_execute: false,
469
+ },
470
+ ]
471
+ : [];
472
+ renderAnswer(this, outputFor(this), itemOf({
473
+ run: plan.run,
474
+ applied: apply,
475
+ restore_run: log?.run.id ?? null,
476
+ command: plan.command,
477
+ logged: plan.logged,
478
+ restorable: plan.restorable,
479
+ missing: plan.missing,
480
+ restored: plan.restored,
481
+ expired: plan.expired,
482
+ restorable_until: plan.restorable_until,
483
+ }, { next }));
484
+ }
485
+ finally {
486
+ log?.end(Date.now());
487
+ }
488
+ });
489
+ });
490
+ /** The write commands of `messages`, mounted beside cli-core's `messages show`. */
491
+ export const messageWrites = () => [
492
+ flagCommand("mark-read", "mark messages read", { add: ["\\Seen"], remove: [] }, REF),
493
+ flagCommand("mark-unread", "mark messages unread", { add: [], remove: ["\\Seen"] }, REF),
494
+ flagCommand("star", "star messages (the \\Flagged flag)", { add: ["\\Flagged"], remove: [] }, REF),
495
+ flagCommand("unstar", "take the star away", { add: [], remove: ["\\Flagged"] }, REF),
496
+ updateCommand(),
497
+ moveCommand("move"),
498
+ moveCommand("copy"),
499
+ deleteCommand(),
500
+ restoreCommand(),
501
+ ];
502
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
- /** `search messages`, `messages show`, `conversations list|show`: cli-core's, over this profile's mailbox. */
1
+ /**
2
+ * `search messages`, `messages show`, `conversations list|show`: cli-core's, over this profile's mailbox; the search
3
+ * also asks the mail server (`--backend`).
4
+ */
2
5
  export declare const readCommands: () => import("commander").Command[];
3
6
  //# sourceMappingURL=read.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAqCA,8GAA8G;AAC9G,eAAO,MAAM,YAAY,qCAAgC,CAAA"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAwCA;;;GAGG;AACH,eAAO,MAAM,YAAY,qCAIxB,CAAA"}
@@ -7,8 +7,11 @@ import { configuration } from "../config.js";
7
7
  import { IDENTITY } from "../identity.js";
8
8
  import { openMailStore } from "../store.js";
9
9
  import { contextOf } from "./context.js";
10
+ import { exportLeaf } from "./export.js";
11
+ import { serverAccess } from "./server-search.js";
10
12
  const reads = {
11
13
  app: IDENTITY,
14
+ server: serverAccess,
12
15
  read: async (command, work) => {
13
16
  const context = contextOf(command);
14
17
  const address = context.settings.mailbox.address;
@@ -28,6 +31,13 @@ const reads = {
28
31
  });
29
32
  },
30
33
  };
31
- /** `search messages`, `messages show`, `conversations list|show`: cli-core's, over this profile's mailbox. */
32
- export const readCommands = () => mailReadCommands(reads);
34
+ /**
35
+ * `search messages`, `messages show`, `conversations list|show`: cli-core's, over this profile's mailbox; the search
36
+ * also asks the mail server (`--backend`).
37
+ */
38
+ export const readCommands = () => {
39
+ const commands = mailReadCommands(reads);
40
+ commands.find((command) => command.name() === "messages")?.addCommand(exportLeaf());
41
+ return commands;
42
+ };
33
43
  //# sourceMappingURL=read.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAkB,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,MAAM,KAAK,GAAc;IACvB,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QAClC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;QAChD,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,QAAQ,CAChB,qBAAqB,EACrB,WAAW,OAAO,CAAC,OAAO,0BAA0B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,oCAAoC,CAC5H,CAAA;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,IAAI,QAAQ,CAChB,WAAW,EACX,gCAAgC,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,eAAe,CACnF,CAAA;QACH,OAAO,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACxE,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC9C,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAA;YAC3C,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;YACjF,CAAC;oBAAS,CAAC;gBACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;YACrB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,8GAA8G;AAC9G,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAkB,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,KAAK,GAAc;IACvB,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QAClC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;QAChD,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,QAAQ,CAChB,qBAAqB,EACrB,WAAW,OAAO,CAAC,OAAO,0BAA0B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,oCAAoC,CAC5H,CAAA;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,IAAI,QAAQ,CAChB,WAAW,EACX,gCAAgC,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,eAAe,CACnF,CAAA;QACH,OAAO,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACxE,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC9C,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAA;YAC3C,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;YACjF,CAAC;oBAAS,CAAC;gBACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;YACrB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACxC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,UAAU,CAAC,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAA;IACnF,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const rulesCommand: () => Command;
3
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/commands/rules.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAuY3C,eAAO,MAAM,YAAY,QAAO,OAQA,CAAA"}