@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,37 @@
1
+ export enum BrowserTaskMode {
2
+ ON_PREM = 'onPrem',
3
+ LOCAL = 'localRun',
4
+ CLOUD = 'cloud',
5
+ }
6
+
7
+ // Types used for invoking browser tasks
8
+ export type BrowserTaskHook = { name: string };
9
+
10
+ export type OutputSchemaField = {
11
+ name: string;
12
+ type: 'string' | 'number';
13
+ description?: string;
14
+ required?: boolean;
15
+ };
16
+
17
+ export type ToolSchema = {
18
+ name: string;
19
+ description?: string;
20
+ inputParams: Array<{
21
+ name: string;
22
+ type: 'string' | 'number' | 'boolean' | 'object' | 'array';
23
+ description?: string;
24
+ required?: boolean;
25
+ }>;
26
+ };
27
+
28
+ export interface InvokeBrowserTaskOptions {
29
+ sessionId: string;
30
+ cdpUrl: string;
31
+ task: string;
32
+ keepAlive?: boolean;
33
+ hooks?: BrowserTaskHook[];
34
+ browserTaskMode: BrowserTaskMode;
35
+ toolSchemas?: ToolSchema[];
36
+ outputSchema?: OutputSchemaField[];
37
+ }
@@ -0,0 +1,18 @@
1
+ import { BaseCheckpointSaver, MemorySaver } from '@langchain/langgraph';
2
+ import { MindedCheckpointSaver } from '../platform/mindedCheckpointSaver';
3
+ import * as mindedConnection from '../platform/mindedConnection';
4
+ import { logger } from '../utils/logger';
5
+
6
+ /**
7
+ * Factory function to create the appropriate checkpoint saver based on environment variables.
8
+ * @returns BaseCheckpointSaver instance (either MemorySaver or MindedCheckpointSaver)
9
+ */
10
+ export function createCheckpointSaver(): BaseCheckpointSaver {
11
+ if (!mindedConnection.isConnected()) {
12
+ logger.warn('mindedConnection not connected, falling back to in-memory checkpoint saver');
13
+ return new MemorySaver();
14
+ }
15
+
16
+ logger.debug('[Agent] Using remote checkpoint saver');
17
+ return new MindedCheckpointSaver();
18
+ }
@@ -0,0 +1,188 @@
1
+ #!/usr/bin/env node
2
+
3
+ import * as fs from 'fs';
4
+ import * as path from 'path';
5
+ import { logger } from '../utils/logger';
6
+ import { execSync } from 'child_process';
7
+ import { setupLocalOperator, isLocalOperatorSetup } from './localOperatorSetup';
8
+
9
+ const ENV_FILE = '.env';
10
+
11
+ function getEnvFilePath(): string {
12
+ return path.join(process.cwd(), ENV_FILE);
13
+ }
14
+
15
+ async function setToken(token: string): Promise<void> {
16
+ const envPath = getEnvFilePath();
17
+ const tokenLine = `MINDED_CONNECTION_TOKEN=${token}`;
18
+
19
+ // Check if .env file exists
20
+ if (!fs.existsSync(envPath)) {
21
+ // Create .env file with the token
22
+ fs.writeFileSync(envPath, tokenLine + '\n');
23
+ console.info(`Created ${envPath} and added token`);
24
+ } else {
25
+ // Read existing .env file
26
+ const envContent = fs.readFileSync(envPath, 'utf8');
27
+
28
+ // Check if MINDED_CONNECTION_TOKEN already exists
29
+ if (envContent.includes('MINDED_CONNECTION_TOKEN=')) {
30
+ // Replace existing token
31
+ const updatedContent = envContent.replace(/MINDED_CONNECTION_TOKEN=.*/, tokenLine);
32
+ fs.writeFileSync(envPath, updatedContent);
33
+ console.info(`Updated MINDED_CONNECTION_TOKEN in ${envPath}`);
34
+ } else {
35
+ // Append token to existing file
36
+ const newContent = envContent.endsWith('\n') ? envContent + tokenLine + '\n' : envContent + '\n' + tokenLine + '\n';
37
+ fs.writeFileSync(envPath, newContent);
38
+ logger.info({ msg: `Added MINDED_CONNECTION_TOKEN to ${envPath}` });
39
+ }
40
+ }
41
+ }
42
+
43
+ function generateLambdaHandler(): void {
44
+ const mindedConfigPath = path.join(process.cwd(), 'minded.json');
45
+
46
+ // Check if minded.json exists
47
+ if (!fs.existsSync(mindedConfigPath)) {
48
+ logger.error({ msg: 'minded.json not found in the current directory' });
49
+ process.exit(1);
50
+ }
51
+
52
+ // Read and parse minded.json
53
+ let mindedConfig;
54
+ try {
55
+ const configContent = fs.readFileSync(mindedConfigPath, 'utf8');
56
+ mindedConfig = JSON.parse(configContent);
57
+ } catch (err) {
58
+ logger.error({ message: 'Failed to read or parse minded.json:', err });
59
+ process.exit(1);
60
+ }
61
+
62
+ // Get the agent path
63
+ const agentPath = mindedConfig.agent;
64
+ if (!agentPath) {
65
+ logger.error({ msg: 'No agent path found in minded.json' });
66
+ process.exit(1);
67
+ }
68
+
69
+ // Remove .ts or .js extension if present and convert to relative path
70
+ const modulePath = agentPath.replace(/\.(ts|js)$/, '');
71
+
72
+ // Get the path to the template file
73
+ // Try multiple locations to support both development and npm package scenarios
74
+ const templatePaths = [
75
+ path.join(__dirname, 'lambdaHandlerTemplate.ts'), // For npm package
76
+ path.join(__dirname, '..', '..', 'src', 'cli', 'lambdaHandlerTemplate.ts'), // For development
77
+ ];
78
+
79
+ let templateContent: string | null = null;
80
+
81
+ // Try each path until we find the template
82
+ for (const templatePath of templatePaths) {
83
+ try {
84
+ if (fs.existsSync(templatePath)) {
85
+ templateContent = fs.readFileSync(templatePath, 'utf8');
86
+ logger.debug(`Found template at ${templatePath}`);
87
+ break;
88
+ }
89
+ } catch {
90
+ // Continue to next path
91
+ }
92
+ }
93
+
94
+ if (!templateContent) {
95
+ logger.error({ msg: 'Could not find Lambda handler template file' });
96
+ process.exit(1);
97
+ }
98
+
99
+ try {
100
+ // Replace the placeholder with the actual module path
101
+ templateContent = templateContent.replace(/{MODULE_PATH}/g, modulePath);
102
+
103
+ // Write the Lambda handler to index.ts at the root
104
+ const outputPath = path.join(process.cwd(), 'index.ts');
105
+ fs.writeFileSync(outputPath, templateContent);
106
+ logger.info({ msg: `Generated Lambda handler at ${outputPath}` });
107
+
108
+ // Compile the index.ts file using TypeScript
109
+ logger.info({ msg: 'Compiling the Lambda handler...' });
110
+
111
+ try {
112
+ // Read tsconfig.json to get the outDir
113
+ let outDir = 'dist'; // Default value
114
+ const tsconfigPath = path.join(process.cwd(), 'tsconfig.json');
115
+
116
+ if (fs.existsSync(tsconfigPath)) {
117
+ try {
118
+ const tsconfigContent = fs.readFileSync(tsconfigPath, 'utf8');
119
+ const tsconfig = JSON.parse(tsconfigContent);
120
+
121
+ if (tsconfig.compilerOptions && tsconfig.compilerOptions.outDir) {
122
+ outDir = tsconfig.compilerOptions.outDir;
123
+ logger.debug(`Using outDir from tsconfig.json: ${outDir}`);
124
+ }
125
+ } catch {
126
+ logger.warn('Failed to parse tsconfig.json, using default outDir: dist');
127
+ }
128
+ }
129
+
130
+ // Check if output directory exists, create if it doesn't
131
+ const distDir = path.join(process.cwd(), outDir);
132
+ if (!fs.existsSync(distDir)) {
133
+ fs.mkdirSync(distDir, { recursive: true });
134
+ }
135
+
136
+ // Compile index.ts to the configured output directory
137
+ execSync(`npx tsc --target ES2018 --module CommonJS --esModuleInterop ${outputPath} --outDir ${outDir}`, {
138
+ stdio: 'pipe',
139
+ cwd: process.cwd(),
140
+ });
141
+
142
+ logger.info({ msg: `Successfully compiled Lambda handler to ${outDir}/index.js` });
143
+ } catch (compileError) {
144
+ logger.error({ msg: 'Failed to compile Lambda handler', error: compileError });
145
+ }
146
+ } catch (err) {
147
+ logger.error({ message: 'Failed to generate Lambda handler', err });
148
+ process.exit(1);
149
+ }
150
+ }
151
+
152
+ async function main() {
153
+ const args = process.argv.slice(2);
154
+ const command = args[0];
155
+
156
+ if (command === 'token') {
157
+ const token = args[1];
158
+ if (!token) {
159
+ logger.error({ msg: 'Please provide a token' });
160
+ process.exit(1);
161
+ }
162
+ await setToken(token);
163
+ } else if (command === 'setup-local-operator') {
164
+ // Standalone command to setup local operator
165
+ const skipPrompt = args.includes('--yes') || args.includes('-y');
166
+ await setupLocalOperator(skipPrompt);
167
+ } else if (command === 'generate-lambda-ts-handler') {
168
+ generateLambdaHandler();
169
+ } else if (command === 'check-local-operator') {
170
+ // Command to check if local operator is set up
171
+ if (isLocalOperatorSetup()) {
172
+ console.info('āœ“ Local operator is set up and ready');
173
+ } else {
174
+ console.info('āœ— Local operator is not set up. Run: npx minded setup-local-operator');
175
+ process.exit(1);
176
+ }
177
+ } else {
178
+ logger.error({
179
+ msg: 'Unknown command. Available commands: token, setup-local-operator, check-local-operator, generate-lambda-ts-handler',
180
+ });
181
+ process.exit(1);
182
+ }
183
+ }
184
+
185
+ main().catch((error) => {
186
+ logger.error({ message: 'Command failed', error });
187
+ process.exit(1);
188
+ });
@@ -0,0 +1,78 @@
1
+ // @ts-expect-error - This import will be resolved at runtime in the generated Lambda handler
2
+ import { logger } from '@minded-ai/mindedjs';
3
+
4
+ // This is the template for the Lambda handler
5
+ // The {MODULE_PATH} placeholder will be replaced with the actual path
6
+
7
+ export const handler = async (event: any, context: any) => {
8
+ try {
9
+ const modulePath = '{MODULE_PATH}'; // Module path placeholder - DO NOT CHANGE THE {MODULE_PATH} TOKEN
10
+ const resolvedPath = require.resolve(modulePath);
11
+ delete require.cache[resolvedPath];
12
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
13
+ const agent = require(modulePath).default;
14
+ const { agentFunctionName, agentFunctionBody } = event.body ? JSON.parse(event.body) : event;
15
+
16
+ if (!agent[agentFunctionName]) {
17
+ throw new Error('Unknown agentFunctionName: ' + agentFunctionName);
18
+ }
19
+
20
+ const response = await agent[agentFunctionName](agentFunctionBody);
21
+
22
+ // Safely stringify the response. If it fails (e.g., due to circular refs
23
+ // or non-serialisable class instances), fall back to null.
24
+ let responseBody = null;
25
+ try {
26
+ JSON.stringify(response);
27
+ responseBody = response;
28
+ } catch {
29
+ // ignored - responseBody stays null
30
+ }
31
+
32
+ if (agentFunctionName === 'startVoiceSession') {
33
+ while (context.getRemainingTimeInMillis() > 1000) {
34
+ logger.info({ msg: 'Lambda remaining time in seconds: ', remainingTime: context.getRemainingTimeInMillis() / 1000 });
35
+ await wait(1000); // sleep 1 s
36
+ }
37
+ }
38
+
39
+ // Close socket
40
+ await wait(500);
41
+ agent.onEnd?.();
42
+
43
+ return {
44
+ statusCode: 200,
45
+ headers: {
46
+ 'Content-Type': 'application/json',
47
+ 'Access-Control-Allow-Origin': '*',
48
+ 'Access-Control-Allow-Credentials': true,
49
+ },
50
+ body: JSON.stringify(responseBody),
51
+ };
52
+ } catch (err: any) {
53
+ logger.error({
54
+ msg: 'Lambda runtime error',
55
+ err,
56
+ requestId: context.requestId,
57
+ functionName: context.functionName,
58
+ });
59
+
60
+ return {
61
+ statusCode: 500,
62
+ headers: {
63
+ 'Content-Type': 'application/json',
64
+ 'Access-Control-Allow-Origin': '*',
65
+ 'Access-Control-Allow-Credentials': true,
66
+ },
67
+ body: JSON.stringify({
68
+ error: 'Lambda runtime error',
69
+ errorMessage: err.message,
70
+ errorStack: err.stack,
71
+ requestId: context.requestId,
72
+ functionName: context.functionName,
73
+ }),
74
+ };
75
+ }
76
+ };
77
+
78
+ const wait = (ms: number) => new Promise((r) => setTimeout(r, ms));
@@ -0,0 +1,308 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { execSync, spawn } from 'child_process';
4
+ import * as readline from 'readline';
5
+
6
+ const VENV_DIR = '.venv';
7
+ const SETUP_MARKER_FILE = '.minded-local-operator-setup';
8
+
9
+ interface SetupPackage {
10
+ name: string;
11
+ description: string;
12
+ command: string;
13
+ checkCommand?: string;
14
+ }
15
+
16
+ const REQUIRED_PACKAGES: SetupPackage[] = [
17
+ {
18
+ name: 'uv',
19
+ description: 'Python package manager for fast dependency installation',
20
+ command: 'curl -LsSf https://astral.sh/uv/install.sh | sh',
21
+ checkCommand: 'uv --version',
22
+ },
23
+ {
24
+ name: 'Python 3.12',
25
+ description: 'Python runtime for browser automation',
26
+ command: 'python3.12 --version',
27
+ checkCommand: 'python3.12 --version',
28
+ },
29
+ {
30
+ name: 'browser-use',
31
+ description: 'Browser automation library',
32
+ command: 'uv pip install browser-use',
33
+ },
34
+ {
35
+ name: 'Playwright Chromium',
36
+ description: 'Chromium browser for automation',
37
+ command: 'uvx playwright install chromium --with-deps',
38
+ },
39
+ ];
40
+
41
+ export function isLocalOperatorSetup(): boolean {
42
+ const setupMarkerPath = path.join(process.cwd(), SETUP_MARKER_FILE);
43
+ const venvPath = path.join(process.cwd(), VENV_DIR);
44
+
45
+ // Check if both the marker file and venv directory exist
46
+ return fs.existsSync(setupMarkerPath) && fs.existsSync(venvPath);
47
+ }
48
+
49
+ function checkCommand(command: string): boolean {
50
+ try {
51
+ execSync(command, { stdio: 'ignore' });
52
+ return true;
53
+ } catch {
54
+ return false;
55
+ }
56
+ }
57
+
58
+ function promptUser(question: string): Promise<boolean> {
59
+ // Check if we're in an interactive terminal
60
+ if (!process.stdin.isTTY) {
61
+ console.warn('Non-interactive terminal detected, skipping prompt and cancelling installation');
62
+ return Promise.resolve(false);
63
+ }
64
+
65
+ return new Promise((resolve) => {
66
+ const rl = readline.createInterface({
67
+ input: process.stdin,
68
+ output: process.stdout,
69
+ });
70
+
71
+ // Set a timeout in case the prompt hangs
72
+ const timeout = setTimeout(() => {
73
+ console.warn('Prompt timeout (30s), cancelling installation');
74
+ rl.close();
75
+ resolve(false);
76
+ }, 30000); // 30 second timeout
77
+
78
+ console.log('Displaying prompt to user');
79
+
80
+ rl.question(question, (answer) => {
81
+ clearTimeout(timeout);
82
+ console.log(`User answered: "${answer}"`);
83
+
84
+ rl.close();
85
+
86
+ const confirmed = answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes';
87
+ console.log(`Prompt result: ${confirmed}`);
88
+
89
+ resolve(confirmed);
90
+ });
91
+
92
+ // Handle potential readline errors
93
+ rl.on('error', (error) => {
94
+ console.error('Readline error, cancelling installation:', error.message);
95
+ clearTimeout(timeout);
96
+ rl.close();
97
+ resolve(false);
98
+ });
99
+ });
100
+ }
101
+
102
+ async function runCommand(command: string, description: string): Promise<void> {
103
+ return new Promise((resolve, reject) => {
104
+ console.log(`Installing ${description}...`);
105
+
106
+ const isComplexCommand = command.includes('|') || command.includes('&&');
107
+
108
+ if (isComplexCommand) {
109
+ // For complex commands with pipes or &&, use shell
110
+ const child = spawn('sh', ['-c', command], {
111
+ stdio: 'inherit',
112
+ shell: true,
113
+ });
114
+
115
+ child.on('error', (error) => {
116
+ console.error(`Failed to install ${description}:`, error.message);
117
+ reject(error);
118
+ });
119
+
120
+ child.on('close', (code) => {
121
+ if (code === 0) {
122
+ console.log(`āœ“ ${description} installed successfully`);
123
+ resolve();
124
+ } else {
125
+ reject(new Error(`Command exited with code ${code}`));
126
+ }
127
+ });
128
+ } else {
129
+ // For simple commands, use execSync
130
+ try {
131
+ execSync(command, { stdio: 'inherit' });
132
+ console.log(`āœ“ ${description} installed successfully`);
133
+ resolve();
134
+ } catch (error) {
135
+ console.error(`Failed to install ${description}:`, error);
136
+ reject(error);
137
+ }
138
+ }
139
+ });
140
+ }
141
+
142
+ export async function setupLocalOperator(skipPrompt: boolean = false): Promise<void> {
143
+ console.log('\nšŸ¤– Minded Local Operator Setup\n');
144
+
145
+ // Check if already setup
146
+ if (isLocalOperatorSetup()) {
147
+ console.log('āœ“ Local operator is already set up');
148
+ return;
149
+ }
150
+
151
+ // Display what will be installed
152
+ console.log('The following packages will be installed for local browser automation:\n');
153
+ REQUIRED_PACKAGES.forEach((pkg, index) => {
154
+ console.log(` ${index + 1}. ${pkg.name} - ${pkg.description}`);
155
+ });
156
+ console.log('');
157
+
158
+ // Ask for confirmation unless skipped
159
+ if (!skipPrompt) {
160
+ console.log('Waiting for user confirmation...');
161
+ const confirmed = await promptUser('Do you want to proceed with the installation? (y/n): ');
162
+ if (!confirmed) {
163
+ console.log('Installation cancelled by user');
164
+ process.exit(0);
165
+ }
166
+ console.log('User confirmed, proceeding with installation');
167
+ } else {
168
+ console.log('Skipping confirmation prompt, proceeding with installation...');
169
+ }
170
+
171
+ console.log('\nšŸ“¦ Starting installation...\n');
172
+
173
+ try {
174
+ // Check and install uv if needed
175
+ if (!checkCommand('uv --version')) {
176
+ console.log('Installing uv package manager...');
177
+ await runCommand('curl -LsSf https://astral.sh/uv/install.sh | sh', 'uv');
178
+
179
+ // Add uv to PATH for current session
180
+ const uvPath = path.join(process.env.HOME || '', '.cargo', 'bin');
181
+ process.env.PATH = `${uvPath}:${process.env.PATH}`;
182
+ } else {
183
+ console.log('āœ“ uv is already installed');
184
+ }
185
+
186
+ // Check Python 3.12
187
+ if (!checkCommand('python3.12 --version')) {
188
+ console.error('Python 3.12 is required but not found');
189
+ console.log('Please install Python 3.12 manually:');
190
+ console.log(' macOS: brew install python@3.12');
191
+ console.log(' Ubuntu/Debian: sudo apt install python3.12');
192
+ console.log(' Or visit: https://www.python.org/downloads/');
193
+ process.exit(1);
194
+ } else {
195
+ console.log('āœ“ Python 3.12 is available');
196
+ }
197
+
198
+ // Create virtual environment
199
+ console.log('Creating Python virtual environment...');
200
+ execSync(`uv venv --python 3.12 ${VENV_DIR}`, { stdio: 'inherit' });
201
+ console.log('āœ“ Virtual environment created');
202
+
203
+ // Install browser-use in the venv
204
+ console.log('Installing browser-use package...');
205
+ execSync(`uv pip install --python ${path.join(process.cwd(), VENV_DIR, 'bin', 'python')} browser-use`, {
206
+ stdio: 'inherit',
207
+ });
208
+ console.log('āœ“ browser-use installed');
209
+
210
+ // Install Playwright Chromium
211
+ console.log('Installing Playwright Chromium browser...');
212
+ execSync(`uvx playwright install chromium --with-deps`, { stdio: 'inherit' });
213
+ console.log('āœ“ Playwright Chromium installed');
214
+
215
+ // Create setup marker file
216
+ const setupMarkerPath = path.join(process.cwd(), SETUP_MARKER_FILE);
217
+ const setupInfo = {
218
+ version: '1.0.0',
219
+ setupDate: new Date().toISOString(),
220
+ packages: REQUIRED_PACKAGES.map((p) => p.name),
221
+ venvPath: VENV_DIR,
222
+ };
223
+ fs.writeFileSync(setupMarkerPath, JSON.stringify(setupInfo, null, 2));
224
+
225
+ // Add to .gitignore if not already there
226
+ const gitignorePath = path.join(process.cwd(), '.gitignore');
227
+ if (fs.existsSync(gitignorePath)) {
228
+ const gitignoreContent = fs.readFileSync(gitignorePath, 'utf8');
229
+ const itemsToIgnore = [VENV_DIR, SETUP_MARKER_FILE, 'downloads/'];
230
+ const linesToAdd: string[] = [];
231
+
232
+ itemsToIgnore.forEach((item) => {
233
+ if (!gitignoreContent.includes(item)) {
234
+ linesToAdd.push(item);
235
+ }
236
+ });
237
+
238
+ if (linesToAdd.length > 0) {
239
+ const newContent = gitignoreContent.trimEnd() + '\n\n# Minded Local Operator\n' + linesToAdd.join('\n') + '\n';
240
+ fs.writeFileSync(gitignorePath, newContent);
241
+ console.log('āœ“ Updated .gitignore');
242
+ }
243
+ }
244
+
245
+ // Add BROWSER_TASK_MODE to .env file
246
+ const envPath = path.join(process.cwd(), '.env');
247
+ const browserTaskModeVar = 'BROWSER_TASK_MODE=localRun';
248
+
249
+ if (fs.existsSync(envPath)) {
250
+ const envContent = fs.readFileSync(envPath, 'utf8');
251
+
252
+ // Check if BROWSER_TASK_MODE is already set
253
+ if (!envContent.includes('BROWSER_TASK_MODE')) {
254
+ // Append to existing .env file
255
+ const newEnvContent = envContent.trimEnd() + '\n' + browserTaskModeVar + '\n';
256
+ fs.writeFileSync(envPath, newEnvContent);
257
+ console.log('āœ“ Added BROWSER_TASK_MODE=localRun to .env');
258
+ } else if (!envContent.includes('BROWSER_TASK_MODE=localRun')) {
259
+ // BROWSER_TASK_MODE exists but with different value, update it
260
+ const updatedEnvContent = envContent.replace(/BROWSER_TASK_MODE=.*$/m, browserTaskModeVar);
261
+ fs.writeFileSync(envPath, updatedEnvContent);
262
+ console.log('āœ“ Updated BROWSER_TASK_MODE to localRun in .env');
263
+ } else {
264
+ console.log('āœ“ BROWSER_TASK_MODE=localRun already configured in .env');
265
+ }
266
+ } else {
267
+ // Create new .env file
268
+ fs.writeFileSync(envPath, browserTaskModeVar + '\n');
269
+ console.log('āœ“ Created .env file with BROWSER_TASK_MODE=localRun');
270
+ }
271
+
272
+ console.log('\n' + '='.repeat(50));
273
+ console.log('āœ… Local operator setup completed successfully!');
274
+ console.log('='.repeat(50) + '\n');
275
+
276
+ console.log('You can now use browser automation features locally.');
277
+ console.log('The virtual environment will be activated automatically when needed.');
278
+ } catch (error) {
279
+ console.error('Setup failed:', error);
280
+
281
+ // Clean up partial installation
282
+ try {
283
+ if (fs.existsSync(path.join(process.cwd(), VENV_DIR))) {
284
+ fs.rmSync(path.join(process.cwd(), VENV_DIR), { recursive: true });
285
+ }
286
+ } catch {
287
+ // Ignore cleanup errors
288
+ }
289
+
290
+ process.exit(1);
291
+ }
292
+ }
293
+
294
+ export function validateLocalOperatorSetup(): void {
295
+ if (!isLocalOperatorSetup()) {
296
+ console.error('Local operator is not set up');
297
+ console.log('Please run: npx minded setup-local-operator');
298
+ throw new Error('Local operator not configured');
299
+ }
300
+ }
301
+
302
+ export function getVenvPath(): string {
303
+ return path.join(process.cwd(), VENV_DIR);
304
+ }
305
+
306
+ export function getVenvBinPath(): string {
307
+ return path.join(getVenvPath(), 'bin');
308
+ }
@@ -0,0 +1 @@
1
+ export { LLMDebugCallbackHandler } from './llmCallbackHandler';