@drax/ai-back 3.32.0 → 3.35.1

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 (59) hide show
  1. package/dist/config/GoogleAiConfig.js +8 -0
  2. package/dist/config/OllamaAiConfig.js +9 -0
  3. package/dist/factory/AiProviderFactory.js +12 -3
  4. package/dist/factory/GoogleAiProviderFactory.js +14 -0
  5. package/dist/factory/OllamaAiProviderFactory.js +14 -0
  6. package/dist/index.js +7 -1
  7. package/dist/providers/GoogleAiProvider.js +367 -0
  8. package/dist/providers/OllamaAiProvider.js +342 -0
  9. package/dist/tools/BuilderTool.js +9 -0
  10. package/package.json +4 -2
  11. package/src/config/GoogleAiConfig.ts +13 -0
  12. package/src/config/OllamaAiConfig.ts +14 -0
  13. package/src/factory/AiProviderFactory.ts +12 -5
  14. package/src/factory/GoogleAiProviderFactory.ts +26 -0
  15. package/src/factory/OllamaAiProviderFactory.ts +27 -0
  16. package/src/index.ts +12 -0
  17. package/src/providers/GoogleAiProvider.ts +489 -0
  18. package/src/providers/OllamaAiProvider.ts +469 -0
  19. package/src/tools/BuilderTool.ts +12 -0
  20. package/test/GoogleAiProvider.test.ts +211 -0
  21. package/test/ToolBuilder.test.ts +48 -0
  22. package/tsconfig.tsbuildinfo +1 -1
  23. package/types/config/GoogleAiConfig.d.ts +8 -0
  24. package/types/config/GoogleAiConfig.d.ts.map +1 -0
  25. package/types/config/OllamaAiConfig.d.ts +9 -0
  26. package/types/config/OllamaAiConfig.d.ts.map +1 -0
  27. package/types/factory/AiProviderFactory.d.ts.map +1 -1
  28. package/types/factory/GoogleAiProviderFactory.d.ts +8 -0
  29. package/types/factory/GoogleAiProviderFactory.d.ts.map +1 -0
  30. package/types/factory/OllamaAiProviderFactory.d.ts +8 -0
  31. package/types/factory/OllamaAiProviderFactory.d.ts.map +1 -0
  32. package/types/index.d.ts.map +1 -1
  33. package/types/providers/GoogleAiProvider.d.ts +63 -0
  34. package/types/providers/GoogleAiProvider.d.ts.map +1 -0
  35. package/types/providers/OllamaAiProvider.d.ts +78 -0
  36. package/types/providers/OllamaAiProvider.d.ts.map +1 -0
  37. package/types/tools/BuilderTool.d.ts.map +1 -1
  38. package/.env +0 -4
  39. package/dist/agents/ChatbotTaskService.js +0 -143
  40. package/dist/agents/ChatbotTaskTools.js +0 -756
  41. package/dist/controllers/AIController.js +0 -150
  42. package/dist/interfaces/IAILog.js +0 -1
  43. package/dist/routes/ChatbotTaskRoutes.js +0 -8
  44. package/dist/tools/ToolBuilder.js +0 -243
  45. package/dist/vectors/ChromaVector.js +0 -65
  46. package/types/agents/ChatbotTaskService.d.ts +0 -42
  47. package/types/agents/ChatbotTaskService.d.ts.map +0 -1
  48. package/types/agents/ChatbotTaskTools.d.ts +0 -54
  49. package/types/agents/ChatbotTaskTools.d.ts.map +0 -1
  50. package/types/controllers/AIController.d.ts +0 -25
  51. package/types/controllers/AIController.d.ts.map +0 -1
  52. package/types/interfaces/IAILog.d.ts +0 -77
  53. package/types/interfaces/IAILog.d.ts.map +0 -1
  54. package/types/routes/ChatbotTaskRoutes.d.ts +0 -4
  55. package/types/routes/ChatbotTaskRoutes.d.ts.map +0 -1
  56. package/types/tools/ToolBuilder.d.ts +0 -47
  57. package/types/tools/ToolBuilder.d.ts.map +0 -1
  58. package/types/vectors/ChromaVector.d.ts +0 -21
  59. package/types/vectors/ChromaVector.d.ts.map +0 -1
