mcp-twake-mail 0.1.0 → 2.0.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/README.md +168 -74
- package/build/cli/commands/setup.js +54 -12
- package/build/cli/commands/setup.js.map +1 -1
- package/build/cli/prompts/setup-wizard.d.ts +33 -1
- package/build/cli/prompts/setup-wizard.js +134 -2
- package/build/cli/prompts/setup-wizard.js.map +1 -1
- package/build/cli/prompts/setup-wizard.test.d.ts +1 -0
- package/build/cli/prompts/setup-wizard.test.js +161 -0
- package/build/cli/prompts/setup-wizard.test.js.map +1 -0
- package/build/config/schema.d.ts +2 -0
- package/build/config/schema.js +3 -0
- package/build/config/schema.js.map +1 -1
- package/build/discovery/dns-srv.d.ts +18 -0
- package/build/discovery/dns-srv.js +60 -0
- package/build/discovery/dns-srv.js.map +1 -0
- package/build/discovery/dns-srv.test.d.ts +4 -0
- package/build/discovery/dns-srv.test.js +79 -0
- package/build/discovery/dns-srv.test.js.map +1 -0
- package/build/discovery/index.d.ts +9 -0
- package/build/discovery/index.js +13 -0
- package/build/discovery/index.js.map +1 -0
- package/build/discovery/oauth-discovery.d.ts +34 -0
- package/build/discovery/oauth-discovery.js +160 -0
- package/build/discovery/oauth-discovery.js.map +1 -0
- package/build/discovery/oauth-discovery.test.d.ts +1 -0
- package/build/discovery/oauth-discovery.test.js +198 -0
- package/build/discovery/oauth-discovery.test.js.map +1 -0
- package/build/discovery/orchestrator.d.ts +31 -0
- package/build/discovery/orchestrator.js +87 -0
- package/build/discovery/orchestrator.js.map +1 -0
- package/build/discovery/orchestrator.test.d.ts +4 -0
- package/build/discovery/orchestrator.test.js +242 -0
- package/build/discovery/orchestrator.test.js.map +1 -0
- package/build/discovery/types.d.ts +18 -0
- package/build/discovery/types.js +15 -0
- package/build/discovery/types.js.map +1 -0
- package/build/discovery/well-known.d.ts +21 -0
- package/build/discovery/well-known.js +52 -0
- package/build/discovery/well-known.js.map +1 -0
- package/build/discovery/well-known.test.d.ts +4 -0
- package/build/discovery/well-known.test.js +120 -0
- package/build/discovery/well-known.test.js.map +1 -0
- package/build/jmap/client.js +1 -1
- package/build/jmap/client.js.map +1 -1
- package/build/mcp/server.d.ts +5 -3
- package/build/mcp/server.js +11 -5
- package/build/mcp/server.js.map +1 -1
- package/build/mcp/tools/batch-operations.d.ts +10 -0
- package/build/mcp/tools/batch-operations.js +609 -0
- package/build/mcp/tools/batch-operations.js.map +1 -0
- package/build/mcp/tools/batch-operations.test.d.ts +1 -0
- package/build/mcp/tools/batch-operations.test.js +875 -0
- package/build/mcp/tools/batch-operations.test.js.map +1 -0
- package/build/mcp/tools/email-operations.js +355 -1
- package/build/mcp/tools/email-operations.js.map +1 -1
- package/build/mcp/tools/email-operations.test.js +5 -3
- package/build/mcp/tools/email-operations.test.js.map +1 -1
- package/build/mcp/tools/email-sending.d.ts +10 -1
- package/build/mcp/tools/email-sending.js +481 -14
- package/build/mcp/tools/email-sending.js.map +1 -1
- package/build/mcp/tools/index.d.ts +10 -1
- package/build/mcp/tools/index.js +7 -3
- package/build/mcp/tools/index.js.map +1 -1
- package/build/mcp/tools/mailbox.js +433 -1
- package/build/mcp/tools/mailbox.js.map +1 -1
- package/build/mcp/tools/mailbox.test.js +5 -2
- package/build/mcp/tools/mailbox.test.js.map +1 -1
- package/build/signature/converter.d.ts +2 -0
- package/build/signature/converter.js +23 -0
- package/build/signature/converter.js.map +1 -0
- package/build/signature/converter.test.d.ts +1 -0
- package/build/signature/converter.test.js +84 -0
- package/build/signature/converter.test.js.map +1 -0
- package/build/signature/index.d.ts +2 -0
- package/build/signature/index.js +3 -0
- package/build/signature/index.js.map +1 -0
- package/build/signature/loader.d.ts +6 -0
- package/build/signature/loader.js +31 -0
- package/build/signature/loader.js.map +1 -0
- package/build/signature/loader.test.d.ts +1 -0
- package/build/signature/loader.test.js +85 -0
- package/build/signature/loader.test.js.map +1 -0
- package/build/types/jmap.d.ts +23 -0
- package/docs/auto-discovery.md +210 -0
- package/docs/oidc-configuration.md +261 -0
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-operations.test.js","sourceRoot":"","sources":["../../../src/mcp/tools/email-operations.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAWpE,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,UAAqB,CAAC;IAC1B,IAAI,cAA0B,CAAC;IAC/B,IAAI,UAAkB,CAAC;IACvB,IAAI,eAAyC,CAAC;IAE9C,UAAU,CAAC,GAAG,EAAE;QACd,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QAE5B,kBAAkB;QAClB,UAAU,GAAG;YACX,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAY,EAAE,QAAiB,EAAE,OAAoB,EAAE,EAAE;gBAC5E,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC,CAAC;SACqB,CAAC;QAE1B,mBAAmB;QACnB,cAAc,GAAG;YACf,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC,CAAC;YAC7F,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE;SACJ,CAAC;QAE3B,uBAAuB;QACvB,UAAU,GAAG;YACX,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;SACM,CAAC;QAEvB,qBAAqB;QACrB,2BAA2B,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC;iBACpF;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;aAC/D,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC;iBACvG;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;aAClF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC;iBACtF;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;aAC/D,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAE,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC;iBACzG;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;aAClF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAE,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,iCAAiC;YACjC,6BAA6B;YAC7B,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;iBAC9B,qBAAqB,CAAC;gBACrB,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;aACjF,CAAC;iBACD,qBAAqB,CAAC;gBACrB,eAAe,EAAE;oBACf,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC;iBACvF;aACF,CAAC,CAAC;YACL,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC;iBAC1C,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC;iBAC3E,mBAAmB,CAAC;gBACnB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;aAC/D,CAAC,CAAC;YAEL,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,gBAAgB;aACzB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,CAAC;iBAClF;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE;aACzD,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,qBAAqB;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,8CAA8C;YAC9C,6BAA6B;YAC7B,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;iBAC9B,qBAAqB,CAAC;gBACrB,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;aAC/D,CAAC;iBACD,qBAAqB,CAAC;gBACrB,eAAe,EAAE;oBACf,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,sBAAsB,CAAC;iBAC1F;aACF,CAAC,CAAC;YACL,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC;iBAC1C,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;iBACzD,mBAAmB,CAAC;gBACnB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE;aACzD,CAAC,CAAC;YAEL,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,qBAAqB;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;iBACrF;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;aAC/D,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAEzF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS;gBAClB,eAAe,EAAE,iBAAiB;aACnC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf;wBACE,WAAW;wBACX;4BACE,SAAS,EAAE,WAAW;4BACtB,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE;yBAChF;wBACD,WAAW;qBACZ;iBACF;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,SAAS,EAAE,WAAW;oBACtB,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE;iBAChF;aACF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAEzF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC;iBACpF;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;aAC/D,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAErF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS;gBAClB,cAAc,EAAE,mBAAmB;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf;wBACE,WAAW;wBACX;4BACE,SAAS,EAAE,WAAW;4BACtB,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE;yBACzD;wBACD,UAAU;qBACX;iBACF;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,SAAS,EAAE,WAAW;oBACtB,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE;iBACzD;aACF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAEnF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC;iBACvF;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;aAC/D,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;YAEjF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS;gBAClB,gBAAgB,EAAE,eAAe;aAClC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;gBAClD,eAAe,EAAE;oBACf;wBACE,WAAW;wBACX;4BACE,SAAS,EAAE,WAAW;4BACtB,UAAU,EAAE;gCACV,SAAS,EAAE;oCACT,IAAI,EAAE,mBAAmB;oCACzB,WAAW,EAAE,4CAA4C;iCAC1D;6BACF;yBACF;wBACD,aAAa;qBACd;iBACF;aACF,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;gBAC5D,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,SAAS,EAAE,WAAW;oBACtB,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,mBAAmB;4BACzB,WAAW,EAAE,4CAA4C;yBAC1D;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;YAEhF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CACjC,gEAAgE,CACjE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,4BAA4B;YAC5B,mEAAmE;YACnE,2BAA2B;YAC3B,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;iBAC9B,qBAAqB,CAAC;gBACrB,eAAe,EAAE,CAAC,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;aAC5G,CAAC;iBACD,qBAAqB,CAAC;gBACrB,eAAe,EAAE,CAAC,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;aACnI,CAAC;iBACD,qBAAqB,CAAC;gBACrB,eAAe,EAAE;oBACf;wBACE,WAAW;wBACX;4BACE,SAAS,EAAE,WAAW;4BACtB,OAAO,EAAE;gCACP,KAAK,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE;6BACzE;yBACF;wBACD,aAAa;qBACd;iBACF;aACF,CAAC,CAAC;YACL,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC;iBAC1C,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;iBACrG,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;iBAC5H,mBAAmB,CAAC;gBACnB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,SAAS,EAAE,WAAW;oBACtB,OAAO,EAAE;wBACP,KAAK,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE;qBACzE;iBACF;aACF,CAAC,CAAC;YAEL,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC3B,EAAE,EAAE,CAAC,uBAAuB,CAAC;gBAC7B,OAAO,EAAE,cAAc;gBACvB,IAAI,EAAE,mBAAmB;aAC1B,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,UAAU;aACrB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC;gBACtD,eAAe,EAAE,CAAC,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;aAClG,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC;iBAC1C,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAE/F,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC3B,EAAE,EAAE,CAAC,uBAAuB,CAAC;gBAC7B,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;iBAC9B,qBAAqB,CAAC;gBACrB,eAAe,EAAE,CAAC,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;aAC5G,CAAC;iBACD,qBAAqB,CAAC;gBACrB,eAAe,EAAE,CAAC,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;aAChH,CAAC;iBACD,qBAAqB,CAAC;gBACrB,eAAe,EAAE;oBACf;wBACE,WAAW;wBACX;4BACE,SAAS,EAAE,WAAW;4BACtB,UAAU,EAAE;gCACV,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,sBAAsB,EAAE;6BAC1E;yBACF;wBACD,aAAa;qBACd;iBACF;aACF,CAAC,CAAC;YACL,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC;iBAC1C,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;iBACrG,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;iBACzG,mBAAmB,CAAC;gBACnB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,SAAS,EAAE,WAAW;oBACtB,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,sBAAsB,EAAE;qBAC1E;iBACF;aACF,CAAC,CAAC;YAEL,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC3B,EAAE,EAAE,CAAC,eAAe,CAAC;gBACrB,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"email-operations.test.js","sourceRoot":"","sources":["../../../src/mcp/tools/email-operations.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { JMAPClient } from '../../jmap/client.js';
|
|
3
3
|
import type { Logger } from '../../config/logger.js';
|
|
4
|
+
import type { SignatureContent } from '../../signature/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Options for email sending tools.
|
|
7
|
+
*/
|
|
8
|
+
export interface EmailSendingOptions {
|
|
9
|
+
signatureContent?: SignatureContent;
|
|
10
|
+
defaultFrom?: string;
|
|
11
|
+
}
|
|
4
12
|
/**
|
|
5
13
|
* Register email sending MCP tools with the server.
|
|
6
14
|
* @param server MCP server instance
|
|
7
15
|
* @param jmapClient JMAP client for API calls
|
|
8
16
|
* @param logger Pino logger
|
|
17
|
+
* @param options Optional signature and defaultFrom configuration
|
|
9
18
|
*/
|
|
10
|
-
export declare function registerEmailSendingTools(server: McpServer, jmapClient: JMAPClient, logger: Logger): void;
|
|
19
|
+
export declare function registerEmailSendingTools(server: McpServer, jmapClient: JMAPClient, logger: Logger, options?: EmailSendingOptions): void;
|
|
@@ -21,13 +21,34 @@ const SUBMISSION_USING = [
|
|
|
21
21
|
'urn:ietf:params:jmap:mail',
|
|
22
22
|
'urn:ietf:params:jmap:submission',
|
|
23
23
|
];
|
|
24
|
+
/**
|
|
25
|
+
* Append signature to email body.
|
|
26
|
+
* @param body Email body content
|
|
27
|
+
* @param signature Signature content to append
|
|
28
|
+
* @param isHtml Whether this is HTML content
|
|
29
|
+
* @returns Body with signature appended
|
|
30
|
+
*/
|
|
31
|
+
function appendSignature(body, signature, isHtml) {
|
|
32
|
+
if (!signature)
|
|
33
|
+
return body;
|
|
34
|
+
if (isHtml) {
|
|
35
|
+
// HTML: use <br> tags and -- separator
|
|
36
|
+
return `${body}<br/><br/>-- <br/>${signature}`;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// Plain text: RFC-compliant "-- \n" delimiter
|
|
40
|
+
return `${body}\n\n-- \n${signature}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
24
43
|
/**
|
|
25
44
|
* Register email sending MCP tools with the server.
|
|
26
45
|
* @param server MCP server instance
|
|
27
46
|
* @param jmapClient JMAP client for API calls
|
|
28
47
|
* @param logger Pino logger
|
|
48
|
+
* @param options Optional signature and defaultFrom configuration
|
|
29
49
|
*/
|
|
30
|
-
export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
50
|
+
export function registerEmailSendingTools(server, jmapClient, logger, options = {}) {
|
|
51
|
+
const { signatureContent, defaultFrom } = options;
|
|
31
52
|
// send_email - compose and send a new email (EMAIL-01)
|
|
32
53
|
server.registerTool('send_email', {
|
|
33
54
|
title: 'Send Email',
|
|
@@ -42,10 +63,11 @@ export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
|
42
63
|
subject: z.string().describe('Email subject line'),
|
|
43
64
|
body: z.string().optional().describe('Plain text email body'),
|
|
44
65
|
htmlBody: z.string().optional().describe('HTML email body'),
|
|
66
|
+
from: z.string().email().optional().describe('Sender email address (uses default if not specified)'),
|
|
45
67
|
},
|
|
46
68
|
annotations: EMAIL_SEND_ANNOTATIONS,
|
|
47
|
-
}, async ({ to, cc, bcc, subject, body, htmlBody }) => {
|
|
48
|
-
logger.debug({ to, cc, bcc, subject, hasBody: !!body, hasHtmlBody: !!htmlBody }, 'send_email called');
|
|
69
|
+
}, async ({ to, cc, bcc, subject, body, htmlBody, from }) => {
|
|
70
|
+
logger.debug({ to, cc, bcc, subject, hasBody: !!body, hasHtmlBody: !!htmlBody, from }, 'send_email called');
|
|
49
71
|
try {
|
|
50
72
|
const session = jmapClient.getSession();
|
|
51
73
|
// Step 1: Get identity and mailboxes in a single batch
|
|
@@ -124,16 +146,27 @@ export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
|
124
146
|
const bodyValues = {};
|
|
125
147
|
if (body) {
|
|
126
148
|
textBody = [{ partId: 'text', type: 'text/plain' }];
|
|
127
|
-
|
|
149
|
+
// Inject signature into plain text body
|
|
150
|
+
const finalBody = signatureContent
|
|
151
|
+
? appendSignature(body, signatureContent.text, false)
|
|
152
|
+
: body;
|
|
153
|
+
bodyValues.text = { value: finalBody };
|
|
128
154
|
}
|
|
129
155
|
if (htmlBody) {
|
|
130
156
|
htmlBodyParts = [{ partId: 'html', type: 'text/html' }];
|
|
131
|
-
|
|
157
|
+
// Inject signature into HTML body
|
|
158
|
+
const finalHtml = signatureContent
|
|
159
|
+
? appendSignature(htmlBody, signatureContent.html, true)
|
|
160
|
+
: htmlBody;
|
|
161
|
+
bodyValues.html = { value: finalHtml };
|
|
132
162
|
}
|
|
133
|
-
// Step 3: Build email object
|
|
163
|
+
// Step 3: Build email object with sender address priority chain
|
|
164
|
+
// Priority: explicit from parameter > defaultFrom config > identity.email
|
|
165
|
+
const senderEmail = from || defaultFrom || identity.email;
|
|
166
|
+
const senderName = identity.name; // Always use identity name
|
|
134
167
|
const emailCreate = {
|
|
135
168
|
mailboxIds: { [draftsMailboxId]: true },
|
|
136
|
-
from: [{ name:
|
|
169
|
+
from: [{ name: senderName, email: senderEmail }],
|
|
137
170
|
to: to.map((email) => ({ email })),
|
|
138
171
|
subject,
|
|
139
172
|
bodyValues,
|
|
@@ -320,10 +353,11 @@ export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
|
320
353
|
.boolean()
|
|
321
354
|
.default(false)
|
|
322
355
|
.describe('If true, reply to all original recipients'),
|
|
356
|
+
from: z.string().email().optional().describe('Sender email address (uses default if not specified)'),
|
|
323
357
|
},
|
|
324
358
|
annotations: EMAIL_SEND_ANNOTATIONS,
|
|
325
|
-
}, async ({ originalEmailId, body, htmlBody, replyAll }) => {
|
|
326
|
-
logger.debug({ originalEmailId, hasBody: !!body, hasHtmlBody: !!htmlBody, replyAll }, 'reply_email called');
|
|
359
|
+
}, async ({ originalEmailId, body, htmlBody, replyAll, from }) => {
|
|
360
|
+
logger.debug({ originalEmailId, hasBody: !!body, hasHtmlBody: !!htmlBody, replyAll, from }, 'reply_email called');
|
|
327
361
|
try {
|
|
328
362
|
const session = jmapClient.getSession();
|
|
329
363
|
// Step 1: Get identity, mailboxes, and original email in a single batch
|
|
@@ -488,16 +522,27 @@ export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
|
488
522
|
const bodyValues = {};
|
|
489
523
|
if (body) {
|
|
490
524
|
textBody = [{ partId: 'text', type: 'text/plain' }];
|
|
491
|
-
|
|
525
|
+
// Inject signature into plain text body
|
|
526
|
+
const finalBody = signatureContent
|
|
527
|
+
? appendSignature(body, signatureContent.text, false)
|
|
528
|
+
: body;
|
|
529
|
+
bodyValues.text = { value: finalBody };
|
|
492
530
|
}
|
|
493
531
|
if (htmlBody) {
|
|
494
532
|
htmlBodyParts = [{ partId: 'html', type: 'text/html' }];
|
|
495
|
-
|
|
533
|
+
// Inject signature into HTML body
|
|
534
|
+
const finalHtml = signatureContent
|
|
535
|
+
? appendSignature(htmlBody, signatureContent.html, true)
|
|
536
|
+
: htmlBody;
|
|
537
|
+
bodyValues.html = { value: finalHtml };
|
|
496
538
|
}
|
|
497
|
-
// Step 6: Build email object
|
|
539
|
+
// Step 6: Build email object with sender address priority chain
|
|
540
|
+
// Priority: explicit from parameter > defaultFrom config > identity.email
|
|
541
|
+
const senderEmail = from || defaultFrom || identity.email;
|
|
542
|
+
const senderName = identity.name; // Always use identity name
|
|
498
543
|
const emailCreate = {
|
|
499
544
|
mailboxIds: { [draftsMailboxId]: true },
|
|
500
|
-
from: [{ name:
|
|
545
|
+
from: [{ name: senderName, email: senderEmail }],
|
|
501
546
|
to: toAddresses,
|
|
502
547
|
subject: replySubject,
|
|
503
548
|
inReplyTo,
|
|
@@ -677,6 +722,428 @@ export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
|
677
722
|
};
|
|
678
723
|
}
|
|
679
724
|
});
|
|
680
|
-
|
|
725
|
+
// forward_email - forward an email to new recipients (FWD-01, FWD-02, FWD-03, FWD-04)
|
|
726
|
+
server.registerTool('forward_email', {
|
|
727
|
+
title: 'Forward Email',
|
|
728
|
+
description: 'Forward an existing email to new recipients. Includes original content as quoted text and preserves all attachments.',
|
|
729
|
+
inputSchema: {
|
|
730
|
+
originalEmailId: z.string().describe('ID of the email to forward'),
|
|
731
|
+
to: z
|
|
732
|
+
.array(z.string().email())
|
|
733
|
+
.min(1)
|
|
734
|
+
.describe('Recipient email addresses (at least one required)'),
|
|
735
|
+
cc: z.array(z.string().email()).optional().describe('CC email addresses'),
|
|
736
|
+
bcc: z.array(z.string().email()).optional().describe('BCC email addresses'),
|
|
737
|
+
note: z.string().optional().describe('Personal note to include above the forwarded content'),
|
|
738
|
+
htmlNote: z.string().optional().describe('HTML version of the personal note'),
|
|
739
|
+
from: z.string().email().optional().describe('Sender email address (uses default if not specified)'),
|
|
740
|
+
},
|
|
741
|
+
annotations: EMAIL_SEND_ANNOTATIONS,
|
|
742
|
+
}, async ({ originalEmailId, to, cc, bcc, note, htmlNote, from }) => {
|
|
743
|
+
logger.debug({ originalEmailId, to, cc, bcc, hasNote: !!note, hasHtmlNote: !!htmlNote, from }, 'forward_email called');
|
|
744
|
+
try {
|
|
745
|
+
const session = jmapClient.getSession();
|
|
746
|
+
// Step 1: Get identity, mailboxes, and original email in a single batch
|
|
747
|
+
const setupResponse = await jmapClient.request([
|
|
748
|
+
['Identity/get', { accountId: session.accountId }, 'getIdentity'],
|
|
749
|
+
[
|
|
750
|
+
'Mailbox/get',
|
|
751
|
+
{ accountId: session.accountId, properties: ['id', 'role'] },
|
|
752
|
+
'getMailboxes',
|
|
753
|
+
],
|
|
754
|
+
[
|
|
755
|
+
'Email/get',
|
|
756
|
+
{
|
|
757
|
+
accountId: session.accountId,
|
|
758
|
+
ids: [originalEmailId],
|
|
759
|
+
properties: ['subject', 'from', 'to', 'cc', 'sentAt', 'textBody', 'htmlBody', 'bodyValues', 'attachments'],
|
|
760
|
+
fetchTextBodyValues: true,
|
|
761
|
+
fetchHTMLBodyValues: true,
|
|
762
|
+
bodyProperties: ['partId', 'blobId', 'type', 'name', 'size', 'disposition', 'cid'],
|
|
763
|
+
},
|
|
764
|
+
'getOriginal',
|
|
765
|
+
],
|
|
766
|
+
], SUBMISSION_USING);
|
|
767
|
+
// Parse Identity response
|
|
768
|
+
const identityResult = jmapClient.parseMethodResponse(setupResponse.methodResponses[0]);
|
|
769
|
+
if (!identityResult.success) {
|
|
770
|
+
logger.error({ error: identityResult.error }, 'Failed to get identity');
|
|
771
|
+
return {
|
|
772
|
+
isError: true,
|
|
773
|
+
content: [
|
|
774
|
+
{
|
|
775
|
+
type: 'text',
|
|
776
|
+
text: 'Failed to get sending identity. Contact your administrator.',
|
|
777
|
+
},
|
|
778
|
+
],
|
|
779
|
+
};
|
|
780
|
+
}
|
|
781
|
+
const identities = identityResult.data.list;
|
|
782
|
+
if (!identities || identities.length === 0) {
|
|
783
|
+
logger.error({}, 'No sending identity available');
|
|
784
|
+
return {
|
|
785
|
+
isError: true,
|
|
786
|
+
content: [
|
|
787
|
+
{
|
|
788
|
+
type: 'text',
|
|
789
|
+
text: 'No sending identity available. Contact your administrator.',
|
|
790
|
+
},
|
|
791
|
+
],
|
|
792
|
+
};
|
|
793
|
+
}
|
|
794
|
+
const identity = identities[0];
|
|
795
|
+
// Parse Mailbox response and find Sent/Drafts by role
|
|
796
|
+
const mailboxResult = jmapClient.parseMethodResponse(setupResponse.methodResponses[1]);
|
|
797
|
+
if (!mailboxResult.success) {
|
|
798
|
+
logger.error({ error: mailboxResult.error }, 'Failed to get mailboxes');
|
|
799
|
+
return {
|
|
800
|
+
isError: true,
|
|
801
|
+
content: [
|
|
802
|
+
{
|
|
803
|
+
type: 'text',
|
|
804
|
+
text: 'Failed to get mailboxes. Cannot forward email.',
|
|
805
|
+
},
|
|
806
|
+
],
|
|
807
|
+
};
|
|
808
|
+
}
|
|
809
|
+
const mailboxes = mailboxResult.data.list;
|
|
810
|
+
const sentMailbox = mailboxes.find((mb) => mb.role === 'sent');
|
|
811
|
+
const draftsMailbox = mailboxes.find((mb) => mb.role === 'drafts');
|
|
812
|
+
const sentMailboxId = sentMailbox?.id;
|
|
813
|
+
if (!draftsMailbox) {
|
|
814
|
+
logger.error({}, 'No Drafts mailbox found');
|
|
815
|
+
return {
|
|
816
|
+
isError: true,
|
|
817
|
+
content: [
|
|
818
|
+
{
|
|
819
|
+
type: 'text',
|
|
820
|
+
text: 'No Drafts mailbox found. Cannot forward email.',
|
|
821
|
+
},
|
|
822
|
+
],
|
|
823
|
+
};
|
|
824
|
+
}
|
|
825
|
+
const draftsMailboxId = draftsMailbox.id;
|
|
826
|
+
// Parse original email response
|
|
827
|
+
const originalResult = jmapClient.parseMethodResponse(setupResponse.methodResponses[2]);
|
|
828
|
+
if (!originalResult.success) {
|
|
829
|
+
logger.error({ error: originalResult.error }, 'Failed to get original email');
|
|
830
|
+
return {
|
|
831
|
+
isError: true,
|
|
832
|
+
content: [
|
|
833
|
+
{
|
|
834
|
+
type: 'text',
|
|
835
|
+
text: `Failed to fetch original email: ${originalResult.error?.description || originalResult.error?.type || 'Unknown error'}`,
|
|
836
|
+
},
|
|
837
|
+
],
|
|
838
|
+
};
|
|
839
|
+
}
|
|
840
|
+
const originalList = originalResult.data.list;
|
|
841
|
+
if (!originalList || originalList.length === 0) {
|
|
842
|
+
logger.error({ originalEmailId }, 'Original email not found');
|
|
843
|
+
return {
|
|
844
|
+
isError: true,
|
|
845
|
+
content: [
|
|
846
|
+
{
|
|
847
|
+
type: 'text',
|
|
848
|
+
text: `Original email not found: ${originalEmailId}`,
|
|
849
|
+
},
|
|
850
|
+
],
|
|
851
|
+
};
|
|
852
|
+
}
|
|
853
|
+
const original = originalList[0];
|
|
854
|
+
// Step 2: Build subject with Fwd: prefix (case-insensitive check)
|
|
855
|
+
let forwardSubject;
|
|
856
|
+
const originalSubject = original.subject || '';
|
|
857
|
+
if (originalSubject.toLowerCase().startsWith('fwd:')) {
|
|
858
|
+
forwardSubject = originalSubject;
|
|
859
|
+
}
|
|
860
|
+
else {
|
|
861
|
+
forwardSubject = `Fwd: ${originalSubject}`;
|
|
862
|
+
}
|
|
863
|
+
// Step 3: Extract original email body content
|
|
864
|
+
const originalTextPartId = original.textBody?.[0]?.partId;
|
|
865
|
+
const originalHtmlPartId = original.htmlBody?.[0]?.partId;
|
|
866
|
+
const originalTextBody = originalTextPartId ? original.bodyValues?.[originalTextPartId]?.value || '' : '';
|
|
867
|
+
const originalHtmlBody = originalHtmlPartId ? original.bodyValues?.[originalHtmlPartId]?.value || '' : '';
|
|
868
|
+
// Format original sender info for quoted header
|
|
869
|
+
const originalFrom = original.from?.[0];
|
|
870
|
+
const originalFromStr = originalFrom
|
|
871
|
+
? originalFrom.name
|
|
872
|
+
? `${originalFrom.name} <${originalFrom.email}>`
|
|
873
|
+
: originalFrom.email
|
|
874
|
+
: 'Unknown';
|
|
875
|
+
const originalToStr = (original.to || [])
|
|
876
|
+
.map((addr) => (addr.name ? `${addr.name} <${addr.email}>` : addr.email))
|
|
877
|
+
.join(', ') || 'Unknown';
|
|
878
|
+
const originalDate = original.sentAt
|
|
879
|
+
? new Date(original.sentAt).toLocaleString()
|
|
880
|
+
: 'Unknown date';
|
|
881
|
+
// Step 4: Build quoted forwarded content
|
|
882
|
+
const forwardHeader = `---------- Forwarded message ---------
|
|
883
|
+
From: ${originalFromStr}
|
|
884
|
+
Date: ${originalDate}
|
|
885
|
+
Subject: ${originalSubject}
|
|
886
|
+
To: ${originalToStr}`;
|
|
887
|
+
// Plain text version
|
|
888
|
+
let plainTextBody = note ? `${note}\n\n` : '';
|
|
889
|
+
plainTextBody += `${forwardHeader}\n\n${originalTextBody}`;
|
|
890
|
+
// HTML version with styling
|
|
891
|
+
const htmlForwardHeader = `<div style="border-left: 2px solid #ccc; padding-left: 10px; margin-left: 5px; color: #666;">
|
|
892
|
+
<p>---------- Forwarded message ---------<br/>
|
|
893
|
+
From: ${escapeHtml(originalFromStr)}<br/>
|
|
894
|
+
Date: ${escapeHtml(originalDate)}<br/>
|
|
895
|
+
Subject: ${escapeHtml(originalSubject)}<br/>
|
|
896
|
+
To: ${escapeHtml(originalToStr)}</p>
|
|
897
|
+
${originalHtmlBody || `<p>${escapeHtml(originalTextBody).replace(/\n/g, '<br/>')}</p>`}
|
|
898
|
+
</div>`;
|
|
899
|
+
let htmlBodyContent = htmlNote ? `<div>${htmlNote}</div><br/>` : (note ? `<p>${escapeHtml(note).replace(/\n/g, '<br/>')}</p><br/>` : '');
|
|
900
|
+
htmlBodyContent += htmlForwardHeader;
|
|
901
|
+
// Step 5: Apply signature if configured
|
|
902
|
+
if (signatureContent) {
|
|
903
|
+
plainTextBody = appendSignature(plainTextBody, signatureContent.text, false);
|
|
904
|
+
htmlBodyContent = appendSignature(htmlBodyContent, signatureContent.html, true);
|
|
905
|
+
}
|
|
906
|
+
// Step 6: Build email object with sender address priority chain
|
|
907
|
+
// Priority: explicit from parameter > defaultFrom config > identity.email
|
|
908
|
+
const senderEmail = from || defaultFrom || identity.email;
|
|
909
|
+
const senderName = identity.name; // Always use identity name
|
|
910
|
+
// Build email object with textBody/htmlBody
|
|
911
|
+
// Note: We use textBody/htmlBody + attachments property instead of bodyStructure
|
|
912
|
+
// because Apache James ignores bodyValues when bodyStructure is present
|
|
913
|
+
const attachments = original.attachments || [];
|
|
914
|
+
const bodyValues = {
|
|
915
|
+
text: { value: plainTextBody },
|
|
916
|
+
html: { value: htmlBodyContent },
|
|
917
|
+
};
|
|
918
|
+
const emailCreate = {
|
|
919
|
+
mailboxIds: { [draftsMailboxId]: true },
|
|
920
|
+
from: [{ name: senderName, email: senderEmail }],
|
|
921
|
+
to: to.map((email) => ({ email })),
|
|
922
|
+
subject: forwardSubject,
|
|
923
|
+
bodyValues,
|
|
924
|
+
textBody: [{ partId: 'text', type: 'text/plain' }],
|
|
925
|
+
htmlBody: [{ partId: 'html', type: 'text/html' }],
|
|
926
|
+
};
|
|
927
|
+
// Add attachments if present (reference original blobs)
|
|
928
|
+
if (attachments.length > 0) {
|
|
929
|
+
emailCreate.attachments = attachments.map((att, index) => ({
|
|
930
|
+
blobId: att.blobId,
|
|
931
|
+
type: att.type,
|
|
932
|
+
name: att.name || `attachment-${index + 1}`,
|
|
933
|
+
}));
|
|
934
|
+
}
|
|
935
|
+
// Add optional address fields
|
|
936
|
+
if (cc && cc.length > 0) {
|
|
937
|
+
emailCreate.cc = cc.map((email) => ({ email }));
|
|
938
|
+
}
|
|
939
|
+
if (bcc && bcc.length > 0) {
|
|
940
|
+
emailCreate.bcc = bcc.map((email) => ({ email }));
|
|
941
|
+
}
|
|
942
|
+
// Note: Unlike reply_email, forward does NOT include inReplyTo or references headers
|
|
943
|
+
// Step 7: Build onSuccessUpdateEmail for Drafts-to-Sent transition
|
|
944
|
+
const onSuccessUpdate = {
|
|
945
|
+
'keywords/$draft': null,
|
|
946
|
+
};
|
|
947
|
+
if (sentMailboxId) {
|
|
948
|
+
onSuccessUpdate[`mailboxIds/${draftsMailboxId}`] = null;
|
|
949
|
+
onSuccessUpdate[`mailboxIds/${sentMailboxId}`] = true;
|
|
950
|
+
}
|
|
951
|
+
// Step 8: Create email and submit in single batch
|
|
952
|
+
const sendResponse = await jmapClient.request([
|
|
953
|
+
[
|
|
954
|
+
'Email/set',
|
|
955
|
+
{
|
|
956
|
+
accountId: session.accountId,
|
|
957
|
+
create: { forward: emailCreate },
|
|
958
|
+
},
|
|
959
|
+
'createForward',
|
|
960
|
+
],
|
|
961
|
+
[
|
|
962
|
+
'EmailSubmission/set',
|
|
963
|
+
{
|
|
964
|
+
accountId: session.accountId,
|
|
965
|
+
create: {
|
|
966
|
+
submission: {
|
|
967
|
+
identityId: identity.id,
|
|
968
|
+
emailId: '#forward',
|
|
969
|
+
},
|
|
970
|
+
},
|
|
971
|
+
onSuccessUpdateEmail: { '#submission': onSuccessUpdate },
|
|
972
|
+
},
|
|
973
|
+
'submitForward',
|
|
974
|
+
],
|
|
975
|
+
], SUBMISSION_USING);
|
|
976
|
+
// Step 9: Check Email/set response
|
|
977
|
+
const emailResult = jmapClient.parseMethodResponse(sendResponse.methodResponses[0]);
|
|
978
|
+
if (!emailResult.success) {
|
|
979
|
+
logger.error({ error: emailResult.error }, 'JMAP error in Email/set for forward');
|
|
980
|
+
return {
|
|
981
|
+
isError: true,
|
|
982
|
+
content: [
|
|
983
|
+
{
|
|
984
|
+
type: 'text',
|
|
985
|
+
text: `Failed to create forwarded email: ${emailResult.error?.description || emailResult.error?.type || 'Unknown error'}`,
|
|
986
|
+
},
|
|
987
|
+
],
|
|
988
|
+
};
|
|
989
|
+
}
|
|
990
|
+
const emailSetResponse = emailResult.data;
|
|
991
|
+
if (emailSetResponse.notCreated?.forward) {
|
|
992
|
+
const error = emailSetResponse.notCreated.forward;
|
|
993
|
+
logger.error({ error }, 'Email/set notCreated for forward');
|
|
994
|
+
// Handle blobNotFound error for attachments
|
|
995
|
+
if (error.type === 'blobNotFound') {
|
|
996
|
+
const missingCount = attachments.length;
|
|
997
|
+
return {
|
|
998
|
+
isError: true,
|
|
999
|
+
content: [
|
|
1000
|
+
{
|
|
1001
|
+
type: 'text',
|
|
1002
|
+
text: `Forward failed: Some attachments are no longer available (${missingCount} attachment${missingCount !== 1 ? 's' : ''} missing). The original email may have been modified or deleted.`,
|
|
1003
|
+
},
|
|
1004
|
+
],
|
|
1005
|
+
};
|
|
1006
|
+
}
|
|
1007
|
+
return {
|
|
1008
|
+
isError: true,
|
|
1009
|
+
content: [
|
|
1010
|
+
{
|
|
1011
|
+
type: 'text',
|
|
1012
|
+
text: `Failed to create forwarded email: ${error.type} - ${error.description || ''}`,
|
|
1013
|
+
},
|
|
1014
|
+
],
|
|
1015
|
+
};
|
|
1016
|
+
}
|
|
1017
|
+
const createdEmail = emailSetResponse.created?.forward;
|
|
1018
|
+
if (!createdEmail) {
|
|
1019
|
+
logger.error({}, 'No created forward in response');
|
|
1020
|
+
return {
|
|
1021
|
+
isError: true,
|
|
1022
|
+
content: [
|
|
1023
|
+
{
|
|
1024
|
+
type: 'text',
|
|
1025
|
+
text: 'Failed to create forwarded email: no created email in response',
|
|
1026
|
+
},
|
|
1027
|
+
],
|
|
1028
|
+
};
|
|
1029
|
+
}
|
|
1030
|
+
// Step 10: Check EmailSubmission/set response
|
|
1031
|
+
const submissionResult = jmapClient.parseMethodResponse(sendResponse.methodResponses[1]);
|
|
1032
|
+
if (!submissionResult.success) {
|
|
1033
|
+
logger.error({ error: submissionResult.error }, 'JMAP error in EmailSubmission/set for forward');
|
|
1034
|
+
return {
|
|
1035
|
+
isError: true,
|
|
1036
|
+
content: [
|
|
1037
|
+
{
|
|
1038
|
+
type: 'text',
|
|
1039
|
+
text: `Failed to send forwarded email: ${submissionResult.error?.description || submissionResult.error?.type || 'Unknown error'}`,
|
|
1040
|
+
},
|
|
1041
|
+
],
|
|
1042
|
+
};
|
|
1043
|
+
}
|
|
1044
|
+
const submissionSetResponse = submissionResult.data;
|
|
1045
|
+
if (submissionSetResponse.notCreated?.submission) {
|
|
1046
|
+
const error = submissionSetResponse.notCreated.submission;
|
|
1047
|
+
logger.error({ error }, 'EmailSubmission/set notCreated for forward');
|
|
1048
|
+
let errorMessage = `Failed to send forwarded email: ${error.type}`;
|
|
1049
|
+
if (error.type === 'forbiddenFrom') {
|
|
1050
|
+
errorMessage = 'Failed to send forwarded email: You are not authorized to send from this address.';
|
|
1051
|
+
}
|
|
1052
|
+
else if (error.type === 'forbiddenToSend') {
|
|
1053
|
+
errorMessage = 'Failed to send forwarded email: You do not have permission to send emails.';
|
|
1054
|
+
}
|
|
1055
|
+
else if (error.type === 'tooManyRecipients') {
|
|
1056
|
+
errorMessage = 'Failed to send forwarded email: Too many recipients specified.';
|
|
1057
|
+
}
|
|
1058
|
+
else if (error.description) {
|
|
1059
|
+
errorMessage = `Failed to send forwarded email: ${error.type} - ${error.description}`;
|
|
1060
|
+
}
|
|
1061
|
+
return {
|
|
1062
|
+
isError: true,
|
|
1063
|
+
content: [
|
|
1064
|
+
{
|
|
1065
|
+
type: 'text',
|
|
1066
|
+
text: errorMessage,
|
|
1067
|
+
},
|
|
1068
|
+
],
|
|
1069
|
+
};
|
|
1070
|
+
}
|
|
1071
|
+
const createdSubmission = submissionSetResponse.created?.submission;
|
|
1072
|
+
if (!createdSubmission) {
|
|
1073
|
+
logger.error({}, 'No created submission in response for forward');
|
|
1074
|
+
return {
|
|
1075
|
+
isError: true,
|
|
1076
|
+
content: [
|
|
1077
|
+
{
|
|
1078
|
+
type: 'text',
|
|
1079
|
+
text: 'Failed to send forwarded email: no submission created in response',
|
|
1080
|
+
},
|
|
1081
|
+
],
|
|
1082
|
+
};
|
|
1083
|
+
}
|
|
1084
|
+
// Step 11: Mark original email with $forwarded keyword (non-blocking)
|
|
1085
|
+
try {
|
|
1086
|
+
await jmapClient.request([
|
|
1087
|
+
[
|
|
1088
|
+
'Email/set',
|
|
1089
|
+
{
|
|
1090
|
+
accountId: session.accountId,
|
|
1091
|
+
update: {
|
|
1092
|
+
[originalEmailId]: { 'keywords/$forwarded': true },
|
|
1093
|
+
},
|
|
1094
|
+
},
|
|
1095
|
+
'markForwarded',
|
|
1096
|
+
],
|
|
1097
|
+
], SUBMISSION_USING);
|
|
1098
|
+
}
|
|
1099
|
+
catch (markError) {
|
|
1100
|
+
// Log warning but don't fail the forward
|
|
1101
|
+
logger.warn({ error: markError, originalEmailId }, 'Failed to mark original email as forwarded');
|
|
1102
|
+
}
|
|
1103
|
+
logger.debug({
|
|
1104
|
+
emailId: createdEmail.id,
|
|
1105
|
+
submissionId: createdSubmission.id,
|
|
1106
|
+
attachmentCount: attachments.length,
|
|
1107
|
+
}, 'forward_email success');
|
|
1108
|
+
return {
|
|
1109
|
+
content: [
|
|
1110
|
+
{
|
|
1111
|
+
type: 'text',
|
|
1112
|
+
text: JSON.stringify({
|
|
1113
|
+
success: true,
|
|
1114
|
+
emailId: createdEmail.id,
|
|
1115
|
+
submissionId: createdSubmission.id,
|
|
1116
|
+
}),
|
|
1117
|
+
},
|
|
1118
|
+
],
|
|
1119
|
+
};
|
|
1120
|
+
}
|
|
1121
|
+
catch (error) {
|
|
1122
|
+
logger.error({ error }, 'Exception in forward_email');
|
|
1123
|
+
return {
|
|
1124
|
+
isError: true,
|
|
1125
|
+
content: [
|
|
1126
|
+
{
|
|
1127
|
+
type: 'text',
|
|
1128
|
+
text: `Error forwarding email: ${error instanceof Error ? error.message : String(error)}`,
|
|
1129
|
+
},
|
|
1130
|
+
],
|
|
1131
|
+
};
|
|
1132
|
+
}
|
|
1133
|
+
});
|
|
1134
|
+
logger.debug('Email sending tools registered: send_email, reply_email, forward_email');
|
|
1135
|
+
}
|
|
1136
|
+
/**
|
|
1137
|
+
* Escape HTML special characters.
|
|
1138
|
+
* @param text Text to escape
|
|
1139
|
+
* @returns HTML-escaped text
|
|
1140
|
+
*/
|
|
1141
|
+
function escapeHtml(text) {
|
|
1142
|
+
return text
|
|
1143
|
+
.replace(/&/g, '&')
|
|
1144
|
+
.replace(/</g, '<')
|
|
1145
|
+
.replace(/>/g, '>')
|
|
1146
|
+
.replace(/"/g, '"')
|
|
1147
|
+
.replace(/'/g, ''');
|
|
681
1148
|
}
|
|
682
1149
|
//# sourceMappingURL=email-sending.js.map
|