@rubytech/create-maxy-code 0.1.296 → 0.1.298
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/package.json +1 -1
- package/payload/platform/lib/models/dist/index.d.ts +7 -0
- package/payload/platform/lib/models/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/models/dist/index.js +16 -1
- package/payload/platform/lib/models/dist/index.js.map +1 -1
- package/payload/platform/lib/models/src/index.ts +16 -0
- package/payload/platform/plugins/admin/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/admin/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/admin/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +4 -14
- package/payload/platform/plugins/aeo/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/aeo/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/aeo/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/browser/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/browser/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/browser/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/contacts/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/contacts/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/contacts/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/docs/references/admin-ui.md +1 -1
- package/payload/platform/plugins/docs/references/getting-started.md +1 -1
- package/payload/platform/plugins/docs/references/platform.md +1 -11
- package/payload/platform/plugins/email/.claude-plugin/plugin.json +6 -2
- package/payload/platform/plugins/email/PLUGIN.md +14 -2
- package/payload/platform/plugins/email/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/email/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.js +71 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-send.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-send.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-send.test.js +95 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-send.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.js +129 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.js +58 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js +165 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/imap-probe.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/imap-probe.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/imap-probe.test.js +69 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/imap-probe.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.js +46 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/send-raw.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/send-raw.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/send-raw.test.js +38 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/send-raw.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/setup-probe.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/setup-probe.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/setup-probe.test.js +56 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/setup-probe.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/smtp-probe.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/smtp-probe.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/smtp-probe.test.js +46 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/smtp-probe.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/index.js +118 -0
- package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts +47 -0
- package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/compose.js +75 -0
- package/payload/platform/plugins/email/mcp/dist/lib/compose.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +53 -3
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/imap.js +179 -5
- package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/setup-probe.d.ts +42 -0
- package/payload/platform/plugins/email/mcp/dist/lib/setup-probe.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/setup-probe.js +72 -0
- package/payload/platform/plugins/email/mcp/dist/lib/setup-probe.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts +34 -6
- package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/smtp.js +62 -20
- package/payload/platform/plugins/email/mcp/dist/lib/smtp.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.js +1 -2
- package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts +9 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js +23 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.d.ts +8 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.js +52 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.d.ts +7 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js +17 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js +1 -8
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.js +2 -8
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +25 -3
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -1
- package/payload/platform/plugins/email/references/email-reference.md +15 -0
- package/payload/platform/plugins/email/skills/email-composition/SKILL.md +26 -4
- package/payload/platform/plugins/memory/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/memory/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/memory/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/outlook/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/outlook/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/outlook/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/replicate/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/replicate/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/replicate/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/scheduling/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/scheduling/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/scheduling/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/telegram/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/telegram/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/telegram/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/url-get/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/url-get/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/url-get/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/whatsapp/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/whatsapp/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/whatsapp/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/work/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/work/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/work/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/workflows/.claude-plugin/plugin.json +5 -1
- package/payload/platform/plugins/workflows/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/platform/plugins/workflows/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +3 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +13 -0
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +71 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/jsonl-watch.d.ts +10 -0
- package/payload/platform/services/whatsapp-channel/dist/jsonl-watch.d.ts.map +1 -0
- package/payload/platform/services/whatsapp-channel/dist/jsonl-watch.js +70 -0
- package/payload/platform/services/whatsapp-channel/dist/jsonl-watch.js.map +1 -0
- package/payload/platform/services/whatsapp-channel/dist/server.d.ts +6 -1
- package/payload/platform/services/whatsapp-channel/dist/server.d.ts.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/server.js +38 -1
- package/payload/platform/services/whatsapp-channel/dist/server.js.map +1 -1
- package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
- package/payload/premium-plugins/writer-craft/.claude-plugin/plugin.json +5 -1
- package/payload/premium-plugins/writer-craft/lib/mcp-spawn-tee/index.js +159 -0
- package/payload/premium-plugins/writer-craft/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/server/public/assets/AdminShell-BnhxfX97.js +1 -0
- package/payload/server/public/assets/{Checkbox-DTrIyIFP.js → Checkbox-CVPUf_7I.js} +1 -1
- package/payload/server/public/assets/{Transcript-C3aDVJ-n.js → Transcript-FYmq-mL1.js} +1 -1
- package/payload/server/public/assets/{admin-DVdyV-Q6.js → admin-CF8K3hqE.js} +1 -1
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-DR9W0q1P.js → architectureDiagram-Q4EWVU46-IVt2X8Dk.js} +1 -1
- package/payload/server/public/assets/audio-attachment-mime-DaInZ9sa.js +1 -0
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-C3uwaI7p.js → blockDiagram-DXYQGD6D-CQDngnsc.js} +1 -1
- package/payload/server/public/assets/browser-D_hZgtfv.js +1 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-C8hmUDdd.js → c4Diagram-AHTNJAMY-BjV_YA-L.js} +1 -1
- package/payload/server/public/assets/channel-gFnUr8f4.js +1 -0
- package/payload/server/public/assets/chat-COcrNTJi.js +1 -0
- package/payload/server/public/assets/{chunk-336JU56O-BRCubMCb.js → chunk-336JU56O-B0yBhSVq.js} +2 -2
- package/payload/server/public/assets/{chunk-426QAEUC-BNINkVsL.js → chunk-426QAEUC-BCmWl6vi.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-DSMj_AZh.js → chunk-4TB4RGXK-BImQYhPF.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-6DNGaUkf.js → chunk-5FUZZQ4R-DrDSHQZv.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-DPhkkS4p.js → chunk-5PVQY5BW-CKX_LIok.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-BjWSqn7_.js → chunk-EDXVE4YY-D1zHB217.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-BX1ZnU4A.js → chunk-ENJZ2VHE-SFpdtszU.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-DvYSWH7x.js → chunk-ICPOFSXX-cYdq7RKF.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-7_m3mEOK.js → chunk-OYMX7WX6-B7JLCext.js} +1 -1
- package/payload/server/public/assets/{chunk-U2HBQHQK-Bl1a895I.js → chunk-U2HBQHQK-DWCeFwem.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-WkSpBPYx.js → chunk-X2U36JSP-DGnHsoJ3.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-DpWRmPUo.js → chunk-YZCP3GAM-sg4lGGJV.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-D9Dgmeso.js → chunk-ZZ45TVLE-DtUoGmKE.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-C_wlfUTz.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Ltv5s3OY.js +1 -0
- package/payload/server/public/assets/clone-D0XoXc_v.js +1 -0
- package/payload/server/public/assets/{dagre-PrVfCcSt.js → dagre-Dfj_jbTe.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-DPq3dcLH.js → dagre-KV5264BT-Bd1VlhUJ.js} +1 -1
- package/payload/server/public/assets/data-DkbQI40a.js +1 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-DoszElKb.js → diagram-5BDNPKRD-Dqqyk8GE.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-BRuqosix.js → diagram-G4DWMVQ6-Xk3WKR_U.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-CpigG1d_.js → diagram-MMDJMWI5-CAdGL9U7.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-BS0eYiq9.js → diagram-TYMM5635-DY1iYQVY.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-VEQyXCFl.js → erDiagram-SMLLAGMA-BJ5HYKeb.js} +1 -1
- package/payload/server/public/assets/{file-download-C3pBZjt9.js → file-download-BYJN3Kgm.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-2NYMfqHX.js → flowDiagram-DWJPFMVM-B-q6x5Q_.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-AAAa2sqE.js → ganttDiagram-T4ZO3ILL-DbjwY_bG.js} +1 -1
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-d8NUAIz5.js → gitGraphDiagram-UUTBAWPF-C3bLrOmb.js} +1 -1
- package/payload/server/public/assets/{graph-Bx9_2qbJ.js → graph-DmikPM4A.js} +2 -2
- package/payload/server/public/assets/{graph-labels-Cc1nU1_f.js → graph-labels-CtG6ckdG.js} +1 -1
- package/payload/server/public/assets/{graphlib-DUlqr2mr.js → graphlib-BlOjhixq.js} +1 -1
- package/payload/server/public/assets/{infoDiagram-42DDH7IO-D4dh4-0g.js → infoDiagram-42DDH7IO-BpaHbiXO.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DPTmm2IE.js → ishikawaDiagram-UXIWVN3A-B_DzwK8l.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-B85vjqkE.js → journeyDiagram-VCZTEJTY-COzTF-qc.js} +1 -1
- package/payload/server/public/assets/{jsx-runtime-D3PZpOAF.css → jsx-runtime-BjFkEGXb.css} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-C2Lfb5Xh.js → kanban-definition-6JOO6SKY-C2cOIZU6.js} +1 -1
- package/payload/server/public/assets/{line-CODKFpwO.js → line-Bwa6aUYZ.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-DYdFZnXH.js → mermaid-parser.core-BFAF0BAk.js} +1 -1
- package/payload/server/public/assets/{mermaid.core-Bamjzahu.js → mermaid.core-CMOXmawT.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-CLK90bKJ.js → mindmap-definition-QFDTVHPH-bu0QLO17.js} +1 -1
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-DEsnxhqP.js → pieDiagram-DEJITSTG-DQUe6W2Z.js} +1 -1
- package/payload/server/public/assets/{public-BFMu-jux.js → public-CSEIGhb4.js} +5 -5
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-uIP9V2jZ.js → quadrantDiagram-34T5L4WZ-ChhcwVRA.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-CVS6t5tv.js → requirementDiagram-MS252O5E-DwQXqTA9.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-BIsmtyZA.js → sankeyDiagram-XADWPNL6-zYqdptBM.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-Cu8TfQiW.js → sequenceDiagram-FGHM5R23-x2g84gb4.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-ax4vYGft.js → stateDiagram-FHFEXIEX-CeUrqs2P.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-B27DBP9X.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-3l7ojkMA.js → timeline-definition-GMOUNBTQ-CL-c9XN5.js} +1 -1
- package/payload/server/public/assets/{useSelectionMode-C_EBRd2k.js → useSelectionMode-C1_ky4B6.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-C_sv0qMD.js → vennDiagram-DHZGUBPP-By2HBDYr.js} +1 -1
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-C7u4IHMB.js → wardleyDiagram-NUSXRM2D-iahvFvIS.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-A-uLXr1a.js → xychartDiagram-5P7HB3ND-33qqdRhI.js} +1 -1
- package/payload/server/public/browser.html +6 -6
- package/payload/server/public/chat.html +8 -8
- package/payload/server/public/data.html +5 -5
- package/payload/server/public/graph.html +8 -8
- package/payload/server/public/index.html +8 -8
- package/payload/server/public/public.html +6 -6
- package/payload/server/public/whatsapp-wallpaper.webp +0 -0
- package/payload/server/server.js +17 -9
- package/payload/server/public/assets/AdminShell-DDieHnzi.js +0 -1
- package/payload/server/public/assets/audio-attachment-mime-DGEfApkA.js +0 -1
- package/payload/server/public/assets/browser-DrJReVEG.js +0 -1
- package/payload/server/public/assets/channel-drVqp11B.js +0 -1
- package/payload/server/public/assets/chat-rJYaCD6C.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-Dplkw_pj.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-sJXv1Ihp.js +0 -1
- package/payload/server/public/assets/clone-Q_B6oO0c.js +0 -1
- package/payload/server/public/assets/data-CYyR2m_B.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BRv1By5g.js +0 -1
- /package/payload/server/public/assets/{jsx-runtime-5auA0FEj.js → jsx-runtime-UQ0Z6nwN.js} +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
let socketCount = 0;
|
|
2
|
+
let tokenSeq = 0;
|
|
3
|
+
function errMessage(err) {
|
|
4
|
+
return err instanceof Error ? err.message : String(err);
|
|
5
|
+
}
|
|
6
|
+
function log(line) {
|
|
7
|
+
process.stderr.write(`[email] setup-probe ${line}\n`);
|
|
8
|
+
}
|
|
9
|
+
/** Per-call correlation token for setup-probe log lines. */
|
|
10
|
+
export function newProbeToken() {
|
|
11
|
+
tokenSeq += 1;
|
|
12
|
+
return `p${tokenSeq}`;
|
|
13
|
+
}
|
|
14
|
+
/** Number of probe resources acquired and not yet released. */
|
|
15
|
+
export function activeProbeCount() {
|
|
16
|
+
return socketCount;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Register a probe-created client. Attaches a persistent 'error' listener
|
|
20
|
+
* (never removed — the listener dies with the client object) so any late
|
|
21
|
+
* socket event is contained and logged instead of crashing the process.
|
|
22
|
+
*/
|
|
23
|
+
export function trackProbe(source, emitter, token) {
|
|
24
|
+
socketCount += 1;
|
|
25
|
+
log(`op=acquired source=${source} token=${token} socketCount=${socketCount}`);
|
|
26
|
+
emitter.on("error", (err) => {
|
|
27
|
+
log(`op=late-event source=${source} token=${token} err=${errMessage(err)} contained=true`);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/** Mark a probe resource as closed. The census line is the leak signature. */
|
|
31
|
+
export function releaseProbe(source, token) {
|
|
32
|
+
socketCount -= 1;
|
|
33
|
+
log(`op=released source=${source} token=${token} socketCount=${socketCount}`);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Decide whether an escaped async error is attributable to a setup probe.
|
|
37
|
+
* Returns true when contained; false means the caller must preserve the
|
|
38
|
+
* default crash. Exported for tests; wired by installSetupProbeGuard().
|
|
39
|
+
*/
|
|
40
|
+
export function handleEscapedError(err, channel) {
|
|
41
|
+
const stack = err instanceof Error ? (err.stack ?? err.message) : String(err);
|
|
42
|
+
const attributable = /[\\/]node_modules[\\/](imapflow|nodemailer)[\\/]/.test(stack) || socketCount > 0;
|
|
43
|
+
if (attributable) {
|
|
44
|
+
log(`op=late-event source=process channel=${channel} err=${errMessage(err)} contained=true`);
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
log(`op=escaped-error channel=${channel} err=${errMessage(err)} contained=false`);
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
let guardInstalled = false;
|
|
51
|
+
/**
|
|
52
|
+
* Install the process-level last-resort guard. Idempotent, never throws —
|
|
53
|
+
* MCP module init must never throw (plugin-system metadata-only spawns).
|
|
54
|
+
*/
|
|
55
|
+
export function installSetupProbeGuard() {
|
|
56
|
+
if (guardInstalled)
|
|
57
|
+
return;
|
|
58
|
+
guardInstalled = true;
|
|
59
|
+
process.on("uncaughtException", (err) => {
|
|
60
|
+
if (handleEscapedError(err, "uncaughtException"))
|
|
61
|
+
return;
|
|
62
|
+
process.stderr.write(`${err instanceof Error ? err.stack ?? err.message : String(err)}\n`);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
});
|
|
65
|
+
process.on("unhandledRejection", (reason) => {
|
|
66
|
+
if (handleEscapedError(reason, "unhandledRejection"))
|
|
67
|
+
return;
|
|
68
|
+
process.stderr.write(`Unhandled rejection: ${reason instanceof Error ? reason.stack ?? reason.message : String(reason)}\n`);
|
|
69
|
+
process.exit(1);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=setup-probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-probe.js","sourceRoot":"","sources":["../../src/lib/setup-probe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
+
import { type Transporter } from "nodemailer";
|
|
1
2
|
import type { EmailConfig } from "./credentials.js";
|
|
2
3
|
/**
|
|
3
4
|
* Test SMTP connectivity and authentication.
|
|
4
5
|
* Returns null on success, error message on failure.
|
|
5
6
|
*/
|
|
6
|
-
export declare function testConnection(config: EmailConfig, password: string): Promise<string | null>;
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
export declare function sendEmail(config: EmailConfig, password: string, options: {
|
|
7
|
+
export declare function testConnection(config: EmailConfig, password: string, token?: string): Promise<string | null>;
|
|
8
|
+
/** Options accepted by sendEmail and the email-draft composer — one shape, one composer. */
|
|
9
|
+
export interface SendOptions {
|
|
11
10
|
to: string;
|
|
12
11
|
subject: string;
|
|
13
12
|
body: string;
|
|
@@ -21,9 +20,38 @@ export declare function sendEmail(config: EmailConfig, password: string, options
|
|
|
21
20
|
filename: string;
|
|
22
21
|
path: string;
|
|
23
22
|
}>;
|
|
24
|
-
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Build the nodemailer message options shared by the SMTP send path and the
|
|
26
|
+
* email-draft MIME composer. transport.sendMail() composes via MailComposer
|
|
27
|
+
* internally, so feeding the same object to MailComposer directly (draft path)
|
|
28
|
+
* yields the same message structure.
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildMailOptions(config: EmailConfig, options: SendOptions): Parameters<Transporter["sendMail"]>[0];
|
|
31
|
+
/**
|
|
32
|
+
* Send an email via SMTP.
|
|
33
|
+
*/
|
|
34
|
+
export declare function sendEmail(config: EmailConfig, password: string, options: SendOptions): Promise<{
|
|
25
35
|
messageId: string;
|
|
26
36
|
}>;
|
|
37
|
+
/**
|
|
38
|
+
* Strip duplicate Re:/RE:/re: prefixes and prepend a single Re:.
|
|
39
|
+
* Shared by email-reply and the threaded-draft compose path so both derive an
|
|
40
|
+
* identical threaded subject from a parent's subject.
|
|
41
|
+
*/
|
|
42
|
+
export declare function replySubject(subject: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Dispatch a pre-composed raw RFC822 message with an explicit SMTP envelope.
|
|
45
|
+
* Used to send a stored draft: the bytes already carry the headers, and the
|
|
46
|
+
* envelope (from + the union of To/Cc/Bcc) is supplied by the caller because a
|
|
47
|
+
* raw message is not parsed by nodemailer for routing.
|
|
48
|
+
*/
|
|
49
|
+
export declare function sendRaw(config: EmailConfig, password: string, raw: Buffer, envelope: {
|
|
50
|
+
from: string;
|
|
51
|
+
to: string[];
|
|
52
|
+
}): Promise<{
|
|
53
|
+
messageId: string | null;
|
|
54
|
+
}>;
|
|
27
55
|
/**
|
|
28
56
|
* Format a copy note for tool success messages: names CC recipients (visible in
|
|
29
57
|
* the header) and states that BCC was applied without naming them (preserving
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smtp.d.ts","sourceRoot":"","sources":["../../src/lib/smtp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"smtp.d.ts","sourceRoot":"","sources":["../../src/lib/smtp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAyBpD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAwB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8BnI;AAED,4FAA4F;AAC5F,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,GACnB,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAiBxC;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAQhC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAAE,GACvC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAQvC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAMpE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createTransport } from "nodemailer";
|
|
2
|
+
import { trackProbe, releaseProbe, newProbeToken } from "./setup-probe.js";
|
|
2
3
|
const CONNECT_TIMEOUT = 10_000;
|
|
3
4
|
/**
|
|
4
5
|
* Create an SMTP transporter from the email config.
|
|
@@ -23,8 +24,9 @@ function createSmtpTransport(config, password) {
|
|
|
23
24
|
* Test SMTP connectivity and authentication.
|
|
24
25
|
* Returns null on success, error message on failure.
|
|
25
26
|
*/
|
|
26
|
-
export async function testConnection(config, password) {
|
|
27
|
+
export async function testConnection(config, password, token = newProbeToken()) {
|
|
27
28
|
const transport = createSmtpTransport(config, password);
|
|
29
|
+
trackProbe("smtp", transport, token);
|
|
28
30
|
try {
|
|
29
31
|
await transport.verify();
|
|
30
32
|
return null;
|
|
@@ -49,39 +51,79 @@ export async function testConnection(config, password) {
|
|
|
49
51
|
return `SMTP connection failed: ${msg}`;
|
|
50
52
|
}
|
|
51
53
|
finally {
|
|
52
|
-
|
|
54
|
+
// A close() throw must not skip the census release — a stuck count keeps
|
|
55
|
+
// the process guard's active-probe widening on forever.
|
|
56
|
+
try {
|
|
57
|
+
transport.close();
|
|
58
|
+
}
|
|
59
|
+
catch { /* contained */ }
|
|
60
|
+
releaseProbe("smtp", token);
|
|
53
61
|
}
|
|
54
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Build the nodemailer message options shared by the SMTP send path and the
|
|
65
|
+
* email-draft MIME composer. transport.sendMail() composes via MailComposer
|
|
66
|
+
* internally, so feeding the same object to MailComposer directly (draft path)
|
|
67
|
+
* yields the same message structure.
|
|
68
|
+
*/
|
|
69
|
+
export function buildMailOptions(config, options) {
|
|
70
|
+
const mailOptions = {
|
|
71
|
+
from: config.agentAddress,
|
|
72
|
+
to: options.to,
|
|
73
|
+
subject: options.subject,
|
|
74
|
+
text: options.body,
|
|
75
|
+
html: options.html,
|
|
76
|
+
inReplyTo: options.inReplyTo,
|
|
77
|
+
references: options.references,
|
|
78
|
+
headers: options.headers,
|
|
79
|
+
attachments: options.attachments,
|
|
80
|
+
};
|
|
81
|
+
// Set cc/bcc only when non-empty so the no-copy path is byte-identical to
|
|
82
|
+
// today's call (no cc/bcc keys leak into the SMTP envelope).
|
|
83
|
+
if (options.cc && options.cc.length > 0)
|
|
84
|
+
mailOptions.cc = options.cc;
|
|
85
|
+
if (options.bcc && options.bcc.length > 0)
|
|
86
|
+
mailOptions.bcc = options.bcc;
|
|
87
|
+
return mailOptions;
|
|
88
|
+
}
|
|
55
89
|
/**
|
|
56
90
|
* Send an email via SMTP.
|
|
57
91
|
*/
|
|
58
92
|
export async function sendEmail(config, password, options) {
|
|
59
93
|
const transport = createSmtpTransport(config, password);
|
|
60
94
|
try {
|
|
61
|
-
const
|
|
62
|
-
from: config.agentAddress,
|
|
63
|
-
to: options.to,
|
|
64
|
-
subject: options.subject,
|
|
65
|
-
text: options.body,
|
|
66
|
-
html: options.html,
|
|
67
|
-
inReplyTo: options.inReplyTo,
|
|
68
|
-
references: options.references,
|
|
69
|
-
headers: options.headers,
|
|
70
|
-
attachments: options.attachments,
|
|
71
|
-
};
|
|
72
|
-
// Set cc/bcc only when non-empty so the no-copy path is byte-identical to
|
|
73
|
-
// today's call (no cc/bcc keys leak into the SMTP envelope).
|
|
74
|
-
if (options.cc && options.cc.length > 0)
|
|
75
|
-
mailOptions.cc = options.cc;
|
|
76
|
-
if (options.bcc && options.bcc.length > 0)
|
|
77
|
-
mailOptions.bcc = options.bcc;
|
|
78
|
-
const info = await transport.sendMail(mailOptions);
|
|
95
|
+
const info = await transport.sendMail(buildMailOptions(config, options));
|
|
79
96
|
return { messageId: info.messageId };
|
|
80
97
|
}
|
|
81
98
|
finally {
|
|
82
99
|
transport.close();
|
|
83
100
|
}
|
|
84
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Strip duplicate Re:/RE:/re: prefixes and prepend a single Re:.
|
|
104
|
+
* Shared by email-reply and the threaded-draft compose path so both derive an
|
|
105
|
+
* identical threaded subject from a parent's subject.
|
|
106
|
+
*/
|
|
107
|
+
export function replySubject(subject) {
|
|
108
|
+
const stripped = subject.replace(/^(Re:\s*)+/i, "").trim();
|
|
109
|
+
return `Re: ${stripped || "(no subject)"}`;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Dispatch a pre-composed raw RFC822 message with an explicit SMTP envelope.
|
|
113
|
+
* Used to send a stored draft: the bytes already carry the headers, and the
|
|
114
|
+
* envelope (from + the union of To/Cc/Bcc) is supplied by the caller because a
|
|
115
|
+
* raw message is not parsed by nodemailer for routing.
|
|
116
|
+
*/
|
|
117
|
+
export async function sendRaw(config, password, raw, envelope) {
|
|
118
|
+
const transport = createSmtpTransport(config, password);
|
|
119
|
+
try {
|
|
120
|
+
const info = await transport.sendMail({ raw, envelope });
|
|
121
|
+
return { messageId: info.messageId ?? null };
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
transport.close();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
85
127
|
/**
|
|
86
128
|
* Format a copy note for tool success messages: names CC recipients (visible in
|
|
87
129
|
* the header) and states that BCC was applied without naming them (preserving
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smtp.js","sourceRoot":"","sources":["../../src/lib/smtp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAoB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"smtp.js","sourceRoot":"","sources":["../../src/lib/smtp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Transactional email send — one-shot script invoked by the UI server
|
|
3
|
-
* for system emails (magic-link delivery, etc.)
|
|
4
|
-
* `email-send` tool's AI-generated disclosure footer.
|
|
3
|
+
* for system emails (magic-link delivery, etc.).
|
|
5
4
|
*
|
|
6
5
|
* Stdin JSON payload: { accountId, to, subject, body, html? }
|
|
7
6
|
* Stdout on success: `ok messageId=<id>`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-transactional.js","sourceRoot":"","sources":["../../src/scripts/send-transactional.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"send-transactional.js","sourceRoot":"","sources":["../../src/scripts/send-transactional.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAW3C,SAAS,SAAS;IAChB,wEAAwE;IACxE,iDAAiD;IACjD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAU,EAAE,CAAC;QACpE,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE;QACtD,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,SAAS,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type DraftComposeParams } from "../lib/compose.js";
|
|
2
|
+
interface EditParams extends DraftComposeParams {
|
|
3
|
+
accountId: string;
|
|
4
|
+
/** Drafts-folder UID of the draft to replace. */
|
|
5
|
+
targetUid: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function emailDraftEdit(params: EditParams): Promise<string>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=email-draft-edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-draft-edit.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft-edit.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,UAAU,UAAW,SAAQ,kBAAkB;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BxE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { loadCredentials } from "../lib/credentials.js";
|
|
2
|
+
import { formatCopyNote } from "../lib/smtp.js";
|
|
3
|
+
import { replaceDraft } from "../lib/imap.js";
|
|
4
|
+
import { composeDraft } from "../lib/compose.js";
|
|
5
|
+
import { formatAttachNote } from "../lib/attachment-resolve.js";
|
|
6
|
+
export async function emailDraftEdit(params) {
|
|
7
|
+
const result = await loadCredentials(params.accountId);
|
|
8
|
+
if ("error" in result)
|
|
9
|
+
throw new Error(result.error);
|
|
10
|
+
const { config, password } = result.credentials;
|
|
11
|
+
// Compose the replacement first (resolves attachments + threading). A failure
|
|
12
|
+
// here — e.g. an unresolvable parent — throws before any IMAP write, so the
|
|
13
|
+
// stored draft is never touched.
|
|
14
|
+
const { raw, threadedParentId, attachments } = await composeDraft(config, password, params.accountId, params);
|
|
15
|
+
const { folder, oldUid, newUid, expunged } = await replaceDraft(config, password, params.targetUid, raw);
|
|
16
|
+
const uidNote = newUid !== null ? `new UID: ${newUid}` : "new UID not reported by server";
|
|
17
|
+
const expungeNote = expunged
|
|
18
|
+
? `replaced UID ${oldUid}`
|
|
19
|
+
: `appended replacement; old UID ${oldUid} not confirmed expunged`;
|
|
20
|
+
const threadNote = threadedParentId ? ` (threaded reply to ${threadedParentId})` : "";
|
|
21
|
+
return `Draft revised in ${folder}: ${expungeNote}, ${uidNote}, for ${params.to}${formatCopyNote(params.cc, params.bcc)}${formatAttachNote(attachments)}${threadNote} — still unsent. Review and send it from the Drafts folder.`;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=email-draft-edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-draft-edit.js","sourceRoot":"","sources":["../../src/tools/email-draft-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAQhE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAkB;IACrD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,8EAA8E;IAC9E,4EAA4E;IAC5E,iCAAiC;IACjC,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CAC/D,MAAM,EACN,QAAQ,EACR,MAAM,CAAC,SAAS,EAChB,MAAM,CACP,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAC7D,MAAM,EACN,QAAQ,EACR,MAAM,CAAC,SAAS,EAChB,GAAG,CACJ,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC;IAC1F,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC,gBAAgB,MAAM,EAAE;QAC1B,CAAC,CAAC,iCAAiC,MAAM,yBAAyB,CAAC;IACrE,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,OAAO,oBAAoB,MAAM,KAAK,WAAW,KAAK,OAAO,SAAS,MAAM,CAAC,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,UAAU,6DAA6D,CAAC;AACpO,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface SendDraftParams {
|
|
2
|
+
accountId: string;
|
|
3
|
+
/** Drafts-folder UID of the draft to dispatch. */
|
|
4
|
+
uid: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function emailDraftSend(params: SendDraftParams): Promise<string>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=email-draft-send.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-draft-send.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft-send.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAqD7E"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { loadCredentials } from "../lib/credentials.js";
|
|
2
|
+
import { sendRaw } from "../lib/smtp.js";
|
|
3
|
+
import { fetchDraftSource, deleteDraft } from "../lib/imap.js";
|
|
4
|
+
export async function emailDraftSend(params) {
|
|
5
|
+
const result = await loadCredentials(params.accountId);
|
|
6
|
+
if ("error" in result)
|
|
7
|
+
throw new Error(result.error);
|
|
8
|
+
const { config, password } = result.credentials;
|
|
9
|
+
const draft = await fetchDraftSource(config, password, params.uid);
|
|
10
|
+
if (!draft) {
|
|
11
|
+
throw new Error(`No draft with UID ${params.uid} in the Drafts folder.`);
|
|
12
|
+
}
|
|
13
|
+
// Recipients come from the stored draft's own headers (the \Drafts copy keeps
|
|
14
|
+
// its Bcc). De-duplicate across To/Cc/Bcc so a single address copied to more
|
|
15
|
+
// than one field is not sent twice.
|
|
16
|
+
const recipients = [...new Set([...draft.toAddresses, ...draft.ccAddresses, ...draft.bccAddresses])];
|
|
17
|
+
if (recipients.length === 0) {
|
|
18
|
+
throw new Error(`Draft UID ${params.uid} has no recipients — cannot send. Edit it to add a To address first.`);
|
|
19
|
+
}
|
|
20
|
+
let messageId;
|
|
21
|
+
try {
|
|
22
|
+
({ messageId } = await sendRaw(config, password, draft.source, {
|
|
23
|
+
from: config.agentAddress,
|
|
24
|
+
to: recipients,
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
29
|
+
// Add the alias diagnostic only for SMTP failures, mirroring email-send.
|
|
30
|
+
if (config.agentAddress !== config.email) {
|
|
31
|
+
throw new Error(`${msg} — Note: sending as ${config.agentAddress} (authenticated as ${config.email}). If your provider doesn't allow sending as this alias, check your catchall or alias settings.`);
|
|
32
|
+
}
|
|
33
|
+
throw err;
|
|
34
|
+
}
|
|
35
|
+
// Only after SMTP accepts: remove the draft. A failure here means the message
|
|
36
|
+
// already went out but the draft remains — report a qualified success rather
|
|
37
|
+
// than letting the removal error masquerade as a send failure (which would
|
|
38
|
+
// invite a duplicate re-send).
|
|
39
|
+
let deleted = false;
|
|
40
|
+
try {
|
|
41
|
+
({ deleted } = await deleteDraft(config, password, params.uid));
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
deleted = false;
|
|
45
|
+
}
|
|
46
|
+
const idNote = messageId ? ` (Message-ID: ${messageId})` : "";
|
|
47
|
+
const cleanupNote = deleted
|
|
48
|
+
? `removed from ${draft.folder}`
|
|
49
|
+
: `sent, but draft UID ${params.uid} could not be confirmed removed from ${draft.folder}`;
|
|
50
|
+
return `Draft UID ${params.uid} sent to ${recipients.join(", ")}${idNote}; ${cleanupNote}.`;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=email-draft-send.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-draft-send.js","sourceRoot":"","sources":["../../src/tools/email-draft-send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAQ/D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAuB;IAC1D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,GAAG,wBAAwB,CAAC,CAAC;IAC3E,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,oCAAoC;IACpC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,aAAa,MAAM,CAAC,GAAG,sEAAsE,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,SAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE;YAC7D,IAAI,EAAE,MAAM,CAAC,YAAY;YACzB,EAAE,EAAE,UAAU;SACf,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,yEAAyE;QACzE,IAAI,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,uBAAuB,MAAM,CAAC,YAAY,sBAAsB,MAAM,CAAC,KAAK,iGAAiG,CACpL,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,2EAA2E;IAC3E,+BAA+B;IAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC;QACH,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,iBAAiB,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,gBAAgB,KAAK,CAAC,MAAM,EAAE;QAChC,CAAC,CAAC,uBAAuB,MAAM,CAAC,GAAG,wCAAwC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC5F,OAAO,aAAa,MAAM,CAAC,GAAG,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,WAAW,GAAG,CAAC;AAC9F,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type DraftComposeParams } from "../lib/compose.js";
|
|
2
|
+
interface DraftParams extends DraftComposeParams {
|
|
3
|
+
accountId: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function emailDraft(params: DraftParams): Promise<string>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=email-draft.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-draft.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,UAAU,WAAY,SAAQ,kBAAkB;IAC9C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBrE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { loadCredentials } from "../lib/credentials.js";
|
|
2
|
+
import { formatCopyNote } from "../lib/smtp.js";
|
|
3
|
+
import { appendDraft } from "../lib/imap.js";
|
|
4
|
+
import { composeDraft } from "../lib/compose.js";
|
|
5
|
+
import { formatAttachNote } from "../lib/attachment-resolve.js";
|
|
6
|
+
export async function emailDraft(params) {
|
|
7
|
+
const result = await loadCredentials(params.accountId);
|
|
8
|
+
if ("error" in result)
|
|
9
|
+
throw new Error(result.error);
|
|
10
|
+
const { config, password } = result.credentials;
|
|
11
|
+
const { raw, threadedParentId, attachments } = await composeDraft(config, password, params.accountId, params);
|
|
12
|
+
const { folder, uid } = await appendDraft(config, password, raw);
|
|
13
|
+
const uidNote = uid !== null ? `UID: ${uid}` : "UID not reported by server";
|
|
14
|
+
const threadNote = threadedParentId ? ` (threaded reply to ${threadedParentId})` : "";
|
|
15
|
+
return `Email draft saved to ${folder} for ${params.to}${formatCopyNote(params.cc, params.bcc)}${formatAttachNote(attachments)}${threadNote} — not sent (${uidNote}). Review and send it from the mailbox's Drafts folder.`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=email-draft.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-draft.js","sourceRoot":"","sources":["../../src/tools/email-draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMhE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAmB;IAClD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CAC/D,MAAM,EACN,QAAQ,EACR,MAAM,CAAC,SAAS,EAChB,MAAM,CACP,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC;IAC5E,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,OAAO,wBAAwB,MAAM,QAAQ,MAAM,CAAC,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,UAAU,gBAAgB,OAAO,yDAAyD,CAAC;AAC9N,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-reply.d.ts","sourceRoot":"","sources":["../../src/tools/email-reply.ts"],"names":[],"mappings":"AAKA,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"email-reply.d.ts","sourceRoot":"","sources":["../../src/tools/email-reply.ts"],"names":[],"mappings":"AAKA,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA2ErE"}
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import { loadCredentials } from "../lib/credentials.js";
|
|
2
|
-
import { sendEmail, formatCopyNote } from "../lib/smtp.js";
|
|
2
|
+
import { sendEmail, formatCopyNote, replySubject } from "../lib/smtp.js";
|
|
3
3
|
import { fetchEnvelopeByMessageId } from "../lib/imap.js";
|
|
4
4
|
import { resolveOutboundAttachments, formatAttachNote, accountDirFor } from "../lib/attachment-resolve.js";
|
|
5
|
-
/**
|
|
6
|
-
* Strip duplicate Re:/RE:/re: prefixes and prepend a single Re:.
|
|
7
|
-
*/
|
|
8
|
-
function replySubject(subject) {
|
|
9
|
-
const stripped = subject.replace(/^(Re:\s*)+/i, "").trim();
|
|
10
|
-
return `Re: ${stripped || "(no subject)"}`;
|
|
11
|
-
}
|
|
12
5
|
export async function emailReply(params) {
|
|
13
6
|
const result = await loadCredentials(params.accountId);
|
|
14
7
|
if ("error" in result)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-reply.js","sourceRoot":"","sources":["../../src/tools/email-reply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"email-reply.js","sourceRoot":"","sources":["../../src/tools/email-reply.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-send.d.ts","sourceRoot":"","sources":["../../src/tools/email-send.ts"],"names":[],"mappings":"AAIA,UAAU,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"email-send.d.ts","sourceRoot":"","sources":["../../src/tools/email-send.ts"],"names":[],"mappings":"AAIA,UAAU,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCnE"}
|
|
@@ -14,19 +14,13 @@ export async function emailSend(params) {
|
|
|
14
14
|
// path when undefined.
|
|
15
15
|
const attachments = resolveOutboundAttachments(accountDirFor(params.accountId), params.attachments);
|
|
16
16
|
try {
|
|
17
|
-
// Append AI provenance disclosure (EU AI Act Code of Practice)
|
|
18
|
-
const bodyWithDisclosure = params.body + "\n\n---\nThis message was generated by AI.";
|
|
19
|
-
const htmlWithDisclosure = params.html
|
|
20
|
-
? params.html + '<br/><hr style="margin-top:20px;border:none;border-top:1px solid #ccc;"/><p style="color:#888;font-size:12px;">This message was generated by AI.</p>'
|
|
21
|
-
: undefined;
|
|
22
17
|
const { messageId } = await sendEmail(config, password, {
|
|
23
18
|
to: params.to,
|
|
24
19
|
subject: params.subject,
|
|
25
|
-
body:
|
|
26
|
-
html:
|
|
20
|
+
body: params.body,
|
|
21
|
+
html: params.html,
|
|
27
22
|
cc: params.cc,
|
|
28
23
|
bcc: params.bcc,
|
|
29
|
-
headers: { "X-AI-Generated": "true" },
|
|
30
24
|
attachments,
|
|
31
25
|
});
|
|
32
26
|
return `Email sent to ${params.to}${formatCopyNote(params.cc, params.bcc)}${formatAttachNote(attachments)} (Message-ID: ${messageId})`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-send.js","sourceRoot":"","sources":["../../src/tools/email-send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAa3G,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAkB;IAChD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,2EAA2E;IAC3E,6EAA6E;IAC7E,uBAAuB;IACvB,MAAM,WAAW,GAAG,0BAA0B,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAEpG,IAAI,CAAC;QACH
|
|
1
|
+
{"version":3,"file":"email-send.js","sourceRoot":"","sources":["../../src/tools/email-send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAa3G,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAkB;IAChD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,2EAA2E;IAC3E,6EAA6E;IAC7E,uBAAuB;IACvB,MAAM,WAAW,GAAG,0BAA0B,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAEpG,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE;YACtD,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,iBAAiB,MAAM,CAAC,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,iBAAiB,SAAS,GAAG,CAAC;IACzI,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,uBAAuB,MAAM,CAAC,YAAY,sBAAsB,MAAM,CAAC,KAAK,iGAAiG,CACpL,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-setup.d.ts","sourceRoot":"","sources":["../../src/tools/email-setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-setup.d.ts","sourceRoot":"","sources":["../../src/tools/email-setup.ts"],"names":[],"mappings":"AA2CA,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAC7D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CA8KD"}
|