@loopman/langchain-sdk 1.7.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 +78 -5
- package/dist/agents/loopman-agent.d.ts.map +1 -1
- package/dist/agents/loopman-agent.js +51 -92
- package/dist/agents/loopman-agent.js.map +1 -1
- package/dist/client/loopman-api.d.ts +19 -64
- package/dist/client/loopman-api.d.ts.map +1 -1
- package/dist/client/loopman-api.js +85 -248
- package/dist/client/loopman-api.js.map +1 -1
- package/dist/helpers/prompt-orchestrator.js +17 -17
- package/dist/helpers/prompt-orchestrator.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 +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/langgraph/helpers.d.ts +171 -0
- package/dist/langgraph/helpers.d.ts.map +1 -0
- package/dist/langgraph/helpers.js +216 -0
- package/dist/langgraph/helpers.js.map +1 -0
- package/dist/langgraph/index.d.ts +16 -0
- package/dist/langgraph/index.d.ts.map +1 -0
- package/dist/langgraph/index.js +17 -0
- package/dist/langgraph/index.js.map +1 -0
- package/dist/langgraph/loopman-conditional-edge.d.ts +58 -0
- package/dist/langgraph/loopman-conditional-edge.d.ts.map +1 -0
- package/dist/langgraph/loopman-conditional-edge.js +77 -0
- package/dist/langgraph/loopman-conditional-edge.js.map +1 -0
- package/dist/langgraph/loopman-context-node.d.ts +74 -0
- package/dist/langgraph/loopman-context-node.d.ts.map +1 -0
- package/dist/langgraph/loopman-context-node.js +143 -0
- package/dist/langgraph/loopman-context-node.js.map +1 -0
- package/dist/langgraph/loopman-validation-node.d.ts +119 -0
- package/dist/langgraph/loopman-validation-node.d.ts.map +1 -0
- package/dist/langgraph/loopman-validation-node.js +420 -0
- package/dist/langgraph/loopman-validation-node.js.map +1 -0
- package/dist/langgraph/types.d.ts +75 -0
- package/dist/langgraph/types.d.ts.map +1 -0
- package/dist/langgraph/types.js +74 -0
- package/dist/langgraph/types.js.map +1 -0
- package/dist/loopman-agent-wrapper.d.ts +18 -0
- package/dist/loopman-agent-wrapper.d.ts.map +1 -1
- package/dist/loopman-agent-wrapper.js +31 -21
- package/dist/loopman-agent-wrapper.js.map +1 -1
- package/dist/loopman-middleware.d.ts +0 -5
- package/dist/loopman-middleware.d.ts.map +1 -1
- package/dist/loopman-middleware.js +22 -23
- package/dist/loopman-middleware.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/mcp/tool-registry.d.ts +7 -1
- package/dist/mcp/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tool-registry.js +23 -16
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/services/logger.service.d.ts.map +1 -1
- package/dist/services/logger.service.js +4 -12
- package/dist/services/logger.service.js.map +1 -1
- package/dist/services/loopman.service.d.ts +25 -11
- package/dist/services/loopman.service.d.ts.map +1 -1
- package/dist/services/loopman.service.js +74 -45
- package/dist/services/loopman.service.js.map +1 -1
- package/dist/services/polling.service.d.ts +7 -3
- package/dist/services/polling.service.d.ts.map +1 -1
- package/dist/services/polling.service.js +61 -47
- package/dist/services/polling.service.js.map +1 -1
- package/dist/templates.json +20 -0
- package/dist/types.d.ts +9 -35
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- 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 +12 -7
package/README.md
CHANGED
|
@@ -44,6 +44,11 @@ Perfect for learning agent patterns, HITL workflows, and building production-rea
|
|
|
44
44
|
|
|
45
45
|
- ✅ **Native HITL Middleware**: LangChain's `humanInTheLoopMiddleware`
|
|
46
46
|
- ✅ **Custom Loopman Middleware**: Platform-specific integration
|
|
47
|
+
- ✅ **LangGraph Integration**: Reusable validation nodes with conditional routing
|
|
48
|
+
- ✅ **Full State Sharing**: Send complete agent state to human reviewers
|
|
49
|
+
- ✅ **Business Context**: Define context, proposed decisions, and reasoning
|
|
50
|
+
- ✅ **Context Enrichment**: Automatic guidelines and decision history integration
|
|
51
|
+
- ✅ **Helper Functions**: `enrichSystemPrompt()` for simplified agent integration
|
|
47
52
|
- ✅ **Decision Types**: Approve, Edit, Reject workflows
|
|
48
53
|
- ✅ **Selective Interruption**: Per-tool configuration
|
|
49
54
|
- ✅ **Double Validation Layer**: Global MCP validation + tool-specific validation
|
|
@@ -180,6 +185,49 @@ const result = await agent.invoke(
|
|
|
180
185
|
// ✅ Middleware handles HITL transparently
|
|
181
186
|
```
|
|
182
187
|
|
|
188
|
+
### LangGraph with Context Enrichment
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
import {
|
|
192
|
+
LoopmanGraphState,
|
|
193
|
+
createLoopmanContextNode,
|
|
194
|
+
enrichSystemPrompt,
|
|
195
|
+
} from "loopman-langchain-sdk";
|
|
196
|
+
import { StateGraph } from "@langchain/langgraph";
|
|
197
|
+
|
|
198
|
+
// 1. Create context node to load guidelines and decision history
|
|
199
|
+
const contextNode = createLoopmanContextNode({
|
|
200
|
+
apiKey: process.env.LOOPMAN_API_KEY!,
|
|
201
|
+
workflowId: "my-workflow",
|
|
202
|
+
category: "email",
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
// 2. Use context in agent with one-liner
|
|
206
|
+
async function agentNode(state: typeof LoopmanGraphState.State) {
|
|
207
|
+
const { messages, guidelines, decisionContext } = state;
|
|
208
|
+
|
|
209
|
+
// ✨ Automatically enrich system prompt with Loopman context
|
|
210
|
+
const systemPrompt = enrichSystemPrompt("You are a helpful assistant.", {
|
|
211
|
+
guidelines,
|
|
212
|
+
decisionContext,
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
const response = await model.invoke([
|
|
216
|
+
{ role: "system", content: systemPrompt },
|
|
217
|
+
...messages,
|
|
218
|
+
]);
|
|
219
|
+
|
|
220
|
+
return { messages: [response] };
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// 3. Build workflow
|
|
224
|
+
const workflow = new StateGraph(LoopmanGraphState)
|
|
225
|
+
.addNode("load_context", contextNode)
|
|
226
|
+
.addNode("agent", agentNode)
|
|
227
|
+
.addEdge(START, "load_context")
|
|
228
|
+
.addEdge("load_context", "agent");
|
|
229
|
+
```
|
|
230
|
+
|
|
183
231
|
---
|
|
184
232
|
|
|
185
233
|
## 📚 Examples
|
|
@@ -212,6 +260,11 @@ Comprehensive examples are organized in the `examples/` directory by complexity
|
|
|
212
260
|
|
|
213
261
|
- `conditional-hitl.ts` - Context-aware, intelligent validation
|
|
214
262
|
|
|
263
|
+
**5. LangGraph Integration** (`examples/5-langgraph-integration/`)
|
|
264
|
+
|
|
265
|
+
- `loopman-validation-graph.ts` - LangGraph workflow with validation node and context enrichment
|
|
266
|
+
- `full-state-example.ts` - Complete state sharing with business context and custom formatting
|
|
267
|
+
|
|
215
268
|
### Running Examples
|
|
216
269
|
|
|
217
270
|
```bash
|
|
@@ -229,10 +282,18 @@ npx tsx examples/3-real-world-examples/task-management/task-approval.ts
|
|
|
229
282
|
|
|
230
283
|
# Advanced
|
|
231
284
|
npx tsx examples/4-advanced-patterns/conditional-hitl.ts
|
|
285
|
+
|
|
286
|
+
# LangGraph Integration
|
|
287
|
+
npx tsx examples/5-langgraph-integration/loopman-validation-graph.ts
|
|
288
|
+
npm run example:langgraph-full-state
|
|
232
289
|
```
|
|
233
290
|
|
|
234
291
|
See [Examples README](./examples/README.md) for detailed documentation and learning paths.
|
|
235
292
|
|
|
293
|
+
**New:**
|
|
294
|
+
- Check out the [LangGraph Integration Guide](./docs/LANGGRAPH_INTEGRATION.md) for building stateful workflows with Loopman validation nodes
|
|
295
|
+
- See [Full State Integration Guide](./docs/LANGGRAPH_FULL_STATE.md) for sharing complete agent state with human reviewers
|
|
296
|
+
|
|
236
297
|
---
|
|
237
298
|
|
|
238
299
|
**Key Features Demonstrated:**
|
|
@@ -410,7 +471,6 @@ Creates a LangChain middleware for Loopman integration.
|
|
|
410
471
|
- `config.apiKey` (string, required): Loopman API key
|
|
411
472
|
- `config.workflowId` (string, required): Workflow identifier
|
|
412
473
|
- `config.executionId` (string, optional): Execution ID
|
|
413
|
-
- `config.channelId` (string, optional): Channel ID for task routing
|
|
414
474
|
- `config.mode` (string, optional): Operation mode (`tool-validation`, `prompt-enhancement`, `full`)
|
|
415
475
|
- `config.interruptOn` (Record<string, boolean>, optional): Tool validation config
|
|
416
476
|
- `config.timeout` (number, optional): Decision timeout in ms
|
|
@@ -444,7 +504,6 @@ Creates a complete Loopman agent with MCP integration and double validation laye
|
|
|
444
504
|
- `config.systemPrompt` (string, required): System prompt for the agent
|
|
445
505
|
- `config.additionalTools` (array, optional): Custom tools to add
|
|
446
506
|
- `config.category` (string, optional): Category for guidelines organization
|
|
447
|
-
- `config.channelId` (string, optional): Channel ID for task routing
|
|
448
507
|
- `config.language` (string, optional): Language for human review interface
|
|
449
508
|
- `config.requireApprovalForTools` (array, optional): Tools requiring approval (`['*']` for all)
|
|
450
509
|
- `config.manualExecutionMode` (boolean, optional): Manual execution mode
|
|
@@ -536,11 +595,25 @@ See `src/loopman-middleware.ts` for the complete implementation.
|
|
|
536
595
|
|
|
537
596
|
## 🔗 Related Resources
|
|
538
597
|
|
|
598
|
+
### SDK Documentation
|
|
599
|
+
|
|
600
|
+
- [LangGraph Integration Guide](./docs/LANGGRAPH_INTEGRATION.md) - Build stateful workflows with validation nodes
|
|
601
|
+
- [LangGraph Context Enrichment](./docs/LANGGRAPH_CONTEXT_ENRICHMENT.md) - Load guidelines and decision history
|
|
602
|
+
- [LangGraph Helper Functions](./docs/LANGGRAPH_HELPERS.md) - Utility functions for context integration
|
|
603
|
+
- [LangGraph Custom State](./docs/LANGGRAPH_CUSTOM_STATE.md) - Use Loopman with your own state schema
|
|
604
|
+
- [requiresValidation Mechanism](./docs/REQUIRES_VALIDATION_MECHANISM.md) - How validation triggering works
|
|
605
|
+
- [Validation Node Context Enrichment](./docs/VALIDATION_NODE_CONTEXT_ENRICHMENT.md) - Auto context loading after validation ⭐ New
|
|
606
|
+
- [Loopman Agent Guide](./docs/LOOPMAN_AGENT.md) - Full agent implementation with MCP
|
|
607
|
+
- [Tool Validation Mode](./docs/TOOL_VALIDATION_MODE.md) - Middleware tool validation
|
|
608
|
+
- [Auto-Correction with Feedback](./docs/AUTO_CORRECTION_WITH_FEEDBACK.md) - Agent retry patterns
|
|
609
|
+
- [Evolution to LangGraph](./docs/EVOLUTION_TO_LANGGRAPH.md) - Migration roadmap
|
|
610
|
+
|
|
539
611
|
### LangChain Documentation
|
|
540
612
|
|
|
541
613
|
- [LangChain v1.0 Quickstart](https://docs.langchain.com/oss/javascript/langchain/quickstart)
|
|
542
614
|
- [Human-in-the-Loop Guide](https://docs.langchain.com/oss/javascript/langchain/human-in-the-loop)
|
|
543
615
|
- [Tools Documentation](https://docs.langchain.com/oss/javascript/langchain/tools)
|
|
616
|
+
- [LangGraph Documentation](https://js.langchain.com/docs/langgraph/)
|
|
544
617
|
|
|
545
618
|
### Loopman Platform
|
|
546
619
|
|
|
@@ -552,7 +625,7 @@ See `src/loopman-middleware.ts` for the complete implementation.
|
|
|
552
625
|
|
|
553
626
|
## 📄 License
|
|
554
627
|
|
|
555
|
-
|
|
628
|
+
MPL-2.0 (Mozilla Public License 2.0). See `LICENSE`.
|
|
556
629
|
|
|
557
630
|
---
|
|
558
631
|
|
|
@@ -574,7 +647,7 @@ This is a demonstration project. For production use, see the [Loopman LangChain
|
|
|
574
647
|
|
|
575
648
|
- Use VSCode debug configurations for step-through debugging
|
|
576
649
|
- Enable `debug: true` in middleware for detailed logging
|
|
577
|
-
- Check `
|
|
650
|
+
- Check SDK debug logs (via `LoggerService`) for tool execution details
|
|
578
651
|
|
|
579
652
|
### Performance
|
|
580
653
|
|
|
@@ -591,4 +664,4 @@ This is a demonstration project. For production use, see the [Loopman LangChain
|
|
|
591
664
|
|
|
592
665
|
---
|
|
593
666
|
|
|
594
|
-
|
|
667
|
+
Built using LangChain v1.0 and TypeScript.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loopman-agent.d.ts","sourceRoot":"","sources":["../../src/agents/loopman-agent.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB,qBAAa,YAAY;IAcX,OAAO,CAAC,QAAQ,CAAC,MAAM;IAbnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IAExC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,gBAAgB,CAAa;gBAER,MAAM,EAAE,kBAAkB;IAoBjD,0BAA0B,CAC9B,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"loopman-agent.d.ts","sourceRoot":"","sources":["../../src/agents/loopman-agent.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB,qBAAa,YAAY;IAcX,OAAO,CAAC,QAAQ,CAAC,MAAM;IAbnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IAExC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,gBAAgB,CAAa;gBAER,MAAM,EAAE,kBAAkB;IAoBjD,0BAA0B,CAC9B,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,kBAAkB,CAAC;IAkPxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,OAAO,CAAC,uBAAuB;YAwBjB,WAAW;IA0GzB,OAAO,CAAC,aAAa;IAkBrB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAoC9B,OAAO,CAAC,kBAAkB;CAW3B;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,wBAAwB,GAC/B,YAAY,CAWd"}
|
|
@@ -41,22 +41,23 @@ export class LoopmanAgent {
|
|
|
41
41
|
? this.baseExecutionId
|
|
42
42
|
: `exec-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
43
43
|
// Initialize services with the correct executionId
|
|
44
|
-
this.toolRegistry = new LoopmanToolRegistry({
|
|
45
|
-
workflowId: this.config.workflowId,
|
|
46
|
-
executionId: executionId,
|
|
47
|
-
category: this.config.category,
|
|
48
|
-
channelId: this.config.channelId,
|
|
49
|
-
debug: this.debug,
|
|
50
|
-
});
|
|
51
44
|
this.loopmanService = new LoopmanService({
|
|
52
45
|
apiKey: this.config.apiKey,
|
|
53
46
|
workflowId: this.config.workflowId,
|
|
54
47
|
executionId: executionId,
|
|
55
|
-
channelId: this.config.channelId,
|
|
56
48
|
timeout: this.config.pollingTimeoutMs,
|
|
57
49
|
pollingInterval: this.config.pollingIntervalMs,
|
|
58
50
|
debug: this.debug,
|
|
59
51
|
});
|
|
52
|
+
// Tool registry uses the same logger to keep debug output centralized
|
|
53
|
+
this.toolRegistry = new LoopmanToolRegistry({
|
|
54
|
+
workflowId: this.config.workflowId,
|
|
55
|
+
executionId: executionId,
|
|
56
|
+
category: this.config.category,
|
|
57
|
+
debug: this.debug,
|
|
58
|
+
logger: this.loopmanService.logger,
|
|
59
|
+
});
|
|
60
|
+
const logger = this.loopmanService.logger;
|
|
60
61
|
let attempt = 0;
|
|
61
62
|
let taskId;
|
|
62
63
|
let feedbackFromHuman;
|
|
@@ -68,48 +69,17 @@ export class LoopmanAgent {
|
|
|
68
69
|
// Store the conversation history for potential execution after approval
|
|
69
70
|
const conversationHistory = result.messages || [];
|
|
70
71
|
if (this.config.debug) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (content) {
|
|
83
|
-
// Truncate very long content for readability
|
|
84
|
-
const displayContent = content.length > 500
|
|
85
|
-
? content.substring(0, 500) + "... (truncated)"
|
|
86
|
-
: content;
|
|
87
|
-
console.log(displayContent);
|
|
88
|
-
}
|
|
89
|
-
// Show tool calls if present
|
|
90
|
-
if (msg.tool_calls && msg.tool_calls.length > 0) {
|
|
91
|
-
console.log("\n🔧 Tool Calls:");
|
|
92
|
-
msg.tool_calls.forEach((tc) => {
|
|
93
|
-
console.log(` - ${tc.name}(${JSON.stringify(tc.args).substring(0, 100)}...)`);
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
console.log("");
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
// Also show intermediate steps if available
|
|
100
|
-
if (result.intermediateSteps &&
|
|
101
|
-
result.intermediateSteps.length > 0) {
|
|
102
|
-
console.log("📊 Intermediate Steps:");
|
|
103
|
-
result.intermediateSteps.forEach((step, index) => {
|
|
104
|
-
console.log(` ${index + 1}. Action: ${step.action?.tool || "unknown"}`);
|
|
105
|
-
if (step.observation) {
|
|
106
|
-
const obs = String(step.observation).substring(0, 100);
|
|
107
|
-
console.log(` Observation: ${obs}...`);
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
console.log("");
|
|
111
|
-
}
|
|
112
|
-
console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
|
|
72
|
+
const messages = Array.isArray(result.messages)
|
|
73
|
+
? result.messages
|
|
74
|
+
: [];
|
|
75
|
+
const intermediateSteps = Array.isArray(result.intermediateSteps)
|
|
76
|
+
? result.intermediateSteps
|
|
77
|
+
: [];
|
|
78
|
+
logger.debug("[LoopmanAgent] Agent invocation completed", {
|
|
79
|
+
attempt: attempt + 1,
|
|
80
|
+
messagesCount: messages.length,
|
|
81
|
+
intermediateStepsCount: intermediateSteps.length,
|
|
82
|
+
});
|
|
113
83
|
}
|
|
114
84
|
const finalMessage = Array.isArray(result.messages)
|
|
115
85
|
? result.messages[result.messages.length - 1]
|
|
@@ -117,7 +87,7 @@ export class LoopmanAgent {
|
|
|
117
87
|
const agentOutput = this.normalizeMessageContent(finalMessage?.content);
|
|
118
88
|
const toolCalls = finalMessage?.tool_calls ?? finalMessage?.toolCalls;
|
|
119
89
|
if (this.config.debug && toolCalls) {
|
|
120
|
-
|
|
90
|
+
logger.debug("[LoopmanAgent] Tool calls detected", toolCalls);
|
|
121
91
|
}
|
|
122
92
|
const parsedTaskId = extractTaskId(agentOutput ?? "");
|
|
123
93
|
const confidence = agentOutput
|
|
@@ -136,9 +106,9 @@ export class LoopmanAgent {
|
|
|
136
106
|
// Update middleware config with the new taskId as parentTaskId for future tool calls
|
|
137
107
|
if (this.middlewareConfig) {
|
|
138
108
|
this.middlewareConfig.parentTaskId = taskId;
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
109
|
+
logger.debug("[LoopmanAgent] Updated middlewareConfig.parentTaskId", {
|
|
110
|
+
parentTaskId: taskId,
|
|
111
|
+
});
|
|
142
112
|
}
|
|
143
113
|
const decision = await this.loopmanService.polling.waitForDecision({
|
|
144
114
|
taskId: taskId,
|
|
@@ -150,7 +120,7 @@ export class LoopmanAgent {
|
|
|
150
120
|
debug: this.debug,
|
|
151
121
|
});
|
|
152
122
|
if (this.config.debug) {
|
|
153
|
-
|
|
123
|
+
logger.debug("[LoopmanAgent] Decision received", decision);
|
|
154
124
|
}
|
|
155
125
|
if (decision.status === "VALIDATED") {
|
|
156
126
|
// If manualExecutionMode is enabled, just return the approval status
|
|
@@ -284,41 +254,38 @@ export class LoopmanAgent {
|
|
|
284
254
|
return String(content);
|
|
285
255
|
}
|
|
286
256
|
async ensureAgent(executionId, taskId) {
|
|
257
|
+
const logger = this.loopmanService?.logger;
|
|
287
258
|
// Always try to reconnect if not connected
|
|
288
259
|
if (!this.mcpClient.isConnected) {
|
|
289
|
-
|
|
290
|
-
console.log("[LoopmanAgent] MCP not connected, attempting connection...");
|
|
291
|
-
}
|
|
260
|
+
logger?.debug("[LoopmanAgent] MCP not connected, attempting connection");
|
|
292
261
|
await this.mcpClient.connect();
|
|
293
262
|
}
|
|
294
263
|
// Always refresh tools to ensure MCP session is alive
|
|
295
264
|
// If the session is dead, this will throw and we'll reconnect
|
|
296
265
|
try {
|
|
297
266
|
const tools = await this.mcpClient.getTools();
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
}
|
|
267
|
+
logger?.debug("[LoopmanAgent] MCP tools received", {
|
|
268
|
+
tools: tools.map((t) => t.name),
|
|
269
|
+
});
|
|
301
270
|
this.cachedTools = this.toolRegistry.toDynamicTools(tools);
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
}
|
|
271
|
+
logger?.debug("[LoopmanAgent] MCP tools registered", {
|
|
272
|
+
tools: this.cachedTools.map((tool) => tool.name),
|
|
273
|
+
});
|
|
305
274
|
}
|
|
306
275
|
catch (error) {
|
|
307
276
|
// MCP session might be dead, try to reconnect
|
|
308
|
-
|
|
309
|
-
console.log("[LoopmanAgent] MCP tools retrieval failed, attempting reconnection...", error);
|
|
310
|
-
}
|
|
277
|
+
logger?.warn("[LoopmanAgent] MCP tools retrieval failed, attempting reconnection", error);
|
|
311
278
|
await this.mcpClient.disconnect();
|
|
312
279
|
await this.mcpClient.connect();
|
|
313
280
|
// Retry getting tools after reconnection
|
|
314
281
|
const tools = await this.mcpClient.getTools();
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
}
|
|
282
|
+
logger?.debug("[LoopmanAgent] MCP tools received after reconnection", {
|
|
283
|
+
tools: tools.map((t) => t.name),
|
|
284
|
+
});
|
|
318
285
|
this.cachedTools = this.toolRegistry.toDynamicTools(tools);
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}
|
|
286
|
+
logger?.debug("[LoopmanAgent] MCP tools registered after reconnection", {
|
|
287
|
+
tools: this.cachedTools.map((tool) => tool.name),
|
|
288
|
+
});
|
|
322
289
|
}
|
|
323
290
|
const allTools = [...(this.cachedTools ?? []), ...this.additionalTools];
|
|
324
291
|
const prompt = buildLoopmanSystemPrompt({
|
|
@@ -329,16 +296,14 @@ export class LoopmanAgent {
|
|
|
329
296
|
systemPrompt: this.config.systemPrompt,
|
|
330
297
|
language: this.config.language,
|
|
331
298
|
});
|
|
332
|
-
|
|
333
|
-
console.log("[LoopmanAgent] Final system prompt:\n", prompt);
|
|
334
|
-
}
|
|
299
|
+
logger?.debug("[LoopmanAgent] Final system prompt", { prompt });
|
|
335
300
|
// Build middleware configuration if requireApprovalForTools is configured
|
|
336
301
|
const middleware = [];
|
|
337
302
|
if (this.config.requireApprovalForTools &&
|
|
338
303
|
this.config.requireApprovalForTools.length > 0) {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
}
|
|
304
|
+
logger?.debug("[LoopmanAgent] Tool validation middleware enabled", {
|
|
305
|
+
tools: this.config.requireApprovalForTools,
|
|
306
|
+
});
|
|
342
307
|
// Build interruptOn configuration from requireApprovalForTools
|
|
343
308
|
const interruptOn = {};
|
|
344
309
|
// Special case: ['*'] means all tools require approval
|
|
@@ -354,15 +319,12 @@ export class LoopmanAgent {
|
|
|
354
319
|
interruptOn[toolName] = true;
|
|
355
320
|
}
|
|
356
321
|
}
|
|
357
|
-
|
|
358
|
-
console.log("[LoopmanAgent] InterruptOn configuration:", interruptOn);
|
|
359
|
-
}
|
|
322
|
+
logger?.debug("[LoopmanAgent] interruptOn configuration", interruptOn);
|
|
360
323
|
// Create middleware config and store reference for dynamic updates
|
|
361
324
|
this.middlewareConfig = {
|
|
362
325
|
apiKey: this.config.apiKey,
|
|
363
326
|
workflowId: this.config.workflowId,
|
|
364
327
|
executionId: executionId,
|
|
365
|
-
channelId: this.config.channelId,
|
|
366
328
|
interruptOn,
|
|
367
329
|
timeout: this.config.pollingTimeoutMs,
|
|
368
330
|
pollingInterval: this.config.pollingIntervalMs,
|
|
@@ -382,9 +344,9 @@ export class LoopmanAgent {
|
|
|
382
344
|
let userContent = input.context
|
|
383
345
|
? `${input.input}\n\nContext:\n${JSON.stringify(input.context, null, 2)}`
|
|
384
346
|
: input.input;
|
|
385
|
-
// If we have feedback from a previous
|
|
347
|
+
// If we have feedback from a previous NEEDS_CHANGES, include it
|
|
386
348
|
if (feedbackFromHuman) {
|
|
387
|
-
userContent += `\n\
|
|
349
|
+
userContent += `\n\nIMPORTANT - HUMAN FEEDBACK FROM PREVIOUS ATTEMPT:\nThe human reviewer requested changes: "${feedbackFromHuman}"\n\nYou MUST:\n1. Follow the normal workflow (getHumanGuidelines -> getDecisionContext)\n2. Analyze the feedback in Step 3\n3. RE-SUBMIT a corrected proposal via submitForHumanReview in Step 4\n\nDo NOT skip Step 4. The human is waiting for your corrected proposal.`;
|
|
388
350
|
}
|
|
389
351
|
return [
|
|
390
352
|
{
|
|
@@ -401,17 +363,14 @@ export class LoopmanAgent {
|
|
|
401
363
|
// Start with the full conversation history (includes all context, guidelines, and the submitForHumanReview call)
|
|
402
364
|
const messages = [...conversationHistory];
|
|
403
365
|
// Add a new user message instructing execution
|
|
404
|
-
let executionInstruction =
|
|
366
|
+
let executionInstruction = "HUMAN APPROVED YOUR PROPOSAL.\n\nNow execute the actual action you proposed in submitForHumanReview.";
|
|
405
367
|
if (feedback) {
|
|
406
|
-
executionInstruction += `\n\
|
|
368
|
+
executionInstruction += `\n\nHuman feedback: "${feedback}"`;
|
|
407
369
|
}
|
|
408
370
|
if (modifiedData) {
|
|
409
|
-
executionInstruction += `\n\
|
|
371
|
+
executionInstruction += `\n\nModified parameters to use:\n${JSON.stringify(modifiedData, null, 2)}`;
|
|
410
372
|
}
|
|
411
|
-
executionInstruction += `\n\n
|
|
412
|
-
- Do NOT call submitForHumanReview again (already approved)
|
|
413
|
-
- Execute the actual tool directly (e.g., send_email)
|
|
414
|
-
- Use the parameters you proposed earlier${modifiedData ? " with the modifications above" : ""}`;
|
|
373
|
+
executionInstruction += `\n\nIMPORTANT:\n- Do NOT call submitForHumanReview again (already approved)\n- Execute the actual tool directly (e.g., send_email)\n- Use the parameters you proposed earlier${modifiedData ? " with the modifications above" : ""}`;
|
|
415
374
|
messages.push({
|
|
416
375
|
role: "user",
|
|
417
376
|
content: executionInstruction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loopman-agent.js","sourceRoot":"","sources":["../../src/agents/loopman-agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loopman-agent.js","sourceRoot":"","sources":["../../src/agents/loopman-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,32 @@
|
|
|
1
|
-
import { LoopmanConfig
|
|
1
|
+
import { LoopmanConfig } from "../types";
|
|
2
|
+
type ApiClientLogger = {
|
|
3
|
+
debug: (message: string, data?: any) => void;
|
|
4
|
+
info: (message: string, data?: any) => void;
|
|
5
|
+
warn: (message: string, data?: any) => void;
|
|
6
|
+
error: (message: string, data?: any) => void;
|
|
7
|
+
};
|
|
2
8
|
/**
|
|
3
9
|
* Loopman client for direct API connection
|
|
4
|
-
*
|
|
10
|
+
* Uses API key directly via X-API-Key header (no token exchange)
|
|
5
11
|
*/
|
|
6
12
|
export declare class LoopmanApiClient {
|
|
7
13
|
private config;
|
|
8
|
-
private
|
|
9
|
-
private
|
|
10
|
-
private
|
|
14
|
+
private serverUrl;
|
|
15
|
+
private logger;
|
|
16
|
+
private debug;
|
|
11
17
|
constructor(config: LoopmanConfig);
|
|
12
18
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* @returns Object containing accessToken and serverUrl
|
|
19
|
+
* Attach a logger (optional).
|
|
20
|
+
* The client is silent by default; logging is enabled only when debug is true.
|
|
16
21
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
fromCache: boolean;
|
|
21
|
-
}>;
|
|
22
|
+
setLogger(logger: ApiClientLogger, debug?: boolean): void;
|
|
23
|
+
private logDebug;
|
|
24
|
+
private logError;
|
|
22
25
|
/**
|
|
23
|
-
* Get authorization headers with
|
|
26
|
+
* Get authorization headers with API key
|
|
27
|
+
* Uses X-API-Key header directly (no token exchange)
|
|
24
28
|
*/
|
|
25
29
|
private getAuthHeaders;
|
|
26
|
-
/**
|
|
27
|
-
* Get current user from backoffice
|
|
28
|
-
* @param apiKey The API key for authentication
|
|
29
|
-
* @returns Current user information
|
|
30
|
-
*/
|
|
31
|
-
getCurrentUser(apiKey: string): Promise<LoopmanUser>;
|
|
32
30
|
/**
|
|
33
31
|
* Generic method to make GET requests to backoffice
|
|
34
32
|
* @param apiKey The API key for authentication
|
|
@@ -67,57 +65,14 @@ export declare class LoopmanApiClient {
|
|
|
67
65
|
* @returns Response data
|
|
68
66
|
*/
|
|
69
67
|
delete<T>(apiKey: string, endpoint: string): Promise<T>;
|
|
70
|
-
/**
|
|
71
|
-
* Get token from cache if valid, otherwise return null
|
|
72
|
-
*/
|
|
73
|
-
private getCachedToken;
|
|
74
|
-
/**
|
|
75
|
-
* Store token in cache with expiration
|
|
76
|
-
*/
|
|
77
|
-
private setCachedToken;
|
|
78
|
-
/**
|
|
79
|
-
* Remove a token from cache
|
|
80
|
-
*/
|
|
81
|
-
clearCache(apiKey: string): void;
|
|
82
|
-
/**
|
|
83
|
-
* Clear all token cache
|
|
84
|
-
*/
|
|
85
|
-
clearAllCache(): void;
|
|
86
|
-
/**
|
|
87
|
-
* Get cache statistics
|
|
88
|
-
*/
|
|
89
|
-
getCacheStats(): {
|
|
90
|
-
size: number;
|
|
91
|
-
entries: Array<{
|
|
92
|
-
apiKey: string;
|
|
93
|
-
serverUrl: string;
|
|
94
|
-
expiresAt: string;
|
|
95
|
-
ttl: number;
|
|
96
|
-
}>;
|
|
97
|
-
};
|
|
98
|
-
/**
|
|
99
|
-
* Check if a token exists and is valid
|
|
100
|
-
*/
|
|
101
|
-
hasValidToken(apiKey: string): boolean;
|
|
102
|
-
/**
|
|
103
|
-
* Get remaining TTL for a cached token
|
|
104
|
-
*/
|
|
105
|
-
getTokenTTL(apiKey: string): number;
|
|
106
|
-
/**
|
|
107
|
-
* Clean up expired tokens from cache
|
|
108
|
-
*/
|
|
109
|
-
private cleanupExpiredTokens;
|
|
110
68
|
/**
|
|
111
69
|
* Handle network errors consistently
|
|
112
70
|
*/
|
|
113
71
|
private handleNetworkError;
|
|
114
|
-
/**
|
|
115
|
-
* Mask API key for logs (show only first 8 characters)
|
|
116
|
-
*/
|
|
117
|
-
private maskApiKey;
|
|
118
72
|
/**
|
|
119
73
|
* Get current configuration
|
|
120
74
|
*/
|
|
121
75
|
get configuration(): Readonly<LoopmanConfig>;
|
|
122
76
|
}
|
|
77
|
+
export {};
|
|
123
78
|
//# sourceMappingURL=loopman-api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loopman-api.d.ts","sourceRoot":"","sources":["../../src/client/loopman-api.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"loopman-api.d.ts","sourceRoot":"","sources":["../../src/client/loopman-api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEd,MAAM,UAAU,CAAC;AAMlB,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5C,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5C,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAC9C,CAAC;AAEF;;;GAGG;AACH,qBAAa,gBAAgB;IAKf,OAAO,CAAC,MAAM;IAJ1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,KAAK,CAAS;gBAEF,MAAM,EAAE,aAAa;IAOzC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAKzD,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,QAAQ;IAMhB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAMtB;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAmC1D;;;;;;OAMG;IACG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAwCtE;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAwCrE;;;;;;OAMG;IACG,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAwCvE;;;;;OAKG;IACG,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAoC7D;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,IAAI,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC,CAE3C;CACF"}
|