@minded-ai/mindedjs 1.0.0-ec2-beta-1

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 (454) hide show
  1. package/README.md +6 -0
  2. package/dist/agent.d.ts +256 -0
  3. package/dist/agent.d.ts.map +1 -0
  4. package/dist/agent.js +896 -0
  5. package/dist/agent.js.map +1 -0
  6. package/dist/browserTask/README.md +419 -0
  7. package/dist/browserTask/browserAgent.py +632 -0
  8. package/dist/browserTask/captcha_isolated.png +0 -0
  9. package/dist/browserTask/executeBrowserTask.d.ts +14 -0
  10. package/dist/browserTask/executeBrowserTask.d.ts.map +1 -0
  11. package/dist/browserTask/executeBrowserTask.js +195 -0
  12. package/dist/browserTask/executeBrowserTask.js.map +1 -0
  13. package/dist/browserTask/executeBrowserTask.py +153 -0
  14. package/dist/browserTask/executeBrowserTask.ts +79 -0
  15. package/dist/browserTask/localBrowserTask.d.ts +49 -0
  16. package/dist/browserTask/localBrowserTask.d.ts.map +1 -0
  17. package/dist/browserTask/localBrowserTask.js +284 -0
  18. package/dist/browserTask/localBrowserTask.js.map +1 -0
  19. package/dist/browserTask/requirements.txt +8 -0
  20. package/dist/browserTask/setup.sh +144 -0
  21. package/dist/browserTask/types.d.ts +35 -0
  22. package/dist/browserTask/types.d.ts.map +1 -0
  23. package/dist/browserTask/types.js +10 -0
  24. package/dist/browserTask/types.js.map +1 -0
  25. package/dist/checkpointer/checkpointSaverFactory.d.ts +7 -0
  26. package/dist/checkpointer/checkpointSaverFactory.d.ts.map +1 -0
  27. package/dist/checkpointer/checkpointSaverFactory.js +53 -0
  28. package/dist/checkpointer/checkpointSaverFactory.js.map +1 -0
  29. package/dist/cli/index.d.ts +3 -0
  30. package/dist/cli/index.d.ts.map +1 -0
  31. package/dist/cli/index.js +209 -0
  32. package/dist/cli/index.js.map +1 -0
  33. package/dist/cli/lambdaHandlerTemplate.d.ts +10 -0
  34. package/dist/cli/lambdaHandlerTemplate.d.ts.map +1 -0
  35. package/dist/cli/lambdaHandlerTemplate.js +76 -0
  36. package/dist/cli/lambdaHandlerTemplate.js.map +1 -0
  37. package/dist/cli/lambdaHandlerTemplate.ts +78 -0
  38. package/dist/cli/localOperatorSetup.d.ts +6 -0
  39. package/dist/cli/localOperatorSetup.d.ts.map +1 -0
  40. package/dist/cli/localOperatorSetup.js +310 -0
  41. package/dist/cli/localOperatorSetup.js.map +1 -0
  42. package/dist/debugging/index.d.ts +2 -0
  43. package/dist/debugging/index.d.ts.map +1 -0
  44. package/dist/debugging/index.js +6 -0
  45. package/dist/debugging/index.js.map +1 -0
  46. package/dist/debugging/llmCallbackHandler.d.ts +36 -0
  47. package/dist/debugging/llmCallbackHandler.d.ts.map +1 -0
  48. package/dist/debugging/llmCallbackHandler.js +101 -0
  49. package/dist/debugging/llmCallbackHandler.js.map +1 -0
  50. package/dist/edges/createDirectEdge.d.ts +4 -0
  51. package/dist/edges/createDirectEdge.d.ts.map +1 -0
  52. package/dist/edges/createDirectEdge.js +24 -0
  53. package/dist/edges/createDirectEdge.js.map +1 -0
  54. package/dist/edges/createLogicalRouter.d.ts +8 -0
  55. package/dist/edges/createLogicalRouter.d.ts.map +1 -0
  56. package/dist/edges/createLogicalRouter.js +194 -0
  57. package/dist/edges/createLogicalRouter.js.map +1 -0
  58. package/dist/edges/createPromptRouter.d.ts +12 -0
  59. package/dist/edges/createPromptRouter.d.ts.map +1 -0
  60. package/dist/edges/createPromptRouter.js +176 -0
  61. package/dist/edges/createPromptRouter.js.map +1 -0
  62. package/dist/edges/edgeFactory.d.ts +14 -0
  63. package/dist/edges/edgeFactory.d.ts.map +1 -0
  64. package/dist/edges/edgeFactory.js +125 -0
  65. package/dist/edges/edgeFactory.js.map +1 -0
  66. package/dist/events/AgentEvents.d.ts +56 -0
  67. package/dist/events/AgentEvents.d.ts.map +1 -0
  68. package/dist/events/AgentEvents.js +13 -0
  69. package/dist/events/AgentEvents.js.map +1 -0
  70. package/dist/events/index.d.ts +3 -0
  71. package/dist/events/index.d.ts.map +1 -0
  72. package/dist/events/index.js +5 -0
  73. package/dist/events/index.js.map +1 -0
  74. package/dist/index.d.ts +35 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +98 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/interfaces/zendesk.d.ts +35 -0
  79. package/dist/interfaces/zendesk.d.ts.map +1 -0
  80. package/dist/interfaces/zendesk.js +219 -0
  81. package/dist/interfaces/zendesk.js.map +1 -0
  82. package/dist/internalTools/appActionRunnerTool.d.ts +5 -0
  83. package/dist/internalTools/appActionRunnerTool.d.ts.map +1 -0
  84. package/dist/internalTools/appActionRunnerTool.js +88 -0
  85. package/dist/internalTools/appActionRunnerTool.js.map +1 -0
  86. package/dist/internalTools/documentExtraction/documentExtraction.d.ts +129 -0
  87. package/dist/internalTools/documentExtraction/documentExtraction.d.ts.map +1 -0
  88. package/dist/internalTools/documentExtraction/documentExtraction.js +736 -0
  89. package/dist/internalTools/documentExtraction/documentExtraction.js.map +1 -0
  90. package/dist/internalTools/documentExtraction/types.d.ts +29 -0
  91. package/dist/internalTools/documentExtraction/types.d.ts.map +1 -0
  92. package/dist/internalTools/documentExtraction/types.js +35 -0
  93. package/dist/internalTools/documentExtraction/types.js.map +1 -0
  94. package/dist/internalTools/libraryActionRunnerTool.d.ts +4 -0
  95. package/dist/internalTools/libraryActionRunnerTool.d.ts.map +1 -0
  96. package/dist/internalTools/libraryActionRunnerTool.js +53 -0
  97. package/dist/internalTools/libraryActionRunnerTool.js.map +1 -0
  98. package/dist/internalTools/retell.d.ts +12 -0
  99. package/dist/internalTools/retell.d.ts.map +1 -0
  100. package/dist/internalTools/retell.js +54 -0
  101. package/dist/internalTools/retell.js.map +1 -0
  102. package/dist/internalTools/sendPlaceholderMessage.d.ts +14 -0
  103. package/dist/internalTools/sendPlaceholderMessage.d.ts.map +1 -0
  104. package/dist/internalTools/sendPlaceholderMessage.js +61 -0
  105. package/dist/internalTools/sendPlaceholderMessage.js.map +1 -0
  106. package/dist/internalTools/timer.d.ts +99 -0
  107. package/dist/internalTools/timer.d.ts.map +1 -0
  108. package/dist/internalTools/timer.js +139 -0
  109. package/dist/internalTools/timer.js.map +1 -0
  110. package/dist/internalTools/voice/escalateVoiceCall.d.ts +2 -0
  111. package/dist/internalTools/voice/escalateVoiceCall.d.ts.map +1 -0
  112. package/dist/internalTools/voice/escalateVoiceCall.js +52 -0
  113. package/dist/internalTools/voice/escalateVoiceCall.js.map +1 -0
  114. package/dist/internalTools/voice/retell.d.ts +12 -0
  115. package/dist/internalTools/voice/retell.d.ts.map +1 -0
  116. package/dist/internalTools/voice/retell.js +54 -0
  117. package/dist/internalTools/voice/retell.js.map +1 -0
  118. package/dist/internalTools/voice/sendPlaceholderMessage.d.ts +14 -0
  119. package/dist/internalTools/voice/sendPlaceholderMessage.d.ts.map +1 -0
  120. package/dist/internalTools/voice/sendPlaceholderMessage.js +61 -0
  121. package/dist/internalTools/voice/sendPlaceholderMessage.js.map +1 -0
  122. package/dist/interrupts/BaseInterruptSessionManager.d.ts +49 -0
  123. package/dist/interrupts/BaseInterruptSessionManager.d.ts.map +1 -0
  124. package/dist/interrupts/BaseInterruptSessionManager.js +34 -0
  125. package/dist/interrupts/BaseInterruptSessionManager.js.map +1 -0
  126. package/dist/interrupts/MemoryInterruptSessionManager.d.ts +14 -0
  127. package/dist/interrupts/MemoryInterruptSessionManager.d.ts.map +1 -0
  128. package/dist/interrupts/MemoryInterruptSessionManager.js +60 -0
  129. package/dist/interrupts/MemoryInterruptSessionManager.js.map +1 -0
  130. package/dist/interrupts/MindedInterruptSessionManager.d.ts +13 -0
  131. package/dist/interrupts/MindedInterruptSessionManager.d.ts.map +1 -0
  132. package/dist/interrupts/MindedInterruptSessionManager.js +162 -0
  133. package/dist/interrupts/MindedInterruptSessionManager.js.map +1 -0
  134. package/dist/interrupts/interruptSessionManagerFactory.d.ts +3 -0
  135. package/dist/interrupts/interruptSessionManagerFactory.d.ts.map +1 -0
  136. package/dist/interrupts/interruptSessionManagerFactory.js +56 -0
  137. package/dist/interrupts/interruptSessionManagerFactory.js.map +1 -0
  138. package/dist/llm/createLlmInstance.d.ts +3 -0
  139. package/dist/llm/createLlmInstance.d.ts.map +1 -0
  140. package/dist/llm/createLlmInstance.js +31 -0
  141. package/dist/llm/createLlmInstance.js.map +1 -0
  142. package/dist/nodes/addAppToolNode.d.ts +13 -0
  143. package/dist/nodes/addAppToolNode.d.ts.map +1 -0
  144. package/dist/nodes/addAppToolNode.js +87 -0
  145. package/dist/nodes/addAppToolNode.js.map +1 -0
  146. package/dist/nodes/addBrowserTaskNode.d.ts +13 -0
  147. package/dist/nodes/addBrowserTaskNode.d.ts.map +1 -0
  148. package/dist/nodes/addBrowserTaskNode.js +167 -0
  149. package/dist/nodes/addBrowserTaskNode.js.map +1 -0
  150. package/dist/nodes/addBrowserTaskRunNode.d.ts +13 -0
  151. package/dist/nodes/addBrowserTaskRunNode.d.ts.map +1 -0
  152. package/dist/nodes/addBrowserTaskRunNode.js +167 -0
  153. package/dist/nodes/addBrowserTaskRunNode.js.map +1 -0
  154. package/dist/nodes/addHumanInTheLoopNode.d.ts +9 -0
  155. package/dist/nodes/addHumanInTheLoopNode.d.ts.map +1 -0
  156. package/dist/nodes/addHumanInTheLoopNode.js +22 -0
  157. package/dist/nodes/addHumanInTheLoopNode.js.map +1 -0
  158. package/dist/nodes/addJumpToNode.d.ts +7 -0
  159. package/dist/nodes/addJumpToNode.d.ts.map +1 -0
  160. package/dist/nodes/addJumpToNode.js +24 -0
  161. package/dist/nodes/addJumpToNode.js.map +1 -0
  162. package/dist/nodes/addJunctionNode.d.ts +7 -0
  163. package/dist/nodes/addJunctionNode.d.ts.map +1 -0
  164. package/dist/nodes/addJunctionNode.js +20 -0
  165. package/dist/nodes/addJunctionNode.js.map +1 -0
  166. package/dist/nodes/addPromptNode.d.ts +18 -0
  167. package/dist/nodes/addPromptNode.d.ts.map +1 -0
  168. package/dist/nodes/addPromptNode.js +253 -0
  169. package/dist/nodes/addPromptNode.js.map +1 -0
  170. package/dist/nodes/addRpaNode.d.ts +18 -0
  171. package/dist/nodes/addRpaNode.d.ts.map +1 -0
  172. package/dist/nodes/addRpaNode.js +180 -0
  173. package/dist/nodes/addRpaNode.js.map +1 -0
  174. package/dist/nodes/addToolNode.d.ts +13 -0
  175. package/dist/nodes/addToolNode.d.ts.map +1 -0
  176. package/dist/nodes/addToolNode.js +67 -0
  177. package/dist/nodes/addToolNode.js.map +1 -0
  178. package/dist/nodes/addToolRunNode.d.ts +17 -0
  179. package/dist/nodes/addToolRunNode.d.ts.map +1 -0
  180. package/dist/nodes/addToolRunNode.js +59 -0
  181. package/dist/nodes/addToolRunNode.js.map +1 -0
  182. package/dist/nodes/addTriggerNode.d.ts +7 -0
  183. package/dist/nodes/addTriggerNode.d.ts.map +1 -0
  184. package/dist/nodes/addTriggerNode.js +25 -0
  185. package/dist/nodes/addTriggerNode.js.map +1 -0
  186. package/dist/nodes/compilePrompt.d.ts +5 -0
  187. package/dist/nodes/compilePrompt.d.ts.map +1 -0
  188. package/dist/nodes/compilePrompt.js +76 -0
  189. package/dist/nodes/compilePrompt.js.map +1 -0
  190. package/dist/nodes/nodeFactory.d.ts +16 -0
  191. package/dist/nodes/nodeFactory.d.ts.map +1 -0
  192. package/dist/nodes/nodeFactory.js +45 -0
  193. package/dist/nodes/nodeFactory.js.map +1 -0
  194. package/dist/nodes/rpaStepsExecutor.d.ts +5 -0
  195. package/dist/nodes/rpaStepsExecutor.d.ts.map +1 -0
  196. package/dist/nodes/rpaStepsExecutor.js +156 -0
  197. package/dist/nodes/rpaStepsExecutor.js.map +1 -0
  198. package/dist/platform/config.d.ts +16 -0
  199. package/dist/platform/config.d.ts.map +1 -0
  200. package/dist/platform/config.js +80 -0
  201. package/dist/platform/config.js.map +1 -0
  202. package/dist/platform/mindedCheckpointSaver.d.ts +10 -0
  203. package/dist/platform/mindedCheckpointSaver.d.ts.map +1 -0
  204. package/dist/platform/mindedCheckpointSaver.js +137 -0
  205. package/dist/platform/mindedCheckpointSaver.js.map +1 -0
  206. package/dist/platform/mindedConnection.d.ts +15 -0
  207. package/dist/platform/mindedConnection.d.ts.map +1 -0
  208. package/dist/platform/mindedConnection.js +254 -0
  209. package/dist/platform/mindedConnection.js.map +1 -0
  210. package/dist/platform/mindedConnectionTypes.d.ts +404 -0
  211. package/dist/platform/mindedConnectionTypes.d.ts.map +1 -0
  212. package/dist/platform/mindedConnectionTypes.js +51 -0
  213. package/dist/platform/mindedConnectionTypes.js.map +1 -0
  214. package/dist/platform/models/mindedChatOpenAI.d.ts +20 -0
  215. package/dist/platform/models/mindedChatOpenAI.d.ts.map +1 -0
  216. package/dist/platform/models/mindedChatOpenAI.js +32 -0
  217. package/dist/platform/models/mindedChatOpenAI.js.map +1 -0
  218. package/dist/platform/models/parallelWrapper.d.ts +17 -0
  219. package/dist/platform/models/parallelWrapper.d.ts.map +1 -0
  220. package/dist/platform/models/parallelWrapper.js +105 -0
  221. package/dist/platform/models/parallelWrapper.js.map +1 -0
  222. package/dist/platform/piiGateway/gateway.d.ts +14 -0
  223. package/dist/platform/piiGateway/gateway.d.ts.map +1 -0
  224. package/dist/platform/piiGateway/gateway.js +117 -0
  225. package/dist/platform/piiGateway/gateway.js.map +1 -0
  226. package/dist/platform/piiGateway/index.d.ts +3 -0
  227. package/dist/platform/piiGateway/index.d.ts.map +1 -0
  228. package/dist/platform/piiGateway/index.js +7 -0
  229. package/dist/platform/piiGateway/index.js.map +1 -0
  230. package/dist/platform/piiGateway/types.d.ts +27 -0
  231. package/dist/platform/piiGateway/types.d.ts.map +1 -0
  232. package/dist/platform/piiGateway/types.js +3 -0
  233. package/dist/platform/piiGateway/types.js.map +1 -0
  234. package/dist/platform/toolExecutor.d.ts +29 -0
  235. package/dist/platform/toolExecutor.d.ts.map +1 -0
  236. package/dist/platform/toolExecutor.js +84 -0
  237. package/dist/platform/toolExecutor.js.map +1 -0
  238. package/dist/platform/utils/parseAttachments.d.ts +14 -0
  239. package/dist/platform/utils/parseAttachments.d.ts.map +1 -0
  240. package/dist/platform/utils/parseAttachments.js +53 -0
  241. package/dist/platform/utils/parseAttachments.js.map +1 -0
  242. package/dist/platform/utils/tools.d.ts +6 -0
  243. package/dist/platform/utils/tools.d.ts.map +1 -0
  244. package/dist/platform/utils/tools.js +57 -0
  245. package/dist/platform/utils/tools.js.map +1 -0
  246. package/dist/playbooks/playbooks.d.ts +15 -0
  247. package/dist/playbooks/playbooks.d.ts.map +1 -0
  248. package/dist/playbooks/playbooks.js +208 -0
  249. package/dist/playbooks/playbooks.js.map +1 -0
  250. package/dist/toolsLibrary/classifier.d.ts +74 -0
  251. package/dist/toolsLibrary/classifier.d.ts.map +1 -0
  252. package/dist/toolsLibrary/classifier.js +256 -0
  253. package/dist/toolsLibrary/classifier.js.map +1 -0
  254. package/dist/toolsLibrary/extraction.d.ts +83 -0
  255. package/dist/toolsLibrary/extraction.d.ts.map +1 -0
  256. package/dist/toolsLibrary/extraction.js +328 -0
  257. package/dist/toolsLibrary/extraction.js.map +1 -0
  258. package/dist/toolsLibrary/index.d.ts +9 -0
  259. package/dist/toolsLibrary/index.d.ts.map +1 -0
  260. package/dist/toolsLibrary/index.js +46 -0
  261. package/dist/toolsLibrary/index.js.map +1 -0
  262. package/dist/toolsLibrary/parseDocument.d.ts +30 -0
  263. package/dist/toolsLibrary/parseDocument.d.ts.map +1 -0
  264. package/dist/toolsLibrary/parseDocument.js +119 -0
  265. package/dist/toolsLibrary/parseDocument.js.map +1 -0
  266. package/dist/triggers/triggerTypeToDefaultMessage.d.ts +4 -0
  267. package/dist/triggers/triggerTypeToDefaultMessage.d.ts.map +1 -0
  268. package/dist/triggers/triggerTypeToDefaultMessage.js +10 -0
  269. package/dist/triggers/triggerTypeToDefaultMessage.js.map +1 -0
  270. package/dist/types/Agent.types.d.ts +60 -0
  271. package/dist/types/Agent.types.d.ts.map +1 -0
  272. package/dist/types/Agent.types.js +9 -0
  273. package/dist/types/Agent.types.js.map +1 -0
  274. package/dist/types/Flows.types.d.ts +232 -0
  275. package/dist/types/Flows.types.d.ts.map +1 -0
  276. package/dist/types/Flows.types.js +65 -0
  277. package/dist/types/Flows.types.js.map +1 -0
  278. package/dist/types/LLM.types.d.ts +7 -0
  279. package/dist/types/LLM.types.d.ts.map +1 -0
  280. package/dist/types/LLM.types.js +11 -0
  281. package/dist/types/LLM.types.js.map +1 -0
  282. package/dist/types/LangGraph.types.d.ts +45 -0
  283. package/dist/types/LangGraph.types.d.ts.map +1 -0
  284. package/dist/types/LangGraph.types.js +77 -0
  285. package/dist/types/LangGraph.types.js.map +1 -0
  286. package/dist/types/Platform.types.d.ts +7 -0
  287. package/dist/types/Platform.types.d.ts.map +1 -0
  288. package/dist/types/Platform.types.js +11 -0
  289. package/dist/types/Platform.types.js.map +1 -0
  290. package/dist/types/Tools.types.d.ts +26 -0
  291. package/dist/types/Tools.types.d.ts.map +1 -0
  292. package/dist/types/Tools.types.js +3 -0
  293. package/dist/types/Tools.types.js.map +1 -0
  294. package/dist/types/Voice.types.d.ts +5 -0
  295. package/dist/types/Voice.types.d.ts.map +1 -0
  296. package/dist/types/Voice.types.js +3 -0
  297. package/dist/types/Voice.types.js.map +1 -0
  298. package/dist/utils/agentUtils.d.ts +5 -0
  299. package/dist/utils/agentUtils.d.ts.map +1 -0
  300. package/dist/utils/agentUtils.js +97 -0
  301. package/dist/utils/agentUtils.js.map +1 -0
  302. package/dist/utils/extractStateMemoryResponse.d.ts +5 -0
  303. package/dist/utils/extractStateMemoryResponse.d.ts.map +1 -0
  304. package/dist/utils/extractStateMemoryResponse.js +91 -0
  305. package/dist/utils/extractStateMemoryResponse.js.map +1 -0
  306. package/dist/utils/history.d.ts +4 -0
  307. package/dist/utils/history.d.ts.map +1 -0
  308. package/dist/utils/history.js +33 -0
  309. package/dist/utils/history.js.map +1 -0
  310. package/dist/utils/logger.d.ts +3 -0
  311. package/dist/utils/logger.d.ts.map +1 -0
  312. package/dist/utils/logger.js +39 -0
  313. package/dist/utils/logger.js.map +1 -0
  314. package/dist/utils/schemaUtils.d.ts +15 -0
  315. package/dist/utils/schemaUtils.d.ts.map +1 -0
  316. package/dist/utils/schemaUtils.js +56 -0
  317. package/dist/utils/schemaUtils.js.map +1 -0
  318. package/dist/utils/wait.d.ts +2 -0
  319. package/dist/utils/wait.d.ts.map +1 -0
  320. package/dist/utils/wait.js +6 -0
  321. package/dist/utils/wait.js.map +1 -0
  322. package/dist/voice/elevenLabsUtils.d.ts +65 -0
  323. package/dist/voice/elevenLabsUtils.d.ts.map +1 -0
  324. package/dist/voice/elevenLabsUtils.js +4 -0
  325. package/dist/voice/elevenLabsUtils.js.map +1 -0
  326. package/dist/voice/voiceSession.d.ts +37 -0
  327. package/dist/voice/voiceSession.d.ts.map +1 -0
  328. package/dist/voice/voiceSession.js +306 -0
  329. package/dist/voice/voiceSession.js.map +1 -0
  330. package/docs/.gitbook/assets/ADLC.png +0 -0
  331. package/docs/.gitbook/assets/PII-masking.png +0 -0
  332. package/docs/.gitbook/assets/image.png +0 -0
  333. package/docs/.gitbook/assets/on-prem.svg +4 -0
  334. package/docs/README.md +54 -0
  335. package/docs/SUMMARY.md +56 -0
  336. package/docs/examples/order-refund-flow.md +566 -0
  337. package/docs/getting-started/environment-configuration.md +158 -0
  338. package/docs/getting-started/installation.md +44 -0
  339. package/docs/getting-started/project-configuration.md +206 -0
  340. package/docs/getting-started/quick-start.md +262 -0
  341. package/docs/integrations/zendesk.md +554 -0
  342. package/docs/low-code-editor/edges.md +396 -0
  343. package/docs/low-code-editor/flows.md +74 -0
  344. package/docs/low-code-editor/nodes.md +367 -0
  345. package/docs/low-code-editor/playbooks.md +280 -0
  346. package/docs/low-code-editor/tools.md +358 -0
  347. package/docs/low-code-editor/triggers.md +182 -0
  348. package/docs/platform/on-prem.md +182 -0
  349. package/docs/platform/operator.md +89 -0
  350. package/docs/platform/pii-masking.md +221 -0
  351. package/docs/platform/scenarios.md +43 -0
  352. package/docs/platform/secrets.md +99 -0
  353. package/docs/platform/sso.md +27 -0
  354. package/docs/resources/your-first-eval.md +108 -0
  355. package/docs/sdk/agent-api.md +540 -0
  356. package/docs/sdk/debugging.md +80 -0
  357. package/docs/sdk/events.md +595 -0
  358. package/docs/sdk/logging.md +72 -0
  359. package/docs/sdk/memory.md +271 -0
  360. package/docs/sdk/parallel-llm.md +242 -0
  361. package/docs/sdk/vectorstore-query.md +60 -0
  362. package/docs/tooling/classifier.md +217 -0
  363. package/docs/tooling/document-processing.md +389 -0
  364. package/docs/tooling/extraction.md +78 -0
  365. package/docs/tooling/timers.md +61 -0
  366. package/package.json +73 -0
  367. package/src/agent.ts +1019 -0
  368. package/src/browserTask/executeBrowserTask.py +153 -0
  369. package/src/browserTask/executeBrowserTask.ts +253 -0
  370. package/src/browserTask/localBrowserTask.ts +300 -0
  371. package/src/browserTask/profile/Default/Extension Rules/000003.log +0 -0
  372. package/src/browserTask/profile/Default/Extension Scripts/000003.log +0 -0
  373. package/src/browserTask/profile/Default/Extension State/000003.log +0 -0
  374. package/src/browserTask/profile/Default/GCM Store/000003.log +0 -0
  375. package/src/browserTask/profile/Default/Local Storage/leveldb/000004.log +0 -0
  376. package/src/browserTask/profile/Default/Session Storage/000003.log +0 -0
  377. package/src/browserTask/profile/Default/Site Characteristics Database/000003.log +0 -0
  378. package/src/browserTask/profile/Default/Sync Data/LevelDB/000003.log +0 -0
  379. package/src/browserTask/profile/Default/shared_proto_db/000003.log +0 -0
  380. package/src/browserTask/profile/Default/shared_proto_db/metadata/000003.log +0 -0
  381. package/src/browserTask/types.ts +37 -0
  382. package/src/checkpointer/checkpointSaverFactory.ts +18 -0
  383. package/src/cli/index.ts +188 -0
  384. package/src/cli/lambdaHandlerTemplate.ts +78 -0
  385. package/src/cli/localOperatorSetup.ts +308 -0
  386. package/src/debugging/index.ts +1 -0
  387. package/src/debugging/llmCallbackHandler.ts +125 -0
  388. package/src/edges/createDirectEdge.ts +22 -0
  389. package/src/edges/createLogicalRouter.ts +182 -0
  390. package/src/edges/createPromptRouter.ts +213 -0
  391. package/src/edges/edgeFactory.ts +167 -0
  392. package/src/events/AgentEvents.ts +58 -0
  393. package/src/events/index.ts +3 -0
  394. package/src/index.ts +105 -0
  395. package/src/interfaces/zendesk.ts +212 -0
  396. package/src/internalTools/appActionRunnerTool.ts +68 -0
  397. package/src/internalTools/documentExtraction/documentExtraction.ts +804 -0
  398. package/src/internalTools/documentExtraction/types.ts +59 -0
  399. package/src/internalTools/libraryActionRunnerTool.ts +62 -0
  400. package/src/internalTools/timer.ts +125 -0
  401. package/src/internalTools/voice/escalateVoiceCall.ts +15 -0
  402. package/src/internalTools/voice/retell.ts +28 -0
  403. package/src/internalTools/voice/sendPlaceholderMessage.ts +27 -0
  404. package/src/interrupts/BaseInterruptSessionManager.ts +80 -0
  405. package/src/interrupts/MemoryInterruptSessionManager.ts +63 -0
  406. package/src/interrupts/MindedInterruptSessionManager.ts +163 -0
  407. package/src/interrupts/interruptSessionManagerFactory.ts +20 -0
  408. package/src/llm/createLlmInstance.ts +33 -0
  409. package/src/nodes/addAppToolNode.ts +111 -0
  410. package/src/nodes/addBrowserTaskNode.ts +191 -0
  411. package/src/nodes/addBrowserTaskRunNode.ts +190 -0
  412. package/src/nodes/addHumanInTheLoopNode.ts +26 -0
  413. package/src/nodes/addJumpToNode.ts +26 -0
  414. package/src/nodes/addJunctionNode.ts +21 -0
  415. package/src/nodes/addPromptNode.ts +305 -0
  416. package/src/nodes/addRpaNode.ts +217 -0
  417. package/src/nodes/addToolNode.ts +84 -0
  418. package/src/nodes/addToolRunNode.ts +80 -0
  419. package/src/nodes/addTriggerNode.ts +27 -0
  420. package/src/nodes/compilePrompt.ts +44 -0
  421. package/src/nodes/nodeFactory.ts +61 -0
  422. package/src/nodes/rpaStepsExecutor.ts +175 -0
  423. package/src/platform/config.ts +89 -0
  424. package/src/platform/mindedCheckpointSaver.ts +146 -0
  425. package/src/platform/mindedConnection.ts +250 -0
  426. package/src/platform/mindedConnectionTypes.ts +495 -0
  427. package/src/platform/models/mindedChatOpenAI.ts +49 -0
  428. package/src/platform/models/parallelWrapper.ts +141 -0
  429. package/src/platform/piiGateway/gateway.ts +103 -0
  430. package/src/platform/piiGateway/index.ts +5 -0
  431. package/src/platform/piiGateway/types.ts +29 -0
  432. package/src/platform/toolExecutor.ts +106 -0
  433. package/src/platform/utils/parseAttachments.ts +56 -0
  434. package/src/platform/utils/tools.ts +55 -0
  435. package/src/playbooks/playbooks.ts +200 -0
  436. package/src/toolsLibrary/classifier.ts +326 -0
  437. package/src/toolsLibrary/extraction.ts +393 -0
  438. package/src/toolsLibrary/index.ts +10 -0
  439. package/src/toolsLibrary/parseDocument.ts +129 -0
  440. package/src/triggers/triggerTypeToDefaultMessage.ts +9 -0
  441. package/src/types/Agent.types.ts +73 -0
  442. package/src/types/Flows.types.ts +262 -0
  443. package/src/types/LLM.types.ts +15 -0
  444. package/src/types/LangGraph.types.ts +86 -0
  445. package/src/types/Platform.types.ts +6 -0
  446. package/src/types/Tools.types.ts +28 -0
  447. package/src/types/Voice.types.ts +4 -0
  448. package/src/utils/agentUtils.ts +69 -0
  449. package/src/utils/history.ts +38 -0
  450. package/src/utils/logger.ts +38 -0
  451. package/src/utils/schemaUtils.ts +68 -0
  452. package/src/utils/wait.ts +1 -0
  453. package/src/voice/elevenLabsUtils.ts +81 -0
  454. package/src/voice/voiceSession.ts +309 -0
