@loopman/langchain-sdk 1.8.0 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -1
- package/dist/agents/loopman-agent.d.ts.map +1 -1
- package/dist/agents/loopman-agent.js.map +1 -1
- package/dist/helpers/template-generator-static.d.ts +27 -0
- package/dist/helpers/template-generator-static.d.ts.map +1 -0
- package/dist/helpers/template-generator-static.js +52 -0
- package/dist/helpers/template-generator-static.js.map +1 -0
- package/dist/helpers/template-generator.d.ts +50 -0
- package/dist/helpers/template-generator.d.ts.map +1 -0
- package/dist/helpers/template-generator.js +85 -0
- package/dist/helpers/template-generator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/langgraph/loopman-context-node.d.ts +2 -2
- package/dist/langgraph/loopman-context-node.d.ts.map +1 -1
- package/dist/langgraph/loopman-context-node.js +32 -20
- package/dist/langgraph/loopman-context-node.js.map +1 -1
- package/dist/langgraph/loopman-validation-node.d.ts +45 -15
- package/dist/langgraph/loopman-validation-node.d.ts.map +1 -1
- package/dist/langgraph/loopman-validation-node.js +144 -21
- package/dist/langgraph/loopman-validation-node.js.map +1 -1
- package/dist/mcp/loopman-mcp-client.d.ts.map +1 -1
- package/dist/mcp/loopman-mcp-client.js +5 -0
- package/dist/mcp/loopman-mcp-client.js.map +1 -1
- package/dist/services/loopman.service.d.ts +11 -2
- package/dist/services/loopman.service.d.ts.map +1 -1
- package/dist/services/loopman.service.js +26 -9
- package/dist/services/loopman.service.js.map +1 -1
- package/dist/templates.json +20 -0
- package/examples/README.md +346 -0
- package/examples/templates/README.md +285 -0
- package/examples/templates/langchain-full-review/.env.example +3 -0
- package/examples/templates/langchain-full-review/README.md +165 -0
- package/examples/templates/langchain-full-review/index.ts +54 -0
- package/examples/templates/langchain-full-review/package.json +29 -0
- package/examples/templates/langchain-full-review/tsconfig.json +22 -0
- package/examples/templates/langchain-tool-validation/.env.example +3 -0
- package/examples/templates/langchain-tool-validation/README.md +137 -0
- package/examples/templates/langchain-tool-validation/index.ts +65 -0
- package/examples/templates/langchain-tool-validation/package.json +29 -0
- package/examples/templates/langchain-tool-validation/tsconfig.json +22 -0
- package/examples/templates/langgraph-hello-world/.env.example +3 -0
- package/examples/templates/langgraph-hello-world/README.md +71 -0
- package/examples/templates/langgraph-hello-world/index.ts +147 -0
- package/examples/templates/langgraph-hello-world/package.json +27 -0
- package/examples/templates/langgraph-hello-world/tsconfig.json +22 -0
- package/package.json +7 -4
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* 3. Polling for human decisions
|
|
8
8
|
* 4. Enriching state with guidelines and decision context
|
|
9
9
|
*/
|
|
10
|
+
import { TaskInformation } from "../types";
|
|
10
11
|
/**
|
|
11
12
|
* Configuration for Loopman validation node
|
|
12
13
|
*/
|
|
@@ -25,7 +26,9 @@ export interface LoopmanValidationNodeConfig {
|
|
|
25
26
|
pollingInterval?: number;
|
|
26
27
|
/** Enable debug logging */
|
|
27
28
|
debug?: boolean;
|
|
28
|
-
/** Custom
|
|
29
|
+
/** Custom title for the task (default: "Tool validation") */
|
|
30
|
+
taskTitle?: string;
|
|
31
|
+
/** Custom message/description to display when creating task */
|
|
29
32
|
taskMessage?: string;
|
|
30
33
|
/** Custom function to extract tool call from message */
|
|
31
34
|
extractToolCall?: (messages: any[]) => {
|
|
@@ -33,6 +36,16 @@ export interface LoopmanValidationNodeConfig {
|
|
|
33
36
|
args: any;
|
|
34
37
|
id: string;
|
|
35
38
|
} | null;
|
|
39
|
+
/** Business context to include in the task (or function to extract from state) */
|
|
40
|
+
businessContext?: string | ((state: any) => string);
|
|
41
|
+
/** Proposed decision to include in the task (or function to extract from state) */
|
|
42
|
+
proposedDecision?: string | ((state: any) => string);
|
|
43
|
+
/** Decision reasoning to include in the task (or function to extract from state) */
|
|
44
|
+
decisionReasoning?: string | ((state: any) => string);
|
|
45
|
+
/** Whether to include full state in task information (default: false) */
|
|
46
|
+
includeFullState?: boolean;
|
|
47
|
+
/** Custom function to format state for task information (if not provided, uses JSON.stringify) */
|
|
48
|
+
formatState?: (state: any) => TaskInformation[];
|
|
36
49
|
}
|
|
37
50
|
/**
|
|
38
51
|
* Creates a Loopman validation node for LangGraph
|
|
@@ -51,7 +64,14 @@ export interface LoopmanValidationNodeConfig {
|
|
|
51
64
|
* and adds `guidelines` and `decisionContext` to the state, making them
|
|
52
65
|
* available for the agent on retry (NEEDS_CHANGES) or subsequent executions.
|
|
53
66
|
*
|
|
54
|
-
*
|
|
67
|
+
* **State Inclusion**: You can include the full agent state in the task information
|
|
68
|
+
* by setting `includeFullState: true`. This helps human reviewers understand the
|
|
69
|
+
* complete context of the decision. You can also provide custom formatters.
|
|
70
|
+
*
|
|
71
|
+
* **Decision Context**: You can provide business context, proposed decisions, and
|
|
72
|
+
* reasoning either as static strings or as functions that extract from the state.
|
|
73
|
+
*
|
|
74
|
+
* @example Basic usage with LoopmanGraphState
|
|
55
75
|
* ```typescript
|
|
56
76
|
* import { createLoopmanValidationNode, LoopmanGraphState } from "loopman-langchain-sdk";
|
|
57
77
|
*
|
|
@@ -62,27 +82,37 @@ export interface LoopmanValidationNodeConfig {
|
|
|
62
82
|
* timeout: 5 * 60 * 1000,
|
|
63
83
|
* pollingInterval: 5000,
|
|
64
84
|
* debug: true,
|
|
65
|
-
*
|
|
85
|
+
* taskTitle: "Email Validation", // Custom title
|
|
86
|
+
* taskMessage: "Please review this action" // Custom description
|
|
66
87
|
* });
|
|
67
88
|
*
|
|
68
89
|
* workflow.addNode("loopman_validation", loopmanNode);
|
|
69
90
|
* ```
|
|
70
91
|
*
|
|
71
|
-
* @example With
|
|
92
|
+
* @example With full state and decision context
|
|
72
93
|
* ```typescript
|
|
73
|
-
* const
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* // ... your custom fields
|
|
94
|
+
* const loopmanNode = createLoopmanValidationNode({
|
|
95
|
+
* apiKey: process.env.LOOPMAN_API_KEY!,
|
|
96
|
+
* workflowId: "my-workflow",
|
|
97
|
+
* includeFullState: true, // Include all state in task information
|
|
98
|
+
* businessContext: (state) => `Processing user request: ${state.userQuery}`,
|
|
99
|
+
* proposedDecision: (state) => `Execute ${state.currentAction} on ${state.targetResource}`,
|
|
100
|
+
* decisionReasoning: (state) => state.reasoning || "No specific reasoning provided",
|
|
81
101
|
* });
|
|
102
|
+
* ```
|
|
82
103
|
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
104
|
+
* @example With custom state formatter
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const loopmanNode = createLoopmanValidationNode({
|
|
107
|
+
* apiKey: process.env.LOOPMAN_API_KEY!,
|
|
108
|
+
* workflowId: "my-workflow",
|
|
109
|
+
* includeFullState: true,
|
|
110
|
+
* formatState: (state) => [
|
|
111
|
+
* { type: "text", label: "User", value: state.userId },
|
|
112
|
+
* { type: "text", label: "Action", value: state.action },
|
|
113
|
+
* { type: "bulletPoints", label: "Parameters", value: Object.keys(state.params) },
|
|
114
|
+
* ],
|
|
115
|
+
* });
|
|
86
116
|
* ```
|
|
87
117
|
*/
|
|
88
118
|
export declare function createLoopmanValidationNode(config: LoopmanValidationNodeConfig): (state: any) => Promise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loopman-validation-node.d.ts","sourceRoot":"","sources":["../../src/langgraph/loopman-validation-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"loopman-validation-node.d.ts","sourceRoot":"","sources":["../../src/langgraph/loopman-validation-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK;QACrC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,GAAG,CAAC;QACV,EAAE,EAAE,MAAM,CAAC;KACZ,GAAG,IAAI,CAAC;IACT,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC;IACpD,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC;IACrD,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC;IACtD,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kGAAkG;IAClG,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,eAAe,EAAE,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,2BAA2B,IAerB,OAAO,GAAG,kBAmNzB"}
|
|
@@ -27,7 +27,14 @@ import { createLoopmanContextNode } from "./loopman-context-node";
|
|
|
27
27
|
* and adds `guidelines` and `decisionContext` to the state, making them
|
|
28
28
|
* available for the agent on retry (NEEDS_CHANGES) or subsequent executions.
|
|
29
29
|
*
|
|
30
|
-
*
|
|
30
|
+
* **State Inclusion**: You can include the full agent state in the task information
|
|
31
|
+
* by setting `includeFullState: true`. This helps human reviewers understand the
|
|
32
|
+
* complete context of the decision. You can also provide custom formatters.
|
|
33
|
+
*
|
|
34
|
+
* **Decision Context**: You can provide business context, proposed decisions, and
|
|
35
|
+
* reasoning either as static strings or as functions that extract from the state.
|
|
36
|
+
*
|
|
37
|
+
* @example Basic usage with LoopmanGraphState
|
|
31
38
|
* ```typescript
|
|
32
39
|
* import { createLoopmanValidationNode, LoopmanGraphState } from "loopman-langchain-sdk";
|
|
33
40
|
*
|
|
@@ -38,35 +45,47 @@ import { createLoopmanContextNode } from "./loopman-context-node";
|
|
|
38
45
|
* timeout: 5 * 60 * 1000,
|
|
39
46
|
* pollingInterval: 5000,
|
|
40
47
|
* debug: true,
|
|
41
|
-
*
|
|
48
|
+
* taskTitle: "Email Validation", // Custom title
|
|
49
|
+
* taskMessage: "Please review this action" // Custom description
|
|
42
50
|
* });
|
|
43
51
|
*
|
|
44
52
|
* workflow.addNode("loopman_validation", loopmanNode);
|
|
45
53
|
* ```
|
|
46
54
|
*
|
|
47
|
-
* @example With
|
|
55
|
+
* @example With full state and decision context
|
|
48
56
|
* ```typescript
|
|
49
|
-
* const
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* // ... your custom fields
|
|
57
|
+
* const loopmanNode = createLoopmanValidationNode({
|
|
58
|
+
* apiKey: process.env.LOOPMAN_API_KEY!,
|
|
59
|
+
* workflowId: "my-workflow",
|
|
60
|
+
* includeFullState: true, // Include all state in task information
|
|
61
|
+
* businessContext: (state) => `Processing user request: ${state.userQuery}`,
|
|
62
|
+
* proposedDecision: (state) => `Execute ${state.currentAction} on ${state.targetResource}`,
|
|
63
|
+
* decisionReasoning: (state) => state.reasoning || "No specific reasoning provided",
|
|
57
64
|
* });
|
|
65
|
+
* ```
|
|
58
66
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
67
|
+
* @example With custom state formatter
|
|
68
|
+
* ```typescript
|
|
69
|
+
* const loopmanNode = createLoopmanValidationNode({
|
|
70
|
+
* apiKey: process.env.LOOPMAN_API_KEY!,
|
|
71
|
+
* workflowId: "my-workflow",
|
|
72
|
+
* includeFullState: true,
|
|
73
|
+
* formatState: (state) => [
|
|
74
|
+
* { type: "text", label: "User", value: state.userId },
|
|
75
|
+
* { type: "text", label: "Action", value: state.action },
|
|
76
|
+
* { type: "bulletPoints", label: "Parameters", value: Object.keys(state.params) },
|
|
77
|
+
* ],
|
|
78
|
+
* });
|
|
62
79
|
* ```
|
|
63
80
|
*/
|
|
64
81
|
export function createLoopmanValidationNode(config) {
|
|
82
|
+
// Generate executionId once for this validation node instance
|
|
83
|
+
const executionId = config.executionId || `exec-${Date.now()}`;
|
|
65
84
|
// Create LoopmanService instance with the provided configuration
|
|
66
85
|
const loopmanService = new LoopmanService({
|
|
67
86
|
apiKey: config.apiKey,
|
|
68
87
|
workflowId: config.workflowId,
|
|
69
|
-
executionId:
|
|
88
|
+
executionId: executionId,
|
|
70
89
|
timeout: config.timeout,
|
|
71
90
|
pollingInterval: config.pollingInterval,
|
|
72
91
|
debug: config.debug,
|
|
@@ -105,13 +124,36 @@ export function createLoopmanValidationNode(config) {
|
|
|
105
124
|
});
|
|
106
125
|
}
|
|
107
126
|
// Step 2: Create or update task in Loopman
|
|
127
|
+
const taskTitle = config.taskTitle || "Tool validation";
|
|
108
128
|
const taskMessage = config.taskMessage || `Validation required for tool: ${toolCall.name}`;
|
|
129
|
+
// Extract businessContext, proposedDecision, and decisionReasoning
|
|
130
|
+
const businessContext = typeof config.businessContext === "function"
|
|
131
|
+
? config.businessContext(state)
|
|
132
|
+
: config.businessContext;
|
|
133
|
+
const proposedDecision = typeof config.proposedDecision === "function"
|
|
134
|
+
? config.proposedDecision(state)
|
|
135
|
+
: config.proposedDecision;
|
|
136
|
+
const decisionReasoning = typeof config.decisionReasoning === "function"
|
|
137
|
+
? config.decisionReasoning(state)
|
|
138
|
+
: config.decisionReasoning;
|
|
139
|
+
// Prepare additional information from state if configured
|
|
140
|
+
let additionalInformation;
|
|
141
|
+
if (config.includeFullState) {
|
|
142
|
+
if (config.formatState) {
|
|
143
|
+
additionalInformation = config.formatState(state);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
additionalInformation = convertStateToInformation(state);
|
|
147
|
+
}
|
|
148
|
+
logger.debug("[LoopmanNode] Including full state in task information", {
|
|
149
|
+
informationCount: additionalInformation.length,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
109
152
|
try {
|
|
110
|
-
const task = await loopmanService.createTaskForValidation(toolCall.name, toolCall.args, taskMessage, toolCall.id, undefined, //
|
|
111
|
-
undefined, //
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
isRetry ? loopmanTaskId : undefined // existingTaskId for retry
|
|
153
|
+
const task = await loopmanService.createTaskForValidation(toolCall.name, toolCall.args, taskMessage, toolCall.id, businessContext, undefined, // parentTaskId
|
|
154
|
+
proposedDecision, decisionReasoning, isRetry ? loopmanTaskId : undefined, // existingTaskId for retry
|
|
155
|
+
additionalInformation, // Additional information from state
|
|
156
|
+
taskTitle // Custom title
|
|
115
157
|
);
|
|
116
158
|
logger.debug("[LoopmanNode] Task created, polling for human decision", {
|
|
117
159
|
taskId: task.id,
|
|
@@ -159,10 +201,11 @@ export function createLoopmanValidationNode(config) {
|
|
|
159
201
|
logger.debug("[LoopmanNode] Status is NEEDS_CHANGES - loading context for retry");
|
|
160
202
|
try {
|
|
161
203
|
// Use the context node to load guidelines and decisions
|
|
204
|
+
// IMPORTANT: Use the same executionId that was used to create the task
|
|
162
205
|
const contextNode = createLoopmanContextNode({
|
|
163
206
|
apiKey: config.apiKey,
|
|
164
207
|
workflowId: config.workflowId,
|
|
165
|
-
executionId:
|
|
208
|
+
executionId: executionId, // Use the executionId from this node instance
|
|
166
209
|
category: config.category,
|
|
167
210
|
includeGuidelines: true,
|
|
168
211
|
includeDecisionHistory: true,
|
|
@@ -218,6 +261,86 @@ export function createLoopmanValidationNode(config) {
|
|
|
218
261
|
// ============================================================================
|
|
219
262
|
// Helper Functions
|
|
220
263
|
// ============================================================================
|
|
264
|
+
/**
|
|
265
|
+
* Converts state to TaskInformation array for display in Loopman UI
|
|
266
|
+
* Excludes messages array and large objects to keep information readable
|
|
267
|
+
*/
|
|
268
|
+
function convertStateToInformation(state) {
|
|
269
|
+
const information = [];
|
|
270
|
+
// Add a header indicating this is the full state
|
|
271
|
+
information.push({
|
|
272
|
+
type: "text",
|
|
273
|
+
label: "Full State",
|
|
274
|
+
value: "Complete agent state snapshot",
|
|
275
|
+
});
|
|
276
|
+
// Iterate through state properties
|
|
277
|
+
for (const [key, value] of Object.entries(state)) {
|
|
278
|
+
// Skip messages array (too verbose)
|
|
279
|
+
if (key === "messages") {
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
// Skip null/undefined values
|
|
283
|
+
if (value === null || value === undefined) {
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
const label = key.charAt(0).toUpperCase() + key.slice(1).replace(/_/g, " ");
|
|
287
|
+
// Handle different value types
|
|
288
|
+
if (typeof value === "string") {
|
|
289
|
+
// Detect URLs
|
|
290
|
+
if (value.startsWith("http://") || value.startsWith("https://")) {
|
|
291
|
+
information.push({
|
|
292
|
+
type: "url",
|
|
293
|
+
label: `${label} URL`,
|
|
294
|
+
value: value,
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
information.push({
|
|
299
|
+
type: "text",
|
|
300
|
+
label: label,
|
|
301
|
+
value: value,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
else if (typeof value === "boolean" || typeof value === "number") {
|
|
306
|
+
information.push({
|
|
307
|
+
type: "text",
|
|
308
|
+
label: label,
|
|
309
|
+
value: String(value),
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
else if (Array.isArray(value)) {
|
|
313
|
+
// For arrays, check if they're simple values or complex objects
|
|
314
|
+
if (value.length === 0) {
|
|
315
|
+
continue; // Skip empty arrays
|
|
316
|
+
}
|
|
317
|
+
if (typeof value[0] === "string" || typeof value[0] === "number") {
|
|
318
|
+
information.push({
|
|
319
|
+
type: "bulletPoints",
|
|
320
|
+
label: label,
|
|
321
|
+
value: value.map(String),
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
// Complex objects - stringify them
|
|
326
|
+
information.push({
|
|
327
|
+
type: "text",
|
|
328
|
+
label: label,
|
|
329
|
+
value: JSON.stringify(value, null, 2),
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
else if (typeof value === "object") {
|
|
334
|
+
// Complex objects - stringify them
|
|
335
|
+
information.push({
|
|
336
|
+
type: "text",
|
|
337
|
+
label: label,
|
|
338
|
+
value: JSON.stringify(value, null, 2),
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return information;
|
|
343
|
+
}
|
|
221
344
|
/**
|
|
222
345
|
* Extracts tool call from a message
|
|
223
346
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loopman-validation-node.js","sourceRoot":"","sources":["../../src/langgraph/loopman-validation-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"loopman-validation-node.js","sourceRoot":"","sources":["../../src/langgraph/loopman-validation-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loopman-mcp-client.d.ts","sourceRoot":"","sources":["../../src/mcp/loopman-mcp-client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,sBAAsB;IAQ1C,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"loopman-mcp-client.d.ts","sourceRoot":"","sources":["../../src/mcp/loopman-mcp-client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,sBAAsB;IAQ1C,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAQlB,WAAW;CAgC1B"}
|
|
@@ -17,8 +17,11 @@ export class LoopmanMcpClient {
|
|
|
17
17
|
if (this.connected) {
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
+
console.log(`[LoopmanMcpClient] Connecting to ${this.config.serverUrl}...`);
|
|
20
21
|
await this.checkHealth();
|
|
22
|
+
console.log(`[LoopmanMcpClient] Health check passed`);
|
|
21
23
|
if (!this.client) {
|
|
24
|
+
console.log(`[LoopmanMcpClient] Creating MCP client for ${this.config.serverUrl}/mcp/sse`);
|
|
22
25
|
this.client = new MultiServerMCPClient({
|
|
23
26
|
loopman: {
|
|
24
27
|
transport: "sse",
|
|
@@ -31,7 +34,9 @@ export class LoopmanMcpClient {
|
|
|
31
34
|
});
|
|
32
35
|
}
|
|
33
36
|
// Initialize the SSE connection
|
|
37
|
+
console.log(`[LoopmanMcpClient] Initializing SSE connection...`);
|
|
34
38
|
await this.client.initializeConnections();
|
|
39
|
+
console.log(`[LoopmanMcpClient] SSE connection initialized`);
|
|
35
40
|
this.connected = true;
|
|
36
41
|
}
|
|
37
42
|
async disconnect() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loopman-mcp-client.js","sourceRoot":"","sources":["../../src/mcp/loopman-mcp-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAQ/D,MAAM,OAAO,gBAAgB;IACV,MAAM,CAAmC;IAClD,MAAM,GAAgC,IAAI,CAAC;IAC3C,SAAS,GAAG,KAAK,CAAC;IAE1B,YAAY,MAA8B;QACxC,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,wBAAwB;YAC7F,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;YACrC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"loopman-mcp-client.js","sourceRoot":"","sources":["../../src/mcp/loopman-mcp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DecisionContextResponse, GuidelinesResponse, LoopmanServiceConfig, LoopmanTaskResponse } from "../types";
|
|
1
|
+
import { DecisionContextResponse, GuidelinesResponse, LoopmanServiceConfig, LoopmanTaskResponse, TaskInformation } from "../types";
|
|
2
2
|
import { LoggerService } from "./logger.service";
|
|
3
3
|
import { PollingService, type PollingOptions } from "./polling.service";
|
|
4
4
|
/**
|
|
@@ -22,6 +22,13 @@ export declare class LoopmanService {
|
|
|
22
22
|
* @returns Guidelines response with list of guidelines
|
|
23
23
|
*/
|
|
24
24
|
getGuidelines(category?: string): Promise<GuidelinesResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* Get decision context for an execution
|
|
27
|
+
* Fetches all decisions for a given execution identifier
|
|
28
|
+
* @param executionId - Execution identifier
|
|
29
|
+
* @returns Decision context response
|
|
30
|
+
*/
|
|
31
|
+
getDecisionContext(executionId: string): Promise<DecisionContextResponse>;
|
|
25
32
|
/**
|
|
26
33
|
* Get decision context from a task's decisions
|
|
27
34
|
* This extracts decision history from a task response (from GET /api/v1/tasks/:id)
|
|
@@ -59,9 +66,11 @@ export declare class LoopmanService {
|
|
|
59
66
|
* @param proposedDecision - Optional proposed decision from parent task
|
|
60
67
|
* @param decisionReasoning - Optional decision reasoning from parent task
|
|
61
68
|
* @param existingTaskId - Optional existing task ID to update (for NEEDS_CHANGES retries)
|
|
69
|
+
* @param additionalInformation - Optional additional information to append to task information
|
|
70
|
+
* @param title - Optional custom title for the task (defaults to "Tool validation")
|
|
62
71
|
* @returns The created or updated task response from Loopman API
|
|
63
72
|
*/
|
|
64
|
-
createTaskForValidation(toolName: string, toolArgs: any, description?: string, toolCallId?: string, businessContext?: string, parentTaskId?: string, proposedDecision?: string, decisionReasoning?: string, existingTaskId?: string): Promise<LoopmanTaskResponse>;
|
|
73
|
+
createTaskForValidation(toolName: string, toolArgs: any, description?: string, toolCallId?: string, businessContext?: string, parentTaskId?: string, proposedDecision?: string, decisionReasoning?: string, existingTaskId?: string, additionalInformation?: TaskInformation[], title?: string): Promise<LoopmanTaskResponse>;
|
|
65
74
|
/**
|
|
66
75
|
* Get the current status of a task
|
|
67
76
|
* @param taskId - The ID of the task to check
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loopman.service.d.ts","sourceRoot":"","sources":["../../src/services/loopman.service.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"loopman.service.d.ts","sourceRoot":"","sources":["../../src/services/loopman.service.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExE;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,MAAM,CAAuB;IAGrC,SAAgB,OAAO,EAAE,cAAc,CAAC;IACxC,SAAgB,MAAM,EAAE,aAAa,CAAC;gBAE1B,MAAM,EAAE,oBAAoB;IAqCxC;;;OAGG;IACG,OAAO,CACX,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAC1C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAKhB;;;;OAIG;IACG,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuBnE;;;;;OAKG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,CAAC;IASnC;;;;;OAKG;IACH,0BAA0B,CACxB,IAAI,EAAE,mBAAmB,GACxB,uBAAuB;IA2B1B;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IAgBrC;;;;OAIG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBhD;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAyDpC;;;;;;;;;;;;;;;;OAgBG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,GAAG,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,EACxB,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,CAAC,EAAE,MAAM,EACzB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,qBAAqB,CAAC,EAAE,eAAe,EAAE,EACzC,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IAkF/B;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsB3D;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,cAAc;CAY7E"}
|
|
@@ -59,12 +59,10 @@ export class LoopmanService {
|
|
|
59
59
|
*/
|
|
60
60
|
async getGuidelines(category) {
|
|
61
61
|
try {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
const response = await this.apiClient.get(this.config.apiKey, `/api/v1/guidelines?${params.toString()}`);
|
|
62
|
+
// Build endpoint: /api/v1/guidelines/:workflowId?/:category?
|
|
63
|
+
const categoryParam = category || "none";
|
|
64
|
+
const endpoint = `/api/v1/guidelines/${this.config.workflowId}/${categoryParam}`;
|
|
65
|
+
const response = await this.apiClient.get(this.config.apiKey, endpoint);
|
|
68
66
|
this.logger.debug(`[LoopmanService] Retrieved ${response.guidelines.length} guidelines`);
|
|
69
67
|
return response;
|
|
70
68
|
}
|
|
@@ -74,6 +72,18 @@ export class LoopmanService {
|
|
|
74
72
|
return { guidelines: [] };
|
|
75
73
|
}
|
|
76
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Get decision context for an execution
|
|
77
|
+
* Fetches all decisions for a given execution identifier
|
|
78
|
+
* @param executionId - Execution identifier
|
|
79
|
+
* @returns Decision context response
|
|
80
|
+
*/
|
|
81
|
+
async getDecisionContext(executionId) {
|
|
82
|
+
// For now, return empty as we primarily use task-based decision context
|
|
83
|
+
// This method can be implemented later if execution-level decision tracking is needed
|
|
84
|
+
this.logger.debug(`[LoopmanService] Execution-level decision context not yet implemented (executionId: ${executionId})`);
|
|
85
|
+
return { decisions: [] };
|
|
86
|
+
}
|
|
77
87
|
/**
|
|
78
88
|
* Get decision context from a task's decisions
|
|
79
89
|
* This extracts decision history from a task response (from GET /api/v1/tasks/:id)
|
|
@@ -193,9 +203,11 @@ export class LoopmanService {
|
|
|
193
203
|
* @param proposedDecision - Optional proposed decision from parent task
|
|
194
204
|
* @param decisionReasoning - Optional decision reasoning from parent task
|
|
195
205
|
* @param existingTaskId - Optional existing task ID to update (for NEEDS_CHANGES retries)
|
|
206
|
+
* @param additionalInformation - Optional additional information to append to task information
|
|
207
|
+
* @param title - Optional custom title for the task (defaults to "Tool validation")
|
|
196
208
|
* @returns The created or updated task response from Loopman API
|
|
197
209
|
*/
|
|
198
|
-
async createTaskForValidation(toolName, toolArgs, description, toolCallId, businessContext, parentTaskId, proposedDecision, decisionReasoning, existingTaskId) {
|
|
210
|
+
async createTaskForValidation(toolName, toolArgs, description, toolCallId, businessContext, parentTaskId, proposedDecision, decisionReasoning, existingTaskId, additionalInformation, title) {
|
|
199
211
|
try {
|
|
200
212
|
const timestamp = new Date().toISOString();
|
|
201
213
|
const externalReference = `${this.config.workflowId}-${this.config.executionId}-${toolName}-${Date.now()}`;
|
|
@@ -214,9 +226,14 @@ export class LoopmanService {
|
|
|
214
226
|
.slice(0, 20)}`;
|
|
215
227
|
idempotencyKey = `${this.config.executionId}-${toolName}-${uniqueSuffix}`;
|
|
216
228
|
}
|
|
229
|
+
// Convert tool args to information and append additional information if provided
|
|
230
|
+
const baseInformation = this.convertToolArgsToInformation(toolName, toolArgs);
|
|
231
|
+
const information = additionalInformation
|
|
232
|
+
? [...baseInformation, ...additionalInformation]
|
|
233
|
+
: baseInformation;
|
|
217
234
|
const payload = {
|
|
218
235
|
id: existingTaskId, // Include task ID for updates (upsert)
|
|
219
|
-
title:
|
|
236
|
+
title: title || "Tool validation",
|
|
220
237
|
description: description || `Validation required for tool: ${toolName}`,
|
|
221
238
|
workflowIdentifier: this.config.workflowId,
|
|
222
239
|
executionIdentifier: this.config.executionId,
|
|
@@ -231,7 +248,7 @@ export class LoopmanService {
|
|
|
231
248
|
toolArgs,
|
|
232
249
|
parentTaskId, // Link to parent reflection task
|
|
233
250
|
},
|
|
234
|
-
information
|
|
251
|
+
information,
|
|
235
252
|
priority: "MEDIUM",
|
|
236
253
|
externalReference,
|
|
237
254
|
idempotencyKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loopman.service.js","sourceRoot":"","sources":["../../src/services/loopman.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAUzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAuB,MAAM,mBAAmB,CAAC;AAExE;;;GAGG;AACH,MAAM,OAAO,cAAc;IACjB,SAAS,CAAmB;IAC5B,MAAM,CAAuB;IAErC,oCAAoC;IACpB,OAAO,CAAiB;IACxB,MAAM,CAAgB;IAEtC,YAAY,MAA4B;QACtC,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;YACpC,eAAe,EAAE,IAAI,EAAE,YAAY;YACnC,KAAK,EAAE,KAAK;YACZ,GAAG,MAAM;SACV,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjE,wBAAwB;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QAEH,gFAAgF;QAChF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEzD,uDAAuD;QACvD,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;YACtC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CACX,KAA0C,EAC1C,OAAe;QAEf,6BAA6B;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,QAAiB;QACnC,IAAI,CAAC;YACH,
|
|
1
|
+
{"version":3,"file":"loopman.service.js","sourceRoot":"","sources":["../../src/services/loopman.service.ts"],"names":[],"mappings":"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"}
|