@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,23 @@
1
+ /**
2
+ * @fileoverview Agent Response Parser
3
+ *
4
+ * Simple JSON parser for agent responses from OpenAI Responses API.
5
+ * The Responses API returns structured JSON, so we just parse and return it.
6
+ *
7
+ * @author MeasureOne
8
+ * @version 2.0.0
9
+ */
10
+ import { AgentResponse } from "../../lib/schemas";
11
+ /**
12
+ * Parse agent response - OpenAI Responses API returns structured JSON
13
+ *
14
+ * @param response_text - JSON response from agent
15
+ * @param options - Parsing options (unused, kept for compatibility)
16
+ * @returns Parsed agent response
17
+ */
18
+ export declare function parse_agent_response<T extends AgentResponse>(response_text: string): T;
19
+ /**
20
+ * Extract text from agent output (helper function)
21
+ */
22
+ export declare function extract_text_from_output(output: any): string;
23
+ //# sourceMappingURL=response-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-parser.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/response-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAA6F,MAAM,mBAAmB,CAAC;AAiK7I;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC,CAyGtF;AAqCD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAc5D"}
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Agent Response Parser
4
+ *
5
+ * Simple JSON parser for agent responses from OpenAI Responses API.
6
+ * The Responses API returns structured JSON, so we just parse and return it.
7
+ *
8
+ * @author MeasureOne
9
+ * @version 2.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.parse_agent_response = parse_agent_response;
13
+ exports.extract_text_from_output = extract_text_from_output;
14
+ const logger_1 = require("../../lib/utils/logger");
15
+ const logger = (0, logger_1.create_default_logger)("response-parser");
16
+ /**
17
+ * Sanitize JSON string by fixing common issues
18
+ *
19
+ * @param json_str - Potentially malformed JSON string
20
+ * @returns Sanitized JSON string
21
+ */
22
+ function sanitize_json(json_str) {
23
+ // Remove any trailing commas before closing braces/brackets
24
+ let sanitized = json_str.replace(/,(\s*[}\]])/g, '$1');
25
+ // Remove JavaScript-style comments (// ... and /* ... */)
26
+ // This is a common issue when agents add explanatory comments in JSON
27
+ // Remove single-line comments (// ...)
28
+ // Match // followed by anything until end of line, but only if it's after a comma or value
29
+ sanitized = sanitized.replace(/,(\s*)\/\/[^\n]*/g, ',');
30
+ sanitized = sanitized.replace(/"\s*\/\/[^\n]*/g, '"');
31
+ // Remove multi-line comments (/* ... */)
32
+ sanitized = sanitized.replace(/\/\*[\s\S]*?\*\//g, '');
33
+ return sanitized;
34
+ }
35
+ /**
36
+ * Try to repair malformed JSON by finding the error position and attempting fixes
37
+ *
38
+ * @param json_str - Malformed JSON string
39
+ * @param error - The parsing error
40
+ * @returns Repaired JSON string or null if unable to repair
41
+ */
42
+ function attempt_json_repair(json_str, error) {
43
+ // Extract position from error message
44
+ const position_match = error.message.match(/position (\d+)/);
45
+ if (!position_match)
46
+ return null;
47
+ const error_pos = parseInt(position_match[1]);
48
+ // Get context around error position
49
+ const context_start = Math.max(0, error_pos - 50);
50
+ const context_end = Math.min(json_str.length, error_pos + 50);
51
+ const context = json_str.substring(context_start, context_end);
52
+ logger.warn("⚠️ JSON error context", {
53
+ error_position: error_pos,
54
+ context_before: json_str.substring(context_start, error_pos),
55
+ context_after: json_str.substring(error_pos, context_end),
56
+ character_at_error: json_str[error_pos],
57
+ char_code: json_str.charCodeAt(error_pos)
58
+ });
59
+ // Try common repairs
60
+ const repairs = [
61
+ // 1. Try sanitizing (remove trailing commas)
62
+ () => sanitize_json(json_str),
63
+ // 2. Fix invalid escape sequences (like \' which is not valid in JSON)
64
+ // JSON only allows: \" \\ \/ \b \f \n \r \t \uXXXX
65
+ // Single quotes don't need escaping in JSON strings, but if we see \' it's invalid
66
+ () => {
67
+ let repaired = json_str;
68
+ // Replace invalid \' escape sequences with just ' (single quotes are valid in JSON strings)
69
+ // We need to handle both \' and \\' cases
70
+ // Pattern 1: \' (backslash + single quote) - replace with just '
71
+ // But we need to avoid matching \\' (escaped backslash + quote) incorrectly
72
+ // Strategy: Replace \' that appears in contexts like [type=\'] or similar
73
+ // First, handle the common case: \' in CSS selectors like input[type='password']
74
+ // When this is in a stringified JSON, it becomes \"input[type=\'password']\"
75
+ // The \' is invalid - should just be '
76
+ repaired = repaired.replace(/(?<!\\)\\'/g, "'");
77
+ // Also handle cases where we might have double-escaped: \\' should become \'
78
+ // But actually, \\' means escaped backslash + quote, which is still invalid
79
+ // So we should replace \\' with \' (one backslash + quote, which we'll fix above)
80
+ // Actually, let's be more careful - \\' means the string contains \' literally
81
+ // In JSON, to represent \' we'd need \\\\' (four backslashes)
82
+ // But the simplest fix: if we see \' (not preceded by backslash), replace with '
83
+ return repaired;
84
+ },
85
+ // 3. Try completing truncated JSON by adding closing braces
86
+ () => {
87
+ let repaired = json_str.trim();
88
+ let open_braces = (repaired.match(/\{/g) || []).length;
89
+ let close_braces = (repaired.match(/\}/g) || []).length;
90
+ let open_brackets = (repaired.match(/\[/g) || []).length;
91
+ let close_brackets = (repaired.match(/\]/g) || []).length;
92
+ // Add missing closing brackets
93
+ while (open_brackets > close_brackets) {
94
+ repaired += ']';
95
+ close_brackets++;
96
+ }
97
+ // Add missing closing braces
98
+ while (open_braces > close_braces) {
99
+ repaired += '}';
100
+ close_braces++;
101
+ }
102
+ return repaired;
103
+ },
104
+ // 3. Try truncating at error position and completing
105
+ () => {
106
+ let truncated = json_str.substring(0, error_pos).trim();
107
+ // Remove incomplete value at the end
108
+ if (truncated.endsWith(',')) {
109
+ truncated = truncated.slice(0, -1);
110
+ }
111
+ else if (truncated.endsWith(':')) {
112
+ // Remove incomplete key:value pair
113
+ const last_comma = truncated.lastIndexOf(',');
114
+ if (last_comma > 0) {
115
+ truncated = truncated.substring(0, last_comma);
116
+ }
117
+ }
118
+ // Complete the JSON
119
+ let open_braces = (truncated.match(/\{/g) || []).length;
120
+ let close_braces = (truncated.match(/\}/g) || []).length;
121
+ let open_brackets = (truncated.match(/\[/g) || []).length;
122
+ let close_brackets = (truncated.match(/\]/g) || []).length;
123
+ while (open_brackets > close_brackets) {
124
+ truncated += ']';
125
+ close_brackets++;
126
+ }
127
+ while (open_braces > close_braces) {
128
+ truncated += '}';
129
+ close_braces++;
130
+ }
131
+ return truncated;
132
+ }
133
+ ];
134
+ // Try each repair strategy
135
+ for (let i = 0; i < repairs.length; i++) {
136
+ try {
137
+ const repaired = repairs[i]();
138
+ JSON.parse(repaired); // Test if valid
139
+ logger.info(`✅ Successfully repaired JSON using strategy ${i + 1}`);
140
+ return repaired;
141
+ }
142
+ catch (repair_error) {
143
+ // This repair didn't work, try next one
144
+ continue;
145
+ }
146
+ }
147
+ return null;
148
+ }
149
+ /**
150
+ * Parse agent response - OpenAI Responses API returns structured JSON
151
+ *
152
+ * @param response_text - JSON response from agent
153
+ * @param options - Parsing options (unused, kept for compatibility)
154
+ * @returns Parsed agent response
155
+ */
156
+ function parse_agent_response(response_text) {
157
+ // First, check if response is wrapped in markdown code blocks and extract it
158
+ let cleaned_text = response_text.trim();
159
+ // Remove markdown code block wrappers if present
160
+ if (cleaned_text.startsWith('```')) {
161
+ // Extract JSON from markdown code blocks (```json ... ``` or ``` ... ```)
162
+ const json_match = cleaned_text.match(/^```(?:json)?\s*\n([\s\S]*?)\n```$/);
163
+ if (json_match) {
164
+ cleaned_text = json_match[1].trim();
165
+ logger.info("📝 Detected markdown-wrapped JSON, extracted pure JSON");
166
+ }
167
+ else {
168
+ // Try to extract by removing leading ```json and trailing ```
169
+ cleaned_text = cleaned_text.replace(/^```(?:json)?\s*\n?/, '').replace(/\n?```\s*$/, '').trim();
170
+ logger.info("📝 Detected markdown code blocks, attempting to extract JSON");
171
+ }
172
+ }
173
+ try {
174
+ // Try to parse as pure JSON (either original or extracted)
175
+ logger.info("🔍 Parsing agent response", {
176
+ response_length: cleaned_text.length,
177
+ was_markdown_wrapped: response_text !== cleaned_text
178
+ });
179
+ const response = JSON.parse(cleaned_text);
180
+ logger.info("✅ Parsed agent response:", {
181
+ message_type: response.message_type,
182
+ agent_type: response.agent_type,
183
+ has_plan: !!response.plan,
184
+ plan_steps: response.plan?.length || 0
185
+ });
186
+ return response;
187
+ }
188
+ catch (error) {
189
+ // Log error only if markdown extraction also fails
190
+ if (response_text === cleaned_text) {
191
+ // Original text was not markdown-wrapped, so this is a real JSON error
192
+ logger.error("❌ JSON parsing failed", {
193
+ error: error instanceof Error ? error.message : String(error),
194
+ response_length: response_text.length,
195
+ response_preview: response_text.substring(0, 200)
196
+ });
197
+ }
198
+ else {
199
+ // We already tried to extract from markdown, log as warning
200
+ logger.warn("⚠️ JSON parsing failed even after markdown extraction", {
201
+ error: error instanceof Error ? error.message : String(error),
202
+ response_length: cleaned_text.length,
203
+ response_preview: cleaned_text.substring(0, 200)
204
+ });
205
+ }
206
+ // Try to repair the JSON
207
+ if (error instanceof Error) {
208
+ const repaired = attempt_json_repair(response_text, error);
209
+ if (repaired) {
210
+ try {
211
+ const response = JSON.parse(repaired);
212
+ logger.info("✅ Parsed agent response after repair:", {
213
+ message_type: response.message_type,
214
+ agent_type: response.agent_type,
215
+ has_plan: !!response.plan,
216
+ plan_steps: response.plan?.length || 0
217
+ });
218
+ return response;
219
+ }
220
+ catch (repair_parse_error) {
221
+ logger.error("❌ Repaired JSON still invalid", {
222
+ error: repair_parse_error instanceof Error ? repair_parse_error.message : String(repair_parse_error)
223
+ });
224
+ }
225
+ }
226
+ }
227
+ // If pure JSON parsing fails, try to extract JSON from markdown code blocks
228
+ try {
229
+ const extracted_json = extract_json_from_markdown(response_text);
230
+ if (extracted_json) {
231
+ const response = JSON.parse(extracted_json);
232
+ logger.info("✅ Parsed agent response from markdown:", {
233
+ message_type: response.message_type,
234
+ agent_type: response.agent_type,
235
+ has_plan: !!response.plan,
236
+ plan_steps: response.plan?.length || 0
237
+ });
238
+ return response;
239
+ }
240
+ else {
241
+ logger.warn("⚠️ No JSON extracted from markdown", {
242
+ response_text_preview: response_text.substring(0, 200)
243
+ });
244
+ }
245
+ }
246
+ catch (markdown_error) {
247
+ // Markdown extraction also failed, continue to original error
248
+ logger.error("❌ Markdown extraction also failed", {
249
+ error: markdown_error instanceof Error ? markdown_error.message : String(markdown_error)
250
+ });
251
+ }
252
+ logger.error("❌ Failed to parse agent response after all attempts", {
253
+ error: error instanceof Error ? error.message : String(error),
254
+ response_preview: response_text.substring(0, 200)
255
+ });
256
+ throw new Error(`Invalid JSON response from agent: ${error instanceof Error ? error.message : String(error)}`);
257
+ }
258
+ }
259
+ /**
260
+ * Extract JSON from markdown code blocks
261
+ */
262
+ function extract_json_from_markdown(text) {
263
+ // Remove leading/trailing whitespace
264
+ const trimmed = text.trim();
265
+ // Look for ```json ... ``` pattern (most common)
266
+ const jsonBlockMatch = trimmed.match(/```json\s*\n([\s\S]*?)\n?```/);
267
+ if (jsonBlockMatch) {
268
+ return jsonBlockMatch[1].trim();
269
+ }
270
+ // Look for ``` ... ``` pattern (without json specifier)
271
+ const codeBlockMatch = trimmed.match(/```\s*\n([\s\S]*?)\n?```/);
272
+ if (codeBlockMatch) {
273
+ const content = codeBlockMatch[1].trim();
274
+ // Check if the content looks like JSON (starts with { or [)
275
+ if (content.startsWith('{') || content.startsWith('[')) {
276
+ return content;
277
+ }
278
+ }
279
+ // Look for inline code blocks `...`
280
+ const inlineCodeMatch = trimmed.match(/^`([^`]+)`$/);
281
+ if (inlineCodeMatch) {
282
+ const content = inlineCodeMatch[1].trim();
283
+ if (content.startsWith('{') || content.startsWith('[')) {
284
+ return content;
285
+ }
286
+ }
287
+ return null;
288
+ }
289
+ /**
290
+ * Extract text from agent output (helper function)
291
+ */
292
+ function extract_text_from_output(output) {
293
+ if (typeof output === "string")
294
+ return output;
295
+ if (output && typeof output === "object") {
296
+ if (output.text)
297
+ return String(output.text);
298
+ if (output.content)
299
+ return String(output.content);
300
+ if (output.message)
301
+ return String(output.message);
302
+ if (output.response)
303
+ return String(output.response);
304
+ try {
305
+ return JSON.stringify(output, null, 2);
306
+ }
307
+ catch {
308
+ return String(output);
309
+ }
310
+ }
311
+ return String(output || "");
312
+ }
313
+ //# sourceMappingURL=response-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-parser.js","sourceRoot":"","sources":["../../../src/ai/agents/response-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @fileoverview Summarizer Agent
3
+ *
4
+ * Summarizes conversation messages and context using LLM.
5
+ * Used to provide concise summaries to the learning agent while sanitizing sensitive information.
6
+ *
7
+ * @author MeasureOne
8
+ * @version 1.0.0
9
+ */
10
+ import { GoogleGenAI } from "@google/genai";
11
+ import { DynamicAgent } from "./dynamic-agent";
12
+ import { z } from "zod";
13
+ import { ChatMessage } from "../../lib/schemas";
14
+ /**
15
+ * Schema for summarizer response
16
+ */
17
+ declare const SummarizerResponseSchema: z.ZodObject<{
18
+ summary: z.ZodString;
19
+ }, z.core.$strip>;
20
+ export type SummarizerResponse = z.infer<typeof SummarizerResponseSchema>;
21
+ /**
22
+ * Summarizer Agent - Summarizes conversation messages and context
23
+ */
24
+ export declare class SummarizerAgent extends DynamicAgent {
25
+ constructor(gemini_client: GoogleGenAI, mcp_servers?: any[], model?: string);
26
+ /**
27
+ * Summarize conversation messages for learning purposes
28
+ * Removes sensitive information and focuses on execution patterns
29
+ */
30
+ summarize_conversation(messages: ChatMessage[], model?: string): Promise<string>;
31
+ /**
32
+ * Summarize conversation context for learning purposes
33
+ * Removes sensitive information and focuses on execution state
34
+ */
35
+ summarize_context(context: any, model?: string): Promise<string>;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=summarizer.agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summarizer.agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/summarizer.agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;GAEG;AACH,QAAA,MAAM,wBAAwB;;iBAM5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;gBAEzC,aAAa,EAAE,WAAW,EAC1B,WAAW,GAAE,GAAG,EAAO,EACvB,KAAK,GAAE,MAA2B;IAsBtC;;;OAGG;IACG,sBAAsB,CACxB,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,GAAE,MAA2B,GACnC,OAAO,CAAC,MAAM,CAAC;IA2GlB;;;OAGG;IACG,iBAAiB,CACnB,OAAO,EAAE,GAAG,EACZ,KAAK,GAAE,MAA2B,GACnC,OAAO,CAAC,MAAM,CAAC;CA2GrB"}
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Summarizer Agent
4
+ *
5
+ * Summarizes conversation messages and context using LLM.
6
+ * Used to provide concise summaries to the learning agent while sanitizing sensitive information.
7
+ *
8
+ * @author MeasureOne
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SummarizerAgent = void 0;
13
+ const dynamic_agent_1 = require("./dynamic-agent");
14
+ const summarizer_instructions_1 = require("../instructions/summarizer.instructions");
15
+ const logger_1 = require("../../lib/utils/logger");
16
+ const zod_1 = require("zod");
17
+ const logger = (0, logger_1.create_default_logger)("summarizer-agent");
18
+ /**
19
+ * Schema for summarizer response
20
+ */
21
+ const SummarizerResponseSchema = zod_1.z.object({
22
+ summary: zod_1.z.string().describe("A concise text summary focusing on execution patterns, flow, and actionable insights. " +
23
+ "MUST NOT include any sensitive information: no usernames, passwords, credentials, PII (names, emails, phone numbers, SSN, account numbers, addresses, DOB), or actual user input values. " +
24
+ "ONLY include patterns, selectors, URLs (sanitized), and structural information."),
25
+ });
26
+ /**
27
+ * Summarizer Agent - Summarizes conversation messages and context
28
+ */
29
+ class SummarizerAgent extends dynamic_agent_1.DynamicAgent {
30
+ constructor(gemini_client, mcp_servers = [], model = "gemini-2.5-flash") {
31
+ super(gemini_client, mcp_servers, "SummarizerAgent", summarizer_instructions_1.SUMMARIZER_INSTRUCTIONS, [], // No tools needed for summarization
32
+ model, SummarizerResponseSchema, // Pass the Zod schema for structured validation
33
+ undefined, // No conversation summary for summarizer agent
34
+ undefined, // No context summary for summarizer agent
35
+ undefined, // No recent messages for summarizer agent
36
+ undefined // No current context for summarizer agent
37
+ );
38
+ logger.info("SummarizerAgent initialized", {
39
+ model,
40
+ has_schema: true
41
+ });
42
+ }
43
+ /**
44
+ * Summarize conversation messages for learning purposes
45
+ * Removes sensitive information and focuses on execution patterns
46
+ */
47
+ async summarize_conversation(messages, model = "gemini-2.5-flash") {
48
+ try {
49
+ if (!messages || messages.length === 0) {
50
+ return "";
51
+ }
52
+ // Filter out system messages and focus on user/assistant exchanges
53
+ const relevant_messages = messages.filter(msg => msg.role === 'user' || msg.role === 'assistant' || msg.role === 'model');
54
+ if (relevant_messages.length === 0) {
55
+ return "";
56
+ }
57
+ // Convert messages to a readable format
58
+ const messages_text = relevant_messages.map((msg, idx) => {
59
+ const role = msg.role === 'model' ? 'assistant' : msg.role;
60
+ const content = typeof msg.content === 'string'
61
+ ? msg.content
62
+ : JSON.stringify(msg.content);
63
+ return `${idx + 1}. [${role}]: ${content.substring(0, 500)}${content.length > 500 ? '...' : ''}`;
64
+ }).join('\n\n');
65
+ const prompt = `Summarize this conversation for learning purposes. Focus on:
66
+ 1. The main task/goal requested by the user
67
+ 2. Key execution steps taken
68
+ 3. Tools/actions used
69
+ 4. Success/failure patterns
70
+ 5. Important context (URLs, selectors, page structures)
71
+
72
+ **CRITICAL SECURITY**:
73
+ - DO NOT include usernames, passwords, credentials, or any authentication tokens
74
+ - DO NOT include PII (names, emails, phone numbers, SSN, account numbers, addresses, DOB)
75
+ - DO NOT include actual user input values
76
+ - ONLY include patterns, selectors, URLs (sanitized), and structural information
77
+
78
+ Conversation:
79
+ ${messages_text}
80
+
81
+ Generate a summary that helps future agents use the conversation to take the right steps without errors from execution flow and patterns without sensitive information.`;
82
+ const user_message = {
83
+ role: 'user',
84
+ content: prompt
85
+ };
86
+ // Use execute_with_retries for consistency
87
+ const response = await this.execute_with_retries([user_message], {
88
+ streaming: false // Summarization doesn't need streaming
89
+ });
90
+ // Parse the response
91
+ const content = response.text;
92
+ if (!content) {
93
+ throw new Error("SummarizerAgent returned no content");
94
+ }
95
+ let parsed_content;
96
+ if (typeof content === 'string') {
97
+ try {
98
+ parsed_content = JSON.parse(content);
99
+ }
100
+ catch (parse_error) {
101
+ // If JSON parse fails, try to extract JSON from markdown code blocks
102
+ const json_match = content.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
103
+ if (json_match) {
104
+ parsed_content = JSON.parse(json_match[1].trim());
105
+ }
106
+ else {
107
+ // Try to find JSON object in the text
108
+ const json_object_match = content.match(/\{[\s\S]*"summary"[\s\S]*\}/);
109
+ if (json_object_match) {
110
+ parsed_content = JSON.parse(json_object_match[0]);
111
+ }
112
+ else {
113
+ // Fallback: use the text directly as summary
114
+ logger.warn("Failed to parse JSON from summarizer response, using text directly");
115
+ return content.trim();
116
+ }
117
+ }
118
+ }
119
+ }
120
+ else if (typeof content === 'object' && content !== null) {
121
+ parsed_content = content;
122
+ }
123
+ else {
124
+ throw new Error(`SummarizerAgent returned unexpected content type: ${typeof content}`);
125
+ }
126
+ const extraction = SummarizerResponseSchema.parse(parsed_content);
127
+ const summary = extraction.summary?.trim() || "";
128
+ logger.info("Generated conversation summary", {
129
+ message_count: relevant_messages.length,
130
+ summary_length: summary.length
131
+ });
132
+ return summary;
133
+ }
134
+ catch (error) {
135
+ logger.error("Failed to summarize conversation", {
136
+ error: error instanceof Error ? error.message : String(error)
137
+ });
138
+ // Return empty string on failure - don't block learning
139
+ return "";
140
+ }
141
+ }
142
+ /**
143
+ * Summarize conversation context for learning purposes
144
+ * Removes sensitive information and focuses on execution state
145
+ */
146
+ async summarize_context(context, model = "gemini-2.5-flash") {
147
+ try {
148
+ if (!context || Object.keys(context).length === 0) {
149
+ return "";
150
+ }
151
+ // Sanitize context - remove sensitive fields
152
+ const sanitized_context = { ...context };
153
+ // Remove known sensitive fields
154
+ const sensitive_fields = [
155
+ 'password', 'pwd', 'pass', 'token', 'auth', 'credential',
156
+ 'username', 'user', 'email', 'phone', 'ssn', 'account_number',
157
+ 'api_key', 'secret', 'key', 'session', 'cookie', 'personal information', 'sensitive information'
158
+ ];
159
+ for (const key in sanitized_context) {
160
+ const lower_key = key.toLowerCase();
161
+ if (sensitive_fields.some(field => lower_key.includes(field))) {
162
+ delete sanitized_context[key];
163
+ }
164
+ }
165
+ // Convert to readable format
166
+ const context_text = JSON.stringify(sanitized_context, null, 2);
167
+ const prompt = `Summarize this execution context for learning purposes. Focus on:
168
+ 1. Browser/page state (URLs, page titles, browser_id)
169
+ 2. Plan information (plan_id, current_step, step progress)
170
+ 3. Tool results and execution state
171
+ 4. Important configuration or state variables
172
+
173
+ **CRITICAL SECURITY**:
174
+ - DO NOT include usernames, passwords, credentials, or any authentication tokens
175
+ - DO NOT include PII (names, emails, phone numbers, SSN, account numbers, addresses, DOB)
176
+ - DO NOT include actual user input values
177
+ - ONLY include patterns, selectors, URLs (sanitized), and structural information
178
+
179
+ Context:
180
+ ${context_text}
181
+
182
+ Generate a summary from execution flow and context that helps future agents use the context to take the right steps without errors from execution flow and patterns without sensitive information.`;
183
+ const user_message = {
184
+ role: 'user',
185
+ content: prompt
186
+ };
187
+ // Use execute_with_retries for consistency
188
+ const response = await this.execute_with_retries([user_message], {
189
+ streaming: false // Summarization doesn't need streaming
190
+ });
191
+ // Parse the response
192
+ const content = response.text;
193
+ if (!content) {
194
+ throw new Error("SummarizerAgent returned no content");
195
+ }
196
+ let parsed_content;
197
+ if (typeof content === 'string') {
198
+ try {
199
+ parsed_content = JSON.parse(content);
200
+ }
201
+ catch (parse_error) {
202
+ // If JSON parse fails, try to extract JSON from markdown code blocks
203
+ const json_match = content.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
204
+ if (json_match) {
205
+ parsed_content = JSON.parse(json_match[1].trim());
206
+ }
207
+ else {
208
+ // Try to find JSON object in the text
209
+ const json_object_match = content.match(/\{[\s\S]*"summary"[\s\S]*\}/);
210
+ if (json_object_match) {
211
+ parsed_content = JSON.parse(json_object_match[0]);
212
+ }
213
+ else {
214
+ // Fallback: use the text directly as summary
215
+ logger.warn("Failed to parse JSON from summarizer response, using text directly");
216
+ return content.trim();
217
+ }
218
+ }
219
+ }
220
+ }
221
+ else if (typeof content === 'object' && content !== null) {
222
+ parsed_content = content;
223
+ }
224
+ else {
225
+ throw new Error(`SummarizerAgent returned unexpected content type: ${typeof content}`);
226
+ }
227
+ const extraction = SummarizerResponseSchema.parse(parsed_content);
228
+ const summary = extraction.summary?.trim() || "";
229
+ logger.info("Generated context summary", {
230
+ context_keys: Object.keys(context).length,
231
+ summary_length: summary.length
232
+ });
233
+ return summary;
234
+ }
235
+ catch (error) {
236
+ logger.error("Failed to summarize context", {
237
+ error: error instanceof Error ? error.message : String(error)
238
+ });
239
+ // Return empty string on failure - don't block learning
240
+ return "";
241
+ }
242
+ }
243
+ }
244
+ exports.SummarizerAgent = SummarizerAgent;
245
+ //# sourceMappingURL=summarizer.agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summarizer.agent.js","sourceRoot":"","sources":["../../../src/ai/agents/summarizer.agent.ts"],"names":[],"mappings":"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"}