@struktoai/mirage-node 0.0.5-alpha.1 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,7 +26,7 @@ import {
26
26
  // package.json
27
27
  var package_default = {
28
28
  name: "@struktoai/mirage-node",
29
- version: "0.0.5-alpha.1",
29
+ version: "0.0.5",
30
30
  description: "A Unified Virtual Filesystem For AI Agents",
31
31
  keywords: [
32
32
  "bash",
@@ -332,4 +332,4 @@ export {
332
332
  MongoDBStore,
333
333
  MongoDBResource
334
334
  };
335
- //# sourceMappingURL=chunk-H64SB6VO.js.map
335
+ //# sourceMappingURL=chunk-VQDF2UH5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/resource/mongodb/mongodb.ts","../src/resource/mongodb/store.ts","../package.json","../src/version.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n BaseResource,\n MONGODB_COMMANDS,\n MONGODB_OPS,\n MONGODB_PROMPT,\n MongoDBAccessor,\n PathSpec,\n ResourceName,\n detectMongoScope,\n mongoRead,\n mongoReaddir,\n mongoStat,\n mountKey,\n mountPrefixOf,\n resolveMongoDBConfig,\n makeResolveGlob,\n type FileStat,\n type MongoDBConfig,\n type MongoDBConfigResolved,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n} from '@struktoai/mirage-core'\nimport { MongoDBStore } from './store.ts'\n\nconst resolveMongoGlob = makeResolveGlob(mongoReaddir)\n\nvoid detectMongoScope\n\nexport interface MongoDBResourceOptions {\n config: MongoDBConfig\n prefix?: string\n}\n\nexport class MongoDBResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.MONGODB\n readonly cachesReads: boolean = false\n override readonly indexTtl: number = 0\n readonly prompt: string\n readonly config: MongoDBConfigResolved\n readonly store: MongoDBStore\n readonly accessor: MongoDBAccessor\n\n constructor(options: MongoDBResourceOptions | MongoDBConfig) {\n super()\n const { config, prefix } =\n 'config' in options ? options : { config: options, prefix: undefined }\n this.config = resolveMongoDBConfig(config)\n this.store = new MongoDBStore(this.config.uri)\n this.accessor = new MongoDBAccessor(this.store, this.config)\n this.prompt = MONGODB_PROMPT.replace('{prefix}', prefix ?? '')\n }\n\n open(): Promise<void> {\n return Promise.resolve()\n }\n\n override async close(): Promise<void> {\n await this.store.close()\n await super.close()\n }\n\n ops(): readonly RegisteredOp[] {\n return MONGODB_OPS\n }\n\n commands(): readonly RegisteredCommand[] {\n return MONGODB_COMMANDS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return mongoRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return mongoReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return mongoStat(this.accessor, p, this.index)\n }\n\n glob(paths: readonly PathSpec[], prefix = ''): Promise<PathSpec[]> {\n const effective =\n prefix !== ''\n ? paths.map((p) =>\n mountPrefixOf(p.virtual, p.resourcePath) !== ''\n ? p\n : new PathSpec({\n virtual: p.virtual,\n directory: p.directory,\n ...(p.pattern !== null ? { pattern: p.pattern } : {}),\n resolved: p.resolved,\n resourcePath: mountKey(p.virtual, prefix),\n }),\n )\n : paths\n return resolveMongoGlob(this.accessor, effective, this.index)\n }\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n loadOptionalPeer,\n type EntityKind,\n type MongoCollectionSpec,\n type MongoDriver,\n type MongoFindOptions,\n type MongoIndexAccess,\n type MongoIterOptions,\n compareCodePoints,\n} from '@struktoai/mirage-core'\nimport { VERSION } from '../../version.ts'\n\nconst DRIVER_INFO = { name: 'Mirage', version: VERSION }\n\ninterface MongoCollectionLike {\n find: (\n filter: Record<string, unknown>,\n options?: { projection?: Record<string, unknown> },\n ) => {\n sort: (sort: Record<string, 1 | -1>) => MongoCursorLike\n skip: (n: number) => MongoCursorLike\n limit: (n: number) => MongoCursorLike\n batchSize: (n: number) => MongoCursorLike\n toArray: () => Promise<Record<string, unknown>[]>\n [Symbol.asyncIterator]?: () => AsyncIterableIterator<Record<string, unknown>>\n }\n countDocuments: (filter?: Record<string, unknown>) => Promise<number>\n listIndexes: () => { toArray: () => Promise<Record<string, unknown>[]> }\n aggregate: (pipeline: unknown[]) => { toArray: () => Promise<Record<string, unknown>[]> }\n watch: (\n pipeline?: unknown[],\n ) => AsyncIterableIterator<Record<string, unknown>> & { close: () => Promise<void> }\n}\n\ninterface MongoCursorLike {\n sort: (sort: Record<string, 1 | -1>) => MongoCursorLike\n skip: (n: number) => MongoCursorLike\n limit: (n: number) => MongoCursorLike\n batchSize: (n: number) => MongoCursorLike\n toArray: () => Promise<Record<string, unknown>[]>\n [Symbol.asyncIterator]?: () => AsyncIterableIterator<Record<string, unknown>>\n}\n\ninterface MongoDbLike {\n listCollections: (filter?: Record<string, unknown>) => {\n toArray: () => Promise<Record<string, unknown>[]>\n }\n collection: (name: string) => MongoCollectionLike\n admin: () => { listDatabases: () => Promise<{ databases: { name: string }[] }> }\n}\n\ninterface MongoClientLike {\n connect: () => Promise<MongoClientLike>\n db: (name?: string) => MongoDbLike\n close: () => Promise<void>\n}\n\ninterface MongoModule {\n MongoClient: new (\n uri: string,\n options?: { driverInfo?: { name: string; version?: string } },\n ) => MongoClientLike\n}\n\nexport class MongoDBStore implements MongoDriver {\n readonly uri: string\n private clientPromise: Promise<MongoClientLike> | null = null\n\n constructor(uri: string) {\n this.uri = uri\n }\n\n async listDatabases(): Promise<string[]> {\n const c = await this._client()\n const r = await c.db().admin().listDatabases()\n return r.databases.map((d) => d.name)\n }\n\n async listCollections(database: string, kind: EntityKind | null = null): Promise<string[]> {\n const c = await this._client()\n const filter = kind === null ? undefined : { type: kind }\n const cols = await c.db(database).listCollections(filter).toArray()\n return cols.map((col) => col.name as string).sort(compareCodePoints)\n }\n\n async listCollectionsDetailed(\n database: string,\n filter: { name?: string } = {},\n ): Promise<MongoCollectionSpec[]> {\n const c = await this._client()\n const cols = await c.db(database).listCollections(filter).toArray()\n return cols.map((col) => {\n const spec: MongoCollectionSpec = { name: col.name as string }\n if (col.type !== undefined) spec.type = col.type as string\n if (col.options !== undefined)\n spec.options = col.options as NonNullable<MongoCollectionSpec['options']>\n return spec\n })\n }\n\n async findDocuments<T = Record<string, unknown>>(\n database: string,\n collection: string,\n filter: Record<string, unknown> = {},\n options: MongoFindOptions = {},\n ): Promise<T[]> {\n const c = await this._client()\n let cursor = c\n .db(database)\n .collection(collection)\n .find(filter, {\n ...(options.projection !== undefined ? { projection: options.projection } : {}),\n }) as MongoCursorLike\n if (options.sort !== undefined) cursor = cursor.sort(options.sort)\n if (options.skip !== undefined) cursor = cursor.skip(options.skip)\n if (options.limit !== undefined) cursor = cursor.limit(options.limit)\n return (await cursor.toArray()) as T[]\n }\n\n async *iterDocuments<T = Record<string, unknown>>(\n database: string,\n collection: string,\n options: MongoIterOptions = {},\n ): AsyncIterableIterator<T> {\n const c = await this._client()\n const filter = options.filter ?? {}\n let cursor = c\n .db(database)\n .collection(collection)\n .find(filter, {\n ...(options.projection !== undefined ? { projection: options.projection } : {}),\n }) as MongoCursorLike\n if (options.sort !== undefined) cursor = cursor.sort(options.sort)\n if (options.batchSize !== undefined) cursor = cursor.batchSize(options.batchSize)\n if (cursor[Symbol.asyncIterator] === undefined) {\n const all = (await cursor.toArray()) as T[]\n for (const doc of all) yield doc\n return\n }\n for await (const doc of cursor as unknown as AsyncIterableIterator<T>) {\n yield doc\n }\n }\n\n async *iterInserts<T = Record<string, unknown>>(\n database: string,\n collection: string,\n ): AsyncIterableIterator<T> {\n const c = await this._client()\n const stream = c\n .db(database)\n .collection(collection)\n .watch([{ $match: { operationType: 'insert' } }])\n try {\n for await (const change of stream as AsyncIterableIterator<Record<string, unknown>>) {\n const doc = change.fullDocument\n if (doc !== undefined && doc !== null) yield doc as T\n }\n } finally {\n await stream.close()\n }\n }\n\n async countDocuments(\n database: string,\n collection: string,\n filter: Record<string, unknown> = {},\n ): Promise<number> {\n const c = await this._client()\n return c.db(database).collection(collection).countDocuments(filter)\n }\n\n async listIndexes(database: string, collection: string): Promise<Record<string, unknown>[]> {\n const c = await this._client()\n return c.db(database).collection(collection).listIndexes().toArray()\n }\n\n async getIndexStats(\n database: string,\n collection: string,\n ): Promise<Record<string, MongoIndexAccess>> {\n const c = await this._client()\n const docs = await c\n .db(database)\n .collection(collection)\n .aggregate([{ $indexStats: {} }])\n .toArray()\n const out: Record<string, MongoIndexAccess> = {}\n for (const d of docs) {\n const name = d.name as string | undefined\n if (name !== undefined) {\n out[name] = (d.accesses as MongoIndexAccess | undefined) ?? {}\n }\n }\n return out\n }\n\n async close(): Promise<void> {\n if (this.clientPromise === null) return\n const c = await this.clientPromise\n this.clientPromise = null\n await c.close()\n }\n\n private async _client(): Promise<MongoClientLike> {\n this.clientPromise ??= this._connect()\n return this.clientPromise\n }\n\n protected async _connect(): Promise<MongoClientLike> {\n const mod = await loadOptionalPeer(() => import('mongodb') as unknown as Promise<MongoModule>, {\n feature: 'MongoDBResource',\n packageName: 'mongodb',\n })\n const c = new mod.MongoClient(this.uri, { driverInfo: DRIVER_INFO })\n await c.connect()\n return c\n }\n}\n","{\n \"name\": \"@struktoai/mirage-node\",\n \"version\": \"0.0.5-alpha.1\",\n \"description\": \"A Unified Virtual Filesystem For AI Agents\",\n \"keywords\": [\n \"bash\",\n \"fuse\",\n \"typescript\",\n \"vfs\",\n \"ai-agents\",\n \"agent-sandbox\",\n \"langchain\",\n \"virtual-filesystem\",\n \"llm-agents\",\n \"agent-tools\",\n \"claude-code\",\n \"openai-agents\"\n ],\n \"homepage\": \"https://github.com/strukto-ai/mirage#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/strukto-ai/mirage/issues\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/strukto-ai/mirage.git\",\n \"directory\": \"typescript/packages/node\"\n },\n \"license\": \"Apache-2.0\",\n \"author\": \"Zecheng Zhang <zecheng@strukto.ai>\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"type\": \"module\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\"\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"test\": \"vitest run\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"dependencies\": {\n \"@napi-rs/lzma\": \"^1.4.5\",\n \"@struktoai/mirage-core\": \"workspace:*\",\n \"fast-xml-parser\": \"^5.9.0\",\n \"fast-xml-validator\": \"^1.4.0\",\n \"fs-monkey\": \"^1.1.0\",\n \"http-proxy-agent\": \"^7.0.2\",\n \"https-proxy-agent\": \"^7.0.6\",\n \"seek-bzip\": \"^2.0.0\",\n \"tree-sitter-bash\": \"^0.25.1\",\n \"web-tree-sitter\": \"^0.26.8\"\n },\n \"peerDependencies\": {\n \"@daytonaio/sdk\": \"^0.199.0\",\n \"@lancedb/lancedb\": \"^0.30.0\",\n \"@zkochan/fuse-native\": \"^0.1.0\",\n \"e2b\": \"^2.0.0\",\n \"imapflow\": \"^1.0.0\",\n \"mailparser\": \"^3.6.0\",\n \"mongodb\": \"^6.10.0\",\n \"nodemailer\": \"^9.0.1\",\n \"opendal\": \"^0.49.4\",\n \"pg\": \"^8.13.0\",\n \"redis\": \"^5.0.0\",\n \"ssh2\": \"^1.16.0\"\n },\n \"peerDependenciesMeta\": {\n \"@daytonaio/sdk\": {\n \"optional\": true\n },\n \"@lancedb/lancedb\": {\n \"optional\": true\n },\n \"@zkochan/fuse-native\": {\n \"optional\": true\n },\n \"e2b\": {\n \"optional\": true\n },\n \"imapflow\": {\n \"optional\": true\n },\n \"mailparser\": {\n \"optional\": true\n },\n \"mongodb\": {\n \"optional\": true\n },\n \"nodemailer\": {\n \"optional\": true\n },\n \"opendal\": {\n \"optional\": true\n },\n \"pg\": {\n \"optional\": true\n },\n \"redis\": {\n \"optional\": true\n },\n \"ssh2\": {\n \"optional\": true\n }\n },\n \"devDependencies\": {\n \"@aws-sdk/client-s3\": \"^3.0.0\",\n \"@daytonaio/sdk\": \"^0.199.0\",\n \"@lancedb/lancedb\": \"^0.30.0\",\n \"@types/mailparser\": \"^3.4.6\",\n \"@types/nodemailer\": \"^8.0.0\",\n \"@types/pg\": \"^8.11.0\",\n \"@types/ssh2\": \"^1.15.0\",\n \"@zkochan/fuse-native\": \"^0.1.0\",\n \"e2b\": \"^2.0.0\",\n \"imapflow\": \"^1.3.2\",\n \"mailparser\": \"^3.9.8\",\n \"mongodb\": \"^6.10.0\",\n \"nodemailer\": \"^9.0.1\",\n \"opendal\": \"^0.49.4\",\n \"pg\": \"^8.13.0\",\n \"redis\": \"^5.0.0\",\n \"ssh2\": \"^1.16.0\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"^6.0.0\",\n \"vitest\": \"^3.2.6\"\n }\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport pkg from '../package.json'\n\nexport const VERSION: string = pkg.version\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/resource/mongodb/mongodb.ts","../src/resource/mongodb/store.ts","../package.json","../src/version.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n BaseResource,\n MONGODB_COMMANDS,\n MONGODB_OPS,\n MONGODB_PROMPT,\n MongoDBAccessor,\n PathSpec,\n ResourceName,\n detectMongoScope,\n mongoRead,\n mongoReaddir,\n mongoStat,\n mountKey,\n mountPrefixOf,\n resolveMongoDBConfig,\n makeResolveGlob,\n type FileStat,\n type MongoDBConfig,\n type MongoDBConfigResolved,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n} from '@struktoai/mirage-core'\nimport { MongoDBStore } from './store.ts'\n\nconst resolveMongoGlob = makeResolveGlob(mongoReaddir)\n\nvoid detectMongoScope\n\nexport interface MongoDBResourceOptions {\n config: MongoDBConfig\n prefix?: string\n}\n\nexport class MongoDBResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.MONGODB\n readonly cachesReads: boolean = false\n override readonly indexTtl: number = 0\n readonly prompt: string\n readonly config: MongoDBConfigResolved\n readonly store: MongoDBStore\n readonly accessor: MongoDBAccessor\n\n constructor(options: MongoDBResourceOptions | MongoDBConfig) {\n super()\n const { config, prefix } =\n 'config' in options ? options : { config: options, prefix: undefined }\n this.config = resolveMongoDBConfig(config)\n this.store = new MongoDBStore(this.config.uri)\n this.accessor = new MongoDBAccessor(this.store, this.config)\n this.prompt = MONGODB_PROMPT.replace('{prefix}', prefix ?? '')\n }\n\n open(): Promise<void> {\n return Promise.resolve()\n }\n\n override async close(): Promise<void> {\n await this.store.close()\n await super.close()\n }\n\n ops(): readonly RegisteredOp[] {\n return MONGODB_OPS\n }\n\n commands(): readonly RegisteredCommand[] {\n return MONGODB_COMMANDS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return mongoRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return mongoReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return mongoStat(this.accessor, p, this.index)\n }\n\n glob(paths: readonly PathSpec[], prefix = ''): Promise<PathSpec[]> {\n const effective =\n prefix !== ''\n ? paths.map((p) =>\n mountPrefixOf(p.virtual, p.resourcePath) !== ''\n ? p\n : new PathSpec({\n virtual: p.virtual,\n directory: p.directory,\n ...(p.pattern !== null ? { pattern: p.pattern } : {}),\n resolved: p.resolved,\n resourcePath: mountKey(p.virtual, prefix),\n }),\n )\n : paths\n return resolveMongoGlob(this.accessor, effective, this.index)\n }\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n loadOptionalPeer,\n type EntityKind,\n type MongoCollectionSpec,\n type MongoDriver,\n type MongoFindOptions,\n type MongoIndexAccess,\n type MongoIterOptions,\n compareCodePoints,\n} from '@struktoai/mirage-core'\nimport { VERSION } from '../../version.ts'\n\nconst DRIVER_INFO = { name: 'Mirage', version: VERSION }\n\ninterface MongoCollectionLike {\n find: (\n filter: Record<string, unknown>,\n options?: { projection?: Record<string, unknown> },\n ) => {\n sort: (sort: Record<string, 1 | -1>) => MongoCursorLike\n skip: (n: number) => MongoCursorLike\n limit: (n: number) => MongoCursorLike\n batchSize: (n: number) => MongoCursorLike\n toArray: () => Promise<Record<string, unknown>[]>\n [Symbol.asyncIterator]?: () => AsyncIterableIterator<Record<string, unknown>>\n }\n countDocuments: (filter?: Record<string, unknown>) => Promise<number>\n listIndexes: () => { toArray: () => Promise<Record<string, unknown>[]> }\n aggregate: (pipeline: unknown[]) => { toArray: () => Promise<Record<string, unknown>[]> }\n watch: (\n pipeline?: unknown[],\n ) => AsyncIterableIterator<Record<string, unknown>> & { close: () => Promise<void> }\n}\n\ninterface MongoCursorLike {\n sort: (sort: Record<string, 1 | -1>) => MongoCursorLike\n skip: (n: number) => MongoCursorLike\n limit: (n: number) => MongoCursorLike\n batchSize: (n: number) => MongoCursorLike\n toArray: () => Promise<Record<string, unknown>[]>\n [Symbol.asyncIterator]?: () => AsyncIterableIterator<Record<string, unknown>>\n}\n\ninterface MongoDbLike {\n listCollections: (filter?: Record<string, unknown>) => {\n toArray: () => Promise<Record<string, unknown>[]>\n }\n collection: (name: string) => MongoCollectionLike\n admin: () => { listDatabases: () => Promise<{ databases: { name: string }[] }> }\n}\n\ninterface MongoClientLike {\n connect: () => Promise<MongoClientLike>\n db: (name?: string) => MongoDbLike\n close: () => Promise<void>\n}\n\ninterface MongoModule {\n MongoClient: new (\n uri: string,\n options?: { driverInfo?: { name: string; version?: string } },\n ) => MongoClientLike\n}\n\nexport class MongoDBStore implements MongoDriver {\n readonly uri: string\n private clientPromise: Promise<MongoClientLike> | null = null\n\n constructor(uri: string) {\n this.uri = uri\n }\n\n async listDatabases(): Promise<string[]> {\n const c = await this._client()\n const r = await c.db().admin().listDatabases()\n return r.databases.map((d) => d.name)\n }\n\n async listCollections(database: string, kind: EntityKind | null = null): Promise<string[]> {\n const c = await this._client()\n const filter = kind === null ? undefined : { type: kind }\n const cols = await c.db(database).listCollections(filter).toArray()\n return cols.map((col) => col.name as string).sort(compareCodePoints)\n }\n\n async listCollectionsDetailed(\n database: string,\n filter: { name?: string } = {},\n ): Promise<MongoCollectionSpec[]> {\n const c = await this._client()\n const cols = await c.db(database).listCollections(filter).toArray()\n return cols.map((col) => {\n const spec: MongoCollectionSpec = { name: col.name as string }\n if (col.type !== undefined) spec.type = col.type as string\n if (col.options !== undefined)\n spec.options = col.options as NonNullable<MongoCollectionSpec['options']>\n return spec\n })\n }\n\n async findDocuments<T = Record<string, unknown>>(\n database: string,\n collection: string,\n filter: Record<string, unknown> = {},\n options: MongoFindOptions = {},\n ): Promise<T[]> {\n const c = await this._client()\n let cursor = c\n .db(database)\n .collection(collection)\n .find(filter, {\n ...(options.projection !== undefined ? { projection: options.projection } : {}),\n }) as MongoCursorLike\n if (options.sort !== undefined) cursor = cursor.sort(options.sort)\n if (options.skip !== undefined) cursor = cursor.skip(options.skip)\n if (options.limit !== undefined) cursor = cursor.limit(options.limit)\n return (await cursor.toArray()) as T[]\n }\n\n async *iterDocuments<T = Record<string, unknown>>(\n database: string,\n collection: string,\n options: MongoIterOptions = {},\n ): AsyncIterableIterator<T> {\n const c = await this._client()\n const filter = options.filter ?? {}\n let cursor = c\n .db(database)\n .collection(collection)\n .find(filter, {\n ...(options.projection !== undefined ? { projection: options.projection } : {}),\n }) as MongoCursorLike\n if (options.sort !== undefined) cursor = cursor.sort(options.sort)\n if (options.batchSize !== undefined) cursor = cursor.batchSize(options.batchSize)\n if (cursor[Symbol.asyncIterator] === undefined) {\n const all = (await cursor.toArray()) as T[]\n for (const doc of all) yield doc\n return\n }\n for await (const doc of cursor as unknown as AsyncIterableIterator<T>) {\n yield doc\n }\n }\n\n async *iterInserts<T = Record<string, unknown>>(\n database: string,\n collection: string,\n ): AsyncIterableIterator<T> {\n const c = await this._client()\n const stream = c\n .db(database)\n .collection(collection)\n .watch([{ $match: { operationType: 'insert' } }])\n try {\n for await (const change of stream as AsyncIterableIterator<Record<string, unknown>>) {\n const doc = change.fullDocument\n if (doc !== undefined && doc !== null) yield doc as T\n }\n } finally {\n await stream.close()\n }\n }\n\n async countDocuments(\n database: string,\n collection: string,\n filter: Record<string, unknown> = {},\n ): Promise<number> {\n const c = await this._client()\n return c.db(database).collection(collection).countDocuments(filter)\n }\n\n async listIndexes(database: string, collection: string): Promise<Record<string, unknown>[]> {\n const c = await this._client()\n return c.db(database).collection(collection).listIndexes().toArray()\n }\n\n async getIndexStats(\n database: string,\n collection: string,\n ): Promise<Record<string, MongoIndexAccess>> {\n const c = await this._client()\n const docs = await c\n .db(database)\n .collection(collection)\n .aggregate([{ $indexStats: {} }])\n .toArray()\n const out: Record<string, MongoIndexAccess> = {}\n for (const d of docs) {\n const name = d.name as string | undefined\n if (name !== undefined) {\n out[name] = (d.accesses as MongoIndexAccess | undefined) ?? {}\n }\n }\n return out\n }\n\n async close(): Promise<void> {\n if (this.clientPromise === null) return\n const c = await this.clientPromise\n this.clientPromise = null\n await c.close()\n }\n\n private async _client(): Promise<MongoClientLike> {\n this.clientPromise ??= this._connect()\n return this.clientPromise\n }\n\n protected async _connect(): Promise<MongoClientLike> {\n const mod = await loadOptionalPeer(() => import('mongodb') as unknown as Promise<MongoModule>, {\n feature: 'MongoDBResource',\n packageName: 'mongodb',\n })\n const c = new mod.MongoClient(this.uri, { driverInfo: DRIVER_INFO })\n await c.connect()\n return c\n }\n}\n","{\n \"name\": \"@struktoai/mirage-node\",\n \"version\": \"0.0.5\",\n \"description\": \"A Unified Virtual Filesystem For AI Agents\",\n \"keywords\": [\n \"bash\",\n \"fuse\",\n \"typescript\",\n \"vfs\",\n \"ai-agents\",\n \"agent-sandbox\",\n \"langchain\",\n \"virtual-filesystem\",\n \"llm-agents\",\n \"agent-tools\",\n \"claude-code\",\n \"openai-agents\"\n ],\n \"homepage\": \"https://github.com/strukto-ai/mirage#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/strukto-ai/mirage/issues\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/strukto-ai/mirage.git\",\n \"directory\": \"typescript/packages/node\"\n },\n \"license\": \"Apache-2.0\",\n \"author\": \"Zecheng Zhang <zecheng@strukto.ai>\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"type\": \"module\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\"\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"test\": \"vitest run\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"dependencies\": {\n \"@napi-rs/lzma\": \"^1.4.5\",\n \"@struktoai/mirage-core\": \"workspace:*\",\n \"fast-xml-parser\": \"^5.9.0\",\n \"fast-xml-validator\": \"^1.4.0\",\n \"fs-monkey\": \"^1.1.0\",\n \"http-proxy-agent\": \"^7.0.2\",\n \"https-proxy-agent\": \"^7.0.6\",\n \"seek-bzip\": \"^2.0.0\",\n \"tree-sitter-bash\": \"^0.25.1\",\n \"web-tree-sitter\": \"^0.26.8\"\n },\n \"peerDependencies\": {\n \"@daytonaio/sdk\": \"^0.199.0\",\n \"@lancedb/lancedb\": \"^0.30.0\",\n \"@zkochan/fuse-native\": \"^0.1.0\",\n \"e2b\": \"^2.0.0\",\n \"imapflow\": \"^1.0.0\",\n \"mailparser\": \"^3.6.0\",\n \"mongodb\": \"^6.10.0\",\n \"nodemailer\": \"^9.0.1\",\n \"opendal\": \"^0.49.4\",\n \"pg\": \"^8.13.0\",\n \"redis\": \"^5.0.0\",\n \"ssh2\": \"^1.16.0\"\n },\n \"peerDependenciesMeta\": {\n \"@daytonaio/sdk\": {\n \"optional\": true\n },\n \"@lancedb/lancedb\": {\n \"optional\": true\n },\n \"@zkochan/fuse-native\": {\n \"optional\": true\n },\n \"e2b\": {\n \"optional\": true\n },\n \"imapflow\": {\n \"optional\": true\n },\n \"mailparser\": {\n \"optional\": true\n },\n \"mongodb\": {\n \"optional\": true\n },\n \"nodemailer\": {\n \"optional\": true\n },\n \"opendal\": {\n \"optional\": true\n },\n \"pg\": {\n \"optional\": true\n },\n \"redis\": {\n \"optional\": true\n },\n \"ssh2\": {\n \"optional\": true\n }\n },\n \"devDependencies\": {\n \"@aws-sdk/client-s3\": \"^3.0.0\",\n \"@daytonaio/sdk\": \"^0.199.0\",\n \"@lancedb/lancedb\": \"^0.30.0\",\n \"@types/mailparser\": \"^3.4.6\",\n \"@types/nodemailer\": \"^8.0.0\",\n \"@types/pg\": \"^8.11.0\",\n \"@types/ssh2\": \"^1.15.0\",\n \"@zkochan/fuse-native\": \"^0.1.0\",\n \"e2b\": \"^2.0.0\",\n \"imapflow\": \"^1.3.2\",\n \"mailparser\": \"^3.9.8\",\n \"mongodb\": \"^6.10.0\",\n \"nodemailer\": \"^9.0.1\",\n \"opendal\": \"^0.49.4\",\n \"pg\": \"^8.13.0\",\n \"redis\": \"^5.0.0\",\n \"ssh2\": \"^1.16.0\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"^6.0.0\",\n \"vitest\": \"^3.2.6\"\n }\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport pkg from '../package.json'\n\nexport const VERSION: string = pkg.version\n"],"mappings":"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","names":[]}
package/dist/index.js CHANGED
@@ -137,7 +137,7 @@ import {
137
137
  import {
138
138
  MongoDBResource,
139
139
  MongoDBStore
140
- } from "./chunk-H64SB6VO.js";
140
+ } from "./chunk-VQDF2UH5.js";
141
141
  import {
142
142
  LanceDBResource,
143
143
  LanceDBStore
@@ -4187,7 +4187,7 @@ var REGISTRY = {
4187
4187
  return new PostgresResource2(normalizePostgresConfig(config));
4188
4188
  },
4189
4189
  mongodb: async (config) => {
4190
- const { MongoDBResource: MongoDBResource2 } = await import("./mongodb-L5CMN2EE.js");
4190
+ const { MongoDBResource: MongoDBResource2 } = await import("./mongodb-7C5MBESV.js");
4191
4191
  const { normalizeMongoDBConfig } = await import("@struktoai/mirage-core");
4192
4192
  return new MongoDBResource2(normalizeMongoDBConfig(config));
4193
4193
  },
@@ -0,0 +1,7 @@
1
+ import {
2
+ MongoDBResource
3
+ } from "./chunk-VQDF2UH5.js";
4
+ export {
5
+ MongoDBResource
6
+ };
7
+ //# sourceMappingURL=mongodb-7C5MBESV.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@struktoai/mirage-node",
3
- "version": "0.0.5-alpha.1",
3
+ "version": "0.0.5",
4
4
  "description": "A Unified Virtual Filesystem For AI Agents",
5
5
  "keywords": [
6
6
  "bash",
@@ -52,7 +52,7 @@
52
52
  "seek-bzip": "^2.0.0",
53
53
  "tree-sitter-bash": "^0.25.1",
54
54
  "web-tree-sitter": "^0.26.8",
55
- "@struktoai/mirage-core": "0.0.5-alpha.1"
55
+ "@struktoai/mirage-core": "0.0.5"
56
56
  },
57
57
  "peerDependencies": {
58
58
  "@daytonaio/sdk": "^0.199.0",
@@ -1,7 +0,0 @@
1
- import {
2
- MongoDBResource
3
- } from "./chunk-H64SB6VO.js";
4
- export {
5
- MongoDBResource
6
- };
7
- //# sourceMappingURL=mongodb-L5CMN2EE.js.map