@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
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ZodType as ZodSchema, ZodTypeAny } from 'zod';
|
|
2
|
+
|
|
3
|
+
export interface DocumentProcessorConfig {
|
|
4
|
+
llamaCloudApiKey?: string;
|
|
5
|
+
useBase64?: boolean;
|
|
6
|
+
maxImageWidth?: number;
|
|
7
|
+
imageQuality?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface DocumentExtractionOptions {
|
|
10
|
+
documentPath?: string;
|
|
11
|
+
documentContent?: Buffer | string;
|
|
12
|
+
documentUrl?: string;
|
|
13
|
+
schema?: ZodSchema<any> | ZodTypeAny;
|
|
14
|
+
llmConfig?: {
|
|
15
|
+
model?: string;
|
|
16
|
+
temperature?: number;
|
|
17
|
+
};
|
|
18
|
+
systemPrompt?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface DocumentProcessingResult<T = any> {
|
|
21
|
+
data: T;
|
|
22
|
+
metadata: {
|
|
23
|
+
fileSize?: number;
|
|
24
|
+
fileType: string;
|
|
25
|
+
processingTime: number;
|
|
26
|
+
contentLength: number;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export const SUPPORTED_DOCUMENT_TYPES = [
|
|
30
|
+
// Images
|
|
31
|
+
'.jpg',
|
|
32
|
+
'.jpeg',
|
|
33
|
+
'.png',
|
|
34
|
+
'.gif',
|
|
35
|
+
'.bmp',
|
|
36
|
+
'.webp',
|
|
37
|
+
'.tiff',
|
|
38
|
+
// Documents
|
|
39
|
+
'.pdf',
|
|
40
|
+
'.doc',
|
|
41
|
+
'.docx',
|
|
42
|
+
'.txt',
|
|
43
|
+
'.rtf',
|
|
44
|
+
'.odt',
|
|
45
|
+
// Spreadsheets
|
|
46
|
+
'.xls',
|
|
47
|
+
'.xlsx',
|
|
48
|
+
'.csv',
|
|
49
|
+
'.ods',
|
|
50
|
+
// Presentations
|
|
51
|
+
'.ppt',
|
|
52
|
+
'.pptx',
|
|
53
|
+
'.odp',
|
|
54
|
+
// Other formats
|
|
55
|
+
'.html',
|
|
56
|
+
'.htm',
|
|
57
|
+
'.md',
|
|
58
|
+
'.xml',
|
|
59
|
+
];
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Tool, ToolExecuteInput } from '../types/Tools.types';
|
|
2
|
+
import { tools } from '../toolsLibrary';
|
|
3
|
+
import { logger } from '../utils/logger';
|
|
4
|
+
|
|
5
|
+
const libraryActionRunnerToolCreator = (actionKey: string, nodeTitle: string): Tool<any, any> => {
|
|
6
|
+
// Find the corresponding library tool by key name (e.g., "parseDocument")
|
|
7
|
+
const libraryTool = (tools as any)[actionKey];
|
|
8
|
+
|
|
9
|
+
if (!libraryTool?.default) {
|
|
10
|
+
throw new Error(`Library tool '${actionKey}' not found in toolsLibrary`);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (!libraryTool.schema) {
|
|
14
|
+
throw new Error(`Schema not found for library tool '${actionKey}'. Make sure the tool exports a 'schema' object.`);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const zodSchema = libraryTool.schema;
|
|
18
|
+
|
|
19
|
+
// Create a description using the library tool's own description
|
|
20
|
+
const description = libraryTool.default.description || `Run ${nodeTitle} action from Minded Tools library.`;
|
|
21
|
+
|
|
22
|
+
const tool = {
|
|
23
|
+
name: nodeTitle,
|
|
24
|
+
description,
|
|
25
|
+
input: zodSchema,
|
|
26
|
+
execute: async ({ input, state, agent }: ToolExecuteInput<typeof zodSchema>) => {
|
|
27
|
+
try {
|
|
28
|
+
// Find the corresponding library tool
|
|
29
|
+
const libraryTool = Object.values(tools).find((toolModule) => toolModule.default && toolModule.default.name === actionKey);
|
|
30
|
+
|
|
31
|
+
if (!libraryTool?.default) {
|
|
32
|
+
throw new Error(`Library tool '${actionKey}' not found in toolsLibrary`);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
logger.debug({
|
|
36
|
+
msg: `[Tool] Executing library tool`,
|
|
37
|
+
toolName: actionKey,
|
|
38
|
+
nodeTitle,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// Execute the library tool directly
|
|
42
|
+
const result = await libraryTool.default.execute({ input, state, agent });
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
result: result?.result,
|
|
46
|
+
};
|
|
47
|
+
} catch (err) {
|
|
48
|
+
logger.error({
|
|
49
|
+
message: `[Tool] Error executing library tool`,
|
|
50
|
+
err,
|
|
51
|
+
toolName: actionKey,
|
|
52
|
+
nodeTitle,
|
|
53
|
+
});
|
|
54
|
+
throw err;
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
return tool;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export default libraryActionRunnerToolCreator;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import * as mindedConnection from '../platform/mindedConnection';
|
|
2
|
+
import { mindedConnectionSocketMessageType, TimerResetResponse, TimerCancelResponse } from '../platform/mindedConnectionTypes';
|
|
3
|
+
import { State } from '../types/LangGraph.types';
|
|
4
|
+
|
|
5
|
+
// Store timer handlers by timer name (one handler per timer name)
|
|
6
|
+
export const timerHandlers = new Map<
|
|
7
|
+
string,
|
|
8
|
+
{
|
|
9
|
+
handler: (params: { sessionId: string; payload: Record<string, any>; state: State<any> }) => void | Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
>();
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Reset or set a timer for a specific session.
|
|
15
|
+
* When the timer expires, the registered timer handler will be called.
|
|
16
|
+
*
|
|
17
|
+
* @param params - The timer configuration
|
|
18
|
+
* @param params.sessionId - The session ID to associate the timer with
|
|
19
|
+
* @param params.seconds - Number of seconds until the timer expires
|
|
20
|
+
* @param params.timerName - Unique name for this timer (used for cancellation and identification)
|
|
21
|
+
* @param params.payload - Additional data to pass to the timer handler when it triggers
|
|
22
|
+
* @returns Promise resolving to timer reset response
|
|
23
|
+
* @throws {Error} When the Minded connection is not established
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import { resetTimer } from '@minded-ai/mindedjs';
|
|
28
|
+
*
|
|
29
|
+
* // Set a timer to follow up in 10 seconds
|
|
30
|
+
* await resetTimer({
|
|
31
|
+
* sessionId: 'session-123',
|
|
32
|
+
* seconds: 10,
|
|
33
|
+
* timerName: 'followup',
|
|
34
|
+
* payload: {
|
|
35
|
+
* message: 'Are you still there?'
|
|
36
|
+
* }
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export async function resetTimer({
|
|
41
|
+
sessionId,
|
|
42
|
+
seconds,
|
|
43
|
+
timerName,
|
|
44
|
+
payload = {},
|
|
45
|
+
}: {
|
|
46
|
+
sessionId: string;
|
|
47
|
+
seconds: number;
|
|
48
|
+
timerName: string;
|
|
49
|
+
payload?: Record<string, any>;
|
|
50
|
+
}): Promise<TimerResetResponse> {
|
|
51
|
+
return await mindedConnection.awaitEmit(mindedConnectionSocketMessageType.TIMER_RESET, {
|
|
52
|
+
sessionId,
|
|
53
|
+
seconds,
|
|
54
|
+
timerName,
|
|
55
|
+
eventArgs: payload,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Cancel an existing timer for a specific session.
|
|
61
|
+
*
|
|
62
|
+
* @param sessionId - The session ID the timer is associated with
|
|
63
|
+
* @param timerName - The name of the timer to cancel
|
|
64
|
+
* @returns Promise resolving to timer cancel response
|
|
65
|
+
* @throws {Error} When the Minded connection is not established
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* import { cancelTimer } from '@minded-ai/mindedjs';
|
|
70
|
+
*
|
|
71
|
+
* // Cancel a previously set timer
|
|
72
|
+
* await cancelTimer('session-123', 'followup');
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export async function cancelTimer(sessionId: string, timerName: string): Promise<TimerCancelResponse> {
|
|
76
|
+
if (!mindedConnection.isConnected()) {
|
|
77
|
+
throw new Error('Minded connection is not established when trying to cancel timer');
|
|
78
|
+
}
|
|
79
|
+
return await mindedConnection.awaitEmit(mindedConnectionSocketMessageType.TIMER_CANCEL, {
|
|
80
|
+
sessionId,
|
|
81
|
+
timerName,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Register a handler for timer trigger events for a specific timer name.
|
|
87
|
+
* The handler will be called when the specified timer expires for any session.
|
|
88
|
+
*
|
|
89
|
+
* Note: Only one handler per timer name is supported. Calling this function multiple times
|
|
90
|
+
* with the same timer name will replace the previous handler.
|
|
91
|
+
*
|
|
92
|
+
* @param params - The configuration for the timer handler
|
|
93
|
+
* @param params.timerName - The name of the timer to handle
|
|
94
|
+
* @param params.handler - Function to call when the timer triggers
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* import { onTimer } from '@minded-ai/mindedjs';
|
|
99
|
+
*
|
|
100
|
+
* // Register a handler for the 'followup' timer
|
|
101
|
+
* onTimer({
|
|
102
|
+
* timerName: 'followup',
|
|
103
|
+
* handler: async ({ sessionId, payload }) => {
|
|
104
|
+
* logger.info({ msg: `Followup timer triggered for session ${sessionId}` });
|
|
105
|
+
*
|
|
106
|
+
* // Handle the followup timer
|
|
107
|
+
* await agent.invoke({
|
|
108
|
+
* triggerName: 'timerFollowup',
|
|
109
|
+
* triggerBody: { message: payload.message },
|
|
110
|
+
* sessionId
|
|
111
|
+
* });
|
|
112
|
+
* }
|
|
113
|
+
* });
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export function onTimer({
|
|
117
|
+
timerName,
|
|
118
|
+
handler,
|
|
119
|
+
}: {
|
|
120
|
+
timerName: string;
|
|
121
|
+
handler: (params: { sessionId: string; payload: Record<string, any>; state: State<any> }) => void | Promise<void>;
|
|
122
|
+
}): void {
|
|
123
|
+
// Set the handler for this timer name (replaces any existing handler)
|
|
124
|
+
timerHandlers.set(timerName, { handler });
|
|
125
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as mindedConnection from '../../platform/mindedConnection';
|
|
2
|
+
import { mindedConnectionSocketMessageType } from '../../platform/mindedConnectionTypes';
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Escalate the voice session
|
|
6
|
+
* @param parameters - The parameters to escalate the voice session. Parameters will be handeled differently according to the VOIP provider.
|
|
7
|
+
*/
|
|
8
|
+
export const escalateVoiceCall = (sessionId: string, parameters: any): void => {
|
|
9
|
+
mindedConnection.emit(mindedConnectionSocketMessageType.VOICE_ESCALATE, {
|
|
10
|
+
type: mindedConnectionSocketMessageType.VOICE_ESCALATE,
|
|
11
|
+
sessionId,
|
|
12
|
+
timestamp: Date.now(),
|
|
13
|
+
parameters,
|
|
14
|
+
});
|
|
15
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as mindedConnection from '../../platform/mindedConnection';
|
|
2
|
+
import { mindedConnectionSocketMessageType, TimerResetResponse, RetellGetCallResponse } from '../../platform/mindedConnectionTypes';
|
|
3
|
+
|
|
4
|
+
export async function retellCall({
|
|
5
|
+
sessionId,
|
|
6
|
+
callName,
|
|
7
|
+
callAgentId,
|
|
8
|
+
vars = {},
|
|
9
|
+
}: {
|
|
10
|
+
sessionId: string;
|
|
11
|
+
callName: string;
|
|
12
|
+
callAgentId: string;
|
|
13
|
+
vars?: Record<string, any>;
|
|
14
|
+
}): Promise<TimerResetResponse> {
|
|
15
|
+
return await mindedConnection.awaitEmit(mindedConnectionSocketMessageType.RETELL_CALL, {
|
|
16
|
+
sessionId,
|
|
17
|
+
callName,
|
|
18
|
+
callAgentId,
|
|
19
|
+
vars,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export async function retellGetCall({ sessionId, callId }: { sessionId: string; callId: string }): Promise<RetellGetCallResponse> {
|
|
24
|
+
return await mindedConnection.awaitEmit(mindedConnectionSocketMessageType.RETELL_GET_CALL, {
|
|
25
|
+
sessionId,
|
|
26
|
+
callId,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as mindedConnection from '../../platform/mindedConnection';
|
|
2
|
+
import { mindedConnectionSocketMessageType } from '../../platform/mindedConnectionTypes';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Send a placeholder message to the dashboard voice session.
|
|
6
|
+
* This is typically used for voice sessions to provide immediate feedback to users.
|
|
7
|
+
*
|
|
8
|
+
* @param params - The parameters for sending the placeholder message
|
|
9
|
+
* @param params.sessionId - The session ID of the voice session
|
|
10
|
+
* @param params.message - The placeholder message to send
|
|
11
|
+
* @throws {Error} When the Minded connection is not established
|
|
12
|
+
*/
|
|
13
|
+
export async function sendPlaceholderMessage(params: { sessionId: string; message: string }): Promise<void> {
|
|
14
|
+
const { sessionId, message } = params;
|
|
15
|
+
|
|
16
|
+
if (!mindedConnection.isConnected()) {
|
|
17
|
+
throw new Error('Minded connection is not established when trying to send placeholder message');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const connection = mindedConnection;
|
|
21
|
+
connection.emit(mindedConnectionSocketMessageType.VOICE_PLACEHOLDER_MESSAGES, {
|
|
22
|
+
sessionId,
|
|
23
|
+
message,
|
|
24
|
+
timestamp: Date.now(),
|
|
25
|
+
type: mindedConnectionSocketMessageType.VOICE_PLACEHOLDER_MESSAGES,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { State } from '../types/LangGraph.types';
|
|
2
|
+
import { GraphInterrupt } from '@langchain/langgraph';
|
|
3
|
+
import { logger } from '../utils/logger';
|
|
4
|
+
import { TriggerEvent } from '../types/Agent.types';
|
|
5
|
+
|
|
6
|
+
export enum InterruptType {
|
|
7
|
+
NEW_TRIGGERS = 'NEW_TRIGGERS',
|
|
8
|
+
HUMAN_IN_THE_LOOP = 'HUMAN_IN_THE_LOOP',
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH = 'QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH';
|
|
12
|
+
|
|
13
|
+
export type QueuedMessage = TriggerEvent;
|
|
14
|
+
|
|
15
|
+
export interface InterruptPayload {
|
|
16
|
+
type: InterruptType;
|
|
17
|
+
updateStateObject?: State;
|
|
18
|
+
id?: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface InterruptSessionManager {
|
|
22
|
+
isProcessed(sessionId: string): boolean | Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Atomically attempts to acquire a lock for the given session.
|
|
25
|
+
* This method should only succeed if the session is not already being processed.
|
|
26
|
+
*
|
|
27
|
+
* @param sessionId - The session ID to lock
|
|
28
|
+
* @returns true if the lock was successfully acquired, false if the session is already locked
|
|
29
|
+
*/
|
|
30
|
+
lock(sessionId: string): boolean | Promise<boolean>;
|
|
31
|
+
release(sessionId: string): void | Promise<void>;
|
|
32
|
+
enqueueMessage(sessionId: string, message: QueuedMessage): void | Promise<void>;
|
|
33
|
+
dequeueAll(sessionId: string): QueuedMessage[] | Promise<QueuedMessage[]>;
|
|
34
|
+
dequeue(sessionId: string): QueuedMessage | null | Promise<QueuedMessage | null>;
|
|
35
|
+
checkQueueAndInterrupt(sessionId: string, updateStateObject?: State): Promise<boolean>;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export abstract class BaseInterruptSessionManager implements InterruptSessionManager {
|
|
39
|
+
// Abstract methods that subclasses must implement for queue management
|
|
40
|
+
abstract isProcessed(sessionId: string): boolean | Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Atomically attempts to acquire a lock for the given session.
|
|
43
|
+
* This method should only succeed if the session is not already being processed.
|
|
44
|
+
* Implementations must ensure this operation is atomic to prevent race conditions.
|
|
45
|
+
*
|
|
46
|
+
* @param sessionId - The session ID to lock
|
|
47
|
+
* @returns true if the lock was successfully acquired, false if the session is already locked
|
|
48
|
+
*/
|
|
49
|
+
abstract lock(sessionId: string): boolean | Promise<boolean>;
|
|
50
|
+
abstract release(sessionId: string): void | Promise<void>;
|
|
51
|
+
abstract enqueueMessage(sessionId: string, message: QueuedMessage): void | Promise<void>;
|
|
52
|
+
abstract dequeueAll(sessionId: string): QueuedMessage[] | Promise<QueuedMessage[]>;
|
|
53
|
+
abstract dequeue(sessionId: string): QueuedMessage | null | Promise<QueuedMessage | null>;
|
|
54
|
+
|
|
55
|
+
// Abstract method to check if queue has messages - this is the only queue-specific part
|
|
56
|
+
protected abstract hasQueuedMessages(sessionId: string): boolean | Promise<boolean>;
|
|
57
|
+
protected abstract getQueuedMessages(sessionId: string): QueuedMessage[] | Promise<QueuedMessage[]>;
|
|
58
|
+
|
|
59
|
+
// Common implementation of checkQueueAndInterrupt
|
|
60
|
+
async checkQueueAndInterrupt(sessionId: string, updateStateObject?: State): Promise<boolean> {
|
|
61
|
+
if (await this.hasQueuedMessages(sessionId)) {
|
|
62
|
+
logger.trace({ msg: 'graph has queued messagess, interrupting graph', sessionId });
|
|
63
|
+
|
|
64
|
+
// Interrupt the graph with NEW_TRIGGERS flag and optional updateStateObject
|
|
65
|
+
const interruptPayload: InterruptPayload = { type: InterruptType.NEW_TRIGGERS };
|
|
66
|
+
if (updateStateObject) {
|
|
67
|
+
interruptPayload.updateStateObject = updateStateObject;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
throw new GraphInterrupt([
|
|
71
|
+
{
|
|
72
|
+
value: interruptPayload,
|
|
73
|
+
when: 'during',
|
|
74
|
+
resumable: true,
|
|
75
|
+
},
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { BaseInterruptSessionManager, QueuedMessage, QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH } from './BaseInterruptSessionManager';
|
|
2
|
+
|
|
3
|
+
export class MemoryInterruptSessionManager extends BaseInterruptSessionManager {
|
|
4
|
+
private sessionProcessing: Map<string, boolean> = new Map();
|
|
5
|
+
private sessionMessageQueues: Map<string, QueuedMessage[]> = new Map();
|
|
6
|
+
|
|
7
|
+
isProcessed(sessionId: string): boolean {
|
|
8
|
+
return this.sessionProcessing.get(sessionId) || false;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
lock(sessionId: string): boolean {
|
|
12
|
+
const isCurrentlyProcessed = this.sessionProcessing.get(sessionId) || false;
|
|
13
|
+
if (isCurrentlyProcessed) {
|
|
14
|
+
return false; // Could not acquire lock
|
|
15
|
+
}
|
|
16
|
+
this.sessionProcessing.set(sessionId, true);
|
|
17
|
+
return true; // Successfully acquired lock
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
release(sessionId: string): void {
|
|
21
|
+
this.sessionProcessing.delete(sessionId);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
enqueueMessage(sessionId: string, message: QueuedMessage): void {
|
|
25
|
+
if (!this.sessionMessageQueues.has(sessionId)) {
|
|
26
|
+
this.sessionMessageQueues.set(sessionId, []);
|
|
27
|
+
}
|
|
28
|
+
this.sessionMessageQueues.get(sessionId)!.push(message);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
dequeueAll(sessionId: string): QueuedMessage[] {
|
|
32
|
+
const messages = this.sessionMessageQueues.get(sessionId) || [];
|
|
33
|
+
const result = [...messages];
|
|
34
|
+
this.sessionMessageQueues.set(sessionId, []);
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
dequeue(sessionId: string): QueuedMessage | null {
|
|
39
|
+
const messages = this.sessionMessageQueues.get(sessionId) || [];
|
|
40
|
+
if (messages.length === 0) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const firstMessage = messages.shift()!;
|
|
44
|
+
this.sessionMessageQueues.set(sessionId, messages);
|
|
45
|
+
|
|
46
|
+
// If the dequeued message has the special trigger name, recursively dequeue the next one
|
|
47
|
+
if (firstMessage.triggerName === QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH) {
|
|
48
|
+
return this.dequeue(sessionId);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return firstMessage;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Implementation of abstract methods from BaseInterruptSessionManager
|
|
55
|
+
protected hasQueuedMessages(sessionId: string): boolean {
|
|
56
|
+
const queue = this.sessionMessageQueues.get(sessionId) || [];
|
|
57
|
+
return queue.length > 0;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
protected getQueuedMessages(sessionId: string): QueuedMessage[] {
|
|
61
|
+
return this.sessionMessageQueues.get(sessionId) || [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { BaseInterruptSessionManager, QueuedMessage, QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH } from './BaseInterruptSessionManager';
|
|
2
|
+
import * as mindedConnection from '../platform/mindedConnection';
|
|
3
|
+
import { logger } from '../utils/logger';
|
|
4
|
+
import {
|
|
5
|
+
mindedConnectionSocketMessageType,
|
|
6
|
+
InterruptSessionIsProcessedRequest,
|
|
7
|
+
InterruptSessionIsProcessedResponse,
|
|
8
|
+
InterruptSessionLockRequest,
|
|
9
|
+
InterruptSessionLockResponse,
|
|
10
|
+
InterruptSessionReleaseRequest,
|
|
11
|
+
InterruptSessionReleaseResponse,
|
|
12
|
+
InterruptSessionEnqueueRequest,
|
|
13
|
+
InterruptSessionEnqueueResponse,
|
|
14
|
+
InterruptSessionDequeueAllRequest,
|
|
15
|
+
InterruptSessionDequeueAllResponse,
|
|
16
|
+
InterruptSessionDequeueRequest,
|
|
17
|
+
InterruptSessionDequeueResponse,
|
|
18
|
+
InterruptSessionHasMessagesRequest,
|
|
19
|
+
InterruptSessionHasMessagesResponse,
|
|
20
|
+
InterruptSessionGetMessagesRequest,
|
|
21
|
+
InterruptSessionGetMessagesResponse,
|
|
22
|
+
} from '../platform/mindedConnectionTypes';
|
|
23
|
+
|
|
24
|
+
export class MindedInterruptSessionManager extends BaseInterruptSessionManager {
|
|
25
|
+
constructor() {
|
|
26
|
+
super();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async isProcessed(sessionId: string): Promise<boolean> {
|
|
30
|
+
try {
|
|
31
|
+
const response = await mindedConnection.awaitEmit<InterruptSessionIsProcessedRequest, InterruptSessionIsProcessedResponse>(
|
|
32
|
+
mindedConnectionSocketMessageType.INTERRUPT_SESSION_IS_PROCESSED,
|
|
33
|
+
{
|
|
34
|
+
type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_IS_PROCESSED,
|
|
35
|
+
sessionId,
|
|
36
|
+
},
|
|
37
|
+
);
|
|
38
|
+
return response.isProcessed ?? false;
|
|
39
|
+
} catch (err) {
|
|
40
|
+
logger.error({ message: 'Error checking if session is processed', err });
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async lock(sessionId: string): Promise<boolean> {
|
|
46
|
+
try {
|
|
47
|
+
const response = await mindedConnection.awaitEmit<InterruptSessionLockRequest, InterruptSessionLockResponse>(
|
|
48
|
+
mindedConnectionSocketMessageType.INTERRUPT_SESSION_LOCK,
|
|
49
|
+
{
|
|
50
|
+
type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_LOCK,
|
|
51
|
+
sessionId,
|
|
52
|
+
},
|
|
53
|
+
);
|
|
54
|
+
return response.lockAcquired ?? false;
|
|
55
|
+
} catch (err) {
|
|
56
|
+
logger.error({ message: 'Error locking session', err });
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async release(sessionId: string): Promise<void> {
|
|
62
|
+
try {
|
|
63
|
+
await mindedConnection.awaitEmit<InterruptSessionReleaseRequest, InterruptSessionReleaseResponse>(
|
|
64
|
+
mindedConnectionSocketMessageType.INTERRUPT_SESSION_RELEASE,
|
|
65
|
+
{
|
|
66
|
+
type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_RELEASE,
|
|
67
|
+
sessionId,
|
|
68
|
+
},
|
|
69
|
+
);
|
|
70
|
+
} catch (err) {
|
|
71
|
+
logger.error({ message: 'Error releasing session', err });
|
|
72
|
+
throw err;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
async enqueueMessage(sessionId: string, message: QueuedMessage): Promise<void> {
|
|
77
|
+
try {
|
|
78
|
+
await mindedConnection.awaitEmit<InterruptSessionEnqueueRequest, InterruptSessionEnqueueResponse>(
|
|
79
|
+
mindedConnectionSocketMessageType.INTERRUPT_SESSION_ENQUEUE,
|
|
80
|
+
{
|
|
81
|
+
type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_ENQUEUE,
|
|
82
|
+
sessionId,
|
|
83
|
+
message,
|
|
84
|
+
},
|
|
85
|
+
);
|
|
86
|
+
} catch (err) {
|
|
87
|
+
logger.error({ message: 'Error enqueuing message', err });
|
|
88
|
+
throw err;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
async dequeueAll(sessionId: string): Promise<QueuedMessage[]> {
|
|
93
|
+
try {
|
|
94
|
+
const response = await mindedConnection.awaitEmit<InterruptSessionDequeueAllRequest, InterruptSessionDequeueAllResponse>(
|
|
95
|
+
mindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE_ALL,
|
|
96
|
+
{
|
|
97
|
+
type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE_ALL,
|
|
98
|
+
sessionId,
|
|
99
|
+
},
|
|
100
|
+
);
|
|
101
|
+
return response.messages ?? [];
|
|
102
|
+
} catch (err) {
|
|
103
|
+
logger.error({ message: 'Error dequeuing all messages', err });
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
async dequeue(sessionId: string): Promise<QueuedMessage | null> {
|
|
109
|
+
try {
|
|
110
|
+
const response = await mindedConnection.awaitEmit<InterruptSessionDequeueRequest, InterruptSessionDequeueResponse>(
|
|
111
|
+
mindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE,
|
|
112
|
+
{
|
|
113
|
+
type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE,
|
|
114
|
+
sessionId,
|
|
115
|
+
},
|
|
116
|
+
);
|
|
117
|
+
const message = response.message ?? null;
|
|
118
|
+
|
|
119
|
+
// If the dequeued message has the special trigger name, recursively dequeue the next one
|
|
120
|
+
if (message && message.triggerName === QUEUE_INTERRUPT_DETECTED_BEFORE_SPEECH) {
|
|
121
|
+
return this.dequeue(sessionId);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return message;
|
|
125
|
+
} catch (err) {
|
|
126
|
+
logger.error({ message: 'Error dequeuing message', err });
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Implementation of abstract methods from BaseInterruptSessionManager
|
|
132
|
+
protected async hasQueuedMessages(sessionId: string): Promise<boolean> {
|
|
133
|
+
try {
|
|
134
|
+
const response = await mindedConnection.awaitEmit<InterruptSessionHasMessagesRequest, InterruptSessionHasMessagesResponse>(
|
|
135
|
+
mindedConnectionSocketMessageType.INTERRUPT_SESSION_HAS_MESSAGES,
|
|
136
|
+
{
|
|
137
|
+
type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_HAS_MESSAGES,
|
|
138
|
+
sessionId,
|
|
139
|
+
},
|
|
140
|
+
);
|
|
141
|
+
return response.hasMessages ?? false;
|
|
142
|
+
} catch (err) {
|
|
143
|
+
logger.error({ message: 'Error checking if session has messages', err });
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
protected async getQueuedMessages(sessionId: string): Promise<QueuedMessage[]> {
|
|
149
|
+
try {
|
|
150
|
+
const response = await mindedConnection.awaitEmit<InterruptSessionGetMessagesRequest, InterruptSessionGetMessagesResponse>(
|
|
151
|
+
mindedConnectionSocketMessageType.INTERRUPT_SESSION_GET_MESSAGES,
|
|
152
|
+
{
|
|
153
|
+
type: mindedConnectionSocketMessageType.INTERRUPT_SESSION_GET_MESSAGES,
|
|
154
|
+
sessionId,
|
|
155
|
+
},
|
|
156
|
+
);
|
|
157
|
+
return response.messages ?? [];
|
|
158
|
+
} catch (err) {
|
|
159
|
+
logger.error({ message: 'Error getting queued messages', err });
|
|
160
|
+
return [];
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { InterruptSessionManager } from './BaseInterruptSessionManager';
|
|
2
|
+
import { MemoryInterruptSessionManager } from './MemoryInterruptSessionManager';
|
|
3
|
+
import { MindedInterruptSessionManager } from './MindedInterruptSessionManager';
|
|
4
|
+
import * as mindedConnection from '../platform/mindedConnection';
|
|
5
|
+
import { getConfig } from '../platform/config';
|
|
6
|
+
import { logger } from '../utils/logger';
|
|
7
|
+
|
|
8
|
+
export function createInterruptSessionManager(): InterruptSessionManager {
|
|
9
|
+
const { runLocally } = getConfig();
|
|
10
|
+
if (runLocally) {
|
|
11
|
+
logger.info({ msg: '[Agent] Using memory interrupt session manager' });
|
|
12
|
+
return new MemoryInterruptSessionManager();
|
|
13
|
+
} else {
|
|
14
|
+
if (!mindedConnection.isConnected()) {
|
|
15
|
+
throw new Error('MindedConnection is required for platform interrupt session manager');
|
|
16
|
+
}
|
|
17
|
+
logger.info({ msg: '[Agent] Using Minded interrupt session manager' });
|
|
18
|
+
return new MindedInterruptSessionManager();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { LLMConfig, LLMProviders, LLMProvider } from '../types/LLM.types';
|
|
2
|
+
import { createParallelWrapper, BaseParallelChatFields } from '../platform/models/parallelWrapper';
|
|
3
|
+
|
|
4
|
+
export const createLlmInstance = (llmConfig: LLMConfig) => {
|
|
5
|
+
const { name, properties } = llmConfig;
|
|
6
|
+
const LLMClass = LLMProviders[name as LLMProvider];
|
|
7
|
+
if (!LLMClass) {
|
|
8
|
+
throw new Error(`Unsupported LLM provider: ${name}`);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// Create the base LLM instance
|
|
12
|
+
const llmInstance = new LLMClass(properties);
|
|
13
|
+
|
|
14
|
+
// Check if parallel configuration is present
|
|
15
|
+
const hasParallelConfig = properties.numParallelRequests && properties.numParallelRequests > 1;
|
|
16
|
+
|
|
17
|
+
// For MindedChatOpenAI, parallel functionality is handled on the backend
|
|
18
|
+
if (name === 'MindedChatOpenAI') {
|
|
19
|
+
return llmInstance;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// For other LLM providers, apply client-side parallel wrapper if configured
|
|
23
|
+
if (hasParallelConfig) {
|
|
24
|
+
const parallelOptions: BaseParallelChatFields = {
|
|
25
|
+
numParallelRequests: properties.numParallelRequests,
|
|
26
|
+
logTimings: properties.logTimings,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return createParallelWrapper(llmInstance, parallelOptions);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return llmInstance;
|
|
33
|
+
};
|