@ainetwork/adk-provider-memory-mongodb 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../implements/base.memory.ts","../implements/agent.memory.ts","../implements/intent.memory.ts","../implements/thread.memory.ts","../implements/user-workflow.memory.ts","../implements/workflow-template.memory.ts"],"sourcesContent":["import { IAgentMemory, IIntentMemory, IMemory, IUserWorkflowMemory, IThreadMemory, IWorkflowTemplateMemory } from \"@ainetwork/adk/modules\";\nimport mongoose from \"mongoose\";\nimport { loggers } from \"@ainetwork/adk/utils/logger\";\nimport { MongoDBAgent } from \"./agent.memory\";\nimport { MongoDBIntent } from \"./intent.memory\";\nimport { MongoDBThread } from \"./thread.memory\";\nimport { MongoDBUserWorkflow } from \"./user-workflow.memory\";\nimport { MongoDBWorkflowTemplate } from \"./workflow-template.memory\";\nimport { MessageModel } from \"../models/messages.model\";\n\nexport interface MongoDBMemoryConfig {\n uri: string;\n maxReconnectAttempts?: number;\n reconnectInterval?: number;\n maxPoolSize?: number;\n serverSelectionTimeoutMS?: number;\n socketTimeoutMS?: number;\n connectTimeoutMS?: number;\n operationTimeoutMS?: number; // Timeout for database operations\n threadTTLSeconds?: number; // TTL for thread documents (in seconds). Orphaned messages are periodically cleaned up.\n}\n\nexport class MongoDBMemory implements IMemory {\n private static instance: MongoDBMemory;\n private uri: string;\n private connected: boolean = false;\n private reconnectAttempts: number = 0;\n private maxReconnectAttempts: number;\n private reconnectInterval: number;\n private reconnecting: boolean = false;\n private connectionConfig: mongoose.ConnectOptions;\n private eventListenersSetup: boolean = false;\n private operationTimeoutMS: number;\n private threadTTLSeconds?: number;\n private orphanCleanupTimer?: ReturnType<typeof setInterval>;\n\n private agentMemory: MongoDBAgent;\n private intentMemory: MongoDBIntent;\n private threadMemory: MongoDBThread;\n private workflowTemplateMemory: MongoDBWorkflowTemplate;\n private userWorkflowMemory: MongoDBUserWorkflow;\n\n constructor(config: string | MongoDBMemoryConfig) {\n const cfg = typeof config === 'string' ? { uri: config } : config;\n\n this.uri = cfg.uri;\n this.maxReconnectAttempts = cfg.maxReconnectAttempts ?? 5;\n this.reconnectInterval = cfg.reconnectInterval ?? 5000;\n this.operationTimeoutMS = cfg.operationTimeoutMS ?? 10000; // Default 10 seconds\n if (cfg.threadTTLSeconds !== undefined && cfg.threadTTLSeconds > 0) {\n this.threadTTLSeconds = cfg.threadTTLSeconds;\n }\n this.connectionConfig = {\n maxPoolSize: cfg.maxPoolSize ?? 10,\n minPoolSize: 0,\n maxIdleTimeMS: 30000,\n serverSelectionTimeoutMS: cfg.serverSelectionTimeoutMS ?? 30000,\n socketTimeoutMS: cfg.socketTimeoutMS ?? 45000,\n connectTimeoutMS: cfg.connectTimeoutMS ?? 30000,\n bufferCommands: false,\n };\n\n if (!MongoDBMemory.instance) {\n MongoDBMemory.instance = this;\n this.setupMongooseEventListeners();\n } else {\n // Use existing instance's connection state\n this.connected = MongoDBMemory.instance.connected;\n this.operationTimeoutMS = MongoDBMemory.instance.operationTimeoutMS;\n }\n\n\t\tthis.agentMemory = new MongoDBAgent(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n\n\t\tthis.threadMemory = new MongoDBThread(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n\n\t\tthis.intentMemory = new MongoDBIntent(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n\n\t\tthis.workflowTemplateMemory = new MongoDBWorkflowTemplate(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n\n\t\tthis.userWorkflowMemory = new MongoDBUserWorkflow(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n }\n\n public getAgentMemory(): IAgentMemory {\n return this.agentMemory;\n }\n\n public getThreadMemory(): IThreadMemory {\n return this.threadMemory;\n }\n\n public getIntentMemory(): IIntentMemory {\n return this.intentMemory;\n }\n\n public getWorkflowTemplateMemory(): IWorkflowTemplateMemory {\n return this.workflowTemplateMemory;\n }\n\n public getUserWorkflowMemory(): IUserWorkflowMemory {\n return this.userWorkflowMemory;\n }\n\n private setupMongooseEventListeners(): void {\n if (this.eventListenersSetup) return;\n\n this.eventListenersSetup = true;\n\n mongoose.connection.on(\"connected\", () => {\n this.connected = true;\n this.reconnectAttempts = 0;\n this.reconnecting = false;\n loggers.agent.info(\"MongoDB connected successfully\");\n });\n\n mongoose.connection.on(\"disconnected\", () => {\n this.connected = false;\n loggers.agent.warn(\"MongoDB disconnected\");\n this.handleDisconnection();\n });\n\n mongoose.connection.on(\"error\", (error) => {\n this.connected = false;\n loggers.agent.error(\"MongoDB connection error:\", error);\n this.handleDisconnection();\n });\n\n mongoose.connection.on(\"reconnected\", () => {\n this.connected = true;\n this.reconnectAttempts = 0;\n this.reconnecting = false;\n loggers.agent.info(\"MongoDB reconnected successfully\");\n });\n }\n\n private async handleDisconnection(): Promise<void> {\n if (this.reconnecting) {\n return;\n }\n\n this.reconnecting = true;\n\n while (this.reconnectAttempts < this.maxReconnectAttempts && !this.connected) {\n this.reconnectAttempts++;\n loggers.agent.info(\n `Attempting to reconnect to MongoDB (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`\n );\n\n try {\n await mongoose.connect(this.uri, this.connectionConfig);\n this.connected = true;\n this.reconnectAttempts = 0;\n this.reconnecting = false;\n loggers.agent.info(\"MongoDB reconnection successful\");\n return;\n } catch (error) {\n loggers.agent.error(\n `Reconnection attempt ${this.reconnectAttempts} failed:`,\n error\n );\n\n if (this.reconnectAttempts < this.maxReconnectAttempts) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.reconnectInterval)\n );\n }\n }\n }\n\n this.reconnecting = false;\n\n if (!this.connected) {\n loggers.agent.error(\n `Failed to reconnect to MongoDB after ${this.maxReconnectAttempts} attempts`\n );\n }\n }\n\n public async connect(): Promise<void> {\n if (this.connected) {\n return;\n }\n\n try {\n await mongoose.connect(this.uri, this.connectionConfig);\n this.connected = true;\n this.reconnectAttempts = 0;\n await this.setupTTLIndex();\n this.startOrphanCleanup();\n } catch (error) {\n loggers.agent.error(\"Failed to connect to MongoDB:\", error);\n throw error;\n }\n }\n\n public async disconnect(): Promise<void> {\n if (!this.connected) {\n return;\n }\n\n try {\n if (this.orphanCleanupTimer) {\n clearInterval(this.orphanCleanupTimer);\n this.orphanCleanupTimer = undefined;\n }\n await mongoose.disconnect();\n this.connected = false;\n } catch (error) {\n loggers.agent.error(\"Failed to disconnect from MongoDB:\", error);\n throw error;\n }\n }\n\n public isConnected(): boolean {\n return this.connected;\n }\n\n private async ensureConnection(): Promise<void> {\n if (!this.connected && !this.reconnecting) {\n await this.connect();\n }\n\n // Wait for reconnection if in progress\n const maxWaitTime = 30000; // 30 seconds\n const startTime = Date.now();\n while (this.reconnecting && Date.now() - startTime < maxWaitTime) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n\n if (!this.connected) {\n throw new Error(\"MongoDB is not connected and reconnection failed\");\n }\n }\n\n private async setupTTLIndex(): Promise<void> {\n if (this.threadTTLSeconds === undefined) return;\n\n try {\n const db = mongoose.connection.db;\n if (!db) return;\n\n const collection = db.collection('threads');\n const indexes = await collection.indexes();\n const existingTTL = indexes.find(\n (idx) => idx.key?.updatedAt !== undefined && idx.expireAfterSeconds !== undefined\n );\n\n if (existingTTL) {\n if (existingTTL.expireAfterSeconds !== this.threadTTLSeconds) {\n await db.command({\n collMod: 'threads',\n index: { keyPattern: { updatedAt: 1 }, expireAfterSeconds: this.threadTTLSeconds },\n });\n loggers.agent.info(`Thread TTL index updated to ${this.threadTTLSeconds} seconds`);\n }\n } else {\n await collection.createIndex(\n { updatedAt: 1 },\n { expireAfterSeconds: this.threadTTLSeconds },\n );\n loggers.agent.info(`Thread TTL index created with ${this.threadTTLSeconds} seconds`);\n }\n } catch (error) {\n loggers.agent.error('Failed to setup TTL index:', error);\n }\n }\n\n private startOrphanCleanup(): void {\n if (this.threadTTLSeconds === undefined) return;\n if (this.orphanCleanupTimer) return;\n\n // Run cleanup at half the TTL interval, with a minimum of 60s and maximum of 1 hour\n const intervalMs = Math.max(60_000, Math.min(this.threadTTLSeconds * 500, 3_600_000));\n this.orphanCleanupTimer = setInterval(() => {\n this.cleanupOrphanedMessages().catch((error) => {\n loggers.agent.error('Orphaned message cleanup failed:', error);\n });\n }, intervalMs);\n\n loggers.agent.info(`Orphaned message cleanup scheduled every ${Math.round(intervalMs / 1000)}s`);\n }\n\n private async cleanupOrphanedMessages(): Promise<void> {\n if (!this.connected) return;\n\n try {\n const db = mongoose.connection.db;\n if (!db) return;\n\n const existingThreadIds = await db.collection('threads').distinct('threadId');\n const result = await MessageModel.deleteMany({\n threadId: { $nin: existingThreadIds },\n });\n\n if (result.deletedCount > 0) {\n loggers.agent.info(`Cleaned up ${result.deletedCount} orphaned messages`);\n }\n } catch (error) {\n loggers.agent.error('Failed to cleanup orphaned messages:', error);\n }\n }\n\n /**\n * Get the operation timeout in milliseconds\n */\n protected getOperationTimeout(): number {\n return this.operationTimeoutMS;\n }\n\n /**\n * Execute a database operation with automatic retry on connection errors\n * Note: Use mongoose's maxTimeMS option in queries for timeout control\n */\n protected async executeWithRetry<T>(\n operation: () => Promise<T>,\n operationName: string = \"Database operation\"\n ): Promise<T> {\n await this.ensureConnection();\n\n try {\n return await operation();\n } catch (error: any) {\n // Check if it's a timeout error from MongoDB\n if (error.code === 50 || error.message?.includes(\"operation exceeded time limit\")) {\n loggers.agent.error(`${operationName} exceeded time limit`);\n throw error;\n }\n\n // Check if it's a TooManyLogicalSessions error\n if (error.code === 261 || error.codeName === \"TooManyLogicalSessions\") {\n loggers.agent.warn(\n `${operationName} failed due to too many sessions, disconnecting to release sessions...`\n );\n\n try {\n await mongoose.disconnect();\n this.connected = false;\n } catch (disconnectError) {\n loggers.agent.error(\"Failed to disconnect during session cleanup:\", disconnectError);\n }\n\n await new Promise((resolve) => setTimeout(resolve, 5000));\n await this.ensureConnection();\n\n try {\n return await operation();\n } catch (retryError: any) {\n loggers.agent.error(`${operationName} failed after session cleanup retry:`, retryError);\n throw retryError;\n }\n }\n\n // Check if it's a connection-related error\n if (\n error.name === \"MongoNetworkError\" ||\n error.name === \"MongoServerError\" ||\n error.message?.includes(\"connection\") ||\n error.message?.includes(\"disconnect\")\n ) {\n loggers.agent.warn(\n `${operationName} failed due to connection issue, attempting reconnection...`\n );\n\n await this.ensureConnection();\n\n // Retry the operation once after reconnection\n try {\n return await operation();\n } catch (retryError: any) {\n loggers.agent.error(`${operationName} failed after retry:`, retryError);\n throw retryError;\n }\n }\n\n // If it's not a connection error, just throw it\n throw error;\n }\n }\n}\n","import { IAgentMemory } from \"@ainetwork/adk/modules\";\nimport { AgentModel } from \"../models/agent.model\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\ntype PromptDocument = {\n id: string;\n prompt: string;\n}\n\nexport class MongoDBAgent implements IAgentMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async getAgentPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"agent_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getAgentPrompt()\");\n };\n \n public async updateAgentPrompt(prompt: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await AgentModel.updateOne({\n id: \"agent_prompt\",\n }, { \"prompt\": prompt }, { upsert: true }).maxTimeMS(timeout);\n }, \"updateAgentPrompt()\");\n };\n\n public async getAggregatePrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"aggregate_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getAggregatePrompt()\");\n };\n\n public async getGenerateTitlePrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"generate_title_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getGenerateTitlePrompt()\");\n };\n\n public async getSingleTriggerPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"single_trigger_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getSingleTriggerPrompt()\");\n };\n\n public async getMultiTriggerPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"multi_trigger_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getMultiTriggerPrompt()\");\n };\n\n public async getToolSelectPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"tool_select_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getToolSelectPrompt()\");\n };\n\n public async getPIIDetectPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"pii_detect_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getPIIDetectPrompt()\");\n };\n\n public async getPIIFilterPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"pii_filter_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getPIIFilterPrompt()\");\n };\n}\n","import type { Intent } from \"@ainetwork/adk/types/memory\";\nimport { IIntentMemory } from \"@ainetwork/adk/modules\";\nimport { IntentModel } from \"../models/intent.model\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\nexport class MongoDBIntent implements IIntentMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async getIntent(intentId: string): Promise<Intent | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const intent = await IntentModel.findOne({ id: intentId })\n .maxTimeMS(timeout)\n .lean<Intent>();\n return intent || undefined;\n }, `getIntent(${intentId})`);\n };\n\n public async getIntentByName(intentName: string): Promise<Intent | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const intent = await IntentModel.findOne({ name: intentName })\n .maxTimeMS(timeout)\n .lean<Intent>();\n return intent || undefined;\n }, `getIntentByName(${intentName})`);\n }\n\n public async saveIntent(intent: Intent): Promise<void> {\n return this.executeWithRetry(async () => {\n await IntentModel.create(intent);\n }, `saveIntent(${intent.id})`);\n };\n\n public async updateIntent(intentId: string, intent: Intent): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await IntentModel.updateOne({\n id: intentId,\n }, intent).maxTimeMS(timeout);\n }, `updateIntent(${intentId})`);\n };\n\n public async deleteIntent(intentId: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await IntentModel.deleteOne({ id: intentId }).maxTimeMS(timeout);\n }, `deleteIntent(${intentId})`);\n };\n\n public async listIntents(): Promise<Intent[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const intents = await IntentModel.find()\n .maxTimeMS(timeout)\n .lean<Intent[]>();\n return intents;\n }, `listIntents()`);\n };\n}\n","import type { MessageObject, ThreadMetadata, ThreadObject, ThreadType, ThreadFilter } from \"@ainetwork/adk/types/memory\";\nimport { MessageRole } from \"@ainetwork/adk/types/memory\";\nimport { IThreadMemory } from \"@ainetwork/adk/modules\";\nimport { ThreadDocument, ThreadModel } from \"../models/threads.model\";\nimport { MessageDocument, MessageModel } from \"../models/messages.model\";\nimport { loggers } from \"@ainetwork/adk/utils/logger\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\nexport class MongoDBThread implements IThreadMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async getThread(\n userId: string,\n threadId: string\n ): Promise<ThreadObject | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const thread = await ThreadModel.findOne({ threadId, userId }).maxTimeMS(timeout);\n const messages = await MessageModel.find({ threadId, userId })\n .sort({ timestamp: 1 })\n .maxTimeMS(timeout);\n\n if (!thread) return undefined;\n\n loggers.agent.debug(`Found ${messages.length} messages for thread ${threadId}`);\n\n const threadObject: ThreadObject = {\n threadId: thread.threadId,\n userId: thread.userId,\n type: thread.type as ThreadType,\n title: thread.title || \"New thread\",\n isPinned: thread.isPinned ?? false,\n workflowId: thread.workflowId,\n messages: []\n };\n messages.forEach((message: MessageDocument) => {\n threadObject.messages.push({\n messageId: message.messageId,\n role: message.role as MessageRole,\n content: message.content,\n timestamp: message.timestamp,\n metadata: message.metadata,\n });\n });\n\n return threadObject;\n }, `getThread(${userId}, ${threadId})`);\n };\n\n public async createThread(\n type: ThreadType,\n userId: string,\n threadId: string,\n title: string,\n workflowId?: string,\n ): Promise<ThreadObject> {\n return this.executeWithRetry(async () => {\n await ThreadModel.create({\n type,\n userId,\n threadId,\n title,\n workflowId,\n });\n\n return { type, userId, threadId, title, workflowId, messages: []};\n }, `createThread(${userId}, ${threadId})`);\n };\n\n public async addMessagesToThread(\n userId: string,\n threadId: string,\n messages: MessageObject[]\n ): Promise<void> {\n return this.executeWithRetry(async () => {\n if (messages.length > 0) {\n const messageIds = messages.map((m) => m.messageId);\n await MessageModel.deleteMany({ threadId, userId, messageId: { $in: messageIds } });\n await MessageModel.insertMany(\n messages.map((message) => ({\n threadId,\n messageId: message.messageId,\n userId,\n role: message.role,\n content: message.content,\n timestamp: message.timestamp,\n metadata: message.metadata,\n }))\n );\n }\n await ThreadModel.updateOne(\n { threadId, userId },\n { $set: { updatedAt: new Date() } }\n );\n }, `addMessagesToThread(${userId}, ${threadId})`);\n };\n\n public async deleteThread(userId: string, threadId: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n\n // Delete all messages for this thread\n await MessageModel.deleteMany({ userId, threadId }).maxTimeMS(timeout);\n\n // Delete the thread itself\n await ThreadModel.deleteOne({ userId, threadId }).maxTimeMS(timeout);\n }, `deleteThread(${userId}, ${threadId})`);\n };\n\n public async listThreads(userId: string, filter?: ThreadFilter): Promise<ThreadMetadata[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const query: Record<string, any> = { userId };\n if (filter?.workflowId) query.workflowId = filter.workflowId;\n if (filter?.type) query.type = filter.type;\n const threads = await ThreadModel.find(query)\n .sort({ updatedAt: -1 })\n .maxTimeMS(timeout);\n const data: ThreadMetadata[] = threads.map((thread: ThreadDocument) => {\n return {\n type: thread.type,\n userId,\n threadId: thread.threadId,\n title: thread.title,\n isPinned: thread.isPinned ?? false,\n workflowId: thread.workflowId,\n createdAt: thread.createdAt?.toISOString(),\n updatedAt: thread.updatedAt?.toISOString(),\n } as ThreadMetadata;\n })\n return data;\n }, `listThreads(${userId})`);\n };\n\n public async updateThreadPin(\n userId: string,\n threadId: string,\n isPinned: boolean\n ): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await ThreadModel.updateOne(\n { threadId, userId },\n { $set: { isPinned } }\n ).maxTimeMS(timeout);\n }, `updateThreadPin(${userId}, ${threadId})`);\n };\n}\n","import type { IUserWorkflowMemory } from \"@ainetwork/adk/modules\";\nimport type { UserWorkflow } from \"@ainetwork/adk/types/memory\";\nimport { UserWorkflowModel } from \"../models/user-workflow.model\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\nexport class MongoDBUserWorkflow implements IUserWorkflowMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async createUserWorkflow(workflow: UserWorkflow): Promise<UserWorkflow> {\n return this.executeWithRetry(async () => {\n const created = await UserWorkflowModel.create(workflow);\n return created.toObject() as UserWorkflow;\n }, \"createUserWorkflow()\");\n }\n\n public async getUserWorkflow(workflowId: string): Promise<UserWorkflow | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const workflow = await UserWorkflowModel.findOne({ workflowId })\n .maxTimeMS(timeout)\n .lean<UserWorkflow>();\n return workflow || undefined;\n }, \"getUserWorkflow()\");\n }\n\n public async updateUserWorkflow(workflowId: string, updates: Partial<UserWorkflow>): Promise<void> {\n if (!updates.userId) {\n throw new Error(\"userId is required for updateUserWorkflow\");\n }\n\n const { userId, workflowId: _workflowId, ...mutableUpdates } = updates;\n\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await UserWorkflowModel.updateOne(\n { workflowId, userId },\n { $set: mutableUpdates }\n ).maxTimeMS(timeout);\n }, \"updateUserWorkflow()\");\n }\n\n public async deleteUserWorkflow(workflowId: string, userId: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await UserWorkflowModel.deleteOne({ workflowId, userId }).maxTimeMS(timeout);\n }, \"deleteUserWorkflow()\");\n }\n\n public async listUserWorkflows(userId?: string): Promise<UserWorkflow[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const query = userId ? { userId } : {};\n const workflows = await UserWorkflowModel.find(query)\n .maxTimeMS(timeout)\n .lean<UserWorkflow[]>();\n return workflows;\n }, \"listUserWorkflows()\");\n }\n\n public async listActiveScheduledWorkflows(): Promise<UserWorkflow[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const workflows = await UserWorkflowModel.find({\n active: true,\n schedule: { $exists: true, $ne: null },\n })\n .maxTimeMS(timeout)\n .lean<UserWorkflow[]>();\n return workflows;\n }, \"listActiveScheduledWorkflows()\");\n }\n}\n","import type { IWorkflowTemplateMemory } from \"@ainetwork/adk/modules\";\nimport type { WorkflowTemplate } from \"@ainetwork/adk/types/memory\";\nimport { WorkflowTemplateModel } from \"../models/workflow-template.model\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\nexport class MongoDBWorkflowTemplate implements IWorkflowTemplateMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async createTemplate(template: WorkflowTemplate): Promise<WorkflowTemplate> {\n return this.executeWithRetry(async () => {\n const created = await WorkflowTemplateModel.create(template);\n return created.toObject() as WorkflowTemplate;\n }, \"createTemplate()\");\n }\n\n public async getTemplate(templateId: string): Promise<WorkflowTemplate | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const template = await WorkflowTemplateModel.findOne({ templateId })\n .maxTimeMS(timeout)\n .lean<WorkflowTemplate>();\n return template || undefined;\n }, \"getTemplate()\");\n }\n\n public async updateTemplate(templateId: string, updates: Partial<WorkflowTemplate>): Promise<void> {\n const { templateId: _templateId, ...mutableUpdates } = updates;\n\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await WorkflowTemplateModel.updateOne(\n { templateId },\n { $set: mutableUpdates }\n ).maxTimeMS(timeout);\n }, \"updateTemplate()\");\n }\n\n public async deleteTemplate(templateId: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await WorkflowTemplateModel.deleteOne({ templateId }).maxTimeMS(timeout);\n }, \"deleteTemplate()\");\n }\n\n public async listTemplates(): Promise<WorkflowTemplate[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const templates = await WorkflowTemplateModel.find()\n .maxTimeMS(timeout)\n .lean<WorkflowTemplate[]>();\n return templates;\n }, \"listTemplates()\");\n }\n}\n"],"mappings":"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","names":["loggers","loggers"]}
1
+ {"version":3,"sources":["../implements/base.memory.ts","../implements/agent.memory.ts","../implements/document.memory.ts","../implements/intent.memory.ts","../implements/thread.memory.ts","../implements/user-workflow.memory.ts","../implements/workflow-template.memory.ts"],"sourcesContent":["import { IAgentMemory, IDocumentMemory, IIntentMemory, IMemory, IUserWorkflowMemory, IThreadMemory, IWorkflowTemplateMemory } from \"@ainetwork/adk/modules\";\nimport mongoose from \"mongoose\";\nimport { loggers } from \"@ainetwork/adk/utils/logger\";\nimport { MongoDBAgent } from \"./agent.memory\";\nimport { MongoDBDocument } from \"./document.memory\";\nimport { MongoDBIntent } from \"./intent.memory\";\nimport { MongoDBThread } from \"./thread.memory\";\nimport { MongoDBUserWorkflow } from \"./user-workflow.memory\";\nimport { MongoDBWorkflowTemplate } from \"./workflow-template.memory\";\nimport { MessageModel } from \"../models/messages.model\";\n\nexport interface MongoDBMemoryConfig {\n uri: string;\n maxReconnectAttempts?: number;\n reconnectInterval?: number;\n maxPoolSize?: number;\n serverSelectionTimeoutMS?: number;\n socketTimeoutMS?: number;\n connectTimeoutMS?: number;\n operationTimeoutMS?: number; // Timeout for database operations\n threadTTLSeconds?: number; // TTL for thread documents (in seconds). Orphaned messages are periodically cleaned up.\n}\n\nexport class MongoDBMemory implements IMemory {\n private static instance: MongoDBMemory;\n private uri: string;\n private connected: boolean = false;\n private reconnectAttempts: number = 0;\n private maxReconnectAttempts: number;\n private reconnectInterval: number;\n private reconnecting: boolean = false;\n private connectionConfig: mongoose.ConnectOptions;\n private eventListenersSetup: boolean = false;\n private operationTimeoutMS: number;\n private threadTTLSeconds?: number;\n private orphanCleanupTimer?: ReturnType<typeof setInterval>;\n\n private agentMemory: MongoDBAgent;\n private intentMemory: MongoDBIntent;\n private threadMemory: MongoDBThread;\n private workflowTemplateMemory: MongoDBWorkflowTemplate;\n private userWorkflowMemory: MongoDBUserWorkflow;\n private documentMemory: MongoDBDocument;\n\n constructor(config: string | MongoDBMemoryConfig) {\n const cfg = typeof config === 'string' ? { uri: config } : config;\n\n this.uri = cfg.uri;\n this.maxReconnectAttempts = cfg.maxReconnectAttempts ?? 5;\n this.reconnectInterval = cfg.reconnectInterval ?? 5000;\n this.operationTimeoutMS = cfg.operationTimeoutMS ?? 10000; // Default 10 seconds\n if (cfg.threadTTLSeconds !== undefined && cfg.threadTTLSeconds > 0) {\n this.threadTTLSeconds = cfg.threadTTLSeconds;\n }\n this.connectionConfig = {\n maxPoolSize: cfg.maxPoolSize ?? 10,\n minPoolSize: 0,\n maxIdleTimeMS: 30000,\n serverSelectionTimeoutMS: cfg.serverSelectionTimeoutMS ?? 30000,\n socketTimeoutMS: cfg.socketTimeoutMS ?? 45000,\n connectTimeoutMS: cfg.connectTimeoutMS ?? 30000,\n bufferCommands: false,\n };\n\n if (!MongoDBMemory.instance) {\n MongoDBMemory.instance = this;\n this.setupMongooseEventListeners();\n } else {\n // Use existing instance's connection state\n this.connected = MongoDBMemory.instance.connected;\n this.operationTimeoutMS = MongoDBMemory.instance.operationTimeoutMS;\n }\n\n\t\tthis.agentMemory = new MongoDBAgent(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n\n\t\tthis.threadMemory = new MongoDBThread(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n\n\t\tthis.intentMemory = new MongoDBIntent(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n\n\t\tthis.workflowTemplateMemory = new MongoDBWorkflowTemplate(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n\n\t\tthis.userWorkflowMemory = new MongoDBUserWorkflow(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n\n\t\tthis.documentMemory = new MongoDBDocument(\n\t\t\tthis.executeWithRetry.bind(this),\n\t\t\tthis.getOperationTimeout.bind(this)\n\t\t);\n }\n\n public getAgentMemory(): IAgentMemory {\n return this.agentMemory;\n }\n\n public getThreadMemory(): IThreadMemory {\n return this.threadMemory;\n }\n\n public getIntentMemory(): IIntentMemory {\n return this.intentMemory;\n }\n\n public getWorkflowTemplateMemory(): IWorkflowTemplateMemory {\n return this.workflowTemplateMemory;\n }\n\n public getUserWorkflowMemory(): IUserWorkflowMemory {\n return this.userWorkflowMemory;\n }\n\n public getDocumentMemory(): IDocumentMemory {\n return this.documentMemory;\n }\n\n private setupMongooseEventListeners(): void {\n if (this.eventListenersSetup) return;\n\n this.eventListenersSetup = true;\n\n mongoose.connection.on(\"connected\", () => {\n this.connected = true;\n this.reconnectAttempts = 0;\n this.reconnecting = false;\n loggers.agent.info(\"MongoDB connected successfully\");\n });\n\n mongoose.connection.on(\"disconnected\", () => {\n this.connected = false;\n loggers.agent.warn(\"MongoDB disconnected\");\n this.handleDisconnection();\n });\n\n mongoose.connection.on(\"error\", (error) => {\n this.connected = false;\n loggers.agent.error(\"MongoDB connection error:\", error);\n this.handleDisconnection();\n });\n\n mongoose.connection.on(\"reconnected\", () => {\n this.connected = true;\n this.reconnectAttempts = 0;\n this.reconnecting = false;\n loggers.agent.info(\"MongoDB reconnected successfully\");\n });\n }\n\n private async handleDisconnection(): Promise<void> {\n if (this.reconnecting) {\n return;\n }\n\n this.reconnecting = true;\n\n while (this.reconnectAttempts < this.maxReconnectAttempts && !this.connected) {\n this.reconnectAttempts++;\n loggers.agent.info(\n `Attempting to reconnect to MongoDB (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`\n );\n\n try {\n await mongoose.connect(this.uri, this.connectionConfig);\n this.connected = true;\n this.reconnectAttempts = 0;\n this.reconnecting = false;\n loggers.agent.info(\"MongoDB reconnection successful\");\n return;\n } catch (error) {\n loggers.agent.error(\n `Reconnection attempt ${this.reconnectAttempts} failed:`,\n error\n );\n\n if (this.reconnectAttempts < this.maxReconnectAttempts) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.reconnectInterval)\n );\n }\n }\n }\n\n this.reconnecting = false;\n\n if (!this.connected) {\n loggers.agent.error(\n `Failed to reconnect to MongoDB after ${this.maxReconnectAttempts} attempts`\n );\n }\n }\n\n public async connect(): Promise<void> {\n if (this.connected) {\n return;\n }\n\n try {\n await mongoose.connect(this.uri, this.connectionConfig);\n this.connected = true;\n this.reconnectAttempts = 0;\n await this.setupTTLIndex();\n this.startOrphanCleanup();\n } catch (error) {\n loggers.agent.error(\"Failed to connect to MongoDB:\", error);\n throw error;\n }\n }\n\n public async disconnect(): Promise<void> {\n if (!this.connected) {\n return;\n }\n\n try {\n if (this.orphanCleanupTimer) {\n clearInterval(this.orphanCleanupTimer);\n this.orphanCleanupTimer = undefined;\n }\n await mongoose.disconnect();\n this.connected = false;\n } catch (error) {\n loggers.agent.error(\"Failed to disconnect from MongoDB:\", error);\n throw error;\n }\n }\n\n public isConnected(): boolean {\n return this.connected;\n }\n\n private async ensureConnection(): Promise<void> {\n if (!this.connected && !this.reconnecting) {\n await this.connect();\n }\n\n // Wait for reconnection if in progress\n const maxWaitTime = 30000; // 30 seconds\n const startTime = Date.now();\n while (this.reconnecting && Date.now() - startTime < maxWaitTime) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n\n if (!this.connected) {\n throw new Error(\"MongoDB is not connected and reconnection failed\");\n }\n }\n\n private async setupTTLIndex(): Promise<void> {\n if (this.threadTTLSeconds === undefined) return;\n\n try {\n const db = mongoose.connection.db;\n if (!db) return;\n\n const collection = db.collection('threads');\n const indexes = await collection.indexes();\n const existingTTL = indexes.find(\n (idx) => idx.key?.updatedAt !== undefined && idx.expireAfterSeconds !== undefined\n );\n\n if (existingTTL) {\n if (existingTTL.expireAfterSeconds !== this.threadTTLSeconds) {\n await db.command({\n collMod: 'threads',\n index: { keyPattern: { updatedAt: 1 }, expireAfterSeconds: this.threadTTLSeconds },\n });\n loggers.agent.info(`Thread TTL index updated to ${this.threadTTLSeconds} seconds`);\n }\n } else {\n await collection.createIndex(\n { updatedAt: 1 },\n { expireAfterSeconds: this.threadTTLSeconds },\n );\n loggers.agent.info(`Thread TTL index created with ${this.threadTTLSeconds} seconds`);\n }\n } catch (error) {\n loggers.agent.error('Failed to setup TTL index:', error);\n }\n }\n\n private startOrphanCleanup(): void {\n if (this.threadTTLSeconds === undefined) return;\n if (this.orphanCleanupTimer) return;\n\n // Run cleanup at half the TTL interval, with a minimum of 60s and maximum of 1 hour\n const intervalMs = Math.max(60_000, Math.min(this.threadTTLSeconds * 500, 3_600_000));\n this.orphanCleanupTimer = setInterval(() => {\n this.cleanupOrphanedMessages().catch((error) => {\n loggers.agent.error('Orphaned message cleanup failed:', error);\n });\n }, intervalMs);\n\n loggers.agent.info(`Orphaned message cleanup scheduled every ${Math.round(intervalMs / 1000)}s`);\n }\n\n private async cleanupOrphanedMessages(): Promise<void> {\n if (!this.connected) return;\n\n try {\n const db = mongoose.connection.db;\n if (!db) return;\n\n const existingThreadIds = await db.collection('threads').distinct('threadId');\n const result = await MessageModel.deleteMany({\n threadId: { $nin: existingThreadIds },\n });\n\n if (result.deletedCount > 0) {\n loggers.agent.info(`Cleaned up ${result.deletedCount} orphaned messages`);\n }\n } catch (error) {\n loggers.agent.error('Failed to cleanup orphaned messages:', error);\n }\n }\n\n /**\n * Get the operation timeout in milliseconds\n */\n protected getOperationTimeout(): number {\n return this.operationTimeoutMS;\n }\n\n /**\n * Execute a database operation with automatic retry on connection errors\n * Note: Use mongoose's maxTimeMS option in queries for timeout control\n */\n protected async executeWithRetry<T>(\n operation: () => Promise<T>,\n operationName: string = \"Database operation\"\n ): Promise<T> {\n await this.ensureConnection();\n\n try {\n return await operation();\n } catch (error: any) {\n // Check if it's a timeout error from MongoDB\n if (error.code === 50 || error.message?.includes(\"operation exceeded time limit\")) {\n loggers.agent.error(`${operationName} exceeded time limit`);\n throw error;\n }\n\n // Check if it's a TooManyLogicalSessions error\n if (error.code === 261 || error.codeName === \"TooManyLogicalSessions\") {\n loggers.agent.warn(\n `${operationName} failed due to too many sessions, disconnecting to release sessions...`\n );\n\n try {\n await mongoose.disconnect();\n this.connected = false;\n } catch (disconnectError) {\n loggers.agent.error(\"Failed to disconnect during session cleanup:\", disconnectError);\n }\n\n await new Promise((resolve) => setTimeout(resolve, 5000));\n await this.ensureConnection();\n\n try {\n return await operation();\n } catch (retryError: any) {\n loggers.agent.error(`${operationName} failed after session cleanup retry:`, retryError);\n throw retryError;\n }\n }\n\n // Check if it's a connection-related error\n if (\n error.name === \"MongoNetworkError\" ||\n error.name === \"MongoServerError\" ||\n error.message?.includes(\"connection\") ||\n error.message?.includes(\"disconnect\")\n ) {\n loggers.agent.warn(\n `${operationName} failed due to connection issue, attempting reconnection...`\n );\n\n await this.ensureConnection();\n\n // Retry the operation once after reconnection\n try {\n return await operation();\n } catch (retryError: any) {\n loggers.agent.error(`${operationName} failed after retry:`, retryError);\n throw retryError;\n }\n }\n\n // If it's not a connection error, just throw it\n throw error;\n }\n }\n}\n","import { IAgentMemory } from \"@ainetwork/adk/modules\";\nimport { AgentModel } from \"../models/agent.model\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\ntype PromptDocument = {\n id: string;\n prompt: string;\n}\n\nexport class MongoDBAgent implements IAgentMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async getAgentPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"agent_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getAgentPrompt()\");\n };\n \n public async updateAgentPrompt(prompt: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await AgentModel.updateOne({\n id: \"agent_prompt\",\n }, { \"prompt\": prompt }, { upsert: true }).maxTimeMS(timeout);\n }, \"updateAgentPrompt()\");\n };\n\n public async getAggregatePrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"aggregate_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getAggregatePrompt()\");\n };\n\n public async getGenerateTitlePrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"generate_title_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getGenerateTitlePrompt()\");\n };\n\n public async getSingleTriggerPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"single_trigger_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getSingleTriggerPrompt()\");\n };\n\n public async getMultiTriggerPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"multi_trigger_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getMultiTriggerPrompt()\");\n };\n\n public async getToolSelectPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"tool_select_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getToolSelectPrompt()\");\n };\n\n public async getPIIDetectPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"pii_detect_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getPIIDetectPrompt()\");\n };\n\n public async getPIIFilterPrompt(): Promise<string> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const metadata = await AgentModel.findOne({\n id: \"pii_filter_prompt\"\n }).maxTimeMS(timeout)\n .lean<PromptDocument>();\n return metadata?.prompt || \"\";\n }, \"getPIIFilterPrompt()\");\n };\n}\n","import type { IDocumentMemory } from \"@ainetwork/adk/modules\";\nimport type { Document, DocumentFilter } from \"@ainetwork/adk/types/document\";\nimport { DocumentModel } from \"../models/document.model\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\nexport class MongoDBDocument implements IDocumentMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async getDocument(documentId: string): Promise<Document | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const document = await DocumentModel.findOne({ documentId })\n .maxTimeMS(timeout)\n .lean<Document>();\n return document || undefined;\n }, \"getDocument()\");\n }\n\n public async createDocument(document: Document): Promise<Document> {\n return this.executeWithRetry(async () => {\n const created = await DocumentModel.create(document);\n return created.toObject() as Document;\n }, \"createDocument()\");\n }\n\n public async updateDocument(\n documentId: string,\n document: Partial<Document>\n ): Promise<void> {\n // `documentId` is immutable; never let a payload reassign it.\n const { documentId: _documentId, ...mutableUpdates } = document;\n\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await DocumentModel.updateOne(\n { documentId },\n { $set: mutableUpdates }\n ).maxTimeMS(timeout);\n }, \"updateDocument()\");\n }\n\n public async deleteDocument(documentId: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await DocumentModel.deleteOne({ documentId }).maxTimeMS(timeout);\n }, \"deleteDocument()\");\n }\n\n public async listDocuments(\n userId?: string,\n filter?: DocumentFilter\n ): Promise<Document[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const query: Record<string, unknown> = {};\n if (userId) query.userId = userId;\n if (filter?.workflowId) query.workflowId = filter.workflowId;\n if (filter?.threadId) query.threadId = filter.threadId;\n if (filter?.source) query.source = filter.source;\n if (filter?.labels) {\n // Subset match: every provided label must equal the stored value.\n for (const [key, value] of Object.entries(filter.labels)) {\n query[`labels.${key}`] = value;\n }\n }\n\n const documents = await DocumentModel.find(query)\n .maxTimeMS(timeout)\n .lean<Document[]>();\n return documents;\n }, \"listDocuments()\");\n }\n}\n","import type { Intent } from \"@ainetwork/adk/types/memory\";\nimport { IIntentMemory } from \"@ainetwork/adk/modules\";\nimport { IntentModel } from \"../models/intent.model\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\nexport class MongoDBIntent implements IIntentMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async getIntent(intentId: string): Promise<Intent | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const intent = await IntentModel.findOne({ id: intentId })\n .maxTimeMS(timeout)\n .lean<Intent>();\n return intent || undefined;\n }, `getIntent(${intentId})`);\n };\n\n public async getIntentByName(intentName: string): Promise<Intent | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const intent = await IntentModel.findOne({ name: intentName })\n .maxTimeMS(timeout)\n .lean<Intent>();\n return intent || undefined;\n }, `getIntentByName(${intentName})`);\n }\n\n public async saveIntent(intent: Intent): Promise<void> {\n return this.executeWithRetry(async () => {\n await IntentModel.create(intent);\n }, `saveIntent(${intent.id})`);\n };\n\n public async updateIntent(intentId: string, intent: Intent): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await IntentModel.updateOne({\n id: intentId,\n }, intent).maxTimeMS(timeout);\n }, `updateIntent(${intentId})`);\n };\n\n public async deleteIntent(intentId: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await IntentModel.deleteOne({ id: intentId }).maxTimeMS(timeout);\n }, `deleteIntent(${intentId})`);\n };\n\n public async listIntents(): Promise<Intent[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const intents = await IntentModel.find()\n .maxTimeMS(timeout)\n .lean<Intent[]>();\n return intents;\n }, `listIntents()`);\n };\n}\n","import type { MessageObject, ThreadMetadata, ThreadObject, ThreadType, ThreadFilter } from \"@ainetwork/adk/types/memory\";\nimport { MessageRole } from \"@ainetwork/adk/types/memory\";\nimport { IThreadMemory } from \"@ainetwork/adk/modules\";\nimport { ThreadDocument, ThreadModel } from \"../models/threads.model\";\nimport { MessageDocument, MessageModel } from \"../models/messages.model\";\nimport { loggers } from \"@ainetwork/adk/utils/logger\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\nexport class MongoDBThread implements IThreadMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async getThread(\n userId: string,\n threadId: string\n ): Promise<ThreadObject | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const thread = await ThreadModel.findOne({ threadId, userId }).maxTimeMS(timeout);\n const messages = await MessageModel.find({ threadId, userId })\n .sort({ timestamp: 1 })\n .maxTimeMS(timeout);\n\n if (!thread) return undefined;\n\n loggers.agent.debug(`Found ${messages.length} messages for thread ${threadId}`);\n\n const threadObject: ThreadObject = {\n threadId: thread.threadId,\n userId: thread.userId,\n type: thread.type as ThreadType,\n title: thread.title || \"New thread\",\n isPinned: thread.isPinned ?? false,\n workflowId: thread.workflowId,\n messages: []\n };\n messages.forEach((message: MessageDocument) => {\n threadObject.messages.push({\n messageId: message.messageId,\n role: message.role as MessageRole,\n content: message.content,\n timestamp: message.timestamp,\n metadata: message.metadata,\n });\n });\n\n return threadObject;\n }, `getThread(${userId}, ${threadId})`);\n };\n\n public async createThread(\n type: ThreadType,\n userId: string,\n threadId: string,\n title: string,\n workflowId?: string,\n ): Promise<ThreadObject> {\n return this.executeWithRetry(async () => {\n await ThreadModel.create({\n type,\n userId,\n threadId,\n title,\n workflowId,\n });\n\n return { type, userId, threadId, title, workflowId, messages: []};\n }, `createThread(${userId}, ${threadId})`);\n };\n\n public async addMessagesToThread(\n userId: string,\n threadId: string,\n messages: MessageObject[]\n ): Promise<void> {\n return this.executeWithRetry(async () => {\n if (messages.length > 0) {\n const messageIds = messages.map((m) => m.messageId);\n await MessageModel.deleteMany({ threadId, userId, messageId: { $in: messageIds } });\n await MessageModel.insertMany(\n messages.map((message) => ({\n threadId,\n messageId: message.messageId,\n userId,\n role: message.role,\n content: message.content,\n timestamp: message.timestamp,\n metadata: message.metadata,\n }))\n );\n }\n await ThreadModel.updateOne(\n { threadId, userId },\n { $set: { updatedAt: new Date() } }\n );\n }, `addMessagesToThread(${userId}, ${threadId})`);\n };\n\n public async deleteThread(userId: string, threadId: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n\n // Delete all messages for this thread\n await MessageModel.deleteMany({ userId, threadId }).maxTimeMS(timeout);\n\n // Delete the thread itself\n await ThreadModel.deleteOne({ userId, threadId }).maxTimeMS(timeout);\n }, `deleteThread(${userId}, ${threadId})`);\n };\n\n public async listThreads(userId: string, filter?: ThreadFilter): Promise<ThreadMetadata[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const query: Record<string, any> = { userId };\n if (filter?.workflowId) query.workflowId = filter.workflowId;\n if (filter?.type) query.type = filter.type;\n const threads = await ThreadModel.find(query)\n .sort({ updatedAt: -1 })\n .maxTimeMS(timeout);\n const data: ThreadMetadata[] = threads.map((thread: ThreadDocument) => {\n return {\n type: thread.type,\n userId,\n threadId: thread.threadId,\n title: thread.title,\n isPinned: thread.isPinned ?? false,\n workflowId: thread.workflowId,\n createdAt: thread.createdAt?.toISOString(),\n updatedAt: thread.updatedAt?.toISOString(),\n } as ThreadMetadata;\n })\n return data;\n }, `listThreads(${userId})`);\n };\n\n public async updateThreadPin(\n userId: string,\n threadId: string,\n isPinned: boolean\n ): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await ThreadModel.updateOne(\n { threadId, userId },\n { $set: { isPinned } }\n ).maxTimeMS(timeout);\n }, `updateThreadPin(${userId}, ${threadId})`);\n };\n}\n","import type { IUserWorkflowMemory } from \"@ainetwork/adk/modules\";\nimport type { UserWorkflow } from \"@ainetwork/adk/types/memory\";\nimport { UserWorkflowModel } from \"../models/user-workflow.model\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\nexport class MongoDBUserWorkflow implements IUserWorkflowMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async createUserWorkflow(workflow: UserWorkflow): Promise<UserWorkflow> {\n return this.executeWithRetry(async () => {\n const created = await UserWorkflowModel.create(workflow);\n return created.toObject() as UserWorkflow;\n }, \"createUserWorkflow()\");\n }\n\n public async getUserWorkflow(workflowId: string): Promise<UserWorkflow | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const workflow = await UserWorkflowModel.findOne({ workflowId })\n .maxTimeMS(timeout)\n .lean<UserWorkflow>();\n return workflow || undefined;\n }, \"getUserWorkflow()\");\n }\n\n public async updateUserWorkflow(workflowId: string, updates: Partial<UserWorkflow>): Promise<void> {\n if (!updates.userId) {\n throw new Error(\"userId is required for updateUserWorkflow\");\n }\n\n const { userId, workflowId: _workflowId, ...mutableUpdates } = updates;\n\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await UserWorkflowModel.updateOne(\n { workflowId, userId },\n { $set: mutableUpdates }\n ).maxTimeMS(timeout);\n }, \"updateUserWorkflow()\");\n }\n\n public async deleteUserWorkflow(workflowId: string, userId: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await UserWorkflowModel.deleteOne({ workflowId, userId }).maxTimeMS(timeout);\n }, \"deleteUserWorkflow()\");\n }\n\n public async listUserWorkflows(userId?: string): Promise<UserWorkflow[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const query = userId ? { userId } : {};\n const workflows = await UserWorkflowModel.find(query)\n .maxTimeMS(timeout)\n .lean<UserWorkflow[]>();\n return workflows;\n }, \"listUserWorkflows()\");\n }\n\n public async listActiveScheduledWorkflows(): Promise<UserWorkflow[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const workflows = await UserWorkflowModel.find({\n active: true,\n schedule: { $exists: true, $ne: null },\n })\n .maxTimeMS(timeout)\n .lean<UserWorkflow[]>();\n return workflows;\n }, \"listActiveScheduledWorkflows()\");\n }\n}\n","import type { IWorkflowTemplateMemory } from \"@ainetwork/adk/modules\";\nimport type { WorkflowTemplate } from \"@ainetwork/adk/types/memory\";\nimport { WorkflowTemplateModel } from \"../models/workflow-template.model\";\n\nexport type ExecuteWithRetryFn = <T>(\n operation: () => Promise<T>,\n operationName?: string\n) => Promise<T>;\n\nexport type GetOperationTimeoutFn = () => number;\n\nexport class MongoDBWorkflowTemplate implements IWorkflowTemplateMemory {\n private executeWithRetry: ExecuteWithRetryFn;\n private getOperationTimeout: GetOperationTimeoutFn;\n\n constructor(\n executeWithRetry: ExecuteWithRetryFn,\n getOperationTimeout: GetOperationTimeoutFn\n ) {\n this.executeWithRetry = executeWithRetry;\n this.getOperationTimeout = getOperationTimeout;\n }\n\n public async createTemplate(template: WorkflowTemplate): Promise<WorkflowTemplate> {\n return this.executeWithRetry(async () => {\n const created = await WorkflowTemplateModel.create(template);\n return created.toObject() as WorkflowTemplate;\n }, \"createTemplate()\");\n }\n\n public async getTemplate(templateId: string): Promise<WorkflowTemplate | undefined> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const template = await WorkflowTemplateModel.findOne({ templateId })\n .maxTimeMS(timeout)\n .lean<WorkflowTemplate>();\n return template || undefined;\n }, \"getTemplate()\");\n }\n\n public async updateTemplate(templateId: string, updates: Partial<WorkflowTemplate>): Promise<void> {\n const { templateId: _templateId, ...mutableUpdates } = updates;\n\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await WorkflowTemplateModel.updateOne(\n { templateId },\n { $set: mutableUpdates }\n ).maxTimeMS(timeout);\n }, \"updateTemplate()\");\n }\n\n public async deleteTemplate(templateId: string): Promise<void> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n await WorkflowTemplateModel.deleteOne({ templateId }).maxTimeMS(timeout);\n }, \"deleteTemplate()\");\n }\n\n public async listTemplates(): Promise<WorkflowTemplate[]> {\n return this.executeWithRetry(async () => {\n const timeout = this.getOperationTimeout();\n const templates = await WorkflowTemplateModel.find()\n .maxTimeMS(timeout)\n .lean<WorkflowTemplate[]>();\n return templates;\n }, \"listTemplates()\");\n }\n}\n"],"mappings":"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","names":["loggers","loggers"]}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // models/document.model.ts
31
+ var document_model_exports = {};
32
+ __export(document_model_exports, {
33
+ DocumentModel: () => DocumentModel,
34
+ DocumentObjectSchema: () => DocumentObjectSchema
35
+ });
36
+ module.exports = __toCommonJS(document_model_exports);
37
+ var import_document = require("@ainetwork/adk/types/document");
38
+ var import_mongoose = require("mongoose");
39
+ var import_mongoose2 = __toESM(require("mongoose"), 1);
40
+ var DocumentObjectSchema = new import_mongoose.Schema(
41
+ {
42
+ documentId: {
43
+ type: String,
44
+ required: true,
45
+ unique: true
46
+ },
47
+ userId: {
48
+ type: String,
49
+ required: true,
50
+ index: true
51
+ },
52
+ title: {
53
+ type: String,
54
+ required: true
55
+ },
56
+ format: {
57
+ type: String,
58
+ enum: Object.values(import_document.DocumentFormat),
59
+ required: true,
60
+ default: import_document.DocumentFormat.MARKDOWN
61
+ },
62
+ content: {
63
+ type: String,
64
+ required: true
65
+ },
66
+ blocks: {
67
+ type: import_mongoose.Schema.Types.Mixed
68
+ },
69
+ slots: {
70
+ type: import_mongoose.Schema.Types.Mixed
71
+ },
72
+ // Cached AI advice ({ content, generatedAt }). Free-form so the schema
73
+ // doesn't strip it on update (mongoose strict mode).
74
+ advice: {
75
+ type: import_mongoose.Schema.Types.Mixed
76
+ },
77
+ // Faceted grouping (e.g. category/workplaceId/month). Stored as a free
78
+ // map; index specific keys (e.g. `labels.workplaceId`) if query volume
79
+ // warrants it.
80
+ labels: {
81
+ type: import_mongoose.Schema.Types.Mixed
82
+ },
83
+ source: {
84
+ type: String,
85
+ enum: Object.values(import_document.DocumentSource),
86
+ required: true
87
+ },
88
+ workflowId: {
89
+ type: String,
90
+ index: true
91
+ },
92
+ threadId: {
93
+ type: String,
94
+ index: true
95
+ },
96
+ version: {
97
+ type: Number,
98
+ required: true,
99
+ default: 1
100
+ },
101
+ editedManually: {
102
+ type: Boolean
103
+ },
104
+ createdAt: {
105
+ type: String,
106
+ required: true
107
+ },
108
+ updatedAt: {
109
+ type: String,
110
+ required: true
111
+ }
112
+ },
113
+ // `createdAt`/`updatedAt` are caller-supplied ISO strings (see Document type),
114
+ // so mongoose's automatic Date timestamps are intentionally disabled.
115
+ {
116
+ timestamps: false
117
+ }
118
+ );
119
+ var DocumentModel = import_mongoose2.default.model(
120
+ "Document",
121
+ DocumentObjectSchema
122
+ );
123
+ // Annotate the CommonJS export names for ESM import in node:
124
+ 0 && (module.exports = {
125
+ DocumentModel,
126
+ DocumentObjectSchema
127
+ });
128
+ //# sourceMappingURL=document.model.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../models/document.model.ts"],"sourcesContent":["import {\n\ttype DocumentAdvice,\n\tDocumentFormat,\n\ttype DocumentSlot,\n\tDocumentSource,\n} from \"@ainetwork/adk/types/document\";\nimport type { WorkflowRenderedBlock } from \"@ainetwork/adk/types/memory\";\nimport { type Document, Schema } from \"mongoose\";\nimport mongoose from \"mongoose\";\n\nexport const DocumentObjectSchema = new Schema(\n\t{\n\t\tdocumentId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tunique: true,\n\t\t},\n\t\tuserId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tindex: true,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tformat: {\n\t\t\ttype: String,\n\t\t\tenum: Object.values(DocumentFormat),\n\t\t\trequired: true,\n\t\t\tdefault: DocumentFormat.MARKDOWN,\n\t\t},\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tblocks: {\n\t\t\ttype: Schema.Types.Mixed,\n\t\t},\n\t\tslots: {\n\t\t\ttype: Schema.Types.Mixed,\n\t\t},\n\t\t// Cached AI advice ({ content, generatedAt }). Free-form so the schema\n\t\t// doesn't strip it on update (mongoose strict mode).\n\t\tadvice: {\n\t\t\ttype: Schema.Types.Mixed,\n\t\t},\n\t\t// Faceted grouping (e.g. category/workplaceId/month). Stored as a free\n\t\t// map; index specific keys (e.g. `labels.workplaceId`) if query volume\n\t\t// warrants it.\n\t\tlabels: {\n\t\t\ttype: Schema.Types.Mixed,\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\tenum: Object.values(DocumentSource),\n\t\t\trequired: true,\n\t\t},\n\t\tworkflowId: {\n\t\t\ttype: String,\n\t\t\tindex: true,\n\t\t},\n\t\tthreadId: {\n\t\t\ttype: String,\n\t\t\tindex: true,\n\t\t},\n\t\tversion: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t\tdefault: 1,\n\t\t},\n\t\teditedManually: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tcreatedAt: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tupdatedAt: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\t// `createdAt`/`updatedAt` are caller-supplied ISO strings (see Document type),\n\t// so mongoose's automatic Date timestamps are intentionally disabled.\n\t{\n\t\ttimestamps: false,\n\t}\n);\n\nexport interface DocumentDocument extends Document {\n\tdocumentId: string;\n\tuserId: string;\n\ttitle: string;\n\tformat: DocumentFormat;\n\tcontent: string;\n\tblocks?: WorkflowRenderedBlock[];\n\tslots?: DocumentSlot[];\n\tadvice?: DocumentAdvice;\n\tlabels?: Record<string, string>;\n\tsource: DocumentSource;\n\tworkflowId?: string;\n\tthreadId?: string;\n\tversion: number;\n\teditedManually?: boolean;\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\nexport const DocumentModel = mongoose.model<DocumentDocument>(\n\t\"Document\",\n\tDocumentObjectSchema\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKO;AAEP,sBAAsC;AACtC,IAAAA,mBAAqB;AAEd,IAAM,uBAAuB,IAAI;AAAA,EACvC;AAAA,IACC,YAAY;AAAA,MACX,MAAM;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,IACR;AAAA,IACA,OAAO;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACP,MAAM;AAAA,MACN,MAAM,OAAO,OAAO,8BAAc;AAAA,MAClC,UAAU;AAAA,MACV,SAAS,+BAAe;AAAA,IACzB;AAAA,IACA,SAAS;AAAA,MACR,MAAM;AAAA,MACN,UAAU;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACP,MAAM,uBAAO,MAAM;AAAA,IACpB;AAAA,IACA,OAAO;AAAA,MACN,MAAM,uBAAO,MAAM;AAAA,IACpB;AAAA;AAAA;AAAA,IAGA,QAAQ;AAAA,MACP,MAAM,uBAAO,MAAM;AAAA,IACpB;AAAA;AAAA;AAAA;AAAA,IAIA,QAAQ;AAAA,MACP,MAAM,uBAAO,MAAM;AAAA,IACpB;AAAA,IACA,QAAQ;AAAA,MACP,MAAM;AAAA,MACN,MAAM,OAAO,OAAO,8BAAc;AAAA,MAClC,UAAU;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,IACA,UAAU;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACR,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,IACV;AAAA,IACA,gBAAgB;AAAA,MACf,MAAM;AAAA,IACP;AAAA,IACA,WAAW;AAAA,MACV,MAAM;AAAA,MACN,UAAU;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACV,MAAM;AAAA,MACN,UAAU;AAAA,IACX;AAAA,EACD;AAAA;AAAA;AAAA,EAGA;AAAA,IACC,YAAY;AAAA,EACb;AACD;AAqBO,IAAM,gBAAgB,iBAAAC,QAAS;AAAA,EACrC;AAAA,EACA;AACD;","names":["import_mongoose","mongoose"]}
@@ -0,0 +1,87 @@
1
+ import { DocumentFormat, DocumentSource, DocumentSlot, DocumentAdvice } from '@ainetwork/adk/types/document';
2
+ import { WorkflowRenderedBlock } from '@ainetwork/adk/types/memory';
3
+ import mongoose, { Schema, Document } from 'mongoose';
4
+
5
+ declare const DocumentObjectSchema: Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
6
+ timestamps: false;
7
+ }, {
8
+ version: number;
9
+ documentId: string;
10
+ userId: string;
11
+ title: string;
12
+ format: DocumentFormat.MARKDOWN;
13
+ content: string;
14
+ source: DocumentSource;
15
+ createdAt: string;
16
+ updatedAt: string;
17
+ blocks?: any;
18
+ slots?: any;
19
+ advice?: any;
20
+ labels?: any;
21
+ workflowId?: string | null | undefined;
22
+ threadId?: string | null | undefined;
23
+ editedManually?: boolean | null | undefined;
24
+ }, Document<unknown, {}, mongoose.FlatRecord<{
25
+ version: number;
26
+ documentId: string;
27
+ userId: string;
28
+ title: string;
29
+ format: DocumentFormat.MARKDOWN;
30
+ content: string;
31
+ source: DocumentSource;
32
+ createdAt: string;
33
+ updatedAt: string;
34
+ blocks?: any;
35
+ slots?: any;
36
+ advice?: any;
37
+ labels?: any;
38
+ workflowId?: string | null | undefined;
39
+ threadId?: string | null | undefined;
40
+ editedManually?: boolean | null | undefined;
41
+ }>, {}> & mongoose.FlatRecord<{
42
+ version: number;
43
+ documentId: string;
44
+ userId: string;
45
+ title: string;
46
+ format: DocumentFormat.MARKDOWN;
47
+ content: string;
48
+ source: DocumentSource;
49
+ createdAt: string;
50
+ updatedAt: string;
51
+ blocks?: any;
52
+ slots?: any;
53
+ advice?: any;
54
+ labels?: any;
55
+ workflowId?: string | null | undefined;
56
+ threadId?: string | null | undefined;
57
+ editedManually?: boolean | null | undefined;
58
+ }> & {
59
+ _id: mongoose.Types.ObjectId;
60
+ } & {
61
+ __v: number;
62
+ }>;
63
+ interface DocumentDocument extends Document {
64
+ documentId: string;
65
+ userId: string;
66
+ title: string;
67
+ format: DocumentFormat;
68
+ content: string;
69
+ blocks?: WorkflowRenderedBlock[];
70
+ slots?: DocumentSlot[];
71
+ advice?: DocumentAdvice;
72
+ labels?: Record<string, string>;
73
+ source: DocumentSource;
74
+ workflowId?: string;
75
+ threadId?: string;
76
+ version: number;
77
+ editedManually?: boolean;
78
+ createdAt: string;
79
+ updatedAt: string;
80
+ }
81
+ declare const DocumentModel: mongoose.Model<DocumentDocument, {}, {}, {}, Document<unknown, {}, DocumentDocument, {}> & DocumentDocument & Required<{
82
+ _id: unknown;
83
+ }> & {
84
+ __v: number;
85
+ }, any>;
86
+
87
+ export { type DocumentDocument, DocumentModel, DocumentObjectSchema };
@@ -0,0 +1,87 @@
1
+ import { DocumentFormat, DocumentSource, DocumentSlot, DocumentAdvice } from '@ainetwork/adk/types/document';
2
+ import { WorkflowRenderedBlock } from '@ainetwork/adk/types/memory';
3
+ import mongoose, { Schema, Document } from 'mongoose';
4
+
5
+ declare const DocumentObjectSchema: Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
6
+ timestamps: false;
7
+ }, {
8
+ version: number;
9
+ documentId: string;
10
+ userId: string;
11
+ title: string;
12
+ format: DocumentFormat.MARKDOWN;
13
+ content: string;
14
+ source: DocumentSource;
15
+ createdAt: string;
16
+ updatedAt: string;
17
+ blocks?: any;
18
+ slots?: any;
19
+ advice?: any;
20
+ labels?: any;
21
+ workflowId?: string | null | undefined;
22
+ threadId?: string | null | undefined;
23
+ editedManually?: boolean | null | undefined;
24
+ }, Document<unknown, {}, mongoose.FlatRecord<{
25
+ version: number;
26
+ documentId: string;
27
+ userId: string;
28
+ title: string;
29
+ format: DocumentFormat.MARKDOWN;
30
+ content: string;
31
+ source: DocumentSource;
32
+ createdAt: string;
33
+ updatedAt: string;
34
+ blocks?: any;
35
+ slots?: any;
36
+ advice?: any;
37
+ labels?: any;
38
+ workflowId?: string | null | undefined;
39
+ threadId?: string | null | undefined;
40
+ editedManually?: boolean | null | undefined;
41
+ }>, {}> & mongoose.FlatRecord<{
42
+ version: number;
43
+ documentId: string;
44
+ userId: string;
45
+ title: string;
46
+ format: DocumentFormat.MARKDOWN;
47
+ content: string;
48
+ source: DocumentSource;
49
+ createdAt: string;
50
+ updatedAt: string;
51
+ blocks?: any;
52
+ slots?: any;
53
+ advice?: any;
54
+ labels?: any;
55
+ workflowId?: string | null | undefined;
56
+ threadId?: string | null | undefined;
57
+ editedManually?: boolean | null | undefined;
58
+ }> & {
59
+ _id: mongoose.Types.ObjectId;
60
+ } & {
61
+ __v: number;
62
+ }>;
63
+ interface DocumentDocument extends Document {
64
+ documentId: string;
65
+ userId: string;
66
+ title: string;
67
+ format: DocumentFormat;
68
+ content: string;
69
+ blocks?: WorkflowRenderedBlock[];
70
+ slots?: DocumentSlot[];
71
+ advice?: DocumentAdvice;
72
+ labels?: Record<string, string>;
73
+ source: DocumentSource;
74
+ workflowId?: string;
75
+ threadId?: string;
76
+ version: number;
77
+ editedManually?: boolean;
78
+ createdAt: string;
79
+ updatedAt: string;
80
+ }
81
+ declare const DocumentModel: mongoose.Model<DocumentDocument, {}, {}, {}, Document<unknown, {}, DocumentDocument, {}> & DocumentDocument & Required<{
82
+ _id: unknown;
83
+ }> & {
84
+ __v: number;
85
+ }, any>;
86
+
87
+ export { type DocumentDocument, DocumentModel, DocumentObjectSchema };
@@ -0,0 +1,9 @@
1
+ import {
2
+ DocumentModel,
3
+ DocumentObjectSchema
4
+ } from "../chunk-JMRBIQNX.js";
5
+ export {
6
+ DocumentModel,
7
+ DocumentObjectSchema
8
+ };
9
+ //# sourceMappingURL=document.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -23,42 +23,42 @@ declare const MessageObjectSchema: Schema<any, mongoose.Model<any, any, any, any
23
23
  createdAt: NativeDate;