@@ -0,0 +1,59 @@
1
+ import { ZodType as ZodSchema, ZodTypeAny } from 'zod';
2
+
3
+ export interface DocumentProcessorConfig {
4
+ llamaCloudApiKey?: string;
5
+ useBase64?: boolean;
6
+ maxImageWidth?: number;
7
+ imageQuality?: number;
8
+ }
9
+ export interface DocumentExtractionOptions {
10
+ documentPath?: string;
11
+ documentContent?: Buffer | string;
12
+ documentUrl?: string;
13
+ schema?: ZodSchema<any> | ZodTypeAny;
14
+ llmConfig?: {
15
+ model?: string;
16
+ temperature?: number;
17
+ };
18
+ systemPrompt?: string;
19
+ }
20
+ export interface DocumentProcessingResult<T = any> {
21
+ data: T;
22
+ metadata: {
23
+ fileSize?: number;
24
+ fileType: string;
25
+ processingTime: number;
26
+ contentLength: number;
27
+ };
28
+ }
29
+ export const SUPPORTED_DOCUMENT_TYPES = [
30
+ // Images
31
+ '.jpg',
32
+ '.jpeg',
33
+ '.png',
34
+ '.gif',
35
+ '.bmp',
36
+ '.webp',
37
+ '.tiff',
38
+ // Documents
39
+ '.pdf',
40
+ '.doc',
41
+ '.docx',
42
+ '.txt',
43
+ '.rtf',
44
+ '.odt',
45
+ // Spreadsheets
46
+ '.xls',
47
+ '.xlsx',
48
+ '.csv',
49
+ '.ods',
50
+ // Presentations
51
+ '.ppt',
52
+ '.pptx',
53
+ '.odp',
54
+ // Other formats
55
+ '.html',
56
+ '.htm',
57
+ '.md',
58
+ '.xml',
59
+ ];
@@ -0,0 +1,62 @@
1
+ import { Tool, ToolExecuteInput } from '../types/Tools.types';
2
+ import { tools } from '../toolsLibrary';
3
+ import { logger } from '../utils/logger';
4
+
5
+ const libraryActionRunnerToolCreator = (actionKey: string, nodeTitle: string): Tool<any, any> => {
6
+ // Find the corresponding library tool by key name (e.g., "parseDocument")
7
+ const libraryTool = (tools as any)[actionKey];
8
+
9
+ if (!libraryTool?.default) {
10
+ throw new Error(`Library tool '${actionKey}' not found in toolsLibrary`);
11
+ }
12
+
13
+ if (!libraryTool.schema) {
14
+ throw new Error(`Schema not found for library tool '${actionKey}'. Make sure the tool exports a 'schema' object.`);
15
+ }
16
+
17
+ const zodSchema = libraryTool.schema;
18
+
19
+ // Create a description using the library tool's own description
20
+ const description = libraryTool.default.description || `Run ${nodeTitle} action from Minded Tools library.`;
21
+
22
+ const tool = {
23
+ name: nodeTitle,
24
+ description,
25
+ input: zodSchema,
26
+ execute: async ({ input, state, agent }: ToolExecuteInput<typeof zodSchema>) => {
27
+ try {
28
+ // Find the corresponding library tool
29
+ const libraryTool = Object.values(tools).find((toolModule) => toolModule.default && toolModule.default.name === actionKey);
30
+
31
+ if (!libraryTool?.default) {
32
+ throw new Error(`Library tool '${actionKey}' not found in toolsLibrary`);
33
+ }
34
+
35
+ logger.debug({
36
+ msg: `[Tool] Executing library tool`,
37
+ toolName: actionKey,
38
+ nodeTitle,
39
+ });
40
+
41
+ // Execute the library tool directly
42
+ const result = await libraryTool.default.execute({ input, state, agent });
43
+
44
+ return {
45
+ result: result?.result,
46
+ };
47
+ } catch (err) {
48
+ logger.error({
49
+ message: `[Tool] Error executing library tool`,
50
+ err,
51
+ toolName: actionKey,
52
+ nodeTitle,
53
+ });
54
+ throw err;
55
+ }
56
+ },
57
+ };
58
+
59
+ return tool;
60
+ };
61
+
62
+ export default libraryActionRunnerToolCreator;
@@ -0,0 +1,125 @@
1
+ import * as mindedConnection from '../platform/mindedConnection';
2
+ import { mindedConnectionSocketMessageType, TimerResetResponse, TimerCancelResponse } from '../platform/mindedConnectionTypes';
3
+ import { State } from '../types/LangGraph.types';
4
+
5
+ // Store timer handlers by timer name (one handler per timer name)
6
+ export const timerHandlers = new Map<
7
+ string,
8
+ {
9
+ handler: (params: { sessionId: string; payload: Record<string, any>; state: State<any> }) => void | Promise<void>;
10
+ }
11
+ >();
12
+
13
+ /**
14
+ * Reset or set a timer for a specific session.
15
+ * When the timer expires, the registered timer handler will be called.
16
+ *
17
+ * @param params - The timer configuration
18
+ * @param params.sessionId - The session ID to associate the timer with
19
+ * @param params.seconds - Number of seconds until the timer expires
20
+ * @param params.timerName - Unique name for this timer (used for cancellation and identification)
21
+ * @param params.payload - Additional data to pass to the timer handler when it triggers
22
+ * @returns Promise resolving to timer reset response
23
+ * @throws {Error} When the Minded connection is not established
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * import { resetTimer } from '@minded-ai/mindedjs';
28
+ *
29
+ * // Set a timer to follow up in 10 seconds
30
+ * await resetTimer({
31
+ * sessionId: 'session-123',
32
+ * seconds: 10,
33
+ * timerName: 'followup',
34
+ * payload: {
35
+ * message: 'Are you still there?'
36
+ * }
37
+ * });
38
+ * ```
39
+ */
40
+ export async function resetTimer({
41
+ sessionId,
42
+ seconds,
43
+ timerName,
44
+ payload = {},
45
+ }: {
46
+ sessionId: string;
47
+ seconds: number;
48
+ timerName: string;
49
+ payload?: Record<string, any>;
50
+ }): Promise<TimerResetResponse> {
51
+ return await mindedConnection.awaitEmit(mindedConnectionSocketMessageType.TIMER_RESET, {
52
+ sessionId,
53
+ seconds,
54
+ timerName,
55
+ eventArgs: payload,
56
+ });
57
+ }
58
+
59
+ /**
60
+ * Cancel an existing timer for a specific session.
61
+ *
62
+ * @param sessionId - The session ID the timer is associated with
63
+ * @param timerName - The name of the timer to cancel
64
+ * @returns Promise resolving to timer cancel response
65
+ * @throws {Error} When the Minded connection is not established
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * import { cancelTimer } from '@minded-ai/mindedjs';
70
+ *
71
+ * // Cancel a previously set timer
72
+ * await cancelTimer('session-123', 'followup');
73
+ * ```
74
+ */
75
+ export async function cancelTimer(sessionId: string, timerName: string): Promise<TimerCancelResponse> {
76
+ if (!mindedConnection.isConnected()) {
77
+ throw new Error('Minded connection is not established when trying to cancel timer');
78
+ }
79
+ return await mindedConnection.awaitEmit(mindedConnectionSocketMessageType.TIMER_CANCEL, {
80
+ sessionId,
81
+ timerName,
82
+ });
83
+ }
84
+
85
+ /**
86
+ * Register a handler for timer trigger events for a specific timer name.
87
+ * The handler will be called when the specified timer expires for any session.
88
+ *
89
+ * Note: Only one handler per timer name is supported. Calling this function multiple times
90
+ * with the same timer name will replace the previous handler.
91
+ *
92
+ * @param params - The configuration for the timer handler
93
+ * @param params.timerName - The name of the timer to handle
94
+ * @param params.handler - Function to call when the timer triggers
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * import { onTimer } from '@minded-ai/mindedjs';
99
+ *
100
+ * // Register a handler for the 'followup' timer
101
+ * onTimer({
102
+ * timerName: 'followup',
103
+ * handler: async ({ sessionId, payload }) => {
104
+ * logger.info({ msg: `Followup timer triggered for session ${sessionId}` });
105
+ *
106
+ * // Handle the followup timer
107
+ * await agent.invoke({
108
+ * triggerName: 'timerFollowup',
109
+ * triggerBody: { message: payload.message },
110
+ * sessionId
111
+ * });
112
+ * }
113
+ * });
114
+ * ```
115
+ */
116
+ export function onTimer({
117
+ timerName,
118
+ handler,
119
+ }: {
120
+ timerName: string;
121
+ handler: (params: { sessionId: string; payload: Record<string, any>; state: State<any> }) => void | Promise<void>;
122
+ }): void {
123
+ // Set the handler for this timer name (replaces any existing handler)
124
+ timerHandlers.set(timerName, { handler });
125
+ }
@@ -0,0 +1,15 @@
1
+ import * as mindedConnection from '../../platform/mindedConnection';
2
+ import { mindedConnectionSocketMessageType } from '../../platform/mindedConnectionTypes';
3
+
4
+ /*
5
+ * Escalate the voice session
6
+ * @param parameters - The parameters to escalate the voice session. Parameters will be handeled differently according to the VOIP provider.
7
+ */
8
+ export const escalateVoiceCall = (sessionId: string, parameters: any): void => {
9
+ mindedConnection.emit(mindedConnectionSocketMessageType.VOICE_ESCALATE, {
10
+ type: mindedConnectionSocketMessageType.VOICE_ESCALATE,
11
+ sessionId,
12
+ timestamp: Date.now(),
13
+ parameters,
14
+ });
15
+ };
@@ -0,0 +1,28 @@
1
+ import * as mindedConnection from '../../platform/mindedConnection';
2
+ import { mindedConnectionSocketMessageType, TimerResetResponse, RetellGetCallResponse } from '../../platform/mindedConnectionTypes';
3
+
4
+ export async function retellCall({
5
+ sessionId,
6
+ callName,
7
+ callAgentId,
8
+ vars = {},
9
+ }: {
10
+ sessionId: string;
11
+ callName: string;
12
+ callAgentId: string;
13
+ vars?: Record<string, any>;
14
+ }): Promise<TimerResetResponse> {
15
+ return await mindedConnection.awaitEmit(mindedConnectionSocketMessageType.RETELL_CALL, {
16
+ sessionId,
17
+ callName,
18
+ callAgentId,
19
+ vars,
20
+ });
21
+ }
22
+
23
+ export async function retellGetCall({ sessionId, callId }: { sessionId: string; callId: string }): Promise<RetellGetCallResponse> {
24
+ return await mindedConnection.awaitEmit(mindedConnectionSocketMessageType.RETELL_GET_CALL, {
25
+ sessionId,
26
+ callId,
27
+ });
28
+ }
@@ -0,0 +1,27 @@
1
+ import * as mindedConnection from '../../platform/mindedConnection';
2
+ import { mindedConnectionSocketMessageType } from '../../platform/mindedConnectionTypes';
3
+
4
+ /**
5
+ * Send a placeholder message to the dashboard voice session.
6
+ * This is typically used for voice sessions to provide immediate feedback to users.
7
+ *
8
+ * @param params - The parameters for sending the placeholder message
9
+ * @param params.sessionId - The session ID of the voice session
10
+ * @param params.message - The placeholder message to send
11
+ * @throws {Error} When the Minded connection is not established
12
+ */
13
+ export async function sendPlaceholderMessage(params: { sessionId: string; message: string }): Promise<void> {
14
+ const { sessionId, message } = params;
15
+
16
+ if (!mindedConnection.isConnected()) {
17
+ throw new Error('Minded connection is not established when trying to send placeholder message');
18
+ }
19
+
20
+ const connection = mindedConnection;
21
+ connection.emit(mindedConnectionSocketMessageType.VOICE_PLACEHOLDER_MESSAGES, {
22
+ sessionId,
23
+ message,
24
+ timestamp: Date.now(),
25
+ type: mindedConnectionSocketMessageType.VOICE_PLACEHOLDER_MESSAGES,
26
+ });
27
+ }
@@ -0,0 +1,80 @@
1
+ import { State } from '../types/LangGraph.types';
2
+ import { GraphInterrupt } from '@langchain/langgraph';
3
+ import { logger } from '../utils/logger';
4
+ import { TriggerEvent } from '../types/Agent.types';
5
+
6
+ export enum InterruptType {
7
+ NEW_TRIGGERS = 'NEW_TRIGGERS',
8
+ HUMAN_IN_THE_LOOP = 'HUMAN_IN_THE_LOOP',
9
+ }
10
+
11
+ export const QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH = 'QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH';
12
+
13
+ export type QueuedMessage = TriggerEvent;
14
+
15
+ export interface InterruptPayload {
16
+ type: InterruptType;
17
+ updateStateObject?: State;
18
+ id?: string;
19
+ }
20
+
21
+ export interface InterruptSessionManager {
22
+ isProcessed(sessionId: string): boolean | Promise<boolean>;
23
+ /**
24
+ * Atomically attempts to acquire a lock for the given session.
25
+ * This method should only succeed if the session is not already being processed.
26
+ *
27
+ * @param sessionId - The session ID to lock
28
+ * @returns true if the lock was successfully acquired, false if the session is already locked
29
+ */
30
+ lock(sessionId: string): boolean | Promise<boolean>;
31
+ release(sessionId: string): void | Promise<void>;
32
+ enqueueMessage(sessionId: string, message: QueuedMessage): void | Promise<void>;
33
+ dequeueAll(sessionId: string): QueuedMessage[] | Promise<QueuedMessage[]>;
34
+ dequeue(sessionId: string): QueuedMessage | null | Promise<QueuedMessage | null>;
35
+ checkQueueAndInterrupt(sessionId: string, updateStateObject?: State): Promise<boolean>;
36
+ }
37
+
38
+ export abstract class BaseInterruptSessionManager implements InterruptSessionManager {
39
+ // Abstract methods that subclasses must implement for queue management
40
+ abstract isProcessed(sessionId: string): boolean | Promise<boolean>;
41
+ /**
42
+ * Atomically attempts to acquire a lock for the given session.
43
+ * This method should only succeed if the session is not already being processed.
44
+ * Implementations must ensure this operation is atomic to prevent race conditions.
45
+ *
46
+ * @param sessionId - The session ID to lock
47
+ * @returns true if the lock was successfully acquired, false if the session is already locked
48
+ */
49
+ abstract lock(sessionId: string): boolean | Promise<boolean>;
50
+ abstract release(sessionId: string): void | Promise<void>;
51
+ abstract enqueueMessage(sessionId: string, message: QueuedMessage): void | Promise<void>;
52
+ abstract dequeueAll(sessionId: string): QueuedMessage[] | Promise<QueuedMessage[]>;
53
+ abstract dequeue(sessionId: string): QueuedMessage | null | Promise<QueuedMessage | null>;
54
+
55
+ // Abstract method to check if queue has messages - this is the only queue-specific part
56
+ protected abstract hasQueuedMessages(sessionId: string): boolean | Promise<boolean>;
57
+ protected abstract getQueuedMessages(sessionId: string): QueuedMessage[] | Promise<QueuedMessage[]>;
58
+
59
+ // Common implementation of checkQueueAndInterrupt
60
+ async checkQueueAndInterrupt(sessionId: string, updateStateObject?: State): Promise<boolean> {
61
+ if (await this.hasQueuedMessages(sessionId)) {
62
+ logger.trace({ msg: 'graph has queued messagess, interrupting graph', sessionId });
63
+
64
+ // Interrupt the graph with NEW_TRIGGERS flag and optional updateStateObject
65
+ const interruptPayload: InterruptPayload = { type: InterruptType.NEW_TRIGGERS };
66
+ if (updateStateObject) {
67
+ interruptPayload.updateStateObject = updateStateObject;
68
+ }
69
+
70
+ throw new GraphInterrupt([
71
+ {
72
+ value: interruptPayload,
73
+ when: 'during',
74
+ resumable: true,
75
+ },
76
+ ]);
77
+ }
78
+ return false;
79
+ }
80
+ }
@@ -0,0 +1,63 @@
1
+ import { BaseInterruptSessionManager, QueuedMessage, QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH } from './BaseInterruptSessionManager';
2
+
3
+ export class MemoryInterruptSessionManager extends BaseInterruptSessionManager {
4
+ private sessionProcessing: Map<string, boolean> = new Map();
5
+ private sessionMessageQueues: Map<string, QueuedMessage[]> = new Map();
6
+
7
+ isProcessed(sessionId: string): boolean {
8
+ return this.sessionProcessing.get(sessionId) || false;
9
+ }
10
+
11
+ lock(sessionId: string): boolean {
12
+ const isCurrentlyProcessed = this.sessionProcessing.get(sessionId) || false;
13
+ if (isCurrentlyProcessed) {
14
+ return false; // Could not acquire lock
15
+ }
16
+ this.sessionProcessing.set(sessionId, true);
17
+ return true; // Successfully acquired lock
18
+ }
19
+
20
+ release(sessionId: string): void {
21
+ this.sessionProcessing.delete(sessionId);
22
+ }
23
+
24
+ enqueueMessage(sessionId: string, message: QueuedMessage): void {
25
+ if (!this.sessionMessageQueues.has(sessionId)) {
26
+ this.sessionMessageQueues.set(sessionId, []);
27
+ }
28
+ this.sessionMessageQueues.get(sessionId)!.push(message);
29
+ }
30
+
31
+ dequeueAll(sessionId: string): QueuedMessage[] {
32
+ const messages = this.sessionMessageQueues.get(sessionId) || [];
33
+ const result = [...messages];
34
+ this.sessionMessageQueues.set(sessionId, []);
35
+ return result;
36
+ }
37
+
38
+ dequeue(sessionId: string): QueuedMessage | null {
39
+ const messages = this.sessionMessageQueues.get(sessionId) || [];
40
+ if (messages.length === 0) {
41
+ return null;
42
+ }
43
+ const firstMessage = messages.shift()!;
44
+ this.sessionMessageQueues.set(sessionId, messages);
45
+
46
+ // If the dequeued message has the special trigger name, recursively dequeue the next one
47
+ if (firstMessage.triggerName === QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH) {
48
+ return this.dequeue(sessionId);
49
+ }
50
+
51
+ return firstMessage;
52
+ }
53
+
54
+ // Implementation of abstract methods from BaseInterruptSessionManager
55
+ protected hasQueuedMessages(sessionId: string): boolean {
56
+ const queue = this.sessionMessageQueues.get(sessionId) || [];
57
+ return queue.length > 0;
58
+ }
59
+
60
+ protected getQueuedMessages(sessionId: string): QueuedMessage[] {
61
+ return this.sessionMessageQueues.get(sessionId) || [];
62
+ }
63
+ }
@@ -0,0 +1,163 @@
1
+ import { BaseInterruptSessionManager, QueuedMessage, QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH } from './BaseInterruptSessionManager';
2
+ import * as mindedConnection from '../platform/mindedConnection';
3
+ import { logger } from '../utils/logger';
4
+ import {
5
+ mindedConnectionSocketMessageType,
6
+ InterruptSessionIsProcessedRequest,
7
+ InterruptSessionIsProcessedResponse,
8
+ InterruptSessionLockRequest,
9
+ InterruptSessionLockResponse,
10
+ InterruptSessionReleaseRequest,
11
+ InterruptSessionReleaseResponse,
12
+ InterruptSessionEnqueueRequest,
13
+ InterruptSessionEnqueueResponse,
14
+ InterruptSessionDequeueAllRequest,
15
+ InterruptSessionDequeueAllResponse,
16
+ InterruptSessionDequeueRequest,
17
+ InterruptSessionDequeueResponse,
18
+ InterruptSessionHasMessagesRequest,
19
+ InterruptSessionHasMessagesResponse,
20
+ InterruptSessionGetMessagesRequest,
21
+ InterruptSessionGetMessagesResponse,
22
+ } from '../platform/mindedConnectionTypes';
23
+
24
+ export class MindedInterruptSessionManager extends BaseInterruptSessionManager {
25
+ constructor() {
26
+ super();
27
+ }
28
+
29
+ async isProcessed(sessionId: string): Promise<boolean> {
30
+ try {
31
+ const response = await mindedConnection.awaitEmit<InterruptSessionIsProcessedRequest, InterruptSessionIsProcessedResponse>(
32
+ mindedConnectionSocketMessageType.INTERRUPT_SESSION_IS_PROCESSED,
33
+ {
34
+ type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_IS_PROCESSED,
35
+ sessionId,
36
+ },
37
+ );
38
+ return response.isProcessed ?? false;
39
+ } catch (err) {
40
+ logger.error({ message: 'Error checking if session is processed', err });
41
+ return false;
42
+ }
43
+ }
44
+
45
+ async lock(sessionId: string): Promise<boolean> {
46
+ try {
47
+ const response = await mindedConnection.awaitEmit<InterruptSessionLockRequest, InterruptSessionLockResponse>(
48
+ mindedConnectionSocketMessageType.INTERRUPT_SESSION_LOCK,
49
+ {
50
+ type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_LOCK,
51
+ sessionId,
52
+ },
53
+ );
54
+ return response.lockAcquired ?? false;
55
+ } catch (err) {
56
+ logger.error({ message: 'Error locking session', err });
57
+ return false;
58
+ }
59
+ }
60
+
61
+ async release(sessionId: string): Promise<void> {
62
+ try {
63
+ await mindedConnection.awaitEmit<InterruptSessionReleaseRequest, InterruptSessionReleaseResponse>(
64
+ mindedConnectionSocketMessageType.INTERRUPT_SESSION_RELEASE,
65
+ {
66
+ type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_RELEASE,
67
+ sessionId,
68
+ },
69
+ );
70
+ } catch (err) {
71
+ logger.error({ message: 'Error releasing session', err });
72
+ throw err;
73
+ }
74
+ }
75
+
76
+ async enqueueMessage(sessionId: string, message: QueuedMessage): Promise<void> {
77
+ try {
78
+ await mindedConnection.awaitEmit<InterruptSessionEnqueueRequest, InterruptSessionEnqueueResponse>(
79
+ mindedConnectionSocketMessageType.INTERRUPT_SESSION_ENQUEUE,
80
+ {
81
+ type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_ENQUEUE,
82
+ sessionId,
83
+ message,
84
+ },
85
+ );
86
+ } catch (err) {
87
+ logger.error({ message: 'Error enqueuing message', err });
88
+ throw err;
89
+ }
90
+ }
91
+
92
+ async dequeueAll(sessionId: string): Promise<QueuedMessage[]> {
93
+ try {
94
+ const response = await mindedConnection.awaitEmit<InterruptSessionDequeueAllRequest, InterruptSessionDequeueAllResponse>(
95
+ mindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE_ALL,
96
+ {
97
+ type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE_ALL,
98
+ sessionId,
99
+ },
100
+ );
101
+ return response.messages ?? [];
102
+ } catch (err) {
103
+ logger.error({ message: 'Error dequeuing all messages', err });
104
+ return [];
105
+ }
106
+ }
107
+
108
+ async dequeue(sessionId: string): Promise<QueuedMessage | null> {
109
+ try {
110
+ const response = await mindedConnection.awaitEmit<InterruptSessionDequeueRequest, InterruptSessionDequeueResponse>(
111
+ mindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE,
112
+ {
113
+ type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE,
114
+ sessionId,
115
+ },
116
+ );
117
+ const message = response.message ?? null;
118
+
119
+ // If the dequeued message has the special trigger name, recursively dequeue the next one
120
+ if (message && message.triggerName === QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH) {
121
+ return this.dequeue(sessionId);
122
+ }
123
+
124
+ return message;
125
+ } catch (err) {
126
+ logger.error({ message: 'Error dequeuing message', err });
127
+ return null;
128
+ }
129
+ }
130
+
131
+ // Implementation of abstract methods from BaseInterruptSessionManager
132
+ protected async hasQueuedMessages(sessionId: string): Promise<boolean> {
133
+ try {
134
+ const response = await mindedConnection.awaitEmit<InterruptSessionHasMessagesRequest, InterruptSessionHasMessagesResponse>(
135
+ mindedConnectionSocketMessageType.INTERRUPT_SESSION_HAS_MESSAGES,
136
+ {
137
+ type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_HAS_MESSAGES,
138
+ sessionId,
139
+ },
140
+ );
141
+ return response.hasMessages ?? false;
142
+ } catch (err) {
143
+ logger.error({ message: 'Error checking if session has messages', err });
144
+ return false;
145
+ }
146
+ }
147
+
148
+ protected async getQueuedMessages(sessionId: string): Promise<QueuedMessage[]> {
149
+ try {
150
+ const response = await mindedConnection.awaitEmit<InterruptSessionGetMessagesRequest, InterruptSessionGetMessagesResponse>(
151
+ mindedConnectionSocketMessageType.INTERRUPT_SESSION_GET_MESSAGES,
152
+ {
153
+ type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_GET_MESSAGES,
154
+ sessionId,
155
+ },
156
+ );
157
+ return response.messages ?? [];
158
+ } catch (err) {
159
+ logger.error({ message: 'Error getting queued messages', err });
160
+ return [];
161
+ }
162
+ }
163
+ }
@@ -0,0 +1,20 @@
1
+ import { InterruptSessionManager } from './BaseInterruptSessionManager';
2
+ import { MemoryInterruptSessionManager } from './MemoryInterruptSessionManager';
3
+ import { MindedInterruptSessionManager } from './MindedInterruptSessionManager';
4
+ import * as mindedConnection from '../platform/mindedConnection';
5
+ import { getConfig } from '../platform/config';
6
+ import { logger } from '../utils/logger';
7
+
8
+ export function createInterruptSessionManager(): InterruptSessionManager {
9
+ const { runLocally } = getConfig();
10
+ if (runLocally) {
11
+ logger.info({ msg: '[Agent] Using memory interrupt session manager' });
12
+ return new MemoryInterruptSessionManager();
13
+ } else {
14
+ if (!mindedConnection.isConnected()) {
15
+ throw new Error('MindedConnection is required for platform interrupt session manager');
16
+ }
17
+ logger.info({ msg: '[Agent] Using Minded interrupt session manager' });
18
+ return new MindedInterruptSessionManager();
19
+ }
20
+ }
@@ -0,0 +1,33 @@
1
+ import { LLMConfig, LLMProviders, LLMProvider } from '../types/LLM.types';
2
+ import { createParallelWrapper, BaseParallelChatFields } from '../platform/models/parallelWrapper';
3
+
4
+ export const createLlmInstance = (llmConfig: LLMConfig) => {
5
+ const { name, properties } = llmConfig;
6
+ const LLMClass = LLMProviders[name as LLMProvider];
7
+ if (!LLMClass) {
8
+ throw new Error(`Unsupported LLM provider: ${name}`);
9
+ }
10
+
11
+ // Create the base LLM instance
12
+ const llmInstance = new LLMClass(properties);
13
+
14
+ // Check if parallel configuration is present
15
+ const hasParallelConfig = properties.numParallelRequests && properties.numParallelRequests > 1;
16
+
17
+ // For MindedChatOpenAI, parallel functionality is handled on the backend
18
+ if (name === 'MindedChatOpenAI') {
19
+ return llmInstance;
20
+ }
21
+
22
+ // For other LLM providers, apply client-side parallel wrapper if configured
23
+ if (hasParallelConfig) {
24
+ const parallelOptions: BaseParallelChatFields = {
25
+ numParallelRequests: properties.numParallelRequests,
26
+ logTimings: properties.logTimings,
27
+ };
28
+
29
+ return createParallelWrapper(llmInstance, parallelOptions);
30
+ }
31
+
32
+ return llmInstance;
33
+ };