@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,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Service
|
|
3
|
+
* Main service for embedding operations with multi-provider support
|
|
4
|
+
*/
|
|
5
|
+
import type { EmbeddingResponse, EmbeddingBatchResponse, EmbeddingServiceDependencies } from './embedding.types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Initialize the Embedding service with dependencies
|
|
8
|
+
*/
|
|
9
|
+
export declare function initEmbeddingService(deps: EmbeddingServiceDependencies): void;
|
|
10
|
+
/**
|
|
11
|
+
* Get the current service dependencies
|
|
12
|
+
*/
|
|
13
|
+
export declare function getEmbeddingServiceDeps(): EmbeddingServiceDependencies | null;
|
|
14
|
+
export declare class EmbeddingService {
|
|
15
|
+
private provider;
|
|
16
|
+
constructor();
|
|
17
|
+
/**
|
|
18
|
+
* Generate embedding for a single text
|
|
19
|
+
*/
|
|
20
|
+
embed(text: string, model?: string): Promise<EmbeddingResponse>;
|
|
21
|
+
/**
|
|
22
|
+
* Generate embeddings for multiple texts
|
|
23
|
+
*/
|
|
24
|
+
embedBatch(texts: string[], model?: string): Promise<EmbeddingBatchResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* Get embedding dimensions for a model
|
|
27
|
+
*/
|
|
28
|
+
getDimensions(model?: string): number;
|
|
29
|
+
/**
|
|
30
|
+
* Calculate cosine similarity between two embeddings
|
|
31
|
+
*/
|
|
32
|
+
static cosineSimilarity(a: number[], b: number[]): number;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=embedding.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.service.d.ts","sourceRoot":"","sources":["../../src/embedding/embedding.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,sBAAsB,CAAC;AAK9B;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,4BAA4B,GAAG,IAAI,CAE7E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,4BAA4B,GAAG,IAAI,CAE7E;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAA0B;;IAsB1C;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIrE;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIlF;;OAEG;IACH,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAIrC;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;CAiB1D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Service
|
|
3
|
+
* Main service for embedding operations with multi-provider support
|
|
4
|
+
*/
|
|
5
|
+
import { OpenAIEmbeddingProvider } from './providers/openai.provider.js';
|
|
6
|
+
let _deps = null;
|
|
7
|
+
/**
|
|
8
|
+
* Initialize the Embedding service with dependencies
|
|
9
|
+
*/
|
|
10
|
+
export function initEmbeddingService(deps) {
|
|
11
|
+
_deps = deps;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get the current service dependencies
|
|
15
|
+
*/
|
|
16
|
+
export function getEmbeddingServiceDeps() {
|
|
17
|
+
return _deps;
|
|
18
|
+
}
|
|
19
|
+
export class EmbeddingService {
|
|
20
|
+
provider;
|
|
21
|
+
constructor() {
|
|
22
|
+
if (!_deps) {
|
|
23
|
+
throw new Error('[EmbeddingService] Service not initialized! Call initEmbeddingService first.');
|
|
24
|
+
}
|
|
25
|
+
// Currently only OpenAI is supported
|
|
26
|
+
this.provider = new OpenAIEmbeddingProvider(_deps.apiKey, _deps.logger, _deps.defaultModel);
|
|
27
|
+
_deps.logger.info('EmbeddingService initialized', {
|
|
28
|
+
provider: _deps.provider || 'openai',
|
|
29
|
+
model: _deps.defaultModel || 'text-embedding-3-small'
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Generate embedding for a single text
|
|
34
|
+
*/
|
|
35
|
+
async embed(text, model) {
|
|
36
|
+
return this.provider.embed({ text, model });
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Generate embeddings for multiple texts
|
|
40
|
+
*/
|
|
41
|
+
async embedBatch(texts, model) {
|
|
42
|
+
return this.provider.embedBatch({ texts, model });
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get embedding dimensions for a model
|
|
46
|
+
*/
|
|
47
|
+
getDimensions(model) {
|
|
48
|
+
return this.provider.getDimensions(model);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Calculate cosine similarity between two embeddings
|
|
52
|
+
*/
|
|
53
|
+
static cosineSimilarity(a, b) {
|
|
54
|
+
if (a.length !== b.length) {
|
|
55
|
+
throw new Error('Embeddings must have same dimensions');
|
|
56
|
+
}
|
|
57
|
+
let dotProduct = 0;
|
|
58
|
+
let normA = 0;
|
|
59
|
+
let normB = 0;
|
|
60
|
+
for (let i = 0; i < a.length; i++) {
|
|
61
|
+
dotProduct += a[i] * b[i];
|
|
62
|
+
normA += a[i] * a[i];
|
|
63
|
+
normB += b[i] * b[i];
|
|
64
|
+
}
|
|
65
|
+
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=embedding.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.service.js","sourceRoot":"","sources":["../../src/embedding/embedding.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,IAAI,KAAK,GAAwC,IAAI,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAkC;IACrE,KAAK,GAAG,IAAI,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,gBAAgB;IACnB,QAAQ,CAA0B;IAE1C;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,uBAAuB,CACzC,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,YAAY,CACnB,CAAC;QAEF,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;YAChD,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ;YACpC,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,wBAAwB;SACtD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,KAAc;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAe,EAAE,KAAc;QAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAc;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,CAAW,EAAE,CAAW;QAC9C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Service Types
|
|
3
|
+
* Type definitions for the Embedding service abstraction
|
|
4
|
+
*/
|
|
5
|
+
export type EmbeddingProvider = 'openai' | 'cohere' | 'huggingface';
|
|
6
|
+
export interface EmbeddingRequest {
|
|
7
|
+
text: string;
|
|
8
|
+
model?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface EmbeddingBatchRequest {
|
|
11
|
+
texts: string[];
|
|
12
|
+
model?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface EmbeddingResponse {
|
|
15
|
+
embedding: number[];
|
|
16
|
+
model: string;
|
|
17
|
+
dimensions: number;
|
|
18
|
+
tokens: number;
|
|
19
|
+
}
|
|
20
|
+
export interface EmbeddingBatchResponse {
|
|
21
|
+
embeddings: number[][];
|
|
22
|
+
model: string;
|
|
23
|
+
dimensions: number;
|
|
24
|
+
totalTokens: number;
|
|
25
|
+
}
|
|
26
|
+
export interface EmbeddingServiceDependencies {
|
|
27
|
+
logger: LoggerLike;
|
|
28
|
+
apiKey: string;
|
|
29
|
+
provider?: EmbeddingProvider;
|
|
30
|
+
defaultModel?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface LoggerLike {
|
|
33
|
+
info(message: string, meta?: object): void;
|
|
34
|
+
error(message: string, meta?: object): void;
|
|
35
|
+
warn(message: string, meta?: object): void;
|
|
36
|
+
debug(message: string, meta?: object): void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=embedding.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.types.d.ts","sourceRoot":"","sources":["../../src/embedding/embedding.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;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":"embedding.types.js","sourceRoot":"","sources":["../../src/embedding/embedding.types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Module Index
|
|
3
|
+
* Export all Embedding service components
|
|
4
|
+
*/
|
|
5
|
+
export type { EmbeddingProvider, EmbeddingRequest, EmbeddingBatchRequest, EmbeddingResponse, EmbeddingBatchResponse, EmbeddingServiceDependencies } from './embedding.types.js';
|
|
6
|
+
export type { LoggerLike as EmbeddingLoggerLike } from './embedding.types.js';
|
|
7
|
+
export { EmbeddingService, initEmbeddingService, getEmbeddingServiceDeps } from './embedding.service.js';
|
|
8
|
+
export { BaseEmbeddingProvider, OpenAIEmbeddingProvider } from './providers/index.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embedding/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG9E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Module Index
|
|
3
|
+
* Export all Embedding service components
|
|
4
|
+
*/
|
|
5
|
+
// Service
|
|
6
|
+
export { EmbeddingService, initEmbeddingService, getEmbeddingServiceDeps } from './embedding.service.js';
|
|
7
|
+
// Providers
|
|
8
|
+
export { BaseEmbeddingProvider, OpenAIEmbeddingProvider } from './providers/index.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedding/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,YAAY;AACZ,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Embedding Provider
|
|
3
|
+
* Abstract base class for all embedding providers
|
|
4
|
+
*/
|
|
5
|
+
import type { EmbeddingRequest, EmbeddingBatchRequest, EmbeddingResponse, EmbeddingBatchResponse, EmbeddingProvider, LoggerLike } from '../embedding.types.js';
|
|
6
|
+
export declare abstract class BaseEmbeddingProvider {
|
|
7
|
+
protected logger: LoggerLike;
|
|
8
|
+
protected apiKey: string;
|
|
9
|
+
abstract readonly provider: EmbeddingProvider;
|
|
10
|
+
abstract readonly defaultModel: string;
|
|
11
|
+
constructor(apiKey: string, logger: LoggerLike);
|
|
12
|
+
/**
|
|
13
|
+
* Generate embedding for a single text
|
|
14
|
+
*/
|
|
15
|
+
abstract embed(request: EmbeddingRequest): Promise<EmbeddingResponse>;
|
|
16
|
+
/**
|
|
17
|
+
* Generate embeddings for multiple texts
|
|
18
|
+
*/
|
|
19
|
+
abstract embedBatch(request: EmbeddingBatchRequest): Promise<EmbeddingBatchResponse>;
|
|
20
|
+
/**
|
|
21
|
+
* Get embedding dimensions for a model
|
|
22
|
+
*/
|
|
23
|
+
abstract getDimensions(model?: string): number;
|
|
24
|
+
/**
|
|
25
|
+
* Get the model to use for the request
|
|
26
|
+
*/
|
|
27
|
+
protected getModel(request: EmbeddingRequest | EmbeddingBatchRequest): string;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=base.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.provider.d.ts","sourceRoot":"","sources":["../../../src/embedding/providers/base.provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,8BAAsB,qBAAqB;IACzC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAE3B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAK9C;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAErE;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAEpF;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAE9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,qBAAqB,GAAG,MAAM;CAG9E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Embedding Provider
|
|
3
|
+
* Abstract base class for all embedding providers
|
|
4
|
+
*/
|
|
5
|
+
export class BaseEmbeddingProvider {
|
|
6
|
+
logger;
|
|
7
|
+
apiKey;
|
|
8
|
+
constructor(apiKey, logger) {
|
|
9
|
+
this.apiKey = apiKey;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get the model to use for the request
|
|
14
|
+
*/
|
|
15
|
+
getModel(request) {
|
|
16
|
+
return request.model || this.defaultModel;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=base.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.provider.js","sourceRoot":"","sources":["../../../src/embedding/providers/base.provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,OAAgB,qBAAqB;IAC/B,MAAM,CAAa;IACnB,MAAM,CAAS;IAKzB,YAAY,MAAc,EAAE,MAAkB;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAiBD;;OAEG;IACO,QAAQ,CAAC,OAAiD;QAClE,OAAO,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/embedding/providers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/embedding/providers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Embedding Provider
|
|
3
|
+
* Implementation for OpenAI embedding models
|
|
4
|
+
*/
|
|
5
|
+
import type { EmbeddingRequest, EmbeddingBatchRequest, EmbeddingResponse, EmbeddingBatchResponse, LoggerLike } from '../embedding.types.js';
|
|
6
|
+
import { BaseEmbeddingProvider } from './base.provider.js';
|
|
7
|
+
export declare class OpenAIEmbeddingProvider extends BaseEmbeddingProvider {
|
|
8
|
+
readonly provider: "openai";
|
|
9
|
+
readonly defaultModel = "text-embedding-3-small";
|
|
10
|
+
private client;
|
|
11
|
+
static readonly DIMENSIONS: Record<string, number>;
|
|
12
|
+
constructor(apiKey: string, logger: LoggerLike, defaultModel?: string);
|
|
13
|
+
embed(request: EmbeddingRequest): Promise<EmbeddingResponse>;
|
|
14
|
+
embedBatch(request: EmbeddingBatchRequest): Promise<EmbeddingBatchResponse>;
|
|
15
|
+
getDimensions(model?: string): number;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=openai.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.provider.d.ts","sourceRoot":"","sources":["../../../src/embedding/providers/openai.provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,qBAAa,uBAAwB,SAAQ,qBAAqB;IAChE,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IACtC,QAAQ,CAAC,YAAY,4BAA4B;IAEjD,OAAO,CAAC,MAAM,CAAS;IAGvB,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIhD;gBAEU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM;IAQ/D,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuB5D,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAiCjF,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;CAItC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Embedding Provider
|
|
3
|
+
* Implementation for OpenAI embedding models
|
|
4
|
+
*/
|
|
5
|
+
import OpenAI from 'openai';
|
|
6
|
+
import { BaseEmbeddingProvider } from './base.provider.js';
|
|
7
|
+
export class OpenAIEmbeddingProvider extends BaseEmbeddingProvider {
|
|
8
|
+
provider = 'openai';
|
|
9
|
+
defaultModel = 'text-embedding-3-small';
|
|
10
|
+
client;
|
|
11
|
+
// OpenAI embedding dimensions
|
|
12
|
+
static DIMENSIONS = {
|
|
13
|
+
'text-embedding-3-small': 1536,
|
|
14
|
+
'text-embedding-3-large': 3072,
|
|
15
|
+
'text-embedding-ada-002': 1536,
|
|
16
|
+
};
|
|
17
|
+
constructor(apiKey, logger, defaultModel) {
|
|
18
|
+
super(apiKey, logger);
|
|
19
|
+
this.client = new OpenAI({ apiKey });
|
|
20
|
+
if (defaultModel) {
|
|
21
|
+
this.defaultModel = defaultModel;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async embed(request) {
|
|
25
|
+
const model = this.getModel(request);
|
|
26
|
+
this.logger.debug('Generating embedding', {
|
|
27
|
+
model,
|
|
28
|
+
textLength: request.text.length
|
|
29
|
+
});
|
|
30
|
+
const response = await this.client.embeddings.create({
|
|
31
|
+
model,
|
|
32
|
+
input: request.text,
|
|
33
|
+
});
|
|
34
|
+
const embedding = response.data[0].embedding;
|
|
35
|
+
return {
|
|
36
|
+
embedding,
|
|
37
|
+
model,
|
|
38
|
+
dimensions: embedding.length,
|
|
39
|
+
tokens: response.usage.total_tokens,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async embedBatch(request) {
|
|
43
|
+
const model = this.getModel(request);
|
|
44
|
+
this.logger.debug('Generating batch embeddings', {
|
|
45
|
+
model,
|
|
46
|
+
count: request.texts.length
|
|
47
|
+
});
|
|
48
|
+
// OpenAI supports up to 2048 inputs per request
|
|
49
|
+
const BATCH_SIZE = 2048;
|
|
50
|
+
const allEmbeddings = [];
|
|
51
|
+
let totalTokens = 0;
|
|
52
|
+
for (let i = 0; i < request.texts.length; i += BATCH_SIZE) {
|
|
53
|
+
const batch = request.texts.slice(i, i + BATCH_SIZE);
|
|
54
|
+
const response = await this.client.embeddings.create({
|
|
55
|
+
model,
|
|
56
|
+
input: batch,
|
|
57
|
+
});
|
|
58
|
+
allEmbeddings.push(...response.data.map(d => d.embedding));
|
|
59
|
+
totalTokens += response.usage.total_tokens;
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
embeddings: allEmbeddings,
|
|
63
|
+
model,
|
|
64
|
+
dimensions: allEmbeddings[0]?.length || 0,
|
|
65
|
+
totalTokens,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
getDimensions(model) {
|
|
69
|
+
const m = model || this.defaultModel;
|
|
70
|
+
return OpenAIEmbeddingProvider.DIMENSIONS[m] || 1536;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=openai.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.provider.js","sourceRoot":"","sources":["../../../src/embedding/providers/openai.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat Controller
|
|
3
|
+
* HTTP layer for the Autopilot Chat (talk to the AI pilot)
|
|
4
|
+
*/
|
|
5
|
+
import type { Request, Response } from 'express';
|
|
6
|
+
import type { ChatService } from '../chat/chat.service.js';
|
|
7
|
+
export declare class ChatController {
|
|
8
|
+
private readonly chatService;
|
|
9
|
+
constructor(chatService: ChatService);
|
|
10
|
+
/** POST /api/chat */
|
|
11
|
+
createChat(req: Request, res: Response): Promise<void>;
|
|
12
|
+
/** GET /api/chat */
|
|
13
|
+
listChats(req: Request, res: Response): Promise<void>;
|
|
14
|
+
/** GET /api/chat/:id */
|
|
15
|
+
getChat(req: Request, res: Response): Promise<void>;
|
|
16
|
+
/** PATCH /api/chat/:id */
|
|
17
|
+
updateChat(req: Request, res: Response): Promise<void>;
|
|
18
|
+
/** DELETE /api/chat/:id */
|
|
19
|
+
deleteChat(req: Request, res: Response): Promise<void>;
|
|
20
|
+
/** POST /api/chat/:id/messages */
|
|
21
|
+
sendMessage(req: Request, res: Response): Promise<void>;
|
|
22
|
+
/** POST /api/chat/:id/approve */
|
|
23
|
+
approveToolCall(req: Request, res: Response): Promise<void>;
|
|
24
|
+
/** POST /api/chat/:id/reject */
|
|
25
|
+
rejectToolCall(_req: Request, res: Response): Promise<void>;
|
|
26
|
+
private handleStream;
|
|
27
|
+
private mapChat;
|
|
28
|
+
private mapMessage;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=chat.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.controller.d.ts","sourceRoot":"","sources":["../../src/http/chat.controller.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAErD,qBAAqB;IACf,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB5D,oBAAoB;IACd,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3D,wBAAwB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzD,0BAA0B;IACpB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5D,2BAA2B;IACrB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5D,kCAAkC;IAC5B,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC7D,iCAAiC;IAC3B,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjE,gCAAgC;IAC1B,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YAMnD,YAAY;IAwB1B,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,UAAU;CAWnB"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat Controller
|
|
3
|
+
* HTTP layer for the Autopilot Chat (talk to the AI pilot)
|
|
4
|
+
*/
|
|
5
|
+
export class ChatController {
|
|
6
|
+
chatService;
|
|
7
|
+
constructor(chatService) {
|
|
8
|
+
this.chatService = chatService;
|
|
9
|
+
}
|
|
10
|
+
/** POST /api/chat */
|
|
11
|
+
async createChat(req, res) {
|
|
12
|
+
const userId = req.user.id;
|
|
13
|
+
const { title, mode, model, temperature, systemPrompt } = req.body;
|
|
14
|
+
const chat = await this.chatService.createChat({
|
|
15
|
+
userId,
|
|
16
|
+
title,
|
|
17
|
+
mode,
|
|
18
|
+
model,
|
|
19
|
+
temperature,
|
|
20
|
+
systemPrompt,
|
|
21
|
+
});
|
|
22
|
+
res.status(201).json({ success: true, data: this.mapChat(chat) });
|
|
23
|
+
}
|
|
24
|
+
/** GET /api/chat */
|
|
25
|
+
async listChats(req, res) {
|
|
26
|
+
const userId = req.user.id;
|
|
27
|
+
const limit = req.query.limit ? Number(req.query.limit) : 20;
|
|
28
|
+
const chats = await this.chatService.getUserChats(userId, limit);
|
|
29
|
+
res.json({
|
|
30
|
+
success: true,
|
|
31
|
+
data: { chats: chats.map((c) => this.mapChat(c)), total: chats.length },
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/** GET /api/chat/:id */
|
|
35
|
+
async getChat(req, res) {
|
|
36
|
+
const ctx = await this.chatService.getChatWithMessages(req.params.id);
|
|
37
|
+
if (!ctx) {
|
|
38
|
+
res.status(404).json({ success: false, error: 'Chat not found' });
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (ctx.chat.userId !== req.user.id) {
|
|
42
|
+
res.status(403).json({ success: false, error: 'Access denied' });
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
res.json({
|
|
46
|
+
success: true,
|
|
47
|
+
data: {
|
|
48
|
+
chat: this.mapChat(ctx.chat),
|
|
49
|
+
messages: ctx.messages.map((m) => this.mapMessage(m)),
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/** PATCH /api/chat/:id */
|
|
54
|
+
async updateChat(req, res) {
|
|
55
|
+
const existing = await this.chatService.getChat(req.params.id);
|
|
56
|
+
if (!existing || existing.userId !== req.user.id) {
|
|
57
|
+
res.status(404).json({ success: false, error: 'Chat not found' });
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const chat = await this.chatService.updateChat(req.params.id, req.body);
|
|
61
|
+
res.json({ success: true, data: this.mapChat(chat) });
|
|
62
|
+
}
|
|
63
|
+
/** DELETE /api/chat/:id */
|
|
64
|
+
async deleteChat(req, res) {
|
|
65
|
+
const existing = await this.chatService.getChat(req.params.id);
|
|
66
|
+
if (!existing || existing.userId !== req.user.id) {
|
|
67
|
+
res.status(404).json({ success: false, error: 'Chat not found' });
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
await this.chatService.deleteChat(req.params.id);
|
|
71
|
+
res.json({ success: true, message: 'Chat deleted' });
|
|
72
|
+
}
|
|
73
|
+
/** POST /api/chat/:id/messages */
|
|
74
|
+
async sendMessage(req, res) {
|
|
75
|
+
const existing = await this.chatService.getChat(req.params.id);
|
|
76
|
+
if (!existing || existing.userId !== req.user.id) {
|
|
77
|
+
res.status(404).json({ success: false, error: 'Chat not found' });
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const { content, model, stream } = req.body;
|
|
81
|
+
if (stream) {
|
|
82
|
+
await this.handleStream(res, req.params.id, content, model);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const result = await this.chatService.sendMessage({
|
|
86
|
+
chatId: req.params.id,
|
|
87
|
+
content,
|
|
88
|
+
model,
|
|
89
|
+
});
|
|
90
|
+
res.json({
|
|
91
|
+
success: true,
|
|
92
|
+
data: {
|
|
93
|
+
userMessage: this.mapMessage(result.message),
|
|
94
|
+
assistantMessage: this.mapMessage(result.assistantMessage),
|
|
95
|
+
usedMemories: result.usedMemories,
|
|
96
|
+
tokens: result.tokens,
|
|
97
|
+
latencyMs: result.latencyMs,
|
|
98
|
+
structured: result.structured,
|
|
99
|
+
pendingApproval: result.pendingApproval,
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/** POST /api/chat/:id/approve */
|
|
104
|
+
async approveToolCall(req, res) {
|
|
105
|
+
const { toolName, arguments: args, conversationState } = req.body;
|
|
106
|
+
const userId = req.user.id;
|
|
107
|
+
const result = await this.chatService.approveToolCall(req.params.id, toolName, args, userId, conversationState);
|
|
108
|
+
res.json({
|
|
109
|
+
success: true,
|
|
110
|
+
data: {
|
|
111
|
+
assistantMessage: this.mapMessage(result.assistantMessage),
|
|
112
|
+
tokens: result.tokens,
|
|
113
|
+
latencyMs: result.latencyMs,
|
|
114
|
+
structured: result.structured,
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/** POST /api/chat/:id/reject */
|
|
119
|
+
async rejectToolCall(_req, res) {
|
|
120
|
+
res.json({ success: true, data: { message: 'Tool call rejected by user.' } });
|
|
121
|
+
}
|
|
122
|
+
// ── SSE Streaming ──────────────────────────────────────────────
|
|
123
|
+
async handleStream(res, chatId, content, model) {
|
|
124
|
+
res.setHeader('Content-Type', 'text/event-stream');
|
|
125
|
+
res.setHeader('Cache-Control', 'no-cache');
|
|
126
|
+
res.setHeader('Connection', 'keep-alive');
|
|
127
|
+
try {
|
|
128
|
+
for await (const chunk of this.chatService.streamMessage({ chatId, content, model })) {
|
|
129
|
+
res.write(`data: ${JSON.stringify(chunk)}\n\n`);
|
|
130
|
+
if (chunk.type === 'done' || chunk.type === 'error')
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
res.write(`data: ${JSON.stringify({ type: 'error', error: String(error) })}\n\n`);
|
|
136
|
+
}
|
|
137
|
+
res.end();
|
|
138
|
+
}
|
|
139
|
+
// ── Mappers ────────────────────────────────────────────────────
|
|
140
|
+
mapChat(chat) {
|
|
141
|
+
return {
|
|
142
|
+
id: chat.id,
|
|
143
|
+
title: chat.title,
|
|
144
|
+
mode: chat.mode,
|
|
145
|
+
model: chat.model,
|
|
146
|
+
temperature: chat.temperature,
|
|
147
|
+
createdAt: chat.createdAt.toISOString(),
|
|
148
|
+
updatedAt: chat.updatedAt.toISOString(),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
mapMessage(msg) {
|
|
152
|
+
return {
|
|
153
|
+
id: msg.id,
|
|
154
|
+
role: msg.role,
|
|
155
|
+
content: msg.content,
|
|
156
|
+
model: msg.model,
|
|
157
|
+
tokens: msg.tokens,
|
|
158
|
+
latencyMs: msg.latencyMs,
|
|
159
|
+
createdAt: msg.createdAt.toISOString(),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=chat.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.controller.js","sourceRoot":"","sources":["../../src/http/chat.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Router, Request, Response, NextFunction } from 'express';
|
|
2
|
+
import type { ChatController } from './chat.controller.js';
|
|
3
|
+
export type AuthMiddleware = (req: Request, res: Response, next: NextFunction) => void | Promise<void>;
|
|
4
|
+
export declare function createChatRoutes(controller: ChatController, authMiddleware: AuthMiddleware): Router;
|
|
5
|
+
//# sourceMappingURL=chat.routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.routes.d.ts","sourceRoot":"","sources":["../../src/http/chat.routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAoC3D,MAAM,MAAM,cAAc,GAAG,CAC3B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,KACf,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,cAAc,EAC1B,cAAc,EAAE,cAAc,GAC7B,MAAM,CAeR"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import { createChatSchema, updateChatSchema, sendMessageSchema, chatIdParamSchema, chatQuerySchema, } from './chat.validation.js';
|
|
3
|
+
/** Wrap async route handlers */
|
|
4
|
+
function asyncHandler(fn) {
|
|
5
|
+
return (req, res, next) => {
|
|
6
|
+
Promise.resolve(fn(req, res, next)).catch(next);
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/** Zod validation middleware */
|
|
10
|
+
function validate(schema, source = 'body') {
|
|
11
|
+
return (req, res, next) => {
|
|
12
|
+
const result = schema.safeParse(req[source]);
|
|
13
|
+
if (!result.success) {
|
|
14
|
+
res.status(400).json({
|
|
15
|
+
success: false,
|
|
16
|
+
error: 'Validation error',
|
|
17
|
+
details: result.error.errors,
|
|
18
|
+
});
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
Object.assign(req, { [source]: result.data });
|
|
22
|
+
next();
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function createChatRoutes(controller, authMiddleware) {
|
|
26
|
+
const router = Router();
|
|
27
|
+
router.use(authMiddleware);
|
|
28
|
+
router.post('/', validate(createChatSchema), asyncHandler(controller.createChat.bind(controller)));
|
|
29
|
+
router.get('/', validate(chatQuerySchema, 'query'), asyncHandler(controller.listChats.bind(controller)));
|
|
30
|
+
router.get('/:id', validate(chatIdParamSchema, 'params'), asyncHandler(controller.getChat.bind(controller)));
|
|
31
|
+
router.patch('/:id', validate(chatIdParamSchema, 'params'), validate(updateChatSchema), asyncHandler(controller.updateChat.bind(controller)));
|
|
32
|
+
router.delete('/:id', validate(chatIdParamSchema, 'params'), asyncHandler(controller.deleteChat.bind(controller)));
|
|
33
|
+
router.post('/:id/messages', validate(chatIdParamSchema, 'params'), validate(sendMessageSchema), asyncHandler(controller.sendMessage.bind(controller)));
|
|
34
|
+
router.post('/:id/approve', validate(chatIdParamSchema, 'params'), asyncHandler(controller.approveToolCall.bind(controller)));
|
|
35
|
+
router.post('/:id/reject', validate(chatIdParamSchema, 'params'), asyncHandler(controller.rejectToolCall.bind(controller)));
|
|
36
|
+
return router;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=chat.routes.js.map
|