@minded-ai/mindedjs 1.0.33 → 1.0.34

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.
@@ -1 +1 @@
1
- {"version":3,"file":"addAppToolNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addAppToolNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAK7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAO,MAAM,cAAc,GAAU,uBAIlC;IACC,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,CAAA,OAAO,YAAY,EAAC,MAAM,OAAO,YAAY,CAAC,CAAC;CACvD,kBAsDA,CAAC"}
1
+ {"version":3,"file":"addAppToolNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addAppToolNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAI7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,eAAO,MAAM,cAAc,GAAU,uBAIlC;IACC,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,CAAA,OAAO,YAAY,EAAC,MAAM,OAAO,YAAY,CAAC,CAAC;CACvD,kBA8BA,CAAC"}
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addAppToolNode = void 0;
4
4
  const tools_1 = require("@langchain/core/tools");
5
5
  const messages_1 = require("@langchain/core/messages");
6
- const uuid_1 = require("uuid");
7
6
  const appActionRunnerTool_1 = require("../internalTools/appActionRunnerTool");
7
+ const Agent_types_1 = require("../types/Agent.types");
8
8
  const addAppToolNode = async ({ graph, node, llm, }) => {
9
9
  const appRunnerTool = (0, appActionRunnerTool_1.getAppActionRunnerTool)(node.name);
10
10
  const callback = async (state) => {
@@ -19,42 +19,20 @@ const addAppToolNode = async ({ graph, node, llm, }) => {
19
19
  throw error;
20
20
  }
21
21
  };
22
- const prompt = `
23
- Context:
24
- workflow memory: ${JSON.stringify(state.memory)}
25
-
26
- Task:
27
- Extract the necessary parameters for the tool "${appRunnerTool.name}" based on the context above and the previous messages.
28
-
29
- ${node.prompt ? `Additional guidance for parameter extraction: ${node.prompt}` : ''}
30
-
31
- Important:
32
- - Extract ONLY the parameters that match the schema
33
- - Use your best judgment to fill in any missing values
34
- - Do not include any parameters not defined in the schema
35
- - Return a valid JSON object matching the schema exactly
36
- `;
37
- const structuredLlm = llm.withStructuredOutput(appRunnerTool.input);
38
- const validMessages = state.messages.filter((msg, index) => {
39
- if (msg instanceof messages_1.ToolMessage) {
40
- const prevMsg = state.messages[index - 1];
41
- return prevMsg && 'tool_calls' in prevMsg;
42
- }
43
- return true;
44
- });
45
- const structuredResponse = await structuredLlm.invoke([...validMessages, new messages_1.SystemMessage(prompt)]);
46
22
  const tool = (0, tools_1.tool)(executeWrapper, {
47
23
  name: appRunnerTool.name,
48
24
  description: appRunnerTool.description,
49
25
  schema: appRunnerTool.input,
50
26
  });
51
- const response = await tool.invoke({
52
- args: structuredResponse,
53
- type: 'tool_call',
54
- id: (0, uuid_1.v4)(),
55
- name: appRunnerTool.name,
56
- });
57
- return { messages: [response] };
27
+ const prompt = `
28
+ Additional context:
29
+ workflow memory: ${JSON.stringify(state.memory)}
30
+ `;
31
+ const AIToolCallMessage = await llm.bindTools([tool], {
32
+ tool_choice: tool.name,
33
+ }).invoke([...state.messages, new messages_1.SystemMessage(prompt)]);
34
+ const toolCallMessage = await tool.invoke(AIToolCallMessage.tool_calls[0]);
35
+ return { messages: [AIToolCallMessage, toolCallMessage], history: [{ type: Agent_types_1.FlowHistoryType.APP_ACTION_INVOCATION, nodeTitle: node.name }] };
58
36
  };
59
37
  graph.addNode(node.name, callback);
