@measureoneinc/savant 1.0.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 (398) hide show
  1. package/README-SDK.md +148 -0
  2. package/dist/ai/agents/domain-identifier.agent.d.ts +34 -0
  3. package/dist/ai/agents/domain-identifier.agent.d.ts.map +1 -0
  4. package/dist/ai/agents/domain-identifier.agent.js +176 -0
  5. package/dist/ai/agents/domain-identifier.agent.js.map +1 -0
  6. package/dist/ai/agents/dynamic-agent.d.ts +105 -0
  7. package/dist/ai/agents/dynamic-agent.d.ts.map +1 -0
  8. package/dist/ai/agents/dynamic-agent.js +505 -0
  9. package/dist/ai/agents/dynamic-agent.js.map +1 -0
  10. package/dist/ai/agents/executor.agent.d.ts +25 -0
  11. package/dist/ai/agents/executor.agent.d.ts.map +1 -0
  12. package/dist/ai/agents/executor.agent.js +44 -0
  13. package/dist/ai/agents/executor.agent.js.map +1 -0
  14. package/dist/ai/agents/index.d.ts +17 -0
  15. package/dist/ai/agents/index.d.ts.map +1 -0
  16. package/dist/ai/agents/index.js +29 -0
  17. package/dist/ai/agents/index.js.map +1 -0
  18. package/dist/ai/agents/knowledge.agent.d.ts +25 -0
  19. package/dist/ai/agents/knowledge.agent.d.ts.map +1 -0
  20. package/dist/ai/agents/knowledge.agent.js +42 -0
  21. package/dist/ai/agents/knowledge.agent.js.map +1 -0
  22. package/dist/ai/agents/learning.agent.d.ts +63 -0
  23. package/dist/ai/agents/learning.agent.d.ts.map +1 -0
  24. package/dist/ai/agents/learning.agent.js +288 -0
  25. package/dist/ai/agents/learning.agent.js.map +1 -0
  26. package/dist/ai/agents/orchestrator.agent.d.ts +26 -0
  27. package/dist/ai/agents/orchestrator.agent.d.ts.map +1 -0
  28. package/dist/ai/agents/orchestrator.agent.js +42 -0
  29. package/dist/ai/agents/orchestrator.agent.js.map +1 -0
  30. package/dist/ai/agents/planner.agent.d.ts +25 -0
  31. package/dist/ai/agents/planner.agent.d.ts.map +1 -0
  32. package/dist/ai/agents/planner.agent.js +36 -0
  33. package/dist/ai/agents/planner.agent.js.map +1 -0
  34. package/dist/ai/agents/response-parser.d.ts +23 -0
  35. package/dist/ai/agents/response-parser.d.ts.map +1 -0
  36. package/dist/ai/agents/response-parser.js +313 -0
  37. package/dist/ai/agents/response-parser.js.map +1 -0
  38. package/dist/ai/agents/summarizer.agent.d.ts +38 -0
  39. package/dist/ai/agents/summarizer.agent.d.ts.map +1 -0
  40. package/dist/ai/agents/summarizer.agent.js +245 -0
  41. package/dist/ai/agents/summarizer.agent.js.map +1 -0
  42. package/dist/ai/instructions/domain-identifier.instructions.d.ts +10 -0
  43. package/dist/ai/instructions/domain-identifier.instructions.d.ts.map +1 -0
  44. package/dist/ai/instructions/domain-identifier.instructions.js +63 -0
  45. package/dist/ai/instructions/domain-identifier.instructions.js.map +1 -0
  46. package/dist/ai/instructions/executor.instructions.d.ts +11 -0
  47. package/dist/ai/instructions/executor.instructions.d.ts.map +1 -0
  48. package/dist/ai/instructions/executor.instructions.js +218 -0
  49. package/dist/ai/instructions/executor.instructions.js.map +1 -0
  50. package/dist/ai/instructions/knowledge.instructions.d.ts +11 -0
  51. package/dist/ai/instructions/knowledge.instructions.d.ts.map +1 -0
  52. package/dist/ai/instructions/knowledge.instructions.js +145 -0
  53. package/dist/ai/instructions/knowledge.instructions.js.map +1 -0
  54. package/dist/ai/instructions/learning.instructions.d.ts +11 -0
  55. package/dist/ai/instructions/learning.instructions.d.ts.map +1 -0
  56. package/dist/ai/instructions/learning.instructions.js +226 -0
  57. package/dist/ai/instructions/learning.instructions.js.map +1 -0
  58. package/dist/ai/instructions/orchestrator.instructions.d.ts +11 -0
  59. package/dist/ai/instructions/orchestrator.instructions.d.ts.map +1 -0
  60. package/dist/ai/instructions/orchestrator.instructions.js +148 -0
  61. package/dist/ai/instructions/orchestrator.instructions.js.map +1 -0
  62. package/dist/ai/instructions/planner.instructions.d.ts +12 -0
  63. package/dist/ai/instructions/planner.instructions.d.ts.map +1 -0
  64. package/dist/ai/instructions/planner.instructions.js +129 -0
  65. package/dist/ai/instructions/planner.instructions.js.map +1 -0
  66. package/dist/ai/instructions/summarizer.instructions.d.ts +11 -0
  67. package/dist/ai/instructions/summarizer.instructions.d.ts.map +1 -0
  68. package/dist/ai/instructions/summarizer.instructions.js +84 -0
  69. package/dist/ai/instructions/summarizer.instructions.js.map +1 -0
  70. package/dist/ai/learning/execution-learner.d.ts +79 -0
  71. package/dist/ai/learning/execution-learner.d.ts.map +1 -0
  72. package/dist/ai/learning/execution-learner.js +536 -0
  73. package/dist/ai/learning/execution-learner.js.map +1 -0
  74. package/dist/ai/response_handlers/base-handler.d.ts +73 -0
  75. package/dist/ai/response_handlers/base-handler.d.ts.map +1 -0
  76. package/dist/ai/response_handlers/base-handler.js +153 -0
  77. package/dist/ai/response_handlers/base-handler.js.map +1 -0
  78. package/dist/ai/response_handlers/direct-response-handler.d.ts +18 -0
  79. package/dist/ai/response_handlers/direct-response-handler.d.ts.map +1 -0
  80. package/dist/ai/response_handlers/direct-response-handler.js +86 -0
  81. package/dist/ai/response_handlers/direct-response-handler.js.map +1 -0
  82. package/dist/ai/response_handlers/error-handler.d.ts +13 -0
  83. package/dist/ai/response_handlers/error-handler.d.ts.map +1 -0
  84. package/dist/ai/response_handlers/error-handler.js +72 -0
  85. package/dist/ai/response_handlers/error-handler.js.map +1 -0
  86. package/dist/ai/response_handlers/handler-registry.d.ts +51 -0
  87. package/dist/ai/response_handlers/handler-registry.d.ts.map +1 -0
  88. package/dist/ai/response_handlers/handler-registry.js +268 -0
  89. package/dist/ai/response_handlers/handler-registry.js.map +1 -0
  90. package/dist/ai/response_handlers/index.d.ts +16 -0
  91. package/dist/ai/response_handlers/index.d.ts.map +1 -0
  92. package/dist/ai/response_handlers/index.js +29 -0
  93. package/dist/ai/response_handlers/index.js.map +1 -0
  94. package/dist/ai/response_handlers/message-handler.d.ts +23 -0
  95. package/dist/ai/response_handlers/message-handler.d.ts.map +1 -0
  96. package/dist/ai/response_handlers/message-handler.js +193 -0
  97. package/dist/ai/response_handlers/message-handler.js.map +1 -0
  98. package/dist/ai/response_handlers/plan-ready-handler.d.ts +26 -0
  99. package/dist/ai/response_handlers/plan-ready-handler.d.ts.map +1 -0
  100. package/dist/ai/response_handlers/plan-ready-handler.js +394 -0
  101. package/dist/ai/response_handlers/plan-ready-handler.js.map +1 -0
  102. package/dist/ai/response_handlers/request-input-handler.d.ts +14 -0
  103. package/dist/ai/response_handlers/request-input-handler.d.ts.map +1 -0
  104. package/dist/ai/response_handlers/request-input-handler.js +87 -0
  105. package/dist/ai/response_handlers/request-input-handler.js.map +1 -0
  106. package/dist/ai/response_handlers/request-plan-handler.d.ts +18 -0
  107. package/dist/ai/response_handlers/request-plan-handler.d.ts.map +1 -0
  108. package/dist/ai/response_handlers/request-plan-handler.js +143 -0
  109. package/dist/ai/response_handlers/request-plan-handler.js.map +1 -0
  110. package/dist/ai/response_handlers/step-complete-handler.d.ts +22 -0
  111. package/dist/ai/response_handlers/step-complete-handler.d.ts.map +1 -0
  112. package/dist/ai/response_handlers/step-complete-handler.js +307 -0
  113. package/dist/ai/response_handlers/step-complete-handler.js.map +1 -0
  114. package/dist/ai/response_handlers/unknown-handler.d.ts +12 -0
  115. package/dist/ai/response_handlers/unknown-handler.d.ts.map +1 -0
  116. package/dist/ai/response_handlers/unknown-handler.js +27 -0
  117. package/dist/ai/response_handlers/unknown-handler.js.map +1 -0
  118. package/dist/ai/response_handlers/user-input-handler.d.ts +20 -0
  119. package/dist/ai/response_handlers/user-input-handler.d.ts.map +1 -0
  120. package/dist/ai/response_handlers/user-input-handler.js +69 -0
  121. package/dist/ai/response_handlers/user-input-handler.js.map +1 -0
  122. package/dist/ai/tools/log-step.d.ts +29 -0
  123. package/dist/ai/tools/log-step.d.ts.map +1 -0
  124. package/dist/ai/tools/log-step.js +47 -0
  125. package/dist/ai/tools/log-step.js.map +1 -0
  126. package/dist/app.d.ts +15 -0
  127. package/dist/app.d.ts.map +1 -0
  128. package/dist/app.js +223 -0
  129. package/dist/app.js.map +1 -0
  130. package/dist/config/environment/local.d.ts +12 -0
  131. package/dist/config/environment/local.d.ts.map +1 -0
  132. package/dist/config/environment/local.js +124 -0
  133. package/dist/config/environment/local.js.map +1 -0
  134. package/dist/config/environment/production.d.ts +7 -0
  135. package/dist/config/environment/production.d.ts.map +1 -0
  136. package/dist/config/environment/production.js +105 -0
  137. package/dist/config/environment/production.js.map +1 -0
  138. package/dist/config/environment/test.d.ts +7 -0
  139. package/dist/config/environment/test.d.ts.map +1 -0
  140. package/dist/config/environment/test.js +97 -0
  141. package/dist/config/environment/test.js.map +1 -0
  142. package/dist/config/index.d.ts +219 -0
  143. package/dist/config/index.d.ts.map +1 -0
  144. package/dist/config/index.js +360 -0
  145. package/dist/config/index.js.map +1 -0
  146. package/dist/controllers/agent_request.controller.d.ts +43 -0
  147. package/dist/controllers/agent_request.controller.d.ts.map +1 -0
  148. package/dist/controllers/agent_request.controller.js +141 -0
  149. package/dist/controllers/agent_request.controller.js.map +1 -0
  150. package/dist/controllers/base.controller.d.ts +208 -0
  151. package/dist/controllers/base.controller.d.ts.map +1 -0
  152. package/dist/controllers/base.controller.js +378 -0
  153. package/dist/controllers/base.controller.js.map +1 -0
  154. package/dist/controllers/conversations.controller.d.ts +31 -0
  155. package/dist/controllers/conversations.controller.d.ts.map +1 -0
  156. package/dist/controllers/conversations.controller.js +138 -0
  157. package/dist/controllers/conversations.controller.js.map +1 -0
  158. package/dist/controllers/knowledge.controller.d.ts +63 -0
  159. package/dist/controllers/knowledge.controller.d.ts.map +1 -0
  160. package/dist/controllers/knowledge.controller.js +311 -0
  161. package/dist/controllers/knowledge.controller.js.map +1 -0
  162. package/dist/controllers/mcp.controller.d.ts +25 -0
  163. package/dist/controllers/mcp.controller.d.ts.map +1 -0
  164. package/dist/controllers/mcp.controller.js +93 -0
  165. package/dist/controllers/mcp.controller.js.map +1 -0
  166. package/dist/index.d.ts +12 -0
  167. package/dist/index.d.ts.map +1 -0
  168. package/dist/index.js +25 -0
  169. package/dist/index.js.map +1 -0
  170. package/dist/lib/app-constants.d.ts +231 -0
  171. package/dist/lib/app-constants.d.ts.map +1 -0
  172. package/dist/lib/app-constants.js +240 -0
  173. package/dist/lib/app-constants.js.map +1 -0
  174. package/dist/lib/controller-utils.d.ts +48 -0
  175. package/dist/lib/controller-utils.d.ts.map +1 -0
  176. package/dist/lib/controller-utils.js +70 -0
  177. package/dist/lib/controller-utils.js.map +1 -0
  178. package/dist/lib/exceptions/app-exceptions.d.ts +158 -0
  179. package/dist/lib/exceptions/app-exceptions.d.ts.map +1 -0
  180. package/dist/lib/exceptions/app-exceptions.js +287 -0
  181. package/dist/lib/exceptions/app-exceptions.js.map +1 -0
  182. package/dist/lib/middleware/upload.middleware.d.ts +13 -0
  183. package/dist/lib/middleware/upload.middleware.d.ts.map +1 -0
  184. package/dist/lib/middleware/upload.middleware.js +35 -0
  185. package/dist/lib/middleware/upload.middleware.js.map +1 -0
  186. package/dist/lib/middleware/validation.middleware.d.ts +29 -0
  187. package/dist/lib/middleware/validation.middleware.d.ts.map +1 -0
  188. package/dist/lib/middleware/validation.middleware.js +219 -0
  189. package/dist/lib/middleware/validation.middleware.js.map +1 -0
  190. package/dist/lib/model/validation-schema/submit-message.schema.d.ts +3 -0
  191. package/dist/lib/model/validation-schema/submit-message.schema.d.ts.map +1 -0
  192. package/dist/lib/model/validation-schema/submit-message.schema.js +40 -0
  193. package/dist/lib/model/validation-schema/submit-message.schema.js.map +1 -0
  194. package/dist/lib/model/validation-schema/update-knowledge.schema.d.ts +3 -0
  195. package/dist/lib/model/validation-schema/update-knowledge.schema.d.ts.map +1 -0
  196. package/dist/lib/model/validation-schema/update-knowledge.schema.js +35 -0
  197. package/dist/lib/model/validation-schema/update-knowledge.schema.js.map +1 -0
  198. package/dist/lib/open-ai-event-processor.d.ts +101 -0
  199. package/dist/lib/open-ai-event-processor.d.ts.map +1 -0
  200. package/dist/lib/open-ai-event-processor.js +426 -0
  201. package/dist/lib/open-ai-event-processor.js.map +1 -0
  202. package/dist/lib/schemas/ai-responses.schema.d.ts +617 -0
  203. package/dist/lib/schemas/ai-responses.schema.d.ts.map +1 -0
  204. package/dist/lib/schemas/ai-responses.schema.js +377 -0
  205. package/dist/lib/schemas/ai-responses.schema.js.map +1 -0
  206. package/dist/lib/schemas/common.schemas.d.ts +84 -0
  207. package/dist/lib/schemas/common.schemas.d.ts.map +1 -0
  208. package/dist/lib/schemas/common.schemas.js +87 -0
  209. package/dist/lib/schemas/common.schemas.js.map +1 -0
  210. package/dist/lib/schemas/conversation.schema.d.ts +28 -0
  211. package/dist/lib/schemas/conversation.schema.d.ts.map +1 -0
  212. package/dist/lib/schemas/conversation.schema.js +31 -0
  213. package/dist/lib/schemas/conversation.schema.js.map +1 -0
  214. package/dist/lib/schemas/http-client.schema.d.ts +39 -0
  215. package/dist/lib/schemas/http-client.schema.d.ts.map +1 -0
  216. package/dist/lib/schemas/http-client.schema.js +36 -0
  217. package/dist/lib/schemas/http-client.schema.js.map +1 -0
  218. package/dist/lib/schemas/index.d.ts +95 -0
  219. package/dist/lib/schemas/index.d.ts.map +1 -0
  220. package/dist/lib/schemas/index.js +32 -0
  221. package/dist/lib/schemas/index.js.map +1 -0
  222. package/dist/lib/schemas/knowledge.schema.d.ts +145 -0
  223. package/dist/lib/schemas/knowledge.schema.d.ts.map +1 -0
  224. package/dist/lib/schemas/knowledge.schema.js +81 -0
  225. package/dist/lib/schemas/knowledge.schema.js.map +1 -0
  226. package/dist/lib/schemas/orchestration.schema.d.ts +168 -0
  227. package/dist/lib/schemas/orchestration.schema.d.ts.map +1 -0
  228. package/dist/lib/schemas/orchestration.schema.js +133 -0
  229. package/dist/lib/schemas/orchestration.schema.js.map +1 -0
  230. package/dist/lib/schemas/plan.schema.d.ts +103 -0
  231. package/dist/lib/schemas/plan.schema.d.ts.map +1 -0
  232. package/dist/lib/schemas/plan.schema.js +58 -0
  233. package/dist/lib/schemas/plan.schema.js.map +1 -0
  234. package/dist/lib/sequelize-service.d.ts +23 -0
  235. package/dist/lib/sequelize-service.d.ts.map +1 -0
  236. package/dist/lib/sequelize-service.js +446 -0
  237. package/dist/lib/sequelize-service.js.map +1 -0
  238. package/dist/lib/source-hash.d.ts +39 -0
  239. package/dist/lib/source-hash.d.ts.map +1 -0
  240. package/dist/lib/source-hash.js +56 -0
  241. package/dist/lib/source-hash.js.map +1 -0
  242. package/dist/lib/stable-stringify.d.ts +32 -0
  243. package/dist/lib/stable-stringify.d.ts.map +1 -0
  244. package/dist/lib/stable-stringify.js +72 -0
  245. package/dist/lib/stable-stringify.js.map +1 -0
  246. package/dist/lib/streaming-utils.d.ts +60 -0
  247. package/dist/lib/streaming-utils.d.ts.map +1 -0
  248. package/dist/lib/streaming-utils.js +190 -0
  249. package/dist/lib/streaming-utils.js.map +1 -0
  250. package/dist/lib/utils/conversation-builder.d.ts +36 -0
  251. package/dist/lib/utils/conversation-builder.d.ts.map +1 -0
  252. package/dist/lib/utils/conversation-builder.js +132 -0
  253. package/dist/lib/utils/conversation-builder.js.map +1 -0
  254. package/dist/lib/utils/domain-matcher.d.ts +25 -0
  255. package/dist/lib/utils/domain-matcher.d.ts.map +1 -0
  256. package/dist/lib/utils/domain-matcher.js +42 -0
  257. package/dist/lib/utils/domain-matcher.js.map +1 -0
  258. package/dist/lib/utils/file-util.d.ts +157 -0
  259. package/dist/lib/utils/file-util.d.ts.map +1 -0
  260. package/dist/lib/utils/file-util.js +373 -0
  261. package/dist/lib/utils/file-util.js.map +1 -0
  262. package/dist/lib/utils/html-summarizer.d.ts +27 -0
  263. package/dist/lib/utils/html-summarizer.d.ts.map +1 -0
  264. package/dist/lib/utils/html-summarizer.js +189 -0
  265. package/dist/lib/utils/html-summarizer.js.map +1 -0
  266. package/dist/lib/utils/http-client.d.ts +108 -0
  267. package/dist/lib/utils/http-client.d.ts.map +1 -0
  268. package/dist/lib/utils/http-client.js +298 -0
  269. package/dist/lib/utils/http-client.js.map +1 -0
  270. package/dist/lib/utils/index.d.ts +12 -0
  271. package/dist/lib/utils/index.d.ts.map +1 -0
  272. package/dist/lib/utils/index.js +28 -0
  273. package/dist/lib/utils/index.js.map +1 -0
  274. package/dist/lib/utils/logger.d.ts +30 -0
  275. package/dist/lib/utils/logger.d.ts.map +1 -0
  276. package/dist/lib/utils/logger.js +88 -0
  277. package/dist/lib/utils/logger.js.map +1 -0
  278. package/dist/lib/utils/mcp-utils.d.ts +208 -0
  279. package/dist/lib/utils/mcp-utils.d.ts.map +1 -0
  280. package/dist/lib/utils/mcp-utils.js +451 -0
  281. package/dist/lib/utils/mcp-utils.js.map +1 -0
  282. package/dist/lib/utils/sequelize-service.d.ts +153 -0
  283. package/dist/lib/utils/sequelize-service.d.ts.map +1 -0
  284. package/dist/lib/utils/sequelize-service.js +339 -0
  285. package/dist/lib/utils/sequelize-service.js.map +1 -0
  286. package/dist/lib/utils/tool-call-extractor.d.ts +36 -0
  287. package/dist/lib/utils/tool-call-extractor.d.ts.map +1 -0
  288. package/dist/lib/utils/tool-call-extractor.js +121 -0
  289. package/dist/lib/utils/tool-call-extractor.js.map +1 -0
  290. package/dist/lib/utils/zod-to-json-schema.d.ts +17 -0
  291. package/dist/lib/utils/zod-to-json-schema.d.ts.map +1 -0
  292. package/dist/lib/utils/zod-to-json-schema.js +53 -0
  293. package/dist/lib/utils/zod-to-json-schema.js.map +1 -0
  294. package/dist/models/AgentRequest.d.ts +33 -0
  295. package/dist/models/AgentRequest.d.ts.map +1 -0
  296. package/dist/models/AgentRequest.js +49 -0
  297. package/dist/models/AgentRequest.js.map +1 -0
  298. package/dist/models/AgentRun.d.ts +44 -0
  299. package/dist/models/AgentRun.d.ts.map +1 -0
  300. package/dist/models/AgentRun.js +53 -0
  301. package/dist/models/AgentRun.js.map +1 -0
  302. package/dist/models/AuditLog.d.ts +37 -0
  303. package/dist/models/AuditLog.d.ts.map +1 -0
  304. package/dist/models/AuditLog.js +46 -0
  305. package/dist/models/AuditLog.js.map +1 -0
  306. package/dist/models/Conversation.d.ts +39 -0
  307. package/dist/models/Conversation.d.ts.map +1 -0
  308. package/dist/models/Conversation.js +49 -0
  309. package/dist/models/Conversation.js.map +1 -0
  310. package/dist/models/Embedding.d.ts +56 -0
  311. package/dist/models/Embedding.d.ts.map +1 -0
  312. package/dist/models/Embedding.js +36 -0
  313. package/dist/models/Embedding.js.map +1 -0
  314. package/dist/models/ExecutionPattern.d.ts +57 -0
  315. package/dist/models/ExecutionPattern.d.ts.map +1 -0
  316. package/dist/models/ExecutionPattern.js +61 -0
  317. package/dist/models/ExecutionPattern.js.map +1 -0
  318. package/dist/models/Knowledge.d.ts +49 -0
  319. package/dist/models/Knowledge.d.ts.map +1 -0
  320. package/dist/models/Knowledge.js +67 -0
  321. package/dist/models/Knowledge.js.map +1 -0
  322. package/dist/models/KnowledgeRevision.d.ts +35 -0
  323. package/dist/models/KnowledgeRevision.d.ts.map +1 -0
  324. package/dist/models/KnowledgeRevision.js +51 -0
  325. package/dist/models/KnowledgeRevision.js.map +1 -0
  326. package/dist/models/Plan.d.ts +34 -0
  327. package/dist/models/Plan.d.ts.map +1 -0
  328. package/dist/models/Plan.js +43 -0
  329. package/dist/models/Plan.js.map +1 -0
  330. package/dist/models/PlanStep.d.ts +56 -0
  331. package/dist/models/PlanStep.d.ts.map +1 -0
  332. package/dist/models/PlanStep.js +65 -0
  333. package/dist/models/PlanStep.js.map +1 -0
  334. package/dist/models/SourceData.d.ts +39 -0
  335. package/dist/models/SourceData.d.ts.map +1 -0
  336. package/dist/models/SourceData.js +18 -0
  337. package/dist/models/SourceData.js.map +1 -0
  338. package/dist/models/index.d.ts +36 -0
  339. package/dist/models/index.d.ts.map +1 -0
  340. package/dist/models/index.js +179 -0
  341. package/dist/models/index.js.map +1 -0
  342. package/dist/routes/agent.routes.d.ts +13 -0
  343. package/dist/routes/agent.routes.d.ts.map +1 -0
  344. package/dist/routes/agent.routes.js +27 -0
  345. package/dist/routes/agent.routes.js.map +1 -0
  346. package/dist/routes/agent_request.routes.d.ts +13 -0
  347. package/dist/routes/agent_request.routes.d.ts.map +1 -0
  348. package/dist/routes/agent_request.routes.js +65 -0
  349. package/dist/routes/agent_request.routes.js.map +1 -0
  350. package/dist/routes/knowledge.routes.d.ts +13 -0
  351. package/dist/routes/knowledge.routes.d.ts.map +1 -0
  352. package/dist/routes/knowledge.routes.js +91 -0
  353. package/dist/routes/knowledge.routes.js.map +1 -0
  354. package/dist/routes/mcp.routes.d.ts +14 -0
  355. package/dist/routes/mcp.routes.d.ts.map +1 -0
  356. package/dist/routes/mcp.routes.js +27 -0
  357. package/dist/routes/mcp.routes.js.map +1 -0
  358. package/dist/sdk/index.d.ts +13 -0
  359. package/dist/sdk/index.d.ts.map +1 -0
  360. package/dist/sdk/index.js +35 -0
  361. package/dist/sdk/index.js.map +1 -0
  362. package/dist/sdk/savant.sdk.d.ts +53 -0
  363. package/dist/sdk/savant.sdk.d.ts.map +1 -0
  364. package/dist/sdk/savant.sdk.js +120 -0
  365. package/dist/sdk/savant.sdk.js.map +1 -0
  366. package/dist/services/agent-request-service.d.ts +104 -0
  367. package/dist/services/agent-request-service.d.ts.map +1 -0
  368. package/dist/services/agent-request-service.js +319 -0
  369. package/dist/services/agent-request-service.js.map +1 -0
  370. package/dist/services/audit_log.service.d.ts +104 -0
  371. package/dist/services/audit_log.service.d.ts.map +1 -0
  372. package/dist/services/audit_log.service.js +339 -0
  373. package/dist/services/audit_log.service.js.map +1 -0
  374. package/dist/services/conversation.service.d.ts +90 -0
  375. package/dist/services/conversation.service.d.ts.map +1 -0
  376. package/dist/services/conversation.service.js +552 -0
  377. package/dist/services/conversation.service.js.map +1 -0
  378. package/dist/services/domain.service.d.ts +58 -0
  379. package/dist/services/domain.service.d.ts.map +1 -0
  380. package/dist/services/domain.service.js +244 -0
  381. package/dist/services/domain.service.js.map +1 -0
  382. package/dist/services/embedding.service.d.ts +132 -0
  383. package/dist/services/embedding.service.d.ts.map +1 -0
  384. package/dist/services/embedding.service.js +587 -0
  385. package/dist/services/embedding.service.js.map +1 -0
  386. package/dist/services/file_upload.service.d.ts +50 -0
  387. package/dist/services/file_upload.service.d.ts.map +1 -0
  388. package/dist/services/file_upload.service.js +172 -0
  389. package/dist/services/file_upload.service.js.map +1 -0
  390. package/dist/services/knowledge.service.d.ts +200 -0
  391. package/dist/services/knowledge.service.d.ts.map +1 -0
  392. package/dist/services/knowledge.service.js +784 -0
  393. package/dist/services/knowledge.service.js.map +1 -0
  394. package/dist/types/responses-api.types.d.ts +181 -0
  395. package/dist/types/responses-api.types.d.ts.map +1 -0
  396. package/dist/types/responses-api.types.js +12 -0
  397. package/dist/types/responses-api.types.js.map +1 -0
  398. package/package.json +145 -0
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Domain Service
4
+ *
5
+ * Service for managing domains, seeds, and domain validation.
6
+ * Ensures that seeds exist for domains before allowing learning creation.
7
+ *
8
+ * @author MeasureOne, Inc.
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DomainService = void 0;
13
+ exports.get_domain_service = get_domain_service;
14
+ const logger_1 = require("../lib/utils/logger");
15
+ const sequelize_service_1 = require("../lib/sequelize-service");
16
+ const models_1 = require("../models");
17
+ const sequelize_1 = require("sequelize");
18
+ const genai_1 = require("@google/genai");
19
+ const domain_identifier_agent_1 = require("../ai/agents/domain-identifier.agent");
20
+ const config_1 = require("../config");
21
+ const logger = (0, logger_1.create_default_logger)("domain-service");
22
+ class DomainService {
23
+ constructor() {
24
+ this.sequelize = (0, sequelize_service_1.get_sequelize_service)();
25
+ }
26
+ /**
27
+ * Get all unique domains from Embeddings table (ALL types: SEED and LEARNING)
28
+ * Returns all distinct domain values that exist in the system
29
+ *
30
+ * @returns Promise resolving to array of unique domain strings
31
+ */
32
+ async get_unique_domains() {
33
+ try {
34
+ // Get unique domains from ALL embedding types (SEED and LEARNING)
35
+ const domains = await models_1.EmbeddingModel.findAll({
36
+ attributes: [
37
+ [this.sequelize.fn('DISTINCT', this.sequelize.col('domain')), 'domain']
38
+ ],
39
+ where: {
40
+ domain: {
41
+ [sequelize_1.Op.ne]: null
42
+ }
43
+ },
44
+ raw: true
45
+ });
46
+ const unique_domains = domains
47
+ .map((d) => d.domain)
48
+ .filter((d) => d !== null && d.trim().length > 0);
49
+ logger.debug('Retrieved unique domains from all embeddings', { count: unique_domains.length, domains: unique_domains });
50
+ return unique_domains;
51
+ }
52
+ catch (error) {
53
+ logger.error('Failed to get unique domains', { error });
54
+ return [];
55
+ }
56
+ }
57
+ /**
58
+ * Check if a seed exists for a given domain
59
+ * Seeds are SEED type embeddings with a domain field
60
+ *
61
+ * @param domain - The domain to check
62
+ * @returns Promise resolving to true if seed exists, false otherwise
63
+ */
64
+ async seed_exists_for_domain(domain) {
65
+ try {
66
+ if (!domain || domain.trim().length === 0) {
67
+ return false;
68
+ }
69
+ // Check if any SEED type embedding exists for this domain
70
+ const seed_count = await models_1.EmbeddingModel.count({
71
+ where: {
72
+ type: models_1.EmbeddingType.SEED,
73
+ domain: domain,
74
+ }
75
+ });
76
+ const exists = seed_count > 0;
77
+ logger.debug('Seed existence check', { domain, exists, seed_count });
78
+ return exists;
79
+ }
80
+ catch (error) {
81
+ logger.error('Failed to check seed existence', { error, domain });
82
+ return false;
83
+ }
84
+ }
85
+ /**
86
+ * Get seed pattern for a domain
87
+ * Returns the pattern/format specification from the seed
88
+ *
89
+ * @param domain - The domain to get seed pattern for
90
+ * @returns Promise resolving to seed pattern text or null if not found
91
+ */
92
+ async get_seed_pattern(domain) {
93
+ try {
94
+ if (!domain || domain.trim().length === 0) {
95
+ return null;
96
+ }
97
+ // Get ALL SEED type embeddings for this domain
98
+ const seed_embeddings = await models_1.EmbeddingModel.findAll({
99
+ where: {
100
+ type: models_1.EmbeddingType.SEED,
101
+ domain: domain,
102
+ },
103
+ attributes: ['knowledge_id', 'knowledge_revision_id', 'text', 'chunk_index', 'created_at'],
104
+ order: [['created_at', 'DESC'], ['chunk_index', 'ASC']], // Most recent first, then by chunk order
105
+ });
106
+ if (!seed_embeddings || seed_embeddings.length === 0) {
107
+ logger.debug('No seed embeddings found for domain', { domain });
108
+ return null;
109
+ }
110
+ logger.info('Found seed embeddings for domain', {
111
+ domain,
112
+ total_embeddings: seed_embeddings.length,
113
+ unique_knowledge_ids: [...new Set(seed_embeddings.map(e => e.knowledge_id))].length
114
+ });
115
+ // Group embeddings by knowledge_id to combine chunks from the same Knowledge
116
+ const knowledge_groups = new Map();
117
+ for (const embedding of seed_embeddings) {
118
+ const knowledge_id = embedding.knowledge_id;
119
+ if (!knowledge_groups.has(knowledge_id)) {
120
+ knowledge_groups.set(knowledge_id, []);
121
+ }
122
+ knowledge_groups.get(knowledge_id).push(embedding);
123
+ }
124
+ // Try each knowledge's combined text to find LEARNING FORMAT
125
+ // Start with the most recent knowledge (first in the sorted list)
126
+ for (const [knowledge_id, embeddings] of knowledge_groups.entries()) {
127
+ // Get the most recent revision for this knowledge
128
+ const most_recent_revision_id = embeddings[0]?.knowledge_revision_id;
129
+ // Get all chunks for the most recent revision, sorted by chunk_index
130
+ const revision_chunks = embeddings
131
+ .filter(e => e.knowledge_revision_id === most_recent_revision_id)
132
+ .sort((a, b) => (a.chunk_index || 0) - (b.chunk_index || 0));
133
+ // Combine chunks in order
134
+ const combined_text = revision_chunks
135
+ .map(e => e.text)
136
+ .join('\n\n');
137
+ logger.debug('Combined seed chunks for knowledge', {
138
+ domain,
139
+ knowledge_id,
140
+ revision_id: most_recent_revision_id,
141
+ chunk_count: revision_chunks.length,
142
+ combined_length: combined_text.length
143
+ });
144
+ // Extract the LEARNING FORMAT section from the combined text
145
+ // Match "** LEARNING FORMAT **" (with optional spaces) and capture everything until next section or end
146
+ // logger.info('Extracting LEARNING FORMAT section from combined text', combined_text);
147
+ const learning_format_match = combined_text.match(/\*\*\s*LEARNING FORMAT\s*\*\*([\s\S]*?)(?=\n\*\*|$)/i);
148
+ if (learning_format_match && learning_format_match[1]) {
149
+ const learning_format = learning_format_match[1].trim();
150
+ logger.info('✅ Extracted LEARNING FORMAT section from seed knowledge', {
151
+ domain,
152
+ knowledge_id,
153
+ revision_id: most_recent_revision_id,
154
+ format_length: learning_format.length,
155
+ format_preview: learning_format.substring(0, 200)
156
+ });
157
+ return learning_format;
158
+ }
159
+ }
160
+ // If LEARNING FORMAT section not found in any seed, try the most recent seed's full text as fallback
161
+ const most_recent_seed = seed_embeddings[0];
162
+ logger.warn('⚠️ LEARNING FORMAT section not found in any seed knowledge, using most recent seed text as fallback', {
163
+ domain,
164
+ knowledge_id: most_recent_seed.knowledge_id,
165
+ seed_text_length: most_recent_seed.text.length
166
+ });
167
+ return most_recent_seed.text;
168
+ }
169
+ catch (error) {
170
+ logger.error('Failed to get seed pattern', { error, domain });
171
+ return null;
172
+ }
173
+ }
174
+ /**
175
+ * Validate that a seed exists for a domain before allowing operations
176
+ * Throws an error if seed doesn't exist
177
+ *
178
+ * @param domain - The domain to validate
179
+ * @throws Error if seed doesn't exist for domain
180
+ */
181
+ async validate_seed_exists(domain) {
182
+ if (!domain || domain.trim().length === 0) {
183
+ throw new Error('Domain is required');
184
+ }
185
+ const exists = await this.seed_exists_for_domain(domain);
186
+ if (!exists) {
187
+ throw new Error(`No seed found for domain '${domain}'. Please add a seed for this domain before creating learnings.`);
188
+ }
189
+ }
190
+ /**
191
+ * Identify domain from seed content using AI
192
+ * Domain is ALWAYS identified using AI - never from manual input
193
+ *
194
+ * @param content - The seed content to analyze
195
+ * @returns Promise resolving to identified domain string
196
+ * @throws Error if domain cannot be identified or if GEMINI_API_KEY is not configured
197
+ */
198
+ async identify_domain_from_content(content) {
199
+ if (!content || content.trim().length === 0) {
200
+ throw new Error('Content is required for domain identification');
201
+ }
202
+ const gemini_api_key = config_1.config_utils.get('GEMINI_API_KEY');
203
+ if (!gemini_api_key) {
204
+ throw new Error('GEMINI_API_KEY not configured');
205
+ }
206
+ logger.info('Starting domain identification from content', {
207
+ content_length: content.length,
208
+ content_preview: content.substring(0, 200)
209
+ });
210
+ const domain_agent = new domain_identifier_agent_1.DomainIdentifierAgent(new genai_1.GoogleGenAI({ apiKey: gemini_api_key }));
211
+ logger.debug('Calling domain agent with content', {
212
+ content_length: content.length,
213
+ content_title: content.split('\n')[0]?.substring(0, 100)
214
+ });
215
+ const identified_domain = await domain_agent.identify_domain(content);
216
+ logger.info('Domain identification result', {
217
+ identified_domain: identified_domain || 'null',
218
+ domain_type: typeof identified_domain,
219
+ domain_length: identified_domain?.length || 0
220
+ });
221
+ if (!identified_domain || identified_domain.trim().length === 0) {
222
+ throw new Error('Could not identify domain from seed content. Domain identification is required for seed creation.');
223
+ }
224
+ // Normalize and return domain
225
+ const normalized_domain = identified_domain.trim();
226
+ logger.info('✅ Domain identified from content', {
227
+ domain: normalized_domain
228
+ });
229
+ return normalized_domain;
230
+ }
231
+ }
232
+ exports.DomainService = DomainService;
233
+ // Singleton instance
234
+ let domain_service_instance = null;
235
+ /**
236
+ * Get the singleton DomainService instance
237
+ */
238
+ function get_domain_service() {
239
+ if (!domain_service_instance) {
240
+ domain_service_instance = new DomainService();
241
+ }
242
+ return domain_service_instance;
243
+ }
244
+ //# sourceMappingURL=domain.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.service.js","sourceRoot":"","sources":["../../src/services/domain.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * @fileoverview Embedding Service
3
+ *
4
+ * Service for generating embeddings using Gemini and storing them in the database.
5
+ *
6
+ * @author MeasureOne, Inc.
7
+ * @version 1.0.0
8
+ */
9
+ import { EmbeddingType } from "../models";
10
+ export declare class EmbeddingService {
11
+ private gemini;
12
+ private default_model;
13
+ private query_embedding_cache;
14
+ private readonly EMBEDDING_CACHE_TTL_MS;
15
+ private readonly MAX_EMBEDDING_CACHE_SIZE;
16
+ private readonly SEMANTIC_SIMILARITY_THRESHOLD;
17
+ private readonly MAX_SEMANTIC_CHECKS;
18
+ private faiss_index_cache;
19
+ private is_index_building;
20
+ constructor();
21
+ /**
22
+ * Builds or retrieves a cached Faiss index for a given model.
23
+ * This is the core of the search optimization.
24
+ * @param model - The embedding model name (e.g., "text-embedding-004")
25
+ */
26
+ private get_or_build_faiss_index;
27
+ /**
28
+ * Generate embedding with caching (Phase 1 optimization)
29
+ * Caches query embeddings to avoid redundant API calls
30
+ *
31
+ * Cache strategy (optimized for user-generated queries):
32
+ * 1. Quick exact text check (O(1) - fast path, but rare for user queries)
33
+ * 2. Generate embedding and check semantic similarity (primary strategy)
34
+ * 3. Cache by semantic similarity, not exact text (since exact matches are rare)
35
+ *
36
+ * Rationale: User queries are semantically similar but textually different.
37
+ * Exact text caching has low hit rate, so we prioritize semantic similarity.
38
+ */
39
+ private generate_embedding_cached;
40
+ /**
41
+ * Set cache entry with LRU eviction
42
+ * Stores embedding with pre-computed norm for faster similarity calculations
43
+ */
44
+ private set_cache_entry;
45
+ /**
46
+ * Find semantically similar cached embedding (synchronous version)
47
+ * Checks cached embeddings for high similarity (>= threshold)
48
+ *
49
+ * Optimization: Limits checks to prevent O(n) performance on large cache
50
+ * Uses pre-computed norms for faster similarity calculation
51
+ *
52
+ * @param query_embedding - Pre-computed query embedding vector
53
+ * @param query_norm - Pre-computed query embedding norm
54
+ * @param model - Embedding model
55
+ * @param similarity_threshold - Minimum similarity threshold
56
+ * @returns Matching embedding or null
57
+ */
58
+ private find_similar_cached_embedding_sync;
59
+ /**
60
+ * Generate embedding for a single text using Gemini
61
+ *
62
+ * @param text - Text to embed
63
+ * @param model - Embedding model (default: text-embedding-004)
64
+ * @returns Promise resolving to embedding vector
65
+ */
66
+ generate_embedding(text: string, model?: string): Promise<number[]>;
67
+ /**
68
+ * Create embeddings for a document (works for both SEED and LEARNING types)
69
+ * This method chunks text, generates embeddings, and stores them in the database.
70
+ *
71
+ * @param knowledge_id - Required knowledge ID (must exist)
72
+ * @param knowledge_revision_id - Required revision ID (must exist)
73
+ * @param text - Text content to create embeddings for
74
+ * @param source_data_id - Optional source data ID
75
+ * @param model - Optional embedding model (defaults to default_model)
76
+ * @param type - Embedding type (SEED or LEARNING)
77
+ * @param domain - Required domain (normalized to lowercase)
78
+ *
79
+ * Note: This does NOT search for similar documents or create knowledge/revision.
80
+ * The caller must ensure knowledge_id and knowledge_revision_id already exist.
81
+ */
82
+ create_embeddings_for_document(knowledge_id: string, knowledge_revision_id: string, text: string, source_data_id: string | undefined, model: string | undefined, type: EmbeddingType, domain: string): Promise<{
83
+ embeddings_created: number;
84
+ knowledge_id: string;
85
+ knowledge_revision_id: string;
86
+ }>;
87
+ /**
88
+ * Find knowledge ID for learned patterns
89
+ */
90
+ find_learned_patterns_knowledge_id(): Promise<string | null>;
91
+ /**
92
+ * Search embeddings by similarity using a two-pass top-k approach
93
+ *
94
+ * @param query_text - Query text to search for
95
+ * @param knowledge_id - Optional knowledge ID to filter by (learned knowledge from LEARNING embeddings is ALWAYS included)
96
+ * @param limit - Maximum number of results (default: 10)
97
+ * @param model - Embedding model (default: text-embedding-004)
98
+ * @returns Promise resolving to array of similar embeddings with scores
99
+ *
100
+ * This optimized version uses a pre-built in-memory Faiss index for fast vector search.
101
+ */
102
+ search_embeddings(query_text: string, knowledge_id?: string, limit?: number, model?: string, type?: EmbeddingType, domain?: string): Promise<Array<{
103
+ text: string;
104
+ score: number;
105
+ knowledge_id: string;
106
+ knowledge_revision_id: string;
107
+ source_data_id?: string;
108
+ chunk_index?: number;
109
+ type?: EmbeddingType;
110
+ domain?: string;
111
+ }>>;
112
+ /**
113
+ * Calculate cosine similarity between two vectors
114
+ *
115
+ * @param vec_a - First vector
116
+ * @param vec_b - Second vector
117
+ * @returns Cosine similarity score (0-1)
118
+ */
119
+ cosine_similarity(vec_a: number[], vec_b: number[]): number;
120
+ /**
121
+ * Optimized cosine similarity calculation that reuses pre-computed norms
122
+ * This avoids recalculating norms for every comparison
123
+ *
124
+ * @param vec_a - Query vector
125
+ * @param vec_b - Embedding vector to compare
126
+ * @param vec_a_norm - Pre-computed norm of vec_a (sqrt of sum of squares)
127
+ * @param vec_b_norm - Optional pre-computed norm of vec_b (if not provided, calculates it)
128
+ * @returns Cosine similarity score (0-1)
129
+ */
130
+ private cosine_similarity_optimized;
131
+ }
132
+ //# sourceMappingURL=embedding.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.service.d.ts","sourceRoot":"","sources":["../../src/services/embedding.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAkB,aAAa,EAAkB,MAAM,WAAW,CAAC;AA2B1E,qBAAa,gBAAgB;IACzB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAAgC;IAKrD,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAkB;IACzD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAQ;IACjD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAQ;IACtD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAM;IAG1C,OAAO,CAAC,iBAAiB,CAAqC;IAC9D,OAAO,CAAC,iBAAiB,CAAS;;IAUlC;;;;OAIG;YACW,wBAAwB;IA2EtC;;;;;;;;;;;OAWG;YACW,yBAAyB;IAkDvC;;;OAGG;IACH,OAAO,CAAC,eAAe;IA4BvB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,kCAAkC;IAkE1C;;;;;;OAMG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqCzE;;;;;;;;;;;;;;OAcG;IACU,8BAA8B,CACvC,YAAY,EAAE,MAAM,EACpB,qBAAqB,EAAE,MAAM,EAC7B,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAA;KAAE,CAAC;IA4G/F;;OAEG;IACU,kCAAkC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyBzE;;;;;;;;;;OAUG;IACG,iBAAiB,CACnB,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,GAAE,MAAW,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,aAAa,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA8G7L;;;;;;OAMG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAuBlE;;;;;;;;;OASG;IACH,OAAO,CAAC,2BAA2B;CA2BtC"}