@intlayer/backend 5.3.13 → 5.4.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.
Files changed (40) hide show
  1. package/dist/cjs/controllers/ai.controller.cjs +51 -12
  2. package/dist/cjs/controllers/ai.controller.cjs.map +1 -1
  3. package/dist/cjs/models/discussion.model.cjs +34 -0
  4. package/dist/cjs/models/discussion.model.cjs.map +1 -0
  5. package/dist/cjs/schemas/discussion.schema.cjs +81 -0
  6. package/dist/cjs/schemas/discussion.schema.cjs.map +1 -0
  7. package/dist/cjs/types/discussion.types.cjs +17 -0
  8. package/dist/cjs/types/discussion.types.cjs.map +1 -0
  9. package/dist/cjs/utils/AI/askDocQuestion/PROMPT.md +31 -0
  10. package/dist/cjs/utils/AI/askDocQuestion/askDocQuestion.cjs +26 -8
  11. package/dist/cjs/utils/AI/askDocQuestion/askDocQuestion.cjs.map +1 -1
  12. package/dist/cjs/utils/AI/askDocQuestion/embeddings.json +8605 -0
  13. package/dist/cjs/utils/AI/auditDictionaryMetadata/index.cjs +2 -2
  14. package/dist/cjs/utils/AI/auditDictionaryMetadata/index.cjs.map +1 -1
  15. package/dist/esm/controllers/ai.controller.mjs +51 -12
  16. package/dist/esm/controllers/ai.controller.mjs.map +1 -1
  17. package/dist/esm/models/discussion.model.mjs +10 -0
  18. package/dist/esm/models/discussion.model.mjs.map +1 -0
  19. package/dist/esm/schemas/discussion.schema.mjs +57 -0
  20. package/dist/esm/schemas/discussion.schema.mjs.map +1 -0
  21. package/dist/esm/types/discussion.types.mjs +1 -0
  22. package/dist/esm/types/discussion.types.mjs.map +1 -0
  23. package/dist/esm/utils/AI/askDocQuestion/PROMPT.md +31 -0
  24. package/dist/esm/utils/AI/askDocQuestion/askDocQuestion.mjs +26 -9
  25. package/dist/esm/utils/AI/askDocQuestion/askDocQuestion.mjs.map +1 -1
  26. package/dist/esm/utils/AI/askDocQuestion/embeddings.json +8605 -0
  27. package/dist/esm/utils/AI/auditDictionaryMetadata/index.mjs +2 -2
  28. package/dist/esm/utils/AI/auditDictionaryMetadata/index.mjs.map +1 -1
  29. package/dist/types/controllers/ai.controller.d.ts +2 -1
  30. package/dist/types/controllers/ai.controller.d.ts.map +1 -1
  31. package/dist/types/models/discussion.model.d.ts +3 -0
  32. package/dist/types/models/discussion.model.d.ts.map +1 -0
  33. package/dist/types/schemas/discussion.schema.d.ts +12 -0
  34. package/dist/types/schemas/discussion.schema.d.ts.map +1 -0
  35. package/dist/types/types/discussion.types.d.ts +20 -0
  36. package/dist/types/types/discussion.types.d.ts.map +1 -0
  37. package/dist/types/utils/AI/askDocQuestion/askDocQuestion.d.ts +4 -1
  38. package/dist/types/utils/AI/askDocQuestion/askDocQuestion.d.ts.map +1 -1
  39. package/dist/types/utils/AI/auditDictionaryMetadata/index.d.ts.map +1 -1
  40. package/package.json +11 -11
@@ -1,8 +1,8 @@
1
+ import { logger } from "./../../../logger/index.mjs";
1
2
  import { readFileSync } from "fs";
3
+ import { OpenAI } from "openai";
2
4
  import { dirname, join } from "path";
3
5
  import { fileURLToPath } from "url";
4
- import { logger } from "./../../../logger/index.mjs";
5
- import { OpenAI } from "openai";
6
6
  const __dirname = dirname(fileURLToPath(import.meta.url));
