@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,446 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Sequelize Service for Savant Orchestration
4
+ *
5
+ * Simple, service-specific Sequelize service for the savant-orchestration service.
6
+ * This approach is cleaner and more maintainable than a shared service.
7
+ *
8
+ * @author MeasureOne, Inc.
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.get_sequelize_service = get_sequelize_service;
13
+ exports.initialize_sequelize_service = initialize_sequelize_service;
14
+ exports.close_sequelize_service = close_sequelize_service;
15
+ const sequelize_1 = require("sequelize");
16
+ const config_1 = require("../config");
17
+ const logger_1 = require("./utils/logger");
18
+ const models_1 = require("../models");
19
+ let sequelizeInstance = null;
20
+ const logger = (0, logger_1.create_default_logger)("sequelize");
21
+ /**
22
+ * Get or create the Sequelize instance for Savant Orchestration
23
+ */
24
+ function get_sequelize_service() {
25
+ if (!sequelizeInstance) {
26
+ const db_config = config_1.config_utils.get_database_config();
27
+ // Parse database URL to extract connection details
28
+ const is_sqlite = db_config.url.startsWith("file:") || db_config.url.endsWith(".db");
29
+ let sequelize_options;
30
+ if (is_sqlite) {
31
+ // SQLite configuration
32
+ const db_path = db_config.url.replace("file:", "");
33
+ sequelize_options = {
34
+ dialect: "sqlite",
35
+ storage: db_path,
36
+ logging: db_config.log_queries ? console.log : false,
37
+ define: {
38
+ timestamps: true,
39
+ underscored: true,
40
+ freezeTableName: true,
41
+ },
42
+ // SQLite specific options
43
+ dialectOptions: {
44
+ foreignKeys: "ON",
45
+ },
46
+ };
47
+ }
48
+ else {
49
+ // PostgreSQL/MySQL configuration
50
+ const url = new URL(db_config.url);
51
+ sequelize_options = {
52
+ dialect: db_config.provider,
53
+ host: url.hostname,
54
+ port: parseInt(url.port) || (db_config.provider === "postgresql" ? 5432 : 3306),
55
+ database: url.pathname.slice(1),
56
+ username: url.username,
57
+ password: url.password,
58
+ logging: db_config.log_queries ? console.log : false,
59
+ define: {
60
+ timestamps: true,
61
+ underscored: true,
62
+ freezeTableName: true,
63
+ },
64
+ };
65
+ }
66
+ sequelizeInstance = new sequelize_1.Sequelize(sequelize_options);
67
+ }
68
+ return sequelizeInstance;
69
+ }
70
+ /**
71
+ * Initialize the Sequelize service (call this during app startup)
72
+ */
73
+ async function initialize_sequelize_service() {
74
+ const sequelize = get_sequelize_service();
75
+ try {
76
+ await sequelize.authenticate();
77
+ logger.info("Database connected successfully");
78
+ // Initialize models
79
+ await initialize_models(sequelize);
80
+ // Setup associations
81
+ setup_associations();
82
+ // Sync database schema to create tables
83
+ // In development, you might want to use { force: true } to reset tables
84
+ // In production, always use { force: false } to preserve data
85
+ const shouldForceSync = process.env.NODE_ENV === 'development' && process.env.FORCE_DB_SYNC === 'true';
86
+ await sequelize.sync({ force: shouldForceSync });
87
+ logger.info(`Database schema synchronized successfully (force: ${shouldForceSync})`);
88
+ }
89
+ catch (error) {
90
+ logger.error("Failed to connect to database:", { error });
91
+ throw error;
92
+ }
93
+ }
94
+ /**
95
+ * Initialize all models with the Sequelize instance
96
+ */
97
+ async function initialize_models(sequelize) {
98
+ // Initialize all models
99
+ models_1.ConversationModel.init({
100
+ id: { type: sequelize_1.DataTypes.UUID, primaryKey: true, defaultValue: sequelize_1.DataTypes.UUIDV4 },
101
+ agent_request_id: { type: sequelize_1.DataTypes.UUID, allowNull: false },
102
+ messages: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
103
+ context: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
104
+ context_summary: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
105
+ conversation_summary: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
106
+ learnings: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
107
+ created_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
108
+ updated_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
109
+ }, {
110
+ sequelize,
111
+ tableName: "conversations",
112
+ timestamps: true,
113
+ createdAt: "created_at",
114
+ updatedAt: "updated_at",
115
+ indexes: [{ fields: ["agent_request_id"] }],
116
+ });
117
+ models_1.AgentRunModel.init({
118
+ id: { type: sequelize_1.DataTypes.UUID, primaryKey: true, defaultValue: sequelize_1.DataTypes.UUIDV4 },
119
+ conversation_id: { type: sequelize_1.DataTypes.UUID, allowNull: false },
120
+ run_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: false },
121
+ status: {
122
+ type: sequelize_1.DataTypes.ENUM("queued", "in_progress", "completed", "failed", "cancelled"),
123
+ allowNull: false,
124
+ defaultValue: "queued",
125
+ },
126
+ input_data: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
127
+ output_data: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
128
+ error_message: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
129
+ metadata: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
130
+ started_at: { type: sequelize_1.DataTypes.DATE, allowNull: true },
131
+ completed_at: { type: sequelize_1.DataTypes.DATE, allowNull: true },
132
+ created_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
133
+ updated_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
134
+ }, {
135
+ sequelize,
136
+ tableName: "agent_runs",
137
+ timestamps: true,
138
+ createdAt: "created_at",
139
+ updatedAt: "updated_at",
140
+ indexes: [{ fields: ["conversation_id"] }, { fields: ["run_id"] }, { fields: ["status"] }, { fields: ["started_at"] }],
141
+ });
142
+ models_1.AgentRequestModel.init({
143
+ id: { type: sequelize_1.DataTypes.UUID, primaryKey: true, defaultValue: sequelize_1.DataTypes.UUIDV4 },
144
+ application_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: false },
145
+ type: { type: sequelize_1.DataTypes.ENUM("CHAT", "TASK", "ANALYSIS", "PROCESSING"), allowNull: false },
146
+ policy: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
147
+ created_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
148
+ updated_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
149
+ }, {
150
+ sequelize,
151
+ tableName: "agent_requests",
152
+ timestamps: true,
153
+ createdAt: "created_at",
154
+ updatedAt: "updated_at",
155
+ indexes: [{ fields: ["application_id"] }, { fields: ["type"] }],
156
+ });
157
+ models_1.KnowledgeModel.init({
158
+ id: { type: sequelize_1.DataTypes.STRING, primaryKey: true },
159
+ application_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: false },
160
+ requester_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: false },
161
+ source_data: { type: sequelize_1.DataTypes.JSONB, allowNull: false },
162
+ status: { type: sequelize_1.DataTypes.ENUM("pending", "processing", "completed", "failed"), allowNull: false, defaultValue: "pending" },
163
+ response: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
164
+ metadata: { type: sequelize_1.DataTypes.JSONB, allowNull: true },
165
+ delivery_details: { type: sequelize_1.DataTypes.TEXT, allowNull: false, defaultValue: "{}" },
166
+ auto_build: { type: sequelize_1.DataTypes.BOOLEAN, allowNull: false, defaultValue: true },
167
+ current_revision_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: true },
168
+ current_snapshot_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: true },
169
+ created_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
170
+ updated_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
171
+ deleted_at: { type: sequelize_1.DataTypes.DATE, allowNull: true },
172
+ }, {
173
+ sequelize,
174
+ tableName: "knowledge", // Changed from "knowledge_requests"
175
+ timestamps: true,
176
+ createdAt: "created_at",
177
+ updatedAt: "updated_at",
178
+ paranoid: true,
179
+ deletedAt: "deleted_at",
180
+ indexes: [{ fields: ["application_id"] }, { fields: ["requester_id"] }, { fields: ["status"] }],
181
+ });
182
+ models_1.AuditLogModel.init({
183
+ id: { type: sequelize_1.DataTypes.UUID, primaryKey: true, defaultValue: sequelize_1.DataTypes.UUIDV4 },
184
+ entity_type: { type: sequelize_1.DataTypes.STRING(100), allowNull: false },
185
+ entity_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: false },
186
+ action: { type: sequelize_1.DataTypes.STRING(50), allowNull: false },
187
+ user_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: true },
188
+ changes: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
189
+ metadata: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
190
+ created_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
191
+ }, {
192
+ sequelize,
193
+ tableName: "audit_logs",
194
+ timestamps: false,
195
+ indexes: [{ fields: ["entity_type"] }, { fields: ["entity_id"] }, { fields: ["action"] }, { fields: ["created_at"] }],
196
+ });
197
+ models_1.KnowledgeRevisionModel.init({
198
+ id: { type: sequelize_1.DataTypes.STRING, primaryKey: true },
199
+ knowledge_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: false }, // Changed from knowledge_request_id
200
+ revision: { type: sequelize_1.DataTypes.INTEGER, allowNull: false },
201
+ source_data: { type: sequelize_1.DataTypes.TEXT, allowNull: false },
202
+ metadata: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
203
+ source_hash: { type: sequelize_1.DataTypes.STRING(64), allowNull: false },
204
+ created_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
205
+ }, {
206
+ sequelize,
207
+ tableName: "knowledge_revisions", // Changed from "knowledge_request_revisions"
208
+ timestamps: false,
209
+ indexes: [
210
+ { fields: ["knowledge_id", "revision"], unique: true }, // Changed from knowledge_request_id
211
+ { fields: ["knowledge_id", "created_at"] }, // Changed from knowledge_request_id
212
+ { fields: ["source_hash"] },
213
+ ],
214
+ });
215
+ models_1.SourceDataModel.init({
216
+ id: { type: sequelize_1.DataTypes.UUID, primaryKey: true, defaultValue: sequelize_1.DataTypes.UUIDV4 },
217
+ file_path: { type: sequelize_1.DataTypes.STRING(500), allowNull: false },
218
+ file_name: { type: sequelize_1.DataTypes.STRING(255), allowNull: false },
219
+ file_size: { type: sequelize_1.DataTypes.INTEGER, allowNull: false },
220
+ mime_type: { type: sequelize_1.DataTypes.STRING(100), allowNull: false },
221
+ original_name: { type: sequelize_1.DataTypes.STRING(255), allowNull: false },
222
+ application_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: true },
223
+ requester_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: true },
224
+ metadata: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
225
+ created_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
226
+ updated_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
227
+ }, {
228
+ sequelize,
229
+ tableName: "source_data",
230
+ timestamps: true,
231
+ createdAt: "created_at",
232
+ updatedAt: "updated_at",
233
+ indexes: [
234
+ { fields: ["application_id"] },
235
+ { fields: ["requester_id"] },
236
+ { fields: ["created_at"] },
237
+ ],
238
+ });
239
+ models_1.EmbeddingModel.init({
240
+ id: { type: sequelize_1.DataTypes.UUID, primaryKey: true, defaultValue: sequelize_1.DataTypes.UUIDV4 },
241
+ knowledge_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: false }, // Link to knowledge
242
+ knowledge_revision_id: { type: sequelize_1.DataTypes.STRING(255), allowNull: false }, // Link to specific revision
243
+ source_data_id: { type: sequelize_1.DataTypes.UUID, allowNull: true },
244
+ text: { type: sequelize_1.DataTypes.TEXT, allowNull: false },
245
+ embedding: { type: sequelize_1.DataTypes.TEXT, allowNull: false }, // JSON string of number array
246
+ model: { type: sequelize_1.DataTypes.STRING(100), allowNull: false },
247
+ chunk_index: { type: sequelize_1.DataTypes.INTEGER, allowNull: true },
248
+ metadata: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
249
+ type: {
250
+ type: sequelize_1.DataTypes.STRING(20),
251
+ allowNull: false,
252
+ defaultValue: 'SEED',
253
+ validate: {
254
+ isIn: [['SEED', 'LEARNING']]
255
+ }
256
+ },
257
+ domain: {
258
+ type: sequelize_1.DataTypes.STRING(100),
259
+ allowNull: true,
260
+ comment: 'Domain identifier (e.g., navigation, api, data-processing)'
261
+ },
262
+ created_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
263
+ updated_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
264
+ }, {
265
+ sequelize,
266
+ tableName: "embeddings",
267
+ timestamps: true,
268
+ createdAt: "created_at",
269
+ updatedAt: "updated_at",
270
+ indexes: [
271
+ { fields: ["knowledge_id"] }, // Index for querying by knowledge
272
+ { fields: ["knowledge_revision_id"] }, // Index for querying by revision
273
+ { fields: ["source_data_id"] },
274
+ { fields: ["model"] },
275
+ { fields: ["type"] },
276
+ { fields: ["domain"] },
277
+ { fields: ["created_at"] },
278
+ ],
279
+ });
280
+ models_1.PlanModel.init({
281
+ id: { type: sequelize_1.DataTypes.UUID, primaryKey: true, defaultValue: sequelize_1.DataTypes.UUIDV4 },
282
+ conversation_id: { type: sequelize_1.DataTypes.UUID, allowNull: false },
283
+ intent: { type: sequelize_1.DataTypes.TEXT, allowNull: false },
284
+ message: { type: sequelize_1.DataTypes.TEXT, allowNull: false },
285
+ status: {
286
+ type: sequelize_1.DataTypes.ENUM("ACTIVE", "COMPLETED", "FAILED", "CANCELLED"),
287
+ allowNull: false,
288
+ defaultValue: "ACTIVE",
289
+ },
290
+ created_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
291
+ updated_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
292
+ }, {
293
+ sequelize,
294
+ tableName: "plans",
295
+ timestamps: true,
296
+ createdAt: "created_at",
297
+ updatedAt: "updated_at",
298
+ indexes: [
299
+ { fields: ["conversation_id"] },
300
+ { fields: ["status"] },
301
+ { fields: ["created_at"] },
302
+ ],
303
+ });
304
+ models_1.PlanStepModel.init({
305
+ id: { type: sequelize_1.DataTypes.UUID, primaryKey: true, defaultValue: sequelize_1.DataTypes.UUIDV4 },
306
+ plan_id: { type: sequelize_1.DataTypes.UUID, allowNull: false },
307
+ parent_step_id: { type: sequelize_1.DataTypes.UUID, allowNull: true }, // For recursive/nested steps
308
+ description: { type: sequelize_1.DataTypes.TEXT, allowNull: false },
309
+ tool: { type: sequelize_1.DataTypes.STRING(255), allowNull: true },
310
+ operation: { type: sequelize_1.DataTypes.STRING(255), allowNull: false },
311
+ params: { type: sequelize_1.DataTypes.TEXT, allowNull: false }, // JSON string
312
+ depends_on: { type: sequelize_1.DataTypes.TEXT, allowNull: false, defaultValue: "[]" }, // JSON string array
313
+ success_check: { type: sequelize_1.DataTypes.TEXT, allowNull: false },
314
+ suggestions_on_failure: { type: sequelize_1.DataTypes.TEXT, allowNull: false, defaultValue: "[]" }, // JSON string array
315
+ status: {
316
+ type: sequelize_1.DataTypes.ENUM("PENDING", "IN_PROGRESS", "COMPLETED", "FAILED", "SKIPPED"),
317
+ allowNull: false,
318
+ defaultValue: "PENDING",
319
+ },
320
+ step_index: { type: sequelize_1.DataTypes.INTEGER, allowNull: false },
321
+ result: { type: sequelize_1.DataTypes.TEXT, allowNull: true }, // JSON string
322
+ error: { type: sequelize_1.DataTypes.TEXT, allowNull: true },
323
+ started_at: { type: sequelize_1.DataTypes.DATE, allowNull: true },
324
+ completed_at: { type: sequelize_1.DataTypes.DATE, allowNull: true },
325
+ created_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
326
+ updated_at: { type: sequelize_1.DataTypes.DATE, allowNull: false, defaultValue: sequelize_1.DataTypes.NOW },
327
+ }, {
328
+ sequelize,
329
+ tableName: "plan_steps",
330
+ timestamps: true,
331
+ createdAt: "created_at",
332
+ updatedAt: "updated_at",
333
+ indexes: [
334
+ { fields: ["plan_id"] },
335
+ { fields: ["parent_step_id"] },
336
+ { fields: ["status"] },
337
+ { fields: ["step_index"] },
338
+ { fields: ["created_at"] },
339
+ ],
340
+ });
341
+ logger.debug("Models initialized successfully");
342
+ }
343
+ /**
344
+ * Setup model associations
345
+ */
346
+ function setup_associations() {
347
+ const { ConversationModel, AgentRunModel, AgentRequestModel, KnowledgeModel, KnowledgeRevisionModel, AuditLogModel, PlanModel, PlanStepModel, EmbeddingModel } = require("../models");
348
+ // Conversation -> AgentRun (one-to-many)
349
+ ConversationModel.hasMany(AgentRunModel, {
350
+ foreignKey: "conversation_id",
351
+ as: "runs",
352
+ });
353
+ AgentRunModel.belongsTo(ConversationModel, {
354
+ foreignKey: "conversation_id",
355
+ as: "conversation",
356
+ });
357
+ // AgentRequest -> Conversation (one-to-many)
358
+ AgentRequestModel.hasMany(ConversationModel, {
359
+ foreignKey: "agent_request_id",
360
+ as: "conversations",
361
+ });
362
+ ConversationModel.belongsTo(AgentRequestModel, {
363
+ foreignKey: "agent_request_id",
364
+ as: "agent_request",
365
+ });
366
+ // Knowledge -> KnowledgeRevision (one-to-many)
367
+ KnowledgeModel.hasMany(KnowledgeRevisionModel, {
368
+ foreignKey: "knowledge_id",
369
+ as: "revisions",
370
+ onDelete: "CASCADE",
371
+ });
372
+ KnowledgeRevisionModel.belongsTo(KnowledgeModel, {
373
+ foreignKey: "knowledge_id",
374
+ as: "knowledge",
375
+ });
376
+ // Knowledge -> KnowledgeRevision (current_revision relationship)
377
+ KnowledgeModel.belongsTo(KnowledgeRevisionModel, {
378
+ as: "current_revision",
379
+ foreignKey: "current_revision_id",
380
+ onDelete: "SET NULL",
381
+ constraints: true,
382
+ });
383
+ // Knowledge -> Embedding (one-to-many)
384
+ KnowledgeModel.hasMany(EmbeddingModel, {
385
+ foreignKey: "knowledge_id",
386
+ as: "embeddings",
387
+ onDelete: "CASCADE",
388
+ });
389
+ EmbeddingModel.belongsTo(KnowledgeModel, {
390
+ foreignKey: "knowledge_id",
391
+ as: "knowledge",
392
+ });
393
+ // KnowledgeRevision -> Embedding (one-to-many)
394
+ // Embeddings are mapped to both knowledge and knowledge_revision
395
+ KnowledgeRevisionModel.hasMany(EmbeddingModel, {
396
+ foreignKey: "knowledge_revision_id",
397
+ as: "embeddings",
398
+ onDelete: "CASCADE",
399
+ });
400
+ EmbeddingModel.belongsTo(KnowledgeRevisionModel, {
401
+ foreignKey: "knowledge_revision_id",
402
+ as: "knowledge_revision",
403
+ });
404
+ // Conversation -> Plan (one-to-many)
405
+ ConversationModel.hasMany(PlanModel, {
406
+ foreignKey: "conversation_id",
407
+ as: "plans",
408
+ onDelete: "CASCADE",
409
+ });
410
+ PlanModel.belongsTo(ConversationModel, {
411
+ foreignKey: "conversation_id",
412
+ as: "conversation",
413
+ });
414
+ // Plan -> PlanStep (one-to-many)
415
+ PlanModel.hasMany(PlanStepModel, {
416
+ foreignKey: "plan_id",
417
+ as: "steps",
418
+ onDelete: "CASCADE",
419
+ });
420
+ PlanStepModel.belongsTo(PlanModel, {
421
+ foreignKey: "plan_id",
422
+ as: "plan",
423
+ });
424
+ // PlanStep -> PlanStep (recursive - parent-child relationship)
425
+ PlanStepModel.hasMany(PlanStepModel, {
426
+ foreignKey: "parent_step_id",
427
+ as: "child_steps",
428
+ onDelete: "CASCADE",
429
+ });
430
+ PlanStepModel.belongsTo(PlanStepModel, {
431
+ foreignKey: "parent_step_id",
432
+ as: "parent_step",
433
+ });
434
+ logger.info("Model associations setup successfully");
435
+ }
436
+ /**
437
+ * Close the Sequelize service (call this during app shutdown)
438
+ */
439
+ async function close_sequelize_service() {
440
+ if (sequelizeInstance) {
441
+ await sequelizeInstance.close();
442
+ sequelizeInstance = null;
443
+ logger.info("Database connection closed");
444
+ }
445
+ }
446
+ //# sourceMappingURL=sequelize-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequelize-service.js","sourceRoot":"","sources":["../../src/lib/sequelize-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @fileoverview Source Hash Utility
3
+ *
4
+ * Provides fast, deterministic hashing for source data to enable
5
+ * deduplication and idempotency checks in knowledge revisions.
6
+ *
7
+ * @author MeasureOne, Inc.
8
+ * @version 1.0.0
9
+ */
10
+ /**
11
+ * Computes a stable hash from a JSON string using SHA-256
12
+ *
13
+ * @param stable_json - The stable JSON string to hash
14
+ * @returns 64-character hexadecimal hash
15
+ */
16
+ export declare function compute_source_hash(stable_json: string): string;
17
+ /**
18
+ * Computes a stable hash directly from any object
19
+ *
20
+ * @param source_data - The source data object to hash
21
+ * @returns 64-character hexadecimal hash
22
+ */
23
+ export declare function compute_source_hash_from_object(source_data: any): string;
24
+ /**
25
+ * Validates that a hash is in the expected format (64 hex characters)
26
+ *
27
+ * @param hash - The hash string to validate
28
+ * @returns True if valid SHA-256 hash format
29
+ */
30
+ export declare function is_valid_source_hash(hash: string): boolean;
31
+ /**
32
+ * Compares two hashes for equality (case-insensitive)
33
+ *
34
+ * @param hash1 - First hash to compare
35
+ * @param hash2 - Second hash to compare
36
+ * @returns True if hashes are equal
37
+ */
38
+ export declare function hashes_equal(hash1: string, hash2: string): boolean;
39
+ //# sourceMappingURL=source-hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-hash.d.ts","sourceRoot":"","sources":["../../src/lib/source-hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,GAAG,GAAG,MAAM,CAGxE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAElE"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Source Hash Utility
4
+ *
5
+ * Provides fast, deterministic hashing for source data to enable
6
+ * deduplication and idempotency checks in knowledge revisions.
7
+ *
8
+ * @author MeasureOne, Inc.
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.compute_source_hash = compute_source_hash;
13
+ exports.compute_source_hash_from_object = compute_source_hash_from_object;
14
+ exports.is_valid_source_hash = is_valid_source_hash;
15
+ exports.hashes_equal = hashes_equal;
16
+ const crypto_1 = require("crypto");
17
+ const stable_stringify_1 = require("./stable-stringify");
18
+ /**
19
+ * Computes a stable hash from a JSON string using SHA-256
20
+ *
21
+ * @param stable_json - The stable JSON string to hash
22
+ * @returns 64-character hexadecimal hash
23
+ */
24
+ function compute_source_hash(stable_json) {
25
+ return (0, crypto_1.createHash)("sha256").update(stable_json, "utf8").digest("hex");
26
+ }
27
+ /**
28
+ * Computes a stable hash directly from any object
29
+ *
30
+ * @param source_data - The source data object to hash
31
+ * @returns 64-character hexadecimal hash
32
+ */
33
+ function compute_source_hash_from_object(source_data) {
34
+ const stable_json = (0, stable_stringify_1.stable_stringify)(source_data);
35
+ return compute_source_hash(stable_json);
36
+ }
37
+ /**
38
+ * Validates that a hash is in the expected format (64 hex characters)
39
+ *
40
+ * @param hash - The hash string to validate
41
+ * @returns True if valid SHA-256 hash format
42
+ */
43
+ function is_valid_source_hash(hash) {
44
+ return /^[a-f0-9]{64}$/i.test(hash);
45
+ }
46
+ /**
47
+ * Compares two hashes for equality (case-insensitive)
48
+ *
49
+ * @param hash1 - First hash to compare
50
+ * @param hash2 - Second hash to compare
51
+ * @returns True if hashes are equal
52
+ */
53
+ function hashes_equal(hash1, hash2) {
54
+ return hash1.toLowerCase() === hash2.toLowerCase();
55
+ }
56
+ //# sourceMappingURL=source-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-hash.js","sourceRoot":"","sources":["../../src/lib/source-hash.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAWH,kDAEC;AAQD,0EAGC;AAQD,oDAEC;AASD,oCAEC;AA3CD,mCAAoC;AACpC,yDAAsD;AAEtD;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,WAAmB;IACrD,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,+BAA+B,CAAC,WAAgB;IAC9D,MAAM,WAAW,GAAG,IAAA,mCAAgB,EAAC,WAAW,CAAC,CAAC;IAClD,OAAO,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,KAAa,EAAE,KAAa;IACvD,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;AACrD,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @fileoverview Stable JSON Stringify Utility
3
+ *
4
+ * Provides deterministic JSON stringification by sorting object keys recursively.
5
+ * This ensures that objects with the same content but different key ordering
6
+ * produce identical string representations.
7
+ *
8
+ * @author MeasureOne, Inc.
9
+ * @version 1.0.0
10
+ */
11
+ /**
12
+ * Creates a stable, deterministic JSON string representation of any value
13
+ *
14
+ * @param value - The value to stringify
15
+ * @returns Stable JSON string with sorted keys
16
+ */
17
+ export declare function stable_stringify(value: any): string;
18
+ /**
19
+ * Validates that a string is valid JSON and can be parsed
20
+ *
21
+ * @param json_string - The JSON string to validate
22
+ * @returns True if valid JSON, false otherwise
23
+ */
24
+ export declare function is_valid_json(json_string: string): boolean;
25
+ /**
26
+ * Safely parses JSON with error handling
27
+ *
28
+ * @param json_string - The JSON string to parse
29
+ * @returns Parsed object or null if invalid
30
+ */
31
+ export declare function safe_json_parse(json_string: string): any | null;
32
+ //# sourceMappingURL=stable-stringify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-stringify.d.ts","sourceRoot":"","sources":["../../src/lib/stable-stringify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAwBH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAGnD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAM/D"}