diff --git a/src/common/atlas/apiClient.ts b/src/common/atlas/apiClient.ts index c45f565d..a587d04a 100644 --- a/src/common/atlas/apiClient.ts +++ b/src/common/atlas/apiClient.ts @@ -4,8 +4,8 @@ import { AccessToken, ClientCredentials } from "simple-oauth2"; import { ApiClientError } from "./apiClientError.js"; import { paths, operations } from "./openapi.js"; import { CommonProperties, TelemetryEvent } from "../../telemetry/types.js"; -import { packageInfo } from "../../helpers/packageInfo.js"; -import logger, { LogId } from "../../logger.js"; +import { packageInfo } from "../packageInfo.js"; +import logger, { LogId } from "../logger.js"; const ATLAS_API_VERSION = "2025-03-12"; diff --git a/src/common/atlas/cluster.ts b/src/common/atlas/cluster.ts index 793cd99b..a85e2d6f 100644 --- a/src/common/atlas/cluster.ts +++ b/src/common/atlas/cluster.ts @@ -1,6 +1,6 @@ import { ClusterDescription20240805, FlexClusterDescription20241113 } from "./openapi.js"; import { ApiClient } from "./apiClient.js"; -import logger, { LogId } from "../../logger.js"; +import logger, { LogId } from "../logger.js"; export interface Cluster { name?: string; diff --git a/src/config.ts b/src/common/config.ts similarity index 100% rename from src/config.ts rename to src/common/config.ts diff --git a/src/errors.ts b/src/common/errors.ts similarity index 100% rename from src/errors.ts rename to src/common/errors.ts diff --git a/src/logger.ts b/src/common/logger.ts similarity index 100% rename from src/logger.ts rename to src/common/logger.ts diff --git a/src/helpers/packageInfo.ts b/src/common/packageInfo.ts similarity index 100% rename from src/helpers/packageInfo.ts rename to src/common/packageInfo.ts diff --git a/src/session.ts b/src/common/session.ts similarity index 94% rename from src/session.ts rename to src/common/session.ts index eafec2a2..dfae6ec9 100644 --- a/src/session.ts +++ b/src/common/session.ts @@ -1,11 +1,11 @@ import { NodeDriverServiceProvider } from "@mongosh/service-provider-node-driver"; -import { ApiClient, ApiClientCredentials } from "./common/atlas/apiClient.js"; +import { ApiClient, ApiClientCredentials } from "./atlas/apiClient.js"; import { Implementation } from "@modelcontextprotocol/sdk/types.js"; import logger, { LogId } from "./logger.js"; import EventEmitter from "events"; import { ConnectOptions } from "./config.js"; -import { setAppNameParamIfMissing } from "./helpers/connectionOptions.js"; -import { packageInfo } from "./helpers/packageInfo.js"; +import { setAppNameParamIfMissing } from "../helpers/connectionOptions.js"; +import { packageInfo } from "./packageInfo.js"; export interface SessionOptions { apiBaseUrl: string; diff --git a/src/common/container.ts b/src/helpers/container.ts similarity index 100% rename from src/common/container.ts rename to src/helpers/container.ts diff --git a/src/common/atlas/generatePassword.ts b/src/helpers/generatePassword.ts similarity index 100% rename from src/common/atlas/generatePassword.ts rename to src/helpers/generatePassword.ts diff --git a/src/helpers/indexCheck.ts b/src/helpers/indexCheck.ts index 22bba447..6b7ba09d 100644 --- a/src/helpers/indexCheck.ts +++ b/src/helpers/indexCheck.ts @@ -1,6 +1,6 @@ import { Document } from "mongodb"; import { NodeDriverServiceProvider } from "@mongosh/service-provider-node-driver"; -import { ErrorCodes, MongoDBError } from "../errors.js"; +import { ErrorCodes, MongoDBError } from "../common/errors.js"; /** * Check if the query plan uses an index diff --git a/src/index.ts b/src/index.ts index 02f9ca36..f94c4371 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,11 @@ #!/usr/bin/env node -import logger, { LogId } from "./logger.js"; +import logger, { LogId } from "./common/logger.js"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { config } from "./config.js"; -import { Session } from "./session.js"; +import { config } from "./common/config.js"; +import { Session } from "./common/session.js"; import { Server } from "./server.js"; -import { packageInfo } from "./helpers/packageInfo.js"; +import { packageInfo } from "./common/packageInfo.js"; import { Telemetry } from "./telemetry/telemetry.js"; import { createEJsonTransport } from "./helpers/EJsonTransport.js"; diff --git a/src/server.ts b/src/server.ts index c32dc367..3c65d2e3 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1,17 +1,17 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { Session } from "./session.js"; +import { Session } from "./common/session.js"; import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js"; import { AtlasTools } from "./tools/atlas/tools.js"; import { MongoDbTools } from "./tools/mongodb/tools.js"; -import logger, { setStdioPreset, setContainerPreset, LogId } from "./logger.js"; +import logger, { setStdioPreset, setContainerPreset, LogId } from "./common/logger.js"; import { ObjectId } from "mongodb"; import { Telemetry } from "./telemetry/telemetry.js"; -import { UserConfig } from "./config.js"; +import { UserConfig } from "./common/config.js"; import { type ServerEvent } from "./telemetry/types.js"; import { type ServerCommand } from "./telemetry/types.js"; import { CallToolRequestSchema, CallToolResult } from "@modelcontextprotocol/sdk/types.js"; import assert from "assert"; -import { detectContainerEnv } from "./common/container.js"; +import { detectContainerEnv } from "./helpers/container.js"; import { ToolBase } from "./tools/tool.js"; export interface ServerOptions { diff --git a/src/telemetry/constants.ts b/src/telemetry/constants.ts index 9dd1cc76..6b18d0fe 100644 --- a/src/telemetry/constants.ts +++ b/src/telemetry/constants.ts @@ -1,4 +1,4 @@ -import { packageInfo } from "../helpers/packageInfo.js"; +import { packageInfo } from "../common/packageInfo.js"; import { type CommonStaticProperties } from "./types.js"; /** diff --git a/src/telemetry/telemetry.ts b/src/telemetry/telemetry.ts index f1e24e20..80385843 100644 --- a/src/telemetry/telemetry.ts +++ b/src/telemetry/telemetry.ts @@ -1,13 +1,13 @@ -import { Session } from "../session.js"; +import { Session } from "../common/session.js"; import { BaseEvent, CommonProperties } from "./types.js"; -import { UserConfig } from "../config.js"; -import logger, { LogId } from "../logger.js"; +import { UserConfig } from "../common/config.js"; +import logger, { LogId } from "../common/logger.js"; import { ApiClient } from "../common/atlas/apiClient.js"; import { MACHINE_METADATA } from "./constants.js"; import { EventCache } from "./eventCache.js"; import nodeMachineId from "node-machine-id"; import { getDeviceId } from "@mongodb-js/device-id"; -import { detectContainerEnv } from "../common/container.js"; +import { detectContainerEnv } from "../helpers/container.js"; type EventResult = { success: boolean; diff --git a/src/tools/atlas/atlasTool.ts b/src/tools/atlas/atlasTool.ts index eb7c2f1f..21ae7e8c 100644 --- a/src/tools/atlas/atlasTool.ts +++ b/src/tools/atlas/atlasTool.ts @@ -1,7 +1,7 @@ import { ToolBase, ToolCategory, TelemetryToolMetadata, ToolArgs } from "../tool.js"; import { ToolCallback } from "@modelcontextprotocol/sdk/server/mcp.js"; import { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; -import logger, { LogId } from "../../logger.js"; +import logger, { LogId } from "../../common/logger.js"; import { z } from "zod"; import { ApiClientError } from "../../common/atlas/apiClientError.js"; diff --git a/src/tools/atlas/connect/connectCluster.ts b/src/tools/atlas/connect/connectCluster.ts index 31113e82..d8cda77d 100644 --- a/src/tools/atlas/connect/connectCluster.ts +++ b/src/tools/atlas/connect/connectCluster.ts @@ -2,8 +2,8 @@ import { z } from "zod"; import { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; import { AtlasToolBase } from "../atlasTool.js"; import { ToolArgs, OperationType } from "../../tool.js"; -import { generateSecurePassword } from "../../../common/atlas/generatePassword.js"; -import logger, { LogId } from "../../../logger.js"; +import { generateSecurePassword } from "../../../helpers/generatePassword.js"; +import logger, { LogId } from "../../../common/logger.js"; import { inspectCluster } from "../../../common/atlas/cluster.js"; const EXPIRY_MS = 1000 * 60 * 60 * 12; // 12 hours diff --git a/src/tools/atlas/create/createDBUser.ts b/src/tools/atlas/create/createDBUser.ts index fef9d513..d2133a04 100644 --- a/src/tools/atlas/create/createDBUser.ts +++ b/src/tools/atlas/create/createDBUser.ts @@ -3,7 +3,7 @@ import { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; import { AtlasToolBase } from "../atlasTool.js"; import { ToolArgs, OperationType } from "../../tool.js"; import { CloudDatabaseUser, DatabaseUserRole } from "../../../common/atlas/openapi.js"; -import { generateSecurePassword } from "../../../common/atlas/generatePassword.js"; +import { generateSecurePassword } from "../../../helpers/generatePassword.js"; export class CreateDBUserTool extends AtlasToolBase { public name = "atlas-create-db-user"; diff --git a/src/tools/mongodb/connect/connect.ts b/src/tools/mongodb/connect/connect.ts index e8de9333..c2100689 100644 --- a/src/tools/mongodb/connect/connect.ts +++ b/src/tools/mongodb/connect/connect.ts @@ -3,9 +3,9 @@ import { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; import { MongoDBToolBase } from "../mongodbTool.js"; import { ToolArgs, OperationType } from "../../tool.js"; import assert from "assert"; -import { UserConfig } from "../../../config.js"; +import { UserConfig } from "../../../common/config.js"; import { Telemetry } from "../../../telemetry/telemetry.js"; -import { Session } from "../../../session.js"; +import { Session } from "../../../common/session.js"; import { Server } from "../../../server.js"; const disconnectedSchema = z diff --git a/src/tools/mongodb/mongodbTool.ts b/src/tools/mongodb/mongodbTool.ts index 2e5c68c7..83fc85ab 100644 --- a/src/tools/mongodb/mongodbTool.ts +++ b/src/tools/mongodb/mongodbTool.ts @@ -2,8 +2,8 @@ import { z } from "zod"; import { ToolArgs, ToolBase, ToolCategory, TelemetryToolMetadata } from "../tool.js"; import { NodeDriverServiceProvider } from "@mongosh/service-provider-node-driver"; import { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; -import { ErrorCodes, MongoDBError } from "../../errors.js"; -import logger, { LogId } from "../../logger.js"; +import { ErrorCodes, MongoDBError } from "../../common/errors.js"; +import logger, { LogId } from "../../common/logger.js"; import { Server } from "../../server.js"; export const DbOperationArgs = { diff --git a/src/tools/tool.ts b/src/tools/tool.ts index 551374d6..bb0e0804 100644 --- a/src/tools/tool.ts +++ b/src/tools/tool.ts @@ -1,11 +1,11 @@ import { z, type ZodRawShape, type ZodNever, AnyZodObject } from "zod"; import type { RegisteredTool, ToolCallback } from "@modelcontextprotocol/sdk/server/mcp.js"; import type { CallToolResult, ToolAnnotations } from "@modelcontextprotocol/sdk/types.js"; -import { Session } from "../session.js"; -import logger, { LogId } from "../logger.js"; +import { Session } from "../common/session.js"; +import logger, { LogId } from "../common/logger.js"; import { Telemetry } from "../telemetry/telemetry.js"; import { type ToolEvent } from "../telemetry/types.js"; -import { UserConfig } from "../config.js"; +import { UserConfig } from "../common/config.js"; import { Server } from "../server.js"; export type ToolArgs = z.objectOutputType; diff --git a/tests/integration/helpers.ts b/tests/integration/helpers.ts index e5da149f..10502198 100644 --- a/tests/integration/helpers.ts +++ b/tests/integration/helpers.ts @@ -1,12 +1,12 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "./inMemoryTransport.js"; import { Server } from "../../src/server.js"; -import { UserConfig } from "../../src/config.js"; +import { UserConfig } from "../../src/common/config.js"; import { McpError } from "@modelcontextprotocol/sdk/types.js"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { Session } from "../../src/session.js"; +import { Session } from "../../src/common/session.js"; import { Telemetry } from "../../src/telemetry/telemetry.js"; -import { config } from "../../src/config.js"; +import { config } from "../../src/common/config.js"; import { jest } from "@jest/globals"; interface ParameterInfo { diff --git a/tests/integration/telemetry.test.ts b/tests/integration/telemetry.test.ts index 881a8915..3c180cfa 100644 --- a/tests/integration/telemetry.test.ts +++ b/tests/integration/telemetry.test.ts @@ -1,7 +1,7 @@ import { createHmac } from "crypto"; import { Telemetry } from "../../src/telemetry/telemetry.js"; -import { Session } from "../../src/session.js"; -import { config } from "../../src/config.js"; +import { Session } from "../../src/common/session.js"; +import { config } from "../../src/common/config.js"; import nodeMachineId from "node-machine-id"; describe("Telemetry", () => { diff --git a/tests/integration/tools/atlas/clusters.test.ts b/tests/integration/tools/atlas/clusters.test.ts index b5f34bdf..3916e511 100644 --- a/tests/integration/tools/atlas/clusters.test.ts +++ b/tests/integration/tools/atlas/clusters.test.ts @@ -1,4 +1,4 @@ -import { Session } from "../../../../src/session.js"; +import { Session } from "../../../../src/common/session.js"; import { expectDefined, getResponseElements } from "../../helpers.js"; import { describeWithAtlas, withProject, randomId } from "./atlasHelpers.js"; import { ClusterDescription20240805 } from "../../../../src/common/atlas/openapi.js"; diff --git a/tests/integration/tools/mongodb/connect/connect.test.ts b/tests/integration/tools/mongodb/connect/connect.test.ts index 857b5747..01aaf3ff 100644 --- a/tests/integration/tools/mongodb/connect/connect.test.ts +++ b/tests/integration/tools/mongodb/connect/connect.test.ts @@ -5,7 +5,7 @@ import { validateThrowsForInvalidArguments, validateToolMetadata, } from "../../../helpers.js"; -import { config } from "../../../../../src/config.js"; +import { config } from "../../../../../src/common/config.js"; import { defaultTestConfig, setupIntegrationTest } from "../../../helpers.js"; describeWithMongoDB( diff --git a/tests/integration/tools/mongodb/mongodbHelpers.ts b/tests/integration/tools/mongodb/mongodbHelpers.ts index 935b27db..e139aaa4 100644 --- a/tests/integration/tools/mongodb/mongodbHelpers.ts +++ b/tests/integration/tools/mongodb/mongodbHelpers.ts @@ -4,7 +4,7 @@ import { fileURLToPath } from "url"; import fs from "fs/promises"; import { MongoClient, ObjectId } from "mongodb"; import { getResponseContent, IntegrationTest, setupIntegrationTest, defaultTestConfig } from "../../helpers.js"; -import { UserConfig } from "../../../../src/config.js"; +import { UserConfig } from "../../../../src/common/config.js"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); diff --git a/tests/unit/session.test.ts b/tests/unit/session.test.ts index 44126359..fdd4296b 100644 --- a/tests/unit/session.test.ts +++ b/tests/unit/session.test.ts @@ -1,7 +1,7 @@ import { jest } from "@jest/globals"; import { NodeDriverServiceProvider } from "@mongosh/service-provider-node-driver"; -import { Session } from "../../src/session.js"; -import { config } from "../../src/config.js"; +import { Session } from "../../src/common/session.js"; +import { config } from "../../src/common/config.js"; jest.mock("@mongosh/service-provider-node-driver"); const MockNodeDriverServiceProvider = NodeDriverServiceProvider as jest.MockedClass; diff --git a/tests/unit/telemetry.test.ts b/tests/unit/telemetry.test.ts index 1898c4a6..c6d3828f 100644 --- a/tests/unit/telemetry.test.ts +++ b/tests/unit/telemetry.test.ts @@ -1,11 +1,11 @@ import { ApiClient } from "../../src/common/atlas/apiClient.js"; -import { Session } from "../../src/session.js"; +import { Session } from "../../src/common/session.js"; import { DEVICE_ID_TIMEOUT, Telemetry } from "../../src/telemetry/telemetry.js"; import { BaseEvent, TelemetryResult } from "../../src/telemetry/types.js"; import { EventCache } from "../../src/telemetry/eventCache.js"; -import { config } from "../../src/config.js"; +import { config } from "../../src/common/config.js"; import { jest } from "@jest/globals"; -import logger, { LogId } from "../../src/logger.js"; +import logger, { LogId } from "../../src/common/logger.js"; import { createHmac } from "crypto"; // Mock the ApiClient to avoid real API calls