7
7
  const getFileContent = (relativeFilePath) => {
8
8
  const absolutePath = join(__dirname, relativeFilePath);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/utils/AI/auditDictionaryMetadata/index.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\nimport { logger } from '@logger';\nimport { OpenAI } from 'openai';\nimport type { Tag } from '@/types/tag.types';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nexport type AIOptions = {\n model?: string;\n temperature?: number;\n openAiApiKey?: string;\n};\n\nexport type AuditOptions = {\n tags: Tag[];\n fileContent: string;\n customPrompt?: string;\n} & AIOptions;\nexport type AuditFileResultData = { fileContent: string; tokenUsed: number };\n\n/**\n * Reads the content of a file synchronously.\n *\n * @function\n * @param relativeFilePath - The relative or absolute path to the target file.\n * @returns The entire contents of the specified file as a UTF-8 encoded string.\n */\nconst getFileContent = (relativeFilePath: string): string => {\n const absolutePath = join(__dirname, relativeFilePath);\n const fileContent = readFileSync(absolutePath, 'utf-8');\n return fileContent;\n};\n\n// The prompt template to send to ChatGPT, requesting an audit of content declaration files.\nconst CHAT_GPT_PROMPT = getFileContent('./PROMPT.md');\n\n/**\n * Audits a content declaration file by constructing a prompt for ChatGPT.\n * The prompt includes details about the project's locales, file paths of content declarations,\n * and requests for identifying issues or inconsistencies. It prints the prompt for each file,\n * and could be adapted to send requests to the ChatGPT model.\n *\n */\nexport const auditDictionaryMetadata = async ({\n model,\n openAiApiKey,\n temperature,\n customPrompt,\n tags,\n fileContent,\n}: AuditOptions): Promise<AuditFileResultData | undefined> => {\n try {\n // Optionally, you could initialize and configure the OpenAI client here, if you intend to make API calls.\n // Uncomment and configure the following lines if you have `openai` installed and want to call the API:\n\n const openai = new OpenAI({\n apiKey: openAiApiKey ?? process.env.OPENAI_API_KEY,\n });\n\n // Prepare the prompt for ChatGPT by replacing placeholders with actual values.\n const prompt =\n customPrompt ??\n CHAT_GPT_PROMPT.replace(\n '{{tags}}',\n `${JSON.stringify(\n tags\n .map(({ key, description }) => `- ${key}: ${description}`)\n .join('\\n\\n'),\n null,\n 2\n )}`\n ).replace('{{contentDeclaration}}', fileContent);\n\n // Example of how you might request a completion from ChatGPT:\n const chatCompletion = await openai.chat.completions.create({\n model: openAiApiKey\n ? (model ?? 'gpt-4o-2024-11-20')\n : 'gpt-4o-2024-11-20',\n temperature: openAiApiKey ? (temperature ?? 0.1) : 0.1,\n messages: [{ role: 'system', content: prompt }],\n });\n\n const newContent = chatCompletion.choices[0].message?.content;\n\n logger.info(\n `${chatCompletion.usage?.total_tokens} tokens used in the request`\n );\n\n return {\n fileContent: newContent ?? '',\n tokenUsed: chatCompletion.usage?.total_tokens ?? 0,\n };\n } catch (error) {\n console.error(error);\n }\n};\n"],"mappings":"AAAA,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AACvB,SAAS,cAAc;AAGvB,MAAM,YAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AAsBxD,MAAM,iBAAiB,CAAC,qBAAqC;AAC3D,QAAM,eAAe,KAAK,WAAW,gBAAgB;AACrD,QAAM,cAAc,aAAa,cAAc,OAAO;AACtD,SAAO;AACT;AAGA,MAAM,kBAAkB,eAAe,aAAa;AAS7C,MAAM,0BAA0B,OAAO;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA8D;AAC5D,MAAI;AAIF,UAAM,SAAS,IAAI,OAAO;AAAA,MACxB,QAAQ,gBAAgB,QAAQ,IAAI;AAAA,IACtC,CAAC;AAGD,UAAM,SACJ,gBACA,gBAAgB;AAAA,MACd;AAAA,MACA,GAAG,KAAK;AAAA,QACN,KACG,IAAI,CAAC,EAAE,KAAK,YAAY,MAAM,KAAK,GAAG,KAAK,WAAW,EAAE,EACxD,KAAK,MAAM;AAAA,QACd;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH,EAAE,QAAQ,0BAA0B,WAAW;AAGjD,UAAM,iBAAiB,MAAM,OAAO,KAAK,YAAY,OAAO;AAAA,MAC1D,OAAO,eACF,SAAS,sBACV;AAAA,MACJ,aAAa,eAAgB,eAAe,MAAO;AAAA,MACnD,UAAU,CAAC,EAAE,MAAM,UAAU,SAAS,OAAO,CAAC;AAAA,IAChD,CAAC;AAED,UAAM,aAAa,eAAe,QAAQ,CAAC,EAAE,SAAS;AAEtD,WAAO;AAAA,MACL,GAAG,eAAe,OAAO,YAAY;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,aAAa,cAAc;AAAA,MAC3B,WAAW,eAAe,OAAO,gBAAgB;AAAA,IACnD;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,KAAK;AAAA,EACrB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/utils/AI/auditDictionaryMetadata/index.ts"],"sourcesContent":["import type { Tag } from '@/types/tag.types';\nimport { logger } from '@logger';\nimport { readFileSync } from 'fs';\nimport { OpenAI } from 'openai';\nimport { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nexport type AIOptions = {\n model?: string;\n temperature?: number;\n openAiApiKey?: string;\n};\n\nexport type AuditOptions = {\n tags: Tag[];\n fileContent: string;\n customPrompt?: string;\n} & AIOptions;\nexport type AuditFileResultData = { fileContent: string; tokenUsed: number };\n\n/**\n * Reads the content of a file synchronously.\n *\n * @function\n * @param relativeFilePath - The relative or absolute path to the target file.\n * @returns The entire contents of the specified file as a UTF-8 encoded string.\n */\nconst getFileContent = (relativeFilePath: string): string => {\n const absolutePath = join(__dirname, relativeFilePath);\n const fileContent = readFileSync(absolutePath, 'utf-8');\n return fileContent;\n};\n\n// The prompt template to send to ChatGPT, requesting an audit of content declaration files.\nconst CHAT_GPT_PROMPT = getFileContent('./PROMPT.md');\n\n/**\n * Audits a content declaration file by constructing a prompt for ChatGPT.\n * The prompt includes details about the project's locales, file paths of content declarations,\n * and requests for identifying issues or inconsistencies. It prints the prompt for each file,\n * and could be adapted to send requests to the ChatGPT model.\n *\n */\nexport const auditDictionaryMetadata = async ({\n model,\n openAiApiKey,\n temperature,\n customPrompt,\n tags,\n fileContent,\n}: AuditOptions): Promise<AuditFileResultData | undefined> => {\n try {\n // Optionally, you could initialize and configure the OpenAI client here, if you intend to make API calls.\n // Uncomment and configure the following lines if you have `openai` installed and want to call the API:\n\n const openai = new OpenAI({\n apiKey: openAiApiKey ?? process.env.OPENAI_API_KEY,\n });\n\n // Prepare the prompt for ChatGPT by replacing placeholders with actual values.\n const prompt =\n customPrompt ??\n CHAT_GPT_PROMPT.replace(\n '{{tags}}',\n `${JSON.stringify(\n tags\n .map(({ key, description }) => `- ${key}: ${description}`)\n .join('\\n\\n'),\n null,\n 2\n )}`\n ).replace('{{contentDeclaration}}', fileContent);\n\n // Example of how you might request a completion from ChatGPT:\n const chatCompletion = await openai.chat.completions.create({\n model: openAiApiKey\n ? (model ?? 'gpt-4o-2024-11-20')\n : 'gpt-4o-2024-11-20',\n temperature: openAiApiKey ? (temperature ?? 0.1) : 0.1,\n messages: [{ role: 'system', content: prompt }],\n });\n\n const newContent = chatCompletion.choices[0].message?.content;\n\n logger.info(\n `${chatCompletion.usage?.total_tokens} tokens used in the request`\n );\n\n return {\n fileContent: newContent ?? '',\n tokenUsed: chatCompletion.usage?.total_tokens ?? 0,\n };\n } catch (error) {\n console.error(error);\n }\n};\n"],"mappings":"AACA,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,SAAS,cAAc;AACvB,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAE9B,MAAM,YAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AAsBxD,MAAM,iBAAiB,CAAC,qBAAqC;AAC3D,QAAM,eAAe,KAAK,WAAW,gBAAgB;AACrD,QAAM,cAAc,aAAa,cAAc,OAAO;AACtD,SAAO;AACT;AAGA,MAAM,kBAAkB,eAAe,aAAa;AAS7C,MAAM,0BAA0B,OAAO;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA8D;AAC5D,MAAI;AAIF,UAAM,SAAS,IAAI,OAAO;AAAA,MACxB,QAAQ,gBAAgB,QAAQ,IAAI;AAAA,IACtC,CAAC;AAGD,UAAM,SACJ,gBACA,gBAAgB;AAAA,MACd;AAAA,MACA,GAAG,KAAK;AAAA,QACN,KACG,IAAI,CAAC,EAAE,KAAK,YAAY,MAAM,KAAK,GAAG,KAAK,WAAW,EAAE,EACxD,KAAK,MAAM;AAAA,QACd;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH,EAAE,QAAQ,0BAA0B,WAAW;AAGjD,UAAM,iBAAiB,MAAM,OAAO,KAAK,YAAY,OAAO;AAAA,MAC1D,OAAO,eACF,SAAS,sBACV;AAAA,MACJ,aAAa,eAAgB,eAAe,MAAO;AAAA,MACnD,UAAU,CAAC,EAAE,MAAM,UAAU,SAAS,OAAO,CAAC;AAAA,IAChD,CAAC;AAED,UAAM,aAAa,eAAe,QAAQ,CAAC,EAAE,SAAS;AAEtD,WAAO;AAAA,MACL,GAAG,eAAe,OAAO,YAAY;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,aAAa,cAAc;AAAA,MAC3B,WAAW,eAAe,OAAO,gBAAgB;AAAA,IACnD;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,KAAK;AAAA,EACrB;AACF;","names":[]}
@@ -1,3 +1,4 @@
1
+ import type { Tag } from '../types/tag.types';
1
2
  import { type KeyPath } from '@intlayer/core';
2
3
  import type { ResponseWithInformation } from '../middlewares/sessionAuth.middleware';
3
4
  import * as askDocQuestionUtil from '../utils/AI/askDocQuestion/askDocQuestion';
@@ -5,7 +6,6 @@ import * as auditContentDeclarationUtil from '../utils/AI/auditDictionary';
5
6
  import { type ResponseData } from '../utils/responseData';
6
7
  import type { NextFunction, Request } from 'express';
7
8
  import type { Locales } from 'intlayer';
8
- import type { Tag } from '../types/tag.types';
9
9
  export type AuditContentDeclarationBody = {
10
10
  openAiApiKey?: string;
11
11
  customPrompt?: string;
@@ -65,6 +65,7 @@ export type AuditTagResult = ResponseData<auditContentDeclarationUtil.AuditFileR
65
65
  export declare const auditTag: (req: Request<undefined, undefined, AuditTagBody>, res: ResponseWithInformation<AuditTagResult>, _next: NextFunction) => Promise<void>;
66
66
  export type AskDocQuestionBody = {
67
67
  messages: askDocQuestionUtil.ChatCompletionRequestMessage[];
68
+ discutionId: string;
68
69
  };
69
70
  export type AskDocQuestionResult = ResponseData<askDocQuestionUtil.AskDocQuestionResult>;
70
71
  export declare const askDocQuestion: (req: Request<undefined, undefined, AskDocQuestionBody>, res: ResponseWithInformation<AskDocQuestionResult>) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ai.controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/ai.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAInF,OAAO,KAAK,kBAAkB,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,2BAA2B,MAAM,2BAA2B,CAAC;AAMzE,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,MAAM,2BAA2B,GAAG;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,6BAA6B,GACvC,YAAY,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,KAAK,OAAO,CAAC,2BAA2B,CAAC,EACzC,KAAK,uBAAuB,CAAC,6BAA6B,CAAC,EAC3D,OAAO,YAAY,KAClB,OAAO,CAAC,IAAI,CAwDd,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,kCAAkC,GAC5C,YAAY,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACvC,KAAK,OAAO,CAAC,gCAAgC,CAAC,EAC9C,KAAK,uBAAuB,CAAC,kCAAkC,CAAC,EAChE,OAAO,YAAY,KAClB,OAAO,CAAC,IAAI,CAuDd,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,qCAAqC,GAC/C,YAAY,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,+BAA+B,GAC1C,KAAK,OAAO,CAAC,mCAAmC,CAAC,EACjD,KAAK,uBAAuB,CAAC,qCAAqC,CAAC,EACnE,OAAO,YAAY,KAClB,OAAO,CAAC,IAAI,CA+Cd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,GAAG,CAAC;CACV,CAAC;AACF,MAAM,MAAM,cAAc,GACxB,YAAY,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,QAAQ,GACnB,KAAK,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,EAChD,KAAK,uBAAuB,CAAC,cAAc,CAAC,EAC5C,OAAO,YAAY,KAClB,OAAO,CAAC,IAAI,CA0Cd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,kBAAkB,CAAC,4BAA4B,EAAE,CAAC;CAC7D,CAAC;AACF,MAAM,MAAM,oBAAoB,GAC9B,YAAY,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;AAExD,eAAO,MAAM,cAAc,GACzB,KAAK,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,kBAAkB,CAAC,EACtD,KAAK,uBAAuB,CAAC,oBAAoB,CAAC,kBAgBnD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC;IAC9C,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAEH,eAAO,MAAM,YAAY,GACvB,KAAK,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC,EACpD,KAAK,uBAAuB,CAAC,oBAAoB,CAAC,kBAkCnD,CAAC"}
1
+ {"version":3,"file":"ai.controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/ai.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DiscussionModelType } from '../types/discussion.types';
2
+ export declare const DiscussionModel: DiscussionModelType;
3
+ //# sourceMappingURL=discussion.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discussion.model.d.ts","sourceRoot":"","sources":["../../../src/models/discussion.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAIhF,eAAO,MAAM,eAAe,qBAG3B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Discussion } from '../types/discussion.types';
2
+ import { Schema } from 'mongoose';
3
+ export declare const discussionSchema: Schema<Discussion, import("mongoose").Model<Discussion, any, any, any, import("mongoose").Document<unknown, any, Discussion> & Discussion & Required<{
4
+ _id: unknown;
5
+ }> & {
6
+ __v: number;
7
+ }, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, Discussion, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<Discussion>> & import("mongoose").FlatRecord<Discussion> & Required<{
8
+ _id: unknown;
9
+ }> & {
10
+ __v: number;
11
+ }>;
12
+ //# sourceMappingURL=discussion.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discussion.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/discussion.schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,eAAO,MAAM,gBAAgB;;;;;;;;EAmD5B,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Document, Model, Types } from 'mongoose';
2
+ export interface Message {
3
+ role: 'user' | 'assistant' | 'system';
4
+ content: string;
5
+ timestamp: Date;
6
+ }
7
+ export interface Discussion extends Document {
8
+ discutionId: string;
9
+ messages: Message[];
10
+ userId: Types.ObjectId;
11
+ projectId: Types.ObjectId;
12
+ organizationId: Types.ObjectId;
13
+ title?: string;
14
+ isArchived: boolean;
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ }
18
+ export interface DiscussionModelType extends Model<Discussion> {
19
+ }
20
+ //# sourceMappingURL=discussion.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discussion.types.d.ts","sourceRoot":"","sources":["../../../src/types/discussion.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;IACvB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC1B,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,UAAU,CAAC;CAE7D"}
@@ -26,6 +26,9 @@ export type AskDocQuestionResult = {
26
26
  response: string;
27
27
  relatedFiles: string[];
28
28
  };
29
+ export type AskDocQuestionOptions = {
30
+ onMessage?: (chunk: string) => void;
31
+ };
29
32
  /**
30
33
  * Handles the "Ask a question" endpoint in an Express.js route.
31
34
  * Processes user messages, retrieves relevant documents, and interacts with OpenAI's chat API to generate responses.
@@ -33,6 +36,6 @@ export type AskDocQuestionResult = {
33
36
  * @param messages - An array of chat messages from the user and assistant
34
37
  * @returns The assistant's response as a string
35
38
  */
36
- export declare const askDocQuestion: (messages: ChatCompletionRequestMessage[]) => Promise<AskDocQuestionResult>;
39
+ export declare const askDocQuestion: (messages: ChatCompletionRequestMessage[], options?: AskDocQuestionOptions) => Promise<AskDocQuestionResult>;
37
40
  export {};
38
41
  //# sourceMappingURL=askDocQuestion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"askDocQuestion.d.ts","sourceRoot":"","sources":["../../../../../src/utils/AI/askDocQuestion/askDocQuestion.ts"],"names":[],"mappings":"AAQA,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAuGF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,IAAI,CAsEvD,CAAC;AAKF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,KACZ,OAAO,CAAC,aAAa,EAAE,CAgBzB,CAAC;AAGF,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,4BA2BxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,UAAU,4BAA4B,EAAE,KACvC,OAAO,CAAC,oBAAoB,CAqD9B,CAAC"}
1
+ {"version":3,"file":"askDocQuestion.d.ts","sourceRoot":"","sources":["../../../../../src/utils/AI/askDocQuestion/askDocQuestion.ts"],"names":[],"mappings":"AAUA,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAuGF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,IAAI,CAuEvD,CAAC;AAKF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,KACZ,OAAO,CAAC,aAAa,EAAE,CAgBzB,CAAC;AAGF,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAmBF,eAAO,MAAM,UAAU,EAAE,4BAGxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,UAAU,4BAA4B,EAAE,EACxC,UAAU,qBAAqB,KAC9B,OAAO,CAAC,oBAAoB,CA6D9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/utils/AI/auditDictionaryMetadata/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAI7C,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,SAAS,CAAC;AACd,MAAM,MAAM,mBAAmB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAkB7E;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAAU,wEAO3C,YAAY,KAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CA6CxD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/utils/AI/auditDictionaryMetadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAS7C,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,SAAS,CAAC;AACd,MAAM,MAAM,mBAAmB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAkB7E;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAAU,wEAO3C,YAAY,KAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CA6CxD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/backend",
3
- "version": "5.3.13",
3
+ "version": "5.4.0",
4
4
  "private": false,
5
5
  "description": "Intlayer Backend is a an application that allow you to manage your Intlayer content and interact with the intlayer editor.",
6
6
  "keywords": [
@@ -74,7 +74,7 @@
74
74
  "uuid": "^11.1.0",
75
75
  "validator": "^13.12.0",
76
76
  "winston": "^3.17.0",
77
- "express-intlayer": "5.3.13"
77
+ "express-intlayer": "5.4.0"
78
78
  },
79
79
  "devDependencies": {
80
80
  "@types/bcrypt": "^5.0.2",
@@ -91,7 +91,7 @@
91
91
  "@types/react": "^19.0.12",
92
92
  "@types/uuid": "^10.0.0",
93
93
  "@types/validator": "^13.12.2",
94
- "esbuild-fix-imports-plugin": "^1.0.19",
94
+ "esbuild-fix-imports-plugin": "^1.0.20",
95
95
  "eslint": "^9.22.0",
96
96
  "prettier": "^3.5.0",
97
97
  "rimraf": "^6.0.1",
@@ -99,15 +99,15 @@
99
99
  "tsup": "^8.4.0",
100
100
  "tsx": "^4.19.3",
101
101
  "typescript": "^5.8.2",
102
- "@intlayer/config": "5.3.13",
103
- "@intlayer/core": "5.3.13",
104
- "@intlayer/blog": "5.3.13",
105
- "@intlayer/docs": "5.3.13",
106
- "@utils/eslint-config": "1.0.4",
107
- "intlayer": "5.3.13",
102
+ "@intlayer/config": "5.4.0",
103
+ "@intlayer/core": "5.4.0",
104
+ "@intlayer/blog": "5.4.0",
108
105
  "@utils/ts-config": "1.0.4",
109
- "@utils/ts-config-types": "1.0.4",
110
- "@utils/tsup-config": "1.0.4"
106
+ "@utils/tsup-config": "1.0.4",
107
+ "intlayer": "5.4.0",
108
+ "@intlayer/docs": "5.4.0",
109
+ "@utils/eslint-config": "1.0.4",
110
+ "@utils/ts-config-types": "1.0.4"
111
111
  },
112
112
  "scripts": {
113
113
  "build": "pnpm build:package & pnpm build:types",