@himanshusinghs/mongodb-mcp-server 0.3.0 → 0.3.1-prerelease.2
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/README.md +108 -44
- package/dist/cjs/common/atlas/accessListUtils.d.ts +2 -1
- package/dist/cjs/common/atlas/accessListUtils.d.ts.map +1 -1
- package/dist/cjs/common/atlas/accessListUtils.js +4 -1
- package/dist/cjs/common/atlas/accessListUtils.js.map +1 -1
- package/dist/cjs/common/config.d.ts +9 -3
- package/dist/cjs/common/config.d.ts.map +1 -1
- package/dist/cjs/common/config.js +88 -5
- package/dist/cjs/common/config.js.map +1 -1
- package/dist/cjs/common/connectionErrorHandler.d.ts +18 -0
- package/dist/cjs/common/connectionErrorHandler.d.ts.map +1 -0
- package/dist/cjs/common/connectionErrorHandler.js +70 -0
- package/dist/cjs/common/connectionErrorHandler.js.map +1 -0
- package/dist/cjs/common/connectionManager.d.ts.map +1 -1
- package/dist/cjs/common/connectionManager.js +7 -11
- package/dist/cjs/common/connectionManager.js.map +1 -1
- package/dist/cjs/common/errors.d.ts +5 -4
- package/dist/cjs/common/errors.d.ts.map +1 -1
- package/dist/cjs/common/errors.js +1 -0
- package/dist/cjs/common/errors.js.map +1 -1
- package/dist/cjs/common/exportsManager.d.ts +1 -1
- package/dist/cjs/common/exportsManager.d.ts.map +1 -1
- package/dist/cjs/common/keychain.d.ts +22 -0
- package/dist/cjs/common/keychain.d.ts.map +1 -0
- package/dist/cjs/common/keychain.js +36 -0
- package/dist/cjs/common/keychain.js.map +1 -0
- package/dist/cjs/common/logger.d.ts +10 -2
- package/dist/cjs/common/logger.d.ts.map +1 -1
- package/dist/cjs/common/logger.js +20 -11
- package/dist/cjs/common/logger.js.map +1 -1
- package/dist/cjs/common/packageInfo.js +1 -1
- package/dist/cjs/common/packageInfo.js.map +1 -1
- package/dist/cjs/common/session.d.ts +4 -1
- package/dist/cjs/common/session.d.ts.map +1 -1
- package/dist/cjs/common/session.js +2 -1
- package/dist/cjs/common/session.js.map +1 -1
- package/dist/cjs/helpers/connectionOptions.js +3 -6
- package/dist/cjs/helpers/connectionOptions.js.map +1 -1
- package/dist/cjs/index.js +9 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib.d.ts +4 -1
- package/dist/cjs/lib.d.ts.map +1 -1
- package/dist/cjs/lib.js +6 -3
- package/dist/cjs/lib.js.map +1 -1
- package/dist/cjs/server.d.ts +4 -1
- package/dist/cjs/server.d.ts.map +1 -1
- package/dist/cjs/server.js +16 -5
- package/dist/cjs/server.js.map +1 -1
- package/dist/cjs/telemetry/eventCache.d.ts +11 -4
- package/dist/cjs/telemetry/eventCache.d.ts.map +1 -1
- package/dist/cjs/telemetry/eventCache.js +13 -6
- package/dist/cjs/telemetry/eventCache.js.map +1 -1
- package/dist/cjs/telemetry/telemetry.d.ts +9 -2
- package/dist/cjs/telemetry/telemetry.d.ts.map +1 -1
- package/dist/cjs/telemetry/telemetry.js +79 -42
- package/dist/cjs/telemetry/telemetry.js.map +1 -1
- package/dist/cjs/telemetry/types.d.ts +48 -0
- package/dist/cjs/telemetry/types.d.ts.map +1 -1
- package/dist/cjs/tools/atlas/connect/connectCluster.d.ts.map +1 -1
- package/dist/cjs/tools/atlas/connect/connectCluster.js +49 -25
- package/dist/cjs/tools/atlas/connect/connectCluster.js.map +1 -1
- package/dist/cjs/tools/atlas/create/createDBUser.d.ts.map +1 -1
- package/dist/cjs/tools/atlas/create/createDBUser.js +4 -0
- package/dist/cjs/tools/atlas/create/createDBUser.js.map +1 -1
- package/dist/cjs/tools/atlas/read/listProjects.js +1 -1
- package/dist/cjs/tools/atlas/read/listProjects.js.map +1 -1
- package/dist/cjs/tools/mongodb/mongodbTool.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/mongodbTool.js +11 -52
- package/dist/cjs/tools/mongodb/mongodbTool.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregate.d.ts +1 -0
- package/dist/cjs/tools/mongodb/read/aggregate.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregate.js +12 -0
- package/dist/cjs/tools/mongodb/read/aggregate.js.map +1 -1
- package/dist/cjs/tools/tool.d.ts.map +1 -1
- package/dist/cjs/tools/tool.js +11 -5
- package/dist/cjs/tools/tool.js.map +1 -1
- package/dist/cjs/transports/base.d.ts +14 -3
- package/dist/cjs/transports/base.d.ts.map +1 -1
- package/dist/cjs/transports/base.js +14 -5
- package/dist/cjs/transports/base.js.map +1 -1
- package/dist/cjs/transports/stdio.d.ts +2 -5
- package/dist/cjs/transports/stdio.d.ts.map +1 -1
- package/dist/cjs/transports/stdio.js +2 -3
- package/dist/cjs/transports/stdio.js.map +1 -1
- package/dist/cjs/transports/streamableHttp.d.ts +3 -5
- package/dist/cjs/transports/streamableHttp.d.ts.map +1 -1
- package/dist/cjs/transports/streamableHttp.js +18 -6
- package/dist/cjs/transports/streamableHttp.js.map +1 -1
- package/dist/esm/common/atlas/accessListUtils.d.ts +2 -1
- package/dist/esm/common/atlas/accessListUtils.d.ts.map +1 -1
- package/dist/esm/common/atlas/accessListUtils.js +4 -1
- package/dist/esm/common/atlas/accessListUtils.js.map +1 -1
- package/dist/esm/common/config.d.ts +9 -3
- package/dist/esm/common/config.d.ts.map +1 -1
- package/dist/esm/common/config.js +85 -4
- package/dist/esm/common/config.js.map +1 -1
- package/dist/esm/common/connectionErrorHandler.d.ts +18 -0
- package/dist/esm/common/connectionErrorHandler.d.ts.map +1 -0
- package/dist/esm/common/connectionErrorHandler.js +66 -0
- package/dist/esm/common/connectionErrorHandler.js.map +1 -0
- package/dist/esm/common/connectionManager.d.ts.map +1 -1
- package/dist/esm/common/connectionManager.js +6 -7
- package/dist/esm/common/connectionManager.js.map +1 -1
- package/dist/esm/common/errors.d.ts +5 -4
- package/dist/esm/common/errors.d.ts.map +1 -1
- package/dist/esm/common/errors.js +1 -0
- package/dist/esm/common/errors.js.map +1 -1
- package/dist/esm/common/exportsManager.d.ts +1 -1
- package/dist/esm/common/exportsManager.d.ts.map +1 -1
- package/dist/esm/common/keychain.d.ts +22 -0
- package/dist/esm/common/keychain.d.ts.map +1 -0
- package/dist/esm/common/keychain.js +31 -0
- package/dist/esm/common/keychain.js.map +1 -0
- package/dist/esm/common/logger.d.ts +10 -2
- package/dist/esm/common/logger.d.ts.map +1 -1
- package/dist/esm/common/logger.js +20 -11
- package/dist/esm/common/logger.js.map +1 -1
- package/dist/esm/common/packageInfo.js +1 -1
- package/dist/esm/common/packageInfo.js.map +1 -1
- package/dist/esm/common/session.d.ts +4 -1
- package/dist/esm/common/session.d.ts.map +1 -1
- package/dist/esm/common/session.js +2 -1
- package/dist/esm/common/session.js.map +1 -1
- package/dist/esm/helpers/connectionOptions.js +1 -1
- package/dist/esm/helpers/connectionOptions.js.map +1 -1
- package/dist/esm/index.js +9 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib.d.ts +4 -1
- package/dist/esm/lib.d.ts.map +1 -1
- package/dist/esm/lib.js +2 -1
- package/dist/esm/lib.js.map +1 -1
- package/dist/esm/server.d.ts +4 -1
- package/dist/esm/server.d.ts.map +1 -1
- package/dist/esm/server.js +16 -5
- package/dist/esm/server.js.map +1 -1
- package/dist/esm/telemetry/eventCache.d.ts +11 -4
- package/dist/esm/telemetry/eventCache.d.ts.map +1 -1
- package/dist/esm/telemetry/eventCache.js +13 -6
- package/dist/esm/telemetry/eventCache.js.map +1 -1
- package/dist/esm/telemetry/telemetry.d.ts +9 -2
- package/dist/esm/telemetry/telemetry.d.ts.map +1 -1
- package/dist/esm/telemetry/telemetry.js +79 -42
- package/dist/esm/telemetry/telemetry.js.map +1 -1
- package/dist/esm/telemetry/types.d.ts +48 -0
- package/dist/esm/telemetry/types.d.ts.map +1 -1
- package/dist/esm/tools/atlas/connect/connectCluster.d.ts.map +1 -1
- package/dist/esm/tools/atlas/connect/connectCluster.js +49 -25
- package/dist/esm/tools/atlas/connect/connectCluster.js.map +1 -1
- package/dist/esm/tools/atlas/create/createDBUser.d.ts.map +1 -1
- package/dist/esm/tools/atlas/create/createDBUser.js +4 -0
- package/dist/esm/tools/atlas/create/createDBUser.js.map +1 -1
- package/dist/esm/tools/atlas/read/listProjects.js +1 -1
- package/dist/esm/tools/atlas/read/listProjects.js.map +1 -1
- package/dist/esm/tools/mongodb/mongodbTool.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/mongodbTool.js +11 -52
- package/dist/esm/tools/mongodb/mongodbTool.js.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregate.d.ts +1 -0
- package/dist/esm/tools/mongodb/read/aggregate.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregate.js +12 -0
- package/dist/esm/tools/mongodb/read/aggregate.js.map +1 -1
- package/dist/esm/tools/tool.d.ts.map +1 -1
- package/dist/esm/tools/tool.js +11 -5
- package/dist/esm/tools/tool.js.map +1 -1
- package/dist/esm/transports/base.d.ts +14 -3
- package/dist/esm/transports/base.d.ts.map +1 -1
- package/dist/esm/transports/base.js +14 -5
- package/dist/esm/transports/base.js.map +1 -1
- package/dist/esm/transports/stdio.d.ts +2 -5
- package/dist/esm/transports/stdio.d.ts.map +1 -1
- package/dist/esm/transports/stdio.js +2 -3
- package/dist/esm/transports/stdio.js.map +1 -1
- package/dist/esm/transports/streamableHttp.d.ts +3 -5
- package/dist/esm/transports/streamableHttp.d.ts.map +1 -1
- package/dist/esm/transports/streamableHttp.js +18 -6
- package/dist/esm/transports/streamableHttp.js.map +1 -1
- package/package.json +5 -4
|
@@ -10,9 +10,10 @@ const logger_js_1 = require("./logger.js");
|
|
|
10
10
|
const events_1 = __importDefault(require("events"));
|
|
11
11
|
const errors_js_1 = require("./errors.js");
|
|
12
12
|
class Session extends events_1.default {
|
|
13
|
-
constructor({ apiBaseUrl, apiClientId, apiClientSecret, logger, connectionManager, exportsManager, }) {
|
|
13
|
+
constructor({ apiBaseUrl, apiClientId, apiClientSecret, logger, connectionManager, exportsManager, keychain, }) {
|
|
14
14
|
super();
|
|
15
15
|
this.sessionId = new bson_1.ObjectId().toString();
|
|
16
|
+
this.keychain = keychain;
|
|
16
17
|
this.logger = logger;
|
|
17
18
|
const credentials = apiClientId && apiClientSecret
|
|
18
19
|
? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/common/session.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAgC;AAEhC,uDAAiD;AAGjD,2CAAoC;AACpC,oDAAkC;AASlC,2CAAuD;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/common/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.setAppNameParamIfMissing = setAppNameParamIfMissing;
|
|
7
4
|
exports.validateConnectionString = validateConnectionString;
|
|
8
|
-
const mongodb_connection_string_url_1 =
|
|
5
|
+
const mongodb_connection_string_url_1 = require("mongodb-connection-string-url");
|
|
9
6
|
/**
|
|
10
7
|
* Sets the appName parameter with the extended format: appName--deviceId--clientName
|
|
11
8
|
* Only sets the appName if it's not already present in the connection string
|
|
@@ -14,7 +11,7 @@ const mongodb_connection_string_url_1 = __importDefault(require("mongodb-connect
|
|
|
14
11
|
* @returns The modified connection string
|
|
15
12
|
*/
|
|
16
13
|
async function setAppNameParamIfMissing({ connectionString, components, }) {
|
|
17
|
-
const connectionStringUrl = new mongodb_connection_string_url_1.
|
|
14
|
+
const connectionStringUrl = new mongodb_connection_string_url_1.ConnectionString(connectionString);
|
|
18
15
|
const searchParams = connectionStringUrl.typedSearchParams();
|
|
19
16
|
// Only set appName if it's not already present
|
|
20
17
|
if (searchParams.has("appName")) {
|
|
@@ -37,7 +34,7 @@ async function setAppNameParamIfMissing({ connectionString, components, }) {
|
|
|
37
34
|
*/
|
|
38
35
|
function validateConnectionString(connectionString, looseValidation) {
|
|
39
36
|
try {
|
|
40
|
-
new mongodb_connection_string_url_1.
|
|
37
|
+
new mongodb_connection_string_url_1.ConnectionString(connectionString, { looseValidation });
|
|
41
38
|
}
|
|
42
39
|
catch (error) {
|
|
43
40
|
throw new Error(`Invalid connection string with error: ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectionOptions.js","sourceRoot":"","sources":["../../../src/helpers/connectionOptions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connectionOptions.js","sourceRoot":"","sources":["../../../src/helpers/connectionOptions.ts"],"names":[],"mappings":";;AAgBA,4DAyBC;AASD,4DAQC;AAzDD,iFAAiE;AAQjE;;;;;;GAMG;AACI,KAAK,UAAU,wBAAwB,CAAC,EAC3C,gBAAgB,EAChB,UAAU,GAIb;IACG,MAAM,mBAAmB,GAAG,IAAI,gDAAgB,CAAC,gBAAgB,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,mBAAmB,CAAC,iBAAiB,EAAsB,CAAC;IAEjF,+CAA+C;IAC/C,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,mBAAmB,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC;IAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,SAAS,CAAC;IAEtD,mEAAmE;IACnE,MAAM,eAAe,GAAG,GAAG,OAAO,KAAK,QAAQ,KAAK,UAAU,EAAE,CAAC;IAEjE,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAE7C,OAAO,mBAAmB,CAAC,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,gBAAwB,EAAE,eAAwB;IACvF,IAAI,CAAC;QACD,IAAI,gDAAgB,CAAC,gBAAgB,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACX,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACpG,CAAC;IACN,CAAC;AACL,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -41,11 +41,18 @@ const packageInfo_js_1 = require("./common/packageInfo.js");
|
|
|
41
41
|
const stdio_js_1 = require("./transports/stdio.js");
|
|
42
42
|
const streamableHttp_js_1 = require("./transports/streamableHttp.js");
|
|
43
43
|
const devtools_proxy_support_1 = require("@mongodb-js/devtools-proxy-support");
|
|
44
|
+
const keychain_js_1 = require("./common/keychain.js");
|
|
44
45
|
async function main() {
|
|
45
46
|
(0, devtools_proxy_support_1.systemCA)().catch(() => undefined); // load system CA asynchronously as in mongosh
|
|
46
47
|
assertHelpMode();
|
|
47
48
|
assertVersionMode();
|
|
48
|
-
const transportRunner = config_js_1.config.transport === "stdio"
|
|
49
|
+
const transportRunner = config_js_1.config.transport === "stdio"
|
|
50
|
+
? new stdio_js_1.StdioRunner({
|
|
51
|
+
userConfig: config_js_1.config,
|
|
52
|
+
})
|
|
53
|
+
: new streamableHttp_js_1.StreamableHttpRunner({
|
|
54
|
+
userConfig: config_js_1.config,
|
|
55
|
+
});
|
|
49
56
|
const shutdown = () => {
|
|
50
57
|
transportRunner.logger.info({
|
|
51
58
|
id: logger_js_1.LogId.serverCloseRequested,
|
|
@@ -107,7 +114,7 @@ main().catch((error) => {
|
|
|
107
114
|
// At this point, we may be in a very broken state, so we can't rely on the logger
|
|
108
115
|
// being functional. Instead, create a brand new ConsoleLogger and log the error
|
|
109
116
|
// to the console.
|
|
110
|
-
const logger = new logger_js_1.ConsoleLogger();
|
|
117
|
+
const logger = new logger_js_1.ConsoleLogger(keychain_js_1.Keychain.root);
|
|
111
118
|
logger.emergency({
|
|
112
119
|
id: logger_js_1.LogId.serverStartFailure,
|
|
113
120
|
context: "server",
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,SAAS,qBAAqB;IAC1B,IAAI,SAA4B,CAAC;IACjC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE3D,IAAI,WAAW,EAAE,CAAC;QACd,IAAI,CAAC;YACD,2BAA2B;YAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACpB,SAAS,KAAT,SAAS,GAAK,GAAY,EAAC;QAC/B,CAAC;IACL,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QACd,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAClC,SAAS,GAAG,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC3F,CAAC;IACL,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CACT,gGAAgG,CACnG,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;QACpG,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,qBAAqB,EAAE,CAAC;AAExB,kDAA0D;AAC1D,kDAA4C;AAC5C,oDAA4B;AAC5B,4DAAsD;AACtD,oDAAoD;AACpD,sEAAsE;AACtE,+EAA8D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/lib.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ export { defaultUserConfig, type UserConfig } from "./common/config.js";
|
|
|
4
4
|
export { LoggerBase, type LogPayload, type LoggerType, type LogLevel } from "./common/logger.js";
|
|
5
5
|
export { StreamableHttpRunner } from "./transports/streamableHttp.js";
|
|
6
6
|
export { ConnectionManager, type AnyConnectionState, type ConnectionState, type ConnectionStateDisconnected, type ConnectionStateErrored, type ConnectionManagerFactoryFn, } from "./common/connectionManager.js";
|
|
7
|
+
export type { ConnectionErrorHandler, ConnectionErrorHandled, ConnectionErrorUnhandled, ConnectionErrorHandlerContext, } from "./common/connectionErrorHandler.js";
|
|
8
|
+
export { ErrorCodes } from "./common/errors.js";
|
|
7
9
|
export { Telemetry } from "./telemetry/telemetry.js";
|
|
8
|
-
export {
|
|
10
|
+
export { Keychain, registerGlobalSecretToRedact } from "./common/keychain.js";
|
|
11
|
+
export type { Secret } from "./common/keychain.js";
|
|
9
12
|
//# sourceMappingURL=lib.d.ts.map
|
package/dist/cjs/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EACH,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAClC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EACH,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAClC,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACR,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,GAChC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAC9E,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/cjs/lib.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.registerGlobalSecretToRedact = exports.Keychain = exports.Telemetry = exports.ErrorCodes = exports.ConnectionManager = exports.StreamableHttpRunner = exports.LoggerBase = exports.defaultUserConfig = exports.Session = exports.Server = void 0;
|
|
4
4
|
var server_js_1 = require("./server.js");
|
|
5
5
|
Object.defineProperty(exports, "Server", { enumerable: true, get: function () { return server_js_1.Server; } });
|
|
6
6
|
var session_js_1 = require("./common/session.js");
|
|
@@ -13,8 +13,11 @@ var streamableHttp_js_1 = require("./transports/streamableHttp.js");
|
|
|
13
13
|
Object.defineProperty(exports, "StreamableHttpRunner", { enumerable: true, get: function () { return streamableHttp_js_1.StreamableHttpRunner; } });
|
|
14
14
|
var connectionManager_js_1 = require("./common/connectionManager.js");
|
|
15
15
|
Object.defineProperty(exports, "ConnectionManager", { enumerable: true, get: function () { return connectionManager_js_1.ConnectionManager; } });
|
|
16
|
+
var errors_js_1 = require("./common/errors.js");
|
|
17
|
+
Object.defineProperty(exports, "ErrorCodes", { enumerable: true, get: function () { return errors_js_1.ErrorCodes; } });
|
|
16
18
|
var telemetry_js_1 = require("./telemetry/telemetry.js");
|
|
17
19
|
Object.defineProperty(exports, "Telemetry", { enumerable: true, get: function () { return telemetry_js_1.Telemetry; } });
|
|
18
|
-
var
|
|
19
|
-
Object.defineProperty(exports, "
|
|
20
|
+
var keychain_js_1 = require("./common/keychain.js");
|
|
21
|
+
Object.defineProperty(exports, "Keychain", { enumerable: true, get: function () { return keychain_js_1.Keychain; } });
|
|
22
|
+
Object.defineProperty(exports, "registerGlobalSecretToRedact", { enumerable: true, get: function () { return keychain_js_1.registerGlobalSecretToRedact; } });
|
|
20
23
|
//# sourceMappingURL=lib.js.map
|
package/dist/cjs/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":";;;AAAA,yCAAyD;AAAhD,mGAAA,MAAM,OAAA;AACf,kDAAmE;AAA1D,qGAAA,OAAO,OAAA;AAChB,gDAAwE;AAA/D,8GAAA,iBAAiB,OAAA;AAC1B,gDAAiG;AAAxF,uGAAA,UAAU,OAAA;AACnB,oEAAsE;AAA7D,yHAAA,oBAAoB,OAAA;AAC7B,sEAOuC;AANnC,yHAAA,iBAAiB,OAAA;
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":";;;AAAA,yCAAyD;AAAhD,mGAAA,MAAM,OAAA;AACf,kDAAmE;AAA1D,qGAAA,OAAO,OAAA;AAChB,gDAAwE;AAA/D,8GAAA,iBAAiB,OAAA;AAC1B,gDAAiG;AAAxF,uGAAA,UAAU,OAAA;AACnB,oEAAsE;AAA7D,yHAAA,oBAAoB,OAAA;AAC7B,sEAOuC;AANnC,yHAAA,iBAAiB,OAAA;AAarB,gDAAgD;AAAvC,uGAAA,UAAU,OAAA;AACnB,yDAAqD;AAA5C,yGAAA,SAAS,OAAA;AAClB,oDAA8E;AAArE,uGAAA,QAAQ,OAAA;AAAE,2HAAA,4BAA4B,OAAA"}
|
package/dist/cjs/server.d.ts
CHANGED
|
@@ -5,11 +5,13 @@ import type { LogLevel } from "./common/logger.js";
|
|
|
5
5
|
import type { Telemetry } from "./telemetry/telemetry.js";
|
|
6
6
|
import type { UserConfig } from "./common/config.js";
|
|
7
7
|
import type { ToolBase } from "./tools/tool.js";
|
|
8
|
+
import { type ConnectionErrorHandler } from "./common/connectionErrorHandler.js";
|
|
8
9
|
export interface ServerOptions {
|
|
9
10
|
session: Session;
|
|
10
11
|
userConfig: UserConfig;
|
|
11
12
|
mcpServer: McpServer;
|
|
12
13
|
telemetry: Telemetry;
|
|
14
|
+
connectionErrorHandler: ConnectionErrorHandler;
|
|
13
15
|
}
|
|
14
16
|
export declare class Server {
|
|
15
17
|
readonly session: Session;
|
|
@@ -17,11 +19,12 @@ export declare class Server {
|
|
|
17
19
|
private readonly telemetry;
|
|
18
20
|
readonly userConfig: UserConfig;
|
|
19
21
|
readonly tools: ToolBase[];
|
|
22
|
+
readonly connectionErrorHandler: ConnectionErrorHandler;
|
|
20
23
|
private _mcpLogLevel;
|
|
21
24
|
get mcpLogLevel(): LogLevel;
|
|
22
25
|
private readonly startTime;
|
|
23
26
|
private readonly subscriptions;
|
|
24
|
-
constructor({ session, mcpServer, userConfig, telemetry }: ServerOptions);
|
|
27
|
+
constructor({ session, mcpServer, userConfig, telemetry, connectionErrorHandler }: ServerOptions);
|
|
25
28
|
connect(transport: Transport): Promise<void>;
|
|
26
29
|
close(): Promise<void>;
|
|
27
30
|
sendResourceListChanged(): void;
|
package/dist/cjs/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAI/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAWrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAI/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAWrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEjF,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,sBAAsB,EAAE,sBAAsB,CAAC;CAClD;AAED,qBAAa,MAAM;IACf,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,SAAgB,UAAU,EAAE,UAAU,CAAC;IACvC,SAAgB,KAAK,EAAE,QAAQ,EAAE,CAAM;IACvC,SAAgB,sBAAsB,EAAE,sBAAsB,CAAC;IAE/D,OAAO,CAAC,YAAY,CAAqB;IAEzC,IAAW,WAAW,IAAI,QAAQ,CAEjC;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,EAAE,aAAa;IAS1F,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAyF5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,uBAAuB,IAAI,IAAI;IAI/B,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM7C;;;;OAIG;IACH,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,iBAAiB;YAOX,cAAc;YAiCd,+BAA+B;CAqBhD"}
|
package/dist/cjs/server.js
CHANGED
|
@@ -11,11 +11,12 @@ const logger_js_1 = require("./common/logger.js");
|
|
|
11
11
|
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
12
12
|
const assert_1 = __importDefault(require("assert"));
|
|
13
13
|
const connectionOptions_js_1 = require("./helpers/connectionOptions.js");
|
|
14
|
+
const packageInfo_js_1 = require("./common/packageInfo.js");
|
|
14
15
|
class Server {
|
|
15
16
|
get mcpLogLevel() {
|
|
16
17
|
return this._mcpLogLevel;
|
|
17
18
|
}
|
|
18
|
-
constructor({ session, mcpServer, userConfig, telemetry }) {
|
|
19
|
+
constructor({ session, mcpServer, userConfig, telemetry, connectionErrorHandler }) {
|
|
19
20
|
this.tools = [];
|
|
20
21
|
this._mcpLogLevel = "debug";
|
|
21
22
|
this.subscriptions = new Set();
|
|
@@ -24,6 +25,7 @@ class Server {
|
|
|
24
25
|
this.telemetry = telemetry;
|
|
25
26
|
this.mcpServer = mcpServer;
|
|
26
27
|
this.userConfig = userConfig;
|
|
28
|
+
this.connectionErrorHandler = connectionErrorHandler;
|
|
27
29
|
}
|
|
28
30
|
async connect(transport) {
|
|
29
31
|
// Resources are now reactive, so we register them ASAP so they can listen to events like
|
|
@@ -79,7 +81,7 @@ class Server {
|
|
|
79
81
|
this.session.logger.info({
|
|
80
82
|
id: logger_js_1.LogId.serverInitialized,
|
|
81
83
|
context: "server",
|
|
82
|
-
message: `Server started with transport ${transport.constructor.name} and agent runner ${this.session.mcpClient
|
|
84
|
+
message: `Server with version ${packageInfo_js_1.packageInfo.version} started with transport ${transport.constructor.name} and agent runner ${JSON.stringify(this.session.mcpClient)}`,
|
|
83
85
|
});
|
|
84
86
|
this.emitServerEvent("start", Date.now() - this.startTime);
|
|
85
87
|
};
|
|
@@ -135,7 +137,7 @@ class Server {
|
|
|
135
137
|
event.properties.reason = error.message;
|
|
136
138
|
}
|
|
137
139
|
}
|
|
138
|
-
this.telemetry.emitEvents([event])
|
|
140
|
+
this.telemetry.emitEvents([event]);
|
|
139
141
|
}
|
|
140
142
|
registerTools() {
|
|
141
143
|
for (const toolConstructor of [...tools_js_1.AtlasTools, ...tools_js_2.MongoDbTools]) {
|
|
@@ -180,13 +182,22 @@ class Server {
|
|
|
180
182
|
async connectToConfigConnectionString() {
|
|
181
183
|
if (this.userConfig.connectionString) {
|
|
182
184
|
try {
|
|
185
|
+
this.session.logger.info({
|
|
186
|
+
id: logger_js_1.LogId.mongodbConnectTry,
|
|
187
|
+
context: "server",
|
|
188
|
+
message: `Detected a MongoDB connection string in the configuration, trying to connect...`,
|
|
189
|
+
});
|
|
183
190
|
await this.session.connectToMongoDB({
|
|
184
191
|
connectionString: this.userConfig.connectionString,
|
|
185
192
|
});
|
|
186
193
|
}
|
|
187
194
|
catch (error) {
|
|
188
|
-
|
|
189
|
-
|
|
195
|
+
// We don't throw an error here because we want to allow the server to start even if the connection string is invalid.
|
|
196
|
+
this.session.logger.error({
|
|
197
|
+
id: logger_js_1.LogId.mongodbConnectFailure,
|
|
198
|
+
context: "server",
|
|
199
|
+
message: `Failed to connect to MongoDB instance using the connection string from the config: ${error instanceof Error ? error.message : String(error)}`,
|
|
200
|
+
});
|
|
190
201
|
}
|
|
191
202
|
}
|
|
192
203
|
}
|
package/dist/cjs/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;;;;;AAGA,qDAAoD;AACpD,uDAAwD;AACxD,2DAAqD;AAErD,kDAAsD;AAMtD,iEAK4C;AAC5C,oDAA4B;AAE5B,yEAA0E;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,10 +16,17 @@ export declare class EventCache {
|
|
|
16
16
|
*/
|
|
17
17
|
static getInstance(): EventCache;
|
|
18
18
|
/**
|
|
19
|
-
* Gets
|
|
19
|
+
* Gets the number of currently cached events
|
|
20
|
+
*/
|
|
21
|
+
get size(): number;
|
|
22
|
+
/**
|
|
23
|
+
* Gets a copy of the currently cached events along with their ids
|
|
20
24
|
* @returns Array of cached BaseEvent objects
|
|
21
25
|
*/
|
|
22
|
-
getEvents():
|
|
26
|
+
getEvents(): {
|
|
27
|
+
id: number;
|
|
28
|
+
event: BaseEvent;
|
|
29
|
+
}[];
|
|
23
30
|
/**
|
|
24
31
|
* Appends new events to the cached events
|
|
25
32
|
* LRU cache automatically handles dropping oldest events when limit is exceeded
|
|
@@ -27,8 +34,8 @@ export declare class EventCache {
|
|
|
27
34
|
*/
|
|
28
35
|
appendEvents(events: BaseEvent[]): void;
|
|
29
36
|
/**
|
|
30
|
-
*
|
|
37
|
+
* Removes cached events by their ids
|
|
31
38
|
*/
|
|
32
|
-
|
|
39
|
+
removeEvents(ids: number[]): void;
|
|
33
40
|
}
|
|
34
41
|
//# sourceMappingURL=eventCache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventCache.d.ts","sourceRoot":"","sources":["../../../src/telemetry/eventCache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAE1C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAAK;;IAWnB;;;OAGG;WACW,WAAW,IAAI,UAAU;IAOvC;;;OAGG;IACI,SAAS,IAAI,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"eventCache.d.ts","sourceRoot":"","sources":["../../../src/telemetry/eventCache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAE1C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAAK;;IAWnB;;;OAGG;WACW,WAAW,IAAI,UAAU;IAOvC;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;OAGG;IACI,SAAS,IAAI;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,EAAE;IAItD;;;;OAIG;IACI,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;IAM9C;;OAEG;IACI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI;CAK3C"}
|
|
@@ -28,11 +28,17 @@ class EventCache {
|
|
|
28
28
|
return EventCache.instance;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
* Gets
|
|
31
|
+
* Gets the number of currently cached events
|
|
32
|
+
*/
|
|
33
|
+
get size() {
|
|
34
|
+
return this.cache.size;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Gets a copy of the currently cached events along with their ids
|
|
32
38
|
* @returns Array of cached BaseEvent objects
|
|
33
39
|
*/
|
|
34
40
|
getEvents() {
|
|
35
|
-
return Array.from(this.cache.
|
|
41
|
+
return Array.from(this.cache.entries()).map(([id, event]) => ({ id, event }));
|
|
36
42
|
}
|
|
37
43
|
/**
|
|
38
44
|
* Appends new events to the cached events
|
|
@@ -45,11 +51,12 @@ class EventCache {
|
|
|
45
51
|
}
|
|
46
52
|
}
|
|
47
53
|
/**
|
|
48
|
-
*
|
|
54
|
+
* Removes cached events by their ids
|
|
49
55
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
56
|
+
removeEvents(ids) {
|
|
57
|
+
for (const id of ids) {
|
|
58
|
+
this.cache.delete(id);
|
|
59
|
+
}
|
|
53
60
|
}
|
|
54
61
|
}
|
|
55
62
|
exports.EventCache = EventCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventCache.js","sourceRoot":"","sources":["../../../src/telemetry/eventCache.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAGrC;;;;GAIG;AACH,MAAa,UAAU;IAOnB;QAFQ,WAAM,GAAG,CAAC,CAAC;QAGf,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAQ,CAAC;YACtB,GAAG,EAAE,UAAU,CAAC,UAAU;YAC1B,0CAA0C;YAC1C,UAAU,EAAE,KAAK;YACjB,cAAc,EAAE,KAAK;SACxB,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACvB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACI,SAAS;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"eventCache.js","sourceRoot":"","sources":["../../../src/telemetry/eventCache.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAGrC;;;;GAIG;AACH,MAAa,UAAU;IAOnB;QAFQ,WAAM,GAAG,CAAC,CAAC;QAGf,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAQ,CAAC;YACtB,GAAG,EAAE,UAAU,CAAC,UAAU;YAC1B,0CAA0C;YAC1C,UAAU,EAAE,KAAK;YACjB,cAAc,EAAE,KAAK;SACxB,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACvB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACI,SAAS;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,MAAmB;QACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,GAAa;QAC7B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;;AA5DL,gCA6DC;AA3D2B,qBAAU,GAAG,IAAI,AAAP,CAAQ"}
|
|
@@ -3,6 +3,12 @@ import type { BaseEvent, CommonProperties } from "./types.js";
|
|
|
3
3
|
import type { UserConfig } from "../common/config.js";
|
|
4
4
|
import { EventCache } from "./eventCache.js";
|
|
5
5
|
import type { DeviceId } from "../helpers/deviceId.js";
|
|
6
|
+
import { EventEmitter } from "events";
|
|
7
|
+
export interface TelemetryEvents {
|
|
8
|
+
"events-emitted": [];
|
|
9
|
+
"events-send-failed": [];
|
|
10
|
+
"events-skipped": [];
|
|
11
|
+
}
|
|
6
12
|
export declare class Telemetry {
|
|
7
13
|
private readonly session;
|
|
8
14
|
private readonly userConfig;
|
|
@@ -10,12 +16,13 @@ export declare class Telemetry {
|
|
|
10
16
|
private isBufferingEvents;
|
|
11
17
|
/** Resolves when the setup is complete or a timeout occurs */
|
|
12
18
|
setupPromise: Promise<[string, boolean]> | undefined;
|
|
19
|
+
readonly events: EventEmitter<TelemetryEvents>;
|
|
13
20
|
private eventCache;
|
|
14
21
|
private deviceId;
|
|
15
22
|
private constructor();
|
|
16
23
|
static create(session: Session, userConfig: UserConfig, deviceId: DeviceId, { commonProperties, eventCache, }?: {
|
|
24
|
+
commonProperties?: Partial<CommonProperties>;
|
|
17
25
|
eventCache?: EventCache;
|
|
18
|
-
commonProperties?: CommonProperties;
|
|
19
26
|
}): Telemetry;
|
|
20
27
|
private setup;
|
|
21
28
|
close(): Promise<void>;
|
|
@@ -23,7 +30,7 @@ export declare class Telemetry {
|
|
|
23
30
|
* Emits events through the telemetry pipeline
|
|
24
31
|
* @param events - The events to emit
|
|
25
32
|
*/
|
|
26
|
-
emitEvents(events: BaseEvent[]):
|
|
33
|
+
emitEvents(events: BaseEvent[]): void;
|
|
27
34
|
/**
|
|
28
35
|
* Gets the common properties for events
|
|
29
36
|
* @returns Object containing common properties for all events
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/telemetry/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/telemetry/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAOtC,MAAM,WAAW,eAAe;IAC5B,gBAAgB,EAAE,EAAE,CAAC;IACrB,oBAAoB,EAAE,EAAE,CAAC;IACzB,gBAAgB,EAAE,EAAE,CAAC;CACxB;AAED,qBAAa,SAAS;IAUd,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAXrC,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,8DAA8D;IACvD,YAAY,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAC5D,SAAgB,MAAM,EAAE,YAAY,CAAC,eAAe,CAAC,CAAsB;IAE3E,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO;IAUP,MAAM,CAAC,MAAM,CACT,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,EACI,gBAAqB,EACrB,UAAqC,GACxC,GAAE;QACC,gBAAgB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC7C,UAAU,CAAC,EAAE,UAAU,CAAC;KACtB,GACP,SAAS;YAcE,KAAK;IAoBN,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BnC;;;OAGG;IACI,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;IAW5C;;;OAGG;IACI,mBAAmB,IAAI,gBAAgB;IAY9C;;;;;;OAMG;IACI,kBAAkB,IAAI,OAAO;IAUpC;;;OAGG;YACW,IAAI;IA8ClB;;OAEG;YACW,UAAU;CAgB3B"}
|
|
@@ -5,22 +5,37 @@ const logger_js_1 = require("../common/logger.js");
|
|
|
5
5
|
const constants_js_1 = require("./constants.js");
|
|
6
6
|
const eventCache_js_1 = require("./eventCache.js");
|
|
7
7
|
const container_js_1 = require("../helpers/container.js");
|
|
8
|
+
const events_1 = require("events");
|
|
8
9
|
class Telemetry {
|
|
9
10
|
constructor(session, userConfig, commonProperties, { eventCache, deviceId }) {
|
|
10
11
|
this.session = session;
|
|
11
12
|
this.userConfig = userConfig;
|
|
12
13
|
this.commonProperties = commonProperties;
|
|
13
14
|
this.isBufferingEvents = true;
|
|
15
|
+
this.events = new events_1.EventEmitter();
|
|
14
16
|
this.eventCache = eventCache;
|
|
15
17
|
this.deviceId = deviceId;
|
|
16
18
|
}
|
|
17
|
-
static create(session, userConfig, deviceId, { commonProperties = {
|
|
18
|
-
const
|
|
19
|
+
static create(session, userConfig, deviceId, { commonProperties = {}, eventCache = eventCache_js_1.EventCache.getInstance(), } = {}) {
|
|
20
|
+
const mergedProperties = {
|
|
21
|
+
...constants_js_1.MACHINE_METADATA,
|
|
22
|
+
...commonProperties,
|
|
23
|
+
};
|
|
24
|
+
const instance = new Telemetry(session, userConfig, mergedProperties, {
|
|
25
|
+
eventCache,
|
|
26
|
+
deviceId,
|
|
27
|
+
});
|
|
19
28
|
void instance.setup();
|
|
20
29
|
return instance;
|
|
21
30
|
}
|
|
22
31
|
async setup() {
|
|
23
32
|
if (!this.isTelemetryEnabled()) {
|
|
33
|
+
this.session.logger.info({
|
|
34
|
+
id: logger_js_1.LogId.telemetryEmitFailure,
|
|
35
|
+
context: "telemetry",
|
|
36
|
+
message: "Telemetry is disabled.",
|
|
37
|
+
noRedaction: true,
|
|
38
|
+
});
|
|
24
39
|
return;
|
|
25
40
|
}
|
|
26
41
|
this.setupPromise = Promise.all([this.deviceId.get(), (0, container_js_1.detectContainerEnv)()]);
|
|
@@ -31,33 +46,42 @@ class Telemetry {
|
|
|
31
46
|
}
|
|
32
47
|
async close() {
|
|
33
48
|
this.isBufferingEvents = false;
|
|
34
|
-
|
|
49
|
+
this.session.logger.debug({
|
|
50
|
+
id: logger_js_1.LogId.telemetryClose,
|
|
51
|
+
message: `Closing telemetry and flushing ${this.eventCache.size} events`,
|
|
52
|
+
context: "telemetry",
|
|
53
|
+
});
|
|
54
|
+
// Wait up to 5 seconds for events to be sent before closing, but don't throw if it times out
|
|
55
|
+
const flushMaxWaitTime = 5000;
|
|
56
|
+
let flushTimeout;
|
|
57
|
+
await Promise.race([
|
|
58
|
+
new Promise((resolve) => {
|
|
59
|
+
flushTimeout = setTimeout(() => {
|
|
60
|
+
this.session.logger.debug({
|
|
61
|
+
id: logger_js_1.LogId.telemetryClose,
|
|
62
|
+
message: `Failed to flush remaining events within ${flushMaxWaitTime}ms timeout`,
|
|
63
|
+
context: "telemetry",
|
|
64
|
+
});
|
|
65
|
+
resolve();
|
|
66
|
+
}, flushMaxWaitTime);
|
|
67
|
+
flushTimeout.unref();
|
|
68
|
+
}),
|
|
69
|
+
this.emit([]),
|
|
70
|
+
]);
|
|
71
|
+
clearTimeout(flushTimeout);
|
|
35
72
|
}
|
|
36
73
|
/**
|
|
37
74
|
* Emits events through the telemetry pipeline
|
|
38
75
|
* @param events - The events to emit
|
|
39
76
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
id: logger_js_1.LogId.telemetryEmitFailure,
|
|
45
|
-
context: "telemetry",
|
|
46
|
-
message: "Telemetry is disabled.",
|
|
47
|
-
noRedaction: true,
|
|
48
|
-
});
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
await this.emit(events);
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
this.session.logger.debug({
|
|
55
|
-
id: logger_js_1.LogId.telemetryEmitFailure,
|
|
56
|
-
context: "telemetry",
|
|
57
|
-
message: "Error emitting telemetry events.",
|
|
58
|
-
noRedaction: true,
|
|
59
|
-
});
|
|
77
|
+
emitEvents(events) {
|
|
78
|
+
if (!this.isTelemetryEnabled()) {
|
|
79
|
+
this.events.emit("events-skipped");
|
|
80
|
+
return;
|
|
60
81
|
}
|
|
82
|
+
// Don't wait for events to be sent - we should not block regular server
|
|
83
|
+
// operations on telemetry
|
|
84
|
+
void this.emit(events);
|
|
61
85
|
}
|
|
62
86
|
/**
|
|
63
87
|
* Gets the common properties for events
|
|
@@ -98,29 +122,42 @@ class Telemetry {
|
|
|
98
122
|
this.eventCache.appendEvents(events);
|
|
99
123
|
return;
|
|
100
124
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
id: logger_js_1.LogId.telemetryEmitStart,
|
|
105
|
-
context: "telemetry",
|
|
106
|
-
message: `Attempting to send ${allEvents.length} events (${cachedEvents.length} cached)`,
|
|
107
|
-
});
|
|
108
|
-
const result = await this.sendEvents(this.session.apiClient, allEvents);
|
|
109
|
-
if (result.success) {
|
|
110
|
-
this.eventCache.clearEvents();
|
|
125
|
+
try {
|
|
126
|
+
const cachedEvents = this.eventCache.getEvents();
|
|
127
|
+
const allEvents = [...cachedEvents.map((e) => e.event), ...events];
|
|
111
128
|
this.session.logger.debug({
|
|
112
|
-
id: logger_js_1.LogId.
|
|
129
|
+
id: logger_js_1.LogId.telemetryEmitStart,
|
|
113
130
|
context: "telemetry",
|
|
114
|
-
message: `
|
|
131
|
+
message: `Attempting to send ${allEvents.length} events (${cachedEvents.length} cached)`,
|
|
115
132
|
});
|
|
116
|
-
|
|
133
|
+
const result = await this.sendEvents(this.session.apiClient, allEvents);
|
|
134
|
+
if (result.success) {
|
|
135
|
+
this.eventCache.removeEvents(cachedEvents.map((e) => e.id));
|
|
136
|
+
this.session.logger.debug({
|
|
137
|
+
id: logger_js_1.LogId.telemetryEmitSuccess,
|
|
138
|
+
context: "telemetry",
|
|
139
|
+
message: `Sent ${allEvents.length} events successfully: ${JSON.stringify(allEvents)}`,
|
|
140
|
+
});
|
|
141
|
+
this.events.emit("events-emitted");
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
this.session.logger.debug({
|
|
145
|
+
id: logger_js_1.LogId.telemetryEmitFailure,
|
|
146
|
+
context: "telemetry",
|
|
147
|
+
message: `Error sending event to client: ${result.error instanceof Error ? result.error.message : String(result.error)}`,
|
|
148
|
+
});
|
|
149
|
+
this.eventCache.appendEvents(events);
|
|
150
|
+
this.events.emit("events-send-failed");
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
this.session.logger.debug({
|
|
154
|
+
id: logger_js_1.LogId.telemetryEmitFailure,
|
|
155
|
+
context: "telemetry",
|
|
156
|
+
message: `Error emitting telemetry events: ${error instanceof Error ? error.message : String(error)}`,
|
|
157
|
+
noRedaction: true,
|
|
158
|
+
});
|
|
159
|
+
this.events.emit("events-send-failed");
|
|
117
160
|
}
|
|
118
|
-
this.session.logger.debug({
|
|
119
|
-
id: logger_js_1.LogId.telemetryEmitFailure,
|
|
120
|
-
context: "telemetry",
|
|
121
|
-
message: `Error sending event to client: ${result.error instanceof Error ? result.error.message : String(result.error)}`,
|
|
122
|
-
});
|
|
123
|
-
this.eventCache.appendEvents(events);
|
|
124
161
|
}
|
|
125
162
|
/**
|
|
126
163
|
* Attempts to send events through the provided API client
|