@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,72 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Stable JSON Stringify Utility
4
+ *
5
+ * Provides deterministic JSON stringification by sorting object keys recursively.
6
+ * This ensures that objects with the same content but different key ordering
7
+ * produce identical string representations.
8
+ *
9
+ * @author MeasureOne, Inc.
10
+ * @version 1.0.0
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.stable_stringify = stable_stringify;
14
+ exports.is_valid_json = is_valid_json;
15
+ exports.safe_json_parse = safe_json_parse;
16
+ /**
17
+ * Recursively sorts object keys to ensure deterministic stringification
18
+ */
19
+ function sort_object_keys(obj) {
20
+ if (obj === null || typeof obj !== "object") {
21
+ return obj;
22
+ }
23
+ if (Array.isArray(obj)) {
24
+ return obj.map(sort_object_keys);
25
+ }
26
+ const sorted_obj = {};
27
+ const keys = Object.keys(obj).sort();
28
+ for (const key of keys) {
29
+ sorted_obj[key] = sort_object_keys(obj[key]);
30
+ }
31
+ return sorted_obj;
32
+ }
33
+ /**
34
+ * Creates a stable, deterministic JSON string representation of any value
35
+ *
36
+ * @param value - The value to stringify
37
+ * @returns Stable JSON string with sorted keys
38
+ */
39
+ function stable_stringify(value) {
40
+ const sorted_value = sort_object_keys(value);
41
+ return JSON.stringify(sorted_value);
42
+ }
43
+ /**
44
+ * Validates that a string is valid JSON and can be parsed
45
+ *
46
+ * @param json_string - The JSON string to validate
47
+ * @returns True if valid JSON, false otherwise
48
+ */
49
+ function is_valid_json(json_string) {
50
+ try {
51
+ JSON.parse(json_string);
52
+ return true;
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ }
58
+ /**
59
+ * Safely parses JSON with error handling
60
+ *
61
+ * @param json_string - The JSON string to parse
62
+ * @returns Parsed object or null if invalid
63
+ */
64
+ function safe_json_parse(json_string) {
65
+ try {
66
+ return JSON.parse(json_string);
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ //# sourceMappingURL=stable-stringify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-stringify.js","sourceRoot":"","sources":["../../src/lib/stable-stringify.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AA8BH,4CAGC;AAQD,sCAOC;AAQD,0CAMC;AA5DD;;GAEG;AACH,SAAS,gBAAgB,CAAC,GAAQ;IAChC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,UAAU,GAAwB,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAErC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,UAAU,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,KAAU;IACzC,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,WAAmB;IAC/C,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,WAAmB;IACjD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @fileoverview Streaming Utilities Class
3
+ *
4
+ * Encapsulates all streaming logic in a single class that handles JSONL (NDJSON) streaming.
5
+ * The complex event processing logic is handled by OpenAIEventProcessor.
6
+ *
7
+ * @author MeasureOne, Inc.
8
+ * @version 1.0.0
9
+ */
10
+ import { Response } from "express";
11
+ /**
12
+ * Streaming utilities class that encapsulates all streaming logic
13
+ */
14
+ export declare class StreamingUtils {
15
+ private res;
16
+ private req;
17
+ private safe_write;
18
+ private cleanup;
19
+ private heartbeat?;
20
+ private closed;
21
+ constructor(res: Response, req: any);
22
+ /**
23
+ * Write an event to the stream
24
+ */
25
+ write(event_name: string, payload: any): void;
26
+ /**
27
+ * Clean up the streaming connection
28
+ */
29
+ cleanup_connection(): void;
30
+ /**
31
+ * Sets up JSONL (NDJSON) headers for streaming responses
32
+ */
33
+ private setup_stream_headers;
34
+ /**
35
+ * Sets up request timeout for streaming connections
36
+ */
37
+ private setup_stream_timeout;
38
+ /**
39
+ * Creates a safe JSONL writer (one JSON object per line) for streaming.
40
+ * Shape: { type: string, data: any }
41
+ */
42
+ private create_safe_write;
43
+ /**
44
+ * Creates a heartbeat interval for keeping streaming connections alive
45
+ */
46
+ private create_heartbeat;
47
+ /**
48
+ * Creates a cleanup function for streaming connections
49
+ */
50
+ private create_cleanup_function;
51
+ /**
52
+ * Priming write to defeat intermediary buffering and force early flushes
53
+ */
54
+ private prime_stream;
55
+ }
56
+ /**
57
+ * Handles streaming error responses for JSONL transport
58
+ */
59
+ export declare function handle_stream_error(res: Response, error: Error): void;
60
+ //# sourceMappingURL=streaming-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-utils.d.ts","sourceRoot":"","sources":["../../src/lib/streaming-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC;;GAEG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,MAAM,CAAS;gBAEX,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG;IAsBnC;;OAEG;IACI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAIpD;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAIjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;WAGO;IACP,OAAO,CAAC,iBAAiB;IAwBzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;OAEG;IACH,OAAO,CAAC,YAAY;CAiBvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAqBrE"}
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Streaming Utilities Class
4
+ *
5
+ * Encapsulates all streaming logic in a single class that handles JSONL (NDJSON) streaming.
6
+ * The complex event processing logic is handled by OpenAIEventProcessor.
7
+ *
8
+ * @author MeasureOne, Inc.
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StreamingUtils = void 0;
13
+ exports.handle_stream_error = handle_stream_error;
14
+ const logger_1 = require("./utils/logger");
15
+ const logger = (0, logger_1.create_compact_logger)("streaming-utils");
16
+ /**
17
+ * Streaming utilities class that encapsulates all streaming logic
18
+ */
19
+ class StreamingUtils {
20
+ constructor(res, req) {
21
+ this.closed = false;
22
+ this.res = res;
23
+ this.req = req;
24
+ // Set up streaming infrastructure
25
+ this.setup_stream_headers();
26
+ this.setup_stream_timeout();
27
+ this.prime_stream();
28
+ // Create safe write function
29
+ this.safe_write = this.create_safe_write();
30
+ // Create heartbeat
31
+ this.heartbeat = this.create_heartbeat();
32
+ // Create cleanup function
33
+ this.cleanup = this.create_cleanup_function();
34
+ // Add initial status
35
+ this.safe_write('status', { message: 'processing…' });
36
+ }
37
+ /**
38
+ * Write an event to the stream
39
+ */
40
+ write(event_name, payload) {
41
+ this.safe_write(event_name, payload);
42
+ }
43
+ /**
44
+ * Clean up the streaming connection
45
+ */
46
+ cleanup_connection() {
47
+ this.cleanup();
48
+ }
49
+ /**
50
+ * Sets up JSONL (NDJSON) headers for streaming responses
51
+ */
52
+ setup_stream_headers() {
53
+ if (this.res.headersSent)
54
+ return; // idempotent guard
55
+ // Prefer setHeader for idempotency; set status then flush
56
+ this.res.statusCode = 200;
57
+ this.res.setHeader("Content-Type", "application/x-ndjson");
58
+ this.res.setHeader("Cache-Control", "no-cache, no-transform");
59
+ this.res.setHeader("Connection", "keep-alive");
60
+ this.res.setHeader("Access-Control-Allow-Origin", "*");
61
+ this.res.setHeader("Access-Control-Allow-Headers", "Cache-Control, Last-Event-ID, Content-Type, Authorization");
62
+ this.res.setHeader("X-Accel-Buffering", "no");
63
+ this.res.setHeader("X-Content-Type-Options", "nosniff");
64
+ this.res.setHeader("Vary", "Accept");
65
+ // Best-effort signal to disable compression middlewares on this route
66
+ // @ts-ignore
67
+ if (typeof this.res.set === 'function') {
68
+ // Express-style set
69
+ // @ts-ignore
70
+ this.res.set('Content-Encoding', 'identity');
71
+ }
72
+ // @ts-ignore
73
+ this.res.flushHeaders?.();
74
+ }
75
+ /**
76
+ * Sets up request timeout for streaming connections
77
+ */
78
+ setup_stream_timeout() {
79
+ // Never timeout streaming
80
+ // @ts-ignore
81
+ this.req.setTimeout?.(0);
82
+ // Improve streaming behavior at the TCP level
83
+ try {
84
+ this.req.socket?.setNoDelay?.(true);
85
+ this.req.socket?.setKeepAlive?.(true, 1000);
86
+ }
87
+ catch { /* ignore */ }
88
+ }
89
+ /**
90
+ * Creates a safe JSONL writer (one JSON object per line) for streaming.
91
+ * Shape: { type: string, data: any }
92
+ */
93
+ create_safe_write() {
94
+ return (eventName, payload) => {
95
+ if (this.closed || this.res.writableEnded)
96
+ return;
97
+ try {
98
+ const frame = JSON.stringify({ type: eventName, data: payload }) + "\n";
99
+ this.res.write(frame);
100
+ // Flush immediately when supported (avoids buffering)
101
+ // @ts-ignore
102
+ if (typeof this.res.flush === 'function') {
103
+ // @ts-ignore
104
+ this.res.flush();
105
+ }
106
+ // Stop heartbeat and cleanup when "end" event is written
107
+ if (eventName === 'end') {
108
+ this.cleanup_connection();
109
+ }
110
+ }
111
+ catch (e) {
112
+ logger.warn("JSONL write failed; closing connection", e);
113
+ this.cleanup_connection();
114
+ }
115
+ };
116
+ }
117
+ /**
118
+ * Creates a heartbeat interval for keeping streaming connections alive
119
+ */
120
+ create_heartbeat() {
121
+ return setInterval(() => {
122
+ this.safe_write('heartbeat', { t: Date.now() });
123
+ }, 15000);
124
+ }
125
+ /**
126
+ * Creates a cleanup function for streaming connections
127
+ */
128
+ create_cleanup_function() {
129
+ return () => {
130
+ if (this.closed)
131
+ return;
132
+ this.closed = true;
133
+ if (this.heartbeat)
134
+ clearInterval(this.heartbeat);
135
+ if (!this.res.writableEnded)
136
+ this.res.end();
137
+ };
138
+ }
139
+ /**
140
+ * Priming write to defeat intermediary buffering and force early flushes
141
+ */
142
+ prime_stream() {
143
+ // Some proxies begin sending only after a certain byte threshold.
144
+ // Send a padding line plus a connect status frame immediately.
145
+ try {
146
+ const pad = ' '.repeat(2048) + '\n';
147
+ // @ts-ignore
148
+ if (!this.res.headersSent)
149
+ this.res.flushHeaders?.();
150
+ this.res.write(pad);
151
+ const hello = JSON.stringify({ type: 'status', data: { message: 'connected' } }) + '\n';
152
+ this.res.write(hello);
153
+ // @ts-ignore
154
+ if (typeof this.res.flush === 'function') {
155
+ // @ts-ignore
156
+ this.res.flush();
157
+ }
158
+ }
159
+ catch { /* ignore */ }
160
+ }
161
+ }
162
+ exports.StreamingUtils = StreamingUtils;
163
+ /**
164
+ * Handles streaming error responses for JSONL transport
165
+ */
166
+ function handle_stream_error(res, error) {
167
+ try {
168
+ if (!res.headersSent) {
169
+ res.statusCode = 200;
170
+ res.setHeader("Content-Type", "application/x-ndjson");
171
+ res.setHeader("Cache-Control", "no-cache, no-transform");
172
+ res.setHeader("Connection", "keep-alive");
173
+ res.setHeader("Access-Control-Allow-Origin", "*");
174
+ res.setHeader("Access-Control-Allow-Headers", "Cache-Control, Last-Event-ID, Content-Type, Authorization");
175
+ res.setHeader("X-Accel-Buffering", "no");
176
+ res.setHeader("X-Content-Type-Options", "nosniff");
177
+ res.setHeader("Vary", "Accept");
178
+ }
179
+ const line = JSON.stringify({ type: 'error', data: { message: error.message } }) + "\n";
180
+ // Write best-effort; ignore if socket already closed
181
+ if (!res.writableEnded) {
182
+ res.write(line);
183
+ }
184
+ }
185
+ finally {
186
+ if (!res.writableEnded)
187
+ res.end();
188
+ }
189
+ }
190
+ //# sourceMappingURL=streaming-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-utils.js","sourceRoot":"","sources":["../../src/lib/streaming-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @fileoverview Conversation Builder
3
+ *
4
+ * Utility for building condensed conversation history from summaries and recent messages.
5
+ * Used to reduce token usage while maintaining context.
6
+ *
7
+ * @author MeasureOne
8
+ * @version 1.0.0
9
+ */
10
+ import { ChatMessage } from "../schemas";
11
+ /**
12
+ * Build condensed conversation history from summaries and recent messages
13
+ *
14
+ * Structure:
15
+ * 1. Conversation summary (if available) - represents older history
16
+ * 2. Context summary (if available) - represents execution state
17
+ * 3. Last N recent messages (for immediate context)
18
+ * 4. Current context message (if provided)
19
+ *
20
+ * @param conversation_summary - LLM-generated summary of conversation messages
21
+ * @param context_summary - LLM-generated summary of execution context
22
+ * @param recent_messages - Last N messages for immediate context (default: last 3)
23
+ * @param current_context - Current context object (plan_id, current_step, tool_results, etc.)
24
+ * @returns Condensed conversation history as ChatMessage[]
25
+ */
26
+ export declare function build_condensed_conversation(conversation_summary?: string | null, context_summary?: string | null, recent_messages?: ChatMessage[], current_context?: any): ChatMessage[];
27
+ /**
28
+ * Fallback: Build conversation from full message history if summaries are not available
29
+ * Used for backward compatibility when summaries haven't been generated yet
30
+ *
31
+ * @param all_messages - Full conversation message history
32
+ * @param current_context - Current context object
33
+ * @returns Full conversation history with context
34
+ */
35
+ export declare function build_full_conversation(all_messages: ChatMessage[], current_context?: any): ChatMessage[];
36
+ //# sourceMappingURL=conversation-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/conversation-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CACxC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,EACpC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,EAC/B,eAAe,GAAE,WAAW,EAAO,EACnC,eAAe,CAAC,EAAE,GAAG,GACtB,WAAW,EAAE,CAiEf;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACnC,YAAY,EAAE,WAAW,EAAE,EAC3B,eAAe,CAAC,EAAE,GAAG,GACtB,WAAW,EAAE,CAmCf"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Conversation Builder
4
+ *
5
+ * Utility for building condensed conversation history from summaries and recent messages.
6
+ * Used to reduce token usage while maintaining context.
7
+ *
8
+ * @author MeasureOne
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.build_condensed_conversation = build_condensed_conversation;
13
+ exports.build_full_conversation = build_full_conversation;
14
+ const logger_1 = require("./logger");
15
+ const logger = (0, logger_1.create_default_logger)("conversation-builder");
16
+ /**
17
+ * Build condensed conversation history from summaries and recent messages
18
+ *
19
+ * Structure:
20
+ * 1. Conversation summary (if available) - represents older history
21
+ * 2. Context summary (if available) - represents execution state
22
+ * 3. Last N recent messages (for immediate context)
23
+ * 4. Current context message (if provided)
24
+ *
25
+ * @param conversation_summary - LLM-generated summary of conversation messages
26
+ * @param context_summary - LLM-generated summary of execution context
27
+ * @param recent_messages - Last N messages for immediate context (default: last 3)
28
+ * @param current_context - Current context object (plan_id, current_step, tool_results, etc.)
29
+ * @returns Condensed conversation history as ChatMessage[]
30
+ */
31
+ function build_condensed_conversation(conversation_summary, context_summary, recent_messages = [], current_context) {
32
+ const condensed = [];
33
+ // 1. Add conversation summary if available (represents older history)
34
+ // Format as plain text so the agent can understand it
35
+ if (conversation_summary && typeof conversation_summary === 'string' && conversation_summary.trim().length > 0) {
36
+ condensed.push({
37
+ role: 'user',
38
+ content: `[Conversation Summary]\n${conversation_summary}`
39
+ });
40
+ logger.debug('Added conversation summary to condensed conversation');
41
+ }
42
+ // 2. Add context summary if available (represents execution state)
43
+ // Format as plain text so the agent can understand it
44
+ if (context_summary && typeof context_summary === 'string' && context_summary.trim().length > 0) {
45
+ condensed.push({
46
+ role: 'user',
47
+ content: `[Context Summary]\n${context_summary}`
48
+ });
49
+ logger.debug('Added context summary to condensed conversation');
50
+ }
51
+ // 3. Add recent messages for immediate context (keep last 3 by default)
52
+ const messages_to_include = recent_messages.slice(-3);
53
+ if (messages_to_include.length > 0) {
54
+ condensed.push(...messages_to_include);
55
+ logger.debug(`Added ${messages_to_include.length} recent messages to condensed conversation`);
56
+ }
57
+ // 4. Add current context if provided
58
+ // Format as plain text so the agent can understand it
59
+ if (current_context && Object.keys(current_context).length > 0) {
60
+ // Format context as readable text, excluding sensitive information
61
+ const context_text = Object.entries(current_context)
62
+ .filter(([key]) => !['streaming_utils', 'socket'].includes(key)) // Exclude non-serializable objects
63
+ .map(([key, value]) => {
64
+ // Format value as readable text
65
+ if (typeof value === 'object' && value !== null) {
66
+ try {
67
+ return `${key}: ${JSON.stringify(value, null, 2)}`;
68
+ }
69
+ catch {
70
+ return `${key}: [object]`;
71
+ }
72
+ }
73
+ return `${key}: ${value}`;
74
+ })
75
+ .join('\n');
76
+ condensed.push({
77
+ role: 'user',
78
+ content: `[Current Context]\n${context_text}`
79
+ });
80
+ logger.debug('Added current context to condensed conversation');
81
+ }
82
+ logger.info('Built condensed conversation', {
83
+ has_conversation_summary: !!conversation_summary,
84
+ has_context_summary: !!context_summary,
85
+ recent_messages_count: messages_to_include.length,
86
+ has_current_context: !!current_context,
87
+ total_messages: condensed.length
88
+ });
89
+ return condensed;
90
+ }
91
+ /**
92
+ * Fallback: Build conversation from full message history if summaries are not available
93
+ * Used for backward compatibility when summaries haven't been generated yet
94
+ *
95
+ * @param all_messages - Full conversation message history
96
+ * @param current_context - Current context object
97
+ * @returns Full conversation history with context
98
+ */
99
+ function build_full_conversation(all_messages, current_context) {
100
+ const conversation = [...all_messages];
101
+ // Add current context if provided
102
+ // Format as plain text so the agent can understand it
103
+ if (current_context && Object.keys(current_context).length > 0) {
104
+ // Format context as readable text, excluding sensitive information
105
+ const context_text = Object.entries(current_context)
106
+ .filter(([key]) => !['streaming_utils', 'socket'].includes(key)) // Exclude non-serializable objects
107
+ .map(([key, value]) => {
108
+ // Format value as readable text
109
+ if (typeof value === 'object' && value !== null) {
110
+ try {
111
+ return `${key}: ${JSON.stringify(value, null, 2)}`;
112
+ }
113
+ catch {
114
+ return `${key}: [object]`;
115
+ }
116
+ }
117
+ return `${key}: ${value}`;
118
+ })
119
+ .join('\n');
120
+ conversation.push({
121
+ role: 'user',
122
+ content: `[Current Context]\n${context_text}`
123
+ });
124
+ }
125
+ logger.info('Built full conversation (fallback - no summaries available)', {
126
+ message_count: all_messages.length,
127
+ has_current_context: !!current_context,
128
+ total_messages: conversation.length
129
+ });
130
+ return conversation;
131
+ }
132
+ //# sourceMappingURL=conversation-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-builder.js","sourceRoot":"","sources":["../../../src/lib/utils/conversation-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @fileoverview Domain Matcher Utility
3
+ *
4
+ * Utility functions for domain matching and validation.
5
+ * Provides case-insensitive domain matching.
6
+ *
7
+ * @author MeasureOne
8
+ * @version 1.0.0
9
+ */
10
+ /**
11
+ * Check if a domain exists in available_domains (case-insensitive)
12
+ * @param domain - The domain to check
13
+ * @param available_domains - Array of available domains
14
+ * @returns true if domain matches (case-insensitive), false otherwise
15
+ */
16
+ export declare function is_domain_in_list(domain: string | null, available_domains: string[]): boolean;
17
+ /**
18
+ * Find the matching domain from available_domains (case-insensitive)
19
+ * Returns the original case from available_domains if found
20
+ * @param domain - The domain to find
21
+ * @param available_domains - Array of available domains
22
+ * @returns The matching domain with original case, or null if not found
23
+ */
24
+ export declare function find_matching_domain(domain: string | null, available_domains: string[]): string | null;
25
+ //# sourceMappingURL=domain-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-matcher.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/domain-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAO7F;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAQtG"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Domain Matcher Utility
4
+ *
5
+ * Utility functions for domain matching and validation.
6
+ * Provides case-insensitive domain matching.
7
+ *
8
+ * @author MeasureOne
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.is_domain_in_list = is_domain_in_list;
13
+ exports.find_matching_domain = find_matching_domain;
14
+ /**
15
+ * Check if a domain exists in available_domains (case-insensitive)
16
+ * @param domain - The domain to check
17
+ * @param available_domains - Array of available domains
18
+ * @returns true if domain matches (case-insensitive), false otherwise
19
+ */
20
+ function is_domain_in_list(domain, available_domains) {
21
+ if (!domain || !Array.isArray(available_domains) || available_domains.length === 0) {
22
+ return false;
23
+ }
24
+ const normalized_domain = domain.trim().toLowerCase();
25
+ return available_domains.some(available => available.trim().toLowerCase() === normalized_domain);
26
+ }
27
+ /**
28
+ * Find the matching domain from available_domains (case-insensitive)
29
+ * Returns the original case from available_domains if found
30
+ * @param domain - The domain to find
31
+ * @param available_domains - Array of available domains
32
+ * @returns The matching domain with original case, or null if not found
33
+ */
34
+ function find_matching_domain(domain, available_domains) {
35
+ if (!domain || !Array.isArray(available_domains) || available_domains.length === 0) {
36
+ return null;
37
+ }
38
+ const normalized_domain = domain.trim().toLowerCase();
39
+ const match = available_domains.find(available => available.trim().toLowerCase() === normalized_domain);
40
+ return match || null;
41
+ }
42
+ //# sourceMappingURL=domain-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-matcher.js","sourceRoot":"","sources":["../../../src/lib/utils/domain-matcher.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAQH,8CAOC;AASD,oDAQC;AA9BD;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,MAAqB,EAAE,iBAA2B;IAChF,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,OAAO,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC,CAAC;AACrG,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,MAAqB,EAAE,iBAA2B;IACnF,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC,CAAC;IACxG,OAAO,KAAK,IAAI,IAAI,CAAC;AACzB,CAAC"}