60
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"addAppToolNode.js","sourceRoot":"","sources":["../../src/nodes/addAppToolNode.ts"],"names":[],"mappings":";;;AACA,iDAA8D;AAE9D,uDAAsE;AAGtE,+BAAoC;AAEpC,8EAA8E;AAEvE,MAAM,cAAc,GAAG,KAAK,EAAE,EACjC,KAAK,EACL,IAAI,EACJ,GAAG,GAKN,EAAE,EAAE;IACD,MAAM,aAAa,GAAG,IAAA,4CAAsB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAiB,KAAK,EAAE,KAAmC,EAAE,EAAE;QACzE,OAAO,CAAC,GAAG,CAAC,uBAAuB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzD,MAAM,cAAc,GAAG,KAAK,EAAE,KAA0C,EAAE,EAAE;YACxE,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAC5H,OAAO,QAAQ,IAAI,EAAE,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;QACF,MAAM,MAAM,GAAG;;2BAEI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;;;yDAGE,aAAa,CAAC,IAAI;;UAEjE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,iDAAiD,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;SAOlF,CAAC;QACF,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACvD,IAAI,GAAG,YAAY,sBAAW,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC1C,OAAO,OAAO,IAAI,YAAY,IAAI,OAAO,CAAC;YAC9C,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,EAAE,IAAI,wBAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACpG,MAAM,IAAI,GAAG,IAAA,YAAa,EAAC,cAAc,EAAE;YACvC,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,MAAM,EAAE,aAAa,CAAC,KAAK;SAC9B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAC9B;YACI,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,WAAW;YACjB,EAAE,EAAE,IAAA,SAAM,GAAE;YACZ,IAAI,EAAE,aAAa,CAAC,IAAI;SAC3B,CACJ,CAAA;QACD,OAAO,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpC,CAAC,CAAA;IACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC,CAAC;AA9DW,QAAA,cAAc,kBA8DzB"}
1
+ {"version":3,"file":"addAppToolNode.js","sourceRoot":"","sources":["../../src/nodes/addAppToolNode.ts"],"names":[],"mappings":";;;AACA,iDAA8D;AAE9D,uDAAyD;AAIzD,8EAA8E;AAC9E,sDAAuD;AAEhD,MAAM,cAAc,GAAG,KAAK,EAAE,EACjC,KAAK,EACL,IAAI,EACJ,GAAG,GAKN,EAAE,EAAE;IACD,MAAM,aAAa,GAAG,IAAA,4CAAsB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAiB,KAAK,EAAE,KAAmC,EAAE,EAAE;QACzE,OAAO,CAAC,GAAG,CAAC,uBAAuB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzD,MAAM,cAAc,GAAG,KAAK,EAAE,KAA0C,EAAE,EAAE;YACxE,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAC5H,OAAO,QAAQ,IAAI,EAAE,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,IAAA,YAAa,EAAC,cAAc,EAAE;YACvC,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,MAAM,EAAE,aAAa,CAAC,KAAK;SAC9B,CAAC,CAAC;QACH,MAAM,MAAM,GAAG;;6BAEM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;SAChD,CAAC;QACF,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE;YAClD,WAAW,EAAE,IAAI,CAAC,IAAI;SACzB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,wBAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1E,OAAO,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,6BAAe,CAAC,qBAAqB,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;IAChJ,CAAC,CAAA;IACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC,CAAC;AAtCW,QAAA,cAAc,kBAsCzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"addPromptNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,yBAAyB,EAAe,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,iBAAiB,CAAC;IACvB,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,mCAAmC,mBAAmB,kBAuCzF,CAAC"}
1
+ {"version":3,"file":"addPromptNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,yBAAyB,EAAe,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,iBAAiB,CAAC;IACvB,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,mCAAmC,mBAAmB,kBAqEzF,CAAC"}
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.addPromptNode = void 0;
4
7
  const messages_1 = require("@langchain/core/messages");
5
8
  const tools_1 = require("@langchain/core/tools");
6
9
  const AgentEvents_1 = require("../events/AgentEvents");
7
10
  const createLlmInstance_1 = require("../llm/createLlmInstance");
11
+ const extractToolMemoryResponse_1 = __importDefault(require("../utils/extractToolMemoryResponse"));
8
12
  const addPromptNode = async ({ graph, node, llm, tools, emit }) => {
9
13
  const callback = async (state, { configurable }) => {
10
14
  console.log(`Executing prompt node ${node.name}`);
@@ -21,10 +25,38 @@ const addPromptNode = async ({ graph, node, llm, tools, emit }) => {
21
25
  ${node.prompt ? `- User instructions: ${node.prompt}` : ''}
22
26
  ${state.memory ? `- Workflow memory: ${JSON.stringify(state.memory)}` : ''}
23
27
  `;
24
- const result = await llmToUse.bindTools(globalTools).invoke([
25
- ...state.messages,
26
- new messages_1.SystemMessage(message)
27
- ]);
28
+ const result = await llmToUse.bindTools(globalTools).invoke([...state.messages, new messages_1.SystemMessage(message)]);
29
+ // Check if the result contains tool calls
30
+ const aiMessage = result;
31
+ if (aiMessage.tool_calls && aiMessage.tool_calls.length > 0) {
32
+ // Execute the tools
33
+ const toolResults = [];
34
+ let updatedMemory = { ...state.memory };
35
+ for (const toolCall of aiMessage.tool_calls) {
36
+ const matchedTool = globalTools.find((t) => t.name === toolCall.name);
37
+ if (matchedTool) {
38
+ try {
39
+ // Invoke the LangChain tool directly
40
+ const toolResult = await matchedTool.invoke(toolCall);
41
+ updatedMemory = { ...updatedMemory, ...(0, extractToolMemoryResponse_1.default)(toolResult) };
42
+ toolResults.push(toolResult);
43
+ }
44
+ catch (error) {
45
+ console.error(`Error executing tool ${toolCall.name}:`, error);
46
+ const errorMessage = new messages_1.ToolMessage({
47
+ content: JSON.stringify({ error: error instanceof Error ? error.message : String(error) }),
48
+ tool_call_id: toolCall.id,
49
+ });
50
+ toolResults.push(errorMessage);
51
+ }
52
+ }
53
+ }
54
+ // Return the tool call message and tool results
55
+ return {
56
+ messages: [result, ...toolResults],
57
+ memory: updatedMemory,
58
+ };
59
+ }
28
60
  if (result.getType() === 'ai') {
29
61
  await emit(AgentEvents_1.AgentEvents.AI_MESSAGE, {
30
62
  message: result.content,
@@ -1 +1 @@
1
- {"version":3,"file":"addPromptNode.js","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":";;;AAKA,uDAAyD;AAEzD,iDAA8D;AAC9D,uDAA+E;AAE/E,gEAA6D;AAUtD,MAAM,aAAa,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAuB,EAAE,EAAE;IAC5F,MAAM,QAAQ,GAAiB,KAAK,EAAE,KAAmC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QAC7F,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,qCAAiB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAE1E,MAAM,WAAW,GAAG,KAAK;aACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAA,YAAa,EAAC,CAAC,KAAiC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAClG,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,KAAK;SACnB,CAAC,CACH,CAAC;QAEJ,MAAM,OAAO,GAAG;;MAEd,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;MACxD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;KACzE,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YAC1D,GAAG,KAAK,CAAC,QAAQ;YACjB,IAAI,wBAAa,CAAC,OAAO,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,yBAAW,CAAC,UAAU,EAAE;gBACjC,OAAO,EAAE,MAAM,CAAC,OAAiB;gBACjC,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,YAAY,CAAC,SAAS;aAClC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB,CAAC;IACJ,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC,CAAC;AAvCW,QAAA,aAAa,iBAuCxB"}
1
+ {"version":3,"file":"addPromptNode.js","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"addToolNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addToolNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAI7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,eAAO,MAAM,WAAW,GAAU,MAAM,EAAE,8BAKvC;IACD,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxB,GAAG,EAAE,CAAA,OAAO,YAAY,EAAC,MAAM,OAAO,YAAY,CAAC,CAAC;CACrD,kBAmCA,CAAC"}
1
+ {"version":3,"file":"addToolNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addToolNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAI7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAO,MAAM,WAAW,GAAU,MAAM,EAAE,8BAKvC;IACD,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxB,GAAG,EAAE,CAAC,OAAO,YAAY,EAAE,MAAM,OAAO,YAAY,CAAC,CAAC;CACvD,kBAqCA,CAAC"}
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.addToolNode = void 0;
4
7
  const tools_1 = require("@langchain/core/tools");
5
8
  const messages_1 = require("@langchain/core/messages");
9
+ const extractToolMemoryResponse_1 = __importDefault(require("../utils/extractToolMemoryResponse"));
6
10
  const addToolNode = async ({ graph, node, tools, llm, }) => {
7
11
  const toolNode = node;
8
12
  const matchedTool = tools.find((tool) => tool.name === toolNode.toolName);
@@ -30,26 +34,16 @@ const addToolNode = async ({ graph, node, tools, llm, }) => {
30
34
  Additional context:
31
35
  workflow memory: ${JSON.stringify(state.memory)}
32
36
  `;
33
- const AIToolCallMessage = await llm.bindTools([tool], {
37
+ const AIToolCallMessage = await llm
38
+ .bindTools([tool], {
34
39
  tool_choice: tool.name,
35
- }).invoke([...state.messages, new messages_1.SystemMessage(prompt)]);
40
+ })
41
+ .invoke([...state.messages, new messages_1.SystemMessage(prompt)]);
36
42
  const toolCallMessage = await tool.invoke(AIToolCallMessage.tool_calls[0]);
37
- const toolMemory = extractToolMemoryResponse(toolCallMessage);
43
+ const toolMemory = (0, extractToolMemoryResponse_1.default)(toolCallMessage);
38
44
  return { memory: toolMemory, messages: [AIToolCallMessage, toolCallMessage] };
39
45
  };
40
46
  graph.addNode(node.name, callback);
41
47
  };
42
48
  exports.addToolNode = addToolNode;
43
- const extractToolMemoryResponse = (toolMessage) => {
44
- try {
45
- const parsed = JSON.parse(toolMessage.content);
46
- if (typeof parsed === 'object' && parsed !== null && 'memory' in parsed) {
47
- return parsed.memory;
48
- }
49
- }
50
- catch (error) {
51
- console.error('Error parsing tool memory response', error);
52
- }
53
- return {};
54
- };
55
49
  //# sourceMappingURL=addToolNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addToolNode.js","sourceRoot":"","sources":["../../src/nodes/addToolNode.ts"],"names":[],"mappings":";;;AAEA,iDAA8D;AAE9D,uDAAsE;AAK/D,MAAM,WAAW,GAAG,KAAK,EAAU,EACxC,KAAK,EACL,IAAI,EACJ,KAAK,EACL,GAAG,GAMJ,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,IAAgB,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,QAAQ,GAAiB,KAAK,EAAE,KAAmC,EAAE,EAAE;QAC3E,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAEpD,MAAM,cAAc,GAAG,KAAK,EAAE,KAAwC,EAAE,EAAE;YACxE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAC1H,OAAO,QAAQ,IAAI,EAAE,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,IAAA,YAAa,EAAC,cAAc,EAAE;YACzC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,MAAM,EAAE,WAAW,CAAC,KAAK;SAC1B,CAAC,CAAC;QACH,MAAM,MAAM,GAAG;;6BAEU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;SAChD,CAAC;QACN,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE;YACpD,WAAW,EAAE,IAAI,CAAC,IAAI;SACvB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,wBAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1E,MAAM,UAAU,GAAG,yBAAyB,CAAS,eAA8B,CAAC,CAAC;QACrF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC;IAChF,CAAC,CAAA;IACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC,CAAC;AA7CW,QAAA,WAAW,eA6CtB;AAGF,MAAM,yBAAyB,GAAG,CAAS,WAAwB,EAAmB,EAAE;IACtF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAiB,CAAC,CAAC;QACzD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACxE,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC"}
1
+ {"version":3,"file":"addToolNode.js","sourceRoot":"","sources":["../../src/nodes/addToolNode.ts"],"names":[],"mappings":";;;;;;AAEA,iDAA8D;AAE9D,uDAAsE;AAItE,mGAA2E;AAEpE,MAAM,WAAW,GAAG,KAAK,EAAU,EACxC,KAAK,EACL,IAAI,EACJ,KAAK,EACL,GAAG,GAMJ,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,IAAgB,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,QAAQ,GAAiB,KAAK,EAAE,KAAmC,EAAE,EAAE;QAC3E,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAEpD,MAAM,cAAc,GAAG,KAAK,EAAE,KAAwC,EAAE,EAAE;YACxE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAC1H,OAAO,QAAQ,IAAI,EAAE,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,IAAA,YAAa,EAAC,cAAc,EAAE;YACzC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,MAAM,EAAE,WAAW,CAAC,KAAK;SAC1B,CAAC,CAAC;QACH,MAAM,MAAM,GAAG;;6BAEU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;SAChD,CAAC;QACN,MAAM,iBAAiB,GAAG,MAAM,GAAG;aAChC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE;YACjB,WAAW,EAAE,IAAI,CAAC,IAAI;SACvB,CAAC;aACD,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,wBAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAA,mCAAyB,EAAS,eAA8B,CAAC,CAAC;QACrF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC;IAChF,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC,CAAC;AA/CW,QAAA,WAAW,eA+CtB"}
@@ -0,0 +1,4 @@
1
+ import { ToolMessage } from '@langchain/core/messages';
2
+ declare const extractToolMemoryResponse: <Memory>(toolMessage: ToolMessage) => Partial<Memory>;
3
+ export default extractToolMemoryResponse;
4
+ //# sourceMappingURL=extractToolMemoryResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractToolMemoryResponse.d.ts","sourceRoot":"","sources":["../../src/utils/extractToolMemoryResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,QAAA,MAAM,yBAAyB,GAAI,MAAM,EAAE,aAAa,WAAW,KAAG,OAAO,CAAC,MAAM,CAUnF,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const extractToolMemoryResponse = (toolMessage) => {
4
+ try {
5
+ const parsed = JSON.parse(toolMessage.content);
6
+ if (typeof parsed === 'object' && parsed !== null && 'memory' in parsed) {
7
+ return parsed.memory;
8
+ }
9
+ }
10
+ catch (error) {
11
+ console.error('Error parsing tool memory response', error);
12
+ }
13
+ return {};
14
+ };
15
+ exports.default = extractToolMemoryResponse;
16
+ //# sourceMappingURL=extractToolMemoryResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractToolMemoryResponse.js","sourceRoot":"","sources":["../../src/utils/extractToolMemoryResponse.ts"],"names":[],"mappings":";;AAEA,MAAM,yBAAyB,GAAG,CAAS,WAAwB,EAAmB,EAAE;IACtF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAiB,CAAC,CAAC;QACzD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACxE,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,kBAAe,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minded-ai/mindedjs",
3
- "version": "1.0.33",
3
+ "version": "1.0.34",
4
4
  "description": "MindedJS is a TypeScript library for building agents.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -3,12 +3,13 @@ import { PromptNode } from '../types/Flows.types';
3
3
  import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
4
4
  import { z } from 'zod';
5
5
  import { BaseLanguageModel } from '@langchain/core/language_models/base';
6
- import { SystemMessage } from '@langchain/core/messages';
6
+ import { SystemMessage, AIMessage, ToolMessage } from '@langchain/core/messages';
7
7
  import { Tool } from '../types/Tools.types';
8
8
  import { tool as langchainTool } from '@langchain/core/tools';
9
9
  import { AgentEventRequestPayloads, AgentEvents } from '../events/AgentEvents';
10
10
  import { EmitSignature } from '../types/Agent.types';
11
11
  import { createLlmInstance } from '../llm/createLlmInstance';
12
+ import extractToolMemoryResponse from '../utils/extractToolMemoryResponse';
12
13
 
13
14
  type AddPromptNodeParams = {
14
15
  graph: PreCompiledGraph;
@@ -39,10 +40,40 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit }: AddPrompt
39
40
  ${state.memory ? `- Workflow memory: ${JSON.stringify(state.memory)}` : ''}
40
41
  `;
41
42
 
42
- const result = await llmToUse.bindTools(globalTools).invoke([
43
- ...state.messages,
44
- new SystemMessage(message)
45
- ]);
43
+ const result = await llmToUse.bindTools(globalTools).invoke([...state.messages, new SystemMessage(message)]);
44
+
45
+ // Check if the result contains tool calls
46
+ const aiMessage = result as AIMessage;
47
+ if (aiMessage.tool_calls && aiMessage.tool_calls.length > 0) {
48
+ // Execute the tools
49
+ const toolResults = [];
50
+ let updatedMemory = { ...state.memory };
51
+
52
+ for (const toolCall of aiMessage.tool_calls) {
53
+ const matchedTool = globalTools.find((t) => t.name === toolCall.name);
54
+ if (matchedTool) {
55
+ try {
56
+ // Invoke the LangChain tool directly
57
+ const toolResult = await matchedTool.invoke(toolCall);
58
+ updatedMemory = { ...updatedMemory, ...extractToolMemoryResponse(toolResult) };
59
+ toolResults.push(toolResult);
60
+ } catch (error) {
61
+ console.error(`Error executing tool ${toolCall.name}:`, error);
62
+ const errorMessage = new ToolMessage({
63
+ content: JSON.stringify({ error: error instanceof Error ? error.message : String(error) }),
64
+ tool_call_id: toolCall.id!,
65
+ });
66
+ toolResults.push(errorMessage);
67
+ }
68
+ }
69
+ }
70
+
71
+ // Return the tool call message and tool results
72
+ return {
73
+ messages: [result, ...toolResults],
74
+ memory: updatedMemory,
75
+ };
76
+ }
46
77
 
47
78
  if (result.getType() === 'ai') {
48
79
  await emit(AgentEvents.AI_MESSAGE, {
@@ -6,6 +6,7 @@ import { SystemMessage, ToolMessage } from '@langchain/core/messages';
6
6
  import { RunnableLike } from '@langchain/core/runnables';
7
7
  import { z } from 'zod';
8
8
  import { LLMProviders } from '../types/LLM.types';
9
+ import extractToolMemoryResponse from '../utils/extractToolMemoryResponse';
9
10
 
10
11
  export const addToolNode = async <Memory>({
11
12
  graph,
@@ -16,7 +17,7 @@ export const addToolNode = async <Memory>({
16
17
  graph: PreCompiledGraph;
17
18
  node: ToolNode;
18
19
  tools: Tool<any, any>[];
19
- llm: typeof LLMProviders[keyof typeof LLMProviders];
20
+ llm: (typeof LLMProviders)[keyof typeof LLMProviders];
20
21
  }) => {
21
22
  const toolNode = node as ToolNode;
22
23
  const matchedTool = tools.find((tool) => tool.name === toolNode.toolName);
@@ -44,25 +45,14 @@ export const addToolNode = async <Memory>({
44
45
  Additional context:
45
46
  workflow memory: ${JSON.stringify(state.memory)}
46
47
  `;
47
- const AIToolCallMessage = await llm.bindTools([tool], {
48
- tool_choice: tool.name,
49
- }).invoke([...state.messages, new SystemMessage(prompt)]);
50
- const toolCallMessage = await tool.invoke(AIToolCallMessage.tool_calls[0])
48
+ const AIToolCallMessage = await llm
49
+ .bindTools([tool], {
50
+ tool_choice: tool.name,
51
+ })
52
+ .invoke([...state.messages, new SystemMessage(prompt)]);
53
+ const toolCallMessage = await tool.invoke(AIToolCallMessage.tool_calls[0]);
51
54
  const toolMemory = extractToolMemoryResponse<Memory>(toolCallMessage as ToolMessage);
52
55
  return { memory: toolMemory, messages: [AIToolCallMessage, toolCallMessage] };
53
- }
56
+ };
54
57
  graph.addNode(node.name, callback);
55
58
  };
56
-
57
-
58
- const extractToolMemoryResponse = <Memory>(toolMessage: ToolMessage): Partial<Memory> => {
59
- try {
60
- const parsed = JSON.parse(toolMessage.content as string);
61
- if (typeof parsed === 'object' && parsed !== null && 'memory' in parsed) {
62
- return parsed.memory;
63
- }
64
- } catch (error) {
65
- console.error('Error parsing tool memory response', error);
66
- }
67
- return {};
68
- };
@@ -0,0 +1,15 @@
1
+ import { ToolMessage } from '@langchain/core/messages';
2
+
3
+ const extractToolMemoryResponse = <Memory>(toolMessage: ToolMessage): Partial<Memory> => {
4
+ try {
5
+ const parsed = JSON.parse(toolMessage.content as string);
6
+ if (typeof parsed === 'object' && parsed !== null && 'memory' in parsed) {
7
+ return parsed.memory;
8
+ }
9
+ } catch (error) {
10
+ console.error('Error parsing tool memory response', error);
11
+ }
12
+ return {};
13
+ };
14
+
15
+ export default extractToolMemoryResponse;