@diskd-ai/email-mcp 0.3.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/LICENSE +155 -0
- package/README.md +820 -0
- package/dist/cli/account-commands.d.ts +10 -0
- package/dist/cli/account-commands.d.ts.map +1 -0
- package/dist/cli/account-commands.js +703 -0
- package/dist/cli/account-commands.js.map +1 -0
- package/dist/cli/config-commands.d.ts +9 -0
- package/dist/cli/config-commands.d.ts.map +1 -0
- package/dist/cli/config-commands.js +156 -0
- package/dist/cli/config-commands.js.map +1 -0
- package/dist/cli/guard.d.ts +11 -0
- package/dist/cli/guard.d.ts.map +1 -0
- package/dist/cli/guard.js +18 -0
- package/dist/cli/guard.js.map +1 -0
- package/dist/cli/install-commands.d.ts +12 -0
- package/dist/cli/install-commands.d.ts.map +1 -0
- package/dist/cli/install-commands.js +320 -0
- package/dist/cli/install-commands.js.map +1 -0
- package/dist/cli/notify.d.ts +8 -0
- package/dist/cli/notify.d.ts.map +1 -0
- package/dist/cli/notify.js +143 -0
- package/dist/cli/notify.js.map +1 -0
- package/dist/cli/providers.d.ts +13 -0
- package/dist/cli/providers.d.ts.map +1 -0
- package/dist/cli/providers.js +180 -0
- package/dist/cli/providers.js.map +1 -0
- package/dist/cli/scheduler.d.ts +8 -0
- package/dist/cli/scheduler.d.ts.map +1 -0
- package/dist/cli/scheduler.js +268 -0
- package/dist/cli/scheduler.js.map +1 -0
- package/dist/cli/setup.d.ts +12 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +15 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/test.d.ts +7 -0
- package/dist/cli/test.d.ts.map +1 -0
- package/dist/cli/test.js +67 -0
- package/dist/cli/test.js.map +1 -0
- package/dist/config/loader.d.ts +34 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +339 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +351 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +165 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/xdg.d.ts +27 -0
- package/dist/config/xdg.d.ts.map +1 -0
- package/dist/config/xdg.js +30 -0
- package/dist/config/xdg.js.map +1 -0
- package/dist/connections/manager.d.ts +42 -0
- package/dist/connections/manager.d.ts.map +1 -0
- package/dist/connections/manager.js +266 -0
- package/dist/connections/manager.js.map +1 -0
- package/dist/connections/types.d.ts +13 -0
- package/dist/connections/types.d.ts.map +1 -0
- package/dist/connections/types.js +2 -0
- package/dist/connections/types.js.map +1 -0
- package/dist/logging.d.ts +46 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +63 -0
- package/dist/logging.js.map +1 -0
- package/dist/main.d.ts +13 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +206 -0
- package/dist/main.js.map +1 -0
- package/dist/prompts/actions.prompt.d.ts +9 -0
- package/dist/prompts/actions.prompt.d.ts.map +1 -0
- package/dist/prompts/actions.prompt.js +64 -0
- package/dist/prompts/actions.prompt.js.map +1 -0
- package/dist/prompts/calendar.prompt.d.ts +9 -0
- package/dist/prompts/calendar.prompt.d.ts.map +1 -0
- package/dist/prompts/calendar.prompt.js +55 -0
- package/dist/prompts/calendar.prompt.js.map +1 -0
- package/dist/prompts/cleanup.prompt.d.ts +9 -0
- package/dist/prompts/cleanup.prompt.d.ts.map +1 -0
- package/dist/prompts/cleanup.prompt.js +78 -0
- package/dist/prompts/cleanup.prompt.js.map +1 -0
- package/dist/prompts/compose.prompt.d.ts +8 -0
- package/dist/prompts/compose.prompt.d.ts.map +1 -0
- package/dist/prompts/compose.prompt.js +116 -0
- package/dist/prompts/compose.prompt.js.map +1 -0
- package/dist/prompts/register.d.ts +8 -0
- package/dist/prompts/register.d.ts.map +1 -0
- package/dist/prompts/register.js +20 -0
- package/dist/prompts/register.js.map +1 -0
- package/dist/prompts/thread.prompt.d.ts +9 -0
- package/dist/prompts/thread.prompt.d.ts.map +1 -0
- package/dist/prompts/thread.prompt.js +58 -0
- package/dist/prompts/thread.prompt.js.map +1 -0
- package/dist/prompts/triage.prompt.d.ts +9 -0
- package/dist/prompts/triage.prompt.d.ts.map +1 -0
- package/dist/prompts/triage.prompt.js +64 -0
- package/dist/prompts/triage.prompt.js.map +1 -0
- package/dist/resources/accounts.resource.d.ts +9 -0
- package/dist/resources/accounts.resource.d.ts.map +1 -0
- package/dist/resources/accounts.resource.js +26 -0
- package/dist/resources/accounts.resource.js.map +1 -0
- package/dist/resources/mailboxes.resource.d.ts +10 -0
- package/dist/resources/mailboxes.resource.d.ts.map +1 -0
- package/dist/resources/mailboxes.resource.js +33 -0
- package/dist/resources/mailboxes.resource.js.map +1 -0
- package/dist/resources/register.d.ts +12 -0
- package/dist/resources/register.d.ts.map +1 -0
- package/dist/resources/register.js +20 -0
- package/dist/resources/register.js.map +1 -0
- package/dist/resources/scheduled.resource.d.ts +9 -0
- package/dist/resources/scheduled.resource.d.ts.map +1 -0
- package/dist/resources/scheduled.resource.js +31 -0
- package/dist/resources/scheduled.resource.js.map +1 -0
- package/dist/resources/stats.resource.d.ts +10 -0
- package/dist/resources/stats.resource.d.ts.map +1 -0
- package/dist/resources/stats.resource.js +45 -0
- package/dist/resources/stats.resource.js.map +1 -0
- package/dist/resources/templates.resource.d.ts +9 -0
- package/dist/resources/templates.resource.d.ts.map +1 -0
- package/dist/resources/templates.resource.js +34 -0
- package/dist/resources/templates.resource.js.map +1 -0
- package/dist/resources/unread.resource.d.ts +11 -0
- package/dist/resources/unread.resource.d.ts.map +1 -0
- package/dist/resources/unread.resource.js +46 -0
- package/dist/resources/unread.resource.js.map +1 -0
- package/dist/safety/audit.d.ts +17 -0
- package/dist/safety/audit.d.ts.map +1 -0
- package/dist/safety/audit.js +50 -0
- package/dist/safety/audit.js.map +1 -0
- package/dist/safety/rate-limiter.d.ts +22 -0
- package/dist/safety/rate-limiter.d.ts.map +1 -0
- package/dist/safety/rate-limiter.js +52 -0
- package/dist/safety/rate-limiter.js.map +1 -0
- package/dist/safety/validation.d.ts +44 -0
- package/dist/safety/validation.d.ts.map +1 -0
- package/dist/safety/validation.js +113 -0
- package/dist/safety/validation.js.map +1 -0
- package/dist/server.d.ts +10 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +25 -0
- package/dist/server.js.map +1 -0
- package/dist/services/calendar.service.d.ts +22 -0
- package/dist/services/calendar.service.d.ts.map +1 -0
- package/dist/services/calendar.service.js +115 -0
- package/dist/services/calendar.service.js.map +1 -0
- package/dist/services/event-bus.d.ts +28 -0
- package/dist/services/event-bus.d.ts.map +1 -0
- package/dist/services/event-bus.js +16 -0
- package/dist/services/event-bus.js.map +1 -0
- package/dist/services/hooks.service.d.ts +77 -0
- package/dist/services/hooks.service.d.ts.map +1 -0
- package/dist/services/hooks.service.js +498 -0
- package/dist/services/hooks.service.js.map +1 -0
- package/dist/services/imap.service.d.ts +133 -0
- package/dist/services/imap.service.d.ts.map +1 -0
- package/dist/services/imap.service.js +1393 -0
- package/dist/services/imap.service.js.map +1 -0
- package/dist/services/label-strategy.d.ts +20 -0
- package/dist/services/label-strategy.d.ts.map +1 -0
- package/dist/services/label-strategy.js +237 -0
- package/dist/services/label-strategy.js.map +1 -0
- package/dist/services/local-calendar.service.d.ts +126 -0
- package/dist/services/local-calendar.service.d.ts.map +1 -0
- package/dist/services/local-calendar.service.js +428 -0
- package/dist/services/local-calendar.service.js.map +1 -0
- package/dist/services/notifier.service.d.ts +69 -0
- package/dist/services/notifier.service.d.ts.map +1 -0
- package/dist/services/notifier.service.js +319 -0
- package/dist/services/notifier.service.js.map +1 -0
- package/dist/services/oauth.service.d.ts +47 -0
- package/dist/services/oauth.service.d.ts.map +1 -0
- package/dist/services/oauth.service.js +140 -0
- package/dist/services/oauth.service.js.map +1 -0
- package/dist/services/presets.d.ts +36 -0
- package/dist/services/presets.d.ts.map +1 -0
- package/dist/services/presets.js +173 -0
- package/dist/services/presets.js.map +1 -0
- package/dist/services/reminders.service.d.ts +63 -0
- package/dist/services/reminders.service.d.ts.map +1 -0
- package/dist/services/reminders.service.js +281 -0
- package/dist/services/reminders.service.js.map +1 -0
- package/dist/services/scheduler.service.d.ts +42 -0
- package/dist/services/scheduler.service.d.ts.map +1 -0
- package/dist/services/scheduler.service.js +260 -0
- package/dist/services/scheduler.service.js.map +1 -0
- package/dist/services/smtp.service.d.ts +40 -0
- package/dist/services/smtp.service.d.ts.map +1 -0
- package/dist/services/smtp.service.js +151 -0
- package/dist/services/smtp.service.js.map +1 -0
- package/dist/services/template.service.d.ts +33 -0
- package/dist/services/template.service.d.ts.map +1 -0
- package/dist/services/template.service.js +123 -0
- package/dist/services/template.service.js.map +1 -0
- package/dist/services/watcher.service.d.ts +36 -0
- package/dist/services/watcher.service.d.ts.map +1 -0
- package/dist/services/watcher.service.js +241 -0
- package/dist/services/watcher.service.js.map +1 -0
- package/dist/tools/accounts.tool.d.ts +7 -0
- package/dist/tools/accounts.tool.d.ts.map +1 -0
- package/dist/tools/accounts.tool.js +29 -0
- package/dist/tools/accounts.tool.js.map +1 -0
- package/dist/tools/analytics.tool.d.ts +9 -0
- package/dist/tools/analytics.tool.d.ts.map +1 -0
- package/dist/tools/analytics.tool.js +27 -0
- package/dist/tools/analytics.tool.js.map +1 -0
- package/dist/tools/attachments.tool.d.ts +7 -0
- package/dist/tools/attachments.tool.d.ts.map +1 -0
- package/dist/tools/attachments.tool.js +45 -0
- package/dist/tools/attachments.tool.js.map +1 -0
- package/dist/tools/bulk.tool.d.ts +7 -0
- package/dist/tools/bulk.tool.d.ts.map +1 -0
- package/dist/tools/bulk.tool.js +75 -0
- package/dist/tools/bulk.tool.js.map +1 -0
- package/dist/tools/calendar.tool.d.ts +19 -0
- package/dist/tools/calendar.tool.d.ts.map +1 -0
- package/dist/tools/calendar.tool.js +538 -0
- package/dist/tools/calendar.tool.js.map +1 -0
- package/dist/tools/contacts.tool.d.ts +7 -0
- package/dist/tools/contacts.tool.d.ts.map +1 -0
- package/dist/tools/contacts.tool.js +44 -0
- package/dist/tools/contacts.tool.js.map +1 -0
- package/dist/tools/drafts.tool.d.ts +8 -0
- package/dist/tools/drafts.tool.d.ts.map +1 -0
- package/dist/tools/drafts.tool.js +92 -0
- package/dist/tools/drafts.tool.js.map +1 -0
- package/dist/tools/emails.tool.d.ts +7 -0
- package/dist/tools/emails.tool.d.ts.map +1 -0
- package/dist/tools/emails.tool.js +400 -0
- package/dist/tools/emails.tool.js.map +1 -0
- package/dist/tools/folders.tool.d.ts +7 -0
- package/dist/tools/folders.tool.d.ts.map +1 -0
- package/dist/tools/folders.tool.js +111 -0
- package/dist/tools/folders.tool.js.map +1 -0
- package/dist/tools/health.tool.d.ts +10 -0
- package/dist/tools/health.tool.d.ts.map +1 -0
- package/dist/tools/health.tool.js +78 -0
- package/dist/tools/health.tool.js.map +1 -0
- package/dist/tools/label.tool.d.ts +11 -0
- package/dist/tools/label.tool.d.ts.map +1 -0
- package/dist/tools/label.tool.js +165 -0
- package/dist/tools/label.tool.js.map +1 -0
- package/dist/tools/locate.tool.d.ts +11 -0
- package/dist/tools/locate.tool.d.ts.map +1 -0
- package/dist/tools/locate.tool.js +59 -0
- package/dist/tools/locate.tool.js.map +1 -0
- package/dist/tools/mailboxes.tool.d.ts +7 -0
- package/dist/tools/mailboxes.tool.d.ts.map +1 -0
- package/dist/tools/mailboxes.tool.js +38 -0
- package/dist/tools/mailboxes.tool.js.map +1 -0
- package/dist/tools/manage.tool.d.ts +7 -0
- package/dist/tools/manage.tool.d.ts.map +1 -0
- package/dist/tools/manage.tool.js +125 -0
- package/dist/tools/manage.tool.js.map +1 -0
- package/dist/tools/register.d.ts +20 -0
- package/dist/tools/register.d.ts.map +1 -0
- package/dist/tools/register.js +53 -0
- package/dist/tools/register.js.map +1 -0
- package/dist/tools/scheduler.tool.d.ts +9 -0
- package/dist/tools/scheduler.tool.d.ts.map +1 -0
- package/dist/tools/scheduler.tool.js +104 -0
- package/dist/tools/scheduler.tool.js.map +1 -0
- package/dist/tools/send.tool.d.ts +7 -0
- package/dist/tools/send.tool.d.ts.map +1 -0
- package/dist/tools/send.tool.js +123 -0
- package/dist/tools/send.tool.js.map +1 -0
- package/dist/tools/templates.tool.d.ts +12 -0
- package/dist/tools/templates.tool.d.ts.map +1 -0
- package/dist/tools/templates.tool.js +140 -0
- package/dist/tools/templates.tool.js.map +1 -0
- package/dist/tools/thread.tool.d.ts +10 -0
- package/dist/tools/thread.tool.d.ts.map +1 -0
- package/dist/tools/thread.tool.js +146 -0
- package/dist/tools/thread.tool.js.map +1 -0
- package/dist/tools/watcher.tool.d.ts +9 -0
- package/dist/tools/watcher.tool.d.ts.map +1 -0
- package/dist/tools/watcher.tool.js +282 -0
- package/dist/tools/watcher.tool.js.map +1 -0
- package/dist/types/index.d.ts +271 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/calendar-notes.d.ts +31 -0
- package/dist/utils/calendar-notes.d.ts.map +1 -0
- package/dist/utils/calendar-notes.js +99 -0
- package/dist/utils/calendar-notes.js.map +1 -0
- package/dist/utils/calendar-state.d.ts +27 -0
- package/dist/utils/calendar-state.d.ts.map +1 -0
- package/dist/utils/calendar-state.js +85 -0
- package/dist/utils/calendar-state.js.map +1 -0
- package/dist/utils/conference-details.d.ts +12 -0
- package/dist/utils/conference-details.d.ts.map +1 -0
- package/dist/utils/conference-details.js +71 -0
- package/dist/utils/conference-details.js.map +1 -0
- package/dist/utils/meeting-url.d.ts +10 -0
- package/dist/utils/meeting-url.d.ts.map +1 -0
- package/dist/utils/meeting-url.js +30 -0
- package/dist/utils/meeting-url.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notification management subcommands.
|
|
3
|
+
*
|
|
4
|
+
* - notify test Send a test desktop notification
|
|
5
|
+
* - notify status Check platform notification support
|
|
6
|
+
*/
|
|
7
|
+
import { confirm, intro, isCancel, log, outro, spinner as p_spinner, select } from '@clack/prompts';
|
|
8
|
+
import NotifierService from '../services/notifier.service.js';
|
|
9
|
+
import ensureInteractive from './guard.js';
|
|
10
|
+
function printNotifyUsage() {
|
|
11
|
+
console.log(`Usage: email-mcp notify <subcommand>
|
|
12
|
+
|
|
13
|
+
Subcommands:
|
|
14
|
+
test Send a test desktop notification
|
|
15
|
+
status Check platform notification support
|
|
16
|
+
`);
|
|
17
|
+
}
|
|
18
|
+
async function runStatus() {
|
|
19
|
+
intro('email-mcp notify status');
|
|
20
|
+
const spinner = p_spinner();
|
|
21
|
+
spinner.start('Checking platform notification support…');
|
|
22
|
+
const diag = await NotifierService.checkPlatformSupport();
|
|
23
|
+
spinner.stop(`Platform: ${diag.platform}`);
|
|
24
|
+
log.step('Desktop notifications');
|
|
25
|
+
log.message(` Tool: ${diag.desktopTool.name} — ${diag.desktopTool.available ? '✓ available' : '✗ not found'}`);
|
|
26
|
+
log.step('Sound alerts');
|
|
27
|
+
log.message(` Tool: ${diag.soundTool.name} — ${diag.soundTool.available ? '✓ available' : '✗ not found'}`);
|
|
28
|
+
if (diag.issues.length > 0) {
|
|
29
|
+
log.warn('Issues detected:');
|
|
30
|
+
for (const issue of diag.issues)
|
|
31
|
+
log.message(` ⚠ ${issue}`); // eslint-disable-line no-restricted-syntax
|
|
32
|
+
}
|
|
33
|
+
if (diag.setupInstructions.length > 0) {
|
|
34
|
+
log.info('Setup instructions:');
|
|
35
|
+
for (const instruction of diag.setupInstructions)
|
|
36
|
+
log.message(` ${instruction}`); // eslint-disable-line no-restricted-syntax
|
|
37
|
+
}
|
|
38
|
+
outro(diag.supported ? 'Notifications supported ✅' : 'Notifications not fully supported ❌');
|
|
39
|
+
}
|
|
40
|
+
async function runTest() {
|
|
41
|
+
ensureInteractive();
|
|
42
|
+
intro('email-mcp notify test');
|
|
43
|
+
const soundChoice = await select({
|
|
44
|
+
message: 'Include sound with the test notification?',
|
|
45
|
+
options: [
|
|
46
|
+
{ value: 'no', label: 'No sound', hint: 'silent desktop notification' },
|
|
47
|
+
{ value: 'yes', label: 'With sound', hint: 'plays an alert tone' },
|
|
48
|
+
],
|
|
49
|
+
initialValue: 'no',
|
|
50
|
+
});
|
|
51
|
+
if (isCancel(soundChoice)) {
|
|
52
|
+
outro('Cancelled.');
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const withSound = soundChoice === 'yes';
|
|
56
|
+
const spinner = p_spinner();
|
|
57
|
+
spinner.start('Checking platform support…');
|
|
58
|
+
const diag = await NotifierService.checkPlatformSupport();
|
|
59
|
+
if (!diag.supported) {
|
|
60
|
+
spinner.stop('Platform check failed');
|
|
61
|
+
log.error(`Desktop notifications are not supported: ${diag.issues.join('; ')}`);
|
|
62
|
+
if (diag.setupInstructions.length > 0) {
|
|
63
|
+
log.info('Setup instructions:');
|
|
64
|
+
for (const instruction of diag.setupInstructions)
|
|
65
|
+
log.message(` ${instruction}`); // eslint-disable-line no-restricted-syntax
|
|
66
|
+
}
|
|
67
|
+
outro('Fix the issues above and try again ❌');
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
spinner.stop(`Platform: ${diag.platform} — supported ✓`);
|
|
71
|
+
// Create a temporary notifier with all channels enabled for the test
|
|
72
|
+
const notifier = new NotifierService({
|
|
73
|
+
desktop: true,
|
|
74
|
+
sound: withSound,
|
|
75
|
+
urgencyThreshold: 'low',
|
|
76
|
+
webhookUrl: '',
|
|
77
|
+
webhookEvents: [],
|
|
78
|
+
});
|
|
79
|
+
const sendSpinner = p_spinner();
|
|
80
|
+
sendSpinner.start('Sending test notification…');
|
|
81
|
+
try {
|
|
82
|
+
const result = await notifier.sendTestNotification(withSound);
|
|
83
|
+
notifier.stop();
|
|
84
|
+
if (result.success) {
|
|
85
|
+
sendSpinner.stop('Notification sent ✓');
|
|
86
|
+
log.success(result.message);
|
|
87
|
+
const visible = await confirm({
|
|
88
|
+
message: 'Did you see the notification?',
|
|
89
|
+
initialValue: true,
|
|
90
|
+
});
|
|
91
|
+
if (isCancel(visible)) {
|
|
92
|
+
outro('Done.');
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (visible) {
|
|
96
|
+
outro('Notifications are working ✅');
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
log.warn('The notification was sent but you did not see it.');
|
|
100
|
+
log.info('Troubleshooting tips:');
|
|
101
|
+
for (const instruction of diag.setupInstructions)
|
|
102
|
+
log.message(` ${instruction}`); // eslint-disable-line no-restricted-syntax
|
|
103
|
+
outro('Check your notification settings and try again ⚠️');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
sendSpinner.stop('Notification failed');
|
|
108
|
+
log.error(result.message);
|
|
109
|
+
if (diag.setupInstructions.length > 0) {
|
|
110
|
+
log.info('Setup instructions:');
|
|
111
|
+
for (const instruction of diag.setupInstructions)
|
|
112
|
+
log.message(` ${instruction}`); // eslint-disable-line no-restricted-syntax
|
|
113
|
+
}
|
|
114
|
+
outro('Fix the issues above and try again ❌');
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
notifier.stop();
|
|
119
|
+
sendSpinner.stop('Notification failed');
|
|
120
|
+
log.error(`Unexpected error: ${err instanceof Error ? err.message : String(err)}`);
|
|
121
|
+
outro('Failed ❌');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
export default async function runNotifyCommand(subcommand) {
|
|
125
|
+
switch (subcommand) {
|
|
126
|
+
case 'test':
|
|
127
|
+
await runTest();
|
|
128
|
+
break;
|
|
129
|
+
case 'status':
|
|
130
|
+
await runStatus();
|
|
131
|
+
break;
|
|
132
|
+
case undefined:
|
|
133
|
+
case 'help':
|
|
134
|
+
case '--help':
|
|
135
|
+
printNotifyUsage();
|
|
136
|
+
break;
|
|
137
|
+
default:
|
|
138
|
+
console.error(`Unknown notify subcommand: ${subcommand}\n`);
|
|
139
|
+
printNotifyUsage();
|
|
140
|
+
throw new Error(`Unknown notify subcommand: ${subcommand}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=notify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/cli/notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email provider auto-detection by domain.
|
|
3
|
+
*
|
|
4
|
+
* Maps common email domains to their IMAP/SMTP server settings.
|
|
5
|
+
*/
|
|
6
|
+
import type { ProviderConfig } from '../types/index.js';
|
|
7
|
+
export declare const PROVIDERS: ProviderConfig[];
|
|
8
|
+
/**
|
|
9
|
+
* Detect email provider from an email address.
|
|
10
|
+
* Returns the matching provider config or undefined.
|
|
11
|
+
*/
|
|
12
|
+
export declare function detectProvider(email: string): ProviderConfig | undefined;
|
|
13
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/cli/providers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,eAAO,MAAM,SAAS,EAAE,cAAc,EAmKrC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAKxE"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email provider auto-detection by domain.
|
|
3
|
+
*
|
|
4
|
+
* Maps common email domains to their IMAP/SMTP server settings.
|
|
5
|
+
*/
|
|
6
|
+
export const PROVIDERS = [
|
|
7
|
+
{
|
|
8
|
+
name: 'Gmail',
|
|
9
|
+
domains: ['gmail.com', 'googlemail.com'],
|
|
10
|
+
imap: {
|
|
11
|
+
host: 'imap.gmail.com',
|
|
12
|
+
port: 993,
|
|
13
|
+
tls: true,
|
|
14
|
+
starttls: false,
|
|
15
|
+
verifySsl: true,
|
|
16
|
+
},
|
|
17
|
+
smtp: {
|
|
18
|
+
host: 'smtp.gmail.com',
|
|
19
|
+
port: 465,
|
|
20
|
+
tls: true,
|
|
21
|
+
starttls: false,
|
|
22
|
+
verifySsl: true,
|
|
23
|
+
},
|
|
24
|
+
notes: 'Requires an App Password (enable 2FA first) or OAuth2',
|
|
25
|
+
oauth2: {
|
|
26
|
+
authUrl: 'https://accounts.google.com/o/oauth2/v2/auth',
|
|
27
|
+
tokenUrl: 'https://oauth2.googleapis.com/token',
|
|
28
|
+
scopes: ['https://mail.google.com/'],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'Outlook / Hotmail',
|
|
33
|
+
domains: ['outlook.com', 'hotmail.com', 'live.com', 'outlook.de', 'outlook.co.uk'],
|
|
34
|
+
imap: {
|
|
35
|
+
host: 'outlook.office365.com',
|
|
36
|
+
port: 993,
|
|
37
|
+
tls: true,
|
|
38
|
+
starttls: false,
|
|
39
|
+
verifySsl: true,
|
|
40
|
+
},
|
|
41
|
+
smtp: {
|
|
42
|
+
host: 'smtp.office365.com',
|
|
43
|
+
port: 587,
|
|
44
|
+
tls: false,
|
|
45
|
+
starttls: true,
|
|
46
|
+
verifySsl: true,
|
|
47
|
+
},
|
|
48
|
+
oauth2: {
|
|
49
|
+
authUrl: 'https://login.microsoftonline.com/common/oauth2/v2/authorize',
|
|
50
|
+
tokenUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
|
|
51
|
+
scopes: [
|
|
52
|
+
'https://outlook.office.com/IMAP.AccessAsUser.All',
|
|
53
|
+
'https://outlook.office.com/SMTP.Send',
|
|
54
|
+
'offline_access',
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'Yahoo Mail',
|
|
60
|
+
domains: ['yahoo.com', 'yahoo.co.uk', 'yahoo.de', 'ymail.com'],
|
|
61
|
+
imap: {
|
|
62
|
+
host: 'imap.mail.yahoo.com',
|
|
63
|
+
port: 993,
|
|
64
|
+
tls: true,
|
|
65
|
+
starttls: false,
|
|
66
|
+
verifySsl: true,
|
|
67
|
+
},
|
|
68
|
+
smtp: {
|
|
69
|
+
host: 'smtp.mail.yahoo.com',
|
|
70
|
+
port: 465,
|
|
71
|
+
tls: true,
|
|
72
|
+
starttls: false,
|
|
73
|
+
verifySsl: true,
|
|
74
|
+
},
|
|
75
|
+
notes: 'Requires an App Password',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'iCloud',
|
|
79
|
+
domains: ['icloud.com', 'me.com', 'mac.com'],
|
|
80
|
+
imap: {
|
|
81
|
+
host: 'imap.mail.me.com',
|
|
82
|
+
port: 993,
|
|
83
|
+
tls: true,
|
|
84
|
+
starttls: false,
|
|
85
|
+
verifySsl: true,
|
|
86
|
+
},
|
|
87
|
+
smtp: {
|
|
88
|
+
host: 'smtp.mail.me.com',
|
|
89
|
+
port: 587,
|
|
90
|
+
tls: false,
|
|
91
|
+
starttls: true,
|
|
92
|
+
verifySsl: true,
|
|
93
|
+
},
|
|
94
|
+
notes: 'Requires an App-Specific Password',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'Fastmail',
|
|
98
|
+
domains: ['fastmail.com', 'fastmail.fm'],
|
|
99
|
+
imap: {
|
|
100
|
+
host: 'imap.fastmail.com',
|
|
101
|
+
port: 993,
|
|
102
|
+
tls: true,
|
|
103
|
+
starttls: false,
|
|
104
|
+
verifySsl: true,
|
|
105
|
+
},
|
|
106
|
+
smtp: {
|
|
107
|
+
host: 'smtp.fastmail.com',
|
|
108
|
+
port: 465,
|
|
109
|
+
tls: true,
|
|
110
|
+
starttls: false,
|
|
111
|
+
verifySsl: true,
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'ProtonMail Bridge',
|
|
116
|
+
domains: ['proton.me', 'protonmail.com', 'protonmail.ch', 'pm.me'],
|
|
117
|
+
imap: {
|
|
118
|
+
host: '127.0.0.1',
|
|
119
|
+
port: 1143,
|
|
120
|
+
tls: false,
|
|
121
|
+
starttls: true,
|
|
122
|
+
verifySsl: false,
|
|
123
|
+
},
|
|
124
|
+
smtp: {
|
|
125
|
+
host: '127.0.0.1',
|
|
126
|
+
port: 1025,
|
|
127
|
+
tls: false,
|
|
128
|
+
starttls: true,
|
|
129
|
+
verifySsl: false,
|
|
130
|
+
},
|
|
131
|
+
notes: 'Requires ProtonMail Bridge running locally',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: 'Zoho Mail',
|
|
135
|
+
domains: ['zoho.com', 'zohomail.com'],
|
|
136
|
+
imap: {
|
|
137
|
+
host: 'imap.zoho.com',
|
|
138
|
+
port: 993,
|
|
139
|
+
tls: true,
|
|
140
|
+
starttls: false,
|
|
141
|
+
verifySsl: true,
|
|
142
|
+
},
|
|
143
|
+
smtp: {
|
|
144
|
+
host: 'smtp.zoho.com',
|
|
145
|
+
port: 465,
|
|
146
|
+
tls: true,
|
|
147
|
+
starttls: false,
|
|
148
|
+
verifySsl: true,
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: 'GMX',
|
|
153
|
+
domains: ['gmx.com', 'gmx.de', 'gmx.net', 'gmx.at', 'gmx.ch'],
|
|
154
|
+
imap: {
|
|
155
|
+
host: 'imap.gmx.net',
|
|
156
|
+
port: 993,
|
|
157
|
+
tls: true,
|
|
158
|
+
starttls: false,
|
|
159
|
+
verifySsl: true,
|
|
160
|
+
},
|
|
161
|
+
smtp: {
|
|
162
|
+
host: 'mail.gmx.net',
|
|
163
|
+
port: 465,
|
|
164
|
+
tls: true,
|
|
165
|
+
starttls: false,
|
|
166
|
+
verifySsl: true,
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
];
|
|
170
|
+
/**
|
|
171
|
+
* Detect email provider from an email address.
|
|
172
|
+
* Returns the matching provider config or undefined.
|
|
173
|
+
*/
|
|
174
|
+
export function detectProvider(email) {
|
|
175
|
+
const domain = email.split('@')[1]?.toLowerCase();
|
|
176
|
+
if (!domain)
|
|
177
|
+
return undefined;
|
|
178
|
+
return PROVIDERS.find((p) => p.domains.includes(domain));
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/cli/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI scheduler subcommands.
|
|
3
|
+
*
|
|
4
|
+
* Provides check, list, install, uninstall, and status subcommands
|
|
5
|
+
* for managing the email scheduler.
|
|
6
|
+
*/
|
|
7
|
+
export default function runSchedulerCommand(subcommand?: string): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/cli/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkQH,wBAA8B,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BpF"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI scheduler subcommands.
|
|
3
|
+
*
|
|
4
|
+
* Provides check, list, install, uninstall, and status subcommands
|
|
5
|
+
* for managing the email scheduler.
|
|
6
|
+
*/
|
|
7
|
+
/* eslint-disable n/no-sync -- CLI commands use execSync for launchctl/crontab */
|
|
8
|
+
import { execSync } from 'node:child_process';
|
|
9
|
+
import fs from 'node:fs/promises';
|
|
10
|
+
import os from 'node:os';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import { loadConfig } from '../config/loader.js';
|
|
13
|
+
import ConnectionManager from '../connections/manager.js';
|
|
14
|
+
import RateLimiter from '../safety/rate-limiter.js';
|
|
15
|
+
import ImapService from '../services/imap.service.js';
|
|
16
|
+
import SchedulerService from '../services/scheduler.service.js';
|
|
17
|
+
import SmtpService from '../services/smtp.service.js';
|
|
18
|
+
const LAUNCHD_LABEL = 'com.email-mcp.scheduler';
|
|
19
|
+
const LAUNCHD_PLIST_DIR = path.join(os.homedir(), 'Library', 'LaunchAgents');
|
|
20
|
+
const LAUNCHD_PLIST = path.join(LAUNCHD_PLIST_DIR, `${LAUNCHD_LABEL}.plist`);
|
|
21
|
+
const CRONTAB_MARKER = '# email-mcp scheduler';
|
|
22
|
+
function getExecutablePath() {
|
|
23
|
+
return process.argv[1] ?? 'email-mcp';
|
|
24
|
+
}
|
|
25
|
+
async function createSchedulerService() {
|
|
26
|
+
const config = await loadConfig();
|
|
27
|
+
const connections = new ConnectionManager(config.accounts);
|
|
28
|
+
const rateLimiter = new RateLimiter(config.settings.rateLimit);
|
|
29
|
+
const imapService = new ImapService(connections);
|
|
30
|
+
const smtpService = new SmtpService(connections, rateLimiter, imapService);
|
|
31
|
+
return new SchedulerService(smtpService, imapService);
|
|
32
|
+
}
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Subcommands
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
async function runCheck() {
|
|
37
|
+
const scheduler = await createSchedulerService();
|
|
38
|
+
const result = await scheduler.checkAndSend();
|
|
39
|
+
if (result.sent > 0) {
|
|
40
|
+
console.log(`✅ Sent ${result.sent} scheduled email(s)`);
|
|
41
|
+
}
|
|
42
|
+
if (result.failed > 0) {
|
|
43
|
+
console.log(`❌ Failed: ${result.failed}`);
|
|
44
|
+
for (const err of result.errors)
|
|
45
|
+
console.log(` ${err}`); // eslint-disable-line no-restricted-syntax
|
|
46
|
+
}
|
|
47
|
+
if (result.sent === 0 && result.failed === 0) {
|
|
48
|
+
console.log('No overdue scheduled emails.');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function runList() {
|
|
52
|
+
const scheduler = await createSchedulerService();
|
|
53
|
+
const emails = await scheduler.list({ status: 'all' });
|
|
54
|
+
if (emails.length === 0) {
|
|
55
|
+
console.log('No scheduled emails.');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const pending = emails.filter((e) => e.status === 'pending');
|
|
59
|
+
const sent = emails.filter((e) => e.status === 'sent');
|
|
60
|
+
const failed = emails.filter((e) => e.status === 'failed');
|
|
61
|
+
if (pending.length > 0) {
|
|
62
|
+
console.log(`\n📬 Pending (${pending.length}):`);
|
|
63
|
+
pending.forEach((e) => {
|
|
64
|
+
const overdue = new Date(e.sendAt).getTime() < Date.now() ? ' ⚠️ OVERDUE' : '';
|
|
65
|
+
console.log(` ${e.id.slice(0, 8)} | ${e.account} → ${e.to.join(', ')} | "${e.subject}" | ${e.sendAt}${overdue}`);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (sent.length > 0) {
|
|
69
|
+
console.log(`\n✅ Sent (${sent.length}):`);
|
|
70
|
+
sent.forEach((e) => {
|
|
71
|
+
console.log(` ${e.id.slice(0, 8)} | ${e.account} → ${e.to.join(', ')} | "${e.subject}" | sent ${e.sentAt}`);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (failed.length > 0) {
|
|
75
|
+
console.log(`\n❌ Failed (${failed.length}):`);
|
|
76
|
+
failed.forEach((e) => {
|
|
77
|
+
console.log(` ${e.id.slice(0, 8)} | ${e.account} → ${e.to.join(', ')} | "${e.subject}" | ${e.lastError}`);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function runInstall() {
|
|
82
|
+
const platform = os.platform();
|
|
83
|
+
const execPath = getExecutablePath();
|
|
84
|
+
if (platform === 'darwin') {
|
|
85
|
+
// macOS: launchd plist
|
|
86
|
+
const plist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
87
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
88
|
+
<plist version="1.0">
|
|
89
|
+
<dict>
|
|
90
|
+
<key>Label</key>
|
|
91
|
+
<string>${LAUNCHD_LABEL}</string>
|
|
92
|
+
<key>ProgramArguments</key>
|
|
93
|
+
<array>
|
|
94
|
+
<string>${process.execPath}</string>
|
|
95
|
+
<string>${execPath}</string>
|
|
96
|
+
<string>scheduler</string>
|
|
97
|
+
<string>check</string>
|
|
98
|
+
</array>
|
|
99
|
+
<key>StartInterval</key>
|
|
100
|
+
<integer>60</integer>
|
|
101
|
+
<key>StandardOutPath</key>
|
|
102
|
+
<string>/tmp/email-mcp-scheduler.log</string>
|
|
103
|
+
<key>StandardErrorPath</key>
|
|
104
|
+
<string>/tmp/email-mcp-scheduler.log</string>
|
|
105
|
+
<key>RunAtLoad</key>
|
|
106
|
+
<true/>
|
|
107
|
+
</dict>
|
|
108
|
+
</plist>`;
|
|
109
|
+
await fs.mkdir(LAUNCHD_PLIST_DIR, { recursive: true });
|
|
110
|
+
await fs.writeFile(LAUNCHD_PLIST, plist);
|
|
111
|
+
try {
|
|
112
|
+
execSync(`launchctl load "${LAUNCHD_PLIST}"`, { stdio: 'pipe' });
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// May already be loaded
|
|
116
|
+
}
|
|
117
|
+
console.log('✅ Installed macOS launchd scheduler');
|
|
118
|
+
console.log(` Plist: ${LAUNCHD_PLIST}`);
|
|
119
|
+
console.log(' Runs every 60 seconds');
|
|
120
|
+
}
|
|
121
|
+
else if (platform === 'linux') {
|
|
122
|
+
// Linux: crontab
|
|
123
|
+
const cronLine = `* * * * * ${process.execPath} ${execPath} scheduler check ${CRONTAB_MARKER}`;
|
|
124
|
+
try {
|
|
125
|
+
const existing = execSync('crontab -l 2>/dev/null', {
|
|
126
|
+
encoding: 'utf-8',
|
|
127
|
+
});
|
|
128
|
+
if (existing.includes(CRONTAB_MARKER)) {
|
|
129
|
+
console.log('⚠️ Scheduler crontab entry already exists');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const newCrontab = `${existing.trimEnd()}\n${cronLine}\n`;
|
|
133
|
+
execSync(`echo '${newCrontab}' | crontab -`, { stdio: 'pipe' });
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
execSync(`echo '${cronLine}' | crontab -`, { stdio: 'pipe' });
|
|
137
|
+
}
|
|
138
|
+
console.log('✅ Installed Linux crontab scheduler');
|
|
139
|
+
console.log(' Runs every minute');
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
console.error(`❌ Unsupported platform: ${platform}`);
|
|
143
|
+
console.error(" Manually run 'email-mcp scheduler check' on a schedule.");
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async function runUninstall() {
|
|
147
|
+
const platform = os.platform();
|
|
148
|
+
if (platform === 'darwin') {
|
|
149
|
+
try {
|
|
150
|
+
execSync(`launchctl unload "${LAUNCHD_PLIST}"`, { stdio: 'pipe' });
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
// May not be loaded
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
await fs.unlink(LAUNCHD_PLIST);
|
|
157
|
+
console.log('✅ Removed macOS launchd scheduler');
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
console.log('ℹ️ No launchd scheduler found');
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else if (platform === 'linux') {
|
|
164
|
+
try {
|
|
165
|
+
const existing = execSync('crontab -l 2>/dev/null', {
|
|
166
|
+
encoding: 'utf-8',
|
|
167
|
+
});
|
|
168
|
+
const lines = existing.split('\n').filter((line) => !line.includes(CRONTAB_MARKER));
|
|
169
|
+
const newCrontab = lines.join('\n');
|
|
170
|
+
execSync(`echo '${newCrontab}' | crontab -`, { stdio: 'pipe' });
|
|
171
|
+
console.log('✅ Removed Linux crontab scheduler');
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
console.log('ℹ️ No crontab scheduler found');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
console.error(`❌ Unsupported platform: ${platform}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
async function runStatus() {
|
|
182
|
+
const platform = os.platform();
|
|
183
|
+
if (platform === 'darwin') {
|
|
184
|
+
try {
|
|
185
|
+
await fs.access(LAUNCHD_PLIST);
|
|
186
|
+
try {
|
|
187
|
+
const output = execSync(`launchctl list ${LAUNCHD_LABEL} 2>/dev/null`, {
|
|
188
|
+
encoding: 'utf-8',
|
|
189
|
+
});
|
|
190
|
+
const pidMatch = /"PID"\s*=\s*(\d+)/.exec(output);
|
|
191
|
+
console.log('✅ macOS launchd scheduler: INSTALLED');
|
|
192
|
+
console.log(` Plist: ${LAUNCHD_PLIST}`);
|
|
193
|
+
if (pidMatch) {
|
|
194
|
+
console.log(` PID: ${pidMatch[1]}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
console.log('⚠️ macOS launchd scheduler: INSTALLED but not loaded');
|
|
199
|
+
console.log(` Plist: ${LAUNCHD_PLIST}`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
console.log('❌ macOS launchd scheduler: NOT INSTALLED');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else if (platform === 'linux') {
|
|
207
|
+
try {
|
|
208
|
+
const existing = execSync('crontab -l 2>/dev/null', {
|
|
209
|
+
encoding: 'utf-8',
|
|
210
|
+
});
|
|
211
|
+
if (existing.includes(CRONTAB_MARKER)) {
|
|
212
|
+
console.log('✅ Linux crontab scheduler: INSTALLED');
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
console.log('❌ Linux crontab scheduler: NOT INSTALLED');
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
console.log('❌ Linux crontab scheduler: NOT INSTALLED');
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Show queue status
|
|
223
|
+
const scheduler = await createSchedulerService();
|
|
224
|
+
const pending = await scheduler.list({ status: 'pending' });
|
|
225
|
+
const overdue = pending.filter((e) => new Date(e.sendAt).getTime() < Date.now());
|
|
226
|
+
console.log(`\n📬 Queue: ${pending.length} pending, ${overdue.length} overdue`);
|
|
227
|
+
}
|
|
228
|
+
// ---------------------------------------------------------------------------
|
|
229
|
+
// Main router
|
|
230
|
+
// ---------------------------------------------------------------------------
|
|
231
|
+
const SCHEDULER_HELP = `
|
|
232
|
+
email-mcp scheduler — Email scheduling management
|
|
233
|
+
|
|
234
|
+
Commands:
|
|
235
|
+
check Send overdue scheduled emails
|
|
236
|
+
list Display all scheduled emails
|
|
237
|
+
install Install OS periodic check (macOS launchd / Linux crontab)
|
|
238
|
+
uninstall Remove OS periodic check
|
|
239
|
+
status Show scheduler installation status
|
|
240
|
+
`.trim();
|
|
241
|
+
export default async function runSchedulerCommand(subcommand) {
|
|
242
|
+
switch (subcommand) {
|
|
243
|
+
case 'check':
|
|
244
|
+
await runCheck();
|
|
245
|
+
break;
|
|
246
|
+
case 'list':
|
|
247
|
+
await runList();
|
|
248
|
+
break;
|
|
249
|
+
case 'install':
|
|
250
|
+
await runInstall();
|
|
251
|
+
break;
|
|
252
|
+
case 'uninstall':
|
|
253
|
+
await runUninstall();
|
|
254
|
+
break;
|
|
255
|
+
case 'status':
|
|
256
|
+
await runStatus();
|
|
257
|
+
break;
|
|
258
|
+
case 'help':
|
|
259
|
+
case '--help':
|
|
260
|
+
case undefined:
|
|
261
|
+
console.log(SCHEDULER_HELP);
|
|
262
|
+
break;
|
|
263
|
+
default:
|
|
264
|
+
console.error(`Unknown scheduler command: ${subcommand}\n`);
|
|
265
|
+
console.log(SCHEDULER_HELP);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/cli/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive setup wizard for email-mcp.
|
|
3
|
+
*
|
|
4
|
+
* Legacy entry point — delegates to `account add`.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Run the setup wizard.
|
|
8
|
+
*
|
|
9
|
+
* @deprecated Use `email-mcp account add` instead. This alias is kept for backwards-compatibility.
|
|
10
|
+
*/
|
|
11
|
+
export default function runSetup(): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;GAIG;AACH,wBAA8B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAEtD"}
|