@minded-ai/mindedjs 2.0.43 → 2.0.44

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":"addThinkingNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addThinkingNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAe,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,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;IAC/D,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,6BAA6B,qBAAqB,kBA4EvF,CAAC"}
1
+ {"version":3,"file":"addThinkingNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addThinkingNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAe,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AASjC,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,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;IAC/D,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,6BAA6B,qBAAqB,kBAuGvF,CAAC"}
@@ -9,6 +9,8 @@ const history_1 = require("../utils/history");
9
9
  const compilePrompt_1 = require("./compilePrompt");
10
10
  const Analytics_types_1 = require("../types/Analytics.types");
11
11
  const analytics_1 = require("../internalTools/analytics");
12
+ const schemaConverter_1 = require("../utils/schemaConverter");
13
+ const uuid_1 = require("uuid");
12
14
  const addThinkingNode = async ({ graph, node, llm, agent }) => {
13
15
  const callback = async (state) => {
14
16
  (0, analytics_1.trackAnalyticsEvent)(Analytics_types_1.AnalyticsEventName.NODE_EXECUTION, {
@@ -29,8 +31,15 @@ const addThinkingNode = async ({ graph, node, llm, agent }) => {
29
31
  // We add the system message for this node
30
32
  const messagesForModel = [...state.messages];
31
33
  messagesForModel.push(systemMessage);
34
+ // Check if we need structured output
35
+ const useStructuredOutput = node.outputSchema && node.outputSchema.length > 0;
36
+ let llmWithStructuredOutput = llmToUse;
37
+ if (useStructuredOutput) {
38
+ const zodSchema = (0, schemaConverter_1.convertArraySchemaToZod)(node.outputSchema);
39
+ llmWithStructuredOutput = llmToUse.withStructuredOutput(zodSchema, { name: 'extract' });
40
+ }
32
41
  const startTime = Date.now();
33
- const result = await llmToUse.invoke(messagesForModel);
42
+ const result = await llmWithStructuredOutput.invoke(messagesForModel);
34
43
  const endTime = Date.now();
35
44
  logger_1.logger.debug({
36
45
  msg: '[Model] Thinking node execution time',
@@ -40,17 +49,33 @@ const addThinkingNode = async ({ graph, node, llm, agent }) => {
40
49
  });
41
50
  await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, state);
42
51
  // Inject metadata to identify this as a thinking node output
43
- const messageWithMetadata = new messages_1.AIMessage({
44
- content: result.content,
45
- additional_kwargs: {
46
- ...result.additional_kwargs,
47
- mindedMetadata: {
48
- nodeType: Flows_types_1.NodeType.THINKING,
49
- nodeDisplayName: node.displayName,
50
- prompt: node.prompt,
51
- },
52
+ const additionalKwargs = {
53
+ mindedMetadata: {
54
+ nodeType: Flows_types_1.NodeType.THINKING,
55
+ nodeDisplayName: node.displayName,
56
+ prompt: node.prompt,
52
57
  },
53
- id: result.id,
58
+ };
59
+ let messageId;
60
+ let messageContent;
61
+ // When structured output is used, result is the raw extracted data (not an AIMessage)
62
+ // When not used, result is an AIMessage with content and id
63
+ if (useStructuredOutput) {
64
+ additionalKwargs.structuredOutput = result;
65
+ messageId = (0, uuid_1.v4)();
66
+ messageContent = JSON.stringify(result);
67
+ }
68
+ else {
69
+ // result is an AIMessage, preserve its additional_kwargs and id
70
+ const aiResult = result;
71
+ Object.assign(additionalKwargs, aiResult.additional_kwargs);
72
+ messageId = aiResult.id;
73
+ messageContent = aiResult.content;
74
+ }
75
+ const messageWithMetadata = new messages_1.AIMessage({
76
+ content: messageContent,
77
+ additional_kwargs: additionalKwargs,
78
+ id: messageId,
54
79
  });
55
80
  // Add to state messages
56
81
  state.messages.push(messageWithMetadata);
@@ -1 +1 @@
1
- {"version":3,"file":"addThinkingNode.js","sourceRoot":"","sources":["../../src/nodes/addThinkingNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addThinkingNode.js","sourceRoot":"","sources":["../../src/nodes/addThinkingNode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compilePrompt.d.ts","sourceRoot":"","sources":["../../src/nodes/compilePrompt.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,MAAM,CAgBtF"}
1
+ {"version":3,"file":"compilePrompt.d.ts","sourceRoot":"","sources":["../../src/nodes/compilePrompt.ts"],"names":[],"mappings":"AAmEA;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,MAAM,CA2BtF"}
@@ -36,6 +36,65 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.compilePrompt = compilePrompt;
37
37
  const ejs = __importStar(require("ejs"));
38
38
  const logger_1 = require("../utils/logger");
39
+ /**
40
+ * Extract node outputs from state.history and state.messages
41
+ * Returns a map of nodeId/nodeDisplayName -> output object
42
+ */
43
+ function extractNodeOutputs(state) {
44
+ var _a, _b;
45
+ if (!(state === null || state === void 0 ? void 0 : state.history) || !(state === null || state === void 0 ? void 0 : state.messages)) {
46
+ return {};
47
+ }
48
+ const outputs = {};
49
+ // Build lookup maps by message type
50
+ const messagesByType = {
51
+ tool: new Map(state.messages
52
+ .filter((msg) => { var _a; return ((_a = msg.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ToolMessage' && msg.tool_call_id; })
53
+ .map((msg) => [msg.tool_call_id, msg])),
54
+ ai: new Map(state.messages.filter((msg) => { var _a; return ((_a = msg.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'AIMessage' && msg.id; }).map((msg) => [msg.id, msg])),
55
+ };
56
+ const setOutput = (item, value) => {
57
+ if (item.nodeId)
58
+ outputs[item.nodeId] = value;
59
+ if (item.nodeDisplayName)
60
+ outputs[item.nodeDisplayName] = value;
61
+ };
62
+ const extractors = {
63
+ tool: (item) => {
64
+ var _a, _b, _c, _d;
65
+ const toolCallId = (_b = (_a = item.messageIds) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : (_c = item.messageIds) === null || _c === void 0 ? void 0 : _c[0];
66
+ const toolMessage = messagesByType.tool.get(toolCallId);
67
+ if (!toolMessage)
68
+ return;
69
+ try {
70
+ const content = typeof toolMessage.content === 'string' ? JSON.parse(toolMessage.content) : toolMessage.content;
71
+ setOutput(item, (_d = content === null || content === void 0 ? void 0 : content.result) !== null && _d !== void 0 ? _d : content);
72
+ }
73
+ catch (err) {
74
+ logger_1.logger.debug({ message: 'Failed to parse tool message content', toolCallId, err });
75
+ }
76
+ },
77
+ thinking: (item) => {
78
+ var _a, _b;
79
+ const messageId = (_a = item.messageIds) === null || _a === void 0 ? void 0 : _a[0];
80
+ if (!messageId)
81
+ return;
82
+ const aiMessage = messagesByType.ai.get(messageId);
83
+ if (!aiMessage)
84
+ return;
85
+ const structuredOutput = (_b = aiMessage.additional_kwargs) === null || _b === void 0 ? void 0 : _b.structuredOutput;
86
+ if (structuredOutput) {
87
+ setOutput(item, structuredOutput);
88
+ }
89
+ },
90
+ };
91
+ for (const item of state.history) {
92
+ if (!((_a = item.messageIds) === null || _a === void 0 ? void 0 : _a.length))
93
+ continue;
94
+ (_b = extractors[item.type]) === null || _b === void 0 ? void 0 : _b.call(extractors, item);
95
+ }
96
+ return outputs;
97
+ }
39
98
  /**
40
99
  * Compile prompt with parameters using EJS and placeholder replacement
41
100
  */
@@ -43,6 +102,16 @@ function compilePrompt(prompt, params = {}) {
43
102
  try {
44
103
  // Define system parameters
45
104
  params.system = { currentTime: new Date().toISOString() };
105
+ // Extract node outputs from state if available
106
+ // This enables placeholder replacement like {tools.NodeName.field} or {NodeName.field}
107
+ // by making previous node outputs available in the params object.
108
+ // Example: If ExtractUser node outputs { userName: "Bob", userAge: 35 },
109
+ // the prompt "Hello {tools.ExtractUser.userName}" becomes "Hello Bob"
110
+ if (params.state) {
111
+ const nodeOutputs = extractNodeOutputs(params.state);
112
+ // Merge node outputs into params so they're accessible during placeholder replacement
113
+ params = { ...params, ...nodeOutputs };
114
+ }
46
115
  // First, render with EJS
47
116
  let compiledPrompt = ejs.render(prompt, params);
48
117
  // Then, replace placeholders in {} format
@@ -50,23 +119,34 @@ function compilePrompt(prompt, params = {}) {
50
119
  return compiledPrompt;
51
120
  }
52
121
  catch (err) {
53
- logger_1.logger.error({ message: 'Error compiling prompt', err });
122
+ logger_1.logger.error({ message: 'Error compiling prompt', err, prompt });
54
123
  return prompt; // Return uncompiled if there's an error
55
124
  }
56
125
  }
57
126
  /**
58
127
  * Replace placeholders in {key} format
128
+ * Supports both:
129
+ * - {NodeName.field} - direct node reference
130
+ * - {tools.NodeName.field} - node reference with 'tools' prefix (alias)
59
131
  */
60
132
  function replacePlaceholders(text, params) {
61
133
  return text.replace(/\{([^}]+)\}/g, (match, key) => {
62
- const keys = key.split('.');
134
+ let keys = key.split('.');
135
+ // Handle 'tools.' prefix as an alias for node outputs
136
+ // {tools.NodeName.field} -> {NodeName.field}
137
+ if (keys[0] === 'tools' && keys.length >= 3) {
138
+ keys = keys.slice(1); // Remove 'tools' prefix
139
+ }
63
140
  let value = params;
64
- for (const k of keys) {
141
+ for (let i = 0; i < keys.length; i++) {
142
+ const k = keys[i];
65
143
  if (value && typeof value === 'object' && k in value) {
66
144
  value = value[k];
67
145
  }
68
146
  else {
69
- logger_1.logger.warn({ message: `Placeholder {${key}} in prompt not found in params. It will remain as placeholder.` });
147
+ logger_1.logger.warn({
148
+ message: `Placeholder {${key}} in prompt not found in params. It will remain as placeholder.`,
149
+ });
70
150
  return match; // Return original if key not found
71
151
  }
72
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compilePrompt.js","sourceRoot":"","sources":["../../src/nodes/compilePrompt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,sCAgBC;AAtBD,yCAA2B;AAC3B,4CAAyC;AAEzC;;GAEG;AACH,SAAgB,aAAa,CAAC,MAAc,EAAE,SAA8B,EAAE;IAC5E,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,CAAC,MAAM,GAAG,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAE1D,yBAAyB;QACzB,IAAI,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,0CAA0C;QAC1C,cAAc,GAAG,mBAAmB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAE7D,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,CAAC,wCAAwC;IACzD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,MAA2B;IACpE,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,KAAK,GAAQ,MAAM,CAAC;QAExB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBACrD,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,iEAAiE,EAAE,CAAC,CAAC;gBAC/G,OAAO,KAAK,CAAC,CAAC,mCAAmC;YACnD,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"compilePrompt.js","sourceRoot":"","sources":["../../src/nodes/compilePrompt.ts"],"names":[],"mappings":"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"}
@@ -91,6 +91,31 @@ export interface ScheduleTriggerNode extends BaseTriggerNode {
91
91
  */
92
92
  timezone?: string;
93
93
  }
94
+ /**
95
+ * Base schema field type for backward compatibility with platform.
96
+ * Represents simple input/output schema fields (string and number only).
97
+ */
98
+ export interface SchemaField {
99
+ name: string;
100
+ type: 'string' | 'number';
101
+ description?: string;
102
+ required?: boolean;
103
+ }
104
+ /**
105
+ * Extended schema field type with support for complex types (boolean, array, object).
106
+ * Uses Omit to override the 'type' field and intersection type (&) with Partial<> to
107
+ * elegantly add optional properties for complex types (items, properties).
108
+ * Filtered for backward compatibility when communicating with platform.
109
+ */
110
+ export type OutputSchemaField = Omit<SchemaField, 'type'> & {
111
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object';
112
+ } & Partial<{
113
+ items: {
114
+ type: 'string' | 'number' | 'boolean' | 'object';
115
+ properties?: any;
116
+ };
117
+ properties: any;
118
+ }>;
94
119
  export interface PromptNode extends BaseNode {
95
120
  type: NodeType.PROMPT_NODE;
96
121
  prompt: string;
@@ -100,6 +125,7 @@ export interface ThinkingNode extends BaseNode {
100
125
  type: NodeType.THINKING;
101
126
  prompt: string;
102
127
  llmConfig?: LLMConfig;
128
+ outputSchema?: OutputSchemaField[];
103
129
  }
104
130
  export interface JumpToNode extends BaseNode {
105
131
  type: NodeType.JUMP_TO_NODE;
@@ -109,18 +135,8 @@ export interface BrowserTaskNode extends BaseNode {
109
135
  type: NodeType.BROWSER_TASK;
110
136
  prompt: string;
111
137
  model?: string;
112
- inputSchema?: {
113
- name: string;
114
- type: 'string' | 'number';
115
- description?: string;
116
- required?: boolean;
117
- }[];
118
- outputSchema?: {
119
- name: string;
120
- type: 'string' | 'number';
121
- description?: string;
122
- required?: boolean;
123
- }[];
138
+ inputSchema?: SchemaField[];
139
+ outputSchema?: OutputSchemaField[];
124
140
  autoTrigger?: boolean;
125
141
  defaultPayload?: string;
126
142
  proxy?: string;
@@ -150,17 +166,7 @@ export interface RpaStep {
150
166
  shouldReplaceExistingText?: boolean;
151
167
  waitTime?: number;
152
168
  description?: string;
153
- outputSchema?: {
154
- name: string;
155
- type: 'string' | 'number' | 'boolean' | 'array' | 'object';
156
- description?: string;
157
- required?: boolean;
158
- items?: {
159
- type: 'string' | 'number' | 'boolean' | 'object';
160
- properties?: any;
161
- };
162
- properties?: any;
163
- }[];
169
+ outputSchema?: OutputSchemaField[];
164
170
  }
165
171
  export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode | VoiceTriggerNode | InterfaceTriggerNode | ScheduleTriggerNode;
166
172
  export interface JunctionNode extends BaseNode {
@@ -172,6 +178,13 @@ export interface ToolNode extends BaseNode {
172
178
  prompt: string;
173
179
  appImgSrc?: string;
174
180
  parameters?: Record<string, any>;
181
+ inputSchema?: {
182
+ name: string;
183
+ type: 'string' | 'number' | 'boolean' | 'array';
184
+ description?: string;
185
+ required?: boolean;
186
+ }[];
187
+ outputSchema?: OutputSchemaField[];
175
188
  }
176
189
  export interface AppToolNode extends BaseNode, BaseAppNode {
177
190
  type: NodeType.APP_TOOL;
@@ -1 +1 @@
1
- {"version":3,"file":"Flows.types.d.ts","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Flows.types.d.ts","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Flows.types.js","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":";;;AAMA,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,gCAAoB,CAAA;IACpB,sCAA0B,CAAA;IAC1B,uCAA2B,CAAA;IAC3B,wCAA4B,CAAA;IAC5B,iCAAqB,CAAA;AACvB,CAAC,EATW,QAAQ,wBAAR,QAAQ,QASnB;AAED,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,kDAAsC,CAAA;IACtC,gDAAoC,CAAA;IACpC,wCAA4B,CAAA;AAC9B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAWD,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;IACf,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;AACvB,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AA0GD,IAAY,aASX;AATD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,0CAAyB,CAAA;IACzB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,8CAA6B,CAAA;AAC/B,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB;AAwFD,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,2CAAoB,CAAA;AACtB,CAAC,EAFW,mBAAmB,mCAAnB,mBAAmB,QAE9B;AAsBD,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,uCAAe,CAAA;IACf,yCAAiB,CAAA;IACjB,mCAAW,CAAA;AACb,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAQD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,4DAAuC,CAAA;IACvC,oDAA+B,CAAA;AACjC,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,4DAAqC,CAAA;IACrC,4CAAqB,CAAA;IACrB,2DAAoC,CAAA;AACtC,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B"}
1
+ {"version":3,"file":"Flows.types.js","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":";;;AAMA,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,gCAAoB,CAAA;IACpB,sCAA0B,CAAA;IAC1B,uCAA2B,CAAA;IAC3B,wCAA4B,CAAA;IAC5B,iCAAqB,CAAA;AACvB,CAAC,EATW,QAAQ,wBAAR,QAAQ,QASnB;AAED,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,kDAAsC,CAAA;IACtC,gDAAoC,CAAA;IACpC,wCAA4B,CAAA;AAC9B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAWD,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;IACf,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;AACvB,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AA4HD,IAAY,aASX;AATD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,0CAAyB,CAAA;IACzB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,8CAA6B,CAAA;AAC/B,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB;AA6ED,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,2CAAoB,CAAA;AACtB,CAAC,EAFW,mBAAmB,mCAAnB,mBAAmB,QAE9B;AAsBD,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,uCAAe,CAAA;IACf,yCAAiB,CAAA;IACjB,mCAAW,CAAA;AACb,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAQD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,4DAAuC,CAAA;IACvC,oDAA+B,CAAA;AACjC,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,4DAAqC,CAAA;IACrC,4CAAqB,CAAA;IACrB,2DAAoC,CAAA;AACtC,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B"}
@@ -6,11 +6,12 @@ import { BrowserTaskMode } from '../browserTask/types';
6
6
  export type ToolReturnType = {
7
7
  result?: any;
8
8
  } | void;
9
- export type Tool<Input extends z.ZodSchema, Memory = any> = RPATool<Input, Memory> | DefaultTool<Input, Memory>;
10
- export interface RPATool<Input extends z.ZodSchema, Memory = any> {
9
+ export type Tool<Input extends z.ZodSchema, Memory = any, Output extends z.ZodSchema = any> = RPATool<Input, Memory, Output> | DefaultTool<Input, Memory, Output>;
10
+ export interface RPATool<Input extends z.ZodSchema, Memory = any, Output extends z.ZodSchema = any> {
11
11
  name: string;
12
12
  description: string;
13
13
  input: Input;
14
+ output?: Output;
14
15
  isGlobal?: boolean;
15
16
  allowExecutionRequests?: boolean;
16
17
  type: 'rpa';
@@ -18,10 +19,11 @@ export interface RPATool<Input extends z.ZodSchema, Memory = any> {
18
19
  browserTaskMode?: BrowserTaskMode;
19
20
  execute: (input: RPAToolExecuteInput<Input, Memory>) => Promise<ToolReturnType>;
20
21
  }
21
- export interface DefaultTool<Input extends z.ZodSchema, Memory = any> {
22
+ export interface DefaultTool<Input extends z.ZodSchema, Memory = any, Output extends z.ZodSchema = any> {
22
23
  name: string;
23
24
  description: string;
24
25
  input: Input;
26
+ output?: Output;
25
27
  isGlobal?: boolean;
26
28
  allowExecutionRequests?: boolean;
27
29
  type?: 'default';
@@ -1 +1 @@
1
- {"version":3,"file":"Tools.types.d.ts","sourceRoot":"","sources":["../../src/types/Tools.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,IAAI,CAAC;AAGrD,MAAM,MAAM,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAGhH,MAAM,WAAW,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CACjF;AAGD,MAAM,WAAW,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAC9E;AAGD,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG;IACvE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAGD,MAAM,WAAW,mBAAmB,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAE,SAAQ,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC;IACnH,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,oBAAY,QAAQ;IAClB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB"}
1
+ {"version":3,"file":"Tools.types.d.ts","sourceRoot":"","sources":["../../src/types/Tools.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,IAAI,CAAC;AAGrD,MAAM,MAAM,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,IACtF,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,GAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAGvC,MAAM,WAAW,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG;IAChG,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CACjF;AAGD,MAAM,WAAW,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG;IACpG,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAC9E;AAGD,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG;IACvE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAGD,MAAM,WAAW,mBAAmB,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAE,SAAQ,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC;IACnH,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,oBAAY,QAAQ;IAClB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tools.types.js","sourceRoot":"","sources":["../../src/types/Tools.types.ts"],"names":[],"mappings":";;;AAuDA,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,+BAAmB,CAAA;AACrB,CAAC,EAHW,QAAQ,wBAAR,QAAQ,QAGnB"}
1
+ {"version":3,"file":"Tools.types.js","sourceRoot":"","sources":["../../src/types/Tools.types.ts"],"names":[],"mappings":";;;AA2DA,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,+BAAmB,CAAA;AACrB,CAAC,EAHW,QAAQ,wBAAR,QAAQ,QAGnB"}
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+ export declare function convertArraySchemaToZod(schemaArray: unknown): z.ZodObject<any>;
3
+ //# sourceMappingURL=schemaConverter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaConverter.d.ts","sourceRoot":"","sources":["../../src/utils/schemaConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CA6E9E"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertArraySchemaToZod = convertArraySchemaToZod;
4
+ const zod_1 = require("zod");
5
+ const logger_1 = require("./logger");
6
+ function convertArraySchemaToZod(schemaArray) {
7
+ if (schemaArray && typeof schemaArray === 'object' && '_def' in schemaArray) {
8
+ return schemaArray;
9
+ }
10
+ if (!Array.isArray(schemaArray) || schemaArray.length === 0) {
11
+ logger_1.logger.warn({ message: 'Empty or invalid schema array provided to convertArraySchemaToZod', schemaArray });
12
+ return zod_1.z.object({});
13
+ }
14
+ const typeMap = {
15
+ string: () => zod_1.z.string(),
16
+ number: () => zod_1.z.number(),
17
+ boolean: () => zod_1.z.boolean(),
18
+ // For arrays, check if items are defined, otherwise default to string array
19
+ array: (field) => {
20
+ var _a;
21
+ if ((_a = field.items) === null || _a === void 0 ? void 0 : _a.type) {
22
+ const itemTypeMap = {
23
+ string: zod_1.z.string(),
24
+ number: zod_1.z.number(),
25
+ boolean: zod_1.z.boolean(),
26
+ };
27
+ return zod_1.z.array(itemTypeMap[field.items.type] || zod_1.z.string());
28
+ }
29
+ return zod_1.z.array(zod_1.z.string());
30
+ },
31
+ // For objects, create a record type that allows any key-value pairs
32
+ // OpenAI's structured outputs don't support truly dynamic objects well
33
+ // So we use record(string, string) which is the most flexible allowed format
34
+ object: (field) => {
35
+ if (field.properties && Object.keys(field.properties).length > 0) {
36
+ // If properties are defined, create a structured object
37
+ const shape = Object.fromEntries(Object.entries(field.properties).map(([key, value]) => {
38
+ const propType = value.type || 'string';
39
+ const propTypeMap = {
40
+ string: zod_1.z.string(),
41
+ number: zod_1.z.number(),
42
+ boolean: zod_1.z.boolean(),
43
+ };
44
+ return [key, propTypeMap[propType] || zod_1.z.string()];
45
+ }));
46
+ return zod_1.z.object(shape);
47
+ }
48
+ // If no properties defined, use record(string, string) for maximum compatibility
49
+ // This allows any key-value pairs where values are strings
50
+ return zod_1.z.record(zod_1.z.string(), zod_1.z.string());
51
+ },
52
+ };
53
+ const shape = Object.fromEntries(schemaArray.map((field) => {
54
+ const typeFunc = typeMap[field.type];
55
+ let schema = typeFunc ? typeFunc(field) : zod_1.z.any();
56
+ if (field.description) {
57
+ schema = schema.describe(field.description);
58
+ }
59
+ // OpenAI's structured outputs require all fields in the 'required' array
60
+ // To make a field optional, we use .nullable() which means the field is required but can be null
61
+ // This satisfies OpenAI's requirement while allowing optional fields
62
+ if (!field.required) {
63
+ schema = schema.nullable();
64
+ }
65
+ return [field.name, schema];
66
+ }));
67
+ // Create the final Zod object
68
+ // Note: All fields will be in the 'required' array for OpenAI's JSON schema
69
+ // Optional fields are handled by .nullable() above
70
+ const zodObject = zod_1.z.object(shape);
71
+ return zodObject;
72
+ }
73
+ //# sourceMappingURL=schemaConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaConverter.js","sourceRoot":"","sources":["../../src/utils/schemaConverter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minded-ai/mindedjs",
3
- "version": "2.0.43",
3
+ "version": "2.0.44",
4
4
  "description": "MindedJS is a TypeScript library for building agents.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -72,4 +72,4 @@
72
72
  "peerDependencies": {
73
73
  "playwright": "^1.55.0"
74
74
  }
75
- }
75
+ }
@@ -95,7 +95,7 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit, agent }: Ad
95
95
  });
96
96
 
97
97
  return toolResult;
98
- }
98
+ },
99
99
  );
100
100
 
101
101
  return result;
@@ -13,6 +13,8 @@ import { createHistoryStep } from '../utils/history';
13
13
  import { compilePrompt } from './compilePrompt';
14
14
  import { AnalyticsEventName } from '../types/Analytics.types';
15
15
  import { trackAnalyticsEvent } from '../internalTools/analytics';
16
+ import { convertArraySchemaToZod } from '../utils/schemaConverter';
17
+ import { v4 as uuidv4 } from 'uuid';
16
18
 
17
19
  type AddThinkingNodeParams = {
18
20
  graph: PreCompiledGraph;
@@ -51,8 +53,17 @@ export const addThinkingNode = async ({ graph, node, llm, agent }: AddThinkingNo
51
53
  const messagesForModel = [...state.messages];
52
54
  messagesForModel.push(systemMessage);
53
55
 
56
+ // Check if we need structured output
57
+ const useStructuredOutput = node.outputSchema && node.outputSchema.length > 0;
58
+ let llmWithStructuredOutput = llmToUse;
59
+
60
+ if (useStructuredOutput) {
61
+ const zodSchema = convertArraySchemaToZod(node.outputSchema!);
62
+ llmWithStructuredOutput = llmToUse.withStructuredOutput(zodSchema, { name: 'extract' });
63
+ }
64
+
54
65
  const startTime = Date.now();
55
- const result: AIMessage = await llmToUse.invoke(messagesForModel);
66
+ const result = await llmWithStructuredOutput.invoke(messagesForModel);
56
67
  const endTime = Date.now();
57
68
 
58
69
  logger.debug({
@@ -65,17 +76,35 @@ export const addThinkingNode = async ({ graph, node, llm, agent }: AddThinkingNo
65
76
  await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, state);
66
77
 
67
78
  // Inject metadata to identify this as a thinking node output
68
- const messageWithMetadata = new AIMessage({
69
- content: result.content,
70
- additional_kwargs: {
71
- ...result.additional_kwargs,
72
- mindedMetadata: {
73
- nodeType: NodeType.THINKING,
74
- nodeDisplayName: node.displayName,
75
- prompt: node.prompt,
76
- },
79
+ const additionalKwargs: Record<string, any> = {
80
+ mindedMetadata: {
81
+ nodeType: NodeType.THINKING,
82
+ nodeDisplayName: node.displayName,
83
+ prompt: node.prompt,
77
84
  },
78
- id: result.id,
85
+ };
86
+
87
+ let messageId: string;
88
+ let messageContent: string;
89
+
90
+ // When structured output is used, result is the raw extracted data (not an AIMessage)
91
+ // When not used, result is an AIMessage with content and id
92
+ if (useStructuredOutput) {
93
+ additionalKwargs.structuredOutput = result;
94
+ messageId = uuidv4();
95
+ messageContent = JSON.stringify(result);
96
+ } else {
97
+ // result is an AIMessage, preserve its additional_kwargs and id
98
+ const aiResult = result as AIMessage;
99
+ Object.assign(additionalKwargs, aiResult.additional_kwargs);
100
+ messageId = aiResult.id!;
101
+ messageContent = aiResult.content as string;
102
+ }
103
+
104
+ const messageWithMetadata = new AIMessage({
105
+ content: messageContent,
106
+ additional_kwargs: additionalKwargs,
107
+ id: messageId,
79
108
  });
80
109
 
81
110
  // Add to state messages
@@ -100,4 +129,3 @@ export const addThinkingNode = async ({ graph, node, llm, agent }: AddThinkingNo
100
129
  };
101
130
  graph.addNode(node.name, callback);
102
131
  };
103
-
@@ -1,5 +1,69 @@
1
1
  import * as ejs from 'ejs';
2
2
  import { logger } from '../utils/logger';
3
+ import { HistoryStep } from '../types/Agent.types';
4
+
5
+ /**
6
+ * Extract node outputs from state.history and state.messages
7
+ * Returns a map of nodeId/nodeDisplayName -> output object
8
+ */
9
+ function extractNodeOutputs(state: any): Record<string, any> {
10
+ if (!state?.history || !state?.messages) {
11
+ return {};
12
+ }
13
+
14
+ const outputs: Record<string, any> = {};
15
+
16
+ // Build lookup maps by message type
17
+ const messagesByType = {
18
+ tool: new Map(
19
+ state.messages
20
+ .filter((msg: any) => msg.constructor?.name === 'ToolMessage' && msg.tool_call_id)
21
+ .map((msg: any) => [msg.tool_call_id, msg]),
22
+ ),
23
+ ai: new Map(state.messages.filter((msg: any) => msg.constructor?.name === 'AIMessage' && msg.id).map((msg: any) => [msg.id, msg])),
24
+ };
25
+
26
+ const setOutput = (item: HistoryStep, value: any) => {
27
+ if (item.nodeId) outputs[item.nodeId] = value;
28
+ if (item.nodeDisplayName) outputs[item.nodeDisplayName] = value;
29
+ };
30
+
31
+ const extractors: Record<string, (item: HistoryStep) => void> = {
32
+ tool: (item) => {
33
+ const toolCallId = item.messageIds?.[1] ?? item.messageIds?.[0];
34
+ const toolMessage: any = messagesByType.tool.get(toolCallId);
35
+ if (!toolMessage) return;
36
+
37
+ try {
38
+ const content = typeof toolMessage.content === 'string' ? JSON.parse(toolMessage.content) : toolMessage.content;
39
+ setOutput(item, content?.result ?? content);
40
+ } catch (err) {
41
+ logger.debug({ message: 'Failed to parse tool message content', toolCallId, err });
42
+ }
43
+ },
44
+
45
+ thinking: (item) => {
46
+ const messageId = item.messageIds?.[0];
47
+ if (!messageId) return;
48
+
49
+ const aiMessage: any = messagesByType.ai.get(messageId);
50
+ if (!aiMessage) return;
51
+
52
+ const structuredOutput = aiMessage.additional_kwargs?.structuredOutput;
53
+
54
+ if (structuredOutput) {
55
+ setOutput(item, structuredOutput);
56
+ }
57
+ },
58
+ };
59
+
60
+ for (const item of state.history) {
61
+ if (!item.messageIds?.length) continue;
62
+ extractors[item.type]?.(item);
63
+ }
64
+
65
+ return outputs;
66
+ }
3
67
 
4
68
  /**
5
69
  * Compile prompt with parameters using EJS and placeholder replacement
@@ -9,6 +73,17 @@ export function compilePrompt(prompt: string, params: Record<string, any> = {}):
9
73
  // Define system parameters
10
74
  params.system = { currentTime: new Date().toISOString() };
11
75
 
76
+ // Extract node outputs from state if available
77
+ // This enables placeholder replacement like {tools.NodeName.field} or {NodeName.field}
78
+ // by making previous node outputs available in the params object.
79
+ // Example: If ExtractUser node outputs { userName: "Bob", userAge: 35 },
80
+ // the prompt "Hello {tools.ExtractUser.userName}" becomes "Hello Bob"
81
+ if (params.state) {
82
+ const nodeOutputs = extractNodeOutputs(params.state);
83
+ // Merge node outputs into params so they're accessible during placeholder replacement
84
+ params = { ...params, ...nodeOutputs };
85
+ }
86
+
12
87
  // First, render with EJS
13
88
  let compiledPrompt = ejs.render(prompt, params);
14
89
 
@@ -17,24 +92,37 @@ export function compilePrompt(prompt: string, params: Record<string, any> = {}):
17
92
 
18
93
  return compiledPrompt;
19
94
  } catch (err) {
20
- logger.error({ message: 'Error compiling prompt', err });
95
+ logger.error({ message: 'Error compiling prompt', err, prompt });
21
96
  return prompt; // Return uncompiled if there's an error
22
97
  }
23
98
  }
24
99
 
25
100
  /**
26
101
  * Replace placeholders in {key} format
102
+ * Supports both:
103
+ * - {NodeName.field} - direct node reference
104
+ * - {tools.NodeName.field} - node reference with 'tools' prefix (alias)
27
105
  */
28
106
  function replacePlaceholders(text: string, params: Record<string, any>): string {
29
107
  return text.replace(/\{([^}]+)\}/g, (match, key) => {
30
- const keys = key.split('.');
108
+ let keys = key.split('.');
109
+
110
+ // Handle 'tools.' prefix as an alias for node outputs
111
+ // {tools.NodeName.field} -> {NodeName.field}
112
+ if (keys[0] === 'tools' && keys.length >= 3) {
113
+ keys = keys.slice(1); // Remove 'tools' prefix
114
+ }
115
+
31
116
  let value: any = params;
32
117
 
33
- for (const k of keys) {
118
+ for (let i = 0; i < keys.length; i++) {
119
+ const k = keys[i];
34
120
  if (value && typeof value === 'object' && k in value) {
35
121
  value = value[k];
36
122
  } else {
37
- logger.warn({ message: `Placeholder {${key}} in prompt not found in params. It will remain as placeholder.` });
123
+ logger.warn({
124
+ message: `Placeholder {${key}} in prompt not found in params. It will remain as placeholder.`,
125
+ });
38
126
  return match; // Return original if key not found
39
127
  }
40
128
  }
@@ -104,6 +104,33 @@ export interface ScheduleTriggerNode extends BaseTriggerNode {
104
104
  timezone?: string;
105
105
  }
106
106
 
107
+ /**
108
+ * Base schema field type for backward compatibility with platform.
109
+ * Represents simple input/output schema fields (string and number only).
110
+ */
111
+ export interface SchemaField {
112
+ name: string;
113
+ type: 'string' | 'number';
114
+ description?: string;
115
+ required?: boolean;
116
+ }
117
+
118
+ /**
119
+ * Extended schema field type with support for complex types (boolean, array, object).
120
+ * Uses Omit to override the 'type' field and intersection type (&) with Partial<> to
121
+ * elegantly add optional properties for complex types (items, properties).
122
+ * Filtered for backward compatibility when communicating with platform.
123
+ */
124
+ export type OutputSchemaField = Omit<SchemaField, 'type'> & {
125
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object';
126
+ } & Partial<{
127
+ items: {
128
+ type: 'string' | 'number' | 'boolean' | 'object';
129
+ properties?: any;
130
+ };
131
+ properties: any;
132
+ }>;
133
+
107
134
  export interface PromptNode extends BaseNode {
108
135
  type: NodeType.PROMPT_NODE;
109
136
  prompt: string;
@@ -114,6 +141,7 @@ export interface ThinkingNode extends BaseNode {
114
141
  type: NodeType.THINKING;
115
142
  prompt: string;
116
143
  llmConfig?: LLMConfig;
144
+ outputSchema?: OutputSchemaField[];
117
145
  }
118
146
 
119
147
  export interface JumpToNode extends BaseNode {
@@ -125,18 +153,8 @@ export interface BrowserTaskNode extends BaseNode {
125
153
  type: NodeType.BROWSER_TASK;
126
154
  prompt: string;
127
155
  model?: string;
128
- inputSchema?: {
129
- name: string;
130
- type: 'string' | 'number';
131
- description?: string;
132
- required?: boolean;
133
- }[];
134
- outputSchema?: {
135
- name: string;
136
- type: 'string' | 'number';
137
- description?: string;
138
- required?: boolean;
139
- }[];
156
+ inputSchema?: SchemaField[];
157
+ outputSchema?: OutputSchemaField[];
140
158
  autoTrigger?: boolean;
141
159
  defaultPayload?: string;
142
160
  proxy?: string; // 2-digit country code like 'IL'
@@ -166,17 +184,7 @@ export interface RpaStep {
166
184
  shouldReplaceExistingText?: boolean;
167
185
  waitTime?: number;
168
186
  description?: string;
169
- outputSchema?: {
170
- name: string;
171
- type: 'string' | 'number' | 'boolean' | 'array' | 'object';
172
- description?: string;
173
- required?: boolean;
174
- items?: {
175
- type: 'string' | 'number' | 'boolean' | 'object';
176
- properties?: any;
177
- };
178
- properties?: any;
179
- }[];
187
+ outputSchema?: OutputSchemaField[];
180
188
  }
181
189
 
182
190
  export type TriggerNode =
@@ -197,6 +205,13 @@ export interface ToolNode extends BaseNode {
197
205
  prompt: string;
198
206
  appImgSrc?: string;
199
207
  parameters?: Record<string, any>;
208
+ inputSchema?: {
209
+ name: string;
210
+ type: 'string' | 'number' | 'boolean' | 'array';
211
+ description?: string;
212
+ required?: boolean;
213
+ }[];
214
+ outputSchema?: OutputSchemaField[];
200
215
  }
201
216
 
202
217
  export interface AppToolNode extends BaseNode, BaseAppNode {
@@ -208,15 +223,7 @@ export interface AppToolNode extends BaseNode, BaseAppNode {
208
223
  actionKey: string;
209
224
  }
210
225
 
211
- export type Node =
212
- | TriggerNode
213
- | JunctionNode
214
- | ToolNode
215
- | AppToolNode
216
- | PromptNode
217
- | JumpToNode
218
- | BrowserTaskNode
219
- | ThinkingNode;
226
+ export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode | BrowserTaskNode | ThinkingNode;
220
227
 
221
228
  export interface BaseEdge {
222
229
  source: string;
@@ -8,13 +8,16 @@ import { BrowserTaskMode } from '../browserTask/types';
8
8
  export type ToolReturnType = { result?: any } | void;
9
9
 
10
10
  // Tool can be either RPA or Default
11
- export type Tool<Input extends z.ZodSchema, Memory = any> = RPATool<Input, Memory> | DefaultTool<Input, Memory>;
11
+ export type Tool<Input extends z.ZodSchema, Memory = any, Output extends z.ZodSchema = any> =
12
+ | RPATool<Input, Memory, Output>
13
+ | DefaultTool<Input, Memory, Output>;
12
14
 
13
15
  // RPA Tool - always includes Page
14
- export interface RPATool<Input extends z.ZodSchema, Memory = any> {
16
+ export interface RPATool<Input extends z.ZodSchema, Memory = any, Output extends z.ZodSchema = any> {
15
17
  name: string;
16
18
  description: string;
17
19
  input: Input;
20
+ output?: Output;
18
21
  isGlobal?: boolean;
19
22
  allowExecutionRequests?: boolean;
20
23
  type: 'rpa';
@@ -24,10 +27,11 @@ export interface RPATool<Input extends z.ZodSchema, Memory = any> {
24
27
  }
25
28
 
26
29
  // Default Tool - no Page parameter
27
- export interface DefaultTool<Input extends z.ZodSchema, Memory = any> {
30
+ export interface DefaultTool<Input extends z.ZodSchema, Memory = any, Output extends z.ZodSchema = any> {
28
31
  name: string;
29
32
  description: string;
30
33
  input: Input;
34
+ output?: Output;
31
35
  isGlobal?: boolean;
32
36
  allowExecutionRequests?: boolean;
33
37
  type?: 'default';
@@ -0,0 +1,82 @@
1
+ import { z } from 'zod';
2
+ import { OutputSchemaField } from '../types/Flows.types';
3
+ import { logger } from './logger';
4
+
5
+ export function convertArraySchemaToZod(schemaArray: unknown): z.ZodObject<any> {
6
+ if (schemaArray && typeof schemaArray === 'object' && '_def' in schemaArray) {
7
+ return schemaArray as z.ZodObject<any>;
8
+ }
9
+
10
+ if (!Array.isArray(schemaArray) || schemaArray.length === 0) {
11
+ logger.warn({ message: 'Empty or invalid schema array provided to convertArraySchemaToZod', schemaArray });
12
+ return z.object({});
13
+ }
14
+
15
+ const typeMap: Record<string, (field: OutputSchemaField) => z.ZodTypeAny> = {
16
+ string: () => z.string(),
17
+ number: () => z.number(),
18
+ boolean: () => z.boolean(),
19
+ // For arrays, check if items are defined, otherwise default to string array
20
+ array: (field) => {
21
+ if (field.items?.type) {
22
+ const itemTypeMap: Record<string, z.ZodTypeAny> = {
23
+ string: z.string(),
24
+ number: z.number(),
25
+ boolean: z.boolean(),
26
+ };
27
+ return z.array(itemTypeMap[field.items.type] || z.string());
28
+ }
29
+ return z.array(z.string());
30
+ },
31
+ // For objects, create a record type that allows any key-value pairs
32
+ // OpenAI's structured outputs don't support truly dynamic objects well
33
+ // So we use record(string, string) which is the most flexible allowed format
34
+ object: (field) => {
35
+ if (field.properties && Object.keys(field.properties).length > 0) {
36
+ // If properties are defined, create a structured object
37
+ const shape = Object.fromEntries(
38
+ Object.entries(field.properties).map(([key, value]: [string, any]) => {
39
+ const propType = value.type || 'string';
40
+ const propTypeMap: Record<string, z.ZodTypeAny> = {
41
+ string: z.string(),
42
+ number: z.number(),
43
+ boolean: z.boolean(),
44
+ };
45
+ return [key, propTypeMap[propType] || z.string()];
46
+ }),
47
+ );
48
+ return z.object(shape);
49
+ }
50
+ // If no properties defined, use record(string, string) for maximum compatibility
51
+ // This allows any key-value pairs where values are strings
52
+ return z.record(z.string(), z.string());
53
+ },
54
+ };
55
+
56
+ const shape = Object.fromEntries(
57
+ schemaArray.map((field: OutputSchemaField) => {
58
+ const typeFunc = typeMap[field.type];
59
+ let schema = typeFunc ? typeFunc(field) : z.any();
60
+
61
+ if (field.description) {
62
+ schema = schema.describe(field.description);
63
+ }
64
+
65
+ // OpenAI's structured outputs require all fields in the 'required' array
66
+ // To make a field optional, we use .nullable() which means the field is required but can be null
67
+ // This satisfies OpenAI's requirement while allowing optional fields
68
+ if (!field.required) {
69
+ schema = schema.nullable();
70
+ }
71
+
72
+ return [field.name, schema];
73
+ }),
74
+ );
75
+
76
+ // Create the final Zod object
77
+ // Note: All fields will be in the 'required' array for OpenAI's JSON schema
78
+ // Optional fields are handled by .nullable() above
79
+ const zodObject = z.object(shape);
80
+
81
+ return zodObject;
82
+ }