{"version":3,"sources":["/Users/shyun/comcom/ain-enterprise/ain-adk/dist/cjs/chunk-QR5QLOBZ.cjs","../../src/controllers/query.controller.ts"],"names":[],"mappings":"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","file":"/Users/shyun/comcom/ain-enterprise/ain-adk/dist/cjs/chunk-QR5QLOBZ.cjs","sourcesContent":[null,"import type { NextFunction, Request, Response } from \"express\";\nimport type { QueryService } from \"@/services\";\nimport { MessageRole } from \"@/types/memory\";\nimport { streamEventsToSSE } from \"@/utils/sse-stream\";\n\nexport class QueryController {\n\tprivate queryService: QueryService;\n\n\tconstructor(queryService: QueryService) {\n\t\tthis.queryService = queryService;\n\t}\n\n\tpublic handleQueryRequest = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\tconst {\n\t\t\ttype,\n\t\t\tthreadId,\n\t\t\tworkflowId,\n\t\t\ttitle,\n\t\t\tmessage: query,\n\t\t\tdisplayMessage: displayQuery,\n\t\t\tdocumentIds,\n\t\t} = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\ttry {\n\t\t\tconst stream = this.queryService.handleQuery(\n\t\t\t\t{ type, userId, threadId, workflowId, title },\n\t\t\t\t{ query, displayQuery, documentIds },\n\t\t\t);\n\n\t\t\tlet content = \"\";\n\t\t\tlet responseThreadId = threadId;\n\n\t\t\tfor await (const event of stream) {\n\t\t\t\tif (event.event === \"thread_id\") {\n\t\t\t\t\tresponseThreadId = event.data.threadId;\n\t\t\t\t} else if (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\tcontent += event.data.delta;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tres.status(200).json({ content, threadId: responseThreadId });\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n\n\tpublic handleQueryStreamRequest = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\t_next: NextFunction,\n\t) => {\n\t\tconst {\n\t\t\ttype,\n\t\t\tthreadId,\n\t\t\tworkflowId,\n\t\t\ttitle,\n\t\t\tmessage: query,\n\t\t\tdisplayMessage: displayQuery,\n\t\t\tdocumentIds,\n\t\t} = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\tawait streamEventsToSSE(req, res, {\n\t\t\tlogLabel: \"query stream\",\n\t\t\tuserId,\n\t\t\tsetup: async () =>\n\t\t\t\tthis.queryService.handleQuery(\n\t\t\t\t\t{ type, userId, threadId, workflowId, title },\n\t\t\t\t\t{ query, displayQuery, documentIds },\n\t\t\t\t),\n\t\t\tonThinkingProcess: async (currentThreadId, data) => {\n\t\t\t\t// a2a 호출에 대해서는 데이터베이스에 추가하지 않기 위해 여기서 thread message에 기록\n\t\t\t\tconst thinkData =\n\t\t\t\t\tawait this.queryService.filterThinkingDataForStorage(data);\n\t\t\t\tawait this.queryService.addTextMessage(\n\t\t\t\t\tuserId,\n\t\t\t\t\tcurrentThreadId,\n\t\t\t\t\tMessageRole.MODEL,\n\t\t\t\t\tthinkData.title,\n\t\t\t\t\t{\n\t\t\t\t\t\tisThinking: true,\n\t\t\t\t\t\tthinkData,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\t};\n}\n"]}