@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,153 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Base Handler for Response Output Types
4
+ *
5
+ * Base interface and abstract class for handling different response output types
6
+ * from the OpenAI Responses API.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.BaseHandler = void 0;
10
+ const logger_1 = require("../../lib/utils/logger");
11
+ class BaseHandler {
12
+ constructor(streaming_utils) {
13
+ // Initialize logger with the class name
14
+ this.logger = (0, logger_1.create_compact_logger)(this.constructor.name);
15
+ this.streaming_utils = streaming_utils;
16
+ }
17
+ /**
18
+ * Extract and parse AgentResponse from content
19
+ * Handles both string and object content, with JSON extraction from text
20
+ * @param content - Content from ChatMessage (can be string or object)
21
+ * @returns Parsed AgentResponse or null if parsing fails
22
+ */
23
+ extract_agent_response(content) {
24
+ if (!content) {
25
+ this.logger.warn('⚠️ No content provided');
26
+ return null;
27
+ }
28
+ // If content is already an object, check if it's an AgentResponse
29
+ if (typeof content === 'object' && content !== null) {
30
+ // Check if it has message_type (indicating it's an AgentResponse)
31
+ if (content.message_type) {
32
+ this.logger.debug('✅ Content is already an AgentResponse object');
33
+ return content;
34
+ }
35
+ // If it's an object but not AgentResponse, try to stringify and parse
36
+ try {
37
+ const content_str = JSON.stringify(content);
38
+ return this.parse_content_string(content_str);
39
+ }
40
+ catch (e) {
41
+ this.logger.warn('⚠️ Failed to stringify content object', {
42
+ error: e instanceof Error ? e.message : String(e)
43
+ });
44
+ return null;
45
+ }
46
+ }
47
+ // If content is a string, parse it
48
+ if (typeof content === 'string') {
49
+ return this.parse_content_string(content);
50
+ }
51
+ this.logger.warn('⚠️ Content is neither string nor object');
52
+ return null;
53
+ }
54
+ /**
55
+ * Parse content string to extract AgentResponse
56
+ * Handles markdown wrappers, invalid escape sequences, and JSON extraction
57
+ */
58
+ parse_content_string(content_str) {
59
+ if (!content_str || content_str.trim().length === 0) {
60
+ this.logger.warn('⚠️ Empty content string');
61
+ return null;
62
+ }
63
+ this.logger.debug(`🔍 Attempting to extract AgentResponse from content (length: ${content_str.length})`);
64
+ // First, try direct JSON parse
65
+ try {
66
+ const agent_response = JSON.parse(content_str);
67
+ this.logger.debug('✅ Parsed as pure JSON');
68
+ return agent_response;
69
+ }
70
+ catch (e) {
71
+ this.logger.debug(`⚠️ Direct JSON parse failed, applying extraction logic`);
72
+ }
73
+ // Clean the text
74
+ let trimmed = content_str.trim();
75
+ // Strip markdown code blocks
76
+ const markdown_match = trimmed.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
77
+ if (markdown_match) {
78
+ trimmed = markdown_match[1].trim();
79
+ this.logger.debug('✂️ Stripped markdown wrapper');
80
+ }
81
+ // Fix invalid \' escape sequences (Gemini sometimes outputs these)
82
+ if (trimmed.includes("\\'")) {
83
+ trimmed = trimmed.replace(/\\'/g, "'");
84
+ this.logger.debug('🔧 Fixed invalid \' escape sequences');
85
+ }
86
+ // Extract JSON from text
87
+ const first_brace = trimmed.indexOf('{');
88
+ const last_brace = trimmed.lastIndexOf('}');
89
+ if (first_brace !== -1 && last_brace !== -1 && last_brace > first_brace) {
90
+ const json_str = trimmed.substring(first_brace, last_brace + 1);
91
+ try {
92
+ const parsed = JSON.parse(json_str);
93
+ this.logger.debug('✅ Successfully extracted and parsed JSON');
94
+ return parsed;
95
+ }
96
+ catch (e) {
97
+ this.logger.error(`❌ Failed to parse extracted JSON: ${e instanceof Error ? e.message : String(e)}`);
98
+ return null;
99
+ }
100
+ }
101
+ this.logger.error('❌ Could not extract JSON from content');
102
+ return null;
103
+ }
104
+ /**
105
+ * Append Gemini response to conversation history
106
+ * Formats the response as a ChatMessage with role 'model' and content as JSON string
107
+ * @param history - Current conversation history
108
+ * @param result - GenerateContentResponse or ChatMessage from Gemini
109
+ * @param agent_response - Optional parsed AgentResponse to include
110
+ * @returns Updated conversation history
111
+ */
112
+ append_gemini_response_to_history(history, result, agent_response) {
113
+ const updated_history = [...history];
114
+ // If agent_response is provided, use it; otherwise extract from result
115
+ if (agent_response) {
116
+ updated_history.push({
117
+ role: 'model',
118
+ content: JSON.stringify(agent_response)
119
+ });
120
+ return updated_history;
121
+ }
122
+ if ('text' in result) {
123
+ // GenerateContentResponse
124
+ updated_history.push({
125
+ role: 'model',
126
+ content: result.text || ''
127
+ });
128
+ return updated_history;
129
+ }
130
+ // ChatMessage - already formatted as a ChatMessage object
131
+ updated_history.push(result);
132
+ return updated_history;
133
+ }
134
+ /**
135
+ * Append context to conversation history as a special context message
136
+ * @param history - Current conversation history
137
+ * @param context - Context object to append
138
+ * @returns Updated conversation history
139
+ */
140
+ append_context_to_history(history, context) {
141
+ const updated_history = [...history];
142
+ updated_history.push({
143
+ role: 'user',
144
+ content: {
145
+ type: 'context',
146
+ context: context
147
+ }
148
+ });
149
+ return updated_history;
150
+ }
151
+ }
152
+ exports.BaseHandler = BaseHandler;
153
+ //# sourceMappingURL=base-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-handler.js","sourceRoot":"","sources":["../../../src/ai/response_handlers/base-handler.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,mDAAuE;AAsBvE,MAAsB,WAAW;IAK7B,YAAY,eAA+B;QACvC,wCAAwC;QACxC,IAAI,CAAC,MAAM,GAAG,IAAA,8BAAqB,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;IAkBD;;;;;OAKG;IACO,sBAAsB,CAAC,OAAqB;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,kEAAkE;QAClE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAClD,kEAAkE;YAClE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAClE,OAAO,OAAwB,CAAC;YACpC,CAAC;YACD,sEAAsE;YACtE,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC5C,OAAO,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE;oBACtD,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;iBACpD,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACO,oBAAoB,CAAC,WAAmB;QAC9C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzG,+BAA+B;QAC/B,IAAI,CAAC;YACD,MAAM,cAAc,GAAkB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,OAAO,cAAc,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAChF,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAEjC,6BAA6B;QAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3E,IAAI,cAAc,EAAE,CAAC;YACjB,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACtD,CAAC;QAED,mEAAmE;QACnE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QAED,yBAAyB;QACzB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;YACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,OAAO,MAAM,CAAC;YAClB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrG,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACO,iCAAiC,CACvC,OAAsB,EACtB,MAA6C,EAC7C,cAA8B;QAE9B,MAAM,eAAe,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAErC,uEAAuE;QACvE,IAAI,cAAc,EAAE,CAAC;YACjB,eAAe,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;aAC1C,CAAC,CAAC;YACH,OAAO,eAAe,CAAC;QAC3B,CAAC;QAED,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACnB,0BAA0B;YAC1B,eAAe,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;aAC7B,CAAC,CAAC;YACH,OAAO,eAAe,CAAC;QAC3B,CAAC;QACD,0DAA0D;QAC1D,eAAe,CAAC,IAAI,CAAC,MAAqB,CAAC,CAAC;QAC5C,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACO,yBAAyB,CAAC,OAAsB,EAAE,OAAY;QACpE,MAAM,eAAe,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAErC,eAAe,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,OAAO;aACnB;SACJ,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC;IAC3B,CAAC;CACJ;AApLD,kCAoLC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @fileoverview Direct Response Handler
3
+ *
4
+ * Handles DIRECT_RESPONSE message_type from AgentResponse.
5
+ * This is a terminal response type that breaks the execution loop.
6
+ */
7
+ import { BaseHandler, HandlerContext, HandlerResult } from "./base-handler";
8
+ import { ChatMessage } from "../../lib/schemas";
9
+ export declare class DirectResponseHandler extends BaseHandler {
10
+ can_handle(message_type: string | null, output_type: string, input: ChatMessage): boolean;
11
+ handle(input: ChatMessage, context: HandlerContext): Promise<HandlerResult>;
12
+ /**
13
+ * Prepare input for OrchestratorAgent
14
+ * Formats the message for orchestrator routing
15
+ */
16
+ prepare_input(last_message: ChatMessage): ChatMessage[];
17
+ }
18
+ //# sourceMappingURL=direct-response-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-response-handler.d.ts","sourceRoot":"","sources":["../../../src/ai/response_handlers/direct-response-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAiB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE/D,qBAAa,qBAAsB,SAAQ,WAAW;IAClD,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IAQnF,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAkDjF;;;OAGG;IACH,aAAa,CAAC,YAAY,EAAE,WAAW,GAAG,WAAW,EAAE;CAuB1D"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Direct Response Handler
4
+ *
5
+ * Handles DIRECT_RESPONSE message_type from AgentResponse.
6
+ * This is a terminal response type that breaks the execution loop.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DirectResponseHandler = void 0;
10
+ const base_handler_1 = require("./base-handler");
11
+ class DirectResponseHandler extends base_handler_1.BaseHandler {
12
+ can_handle(message_type, output_type, input) {
13
+ // first extract the message into an object
14
+ return input.role === 'model' && message_type === 'DIRECT_RESPONSE';
15
+ }
16
+ async handle(input, context) {
17
+ this.logger.info('Direct response handler received result');
18
+ const result = this.extract_agent_response(input.content);
19
+ if (!result) {
20
+ this.logger.warn('⚠️ No AgentResponse in response');
21
+ return {
22
+ success: false,
23
+ result: [],
24
+ should_continue: false
25
+ };
26
+ }
27
+ const message_type = result.message_type;
28
+ if (!message_type) {
29
+ this.logger.warn('⚠️ No message_type in response');
30
+ return {
31
+ success: false,
32
+ result: [],
33
+ should_continue: false
34
+ };
35
+ }
36
+ // Extract domain from orchestrator response (for logging)
37
+ const extracted_domain = result?.domain || result?.content?.domain || null;
38
+ const available_domains = context?.available_domains || [];
39
+ // Log domain identification result from orchestrator
40
+ this.logger.info('🎯 DirectResponseHandler - Orchestrator domain identification', {
41
+ identified_domain: extracted_domain || 'null',
42
+ message_type: message_type,
43
+ available_domains: available_domains,
44
+ agent_kind: result?.agent_kind
45
+ });
46
+ this.logger.info(`✅ Direct response received - breaking execution loop`);
47
+ // send the message to the user as a direct response through the streaming utils
48
+ this.streaming_utils.write('direct_response', {
49
+ message: input.content
50
+ });
51
+ return {
52
+ success: true,
53
+ result: [],
54
+ should_continue: false,
55
+ context: {},
56
+ message_type: message_type
57
+ };
58
+ }
59
+ /**
60
+ * Prepare input for OrchestratorAgent
61
+ * Formats the message for orchestrator routing
62
+ */
63
+ prepare_input(last_message) {
64
+ if (!last_message) {
65
+ return [{
66
+ role: 'user',
67
+ content: 'Please help me with this task'
68
+ }];
69
+ }
70
+ // Extract the user's message
71
+ let user_message = '';
72
+ if (typeof last_message.content === 'string') {
73
+ user_message = last_message.content;
74
+ }
75
+ else if (last_message.content && typeof last_message.content === 'object') {
76
+ user_message = last_message.content.message || last_message.content.text || JSON.stringify(last_message.content);
77
+ }
78
+ const formatted_message = user_message || 'Please help me with this task';
79
+ return [{
80
+ role: 'user',
81
+ content: formatted_message
82
+ }];
83
+ }
84
+ }
85
+ exports.DirectResponseHandler = DirectResponseHandler;
86
+ //# sourceMappingURL=direct-response-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-response-handler.js","sourceRoot":"","sources":["../../../src/ai/response_handlers/direct-response-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @fileoverview Error Handler
3
+ *
4
+ * Handles error output types by returning error responses.
5
+ */
6
+ import type { GenerateContentResponse } from "@google/genai";
7
+ import { BaseHandler, HandlerContext, HandlerResult } from "./base-handler";
8
+ import { ChatMessage } from "../../lib/schemas";
9
+ export declare class ErrorHandler extends BaseHandler {
10
+ can_handle(message_type: string | null, output_type: string, input: ChatMessage): boolean;
11
+ handle(result: GenerateContentResponse | ChatMessage, context: HandlerContext): Promise<HandlerResult>;
12
+ }
13
+ //# sourceMappingURL=error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../src/ai/response_handlers/error-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAiB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE/D,qBAAa,YAAa,SAAQ,WAAW;IAC5C,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IAKnF,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CA6D5G"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Error Handler
4
+ *
5
+ * Handles error output types by returning error responses.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ErrorHandler = void 0;
9
+ const base_handler_1 = require("./base-handler");
10
+ class ErrorHandler extends base_handler_1.BaseHandler {
11
+ can_handle(message_type, output_type, input) {
12
+ // Check message_type first, then output_type
13
+ return message_type === 'ERROR' || output_type === 'error';
14
+ }
15
+ async handle(result, context) {
16
+ // Extract error message from GenerateContentResponse or ChatMessage
17
+ let error_message;
18
+ let content_str;
19
+ if ('text' in result) {
20
+ // It's a GenerateContentResponse
21
+ error_message = result.error?.message ||
22
+ (result.candidates && result.candidates.length === 0 ? 'No candidates in response' : 'Unknown error');
23
+ content_str = result.text;
24
+ }
25
+ else {
26
+ // It's a ChatMessage
27
+ error_message = 'Error in response';
28
+ const content = result.content;
29
+ content_str = typeof content === 'string' ? content : content.text || JSON.stringify(content);
30
+ }
31
+ this.logger.warn(`⚠️ Error in response: ${error_message}`);
32
+ // Try to parse AgentResponse from text if available
33
+ let updated_history = [];
34
+ if (content_str) {
35
+ // Use base handler extraction method to handle markdown, escape sequences, etc.
36
+ const agent_response = this.extract_agent_response(content_str);
37
+ if (agent_response) {
38
+ updated_history = this.append_gemini_response_to_history([], result, agent_response);
39
+ }
40
+ // If extraction fails, just use current history
41
+ }
42
+ // Check if we should retry (if we haven't exceeded max attempts)
43
+ const should_retry = context.attempt_number < context.max_attempts;
44
+ const handler_context = {
45
+ error: error_message,
46
+ error_details: result.error
47
+ };
48
+ if (should_retry) {
49
+ this.logger.info(`🔄 Retrying after error (attempt ${context.attempt_number + 1}/{(context as { attempt_number: number; max_attempts: number }).max_attempts})`);
50
+ const retry_context = { ...handler_context, retrying: true };
51
+ const history_with_context = this.append_context_to_history(updated_history, retry_context);
52
+ return {
53
+ success: false,
54
+ result: history_with_context,
55
+ should_continue: true,
56
+ context: retry_context,
57
+ message_type: null // Retry with same agent
58
+ };
59
+ }
60
+ // Max attempts reached - return error
61
+ const history_with_context = this.append_context_to_history(updated_history, handler_context);
62
+ return {
63
+ success: false,
64
+ result: history_with_context,
65
+ should_continue: false,
66
+ context: handler_context,
67
+ message_type: 'ERROR' // Terminal error state
68
+ };
69
+ }
70
+ }
71
+ exports.ErrorHandler = ErrorHandler;
72
+ //# sourceMappingURL=error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/ai/response_handlers/error-handler.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,iDAA4E;AAG5E,MAAa,YAAa,SAAQ,0BAAW;IAC5C,UAAU,CAAC,YAA2B,EAAE,WAAmB,EAAE,KAAkB;QAC9E,6CAA6C;QAC7C,OAAO,YAAY,KAAK,OAAO,IAAI,WAAW,KAAK,OAAO,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAA6C,EAAE,OAAuB;QAClF,oEAAoE;QACpE,IAAI,aAAqB,CAAC;QAC1B,IAAI,WAA+B,CAAC;QAEpC,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACtB,iCAAiC;YACjC,aAAa,GAAI,MAAc,CAAC,KAAK,EAAE,OAAO;gBAC7C,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YACvG,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACP,qBAAqB;YACrB,aAAa,GAAG,mBAAmB,CAAC;YACpC,MAAM,OAAO,GAAI,MAAsB,CAAC,OAAO,CAAC;YAChD,WAAW,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,OAAe,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxG,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,aAAa,EAAE,CAAC,CAAC;QAE3D,oDAAoD;QACpD,IAAI,eAAe,GAAkB,EAAmB,CAAC;QACzD,IAAI,WAAW,EAAE,CAAC;YACjB,gFAAgF;YAChF,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;YAChE,IAAI,cAAc,EAAE,CAAC;gBACpB,eAAe,GAAG,IAAI,CAAC,iCAAiC,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YACtF,CAAC;YACD,gDAAgD;QACjD,CAAC;QAED,iEAAiE;QACjE,MAAM,YAAY,GAAI,OAA4D,CAAC,cAAc,GAAI,OAA4D,CAAC,YAAY,CAAC;QAE/K,MAAM,eAAe,GAAG;YACvB,KAAK,EAAE,aAAa;YACpB,aAAa,EAAG,MAAc,CAAC,KAAK;SACpC,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAqC,OAA4D,CAAC,cAAc,GAAG,CAAC,gFAAgF,CAAC,CAAC;YACvN,MAAM,aAAa,GAAG,EAAE,GAAG,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC7D,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;YAC5F,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,oBAAoB;gBAC5B,eAAe,EAAE,IAAI;gBACrB,OAAO,EAAE,aAAa;gBACtB,YAAY,EAAE,IAAI,CAAC,wBAAwB;aAC3C,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;QAC9F,OAAO;YACN,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,oBAAoB;YAC5B,eAAe,EAAE,KAAK;YACtB,OAAO,EAAE,eAAe;YACxB,YAAY,EAAE,OAAO,CAAC,uBAAuB;SAC7C,CAAC;IACH,CAAC;CACD;AAnED,oCAmEC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @fileoverview Response Handler Registry
3
+ *
4
+ * Registry for managing and selecting appropriate handlers.
5
+ * Routes by message_type (from AgentResponse) first, then falls back to output_type (from OpenAI Response).
6
+ */
7
+ import { BaseHandler, HandlerContext, HandlerResult } from "./base-handler";
8
+ import type { ChatMessage } from "../../lib/schemas";
9
+ import { Logger } from "../../lib/utils/logger";
10
+ import { StreamingUtils } from "../../lib/streaming-utils";
11
+ export declare class HandlerRegistry {
12
+ private logger;
13
+ private streaming_utils;
14
+ private message_type_handlers;
15
+ private output_type_handlers;
16
+ private user_input_handler;
17
+ constructor(logger: Logger, streaming_utils: StreamingUtils);
18
+ /**
19
+ * Get handler for preparing input based on message_type
20
+ * This is used to format input before calling an agent
21
+ */
22
+ get_handler_for_prepare_input(message_type: string | null): BaseHandler | null;
23
+ /**
24
+ * Extract message_type from ChatMessage content
25
+ * Handles both string content and object content
26
+ */
27
+ private extract_message_type_from_content;
28
+ /**
29
+ * Extract output_type from ChatMessage content
30
+ * For model messages, we infer output_type from the content structure
31
+ */
32
+ private extract_output_type_from_content;
33
+ /**
34
+ * Extract JSON object from text that may contain natural language or markdown code blocks
35
+ * Looks for JSON objects in the text (starting with { and ending with })
36
+ * PUBLIC so handlers can use this for parsing raw output_text
37
+ */
38
+ extract_json_from_text(text: string): string | null;
39
+ /**
40
+ * Find and return the appropriate handler for the given ChatMessage
41
+ * Uses heuristics-based classification:
42
+ * - If message.role == 'user', returns UserInputHandler
43
+ * - Otherwise, parses content to extract message_type/output_type and finds appropriate handler
44
+ */
45
+ find_handler(message: ChatMessage): BaseHandler | null;
46
+ /**
47
+ * Handle the response using the appropriate handler
48
+ */
49
+ handle_response(message: ChatMessage, context: HandlerContext): Promise<HandlerResult>;
50
+ }
51
+ //# sourceMappingURL=handler-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-registry.d.ts","sourceRoot":"","sources":["../../../src/ai/response_handlers/handler-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAUrD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,qBAAa,eAAe;IAKZ,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,eAAe;IAJ3D,OAAO,CAAC,qBAAqB,CAAqB;IAClD,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,kBAAkB,CAAmB;gBAEzB,MAAM,EAAE,MAAM,EAAU,eAAe,EAAE,cAAc;IAiB3E;;;OAGG;IACH,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;IAyB9E;;;OAGG;IACH,OAAO,CAAC,iCAAiC;IAqDzC;;;OAGG;IACH,OAAO,CAAC,gCAAgC;IAoBxC;;;;OAIG;IACI,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAuE1D;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI;IA6CtD;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAc/F"}