@minded-ai/mindedjs 1.0.103-beta-1 → 1.0.103-beta-2
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/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +29 -16
- package/dist/agent.js.map +1 -1
- package/dist/browserTask/executeBrowserTask.d.ts +12 -0
- package/dist/browserTask/executeBrowserTask.d.ts.map +1 -0
- package/dist/browserTask/executeBrowserTask.js +181 -0
- package/dist/browserTask/executeBrowserTask.js.map +1 -0
- package/dist/checkpointer/checkpointSaverFactory.js +1 -1
- package/dist/checkpointer/checkpointSaverFactory.js.map +1 -1
- package/dist/cli/index.js +14 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/edges/createDirectEdge.d.ts +2 -1
- package/dist/edges/createDirectEdge.d.ts.map +1 -1
- package/dist/edges/createDirectEdge.js +6 -2
- package/dist/edges/createDirectEdge.js.map +1 -1
- package/dist/edges/createLogicalRouter.d.ts.map +1 -1
- package/dist/edges/createLogicalRouter.js +23 -6
- package/dist/edges/createLogicalRouter.js.map +1 -1
- package/dist/edges/createPromptRouter.d.ts.map +1 -1
- package/dist/edges/createPromptRouter.js +12 -6
- package/dist/edges/createPromptRouter.js.map +1 -1
- package/dist/edges/edgeFactory.d.ts.map +1 -1
- package/dist/edges/edgeFactory.js +8 -3
- package/dist/edges/edgeFactory.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/interrupts/BaseInterruptSessionManager.js +1 -1
- package/dist/interrupts/BaseInterruptSessionManager.js.map +1 -1
- package/dist/interrupts/interruptSessionManagerFactory.js +2 -2
- package/dist/interrupts/interruptSessionManagerFactory.js.map +1 -1
- package/dist/llm/createLlmInstance.d.ts +1 -1
- package/dist/llm/createLlmInstance.d.ts.map +1 -1
- package/dist/llm/createLlmInstance.js +18 -1
- package/dist/llm/createLlmInstance.js.map +1 -1
- package/dist/nodes/addAppToolNode.d.ts.map +1 -1
- package/dist/nodes/addAppToolNode.js +5 -4
- package/dist/nodes/addAppToolNode.js.map +1 -1
- package/dist/nodes/addBrowserTaskNode.d.ts +13 -0
- package/dist/nodes/addBrowserTaskNode.d.ts.map +1 -0
- package/dist/nodes/addBrowserTaskNode.js +232 -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 +130 -0
- package/dist/nodes/addBrowserTaskRunNode.js.map +1 -0
- package/dist/nodes/addHumanInTheLoopNode.d.ts.map +1 -1
- package/dist/nodes/addHumanInTheLoopNode.js +1 -1
- package/dist/nodes/addHumanInTheLoopNode.js.map +1 -1
- package/dist/nodes/addJumpToNode.d.ts.map +1 -1
- package/dist/nodes/addJumpToNode.js +2 -1
- package/dist/nodes/addJumpToNode.js.map +1 -1
- package/dist/nodes/addJunctionNode.d.ts.map +1 -1
- package/dist/nodes/addJunctionNode.js +1 -0
- package/dist/nodes/addJunctionNode.js.map +1 -1
- package/dist/nodes/addPromptNode.d.ts.map +1 -1
- package/dist/nodes/addPromptNode.js +8 -18
- package/dist/nodes/addPromptNode.js.map +1 -1
- package/dist/nodes/addToolNode.js +2 -4
- package/dist/nodes/addToolNode.js.map +1 -1
- package/dist/nodes/addToolRunNode.d.ts.map +1 -1
- package/dist/nodes/addToolRunNode.js +2 -1
- package/dist/nodes/addToolRunNode.js.map +1 -1
- package/dist/nodes/addTriggerNode.d.ts.map +1 -1
- package/dist/nodes/addTriggerNode.js +2 -1
- package/dist/nodes/addTriggerNode.js.map +1 -1
- package/dist/nodes/nodeFactory.d.ts.map +1 -1
- package/dist/nodes/nodeFactory.js +4 -0
- package/dist/nodes/nodeFactory.js.map +1 -1
- package/dist/platform/mindedConnection.js +13 -13
- package/dist/platform/mindedConnection.js.map +1 -1
- 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/playbooks/playbooks.js +6 -6
- package/dist/playbooks/playbooks.js.map +1 -1
- package/dist/types/Flows.types.d.ts +18 -3
- package/dist/types/Flows.types.d.ts.map +1 -1
- package/dist/types/Flows.types.js +2 -0
- package/dist/types/Flows.types.js.map +1 -1
- package/dist/types/LLM.types.d.ts.map +1 -1
- package/dist/types/LLM.types.js +1 -1
- package/dist/types/LLM.types.js.map +1 -1
- package/dist/types/LangGraph.types.d.ts +2 -0
- package/dist/types/LangGraph.types.d.ts.map +1 -1
- package/dist/types/LangGraph.types.js +5 -0
- package/dist/types/LangGraph.types.js.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/voice/voiceSession.d.ts.map +1 -1
- package/dist/voice/voiceSession.js +16 -17
- package/dist/voice/voiceSession.js.map +1 -1
- package/docs/SUMMARY.md +1 -0
- package/docs/low-code-editor/nodes.md +27 -0
- package/docs/low-code-editor/tools.md +32 -0
- package/docs/platform/parallel-llm.md +242 -0
- package/package.json +2 -1
- package/src/agent.ts +30 -18
- package/src/browserTask/executeBrowserTask.ts +213 -0
- package/src/checkpointer/checkpointSaverFactory.ts +1 -1
- package/src/cli/index.ts +14 -14
- package/src/edges/createDirectEdge.ts +7 -2
- package/src/edges/createLogicalRouter.ts +23 -6
- package/src/edges/createPromptRouter.ts +13 -6
- package/src/edges/edgeFactory.ts +20 -4
- package/src/index.ts +6 -0
- package/src/interrupts/BaseInterruptSessionManager.ts +1 -1
- package/src/interrupts/interruptSessionManagerFactory.ts +2 -2
- package/src/llm/createLlmInstance.ts +25 -2
- package/src/nodes/addAppToolNode.ts +5 -4
- package/src/nodes/addBrowserTaskNode.ts +231 -0
- package/src/nodes/addBrowserTaskRunNode.ts +144 -0
- package/src/nodes/addHumanInTheLoopNode.ts +2 -1
- package/src/nodes/addJumpToNode.ts +2 -1
- package/src/nodes/addJunctionNode.ts +1 -0
- package/src/nodes/addPromptNode.ts +8 -19
- package/src/nodes/addToolNode.ts +4 -4
- package/src/nodes/addToolRunNode.ts +3 -1
- package/src/nodes/addTriggerNode.ts +2 -1
- package/src/nodes/nodeFactory.ts +5 -1
- package/src/platform/mindedConnection.ts +13 -13
- package/src/platform/models/mindedChatOpenAI.ts +49 -0
- package/src/platform/models/parallelWrapper.ts +141 -0
- package/src/playbooks/playbooks.ts +6 -6
- package/src/types/Flows.types.ts +17 -1
- package/src/types/LLM.types.ts +5 -5
- package/src/types/LangGraph.types.ts +5 -0
- package/src/utils/logger.ts +1 -1
- package/src/voice/voiceSession.ts +16 -17
- package/src/platform/mindedChatOpenAI.ts +0 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LangGraph.types.d.ts","sourceRoot":"","sources":["../../src/types/LangGraph.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAc,kBAAkB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEzD,eAAO,MAAM,qBAAqB,GAAI,MAAM,GAAG,GAAG
|
|
1
|
+
{"version":3,"file":"LangGraph.types.d.ts","sourceRoot":"","sources":["../../src/types/LangGraph.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAc,kBAAkB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEzD,eAAO,MAAM,qBAAqB,GAAI,MAAM,GAAG,GAAG;;;;;;;;EA2C9C,CAAC;AAGL,eAAO,MAAM,eAAe;;;;;;;;EAA0B,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACjE,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC5D,MAAM,MAAM,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -14,6 +14,7 @@ const createStateAnnotation = () => langgraph_1.Annotation.Root({
|
|
|
14
14
|
const index = res.findIndex((m) => m.id && m.id === message.id);
|
|
15
15
|
if (index !== -1) {
|
|
16
16
|
res[index].content = message.content;
|
|
17
|
+
res[index].additional_kwargs = { ...res[index].additional_kwargs, ...message.additional_kwargs };
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
else {
|
|
@@ -34,6 +35,10 @@ const createStateAnnotation = () => langgraph_1.Annotation.Root({
|
|
|
34
35
|
sessionId: (0, langgraph_1.Annotation)({
|
|
35
36
|
reducer: (a, b) => b || a,
|
|
36
37
|
}),
|
|
38
|
+
goto: (0, langgraph_1.Annotation)({
|
|
39
|
+
default: () => null,
|
|
40
|
+
reducer: (a, b) => b,
|
|
41
|
+
}),
|
|
37
42
|
sessionType: (0, langgraph_1.Annotation)({
|
|
38
43
|
default: () => Agent_types_1.SessionType.TEXT,
|
|
39
44
|
reducer: (a, b) => b || a,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LangGraph.types.js","sourceRoot":"","sources":["../../src/types/LangGraph.types.ts"],"names":[],"mappings":";;;AACA,oDAAkF;AAClF,+CAAyD;AAElD,MAAM,qBAAqB,GAAG,GAAiB,EAAE,CACtD,sBAAU,CAAC,IAAI,CAAC;IACd,QAAQ,EAAE,IAAA,sBAAU,EAAqB;QACvC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;QACjB,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE;;YACrC,MAAM,GAAG,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;YAC9B,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;gBAClC,IAAI,MAAA,OAAO,CAAC,iBAAiB,0CAAE,MAAM,EAAE,CAAC;oBACtC,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;oBAChE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACjB,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LangGraph.types.js","sourceRoot":"","sources":["../../src/types/LangGraph.types.ts"],"names":[],"mappings":";;;AACA,oDAAkF;AAClF,+CAAyD;AAElD,MAAM,qBAAqB,GAAG,GAAiB,EAAE,CACtD,sBAAU,CAAC,IAAI,CAAC;IACd,QAAQ,EAAE,IAAA,sBAAU,EAAqB;QACvC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;QACjB,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE;;YACrC,MAAM,GAAG,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;YAC9B,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;gBAClC,IAAI,MAAA,OAAO,CAAC,iBAAiB,0CAAE,MAAM,EAAE,CAAC;oBACtC,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;oBAChE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACjB,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;wBACrC,GAAG,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBACnG,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;IACF,MAAM,EAAE,IAAA,sBAAU,EAAS;QACzB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAa,CAAA;QAC7B,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;KACpC,CAAC;IACF,OAAO,EAAE,IAAA,sBAAU,EAAqB;QACtC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;QACjB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;KAC/B,CAAC;IACF,SAAS,EAAE,IAAA,sBAAU,EAAS;QAC5B,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;KAC1B,CAAC;IACF,IAAI,EAAE,IAAA,sBAAU,EAA4B;QAC1C,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;QACnB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KACrB,CAAC;IACF,WAAW,EAAE,IAAA,sBAAU,EAAc;QACnC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAW,CAAC,IAAI;QAC/B,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;KAC1B,CAAC;IACF,uBAAuB,EAAE,IAAA,sBAAU,EAAgB;QACjD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;QACnB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KACrB,CAAC;CACH,CAAC,CAAC;AA3CQ,QAAA,qBAAqB,yBA2C7B;AAEL,gDAAgD;AACnC,QAAA,eAAe,GAAG,IAAA,6BAAqB,GAAE,CAAC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -9,7 +9,7 @@ const dotenv_1 = __importDefault(require("dotenv"));
|
|
|
9
9
|
dotenv_1.default.config();
|
|
10
10
|
// Create a Pino logger with a custom log format
|
|
11
11
|
exports.logger = (0, pino_1.default)({
|
|
12
|
-
level: process.env.LOG_LEVEL || '
|
|
12
|
+
level: process.env.LOG_LEVEL || 'trace',
|
|
13
13
|
base: null,
|
|
14
14
|
transport: {
|
|
15
15
|
target: 'pino-pretty',
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,gDAAgD;AACnC,QAAA,MAAM,GAAG,IAAA,cAAI,EAAC;IACzB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,gDAAgD;AACnC,QAAA,MAAM,GAAG,IAAA,cAAI,EAAC;IACzB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO;IACvC,IAAI,EAAE,IAAI;IACV,SAAS,EAAE;QACT,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE;YACP,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,aAAa,EAAE,cAAc;YAC7B,UAAU,EAAE,SAAS,EAAE,yCAAyC;SACjE;KACF;IACD,UAAU,EAAE;QACV,KAAK,CAAC,KAAK;YACT,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;KACF;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voiceSession.d.ts","sourceRoot":"","sources":["../../src/voice/voiceSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAUjC;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,gBAAgB,CAAC,CAAY;IAErC,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,sBAAsB,CAAC,CAAa;IAC5C,OAAO,CAAC,iBAAiB,CAAC,CAA+C;IACzE,OAAO,CAAC,oBAAoB,CAAC,CAAa;gBAE9B,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAQpI;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"voiceSession.d.ts","sourceRoot":"","sources":["../../src/voice/voiceSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAUjC;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,gBAAgB,CAAC,CAAY;IAErC,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,sBAAsB,CAAC,CAAa;IAC5C,OAAO,CAAC,iBAAiB,CAAC,CAA+C;IACzE,OAAO,CAAC,oBAAoB,CAAC,CAAa;gBAE9B,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAQpI;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBpB,gBAAgB;YAQhB,iBAAiB;IAsB/B,OAAO,CAAC,mBAAmB;YAiIb,sBAAsB;YAUtB,mBAAmB;IAmB1B,MAAM,IAAI,IAAI;IAMrB;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI/C;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAI1C;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIxC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIlC,2CAA2C;YAC7B,YAAY;CAa3B"}
|
|
@@ -47,7 +47,7 @@ const Agent_types_1 = require("../types/Agent.types");
|
|
|
47
47
|
*/
|
|
48
48
|
class VoiceSession {
|
|
49
49
|
constructor({ agent, sessionId, firstMessage, voiceId }) {
|
|
50
|
-
logger_1.logger.debug({
|
|
50
|
+
logger_1.logger.debug({ msg: '[Voice] Starting voice session', sessionId, firstMessage, voiceId });
|
|
51
51
|
this.agent = agent;
|
|
52
52
|
this.sessionId = sessionId;
|
|
53
53
|
this.firstMessage = firstMessage;
|
|
@@ -68,7 +68,6 @@ class VoiceSession {
|
|
|
68
68
|
agentId: elevenLabsAgentId,
|
|
69
69
|
apiKey: elevenLabsKey,
|
|
70
70
|
});
|
|
71
|
-
logger_1.logger.debug({ message: 'Connecting to ElevenLabs', sessionId: this.sessionId });
|
|
72
71
|
this.elevenLabsSocket = new ws_1.WebSocket(signedUrl);
|
|
73
72
|
this.setupSocketHandlers();
|
|
74
73
|
}
|
|
@@ -103,7 +102,7 @@ class VoiceSession {
|
|
|
103
102
|
setupSocketHandlers() {
|
|
104
103
|
const socket = this.elevenLabsSocket; // non-null assertion once, we ensured it's assigned in init()
|
|
105
104
|
socket.onopen = () => {
|
|
106
|
-
logger_1.logger.debug({
|
|
105
|
+
logger_1.logger.debug({ msg: '[Voice] Connected to ElevenLabs', sessionId: this.sessionId });
|
|
107
106
|
const initiationData = {
|
|
108
107
|
type: 'conversation_initiation_client_data',
|
|
109
108
|
conversation_config_override: {
|
|
@@ -126,12 +125,12 @@ class VoiceSession {
|
|
|
126
125
|
};
|
|
127
126
|
socket.onclose = () => {
|
|
128
127
|
var _a;
|
|
129
|
-
logger_1.logger.debug({
|
|
128
|
+
logger_1.logger.debug({ msg: '[Voice] Disconnected from ElevenLabs, removing voice session', sessionId: this.sessionId });
|
|
130
129
|
(_a = this.onDisconnectCallback) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
131
130
|
this.agent.voiceSessions.delete(this.sessionId);
|
|
132
131
|
};
|
|
133
132
|
socket.onerror = (err) => {
|
|
134
|
-
logger_1.logger.error({
|
|
133
|
+
logger_1.logger.error({ msg: '[Voice] socket error', sessionId: this.sessionId, error: err });
|
|
135
134
|
};
|
|
136
135
|
socket.onmessage = async (event) => {
|
|
137
136
|
var _a;
|
|
@@ -144,7 +143,7 @@ class VoiceSession {
|
|
|
144
143
|
break;
|
|
145
144
|
case 'user_transcript':
|
|
146
145
|
logger_1.logger.debug({
|
|
147
|
-
|
|
146
|
+
msg: '[Voice] Received user transcript',
|
|
148
147
|
sessionId: this.sessionId,
|
|
149
148
|
data: data.user_transcription_event.user_transcript,
|
|
150
149
|
});
|
|
@@ -153,12 +152,13 @@ class VoiceSession {
|
|
|
153
152
|
}
|
|
154
153
|
break;
|
|
155
154
|
case 'agent_response':
|
|
155
|
+
logger_1.logger.debug({ msg: '[Voice] Received agent response' });
|
|
156
156
|
if (this.onMessageCallback) {
|
|
157
157
|
this.onMessageCallback(data.agent_response_event.agent_response, new messages_1.AIMessage({ content: data.agent_response_event.agent_response }));
|
|
158
158
|
}
|
|
159
159
|
break;
|
|
160
160
|
case 'interruption':
|
|
161
|
-
logger_1.logger.debug('
|
|
161
|
+
logger_1.logger.debug({ msg: '[Voice] Received interruption' });
|
|
162
162
|
(_a = this.onInterruptionCallback) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
163
163
|
// Send interruption event to dashboard if connected
|
|
164
164
|
if ((0, config_1.getConfig)().dashboardConnected) {
|
|
@@ -170,12 +170,12 @@ class VoiceSession {
|
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
172
|
catch (error) {
|
|
173
|
-
logger_1.logger.error({
|
|
173
|
+
logger_1.logger.error({ msg: '[Voice] Error sending interruption to dashboard', sessionId: this.sessionId, error });
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
176
|
break;
|
|
177
177
|
case 'audio':
|
|
178
|
-
logger_1.logger.debug({
|
|
178
|
+
logger_1.logger.debug({ msg: '[Voice] Received audio response to user', sessionId: this.sessionId });
|
|
179
179
|
if (this.onAudioCallback) {
|
|
180
180
|
this.onAudioCallback(data.audio_event.audio_base_64);
|
|
181
181
|
}
|
|
@@ -189,35 +189,34 @@ class VoiceSession {
|
|
|
189
189
|
});
|
|
190
190
|
}
|
|
191
191
|
catch (error) {
|
|
192
|
-
logger_1.logger.error(
|
|
192
|
+
logger_1.logger.error({ msg: '[Voice] Error sending audio to dashboard', sessionId: this.sessionId, error });
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
break;
|
|
196
196
|
case 'conversation_initiation_metadata':
|
|
197
|
-
logger_1.logger.
|
|
197
|
+
logger_1.logger.trace({ msg: '[Voice] ElevenLabs conversation initiation metadata', sessionId: this.sessionId, data });
|
|
198
198
|
break;
|
|
199
199
|
case 'agent_response_correction':
|
|
200
200
|
try {
|
|
201
201
|
logger_1.logger.debug({
|
|
202
|
-
|
|
202
|
+
msg: '[Voice] Received agent response correction',
|
|
203
203
|
sessionId: this.sessionId,
|
|
204
204
|
data: data.agent_response_correction_event,
|
|
205
205
|
});
|
|
206
206
|
await this.updateAgentResponse(data.agent_response_correction_event.original_agent_response, data.agent_response_correction_event.corrected_agent_response);
|
|
207
207
|
}
|
|
208
208
|
catch (error) {
|
|
209
|
-
logger_1.logger.error({
|
|
209
|
+
logger_1.logger.error({ msg: '[Voice] Error updating agent response', sessionId: this.sessionId, error });
|
|
210
210
|
}
|
|
211
211
|
break;
|
|
212
212
|
default:
|
|
213
|
-
logger_1.logger.debug({
|
|
213
|
+
logger_1.logger.debug({ msg: '[Voice] Received unknown message from ElevenLabs', sessionId: this.sessionId, data });
|
|
214
214
|
break;
|
|
215
215
|
}
|
|
216
216
|
};
|
|
217
217
|
}
|
|
218
218
|
async addFirstMessageToState() {
|
|
219
219
|
var _a;
|
|
220
|
-
logger_1.logger.debug({ message: 'Adding first message to state', sessionId: this.sessionId, firstMessage: this.firstMessage });
|
|
221
220
|
const graphState = await this.agent.compiledGraph.getState(this.agent.getLangraphConfig(this.sessionId));
|
|
222
221
|
if (!((_a = graphState.values.messages) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
223
222
|
await this.agent.compiledGraph.updateState(this.agent.getLangraphConfig(this.sessionId), {
|
|
@@ -240,12 +239,12 @@ class VoiceSession {
|
|
|
240
239
|
});
|
|
241
240
|
}
|
|
242
241
|
else {
|
|
243
|
-
logger_1.logger.warn({
|
|
242
|
+
logger_1.logger.warn({ msg: '[Voice] Agent message not found for correction', sessionId: this.sessionId, originalAgentResponse });
|
|
244
243
|
}
|
|
245
244
|
}
|
|
246
245
|
hangup() {
|
|
247
246
|
var _a, _b;
|
|
248
|
-
logger_1.logger.info({
|
|
247
|
+
logger_1.logger.info({ msg: '[Voice] Hanging up voice session', sessionId: this.sessionId });
|
|
249
248
|
(_a = this.onDisconnectCallback) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
250
249
|
(_b = this.elevenLabsSocket) === null || _b === void 0 ? void 0 : _b.close();
|
|
251
250
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voiceSession.js","sourceRoot":"","sources":["../../src/voice/voiceSession.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAA+B;AAE/B,+EAAiE;AACjE,6EAAsF;AACtF,+CAA+C;AAE/C,uDAAgF;AAChF,+BAAoC;AACpC,4CAAyC;AACzC,sDAAmD;AAEnD;;GAEG;AACH,MAAa,YAAY;IAYvB,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAA+E;QAClI,eAAM,CAAC,KAAK,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"voiceSession.js","sourceRoot":"","sources":["../../src/voice/voiceSession.ts"],"names":[],"mappings":"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"}
|
package/docs/SUMMARY.md
CHANGED
|
@@ -322,6 +322,33 @@ nodes:
|
|
|
322
322
|
prompt: 'Help the customer with anything they need'
|
|
323
323
|
```
|
|
324
324
|
|
|
325
|
+
## Browser Task Nodes
|
|
326
|
+
|
|
327
|
+
Browser task nodes allow your agent to interact with web pages using AI-powered automation.
|
|
328
|
+
|
|
329
|
+
### Basic Browser Task
|
|
330
|
+
|
|
331
|
+
```yaml
|
|
332
|
+
- type: browserTask
|
|
333
|
+
name: search_products
|
|
334
|
+
displayName: Search Products
|
|
335
|
+
prompt: 'Go to amazon.com and search for wireless headphones under $100'
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Browser Task with Custom Model
|
|
339
|
+
|
|
340
|
+
You can specify which AI model to use for browser automation:
|
|
341
|
+
|
|
342
|
+
```yaml
|
|
343
|
+
- type: browserTask
|
|
344
|
+
name: complex_task
|
|
345
|
+
displayName: Complex Web Task
|
|
346
|
+
prompt: 'Navigate to the support page and fill out the contact form'
|
|
347
|
+
model: 'gpt-4o' # Options: gpt-4o (default), gpt-4-turbo, claude-3-opus, etc.
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
The browser task will execute the prompt using the browser-use CLI tool, which provides AI-powered browser automation capabilities.
|
|
351
|
+
|
|
325
352
|
## Next Steps
|
|
326
353
|
|
|
327
354
|
* [**Edges**](edges.md) - Connect nodes with intelligent routing
|
|
@@ -247,6 +247,38 @@ const paymentTool: Tool<typeof paymentSchema, Memory> = {
|
|
|
247
247
|
},
|
|
248
248
|
};
|
|
249
249
|
|
|
250
|
+
## Flow Control with goto
|
|
251
|
+
|
|
252
|
+
Tools can control the flow by returning a `goto` property in their state update. This allows tools to programmatically move the conversation to a specific node.
|
|
253
|
+
|
|
254
|
+
### Basic goto Usage
|
|
255
|
+
|
|
256
|
+
```ts
|
|
257
|
+
const moveToAnotherRepresentativeTool: Tool<typeof schema, Memory> = {
|
|
258
|
+
name: 'moveToAnotherRepresentative',
|
|
259
|
+
description: 'Transfer the conversation to another representative or department',
|
|
260
|
+
input: schema,
|
|
261
|
+
execute: async ({ input, state }) => {
|
|
262
|
+
logger.info({
|
|
263
|
+
message: 'Moving conversation to another representative',
|
|
264
|
+
sessionId: state.sessionId,
|
|
265
|
+
department: input.department,
|
|
266
|
+
reason: input.reason,
|
|
267
|
+
priority: input.priority,
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
return {
|
|
271
|
+
state: {
|
|
272
|
+
goto: 'share-new-representative',
|
|
273
|
+
memory: {
|
|
274
|
+
orderId: 'share-new-representative',
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
},
|
|
279
|
+
};
|
|
280
|
+
```
|
|
281
|
+
|
|
250
282
|
## Best Practices
|
|
251
283
|
|
|
252
284
|
1. **Clear Descriptions**: Write descriptions that help the LLM understand when to use the tool
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
# Parallel LLM Requests
|
|
2
|
+
|
|
3
|
+
Parallel LLM requests can significantly reduce latency by sending multiple identical requests and using the fastest response. This feature can reduce response times by 30-50% in scenarios with variable network conditions.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
The easiest way to enable parallel requests is through your `minded.json` configuration:
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"flows": ["./src/flows"],
|
|
12
|
+
"tools": ["./src/tools"],
|
|
13
|
+
"agent": "./src/agent.ts",
|
|
14
|
+
"llm": {
|
|
15
|
+
"name": "MindedChatOpenAI",
|
|
16
|
+
"properties": {
|
|
17
|
+
"model": "gpt-4o",
|
|
18
|
+
"numParallelRequests": 3,
|
|
19
|
+
"logTimings": true
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Your agent will automatically use parallel requests for all LLM calls:
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { Agent } from '@minded-ai/mindedjs';
|
|
29
|
+
import memorySchema from './agentMemorySchema';
|
|
30
|
+
import config from '../minded.json';
|
|
31
|
+
import tools from './tools';
|
|
32
|
+
|
|
33
|
+
const agent = new Agent({
|
|
34
|
+
memorySchema,
|
|
35
|
+
config, // Parallel configuration is automatically applied
|
|
36
|
+
tools,
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Configuration Options
|
|
41
|
+
|
|
42
|
+
### MindedChatOpenAI (Recommended)
|
|
43
|
+
|
|
44
|
+
For agents running on the Minded platform, use `MindedChatOpenAI` with parallel configuration:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"llm": {
|
|
49
|
+
"name": "MindedChatOpenAI",
|
|
50
|
+
"properties": {
|
|
51
|
+
"model": "gpt-4o",
|
|
52
|
+
"numParallelRequests": 3,
|
|
53
|
+
"logTimings": true,
|
|
54
|
+
"temperature": 0.7
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### AzureChatOpenAI
|
|
61
|
+
|
|
62
|
+
For Azure OpenAI deployments:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"llm": {
|
|
67
|
+
"name": "AzureChatOpenAI",
|
|
68
|
+
"properties": {
|
|
69
|
+
"model": "gpt-4o",
|
|
70
|
+
"numParallelRequests": 3,
|
|
71
|
+
"logTimings": true,
|
|
72
|
+
"azureOpenAIApiVersion": "2024-02-01"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Required environment variables:
|
|
79
|
+
|
|
80
|
+
```env
|
|
81
|
+
AZURE_OPENAI_API_KEY=your_azure_key
|
|
82
|
+
AZURE_OPENAI_API_INSTANCE_NAME=your_instance_name
|
|
83
|
+
AZURE_OPENAI_API_DEPLOYMENT_NAME=your_deployment_name
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### ChatOpenAI
|
|
87
|
+
|
|
88
|
+
For standard OpenAI API:
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"llm": {
|
|
93
|
+
"name": "ChatOpenAI",
|
|
94
|
+
"properties": {
|
|
95
|
+
"model": "gpt-4o",
|
|
96
|
+
"numParallelRequests": 3,
|
|
97
|
+
"logTimings": true,
|
|
98
|
+
"openAIApiKey": "${OPENAI_API_KEY}"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Configuration Parameters
|
|
105
|
+
|
|
106
|
+
| Parameter | Type | Default | Description |
|
|
107
|
+
| --------------------- | ------- | ------- | --------------------------------------------- |
|
|
108
|
+
| `numParallelRequests` | number | 1 | Number of parallel requests (2-5 recommended) |
|
|
109
|
+
| `logTimings` | boolean | false | Enable detailed timing logs |
|
|
110
|
+
|
|
111
|
+
## Performance Notes
|
|
112
|
+
|
|
113
|
+
- **Optimal Range**: 2-3 parallel requests usually provide the best latency/cost balance
|
|
114
|
+
- **Cost Impact**: You pay for all parallel requests made
|
|
115
|
+
- **Best Use Cases**: Variable network conditions, consistency requirements
|
|
116
|
+
- **Latency Reduction**: Typically 30-50% faster response times
|
|
117
|
+
|
|
118
|
+
## Monitoring Performance
|
|
119
|
+
|
|
120
|
+
When `logTimings: true` is enabled, you'll see detailed performance logs:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
[Model] Fastest request completed { requestTime: 1.234, numParallelRequests: 3 }
|
|
124
|
+
[Model] Time saved using parallel requests {
|
|
125
|
+
fastestRequestTime: 1.234,
|
|
126
|
+
secondFastestRequestTime: 1.567,
|
|
127
|
+
allFinishTime: 2.345,
|
|
128
|
+
timeSaved: 1.111,
|
|
129
|
+
timeSavedFromSecond: 0.333
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Advanced Usage
|
|
134
|
+
|
|
135
|
+
### Dynamic Configuration
|
|
136
|
+
|
|
137
|
+
You can adjust parallel requests based on environment:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"llm": {
|
|
142
|
+
"name": "MindedChatOpenAI",
|
|
143
|
+
"properties": {
|
|
144
|
+
"model": "gpt-4o",
|
|
145
|
+
"numParallelRequests": "${NODE_ENV === 'production' ? 3 : 1}",
|
|
146
|
+
"logTimings": "${NODE_ENV === 'development'}"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Manual Instantiation with createParallelWrapper
|
|
153
|
+
|
|
154
|
+
For advanced use cases where you need direct control over the LLM instance, you can manually apply parallel wrapping:
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
import { createParallelWrapper } from '@minded-ai/mindedjs';
|
|
158
|
+
import { ChatOpenAI, AzureChatOpenAI } from '@langchain/openai';
|
|
159
|
+
|
|
160
|
+
// Manual wrapping for ChatOpenAI
|
|
161
|
+
const parallelOpenAI = createParallelWrapper(
|
|
162
|
+
new ChatOpenAI({
|
|
163
|
+
openAIApiKey: process.env.OPENAI_API_KEY,
|
|
164
|
+
model: 'gpt-4o',
|
|
165
|
+
temperature: 0.7,
|
|
166
|
+
}),
|
|
167
|
+
{
|
|
168
|
+
numParallelRequests: 3,
|
|
169
|
+
logTimings: true,
|
|
170
|
+
},
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
// Manual wrapping for AzureChatOpenAI
|
|
174
|
+
const parallelAzure = createParallelWrapper(
|
|
175
|
+
new AzureChatOpenAI({
|
|
176
|
+
azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY,
|
|
177
|
+
azureOpenAIApiInstanceName: process.env.AZURE_OPENAI_INSTANCE!,
|
|
178
|
+
azureOpenAIApiDeploymentName: process.env.AZURE_OPENAI_DEPLOYMENT!,
|
|
179
|
+
azureOpenAIApiVersion: '2024-02-01',
|
|
180
|
+
}),
|
|
181
|
+
{
|
|
182
|
+
numParallelRequests: 2,
|
|
183
|
+
logTimings: false,
|
|
184
|
+
},
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
// Use directly with Agent (bypassing configuration)
|
|
188
|
+
const agent = new Agent({
|
|
189
|
+
memorySchema,
|
|
190
|
+
config: {
|
|
191
|
+
flows: ['./flows'],
|
|
192
|
+
tools: [],
|
|
193
|
+
llm: parallelOpenAI as any, // Direct LLM instance
|
|
194
|
+
},
|
|
195
|
+
tools: [],
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**Note**: The configuration-based approach is recommended for most use cases as it's simpler and more maintainable. Use manual instantiation only when you need specific control over LLM creation or are integrating with existing LangChain workflows.
|
|
200
|
+
|
|
201
|
+
## How It Works
|
|
202
|
+
|
|
203
|
+
### MindedChatOpenAI (Backend Processing)
|
|
204
|
+
|
|
205
|
+
- Parallel requests are handled on the Minded platform backend
|
|
206
|
+
- Multiple requests sent to Azure OpenAI from the backend
|
|
207
|
+
- Fastest response returned to your agent
|
|
208
|
+
- Optimal for production deployments
|
|
209
|
+
|
|
210
|
+
### Other LLM Providers (Client-Side Processing)
|
|
211
|
+
|
|
212
|
+
- Parallel requests handled in your application
|
|
213
|
+
- Multiple requests sent directly to the LLM provider
|
|
214
|
+
- Good for development and custom deployments
|
|
215
|
+
|
|
216
|
+
## Best Practices
|
|
217
|
+
|
|
218
|
+
1. **Start Small**: Begin with 2-3 parallel requests
|
|
219
|
+
2. **Monitor Costs**: Each parallel request counts toward your usage
|
|
220
|
+
3. **Enable Logging**: Use `logTimings: true` during development to measure improvements
|
|
221
|
+
4. **Environment-Specific**: Use fewer parallel requests in development
|
|
222
|
+
5. **Configuration Over Code**: Prefer `minded.json` configuration over manual instantiation
|
|
223
|
+
|
|
224
|
+
## Troubleshooting
|
|
225
|
+
|
|
226
|
+
### No Performance Improvement
|
|
227
|
+
|
|
228
|
+
- Check network latency variability
|
|
229
|
+
- Ensure `numParallelRequests > 1`
|
|
230
|
+
- Verify timing logs are showing multiple requests
|
|
231
|
+
|
|
232
|
+
### Increased Costs
|
|
233
|
+
|
|
234
|
+
- Reduce `numParallelRequests`
|
|
235
|
+
- Consider cost vs. latency trade-offs
|
|
236
|
+
- Monitor usage patterns
|
|
237
|
+
|
|
238
|
+
### Rate Limiting
|
|
239
|
+
|
|
240
|
+
- Lower `numParallelRequests`
|
|
241
|
+
- Implement backoff strategies
|
|
242
|
+
- Contact provider about rate limits
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minded-ai/mindedjs",
|
|
3
|
-
"version": "1.0.103-beta-
|
|
3
|
+
"version": "1.0.103-beta-2",
|
|
4
4
|
"description": "MindedJS is a TypeScript library for building agents.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"order-refund": "cd examples/orderRefundAgent && nodemon --watch '**/*.ts' --exec 'ts-node' orderRefundAgent.ts",
|
|
22
22
|
"zendesk": "cd examples/zendesk && nodemon --watch '**/*.ts' --exec 'ts-node' zendeskAgent.ts",
|
|
23
23
|
"example-voice": "cd examples/voice && nodemon --watch '**/*.ts' --exec 'ts-node' voiceAgent.ts",
|
|
24
|
+
"example-browser": "cd examples/browserUsingAgent && nodemon --watch '**/*.ts' --exec 'ts-node' browserUsingAgent.ts",
|
|
24
25
|
"lint": "eslint .",
|
|
25
26
|
"lintFix": "eslint --fix .",
|
|
26
27
|
"generateApiDocs": "typedoc src --out docs/api-reference ./src"
|