@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.
- package/README.md +6 -0
- package/dist/agent.d.ts +256 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +896 -0
- package/dist/agent.js.map +1 -0
- package/dist/browserTask/README.md +419 -0
- package/dist/browserTask/browserAgent.py +632 -0
- package/dist/browserTask/captcha_isolated.png +0 -0
- package/dist/browserTask/executeBrowserTask.d.ts +14 -0
- package/dist/browserTask/executeBrowserTask.d.ts.map +1 -0
- package/dist/browserTask/executeBrowserTask.js +195 -0
- package/dist/browserTask/executeBrowserTask.js.map +1 -0
- package/dist/browserTask/executeBrowserTask.py +153 -0
- package/dist/browserTask/executeBrowserTask.ts +79 -0
- package/dist/browserTask/localBrowserTask.d.ts +49 -0
- package/dist/browserTask/localBrowserTask.d.ts.map +1 -0
- package/dist/browserTask/localBrowserTask.js +284 -0
- package/dist/browserTask/localBrowserTask.js.map +1 -0
- package/dist/browserTask/requirements.txt +8 -0
- package/dist/browserTask/setup.sh +144 -0
- package/dist/browserTask/types.d.ts +35 -0
- package/dist/browserTask/types.d.ts.map +1 -0
- package/dist/browserTask/types.js +10 -0
- package/dist/browserTask/types.js.map +1 -0
- package/dist/checkpointer/checkpointSaverFactory.d.ts +7 -0
- package/dist/checkpointer/checkpointSaverFactory.d.ts.map +1 -0
- package/dist/checkpointer/checkpointSaverFactory.js +53 -0
- package/dist/checkpointer/checkpointSaverFactory.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +209 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lambdaHandlerTemplate.d.ts +10 -0
- package/dist/cli/lambdaHandlerTemplate.d.ts.map +1 -0
- package/dist/cli/lambdaHandlerTemplate.js +76 -0
- package/dist/cli/lambdaHandlerTemplate.js.map +1 -0
- package/dist/cli/lambdaHandlerTemplate.ts +78 -0
- package/dist/cli/localOperatorSetup.d.ts +6 -0
- package/dist/cli/localOperatorSetup.d.ts.map +1 -0
- package/dist/cli/localOperatorSetup.js +310 -0
- package/dist/cli/localOperatorSetup.js.map +1 -0
- package/dist/debugging/index.d.ts +2 -0
- package/dist/debugging/index.d.ts.map +1 -0
- package/dist/debugging/index.js +6 -0
- package/dist/debugging/index.js.map +1 -0
- package/dist/debugging/llmCallbackHandler.d.ts +36 -0
- package/dist/debugging/llmCallbackHandler.d.ts.map +1 -0
- package/dist/debugging/llmCallbackHandler.js +101 -0
- package/dist/debugging/llmCallbackHandler.js.map +1 -0
- package/dist/edges/createDirectEdge.d.ts +4 -0
- package/dist/edges/createDirectEdge.d.ts.map +1 -0
- package/dist/edges/createDirectEdge.js +24 -0
- package/dist/edges/createDirectEdge.js.map +1 -0
- package/dist/edges/createLogicalRouter.d.ts +8 -0
- package/dist/edges/createLogicalRouter.d.ts.map +1 -0
- package/dist/edges/createLogicalRouter.js +194 -0
- package/dist/edges/createLogicalRouter.js.map +1 -0
- package/dist/edges/createPromptRouter.d.ts +12 -0
- package/dist/edges/createPromptRouter.d.ts.map +1 -0
- package/dist/edges/createPromptRouter.js +176 -0
- package/dist/edges/createPromptRouter.js.map +1 -0
- package/dist/edges/edgeFactory.d.ts +14 -0
- package/dist/edges/edgeFactory.d.ts.map +1 -0
- package/dist/edges/edgeFactory.js +125 -0
- package/dist/edges/edgeFactory.js.map +1 -0
- package/dist/events/AgentEvents.d.ts +56 -0
- package/dist/events/AgentEvents.d.ts.map +1 -0
- package/dist/events/AgentEvents.js +13 -0
- package/dist/events/AgentEvents.js.map +1 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +5 -0
- package/dist/events/index.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +98 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/zendesk.d.ts +35 -0
- package/dist/interfaces/zendesk.d.ts.map +1 -0
- package/dist/interfaces/zendesk.js +219 -0
- package/dist/interfaces/zendesk.js.map +1 -0
- package/dist/internalTools/appActionRunnerTool.d.ts +5 -0
- package/dist/internalTools/appActionRunnerTool.d.ts.map +1 -0
- package/dist/internalTools/appActionRunnerTool.js +88 -0
- package/dist/internalTools/appActionRunnerTool.js.map +1 -0
- package/dist/internalTools/documentExtraction/documentExtraction.d.ts +129 -0
- package/dist/internalTools/documentExtraction/documentExtraction.d.ts.map +1 -0
- package/dist/internalTools/documentExtraction/documentExtraction.js +736 -0
- package/dist/internalTools/documentExtraction/documentExtraction.js.map +1 -0
- package/dist/internalTools/documentExtraction/types.d.ts +29 -0
- package/dist/internalTools/documentExtraction/types.d.ts.map +1 -0
- package/dist/internalTools/documentExtraction/types.js +35 -0
- package/dist/internalTools/documentExtraction/types.js.map +1 -0
- package/dist/internalTools/libraryActionRunnerTool.d.ts +4 -0
- package/dist/internalTools/libraryActionRunnerTool.d.ts.map +1 -0
- package/dist/internalTools/libraryActionRunnerTool.js +53 -0
- package/dist/internalTools/libraryActionRunnerTool.js.map +1 -0
- package/dist/internalTools/retell.d.ts +12 -0
- package/dist/internalTools/retell.d.ts.map +1 -0
- package/dist/internalTools/retell.js +54 -0
- package/dist/internalTools/retell.js.map +1 -0
- package/dist/internalTools/sendPlaceholderMessage.d.ts +14 -0
- package/dist/internalTools/sendPlaceholderMessage.d.ts.map +1 -0
- package/dist/internalTools/sendPlaceholderMessage.js +61 -0
- package/dist/internalTools/sendPlaceholderMessage.js.map +1 -0
- package/dist/internalTools/timer.d.ts +99 -0
- package/dist/internalTools/timer.d.ts.map +1 -0
- package/dist/internalTools/timer.js +139 -0
- package/dist/internalTools/timer.js.map +1 -0
- package/dist/internalTools/voice/escalateVoiceCall.d.ts +2 -0
- package/dist/internalTools/voice/escalateVoiceCall.d.ts.map +1 -0
- package/dist/internalTools/voice/escalateVoiceCall.js +52 -0
- package/dist/internalTools/voice/escalateVoiceCall.js.map +1 -0
- package/dist/internalTools/voice/retell.d.ts +12 -0
- package/dist/internalTools/voice/retell.d.ts.map +1 -0
- package/dist/internalTools/voice/retell.js +54 -0
- package/dist/internalTools/voice/retell.js.map +1 -0
- package/dist/internalTools/voice/sendPlaceholderMessage.d.ts +14 -0
- package/dist/internalTools/voice/sendPlaceholderMessage.d.ts.map +1 -0
- package/dist/internalTools/voice/sendPlaceholderMessage.js +61 -0
- package/dist/internalTools/voice/sendPlaceholderMessage.js.map +1 -0
- package/dist/interrupts/BaseInterruptSessionManager.d.ts +49 -0
- package/dist/interrupts/BaseInterruptSessionManager.d.ts.map +1 -0
- package/dist/interrupts/BaseInterruptSessionManager.js +34 -0
- package/dist/interrupts/BaseInterruptSessionManager.js.map +1 -0
- package/dist/interrupts/MemoryInterruptSessionManager.d.ts +14 -0
- package/dist/interrupts/MemoryInterruptSessionManager.d.ts.map +1 -0
- package/dist/interrupts/MemoryInterruptSessionManager.js +60 -0
- package/dist/interrupts/MemoryInterruptSessionManager.js.map +1 -0
- package/dist/interrupts/MindedInterruptSessionManager.d.ts +13 -0
- package/dist/interrupts/MindedInterruptSessionManager.d.ts.map +1 -0
- package/dist/interrupts/MindedInterruptSessionManager.js +162 -0
- package/dist/interrupts/MindedInterruptSessionManager.js.map +1 -0
- package/dist/interrupts/interruptSessionManagerFactory.d.ts +3 -0
- package/dist/interrupts/interruptSessionManagerFactory.d.ts.map +1 -0
- package/dist/interrupts/interruptSessionManagerFactory.js +56 -0
- package/dist/interrupts/interruptSessionManagerFactory.js.map +1 -0
- package/dist/llm/createLlmInstance.d.ts +3 -0
- package/dist/llm/createLlmInstance.d.ts.map +1 -0
- package/dist/llm/createLlmInstance.js +31 -0
- package/dist/llm/createLlmInstance.js.map +1 -0
- package/dist/nodes/addAppToolNode.d.ts +13 -0
- package/dist/nodes/addAppToolNode.d.ts.map +1 -0
- package/dist/nodes/addAppToolNode.js +87 -0
- package/dist/nodes/addAppToolNode.js.map +1 -0
- package/dist/nodes/addBrowserTaskNode.d.ts +13 -0
- package/dist/nodes/addBrowserTaskNode.d.ts.map +1 -0
- package/dist/nodes/addBrowserTaskNode.js +167 -0
- package/dist/nodes/addBrowserTaskNode.js.map +1 -0
- package/dist/nodes/addBrowserTaskRunNode.d.ts +13 -0
- package/dist/nodes/addBrowserTaskRunNode.d.ts.map +1 -0
- package/dist/nodes/addBrowserTaskRunNode.js +167 -0
- package/dist/nodes/addBrowserTaskRunNode.js.map +1 -0
- package/dist/nodes/addHumanInTheLoopNode.d.ts +9 -0
- package/dist/nodes/addHumanInTheLoopNode.d.ts.map +1 -0
- package/dist/nodes/addHumanInTheLoopNode.js +22 -0
- package/dist/nodes/addHumanInTheLoopNode.js.map +1 -0
- package/dist/nodes/addJumpToNode.d.ts +7 -0
- package/dist/nodes/addJumpToNode.d.ts.map +1 -0
- package/dist/nodes/addJumpToNode.js +24 -0
- package/dist/nodes/addJumpToNode.js.map +1 -0
- package/dist/nodes/addJunctionNode.d.ts +7 -0
- package/dist/nodes/addJunctionNode.d.ts.map +1 -0
- package/dist/nodes/addJunctionNode.js +20 -0
- package/dist/nodes/addJunctionNode.js.map +1 -0
- package/dist/nodes/addPromptNode.d.ts +18 -0
- package/dist/nodes/addPromptNode.d.ts.map +1 -0
- package/dist/nodes/addPromptNode.js +253 -0
- package/dist/nodes/addPromptNode.js.map +1 -0
- package/dist/nodes/addRpaNode.d.ts +18 -0
- package/dist/nodes/addRpaNode.d.ts.map +1 -0
- package/dist/nodes/addRpaNode.js +180 -0
- package/dist/nodes/addRpaNode.js.map +1 -0
- package/dist/nodes/addToolNode.d.ts +13 -0
- package/dist/nodes/addToolNode.d.ts.map +1 -0
- package/dist/nodes/addToolNode.js +67 -0
- package/dist/nodes/addToolNode.js.map +1 -0
- package/dist/nodes/addToolRunNode.d.ts +17 -0
- package/dist/nodes/addToolRunNode.d.ts.map +1 -0
- package/dist/nodes/addToolRunNode.js +59 -0
- package/dist/nodes/addToolRunNode.js.map +1 -0
- package/dist/nodes/addTriggerNode.d.ts +7 -0
- package/dist/nodes/addTriggerNode.d.ts.map +1 -0
- package/dist/nodes/addTriggerNode.js +25 -0
- package/dist/nodes/addTriggerNode.js.map +1 -0
- package/dist/nodes/compilePrompt.d.ts +5 -0
- package/dist/nodes/compilePrompt.d.ts.map +1 -0
- package/dist/nodes/compilePrompt.js +76 -0
- package/dist/nodes/compilePrompt.js.map +1 -0
- package/dist/nodes/nodeFactory.d.ts +16 -0
- package/dist/nodes/nodeFactory.d.ts.map +1 -0
- package/dist/nodes/nodeFactory.js +45 -0
- package/dist/nodes/nodeFactory.js.map +1 -0
- package/dist/nodes/rpaStepsExecutor.d.ts +5 -0
- package/dist/nodes/rpaStepsExecutor.d.ts.map +1 -0
- package/dist/nodes/rpaStepsExecutor.js +156 -0
- package/dist/nodes/rpaStepsExecutor.js.map +1 -0
- package/dist/platform/config.d.ts +16 -0
- package/dist/platform/config.d.ts.map +1 -0
- package/dist/platform/config.js +80 -0
- package/dist/platform/config.js.map +1 -0
- package/dist/platform/mindedCheckpointSaver.d.ts +10 -0
- package/dist/platform/mindedCheckpointSaver.d.ts.map +1 -0
- package/dist/platform/mindedCheckpointSaver.js +137 -0
- package/dist/platform/mindedCheckpointSaver.js.map +1 -0
- package/dist/platform/mindedConnection.d.ts +15 -0
- package/dist/platform/mindedConnection.d.ts.map +1 -0
- package/dist/platform/mindedConnection.js +254 -0
- package/dist/platform/mindedConnection.js.map +1 -0
- package/dist/platform/mindedConnectionTypes.d.ts +404 -0
- package/dist/platform/mindedConnectionTypes.d.ts.map +1 -0
- package/dist/platform/mindedConnectionTypes.js +51 -0
- package/dist/platform/mindedConnectionTypes.js.map +1 -0
- package/dist/platform/models/mindedChatOpenAI.d.ts +20 -0
- package/dist/platform/models/mindedChatOpenAI.d.ts.map +1 -0
- package/dist/platform/models/mindedChatOpenAI.js +32 -0
- package/dist/platform/models/mindedChatOpenAI.js.map +1 -0
- package/dist/platform/models/parallelWrapper.d.ts +17 -0
- package/dist/platform/models/parallelWrapper.d.ts.map +1 -0
- package/dist/platform/models/parallelWrapper.js +105 -0
- package/dist/platform/models/parallelWrapper.js.map +1 -0
- package/dist/platform/piiGateway/gateway.d.ts +14 -0
- package/dist/platform/piiGateway/gateway.d.ts.map +1 -0
- package/dist/platform/piiGateway/gateway.js +117 -0
- package/dist/platform/piiGateway/gateway.js.map +1 -0
- package/dist/platform/piiGateway/index.d.ts +3 -0
- package/dist/platform/piiGateway/index.d.ts.map +1 -0
- package/dist/platform/piiGateway/index.js +7 -0
- package/dist/platform/piiGateway/index.js.map +1 -0
- package/dist/platform/piiGateway/types.d.ts +27 -0
- package/dist/platform/piiGateway/types.d.ts.map +1 -0
- package/dist/platform/piiGateway/types.js +3 -0
- package/dist/platform/piiGateway/types.js.map +1 -0
- package/dist/platform/toolExecutor.d.ts +29 -0
- package/dist/platform/toolExecutor.d.ts.map +1 -0
- package/dist/platform/toolExecutor.js +84 -0
- package/dist/platform/toolExecutor.js.map +1 -0
- package/dist/platform/utils/parseAttachments.d.ts +14 -0
- package/dist/platform/utils/parseAttachments.d.ts.map +1 -0
- package/dist/platform/utils/parseAttachments.js +53 -0
- package/dist/platform/utils/parseAttachments.js.map +1 -0
- package/dist/platform/utils/tools.d.ts +6 -0
- package/dist/platform/utils/tools.d.ts.map +1 -0
- package/dist/platform/utils/tools.js +57 -0
- package/dist/platform/utils/tools.js.map +1 -0
- package/dist/playbooks/playbooks.d.ts +15 -0
- package/dist/playbooks/playbooks.d.ts.map +1 -0
- package/dist/playbooks/playbooks.js +208 -0
- package/dist/playbooks/playbooks.js.map +1 -0
- package/dist/toolsLibrary/classifier.d.ts +74 -0
- package/dist/toolsLibrary/classifier.d.ts.map +1 -0
- package/dist/toolsLibrary/classifier.js +256 -0
- package/dist/toolsLibrary/classifier.js.map +1 -0
- package/dist/toolsLibrary/extraction.d.ts +83 -0
- package/dist/toolsLibrary/extraction.d.ts.map +1 -0
- package/dist/toolsLibrary/extraction.js +328 -0
- package/dist/toolsLibrary/extraction.js.map +1 -0
- package/dist/toolsLibrary/index.d.ts +9 -0
- package/dist/toolsLibrary/index.d.ts.map +1 -0
- package/dist/toolsLibrary/index.js +46 -0
- package/dist/toolsLibrary/index.js.map +1 -0
- package/dist/toolsLibrary/parseDocument.d.ts +30 -0
- package/dist/toolsLibrary/parseDocument.d.ts.map +1 -0
- package/dist/toolsLibrary/parseDocument.js +119 -0
- package/dist/toolsLibrary/parseDocument.js.map +1 -0
- package/dist/triggers/triggerTypeToDefaultMessage.d.ts +4 -0
- package/dist/triggers/triggerTypeToDefaultMessage.d.ts.map +1 -0
- package/dist/triggers/triggerTypeToDefaultMessage.js +10 -0
- package/dist/triggers/triggerTypeToDefaultMessage.js.map +1 -0
- package/dist/types/Agent.types.d.ts +60 -0
- package/dist/types/Agent.types.d.ts.map +1 -0
- package/dist/types/Agent.types.js +9 -0
- package/dist/types/Agent.types.js.map +1 -0
- package/dist/types/Flows.types.d.ts +232 -0
- package/dist/types/Flows.types.d.ts.map +1 -0
- package/dist/types/Flows.types.js +65 -0
- package/dist/types/Flows.types.js.map +1 -0
- package/dist/types/LLM.types.d.ts +7 -0
- package/dist/types/LLM.types.d.ts.map +1 -0
- package/dist/types/LLM.types.js +11 -0
- package/dist/types/LLM.types.js.map +1 -0
- package/dist/types/LangGraph.types.d.ts +45 -0
- package/dist/types/LangGraph.types.d.ts.map +1 -0
- package/dist/types/LangGraph.types.js +77 -0
- package/dist/types/LangGraph.types.js.map +1 -0
- package/dist/types/Platform.types.d.ts +7 -0
- package/dist/types/Platform.types.d.ts.map +1 -0
- package/dist/types/Platform.types.js +11 -0
- package/dist/types/Platform.types.js.map +1 -0
- package/dist/types/Tools.types.d.ts +26 -0
- package/dist/types/Tools.types.d.ts.map +1 -0
- package/dist/types/Tools.types.js +3 -0
- package/dist/types/Tools.types.js.map +1 -0
- package/dist/types/Voice.types.d.ts +5 -0
- package/dist/types/Voice.types.d.ts.map +1 -0
- package/dist/types/Voice.types.js +3 -0
- package/dist/types/Voice.types.js.map +1 -0
- package/dist/utils/agentUtils.d.ts +5 -0
- package/dist/utils/agentUtils.d.ts.map +1 -0
- package/dist/utils/agentUtils.js +97 -0
- package/dist/utils/agentUtils.js.map +1 -0
- package/dist/utils/extractStateMemoryResponse.d.ts +5 -0
- package/dist/utils/extractStateMemoryResponse.d.ts.map +1 -0
- package/dist/utils/extractStateMemoryResponse.js +91 -0
- package/dist/utils/extractStateMemoryResponse.js.map +1 -0
- package/dist/utils/history.d.ts +4 -0
- package/dist/utils/history.d.ts.map +1 -0
- package/dist/utils/history.js +33 -0
- package/dist/utils/history.js.map +1 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +39 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/schemaUtils.d.ts +15 -0
- package/dist/utils/schemaUtils.d.ts.map +1 -0
- package/dist/utils/schemaUtils.js +56 -0
- package/dist/utils/schemaUtils.js.map +1 -0
- package/dist/utils/wait.d.ts +2 -0
- package/dist/utils/wait.d.ts.map +1 -0
- package/dist/utils/wait.js +6 -0
- package/dist/utils/wait.js.map +1 -0
- package/dist/voice/elevenLabsUtils.d.ts +65 -0
- package/dist/voice/elevenLabsUtils.d.ts.map +1 -0
- package/dist/voice/elevenLabsUtils.js +4 -0
- package/dist/voice/elevenLabsUtils.js.map +1 -0
- package/dist/voice/voiceSession.d.ts +37 -0
- package/dist/voice/voiceSession.d.ts.map +1 -0
- package/dist/voice/voiceSession.js +306 -0
- package/dist/voice/voiceSession.js.map +1 -0
- package/docs/.gitbook/assets/ADLC.png +0 -0
- package/docs/.gitbook/assets/PII-masking.png +0 -0
- package/docs/.gitbook/assets/image.png +0 -0
- package/docs/.gitbook/assets/on-prem.svg +4 -0
- package/docs/README.md +54 -0
- package/docs/SUMMARY.md +56 -0
- package/docs/examples/order-refund-flow.md +566 -0
- package/docs/getting-started/environment-configuration.md +158 -0
- package/docs/getting-started/installation.md +44 -0
- package/docs/getting-started/project-configuration.md +206 -0
- package/docs/getting-started/quick-start.md +262 -0
- package/docs/integrations/zendesk.md +554 -0
- package/docs/low-code-editor/edges.md +396 -0
- package/docs/low-code-editor/flows.md +74 -0
- package/docs/low-code-editor/nodes.md +367 -0
- package/docs/low-code-editor/playbooks.md +280 -0
- package/docs/low-code-editor/tools.md +358 -0
- package/docs/low-code-editor/triggers.md +182 -0
- package/docs/platform/on-prem.md +182 -0
- package/docs/platform/operator.md +89 -0
- package/docs/platform/pii-masking.md +221 -0
- package/docs/platform/scenarios.md +43 -0
- package/docs/platform/secrets.md +99 -0
- package/docs/platform/sso.md +27 -0
- package/docs/resources/your-first-eval.md +108 -0
- package/docs/sdk/agent-api.md +540 -0
- package/docs/sdk/debugging.md +80 -0
- package/docs/sdk/events.md +595 -0
- package/docs/sdk/logging.md +72 -0
- package/docs/sdk/memory.md +271 -0
- package/docs/sdk/parallel-llm.md +242 -0
- package/docs/sdk/vectorstore-query.md +60 -0
- package/docs/tooling/classifier.md +217 -0
- package/docs/tooling/document-processing.md +389 -0
- package/docs/tooling/extraction.md +78 -0
- package/docs/tooling/timers.md +61 -0
- package/package.json +73 -0
- package/src/agent.ts +1019 -0
- package/src/browserTask/executeBrowserTask.py +153 -0
- package/src/browserTask/executeBrowserTask.ts +253 -0
- package/src/browserTask/localBrowserTask.ts +300 -0
- package/src/browserTask/profile/Default/Extension Rules/000003.log +0 -0
- package/src/browserTask/profile/Default/Extension Scripts/000003.log +0 -0
- package/src/browserTask/profile/Default/Extension State/000003.log +0 -0
- package/src/browserTask/profile/Default/GCM Store/000003.log +0 -0
- package/src/browserTask/profile/Default/Local Storage/leveldb/000004.log +0 -0
- package/src/browserTask/profile/Default/Session Storage/000003.log +0 -0
- package/src/browserTask/profile/Default/Site Characteristics Database/000003.log +0 -0
- package/src/browserTask/profile/Default/Sync Data/LevelDB/000003.log +0 -0
- package/src/browserTask/profile/Default/shared_proto_db/000003.log +0 -0
- package/src/browserTask/profile/Default/shared_proto_db/metadata/000003.log +0 -0
- package/src/browserTask/types.ts +37 -0
- package/src/checkpointer/checkpointSaverFactory.ts +18 -0
- package/src/cli/index.ts +188 -0
- package/src/cli/lambdaHandlerTemplate.ts +78 -0
- package/src/cli/localOperatorSetup.ts +308 -0
- package/src/debugging/index.ts +1 -0
- package/src/debugging/llmCallbackHandler.ts +125 -0
- package/src/edges/createDirectEdge.ts +22 -0
- package/src/edges/createLogicalRouter.ts +182 -0
- package/src/edges/createPromptRouter.ts +213 -0
- package/src/edges/edgeFactory.ts +167 -0
- package/src/events/AgentEvents.ts +58 -0
- package/src/events/index.ts +3 -0
- package/src/index.ts +105 -0
- package/src/interfaces/zendesk.ts +212 -0
- package/src/internalTools/appActionRunnerTool.ts +68 -0
- package/src/internalTools/documentExtraction/documentExtraction.ts +804 -0
- package/src/internalTools/documentExtraction/types.ts +59 -0
- package/src/internalTools/libraryActionRunnerTool.ts +62 -0
- package/src/internalTools/timer.ts +125 -0
- package/src/internalTools/voice/escalateVoiceCall.ts +15 -0
- package/src/internalTools/voice/retell.ts +28 -0
- package/src/internalTools/voice/sendPlaceholderMessage.ts +27 -0
- package/src/interrupts/BaseInterruptSessionManager.ts +80 -0
- package/src/interrupts/MemoryInterruptSessionManager.ts +63 -0
- package/src/interrupts/MindedInterruptSessionManager.ts +163 -0
- package/src/interrupts/interruptSessionManagerFactory.ts +20 -0
- package/src/llm/createLlmInstance.ts +33 -0
- package/src/nodes/addAppToolNode.ts +111 -0
- package/src/nodes/addBrowserTaskNode.ts +191 -0
- package/src/nodes/addBrowserTaskRunNode.ts +190 -0
- package/src/nodes/addHumanInTheLoopNode.ts +26 -0
- package/src/nodes/addJumpToNode.ts +26 -0
- package/src/nodes/addJunctionNode.ts +21 -0
- package/src/nodes/addPromptNode.ts +305 -0
- package/src/nodes/addRpaNode.ts +217 -0
- package/src/nodes/addToolNode.ts +84 -0
- package/src/nodes/addToolRunNode.ts +80 -0
- package/src/nodes/addTriggerNode.ts +27 -0
- package/src/nodes/compilePrompt.ts +44 -0
- package/src/nodes/nodeFactory.ts +61 -0
- package/src/nodes/rpaStepsExecutor.ts +175 -0
- package/src/platform/config.ts +89 -0
- package/src/platform/mindedCheckpointSaver.ts +146 -0
- package/src/platform/mindedConnection.ts +250 -0
- package/src/platform/mindedConnectionTypes.ts +495 -0
- package/src/platform/models/mindedChatOpenAI.ts +49 -0
- package/src/platform/models/parallelWrapper.ts +141 -0
- package/src/platform/piiGateway/gateway.ts +103 -0
- package/src/platform/piiGateway/index.ts +5 -0
- package/src/platform/piiGateway/types.ts +29 -0
- package/src/platform/toolExecutor.ts +106 -0
- package/src/platform/utils/parseAttachments.ts +56 -0
- package/src/platform/utils/tools.ts +55 -0
- package/src/playbooks/playbooks.ts +200 -0
- package/src/toolsLibrary/classifier.ts +326 -0
- package/src/toolsLibrary/extraction.ts +393 -0
- package/src/toolsLibrary/index.ts +10 -0
- package/src/toolsLibrary/parseDocument.ts +129 -0
- package/src/triggers/triggerTypeToDefaultMessage.ts +9 -0
- package/src/types/Agent.types.ts +73 -0
- package/src/types/Flows.types.ts +262 -0
- package/src/types/LLM.types.ts +15 -0
- package/src/types/LangGraph.types.ts +86 -0
- package/src/types/Platform.types.ts +6 -0
- package/src/types/Tools.types.ts +28 -0
- package/src/types/Voice.types.ts +4 -0
- package/src/utils/agentUtils.ts +69 -0
- package/src/utils/history.ts +38 -0
- package/src/utils/logger.ts +38 -0
- package/src/utils/schemaUtils.ts +68 -0
- package/src/utils/wait.ts +1 -0
- package/src/voice/elevenLabsUtils.ts +81 -0
- package/src/voice/voiceSession.ts +309 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
+
}
|
package/src/cli/index.ts
ADDED
|
@@ -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';
|