fluxmail 0.19.1 → 0.20.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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -2
- package/dist/cli.js.map +1 -1
- package/dist/context.d.ts +3 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +14 -1
- package/dist/context.js.map +1 -1
- package/dist/http/app.d.ts +2 -0
- package/dist/http/app.d.ts.map +1 -1
- package/dist/http/app.js +4 -1
- package/dist/http/app.js.map +1 -1
- package/dist/http/rest.d.ts +2 -0
- package/dist/http/rest.d.ts.map +1 -1
- package/dist/http/rest.js +4 -3
- package/dist/http/rest.js.map +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +1 -0
- package/dist/lifecycle.js.map +1 -1
- package/dist/mcp/buildServer.d.ts +3 -0
- package/dist/mcp/buildServer.d.ts.map +1 -1
- package/dist/mcp/buildServer.js +7 -1
- package/dist/mcp/buildServer.js.map +1 -1
- package/dist/mcp/outputSchemas.d.ts +39 -0
- package/dist/mcp/outputSchemas.d.ts.map +1 -1
- package/dist/mcp/outputSchemas.js +11 -1
- package/dist/mcp/outputSchemas.js.map +1 -1
- package/dist/service/emailService.js +1 -1
- package/dist/service/emailService.js.map +1 -1
- package/dist/service/publicErrors.d.ts.map +1 -1
- package/dist/service/publicErrors.js +14 -12
- package/dist/service/publicErrors.js.map +1 -1
- package/dist/updateNotifier.d.ts +34 -1
- package/dist/updateNotifier.d.ts.map +1 -1
- package/dist/updateNotifier.js +71 -1
- package/dist/updateNotifier.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publicErrors.js","sourceRoot":"","sources":["../../src/service/publicErrors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"publicErrors.js","sourceRoot":"","sources":["../../src/service/publicErrors.ts"],"names":[],"mappings":"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"}
|
package/dist/updateNotifier.d.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { type Settings, type UpdateNotifier } from 'update-notifier';
|
|
2
|
+
import type { Logger } from './logging.js';
|
|
2
3
|
export declare const UPDATE_CHECK_INTERVAL_MS: number;
|
|
3
|
-
export declare const
|
|
4
|
+
export declare const SERVER_UPDATE_CHECK_INTERVAL_MS: number;
|
|
5
|
+
export declare const UPDATE_GUIDE_URL = "https://fluxmail.ai/docs/upgrade-fluxmail";
|
|
4
6
|
export interface CliUpdateNotifier {
|
|
5
7
|
notify(): void;
|
|
6
8
|
}
|
|
7
9
|
export type CliUpdateNotifierFactory = () => CliUpdateNotifier | undefined;
|
|
10
|
+
export interface AvailableUpdate {
|
|
11
|
+
currentVersion: string;
|
|
12
|
+
latestVersion: string;
|
|
13
|
+
instructionsUrl: string;
|
|
14
|
+
}
|
|
8
15
|
interface UpdateNotifierEnvironment {
|
|
9
16
|
env?: NodeJS.ProcessEnv;
|
|
10
17
|
stdoutIsTTY?: boolean;
|
|
@@ -12,6 +19,32 @@ interface UpdateNotifierEnvironment {
|
|
|
12
19
|
}
|
|
13
20
|
export declare function isNewerVersion(current: string, latest: string): boolean;
|
|
14
21
|
export declare function updateChecksAllowed(env?: NodeJS.ProcessEnv, stdoutIsTTY?: boolean): boolean;
|
|
22
|
+
/** Servers usually run without a terminal, often through npx or Docker, so only explicit opt-outs apply. */
|
|
23
|
+
export declare function serverUpdateChecksAllowed(env?: NodeJS.ProcessEnv): boolean;
|
|
24
|
+
/** Look up the latest release once, without delaying startup or letting a failure affect the server. */
|
|
25
|
+
export declare function startMcpUpdateCheck(options?: {
|
|
26
|
+
env?: NodeJS.ProcessEnv;
|
|
27
|
+
fetch?: typeof fetch;
|
|
28
|
+
currentVersion?: string;
|
|
29
|
+
}): () => AvailableUpdate | undefined;
|
|
30
|
+
/** Repeats the update check for a long-running server. Inert until start(). */
|
|
31
|
+
export declare class ServerUpdateCheck {
|
|
32
|
+
private readonly options;
|
|
33
|
+
private timer?;
|
|
34
|
+
private stopped;
|
|
35
|
+
private update?;
|
|
36
|
+
constructor(options?: {
|
|
37
|
+
logger?: Logger;
|
|
38
|
+
env?: NodeJS.ProcessEnv;
|
|
39
|
+
fetch?: typeof fetch;
|
|
40
|
+
currentVersion?: string;
|
|
41
|
+
});
|
|
42
|
+
/** Bound so it can be handed to request handlers directly. */
|
|
43
|
+
readonly available: () => AvailableUpdate | undefined;
|
|
44
|
+
start(): void;
|
|
45
|
+
stop(): void;
|
|
46
|
+
private check;
|
|
47
|
+
}
|
|
15
48
|
/** Create an npm update notifier without letting cache or registry failures affect the CLI. */
|
|
16
49
|
export declare function createCliUpdateNotifier(options?: UpdateNotifierEnvironment): CliUpdateNotifier | undefined;
|
|
17
50
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateNotifier.d.ts","sourceRoot":"","sources":["../src/updateNotifier.ts"],"names":[],"mappings":"AAAA,OAAuB,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"updateNotifier.d.ts","sourceRoot":"","sources":["../src/updateNotifier.ts"],"names":[],"mappings":"AAAA,OAAuB,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,eAAO,MAAM,wBAAwB,QAAuB,CAAC;AAC7D,eAAO,MAAM,+BAA+B,QAA+B,CAAC;AAC5E,eAAO,MAAM,gBAAgB,8CAA8C,CAAC;AAe5E,MAAM,WAAW,iBAAiB;IAChC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAE3E,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,yBAAyB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,cAAc,CAAC;CAC1D;AA8CD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAIvE;AAMD,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,WAAW,UAAgC,GAC1C,OAAO,CAOT;AAED,4GAA4G;AAC5G,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEvF;AAaD,wGAAwG;AACxG,wBAAgB,mBAAmB,CACjC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GACvF,MAAM,eAAe,GAAG,SAAS,CAanC;AAED,+EAA+E;AAC/E,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,KAAK,CAAC,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAkB;gBAGd,OAAO,GAAE;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;QACxB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;KACpB;IAGR,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,QAAO,eAAe,GAAG,SAAS,CAAgB;IAEpE,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI;YAKE,KAAK;CAiBpB;AAoBD,+FAA+F;AAC/F,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,yBAA8B,GAAG,iBAAiB,GAAG,SAAS,CAkC9G"}
|
package/dist/updateNotifier.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import updateNotifier from 'update-notifier';
|
|
2
2
|
import { VERSION } from './version.js';
|
|
3
3
|
export const UPDATE_CHECK_INTERVAL_MS = 24 * 60 * 60 * 1_000;
|
|
4
|
-
export const
|
|
4
|
+
export const SERVER_UPDATE_CHECK_INTERVAL_MS = 7 * UPDATE_CHECK_INTERVAL_MS;
|
|
5
|
+
export const UPDATE_GUIDE_URL = 'https://fluxmail.ai/docs/upgrade-fluxmail';
|
|
6
|
+
const LATEST_RELEASE_URL = 'https://registry.npmjs.org/fluxmail/latest';
|
|
7
|
+
const UPDATE_REQUEST_TIMEOUT_MS = 5_000;
|
|
5
8
|
const UPDATE_MESSAGE = `Fluxmail update available: {currentVersion} -> {latestVersion}\nUpdate instructions: ${UPDATE_GUIDE_URL}`;
|
|
6
9
|
const SEMVER_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
|
|
7
10
|
function parseVersion(version) {
|
|
@@ -68,6 +71,73 @@ export function updateChecksAllowed(env = process.env, stdoutIsTTY = process.std
|
|
|
68
71
|
}
|
|
69
72
|
return true;
|
|
70
73
|
}
|
|
74
|
+
/** Servers usually run without a terminal, often through npx or Docker, so only explicit opt-outs apply. */
|
|
75
|
+
export function serverUpdateChecksAllowed(env = process.env) {
|
|
76
|
+
return !('NO_UPDATE_NOTIFIER' in env) && env.NODE_ENV !== 'test' && !environmentValueIsEnabled(env.CI);
|
|
77
|
+
}
|
|
78
|
+
async function fetchAvailableUpdate(currentVersion, request) {
|
|
79
|
+
const response = await request(LATEST_RELEASE_URL, { signal: AbortSignal.timeout(UPDATE_REQUEST_TIMEOUT_MS) });
|
|
80
|
+
if (!response.ok)
|
|
81
|
+
throw new Error(`The npm registry returned ${response.status}.`);
|
|
82
|
+
const { version: latestVersion } = (await response.json());
|
|
83
|
+
if (typeof latestVersion !== 'string' || !isNewerVersion(currentVersion, latestVersion))
|
|
84
|
+
return undefined;
|
|
85
|
+
return { currentVersion, latestVersion, instructionsUrl: UPDATE_GUIDE_URL };
|
|
86
|
+
}
|
|
87
|
+
/** Look up the latest release once, without delaying startup or letting a failure affect the server. */
|
|
88
|
+
export function startMcpUpdateCheck(options = {}) {
|
|
89
|
+
const currentVersion = options.currentVersion ?? VERSION;
|
|
90
|
+
let update;
|
|
91
|
+
if (serverUpdateChecksAllowed(options.env)) {
|
|
92
|
+
fetchAvailableUpdate(currentVersion, options.fetch ?? fetch)
|
|
93
|
+
.then((available) => {
|
|
94
|
+
update = available;
|
|
95
|
+
})
|
|
96
|
+
.catch(() => {
|
|
97
|
+
// A registry failure must not affect the server.
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return () => update;
|
|
101
|
+
}
|
|
102
|
+
/** Repeats the update check for a long-running server. Inert until start(). */
|
|
103
|
+
export class ServerUpdateCheck {
|
|
104
|
+
options;
|
|
105
|
+
timer;
|
|
106
|
+
stopped = false;
|
|
107
|
+
update;
|
|
108
|
+
constructor(options = {}) {
|
|
109
|
+
this.options = options;
|
|
110
|
+
}
|
|
111
|
+
/** Bound so it can be handed to request handlers directly. */
|
|
112
|
+
available = () => this.update;
|
|
113
|
+
start() {
|
|
114
|
+
if (!serverUpdateChecksAllowed(this.options.env))
|
|
115
|
+
return;
|
|
116
|
+
void this.check();
|
|
117
|
+
this.timer = setInterval(() => void this.check(), SERVER_UPDATE_CHECK_INTERVAL_MS);
|
|
118
|
+
this.timer.unref();
|
|
119
|
+
}
|
|
120
|
+
stop() {
|
|
121
|
+
this.stopped = true;
|
|
122
|
+
clearInterval(this.timer);
|
|
123
|
+
}
|
|
124
|
+
async check() {
|
|
125
|
+
let update;
|
|
126
|
+
try {
|
|
127
|
+
update = await fetchAvailableUpdate(this.options.currentVersion ?? VERSION, this.options.fetch ?? fetch);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// A registry failure must not affect the server. Keep what the last check found.
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (this.stopped)
|
|
134
|
+
return;
|
|
135
|
+
if (update && update.latestVersion !== this.update?.latestVersion) {
|
|
136
|
+
this.options.logger?.warn('server.update_available', `Fluxmail update available: ${update.currentVersion} -> ${update.latestVersion}. Upgrade guide: ${update.instructionsUrl}`);
|
|
137
|
+
}
|
|
138
|
+
this.update = update;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
71
141
|
function removeNewExitListeners(existing) {
|
|
72
142
|
for (const listener of process.listeners('exit')) {
|
|
73
143
|
if (!existing.has(listener))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateNotifier.js","sourceRoot":"","sources":["../src/updateNotifier.ts"],"names":[],"mappings":"AAAA,OAAO,cAAsD,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"updateNotifier.js","sourceRoot":"","sources":["../src/updateNotifier.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fluxmail",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"mcpName": "io.github.fluxmailai/fluxmail",
|
|
5
5
|
"description": "Self-hosted email API with MCP and REST support for Gmail, Outlook, and IMAP/SMTP",
|
|
6
6
|
"keywords": [
|
|
@@ -81,10 +81,10 @@
|
|
|
81
81
|
"update-notifier": "7.3.1",
|
|
82
82
|
"zod": "^3.25.67",
|
|
83
83
|
"zod-to-json-schema": "3.25.2",
|
|
84
|
-
"@fluxmail/
|
|
85
|
-
"@fluxmail/
|
|
86
|
-
"@fluxmail/provider-imap": "0.
|
|
87
|
-
"@fluxmail/provider-outlook": "0.
|
|
84
|
+
"@fluxmail/core": "0.20.0",
|
|
85
|
+
"@fluxmail/provider-gmail": "0.20.0",
|
|
86
|
+
"@fluxmail/provider-imap": "0.20.0",
|
|
87
|
+
"@fluxmail/provider-outlook": "0.20.0"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@modelcontextprotocol/client": "2.4.0",
|