@minded-ai/mindedjs 2.0.2-beta.1 → 2.0.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 +19 -24
- package/dist/agent.js.map +1 -1
- package/dist/cli/index.js +0 -0
- package/dist/edges/createPromptRouter.d.ts.map +1 -1
- package/dist/edges/createPromptRouter.js +12 -7
- package/dist/edges/createPromptRouter.js.map +1 -1
- package/dist/interrupts/BaseInterruptSessionManager.d.ts +1 -1
- package/dist/interrupts/BaseInterruptSessionManager.d.ts.map +1 -1
- package/dist/nodes/addBrowserTaskRunNode.d.ts.map +1 -1
- package/dist/nodes/addBrowserTaskRunNode.js +2 -1
- package/dist/nodes/addBrowserTaskRunNode.js.map +1 -1
- package/dist/nodes/addHumanInTheLoopNode.js +2 -2
- package/dist/nodes/addHumanInTheLoopNode.js.map +1 -1
- package/dist/nodes/addPromptNode.d.ts.map +1 -1
- package/dist/nodes/addPromptNode.js +140 -88
- package/dist/nodes/addPromptNode.js.map +1 -1
- package/dist/types/Tools.types.d.ts +1 -0
- package/dist/types/Tools.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/guidelines/guidelinesManager.d.ts +0 -37
- package/dist/guidelines/guidelinesManager.d.ts.map +0 -1
- package/dist/guidelines/guidelinesManager.js +0 -172
- package/dist/guidelines/guidelinesManager.js.map +0 -1
- package/dist/internalTools/documentExtraction.d.ts +0 -69
- package/dist/internalTools/documentExtraction.d.ts.map +0 -1
- package/dist/internalTools/documentExtraction.js +0 -65
- package/dist/internalTools/documentExtraction.js.map +0 -1
- package/dist/internalTools/managedDocumentParser/managedDocumentParser.d.ts +0 -10
- package/dist/internalTools/managedDocumentParser/managedDocumentParser.d.ts.map +0 -1
- package/dist/internalTools/managedDocumentParser/managedDocumentParser.js +0 -80
- package/dist/internalTools/managedDocumentParser/managedDocumentParser.js.map +0 -1
- package/dist/internalTools/retell.d.ts +0 -12
- package/dist/internalTools/retell.d.ts.map +0 -1
- package/dist/internalTools/retell.js +0 -44
- package/dist/internalTools/retell.js.map +0 -1
- package/dist/internalTools/sendPlaceholderMessage.d.ts +0 -14
- package/dist/internalTools/sendPlaceholderMessage.d.ts.map +0 -1
- package/dist/internalTools/sendPlaceholderMessage.js +0 -51
- package/dist/internalTools/sendPlaceholderMessage.js.map +0 -1
- package/dist/pii-gateway/gateway.d.ts +0 -17
- package/dist/pii-gateway/gateway.d.ts.map +0 -1
- package/dist/pii-gateway/gateway.js +0 -77
- package/dist/pii-gateway/gateway.js.map +0 -1
- package/dist/pii-gateway/index.d.ts +0 -4
- package/dist/pii-gateway/index.d.ts.map +0 -1
- package/dist/pii-gateway/index.js +0 -14
- package/dist/pii-gateway/index.js.map +0 -1
- package/dist/pii-gateway/proxy.d.ts +0 -80
- package/dist/pii-gateway/proxy.d.ts.map +0 -1
- package/dist/pii-gateway/proxy.js +0 -106
- package/dist/pii-gateway/proxy.js.map +0 -1
- package/dist/pii-gateway/types.d.ts +0 -27
- package/dist/pii-gateway/types.d.ts.map +0 -1
- package/dist/pii-gateway/types.js +0 -3
- package/dist/pii-gateway/types.js.map +0 -1
- package/dist/platform/mindedChatOpenAI.d.ts +0 -5
- package/dist/platform/mindedChatOpenAI.d.ts.map +0 -1
- package/dist/platform/mindedChatOpenAI.js +0 -23
- package/dist/platform/mindedChatOpenAI.js.map +0 -1
- package/dist/platform/mindedUtils.d.ts +0 -1
- package/dist/platform/mindedUtils.d.ts.map +0 -1
- package/dist/platform/mindedUtils.js +0 -2
- package/dist/platform/mindedUtils.js.map +0 -1
- package/dist/platform/parallelAzureChatOpenAI.d.ts +0 -39
- package/dist/platform/parallelAzureChatOpenAI.d.ts.map +0 -1
- package/dist/platform/parallelAzureChatOpenAI.js +0 -114
- package/dist/platform/parallelAzureChatOpenAI.js.map +0 -1
- package/dist/platform/parallelChatOpenAI.d.ts +0 -38
- package/dist/platform/parallelChatOpenAI.d.ts.map +0 -1
- package/dist/platform/parallelChatOpenAI.js +0 -111
- package/dist/platform/parallelChatOpenAI.js.map +0 -1
- package/dist/platform/parallelMindedChatOpenAI.d.ts +0 -39
- package/dist/platform/parallelMindedChatOpenAI.d.ts.map +0 -1
- package/dist/platform/parallelMindedChatOpenAI.js +0 -111
- package/dist/platform/parallelMindedChatOpenAI.js.map +0 -1
- package/dist/platform/piiGateway/proxy.d.ts +0 -20
- package/dist/platform/piiGateway/proxy.d.ts.map +0 -1
- package/dist/platform/piiGateway/proxy.js +0 -24
- package/dist/platform/piiGateway/proxy.js.map +0 -1
- package/dist/types/Agent.d.ts +0 -2
- package/dist/types/Agent.d.ts.map +0 -1
- package/dist/types/Agent.js +0 -18
- package/dist/types/Agent.js.map +0 -1
- package/dist/types/Flows.d.ts +0 -2
- package/dist/types/Flows.d.ts.map +0 -1
- package/dist/types/Flows.js +0 -18
- package/dist/types/Flows.js.map +0 -1
- package/dist/types/LLM.d.ts +0 -2
- package/dist/types/LLM.d.ts.map +0 -1
- package/dist/types/LLM.js +0 -18
- package/dist/types/LLM.js.map +0 -1
- package/dist/types/LangGraph.d.ts +0 -2
- package/dist/types/LangGraph.d.ts.map +0 -1
- package/dist/types/LangGraph.js +0 -18
- package/dist/types/LangGraph.js.map +0 -1
- package/dist/types/Platform.d.ts +0 -2
- package/dist/types/Platform.d.ts.map +0 -1
- package/dist/types/Platform.js +0 -18
- package/dist/types/Platform.js.map +0 -1
- package/dist/types/Tools.d.ts +0 -2
- package/dist/types/Tools.d.ts.map +0 -1
- package/dist/types/Tools.js +0 -18
- package/dist/types/Tools.js.map +0 -1
- package/dist/types/Triggers.d.ts +0 -2
- package/dist/types/Triggers.d.ts.map +0 -1
- package/dist/types/Triggers.js +0 -18
- package/dist/types/Triggers.js.map +0 -1
- package/dist/types/Triggers.types.d.ts +0 -25
- package/dist/types/Triggers.types.d.ts.map +0 -1
- package/dist/types/Triggers.types.js +0 -3
- package/dist/types/Triggers.types.js.map +0 -1
- package/dist/types/Voice.d.ts +0 -2
- package/dist/types/Voice.d.ts.map +0 -1
- package/dist/types/Voice.js +0 -18
- package/dist/types/Voice.js.map +0 -1
- package/dist/types/index.d.ts +0 -9
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -25
- package/dist/types/index.js.map +0 -1
- package/dist/utils/LogicalConditionDebugger.d.ts +0 -57
- package/dist/utils/LogicalConditionDebugger.d.ts.map +0 -1
- package/dist/utils/LogicalConditionDebugger.js +0 -143
- package/dist/utils/LogicalConditionDebugger.js.map +0 -1
- package/dist/utils/documentProcessor.d.ts +0 -87
- package/dist/utils/documentProcessor.d.ts.map +0 -1
- package/dist/utils/documentProcessor.js +0 -726
- package/dist/utils/documentProcessor.js.map +0 -1
- package/dist/utils/extractStateMemoryResponse.d.ts +0 -1
- package/dist/utils/extractStateMemoryResponse.d.ts.map +0 -1
- package/dist/utils/extractStateMemoryResponse.js +0 -89
- package/dist/utils/extractStateMemoryResponse.js.map +0 -1
- package/dist/utils/extractToolGuidelineParams.d.ts +0 -4
- package/dist/utils/extractToolGuidelineParams.d.ts.map +0 -1
- package/dist/utils/extractToolGuidelineParams.js +0 -20
- package/dist/utils/extractToolGuidelineParams.js.map +0 -1
- package/dist/utils/extractToolMemoryResponse.d.ts +0 -4
- package/dist/utils/extractToolMemoryResponse.d.ts.map +0 -1
- package/dist/utils/extractToolMemoryResponse.js +0 -16
- package/dist/utils/extractToolMemoryResponse.js.map +0 -1
- package/dist/utils/parseAttachments.d.ts +0 -14
- package/dist/utils/parseAttachments.d.ts.map +0 -1
- package/dist/utils/parseAttachments.js +0 -54
- package/dist/utils/parseAttachments.js.map +0 -1
|
@@ -19,7 +19,7 @@ const addPromptNode = async ({ graph, node, llm, tools, emit, agent }) => {
|
|
|
19
19
|
const llmToUse = node.llmConfig ? (0, createLlmInstance_1.createLlmInstance)(node.llmConfig) : llm;
|
|
20
20
|
const scopedTools = tools
|
|
21
21
|
.filter((tool) => tool.isGlobal || node.prompt.includes(`{tools.${tool.name}}`))
|
|
22
|
-
.map((tool) => (0, tools_1.tool)((input) => tool.execute({ input, state, agent }), {
|
|
22
|
+
.map((tool) => (0, tools_1.tool)((input) => tool.execute({ input, state, agent, invokedFromPromptNode: true }), {
|
|
23
23
|
name: tool.name,
|
|
24
24
|
description: tool.description,
|
|
25
25
|
schema: tool.input,
|
|
@@ -41,122 +41,174 @@ const addPromptNode = async ({ graph, node, llm, tools, emit, agent }) => {
|
|
|
41
41
|
else {
|
|
42
42
|
state.messages.unshift(systemMessage);
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
logger_1.logger.
|
|
61
|
-
msg:
|
|
62
|
-
|
|
44
|
+
// Check if we should use the agentic loop (only when humanInTheLoop is true)
|
|
45
|
+
const useAgenticLoop = node.humanInTheLoop === true;
|
|
46
|
+
/**
|
|
47
|
+
* When humanInTheLoop is true: Run an agentic loop that continues invoking the LLM
|
|
48
|
+
* after tool calls until we get a final AI message without tool calls.
|
|
49
|
+
*
|
|
50
|
+
* When humanInTheLoop is false: Return immediately after tool execution without
|
|
51
|
+
* additional LLM invocations.
|
|
52
|
+
*/
|
|
53
|
+
let finalAIMessage = null;
|
|
54
|
+
let loopCount = 0;
|
|
55
|
+
const MAX_LOOP_ITERATIONS = process.env.MAX_TOOL_LOOP_ITERATIONS ? parseInt(process.env.MAX_TOOL_LOOP_ITERATIONS) : 10;
|
|
56
|
+
while (true) {
|
|
57
|
+
loopCount++;
|
|
58
|
+
// Break if we've reached the maximum number of iterations
|
|
59
|
+
if (loopCount > MAX_LOOP_ITERATIONS) {
|
|
60
|
+
logger_1.logger.warn({
|
|
61
|
+
msg: '[Model] Reached maximum loop iterations, breaking agentic loop',
|
|
62
|
+
loopCount,
|
|
63
63
|
sessionId: state.sessionId,
|
|
64
64
|
node: node.displayName,
|
|
65
65
|
});
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
const startTime = Date.now();
|
|
69
|
+
const result = await llmToUse.bindTools(scopedTools).invoke(state.messages);
|
|
70
|
+
const endTime = Date.now();
|
|
71
|
+
// Always pass accumulated state to interrupt manager
|
|
72
|
+
// Pass the accumulated messages from this prompt node execution
|
|
73
|
+
// If empty, pass undefined to avoid empty state updates
|
|
74
|
+
logger_1.logger.debug({
|
|
75
|
+
msg: '[Model] Model execution time',
|
|
76
|
+
executionTimeMs: endTime - startTime,
|
|
77
|
+
sessionId: state.sessionId,
|
|
78
|
+
node: node.displayName,
|
|
79
|
+
});
|
|
80
|
+
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, state);
|
|
81
|
+
// Check if the result contains tool calls
|
|
82
|
+
if (result.tool_calls && result.tool_calls.length > 0) {
|
|
83
|
+
state.messages.push(result);
|
|
84
|
+
state.history.push((0, history_1.createHistoryStep)(state.history, {
|
|
85
|
+
type: Flows_types_1.NodeType.TOOL,
|
|
86
|
+
nodeId: node.name,
|
|
87
|
+
nodeDisplayName: node.displayName,
|
|
88
|
+
raw: result,
|
|
89
|
+
messageIds: [result.id],
|
|
90
|
+
}));
|
|
91
|
+
// Execute the tools
|
|
92
|
+
// Ensure we process ALL tool calls, even if some fail
|
|
93
|
+
for (let toolIndex = 0; toolIndex < result.tool_calls.length; toolIndex++) {
|
|
94
|
+
const toolCall = result.tool_calls[toolIndex];
|
|
95
|
+
const matchedTool = scopedTools.find((t) => t.name === toolCall.name);
|
|
96
|
+
logger_1.logger.info({
|
|
97
|
+
msg: `[Model] Calling tool inside prompt node`,
|
|
98
|
+
tool: (matchedTool === null || matchedTool === void 0 ? void 0 : matchedTool.name) || toolCall.name,
|
|
99
|
+
toolCallId: toolCall.id,
|
|
100
|
+
sessionId: state.sessionId,
|
|
101
|
+
node: node.displayName,
|
|
102
|
+
});
|
|
103
|
+
if (matchedTool) {
|
|
68
104
|
// Invoke the LangChain tool directly
|
|
69
|
-
const
|
|
105
|
+
const toolStartTime = Date.now();
|
|
70
106
|
const toolResult = await matchedTool.invoke(toolCall);
|
|
71
|
-
const
|
|
107
|
+
const toolEndTime = Date.now();
|
|
72
108
|
logger_1.logger.debug({
|
|
73
109
|
msg: `[Tool] Tool result inside prompt node`,
|
|
74
110
|
tool: matchedTool === null || matchedTool === void 0 ? void 0 : matchedTool.name,
|
|
75
111
|
result: toolResult,
|
|
76
|
-
executionTimeMs:
|
|
112
|
+
executionTimeMs: toolEndTime - toolStartTime,
|
|
77
113
|
sessionId: state.sessionId,
|
|
78
114
|
node: node.displayName,
|
|
79
115
|
});
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}),
|
|
90
|
-
],
|
|
91
|
-
history: [
|
|
92
|
-
(0, history_1.createHistoryStep)(state.history, {
|
|
93
|
-
type: Flows_types_1.NodeType.TOOL,
|
|
94
|
-
nodeId: node.name,
|
|
95
|
-
nodeDisplayName: node.displayName,
|
|
96
|
-
raw: toolResult,
|
|
97
|
-
messageIds: [toolResult.id, systemMessageId],
|
|
98
|
-
}),
|
|
99
|
-
],
|
|
100
|
-
});
|
|
101
|
-
toolResults.push(toolResult);
|
|
116
|
+
// Add the tool result directly to allMessages
|
|
117
|
+
state.messages.push(toolResult);
|
|
118
|
+
state.history.push((0, history_1.createHistoryStep)(state.history, {
|
|
119
|
+
type: Flows_types_1.NodeType.TOOL,
|
|
120
|
+
nodeId: node.name,
|
|
121
|
+
nodeDisplayName: node.displayName,
|
|
122
|
+
raw: toolResult,
|
|
123
|
+
messageIds: [toolResult.id],
|
|
124
|
+
}));
|
|
102
125
|
}
|
|
103
|
-
|
|
104
|
-
if ((err === null || err === void 0 ? void 0 : err.name) === 'GraphInterrupt')
|
|
105
|
-
throw err;
|
|
126
|
+
else {
|
|
106
127
|
logger_1.logger.error({
|
|
107
|
-
msg: `[Tool]
|
|
128
|
+
msg: `[Tool] Model called tool but it was not found inside prompt node`,
|
|
108
129
|
tool: toolCall.name,
|
|
109
|
-
|
|
130
|
+
toolCallId: toolCall.id,
|
|
110
131
|
sessionId: state.sessionId,
|
|
111
132
|
node: node.displayName,
|
|
112
133
|
});
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
134
|
+
// IMPORTANT: Create an error message for the missing tool with the correct tool_call_id
|
|
135
|
+
const missingToolMessage = new messages_1.ToolMessage({
|
|
136
|
+
content: JSON.stringify({ error: `Tool '${toolCall.name}' doesnt exist` }),
|
|
137
|
+
tool_call_id: toolCall.id, // This MUST match the tool_call_id from the AI message
|
|
138
|
+
name: toolCall.name,
|
|
116
139
|
});
|
|
117
|
-
|
|
140
|
+
state.messages.push(missingToolMessage);
|
|
141
|
+
state.history.push((0, history_1.createHistoryStep)(state.history, {
|
|
142
|
+
type: Flows_types_1.NodeType.TOOL,
|
|
143
|
+
nodeId: node.name,
|
|
144
|
+
nodeDisplayName: node.displayName,
|
|
145
|
+
raw: missingToolMessage,
|
|
146
|
+
messageIds: [missingToolMessage.id],
|
|
147
|
+
}));
|
|
118
148
|
}
|
|
119
149
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
150
|
+
// Check for queue after tool call
|
|
151
|
+
const systemMessageId = (0, uuid_1.v4)();
|
|
152
|
+
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, {
|
|
153
|
+
...state,
|
|
154
|
+
messages: [
|
|
155
|
+
...state.messages,
|
|
156
|
+
new messages_1.SystemMessage({
|
|
157
|
+
id: systemMessageId,
|
|
158
|
+
content: 'you called tools when the user send a new message, Consider calling the tools again after user message is processed',
|
|
159
|
+
}),
|
|
160
|
+
],
|
|
161
|
+
});
|
|
162
|
+
// If humanInTheLoop is false, return immediately after tool execution
|
|
163
|
+
if (!useAgenticLoop) {
|
|
164
|
+
return state;
|
|
127
165
|
}
|
|
166
|
+
// Continue the loop to see what the model wants to do next
|
|
167
|
+
continue;
|
|
128
168
|
}
|
|
129
|
-
|
|
169
|
+
else {
|
|
170
|
+
// We got an AI message without tool calls - this is our final response
|
|
171
|
+
finalAIMessage = result;
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Process the final AI message if we have one
|
|
176
|
+
if (finalAIMessage) {
|
|
177
|
+
// Add the final AI message to our messages first
|
|
178
|
+
state.messages.push(finalAIMessage);
|
|
179
|
+
logger_1.logger.info({
|
|
180
|
+
msg: `[Model] Response`,
|
|
181
|
+
content: finalAIMessage.content,
|
|
182
|
+
sessionId: state.sessionId,
|
|
183
|
+
node: node.displayName,
|
|
184
|
+
});
|
|
185
|
+
await emit(AgentEvents_1.AgentEvents.AI_MESSAGE, {
|
|
186
|
+
message: finalAIMessage.content,
|
|
187
|
+
state: state,
|
|
188
|
+
});
|
|
189
|
+
// Set goto to null
|
|
190
|
+
state.goto = null;
|
|
130
191
|
state.history.push((0, history_1.createHistoryStep)(state.history, {
|
|
131
|
-
type: Flows_types_1.NodeType.
|
|
192
|
+
type: Flows_types_1.NodeType.PROMPT_NODE,
|
|
132
193
|
nodeId: node.name,
|
|
133
194
|
nodeDisplayName: node.displayName,
|
|
134
|
-
raw:
|
|
135
|
-
messageIds: [
|
|
136
|
-
})
|
|
137
|
-
type: Flows_types_1.NodeType.TOOL,
|
|
138
|
-
nodeId: node.name,
|
|
139
|
-
nodeDisplayName: node.displayName,
|
|
140
|
-
raw: toolResult,
|
|
141
|
-
messageIds: [toolResult.id],
|
|
142
|
-
})));
|
|
195
|
+
raw: finalAIMessage.content,
|
|
196
|
+
messageIds: [finalAIMessage.id],
|
|
197
|
+
}));
|
|
143
198
|
return state;
|
|
144
199
|
}
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
200
|
+
// If we hit the loop limit without a final AI message, return what we have
|
|
201
|
+
if (loopCount > MAX_LOOP_ITERATIONS) {
|
|
202
|
+
logger_1.logger.warn({
|
|
203
|
+
msg: '[Model] Returning accumulated messages after hitting loop limit',
|
|
204
|
+
sessionId: state.sessionId,
|
|
205
|
+
node: node.displayName,
|
|
206
|
+
});
|
|
207
|
+
state.goto = null;
|
|
208
|
+
return state;
|
|
151
209
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
nodeId: node.name,
|
|
155
|
-
nodeDisplayName: node.displayName,
|
|
156
|
-
raw: result.content,
|
|
157
|
-
messageIds: [result.id],
|
|
158
|
-
}));
|
|
159
|
-
return state;
|
|
210
|
+
// This should only be reached in unexpected cases
|
|
211
|
+
throw new Error('Unexpected state: no messages generated in prompt node');
|
|
160
212
|
};
|
|
161
213
|
graph.addNode(node.name, callback);
|
|
162
214
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addPromptNode.js","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":";;;AACA,sDAA4D;AAI5D,uDAAiF;AAEjF,iDAA8D;AAC9D,uDAA+E;AAE/E,gEAA6D;AAE7D,4CAAyC;AACzC,sDAA0D;AAC1D,8CAAqD;AACrD,mDAAgD;AAChD,+BAAoC;
|
|
1
|
+
{"version":3,"file":"addPromptNode.js","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAG1C,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,IAAI,CAAC;AAErD,MAAM,WAAW,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG;IAC3D,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,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAC9E;AAED,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;
|
|
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;AAG1C,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,IAAI,CAAC;AAErD,MAAM,WAAW,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG;IAC3D,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,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAC9E;AAED,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;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
package/package.json
CHANGED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { MindedConnection } from '../platform/mindedConnection';
|
|
2
|
-
export interface Guideline {
|
|
3
|
-
id: string;
|
|
4
|
-
name: string;
|
|
5
|
-
content: string;
|
|
6
|
-
index?: number;
|
|
7
|
-
}
|
|
8
|
-
export declare class GuidelinesManager {
|
|
9
|
-
private guidelines;
|
|
10
|
-
private mindedConnection;
|
|
11
|
-
constructor(mindedConnection: MindedConnection | null);
|
|
12
|
-
/**
|
|
13
|
-
* Load guidelines from directories or platform
|
|
14
|
-
*/
|
|
15
|
-
loadGuidelines(guidelinesDirectories?: string[]): Promise<Guideline[]>;
|
|
16
|
-
/**
|
|
17
|
-
* Load guidelines from local directories
|
|
18
|
-
*/
|
|
19
|
-
private loadGuidelinesFromDirectories;
|
|
20
|
-
/**
|
|
21
|
-
* Recursively get all YAML files in a directory
|
|
22
|
-
*/
|
|
23
|
-
private getAllYamlFiles;
|
|
24
|
-
/**
|
|
25
|
-
* Compile guidelines into a single string with EJS and placeholders
|
|
26
|
-
*/
|
|
27
|
-
compileGuidelines(params?: Record<string, any>): string;
|
|
28
|
-
/**
|
|
29
|
-
* Replace placeholders in {key} format
|
|
30
|
-
*/
|
|
31
|
-
private replacePlaceholders;
|
|
32
|
-
/**
|
|
33
|
-
* Get raw guidelines without compilation
|
|
34
|
-
*/
|
|
35
|
-
getGuidelines(): Guideline[];
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=guidelinesManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"guidelinesManager.d.ts","sourceRoot":"","sources":["../../src/guidelines/guidelinesManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKhE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,gBAAgB,CAA0B;gBAEtC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI;IAIrD;;OAEG;IACU,cAAc,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA+BnF;;OAEG;IACH,OAAO,CAAC,6BAA6B;IA+BrC;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACI,iBAAiB,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,MAAM;IA0BlE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACI,aAAa,IAAI,SAAS,EAAE;CAGpC"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.GuidelinesManager = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const yaml = __importStar(require("js-yaml"));
|
|
40
|
-
const ejs = __importStar(require("ejs"));
|
|
41
|
-
const mindedConnectionTypes_1 = require("../platform/mindedConnectionTypes");
|
|
42
|
-
const config_1 = require("../platform/config");
|
|
43
|
-
const logger_1 = require("../utils/logger");
|
|
44
|
-
class GuidelinesManager {
|
|
45
|
-
constructor(mindedConnection) {
|
|
46
|
-
this.guidelines = [];
|
|
47
|
-
this.mindedConnection = mindedConnection;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Load guidelines from directories or platform
|
|
51
|
-
*/
|
|
52
|
-
async loadGuidelines(guidelinesDirectories) {
|
|
53
|
-
const { env, isDeployed } = (0, config_1.getConfig)();
|
|
54
|
-
if (['sandbox-staging', 'sandbox'].includes(env) && isDeployed && this.mindedConnection) {
|
|
55
|
-
// Load from platform
|
|
56
|
-
const response = await this.mindedConnection.awaitEmit(mindedConnectionTypes_1.MindedConnectionSocketMessageType.GET_GUIDELINES, {});
|
|
57
|
-
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
58
|
-
throw new Error(`Failed to load guidelines from platform: ${response.error}`);
|
|
59
|
-
}
|
|
60
|
-
this.guidelines = (response === null || response === void 0 ? void 0 : response.guidelines) || [];
|
|
61
|
-
}
|
|
62
|
-
else if (guidelinesDirectories) {
|
|
63
|
-
// Load from directories
|
|
64
|
-
this.guidelines = this.loadGuidelinesFromDirectories(guidelinesDirectories);
|
|
65
|
-
}
|
|
66
|
-
// Sort guidelines by index if available
|
|
67
|
-
this.guidelines.sort((a, b) => {
|
|
68
|
-
if (a.index !== undefined && b.index !== undefined) {
|
|
69
|
-
return a.index - b.index;
|
|
70
|
-
}
|
|
71
|
-
return 0;
|
|
72
|
-
});
|
|
73
|
-
return this.guidelines;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Load guidelines from local directories
|
|
77
|
-
*/
|
|
78
|
-
loadGuidelinesFromDirectories(directories) {
|
|
79
|
-
const guidelines = [];
|
|
80
|
-
for (const directory of directories) {
|
|
81
|
-
if (!fs.existsSync(directory)) {
|
|
82
|
-
logger_1.logger.info(`Guidelines directory does not exist: ${directory}`);
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
const files = this.getAllYamlFiles(directory);
|
|
86
|
-
for (const file of files) {
|
|
87
|
-
try {
|
|
88
|
-
const fileContent = fs.readFileSync(file, 'utf8');
|
|
89
|
-
const guideline = yaml.load(fileContent);
|
|
90
|
-
if (guideline && guideline.name && guideline.content) {
|
|
91
|
-
guidelines.push(guideline);
|
|
92
|
-
logger_1.logger.info(`Loaded guideline: ${guideline.name} from ${file}`);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
logger_1.logger.warn(`Invalid guideline structure in ${file}`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
logger_1.logger.error(`Failed to load guideline file ${file}: ${error}`);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return guidelines;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Recursively get all YAML files in a directory
|
|
107
|
-
*/
|
|
108
|
-
getAllYamlFiles(dir) {
|
|
109
|
-
const files = [];
|
|
110
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
111
|
-
for (const entry of entries) {
|
|
112
|
-
const fullPath = path.join(dir, entry.name);
|
|
113
|
-
if (entry.isDirectory()) {
|
|
114
|
-
files.push(...this.getAllYamlFiles(fullPath));
|
|
115
|
-
}
|
|
116
|
-
else if (entry.name.endsWith('.yaml') || entry.name.endsWith('.yml')) {
|
|
117
|
-
files.push(fullPath);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return files;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Compile guidelines into a single string with EJS and placeholders
|
|
124
|
-
*/
|
|
125
|
-
compileGuidelines(params = {}) {
|
|
126
|
-
if (this.guidelines.length === 0) {
|
|
127
|
-
return '';
|
|
128
|
-
}
|
|
129
|
-
// Combine all guidelines into sections
|
|
130
|
-
const sections = this.guidelines.map((guideline) => {
|
|
131
|
-
return `# ${guideline.name}\n${guideline.content}`;
|
|
132
|
-
});
|
|
133
|
-
const combinedGuidelines = sections.join('\n\n');
|
|
134
|
-
try {
|
|
135
|
-
// First, render with EJS
|
|
136
|
-
let compiledGuidelines = ejs.render(combinedGuidelines, params);
|
|
137
|
-
// Then, replace placeholders in {} format
|
|
138
|
-
compiledGuidelines = this.replacePlaceholders(compiledGuidelines, params);
|
|
139
|
-
return compiledGuidelines;
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
logger_1.logger.error({ message: 'Error compiling guidelines', error });
|
|
143
|
-
return combinedGuidelines; // Return uncompiled if there's an error
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Replace placeholders in {key} format
|
|
148
|
-
*/
|
|
149
|
-
replacePlaceholders(text, params) {
|
|
150
|
-
return text.replace(/\{([^}]+)\}/g, (match, key) => {
|
|
151
|
-
const keys = key.split('.');
|
|
152
|
-
let value = params;
|
|
153
|
-
for (const k of keys) {
|
|
154
|
-
if (value && typeof value === 'object' && k in value) {
|
|
155
|
-
value = value[k];
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
return match; // Return original if key not found
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return String(value);
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Get raw guidelines without compilation
|
|
166
|
-
*/
|
|
167
|
-
getGuidelines() {
|
|
168
|
-
return this.guidelines;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
exports.GuidelinesManager = GuidelinesManager;
|
|
172
|
-
//# sourceMappingURL=guidelinesManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"guidelinesManager.js","sourceRoot":"","sources":["../../src/guidelines/guidelinesManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { ZodSchema } from 'zod';
|
|
2
|
-
import { DocumentProcessorConfig } from './documentProcessor';
|
|
3
|
-
import { BaseLanguageModel } from '@langchain/core/language_models/base';
|
|
4
|
-
/**
|
|
5
|
-
* Extract data from documents using AI or return raw text.
|
|
6
|
-
*
|
|
7
|
-
* This function allows you to process various document types (PDFs, images, Word docs, etc.)
|
|
8
|
-
* in multiple ways:
|
|
9
|
-
* - With LLM + Schema: Extract structured data according to a Zod schema
|
|
10
|
-
* - With LLM + System Prompt: Extract unstructured data based on prompt instructions
|
|
11
|
-
* - Without LLM: Extract raw text content using LlamaParse
|
|
12
|
-
*
|
|
13
|
-
* @param options - Document extraction options
|
|
14
|
-
* @param options.llm - Optional language model for AI-powered extraction
|
|
15
|
-
* @param options.documentPath - Path to the document file
|
|
16
|
-
* @param options.documentContent - Document content as Buffer or string
|
|
17
|
-
* @param options.documentUrl - URL to fetch the document from
|
|
18
|
-
* @param options.schema - Optional Zod schema for structured data extraction
|
|
19
|
-
* @param options.systemPrompt - Optional prompt for guiding extraction
|
|
20
|
-
* @param options.config - Optional document processor configuration
|
|
21
|
-
*
|
|
22
|
-
* @returns Promise resolving to extracted data/text and metadata
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* import { extractFromDocument } from '@minded-ai/mindedjs';
|
|
27
|
-
* import { z } from 'zod';
|
|
28
|
-
*
|
|
29
|
-
* // Extract structured data with schema
|
|
30
|
-
* const result1 = await extractFromDocument({
|
|
31
|
-
* llm: agent.llm,
|
|
32
|
-
* documentPath: './invoice.pdf',
|
|
33
|
-
* schema: z.object({
|
|
34
|
-
* invoiceNumber: z.string(),
|
|
35
|
-
* amount: z.number(),
|
|
36
|
-
* })
|
|
37
|
-
* });
|
|
38
|
-
*
|
|
39
|
-
* // Extract unstructured data with prompt
|
|
40
|
-
* const result2 = await extractFromDocument({
|
|
41
|
-
* llm: agent.llm,
|
|
42
|
-
* documentPath: './contract.pdf',
|
|
43
|
-
* systemPrompt: 'Extract all payment terms and conditions'
|
|
44
|
-
* });
|
|
45
|
-
*
|
|
46
|
-
* // Extract raw text without LLM
|
|
47
|
-
* const result3 = await extractFromDocument({
|
|
48
|
-
* documentPath: './document.pdf'
|
|
49
|
-
* });
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
export declare function extractFromDocument<T = string>(options: {
|
|
53
|
-
llm?: BaseLanguageModel;
|
|
54
|
-
documentPath?: string;
|
|
55
|
-
documentContent?: Buffer | string;
|
|
56
|
-
documentUrl?: string;
|
|
57
|
-
schema?: ZodSchema<T>;
|
|
58
|
-
systemPrompt?: string;
|
|
59
|
-
config?: DocumentProcessorConfig;
|
|
60
|
-
}): Promise<{
|
|
61
|
-
data: T;
|
|
62
|
-
metadata: {
|
|
63
|
-
fileSize?: number;
|
|
64
|
-
fileType: string;
|
|
65
|
-
processingTime: number;
|
|
66
|
-
contentLength: number;
|
|
67
|
-
};
|
|
68
|
-
}>;
|
|
69
|
-
//# sourceMappingURL=documentExtraction.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"documentExtraction.d.ts","sourceRoot":"","sources":["../../src/internalTools/documentExtraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAqB,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE;IAC7D,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,uBAAuB,CAAC;CAClC,GAAG,OAAO,CAAC;IACV,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH,CAAC,CAYD"}
|