mcp-twake-mail 0.1.0 → 1.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.
Files changed (69) hide show
  1. package/README.md +77 -48
  2. package/build/cli/commands/setup.js +54 -12
  3. package/build/cli/commands/setup.js.map +1 -1
  4. package/build/cli/prompts/setup-wizard.d.ts +33 -1
  5. package/build/cli/prompts/setup-wizard.js +134 -2
  6. package/build/cli/prompts/setup-wizard.js.map +1 -1
  7. package/build/cli/prompts/setup-wizard.test.d.ts +1 -0
  8. package/build/cli/prompts/setup-wizard.test.js +161 -0
  9. package/build/cli/prompts/setup-wizard.test.js.map +1 -0
  10. package/build/config/schema.d.ts +2 -0
  11. package/build/config/schema.js +3 -0
  12. package/build/config/schema.js.map +1 -1
  13. package/build/discovery/dns-srv.d.ts +18 -0
  14. package/build/discovery/dns-srv.js +60 -0
  15. package/build/discovery/dns-srv.js.map +1 -0
  16. package/build/discovery/dns-srv.test.d.ts +4 -0
  17. package/build/discovery/dns-srv.test.js +79 -0
  18. package/build/discovery/dns-srv.test.js.map +1 -0
  19. package/build/discovery/index.d.ts +9 -0
  20. package/build/discovery/index.js +13 -0
  21. package/build/discovery/index.js.map +1 -0
  22. package/build/discovery/oauth-discovery.d.ts +34 -0
  23. package/build/discovery/oauth-discovery.js +160 -0
  24. package/build/discovery/oauth-discovery.js.map +1 -0
  25. package/build/discovery/oauth-discovery.test.d.ts +1 -0
  26. package/build/discovery/oauth-discovery.test.js +198 -0
  27. package/build/discovery/oauth-discovery.test.js.map +1 -0
  28. package/build/discovery/orchestrator.d.ts +31 -0
  29. package/build/discovery/orchestrator.js +87 -0
  30. package/build/discovery/orchestrator.js.map +1 -0
  31. package/build/discovery/orchestrator.test.d.ts +4 -0
  32. package/build/discovery/orchestrator.test.js +242 -0
  33. package/build/discovery/orchestrator.test.js.map +1 -0
  34. package/build/discovery/types.d.ts +18 -0
  35. package/build/discovery/types.js +15 -0
  36. package/build/discovery/types.js.map +1 -0
  37. package/build/discovery/well-known.d.ts +21 -0
  38. package/build/discovery/well-known.js +52 -0
  39. package/build/discovery/well-known.js.map +1 -0
  40. package/build/discovery/well-known.test.d.ts +4 -0
  41. package/build/discovery/well-known.test.js +120 -0
  42. package/build/discovery/well-known.test.js.map +1 -0
  43. package/build/mcp/server.d.ts +5 -3
  44. package/build/mcp/server.js +11 -5
  45. package/build/mcp/server.js.map +1 -1
  46. package/build/mcp/tools/email-sending.d.ts +10 -1
  47. package/build/mcp/tools/email-sending.js +60 -15
  48. package/build/mcp/tools/email-sending.js.map +1 -1
  49. package/build/mcp/tools/index.d.ts +10 -1
  50. package/build/mcp/tools/index.js +4 -3
  51. package/build/mcp/tools/index.js.map +1 -1
  52. package/build/signature/converter.d.ts +2 -0
  53. package/build/signature/converter.js +23 -0
  54. package/build/signature/converter.js.map +1 -0
  55. package/build/signature/converter.test.d.ts +1 -0
  56. package/build/signature/converter.test.js +84 -0
  57. package/build/signature/converter.test.js.map +1 -0
  58. package/build/signature/index.d.ts +2 -0
  59. package/build/signature/index.js +3 -0
  60. package/build/signature/index.js.map +1 -0
  61. package/build/signature/loader.d.ts +6 -0
  62. package/build/signature/loader.js +31 -0
  63. package/build/signature/loader.js.map +1 -0
  64. package/build/signature/loader.test.d.ts +1 -0
  65. package/build/signature/loader.test.js +85 -0
  66. package/build/signature/loader.test.js.map +1 -0
  67. package/docs/auto-discovery.md +210 -0
  68. package/docs/oidc-configuration.md +261 -0
  69. package/package.json +3 -1