@@ -0,0 +1,8 @@
1
+ declare enum GoogleAiConfig {
2
+ GoogleAiApiKey = "GOOGLE_AI_API_KEY",
3
+ GoogleAiModel = "GOOGLE_AI_MODEL",
4
+ GoogleAiVisionModel = "GOOGLE_AI_VISION_MODEL"
5
+ }
6
+ export default GoogleAiConfig;
7
+ export { GoogleAiConfig };
8
+ //# sourceMappingURL=GoogleAiConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleAiConfig.d.ts","sourceRoot":"","sources":["../../src/config/GoogleAiConfig.ts"],"names":[],"mappings":"AACA,aAAK,cAAc;IAEf,cAAc,sBAAsB;IACpC,aAAa,oBAAoB;IACjC,mBAAmB,2BAA2B;CAEjD;AAGD,eAAe,cAAc,CAAC;AAE9B,OAAO,EAAC,cAAc,EAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ declare enum OllamaAiConfig {
2
+ OllamaAiBaseUrl = "OLLAMA_AI_BASE_URL",
3
+ OllamaAiModel = "OLLAMA_AI_MODEL",
4
+ OllamaAiVisionModel = "OLLAMA_AI_VISION_MODEL",
5
+ OllamaAiEmbeddingModel = "OLLAMA_AI_EMBEDDING_MODEL"
6
+ }
7
+ export default OllamaAiConfig;
8
+ export { OllamaAiConfig };
9
+ //# sourceMappingURL=OllamaAiConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OllamaAiConfig.d.ts","sourceRoot":"","sources":["../../src/config/OllamaAiConfig.ts"],"names":[],"mappings":"AACA,aAAK,cAAc;IAEf,eAAe,uBAAuB;IACtC,aAAa,oBAAoB;IACjC,mBAAmB,2BAA2B;IAC9C,sBAAsB,8BAA8B;CAEvD;AAGD,eAAe,cAAc,CAAC;AAE9B,OAAO,EAAC,cAAc,EAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AiProviderFactory.d.ts","sourceRoot":"","sources":["../../src/factory/AiProviderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAG1D,cAAM,iBAAiB;IACnB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAc;WAExB,QAAQ,CAAC,QAAQ,GAAE,MAAiB,GAAG,WAAW;CAYnE;AAED,eAAe,iBAAiB,CAAA;AAChC,OAAO,EACH,iBAAiB,EACpB,CAAA"}
1
+ {"version":3,"file":"AiProviderFactory.d.ts","sourceRoot":"","sources":["../../src/factory/AiProviderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAK1D,cAAM,iBAAiB;IACnB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAmC;WAE9C,QAAQ,CAAC,QAAQ,GAAE,MAAiB,GAAG,WAAW;CAkBnE;AAED,eAAe,iBAAiB,CAAA;AAChC,OAAO,EACH,iBAAiB,EACpB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { IAIProvider } from "../interfaces/IAIProvider";
2
+ declare class GoogleAiProviderFactory {
3
+ private static singleton;
4
+ static instance(): IAIProvider;
5
+ }
6
+ export default GoogleAiProviderFactory;
7
+ export { GoogleAiProviderFactory };
8
+ //# sourceMappingURL=GoogleAiProviderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleAiProviderFactory.d.ts","sourceRoot":"","sources":["../../src/factory/GoogleAiProviderFactory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAI1D,cAAM,uBAAuB;IACzB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAc;WAExB,QAAQ,IAAI,WAAW;CAWxC;AAED,eAAe,uBAAuB,CAAA;AACtC,OAAO,EACH,uBAAuB,EAC1B,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { IAIProvider } from "../interfaces/IAIProvider";
2
+ declare class OllamaAiProviderFactory {
3
+ private static singleton;
4
+ static instance(): IAIProvider;
5
+ }
6
+ export default OllamaAiProviderFactory;
7
+ export { OllamaAiProviderFactory };
8
+ //# sourceMappingURL=OllamaAiProviderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OllamaAiProviderFactory.d.ts","sourceRoot":"","sources":["../../src/factory/OllamaAiProviderFactory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAI1D,cAAM,uBAAuB;IACzB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAc;WAExB,QAAQ,IAAI,WAAW;CAYxC;AAED,eAAe,uBAAuB,CAAA;AACtC,OAAO,EACH,uBAAuB,EAC1B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { GoogleGenAI } from "@google/genai";
2
+ import type { Content, FunctionCall, FunctionDeclaration, GenerateContentConfig, Part } from "@google/genai";
3
+ import type { IAIProvider, IPromptContentPart, IPromptMessage, IPromptParams, IPromptResponse, IPromptTool } from "../interfaces/IAIProvider";
4
+ import type { AILogService } from "../services/AILogService";
5
+ import type { IAILogBase } from "@drax/ai-share";
6
+ declare class GoogleAiProvider implements IAIProvider {
7
+ protected _apiKey: string;
8
+ protected _model: any;
9
+ protected _visionModel?: string;
10
+ protected _client: GoogleGenAI | undefined;
11
+ protected _aiLogService?: AILogService;
12
+ constructor(apiKey: string, model: string, visionModel?: string, aiLogService?: AILogService);
13
+ get model(): any;
14
+ get client(): GoogleGenAI;
15
+ protected get visionModel(): string;
16
+ protected buildUserContent(input: IPromptParams): Part[];
17
+ protected mapContentParts(content: IPromptContentPart[]): Part[];
18
+ protected mapImageUrl(url: string): Part;
19
+ protected inferImageMimeType(url: string): "image/png" | "image/webp" | "image/gif" | "image/bmp" | "image/heic" | "image/heif" | "image/jpeg";
20
+ protected mapHistory(history?: IPromptMessage[]): Content[];
21
+ protected hasImageInput(input: IPromptParams): boolean;
22
+ protected serializePromptInput(input: IPromptParams, systemPrompt: string): string;
23
+ protected serializePromptOutput(output: unknown): string;
24
+ protected buildLogPayload(input: IPromptParams, params: {
25
+ model: string;
26
+ systemPrompt: string;
27
+ startedAt: Date;
28
+ endedAt?: Date;
29
+ inputTokens?: number;
30
+ outputTokens?: number;
31
+ tokens?: number;
32
+ output?: unknown;
33
+ success: boolean;
34
+ errorMessage?: string;
35
+ }): IAILogBase;
36
+ protected registerPromptLog(input: IPromptParams, params: {
37
+ model: string;
38
+ systemPrompt: string;
39
+ startedAt: Date;
40
+ endedAt?: Date;
41
+ inputTokens?: number;
42
+ outputTokens?: number;
43
+ tokens?: number;
44
+ output?: unknown;
45
+ success: boolean;
46
+ errorMessage?: string;
47
+ }): Promise<void>;
48
+ generateEmbedding({ text, model }: {
49
+ text: string;
50
+ model?: string;
51
+ }): Promise<number[]>;
52
+ protected mapTools(tools?: IPromptTool[]): Array<{
53
+ functionDeclarations: FunctionDeclaration[];
54
+ }>;
55
+ protected buildResponseConfig(input: IPromptParams, systemPrompt: string): GenerateContentConfig;
56
+ protected normalizeResponseJsonSchema(input: IPromptParams): any;
57
+ protected buildToolResponseParts(functionCalls?: FunctionCall[], tools?: IPromptTool[]): Promise<Part[]>;
58
+ protected buildModelFunctionCallContent(functionCalls?: FunctionCall[]): Content;
59
+ prompt(input: IPromptParams): Promise<IPromptResponse>;
60
+ }
61
+ export default GoogleAiProvider;
62
+ export { GoogleAiProvider };
63
+ //# sourceMappingURL=GoogleAiProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleAiProvider.d.ts","sourceRoot":"","sources":["../../src/providers/GoogleAiProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import type { IAIProvider, IPromptContentPart, IPromptMessage, IPromptParams, IPromptResponse, IPromptTool } from "../interfaces/IAIProvider";
2
+ import type { AILogService } from "../services/AILogService";
3
+ import type { IAILogBase } from "@drax/ai-share";
4
+ type OllamaMessage = {
5
+ role: "system" | "user" | "assistant" | "tool";
6
+ content: string;
7
+ images?: string[];
8
+ name?: string;
9
+ };
10
+ type OllamaToolCall = {
11
+ function?: {
12
+ name?: string;
13
+ arguments?: string | object;
14
+ };
15
+ };
16
+ declare class OllamaAiProvider implements IAIProvider {
17
+ protected _baseUrl: string;
18
+ protected _model: string;
19
+ protected _visionModel?: string;
20
+ protected _embeddingModel?: string;
21
+ protected _aiLogService?: AILogService;
22
+ constructor(baseUrl: string, model: string, visionModel?: string, embeddingModel?: string, aiLogService?: AILogService);
23
+ get model(): string;
24
+ protected get visionModel(): string;
25
+ protected get embeddingModel(): string;
26
+ protected post<T>(path: string, body: object): Promise<T>;
27
+ protected buildUserMessage(input: IPromptParams): Promise<OllamaMessage>;
28
+ protected mapContentPartsToMessage(content: IPromptContentPart[], role?: "user" | "assistant" | "system"): Promise<OllamaMessage>;
29
+ protected imageUrlToBase64(url: string): Promise<string>;
30
+ protected mapHistory(history?: IPromptMessage[]): Promise<OllamaMessage[]>;
31
+ protected hasImageInput(input: IPromptParams): boolean;
32
+ protected serializePromptInput(input: IPromptParams, systemPrompt: string): string;
33
+ protected serializePromptOutput(output: unknown): string;
34
+ protected buildLogPayload(input: IPromptParams, params: {
35
+ model: string;
36
+ systemPrompt: string;
37
+ startedAt: Date;
38
+ endedAt?: Date;
39
+ inputTokens?: number;
40
+ outputTokens?: number;
41
+ tokens?: number;
42
+ output?: unknown;
43
+ success: boolean;
44
+ errorMessage?: string;
45
+ }): IAILogBase;
46
+ protected registerPromptLog(input: IPromptParams, params: {
47
+ model: string;
48
+ systemPrompt: string;
49
+ startedAt: Date;
50
+ endedAt?: Date;
51
+ inputTokens?: number;
52
+ outputTokens?: number;
53
+ tokens?: number;
54
+ output?: unknown;
55
+ success: boolean;
56
+ errorMessage?: string;
57
+ }): Promise<void>;
58
+ generateEmbedding({ text, model }: {
59
+ text: string;
60
+ model?: string;
61
+ }): Promise<number[]>;
62
+ protected mapTools(tools?: IPromptTool[]): {
63
+ type: string;
64
+ function: {
65
+ name: string;
66
+ description: string;
67
+ parameters: object;
68
+ };
69
+ }[];
70
+ protected normalizeResponseFormat(input: IPromptParams): any;
71
+ protected parseToolArguments(args: string | object | undefined): any;
72
+ protected serializeToolOutput(output: unknown): string;
73
+ protected buildToolMessages(toolCalls?: OllamaToolCall[], tools?: IPromptTool[]): Promise<OllamaMessage[]>;
74
+ prompt(input: IPromptParams): Promise<IPromptResponse>;
75
+ }
76
+ export default OllamaAiProvider;
77
+ export { OllamaAiProvider };
78
+ //# sourceMappingURL=OllamaAiProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OllamaAiProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OllamaAiProvider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BuilderTool.d.ts","sourceRoot":"","sources":["../../src/tools/BuilderTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAC,MAAM,KAAK,CAAC;AACzE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EACR,iBAAiB,EACjB,kBAAkB,EAGrB,MAAM,+BAA+B,CAAC;AA2JvC,cAAM,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;IAK3B,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAJ1D,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,mBAAmB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACtD,SAAS,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;gBAE3B,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAM1D,IAAI,WAAW;;uBAEd;IAED,IAAI,kBAAkB;;uBAErB;IAED,IAAI,YAAY;;uBAEf;IAED,QAAQ,IAAI,WAAW,EAAE;IAIzB,sBAAsB,IAAI,MAAM;IAsBhC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC;;;IAI/C,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW;IAqB3D,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,iBAAiB;IAI/C,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC;;;IAIrD,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAIrD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU;IA2BlD,SAAS,CAAC,aAAa,CAAC,IAAI,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI;CAUnF;AAED,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAC,WAAW,EAAC,CAAC"}
1
+ {"version":3,"file":"BuilderTool.d.ts","sourceRoot":"","sources":["../../src/tools/BuilderTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAC,MAAM,KAAK,CAAC;AACzE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EACR,iBAAiB,EACjB,kBAAkB,EAGrB,MAAM,+BAA+B,CAAC;AA2JvC,cAAM,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;IAK3B,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAJ1D,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,mBAAmB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACtD,SAAS,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;gBAE3B,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAM1D,IAAI,WAAW;;uBAEd;IAED,IAAI,kBAAkB;;uBAErB;IAED,IAAI,YAAY;;uBAEf;IAED,QAAQ,IAAI,WAAW,EAAE;IAIzB,sBAAsB,IAAI,MAAM;IAsBhC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC;;;IAI/C,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW;IAqB3D,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,iBAAiB;IAI/C,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC;;;IAIrD,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAIrD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU;IAuClD,SAAS,CAAC,aAAa,CAAC,IAAI,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI;CAUnF;AAED,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAC,WAAW,EAAC,CAAC"}
package/.env DELETED
@@ -1,4 +0,0 @@
1
- #IA
2
- OPENAI_API_KEY=sk-svcacct-Jm8f5uVnoe2Jl71Hux1vslYU3w0roJyGiV-itniyrDVw191uhGcSHgTh0O59VGAT3BlbkFJaeneUjBAPPC4pMQIVmeTL98U6cp0vnIR-wugCX-wGxxqpjB2vVRj4GRz3sjpkLQA
3
- OPENAI_MODEL=gpt-5.4
4
- OPENAI_VISION_MODEL=gpt-5.4
@@ -1,143 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { AiProviderFactory } from "@drax/ai-back";
3
- import ChatbotTaskTools from "../tools/ChatbotTaskTools.js";
4
- class ChatbotTaskService {
5
- constructor() {
6
- this.sessions = new Map();
7
- }
8
- startSession(userId) {
9
- return this.createSession(userId);
10
- }
11
- createSession(userId, sessionId = randomUUID()) {
12
- const session = {
13
- id: sessionId,
14
- userId,
15
- messages: [],
16
- createdAt: new Date(),
17
- updatedAt: new Date(),
18
- };
19
- this.sessions.set(this.getSessionKey(userId, session.id), session);
20
- return session;
21
- }
22
- async sendMessage(input) {
23
- const session = this.resolveSession(input.userId, input.sessionId);
24
- const provider = AiProviderFactory.instance();
25
- const history = session.messages.slice(-20);
26
- const optionNames = await ChatbotTaskTools.fetchLifeOpsOptionNames();
27
- const tools = this.withToolExecutionLogs(ChatbotTaskTools.build({ userId: input.userId }), session.id);
28
- const response = await provider.prompt({
29
- systemPrompt: this.systemPrompt(optionNames),
30
- userInput: input.message,
31
- history,
32
- tools,
33
- toolMaxIterations: 10,
34
- operationTitle: "lifeops-task-chatbot",
35
- operationGroup: "lifeops",
36
- ip: input.ip,
37
- userAgent: input.userAgent,
38
- tenant: input.tenantId ?? null,
39
- user: input.userId,
40
- });
41
- const assistantMessage = this.normalizeOutput(response.output);
42
- session.messages.push({ role: "user", content: input.message });
43
- session.messages.push({ role: "assistant", content: assistantMessage });
44
- session.updatedAt = new Date();
45
- return {
46
- sessionId: session.id,
47
- message: assistantMessage,
48
- };
49
- }
50
- resolveSession(userId, sessionId) {
51
- if (!sessionId) {
52
- return this.startSession(userId);
53
- }
54
- const existingSession = this.sessions.get(this.getSessionKey(userId, sessionId));
55
- if (existingSession) {
56
- return existingSession;
57
- }
58
- return this.createSession(userId, sessionId);
59
- }
60
- getSessionKey(userId, sessionId) {
61
- return `${userId}:${sessionId}`;
62
- }
63
- normalizeOutput(output) {
64
- if (typeof output === "string") {
65
- return output;
66
- }
67
- if (output?.message && typeof output.message === "string") {
68
- return output.message;
69
- }
70
- return JSON.stringify(output);
71
- }
72
- withToolExecutionLogs(tools, sessionId) {
73
- return tools.map(tool => ({
74
- ...tool,
75
- execute: async (args) => {
76
- console.log("[lifeops-task-chatbot] tool:start", {
77
- sessionId,
78
- tool: tool.name,
79
- args,
80
- });
81
- try {
82
- const result = await tool.execute(args);
83
- console.log("[lifeops-task-chatbot] tool:success", {
84
- sessionId,
85
- tool: tool.name,
86
- });
87
- return result;
88
- }
89
- catch (error) {
90
- console.error("[lifeops-task-chatbot] tool:error", {
91
- sessionId,
92
- tool: tool.name,
93
- error,
94
- });
95
- throw error;
96
- }
97
- },
98
- }));
99
- }
100
- systemPrompt(optionNames) {
101
- return [
102
- "Sos un asistente de LifeOps especializado en gestionar tareas, objetivos, proyectos, contactos, clientes y empresas.",
103
- "Conversas en espanol claro y breve.",
104
- "Cuando el usuario pida registrar, crear, guardar o agendar una tarea, usa la tool register_task.",
105
- "Cuando el usuario pida buscar tareas por texto, usa search_tasks. Si pide una tarea puntual por ID, usa find_task_by_id.",
106
- "Cuando el usuario pida cantidad de tareas agrupadas, metricas, distribuciones o totales por atributos como status, priority, source, type, fechas, proyecto, cliente o minutos, usa group_tasks.",
107
- "Cuando el usuario pida modificar una tarea existente, primero identifica el ID y usa update_task_partial.",
108
- "Cuando el usuario pida crear objetivos, proyectos, contactos, clientes o empresas, usa create_goal, create_project, create_contact, create_client o create_company.",
109
- "Cuando el usuario pida buscar objetivos, proyectos, contactos, clientes o empresas por texto, usa search_goals, search_projects, search_contacts, search_clients o search_companies. Si pide una entidad puntual por ID, usa find_goal_by_id, find_project_by_id, find_contact_by_id, find_client_by_id o find_company_by_id.",
110
- "Cuando el usuario pida modificar parcialmente objetivos, proyectos, contactos, clientes o empresas existentes, primero identifica el ID y usa update_goal_partial, update_project_partial, update_contact_partial, update_client_partial o update_company_partial.",
111
- "Para registrar o modificar tareas, elegi source, status, type y priority solo desde estas opciones disponibles por nombre:",
112
- this.formatTaskOptionNames(optionNames.task),
113
- "No llames list_task_options antes de registrar o modificar una tarea cuando puedas elegir una opcion desde la lista anterior.",
114
- "Si el usuario pide una opcion de source, status, type o priority que no existe, podes crearla con create_task_source, create_task_status, create_task_type o create_priority.",
115
- "Para crear o modificar contactos, empresas o clientes, elegi type solo desde estas opciones disponibles por nombre:",
116
- this.formatEntityTypeOptionNames(optionNames.entityTypes),
117
- "No inventes IDs de empresas, clientes, contactos, proyectos u objetivos relacionados. Buscalos primero con la tool correspondiente; si no existen y el usuario quiere crearlos, crealos antes de usarlos como relacion.",
118
- "Si faltan datos minimos para crear la tarea, inferi un titulo razonable desde el mensaje del usuario.",
119
- "Si faltan datos minimos para crear una entidad, pedi solo los datos imprescindibles que no puedas inferir.",
120
- "Despues de registrar, encontrar o modificar una entidad, confirma el resultado y resume los campos relevantes.",
121
- ].join("\n");
122
- }
123
- formatTaskOptionNames(taskOptionNames) {
124
- return [
125
- `- source: ${this.formatOptionList(taskOptionNames.sources)}`,
126
- `- status: ${this.formatOptionList(taskOptionNames.statuses)}`,
127
- `- type: ${this.formatOptionList(taskOptionNames.types)}`,
128
- `- priority: ${this.formatOptionList(taskOptionNames.priorities)}`,
129
- ].join("\n");
130
- }
131
- formatEntityTypeOptionNames(entityTypeOptionNames) {
132
- return [
133
- `- contact.type: ${this.formatOptionList(entityTypeOptionNames.contactTypes)}`,
134
- `- company.type: ${this.formatOptionList(entityTypeOptionNames.companyTypes)}`,
135
- `- client.type: ${this.formatOptionList(entityTypeOptionNames.clientTypes)}`,
136
- ].join("\n");
137
- }
138
- formatOptionList(options) {
139
- return options.length > 0 ? options.join(", ") : "(sin opciones disponibles)";
140
- }
141
- }
142
- export default ChatbotTaskService;
143
- export { ChatbotTaskService };