@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,536 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Execution Learner - Reinforcement Learning for ExecutorAgent
4
+ *
5
+ * Captures successful execution patterns and updates knowledge base automatically.
6
+ * Learns from:
7
+ * - Successful execution patterns
8
+ * - Working parameters and selectors
9
+ * - Execution performance characteristics
10
+ * - Error recovery strategies
11
+ *
12
+ * Generic execution learning - no domain-specific knowledge.
13
+ *
14
+ * @author MeasureOne
15
+ * @version 1.0.0
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ExecutionLearner = void 0;
19
+ exports.get_execution_learner = get_execution_learner;
20
+ const logger_1 = require("../../lib/utils/logger");
21
+ const mcp_utils_1 = require("../../lib/utils/mcp-utils");
22
+ const embedding_service_1 = require("../../services/embedding.service");
23
+ const models_1 = require("../../models");
24
+ const learning_agent_1 = require("../agents/learning.agent");
25
+ const genai_1 = require("@google/genai");
26
+ const config_1 = require("../../config");
27
+ const knowledge_service_1 = require("../../services/knowledge.service");
28
+ const models_2 = require("../../models");
29
+ const summarizer_agent_1 = require("../agents/summarizer.agent");
30
+ const sequelize_service_1 = require("../../lib/sequelize-service");
31
+ const source_hash_1 = require("../../lib/source-hash");
32
+ const stable_stringify_1 = require("../../lib/stable-stringify");
33
+ const logger = (0, logger_1.create_default_logger)('execution-learner');
34
+ const DEFAULT_LEARNING_CONFIG = {
35
+ enabled: true, // Enabled by default - automatically learns from all executions (success or failure)
36
+ };
37
+ /**
38
+ * ExecutionLearner - Captures patterns and updates knowledge base
39
+ */
40
+ class ExecutionLearner {
41
+ constructor(config = {}) {
42
+ this.learned_patterns_kn_id = null; // Cache for learned-patterns knowledge ID
43
+ this.learning_agent = null;
44
+ this.summarizer_agent = null;
45
+ this.config = { ...DEFAULT_LEARNING_CONFIG, ...config };
46
+ this.embedding_service = new embedding_service_1.EmbeddingService();
47
+ this.knowledge_service = new knowledge_service_1.KnowledgeService();
48
+ // Initialize LearningAgent and SummarizerAgent with Gemini
49
+ this.initialize_learning_agent();
50
+ this.initialize_summarizer_agent();
51
+ logger.info('ExecutionLearner initialized', {
52
+ enabled: this.config.enabled,
53
+ has_learning_agent: this.learning_agent !== null,
54
+ has_summarizer_agent: this.summarizer_agent !== null
55
+ });
56
+ }
57
+ async capture_learnings(learnings, conversation_id, domain) {
58
+ if (!this.config.enabled) {
59
+ logger.debug('Learning disabled, skipping capture');
60
+ return;
61
+ }
62
+ logger.info('📝 Captured learnings for learning', {
63
+ learnings: learnings,
64
+ conversation_id: conversation_id
65
+ });
66
+ // Get and summarize conversation and context if conversation_id is provided
67
+ let conversation_summary = "";
68
+ let context_summary = "";
69
+ let extracted_domain = domain;
70
+ if (conversation_id) {
71
+ try {
72
+ const conversation = await models_2.ConversationModel.findByPk(conversation_id);
73
+ if (conversation) {
74
+ // Get conversation messages
75
+ const messages = conversation.messages ? JSON.parse(conversation.messages) : [];
76
+ // Get conversation context
77
+ const context = conversation.context ? JSON.parse(conversation.context) : {};
78
+ // Extract domain from context if not provided
79
+ if (!extracted_domain && context.domain) {
80
+ extracted_domain = context.domain;
81
+ logger.info('Extracted domain from conversation context', { domain: extracted_domain });
82
+ }
83
+ // Summarize conversation and context using SummarizerAgent
84
+ if (this.summarizer_agent) {
85
+ // Summarize conversation messages
86
+ conversation_summary = await this.summarizer_agent.summarize_conversation(messages);
87
+ // Summarize context
88
+ context_summary = await this.summarizer_agent.summarize_context(context);
89
+ // Store summaries in database
90
+ conversation.conversation_summary = conversation_summary;
91
+ conversation.context_summary = context_summary;
92
+ await conversation.save();
93
+ logger.info('Generated and stored conversation summaries', {
94
+ conversation_summary_length: conversation_summary.length,
95
+ context_summary_length: context_summary.length
96
+ });
97
+ }
98
+ }
99
+ }
100
+ catch (error) {
101
+ logger.warn('Failed to get/summarize conversation for learning', {
102
+ error: error instanceof Error ? error.message : String(error),
103
+ conversation_id
104
+ });
105
+ // Continue with learning capture even if summarization fails
106
+ }
107
+ }
108
+ // Step 1: Validate and sanitize all learnings upfront
109
+ const valid_learnings = [];
110
+ for (let learning of learnings) {
111
+ // Ensure learning is a string (not an object)
112
+ if (typeof learning !== 'string') {
113
+ if (learning && typeof learning === 'object') {
114
+ learning = JSON.stringify(learning);
115
+ }
116
+ else {
117
+ learning = String(learning);
118
+ }
119
+ }
120
+ learning = learning.trim();
121
+ if (learning.length === 0 || learning === '[object Object]') {
122
+ logger.warn('Invalid learning provided (empty or object), skipping capture', {
123
+ learning_type: typeof learning,
124
+ learning_value: learning
125
+ });
126
+ continue;
127
+ }
128
+ valid_learnings.push(learning);
129
+ }
130
+ if (valid_learnings.length === 0) {
131
+ logger.info('No valid learnings to process');
132
+ return;
133
+ }
134
+ // Validate domain before processing
135
+ if (!extracted_domain || extracted_domain.trim().length === 0) {
136
+ logger.warn('❌ Cannot process learnings: domain is required but not provided', {
137
+ learnings_count: valid_learnings.length
138
+ });
139
+ return;
140
+ }
141
+ logger.info('Processing learnings in batch (summarized approach)', {
142
+ total_learnings: valid_learnings.length,
143
+ domain: extracted_domain
144
+ });
145
+ // Step 2: Summarize all learnings into a single text
146
+ let summarized_learnings;
147
+ if (this.summarizer_agent && valid_learnings.length > 1) {
148
+ try {
149
+ // Combine all learnings with separators
150
+ const combined_learnings_text = valid_learnings.join('\n\n---\n\n');
151
+ // Use SummarizerAgent to create a concise summary of all learnings
152
+ const prompt = `Summarize the following learnings from execution. Combine them into a single, coherent learning document that captures:
153
+ 1. All key patterns, selectors, URLs, and approaches discovered
154
+ 2. Success patterns and failure patterns
155
+ 3. Important context and structural information
156
+
157
+ **CRITICAL SECURITY**:
158
+ - DO NOT include usernames, passwords, credentials, or any authentication tokens
159
+ - DO NOT include PII (names, emails, phone numbers, SSN, account numbers, addresses, DOB)
160
+ - DO NOT include actual user input values
161
+ - ONLY include patterns, selectors, URLs (sanitized), and structural information
162
+
163
+ Learnings:
164
+ ${combined_learnings_text}
165
+
166
+ Generate a comprehensive summary that combines all learnings into one cohesive document.`;
167
+ const user_message = {
168
+ role: 'user',
169
+ content: prompt
170
+ };
171
+ const summary_response = await this.summarizer_agent.execute_with_retries([user_message], { streaming: false });
172
+ const summary_content = summary_response.text || '';
173
+ // Try to extract summary from JSON response
174
+ try {
175
+ const parsed = JSON.parse(summary_content);
176
+ summarized_learnings = parsed.summary || combined_learnings_text;
177
+ }
178
+ catch {
179
+ // If not JSON, use the text directly
180
+ summarized_learnings = summary_content.trim() || combined_learnings_text;
181
+ }
182
+ logger.info('✅ Summarized all learnings into single text', {
183
+ original_count: valid_learnings.length,
184
+ summarized_length: summarized_learnings.length
185
+ });
186
+ }
187
+ catch (error) {
188
+ logger.warn('Failed to summarize learnings, using combined text', {
189
+ error: error instanceof Error ? error.message : String(error)
190
+ });
191
+ // Fallback: combine all learnings with separators
192
+ summarized_learnings = valid_learnings.join('\n\n---\n\n');
193
+ }
194
+ }
195
+ else {
196
+ // Single learning or no summarizer - use as is
197
+ summarized_learnings = valid_learnings.join('\n\n---\n\n');
198
+ }
199
+ // Step 3: Process learnings (search, match, create/update)
200
+ await this.process_learnings_with_search(summarized_learnings, extracted_domain, conversation_summary, context_summary, valid_learnings.length);
201
+ }
202
+ /**
203
+ * Initialize LearningAgent with Gemini and MCP servers
204
+ */
205
+ initialize_learning_agent() {
206
+ try {
207
+ const gemini_api_key = config_1.config_utils.get('GEMINI_API_KEY');
208
+ if (!gemini_api_key) {
209
+ logger.warn('GEMINI_API_KEY not configured, LearningAgent will not be available');
210
+ return;
211
+ }
212
+ const gemini_client = new genai_1.GoogleGenAI({ apiKey: gemini_api_key });
213
+ // Get MCP clients for the learning agent to use search_embeddings tool
214
+ const mcp_manager = mcp_utils_1.MCPServerManager.get_instance();
215
+ const connected_servers = mcp_manager.get_connected_servers();
216
+ const mcp_clients = Array.from(connected_servers.values());
217
+ // Convert MCP Client[] to any[] for LearningAgent
218
+ const mcp_servers_array = Array.isArray(mcp_clients) ? mcp_clients : [];
219
+ this.learning_agent = new learning_agent_1.LearningAgent(gemini_client, mcp_servers_array, 'gemini-2.5-flash', this.embedding_service);
220
+ logger.info('LearningAgent initialized with Gemini and MCP servers', {
221
+ mcp_servers_count: mcp_clients.length
222
+ });
223
+ }
224
+ catch (error) {
225
+ logger.warn('Failed to initialize LearningAgent, will use simple text conversion', {
226
+ error: error instanceof Error ? error.message : String(error)
227
+ });
228
+ }
229
+ }
230
+ initialize_summarizer_agent() {
231
+ try {
232
+ const gemini_api_key = config_1.config_utils.get('GEMINI_API_KEY');
233
+ if (!gemini_api_key) {
234
+ logger.warn('GEMINI_API_KEY not configured, SummarizerAgent will not be available');
235
+ return;
236
+ }
237
+ const gemini_client = new genai_1.GoogleGenAI({ apiKey: gemini_api_key });
238
+ // SummarizerAgent doesn't need MCP servers
239
+ this.summarizer_agent = new summarizer_agent_1.SummarizerAgent(gemini_client, [], // No MCP servers needed for summarization
240
+ 'gemini-2.5-flash');
241
+ logger.info('SummarizerAgent initialized with Gemini');
242
+ }
243
+ catch (error) {
244
+ logger.warn('Failed to initialize SummarizerAgent, summaries will not be available', {
245
+ error: error instanceof Error ? error.message : String(error)
246
+ });
247
+ }
248
+ }
249
+ /**
250
+ * Enable learning (call after initial testing phase)
251
+ */
252
+ enable_learning() {
253
+ this.config.enabled = true;
254
+ logger.info('🎓 Learning ENABLED - Will capture successful patterns');
255
+ }
256
+ /**
257
+ * Disable learning
258
+ */
259
+ disable_learning() {
260
+ this.config.enabled = false;
261
+ logger.info('🛑 Learning DISABLED');
262
+ }
263
+ /**
264
+ * Find similar LEARNING embeddings using cosine similarity
265
+ * Compares learning text embeddings (not execution context embeddings)
266
+ * Returns the best match if similarity > threshold
267
+ */
268
+ async find_similar_learning_embeddings(query_embedding, model) {
269
+ // Use 0.8 threshold since we're now comparing actual learning text, not execution context
270
+ // Learning texts are more semantically consistent, so higher threshold is appropriate
271
+ const SIMILARITY_THRESHOLD = 0.8;
272
+ // Get all LEARNING embeddings with the same model
273
+ const all_learning_embeddings = await models_1.EmbeddingModel.findAll({
274
+ where: {
275
+ type: models_1.EmbeddingType.LEARNING,
276
+ model: model
277
+ },
278
+ attributes: ['id', 'knowledge_id', 'knowledge_revision_id', 'embedding'],
279
+ });
280
+ if (all_learning_embeddings.length === 0) {
281
+ return null;
282
+ }
283
+ let best_match = null;
284
+ // Calculate cosine similarity for all embeddings
285
+ const similarity_scores = [];
286
+ for (const embedding of all_learning_embeddings) {
287
+ try {
288
+ const embedding_vector = JSON.parse(embedding.embedding);
289
+ const similarity = this.embedding_service.cosine_similarity(query_embedding, embedding_vector);
290
+ // Track all similarities for logging
291
+ similarity_scores.push({
292
+ knowledge_id: embedding.knowledge_id,
293
+ revision_id: embedding.knowledge_revision_id,
294
+ similarity
295
+ });
296
+ if (similarity > SIMILARITY_THRESHOLD) {
297
+ if (!best_match || similarity > best_match.similarity) {
298
+ best_match = {
299
+ knowledge_id: embedding.knowledge_id,
300
+ revision_id: embedding.knowledge_revision_id,
301
+ similarity
302
+ };
303
+ }
304
+ }
305
+ }
306
+ catch (error) {
307
+ logger.warn('Failed to parse embedding JSON', {
308
+ embedding_id: embedding.id,
309
+ error: error instanceof Error ? error.message : String(error)
310
+ });
311
+ continue;
312
+ }
313
+ }
314
+ // Log top similarity scores for debugging
315
+ if (similarity_scores.length > 0) {
316
+ const top_scores = similarity_scores
317
+ .sort((a, b) => b.similarity - a.similarity)
318
+ .slice(0, 5);
319
+ logger.info('📊 Top similarity scores', {
320
+ threshold: SIMILARITY_THRESHOLD,
321
+ top_scores: top_scores.map(s => ({
322
+ knowledge_id: s.knowledge_id,
323
+ revision_id: s.revision_id,
324
+ similarity: s.similarity.toFixed(4)
325
+ }))
326
+ });
327
+ }
328
+ if (best_match) {
329
+ logger.info('Found similar LEARNING embedding', {
330
+ knowledge_id: best_match.knowledge_id,
331
+ revision_id: best_match.revision_id,
332
+ similarity: best_match.similarity.toFixed(4)
333
+ });
334
+ }
335
+ return best_match;
336
+ }
337
+ /**
338
+ * Combine all chunks from the same revision into a single text
339
+ */
340
+ async combine_chunks_from_revision(knowledge_id, revision_id) {
341
+ if (!knowledge_id || !revision_id) {
342
+ logger.warn('No knowledge or revision id provided, skipping combine chunks from revision');
343
+ return '';
344
+ }
345
+ // Get all embeddings for this revision
346
+ const embeddings = await models_1.EmbeddingModel.findAll({
347
+ where: {
348
+ knowledge_id: knowledge_id,
349
+ knowledge_revision_id: revision_id,
350
+ type: models_1.EmbeddingType.LEARNING
351
+ },
352
+ attributes: ['text', 'chunk_index'],
353
+ order: [['chunk_index', 'ASC']]
354
+ });
355
+ // Combine all chunks in order
356
+ const combined_text = embeddings
357
+ .map(e => e.text)
358
+ .join('\n\n');
359
+ logger.info('Combined chunks from revision', {
360
+ knowledge_id,
361
+ revision_id,
362
+ chunk_count: embeddings.length,
363
+ combined_length: combined_text.length
364
+ });
365
+ return combined_text;
366
+ }
367
+ /**
368
+ * Process learnings: search for similar existing learnings, then create new or update existing
369
+ */
370
+ async process_learnings_with_search(summarized_learnings, domain, conversation_summary, context_summary, total_learnings_count) {
371
+ const FAISS_SIMILARITY_THRESHOLD = 0.75;
372
+ // Search for similar existing learnings
373
+ logger.info('Searching for similar existing learnings', {
374
+ domain,
375
+ summarized_length: summarized_learnings.length
376
+ });
377
+ const search_results = await this.embedding_service.search_embeddings(summarized_learnings, undefined, // knowledge_id - search all
378
+ 5, // limit - get top 5 to see what's available
379
+ 'text-embedding-004', // model
380
+ models_1.EmbeddingType.LEARNING, // type - only search LEARNING embeddings
381
+ domain // domain - filter by domain
382
+ );
383
+ // Log search results for debugging
384
+ logger.info('🔍 Search results from Faiss index', {
385
+ total_results: search_results.length,
386
+ results: search_results.map(r => ({
387
+ knowledge_id: r.knowledge_id,
388
+ revision_id: r.knowledge_revision_id,
389
+ score: r.score,
390
+ text_preview: r.text.substring(0, 100) + '...'
391
+ }))
392
+ });
393
+ // Process based on search results
394
+ const best_match = search_results[0];
395
+ const has_match = best_match && best_match.score >= FAISS_SIMILARITY_THRESHOLD;
396
+ if (!has_match) {
397
+ // No similar learning found - create new knowledge
398
+ logger.info(`❌ No similar learning found (score < ${FAISS_SIMILARITY_THRESHOLD}) - creating new knowledge`, {
399
+ search_results_count: search_results.length,
400
+ best_score: best_match?.score || 0,
401
+ threshold: FAISS_SIMILARITY_THRESHOLD
402
+ });
403
+ await this.create_new_learning_knowledge(summarized_learnings, domain);
404
+ logger.info('✅ Finished processing all learnings', {
405
+ total_learnings: total_learnings_count,
406
+ domain
407
+ });
408
+ return;
409
+ }
410
+ // Similar learning found - update existing knowledge
411
+ await this.update_existing_learning(best_match.knowledge_id, best_match.knowledge_revision_id, best_match.score, summarized_learnings, domain, conversation_summary, context_summary);
412
+ logger.info('✅ Finished processing all learnings', {
413
+ total_learnings: total_learnings_count,
414
+ domain
415
+ });
416
+ }
417
+ /**
418
+ * Update existing learning with new learnings (creates new revision)
419
+ */
420
+ async update_existing_learning(knowledge_id, revision_id, similarity_score, new_learnings, domain, conversation_summary, context_summary) {
421
+ logger.info('✅ Found similar existing learning', {
422
+ knowledge_id,
423
+ revision_id,
424
+ similarity_score
425
+ });
426
+ // Get existing learning text
427
+ const existing_learning_text = await this.combine_chunks_from_revision(knowledge_id, revision_id);
428
+ // Use LearningAgent to intelligently combine new learnings with existing learning
429
+ if (!this.learning_agent) {
430
+ logger.warn('LearningAgent not available, falling back to simple concatenation');
431
+ const combined_learning_text = existing_learning_text
432
+ ? `${existing_learning_text}\n\n---\n\nNEW LEARNINGS:\n${new_learnings}`
433
+ : new_learnings;
434
+ await this.create_learning_revision(knowledge_id, combined_learning_text, revision_id, domain);
435
+ return;
436
+ }
437
+ logger.info('Using LearningAgent to extract/refine learning', {
438
+ knowledge_id,
439
+ revision_id,
440
+ domain
441
+ });
442
+ // Pass new learnings with conversation and context summaries
443
+ const execution_data = {
444
+ learning: new_learnings,
445
+ conversation_summary: conversation_summary || undefined,
446
+ context_summary: context_summary || undefined
447
+ };
448
+ const refined_learning = await this.learning_agent.extract_learning(execution_data, existing_learning_text);
449
+ if (!refined_learning) {
450
+ logger.info('LearningAgent determined no meaningful difference - skipping revision', {
451
+ knowledge_id,
452
+ revision_id
453
+ });
454
+ return;
455
+ }
456
+ await this.create_learning_revision(knowledge_id, refined_learning, revision_id, domain);
457
+ }
458
+ /**
459
+ * Create new revision of existing knowledge with new learning
460
+ */
461
+ async create_learning_revision(knowledge_id, new_learning, previous_revision_id, domain) {
462
+ const sequelize = (0, sequelize_service_1.get_sequelize_service)();
463
+ const transaction = await sequelize.transaction();
464
+ try {
465
+ // Prepare source data
466
+ const source_data = {
467
+ source_type: 'VALUE',
468
+ mime_type: 'text/markdown',
469
+ content: new_learning
470
+ };
471
+ const stable_json = (0, stable_stringify_1.stable_stringify)(source_data);
472
+ const source_hash = (0, source_hash_1.compute_source_hash)(stable_json);
473
+ // Check if revision with same hash already exists (deduplication)
474
+ const existing_revision = await models_1.KnowledgeRevisionModel.findOne({
475
+ where: { knowledge_id: knowledge_id, source_hash },
476
+ transaction
477
+ });
478
+ if (existing_revision) {
479
+ logger.info('Revision with same hash already exists - skipping creation', {
480
+ knowledge_id,
481
+ existing_revision_id: existing_revision.id,
482
+ revision: existing_revision.revision,
483
+ source_hash
484
+ });
485
+ await transaction.rollback();
486
+ return;
487
+ }
488
+ // Create new revision using shared method
489
+ const knowledge_service = new knowledge_service_1.KnowledgeService();
490
+ const new_revision_id = await knowledge_service.create_revision_for_knowledge(knowledge_id, stable_json, source_hash, { previous_revision_id }, transaction);
491
+ await transaction.commit();
492
+ logger.info('Created new revision for learning', {
493
+ knowledge_id,
494
+ revision_id: new_revision_id
495
+ });
496
+ // Create embeddings for the new revision
497
+ await this.embedding_service.create_embeddings_for_document(knowledge_id, new_revision_id, new_learning, undefined, 'text-embedding-004', models_1.EmbeddingType.LEARNING, domain);
498
+ }
499
+ catch (error) {
500
+ await transaction.rollback();
501
+ throw error;
502
+ }
503
+ }
504
+ /**
505
+ * Create new knowledge with first revision for new learning
506
+ * Already searched for similar learnings, so create directly without searching again
507
+ */
508
+ async create_new_learning_knowledge(learning_text, domain) {
509
+ // Create knowledge and revision directly (no need to search again - already done)
510
+ const knowledge_service = new knowledge_service_1.KnowledgeService();
511
+ const { knowledge_id, revision_id } = await knowledge_service.create_learning_knowledge(learning_text);
512
+ logger.info('Created new knowledge for learning', {
513
+ knowledge_id,
514
+ revision_id,
515
+ domain
516
+ });
517
+ // Create embeddings for the new knowledge revision
518
+ await this.embedding_service.create_embeddings_for_document(knowledge_id, revision_id, learning_text, undefined, // source_data_id
519
+ 'text-embedding-004', // model
520
+ models_1.EmbeddingType.LEARNING, domain);
521
+ return { knowledge_id, revision_id };
522
+ }
523
+ }
524
+ exports.ExecutionLearner = ExecutionLearner;
525
+ // Singleton instance
526
+ let learner_instance = null;
527
+ /**
528
+ * Get or create the global ExecutionLearner instance
529
+ */
530
+ function get_execution_learner(config) {
531
+ if (!learner_instance) {
532
+ learner_instance = new ExecutionLearner(config);
533
+ }
534
+ return learner_instance;
535
+ }
536
+ //# sourceMappingURL=execution-learner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-learner.js","sourceRoot":"","sources":["../../../src/ai/learning/execution-learner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @fileoverview Base Handler for Response Output Types
3
+ *
4
+ * Base interface and abstract class for handling different response output types
5
+ * from the OpenAI Responses API.
6
+ */
7
+ import { Logger } from "../../lib/utils/logger";
8
+ import { ChatMessage, AgentResponse, PlanWithSteps } from "../../lib/schemas";
9
+ import { StreamingUtils } from "../../lib/streaming-utils";
10
+ import type { GenerateContentResponse } from "@google/genai";
11
+ export interface HandlerContext {
12
+ conversation_id?: string;
13
+ step_id?: string;
14
+ original_message?: string;
15
+ plan?: PlanWithSteps | null;
16
+ tool_results?: any[];
17
+ embedding_service?: any;
18
+ }
19
+ export interface HandlerResult {
20
+ success: boolean;
21
+ result: ChatMessage[];
22
+ should_continue: boolean;
23
+ context?: any;
24
+ message_type?: string | null;
25
+ }
26
+ export declare abstract class BaseHandler {
27
+ protected logger: Logger;
28
+ protected streaming_utils: StreamingUtils;
29
+ constructor(streaming_utils: StreamingUtils);
30
+ /**
31
+ * Check if this handler can handle the given message_type or output_type
32
+ * @param message_type - message_type from AgentResponse (if output_text exists)
33
+ * @param output_type - output_type from OpenAI Response output[0].type
34
+ * @param result - The full AIResponse object
35
+ */
36
+ abstract can_handle(message_type: string | null, output_type: string, input: ChatMessage): boolean;
37
+ /**
38
+ * Handle the response output
39
+ * @param result - The Gemini SDK response or ChatMessage object
40
+ * @param context - Additional handler context
41
+ * @returns Handler result with updated conversation history and execution control
42
+ */
43
+ abstract handle(result: GenerateContentResponse | ChatMessage, context: HandlerContext): Promise<HandlerResult>;
44
+ /**
45
+ * Extract and parse AgentResponse from content
46
+ * Handles both string and object content, with JSON extraction from text
47
+ * @param content - Content from ChatMessage (can be string or object)
48
+ * @returns Parsed AgentResponse or null if parsing fails
49
+ */
50
+ protected extract_agent_response(content: string | any): AgentResponse | null;
51
+ /**
52
+ * Parse content string to extract AgentResponse
53
+ * Handles markdown wrappers, invalid escape sequences, and JSON extraction
54
+ */
55
+ protected parse_content_string(content_str: string): AgentResponse | null;
56
+ /**
57
+ * Append Gemini response to conversation history
58
+ * Formats the response as a ChatMessage with role 'model' and content as JSON string
59
+ * @param history - Current conversation history
60
+ * @param result - GenerateContentResponse or ChatMessage from Gemini
61
+ * @param agent_response - Optional parsed AgentResponse to include
62
+ * @returns Updated conversation history
63
+ */
64
+ protected append_gemini_response_to_history(history: ChatMessage[], result: GenerateContentResponse | ChatMessage, agent_response?: AgentResponse): ChatMessage[];
65
+ /**
66
+ * Append context to conversation history as a special context message
67
+ * @param history - Current conversation history
68
+ * @param context - Context object to append
69
+ * @returns Updated conversation history
70
+ */
71
+ protected append_context_to_history(history: ChatMessage[], context: any): ChatMessage[];
72
+ }
73
+ //# sourceMappingURL=base-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/ai/response_handlers/base-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAyB,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,GAAG,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,8BAAsB,WAAW;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC;gBAG9B,eAAe,EAAE,cAAc;IAM3C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IAElG;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAE/G;;;;;OAKG;IACH,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,aAAa,GAAG,IAAI;IAkC7E;;;OAGG;IACH,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAqDzE;;;;;;;OAOG;IACH,SAAS,CAAC,iCAAiC,CACvC,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,uBAAuB,GAAG,WAAW,EAC7C,cAAc,CAAC,EAAE,aAAa,GAC/B,WAAW,EAAE;IAyBhB;;;;;OAKG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,GAAG,WAAW,EAAE;CAa3F"}