@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.
Files changed (295) hide show
  1. package/dist/artifact/artifact.repository.d.ts +17 -0
  2. package/dist/artifact/artifact.repository.d.ts.map +1 -0
  3. package/dist/artifact/artifact.repository.js +66 -0
  4. package/dist/artifact/artifact.repository.js.map +1 -0
  5. package/dist/artifact/artifact.service.d.ts +22 -0
  6. package/dist/artifact/artifact.service.d.ts.map +1 -0
  7. package/dist/artifact/artifact.service.js +87 -0
  8. package/dist/artifact/artifact.service.js.map +1 -0
  9. package/dist/artifact/artifact.types.d.ts +41 -0
  10. package/dist/artifact/artifact.types.d.ts.map +1 -0
  11. package/dist/artifact/artifact.types.js +6 -0
  12. package/dist/artifact/artifact.types.js.map +1 -0
  13. package/dist/artifact/index.d.ts +6 -0
  14. package/dist/artifact/index.d.ts.map +1 -0
  15. package/dist/artifact/index.js +4 -0
  16. package/dist/artifact/index.js.map +1 -0
  17. package/dist/chat/chat-memory.integration.d.ts +59 -0
  18. package/dist/chat/chat-memory.integration.d.ts.map +1 -0
  19. package/dist/chat/chat-memory.integration.js +148 -0
  20. package/dist/chat/chat-memory.integration.js.map +1 -0
  21. package/dist/chat/chat.repository.d.ts +58 -0
  22. package/dist/chat/chat.repository.d.ts.map +1 -0
  23. package/dist/chat/chat.repository.js +128 -0
  24. package/dist/chat/chat.repository.js.map +1 -0
  25. package/dist/chat/chat.service.d.ts +28 -0
  26. package/dist/chat/chat.service.d.ts.map +1 -0
  27. package/dist/chat/chat.service.js +217 -0
  28. package/dist/chat/chat.service.js.map +1 -0
  29. package/dist/chat/chat.types.d.ts +198 -0
  30. package/dist/chat/chat.types.d.ts.map +1 -0
  31. package/dist/chat/chat.types.js +8 -0
  32. package/dist/chat/chat.types.js.map +1 -0
  33. package/dist/chat/index.d.ts +17 -0
  34. package/dist/chat/index.d.ts.map +1 -0
  35. package/dist/chat/index.js +16 -0
  36. package/dist/chat/index.js.map +1 -0
  37. package/dist/chat/memory-detector.d.ts +53 -0
  38. package/dist/chat/memory-detector.d.ts.map +1 -0
  39. package/dist/chat/memory-detector.js +172 -0
  40. package/dist/chat/memory-detector.js.map +1 -0
  41. package/dist/chat/prompts/index.d.ts +6 -0
  42. package/dist/chat/prompts/index.d.ts.map +1 -0
  43. package/dist/chat/prompts/index.js +6 -0
  44. package/dist/chat/prompts/index.js.map +1 -0
  45. package/dist/chat/prompts/system.prompts.d.ts +23 -0
  46. package/dist/chat/prompts/system.prompts.d.ts.map +1 -0
  47. package/dist/chat/prompts/system.prompts.js +102 -0
  48. package/dist/chat/prompts/system.prompts.js.map +1 -0
  49. package/dist/chat/response-parser.d.ts +24 -0
  50. package/dist/chat/response-parser.d.ts.map +1 -0
  51. package/dist/chat/response-parser.js +198 -0
  52. package/dist/chat/response-parser.js.map +1 -0
  53. package/dist/chat/response.types.d.ts +90 -0
  54. package/dist/chat/response.types.d.ts.map +1 -0
  55. package/dist/chat/response.types.js +6 -0
  56. package/dist/chat/response.types.js.map +1 -0
  57. package/dist/common/errors.d.ts +60 -0
  58. package/dist/common/errors.d.ts.map +1 -0
  59. package/dist/common/errors.js +105 -0
  60. package/dist/common/errors.js.map +1 -0
  61. package/dist/common/index.d.ts +3 -0
  62. package/dist/common/index.d.ts.map +1 -0
  63. package/dist/common/index.js +3 -0
  64. package/dist/common/index.js.map +1 -0
  65. package/dist/common/retry.d.ts +23 -0
  66. package/dist/common/retry.d.ts.map +1 -0
  67. package/dist/common/retry.js +57 -0
  68. package/dist/common/retry.js.map +1 -0
  69. package/dist/create-mega-agent.d.ts +100 -0
  70. package/dist/create-mega-agent.d.ts.map +1 -0
  71. package/dist/create-mega-agent.js +153 -0
  72. package/dist/create-mega-agent.js.map +1 -0
  73. package/dist/embedding/embedding.service.d.ts +34 -0
  74. package/dist/embedding/embedding.service.d.ts.map +1 -0
  75. package/dist/embedding/embedding.service.js +68 -0
  76. package/dist/embedding/embedding.service.js.map +1 -0
  77. package/dist/embedding/embedding.types.d.ts +38 -0
  78. package/dist/embedding/embedding.types.d.ts.map +1 -0
  79. package/dist/embedding/embedding.types.js +6 -0
  80. package/dist/embedding/embedding.types.js.map +1 -0
  81. package/dist/embedding/index.d.ts +9 -0
  82. package/dist/embedding/index.d.ts.map +1 -0
  83. package/dist/embedding/index.js +9 -0
  84. package/dist/embedding/index.js.map +1 -0
  85. package/dist/embedding/providers/base.provider.d.ts +29 -0
  86. package/dist/embedding/providers/base.provider.d.ts.map +1 -0
  87. package/dist/embedding/providers/base.provider.js +19 -0
  88. package/dist/embedding/providers/base.provider.js.map +1 -0
  89. package/dist/embedding/providers/index.d.ts +7 -0
  90. package/dist/embedding/providers/index.d.ts.map +1 -0
  91. package/dist/embedding/providers/index.js +7 -0
  92. package/dist/embedding/providers/index.js.map +1 -0
  93. package/dist/embedding/providers/openai.provider.d.ts +17 -0
  94. package/dist/embedding/providers/openai.provider.d.ts.map +1 -0
  95. package/dist/embedding/providers/openai.provider.js +73 -0
  96. package/dist/embedding/providers/openai.provider.js.map +1 -0
  97. package/dist/http/chat.controller.d.ts +30 -0
  98. package/dist/http/chat.controller.d.ts.map +1 -0
  99. package/dist/http/chat.controller.js +163 -0
  100. package/dist/http/chat.controller.js.map +1 -0
  101. package/dist/http/chat.routes.d.ts +5 -0
  102. package/dist/http/chat.routes.d.ts.map +1 -0
  103. package/dist/http/chat.routes.js +38 -0
  104. package/dist/http/chat.routes.js.map +1 -0
  105. package/dist/http/chat.validation.d.ts +70 -0
  106. package/dist/http/chat.validation.d.ts.map +1 -0
  107. package/dist/http/chat.validation.js +28 -0
  108. package/dist/http/chat.validation.js.map +1 -0
  109. package/dist/incident/incident.correlator.d.ts +39 -0
  110. package/dist/incident/incident.correlator.d.ts.map +1 -0
  111. package/dist/incident/incident.correlator.js +129 -0
  112. package/dist/incident/incident.correlator.js.map +1 -0
  113. package/dist/incident/incident.detector.d.ts +62 -0
  114. package/dist/incident/incident.detector.d.ts.map +1 -0
  115. package/dist/incident/incident.detector.js +192 -0
  116. package/dist/incident/incident.detector.js.map +1 -0
  117. package/dist/incident/incident.repository.d.ts +79 -0
  118. package/dist/incident/incident.repository.d.ts.map +1 -0
  119. package/dist/incident/incident.repository.js +216 -0
  120. package/dist/incident/incident.repository.js.map +1 -0
  121. package/dist/incident/incident.service.d.ts +71 -0
  122. package/dist/incident/incident.service.d.ts.map +1 -0
  123. package/dist/incident/incident.service.js +217 -0
  124. package/dist/incident/incident.service.js.map +1 -0
  125. package/dist/incident/incident.types.d.ts +115 -0
  126. package/dist/incident/incident.types.d.ts.map +1 -0
  127. package/dist/incident/incident.types.js +6 -0
  128. package/dist/incident/incident.types.js.map +1 -0
  129. package/dist/incident/index.d.ts +13 -0
  130. package/dist/incident/index.d.ts.map +1 -0
  131. package/dist/incident/index.js +13 -0
  132. package/dist/incident/index.js.map +1 -0
  133. package/dist/index.d.ts +26 -0
  134. package/dist/index.d.ts.map +1 -0
  135. package/dist/index.js +26 -0
  136. package/dist/index.js.map +1 -0
  137. package/dist/llm/index.d.ts +8 -0
  138. package/dist/llm/index.d.ts.map +1 -0
  139. package/dist/llm/index.js +9 -0
  140. package/dist/llm/index.js.map +1 -0
  141. package/dist/llm/llm.service.d.ts +52 -0
  142. package/dist/llm/llm.service.d.ts.map +1 -0
  143. package/dist/llm/llm.service.js +141 -0
  144. package/dist/llm/llm.service.js.map +1 -0
  145. package/dist/llm/llm.types.d.ts +77 -0
  146. package/dist/llm/llm.types.d.ts.map +1 -0
  147. package/dist/llm/llm.types.js +5 -0
  148. package/dist/llm/llm.types.js.map +1 -0
  149. package/dist/llm/providers/anthropic.provider.d.ts +16 -0
  150. package/dist/llm/providers/anthropic.provider.d.ts.map +1 -0
  151. package/dist/llm/providers/anthropic.provider.js +118 -0
  152. package/dist/llm/providers/anthropic.provider.js.map +1 -0
  153. package/dist/llm/providers/base.provider.d.ts +17 -0
  154. package/dist/llm/providers/base.provider.d.ts.map +1 -0
  155. package/dist/llm/providers/base.provider.js +18 -0
  156. package/dist/llm/providers/base.provider.js.map +1 -0
  157. package/dist/llm/providers/custom.provider.d.ts +15 -0
  158. package/dist/llm/providers/custom.provider.d.ts.map +1 -0
  159. package/dist/llm/providers/custom.provider.js +110 -0
  160. package/dist/llm/providers/custom.provider.js.map +1 -0
  161. package/dist/llm/providers/gemini.provider.d.ts +19 -0
  162. package/dist/llm/providers/gemini.provider.d.ts.map +1 -0
  163. package/dist/llm/providers/gemini.provider.js +98 -0
  164. package/dist/llm/providers/gemini.provider.js.map +1 -0
  165. package/dist/llm/providers/index.d.ts +10 -0
  166. package/dist/llm/providers/index.d.ts.map +1 -0
  167. package/dist/llm/providers/index.js +10 -0
  168. package/dist/llm/providers/index.js.map +1 -0
  169. package/dist/llm/providers/openai.provider.d.ts +15 -0
  170. package/dist/llm/providers/openai.provider.d.ts.map +1 -0
  171. package/dist/llm/providers/openai.provider.js +57 -0
  172. package/dist/llm/providers/openai.provider.js.map +1 -0
  173. package/dist/mcp/index.d.ts +13 -0
  174. package/dist/mcp/index.d.ts.map +1 -0
  175. package/dist/mcp/index.js +17 -0
  176. package/dist/mcp/index.js.map +1 -0
  177. package/dist/mcp/mcp.client.d.ts +57 -0
  178. package/dist/mcp/mcp.client.d.ts.map +1 -0
  179. package/dist/mcp/mcp.client.js +150 -0
  180. package/dist/mcp/mcp.client.js.map +1 -0
  181. package/dist/mcp/mcp.service.d.ts +64 -0
  182. package/dist/mcp/mcp.service.d.ts.map +1 -0
  183. package/dist/mcp/mcp.service.js +207 -0
  184. package/dist/mcp/mcp.service.js.map +1 -0
  185. package/dist/mcp/mcp.types.d.ts +142 -0
  186. package/dist/mcp/mcp.types.d.ts.map +1 -0
  187. package/dist/mcp/mcp.types.js +6 -0
  188. package/dist/mcp/mcp.types.js.map +1 -0
  189. package/dist/mcp/presets/common-sources.d.ts +28 -0
  190. package/dist/mcp/presets/common-sources.d.ts.map +1 -0
  191. package/dist/mcp/presets/common-sources.js +114 -0
  192. package/dist/mcp/presets/common-sources.js.map +1 -0
  193. package/dist/mcp/presets/index.d.ts +5 -0
  194. package/dist/mcp/presets/index.d.ts.map +1 -0
  195. package/dist/mcp/presets/index.js +5 -0
  196. package/dist/mcp/presets/index.js.map +1 -0
  197. package/dist/mcp/source.repository.d.ts +68 -0
  198. package/dist/mcp/source.repository.d.ts.map +1 -0
  199. package/dist/mcp/source.repository.js +114 -0
  200. package/dist/mcp/source.repository.js.map +1 -0
  201. package/dist/mcp/source.service.d.ts +74 -0
  202. package/dist/mcp/source.service.d.ts.map +1 -0
  203. package/dist/mcp/source.service.js +181 -0
  204. package/dist/mcp/source.service.js.map +1 -0
  205. package/dist/mcp/transports/http.transport.d.ts +45 -0
  206. package/dist/mcp/transports/http.transport.d.ts.map +1 -0
  207. package/dist/mcp/transports/http.transport.js +64 -0
  208. package/dist/mcp/transports/http.transport.js.map +1 -0
  209. package/dist/mcp/transports/index.d.ts +7 -0
  210. package/dist/mcp/transports/index.d.ts.map +1 -0
  211. package/dist/mcp/transports/index.js +7 -0
  212. package/dist/mcp/transports/index.js.map +1 -0
  213. package/dist/mcp/transports/stdio.transport.d.ts +21 -0
  214. package/dist/mcp/transports/stdio.transport.d.ts.map +1 -0
  215. package/dist/mcp/transports/stdio.transport.js +29 -0
  216. package/dist/mcp/transports/stdio.transport.js.map +1 -0
  217. package/dist/memory/index.d.ts +10 -0
  218. package/dist/memory/index.d.ts.map +1 -0
  219. package/dist/memory/index.js +10 -0
  220. package/dist/memory/index.js.map +1 -0
  221. package/dist/memory/memory.repository.d.ts +62 -0
  222. package/dist/memory/memory.repository.d.ts.map +1 -0
  223. package/dist/memory/memory.repository.js +148 -0
  224. package/dist/memory/memory.repository.js.map +1 -0
  225. package/dist/memory/memory.service.d.ts +63 -0
  226. package/dist/memory/memory.service.d.ts.map +1 -0
  227. package/dist/memory/memory.service.js +263 -0
  228. package/dist/memory/memory.service.js.map +1 -0
  229. package/dist/memory/memory.types.d.ts +104 -0
  230. package/dist/memory/memory.types.d.ts.map +1 -0
  231. package/dist/memory/memory.types.js +8 -0
  232. package/dist/memory/memory.types.js.map +1 -0
  233. package/dist/qdrant/index.d.ts +8 -0
  234. package/dist/qdrant/index.d.ts.map +1 -0
  235. package/dist/qdrant/index.js +6 -0
  236. package/dist/qdrant/index.js.map +1 -0
  237. package/dist/qdrant/qdrant.service.d.ts +63 -0
  238. package/dist/qdrant/qdrant.service.d.ts.map +1 -0
  239. package/dist/qdrant/qdrant.service.js +201 -0
  240. package/dist/qdrant/qdrant.service.js.map +1 -0
  241. package/dist/qdrant/qdrant.types.d.ts +55 -0
  242. package/dist/qdrant/qdrant.types.d.ts.map +1 -0
  243. package/dist/qdrant/qdrant.types.js +6 -0
  244. package/dist/qdrant/qdrant.types.js.map +1 -0
  245. package/dist/tools/core-tools.d.ts +7 -0
  246. package/dist/tools/core-tools.d.ts.map +1 -0
  247. package/dist/tools/core-tools.js +52 -0
  248. package/dist/tools/core-tools.js.map +1 -0
  249. package/dist/tools/index.d.ts +4 -0
  250. package/dist/tools/index.d.ts.map +1 -0
  251. package/dist/tools/index.js +3 -0
  252. package/dist/tools/index.js.map +1 -0
  253. package/dist/tools/tool-registry.d.ts +51 -0
  254. package/dist/tools/tool-registry.d.ts.map +1 -0
  255. package/dist/tools/tool-registry.js +50 -0
  256. package/dist/tools/tool-registry.js.map +1 -0
  257. package/dist/workflow/actions/base.action.d.ts +50 -0
  258. package/dist/workflow/actions/base.action.d.ts.map +1 -0
  259. package/dist/workflow/actions/base.action.js +59 -0
  260. package/dist/workflow/actions/base.action.js.map +1 -0
  261. package/dist/workflow/actions/incident.action.d.ts +13 -0
  262. package/dist/workflow/actions/incident.action.d.ts.map +1 -0
  263. package/dist/workflow/actions/incident.action.js +70 -0
  264. package/dist/workflow/actions/incident.action.js.map +1 -0
  265. package/dist/workflow/actions/index.d.ts +9 -0
  266. package/dist/workflow/actions/index.d.ts.map +1 -0
  267. package/dist/workflow/actions/index.js +11 -0
  268. package/dist/workflow/actions/index.js.map +1 -0
  269. package/dist/workflow/actions/notify.action.d.ts +18 -0
  270. package/dist/workflow/actions/notify.action.d.ts.map +1 -0
  271. package/dist/workflow/actions/notify.action.js +106 -0
  272. package/dist/workflow/actions/notify.action.js.map +1 -0
  273. package/dist/workflow/actions/report.action.d.ts +13 -0
  274. package/dist/workflow/actions/report.action.d.ts.map +1 -0
  275. package/dist/workflow/actions/report.action.js +64 -0
  276. package/dist/workflow/actions/report.action.js.map +1 -0
  277. package/dist/workflow/index.d.ts +10 -0
  278. package/dist/workflow/index.d.ts.map +1 -0
  279. package/dist/workflow/index.js +11 -0
  280. package/dist/workflow/index.js.map +1 -0
  281. package/dist/workflow/workflow.repository.d.ts +90 -0
  282. package/dist/workflow/workflow.repository.d.ts.map +1 -0
  283. package/dist/workflow/workflow.repository.js +238 -0
  284. package/dist/workflow/workflow.repository.js.map +1 -0
  285. package/dist/workflow/workflow.service.d.ts +98 -0
  286. package/dist/workflow/workflow.service.d.ts.map +1 -0
  287. package/dist/workflow/workflow.service.js +374 -0
  288. package/dist/workflow/workflow.service.js.map +1 -0
  289. package/dist/workflow/workflow.types.d.ts +146 -0
  290. package/dist/workflow/workflow.types.d.ts.map +1 -0
  291. package/dist/workflow/workflow.types.js +8 -0
  292. package/dist/workflow/workflow.types.js.map +1 -0
  293. package/package.json +67 -0
  294. package/prisma/schema.prisma +551 -0
  295. 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,6 @@
