@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,111 @@
1
+ import { AppToolNode, NodeType } from '../types/Flows.types';
2
+ import { tool as langchainTool } from '@langchain/core/tools';
3
+ import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
4
+ import { SystemMessage } from '@langchain/core/messages';
5
+ import { RunnableLike } from '@langchain/core/runnables';
6
+ import { z } from 'zod';
7
+ import { LLMProviders } from '../types/LLM.types';
8
+ import { AppActionInvocationHistoryStep } from '../types/Agent.types';
9
+ import { Agent } from '../agent';
10
+ import { logger } from '../utils/logger';
11
+ import { createHistoryStep } from '../utils/history';
12
+ import { Tool } from '../types/Tools.types';
13
+ import { combinePlaybooks } from '../playbooks/playbooks';
14
+ import { compilePrompt } from './compilePrompt';
15
+ import { ToolMessage } from '@langchain/core/messages';
16
+
17
+ export const addAppToolNode = async ({
18
+ graph,
19
+ node,
20
+ llm,
21
+ agent,
22
+ tools,
23
+ }: {
24
+ graph: PreCompiledGraph;
25
+ node: AppToolNode;
26
+ llm: (typeof LLMProviders)[keyof typeof LLMProviders];
27
+ agent: Agent;
28
+ tools: Tool<any, any>[];
29
+ }) => {
30
+ const cleanedParameters = Object.fromEntries(Object.entries(node.parameters || {}).filter(([, value]) => value !== ''));
31
+
32
+ // Find the tool from the tools array by name
33
+ const appRunnerTool = tools.find((tool) => tool.name === node.displayName);
34
+
35
+ if (!appRunnerTool) {
36
+ throw new Error(`Tool not found for node: ${node.displayName}`);
37
+ }
38
+
39
+ const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
40
+ logger.debug({ msg: `[Node] Executing tool node`, node: appRunnerTool.name });
41
+
42
+ const executeWrapper = async (input: z.infer<typeof appRunnerTool.input>) => {
43
+ try {
44
+ const response = await appRunnerTool.execute({ input, state, agent });
45
+ return response || {};
46
+ } catch (err) {
47
+ logger.error({ message: `[Node] Error executing tool`, err, node: node.name });
48
+ throw err;
49
+ }
50
+ };
51
+ const tool = langchainTool(executeWrapper, {
52
+ name: appRunnerTool.name,
53
+ description: appRunnerTool.description,
54
+ schema: appRunnerTool.input,
55
+ });
56
+
57
+ const combinedPlaybooks = combinePlaybooks(agent.playbooks) || '';
58
+
59
+ const message = `${combinedPlaybooks ? combinedPlaybooks + '\n\n' : ''}
60
+ Additional context:
61
+ previous messages are available for context.
62
+ Your goal is execute the tool with the correct parameters, some of them already chosen by the user and the rest should be generated.
63
+ You have 4 things to base your parameters on:
64
+ - Previous messages
65
+ - Parameters manually configured by the user (if any)
66
+ - User instructions for choosing tool parameters that are not set by the user (if any)
67
+ - Workflow memory
68
+ Parameters manually configured by the user are:
69
+ ${JSON.stringify(cleanedParameters)}
70
+ User instructions for choosing tool parameters are:
71
+ ${node.prompt ? `${node.prompt}` : 'no instructions set by the user'}`;
72
+
73
+ const compiledPrompt = compilePrompt(message, { state: state, memory: state.memory, env: process.env });
74
+ const systemMessage = new SystemMessage(compiledPrompt);
75
+ if (state.messages.length === 0 || state.messages[0].getType() === 'system') {
76
+ state.messages[0] = systemMessage;
77
+ } else {
78
+ state.messages.unshift(systemMessage);
79
+ }
80
+
81
+ const AIToolCallMessage = await llm.bindTools([tool], { tool_choice: tool.name }).invoke(state.messages);
82
+ AIToolCallMessage.tool_calls[0].args = {
83
+ ...AIToolCallMessage.tool_calls[0].args,
84
+ ...cleanedParameters, //user set parameters have priority over ai generated parameters
85
+ };
86
+ const toolCallMessage = await tool.invoke(AIToolCallMessage.tool_calls[0]);
87
+ AIToolCallMessage.additional_kwargs = {
88
+ mindedMetadata: {
89
+ nodeType: NodeType.APP_TOOL,
90
+ },
91
+ };
92
+
93
+ state.goto = null;
94
+ state.messages.push(AIToolCallMessage);
95
+ if (toolCallMessage instanceof ToolMessage) {
96
+ state.messages.push(toolCallMessage);
97
+ }
98
+ state.history.push(
99
+ createHistoryStep<AppActionInvocationHistoryStep>(state.history, {
100
+ type: NodeType.APP_TOOL,
101
+ nodeId: node.name,
102
+ nodeDisplayName: node.displayName!,
103
+ raw: AIToolCallMessage.tool_calls[0],
104
+ appName: node.appName,
105
+ messageIds: [AIToolCallMessage.tool_calls[0].id],
106
+ }),
107
+ );
108
+ return state;
109
+ };
110
+ graph.addNode(node.name, callback);
111
+ };
@@ -0,0 +1,191 @@
1
+ import { RunnableLike } from '@langchain/core/runnables';
2
+ import { BrowserTaskNode, NodeType } from '../types/Flows.types';
3
+ import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
4
+ import { HistoryStep } from '../types/Agent.types';
5
+ import { logger } from '../utils/logger';
6
+ import { createHistoryStep } from '../utils/history';
7
+ import { AIMessage, SystemMessage } from '@langchain/core/messages';
8
+ import { v4 as uuidv4 } from 'uuid';
9
+ import { Agent } from '../agent';
10
+ import { createBrowserSession } from '../browserTask/executeBrowserTask';
11
+ import { tool as langchainTool } from '@langchain/core/tools';
12
+ import { LLMProviders } from '../types/LLM.types';
13
+ import { compilePrompt } from './compilePrompt';
14
+ import { combinePlaybooks } from '../playbooks/playbooks';
15
+ import { BrowserTaskMode } from '../browserTask/types';
16
+ import { getConfig } from '../platform/config';
17
+ import { createZodSchemaFromFields } from '../utils/schemaUtils';
18
+
19
+ type AddBrowserTaskNodeParams = {
20
+ graph: PreCompiledGraph;
21
+ node: BrowserTaskNode;
22
+ agent: Agent;
23
+ llm: (typeof LLMProviders)[keyof typeof LLMProviders];
24
+ };
25
+
26
+ export const addBrowserTaskNode = async ({ graph, node, agent, llm }: AddBrowserTaskNodeParams) => {
27
+ const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
28
+ logger.info({ msg: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
29
+ await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId);
30
+ // Create Zod schema from inputSchema
31
+ const zodSchema = createZodSchemaFromFields(node.inputSchema);
32
+
33
+ // Create langchain tool
34
+ const tool = langchainTool(() => {}, {
35
+ name: 'browser-task',
36
+ description: node.prompt,
37
+ schema: zodSchema as any,
38
+ });
39
+
40
+ const combinedPlaybooks = combinePlaybooks(agent.playbooks);
41
+ if (combinedPlaybooks) {
42
+ const compiledPrompt = compilePrompt(combinedPlaybooks, { state: state, memory: state.memory });
43
+ const systemMessage = new SystemMessage(compiledPrompt);
44
+ if (state.messages.length === 0 || state.messages[0].getType() === 'system') {
45
+ state.messages[0] = systemMessage;
46
+ } else {
47
+ state.messages.unshift(systemMessage);
48
+ }
49
+ }
50
+
51
+ try {
52
+ // Use LLM to generate tool call
53
+ const AIToolCallMessage: AIMessage = await llm.bindTools([tool], { tool_choice: tool.name }).invoke(state.messages);
54
+ await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId);
55
+ if (!AIToolCallMessage.tool_calls || AIToolCallMessage.tool_calls.length === 0) {
56
+ throw new Error('No tool calls generated by LLM');
57
+ }
58
+
59
+ const toolCall = AIToolCallMessage.tool_calls[0];
60
+ const inputParams = toolCall.args || {};
61
+
62
+ // Prepare parameters for prompt compilation
63
+ const promptParams = {
64
+ input: inputParams,
65
+ memory: state.memory,
66
+ state: state,
67
+ system: { currentTime: new Date().toISOString() },
68
+ };
69
+
70
+ // Compile the prompt with parameters
71
+ const compiledPrompt = compilePrompt(node.prompt, { ...promptParams });
72
+
73
+ // Build the full prompt with compiled content
74
+ const fullPrompt = `
75
+ # Task instructions:
76
+ ${compiledPrompt}
77
+
78
+ ${Object.keys(inputParams).length > 0 ? `# Input parameters:\n${JSON.stringify(inputParams, null, 2)}\n\n` : ''}`;
79
+
80
+ const { browserTaskMode } = getConfig();
81
+ // Determine keepAlive based on NODE_ENV
82
+ const keepAlive = process.env.NODE_ENV !== 'production';
83
+ // Create browser session using socket
84
+ if (!state.cdp?.url) {
85
+ const session = await createBrowserSession({
86
+ sessionId: state.sessionId,
87
+ proxy: node.proxy,
88
+ browserTaskMode,
89
+ });
90
+ if (!session.sessionId || !session.cdpUrl) {
91
+ throw new Error('Failed to create browser session: missing session details');
92
+ }
93
+
94
+ logger.debug({
95
+ msg: 'Browser session created',
96
+ sessionId: session.sessionId,
97
+ hasLiveUrl: !!session.liveViewUrl,
98
+ keepAlive,
99
+ nodeEnv: process.env.NODE_ENV,
100
+ });
101
+ state.cdp = {
102
+ url: session.cdpUrl,
103
+ liveUrl: session.liveViewUrl,
104
+ sessionId: session.sessionId,
105
+ };
106
+ }
107
+
108
+ // Update the tool call with session info and prompt
109
+ const updatedToolCall = {
110
+ ...toolCall,
111
+ args: {
112
+ ...inputParams,
113
+ prompt: fullPrompt,
114
+ },
115
+ };
116
+
117
+ const toolCallingMessage = new AIMessage({
118
+ id: AIToolCallMessage.id,
119
+ content: AIToolCallMessage.content,
120
+ tool_calls: [updatedToolCall],
121
+ additional_kwargs: {
122
+ mindedMetadata: {
123
+ nodeType: NodeType.BROWSER_TASK,
124
+ nodeDisplayName: node.displayName,
125
+ sessionId: state.cdp?.sessionId,
126
+ cdpUrl: state.cdp?.url,
127
+ liveUrl: state.cdp?.liveUrl,
128
+ keepAlive,
129
+ hooks: node.hooks || [],
130
+ onPrem: browserTaskMode === BrowserTaskMode.ON_PREM,
131
+ localRun: browserTaskMode === BrowserTaskMode.LOCAL,
132
+ outputSchema: node.outputSchema,
133
+ },
134
+ },
135
+ });
136
+
137
+ state.messages.push(toolCallingMessage);
138
+ state.history.push(
139
+ createHistoryStep<HistoryStep>(state.history, {
140
+ type: NodeType.BROWSER_TASK,
141
+ nodeId: node.name,
142
+ nodeDisplayName: node.displayName,
143
+ raw: { taskId: state.cdp?.sessionId, liveUrl: state.cdp?.liveUrl, inputParams },
144
+ messageIds: [toolCallingMessage.id!],
145
+ }),
146
+ );
147
+ return state;
148
+ } catch (error: any) {
149
+ logger.error(`Error creating browser task node ${node.displayName}: ${error}`);
150
+
151
+ const errorMessageId = uuidv4();
152
+ const errorToolCallId = uuidv4();
153
+
154
+ const toolCallingMessage = new AIMessage({
155
+ id: errorMessageId,
156
+ content: '',
157
+ tool_calls: [
158
+ {
159
+ id: errorToolCallId,
160
+ name: 'browser-task',
161
+ args: {
162
+ error: error.message,
163
+ },
164
+ },
165
+ ],
166
+ additional_kwargs: {
167
+ mindedMetadata: {
168
+ nodeType: NodeType.BROWSER_TASK,
169
+ nodeDisplayName: node.displayName,
170
+ error: error.message,
171
+ hooks: node.hooks || [],
172
+ outputSchema: node.outputSchema,
173
+ },
174
+ },
175
+ });
176
+
177
+ state.messages.push(toolCallingMessage);
178
+ state.history.push(
179
+ createHistoryStep<HistoryStep>(state.history, {
180
+ type: NodeType.BROWSER_TASK,
181
+ nodeId: node.name,
182
+ nodeDisplayName: node.displayName,
183
+ raw: error,
184
+ messageIds: [errorMessageId],
185
+ }),
186
+ );
187
+ return state;
188
+ }
189
+ };
190
+ graph.addNode(node.name, callback);
191
+ };
@@ -0,0 +1,190 @@
1
+ import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
2
+ import { RunnableLike } from '@langchain/core/runnables';
3
+ import { internalNodesSuffix, NodeType, BrowserTaskNode } from '../types/Flows.types';
4
+ import { ToolMessage, AIMessage } from '@langchain/core/messages';
5
+ import { Agent } from '../agent';
6
+ import { logger } from '../utils/logger';
7
+ import { createHistoryStep } from '../utils/history';
8
+ import { HistoryStep } from '../types/Agent.types';
9
+ import { v4 as uuidv4 } from 'uuid';
10
+ import { invokeBrowserTask } from '../browserTask/executeBrowserTask';
11
+ import { zodSchemaToParams } from '../platform/utils/tools';
12
+ import { getConfig } from '../platform/config';
13
+ import { compilePrompt } from './compilePrompt';
14
+
15
+ type AddBrowserTaskRunNodeParams = {
16
+ graph: PreCompiledGraph;
17
+ browserTaskNode: BrowserTaskNode;
18
+ attachedToNodeName: string;
19
+ agent: Agent;
20
+ };
21
+
22
+ export const buildBrowserTaskRunNodeName = (nodeName: string) => `${nodeName}${internalNodesSuffix.BROWSER_TASK_RUN}`;
23
+
24
+ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeName, agent }: AddBrowserTaskRunNodeParams) => {
25
+ const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
26
+ logger.info(`Executing browser task run node for ${browserTaskNode.displayName}`);
27
+
28
+ const toolCallObj = state.messages[state.messages.length - 1] as any;
29
+ if (!toolCallObj.tool_calls) {
30
+ throw new Error('Tool call not found');
31
+ }
32
+ const toolCallMindedMetadata = toolCallObj.additional_kwargs?.mindedMetadata;
33
+ const toolCall = toolCallObj.tool_calls[0];
34
+ const { prompt, ...inputParams } = toolCall.args;
35
+ const { sessionId, cdpUrl, keepAlive, hooks, outputSchema } = toolCallMindedMetadata;
36
+
37
+ try {
38
+ if (inputParams.error) {
39
+ throw new Error(inputParams.error);
40
+ }
41
+
42
+ if (!sessionId || !cdpUrl || !prompt) {
43
+ throw new Error('Missing required parameters: sessionId, cdpUrl, or prompt');
44
+ }
45
+
46
+ const toolSchemas = agent.tools
47
+ .filter((tool) => tool.allowExecutionRequests === true)
48
+ .map((tool) => ({
49
+ name: tool.name,
50
+ description: tool.description,
51
+ inputParams: zodSchemaToParams(tool.input),
52
+ }));
53
+
54
+ // We compile the env variables to avoid having to pass them to the platform in the tool input
55
+ const promptCompiledWithEnv = compilePrompt(prompt, { env: process.env });
56
+
57
+ const { browserTaskMode } = getConfig();
58
+ // Invoke browser task via socket
59
+ const result = await invokeBrowserTask({
60
+ sessionId,
61
+ cdpUrl,
62
+ task: promptCompiledWithEnv,
63
+ keepAlive,
64
+ hooks,
65
+ browserTaskMode,
66
+ toolSchemas,
67
+ outputSchema,
68
+ });
69
+
70
+ logger.debug({
71
+ msg: 'Browser task completed',
72
+ sessionId,
73
+ hasResult: !!result.result,
74
+ stepCount: result.steps?.length || 0,
75
+ recordingCount: result.recordings?.length || 0,
76
+ });
77
+
78
+ // Create tool message with the result
79
+ const toolMessage = new ToolMessage({
80
+ id: toolCall.id,
81
+ content: JSON.stringify({
82
+ result: result.result || 'Failed to execute browser task',
83
+ steps: result.steps || [],
84
+ recordings: result.recordings || [],
85
+ inputParams: inputParams,
86
+ }),
87
+ name: 'browser-task',
88
+ tool_call_id: toolCall.id,
89
+ status: 'success',
90
+ additional_kwargs: {
91
+ mindedMetadata: {
92
+ nodeType: NodeType.BROWSER_TASK,
93
+ nodeDisplayName: browserTaskNode.displayName,
94
+ sessionId,
95
+ steps: result.steps,
96
+ recordings: result.recordings,
97
+ inputParams: inputParams,
98
+ },
99
+ },
100
+ });
101
+
102
+ // Update the AI message with steps using the message reducer pattern
103
+ const updatedAIMessage = new AIMessage({
104
+ id: toolCallObj.id,
105
+ content: toolCallObj.content,
106
+ tool_calls: toolCallObj.tool_calls,
107
+ additional_kwargs: {
108
+ ...toolCallObj.additional_kwargs,
109
+ mindedMetadata: {
110
+ ...toolCallObj.additional_kwargs?.mindedMetadata,
111
+ nodeDisplayName: browserTaskNode.displayName,
112
+ steps: result.steps,
113
+ recordings: result.recordings,
114
+ status: 'completed',
115
+ },
116
+ update: true, // This triggers the message reducer to update the existing message
117
+ },
118
+ });
119
+
120
+ state.messages.pop();
121
+ state.messages.push(updatedAIMessage, toolMessage);
122
+ state.history.push(
123
+ createHistoryStep<HistoryStep>(state.history, {
124
+ type: NodeType.BROWSER_TASK,
125
+ nodeId: browserTaskNode.name,
126
+ nodeDisplayName: browserTaskNode.displayName,
127
+ raw: result,
128
+ messageIds: [toolMessage.id!],
129
+ }),
130
+ );
131
+ return state;
132
+ } catch (error: any) {
133
+ logger.error({ msg: 'Error executing browser task run node', error: error.toString() });
134
+
135
+ const errorToolMessage = new ToolMessage({
136
+ id: uuidv4(),
137
+ content: JSON.stringify({
138
+ error: error instanceof Error ? error.message : error.toString(),
139
+ inputParams: inputParams,
140
+ message: 'Failed to execute browser task',
141
+ }),
142
+ status: 'error',
143
+ name: 'browser-task',
144
+ tool_call_id: toolCall.id,
145
+ additional_kwargs: {
146
+ mindedMetadata: {
147
+ nodeType: NodeType.BROWSER_TASK,
148
+ nodeDisplayName: browserTaskNode.displayName,
149
+ sessionId,
150
+ error: error.message,
151
+ inputParams: inputParams,
152
+ },
153
+ },
154
+ });
155
+
156
+ // Update the AI message with error status
157
+ const updatedAIMessage = new AIMessage({
158
+ id: toolCallObj.id,
159
+ content: toolCallObj.content,
160
+ tool_calls: toolCallObj.tool_calls,
161
+ additional_kwargs: {
162
+ ...toolCallObj.additional_kwargs,
163
+ mindedMetadata: {
164
+ ...toolCallObj.additional_kwargs?.mindedMetadata,
165
+ nodeDisplayName: browserTaskNode.displayName,
166
+ status: 'failed',
167
+ error: error.message,
168
+ },
169
+ update: true,
170
+ },
171
+ });
172
+
173
+ state.messages.pop();
174
+ state.messages.push(updatedAIMessage, errorToolMessage);
175
+ state.history.push(
176
+ createHistoryStep<HistoryStep>(state.history, {
177
+ type: NodeType.BROWSER_TASK,
178
+ nodeId: browserTaskNode.name,
179
+ nodeDisplayName: browserTaskNode.displayName,
180
+ raw: error,
181
+ messageIds: [],
182
+ }),
183
+ );
184
+ return state;
185
+ }
186
+ };
187
+
188
+ graph.addNode(buildBrowserTaskRunNodeName(attachedToNodeName), callback);
189
+ graph.addEdge(attachedToNodeName as any, buildBrowserTaskRunNodeName(attachedToNodeName) as any);
190
+ };
@@ -0,0 +1,26 @@
1
+ import { interrupt } from '@langchain/langgraph';
2
+ import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
3
+ import { RunnableLike } from '@langchain/core/runnables';
4
+ import { logger } from '../utils/logger';
5
+ import { internalNodesSuffix } from '../types/Flows.types';
6
+ import { InterruptType } from '../interrupts/BaseInterruptSessionManager';
7
+
8
+ type AddHumanInTheLoopNodeParams = {
9
+ graph: PreCompiledGraph;
10
+ attachedToNodeName: string;
11
+ };
12
+
13
+ export const buildHumanInTheLoopNodeName = (nodeName: string) => `${nodeName}${internalNodesSuffix.HUMAN_IN_THE_LOOP}`;
14
+
15
+ export const addHumanInTheLoopNode = async ({ graph, attachedToNodeName }: AddHumanInTheLoopNodeParams) => {
16
+ const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
17
+ logger.debug({ msg: `[Node] Waiting for human input`, node: attachedToNodeName });
18
+
19
+ if (state.messages[state.messages.length - 1].getType() === 'ai') {
20
+ interrupt({ type: InterruptType.HUMAN_IN_THE_LOOP });
21
+ return state;
22
+ }
23
+ };
24
+ graph.addNode(buildHumanInTheLoopNodeName(attachedToNodeName), callback);
25
+ graph.addEdge(attachedToNodeName as any, buildHumanInTheLoopNodeName(attachedToNodeName) as any);
26
+ };
@@ -0,0 +1,26 @@
1
+ import { RunnableLike } from '@langchain/core/runnables';
2
+ import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
3
+ import { JumpToNode, NodeType } from '../types/Flows.types';
4
+ import { logger } from '../utils/logger';
5
+ import { HistoryStep } from '../types/Agent.types';
6
+ import { createHistoryStep } from '../utils/history';
7
+
8
+ export const addJumpToNode = async ({ graph, node }: { graph: PreCompiledGraph; node: JumpToNode }) => {
9
+ const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
10
+ logger.info({ msg: `Executing jump node ${node.displayName} – jumping to ${node.targetNodeId}` });
11
+ // No state modifications are necessary; control flow is handled via edges.
12
+ state.goto = node.targetNodeId;
13
+ state.history.push(
14
+ createHistoryStep<HistoryStep>(state.history, {
15
+ type: NodeType.JUMP_TO_NODE,
16
+ nodeId: node.name,
17
+ nodeDisplayName: node.displayName,
18
+ raw: '',
19
+ }),
20
+ );
21
+ return state;
22
+ };
23
+
24
+ graph.addNode(node.name, callback);
25
+ graph.addEdge(node.name as any, node.targetNodeId as any);
26
+ };
@@ -0,0 +1,21 @@
1
+ import { JunctionNode, NodeType } from '../types/Flows.types';
2
+ import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
3
+ import { RunnableLike } from '@langchain/core/runnables';
4
+ import { createHistoryStep } from '../utils/history';
5
+ import { HistoryStep } from '../types/Agent.types';
6
+
7
+ export const addJunctionNode = ({ graph, node }: { graph: PreCompiledGraph; node: JunctionNode }) => {
8
+ const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
9
+ state.goto = null;
10
+ state.history.push(
11
+ createHistoryStep<HistoryStep>(state.history, {
12
+ type: NodeType.JUNCTION,
13
+ nodeId: node.name,
14
+ nodeDisplayName: node.displayName,
15
+ raw: '',
16
+ }),
17
+ );
18
+ return state;
19
+ };
20
+ graph.addNode(node.name, callback);
21
+ };