@diskd-ai/email-client-mcp 0.1.3 → 0.1.5
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/dist/config/schema.d.ts +11 -0
- package/dist/config/schema.js +1 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/imap/oauth.d.ts +12 -0
- package/dist/imap/oauth.js +67 -0
- package/dist/imap/oauth.js.map +1 -0
- package/dist/imap/pool.d.ts +40 -6
- package/dist/imap/pool.js +118 -31
- package/dist/imap/pool.js.map +1 -1
- package/dist/sdk/diskdClient.js.map +1 -1
- package/dist/server.js +3 -1
- package/dist/server.js.map +1 -1
- package/dist/sync/watcher.js +8 -2
- package/dist/sync/watcher.js.map +1 -1
- package/package.json +2 -2
package/dist/config/schema.d.ts
CHANGED
|
@@ -58,6 +58,7 @@ declare const passwordAccountSchema: z.ZodObject<{
|
|
|
58
58
|
declare const oauthAccountSchema: z.ZodObject<{
|
|
59
59
|
name: z.ZodString;
|
|
60
60
|
email: z.ZodString;
|
|
61
|
+
username: z.ZodOptional<z.ZodString>;
|
|
61
62
|
full_name: z.ZodOptional<z.ZodString>;
|
|
62
63
|
oauth2: z.ZodObject<{
|
|
63
64
|
provider: z.ZodString;
|
|
@@ -106,6 +107,7 @@ declare const oauthAccountSchema: z.ZodObject<{
|
|
|
106
107
|
client_secret: string;
|
|
107
108
|
refresh_token: string;
|
|
108
109
|
};
|
|
110
|
+
username?: string | undefined;
|
|
109
111
|
full_name?: string | undefined;
|
|
110
112
|
}, {
|
|
111
113
|
name: string;
|
|
@@ -122,6 +124,7 @@ declare const oauthAccountSchema: z.ZodObject<{
|
|
|
122
124
|
client_secret: string;
|
|
123
125
|
refresh_token: string;
|
|
124
126
|
};
|
|
127
|
+
username?: string | undefined;
|
|
125
128
|
full_name?: string | undefined;
|
|
126
129
|
}>;
|
|
127
130
|
export declare const accountSchema: z.ZodUnion<[z.ZodObject<{
|
|
@@ -173,6 +176,7 @@ export declare const accountSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
173
176
|
}>, z.ZodObject<{
|
|
174
177
|
name: z.ZodString;
|
|
175
178
|
email: z.ZodString;
|
|
179
|
+
username: z.ZodOptional<z.ZodString>;
|
|
176
180
|
full_name: z.ZodOptional<z.ZodString>;
|
|
177
181
|
oauth2: z.ZodObject<{
|
|
178
182
|
provider: z.ZodString;
|
|
@@ -221,6 +225,7 @@ export declare const accountSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
221
225
|
client_secret: string;
|
|
222
226
|
refresh_token: string;
|
|
223
227
|
};
|
|
228
|
+
username?: string | undefined;
|
|
224
229
|
full_name?: string | undefined;
|
|
225
230
|
}, {
|
|
226
231
|
name: string;
|
|
@@ -237,6 +242,7 @@ export declare const accountSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
237
242
|
client_secret: string;
|
|
238
243
|
refresh_token: string;
|
|
239
244
|
};
|
|
245
|
+
username?: string | undefined;
|
|
240
246
|
full_name?: string | undefined;
|
|
241
247
|
}>]>;
|
|
242
248
|
export type Account = z.infer<typeof accountSchema>;
|
|
@@ -328,6 +334,7 @@ export declare const configSchema: z.ZodObject<{
|
|
|
328
334
|
}>, z.ZodObject<{
|
|
329
335
|
name: z.ZodString;
|
|
330
336
|
email: z.ZodString;
|
|
337
|
+
username: z.ZodOptional<z.ZodString>;
|
|
331
338
|
full_name: z.ZodOptional<z.ZodString>;
|
|
332
339
|
oauth2: z.ZodObject<{
|
|
333
340
|
provider: z.ZodString;
|
|
@@ -376,6 +383,7 @@ export declare const configSchema: z.ZodObject<{
|
|
|
376
383
|
client_secret: string;
|
|
377
384
|
refresh_token: string;
|
|
378
385
|
};
|
|
386
|
+
username?: string | undefined;
|
|
379
387
|
full_name?: string | undefined;
|
|
380
388
|
}, {
|
|
381
389
|
name: string;
|
|
@@ -392,6 +400,7 @@ export declare const configSchema: z.ZodObject<{
|
|
|
392
400
|
client_secret: string;
|
|
393
401
|
refresh_token: string;
|
|
394
402
|
};
|
|
403
|
+
username?: string | undefined;
|
|
395
404
|
full_name?: string | undefined;
|
|
396
405
|
}>]>, "many">;
|
|
397
406
|
sdk: z.ZodOptional<z.ZodObject<{
|
|
@@ -451,6 +460,7 @@ export declare const configSchema: z.ZodObject<{
|
|
|
451
460
|
client_secret: string;
|
|
452
461
|
refresh_token: string;
|
|
453
462
|
};
|
|
463
|
+
username?: string | undefined;
|
|
454
464
|
full_name?: string | undefined;
|
|
455
465
|
})[];
|
|
456
466
|
watcher: {
|
|
@@ -492,6 +502,7 @@ export declare const configSchema: z.ZodObject<{
|
|
|
492
502
|
client_secret: string;
|
|
493
503
|
refresh_token: string;
|
|
494
504
|
};
|
|
505
|
+
username?: string | undefined;
|
|
495
506
|
full_name?: string | undefined;
|
|
496
507
|
})[];
|
|
497
508
|
sdk?: {
|
package/dist/config/schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth2 access-token exchange for IMAP XOAUTH2.
|
|
3
|
+
*
|
|
4
|
+
* Gmail and Microsoft IMAP do not accept refresh tokens as IMAP
|
|
5
|
+
* credentials. The refresh token must first be exchanged for a
|
|
6
|
+
* short-lived access token, then passed to ImapFlow as `accessToken`.
|
|
7
|
+
*/
|
|
8
|
+
import type { OAuthAccount } from "../config/schema.js";
|
|
9
|
+
import { type ImapError } from "../domain/errors.js";
|
|
10
|
+
import { type Result } from "../domain/result.js";
|
|
11
|
+
export type OAuthTokenFetcher = (account: OAuthAccount) => Promise<Result<ImapError, string>>;
|
|
12
|
+
export declare const refreshOAuthAccessToken: OAuthTokenFetcher;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth2 access-token exchange for IMAP XOAUTH2.
|
|
3
|
+
*
|
|
4
|
+
* Gmail and Microsoft IMAP do not accept refresh tokens as IMAP
|
|
5
|
+
* credentials. The refresh token must first be exchanged for a
|
|
6
|
+
* short-lived access token, then passed to ImapFlow as `accessToken`.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { imapError } from "../domain/errors.js";
|
|
10
|
+
import { Err, Ok } from "../domain/result.js";
|
|
11
|
+
const tokenResponseSchema = z.object({
|
|
12
|
+
access_token: z.string().min(1),
|
|
13
|
+
});
|
|
14
|
+
const tokenUrlForProvider = (provider) => {
|
|
15
|
+
switch (provider) {
|
|
16
|
+
case "google":
|
|
17
|
+
return Ok("https://oauth2.googleapis.com/token");
|
|
18
|
+
case "microsoft":
|
|
19
|
+
return Ok("https://login.microsoftonline.com/common/oauth2/v2.0/token");
|
|
20
|
+
default:
|
|
21
|
+
return Err(imapError("oauth", `unsupported oauth2 provider: ${provider}`));
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const refreshOAuthAccessToken = async (account) => {
|
|
25
|
+
const tokenUrl = tokenUrlForProvider(account.oauth2.provider);
|
|
26
|
+
if (tokenUrl.tag === "Err") {
|
|
27
|
+
return Err(imapError(account.name, tokenUrl.error.message, tokenUrl.error));
|
|
28
|
+
}
|
|
29
|
+
const body = new URLSearchParams({
|
|
30
|
+
grant_type: "refresh_token",
|
|
31
|
+
client_id: account.oauth2.client_id,
|
|
32
|
+
client_secret: account.oauth2.client_secret,
|
|
33
|
+
refresh_token: account.oauth2.refresh_token,
|
|
34
|
+
});
|
|
35
|
+
let response;
|
|
36
|
+
try {
|
|
37
|
+
response = await fetch(tokenUrl.value, {
|
|
38
|
+
method: "POST",
|
|
39
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
40
|
+
body: body.toString(),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch (cause) {
|
|
44
|
+
return Err(imapError(account.name, "oauth2 token refresh request failed", cause));
|
|
45
|
+
}
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
let text = "";
|
|
48
|
+
try {
|
|
49
|
+
text = await response.text();
|
|
50
|
+
}
|
|
51
|
+
catch (cause) {
|
|
52
|
+
return Err(imapError(account.name, "oauth2 token refresh failed and body read failed", cause));
|
|
53
|
+
}
|
|
54
|
+
return Err(imapError(account.name, `oauth2 token refresh failed (${response.status}): ${text}`));
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const parsed = tokenResponseSchema.safeParse(await response.json());
|
|
58
|
+
if (!parsed.success) {
|
|
59
|
+
return Err(imapError(account.name, "oauth2 token refresh response missing access_token"));
|
|
60
|
+
}
|
|
61
|
+
return Ok(parsed.data.access_token);
|
|
62
|
+
}
|
|
63
|
+
catch (cause) {
|
|
64
|
+
return Err(imapError(account.name, "oauth2 token refresh response parse failed", cause));
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/imap/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAE3D,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAA6B,EAAE;IAC1E,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC,qCAAqC,CAAC,CAAC;QACnD,KAAK,WAAW;YACd,OAAO,EAAE,CAAC,4DAA4D,CAAC,CAAC;QAC1E;YACE,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,gCAAgC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,uBAAuB,GAAsB,KAAK,EAC7D,OAAO,EAC6B,EAAE;IACtC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9D,IAAI,QAAQ,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;QAC/B,UAAU,EAAE,eAAe;QAC3B,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;QACnC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa;QAC3C,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa;KAC5C,CAAC,CAAC;IAEH,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,qCAAqC,EAAE,KAAK,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,CACR,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,kDAAkD,EAAE,KAAK,CAAC,CACnF,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CACR,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,gCAAgC,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CACrF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,oDAAoD,CAAC,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,4CAA4C,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC,CAAC"}
|
package/dist/imap/pool.d.ts
CHANGED
|
@@ -8,19 +8,53 @@
|
|
|
8
8
|
* can share one socket without races.
|
|
9
9
|
* - On a connection that has dropped (`usable === false`), the next
|
|
10
10
|
* `forAccount(...)` call rebuilds it.
|
|
11
|
-
* -
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* - Every `ImapFlow` client has an `error` listener. Socket timeouts
|
|
12
|
+
* evict only that account's client and throttle reconnect by 30s
|
|
13
|
+
* instead of becoming an unhandled process-level event.
|
|
14
|
+
* - OAuth refresh: Gmail/Microsoft refresh tokens are exchanged for
|
|
15
|
+
* short-lived access tokens before ImapFlow receives XOAUTH2 auth.
|
|
16
16
|
*/
|
|
17
17
|
import { ImapFlow } from "imapflow";
|
|
18
18
|
import { type Account } from "../config/schema.js";
|
|
19
19
|
import { type ImapError } from "../domain/errors.js";
|
|
20
20
|
import { type Result } from "../domain/result.js";
|
|
21
|
+
import { type OAuthTokenFetcher } from "./oauth.js";
|
|
22
|
+
export type ImapPoolEvent = {
|
|
23
|
+
readonly kind: "clientError";
|
|
24
|
+
readonly accountId: string;
|
|
25
|
+
readonly message: string;
|
|
26
|
+
readonly reconnectDelayMs: number;
|
|
27
|
+
} | {
|
|
28
|
+
readonly kind: "clientClosed";
|
|
29
|
+
readonly accountId: string;
|
|
30
|
+
} | {
|
|
31
|
+
readonly kind: "closeError";
|
|
32
|
+
readonly accountId: string;
|
|
33
|
+
readonly phase: "evict" | "shutdown";
|
|
34
|
+
readonly message: string;
|
|
35
|
+
} | {
|
|
36
|
+
readonly kind: "reconnectDelayed";
|
|
37
|
+
readonly accountId: string;
|
|
38
|
+
readonly delayMs: number;
|
|
39
|
+
};
|
|
40
|
+
export type ImapPoolOptions = {
|
|
41
|
+
readonly reconnectDelayMs?: number;
|
|
42
|
+
readonly nowMs?: () => number;
|
|
43
|
+
readonly sleep?: (delayMs: number) => Promise<void>;
|
|
44
|
+
readonly onEvent?: (event: ImapPoolEvent) => void;
|
|
45
|
+
readonly fetchOAuthToken?: OAuthTokenFetcher;
|
|
46
|
+
readonly createClient?: (account: Account, auth: ImapAuth) => ImapFlow;
|
|
47
|
+
};
|
|
21
48
|
export type ImapPool = {
|
|
22
49
|
readonly forAccount: (accountId: string) => Promise<Result<ImapError, ImapFlow>>;
|
|
23
50
|
readonly closeAll: () => Promise<void>;
|
|
24
51
|
readonly accountIds: readonly string[];
|
|
25
52
|
};
|
|
26
|
-
export
|
|
53
|
+
export type ImapAuth = {
|
|
54
|
+
readonly user: string;
|
|
55
|
+
readonly pass: string;
|
|
56
|
+
} | {
|
|
57
|
+
readonly user: string;
|
|
58
|
+
readonly accessToken: string;
|
|
59
|
+
};
|
|
60
|
+
export declare const buildImapPool: (accounts: readonly Account[], options?: ImapPoolOptions) => ImapPool;
|
package/dist/imap/pool.js
CHANGED
|
@@ -8,27 +8,26 @@
|
|
|
8
8
|
* can share one socket without races.
|
|
9
9
|
* - On a connection that has dropped (`usable === false`), the next
|
|
10
10
|
* `forAccount(...)` call rebuilds it.
|
|
11
|
-
* -
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* - Every `ImapFlow` client has an `error` listener. Socket timeouts
|
|
12
|
+
* evict only that account's client and throttle reconnect by 30s
|
|
13
|
+
* instead of becoming an unhandled process-level event.
|
|
14
|
+
* - OAuth refresh: Gmail/Microsoft refresh tokens are exchanged for
|
|
15
|
+
* short-lived access tokens before ImapFlow receives XOAUTH2 auth.
|
|
16
16
|
*/
|
|
17
17
|
import { ImapFlow } from "imapflow";
|
|
18
18
|
import { isOAuthAccount } from "../config/schema.js";
|
|
19
19
|
import { imapError } from "../domain/errors.js";
|
|
20
20
|
import { Err, Ok } from "../domain/result.js";
|
|
21
|
-
|
|
21
|
+
import { refreshOAuthAccessToken } from "./oauth.js";
|
|
22
|
+
const DEFAULT_RECONNECT_DELAY_MS = 30_000;
|
|
23
|
+
const buildClient = (acct, auth) => {
|
|
22
24
|
if (isOAuthAccount(acct)) {
|
|
23
25
|
return new ImapFlow({
|
|
24
26
|
host: acct.imap.host,
|
|
25
27
|
port: acct.imap.port,
|
|
26
28
|
secure: acct.imap.tls,
|
|
27
29
|
tls: { rejectUnauthorized: acct.imap.verify_ssl },
|
|
28
|
-
auth
|
|
29
|
-
user: acct.email,
|
|
30
|
-
accessToken: acct.oauth2.refresh_token,
|
|
31
|
-
},
|
|
30
|
+
auth,
|
|
32
31
|
logger: false,
|
|
33
32
|
});
|
|
34
33
|
}
|
|
@@ -37,55 +36,143 @@ const buildClient = (acct) => {
|
|
|
37
36
|
port: acct.imap.port,
|
|
38
37
|
secure: acct.imap.tls,
|
|
39
38
|
tls: { rejectUnauthorized: acct.imap.verify_ssl },
|
|
40
|
-
auth
|
|
41
|
-
user: acct.username ?? acct.email,
|
|
42
|
-
pass: acct.password,
|
|
43
|
-
},
|
|
39
|
+
auth,
|
|
44
40
|
logger: false,
|
|
45
41
|
});
|
|
46
42
|
};
|
|
47
|
-
|
|
43
|
+
const toErrorMessage = (cause) => cause instanceof Error ? cause.message : String(cause);
|
|
44
|
+
const defaultSleep = (delayMs) => new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
45
|
+
const resolveAuth = async (acct, fetchOAuthToken) => {
|
|
46
|
+
if (!isOAuthAccount(acct)) {
|
|
47
|
+
return Ok({ user: acct.username ?? acct.email, pass: acct.password });
|
|
48
|
+
}
|
|
49
|
+
const token = await fetchOAuthToken(acct);
|
|
50
|
+
if (token.tag === "Err")
|
|
51
|
+
return token;
|
|
52
|
+
return Ok({ user: acct.username ?? acct.email, accessToken: token.value });
|
|
53
|
+
};
|
|
54
|
+
export const buildImapPool = (accounts, options = {}) => {
|
|
55
|
+
const reconnectDelayMs = options.reconnectDelayMs ?? DEFAULT_RECONNECT_DELAY_MS;
|
|
56
|
+
const nowMs = options.nowMs ?? (() => Date.now());
|
|
57
|
+
const sleep = options.sleep ?? defaultSleep;
|
|
58
|
+
const createClient = options.createClient ?? buildClient;
|
|
59
|
+
const fetchOAuthToken = options.fetchOAuthToken ?? refreshOAuthAccessToken;
|
|
48
60
|
const byId = new Map();
|
|
49
61
|
for (const a of accounts)
|
|
50
62
|
byId.set(a.name, a);
|
|
51
63
|
const liveById = new Map();
|
|
64
|
+
const reconnectAfterById = new Map();
|
|
65
|
+
const connectingById = new Map();
|
|
66
|
+
const emitEvent = (event) => {
|
|
67
|
+
options.onEvent?.(event);
|
|
68
|
+
};
|
|
69
|
+
const delayReconnect = (accountId) => {
|
|
70
|
+
reconnectAfterById.set(accountId, nowMs() + reconnectDelayMs);
|
|
71
|
+
};
|
|
72
|
+
const waitForReconnectWindow = async (accountId) => {
|
|
73
|
+
const reconnectAfter = reconnectAfterById.get(accountId);
|
|
74
|
+
if (reconnectAfter === undefined)
|
|
75
|
+
return;
|
|
76
|
+
const delayMs = reconnectAfter - nowMs();
|
|
77
|
+
if (delayMs <= 0) {
|
|
78
|
+
reconnectAfterById.delete(accountId);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
emitEvent({ kind: "reconnectDelayed", accountId, delayMs });
|
|
82
|
+
await sleep(delayMs);
|
|
83
|
+
if (reconnectAfterById.get(accountId) === reconnectAfter) {
|
|
84
|
+
reconnectAfterById.delete(accountId);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const closeClient = (accountId, client, phase) => {
|
|
88
|
+
try {
|
|
89
|
+
client.close();
|
|
90
|
+
}
|
|
91
|
+
catch (cause) {
|
|
92
|
+
emitEvent({ kind: "closeError", accountId, phase, message: toErrorMessage(cause) });
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
const attachLifecycleHandlers = (accountId, client) => {
|
|
96
|
+
client.on("error", (error) => {
|
|
97
|
+
if (liveById.get(accountId) === client)
|
|
98
|
+
liveById.delete(accountId);
|
|
99
|
+
delayReconnect(accountId);
|
|
100
|
+
emitEvent({
|
|
101
|
+
kind: "clientError",
|
|
102
|
+
accountId,
|
|
103
|
+
message: toErrorMessage(error),
|
|
104
|
+
reconnectDelayMs,
|
|
105
|
+
});
|
|
106
|
+
closeClient(accountId, client, "evict");
|
|
107
|
+
});
|
|
108
|
+
client.on("close", () => {
|
|
109
|
+
if (liveById.get(accountId) === client)
|
|
110
|
+
liveById.delete(accountId);
|
|
111
|
+
emitEvent({ kind: "clientClosed", accountId });
|
|
112
|
+
});
|
|
113
|
+
};
|
|
52
114
|
const forAccount = async (accountId) => {
|
|
53
115
|
const acct = byId.get(accountId);
|
|
54
116
|
if (!acct)
|
|
55
117
|
return Err(imapError(accountId, "unknown account id"));
|
|
56
118
|
const cached = liveById.get(accountId);
|
|
57
|
-
if (cached
|
|
119
|
+
if (cached?.usable)
|
|
58
120
|
return Ok(cached);
|
|
59
121
|
if (cached && !cached.usable) {
|
|
122
|
+
liveById.delete(accountId);
|
|
123
|
+
closeClient(accountId, cached, "evict");
|
|
124
|
+
}
|
|
125
|
+
const connecting = connectingById.get(accountId);
|
|
126
|
+
if (connecting !== undefined)
|
|
127
|
+
return await connecting;
|
|
128
|
+
const connectFresh = async () => {
|
|
129
|
+
await waitForReconnectWindow(accountId);
|
|
130
|
+
const auth = await resolveAuth(acct, fetchOAuthToken);
|
|
131
|
+
if (auth.tag === "Err") {
|
|
132
|
+
delayReconnect(accountId);
|
|
133
|
+
return auth;
|
|
134
|
+
}
|
|
135
|
+
const client = createClient(acct, auth.value);
|
|
136
|
+
attachLifecycleHandlers(accountId, client);
|
|
60
137
|
try {
|
|
61
|
-
await
|
|
138
|
+
await client.connect();
|
|
62
139
|
}
|
|
63
|
-
catch {
|
|
64
|
-
|
|
140
|
+
catch (cause) {
|
|
141
|
+
delayReconnect(accountId);
|
|
142
|
+
closeClient(accountId, client, "evict");
|
|
143
|
+
return Err(imapError(accountId, `connect failed: ${toErrorMessage(cause)}`, cause));
|
|
65
144
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
145
|
+
reconnectAfterById.delete(accountId);
|
|
146
|
+
liveById.set(accountId, client);
|
|
147
|
+
return Ok(client);
|
|
148
|
+
};
|
|
149
|
+
const pending = connectFresh();
|
|
150
|
+
connectingById.set(accountId, pending);
|
|
69
151
|
try {
|
|
70
|
-
await
|
|
152
|
+
return await pending;
|
|
71
153
|
}
|
|
72
|
-
|
|
73
|
-
|
|
154
|
+
finally {
|
|
155
|
+
connectingById.delete(accountId);
|
|
74
156
|
}
|
|
75
|
-
liveById.set(accountId, client);
|
|
76
|
-
return Ok(client);
|
|
77
157
|
};
|
|
78
158
|
const closeAll = async () => {
|
|
79
|
-
const closes = Array.from(liveById.
|
|
159
|
+
const closes = Array.from(liveById.entries()).map(async ([accountId, client]) => {
|
|
80
160
|
try {
|
|
81
|
-
await
|
|
161
|
+
await client.logout();
|
|
82
162
|
}
|
|
83
|
-
catch {
|
|
84
|
-
|
|
163
|
+
catch (cause) {
|
|
164
|
+
emitEvent({
|
|
165
|
+
kind: "closeError",
|
|
166
|
+
accountId,
|
|
167
|
+
phase: "shutdown",
|
|
168
|
+
message: toErrorMessage(cause),
|
|
169
|
+
});
|
|
170
|
+
closeClient(accountId, client, "shutdown");
|
|
85
171
|
}
|
|
86
172
|
});
|
|
87
173
|
await Promise.all(closes);
|
|
88
174
|
liveById.clear();
|
|
175
|
+
reconnectAfterById.clear();
|
|
89
176
|
};
|
|
90
177
|
return { forAccount, closeAll, accountIds: Array.from(byId.keys()) };
|
|
91
178
|
};
|
package/dist/imap/pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/imap/pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAgB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAkB,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/imap/pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diskdClient.js","sourceRoot":"","sources":["../../src/sdk/diskdClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAoB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAO3D,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,GAAW,EAAsB,EAAE;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,WAAoC,EACpC,cAAkC,EACC,EAAE;IACrC,gEAAgE;IAChE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"diskdClient.js","sourceRoot":"","sources":["../../src/sdk/diskdClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAoB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAO3D,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,GAAW,EAAsB,EAAE;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,WAAoC,EACpC,cAAkC,EACC,EAAE;IACrC,gEAAgE;IAChE,MAAM,WAAW,GAAG,WAAW,EAAE,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,cAAc,CAAC;IAChG,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,GAAG,CACR,WAAW,CACT,+IAA+I,CAChJ,CACF,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,4CAA4C;IAC5C,IAAI,WAAW,EAAE,OAAO;QAAE,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACzE,IAAI,WAAW,EAAE,QAAQ;QAAE,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE5E,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,GAAG,CACR,WAAW,CACT,8FAA8F,CAC/F,CACF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,GAAG,CACR,WAAW,CACT,4FAA4F,CAC7F,CACF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -56,7 +56,9 @@ const main = async () => {
|
|
|
56
56
|
}
|
|
57
57
|
log("sdk ready", { workspaceId: diskd.value.workspaceId });
|
|
58
58
|
const driveStore = buildDriveStore(diskd.value.messagesStore);
|
|
59
|
-
const pool = buildImapPool(cfg.value.accounts
|
|
59
|
+
const pool = buildImapPool(cfg.value.accounts, {
|
|
60
|
+
onEvent: (event) => log("imap.pool-event", event),
|
|
61
|
+
});
|
|
60
62
|
const syncDeps = {
|
|
61
63
|
drive: driveStore,
|
|
62
64
|
imap: {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/watcher.js
CHANGED
|
@@ -44,6 +44,12 @@ export const buildWatcher = (deps, accounts, watcher, log) => {
|
|
|
44
44
|
}
|
|
45
45
|
let timer = null;
|
|
46
46
|
let stopped = false;
|
|
47
|
+
const runTick = () => {
|
|
48
|
+
void tick().catch((cause) => {
|
|
49
|
+
const msg = cause?.message ?? String(cause);
|
|
50
|
+
log("watcher.tick-unhandled", { error: msg });
|
|
51
|
+
});
|
|
52
|
+
};
|
|
47
53
|
const runForAccount = async (acct) => {
|
|
48
54
|
const existing = inFlight.get(acct.name);
|
|
49
55
|
if (existing !== undefined) {
|
|
@@ -108,9 +114,9 @@ export const buildWatcher = (deps, accounts, watcher, log) => {
|
|
|
108
114
|
}
|
|
109
115
|
log("watcher.start", { intervalMs, accounts: accounts.map((a) => a.name) });
|
|
110
116
|
// Fire one tick immediately on boot so first sync does not wait a full interval.
|
|
111
|
-
|
|
117
|
+
runTick();
|
|
112
118
|
timer = setInterval(() => {
|
|
113
|
-
|
|
119
|
+
runTick();
|
|
114
120
|
}, intervalMs);
|
|
115
121
|
};
|
|
116
122
|
const stop = async () => {
|
package/dist/sync/watcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diskd-ai/email-client-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Drive-backed multi-account email MCP with reliable IMAP-to-mailboxes sync.",
|
|
5
5
|
"license": "LGPL-3.0-or-later",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
|
-
"email-client-mcp": "
|
|
8
|
+
"email-client-mcp": "dist/server.js"
|
|
9
9
|
},
|
|
10
10
|
"main": "./dist/server.js",
|
|
11
11
|
"files": [
|