mongodb-mcp-server 1.11.0 → 1.13.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/README.md +9 -8
- package/dist/cjs/common/atlas/apiClient.d.ts +3 -0
- package/dist/cjs/common/atlas/apiClient.d.ts.map +1 -1
- package/dist/cjs/common/atlas/apiClient.js +22 -1
- package/dist/cjs/common/atlas/apiClient.js.map +1 -1
- package/dist/cjs/common/atlas/cluster.d.ts +1 -0
- package/dist/cjs/common/atlas/cluster.d.ts.map +1 -1
- package/dist/cjs/common/atlas/cluster.js +2 -0
- package/dist/cjs/common/atlas/cluster.js.map +1 -1
- package/dist/cjs/common/config/userConfig.d.ts +1 -0
- package/dist/cjs/common/config/userConfig.d.ts.map +1 -1
- package/dist/cjs/common/config/userConfig.js +7 -0
- package/dist/cjs/common/config/userConfig.js.map +1 -1
- package/dist/cjs/common/connectionInfo.d.ts.map +1 -1
- package/dist/cjs/common/connectionInfo.js +3 -0
- package/dist/cjs/common/connectionInfo.js.map +1 -1
- package/dist/cjs/common/connectionManager.d.ts.map +1 -1
- package/dist/cjs/common/connectionManager.js +2 -0
- package/dist/cjs/common/connectionManager.js.map +1 -1
- package/dist/cjs/common/errors.d.ts +2 -1
- 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/packageInfo.js +2 -2
- package/dist/cjs/helpers/mqlGuards.d.ts +12 -0
- package/dist/cjs/helpers/mqlGuards.d.ts.map +1 -0
- package/dist/cjs/helpers/mqlGuards.js +53 -0
- package/dist/cjs/helpers/mqlGuards.js.map +1 -0
- package/dist/cjs/telemetry/types.d.ts +20 -1
- package/dist/cjs/telemetry/types.d.ts.map +1 -1
- package/dist/cjs/telemetry/types.js.map +1 -1
- package/dist/cjs/tools/atlas/atlasTool.d.ts.map +1 -1
- package/dist/cjs/tools/atlas/atlasTool.js +1 -0
- package/dist/cjs/tools/atlas/atlasTool.js.map +1 -1
- package/dist/cjs/tools/atlas/connect/connectCluster.d.ts +1 -0
- package/dist/cjs/tools/atlas/connect/connectCluster.d.ts.map +1 -1
- package/dist/cjs/tools/atlas/connect/connectCluster.js +34 -27
- package/dist/cjs/tools/atlas/connect/connectCluster.js.map +1 -1
- package/dist/cjs/tools/atlas/create/createCluster.d.ts +125 -0
- package/dist/cjs/tools/atlas/create/createCluster.d.ts.map +1 -0
- package/dist/cjs/tools/atlas/create/createCluster.js +219 -0
- package/dist/cjs/tools/atlas/create/createCluster.js.map +1 -0
- package/dist/cjs/tools/atlas/create/loadSampleDataset.d.ts +46 -0
- package/dist/cjs/tools/atlas/create/loadSampleDataset.d.ts.map +1 -0
- package/dist/cjs/tools/atlas/create/loadSampleDataset.js +77 -0
- package/dist/cjs/tools/atlas/create/loadSampleDataset.js.map +1 -0
- package/dist/cjs/tools/atlas/read/inspectCluster.d.ts.map +1 -1
- package/dist/cjs/tools/atlas/read/inspectCluster.js +3 -0
- package/dist/cjs/tools/atlas/read/inspectCluster.js.map +1 -1
- package/dist/cjs/tools/atlas/tools.d.ts +3 -0
- package/dist/cjs/tools/atlas/tools.d.ts.map +1 -1
- package/dist/cjs/tools/atlas/tools.js +7 -1
- package/dist/cjs/tools/atlas/tools.js.map +1 -1
- package/dist/cjs/tools/atlas/update/pauseResumeCluster.d.ts +51 -0
- package/dist/cjs/tools/atlas/update/pauseResumeCluster.d.ts.map +1 -0
- package/dist/cjs/tools/atlas/update/pauseResumeCluster.js +84 -0
- package/dist/cjs/tools/atlas/update/pauseResumeCluster.js.map +1 -0
- package/dist/cjs/tools/mongodb/create/createIndex.d.ts +8 -4
- package/dist/cjs/tools/mongodb/create/createIndex.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/create/createIndex.js +6 -0
- package/dist/cjs/tools/mongodb/create/createIndex.js.map +1 -1
- package/dist/cjs/tools/mongodb/delete/deleteMany.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/delete/deleteMany.js +1 -0
- package/dist/cjs/tools/mongodb/delete/deleteMany.js.map +1 -1
- package/dist/cjs/tools/mongodb/delete/dropIndex.d.ts +1 -1
- package/dist/cjs/tools/mongodb/metadata/explain.d.ts +22 -4
- package/dist/cjs/tools/mongodb/metadata/explain.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/metadata/explain.js +7 -4
- package/dist/cjs/tools/mongodb/metadata/explain.js.map +1 -1
- package/dist/cjs/tools/mongodb/mongodbTool.d.ts +16 -0
- package/dist/cjs/tools/mongodb/mongodbTool.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/mongodbTool.js +43 -0
- package/dist/cjs/tools/mongodb/mongodbTool.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregate.d.ts +0 -1
- package/dist/cjs/tools/mongodb/read/aggregate.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregate.js +3 -19
- package/dist/cjs/tools/mongodb/read/aggregate.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregateDB.d.ts +0 -1
- package/dist/cjs/tools/mongodb/read/aggregateDB.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/aggregateDB.js +3 -21
- package/dist/cjs/tools/mongodb/read/aggregateDB.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/count.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/count.js +1 -0
- package/dist/cjs/tools/mongodb/read/count.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/export.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/export.js +2 -0
- package/dist/cjs/tools/mongodb/read/export.js.map +1 -1
- package/dist/cjs/tools/mongodb/read/find.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/read/find.js +1 -0
- package/dist/cjs/tools/mongodb/read/find.js.map +1 -1
- package/dist/cjs/tools/mongodb/update/renameCollection.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/update/renameCollection.js +8 -0
- package/dist/cjs/tools/mongodb/update/renameCollection.js.map +1 -1
- package/dist/cjs/tools/mongodb/update/updateMany.d.ts.map +1 -1
- package/dist/cjs/tools/mongodb/update/updateMany.js +1 -0
- package/dist/cjs/tools/mongodb/update/updateMany.js.map +1 -1
- package/dist/cjs/ui/lib/tools/list-databases.d.ts +1 -1
- package/dist/cjs/ui/lib/tools/list-databases.d.ts.map +1 -1
- package/dist/cjs/ui/lib/tools/list-databases.js +1 -1
- package/dist/cjs/ui/lib/tools/list-databases.js.map +1 -1
- package/dist/esm/common/atlas/apiClient.d.ts +3 -0
- package/dist/esm/common/atlas/apiClient.d.ts.map +1 -1
- package/dist/esm/common/atlas/apiClient.js +22 -1
- package/dist/esm/common/atlas/apiClient.js.map +1 -1
- package/dist/esm/common/atlas/cluster.d.ts +1 -0
- package/dist/esm/common/atlas/cluster.d.ts.map +1 -1
- package/dist/esm/common/atlas/cluster.js +2 -0
- package/dist/esm/common/atlas/cluster.js.map +1 -1
- package/dist/esm/common/config/userConfig.d.ts +1 -0
- package/dist/esm/common/config/userConfig.d.ts.map +1 -1
- package/dist/esm/common/config/userConfig.js +7 -0
- package/dist/esm/common/config/userConfig.js.map +1 -1
- package/dist/esm/common/connectionInfo.d.ts.map +1 -1
- package/dist/esm/common/connectionInfo.js +4 -1
- package/dist/esm/common/connectionInfo.js.map +1 -1
- package/dist/esm/common/connectionManager.d.ts.map +1 -1
- package/dist/esm/common/connectionManager.js +2 -0
- package/dist/esm/common/connectionManager.js.map +1 -1
- package/dist/esm/common/errors.d.ts +2 -1
- 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/packageInfo.js +2 -2
- package/dist/esm/helpers/mqlGuards.d.ts +12 -0
- package/dist/esm/helpers/mqlGuards.d.ts.map +1 -0
- package/dist/esm/helpers/mqlGuards.js +49 -0
- package/dist/esm/helpers/mqlGuards.js.map +1 -0
- package/dist/esm/telemetry/types.d.ts +20 -1
- package/dist/esm/telemetry/types.d.ts.map +1 -1
- package/dist/esm/telemetry/types.js.map +1 -1
- package/dist/esm/tools/atlas/atlasTool.d.ts.map +1 -1
- package/dist/esm/tools/atlas/atlasTool.js +1 -0
- package/dist/esm/tools/atlas/atlasTool.js.map +1 -1
- package/dist/esm/tools/atlas/connect/connectCluster.d.ts +1 -0
- package/dist/esm/tools/atlas/connect/connectCluster.d.ts.map +1 -1
- package/dist/esm/tools/atlas/connect/connectCluster.js +34 -27
- package/dist/esm/tools/atlas/connect/connectCluster.js.map +1 -1
- package/dist/esm/tools/atlas/create/createCluster.d.ts +125 -0
- package/dist/esm/tools/atlas/create/createCluster.d.ts.map +1 -0
- package/dist/esm/tools/atlas/create/createCluster.js +215 -0
- package/dist/esm/tools/atlas/create/createCluster.js.map +1 -0
- package/dist/esm/tools/atlas/create/loadSampleDataset.d.ts +46 -0
- package/dist/esm/tools/atlas/create/loadSampleDataset.d.ts.map +1 -0
- package/dist/esm/tools/atlas/create/loadSampleDataset.js +73 -0
- package/dist/esm/tools/atlas/create/loadSampleDataset.js.map +1 -0
- package/dist/esm/tools/atlas/read/inspectCluster.d.ts.map +1 -1
- package/dist/esm/tools/atlas/read/inspectCluster.js +3 -0
- package/dist/esm/tools/atlas/read/inspectCluster.js.map +1 -1
- package/dist/esm/tools/atlas/tools.d.ts +3 -0
- package/dist/esm/tools/atlas/tools.d.ts.map +1 -1
- package/dist/esm/tools/atlas/tools.js +3 -0
- package/dist/esm/tools/atlas/tools.js.map +1 -1
- package/dist/esm/tools/atlas/update/pauseResumeCluster.d.ts +51 -0
- package/dist/esm/tools/atlas/update/pauseResumeCluster.d.ts.map +1 -0
- package/dist/esm/tools/atlas/update/pauseResumeCluster.js +80 -0
- package/dist/esm/tools/atlas/update/pauseResumeCluster.js.map +1 -0
- package/dist/esm/tools/mongodb/create/createIndex.d.ts +8 -4
- package/dist/esm/tools/mongodb/create/createIndex.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/create/createIndex.js +6 -0
- package/dist/esm/tools/mongodb/create/createIndex.js.map +1 -1
- package/dist/esm/tools/mongodb/delete/deleteMany.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/delete/deleteMany.js +1 -0
- package/dist/esm/tools/mongodb/delete/deleteMany.js.map +1 -1
- package/dist/esm/tools/mongodb/delete/dropIndex.d.ts +1 -1
- package/dist/esm/tools/mongodb/metadata/explain.d.ts +22 -4
- package/dist/esm/tools/mongodb/metadata/explain.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/metadata/explain.js +7 -4
- package/dist/esm/tools/mongodb/metadata/explain.js.map +1 -1
- package/dist/esm/tools/mongodb/mongodbTool.d.ts +16 -0
- package/dist/esm/tools/mongodb/mongodbTool.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/mongodbTool.js +43 -0
- package/dist/esm/tools/mongodb/mongodbTool.js.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregate.d.ts +0 -1
- package/dist/esm/tools/mongodb/read/aggregate.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregate.js +3 -19
- package/dist/esm/tools/mongodb/read/aggregate.js.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregateDB.d.ts +0 -1
- package/dist/esm/tools/mongodb/read/aggregateDB.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/aggregateDB.js +3 -21
- package/dist/esm/tools/mongodb/read/aggregateDB.js.map +1 -1
- package/dist/esm/tools/mongodb/read/count.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/count.js +1 -0
- package/dist/esm/tools/mongodb/read/count.js.map +1 -1
- package/dist/esm/tools/mongodb/read/export.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/export.js +2 -0
- package/dist/esm/tools/mongodb/read/export.js.map +1 -1
- package/dist/esm/tools/mongodb/read/find.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/read/find.js +1 -0
- package/dist/esm/tools/mongodb/read/find.js.map +1 -1
- package/dist/esm/tools/mongodb/update/renameCollection.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/update/renameCollection.js +8 -0
- package/dist/esm/tools/mongodb/update/renameCollection.js.map +1 -1
- package/dist/esm/tools/mongodb/update/updateMany.d.ts.map +1 -1
- package/dist/esm/tools/mongodb/update/updateMany.js +1 -0
- package/dist/esm/tools/mongodb/update/updateMany.js.map +1 -1
- package/dist/esm/ui/lib/tools/list-databases.d.ts +1 -1
- package/dist/esm/ui/lib/tools/list-databases.d.ts.map +1 -1
- package/dist/esm/ui/lib/tools/list-databases.js +1 -1
- package/dist/esm/ui/lib/tools/list-databases.js.map +1 -1
- package/package.json +18 -24
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { MongoDBToolBase } from "../mongodbTool.js";
|
|
3
3
|
import { type ToolArgs, type OperationType, type ToolResult } from "../../tool.js";
|
|
4
|
+
import type { IndexMetadata } from "../../../telemetry/types.js";
|
|
4
5
|
declare const CreateIndexOutputSchema: {
|
|
5
6
|
database: z.ZodString;
|
|
6
7
|
collection: z.ZodString;
|
|
7
8
|
indexName: z.ZodString;
|
|
8
9
|
indexType: z.ZodEnum<{
|
|
9
|
-
search: "search";
|
|
10
|
-
vectorSearch: "vectorSearch";
|
|
11
10
|
classic: "classic";
|
|
11
|
+
vectorSearch: "vectorSearch";
|
|
12
|
+
search: "search";
|
|
12
13
|
}>;
|
|
13
14
|
};
|
|
14
15
|
export type CreateIndexOutput = z.infer<z.ZodObject<typeof CreateIndexOutputSchema>>;
|
|
@@ -88,13 +89,16 @@ export declare class CreateIndexTool extends MongoDBToolBase {
|
|
|
88
89
|
collection: z.ZodString;
|
|
89
90
|
indexName: z.ZodString;
|
|
90
91
|
indexType: z.ZodEnum<{
|
|
91
|
-
search: "search";
|
|
92
|
-
vectorSearch: "vectorSearch";
|
|
93
92
|
classic: "classic";
|
|
93
|
+
vectorSearch: "vectorSearch";
|
|
94
|
+
search: "search";
|
|
94
95
|
}>;
|
|
95
96
|
};
|
|
96
97
|
static operationType: OperationType;
|
|
97
98
|
protected execute({ database, collection, name, definition: definitions, }: ToolArgs<typeof this.argsShape>): Promise<ToolResult<typeof this.outputSchema>>;
|
|
99
|
+
protected resolveTelemetryMetadata(args: ToolArgs<typeof this.argsShape>, { result }: {
|
|
100
|
+
result: ToolResult<typeof CreateIndexOutputSchema>;
|
|
101
|
+
}): IndexMetadata;
|
|
98
102
|
}
|
|
99
103
|
export {};
|
|
100
104
|
//# sourceMappingURL=createIndex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createIndex.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/createIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"createIndex.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/createIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAEnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,QAAA,MAAM,uBAAuB;;;;;;;;;CAK5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC;AAErF,qBAAa,eAAgB,SAAQ,eAAe;IAChD,OAAO,CAAC,iBAAiB,CAU4D;IAErF,OAAO,CAAC,iBAAiB,CAoCnB;IAEN,OAAO,CAAC,oBAAoB,CAiCtB;IAEN,OAAO,CAAC,2BAA2B,CAqBoB;IAEvD,OAAO,CAAC,0BAA0B,CAiE5B;IAEN,MAAM,CAAC,QAAQ,SAAkB;IAC1B,WAAW,SAAsC;IACjD,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2Bd;IACc,YAAY;;;;;;;;;MAA2B;IAEvD,MAAM,CAAC,aAAa,EAAE,aAAa,CAAY;cAE/B,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,UAAU,EAAE,WAAW,GAC1B,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;cA2E/D,wBAAwB,CACvC,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EACrC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAA;KAAE,GACnE,aAAa;CAMnB"}
|
|
@@ -238,6 +238,12 @@ Use 'filter' for additional fields to filter on. At least one 'vector' or 'autoE
|
|
|
238
238
|
},
|
|
239
239
|
};
|
|
240
240
|
}
|
|
241
|
+
resolveTelemetryMetadata(args, { result }) {
|
|
242
|
+
return {
|
|
243
|
+
...super.resolveTelemetryMetadata(args, { result }),
|
|
244
|
+
index_type: result.structuredContent?.indexType,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
241
247
|
}
|
|
242
248
|
exports.CreateIndexTool = CreateIndexTool;
|
|
243
249
|
CreateIndexTool.toolName = "create-index";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createIndex.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/createIndex.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,sDAAuE;AAEvE,4DAA8F;
|
|
1
|
+
{"version":3,"file":"createIndex.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/create/createIndex.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,sDAAuE;AAEvE,4DAA8F;AAG9F,MAAM,uBAAuB,GAAG;IAC5B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;CAC3D,CAAC;AAIF,MAAa,eAAgB,SAAQ,gCAAe;IAApD;;QACY,sBAAiB,GAAG,OAAC;aACxB,MAAM,CAAC;YACJ,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,IAAI,EAAE,OAAC;iBACF,MAAM,EAAE;iBACR,QAAQ,CACL,oGAAoG,CACvG;SACR,CAAC;aACD,MAAM,EAAE;aACR,QAAQ,CAAC,qEAAqE,CAAC,CAAC;QAE7E,sBAAiB,GAAG,OAAC;aACxB,MAAM,CAAC;YACJ,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACrB;;;CAGf,CACY;YACD,aAAa,EAAE,OAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACL,8FAA8F,CACjG;YACL,UAAU,EAAE,OAAC;iBACR,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;iBAC3C,OAAO,CAAC,WAAW,CAAC;iBACpB,QAAQ,CACL,8HAA8H,CACjI;YACL,YAAY,EAAE,OAAC;iBACV,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBAClC,OAAO,CAAC,MAAM,CAAC;iBACf,QAAQ,CACL,+HAA+H,CAClI;SACR,CAAC;aACD,MAAM,EAAE;aACR,QAAQ,CACL;;;CAGX,CACQ,CAAC;QAEE,yBAAoB,GAAG,OAAC;aAC3B,MAAM,CAAC;YACJ,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,WAAW,CAAC;YAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACrB;;;;CAIf,CACY;YACD,KAAK,EAAE,OAAC;iBACH,IAAI,CAAC,oDAAgC,CAAC;iBACtC,QAAQ,CACL,kHAAkH,CACrH;YACL,QAAQ,EAAE,OAAC;iBACN,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;iBACd,QAAQ,CACL,0GAA0G,CAC7G;YAEL,uEAAuE;YACvE,mEAAmE;YACnE,8DAA8D;YAC9D,4BAA4B;SAC/B,CAAC;aACD,MAAM,EAAE;aACR,QAAQ,CACL;;;;CAIX,CACQ,CAAC;QAEE,gCAA2B,GAAG,OAAC;aAClC,MAAM,CAAC;YACJ,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,cAAc,CAAC;YAC/B,MAAM,EAAE,OAAC;iBACJ,KAAK,CACF,OAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;gBACzB,IAAI,CAAC,iBAAiB;gBACtB,IAAI,CAAC,iBAAiB;gBACtB,IAAI,CAAC,oBAAoB;aAC5B,CAAC,CACL;iBACA,QAAQ,EAAE;iBACV,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE;gBACnF,OAAO,EAAE,wEAAwE;aACpF,CAAC,CAAC,QAAQ,CAAC;;;;;CAK3B,CAAC;SACO,CAAC;aACD,QAAQ,CAAC,uCAAuC,CAAC,CAAC;QAE/C,+BAA0B,GAAG,OAAC;aACjC,MAAM,CAAC;YACJ,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,QAAQ,EAAE,OAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,iBAAiB,CAAC;iBAC1B,QAAQ,CACL,iRAAiR,CACpR;YACL,QAAQ,EAAE,OAAC;iBACN,MAAM,CAAC;gBACJ,OAAO,EAAE,OAAC;qBACL,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CACL,sOAAsO,CACzO;gBACL,MAAM,EAAE,OAAC;qBACJ,MAAM,CACH,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACrC,OAAC;qBACI,MAAM,CAAC;oBACJ,IAAI,EAAE,OAAC;yBACF,IAAI,CAAC;wBACF,cAAc;wBACd,SAAS;wBACT,MAAM;wBACN,UAAU;wBACV,mBAAmB;wBACnB,KAAK;wBACL,QAAQ;wBACR,UAAU;wBACV,QAAQ;wBACR,OAAO;wBACP,MAAM;qBACT,CAAC;yBACD,QAAQ,CAAC,gBAAgB,CAAC;iBAClC,CAAC;qBACD,WAAW,EAAE;qBACb,QAAQ,CACL,oHAAoH,CACvH,CACR;qBACA,QAAQ,EAAE;qBACV,QAAQ,CAAC,kFAAkF,CAAC;aACpG,CAAC;iBACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;gBACvF,OAAO,EACH,oIAAoI;aAC3I,CAAC;iBACD,QAAQ,CACL,2LAA2L,CAC9L;YACL,aAAa,EAAE,OAAC;iBACX,KAAK,CAAC,CAAC,OAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;iBACvD,OAAO,CAAC,GAAG,CAAC;iBACZ,SAAS,CAAC,CAAC,KAAK,EAAU,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACpD,QAAQ,CACL,qHAAqH,CACxH;SACR,CAAC;aACD,QAAQ,CACL,qJAAqJ,CACxJ,CAAC;QAGC,gBAAW,GAAG,kCAAkC,CAAC;QACjD,cAAS,GAAG;YACf,GAAG,kCAAiB;YACpB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC7D,uEAAuE;YACvE,oEAAoE;YACpE,uEAAuE;YACvE,wEAAwE;YACxE,+DAA+D;YAC/D,wEAAwE;YACxE,UAAU,EAAE,OAAC;iBACR,KAAK,CACF,OAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;gBACzB,OAAC;qBACI,MAAM,CAAC;oBACJ,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,SAAS,CAAC;oBAC1B,IAAI,EAAE,OAAC;yBACF,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,wCAAoB,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;yBACpF,QAAQ,CAAC,sBAAsB,CAAC;iBACxC,CAAC;qBACD,QAAQ,CAAC,6EAA6E,CAAC;gBAC5F,IAAI,CAAC,2BAA2B;gBAChC,IAAI,CAAC,0BAA0B;aAClC,CAAC,CACL;iBACA,QAAQ,CACL,sJAAsJ,CACzJ;SACR,CAAC;QACc,iBAAY,GAAG,uBAAuB,CAAC;IA6F3D,CAAC;IAzFa,KAAK,CAAC,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,UAAU,EAAE,WAAW,GACO;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9C,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;QAC/G,CAAC;QAED,IAAI,qBAAqB,GAAG,EAAE,CAAC;QAE/B,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,SAAS;gBACV,OAAO,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE;oBACzD;wBACI,GAAG,EAAE,UAAU,CAAC,IAAI;wBACpB,IAAI;qBACP;iBACJ,CAAC,CAAC;gBACH,MAAM;YACV,KAAK,cAAc;gBACf,CAAC;oBACG,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;oBAC3C,OAAO,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE;wBAC/D;4BACI,IAAI;4BACJ,UAAU,EAAE;gCACR,MAAM,EAAE,UAAU,CAAC,MAAM;6BAC5B;4BACD,IAAI,EAAE,cAAc;yBACvB;qBACJ,CAAC,CAAC;oBAEH,qBAAqB;wBACjB,gJAAgJ,CAAC;gBACzJ,CAAC;gBAED,MAAM;YACV,KAAK,QAAQ;gBACT,CAAC;oBACG,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;oBAC3C,OAAO,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE;wBAC/D;4BACI,IAAI;4BACJ,UAAU,EAAE;gCACR,QAAQ,EAAE,UAAU,CAAC,QAAQ;gCAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ;gCAC7B,aAAa,EAAE,UAAU,CAAC,aAAa;6BAC1C;4BACD,IAAI,EAAE,QAAQ;yBACjB;qBACJ,CAAC,CAAC;oBAEH,qBAAqB;wBACjB,yIAAyI,CAAC;gBAClJ,CAAC;gBAED,MAAM;QACd,CAAC;QAED,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,sBAAsB,OAAO,CAAC,CAAC,CAAC,oBAAoB,UAAU,kBAAkB,QAAQ,KAAK,qBAAqB,EAAE;oBAC1H,IAAI,EAAE,MAAM;iBACf;aACJ;YACD,iBAAiB,EAAE;gBACf,QAAQ;gBACR,UAAU;gBACV,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC3B,SAAS,EAAE,UAAU,CAAC,IAAI;aAC7B;SACJ,CAAC;IACN,CAAC;IAEkB,wBAAwB,CACvC,IAAqC,EACrC,EAAE,MAAM,EAA0D;QAElE,OAAO;YACH,GAAG,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;YACnD,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,SAAS;SAClD,CAAC;IACN,CAAC;;AA1SL,0CA2SC;AA3HU,wBAAQ,GAAG,cAAc,AAAjB,CAAkB;AAgC1B,6BAAa,GAAkB,QAAQ,AAA1B,CAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/delete/deleteMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,sBAAsB;;;;CAI3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC;AAEnF,qBAAa,cAAe,SAAQ,eAAe;IAC/C,MAAM,CAAC,QAAQ,SAAiB;IACzB,WAAW,SAA2E;IACtF,SAAS;;;;MAOd;IACc,YAAY;;;;MAA0B;IACtD,MAAM,CAAC,aAAa,EAAE,aAAa,CAAY;cAE/B,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,MAAM,GACT,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/delete/deleteMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,sBAAsB;;;;CAI3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC;AAEnF,qBAAa,cAAe,SAAQ,eAAe;IAC/C,MAAM,CAAC,QAAQ,SAAiB;IACzB,WAAW,SAA2E;IACtF,SAAS;;;;MAOd;IACc,YAAY;;;;MAA0B;IACtD,MAAM,CAAC,aAAa,EAAE,aAAa,CAAY;cAE/B,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,MAAM,GACT,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;IA+ClF,SAAS,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM;CAY9G"}
|
|
@@ -25,6 +25,7 @@ class DeleteManyTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
25
25
|
}
|
|
26
26
|
async execute({ database, collection, filter, }) {
|
|
27
27
|
const provider = await this.ensureConnected();
|
|
28
|
+
this.assertMqlIsAllowed(filter);
|
|
28
29
|
// Check if delete operation uses an index if enabled
|
|
29
30
|
if (this.config.indexCheck) {
|
|
30
31
|
await (0, indexCheck_js_1.checkIndexUsage)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/delete/deleteMany.ts"],"names":[],"mappings":";;;AAAA,sDAAuE;AAEvE,kEAAiE;AACjE,+BAA6B;AAC7B,2CAAuC;AACvC,6BAAwB;AAExB,MAAM,sBAAsB,GAAG;IAC3B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;CAC3B,CAAC;AAIF,MAAa,cAAe,SAAQ,gCAAe;IAAnD;;QAEW,gBAAW,GAAG,uEAAuE,CAAC;QACtF,cAAS,GAAG;YACf,GAAG,kCAAiB;YACpB,MAAM,EAAE,IAAA,gBAAM,GAAE;iBACX,QAAQ,EAAE;iBACV,QAAQ,CACL,6HAA6H,CAChI;SACR,CAAC;QACc,iBAAY,GAAG,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/delete/deleteMany.ts"],"names":[],"mappings":";;;AAAA,sDAAuE;AAEvE,kEAAiE;AACjE,+BAA6B;AAC7B,2CAAuC;AACvC,6BAAwB;AAExB,MAAM,sBAAsB,GAAG;IAC3B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;CAC3B,CAAC;AAIF,MAAa,cAAe,SAAQ,gCAAe;IAAnD;;QAEW,gBAAW,GAAG,uEAAuE,CAAC;QACtF,cAAS,GAAG;YACf,GAAG,kCAAiB;YACpB,MAAM,EAAE,IAAA,gBAAM,GAAE;iBACX,QAAQ,EAAE;iBACV,QAAQ,CACL,6HAA6H,CAChI;SACR,CAAC;QACc,iBAAY,GAAG,sBAAsB,CAAC;IAkE1D,CAAC;IA/Da,KAAK,CAAC,OAAO,CAAC,EACpB,QAAQ,EACR,UAAU,EACV,MAAM,GACwB;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE9C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEhC,qDAAqD;QACrD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzB,MAAM,IAAA,+BAAe,EAAC;gBAClB,QAAQ;gBACR,UAAU;gBACV,SAAS,EAAE,YAAY;gBACvB,eAAe,EAAE,KAAK,IAAI,EAAE;oBACxB,OAAO,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE;wBAC1C,OAAO,EAAE;4BACL,MAAM,EAAE,UAAU;4BAClB,OAAO,EAAE;gCACL;oCACI,CAAC,EAAE,MAAM,IAAI,EAAE;oCACf,KAAK,EAAE,CAAC,EAAE,wCAAwC;iCACrD;6BACJ;yBACJ;wBACD,SAAS,EAAE,cAAc;wBACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;qBACnF,CAAC,CAAC;gBACP,CAAC;gBACD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;aAC9B,CAAC,CAAC;QACP,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEvE,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,aAAa,MAAM,CAAC,YAAY,mCAAmC,UAAU,GAAG;oBACtF,IAAI,EAAE,MAAM;iBACf;aACJ;YACD,iBAAiB,EAAE;gBACf,QAAQ;gBACR,UAAU;gBACV,YAAY,EAAE,MAAM,CAAC,YAAY;aACpC;SACJ,CAAC;IACN,CAAC;IAES,sBAAsB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAmC;QAC9F,MAAM,iBAAiB,GACnB,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;YACpC,CAAC,CAAC,WAAW,GAAG,eAAe,YAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS;YACxE,CAAC,CAAC,qCAAqC,CAAC;QAChD,OAAO,CACH,gDAAgD,UAAU,0BAA0B,QAAQ,kBAAkB;YAC9G,iBAAiB;YACjB,+EAA+E;YAC/E,iDAAiD,CACpD,CAAC;IACN,CAAC;;AA5EL,wCA6EC;AA5EU,uBAAQ,GAAG,aAAa,AAAhB,CAAiB;AAWzB,4BAAa,GAAkB,QAAQ,AAA1B,CAA2B"}
|
|
@@ -3,8 +3,17 @@ import type { ToolArgs, OperationType, ToolExecutionContext, ToolResult } from "
|
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
declare const ExplainOutputSchema: {
|
|
5
5
|
explainResult: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
6
|
-
method: z.
|
|
7
|
-
|
|
6
|
+
method: z.ZodEnum<{
|
|
7
|
+
find: "find";
|
|
8
|
+
count: "count";
|
|
9
|
+
aggregate: "aggregate";
|
|
10
|
+
}>;
|
|
11
|
+
verbosity: z.ZodEnum<{
|
|
12
|
+
queryPlanner: "queryPlanner";
|
|
13
|
+
queryPlannerExtended: "queryPlannerExtended";
|
|
14
|
+
executionStats: "executionStats";
|
|
15
|
+
allPlansExecution: "allPlansExecution";
|
|
16
|
+
}>;
|
|
8
17
|
};
|
|
9
18
|
export type ExplainOutput = z.infer<z.ZodObject<typeof ExplainOutputSchema>>;
|
|
10
19
|
export declare class ExplainTool extends MongoDBToolBase {
|
|
@@ -69,8 +78,17 @@ export declare class ExplainTool extends MongoDBToolBase {
|
|
|
69
78
|
};
|
|
70
79
|
outputSchema: {
|
|
71
80
|
explainResult: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
72
|
-
method: z.
|
|
73
|
-
|
|
81
|
+
method: z.ZodEnum<{
|
|
82
|
+
find: "find";
|
|
83
|
+
count: "count";
|
|
84
|
+
aggregate: "aggregate";
|
|
85
|
+
}>;
|
|
86
|
+
verbosity: z.ZodEnum<{
|
|
87
|
+
queryPlanner: "queryPlanner";
|
|
88
|
+
queryPlannerExtended: "queryPlannerExtended";
|
|
89
|
+
executionStats: "executionStats";
|
|
90
|
+
allPlansExecution: "allPlansExecution";
|
|
91
|
+
}>;
|
|
74
92
|
};
|
|
75
93
|
static operationType: OperationType;
|
|
76
94
|
protected execute({ database, collection, method: methods, verbosity }: ToolArgs<typeof this.argsShape>, { signal }: ToolExecutionContext): Promise<ToolResult<typeof this.outputSchema>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/explain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE/F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/explain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE/F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;CAIxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;AAE7E,qBAAa,WAAY,SAAQ,eAAe;IAC5C,MAAM,CAAC,QAAQ,SAAa;IACrB,WAAW,SAC2G;IAEtH,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgCd;IACc,YAAY;;;;;;;;;;;;;MAAuB;IAEnD,MAAM,CAAC,aAAa,EAAE,aAAa,CAAc;cAEjC,OAAO,CACnB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EACrF,EAAE,MAAM,EAAE,EAAE,oBAAoB,GACjC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;CAuEnD"}
|
|
@@ -7,10 +7,11 @@ const zod_1 = require("zod");
|
|
|
7
7
|
const aggregate_js_1 = require("../read/aggregate.js");
|
|
8
8
|
const find_js_1 = require("../read/find.js");
|
|
9
9
|
const count_js_1 = require("../read/count.js");
|
|
10
|
+
const verbosityEnum = zod_1.z.enum(["queryPlanner", "queryPlannerExtended", "executionStats", "allPlansExecution"]);
|
|
10
11
|
const ExplainOutputSchema = {
|
|
11
12
|
explainResult: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()),
|
|
12
|
-
method: zod_1.z.
|
|
13
|
-
verbosity:
|
|
13
|
+
method: zod_1.z.enum(["aggregate", "find", "count"]),
|
|
14
|
+
verbosity: verbosityEnum,
|
|
14
15
|
};
|
|
15
16
|
class ExplainTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
16
17
|
constructor() {
|
|
@@ -40,8 +41,7 @@ class ExplainTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
40
41
|
}),
|
|
41
42
|
]))
|
|
42
43
|
.describe("The method and its arguments to run"),
|
|
43
|
-
verbosity:
|
|
44
|
-
.enum(["queryPlanner", "queryPlannerExtended", "executionStats", "allPlansExecution"])
|
|
44
|
+
verbosity: verbosityEnum
|
|
45
45
|
.optional()
|
|
46
46
|
.default("queryPlanner")
|
|
47
47
|
.describe("The verbosity of the explain plan, defaults to queryPlanner. If the user wants to know how fast is a query in execution time, use executionStats. It supports all verbosities as defined in the MongoDB Driver."),
|
|
@@ -58,6 +58,7 @@ class ExplainTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
58
58
|
switch (method.name) {
|
|
59
59
|
case "aggregate": {
|
|
60
60
|
const { pipeline } = method.arguments;
|
|
61
|
+
this.assertMqlIsAllowed(pipeline);
|
|
61
62
|
result = await provider
|
|
62
63
|
.aggregate(database, collection, pipeline, {
|
|
63
64
|
...this.getOperationOptions(signal),
|
|
@@ -69,6 +70,7 @@ class ExplainTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
69
70
|
}
|
|
70
71
|
case "find": {
|
|
71
72
|
const { filter, ...rest } = method.arguments;
|
|
73
|
+
this.assertMqlIsAllowed(filter);
|
|
72
74
|
result = await provider
|
|
73
75
|
.find(database, collection, filter, {
|
|
74
76
|
...rest,
|
|
@@ -79,6 +81,7 @@ class ExplainTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
79
81
|
}
|
|
80
82
|
case "count": {
|
|
81
83
|
const { query } = method.arguments;
|
|
84
|
+
this.assertMqlIsAllowed(query);
|
|
82
85
|
result = await provider.runCommandWithCheck(database, {
|
|
83
86
|
explain: {
|
|
84
87
|
count: collection,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/explain.ts"],"names":[],"mappings":";;;AAAA,sDAAuE;AAEvE,2CAAoD;AACpD,6BAAwB;AAExB,uDAAqD;AACrD,6CAA2C;AAC3C,+CAA6C;AAE7C,MAAM,mBAAmB,GAAG;IACxB,aAAa,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC;IAChD,MAAM,EAAE,OAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/metadata/explain.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,22 @@ export declare abstract class MongoDBToolBase extends ToolBase {
|
|
|
24
24
|
signal?: AbortSignal;
|
|
25
25
|
maxTimeMS?: number;
|
|
26
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Rejects the operation when the provided MQL input is not permitted by the
|
|
29
|
+
* current configuration:
|
|
30
|
+
* - server-side JavaScript operators (such as $where, $function, or
|
|
31
|
+
* $accumulator) are rejected when the `disableServerSideJs` configuration
|
|
32
|
+
* option is enabled. This applies to both query filters and aggregation
|
|
33
|
+
* pipelines.
|
|
34
|
+
* - aggregation pipelines containing a write stage ($out or $merge) are
|
|
35
|
+
* rejected in readOnly mode or when create/update/delete operations are
|
|
36
|
+
* disabled. This prevents read-oriented tools such as aggregate and
|
|
37
|
+
* export from being used to circumvent those restrictions.
|
|
38
|
+
*
|
|
39
|
+
* Write stages only exist in aggregation pipelines, which are passed as an
|
|
40
|
+
* array, so that check is skipped for plain query filters.
|
|
41
|
+
*/
|
|
42
|
+
protected assertMqlIsAllowed(value: Record<string, unknown> | Record<string, unknown>[] | undefined): void;
|
|
27
43
|
register(server: Server): boolean;
|
|
28
44
|
protected handleError(error: unknown, args: ToolArgs<typeof this.argsShape>): Promise<CallToolResult>;
|
|
29
45
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodbTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/mongodb/mongodbTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"mongodbTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/mongodb/mongodbTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAiB,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,eAAO,MAAM,eAAe;;CAE3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC;AAEF,8BAAsB,eAAgB,SAAQ,QAAQ;IAClD,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAa;cAE1B,eAAe,IAAI,OAAO,CAAC,yBAAyB,CAAC;IA8BrE;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAOjG;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,GAAG,IAAI;IA8BnG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;cAKxB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAgD3G;;;;;;;;OAQG;IACH,SAAS,CAAC,wBAAwB,CAE9B,KAAK,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAEtC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,cAAc,CAAA;KAAE,GACvC,kBAAkB;CAGxB"}
|
|
@@ -5,6 +5,7 @@ const zod_1 = require("zod");
|
|
|
5
5
|
const tool_js_1 = require("../tool.js");
|
|
6
6
|
const errors_js_1 = require("../../common/errors.js");
|
|
7
7
|
const index_js_1 = require("../../common/logging/index.js");
|
|
8
|
+
const mqlGuards_js_1 = require("../../helpers/mqlGuards.js");
|
|
8
9
|
exports.DBOperationArgs = {
|
|
9
10
|
database: zod_1.z.string().describe("Database name"),
|
|
10
11
|
};
|
|
@@ -47,6 +48,48 @@ class MongoDBToolBase extends tool_js_1.ToolBase {
|
|
|
47
48
|
...(this.config.maxTimeMS !== undefined && { maxTimeMS: this.config.maxTimeMS }),
|
|
48
49
|
};
|
|
49
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Rejects the operation when the provided MQL input is not permitted by the
|
|
53
|
+
* current configuration:
|
|
54
|
+
* - server-side JavaScript operators (such as $where, $function, or
|
|
55
|
+
* $accumulator) are rejected when the `disableServerSideJs` configuration
|
|
56
|
+
* option is enabled. This applies to both query filters and aggregation
|
|
57
|
+
* pipelines.
|
|
58
|
+
* - aggregation pipelines containing a write stage ($out or $merge) are
|
|
59
|
+
* rejected in readOnly mode or when create/update/delete operations are
|
|
60
|
+
* disabled. This prevents read-oriented tools such as aggregate and
|
|
61
|
+
* export from being used to circumvent those restrictions.
|
|
62
|
+
*
|
|
63
|
+
* Write stages only exist in aggregation pipelines, which are passed as an
|
|
64
|
+
* array, so that check is skipped for plain query filters.
|
|
65
|
+
*/
|
|
66
|
+
assertMqlIsAllowed(value) {
|
|
67
|
+
if (this.config.disableServerSideJs) {
|
|
68
|
+
(0, mqlGuards_js_1.assertNoServerSideJS)(value);
|
|
69
|
+
}
|
|
70
|
+
if (Array.isArray(value)) {
|
|
71
|
+
// Only check for forbidden write stages when the value is an array, which indicates it's an
|
|
72
|
+
// aggregation pipeline. Query filters are objects, so they won't be checked for write stages,
|
|
73
|
+
// which is correct since they can't contain them.
|
|
74
|
+
const writeOperations = ["update", "create", "delete"];
|
|
75
|
+
let writeStageForbiddenErrorMessage = "";
|
|
76
|
+
if (this.config.readOnly) {
|
|
77
|
+
writeStageForbiddenErrorMessage =
|
|
78
|
+
"In readOnly mode you can not run pipelines with $out or $merge stages.";
|
|
79
|
+
}
|
|
80
|
+
else if (this.config.disabledTools.some((t) => writeOperations.includes(t))) {
|
|
81
|
+
writeStageForbiddenErrorMessage =
|
|
82
|
+
"When 'create', 'update', or 'delete' operations are disabled, you can not run pipelines with $out or $merge stages.";
|
|
83
|
+
}
|
|
84
|
+
if (writeStageForbiddenErrorMessage) {
|
|
85
|
+
for (const stage of value) {
|
|
86
|
+
if ((0, mqlGuards_js_1.isWriteStage)(stage)) {
|
|
87
|
+
throw new errors_js_1.MongoDBError(errors_js_1.ErrorCodes.ForbiddenWriteOperation, writeStageForbiddenErrorMessage);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
50
93
|
register(server) {
|
|
51
94
|
this.server = server;
|
|
52
95
|
return super.register(server);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodbTool.js","sourceRoot":"","sources":["../../../../src/tools/mongodb/mongodbTool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,wCAAsC;AAGtC,sDAAkE;AAClE,4DAAsD;
|
|
1
|
+
{"version":3,"file":"mongodbTool.js","sourceRoot":"","sources":["../../../../src/tools/mongodb/mongodbTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAgBnF,eAAO,MAAM,mCAAmC,glEAwB/C,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEzB,CAAC;AAEF,qBAAa,aAAc,SAAQ,eAAe;IAC9C,MAAM,CAAC,QAAQ,SAAe;IACvB,WAAW,SAAqD;IAChE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOd;IACF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAU;cAE7B,OAAO,CACnB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EACvF,EAAE,MAAM,EAAE,EAAE,oBAAoB,GACjC,OAAO,CAAC,cAAc,CAAC;YAqIZ,eAAe;YAYf,6BAA6B;YAiB7B,+BAA+B;YAuC/B,uBAAuB;IA8CrC,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,aAAa;CAGxB"}
|
|
@@ -13,6 +13,7 @@ const constants_js_1 = require("../../../helpers/constants.js");
|
|
|
13
13
|
const index_js_1 = require("../../../common/logging/index.js");
|
|
14
14
|
const mongodbSchemas_js_1 = require("../mongodbSchemas.js");
|
|
15
15
|
const assertVectorSearchFilterFieldsAreIndexed_js_1 = require("../../../helpers/assertVectorSearchFilterFieldsAreIndexed.js");
|
|
16
|
+
const mqlGuards_js_1 = require("../../../helpers/mqlGuards.js");
|
|
16
17
|
exports.pipelineDescriptionWithVectorSearch = `\
|
|
17
18
|
An array of aggregation stages to execute.
|
|
18
19
|
If the user has asked for a vector search, \`$vectorSearch\` **MUST** be the first stage of the pipeline, or the first stage of a \`$unionWith\` subpipeline.
|
|
@@ -111,7 +112,7 @@ Note to LLM: If the entire aggregation result is required, use the "export" tool
|
|
|
111
112
|
}
|
|
112
113
|
let successMessage;
|
|
113
114
|
let documents;
|
|
114
|
-
if (pipeline.some((stage) =>
|
|
115
|
+
if (pipeline.some((stage) => (0, mqlGuards_js_1.isWriteStage)(stage))) {
|
|
115
116
|
// This is a write pipeline, so special-case it and don't attempt to apply limits or caps
|
|
116
117
|
aggregationCursor = provider.aggregate(database, collection, pipeline, {
|
|
117
118
|
signal,
|
|
@@ -182,23 +183,9 @@ Note to LLM: If the entire aggregation result is required, use the "export" tool
|
|
|
182
183
|
}
|
|
183
184
|
}
|
|
184
185
|
async assertOnlyUsesPermittedStages(pipeline) {
|
|
185
|
-
const writeOperations = ["update", "create", "delete"];
|
|
186
186
|
const isSearchSupported = await this.session.isSearchSupported();
|
|
187
|
-
|
|
188
|
-
if (this.config.readOnly) {
|
|
189
|
-
writeStageForbiddenError = "In readOnly mode you can not run pipelines with $out or $merge stages.";
|
|
190
|
-
}
|
|
191
|
-
else if (this.config.disabledTools.some((t) => writeOperations.includes(t))) {
|
|
192
|
-
writeStageForbiddenError =
|
|
193
|
-
"When 'create', 'update', or 'delete' operations are disabled, you can not run pipelines with $out or $merge stages.";
|
|
194
|
-
}
|
|
187
|
+
this.assertMqlIsAllowed(pipeline);
|
|
195
188
|
for (const stage of pipeline) {
|
|
196
|
-
// This validates that in readOnly mode or "write" operations are disabled, we can't use $out or $merge.
|
|
197
|
-
// This is really important because aggregates are the only "multi-faceted" tool in the MQL, where you
|
|
198
|
-
// can both read and write.
|
|
199
|
-
if (this.isWriteStage(stage) && writeStageForbiddenError) {
|
|
200
|
-
throw new errors_js_1.MongoDBError(errors_js_1.ErrorCodes.ForbiddenWriteOperation, writeStageForbiddenError);
|
|
201
|
-
}
|
|
202
189
|
// This ensure that you can't use $search if the cluster does not support MongoDB Search
|
|
203
190
|
// either in Atlas or in a local cluster.
|
|
204
191
|
if (this.isSearchStage(stage) && !isSearchSupported) {
|
|
@@ -279,9 +266,6 @@ Note to LLM: If the entire aggregation result is required, use the "export" tool
|
|
|
279
266
|
isSearchStage(stage) {
|
|
280
267
|
return "$vectorSearch" in stage || "$search" in stage || "$searchMeta" in stage;
|
|
281
268
|
}
|
|
282
|
-
isWriteStage(stage) {
|
|
283
|
-
return "$out" in stage || "$merge" in stage;
|
|
284
|
-
}
|
|
285
269
|
}
|
|
286
270
|
exports.AggregateTool = AggregateTool;
|
|
287
271
|
AggregateTool.toolName = "aggregate";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregate.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAIxB,sDAAuE;AAEvE,2CAAoD;AACpD,kEAAiE;AACjE,+BAA4C;AAC5C,yDAAqE;AACrE,kGAAiG;AACjG,wFAAkF;AAClF,gEAA6G;AAC7G,+DAAyD;AACzD,4DAA4E;AAC5E,8HAGsE;
|
|
1
|
+
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregate.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAIxB,sDAAuE;AAEvE,2CAAoD;AACpD,kEAAiE;AACjE,+BAA4C;AAC5C,yDAAqE;AACrE,kGAAiG;AACjG,wFAAkF;AAClF,gEAA6G;AAC7G,+DAAyD;AACzD,4DAA4E;AAC5E,8HAGsE;AACtE,gEAA6D;AAEhD,QAAA,mCAAmC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBlD,CAAC;AAEW,QAAA,aAAa,GAAG;IACzB,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,KAAK,CAAC,CAAC,qCAAiB,EAAE,qCAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2CAAmC,CAAC;CACnH,CAAC;AAEF,MAAa,aAAc,SAAQ,gCAAe;IAAlD;;QAEW,gBAAW,GAAG,iDAAiD,CAAC;QAChE,cAAS,GAAG;YACf,GAAG,kCAAiB;YACpB,GAAG,qBAAa;YAChB,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,qBAAM,CAAC,CAAC,QAAQ,CAAC;;;CAG1E,CAAC;SACG,CAAC;IA6RN,CAAC;IA1Ra,KAAK,CAAC,OAAO,CACnB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAmC,EACvF,EAAE,MAAM,EAAwB;QAEhC,IAAI,iBAAiB,GAAkC,SAAS,CAAC;QACjE,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9C,MAAM,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBACzC,IAAI,aAAwC,CAAC;gBAC7C,IAAI,CAAC;oBACD,aAAa,GAAG,CAAC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAkB,CAAC;gBAC7F,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;wBACtB,EAAE,EAAE,gBAAK,CAAC,8BAA8B;wBACxC,OAAO,EAAE,gBAAgB;wBACzB,OAAO,EAAE,6EAA6E,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACjJ,CAAC,CAAC;gBACP,CAAC;gBACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAC9B,IAAA,sFAAwC,EAAC;wBACrC,aAAa;wBACb,QAAQ;wBACR,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;qBAC9B,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YAED,wDAAwD;YACxD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACzB,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC;oBAC1E,QAAQ;oBACR,UAAU;oBACV,QAAQ;iBACX,CAAC,CAAC;gBACH,QAAQ,qBAAqB,EAAE,CAAC;oBAC5B,KAAK,yBAAyB;wBAC1B,MAAM,IAAA,+BAAe,EAAC;4BAClB,QAAQ;4BACR,UAAU;4BACV,SAAS,EAAE,WAAW;4BACtB,eAAe,EAAE,KAAK,IAAI,EAAE;gCACxB,OAAO,QAAQ;qCACV,SAAS,CACN,QAAQ,EACR,UAAU,EACV,QAAQ,EACR;oCACI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;iCACtC,EACD,EAAE,YAAY,EAAE,SAAS,EAAE,CAC9B;qCACA,OAAO,CAAC,cAAc,CAAC,CAAC;4BACjC,CAAC;4BACD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;yBAC9B,CAAC,CAAC;wBACH,MAAM;oBACV,KAAK,oBAAoB;wBACrB,MAAM,IAAI,wBAAY,CAClB,sBAAU,CAAC,8BAA8B,EACzC,sCAAsC,SAAS,mBAAmB,QAAQ,IAAI,UAAU,IAAI,CAC/F,CAAC;oBACN,KAAK,aAAa;wBACd,iEAAiE;wBACjE,MAAM;gBACd,CAAC;YACL,CAAC;YAED,IAAI,cAAsB,CAAC;YAC3B,IAAI,SAAoB,CAAC;YACzB,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,2BAAY,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChD,yFAAyF;gBACzF,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE;oBACnE,MAAM;iBACT,CAAC,CAAC;gBAEH,SAAS,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBAC9C,cAAc,GAAG,iDAAiD,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACJ,MAAM,qBAAqB,GAAe,CAAC,GAAG,QAAQ,CAAC,CAAC;gBACxD,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;oBACvC,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBACD,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE;oBAChF,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;iBACtC,CAAC,CAAC;gBAEH,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBACtD,IAAI,CAAC,+BAA+B,CAAC;wBACjC,QAAQ;wBACR,QAAQ;wBACR,UAAU;wBACV,QAAQ;wBACR,WAAW,EAAE,MAAM;qBACtB,CAAC;oBACF,IAAA,+DAA+B,EAAC;wBAC5B,MAAM,EAAE,iBAAiB;wBACzB,0BAA0B,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;wBACxD,sBAAsB,EAAE,kBAAkB;wBAC1C,WAAW,EAAE,MAAM;qBACtB,CAAC;iBACL,CAAC,CAAC;gBAEH,iEAAiE;gBACjE,mDAAmD;gBACnD,mEAAmE;gBACnE,UAAU;gBACV,MAAM,2CAA2C,GAC7C,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC;oBACpC,CAAC,CAAC,cAAc;oBAChB,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAEtD,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;gBACpC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;oBAClC,eAAe,EAAE,cAAc;oBAC/B,SAAS,EAAE,aAAa,CAAC,SAAS;oBAClC,aAAa,EAAE;wBACX,2CAA2C,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,SAAS;wBACvF,aAAa,CAAC,QAAQ;qBACzB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmD,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;iBAChF,CAAC,CAAC;YACP,CAAC;YAED,OAAO;gBACH,OAAO,EAAE,IAAA,6BAAmB,EACxB,cAAc,EACd,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAChE;aACJ,CAAC;QACN,CAAC;gBAAS,CAAC;YACP,IAAI,iBAAiB,EAAE,CAAC;gBACpB,KAAK,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,MAAkC;QAC5D,IAAI,CAAC;YACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxB,EAAE,EAAE,gBAAK,CAAC,uBAAuB;gBACjC,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACvG,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAAC,QAAmC;QAC3E,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAEjE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,wFAAwF;YACxF,yCAAyC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAClD,MAAM,IAAI,wBAAY,CAClB,sBAAU,CAAC,uBAAuB,EAClC,gDAAgD,CACnD,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAAC,EAC1C,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,GAOd;QACG,MAAM,uBAAuB,GAAG,CAAC,GAAG,QAAQ,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5E,OAAO,MAAM,IAAA,gDAAqB,EAAC,KAAK,IAAiC,EAAE;YACvE,MAAM,kBAAkB,GAAG,MAAM,QAAQ;iBACpC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,uBAAuB,EAAE;gBACtD,MAAM,EAAE,WAAW;aACtB,CAAC;iBACD,SAAS,CACN,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;gBAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,wCAAyB,CAAC;gBAC5D,CAAC,CAAC,wCAAyB,CAClC;iBACA,OAAO,EAAE,CAAC;YAEf,MAAM,iBAAiB,GAAY,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvG,MAAM,cAAc,GAChB,iBAAiB;gBACjB,OAAO,iBAAiB,KAAK,QAAQ;gBACrC,gBAAgB,IAAI,iBAAiB;gBACrC,OAAO,iBAAiB,CAAC,cAAc,KAAK,QAAQ;gBAChD,CAAC,CAAC,iBAAiB,CAAC,cAAc;gBAClC,CAAC,CAAC,CAAC,CAAC;YAEZ,OAAO,cAAc,CAAC;QAC1B,CAAC,EAAE,SAAS,CAAC,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,EAClC,QAAQ,EACR,UAAU,EACV,QAAQ,GAKX;QACG,uDAAuD;QACvD,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,SAAS,GAAW,SAAS,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,eAAe,IAAI,KAAK,EAAE,CAAC;gBAC3B,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,KAA0C,CAAC;gBACxF,gBAAgB,GAAG,IAAI,CAAC;gBACxB,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC;gBACpC,MAAM;YACV,CAAC;QACL,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpB,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACjE,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,iBAAiB,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBACjF,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;oBACtB,EAAE,EAAE,gBAAK,CAAC,8BAA8B;oBACxC,OAAO,EAAE,gBAAgB;oBACzB,OAAO,EAAE,iFAAiF,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACrJ,CAAC,CAAC;gBACH,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC;IAEO,eAAe,CAAC,EACpB,eAAe,EACf,SAAS,EACT,aAAa,GAKhB;QACG,IAAI,OAAO,GAAG,+BAA+B,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,eAAe,aAAa,CAAC;QAEvI,qFAAqF;QACrF,8DAA8D;QAC9D,IAAI,SAAS,CAAC,MAAM,KAAK,eAAe,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YAC/D,OAAO,IAAI,cAAc,SAAS,CAAC,MAAM,YAAY,CAAC;YACtD,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACvB,OAAO,IAAI,2CAA2C,aAAa;qBAC9D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,wCAAyB,CAAC,KAAK,CAAC,CAAC;qBAChD,IAAI,CACD,IAAI,CACP,0GAA0G,CAAC;YACpH,CAAC;YAED,OAAO,IAAI,GAAG,CAAC;QACnB,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,aAAa,CAAC,KAA8B;QAChD,OAAO,eAAe,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,aAAa,IAAI,KAAK,CAAC;IACpF,CAAC;;AAtSL,sCAuSC;AAtSU,sBAAQ,GAAG,WAAW,AAAd,CAAe;AAUvB,2BAAa,GAAkB,MAAM,AAAxB,CAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregateDB.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregateDB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAmB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregateDB.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregateDB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAmB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAWnF,eAAO,MAAM,aAAa;;CAOzB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,eAAe;IAChD,MAAM,CAAC,QAAQ,SAAkB;IAC1B,WAAW,SAAmD;IAC9D,SAAS;;;;MAKd;IACF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAU;cAE7B,OAAO,CACnB,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAC3E,EAAE,MAAM,EAAE,EAAE,oBAAoB,GACjC,OAAO,CAAC,cAAc,CAAC;YAyEZ,eAAe;IAY7B,OAAO,CAAC,6BAA6B;YAYvB,+BAA+B;IAqC7C,OAAO,CAAC,eAAe;CA0B1B"}
|
|
@@ -8,6 +8,7 @@ const bson_1 = require("bson");
|
|
|
8
8
|
const errors_js_1 = require("../../../common/errors.js");
|
|
9
9
|
const collectCursorUntilMaxBytes_js_1 = require("../../../helpers/collectCursorUntilMaxBytes.js");
|
|
10
10
|
const operationWithFallback_js_1 = require("../../../helpers/operationWithFallback.js");
|
|
11
|
+
const mqlGuards_js_1 = require("../../../helpers/mqlGuards.js");
|
|
11
12
|
const constants_js_1 = require("../../../helpers/constants.js");
|
|
12
13
|
const index_js_1 = require("../../../common/logging/index.js");
|
|
13
14
|
const mongodbSchemas_js_1 = require("../mongodbSchemas.js");
|
|
@@ -35,7 +36,7 @@ The maximum number of bytes to return in the response. This value is capped by t
|
|
|
35
36
|
this.assertOnlyUsesPermittedStages(pipeline);
|
|
36
37
|
let successMessage;
|
|
37
38
|
let documents;
|
|
38
|
-
if (pipeline.some((stage) =>
|
|
39
|
+
if (pipeline.some((stage) => (0, mqlGuards_js_1.isWriteStage)(stage))) {
|
|
39
40
|
// This is a write pipeline, so special-case it and don't attempt to apply limits or caps
|
|
40
41
|
aggregationCursor = provider.aggregateDb(database, pipeline, {
|
|
41
42
|
...this.getOperationOptions(signal),
|
|
@@ -109,23 +110,7 @@ The maximum number of bytes to return in the response. This value is capped by t
|
|
|
109
110
|
if (!firstStage || !mongodbSchemas_js_1.DB_AGGREGATE_STAGE_OPERATORS.some((op) => op in firstStage)) {
|
|
110
111
|
throw new errors_js_1.MongoDBError(errors_js_1.ErrorCodes.InvalidPipeline, `The first stage of the pipeline must be a database-level aggregation stage (one of ${mongodbSchemas_js_1.DB_AGGREGATE_STAGE_OPERATORS.join(", ")})`);
|
|
111
112
|
}
|
|
112
|
-
|
|
113
|
-
let writeStageForbiddenError = "";
|
|
114
|
-
if (this.config.readOnly) {
|
|
115
|
-
writeStageForbiddenError = "In readOnly mode you can not run pipelines with $out or $merge stages.";
|
|
116
|
-
}
|
|
117
|
-
else if (this.config.disabledTools.some((t) => writeOperations.includes(t))) {
|
|
118
|
-
writeStageForbiddenError =
|
|
119
|
-
"When 'create', 'update', or 'delete' operations are disabled, you can not run pipelines with $out or $merge stages.";
|
|
120
|
-
}
|
|
121
|
-
for (const stage of pipeline) {
|
|
122
|
-
// This validates that in readOnly mode or "write" operations are disabled, we can't use $out or $merge.
|
|
123
|
-
// This is really important because aggregates are the only "multi-faceted" tool in the MQL, where you
|
|
124
|
-
// can both read and write.
|
|
125
|
-
if (this.isWriteStage(stage) && writeStageForbiddenError) {
|
|
126
|
-
throw new errors_js_1.MongoDBError(errors_js_1.ErrorCodes.ForbiddenWriteOperation, writeStageForbiddenError);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
113
|
+
this.assertMqlIsAllowed(pipeline);
|
|
129
114
|
}
|
|
130
115
|
async countAggregationResultDocuments({ provider, database, pipeline, abortSignal, }) {
|
|
131
116
|
const resultsCountAggregation = [...pipeline, { $count: "totalDocuments" }];
|
|
@@ -163,9 +148,6 @@ The maximum number of bytes to return in the response. This value is capped by t
|
|
|
163
148
|
}
|
|
164
149
|
return message;
|
|
165
150
|
}
|
|
166
|
-
isWriteStage(stage) {
|
|
167
|
-
return "$out" in stage || "$merge" in stage;
|
|
168
|
-
}
|
|
169
151
|
}
|
|
170
152
|
exports.AggregateDBTool = AggregateDBTool;
|
|
171
153
|
AggregateDBTool.toolName = "aggregate-db";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregateDB.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregateDB.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAIxB,sDAAqE;AAErE,2CAAoD;AACpD,+BAA4C;AAC5C,yDAAqE;AACrE,kGAAiG;AACjG,wFAAkF;AAClF,gEAA6G;AAC7G,+DAAyD;AACzD,4DAAuF;AAE1E,QAAA,aAAa,GAAG;IACzB,QAAQ,EAAE,OAAC;SACN,KAAK,CAAC,qCAAiB,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACL,iHAAiH,gDAA4B,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gGAAgG,CACpR;CACR,CAAC;AAEF,MAAa,eAAgB,SAAQ,gCAAe;IAApD;;QAEW,gBAAW,GAAG,+CAA+C,CAAC;QAC9D,cAAS,GAAG;YACf,GAAG,gCAAe;YAClB,GAAG,qBAAa;YAChB,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,qBAAM,CAAC,CAAC,QAAQ,CAAC;gJACqE,CAAC;SAC5I,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregateDB.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/aggregateDB.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/count.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAInF,eAAO,MAAM,SAAS;;CAMrB,CAAC;AAEF,qBAAa,SAAU,SAAQ,eAAe;IAC1C,MAAM,CAAC,QAAQ,SAAW;IACnB,WAAW,SAC+G;IAC1H,SAAS;;;;MAGd;IAEF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAU;cAE7B,OAAO,CACnB,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAChE,EAAE,MAAM,EAAE,EAAE,oBAAoB,GACjC,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/count.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAInF,eAAO,MAAM,SAAS;;CAMrB,CAAC;AAEF,qBAAa,SAAU,SAAQ,eAAe;IAC1C,MAAM,CAAC,QAAQ,SAAW;IACnB,WAAW,SAC+G;IAC1H,SAAS;;;;MAGd;IAEF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAU;cAE7B,OAAO,CACnB,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAChE,EAAE,MAAM,EAAE,EAAE,oBAAoB,GACjC,OAAO,CAAC,cAAc,CAAC;CA4C7B"}
|
|
@@ -20,6 +20,7 @@ class CountTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
20
20
|
}
|
|
21
21
|
async execute({ database, collection, query }, { signal }) {
|
|
22
22
|
const provider = await this.ensureConnected();
|
|
23
|
+
this.assertMqlIsAllowed(query);
|
|
23
24
|
// Check if count operation uses an index if enabled
|
|
24
25
|
if (this.config.indexCheck) {
|
|
25
26
|
await (0, indexCheck_js_1.checkIndexUsage)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/count.ts"],"names":[],"mappings":";;;AACA,sDAAuE;AAEvE,kEAAiE;AACjE,2CAAuC;AAE1B,QAAA,SAAS,GAAG;IACrB,KAAK,EAAE,IAAA,gBAAM,GAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACL,8IAA8I,CACjJ;CACR,CAAC;AAEF,MAAa,SAAU,SAAQ,gCAAe;IAA9C;;QAEW,gBAAW,GACd,4HAA4H,CAAC;QAC1H,cAAS,GAAG;YACf,GAAG,kCAAiB;YACpB,GAAG,iBAAS;SACf,CAAC;
|
|
1
|
+
{"version":3,"file":"count.js","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/count.ts"],"names":[],"mappings":";;;AACA,sDAAuE;AAEvE,kEAAiE;AACjE,2CAAuC;AAE1B,QAAA,SAAS,GAAG;IACrB,KAAK,EAAE,IAAA,gBAAM,GAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACL,8IAA8I,CACjJ;CACR,CAAC;AAEF,MAAa,SAAU,SAAQ,gCAAe;IAA9C;;QAEW,gBAAW,GACd,4HAA4H,CAAC;QAC1H,cAAS,GAAG;YACf,GAAG,kCAAiB;YACpB,GAAG,iBAAS;SACf,CAAC;IAmDN,CAAC;IA/Ca,KAAK,CAAC,OAAO,CACnB,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAmC,EAChE,EAAE,MAAM,EAAwB;QAEhC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE9C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE/B,oDAAoD;QACpD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzB,MAAM,IAAA,+BAAe,EAAC;gBAClB,QAAQ;gBACR,UAAU;gBACV,SAAS,EAAE,OAAO;gBAClB,eAAe,EAAE,KAAK,IAAI,EAAE;oBACxB,OAAO,QAAQ,CAAC,mBAAmB,CAC/B,QAAQ,EACR;wBACI,OAAO,EAAE;4BACL,KAAK,EAAE,UAAU;4BACjB,KAAK;yBACR;wBACD,SAAS,EAAE,cAAc;wBACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;qBACnF,EACD;wBACI,MAAM;qBACT,CACJ,CAAC;gBACN,CAAC;gBACD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;aAC9B,CAAC,CAAC;QACP,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;YACrE,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;SACtC,CAAC,CAAC;QAEH,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,SAAS,KAAK,iCAAiC,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,GAAG;oBAC5G,IAAI,EAAE,MAAM;iBACf;aACJ;SACJ,CAAC;IACN,CAAC;;AAzDL,8BA0DC;AAzDU,kBAAQ,GAAG,OAAO,AAAV,CAAW;AAQnB,uBAAa,GAAkB,MAAM,AAAxB,CAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/export.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKvE,qBAAa,UAAW,SAAQ,eAAe;IAC3C,MAAM,CAAC,QAAQ,SAAY;IACpB,WAAW,SAA0E;IACrF,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyCd;IACF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAU;cAE7B,OAAO,CACnB,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAC9G,EAAE,MAAM,EAAE,EAAE,oBAAoB,GACjC,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mongodb/read/export.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKvE,qBAAa,UAAW,SAAQ,eAAe;IAC3C,MAAM,CAAC,QAAQ,SAAY;IACpB,WAAW,SAA0E;IACrF,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyCd;IACF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAU;cAE7B,OAAO,CACnB,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAC9G,EAAE,MAAM,EAAE,EAAE,oBAAoB,GACjC,OAAO,CAAC,cAAc,CAAC;IAwE1B,OAAO,CAAC,sBAAsB;CAGjC"}
|
|
@@ -62,6 +62,7 @@ class ExportTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
62
62
|
let cursor;
|
|
63
63
|
if (exportTarget.name === "find") {
|
|
64
64
|
const { filter, projection, sort, limit } = exportTarget.arguments;
|
|
65
|
+
this.assertMqlIsAllowed(filter);
|
|
65
66
|
cursor = provider.find(database, collection, filter ?? {}, {
|
|
66
67
|
projection,
|
|
67
68
|
sort,
|
|
@@ -73,6 +74,7 @@ class ExportTool extends mongodbTool_js_1.MongoDBToolBase {
|
|
|
73
74
|
}
|
|
74
75
|
else {
|
|
75
76
|
const { pipeline } = exportTarget.arguments;
|
|
77
|
+
this.assertMqlIsAllowed(pipeline);
|
|
76
78
|
cursor = provider.aggregate(database, collection, pipeline, {
|
|
77
79
|
promoteValues: false,
|
|
78
80
|
bsonRegExp: true,
|