@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,103 @@
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import * as mindedConnection from '../mindedConnection';
3
+ import { mindedConnectionSocketMessageType, OnPiiHttpRequest, OnPiiHttpResponse } from '../mindedConnectionTypes';
4
+ import { HttpRequestConfig, HttpResponse, PIIGatewayInstance } from './types';
5
+ import { logger } from '../../utils/logger';
6
+
7
+ export class PIIGateway implements PIIGatewayInstance {
8
+ constructor() {
9
+ // No longer needs mindedConnection as parameter
10
+ }
11
+
12
+ private async makeRequest<T = any>(
13
+ sessionId: string,
14
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS',
15
+ url: string,
16
+ data?: any,
17
+ config?: HttpRequestConfig,
18
+ ): Promise<HttpResponse<T>> {
19
+ if (!mindedConnection.isConnected()) {
20
+ throw new Error('Minded connection is not established. PII-secured HTTP requests require a connection to the Minded platform.');
21
+ }
22
+
23
+ try {
24
+ const requestId = uuidv4();
25
+ const requestPayload: OnPiiHttpRequest = {
26
+ type: mindedConnectionSocketMessageType.PII_HTTP_REQUEST,
27
+ requestId,
28
+ method,
29
+ url,
30
+ headers: config?.headers as Record<string, string>,
31
+ params: config?.params,
32
+ data,
33
+ sessionId,
34
+ };
35
+
36
+ const response = await mindedConnection.awaitEmit<OnPiiHttpRequest, OnPiiHttpResponse>(
37
+ mindedConnectionSocketMessageType.PII_HTTP_REQUEST,
38
+ requestPayload,
39
+ 30000, // 30 second timeout for HTTP requests
40
+ );
41
+
42
+ if (response.error) {
43
+ throw new Error(`HTTP request failed: ${response.error}`);
44
+ }
45
+
46
+ // Verify that the response requestId matches our request
47
+ if (response.requestId && response.requestId !== requestId) {
48
+ logger.warn(`Response requestId (${response.requestId}) does not match request requestId (${requestId})`);
49
+ }
50
+
51
+ // Return generic HttpResponse format
52
+ return {
53
+ data: response.data,
54
+ status: response.status || 200,
55
+ statusText: response.statusText || 'OK',
56
+ headers: response.headers || {},
57
+ config: config || {},
58
+ };
59
+ } catch (err) {
60
+ logger.error({ message: 'Secure HTTP request failed', err });
61
+ return {
62
+ data: undefined as T,
63
+ status: 500,
64
+ statusText: 'Internal Server Error',
65
+ headers: {},
66
+ config: config || {},
67
+ };
68
+ }
69
+ }
70
+
71
+ async get<T = any>(sessionId: string, url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>> {
72
+ return this.makeRequest<T>(sessionId, 'GET', url, undefined, config);
73
+ }
74
+
75
+ async post<T = any>(sessionId: string, url: string, data?: any, config?: HttpRequestConfig): Promise<HttpResponse<T>> {
76
+ return this.makeRequest<T>(sessionId, 'POST', url, data, config);
77
+ }
78
+
79
+ async put<T = any>(sessionId: string, url: string, data?: any, config?: HttpRequestConfig): Promise<HttpResponse<T>> {
80
+ return this.makeRequest<T>(sessionId, 'PUT', url, data, config);
81
+ }
82
+
83
+ async delete<T = any>(sessionId: string, url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>> {
84
+ return this.makeRequest<T>(sessionId, 'DELETE', url, undefined, config);
85
+ }
86
+
87
+ async patch<T = any>(sessionId: string, url: string, data?: any, config?: HttpRequestConfig): Promise<HttpResponse<T>> {
88
+ return this.makeRequest<T>(sessionId, 'PATCH', url, data, config);
89
+ }
90
+
91
+ async head<T = any>(sessionId: string, url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>> {
92
+ return this.makeRequest<T>(sessionId, 'HEAD', url, undefined, config);
93
+ }
94
+
95
+ async options<T = any>(sessionId: string, url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>> {
96
+ return this.makeRequest<T>(sessionId, 'OPTIONS', url, undefined, config);
97
+ }
98
+
99
+ async request<T = any>(sessionId: string, config: HttpRequestConfig): Promise<HttpResponse<T>> {
100
+ const method = (config.method?.toUpperCase() || 'GET') as any;
101
+ return this.makeRequest<T>(sessionId, method, config.url || '', config.data, config);
102
+ }
103
+ }
@@ -0,0 +1,5 @@
1
+ // Export types
2
+ export type { HttpRequestConfig, HttpResponse, PIIGatewayInstance } from './types';
3
+
4
+ // Export core gateway class and creation function
5
+ export { PIIGateway } from './gateway';
@@ -0,0 +1,29 @@
1
+ // Generic HTTP types (library-agnostic)
2
+ export interface HttpRequestConfig {
3
+ method?: string;
4
+ url?: string;
5
+ headers?: Record<string, string>;
6
+ params?: Record<string, any>;
7
+ data?: any;
8
+ timeout?: number;
9
+ [key: string]: any; // Allow additional properties for extensibility
10
+ }
11
+
12
+ export interface HttpResponse<T = any> {
13
+ data: T;
14
+ status: number;
15
+ statusText: string;
16
+ headers: Record<string, string>;
17
+ config: HttpRequestConfig;
18
+ }
19
+
20
+ export interface PIIGatewayInstance {
21
+ get<T = any>(sessionId: string, url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
22
+ post<T = any>(sessionId: string, url: string, data?: any, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
23
+ put<T = any>(sessionId: string, url: string, data?: any, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
24
+ delete<T = any>(sessionId: string, url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
25
+ patch<T = any>(sessionId: string, url: string, data?: any, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
26
+ head<T = any>(sessionId: string, url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
27
+ options<T = any>(sessionId: string, url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
28
+ request<T = any>(sessionId: string, config: HttpRequestConfig): Promise<HttpResponse<T>>;
29
+ }
@@ -0,0 +1,106 @@
1
+ import { Tool } from '../types/Tools.types';
2
+ import { Agent } from '../agent';
3
+ import { logger } from '../utils/logger';
4
+
5
+ export interface ToolExecutionRequest {
6
+ toolName: string;
7
+ toolParams: any;
8
+ sessionId: string;
9
+ requestId: string;
10
+ cdpUrl?: string;
11
+ }
12
+
13
+ export interface ToolExecutionResponse {
14
+ result?: any;
15
+ state?: any;
16
+ error?: string;
17
+ }
18
+
19
+ export class ToolExecutor {
20
+ private tools: Map<string, Tool<any, any>> = new Map();
21
+
22
+ constructor(private agent: Agent) {}
23
+
24
+ /**
25
+ * Register tools for standalone execution
26
+ */
27
+ registerTools(tools: Tool<any, any>[]) {
28
+ tools.forEach((tool) => {
29
+ if (tool.allowExecutionRequests === true) {
30
+ this.tools.set(tool.name, tool);
31
+ }
32
+ });
33
+ }
34
+
35
+ /**
36
+ * Execute a tool by name with given parameters
37
+ * This is called when browser-use requests tool execution via socket
38
+ */
39
+ async executeTool(request: ToolExecutionRequest): Promise<ToolExecutionResponse> {
40
+ const { toolName, toolParams, sessionId, cdpUrl } = request;
41
+
42
+ try {
43
+ // Find the tool
44
+ const tool = this.tools.get(toolName);
45
+ if (!tool) {
46
+ throw new Error(`Tool not found: ${toolName}`);
47
+ }
48
+
49
+ // We only allow to execute tools that are marked as allowed to be executed
50
+
51
+ logger.debug({
52
+ msg: '[ToolExecutor] Executing tool',
53
+ toolName,
54
+ sessionId,
55
+ hasCdpUrl: !!cdpUrl,
56
+ });
57
+
58
+ // Get the current state for the session
59
+ const state = await this.agent.getState(sessionId);
60
+ if (!state) {
61
+ throw new Error(`Session state not found: ${sessionId}`);
62
+ }
63
+
64
+ // Execute the tool
65
+ const startTime = Date.now();
66
+
67
+ if (cdpUrl) {
68
+ state.cdp = {
69
+ url: cdpUrl,
70
+ sessionId: state.cdp?.sessionId || null,
71
+ liveUrl: state.cdp?.liveUrl || null,
72
+ };
73
+ }
74
+
75
+ await tool.execute({
76
+ input: toolParams,
77
+ state,
78
+ agent: this.agent,
79
+ });
80
+ const endTime = Date.now();
81
+
82
+ logger.debug({
83
+ msg: '[ToolExecutor] Tool execution completed',
84
+ toolName,
85
+ executionTimeMs: endTime - startTime,
86
+ });
87
+
88
+ // Always update the session state after tool execution req
89
+ await this.agent.updateState({ sessionId, state });
90
+
91
+ return {
92
+ state,
93
+ };
94
+ } catch (err) {
95
+ logger.error({
96
+ message: '[ToolExecutor] Error executing tool',
97
+ toolName,
98
+ err,
99
+ });
100
+
101
+ return {
102
+ error: err instanceof Error ? err.message : String(err),
103
+ };
104
+ }
105
+ }
106
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Parses attachments from a trigger body and formats them as a string
3
+ * @param triggerBody - The trigger body containing potential attachments
4
+ * @returns Formatted string of attachments or empty string if no attachments
5
+ */
6
+ export const parseAttachments = (triggerBody: any): string => {
7
+ // Check if triggerBody has attachments
8
+ const attachments = triggerBody?.attachments;
9
+
10
+ if (!attachments || !Array.isArray(attachments) || attachments.length === 0) {
11
+ return '';
12
+ }
13
+
14
+ // Format attachments
15
+ const attachmentStrings = attachments
16
+ .map((attachment: any) => {
17
+ const lines: string[] = [];
18
+
19
+ if (attachment.originalname) {
20
+ lines.push(`originalName: ${attachment.originalname}`);
21
+ } else if (attachment.name) {
22
+ lines.push(`originalName: ${attachment.name}`);
23
+ }
24
+
25
+ if (attachment.path) {
26
+ lines.push(`localPath: ${attachment.path}`);
27
+ }
28
+
29
+ return lines.join('\n');
30
+ })
31
+ .filter((str) => str.length > 0);
32
+
33
+ if (attachmentStrings.length === 0) {
34
+ return '';
35
+ }
36
+
37
+ return 'Attachments:\n' + attachmentStrings.join('\n\n');
38
+ };
39
+
40
+ /**
41
+ * Combines content with attachments string
42
+ * @param content - The main content string
43
+ * @param attachmentsString - The formatted attachments string
44
+ * @returns Combined content with attachments
45
+ */
46
+ export const combineContentWithAttachments = (content: string, attachmentsString: string): string => {
47
+ if (!attachmentsString) {
48
+ return content;
49
+ }
50
+
51
+ if (!content) {
52
+ return attachmentsString;
53
+ }
54
+
55
+ return `${content}\n${attachmentsString}`;
56
+ };
@@ -0,0 +1,55 @@
1
+ import { logger } from '../../utils/logger';
2
+
3
+ /**
4
+ * Convert Zod schema to parameter format
5
+ * This is a simplified version - you might need to expand based on your needs
6
+ */
7
+ export const zodSchemaToParams = (zodSchema: any): any[] => {
8
+ try {
9
+ // Get the shape of the Zod object
10
+ const shape = zodSchema._def?.shape?.() || {};
11
+ const params = [];
12
+
13
+ for (const [key, value] of Object.entries(shape)) {
14
+ const zodValue = value as any; // Zod schema type
15
+ const param: any = {
16
+ name: key,
17
+ type: getZodType(zodValue),
18
+ required: !zodValue.isOptional?.(),
19
+ description: zodValue._def?.description || '',
20
+ };
21
+
22
+ params.push(param);
23
+ }
24
+
25
+ return params;
26
+ } catch (err) {
27
+ logger.warn({
28
+ message: '[ToolExecutor] Error parsing Zod schema',
29
+ err,
30
+ });
31
+ return [];
32
+ }
33
+ };
34
+
35
+ /**
36
+ * Get type string from Zod type
37
+ */
38
+ const getZodType = (zodType: any): string => {
39
+ const typeName = zodType._def?.typeName;
40
+
41
+ switch (typeName) {
42
+ case 'ZodString':
43
+ return 'string';
44
+ case 'ZodNumber':
45
+ return 'number';
46
+ case 'ZodBoolean':
47
+ return 'boolean';
48
+ case 'ZodArray':
49
+ return 'array';
50
+ case 'ZodObject':
51
+ return 'object';
52
+ default:
53
+ return 'any';
54
+ }
55
+ };
@@ -0,0 +1,200 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as yaml from 'js-yaml';
4
+ import * as mindedConnection from '../platform/mindedConnection';
5
+ import { mindedConnectionSocketMessageType } from '../platform/mindedConnectionTypes';
6
+ import { getConfig } from '../platform/config';
7
+ import { logger } from '../utils/logger';
8
+ import { OutputBlockData } from '@editorjs/editorjs';
9
+ import { Environment } from '../types/Platform.types';
10
+
11
+ export type Playbook = {
12
+ id: string;
13
+ name: string;
14
+ blocks: OutputBlockData[];
15
+ };
16
+
17
+ /**
18
+ * Decode HTML entities in a string
19
+ */
20
+ function decodeHtmlEntities(text: string): string {
21
+ const entities: Record<string, string> = {
22
+ '&amp;': '&',
23
+ '&lt;': '<',
24
+ '&gt;': '>',
25
+ '&quot;': '"',
26
+ '&#39;': "'",
27
+ '&apos;': "'",
28
+ '&#x27;': "'",
29
+ '&#x2F;': '/',
30
+ '&#x60;': '`',
31
+ '&#x3D;': '=',
32
+ };
33
+
34
+ return text.replace(/&[#\w]+;/g, (entity) => entities[entity] || entity);
35
+ }
36
+
37
+ /**
38
+ * Convert EditorJS blocks to markdown
39
+ */
40
+ function editorJsToMarkdown(blocks: OutputBlockData[]): string {
41
+ if (!blocks || blocks.length === 0) {
42
+ return '';
43
+ }
44
+
45
+ return blocks
46
+ .map((block) => {
47
+ try {
48
+ switch (block.type) {
49
+ case 'header': {
50
+ const level = block.data?.level || 1;
51
+ const headerPrefix = '#'.repeat(level);
52
+ const text = block.data?.text || '';
53
+ return `${headerPrefix} ${decodeHtmlEntities(text)}`;
54
+ }
55
+
56
+ case 'paragraph': {
57
+ const text = block.data?.text || '';
58
+ return decodeHtmlEntities(text);
59
+ }
60
+
61
+ case 'list': {
62
+ const items = block.data?.items || [];
63
+ const style = block.data?.style || 'unordered';
64
+ return items
65
+ .map((item: { content: string }, index: number) => {
66
+ const decodedItem = decodeHtmlEntities(item.content);
67
+ if (style === 'ordered') {
68
+ return `${index + 1}. ${decodedItem}`;
69
+ } else {
70
+ return `- ${decodedItem}`;
71
+ }
72
+ })
73
+ .join('\n');
74
+ }
75
+
76
+ case 'quote': {
77
+ const text = block.data?.text || '';
78
+ const caption = block.data?.caption ? `\n*${decodeHtmlEntities(block.data.caption)}*` : '';
79
+ return `> ${decodeHtmlEntities(text)}${caption}`;
80
+ }
81
+
82
+ case 'code': {
83
+ const code = block.data?.code || '';
84
+ return `\`\`\`\n${decodeHtmlEntities(code)}\n\`\`\``;
85
+ }
86
+
87
+ case 'delimiter': {
88
+ return '---';
89
+ }
90
+
91
+ default: {
92
+ logger.warn(`Unknown playbook block type: ${block.type}`);
93
+ return '';
94
+ }
95
+ }
96
+ } catch (err) {
97
+ logger.error({ message: 'Error converting EditorJS blocks to markdown', err, block });
98
+ throw err;
99
+ }
100
+ })
101
+ .join('\n\n');
102
+ }
103
+
104
+ /**
105
+ * Load playbooks from directories or platform
106
+ */
107
+ export async function loadPlaybooks(playbooksDirectories?: string[]): Promise<Playbook[]> {
108
+ const { env, isDeployed } = getConfig();
109
+ let playbooks: Playbook[] = [];
110
+
111
+ if ([Environment.DEVELOPMENT].includes(env) && isDeployed && mindedConnection.isConnected()) {
112
+ // Load from platform
113
+ const response = await mindedConnection.awaitEmit<object, { playbooks?: Playbook[]; error?: string }>(
114
+ mindedConnectionSocketMessageType.GET_PLAYBOOKS,
115
+ {},
116
+ );
117
+
118
+ if (response?.error) {
119
+ throw new Error(`Failed to load playbooks from platform: ${response.error}`);
120
+ }
121
+
122
+ playbooks = response?.playbooks || [];
123
+ } else if (playbooksDirectories) {
124
+ // Load from directories
125
+ playbooks = loadPlaybooksFromDirectories(playbooksDirectories);
126
+ }
127
+
128
+ return playbooks;
129
+ }
130
+
131
+ /**
132
+ * Load playbooks from local directories
133
+ */
134
+ function loadPlaybooksFromDirectories(directories: string[]): Playbook[] {
135
+ const playbooks: Playbook[] = [];
136
+
137
+ for (const directory of directories) {
138
+ if (!fs.existsSync(directory)) {
139
+ logger.info({ msg: `Playbooks directory does not exist: ${directory}` });
140
+ continue;
141
+ }
142
+
143
+ const files = getAllYamlFiles(directory);
144
+
145
+ for (const file of files) {
146
+ try {
147
+ const fileContent = fs.readFileSync(file, 'utf8');
148
+ const playbook = yaml.load(fileContent) as Playbook;
149
+
150
+ if (playbook && playbook.name && playbook.blocks) {
151
+ playbooks.push(playbook);
152
+ logger.info({ msg: `Loaded playbook: ${playbook.name} from ${file}` });
153
+ } else {
154
+ logger.warn({ msg: `Invalid playbook structure in ${file}` });
155
+ }
156
+ } catch (err) {
157
+ logger.error({ message: `Failed to load playbook file ${file}: ${err}` });
158
+ }
159
+ }
160
+ }
161
+
162
+ return playbooks;
163
+ }
164
+
165
+ /**
166
+ * Recursively get all YAML files in a directory
167
+ */
168
+ function getAllYamlFiles(dir: string): string[] {
169
+ const files: string[] = [];
170
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
171
+
172
+ for (const entry of entries) {
173
+ const fullPath = path.join(dir, entry.name);
174
+ if (entry.isDirectory()) {
175
+ files.push(...getAllYamlFiles(fullPath));
176
+ } else if (entry.name.endsWith('.yaml') || entry.name.endsWith('.yml')) {
177
+ files.push(fullPath);
178
+ }
179
+ }
180
+
181
+ return files;
182
+ }
183
+
184
+ /**
185
+ * Combine playbooks into a single string
186
+ */
187
+ export function combinePlaybooks(playbooks: Playbook[]): string | null {
188
+ if (playbooks.length === 0) {
189
+ return null;
190
+ }
191
+
192
+ // Combine all playbooks into sections
193
+ const sections = playbooks.map((playbook) => {
194
+ const markdownContent = editorJsToMarkdown(playbook.blocks);
195
+ return `# ${playbook.name}\n${markdownContent}`;
196
+ });
197
+
198
+ const combinedPlaybooks = sections.join('\n\n');
199
+ return combinedPlaybooks;
200
+ }