@wirecat/mail-cli 0.4.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 +115 -0
  2. package/README.md +41 -10
  3. package/dist/bin/mail.js +2 -2
  4. package/dist/bundle/{all-profiles-55XPXQHY.js → all-profiles-GBFTKUHA.js} +9 -9
  5. package/dist/bundle/{anthropic-K5B6I4LB.js → anthropic-PTSCWUG6.js} +6 -6
  6. package/dist/bundle/{app-server-VWWLQLTZ.js → app-server-5VJ2WCKJ.js} +46 -46
  7. package/dist/bundle/{bun-EO7AI6YP.js → bun-2KRUBPIN.js} +2 -2
  8. package/dist/bundle/{bun-sqlite-F24A4IOP.js → bun-sqlite-ELSRSJBM.js} +5 -5
  9. package/dist/bundle/{chunk-X7AXH2IC.js → chunk-3KY7DA5A.js} +428 -434
  10. package/dist/bundle/{chunk-ANRI6EZY.js → chunk-4PKHZQIM.js} +8 -8
  11. package/dist/bundle/{chunk-CADRRSQK.js → chunk-56PI2BRH.js} +1 -1
  12. package/dist/bundle/{chunk-2ADB5DSG.js → chunk-5AQKM47C.js} +3 -3
  13. package/dist/bundle/{chunk-VP5GCMHM.js → chunk-5KHJUYHQ.js} +8 -8
  14. package/dist/bundle/{chunk-HUB42T2Z.js → chunk-6MV2TBDB.js} +57 -54
  15. package/dist/bundle/{chunk-4KLJN3LK.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-H7K2DN3R.js → chunk-BVIHT7KR.js} +9 -9
  19. package/dist/bundle/{chunk-EDKV6D6T.js → chunk-DA46WQEA.js} +1 -1
  20. package/dist/bundle/{chunk-UO7X2VW4.js → chunk-DV4RSEAH.js} +6 -6
  21. package/dist/bundle/{chunk-JZFIHVRB.js → chunk-ES4PWHBJ.js} +28 -28
  22. package/dist/bundle/{chunk-7X64JS6S.js → chunk-FIQOBLHS.js} +1 -1
  23. package/dist/bundle/{chunk-TI6VBZKJ.js → chunk-FUB3X25H.js} +4 -4
  24. package/dist/bundle/{chunk-VWXCEEUH.js → chunk-H4VFIH5W.js} +3 -3
  25. package/dist/bundle/{chunk-JKHI3PH7.js → chunk-J4C32YKH.js} +1 -1
  26. package/dist/bundle/{chunk-F6JTOQIK.js → chunk-J5MYH4L5.js} +12 -6
  27. package/dist/bundle/{chunk-QYWDC7NP.js → chunk-JFJTDL22.js} +47 -46
  28. package/dist/bundle/{chunk-UZDHK26H.js → chunk-JIQAFFPV.js} +2 -2
  29. package/dist/bundle/{chunk-BHKI5OCD.js → chunk-JKA2AICL.js} +2 -2
  30. package/dist/bundle/{dist-FMN7UZ7R.js → chunk-JKLQHPED.js} +16 -116
  31. package/dist/bundle/{chunk-J3QXTBD2.js → chunk-JLRMSNPX.js} +18 -18
  32. package/dist/bundle/{chunk-HORM6VRV.js → chunk-K5JUROGN.js} +1 -1
  33. package/dist/bundle/{chunk-SY3SP7EI.js → chunk-KUQYWIVR.js} +6 -6
  34. package/dist/bundle/{chunk-7QQ4EMYF.js → chunk-LWTG5UOF.js} +2 -2
  35. package/dist/bundle/{chunk-YSSMDVT3.js → chunk-M7V3GSJQ.js} +1 -1
  36. package/dist/bundle/chunk-MD2J3POF.js +52 -0
  37. package/dist/bundle/{chunk-SWRNMYDL.js → chunk-NCWO2FNC.js} +2 -2
  38. package/dist/bundle/{chunk-LKDK5YMI.js → chunk-NOU6MWEM.js} +2 -2
  39. package/dist/bundle/{chunk-LQ37ALDJ.js → chunk-NXJLC2WK.js} +8 -8
  40. package/dist/bundle/{chunk-ZAR67WKR.js → chunk-NZB4WGQS.js} +6 -6
  41. package/dist/bundle/{chunk-5RUTHKXZ.js → chunk-O555ZEQR.js} +4 -4
  42. package/dist/bundle/{chunk-MGBGE2Y4.js → chunk-O7VK7CJX.js} +2 -2
  43. package/dist/bundle/{chunk-WFBTPZK3.js → chunk-OHV5RDFE.js} +4 -4
  44. package/dist/bundle/{chunk-HJEMHZRU.js → chunk-P5B7IFOG.js} +2 -2
  45. package/dist/bundle/{chunk-VWHRIGYJ.js → chunk-PBYDT3CG.js} +13 -3
  46. package/dist/bundle/{chunk-7IYDIU4P.js → chunk-PHPC72DP.js} +7 -7
  47. package/dist/bundle/{chunk-ID24SLH3.js → chunk-PKU6V4EQ.js} +17 -17
  48. package/dist/bundle/{chunk-P7P5MNAU.js → chunk-QZBT6BOU.js} +1 -1
  49. package/dist/bundle/{chunk-NL5LNYGX.js → chunk-RAZOSYEO.js} +23 -23
  50. package/dist/bundle/{chunk-CCNHVZ3G.js → chunk-RDSAI6DC.js} +398 -293
  51. package/dist/bundle/{chunk-CSI73XJ5.js → chunk-SAZJDKEI.js} +8 -8
  52. package/dist/bundle/{chunk-QX7RCLRS.js → chunk-SQLCCKEL.js} +1 -1
  53. package/dist/bundle/{chunk-ORYYYM5Y.js → chunk-TKJDGAHT.js} +23 -23
  54. package/dist/bundle/{chunk-RLSGMMGC.js → chunk-TPNC5VCJ.js} +4 -4
  55. package/dist/bundle/{chunk-IIO6NXCA.js → chunk-UAXBLHZK.js} +2 -2
  56. package/dist/bundle/{chunk-2NZGUKYK.js → chunk-VEAP5RVI.js} +10 -8
  57. package/dist/bundle/{chunk-6BNMEOVS.js → chunk-VF24ZAPX.js} +4 -4
  58. package/dist/bundle/{chunk-FFKNUVVD.js → chunk-WCL3WBH5.js} +3 -3
  59. package/dist/bundle/{chunk-M4NTQ247.js → chunk-WGK4AIRL.js} +12 -12
  60. package/dist/bundle/{chunk-OM4ZBLT7.js → chunk-XERTHQ6D.js} +88 -34
  61. package/dist/bundle/{chunk-6BR6JMCR.js → chunk-XZGLY2LU.js} +14 -14
  62. package/dist/bundle/{chunk-2LP46EUH.js → chunk-Y7JKWQC2.js} +96 -94
  63. package/dist/bundle/{chunk-F7KAJNNK.js → chunk-YBJMBPL7.js} +6 -6
  64. package/dist/bundle/{chunk-YYTWV5GU.js → chunk-ZMMIIBTM.js} +73 -57
  65. package/dist/bundle/{chunk-EOEYP7CJ.js → chunk-ZPGLWMNH.js} +3 -3
  66. package/dist/bundle/{chunk-UJYCKCFR.js → chunk-ZRYFEEXZ.js} +3 -3
  67. package/dist/bundle/command-contract-NZF4B5OR.js +34 -0
  68. package/dist/bundle/{decode-ON4KBMEX.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-XPA226QR.js → echarts-LZ74IXHG.js} +2 -2
  72. package/dist/bundle/{embed-QERDAB73.js → embed-OQF5U2C6.js} +6 -6
  73. package/dist/bundle/{embedder-I76YT3E5.js → embedder-OCWQAWKO.js} +9 -9
  74. package/dist/bundle/{failure-OAIC5VAP.js → failure-6COJAO7T.js} +2 -2
  75. package/dist/bundle/{first-run-KZJFR55N.js → first-run-MTZPUPGA.js} +11 -11
  76. package/dist/bundle/first-screen-4PBS6QK5.js +32 -0
  77. package/dist/bundle/{instructions-NN3BCFIM.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-2S75QJ6B.js → node-NYBBFHGN.js} +2 -2
  81. package/dist/bundle/{node-sqlite-RC7WM3EG.js → node-sqlite-CWCNWO75.js} +5 -5
  82. package/dist/bundle/{oauth-FUHLZCKV.js → oauth-DVX45EME.js} +7 -7
  83. package/dist/bundle/{open-JOKT7LKY.js → open-M7EQWWHL.js} +4 -4
  84. package/dist/bundle/{openai-U3IMQ6UI.js → openai-63KRU5H2.js} +14 -14
  85. package/dist/bundle/{process-LKODK722.js → process-DV5GQIGM.js} +1 -1
  86. package/dist/bundle/{program-RMLIQXCA.js → program-EPR3QCMX.js} +20570 -7622
  87. package/dist/bundle/{prompt-23VYMNNB.js → prompt-EPWPWTB3.js} +5 -5
  88. package/dist/bundle/{recognize-TXO3462R.js → recognize-R46KDXK4.js} +4 -4
  89. package/dist/bundle/{remote-5F4ZOASM.js → remote-RENCYB5X.js} +7 -7
  90. package/dist/bundle/{rerank-TXSDPEFE.js → rerank-VHPC5O73.js} +7 -7
  91. package/dist/bundle/{serve-TWYECYWM.js → serve-KCH3ORYO.js} +9 -9
  92. package/dist/bundle/server-FMCPE2ZK.js +63 -0
  93. package/dist/bundle/{server-3S3BKE6D.js → server-HZVXSK7B.js} +38 -38
  94. package/dist/bundle/{sqlite-runtime-BEOBGC6K.js → sqlite-runtime-XP7ZJCKJ.js} +5 -5
  95. package/dist/bundle/{state-ERWIUTQQ.js → state-GQ4MEQJ5.js} +6 -6
  96. package/dist/bundle/{store-2JO4JGQL.js → store-CQNLNINW.js} +13 -13
  97. package/dist/bundle/{store-4RY5UMOP.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 +28 -6
  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-XJ5TBPCK.js +0 -27
  277. package/dist/bundle/command-contract-L65UZ7AF.js +0 -34
  278. package/dist/bundle/first-screen-EORANEAK.js +0 -32
  279. package/dist/bundle/server-2GEAXKX2.js +0 -63
  280. package/dist/bundle/store-maintenance-command-T7D4OTN7.js +0 -52
  281. /package/dist/bundle/{chunk-NPGVOZVK.js → chunk-WJWLHLQ7.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,121 @@
2
2
 
3
3
  Notable changes to `@wirecat/mail-cli`. One section per version, newest first.
4
4
 
5
+ ## 0.6.0 — 01.11.2026
6
+
7
+ ### Added
8
+
9
+ - **`mail <profile> messages export [query] --output <folder>`** writes the original messages of the stored mail that
10
+ match a query to mbox files (one per folder, mboxrd) or a Maildir++ tree (`--format maildir`), for backup or for mu
11
+ and notmuch. The store keeps text only, so each message is read from the server again. The folder is private (mode
12
+ 700, files 600); a folder with something in it is refused unless `--resume` goes on with an export or `--replace`
13
+ writes over files of the same name. `--limit` and `--max-pages` bound a run, which also stops before its deadline;
14
+ `--resume` skips what the folder holds and cuts back a half-written message.
15
+ - **`mail <profile> stats messages top --by sender|list|domain`** ranks the stored mail by sender, mailing list or
16
+ sender domain, with unread counts and size.
17
+ - **`mail <profile> messages mark-read|mark-unread|star|unstar <ref…>`** and **`messages update <ref…> --flag <flag>
18
+ --unflag <flag> [--replace]`** change flags and keywords on the server (read, flagged, answered, draft, `$Junk`, words
19
+ of your own); a folder that keeps no keywords answers `provider_unavailable`.
20
+ - **`messages move|copy <ref…> --folder <folder|role>`** files mail by folder; on Gmail a move is a label added and
21
+ `Inbox` taken away, a copy a label added, `--folder archive` only `Inbox` taken away.
22
+ - **`messages delete <ref…>`** moves mail to Trash, never expunges it; `--rules` is memo's envelope cleanup, moved
23
+ here: envelope mail the rules let go, each decided again, with Gmail's labels and stars read again just before the
24
+ move, a fresh store backup required and a first run of at most 100; it refuses to run from a schedule.
25
+ - **`messages restore --run <id>`** undoes a change run, last step first: Trash back to where the mail was (on Gmail
26
+ with its labels), moves back, copies removed, flags as they were. memo's `mail delete` run ids restore here too.
27
+ Outside Gmail a copy is removed for good by the UID the server gave it, never by a Message-ID search that could find
28
+ the original.
29
+ - **`folders create|rename|delete`**; `delete` is a preview until `--yes`, and refuses a folder that holds mail, or
30
+ whose count the server does not give, unless `--allow-dangerous`, which only the owner passes at a terminal.
31
+ - **`rules list|add|remove|apply|export|import`**, moved from memo with the same options: the profile is the mailbox,
32
+ so there is no account argument; the default import format is `mail`, the file memo's export writes.
33
+ - Every message write takes the messages by `ref` or by `--filter '<query>'` (`--limit`, newest first). A deletion,
34
+ a `--filter` change and a change of more than 20 messages answer with a preview and the command with `--yes` in
35
+ `next`; `--dry-run` only previews. The store follows each server change at once: flags, folder and UID, Gmail labels,
36
+ deletion.
37
+ - **Permissions:** `messages.delete`, `folders.delete` and `messages.bulk` (any change of many) ask; the rest of the
38
+ changes go ahead. `MAIL_READ_ONLY=1` refuses them all. Each attempt goes into the send journal (cli-core 0.522.0).
39
+ - Error reasons (`mail.no-trash`, `mail.run-unknown`, `mail.archive-unverified`, …) now reach the JSON error.
40
+ - **`mail <profile> drafts list|create|update|delete`** keeps drafts in the mailbox's own Drafts folder, so an agent
41
+ writes one and the owner checks and sends it from any mail app. `create` takes `--to`, `--cc`, `--bcc`, `--subject`
42
+ and the text (`-` reads stdin); `--reply-to <ref> [--reply-all]` answers a stored message in its thread. A draft is
43
+ named by its Message-ID; `update` replaces only what is given and keeps the rest, the thread and the attachments,
44
+ and moves the old version to Trash; `delete` removes it for good and asks first (`drafts.delete`).
45
+ - **`mail <profile> tags add|remove <tag…> --message <ref> | --chat <ref>`** and **`tags list`** put your own tags on
46
+ stored mail and conversations. They stay in the local store, in the same tables memo tags with, and never reach the
47
+ server; `search messages tag:<tag>` finds them. Provider keywords stay `messages update --flag`, Gmail labels
48
+ `messages move|copy --folder`.
49
+ - **`mail doctor`** says when a change run stopped part way, and when mail a run moved to Gmail's Trash is within five
50
+ days of Gmail emptying it, with the `messages restore` command for each. memo's doctor said this until the cleanup
51
+ moved here; memo's own cleanup runs count too. It needs cli-core 0.524.0 (`appDoctorCommand`'s `local` check).
52
+ - **`search messages` asks the mail server too** for mail sync has not read yet: `--backend archive|server|both`
53
+ (default `both`) and `--server-time` (default 5s), as `tg search messages` has them. Gmail is searched once in All
54
+ Mail with its own syntax (X-GM-RAW); other servers with IMAP `UID SEARCH` in INBOX, Sent and Archive, or the
55
+ profile's `folders`. The server gets the words, `from:`, `to:`, `cc:`, `subject:`, `body:`, `is:` and `date:`; what
56
+ it finds is stored, and the same query then runs on the store, so the answer means the same on both backends and
57
+ each hit says `found_in`. The mailbox is opened read only. `permissions.messages.server-search=deny` turns it off;
58
+ `--offline` and `MAIL_READ_ONLY` keep to the store (cli-core 0.525.0).
59
+ - **`mail <profile> messages send --to … --subject … [text]`** sends over the provider's SMTP server with the same
60
+ app password; the text comes from stdin when left out. `--cc`, `--bcc`, `--file <path>` (repeat; a named path, never
61
+ a pattern; credential and WireCat folders refused without `--allow-any-file`, which an agent over MCP never gets). `--reply-to <ref> [--reply-all]`
62
+ answers a stored email: `In-Reply-To`, `References`, `Re:`, the original quoted, `\Answered` set on it.
63
+ - **`messages forward <ref> --to … [text]`** sends the original attached whole (`message/rfc822`), `Fwd:` before its
64
+ subject, and sets `$Forwarded` on it.
65
+ - **Sent and the store after a send.** Gmail files SMTP mail in Sent itself; elsewhere the copy (with its Bcc line) is
66
+ appended to Sent unless Sent already holds that Message-ID. The message is then read into the store as `sync` reads it,
67
+ so it has the server's id and never a second row.
68
+ - **Safety for sends.** Mail to anyone but the owner asks first: new key `messages.send.others`, default `ask`, which
69
+ the owner may set to `allow`. The question shows from, to, cc, bcc, subject, each attachment and the first
70
+ lines. `MAIL_READ_ONLY=1`, `readonly` and `deny` refuse; every attempt goes into the send journal without addresses,
71
+ subject or text; each recipient counts toward `sends_per_hour`; sends are spaced with the shared request pace
72
+ (cli-core 0.523.0). An answer lost after the message left is `outcome_unknown`; `--operation-id` retries it and sends
73
+ nothing when Sent already has it. `--dry-run` builds the message and sends nothing. A text that says "attached" with
74
+ no file warns.
75
+ - **`drafts send <id>`** sends a saved draft through the same path as `messages send` (its keys and question, the
76
+ hourly limit, the journal, the Sent copy), then removes it from Drafts.
77
+ - **`attachments list <ref>`** and **`attachments download <ref> [number…] --output-dir <dir> [--replace]`**: the
78
+ files of one email, read from the server and numbered as the store numbers them, saved readable only by you under
79
+ their plain names; an existing file is kept unless `--replace`.
80
+ - **Profile keys `smtp_host`, `smtp_port`, `smtp_security`** name the submission server for a provider the built-in
81
+ list does not know. The built-in servers were checked against each provider's help page; Yandex's is now
82
+ `smtp.yandex.ru:465`.
83
+
84
+ ### Changed — may break callers
85
+
86
+ - **An agent over MCP mails only the owner.** `messages send`, `messages forward` and `drafts send` to anyone else
87
+ answer `permission_error` over MCP until the owner sets `permissions.messages.send.others` in the config (`ask` or
88
+ `allow`); an `mcp serve --permission` cannot open it. At a terminal it still asks.
89
+ - `mail` is no longer read-only: an MCP client with `--allow-writes` can change the mailbox through the `write` tool,
90
+ within the profile's permissions.
91
+ - **On a server with OBJECTID (Fastmail, Cyrus) an email's id is the hash of its Message-ID, as memo makes it**, not
92
+ the server's EMAILID, and its thread comes from References. Ids come from cli-core's `mailIds`, which memo uses too,
93
+ so the two never store one email twice. Gmail keeps its own ids; Yandex and Mail.ru ids do not change.
94
+ - **An agent cannot change where the app password goes, nor who it may mail.** Over MCP, `config set` and
95
+ `config unset` refuse `address`, `login`, `imap_host`, `imap_port`, `imap_security`, `smtp_host`, `smtp_port`,
96
+ `smtp_security`, `auth` and `permissions.messages.send.others` even with `mcp.authority`; the owner changes them in a
97
+ terminal (cli-core 0.530.0).
98
+
99
+ ### Fixed
100
+
101
+ - **Built on cli-core 0.530.0 and cli-base 0.71.0.** The command lint now knows `drafts`, `--cc`, `--bcc` and
102
+ `--reply-all`, and accepts `--to <address>` and `--subject <text>` beside the messengers' `<chat>` and `<ref>`, so
103
+ thirteen lint overrides are gone and the budget is 11. The audit compares mail in cli-base's `mail-shared` group and
104
+ runs without `--complete`. cli-core also stops hiding a locked store when it scores senders.
105
+ - **Gmail labels are decoded once.** imapflow already decodes them, and mail decoded `R&D-team` again into `Rteam`.
106
+ - **`sync` says when it leaves stored rules out**: `rules_unread` and `rules_unread_why` (such as `condition label`)
107
+ in the answer and a `mail.rules-unreadable` issue, when the rules hold a condition this mail does not know.
108
+ - **`sync --rescan` fails on a locked or broken store** instead of reporting the rethreading done.
109
+ - **An attachment's file name is cleaned as cli-core's downloads clean it**: direction and zero-width characters
110
+ that disguise an extension go, and on Windows a reserved name (CON, NUL, …) falls back to `attachment-<n>`.
111
+
112
+ ## 0.5.0 — 01.11.2026
113
+
114
+ ### Fixed
115
+
116
+ - **A scheduled sync runs from its timer.** The timer starts `mail schedule exec <file>` with no profile, and mail refused it
117
+ with "name a profile" before reading the schedule, so no timed run worked in 0.3.0 and 0.4.0. `schedule exec` now needs
118
+ no profile; the schedule's own environment names it (cli-core 0.521.0).
119
+
5
120
  ## 0.4.0 — 01.11.2026
6
121
 
7
122
  ### Added
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # mail CLI for people, scripts and agents
2
2
 
3
3
  `mail` copies your mailbox into the shared WireCat store on your computer, so you and your AI agents can search it
4
- and read it there. It reads over IMAP and never changes the mailbox: it does not send, move, flag or delete mail.
5
- It searches and reads what it stored, offline.
4
+ and read it there, offline. It also organises the mailbox on the server: flags, folders, and deletion to Trash, each
5
+ change one you can undo. It keeps drafts, and sends, replies and forwards over SMTP.
6
6
 
7
7
  [Documentation](https://github.com/WireCatLabs/mail-cli/blob/main/docs/index.md) · [Roadmap](https://github.com/WireCatLabs/mail-cli/blob/main/docs/roadmap.md) · [WireCat](https://wirecat.dev)
8
8
 
@@ -40,12 +40,32 @@ You need Node.js 22.16 or a later 22.x, or 24 or later. To try it with no instal
40
40
  newest first, and skips what is already stored. `--since-time 2026-10-01` reads from local midnight of that day.
41
41
  - **Search and read the stored mail.** `search messages 'from:ann@example.com has:attachment date>30d'` uses the
42
42
  query language of every WireCat CLI, with `list:` for mailing lists; `messages show` gives an email whole with its
43
- attachments' text, `conversations list|show` its threads. It reads the profile's mailbox only and asks no server.
43
+ attachments' text, `conversations list|show` its threads. It searches the profile's mailbox only; it also asks the mail server
44
+ for mail `sync` has not read yet, and `--backend archive` keeps to the store.
44
45
  [memo](https://github.com/WireCatLabs/cli-memo) searches every mailbox together with your messages and notes.
46
+ - **Export to mbox or Maildir.** `messages export 'from:ann@example.com' --output ~/mail-backup` reads the original
47
+ messages from the server into a private folder, one mbox file per folder or a Maildir++ tree for mu and notmuch;
48
+ it can be resumed and bounded. `stats messages top --by list` ranks senders, lists and domains.
45
49
  - **Sync a big mailbox in parts.** A run stops before its deadline, keeps what it read and tells you to run it again;
46
50
  `status` shows how far it is.
47
51
  - **Check a mailbox.** `account check` shows what the server supports, `folders list` the folders with their role and
48
52
  message counts.
53
+ - **Organise it on the server.** `messages mark-read|mark-unread|star|unstar|update` change flags and keywords,
54
+ `messages move|copy --folder` file mail (by label on Gmail), `messages delete` moves it to Trash, and
55
+ `messages restore --run <id>` undoes any of them. `folders create|rename|delete` look after the folders. A search
56
+ shows each change at once.
57
+ - **Draft for the owner.** `drafts create|update|list|delete` keep drafts in the mailbox's Drafts folder, replies in
58
+ their thread; the owner sends them from any mail app, or with `drafts send`. `drafts update` puts the old version
59
+ in Trash.
60
+ - **Tag your own way.** `tags add|remove|list` put local tags on stored mail, shared with memo; `search messages
61
+ tag:<tag>` finds them.
62
+ - **Send, reply and forward.** `messages send --to … --subject …` sends over the provider's SMTP server with the same
63
+ app password, `--reply-to <ref>` answers a stored email with its quote, `messages forward <ref>` sends it on whole.
64
+ Mail to anyone but you asks first, and an agent over MCP mails only you until you allow more; Sent gets its copy and the store reads it at once. `attachments list|download`
65
+ save the files of one email.
66
+ - **Decide what to keep.** `rules add|list|remove|import|export` keep the owner's rules on which mail to store whole,
67
+ as an envelope or not at all; `rules apply` cuts stored mail to its envelope, and `messages delete --rules`
68
+ moves envelope mail to Trash, each email decided again.
49
69
 
50
70
  ## For AI agents
51
71
 
@@ -55,9 +75,10 @@ mail ya mcp add claude-code --allow-writes # or codex: adds this profile's MCP s
55
75
  mail ya mcp config # the entry for Claude Desktop, Cursor and others
56
76
  ```
57
77
 
58
- `mcp add` stops until you pass `--allow-writes`, because the server's `write` tool runs commands that change local
59
- settings, such as `config set` and `skill install`. `sync` runs through `read`: it writes only into the store, never
60
- into the mailbox. Check the profile's permissions first.
78
+ `mcp add` stops until you pass `--allow-writes`, because the server's `write` tool runs commands that change the
79
+ mailbox (`messages move`, `messages delete`, `folders create`) and local settings (`config set`, `skill install`).
80
+ `sync` runs through `read`: it writes only into the store. Check the profile's permissions first: a deletion, or a
81
+ change of many messages, answers with a preview until the call says `yes`.
61
82
 
62
83
  Every command except `mcp serve` takes `--json` and answers one JSON value on stdout; errors are JSON on stderr with a code to branch
63
84
  on. Over MCP an agent finds the commands with a search tool and runs them through a `read` and a `write` tool; the
@@ -70,7 +91,11 @@ as data, never as instructions.
70
91
  - **Your mail stays on your computer.** The store is a local file; no WireCat server sees your mail.
71
92
  - **One store for every tool.** Mail sits next to Telegram, MAX and WhatsApp messages, meetings and notes, so one
72
93
  search in memo finds a person's mail and messages together.
73
- - **Read-only by design.** `mail` cannot send, move or delete mail, so an agent that uses only `mail` cannot either.
94
+ - **Changes you can undo.** `messages delete` goes to Trash, and every change run keeps a record that
95
+ `messages restore` plays back. What is lost for good is named so and previewed first: `drafts delete`, and
96
+ `folders delete` of a folder that holds mail, which only the owner can run. The profile's permissions,
97
+ `MAIL_READ_ONLY=1` and a preview before every deletion stand between an agent and the mailbox, and an agent over
98
+ MCP mails only you until you allow more.
74
99
  - **It works with the mailbox you have.** Yandex, Gmail, iCloud, Mail.ru, Fastmail and other servers with IMAP and
75
100
  app passwords; the server of a domain it does not know is found for you.
76
101
 
@@ -99,12 +124,15 @@ mail ya config show # every setting and where it came
99
124
 
100
125
  ## Limits
101
126
 
102
- - Read-only: `mail` never sends, moves, flags or deletes mail. But memo has `memo mail delete`, which moves Gmail mail
103
- to Trash, so an agent with write access to memo can change mail.
127
+ - `messages delete` goes to Trash, and the provider empties Trash in its own time (Gmail: 30 days). Three changes
128
+ are for good, with no restore: `drafts delete`, `drafts send` taking the sent draft out of Drafts, and
129
+ `folders delete --allow-dangerous` of a folder that holds mail (outside Gmail, its mail is gone).
130
+ Undoing `messages copy` outside Gmail removes the copy for good, never the original.
104
131
  - Text and headers only: the text of attachments is stored, not the files, nor the original message.
105
132
  - No OAuth yet, so no Outlook or Microsoft 365, and no Google Workspace domain that turns app passwords off.
106
133
  - Gmail caps IMAP downloads at 2,500 MB a day; a new Yandex app password can take 2 to 3 hours to work.
107
- - Search reads what `sync` stored: mail not synced yet is not found. Search on the server is planned.
134
+ - Search reads the store and asks the mail server for mail `sync` has not read yet; `--backend archive` keeps to
135
+ the store.
108
136
 
109
137
  What comes next, such as OAuth sign-in, is on the
110
138
  [roadmap](https://github.com/WireCatLabs/mail-cli/blob/main/docs/roadmap.md).
@@ -164,6 +192,9 @@ keyring, the store, MCP) come from [cli-base](https://github.com/WireCatLabs/cli
164
192
  mail-cli is part of [WireCat](https://wirecat.dev): an open context layer for AI agents that keeps your data on your
165
193
  computer. Start with mail. Add Telegram, MAX and notes when you need them.
166
194
 
195
+ Questions and setup help: join the [WireCat Discord](https://discord.gg/DebENqbRrJ). Bugs go to this
196
+ repository's issues.
197
+
167
198
  ## Contributing and license
168
199
 
169
200
  Pull requests, bug reports and ideas: [issues](https://github.com/WireCatLabs/mail-cli/issues).
package/dist/bin/mail.js CHANGED
@@ -9,7 +9,7 @@ if (
9
9
  (words[0] === "--version" || words[0] === "-V") &&
10
10
  !Object.keys(process.env).some((key) => key.endsWith("_TEST_ARGV_LOG"))
11
11
  ) {
12
- process.stdout.write("0.4.0\n")
12
+ process.stdout.write("0.6.0\n")
13
13
  } else {
14
14
  // Before the bundle compiles: the bundle's own call comes after its chunks.
15
15
  module.enableCompileCache()
@@ -29,7 +29,7 @@ if (
29
29
  })
30
30
  }
31
31
  const running = import("../bundle/mail.js")
32
- const chunks = ["../bundle/all-profiles-55XPXQHY.js","../bundle/anthropic-K5B6I4LB.js","../bundle/app-server-VWWLQLTZ.js","../bundle/bun-EO7AI6YP.js","../bundle/bun-sqlite-F24A4IOP.js","../bundle/decode-ON4KBMEX.js","../bundle/dispatch-EUKKT3PD.js","../bundle/dist-FMN7UZ7R.js","../bundle/dist-HFUVURJG.js","../bundle/echarts-XPA226QR.js","../bundle/embed-QERDAB73.js","../bundle/embedder-I76YT3E5.js","../bundle/failure-OAIC5VAP.js","../bundle/first-screen-EORANEAK.js","../bundle/instructions-NN3BCFIM.js","../bundle/mcp-L7SRVDRN.js","../bundle/node-2S75QJ6B.js","../bundle/node-KM3CUABH.js","../bundle/node-TLZSIHIJ.js","../bundle/node-sqlite-RC7WM3EG.js","../bundle/oauth-FUHLZCKV.js","../bundle/open-JOKT7LKY.js","../bundle/openai-U3IMQ6UI.js","../bundle/process-LKODK722.js","../bundle/program-RMLIQXCA.js","../bundle/prompt-23VYMNNB.js","../bundle/recognize-TXO3462R.js","../bundle/remote-5F4ZOASM.js","../bundle/rerank-TXSDPEFE.js","../bundle/serve-TWYECYWM.js","../bundle/server-2GEAXKX2.js","../bundle/server-3S3BKE6D.js","../bundle/sqlite-runtime-BEOBGC6K.js","../bundle/state-ERWIUTQQ.js","../bundle/store-2JO4JGQL.js","../bundle/store-4RY5UMOP.js","../bundle/store-maintenance-command-T7D4OTN7.js"]
32
+ const chunks = ["../bundle/all-profiles-GBFTKUHA.js","../bundle/anthropic-PTSCWUG6.js","../bundle/app-server-5VJ2WCKJ.js","../bundle/bun-2KRUBPIN.js","../bundle/bun-sqlite-ELSRSJBM.js","../bundle/decode-HVXDCQ63.js","../bundle/dispatch-GDAH4JHS.js","../bundle/dist-43DZXMBL.js","../bundle/dist-HFUVURJG.js","../bundle/echarts-LZ74IXHG.js","../bundle/embed-OQF5U2C6.js","../bundle/embedder-OCWQAWKO.js","../bundle/failure-6COJAO7T.js","../bundle/first-screen-4PBS6QK5.js","../bundle/instructions-M6F4FP7U.js","../bundle/mcp-GAPDLFWA.js","../bundle/node-KM3CUABH.js","../bundle/node-NYBBFHGN.js","../bundle/node-TLZSIHIJ.js","../bundle/node-sqlite-CWCNWO75.js","../bundle/oauth-DVX45EME.js","../bundle/open-M7EQWWHL.js","../bundle/openai-63KRU5H2.js","../bundle/process-DV5GQIGM.js","../bundle/program-EPR3QCMX.js","../bundle/prompt-EPWPWTB3.js","../bundle/recognize-R46KDXK4.js","../bundle/remote-RENCYB5X.js","../bundle/rerank-VHPC5O73.js","../bundle/serve-KCH3ORYO.js","../bundle/server-FMCPE2ZK.js","../bundle/server-HZVXSK7B.js","../bundle/sqlite-runtime-XP7ZJCKJ.js","../bundle/state-GQ4MEQJ5.js","../bundle/store-CQNLNINW.js","../bundle/store-WT7YTR3Y.js","../bundle/store-maintenance-command-YYR42IT4.js"]
33
33
  // After the server answers its first request, so it starts no later.
34
34
  if (serves) setTimeout(() => void Promise.allSettled(chunks.map((chunk) => import(chunk))), 2000).unref()
35
35
  await running
@@ -2,28 +2,28 @@ import { createRequire as __bundleRequire } from "node:module";
2
2
  const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  answeredWire
5
- } from "./chunk-JKHI3PH7.js";
5
+ } from "./chunk-J4C32YKH.js";
6
6
  import {
7
7
  CALLER_META_KEY,
8
8
  PROXY_CLIENT_NAME,
9
9
  StdioServerTransport,
10
10
  callerOf,
11
11
  serveStdio
12
- } from "./chunk-MGBGE2Y4.js";
12
+ } from "./chunk-O7VK7CJX.js";
13
13
  import {
14
14
  McpServer
15
15
  } from "./chunk-5D4AEUVA.js";
16
- import "./chunk-H7K2DN3R.js";
17
- import "./chunk-NPGVOZVK.js";
18
- import "./chunk-J3QXTBD2.js";
19
- import "./chunk-LQ37ALDJ.js";
16
+ import "./chunk-BVIHT7KR.js";
17
+ import "./chunk-WJWLHLQ7.js";
18
+ import "./chunk-JLRMSNPX.js";
19
+ import "./chunk-NXJLC2WK.js";
20
20
  import "./chunk-Y5E2WNWB.js";
21
- import "./chunk-5BVIWP3S.js";
21
+ import "./chunk-BM445GYF.js";
22
22
  import {
23
23
  __name
24
24
  } from "./chunk-ZVVMGPBJ.js";
25
25
 
26
- // node_modules/.pnpm/@wirecat+cli-core@0.520.0_@wirecat+cli-base@0.68.1_commander@15.0.0_esbuild@0.28.2_type_33ccf8bfbe17590bae2f3fc544520037/node_modules/@wirecat/cli-core/dist/mcp/all-profiles.js
26
+ // node_modules/.pnpm/@wirecat+cli-core@0.530.0_@wirecat+cli-base@0.71.0_commander@15.0.0_esbuild@0.28.2_type_f01b7e2db7d22734373a522c868220f7/node_modules/@wirecat/cli-core/dist/mcp/all-profiles.js
27
27
  import { spawn } from "node:child_process";
28
28
  import { randomUUID } from "node:crypto";
29
29
  var PROTOCOL = "2025-06-18";
@@ -257,7 +257,7 @@ var serveAllProfilesOverStdio = /* @__PURE__ */ __name(async (options, io = {})
257
257
  }, "serveAllProfilesOverStdio");
258
258
  var serveAllProfilesOverHttp = /* @__PURE__ */ __name(async (options, http) => {
259
259
  const { build, close } = allProfilesServer(options);
260
- const { serveOverHttp } = await import("./serve-TWYECYWM.js");
260
+ const { serveOverHttp } = await import("./serve-KCH3ORYO.js");
261
261
  const listening = await serveOverHttp(build, {
262
262
  ...http,
263
263
  appName: options.command,
@@ -5,25 +5,25 @@ import {
5
5
  } from "./chunk-XQUUANA2.js";
6
6
  import {
7
7
  checkedOptions
8
- } from "./chunk-FFKNUVVD.js";
8
+ } from "./chunk-WCL3WBH5.js";
9
9
  import {
10
10
  messagesFor,
11
11
  systemFor
12
- } from "./chunk-BHKI5OCD.js";
13
- import "./chunk-J3QXTBD2.js";
12
+ } from "./chunk-JKA2AICL.js";
13
+ import "./chunk-JLRMSNPX.js";
14
14
  import {
15
15
  array,
16
16
  optional,
17
17
  strictObject,
18
18
  string
19
- } from "./chunk-LQ37ALDJ.js";
19
+ } from "./chunk-NXJLC2WK.js";
20
20
  import "./chunk-Y5E2WNWB.js";
21
- import "./chunk-5BVIWP3S.js";
21
+ import "./chunk-BM445GYF.js";
22
22
  import {
23
23
  __name
24
24
  } from "./chunk-ZVVMGPBJ.js";
25
25
 
26
- // node_modules/.pnpm/@wirecat+cli-core@0.520.0_@wirecat+cli-base@0.68.1_commander@15.0.0_esbuild@0.28.2_type_33ccf8bfbe17590bae2f3fc544520037/node_modules/@wirecat/cli-core/dist/models/anthropic.js
26
+ // node_modules/.pnpm/@wirecat+cli-core@0.530.0_@wirecat+cli-base@0.71.0_commander@15.0.0_esbuild@0.28.2_type_f01b7e2db7d22734373a522c868220f7/node_modules/@wirecat/cli-core/dist/models/anthropic.js
27
27
  var options = strictObject({
28
28
  stop_sequences: optional(array(string()))
29
29
  });
@@ -3,43 +3,43 @@ const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  PER_RUN,
5
5
  envelope
6
- } from "./chunk-JZFIHVRB.js";
6
+ } from "./chunk-ES4PWHBJ.js";
7
7
  import {
8
8
  answered,
9
9
  failed,
10
10
  registerCommands,
11
11
  runCommandForAgent,
12
12
  toolsFromCommands
13
- } from "./chunk-OM4ZBLT7.js";
13
+ } from "./chunk-XERTHQ6D.js";
14
14
  import {
15
15
  mcpUrlOf
16
- } from "./chunk-ORYYYM5Y.js";
16
+ } from "./chunk-TKJDGAHT.js";
17
17
  import {
18
18
  agentJson,
19
19
  skillResource
20
- } from "./chunk-6BR6JMCR.js";
21
- import "./chunk-VWHRIGYJ.js";
20
+ } from "./chunk-XZGLY2LU.js";
21
+ import "./chunk-PBYDT3CG.js";
22
22
  import {
23
23
  appInstructions
24
- } from "./chunk-EDKV6D6T.js";
24
+ } from "./chunk-DA46WQEA.js";
25
25
  import {
26
26
  answeredWire
27
- } from "./chunk-JKHI3PH7.js";
27
+ } from "./chunk-J4C32YKH.js";
28
28
  import {
29
29
  StdioServerTransport,
30
30
  serveStdio
31
- } from "./chunk-MGBGE2Y4.js";
31
+ } from "./chunk-O7VK7CJX.js";
32
32
  import {
33
33
  McpServer
34
34
  } from "./chunk-5D4AEUVA.js";
35
- import "./chunk-NL5LNYGX.js";
36
- import "./chunk-X7AXH2IC.js";
37
- import "./chunk-4KLJN3LK.js";
38
- import "./chunk-VP5GCMHM.js";
39
- import "./chunk-BHKI5OCD.js";
40
- import "./chunk-HJEMHZRU.js";
41
- import "./chunk-7IYDIU4P.js";
42
- import "./chunk-2LP46EUH.js";
35
+ import "./chunk-RAZOSYEO.js";
36
+ import "./chunk-3KY7DA5A.js";
37
+ import "./chunk-AGX7NR3S.js";
38
+ import "./chunk-5KHJUYHQ.js";
39
+ import "./chunk-JKA2AICL.js";
40
+ import "./chunk-P5B7IFOG.js";
41
+ import "./chunk-PHPC72DP.js";
42
+ import "./chunk-Y7JKWQC2.js";
43
43
  import {
44
44
  DEFAULT_OUTPUT_BYTES,
45
45
  changesAuthorityAt,
@@ -49,47 +49,47 @@ import {
49
49
  judgedTargets,
50
50
  readOnlyLockOf,
51
51
  rootOf2 as rootOf
52
- } from "./chunk-HUB42T2Z.js";
53
- import "./chunk-F6JTOQIK.js";
54
- import "./chunk-H7K2DN3R.js";
55
- import "./chunk-ZD3WUGR2.js";
56
- import "./chunk-P7P5MNAU.js";
57
- import "./chunk-VWXCEEUH.js";
52
+ } from "./chunk-6MV2TBDB.js";
53
+ import "./chunk-J5MYH4L5.js";
54
+ import "./chunk-BVIHT7KR.js";
55
+ import "./chunk-B337KHJ5.js";
56
+ import "./chunk-QZBT6BOU.js";
57
+ import "./chunk-H4VFIH5W.js";
58
58
  import {
59
59
  mcpHttpMarker
60
- } from "./chunk-RLSGMMGC.js";
61
- import "./chunk-EOEYP7CJ.js";
62
- import "./chunk-CADRRSQK.js";
63
- import "./chunk-UJYCKCFR.js";
64
- import "./chunk-ID24SLH3.js";
65
- import "./chunk-5RUTHKXZ.js";
66
- import "./chunk-CCNHVZ3G.js";
67
- import "./chunk-SY3SP7EI.js";
68
- import "./chunk-2NZGUKYK.js";
69
- import "./chunk-YYTWV5GU.js";
70
- import "./chunk-NPGVOZVK.js";
71
- import "./chunk-ANRI6EZY.js";
72
- import "./chunk-F7KAJNNK.js";
73
- import "./chunk-UO7X2VW4.js";
74
- import "./chunk-7X64JS6S.js";
75
- import "./chunk-QX7RCLRS.js";
60
+ } from "./chunk-TPNC5VCJ.js";
61
+ import "./chunk-ZPGLWMNH.js";
62
+ import "./chunk-56PI2BRH.js";
63
+ import "./chunk-ZRYFEEXZ.js";
64
+ import "./chunk-PKU6V4EQ.js";
65
+ import "./chunk-O555ZEQR.js";
66
+ import "./chunk-RDSAI6DC.js";
67
+ import "./chunk-KUQYWIVR.js";
68
+ import "./chunk-VEAP5RVI.js";
69
+ import "./chunk-ZMMIIBTM.js";
70
+ import "./chunk-4PKHZQIM.js";
71
+ import "./chunk-YBJMBPL7.js";
72
+ import "./chunk-DV4RSEAH.js";
73
+ import "./chunk-FIQOBLHS.js";
74
+ import "./chunk-SQLCCKEL.js";
75
+ import "./chunk-WJWLHLQ7.js";
76
76
  import "./chunk-D72URWJE.js";
77
- import "./chunk-ZAR67WKR.js";
78
- import "./chunk-WFBTPZK3.js";
79
- import "./chunk-UZDHK26H.js";
80
- import "./chunk-J3QXTBD2.js";
77
+ import "./chunk-NZB4WGQS.js";
78
+ import "./chunk-OHV5RDFE.js";
79
+ import "./chunk-JIQAFFPV.js";
80
+ import "./chunk-JLRMSNPX.js";
81
81
  import {
82
82
  mcpErrorResult
83
- } from "./chunk-LQ37ALDJ.js";
83
+ } from "./chunk-NXJLC2WK.js";
84
84
  import "./chunk-Y5E2WNWB.js";
85
85
  import {
86
86
  CliError
87
- } from "./chunk-5BVIWP3S.js";
87
+ } from "./chunk-BM445GYF.js";
88
88
  import {
89
89
  __name
90
90
  } from "./chunk-ZVVMGPBJ.js";
91
91
 
92
- // node_modules/.pnpm/@wirecat+cli-core@0.520.0_@wirecat+cli-base@0.68.1_commander@15.0.0_esbuild@0.28.2_type_33ccf8bfbe17590bae2f3fc544520037/node_modules/@wirecat/cli-core/dist/mcp/app-server.js
92
+ // node_modules/.pnpm/@wirecat+cli-core@0.530.0_@wirecat+cli-base@0.71.0_commander@15.0.0_esbuild@0.28.2_type_f01b7e2db7d22734373a522c868220f7/node_modules/@wirecat/cli-core/dist/mcp/app-server.js
93
93
  var EXCLUDED = [["mcp"]];
94
94
  var createAppServer = /* @__PURE__ */ __name((command, context, options) => {
95
95
  const { app } = options;
@@ -204,7 +204,7 @@ var serveAppOverStdio = /* @__PURE__ */ __name(async (command, context, options)
204
204
  var serveAppOverHttp = /* @__PURE__ */ __name(async (command, context, options, http) => {
205
205
  const { app } = options;
206
206
  const { build } = createAppServer(command, context, options);
207
- const { serveOverHttp } = await import("./serve-TWYECYWM.js");
207
+ const { serveOverHttp } = await import("./serve-KCH3ORYO.js");
208
208
  const listening = await serveOverHttp(build, {
209
209
  ...http,
210
210
  appName: app.command,
@@ -18,12 +18,12 @@ import {
18
18
  jitCompatCheck,
19
19
  refineSqliteCodecs,
20
20
  sql
21
- } from "./chunk-7X64JS6S.js";
21
+ } from "./chunk-FIQOBLHS.js";
22
22
  import {
23
23
  __name
24
24
  } from "./chunk-ZVVMGPBJ.js";
25
25
 
26
- // node_modules/.pnpm/@wirecat+cli-core@0.520.0_@wirecat+cli-base@0.68.1_commander@15.0.0_esbuild@0.28.2_type_33ccf8bfbe17590bae2f3fc544520037/node_modules/@wirecat/cli-core/dist/store/sqlite/drizzle/bun.js
26
+ // node_modules/.pnpm/@wirecat+cli-core@0.530.0_@wirecat+cli-base@0.71.0_commander@15.0.0_esbuild@0.28.2_type_f01b7e2db7d22734373a522c868220f7/node_modules/@wirecat/cli-core/dist/store/sqlite/drizzle/bun.js
27
27
  import { Database } from "bun:sqlite";
28
28
  var bunSQLiteCodecs = refineSqliteCodecs({
29
29
  "integer:boolean": { normalize: booleanFromInteger },
@@ -3,18 +3,18 @@ const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  loadVectorExtension,
5
5
  vectorExtension
6
- } from "./chunk-SWRNMYDL.js";
7
- import "./chunk-J3QXTBD2.js";
8
- import "./chunk-LQ37ALDJ.js";
6
+ } from "./chunk-NCWO2FNC.js";
7
+ import "./chunk-JLRMSNPX.js";
8
+ import "./chunk-NXJLC2WK.js";
9
9
  import {
10
10
  importFrom
11
11
  } from "./chunk-Y5E2WNWB.js";
12
- import "./chunk-5BVIWP3S.js";
12
+ import "./chunk-BM445GYF.js";
13
13
  import {
14
14
  __name
15
15
  } from "./chunk-ZVVMGPBJ.js";
16
16
 
17
- // node_modules/.pnpm/@wirecat+cli-core@0.520.0_@wirecat+cli-base@0.68.1_commander@15.0.0_esbuild@0.28.2_type_33ccf8bfbe17590bae2f3fc544520037/node_modules/@wirecat/cli-core/dist/store/drivers/bun-sqlite.js
17
+ // node_modules/.pnpm/@wirecat+cli-core@0.530.0_@wirecat+cli-base@0.71.0_commander@15.0.0_esbuild@0.28.2_type_f01b7e2db7d22734373a522c868220f7/node_modules/@wirecat/cli-core/dist/store/drivers/bun-sqlite.js
18
18
  var customised = false;
19
19
  var ownLibrary = /* @__PURE__ */ __name(async () => {
20
20
  try {