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
package/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # mcp-twake-mail
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/mcp-twake-mail)](https://www.npmjs.com/package/mcp-twake-mail)
3
4
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](LICENSE)
4
5
  [![Node.js >= 20](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org/)
5
6
 
@@ -16,6 +17,8 @@ mcp-twake-mail is a Model Context Protocol (MCP) server that connects any MCP-co
16
17
  - Works with any MCP-compatible AI assistant
17
18
  - Full control over email data — read, write, send, and organize
18
19
  - Multiple authentication methods: Basic, Bearer token, or OIDC
20
+ - **Auto-discovery** — configure with just your email address
21
+ - **Email signatures** — automatic Markdown signature injection
19
22
  - Secure HTTPS-only connections
20
23
 
21
24
  ## Features
@@ -47,6 +50,9 @@ mcp-twake-mail is a Model Context Protocol (MCP) server that connects any MCP-co
47
50
  - `download_attachment` - Download attachment content (auto-saves large files to disk)
48
51
 
49
52
  **Advanced Features:**
53
+ - **Auto-discovery** — Configure with just your email address (DNS SRV + .well-known/jmap)
54
+ - **Email signatures** — Markdown signature files automatically appended to emails
55
+ - **Default sender identity** — Configure default "from" address
50
56
  - OIDC authentication with PKCE (S256) for enterprise SSO
51
57
  - Automatic token refresh for OIDC sessions
52
58
  - Thread-based email grouping
@@ -83,54 +89,58 @@ npx mcp-twake-mail setup
83
89
  ```
84
90
 
85
91
  The wizard will:
86
- 1. Ask for your JMAP server session URL
92
+ 1. **Auto-discover** your JMAP server from your email address (or enter manually)
87
93
  2. Ask for your authentication method (Basic, Bearer, or OIDC)
88
94
  3. Collect the required credentials
89
- 4. Test the connection to your JMAP server
90
- 5. Generate and optionally write the configuration to your Claude Desktop config file
95
+ 4. **Configure default sender** and optional email signature
96
+ 5. Test the connection to your JMAP server
97
+ 6. Generate and optionally write the configuration to your Claude Desktop config file
98
+
99
+ ### Auto-Discovery Mode (New!)
100
+
101
+ The setup wizard now supports **auto-discovery** — just provide your email address and the system will automatically find your JMAP server:
91
102
 
92
- Example session:
93
103
  ```
94
104
  === MCP Twake Mail Setup Wizard ===
95
105
 
96
- JMAP Session URL: https://jmap.example.com/jmap/session
106
+ Setup mode:
107
+ 1. Auto-discover from email address (Recommended)
108
+ 2. Manual configuration
109
+ Choose [1-2]: 1
97
110
 
98
- Authentication method:
99
- 1. Basic (username/password)
100
- 2. Bearer token (JWT)
101
- 3. OIDC (OpenID Connect)
102
- Choose [1-3]: 1
111
+ Email address: user@example.com
103
112
 
104
- Username: user@example.com
105
- Password: ********
113
+ Discovering JMAP server...
114
+ ✓ Found JMAP server: https://jmap.example.com/jmap/session
115
+ ✓ Found OIDC issuer: https://sso.example.com
106
116
 
107
- Testing connection...
108
- Connected! Account ID: abc123
117
+ Use discovered settings? [Y/n]: y
118
+ ```
109
119
 
110
- Server name for Claude config [twake-mail]: twake-mail
120
+ The auto-discovery uses:
121
+ - **DNS SRV** lookup: `_jmap._tcp.{domain}`
122
+ - **.well-known/jmap** endpoint
123
+ - **OAuth metadata** discovery for OIDC configuration
111
124
 
112
- --- Generated Claude Desktop Config ---
113
- {
114
- "mcpServers": {
115
- "twake-mail": {
116
- "command": "npx",
117
- "args": ["-y", "mcp-twake-mail"],
118
- "env": {
119
- "JMAP_SESSION_URL": "https://jmap.example.com/jmap/session",
120
- "JMAP_AUTH_METHOD": "basic",
121
- "JMAP_USERNAME": "user@example.com",
122
- "JMAP_PASSWORD": "********"
123
- }
124
- }
125
- }
126
- }
127
- ---------------------------------------
125
+ See [docs/auto-discovery.md](docs/auto-discovery.md) for details.
126
+
127
+ ### Email Signature Support (New!)
128
128
 
129
- Write to Claude Desktop config? [Y/n]: y
129
+ Configure an optional Markdown signature file that will be automatically appended to all emails:
130
130
 
131
- Config written successfully!
132
- Restart Claude Desktop to load the new configuration.
133
131
  ```
132
+ Configure email signature file? [y/N]: y
133
+ Path to signature file (Markdown format): ~/.mcp-twake-mail/signature.md
134
+ ```
135
+
136
+ Example signature file (`~/.mcp-twake-mail/signature.md`):
137
+ ```markdown
138
+ **John Doe**
139
+ Software Engineer
140
+ [john.doe@example.com](mailto:john.doe@example.com)
141
+ ```
142
+
143
+ The signature is automatically converted to HTML for rich emails and plain text for simple emails.
134
144
 
135
145
  ### CLI Commands
136
146
 
@@ -173,9 +183,18 @@ For enterprise SSO with OpenID Connect (PKCE S256):
173
183
  | `JMAP_OIDC_ISSUER` | Yes | OIDC provider issuer URL | `https://sso.example.com` |
174
184
  | `JMAP_OIDC_CLIENT_ID` | Yes | OIDC client ID | `my-client-id` |
175
185
  | `JMAP_OIDC_SCOPE` | No | OIDC scopes | `openid profile email offline_access` |
176
- | `JMAP_OIDC_REDIRECT_URI` | No | Callback URI for OIDC flow | `http://localhost:5678/callback` |
186
+ | `JMAP_OIDC_REDIRECT_URI` | No | Callback URI for OIDC flow | `http://localhost:3000/callback` |
177
187
 
178
- #### Optional
188
+ See [docs/oidc-configuration.md](docs/oidc-configuration.md) for detailed OIDC setup instructions.
189
+
190
+ #### Identity & Signature (Optional)
191
+
192
+ | Variable | Required | Description | Example |
193
+ |----------|----------|-------------|---------|
194
+ | `JMAP_DEFAULT_FROM` | No | Default sender email address | `user@example.com` |
195
+ | `JMAP_SIGNATURE_PATH` | No | Path to Markdown signature file | `~/.mcp-twake-mail/signature.md` |
196
+
197
+ #### Other Options
179
198
 
180
199
  | Variable | Description | Default |
181
200
  |----------|-------------|---------|
@@ -196,14 +215,16 @@ Add the following to your Claude Desktop configuration file:
196
215
  ```json
197
216
  {
198
217
  "mcpServers": {
199
- "twake-mail": {
200
- "command": "node",
201
- "args": ["/path/to/mcp-twake-mail/build/index.js"],
218
+ "mcp-twake-mail": {
219
+ "command": "npx",
220
+ "args": ["-y", "mcp-twake-mail"],
202
221
  "env": {
203
222
  "JMAP_SESSION_URL": "https://jmap.example.com/jmap/session",
204
223
  "JMAP_AUTH_METHOD": "basic",
205
224
  "JMAP_USERNAME": "user@example.com",
206
- "JMAP_PASSWORD": "your-password"
225
+ "JMAP_PASSWORD": "your-password",
226
+ "JMAP_DEFAULT_FROM": "user@example.com",
227
+ "JMAP_SIGNATURE_PATH": "~/.mcp-twake-mail/signature.md"
207
228
  }
208
229
  }
209
230
  }
@@ -215,16 +236,17 @@ Add the following to your Claude Desktop configuration file:
215
236
  ```json
216
237
  {
217
238
  "mcpServers": {
218
- "twake-mail": {
219
- "command": "node",
220
- "args": ["/path/to/mcp-twake-mail/build/index.js"],
239
+ "mcp-twake-mail": {
240
+ "command": "npx",
241
+ "args": ["-y", "mcp-twake-mail"],
221
242
  "env": {
222
243
  "JMAP_SESSION_URL": "https://jmap.example.com/jmap/session",
223
244
  "JMAP_AUTH_METHOD": "oidc",
224
245
  "JMAP_OIDC_ISSUER": "https://sso.example.com",
225
246
  "JMAP_OIDC_CLIENT_ID": "my-client-id",
226
247
  "JMAP_OIDC_SCOPE": "openid profile email offline_access",
227
- "JMAP_OIDC_REDIRECT_URI": "http://localhost:5678/callback"
248
+ "JMAP_DEFAULT_FROM": "user@example.com",
249
+ "JMAP_SIGNATURE_PATH": "~/.mcp-twake-mail/signature.md"
228
250
  }
229
251
  }
230
252
  }
@@ -259,6 +281,11 @@ Once configured, you can ask Claude natural language questions about your email:
259
281
  - "What attachments are in this email?"
260
282
  - "Download the PDF attachment"
261
283
 
284
+ ## Documentation
285
+
286
+ - [Auto-Discovery](docs/auto-discovery.md) — How JMAP and OIDC auto-discovery works
287
+ - [OIDC Configuration](docs/oidc-configuration.md) — Detailed OIDC/OAuth setup guide
288
+
262
289
  ## Available Tools
263
290
 
264
291
  | Tool Name | Description |
@@ -301,10 +328,12 @@ mcp-twake-mail is built with a layered architecture:
301
328
  2. **Logging Layer** - Pino logger configured for stderr output (prevents stdout contamination in MCP stdio transport)
302
329
  3. **Authentication Layer** - Multi-method auth support (Basic, Bearer, OIDC with PKCE)
303
330
  4. **Token Management** - Automatic token refresh for OIDC with secure token storage
304
- 5. **JMAP Client Layer** - Session management, request batching, blob download support
305
- 6. **Transformation Layer** - Email/Mailbox data transformation for AI-friendly output
306
- 7. **MCP Tool Layer** - 16 MCP tools exposing email functionality with tool annotations
307
- 8. **Entry Point** - MCP server initialization with stdio transport
331
+ 5. **Discovery Layer** - Auto-discovery via DNS SRV, .well-known/jmap, and OAuth metadata
332
+ 6. **JMAP Client Layer** - Session management, request batching, blob download support
333
+ 7. **Signature Layer** - Markdown-to-HTML conversion for email signatures
334
+ 8. **Transformation Layer** - Email/Mailbox data transformation for AI-friendly output
335
+ 9. **MCP Tool Layer** - 17 MCP tools exposing email functionality with tool annotations
336
+ 10. **Entry Point** - MCP server initialization with stdio transport
308
337
 
309
338
  **Key design decisions:**
310
339
  - ESM modules with `.js` import extensions (required by MCP SDK)
@@ -5,7 +5,7 @@
5
5
  import { homedir } from 'node:os';
6
6
  import { join } from 'node:path';
7
7
  import { readFile, writeFile, mkdir } from 'node:fs/promises';
8
- import { promptJmapUrl, promptAuthMethod, promptBasicAuth, promptBearerToken, promptOidcAuth, promptWriteConfig, promptServerName, } from '../prompts/setup-wizard.js';
8
+ import { promptJmapUrl, promptAuthMethod, promptBasicAuth, promptBearerToken, promptOidcAuth, promptWriteConfig, promptServerName, promptSetupMode, promptEmail, promptConfirmDiscovery, promptDefaultFrom, promptSignaturePath, } from '../prompts/setup-wizard.js';
9
9
  /**
10
10
  * Get Claude Desktop config file path based on platform.
11
11
  */
@@ -87,8 +87,39 @@ async function testConnection(env) {
87
87
  */
88
88
  export async function runSetup() {
89
89
  console.log('\n=== MCP Twake Mail Setup Wizard ===\n');
90
- // Step 1: JMAP URL
91
- const jmapUrl = await promptJmapUrl();
90
+ // Step 1: Choose setup mode
91
+ const mode = await promptSetupMode();
92
+ let jmapUrl;
93
+ const discoveredOidc = {};
94
+ if (mode === 'auto') {
95
+ // Auto-discovery flow
96
+ const email = await promptEmail();
97
+ console.log('\nDiscovering settings...');
98
+ try {
99
+ // Dynamic import to avoid loading discovery in non-auto mode
100
+ const { discoverFromEmail } = await import('../../discovery/index.js');
101
+ const result = await discoverFromEmail(email);
102
+ const confirmed = await promptConfirmDiscovery({
103
+ jmapUrl: result.jmap.sessionUrl,
104
+ oidcIssuer: result.oidc?.issuer,
105
+ });
106
+ jmapUrl = confirmed.jmapUrl;
107
+ if (confirmed.oidcIssuer) {
108
+ discoveredOidc.issuer = confirmed.oidcIssuer;
109
+ }
110
+ console.log(`\nUsing discovered settings for ${result.domain}\n`);
111
+ }
112
+ catch (error) {
113
+ console.error(`\nAuto-discovery failed: ${error instanceof Error ? error.message : String(error)}`);
114
+ console.log('Falling back to manual configuration...\n');
115
+ // Fall back to manual mode
116
+ jmapUrl = await promptJmapUrl();
117
+ }
118
+ }
119
+ else {
120
+ // Manual mode - existing flow
121
+ jmapUrl = await promptJmapUrl();
122
+ }
92
123
  // Step 2: Auth method
93
124
  const authMethod = await promptAuthMethod();
94
125
  // Step 3: Auth-specific prompts
@@ -105,13 +136,24 @@ export async function runSetup() {
105
136
  env.JMAP_BEARER_TOKEN = await promptBearerToken();
106
137
  }
107
138
  else if (authMethod === 'oidc') {
108
- const { issuer, clientId, scope, redirectUri } = await promptOidcAuth();
109
- env.JMAP_OIDC_ISSUER = issuer;
110
- env.JMAP_OIDC_CLIENT_ID = clientId;
111
- env.JMAP_OIDC_SCOPE = scope;
112
- env.JMAP_OIDC_REDIRECT_URI = redirectUri;
139
+ // Pre-fill discovered OIDC issuer if available
140
+ const oidcConfig = await promptOidcAuth(discoveredOidc.issuer);
141
+ env.JMAP_OIDC_ISSUER = oidcConfig.issuer;
142
+ env.JMAP_OIDC_CLIENT_ID = oidcConfig.clientId;
143
+ env.JMAP_OIDC_SCOPE = oidcConfig.scope;
144
+ env.JMAP_OIDC_REDIRECT_URI = oidcConfig.redirectUri;
145
+ }
146
+ // Step 4: Identity configuration (optional)
147
+ console.log('\n--- Identity Configuration ---');
148
+ const defaultFrom = await promptDefaultFrom();
149
+ if (defaultFrom) {
150
+ env.JMAP_DEFAULT_FROM = defaultFrom;
151
+ }
152
+ const signaturePath = await promptSignaturePath();
153
+ if (signaturePath) {
154
+ env.JMAP_SIGNATURE_PATH = signaturePath;
113
155
  }
114
- // Step 4: Test connection
156
+ // Step 5: Test connection
115
157
  console.log('\nTesting connection...');
116
158
  const testResult = await testConnection(env);
117
159
  if (!testResult.success) {
@@ -120,15 +162,15 @@ export async function runSetup() {
120
162
  process.exit(1);
121
163
  }
122
164
  console.log('\nConnection successful!\n');
123
- // Step 5: Server name for Claude config
165
+ // Step 6: Server name for Claude config
124
166
  const serverName = await promptServerName();
125
- // Step 6: Generate config
167
+ // Step 7: Generate config
126
168
  const config = generateClaudeConfig(serverName, env);
127
169
  const configJson = JSON.stringify(config, null, 2);
128
170
  console.log('\n--- Generated Claude Desktop Config ---');
129
171
  console.log(configJson);
130
172
  console.log('---------------------------------------\n');
131
- // Step 7: Optionally write to Claude Desktop config
173
+ // Step 8: Optionally write to Claude Desktop config
132
174
  const shouldWrite = await promptWriteConfig();
133
175
  if (shouldWrite) {
134
176
  const configPath = getClaudeConfigPath();
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,26 @@
1
1
  /** Auth method choices for the wizard */
2
2
  export type AuthMethod = 'oidc' | 'basic' | 'bearer';
3
+ /** Setup mode: auto-discover or manual configuration */
4
+ export type SetupMode = 'auto' | 'manual';
5
+ /**
6
+ * Prompt for setup mode: auto-discover or manual configuration.
7
+ */
8
+ export declare function promptSetupMode(): Promise<SetupMode>;
9
+ /**
10
+ * Prompt for email address for auto-discovery.
11
+ */
12
+ export declare function promptEmail(): Promise<string>;
13
+ /**
14
+ * Prompt to confirm or edit discovered settings.
15
+ */
16
+ export declare function promptConfirmDiscovery(settings: {
17
+ jmapUrl: string;
18
+ oidcIssuer?: string;
19
+ }): Promise<{
20
+ confirmed: boolean;
21
+ jmapUrl: string;
22
+ oidcIssuer?: string;
23
+ }>;
3
24
  /**
4
25
  * Prompt for JMAP session URL with validation.
5
26
  */
@@ -22,7 +43,7 @@ export declare function promptBearerToken(): Promise<string>;
22
43
  /**
23
44
  * Prompt for OIDC configuration.
24
45
  */
25
- export declare function promptOidcAuth(): Promise<{
46
+ export declare function promptOidcAuth(defaultIssuer?: string): Promise<{
26
47
  issuer: string;
27
48
  clientId: string;
28
49
  scope: string;
@@ -36,3 +57,14 @@ export declare function promptWriteConfig(): Promise<boolean>;
36
57
  * Prompt for custom server name in Claude config.
37
58
  */
38
59
  export declare function promptServerName(): Promise<string>;
60
+ /**
61
+ * Prompt for default sender email address.
62
+ * Returns undefined if user skips configuration.
63
+ */
64
+ export declare function promptDefaultFrom(): Promise<string | undefined>;
65
+ /**
66
+ * Prompt for signature file path.
67
+ * Validates file exists and is readable.
68
+ * Returns undefined if user skips configuration.
69
+ */
70
+ export declare function promptSignaturePath(): Promise<string | undefined>;
@@ -3,6 +3,88 @@
3
3
  * Uses @inquirer/prompts for modern, TypeScript-first prompts.
4
4
  */
5
5
  import { input, select, password, confirm } from '@inquirer/prompts';
6
+ import { homedir } from 'node:os';
7
+ import { access, constants } from 'node:fs/promises';
8
+ /**
9
+ * Prompt for setup mode: auto-discover or manual configuration.
10
+ */
11
+ export async function promptSetupMode() {
12
+ return select({
13
+ message: 'Setup mode:',
14
+ choices: [
15
+ { value: 'auto', name: 'Auto-discover from email address (recommended)' },
16
+ { value: 'manual', name: 'Manual configuration' },
17
+ ],
18
+ });
19
+ }
20
+ /**
21
+ * Prompt for email address for auto-discovery.
22
+ */
23
+ export async function promptEmail() {
24
+ return input({
25
+ message: 'Email address:',
26
+ validate: (value) => {
27
+ // Basic email validation
28
+ if (!value.includes('@') || !value.split('@')[1]?.includes('.')) {
29
+ return 'Please enter a valid email address';
30
+ }
31
+ return true;
32
+ },
33
+ });
34
+ }
35
+ /**
36
+ * Prompt to confirm or edit discovered settings.
37
+ */
38
+ export async function promptConfirmDiscovery(settings) {
39
+ console.log('\nDiscovered settings:');
40
+ console.log(` JMAP URL: ${settings.jmapUrl}`);
41
+ if (settings.oidcIssuer) {
42
+ console.log(` OIDC Issuer: ${settings.oidcIssuer}`);
43
+ }
44
+ else {
45
+ console.log(' OIDC Issuer: Not discovered (will need manual entry)');
46
+ }
47
+ console.log('');
48
+ const useDiscovered = await confirm({
49
+ message: 'Use these settings?',
50
+ default: true,
51
+ });
52
+ if (useDiscovered) {
53
+ return { confirmed: true, ...settings };
54
+ }
55
+ // Allow editing
56
+ const jmapUrl = await input({
57
+ message: 'JMAP Session URL:',
58
+ default: settings.jmapUrl,
59
+ validate: (value) => {
60
+ try {
61
+ new URL(value);
62
+ return true;
63
+ }
64
+ catch {
65
+ return 'Please enter a valid URL';
66
+ }
67
+ },
68
+ });
69
+ const oidcIssuer = settings.oidcIssuer
70
+ ? await input({
71
+ message: 'OIDC Issuer URL:',
72
+ default: settings.oidcIssuer,
73
+ validate: (value) => {
74
+ if (!value)
75
+ return true; // Optional
76
+ try {
77
+ new URL(value);
78
+ return true;
79
+ }
80
+ catch {
81
+ return 'Please enter a valid URL';
82
+ }
83
+ },
84
+ })
85
+ : undefined;
86
+ return { confirmed: true, jmapUrl, oidcIssuer };
87
+ }
6
88
  /**
7
89
  * Prompt for JMAP session URL with validation.
8
90
  */
@@ -61,10 +143,10 @@ export async function promptBearerToken() {
61
143
  /**
62
144
  * Prompt for OIDC configuration.
63
145
  */
64
- export async function promptOidcAuth() {
146
+ export async function promptOidcAuth(defaultIssuer) {
65
147
  const issuer = await input({
66
148
  message: 'OIDC Issuer URL:',
67
- default: 'https://sso.linagora.com',
149
+ default: defaultIssuer || 'https://sso.linagora.com',
68
150
  validate: (value) => {
69
151
  try {
70
152
  new URL(value);
@@ -118,4 +200,54 @@ export async function promptServerName() {
118
200
  validate: (value) => /^[a-z0-9-]+$/.test(value) || 'Use lowercase letters, numbers, and hyphens only',
119
201
  });
120
202
  }
203
+ /**
204
+ * Prompt for default sender email address.
205
+ * Returns undefined if user skips configuration.
206
+ */
207
+ export async function promptDefaultFrom() {
208
+ const shouldConfigure = await confirm({
209
+ message: 'Configure default sender email address?',
210
+ default: true,
211
+ });
212
+ if (!shouldConfigure)
213
+ return undefined;
214
+ return input({
215
+ message: 'Default "from" email address:',
216
+ validate: (value) => {
217
+ // Simple email regex - Zod will do full validation
218
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
219
+ return emailRegex.test(value) || 'Please enter a valid email address';
220
+ },
221
+ });
222
+ }
223
+ /**
224
+ * Prompt for signature file path.
225
+ * Validates file exists and is readable.
226
+ * Returns undefined if user skips configuration.
227
+ */
228
+ export async function promptSignaturePath() {
229
+ const shouldConfigure = await confirm({
230
+ message: 'Configure email signature file?',
231
+ default: false,
232
+ });
233
+ if (!shouldConfigure)
234
+ return undefined;
235
+ return input({
236
+ message: 'Path to signature file (Markdown format):',
237
+ default: '~/.mcp-twake-mail/signature.md',
238
+ validate: async (value) => {
239
+ if (!value)
240
+ return 'Signature path cannot be empty';
241
+ // Expand ~ to home directory for validation
242
+ const expandedPath = value.replace(/^~/, homedir());
243
+ try {
244
+ await access(expandedPath, constants.R_OK);
245
+ return true;
246
+ }
247
+ catch {
248
+ return `File not found or not readable: ${expandedPath}`;
249
+ }
250
+ },
251
+ });
252
+ }
121
253
  //# sourceMappingURL=setup-wizard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../../src/cli/prompts/setup-wizard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../../src/cli/prompts/setup-wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};