@@ -0,0 +1,21 @@
1
+ /**
2
+ * .well-known/jmap endpoint discovery
3
+ * RFC 8620 Section 2.2 - Service Discovery via .well-known URI
4
+ */
5
+ /**
6
+ * Verify JMAP URL by making a request and checking response
7
+ * Accepts both 200 (public session) and 401 (needs auth) as valid endpoints
8
+ *
9
+ * @param url - URL to verify
10
+ * @param timeout - Timeout in milliseconds (default: 10000)
11
+ * @returns Final URL after redirects, or null if not a valid JMAP endpoint
12
+ */
13
+ export declare function verifyJmapUrl(url: string, timeout?: number): Promise<string | null>;
14
+ /**
15
+ * Fetch .well-known/jmap endpoint for a domain
16
+ * Always uses HTTPS per RFC 8620 security requirements
17
+ *
18
+ * @param domain - Email domain (e.g., "example.com")
19
+ * @returns Session URL after redirects, or null if not found
20
+ */
21
+ export declare function fetchWellKnownJmap(domain: string): Promise<string | null>;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * .well-known/jmap endpoint discovery
3
+ * RFC 8620 Section 2.2 - Service Discovery via .well-known URI
4
+ */
5
+ /**
6
+ * Verify JMAP URL by making a request and checking response
7
+ * Accepts both 200 (public session) and 401 (needs auth) as valid endpoints
8
+ *
9
+ * @param url - URL to verify
10
+ * @param timeout - Timeout in milliseconds (default: 10000)
11
+ * @returns Final URL after redirects, or null if not a valid JMAP endpoint
12
+ */
13
+ export async function verifyJmapUrl(url, timeout = 10000) {
14
+ try {
15
+ const controller = new AbortController();
16
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
17
+ const response = await fetch(url, {
18
+ redirect: 'follow',
19
+ signal: controller.signal,
20
+ });
21
+ clearTimeout(timeoutId);
22
+ // Accept both 200 (public session info) and 401 (needs auth) as valid JMAP endpoints
23
+ if (response.status === 200 || response.status === 401) {
24
+ // Return final URL after any redirects
25
+ return response.url;
26
+ }
27
+ // Other status codes (404, 500, etc.) mean this is not a JMAP endpoint
28
+ return null;
29
+ }
30
+ catch (error) {
31
+ // Network errors, timeouts, and other fetch failures
32
+ if (error instanceof Error && error.name === 'AbortError') {
33
+ console.warn(`JMAP URL verification timeout for ${url}`);
34
+ }
35
+ else {
36
+ console.warn(`JMAP URL verification failed for ${url}:`, error);
37
+ }
38
+ return null;
39
+ }
40
+ }
41
+ /**
42
+ * Fetch .well-known/jmap endpoint for a domain
43
+ * Always uses HTTPS per RFC 8620 security requirements
44
+ *
45
+ * @param domain - Email domain (e.g., "example.com")
46
+ * @returns Session URL after redirects, or null if not found
47
+ */
48
+ export async function fetchWellKnownJmap(domain) {
49
+ const url = `https://${domain}/.well-known/jmap`;
50
+ return verifyJmapUrl(url);
51
+ }
52
+ //# sourceMappingURL=well-known.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"well-known.js","sourceRoot":"","sources":["../../src/discovery/well-known.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,OAAO,GAAG,KAAK;IAEf,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,qFAAqF;QACrF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvD,uCAAuC;YACvC,OAAO,QAAQ,CAAC,GAAG,CAAC;QACtB,CAAC;QAED,uEAAuE;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qDAAqD;QACrD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,oCAAoC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc;IACrD,MAAM,GAAG,GAAG,WAAW,MAAM,mBAAmB,CAAC;IACjD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Well-known JMAP endpoint discovery tests
3
+ */
4
+ export {};
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Well-known JMAP endpoint discovery tests
3
+ */
4
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
5
+ import { verifyJmapUrl, fetchWellKnownJmap } from './well-known.js';
6
+ // Mock fetch globally
7
+ const mockFetch = vi.fn();
8
+ global.fetch = mockFetch;
9
+ describe('verifyJmapUrl', () => {
10
+ beforeEach(() => {
11
+ vi.clearAllMocks();
12
+ });
13
+ afterEach(() => {
14
+ vi.restoreAllMocks();
15
+ });
16
+ it('returns final URL on successful 200 response', async () => {
17
+ mockFetch.mockResolvedValue({
18
+ status: 200,
19
+ url: 'https://jmap.example.com/session',
20
+ });
21
+ const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
22
+ expect(result).toBe('https://jmap.example.com/session');
23
+ expect(mockFetch).toHaveBeenCalledWith('https://example.com/.well-known/jmap', {
24
+ redirect: 'follow',
25
+ signal: expect.any(AbortSignal),
26
+ });
27
+ });
28
+ it('returns final URL on 401 response (needs auth)', async () => {
29
+ mockFetch.mockResolvedValue({
30
+ status: 401,
31
+ url: 'https://jmap.example.com/session',
32
+ });
33
+ const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
34
+ expect(result).toBe('https://jmap.example.com/session');
35
+ });
36
+ it('follows redirects and returns final URL', async () => {
37
+ mockFetch.mockResolvedValue({
38
+ status: 200,
39
+ url: 'https://jmap.example.com/api/session', // Different from requested URL
40
+ });
41
+ const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
42
+ // Should return the response.url (final URL after redirects)
43
+ expect(result).toBe('https://jmap.example.com/api/session');
44
+ });
45
+ it('returns null on 404 response (no JMAP)', async () => {
46
+ mockFetch.mockResolvedValue({
47
+ status: 404,
48
+ url: 'https://example.com/.well-known/jmap',
49
+ });
50
+ const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
51
+ expect(result).toBeNull();
52
+ });
53
+ it('returns null on network error', async () => {
54
+ mockFetch.mockRejectedValue(new Error('Network unreachable'));
55
+ const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
56
+ expect(result).toBeNull();
57
+ });
58
+ it('returns null on timeout', async () => {
59
+ // Mock a fetch that respects AbortSignal and rejects when aborted
60
+ mockFetch.mockImplementation((_url, options) => new Promise((_resolve, reject) => {
61
+ const signal = options?.signal;
62
+ if (signal) {
63
+ signal.addEventListener('abort', () => {
64
+ const error = new Error('The operation was aborted');
65
+ error.name = 'AbortError';
66
+ reject(error);
67
+ });
68
+ }
69
+ // Never resolves naturally - will be aborted by timeout
70
+ }));
71
+ const result = await verifyJmapUrl('https://slow.example.com/.well-known/jmap', 100);
72
+ expect(result).toBeNull();
73
+ });
74
+ it('returns null on 500 server error', async () => {
75
+ mockFetch.mockResolvedValue({
76
+ status: 500,
77
+ url: 'https://example.com/.well-known/jmap',
78
+ });
79
+ const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
80
+ expect(result).toBeNull();
81
+ });
82
+ });
83
+ describe('fetchWellKnownJmap', () => {
84
+ beforeEach(() => {
85
+ vi.clearAllMocks();
86
+ });
87
+ afterEach(() => {
88
+ vi.restoreAllMocks();
89
+ });
90
+ it('constructs HTTPS URL and returns session URL', async () => {
91
+ mockFetch.mockResolvedValue({
92
+ status: 200,
93
+ url: 'https://jmap.example.com/session',
94
+ });
95
+ const result = await fetchWellKnownJmap('example.com');
96
+ expect(result).toBe('https://jmap.example.com/session');
97
+ expect(mockFetch).toHaveBeenCalledWith('https://example.com/.well-known/jmap', {
98
+ redirect: 'follow',
99
+ signal: expect.any(AbortSignal),
100
+ });
101
+ });
102
+ it('returns null when well-known endpoint not found', async () => {
103
+ mockFetch.mockResolvedValue({
104
+ status: 404,
105
+ url: 'https://example.com/.well-known/jmap',
106
+ });
107
+ const result = await fetchWellKnownJmap('example.com');
108
+ expect(result).toBeNull();
109
+ });
110
+ it('uses HTTPS only (security requirement)', async () => {
111
+ mockFetch.mockResolvedValue({
112
+ status: 200,
113
+ url: 'https://jmap.example.com/session',
114
+ });
115
+ await fetchWellKnownJmap('example.com');
116
+ const calledUrl = mockFetch.mock.calls[0][0];
117
+ expect(calledUrl).toMatch(/^https:\/\//);
118
+ });
119
+ });
120
+ //# sourceMappingURL=well-known.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"well-known.test.js","sourceRoot":"","sources":["../../src/discovery/well-known.test.ts"],"names":[],"mappings":"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"}
@@ -6,16 +6,18 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
6
  import { type Config } from '../config/schema.js';
7
7
  import { type Logger } from '../config/logger.js';
8
8
  import { JMAPClient } from '../jmap/client.js';
9
+ import { type SignatureContent } from '../signature/index.js';
9
10
  /**
10
11
  * Create MCP server instance with JMAP client.
11
12
  * @param config Validated configuration
12
13
  * @param logger Pino logger (stderr only)
13
- * @returns Object with server and jmapClient
14
+ * @returns Object with server, jmapClient, and signatureContent
14
15
  */
15
- export declare function createMCPServer(config: Config, logger: Logger): {
16
+ export declare function createMCPServer(config: Config, logger: Logger): Promise<{
16
17
  server: McpServer;
17
18
  jmapClient: JMAPClient;
18
- };
19
+ signatureContent?: SignatureContent;
20
+ }>;
19
21
  /**
20
22
  * Start the MCP server with JMAP validation.
21
23
  * Validates JMAP connection before accepting MCP requests.
@@ -9,6 +9,7 @@ import { createLogger } from '../config/logger.js';
9
9
  import { JMAPClient } from '../jmap/client.js';
10
10
  import { formatStartupError } from '../errors.js';
11
11
  import { registerAllTools } from './tools/index.js';
12
+ import { loadSignature } from '../signature/index.js';
12
13
  /** Server version (matches package.json) */
13
14
  const SERVER_VERSION = '0.1.0';
14
15
  /** Server name for MCP identification */
@@ -17,15 +18,17 @@ const SERVER_NAME = 'mcp-twake-mail';
17
18
  * Create MCP server instance with JMAP client.
18
19
  * @param config Validated configuration
19
20
  * @param logger Pino logger (stderr only)
20
- * @returns Object with server and jmapClient
21
+ * @returns Object with server, jmapClient, and signatureContent
21
22
  */
22
- export function createMCPServer(config, logger) {
23
+ export async function createMCPServer(config, logger) {
23
24
  const server = new McpServer({
24
25
  name: SERVER_NAME,
25
26
  version: SERVER_VERSION,
26
27
  });
27
28
  const jmapClient = new JMAPClient(config, logger);
28
- return { server, jmapClient };
29
+ // Load signature if configured
30
+ const signatureContent = await loadSignature(config.JMAP_SIGNATURE_PATH, logger);
31
+ return { server, jmapClient, signatureContent };
29
32
  }
30
33
  /**
31
34
  * Start the MCP server with JMAP validation.
@@ -43,12 +46,15 @@ export async function startServer() {
43
46
  logger = createLogger(config.LOG_LEVEL);
44
47
  logger.info({ version: SERVER_VERSION }, 'Starting mcp-twake-mail server');
45
48
  // Step 3: Create MCP server and JMAP client
46
- const { server, jmapClient } = createMCPServer(config, logger);
49
+ const { server, jmapClient, signatureContent } = await createMCPServer(config, logger);
47
50
  // Step 4: Validate JMAP connection BEFORE accepting MCP requests
48
51
  const session = await jmapClient.fetchSession();
49
52
  logger.info({ accountId: session.accountId }, 'JMAP connection validated');
50
53
  // Step 5: Register all MCP tools
51
- registerAllTools(server, jmapClient, logger);
54
+ registerAllTools(server, jmapClient, logger, {
55
+ signatureContent,
56
+ defaultFrom: config.JMAP_DEFAULT_FROM,
57
+ });
52
58
  // Step 6: Connect MCP server via stdio transport
53
59
  const transport = new StdioServerTransport();
54
60
  await server.connect(transport);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAe,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,4CAA4C;AAC5C,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,yCAAyC;AACzC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAErC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,MAAc;IAEd,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,UAA8B,CAAC;IACnC,IAAI,MAA0B,CAAC;IAE/B,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAErC,oEAAoE;QACpE,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,gCAAgC,CAAC,CAAC;QAE3E,4CAA4C;QAC5C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE/D,iEAAiE;QACjE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,2BAA2B,CAAC,CAAC;QAE3E,iCAAiC;QACjC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE7C,iDAAiD;QACjD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wCAAwC;QACxC,MAAM,YAAY,GAAG,kBAAkB,CACrC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,UAAU,CACX,CAAC;QAEF,2DAA2D;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.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
- bodyValues.text = { value: body };
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
- bodyValues.html = { value: htmlBody };
132
- }
133
- // Step 3: Build email object
157
+ // Inject signature into HTML body
158
+ const finalHtml = signatureContent
159
+ ? appendSignature(htmlBody, signatureContent.html, true)
160
+ : htmlBody;
161
+ bodyValues.html = { value: finalHtml };
162
+ }
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: identity.name, email: identity.email }],
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
- bodyValues.text = { value: body };
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
- bodyValues.html = { value: htmlBody };
496
- }
497
- // Step 6: Build email object
533
+ // Inject signature into HTML body
534
+ const finalHtml = signatureContent
535
+ ? appendSignature(htmlBody, signatureContent.html, true)
536
+ : htmlBody;
537
+ bodyValues.html = { value: finalHtml };
538
+ }
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: identity.name, email: identity.email }],
545
+ from: [{ name: senderName, email: senderEmail }],
501
546
  to: toAddresses,
502
547
  subject: replySubject,
503
548
  inReplyTo,
@@ -1 +1 @@
1
- {"version":3,"file":"email-sending.js","sourceRoot":"","sources":["../../../src/mcp/tools/email-sending.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB;;GAEG;AACH,MAAM,sBAAsB,GAAoB;IAC9C,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,gBAAgB,GAAG;IACvB,2BAA2B;IAC3B,2BAA2B;IAC3B,iCAAiC;CAClC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAiB,EACjB,UAAsB,EACtB,MAAc;IAEd,uDAAuD;IACvD,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,0EAA0E;QAC5E,WAAW,EAAE;YACX,EAAE,EAAE,CAAC;iBACF,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;iBACzB,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,mDAAmD,CAAC;YAChE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACzE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC3E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC7D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SAC5D;QACD,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjD,MAAM,CAAC,KAAK,CACV,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,EAClE,mBAAmB,CACpB,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;YAExC,uDAAuD;YACvD,6FAA6F;YAC7F,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,OAAO,CAC5C;gBACE,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC;gBACjE;oBACE,aAAa;oBACb,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;oBAC5D,cAAc;iBACf;aACF,EACD,gBAAgB,CACjB,CAAC;YAEF,0BAA0B;YAC1B,MAAM,cAAc,GAAG,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,wBAAwB,CAAC,CAAC;gBACxE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,6DAA6D;yBACpE;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAI,cAAc,CAAC,IAA6B,CAAC,IAAI,CAAC;YACtE,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3C,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;gBAClD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,4DAA4D;yBACnE;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAE/B,sDAAsD;YACtD,MAAM,aAAa,GAAG,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;gBACxE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,6CAA6C;yBACpD;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAI,aAAa,CAAC,IAA6D,CAAC,IAAI,CAAC;YACpG,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAC/D,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAEnE,MAAM,aAAa,GAAG,WAAW,EAAE,EAAE,CAAC;YAEtC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;gBAC5C,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,6CAA6C;yBACpD;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,aAAa,CAAC,EAAE,CAAC;YAEzC,kEAAkE;YAClE,4EAA4E;YAC5E,IAAI,QAA6D,CAAC;YAClE,IAAI,aAAkE,CAAC;YACvE,MAAM,UAAU,GAAsC,EAAE,CAAC;YAEzD,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;gBACpD,UAAU,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACpC,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,aAAa,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACxD,UAAU,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACxC,CAAC;YAED,6BAA6B;YAC7B,MAAM,WAAW,GAA4B;gBAC3C,UAAU,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE;gBACvC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACtD,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClC,OAAO;gBACP,UAAU;aACX,CAAC;YAEF,4EAA4E;YAC5E,IAAI,QAAQ,EAAE,CAAC;gBACb,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAClC,CAAC;YACD,IAAI,aAAa,EAAE,CAAC;gBAClB,WAAW,CAAC,QAAQ,GAAG,aAAa,CAAC;YACvC,CAAC;YAED,8BAA8B;YAC9B,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,WAAW,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;YAED,mEAAmE;YACnE,MAAM,eAAe,GAA4B;gBAC/C,iBAAiB,EAAE,IAAI;aACxB,CAAC;YAEF,IAAI,aAAa,EAAE,CAAC;gBAClB,eAAe,CAAC,cAAc,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC;gBACxD,eAAe,CAAC,cAAc,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;YACxD,CAAC;YAED,kDAAkD;YAClD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,OAAO,CAC3C;gBACE;oBACE,WAAW;oBACX;wBACE,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;qBAC/B;oBACD,aAAa;iBACd;gBACD;oBACE,qBAAqB;oBACrB;wBACE,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,MAAM,EAAE;4BACN,UAAU,EAAE;gCACV,UAAU,EAAE,QAAQ,CAAC,EAAE;gCACvB,OAAO,EAAE,QAAQ;6BAClB;yBACF;wBACD,oBAAoB,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE;qBACzD;oBACD,aAAa;iBACd;aACF,EACD,gBAAgB,CACjB,CAAC;YAEF,mCAAmC;YACnC,MAAM,WAAW,GAAG,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;gBACtE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,2BAA2B,WAAW,CAAC,KAAK,EAAE,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,IAAI,eAAe,EAAE;yBAChH;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAmC,CAAC;YACzE,IAAI,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC;gBAChD,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,sBAAsB,CAAC,CAAC;gBAChD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,2BAA2B,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE;yBAC3E;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;YACrD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBACjD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,sDAAsD;yBAC7D;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,mCAAmC,CAAC,CAAC;gBACrF,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yBAAyB,gBAAgB,CAAC,KAAK,EAAE,WAAW,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,IAAI,eAAe,EAAE;yBACxH;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,IAA6C,CAAC;YAC7F,IAAI,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC1D,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,gCAAgC,CAAC,CAAC;gBAC1D,mDAAmD;gBACnD,IAAI,YAAY,GAAG,yBAAyB,KAAK,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACnC,YAAY,GAAG,yEAAyE,CAAC;gBAC3F,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBAC5C,YAAY,GAAG,kEAAkE,CAAC;gBACpF,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBAC9C,YAAY,GAAG,sDAAsD,CAAC;gBACxE,CAAC;qBAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBAC7B,YAAY,GAAG,yBAAyB,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9E,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,YAAY;yBACnB;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC;YACpE,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,mCAAmC,CAAC,CAAC;gBACtD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yDAAyD;yBAChE;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,KAAK,CACV,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAChE,oBAAoB,CACrB,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,YAAY,CAAC,EAAE;4BACxB,YAAY,EAAE,iBAAiB,CAAC,EAAE;yBACnC,CAAC;qBACH;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;YACnD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACvF;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,4EAA4E;IAC5E,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,4IAA4I;QAC9I,WAAW,EAAE;YACX,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACxE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC3D,QAAQ,EAAE,CAAC;iBACR,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,2CAA2C,CAAC;SACzD;QACD,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtD,MAAM,CAAC,KAAK,CACV,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EACvE,oBAAoB,CACrB,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;YAExC,wEAAwE;YACxE,6FAA6F;YAC7F,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,OAAO,CAC5C;gBACE,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC;gBACjE;oBACE,aAAa;oBACb,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;oBAC5D,cAAc;iBACf;gBACD;oBACE,WAAW;oBACX;wBACE,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,GAAG,EAAE,CAAC,eAAe,CAAC;wBACtB,UAAU,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC;qBAClF;oBACD,aAAa;iBACd;aACF,EACD,gBAAgB,CACjB,CAAC;YAEF,0BAA0B;YAC1B,MAAM,cAAc,GAAG,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,wBAAwB,CAAC,CAAC;gBACxE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,6DAA6D;yBACpE;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAI,cAAc,CAAC,IAA6B,CAAC,IAAI,CAAC;YACtE,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3C,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;gBAClD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,4DAA4D;yBACnE;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAE/B,sDAAsD;YACtD,MAAM,aAAa,GAAG,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;gBACxE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,6CAA6C;yBACpD;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAI,aAAa,CAAC,IAA6D,CAAC,IAAI,CAAC;YACpG,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAC/D,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAEnE,MAAM,aAAa,GAAG,WAAW,EAAE,EAAE,CAAC;YAEtC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;gBAC5C,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,6CAA6C;yBACpD;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,aAAa,CAAC,EAAE,CAAC;YAEzC,gCAAgC;YAChC,MAAM,cAAc,GAAG,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBAC9E,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,mCAAmC,cAAc,CAAC,KAAK,EAAE,WAAW,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,IAAI,eAAe,EAAE;yBAC9H;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAChB,cAAc,CAAC,IAWhB,CAAC,IAAI,CAAC;YAEP,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,EAAE,0BAA0B,CAAC,CAAC;gBAC9D,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,6BAA6B,eAAe,EAAE;yBACrD;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAEjC,wDAAwD;YACxD,MAAM,SAAS,GAAa,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;YACrD,MAAM,UAAU,GAAa;gBAC3B,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC9B,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;aAC9B,CAAC;YAEF,wCAAwC;YACxC,IAAI,YAAoB,CAAC;YACzB,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;YAC/C,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpD,YAAY,GAAG,eAAe,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,OAAO,eAAe,EAAE,CAAC;YAC1C,CAAC;YAED,2BAA2B;YAC3B,0DAA0D;YAC1D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,sCAAsC,CAAC,CAAC;gBACzD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,mDAAmD;yBAC1D;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAA4C,CAAC,gBAAgB,CAAC,CAAC;YAChF,MAAM,WAAW,GAA4C,EAAE,CAAC;YAEhE,IAAI,QAAQ,EAAE,CAAC;gBACb,kEAAkE;gBAClE,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC/C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;oBACrC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;wBAC3C,0CAA0C;wBAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;4BACtE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACzB,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,+CAA+C;gBAC/C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;oBACrC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;wBAC3C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,kEAAkE;YAClE,IAAI,QAA6D,CAAC;YAClE,IAAI,aAAkE,CAAC;YACvE,MAAM,UAAU,GAAsC,EAAE,CAAC;YAEzD,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;gBACpD,UAAU,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACpC,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,aAAa,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACxD,UAAU,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACxC,CAAC;YAED,6BAA6B;YAC7B,MAAM,WAAW,GAA4B;gBAC3C,UAAU,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE;gBACvC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACtD,EAAE,EAAE,WAAW;gBACf,OAAO,EAAE,YAAY;gBACrB,SAAS;gBACT,UAAU;gBACV,UAAU;aACX,CAAC;YAEF,4EAA4E;YAC5E,IAAI,QAAQ,EAAE,CAAC;gBACb,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAClC,CAAC;YACD,IAAI,aAAa,EAAE,CAAC;gBAClB,WAAW,CAAC,QAAQ,GAAG,aAAa,CAAC;YACvC,CAAC;YAED,sBAAsB;YACtB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,WAAW,CAAC,EAAE,GAAG,WAAW,CAAC;YAC/B,CAAC;YAED,mEAAmE;YACnE,MAAM,eAAe,GAA4B;gBAC/C,iBAAiB,EAAE,IAAI;aACxB,CAAC;YAEF,IAAI,aAAa,EAAE,CAAC;gBAClB,eAAe,CAAC,cAAc,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC;gBACxD,eAAe,CAAC,cAAc,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;YACxD,CAAC;YAED,kDAAkD;YAClD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,OAAO,CAC3C;gBACE;oBACE,WAAW;oBACX;wBACE,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;qBAC/B;oBACD,aAAa;iBACd;gBACD;oBACE,qBAAqB;oBACrB;wBACE,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,MAAM,EAAE;4BACN,UAAU,EAAE;gCACV,UAAU,EAAE,QAAQ,CAAC,EAAE;gCACvB,OAAO,EAAE,QAAQ;6BAClB;yBACF;wBACD,oBAAoB,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE;qBACzD;oBACD,aAAa;iBACd;aACF,EACD,gBAAgB,CACjB,CAAC;YAEF,mCAAmC;YACnC,MAAM,WAAW,GAAG,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,mCAAmC,CAAC,CAAC;gBAChF,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,2BAA2B,WAAW,CAAC,KAAK,EAAE,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,IAAI,eAAe,EAAE;yBAChH;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAmC,CAAC;YACzE,IAAI,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC;gBAChD,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,gCAAgC,CAAC,CAAC;gBAC1D,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,2BAA2B,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE;yBAC3E;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;YACrD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBACjD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,sDAAsD;yBAC7D;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,8CAA8C;YAC9C,MAAM,gBAAgB,GAAG,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,6CAA6C,CAAC,CAAC;gBAC/F,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yBAAyB,gBAAgB,CAAC,KAAK,EAAE,WAAW,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,IAAI,eAAe,EAAE;yBACxH;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,IAA6C,CAAC;YAC7F,IAAI,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC1D,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,0CAA0C,CAAC,CAAC;gBACpE,IAAI,YAAY,GAAG,yBAAyB,KAAK,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACnC,YAAY,GAAG,yEAAyE,CAAC;gBAC3F,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBAC5C,YAAY,GAAG,kEAAkE,CAAC;gBACpF,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBAC9C,YAAY,GAAG,sDAAsD,CAAC;gBACxE,CAAC;qBAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBAC7B,YAAY,GAAG,yBAAyB,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9E,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,YAAY;yBACnB;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC;YACpE,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,6CAA6C,CAAC,CAAC;gBAChE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yDAAyD;yBAChE;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,KAAK,CACV;gBACE,OAAO,EAAE,YAAY,CAAC,EAAE;gBACxB,YAAY,EAAE,iBAAiB,CAAC,EAAE;gBAClC,QAAQ,EAAE,YAAY,CAAC,QAAQ;gBAC/B,SAAS;gBACT,UAAU;aACX,EACD,qBAAqB,CACtB,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,YAAY,CAAC,EAAE;4BACxB,YAAY,EAAE,iBAAiB,CAAC,EAAE;4BAClC,QAAQ,EAAE,YAAY,CAAC,QAAQ;yBAChC,CAAC;qBACH;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,0BAA0B,CAAC,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACvF;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"email-sending.js","sourceRoot":"","sources":["../../../src/mcp/tools/email-sending.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,19 @@
5
5
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
6
  import type { JMAPClient } from '../../jmap/client.js';
7
7
  import type { Logger } from '../../config/logger.js';
8
+ import type { SignatureContent } from '../../signature/index.js';
9
+ /**
10
+ * Options for email sending tools.
11
+ */
12
+ export interface EmailSendingOptions {
13
+ signatureContent?: SignatureContent;
14
+ defaultFrom?: string;
15
+ }
8
16
  /**
9
17
  * Register all MCP tools with the server.
10
18
  * @param server MCP server instance
11
19
  * @param jmapClient JMAP client for API calls
12
20
  * @param logger Pino logger
21
+ * @param emailSendingOptions Optional signature and defaultFrom for email sending
13
22
  */
14
- export declare function registerAllTools(server: McpServer, jmapClient: JMAPClient, logger: Logger): void;
23
+ export declare function registerAllTools(server: McpServer, jmapClient: JMAPClient, logger: Logger, emailSendingOptions?: EmailSendingOptions): void;
@@ -9,8 +9,9 @@ import { registerThreadTools } from './thread.js';
9
9
  * @param server MCP server instance
10
10
  * @param jmapClient JMAP client for API calls
11
11
  * @param logger Pino logger
12
+ * @param emailSendingOptions Optional signature and defaultFrom for email sending
12
13
  */
13
- export function registerAllTools(server, jmapClient, logger) {
14
+ export function registerAllTools(server, jmapClient, logger, emailSendingOptions) {
14
15
  logger.debug('Registering MCP tools...');
15
16
  // Register email tools (get_email, search_emails, get_email_labels)
16
17
  registerEmailTools(server, jmapClient, logger);
@@ -18,8 +19,8 @@ export function registerAllTools(server, jmapClient, logger) {
18
19
  registerMailboxTools(server, jmapClient, logger);
19
20
  // Register email operation tools (mark_as_read, mark_as_unread, delete_email)
20
21
  registerEmailOperationTools(server, jmapClient, logger);
21
- // Register email sending tools (send_email)
22
- registerEmailSendingTools(server, jmapClient, logger);
22
+ // Register email sending tools (send_email, reply_email) with signature and defaultFrom
23
+ registerEmailSendingTools(server, jmapClient, logger, emailSendingOptions);
23
24
  // Register attachment tools (get_attachments)
24
25
  registerAttachmentTools(server, jmapClient, logger);
25
26
  // Register thread tools (get_thread, get_thread_emails)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,UAAsB,EACtB,MAAc;IAEd,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEzC,oEAAoE;IACpE,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAE/C,uDAAuD;IACvD,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEjD,8EAA8E;IAC9E,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAExD,4CAA4C;IAC5C,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEtD,8CAA8C;IAC9C,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEpD,wDAAwD;IACxD,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEhD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAUlD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,UAAsB,EACtB,MAAc,EACd,mBAAyC;IAEzC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEzC,oEAAoE;IACpE,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAE/C,uDAAuD;IACvD,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEjD,8EAA8E;IAC9E,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAExD,wFAAwF;IACxF,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAE3E,8CAA8C;IAC9C,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEpD,wDAAwD;IACxD,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEhD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function markdownToHtml(markdown: string): string;
2
+ export declare function markdownToPlainText(markdown: string): string;
@@ -0,0 +1,23 @@
1
+ import { marked } from 'marked';
2
+ // Configure marked for email-safe output (module-level, runs once)
3
+ marked.setOptions({
4
+ gfm: false, // Disable GitHub Flavored Markdown
5
+ breaks: true, // Convert \n to <br> for email readability
6
+ });
7
+ export function markdownToHtml(markdown) {
8
+ return marked.parse(markdown, { async: false });
9
+ }
10
+ export function markdownToPlainText(markdown) {
11
+ // Strip markdown formatting for plain text emails
12
+ return markdown
13
+ .replace(/^#{1,6}\s+/gm, '') // Remove heading markers
14
+ .replace(/\*\*(.+?)\*\*/g, '$1') // Remove bold **text**
15
+ .replace(/\*(.+?)\*/g, '$1') // Remove italic *text*
16
+ .replace(/__(.+?)__/g, '$1') // Remove bold __text__
17
+ .replace(/_(.+?)_/g, '$1') // Remove italic _text_
18
+ .replace(/\[(.+?)\]\((.+?)\)/g, '$1 ($2)') // Convert [text](url) to text (url)
19
+ .replace(/`(.+?)`/g, '$1') // Remove inline code backticks
20
+ .replace(/^[*\-+]\s+/gm, '• ') // Convert list markers to bullets
21
+ .trim();
22
+ }
23
+ //# sourceMappingURL=converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../src/signature/converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,mEAAmE;AACnE,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,KAAK,EAAQ,mCAAmC;IACrD,MAAM,EAAE,IAAI,EAAM,2CAA2C;CAC9D,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAW,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,kDAAkD;IAClD,OAAO,QAAQ;SACZ,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAY,yBAAyB;SAChE,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAQ,uBAAuB;SAC9D,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAY,uBAAuB;SAC9D,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAY,uBAAuB;SAC9D,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAc,uBAAuB;SAC9D,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,oCAAoC;SAC9E,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAc,+BAA+B;SACtE,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAQ,kCAAkC;SACvE,IAAI,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1 @@
1
+ export {};