24
24
  updatedAt: NativeDate;
25
25
  } & {
26
- threadId: string;
27
26
  userId: string;
28
- messageId: string;
29
- role: MessageRole;
30
27
  content: {
31
28
  type: string;
32
29
  parts: any[];
33
30
  };
31
+ threadId: string;
32
+ messageId: string;
33
+ role: MessageRole;
34
34
  timestamp: number;
35
35
  metadata: any;
36
36
  }, Document<unknown, {}, mongoose.FlatRecord<{
37
37
  createdAt: NativeDate;
38
38
  updatedAt: NativeDate;
39
39
  } & {
40
- threadId: string;
41
40
  userId: string;
42
- messageId: string;
43
- role: MessageRole;
44
41
  content: {
45
42
  type: string;
46
43
  parts: any[];
47
44
  };
45
+ threadId: string;
46
+ messageId: string;
47
+ role: MessageRole;
48
48
  timestamp: number;
49
49
  metadata: any;
50
50
  }>, {}> & mongoose.FlatRecord<{
51
51
  createdAt: NativeDate;
52
52
  updatedAt: NativeDate;
53
53
  } & {
54
- threadId: string;
55
54
  userId: string;
56
- messageId: string;
57
- role: MessageRole;
58
55
  content: {
59
56
  type: string;
60
57
  parts: any[];
61
58
  };
59
+ threadId: string;
60
+ messageId: string;
61
+ role: MessageRole;
62
62
  timestamp: number;
63
63
  metadata: any;
64
64
  }> & {