@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.
- package/CHANGELOG.md +115 -0
- package/README.md +41 -10
- package/dist/bin/mail.js +2 -2
- package/dist/bundle/{all-profiles-55XPXQHY.js → all-profiles-GBFTKUHA.js} +9 -9
- package/dist/bundle/{anthropic-K5B6I4LB.js → anthropic-PTSCWUG6.js} +6 -6
- package/dist/bundle/{app-server-VWWLQLTZ.js → app-server-5VJ2WCKJ.js} +46 -46
- package/dist/bundle/{bun-EO7AI6YP.js → bun-2KRUBPIN.js} +2 -2
- package/dist/bundle/{bun-sqlite-F24A4IOP.js → bun-sqlite-ELSRSJBM.js} +5 -5
- package/dist/bundle/{chunk-X7AXH2IC.js → chunk-3KY7DA5A.js} +428 -434
- package/dist/bundle/{chunk-ANRI6EZY.js → chunk-4PKHZQIM.js} +8 -8
- package/dist/bundle/{chunk-CADRRSQK.js → chunk-56PI2BRH.js} +1 -1
- package/dist/bundle/{chunk-2ADB5DSG.js → chunk-5AQKM47C.js} +3 -3
- package/dist/bundle/{chunk-VP5GCMHM.js → chunk-5KHJUYHQ.js} +8 -8
- package/dist/bundle/{chunk-HUB42T2Z.js → chunk-6MV2TBDB.js} +57 -54
- package/dist/bundle/{chunk-4KLJN3LK.js → chunk-AGX7NR3S.js} +26 -13
- package/dist/bundle/{chunk-ZD3WUGR2.js → chunk-B337KHJ5.js} +4 -4
- package/dist/bundle/{chunk-5BVIWP3S.js → chunk-BM445GYF.js} +2 -2
- package/dist/bundle/{chunk-H7K2DN3R.js → chunk-BVIHT7KR.js} +9 -9
- package/dist/bundle/{chunk-EDKV6D6T.js → chunk-DA46WQEA.js} +1 -1
- package/dist/bundle/{chunk-UO7X2VW4.js → chunk-DV4RSEAH.js} +6 -6
- package/dist/bundle/{chunk-JZFIHVRB.js → chunk-ES4PWHBJ.js} +28 -28
- package/dist/bundle/{chunk-7X64JS6S.js → chunk-FIQOBLHS.js} +1 -1
- package/dist/bundle/{chunk-TI6VBZKJ.js → chunk-FUB3X25H.js} +4 -4
- package/dist/bundle/{chunk-VWXCEEUH.js → chunk-H4VFIH5W.js} +3 -3
- package/dist/bundle/{chunk-JKHI3PH7.js → chunk-J4C32YKH.js} +1 -1
- package/dist/bundle/{chunk-F6JTOQIK.js → chunk-J5MYH4L5.js} +12 -6
- package/dist/bundle/{chunk-QYWDC7NP.js → chunk-JFJTDL22.js} +47 -46
- package/dist/bundle/{chunk-UZDHK26H.js → chunk-JIQAFFPV.js} +2 -2
- package/dist/bundle/{chunk-BHKI5OCD.js → chunk-JKA2AICL.js} +2 -2
- package/dist/bundle/{dist-FMN7UZ7R.js → chunk-JKLQHPED.js} +16 -116
- package/dist/bundle/{chunk-J3QXTBD2.js → chunk-JLRMSNPX.js} +18 -18
- package/dist/bundle/{chunk-HORM6VRV.js → chunk-K5JUROGN.js} +1 -1
- package/dist/bundle/{chunk-SY3SP7EI.js → chunk-KUQYWIVR.js} +6 -6
- package/dist/bundle/{chunk-7QQ4EMYF.js → chunk-LWTG5UOF.js} +2 -2
- package/dist/bundle/{chunk-YSSMDVT3.js → chunk-M7V3GSJQ.js} +1 -1
- package/dist/bundle/chunk-MD2J3POF.js +52 -0
- package/dist/bundle/{chunk-SWRNMYDL.js → chunk-NCWO2FNC.js} +2 -2
- package/dist/bundle/{chunk-LKDK5YMI.js → chunk-NOU6MWEM.js} +2 -2
- package/dist/bundle/{chunk-LQ37ALDJ.js → chunk-NXJLC2WK.js} +8 -8
- package/dist/bundle/{chunk-ZAR67WKR.js → chunk-NZB4WGQS.js} +6 -6
- package/dist/bundle/{chunk-5RUTHKXZ.js → chunk-O555ZEQR.js} +4 -4
- package/dist/bundle/{chunk-MGBGE2Y4.js → chunk-O7VK7CJX.js} +2 -2
- package/dist/bundle/{chunk-WFBTPZK3.js → chunk-OHV5RDFE.js} +4 -4
- package/dist/bundle/{chunk-HJEMHZRU.js → chunk-P5B7IFOG.js} +2 -2
- package/dist/bundle/{chunk-VWHRIGYJ.js → chunk-PBYDT3CG.js} +13 -3
- package/dist/bundle/{chunk-7IYDIU4P.js → chunk-PHPC72DP.js} +7 -7
- package/dist/bundle/{chunk-ID24SLH3.js → chunk-PKU6V4EQ.js} +17 -17
- package/dist/bundle/{chunk-P7P5MNAU.js → chunk-QZBT6BOU.js} +1 -1
- package/dist/bundle/{chunk-NL5LNYGX.js → chunk-RAZOSYEO.js} +23 -23
- package/dist/bundle/{chunk-CCNHVZ3G.js → chunk-RDSAI6DC.js} +398 -293
- package/dist/bundle/{chunk-CSI73XJ5.js → chunk-SAZJDKEI.js} +8 -8
- package/dist/bundle/{chunk-QX7RCLRS.js → chunk-SQLCCKEL.js} +1 -1
- package/dist/bundle/{chunk-ORYYYM5Y.js → chunk-TKJDGAHT.js} +23 -23
- package/dist/bundle/{chunk-RLSGMMGC.js → chunk-TPNC5VCJ.js} +4 -4
- package/dist/bundle/{chunk-IIO6NXCA.js → chunk-UAXBLHZK.js} +2 -2
- package/dist/bundle/{chunk-2NZGUKYK.js → chunk-VEAP5RVI.js} +10 -8
- package/dist/bundle/{chunk-6BNMEOVS.js → chunk-VF24ZAPX.js} +4 -4
- package/dist/bundle/{chunk-FFKNUVVD.js → chunk-WCL3WBH5.js} +3 -3
- package/dist/bundle/{chunk-M4NTQ247.js → chunk-WGK4AIRL.js} +12 -12
- package/dist/bundle/{chunk-OM4ZBLT7.js → chunk-XERTHQ6D.js} +88 -34
- package/dist/bundle/{chunk-6BR6JMCR.js → chunk-XZGLY2LU.js} +14 -14
- package/dist/bundle/{chunk-2LP46EUH.js → chunk-Y7JKWQC2.js} +96 -94
- package/dist/bundle/{chunk-F7KAJNNK.js → chunk-YBJMBPL7.js} +6 -6
- package/dist/bundle/{chunk-YYTWV5GU.js → chunk-ZMMIIBTM.js} +73 -57
- package/dist/bundle/{chunk-EOEYP7CJ.js → chunk-ZPGLWMNH.js} +3 -3
- package/dist/bundle/{chunk-UJYCKCFR.js → chunk-ZRYFEEXZ.js} +3 -3
- package/dist/bundle/command-contract-NZF4B5OR.js +34 -0
- package/dist/bundle/{decode-ON4KBMEX.js → decode-HVXDCQ63.js} +5 -5
- package/dist/bundle/{dispatch-EUKKT3PD.js → dispatch-GDAH4JHS.js} +8 -8
- package/dist/bundle/dist-43DZXMBL.js +134 -0
- package/dist/bundle/{echarts-XPA226QR.js → echarts-LZ74IXHG.js} +2 -2
- package/dist/bundle/{embed-QERDAB73.js → embed-OQF5U2C6.js} +6 -6
- package/dist/bundle/{embedder-I76YT3E5.js → embedder-OCWQAWKO.js} +9 -9
- package/dist/bundle/{failure-OAIC5VAP.js → failure-6COJAO7T.js} +2 -2
- package/dist/bundle/{first-run-KZJFR55N.js → first-run-MTZPUPGA.js} +11 -11
- package/dist/bundle/first-screen-4PBS6QK5.js +32 -0
- package/dist/bundle/{instructions-NN3BCFIM.js → instructions-M6F4FP7U.js} +1 -1
- package/dist/bundle/mail.js +12 -11
- package/dist/bundle/{mcp-L7SRVDRN.js → mcp-GAPDLFWA.js} +2 -2
- package/dist/bundle/{node-2S75QJ6B.js → node-NYBBFHGN.js} +2 -2
- package/dist/bundle/{node-sqlite-RC7WM3EG.js → node-sqlite-CWCNWO75.js} +5 -5
- package/dist/bundle/{oauth-FUHLZCKV.js → oauth-DVX45EME.js} +7 -7
- package/dist/bundle/{open-JOKT7LKY.js → open-M7EQWWHL.js} +4 -4
- package/dist/bundle/{openai-U3IMQ6UI.js → openai-63KRU5H2.js} +14 -14
- package/dist/bundle/{process-LKODK722.js → process-DV5GQIGM.js} +1 -1
- package/dist/bundle/{program-RMLIQXCA.js → program-EPR3QCMX.js} +20570 -7622
- package/dist/bundle/{prompt-23VYMNNB.js → prompt-EPWPWTB3.js} +5 -5
- package/dist/bundle/{recognize-TXO3462R.js → recognize-R46KDXK4.js} +4 -4
- package/dist/bundle/{remote-5F4ZOASM.js → remote-RENCYB5X.js} +7 -7
- package/dist/bundle/{rerank-TXSDPEFE.js → rerank-VHPC5O73.js} +7 -7
- package/dist/bundle/{serve-TWYECYWM.js → serve-KCH3ORYO.js} +9 -9
- package/dist/bundle/server-FMCPE2ZK.js +63 -0
- package/dist/bundle/{server-3S3BKE6D.js → server-HZVXSK7B.js} +38 -38
- package/dist/bundle/{sqlite-runtime-BEOBGC6K.js → sqlite-runtime-XP7ZJCKJ.js} +5 -5
- package/dist/bundle/{state-ERWIUTQQ.js → state-GQ4MEQJ5.js} +6 -6
- package/dist/bundle/{store-2JO4JGQL.js → store-CQNLNINW.js} +13 -13
- package/dist/bundle/{store-4RY5UMOP.js → store-WT7YTR3Y.js} +15 -15
- package/dist/bundle/store-maintenance-command-YYR42IT4.js +52 -0
- package/dist/commands/attachments.d.ts +3 -0
- package/dist/commands/attachments.d.ts.map +1 -0
- package/dist/commands/attachments.js +97 -0
- package/dist/commands/attachments.js.map +1 -0
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +11 -1
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/drafts-send.d.ts +7 -0
- package/dist/commands/drafts-send.d.ts.map +1 -0
- package/dist/commands/drafts-send.js +58 -0
- package/dist/commands/drafts-send.js.map +1 -0
- package/dist/commands/drafts.d.ts +3 -0
- package/dist/commands/drafts.d.ts.map +1 -0
- package/dist/commands/drafts.js +239 -0
- package/dist/commands/drafts.js.map +1 -0
- package/dist/commands/export.d.ts +3 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +275 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/folders.d.ts.map +1 -1
- package/dist/commands/folders.js +120 -2
- package/dist/commands/folders.js.map +1 -1
- package/dist/commands/messages.d.ts +25 -0
- package/dist/commands/messages.d.ts.map +1 -0
- package/dist/commands/messages.js +502 -0
- package/dist/commands/messages.js.map +1 -0
- package/dist/commands/read.d.ts +4 -1
- package/dist/commands/read.d.ts.map +1 -1
- package/dist/commands/read.js +12 -2
- package/dist/commands/read.js.map +1 -1
- package/dist/commands/rules.d.ts +3 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +292 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/send.d.ts +39 -0
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +309 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/server-search.d.ts +8 -0
- package/dist/commands/server-search.d.ts.map +1 -0
- package/dist/commands/server-search.js +38 -0
- package/dist/commands/server-search.js.map +1 -0
- package/dist/commands/stats.d.ts +3 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +90 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +22 -7
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tags.d.ts +3 -0
- package/dist/commands/tags.d.ts.map +1 -0
- package/dist/commands/tags.js +144 -0
- package/dist/commands/tags.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +47 -1
- package/dist/config.js.map +1 -1
- package/dist/export/format.d.ts +19 -0
- package/dist/export/format.d.ts.map +1 -0
- package/dist/export/format.js +40 -0
- package/dist/export/format.js.map +1 -0
- package/dist/export/journal.d.ts +32 -0
- package/dist/export/journal.d.ts.map +1 -0
- package/dist/export/journal.js +84 -0
- package/dist/export/journal.js.map +1 -0
- package/dist/export/write.d.ts +14 -0
- package/dist/export/write.d.ts.map +1 -0
- package/dist/export/write.js +42 -0
- package/dist/export/write.js.map +1 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +3 -0
- package/dist/identity.js.map +1 -1
- package/dist/mail/backend.d.ts +81 -1
- package/dist/mail/backend.d.ts.map +1 -1
- package/dist/mail/changes.d.ts +91 -0
- package/dist/mail/changes.d.ts.map +1 -0
- package/dist/mail/changes.js +198 -0
- package/dist/mail/changes.js.map +1 -0
- package/dist/mail/cleanup.d.ts +41 -0
- package/dist/mail/cleanup.d.ts.map +1 -0
- package/dist/mail/cleanup.js +119 -0
- package/dist/mail/cleanup.js.map +1 -0
- package/dist/mail/compose.d.ts +73 -0
- package/dist/mail/compose.d.ts.map +1 -0
- package/dist/mail/compose.js +122 -0
- package/dist/mail/compose.js.map +1 -0
- package/dist/mail/doctor.d.ts +25 -0
- package/dist/mail/doctor.d.ts.map +1 -0
- package/dist/mail/doctor.js +39 -0
- package/dist/mail/doctor.js.map +1 -0
- package/dist/mail/drafts.d.ts +54 -0
- package/dist/mail/drafts.d.ts.map +1 -0
- package/dist/mail/drafts.js +104 -0
- package/dist/mail/drafts.js.map +1 -0
- package/dist/mail/imap/connection.d.ts +7 -0
- package/dist/mail/imap/connection.d.ts.map +1 -1
- package/dist/mail/imap/connection.js +24 -2
- package/dist/mail/imap/connection.js.map +1 -1
- package/dist/mail/imap/index.d.ts +1 -1
- package/dist/mail/imap/index.d.ts.map +1 -1
- package/dist/mail/imap/index.js +12 -2
- package/dist/mail/imap/index.js.map +1 -1
- package/dist/mail/imap/messages.d.ts +5 -6
- package/dist/mail/imap/messages.d.ts.map +1 -1
- package/dist/mail/imap/messages.js +14 -28
- package/dist/mail/imap/messages.js.map +1 -1
- package/dist/mail/imap/read.d.ts.map +1 -1
- package/dist/mail/imap/read.js +27 -13
- package/dist/mail/imap/read.js.map +1 -1
- package/dist/mail/imap/search.d.ts +14 -0
- package/dist/mail/imap/search.d.ts.map +1 -0
- package/dist/mail/imap/search.js +49 -0
- package/dist/mail/imap/search.js.map +1 -0
- package/dist/mail/imap/write.d.ts +5 -0
- package/dist/mail/imap/write.d.ts.map +1 -0
- package/dist/mail/imap/write.js +93 -0
- package/dist/mail/imap/write.js.map +1 -0
- package/dist/mail/organise.d.ts +116 -0
- package/dist/mail/organise.d.ts.map +1 -0
- package/dist/mail/organise.js +531 -0
- package/dist/mail/organise.js.map +1 -0
- package/dist/mail/rethread.d.ts +1 -2
- package/dist/mail/rethread.d.ts.map +1 -1
- package/dist/mail/rethread.js +8 -3
- package/dist/mail/rethread.js.map +1 -1
- package/dist/mail/rules/apply.d.ts +40 -0
- package/dist/mail/rules/apply.d.ts.map +1 -0
- package/dist/mail/rules/apply.js +114 -0
- package/dist/mail/rules/apply.js.map +1 -0
- package/dist/mail/rules/file.d.ts +9 -0
- package/dist/mail/rules/file.d.ts.map +1 -0
- package/dist/mail/rules/file.js +51 -0
- package/dist/mail/rules/file.js.map +1 -0
- package/dist/mail/rules/filters.d.ts +11 -0
- package/dist/mail/rules/filters.d.ts.map +1 -0
- package/dist/mail/rules/filters.js +150 -0
- package/dist/mail/rules/filters.js.map +1 -0
- package/dist/mail/rules/folders.d.ts +11 -0
- package/dist/mail/rules/folders.d.ts.map +1 -0
- package/dist/mail/rules/folders.js +17 -0
- package/dist/mail/rules/folders.js.map +1 -0
- package/dist/mail/rules/query.d.ts +15 -0
- package/dist/mail/rules/query.d.ts.map +1 -0
- package/dist/mail/rules/query.js +103 -0
- package/dist/mail/rules/query.js.map +1 -0
- package/dist/mail/rules/store.d.ts +9 -0
- package/dist/mail/rules/store.d.ts.map +1 -0
- package/dist/mail/rules/store.js +17 -0
- package/dist/mail/rules/store.js.map +1 -0
- package/dist/mail/save.d.ts +12 -0
- package/dist/mail/save.d.ts.map +1 -0
- package/dist/mail/save.js +71 -0
- package/dist/mail/save.js.map +1 -0
- package/dist/mail/send.d.ts +67 -0
- package/dist/mail/send.d.ts.map +1 -0
- package/dist/mail/send.js +172 -0
- package/dist/mail/send.js.map +1 -0
- package/dist/mail/smtp.d.ts +4 -0
- package/dist/mail/smtp.d.ts.map +1 -0
- package/dist/mail/smtp.js +97 -0
- package/dist/mail/smtp.js.map +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +28 -6
- package/dist/program.js.map +1 -1
- package/dist/providers.d.ts +71 -6
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +38 -9
- package/dist/providers.js.map +1 -1
- package/dist/reasons.d.ts +9 -0
- package/dist/reasons.d.ts.map +1 -0
- package/dist/reasons.js +21 -0
- package/dist/reasons.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +8 -5
- package/skills/mail-cli/SKILL.md +30 -3
- package/dist/bundle/chunk-XJ5TBPCK.js +0 -27
- package/dist/bundle/command-contract-L65UZ7AF.js +0 -34
- package/dist/bundle/first-screen-EORANEAK.js +0 -32
- package/dist/bundle/server-2GEAXKX2.js +0 -63
- package/dist/bundle/store-maintenance-command-T7D4OTN7.js +0 -52
- /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
|
|
5
|
-
It
|
|
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
|
|
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
|
|
59
|
-
|
|
60
|
-
into the
|
|
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
|
-
- **
|
|
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
|
-
-
|
|
103
|
-
|
|
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
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
12
|
+
} from "./chunk-O7VK7CJX.js";
|
|
13
13
|
import {
|
|
14
14
|
McpServer
|
|
15
15
|
} from "./chunk-5D4AEUVA.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
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-
|
|
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.
|
|
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-
|
|
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-
|
|
8
|
+
} from "./chunk-WCL3WBH5.js";
|
|
9
9
|
import {
|
|
10
10
|
messagesFor,
|
|
11
11
|
systemFor
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
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-
|
|
19
|
+
} from "./chunk-NXJLC2WK.js";
|
|
20
20
|
import "./chunk-Y5E2WNWB.js";
|
|
21
|
-
import "./chunk-
|
|
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.
|
|
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-
|
|
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-
|
|
13
|
+
} from "./chunk-XERTHQ6D.js";
|
|
14
14
|
import {
|
|
15
15
|
mcpUrlOf
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-TKJDGAHT.js";
|
|
17
17
|
import {
|
|
18
18
|
agentJson,
|
|
19
19
|
skillResource
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-XZGLY2LU.js";
|
|
21
|
+
import "./chunk-PBYDT3CG.js";
|
|
22
22
|
import {
|
|
23
23
|
appInstructions
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-DA46WQEA.js";
|
|
25
25
|
import {
|
|
26
26
|
answeredWire
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-J4C32YKH.js";
|
|
28
28
|
import {
|
|
29
29
|
StdioServerTransport,
|
|
30
30
|
serveStdio
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-O7VK7CJX.js";
|
|
32
32
|
import {
|
|
33
33
|
McpServer
|
|
34
34
|
} from "./chunk-5D4AEUVA.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
42
|
-
import "./chunk-
|
|
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-
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
55
|
-
import "./chunk-
|
|
56
|
-
import "./chunk-
|
|
57
|
-
import "./chunk-
|
|
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-
|
|
61
|
-
import "./chunk-
|
|
62
|
-
import "./chunk-
|
|
63
|
-
import "./chunk-
|
|
64
|
-
import "./chunk-
|
|
65
|
-
import "./chunk-
|
|
66
|
-
import "./chunk-
|
|
67
|
-
import "./chunk-
|
|
68
|
-
import "./chunk-
|
|
69
|
-
import "./chunk-
|
|
70
|
-
import "./chunk-
|
|
71
|
-
import "./chunk-
|
|
72
|
-
import "./chunk-
|
|
73
|
-
import "./chunk-
|
|
74
|
-
import "./chunk-
|
|
75
|
-
import "./chunk-
|
|
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-
|
|
78
|
-
import "./chunk-
|
|
79
|
-
import "./chunk-
|
|
80
|
-
import "./chunk-
|
|
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-
|
|
83
|
+
} from "./chunk-NXJLC2WK.js";
|
|
84
84
|
import "./chunk-Y5E2WNWB.js";
|
|
85
85
|
import {
|
|
86
86
|
CliError
|
|
87
|
-
} from "./chunk-
|
|
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.
|
|
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-
|
|
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-
|
|
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.
|
|
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-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
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-
|
|
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.
|
|
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 {
|