1
+ /**
2
+ * Embedding Service Types
3
+ * Type definitions for the Embedding service abstraction
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=embedding.types.js.map
@@ -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,7 @@
1
+ /**
2
+ * Embedding Providers Index
3
+ * Export all embedding providers
4
+ */
5
+ export { BaseEmbeddingProvider } from './base.provider.js';
6
+ export { OpenAIEmbeddingProvider } from './openai.provider.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -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,7 @@
1
+ /**
2
+ * Embedding Providers Index
3
+ * Export all embedding providers
4
+ */
5
+ export { BaseEmbeddingProvider } from './base.provider.js';
6
+ export { OpenAIEmbeddingProvider } from './openai.provider.js';
7
+ //# sourceMappingURL=index.js.map
@@ -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":"AAAA;;;GAGG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAQ5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,OAAO,uBAAwB,SAAQ,qBAAqB;IACvD,QAAQ,GAAG,QAAiB,CAAC;IAC7B,YAAY,GAAG,wBAAwB,CAAC;IAEzC,MAAM,CAAS;IAEvB,8BAA8B;IAC9B,MAAM,CAAU,UAAU,GAA2B;QACnD,wBAAwB,EAAE,IAAI;QAC9B,wBAAwB,EAAE,IAAI;QAC9B,wBAAwB,EAAE,IAAI;KAC/B,CAAC;IAEF,YAAY,MAAc,EAAE,MAAkB,EAAE,YAAqB;QACnE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,IAAI,YAAY,EAAE,CAAC;YAChB,IAAiC,CAAC,YAAY,GAAG,YAAY,CAAC;QACjE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAyB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE;YACxC,KAAK;YACL,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;SAChC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACnD,KAAK;YACL,KAAK,EAAE,OAAO,CAAC,IAAI;SACpB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE7C,OAAO;YACL,SAAS;YACT,KAAK;YACL,UAAU,EAAE,SAAS,CAAC,MAAM;YAC5B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA8B;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC/C,KAAK;YACL,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;SAC5B,CAAC,CAAC;QAEH,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,MAAM,aAAa,GAAe,EAAE,CAAC;QACrC,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YAErD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;gBACnD,KAAK;gBACL,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YAEH,aAAa,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3D,WAAW,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;QAC7C,CAAC;QAED,OAAO;YACL,UAAU,EAAE,aAAa;YACzB,KAAK;YACL,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;YACzC,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,KAAc;QAC1B,MAAM,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QACrC,OAAO,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACvD,CAAC"}
@@ -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