@mtkn/mega-agent 0.1.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/artifact/artifact.repository.d.ts +17 -0
- package/dist/artifact/artifact.repository.d.ts.map +1 -0
- package/dist/artifact/artifact.repository.js +66 -0
- package/dist/artifact/artifact.repository.js.map +1 -0
- package/dist/artifact/artifact.service.d.ts +22 -0
- package/dist/artifact/artifact.service.d.ts.map +1 -0
- package/dist/artifact/artifact.service.js +87 -0
- package/dist/artifact/artifact.service.js.map +1 -0
- package/dist/artifact/artifact.types.d.ts +41 -0
- package/dist/artifact/artifact.types.d.ts.map +1 -0
- package/dist/artifact/artifact.types.js +6 -0
- package/dist/artifact/artifact.types.js.map +1 -0
- package/dist/artifact/index.d.ts +6 -0
- package/dist/artifact/index.d.ts.map +1 -0
- package/dist/artifact/index.js +4 -0
- package/dist/artifact/index.js.map +1 -0
- package/dist/chat/chat-memory.integration.d.ts +59 -0
- package/dist/chat/chat-memory.integration.d.ts.map +1 -0
- package/dist/chat/chat-memory.integration.js +148 -0
- package/dist/chat/chat-memory.integration.js.map +1 -0
- package/dist/chat/chat.repository.d.ts +58 -0
- package/dist/chat/chat.repository.d.ts.map +1 -0
- package/dist/chat/chat.repository.js +128 -0
- package/dist/chat/chat.repository.js.map +1 -0
- package/dist/chat/chat.service.d.ts +28 -0
- package/dist/chat/chat.service.d.ts.map +1 -0
- package/dist/chat/chat.service.js +217 -0
- package/dist/chat/chat.service.js.map +1 -0
- package/dist/chat/chat.types.d.ts +198 -0
- package/dist/chat/chat.types.d.ts.map +1 -0
- package/dist/chat/chat.types.js +8 -0
- package/dist/chat/chat.types.js.map +1 -0
- package/dist/chat/index.d.ts +17 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +16 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/memory-detector.d.ts +53 -0
- package/dist/chat/memory-detector.d.ts.map +1 -0
- package/dist/chat/memory-detector.js +172 -0
- package/dist/chat/memory-detector.js.map +1 -0
- package/dist/chat/prompts/index.d.ts +6 -0
- package/dist/chat/prompts/index.d.ts.map +1 -0
- package/dist/chat/prompts/index.js +6 -0
- package/dist/chat/prompts/index.js.map +1 -0
- package/dist/chat/prompts/system.prompts.d.ts +23 -0
- package/dist/chat/prompts/system.prompts.d.ts.map +1 -0
- package/dist/chat/prompts/system.prompts.js +102 -0
- package/dist/chat/prompts/system.prompts.js.map +1 -0
- package/dist/chat/response-parser.d.ts +24 -0
- package/dist/chat/response-parser.d.ts.map +1 -0
- package/dist/chat/response-parser.js +198 -0
- package/dist/chat/response-parser.js.map +1 -0
- package/dist/chat/response.types.d.ts +90 -0
- package/dist/chat/response.types.d.ts.map +1 -0
- package/dist/chat/response.types.js +6 -0
- package/dist/chat/response.types.js.map +1 -0
- package/dist/common/errors.d.ts +60 -0
- package/dist/common/errors.d.ts.map +1 -0
- package/dist/common/errors.js +105 -0
- package/dist/common/errors.js.map +1 -0
- package/dist/common/index.d.ts +3 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +3 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/retry.d.ts +23 -0
- package/dist/common/retry.d.ts.map +1 -0
- package/dist/common/retry.js +57 -0
- package/dist/common/retry.js.map +1 -0
- package/dist/create-mega-agent.d.ts +100 -0
- package/dist/create-mega-agent.d.ts.map +1 -0
- package/dist/create-mega-agent.js +153 -0
- package/dist/create-mega-agent.js.map +1 -0
- package/dist/embedding/embedding.service.d.ts +34 -0
- package/dist/embedding/embedding.service.d.ts.map +1 -0
- package/dist/embedding/embedding.service.js +68 -0
- package/dist/embedding/embedding.service.js.map +1 -0
- package/dist/embedding/embedding.types.d.ts +38 -0
- package/dist/embedding/embedding.types.d.ts.map +1 -0
- package/dist/embedding/embedding.types.js +6 -0
- package/dist/embedding/embedding.types.js.map +1 -0
- package/dist/embedding/index.d.ts +9 -0
- package/dist/embedding/index.d.ts.map +1 -0
- package/dist/embedding/index.js +9 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/providers/base.provider.d.ts +29 -0
- package/dist/embedding/providers/base.provider.d.ts.map +1 -0
- package/dist/embedding/providers/base.provider.js +19 -0
- package/dist/embedding/providers/base.provider.js.map +1 -0
- package/dist/embedding/providers/index.d.ts +7 -0
- package/dist/embedding/providers/index.d.ts.map +1 -0
- package/dist/embedding/providers/index.js +7 -0
- package/dist/embedding/providers/index.js.map +1 -0
- package/dist/embedding/providers/openai.provider.d.ts +17 -0
- package/dist/embedding/providers/openai.provider.d.ts.map +1 -0
- package/dist/embedding/providers/openai.provider.js +73 -0
- package/dist/embedding/providers/openai.provider.js.map +1 -0
- package/dist/http/chat.controller.d.ts +30 -0
- package/dist/http/chat.controller.d.ts.map +1 -0
- package/dist/http/chat.controller.js +163 -0
- package/dist/http/chat.controller.js.map +1 -0
- package/dist/http/chat.routes.d.ts +5 -0
- package/dist/http/chat.routes.d.ts.map +1 -0
- package/dist/http/chat.routes.js +38 -0
- package/dist/http/chat.routes.js.map +1 -0
- package/dist/http/chat.validation.d.ts +70 -0
- package/dist/http/chat.validation.d.ts.map +1 -0
- package/dist/http/chat.validation.js +28 -0
- package/dist/http/chat.validation.js.map +1 -0
- package/dist/incident/incident.correlator.d.ts +39 -0
- package/dist/incident/incident.correlator.d.ts.map +1 -0
- package/dist/incident/incident.correlator.js +129 -0
- package/dist/incident/incident.correlator.js.map +1 -0
- package/dist/incident/incident.detector.d.ts +62 -0
- package/dist/incident/incident.detector.d.ts.map +1 -0
- package/dist/incident/incident.detector.js +192 -0
- package/dist/incident/incident.detector.js.map +1 -0
- package/dist/incident/incident.repository.d.ts +79 -0
- package/dist/incident/incident.repository.d.ts.map +1 -0
- package/dist/incident/incident.repository.js +216 -0
- package/dist/incident/incident.repository.js.map +1 -0
- package/dist/incident/incident.service.d.ts +71 -0
- package/dist/incident/incident.service.d.ts.map +1 -0
- package/dist/incident/incident.service.js +217 -0
- package/dist/incident/incident.service.js.map +1 -0
- package/dist/incident/incident.types.d.ts +115 -0
- package/dist/incident/incident.types.d.ts.map +1 -0
- package/dist/incident/incident.types.js +6 -0
- package/dist/incident/incident.types.js.map +1 -0
- package/dist/incident/index.d.ts +13 -0
- package/dist/incident/index.d.ts.map +1 -0
- package/dist/incident/index.js +13 -0
- package/dist/incident/index.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/index.d.ts +8 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +9 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/llm.service.d.ts +52 -0
- package/dist/llm/llm.service.d.ts.map +1 -0
- package/dist/llm/llm.service.js +141 -0
- package/dist/llm/llm.service.js.map +1 -0
- package/dist/llm/llm.types.d.ts +77 -0
- package/dist/llm/llm.types.d.ts.map +1 -0
- package/dist/llm/llm.types.js +5 -0
- package/dist/llm/llm.types.js.map +1 -0
- package/dist/llm/providers/anthropic.provider.d.ts +16 -0
- package/dist/llm/providers/anthropic.provider.d.ts.map +1 -0
- package/dist/llm/providers/anthropic.provider.js +118 -0
- package/dist/llm/providers/anthropic.provider.js.map +1 -0
- package/dist/llm/providers/base.provider.d.ts +17 -0
- package/dist/llm/providers/base.provider.d.ts.map +1 -0
- package/dist/llm/providers/base.provider.js +18 -0
- package/dist/llm/providers/base.provider.js.map +1 -0
- package/dist/llm/providers/custom.provider.d.ts +15 -0
- package/dist/llm/providers/custom.provider.d.ts.map +1 -0
- package/dist/llm/providers/custom.provider.js +110 -0
- package/dist/llm/providers/custom.provider.js.map +1 -0
- package/dist/llm/providers/gemini.provider.d.ts +19 -0
- package/dist/llm/providers/gemini.provider.d.ts.map +1 -0
- package/dist/llm/providers/gemini.provider.js +98 -0
- package/dist/llm/providers/gemini.provider.js.map +1 -0
- package/dist/llm/providers/index.d.ts +10 -0
- package/dist/llm/providers/index.d.ts.map +1 -0
- package/dist/llm/providers/index.js +10 -0
- package/dist/llm/providers/index.js.map +1 -0
- package/dist/llm/providers/openai.provider.d.ts +15 -0
- package/dist/llm/providers/openai.provider.d.ts.map +1 -0
- package/dist/llm/providers/openai.provider.js +57 -0
- package/dist/llm/providers/openai.provider.js.map +1 -0
- package/dist/mcp/index.d.ts +13 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcp.client.d.ts +57 -0
- package/dist/mcp/mcp.client.d.ts.map +1 -0
- package/dist/mcp/mcp.client.js +150 -0
- package/dist/mcp/mcp.client.js.map +1 -0
- package/dist/mcp/mcp.service.d.ts +64 -0
- package/dist/mcp/mcp.service.d.ts.map +1 -0
- package/dist/mcp/mcp.service.js +207 -0
- package/dist/mcp/mcp.service.js.map +1 -0
- package/dist/mcp/mcp.types.d.ts +142 -0
- package/dist/mcp/mcp.types.d.ts.map +1 -0
- package/dist/mcp/mcp.types.js +6 -0
- package/dist/mcp/mcp.types.js.map +1 -0
- package/dist/mcp/presets/common-sources.d.ts +28 -0
- package/dist/mcp/presets/common-sources.d.ts.map +1 -0
- package/dist/mcp/presets/common-sources.js +114 -0
- package/dist/mcp/presets/common-sources.js.map +1 -0
- package/dist/mcp/presets/index.d.ts +5 -0
- package/dist/mcp/presets/index.d.ts.map +1 -0
- package/dist/mcp/presets/index.js +5 -0
- package/dist/mcp/presets/index.js.map +1 -0
- package/dist/mcp/source.repository.d.ts +68 -0
- package/dist/mcp/source.repository.d.ts.map +1 -0
- package/dist/mcp/source.repository.js +114 -0
- package/dist/mcp/source.repository.js.map +1 -0
- package/dist/mcp/source.service.d.ts +74 -0
- package/dist/mcp/source.service.d.ts.map +1 -0
- package/dist/mcp/source.service.js +181 -0
- package/dist/mcp/source.service.js.map +1 -0
- package/dist/mcp/transports/http.transport.d.ts +45 -0
- package/dist/mcp/transports/http.transport.d.ts.map +1 -0
- package/dist/mcp/transports/http.transport.js +64 -0
- package/dist/mcp/transports/http.transport.js.map +1 -0
- package/dist/mcp/transports/index.d.ts +7 -0
- package/dist/mcp/transports/index.d.ts.map +1 -0
- package/dist/mcp/transports/index.js +7 -0
- package/dist/mcp/transports/index.js.map +1 -0
- package/dist/mcp/transports/stdio.transport.d.ts +21 -0
- package/dist/mcp/transports/stdio.transport.d.ts.map +1 -0
- package/dist/mcp/transports/stdio.transport.js +29 -0
- package/dist/mcp/transports/stdio.transport.js.map +1 -0
- package/dist/memory/index.d.ts +10 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +10 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory.repository.d.ts +62 -0
- package/dist/memory/memory.repository.d.ts.map +1 -0
- package/dist/memory/memory.repository.js +148 -0
- package/dist/memory/memory.repository.js.map +1 -0
- package/dist/memory/memory.service.d.ts +63 -0
- package/dist/memory/memory.service.d.ts.map +1 -0
- package/dist/memory/memory.service.js +263 -0
- package/dist/memory/memory.service.js.map +1 -0
- package/dist/memory/memory.types.d.ts +104 -0
- package/dist/memory/memory.types.d.ts.map +1 -0
- package/dist/memory/memory.types.js +8 -0
- package/dist/memory/memory.types.js.map +1 -0
- package/dist/qdrant/index.d.ts +8 -0
- package/dist/qdrant/index.d.ts.map +1 -0
- package/dist/qdrant/index.js +6 -0
- package/dist/qdrant/index.js.map +1 -0
- package/dist/qdrant/qdrant.service.d.ts +63 -0
- package/dist/qdrant/qdrant.service.d.ts.map +1 -0
- package/dist/qdrant/qdrant.service.js +201 -0
- package/dist/qdrant/qdrant.service.js.map +1 -0
- package/dist/qdrant/qdrant.types.d.ts +55 -0
- package/dist/qdrant/qdrant.types.d.ts.map +1 -0
- package/dist/qdrant/qdrant.types.js +6 -0
- package/dist/qdrant/qdrant.types.js.map +1 -0
- package/dist/tools/core-tools.d.ts +7 -0
- package/dist/tools/core-tools.d.ts.map +1 -0
- package/dist/tools/core-tools.js +52 -0
- package/dist/tools/core-tools.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +51 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +50 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/workflow/actions/base.action.d.ts +50 -0
- package/dist/workflow/actions/base.action.d.ts.map +1 -0
- package/dist/workflow/actions/base.action.js +59 -0
- package/dist/workflow/actions/base.action.js.map +1 -0
- package/dist/workflow/actions/incident.action.d.ts +13 -0
- package/dist/workflow/actions/incident.action.d.ts.map +1 -0
- package/dist/workflow/actions/incident.action.js +70 -0
- package/dist/workflow/actions/incident.action.js.map +1 -0
- package/dist/workflow/actions/index.d.ts +9 -0
- package/dist/workflow/actions/index.d.ts.map +1 -0
- package/dist/workflow/actions/index.js +11 -0
- package/dist/workflow/actions/index.js.map +1 -0
- package/dist/workflow/actions/notify.action.d.ts +18 -0
- package/dist/workflow/actions/notify.action.d.ts.map +1 -0
- package/dist/workflow/actions/notify.action.js +106 -0
- package/dist/workflow/actions/notify.action.js.map +1 -0
- package/dist/workflow/actions/report.action.d.ts +13 -0
- package/dist/workflow/actions/report.action.d.ts.map +1 -0
- package/dist/workflow/actions/report.action.js +64 -0
- package/dist/workflow/actions/report.action.js.map +1 -0
- package/dist/workflow/index.d.ts +10 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +11 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/workflow.repository.d.ts +90 -0
- package/dist/workflow/workflow.repository.d.ts.map +1 -0
- package/dist/workflow/workflow.repository.js +238 -0
- package/dist/workflow/workflow.repository.js.map +1 -0
- package/dist/workflow/workflow.service.d.ts +98 -0
- package/dist/workflow/workflow.service.d.ts.map +1 -0
- package/dist/workflow/workflow.service.js +374 -0
- package/dist/workflow/workflow.service.js.map +1 -0
- package/dist/workflow/workflow.types.d.ts +146 -0
- package/dist/workflow/workflow.types.d.ts.map +1 -0
- package/dist/workflow/workflow.types.js +8 -0
- package/dist/workflow/workflow.types.js.map +1 -0
- package/package.json +67 -0
- package/prisma/schema.prisma +551 -0
- package/scripts/prisma-sync.mjs +187 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Repository
|
|
3
|
+
* Data access layer for artifact operations
|
|
4
|
+
*/
|
|
5
|
+
import type { AiArtifact } from '@prisma/client';
|
|
6
|
+
import type { CreateArtifactDto, UpdateArtifactDto, ArtifactListQuery, ArtifactServiceDependencies } from './artifact.types.js';
|
|
7
|
+
export declare function initArtifactRepository(deps: ArtifactServiceDependencies): void;
|
|
8
|
+
export declare class ArtifactRepository {
|
|
9
|
+
private get prisma();
|
|
10
|
+
create(data: CreateArtifactDto): Promise<AiArtifact>;
|
|
11
|
+
findById(id: string): Promise<AiArtifact | null>;
|
|
12
|
+
findByUser(userId: number, query?: ArtifactListQuery): Promise<AiArtifact[]>;
|
|
13
|
+
findByChat(chatId: string): Promise<AiArtifact[]>;
|
|
14
|
+
update(id: string, data: UpdateArtifactDto): Promise<AiArtifact>;
|
|
15
|
+
delete(id: string): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=artifact.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.repository.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAIhI,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,CAE9E;AAED,qBAAa,kBAAkB;IAC7B,OAAO,KAAK,MAAM,GAGjB;IAEK,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBpD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIhD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAY5E,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOjD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAahE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Repository
|
|
3
|
+
* Data access layer for artifact operations
|
|
4
|
+
*/
|
|
5
|
+
let _deps = null;
|
|
6
|
+
export function initArtifactRepository(deps) {
|
|
7
|
+
_deps = deps;
|
|
8
|
+
}
|
|
9
|
+
export class ArtifactRepository {
|
|
10
|
+
get prisma() {
|
|
11
|
+
if (!_deps)
|
|
12
|
+
throw new Error('[ArtifactRepository] Not initialized');
|
|
13
|
+
return _deps.prisma;
|
|
14
|
+
}
|
|
15
|
+
async create(data) {
|
|
16
|
+
return this.prisma.aiArtifact.create({
|
|
17
|
+
data: {
|
|
18
|
+
userId: data.userId,
|
|
19
|
+
type: data.type,
|
|
20
|
+
title: data.title,
|
|
21
|
+
description: data.description,
|
|
22
|
+
content: data.content,
|
|
23
|
+
sourceType: data.chatId ? 'CHAT' : undefined,
|
|
24
|
+
sourceId: data.messageId || data.chatId,
|
|
25
|
+
tags: data.tags ?? [],
|
|
26
|
+
metadata: data.metadata ?? undefined,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async findById(id) {
|
|
31
|
+
return this.prisma.aiArtifact.findUnique({ where: { id } });
|
|
32
|
+
}
|
|
33
|
+
async findByUser(userId, query) {
|
|
34
|
+
return this.prisma.aiArtifact.findMany({
|
|
35
|
+
where: {
|
|
36
|
+
userId,
|
|
37
|
+
...(query?.type && { type: query.type }),
|
|
38
|
+
},
|
|
39
|
+
orderBy: { createdAt: 'desc' },
|
|
40
|
+
take: query?.limit ?? 50,
|
|
41
|
+
skip: query?.offset ?? 0,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async findByChat(chatId) {
|
|
45
|
+
return this.prisma.aiArtifact.findMany({
|
|
46
|
+
where: { sourceType: 'CHAT', sourceId: chatId },
|
|
47
|
+
orderBy: { createdAt: 'desc' },
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async update(id, data) {
|
|
51
|
+
return this.prisma.aiArtifact.update({
|
|
52
|
+
where: { id },
|
|
53
|
+
data: {
|
|
54
|
+
...(data.title && { title: data.title }),
|
|
55
|
+
...(data.description !== undefined && { description: data.description }),
|
|
56
|
+
...(data.content !== undefined && { content: data.content }),
|
|
57
|
+
...(data.tags && { tags: data.tags }),
|
|
58
|
+
...(data.metadata && { metadata: data.metadata }),
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async delete(id) {
|
|
63
|
+
await this.prisma.aiArtifact.delete({ where: { id } });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=artifact.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.repository.js","sourceRoot":"","sources":["../../src/artifact/artifact.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Service
|
|
3
|
+
* Core service for managing chat-generated artifacts
|
|
4
|
+
*/
|
|
5
|
+
import type { AiArtifact } from '@prisma/client';
|
|
6
|
+
import type { CreateArtifactDto, UpdateArtifactDto, ArtifactListQuery, ArtifactServiceDependencies } from './artifact.types.js';
|
|
7
|
+
export declare function initArtifactService(deps: ArtifactServiceDependencies): void;
|
|
8
|
+
export declare function getArtifactServiceDeps(): ArtifactServiceDependencies | null;
|
|
9
|
+
export declare class ArtifactService {
|
|
10
|
+
private repository;
|
|
11
|
+
constructor();
|
|
12
|
+
private get logger();
|
|
13
|
+
create(data: CreateArtifactDto): Promise<AiArtifact>;
|
|
14
|
+
getById(id: string): Promise<AiArtifact | null>;
|
|
15
|
+
listByUser(userId: number, query?: ArtifactListQuery): Promise<AiArtifact[]>;
|
|
16
|
+
listByChat(chatId: string): Promise<AiArtifact[]>;
|
|
17
|
+
update(id: string, data: UpdateArtifactDto): Promise<AiArtifact>;
|
|
18
|
+
delete(id: string): Promise<void>;
|
|
19
|
+
createFromMessage(userId: number, chatId: string, messageId: string, data: Partial<CreateArtifactDto>): Promise<AiArtifact>;
|
|
20
|
+
export(id: string, format: 'json' | 'csv' | 'md'): Promise<string>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=artifact.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.service.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAC;AAK7B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,CAG3E;AAED,wBAAgB,sBAAsB,IAAI,2BAA2B,GAAG,IAAI,CAE3E;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAqB;;IAQvC,OAAO,KAAK,MAAM,GAA4B;IAIxC,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAMpD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI/C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI5E,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIjD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAIhE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjC,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAC/B,OAAO,CAAC,UAAU,CAAC;IAahB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CA6BzE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Service
|
|
3
|
+
* Core service for managing chat-generated artifacts
|
|
4
|
+
*/
|
|
5
|
+
import { ArtifactRepository, initArtifactRepository } from './artifact.repository.js';
|
|
6
|
+
let _deps = null;
|
|
7
|
+
export function initArtifactService(deps) {
|
|
8
|
+
_deps = deps;
|
|
9
|
+
initArtifactRepository(deps);
|
|
10
|
+
}
|
|
11
|
+
export function getArtifactServiceDeps() {
|
|
12
|
+
return _deps;
|
|
13
|
+
}
|
|
14
|
+
export class ArtifactService {
|
|
15
|
+
repository;
|
|
16
|
+
constructor() {
|
|
17
|
+
if (!_deps)
|
|
18
|
+
throw new Error('[ArtifactService] Not initialized! Call initArtifactService first.');
|
|
19
|
+
this.repository = new ArtifactRepository();
|
|
20
|
+
_deps.logger.info('ArtifactService initialized');
|
|
21
|
+
}
|
|
22
|
+
get logger() { return _deps.logger; }
|
|
23
|
+
// ── CRUD ─────────────────────────────────────────────────────
|
|
24
|
+
async create(data) {
|
|
25
|
+
const artifact = await this.repository.create(data);
|
|
26
|
+
this.logger.info('Artifact created', { id: artifact.id, type: artifact.type });
|
|
27
|
+
return artifact;
|
|
28
|
+
}
|
|
29
|
+
async getById(id) {
|
|
30
|
+
return this.repository.findById(id);
|
|
31
|
+
}
|
|
32
|
+
async listByUser(userId, query) {
|
|
33
|
+
return this.repository.findByUser(userId, query);
|
|
34
|
+
}
|
|
35
|
+
async listByChat(chatId) {
|
|
36
|
+
return this.repository.findByChat(chatId);
|
|
37
|
+
}
|
|
38
|
+
async update(id, data) {
|
|
39
|
+
return this.repository.update(id, data);
|
|
40
|
+
}
|
|
41
|
+
async delete(id) {
|
|
42
|
+
await this.repository.delete(id);
|
|
43
|
+
this.logger.info('Artifact deleted', { id });
|
|
44
|
+
}
|
|
45
|
+
// ── Special Actions ──────────────────────────────────────────
|
|
46
|
+
async createFromMessage(userId, chatId, messageId, data) {
|
|
47
|
+
return this.create({
|
|
48
|
+
userId,
|
|
49
|
+
chatId,
|
|
50
|
+
messageId,
|
|
51
|
+
type: data.type ?? 'REPORT',
|
|
52
|
+
title: data.title ?? 'Chat Artifact',
|
|
53
|
+
description: data.description,
|
|
54
|
+
content: data.content ?? {},
|
|
55
|
+
tags: data.tags,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async export(id, format) {
|
|
59
|
+
const artifact = await this.repository.findById(id);
|
|
60
|
+
if (!artifact)
|
|
61
|
+
throw new Error('Artifact not found');
|
|
62
|
+
switch (format) {
|
|
63
|
+
case 'json':
|
|
64
|
+
return JSON.stringify(artifact.content, null, 2);
|
|
65
|
+
case 'csv': {
|
|
66
|
+
const data = artifact.content;
|
|
67
|
+
if (!data.headers || !data.rows)
|
|
68
|
+
return JSON.stringify(artifact.content);
|
|
69
|
+
const csvHeader = data.headers.join(',');
|
|
70
|
+
const csvRows = data.rows.map(r => r.map(c => `"${String(c ?? '')}"`).join(','));
|
|
71
|
+
return [csvHeader, ...csvRows].join('\n');
|
|
72
|
+
}
|
|
73
|
+
case 'md': {
|
|
74
|
+
const d = artifact.content;
|
|
75
|
+
if (!d.headers || !d.rows)
|
|
76
|
+
return `# ${artifact.title}\n\n${JSON.stringify(artifact.content, null, 2)}`;
|
|
77
|
+
const mdHeader = `| ${d.headers.join(' | ')} |`;
|
|
78
|
+
const mdSep = `| ${d.headers.map(() => '---').join(' | ')} |`;
|
|
79
|
+
const mdRows = d.rows.map(r => `| ${r.map(c => String(c ?? '')).join(' | ')} |`);
|
|
80
|
+
return `# ${artifact.title}\n\n${mdHeader}\n${mdSep}\n${mdRows.join('\n')}`;
|
|
81
|
+
}
|
|
82
|
+
default:
|
|
83
|
+
return JSON.stringify(artifact.content);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=artifact.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.service.js","sourceRoot":"","sources":["../../src/artifact/artifact.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Service Types
|
|
3
|
+
*/
|
|
4
|
+
import { ArtifactType } from '@prisma/client';
|
|
5
|
+
import type { AiArtifact, Prisma, PrismaClient } from '@prisma/client';
|
|
6
|
+
export { ArtifactType };
|
|
7
|
+
export type { AiArtifact };
|
|
8
|
+
export interface CreateArtifactDto {
|
|
9
|
+
userId: number;
|
|
10
|
+
chatId?: string;
|
|
11
|
+
messageId?: string;
|
|
12
|
+
type: ArtifactType;
|
|
13
|
+
title: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
content: unknown;
|
|
16
|
+
tags?: string[];
|
|
17
|
+
metadata?: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
export interface UpdateArtifactDto {
|
|
20
|
+
title?: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
content?: unknown;
|
|
23
|
+
tags?: string[];
|
|
24
|
+
metadata?: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
export interface ArtifactListQuery {
|
|
27
|
+
type?: ArtifactType;
|
|
28
|
+
limit?: number;
|
|
29
|
+
offset?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface ArtifactServiceDependencies {
|
|
32
|
+
prisma: Prisma.TransactionClient | PrismaClient;
|
|
33
|
+
logger: LoggerLike;
|
|
34
|
+
}
|
|
35
|
+
export interface LoggerLike {
|
|
36
|
+
info(message: string, meta?: object): void;
|
|
37
|
+
error(message: string, meta?: object): void;
|
|
38
|
+
warn(message: string, meta?: object): void;
|
|
39
|
+
debug(message: string, meta?: object): void;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=artifact.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.types.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC;IAChD,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.types.js","sourceRoot":"","sources":["../../src/artifact/artifact.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { CreateArtifactDto, UpdateArtifactDto, ArtifactListQuery, ArtifactServiceDependencies } from './artifact.types.js';
|
|
2
|
+
export { ArtifactType } from './artifact.types.js';
|
|
3
|
+
export type { AiArtifact } from './artifact.types.js';
|
|
4
|
+
export { ArtifactService, initArtifactService, getArtifactServiceDeps } from './artifact.service.js';
|
|
5
|
+
export { ArtifactRepository, initArtifactRepository } from './artifact.repository.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/artifact/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAChI,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ArtifactType } from './artifact.types.js';
|
|
2
|
+
export { ArtifactService, initArtifactService, getArtifactServiceDeps } from './artifact.service.js';
|
|
3
|
+
export { ArtifactRepository, initArtifactRepository } from './artifact.repository.js';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/artifact/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat Memory Integration
|
|
3
|
+
* Integrates the Memory System into the Chat Service
|
|
4
|
+
* Handles memory retrieval, context injection, and memory suggestion creation
|
|
5
|
+
*/
|
|
6
|
+
import type { AiChatMessage, MemoryType } from '@prisma/client';
|
|
7
|
+
import type { ChatMemoryIntegrationDependencies, MemorySearchResult, MemorySuggestionResult } from './chat.types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Initialize the Chat Memory Integration with dependencies
|
|
10
|
+
*/
|
|
11
|
+
export declare function initChatMemoryIntegration(deps: ChatMemoryIntegrationDependencies): void;
|
|
12
|
+
/**
|
|
13
|
+
* Get the current integration dependencies
|
|
14
|
+
*/
|
|
15
|
+
export declare function getChatMemoryIntegrationDeps(): ChatMemoryIntegrationDependencies | null;
|
|
16
|
+
/**
|
|
17
|
+
* Chat Memory Integration class
|
|
18
|
+
* Provides memory-aware functionality for chat operations
|
|
19
|
+
*/
|
|
20
|
+
export declare class ChatMemoryIntegration {
|
|
21
|
+
/** Minimum score for memory to be included in context */
|
|
22
|
+
static readonly MIN_RELEVANCE_SCORE = 0.75;
|
|
23
|
+
/** Maximum memories to inject into context */
|
|
24
|
+
static readonly MAX_CONTEXT_MEMORIES = 5;
|
|
25
|
+
constructor();
|
|
26
|
+
private get logger();
|
|
27
|
+
private get memoryService();
|
|
28
|
+
/**
|
|
29
|
+
* Get relevant memories for a chat message
|
|
30
|
+
* Combines the current message with chat context for better relevance
|
|
31
|
+
*/
|
|
32
|
+
getRelevantMemories(userId: number, message: string, chatContext?: string): Promise<MemorySearchResult[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Build memory context string for LLM injection
|
|
35
|
+
* Formats memories in a structured way for the LLM to understand
|
|
36
|
+
*/
|
|
37
|
+
buildMemoryContext(memories: MemorySearchResult[]): string;
|
|
38
|
+
/**
|
|
39
|
+
* Build chat context summary for memory search
|
|
40
|
+
* Creates a concise summary of recent messages for context
|
|
41
|
+
*/
|
|
42
|
+
buildChatContextSummary(messages: AiChatMessage[], maxMessages?: number): string;
|
|
43
|
+
/**
|
|
44
|
+
* Record which memories were used in a response
|
|
45
|
+
* For tracking and analytics purposes
|
|
46
|
+
*/
|
|
47
|
+
recordMemoryUsage(chatMessageId: string, memoryIds: string[]): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Check if assistant response contains memory suggestion
|
|
50
|
+
* Detects explicit memory save patterns in the response
|
|
51
|
+
*/
|
|
52
|
+
detectMemorySuggestion(response: string): MemorySuggestionResult;
|
|
53
|
+
/**
|
|
54
|
+
* Create memory suggestion from chat
|
|
55
|
+
* Generates a memory suggestion based on chat content
|
|
56
|
+
*/
|
|
57
|
+
suggestMemoryFromChat(chatId: string, messageId: string, userId: number, content: string, type?: MemoryType): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=chat-memory.integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-memory.integration.d.ts","sourceRoot":"","sources":["../../src/chat/chat-memory.integration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EACV,iCAAiC,EAGjC,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAMzB;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,iCAAiC,GAAG,IAAI,CAEvF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,iCAAiC,GAAG,IAAI,CAEvF;AAID;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,yDAAyD;IACzD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,QAAQ;IAE3C,8CAA8C;IAC9C,MAAM,CAAC,QAAQ,CAAC,oBAAoB,KAAK;;IAQzC,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,aAAa,GAExB;IAED;;;OAGG;IACG,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAqBhC;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM;IAsB1D;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,WAAW,GAAE,MAAU,GAAG,MAAM;IAQnF;;;OAGG;IACG,iBAAiB,CACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC;IAIhB;;;OAGG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB;IAuBhE;;;OAGG;IACG,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,UAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC;CAmBjB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat Memory Integration
|
|
3
|
+
* Integrates the Memory System into the Chat Service
|
|
4
|
+
* Handles memory retrieval, context injection, and memory suggestion creation
|
|
5
|
+
*/
|
|
6
|
+
// ==================== MODULE STATE ====================
|
|
7
|
+
let _deps = null;
|
|
8
|
+
/**
|
|
9
|
+
* Initialize the Chat Memory Integration with dependencies
|
|
10
|
+
*/
|
|
11
|
+
export function initChatMemoryIntegration(deps) {
|
|
12
|
+
_deps = deps;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get the current integration dependencies
|
|
16
|
+
*/
|
|
17
|
+
export function getChatMemoryIntegrationDeps() {
|
|
18
|
+
return _deps;
|
|
19
|
+
}
|
|
20
|
+
// ==================== CHAT MEMORY INTEGRATION ====================
|
|
21
|
+
/**
|
|
22
|
+
* Chat Memory Integration class
|
|
23
|
+
* Provides memory-aware functionality for chat operations
|
|
24
|
+
*/
|
|
25
|
+
export class ChatMemoryIntegration {
|
|
26
|
+
/** Minimum score for memory to be included in context */
|
|
27
|
+
static MIN_RELEVANCE_SCORE = 0.75;
|
|
28
|
+
/** Maximum memories to inject into context */
|
|
29
|
+
static MAX_CONTEXT_MEMORIES = 5;
|
|
30
|
+
constructor() {
|
|
31
|
+
if (!_deps) {
|
|
32
|
+
throw new Error('[ChatMemoryIntegration] Not initialized! Call initChatMemoryIntegration first.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
get logger() {
|
|
36
|
+
return _deps.logger;
|
|
37
|
+
}
|
|
38
|
+
get memoryService() {
|
|
39
|
+
return _deps.memoryService;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get relevant memories for a chat message
|
|
43
|
+
* Combines the current message with chat context for better relevance
|
|
44
|
+
*/
|
|
45
|
+
async getRelevantMemories(userId, message, chatContext) {
|
|
46
|
+
const searchQuery = chatContext
|
|
47
|
+
? `${chatContext}\n\nCurrent question: ${message}`
|
|
48
|
+
: message;
|
|
49
|
+
const results = await this.memoryService.searchMemories({
|
|
50
|
+
userId,
|
|
51
|
+
query: searchQuery,
|
|
52
|
+
limit: ChatMemoryIntegration.MAX_CONTEXT_MEMORIES,
|
|
53
|
+
scoreThreshold: ChatMemoryIntegration.MIN_RELEVANCE_SCORE,
|
|
54
|
+
});
|
|
55
|
+
this.logger.debug('Found relevant memories', {
|
|
56
|
+
userId,
|
|
57
|
+
messagePreview: message.slice(0, 50),
|
|
58
|
+
memoryCount: results.length,
|
|
59
|
+
});
|
|
60
|
+
return results;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Build memory context string for LLM injection
|
|
64
|
+
* Formats memories in a structured way for the LLM to understand
|
|
65
|
+
*/
|
|
66
|
+
buildMemoryContext(memories) {
|
|
67
|
+
if (memories.length === 0)
|
|
68
|
+
return '';
|
|
69
|
+
const memoryStrings = memories.map((m, i) => {
|
|
70
|
+
const { memory, score } = m;
|
|
71
|
+
const summaryLine = memory.summary ? `Summary: ${memory.summary}` : '';
|
|
72
|
+
return `[Memory ${i + 1}] (${memory.type}, relevance: ${(score * 100).toFixed(0)}%)
|
|
73
|
+
Title: ${memory.title}
|
|
74
|
+
Content: ${memory.content}
|
|
75
|
+
${summaryLine}`.trim();
|
|
76
|
+
});
|
|
77
|
+
return `
|
|
78
|
+
--- RELEVANT LONG-TERM MEMORIES ---
|
|
79
|
+
${memoryStrings.join('\n\n')}
|
|
80
|
+
--- END MEMORIES ---
|
|
81
|
+
|
|
82
|
+
Use these memories to inform your response when relevant. Reference them naturally (e.g., "Based on what I remember about...").
|
|
83
|
+
`;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Build chat context summary for memory search
|
|
87
|
+
* Creates a concise summary of recent messages for context
|
|
88
|
+
*/
|
|
89
|
+
buildChatContextSummary(messages, maxMessages = 5) {
|
|
90
|
+
const recentMessages = messages.slice(-maxMessages);
|
|
91
|
+
return recentMessages
|
|
92
|
+
.map(m => `${m.role}: ${m.content.slice(0, 200)}`)
|
|
93
|
+
.join('\n');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Record which memories were used in a response
|
|
97
|
+
* For tracking and analytics purposes
|
|
98
|
+
*/
|
|
99
|
+
async recordMemoryUsage(chatMessageId, memoryIds) {
|
|
100
|
+
this.logger.debug('Recording memory usage', { chatMessageId, memoryIds });
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Check if assistant response contains memory suggestion
|
|
104
|
+
* Detects explicit memory save patterns in the response
|
|
105
|
+
*/
|
|
106
|
+
detectMemorySuggestion(response) {
|
|
107
|
+
const patterns = [
|
|
108
|
+
/I should remember that (.+)/i,
|
|
109
|
+
/This is worth remembering: (.+)/i,
|
|
110
|
+
/Save to memory: (.+)/i,
|
|
111
|
+
/\[MEMORY\] (.+)/i,
|
|
112
|
+
/Important insight: (.+)/i,
|
|
113
|
+
];
|
|
114
|
+
for (const pattern of patterns) {
|
|
115
|
+
const match = response.match(pattern);
|
|
116
|
+
if (match) {
|
|
117
|
+
return {
|
|
118
|
+
hasSuggestion: true,
|
|
119
|
+
suggestedContent: match[1].trim(),
|
|
120
|
+
suggestedType: 'INSIGHT',
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { hasSuggestion: false };
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Create memory suggestion from chat
|
|
128
|
+
* Generates a memory suggestion based on chat content
|
|
129
|
+
*/
|
|
130
|
+
async suggestMemoryFromChat(chatId, messageId, userId, content, type = 'INSIGHT') {
|
|
131
|
+
const title = content.slice(0, 100).trim();
|
|
132
|
+
await this.memoryService.suggestMemory({
|
|
133
|
+
userId,
|
|
134
|
+
type,
|
|
135
|
+
title,
|
|
136
|
+
content,
|
|
137
|
+
sourceType: 'CHAT',
|
|
138
|
+
sourceId: `${chatId}:${messageId}`,
|
|
139
|
+
confidence: 0.85,
|
|
140
|
+
});
|
|
141
|
+
this.logger.info('Memory suggestion created from chat', {
|
|
142
|
+
chatId,
|
|
143
|
+
messageId,
|
|
144
|
+
type,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=chat-memory.integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-memory.integration.js","sourceRoot":"","sources":["../../src/chat/chat-memory.integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat Repository
|
|
3
|
+
* Data access layer for chat operations
|
|
4
|
+
*/
|
|
5
|
+
import type { AiChat, AiChatMessage } from '@prisma/client';
|
|
6
|
+
import type { CreateChatDto, UpdateChatDto, ChatServiceDependencies } from './chat.types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Initialize the Chat repository with dependencies
|
|
9
|
+
*/
|
|
10
|
+
export declare function initChatRepository(deps: ChatServiceDependencies): void;
|
|
11
|
+
export declare class ChatRepository {
|
|
12
|
+
private get prisma();
|
|
13
|
+
private get logger();
|
|
14
|
+
/**
|
|
15
|
+
* Create a new chat
|
|
16
|
+
*/
|
|
17
|
+
createChat(data: CreateChatDto): Promise<AiChat>;
|
|
18
|
+
/**
|
|
19
|
+
* Find chat by ID
|
|
20
|
+
*/
|
|
21
|
+
findById(id: string): Promise<AiChat | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Find chat by ID with messages
|
|
24
|
+
*/
|
|
25
|
+
findByIdWithMessages(id: string, messageLimit?: number): Promise<(AiChat & {
|
|
26
|
+
messages: AiChatMessage[];
|
|
27
|
+
}) | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Find chats by user
|
|
30
|
+
*/
|
|
31
|
+
findByUser(userId: number, limit?: number): Promise<AiChat[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Update a chat
|
|
34
|
+
*/
|
|
35
|
+
updateChat(id: string, data: UpdateChatDto): Promise<AiChat>;
|
|
36
|
+
/**
|
|
37
|
+
* Delete a chat
|
|
38
|
+
*/
|
|
39
|
+
deleteChat(id: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Add a message to a chat
|
|
42
|
+
*/
|
|
43
|
+
addMessage(chatId: string, role: 'USER' | 'ASSISTANT' | 'SYSTEM', content: string, metadata?: {
|
|
44
|
+
model?: string;
|
|
45
|
+
tokens?: number;
|
|
46
|
+
latencyMs?: number;
|
|
47
|
+
usedMemoryIds?: string[];
|
|
48
|
+
}): Promise<AiChatMessage>;
|
|
49
|
+
/**
|
|
50
|
+
* Get messages for a chat
|
|
51
|
+
*/
|
|
52
|
+
getMessages(chatId: string, limit?: number, before?: Date): Promise<AiChatMessage[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Get message count for a chat
|
|
55
|
+
*/
|
|
56
|
+
getMessageCount(chatId: string): Promise<number>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=chat.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.repository.d.ts","sourceRoot":"","sources":["../../src/chat/chat.repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI7F;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAEtE;AAED,qBAAa,cAAc;IACzB,OAAO,KAAK,MAAM,GAGjB;IAED,OAAO,KAAK,MAAM,GAGjB;IAED;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBtD;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIlD;;OAEG;IACG,oBAAoB,CACxB,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,MAAM,GAAG;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAY3D;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQnE;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlE;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,EACrC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,GACA,OAAO,CAAC,aAAa,CAAC;IAsBzB;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,IAAI,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC;IAW3B;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGvD"}
|