@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.
Files changed (94) hide show
  1. package/README.md +78 -5
  2. package/dist/agents/loopman-agent.d.ts.map +1 -1
  3. package/dist/agents/loopman-agent.js +51 -92
  4. package/dist/agents/loopman-agent.js.map +1 -1
  5. package/dist/client/loopman-api.d.ts +19 -64
  6. package/dist/client/loopman-api.d.ts.map +1 -1
  7. package/dist/client/loopman-api.js +85 -248
  8. package/dist/client/loopman-api.js.map +1 -1
  9. package/dist/helpers/prompt-orchestrator.js +17 -17
  10. package/dist/helpers/prompt-orchestrator.js.map +1 -1
  11. package/dist/helpers/template-generator-static.d.ts +27 -0
  12. package/dist/helpers/template-generator-static.d.ts.map +1 -0
  13. package/dist/helpers/template-generator-static.js +52 -0
  14. package/dist/helpers/template-generator-static.js.map +1 -0
  15. package/dist/helpers/template-generator.d.ts +50 -0
  16. package/dist/helpers/template-generator.d.ts.map +1 -0
  17. package/dist/helpers/template-generator.js +85 -0
  18. package/dist/helpers/template-generator.js.map +1 -0
  19. package/dist/index.d.ts +6 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +6 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/langgraph/helpers.d.ts +171 -0
  24. package/dist/langgraph/helpers.d.ts.map +1 -0
  25. package/dist/langgraph/helpers.js +216 -0
  26. package/dist/langgraph/helpers.js.map +1 -0
  27. package/dist/langgraph/index.d.ts +16 -0
  28. package/dist/langgraph/index.d.ts.map +1 -0
  29. package/dist/langgraph/index.js +17 -0
  30. package/dist/langgraph/index.js.map +1 -0
  31. package/dist/langgraph/loopman-conditional-edge.d.ts +58 -0
  32. package/dist/langgraph/loopman-conditional-edge.d.ts.map +1 -0
  33. package/dist/langgraph/loopman-conditional-edge.js +77 -0
  34. package/dist/langgraph/loopman-conditional-edge.js.map +1 -0
  35. package/dist/langgraph/loopman-context-node.d.ts +74 -0
  36. package/dist/langgraph/loopman-context-node.d.ts.map +1 -0
  37. package/dist/langgraph/loopman-context-node.js +143 -0
  38. package/dist/langgraph/loopman-context-node.js.map +1 -0
  39. package/dist/langgraph/loopman-validation-node.d.ts +119 -0
  40. package/dist/langgraph/loopman-validation-node.d.ts.map +1 -0
  41. package/dist/langgraph/loopman-validation-node.js +420 -0
  42. package/dist/langgraph/loopman-validation-node.js.map +1 -0
  43. package/dist/langgraph/types.d.ts +75 -0
  44. package/dist/langgraph/types.d.ts.map +1 -0
  45. package/dist/langgraph/types.js +74 -0
  46. package/dist/langgraph/types.js.map +1 -0
  47. package/dist/loopman-agent-wrapper.d.ts +18 -0
  48. package/dist/loopman-agent-wrapper.d.ts.map +1 -1
  49. package/dist/loopman-agent-wrapper.js +31 -21
  50. package/dist/loopman-agent-wrapper.js.map +1 -1
  51. package/dist/loopman-middleware.d.ts +0 -5
  52. package/dist/loopman-middleware.d.ts.map +1 -1
  53. package/dist/loopman-middleware.js +22 -23
  54. package/dist/loopman-middleware.js.map +1 -1
  55. package/dist/mcp/loopman-mcp-client.d.ts.map +1 -1
  56. package/dist/mcp/loopman-mcp-client.js +5 -0
  57. package/dist/mcp/loopman-mcp-client.js.map +1 -1
  58. package/dist/mcp/tool-registry.d.ts +7 -1
  59. package/dist/mcp/tool-registry.d.ts.map +1 -1
  60. package/dist/mcp/tool-registry.js +23 -16
  61. package/dist/mcp/tool-registry.js.map +1 -1
  62. package/dist/services/logger.service.d.ts.map +1 -1
  63. package/dist/services/logger.service.js +4 -12
  64. package/dist/services/logger.service.js.map +1 -1
  65. package/dist/services/loopman.service.d.ts +25 -11
  66. package/dist/services/loopman.service.d.ts.map +1 -1
  67. package/dist/services/loopman.service.js +74 -45
  68. package/dist/services/loopman.service.js.map +1 -1
  69. package/dist/services/polling.service.d.ts +7 -3
  70. package/dist/services/polling.service.d.ts.map +1 -1
  71. package/dist/services/polling.service.js +61 -47
  72. package/dist/services/polling.service.js.map +1 -1
  73. package/dist/templates.json +20 -0
  74. package/dist/types.d.ts +9 -35
  75. package/dist/types.d.ts.map +1 -1
  76. package/dist/types.js.map +1 -1
  77. package/examples/README.md +346 -0
  78. package/examples/templates/README.md +285 -0
  79. package/examples/templates/langchain-full-review/.env.example +3 -0
  80. package/examples/templates/langchain-full-review/README.md +165 -0
  81. package/examples/templates/langchain-full-review/index.ts +54 -0
  82. package/examples/templates/langchain-full-review/package.json +29 -0
  83. package/examples/templates/langchain-full-review/tsconfig.json +22 -0
  84. package/examples/templates/langchain-tool-validation/.env.example +3 -0
  85. package/examples/templates/langchain-tool-validation/README.md +137 -0
  86. package/examples/templates/langchain-tool-validation/index.ts +65 -0
  87. package/examples/templates/langchain-tool-validation/package.json +29 -0
  88. package/examples/templates/langchain-tool-validation/tsconfig.json +22 -0
  89. package/examples/templates/langgraph-hello-world/.env.example +3 -0
  90. package/examples/templates/langgraph-hello-world/README.md +71 -0
  91. package/examples/templates/langgraph-hello-world/index.ts +147 -0
  92. package/examples/templates/langgraph-hello-world/package.json +27 -0
  93. package/examples/templates/langgraph-hello-world/tsconfig.json +22 -0
  94. package/package.json +12 -7
@@ -1 +1 @@
1
- {"version":3,"file":"polling.service.js","sourceRoot":"","sources":["../../src/services/polling.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"polling.service.js","sourceRoot":"","sources":["../../src/services/polling.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ {
2
+ "langgraph-hello-world": {
3
+ "index.ts": "import { HumanMessage, ToolMessage } from \"@langchain/core/messages\";\nimport { END, MemorySaver, START, StateGraph } from \"@langchain/langgraph\";\nimport { ChatOpenAI } from \"@langchain/openai\";\nimport { config } from \"dotenv\";\nimport { tool } from \"langchain\";\nimport * as z from \"zod\";\n\nimport {\n LoopmanGraphState,\n createLoopmanConditionalEdge,\n createLoopmanContextNode,\n createLoopmanValidationNode,\n enrichSystemPrompt,\n} from \"@loopman/langchain-sdk\";\n\nconfig();\n\n// Define your tools\nconst sayHello = tool(\n ({ name }) => {\n console.log(`Hello, ${name}!`);\n return `Hello, ${name}! Welcome to Loopman.`;\n },\n {\n name: \"say_hello\",\n description: \"Say hello to someone\",\n schema: z.object({\n name: z.string().describe(\"The name of the person to greet\"),\n }),\n }\n);\n\n// Agent node with context enrichment\nasync function agentNode(state: any) {\n const { messages, guidelines, decisionContext } = state;\n\n // Enrich system prompt with guidelines and decision history\n const systemPrompt = enrichSystemPrompt(\n \"You are a helpful assistant that greets people ....\",\n { guidelines, decisionContext },\n { maxDecisions: 3 }\n );\n\n const model = new ChatOpenAI({ model: \"gpt-4o-mini\" });\n const modelWithTools = model.bindTools([sayHello]);\n\n const messagesWithContext =\n (guidelines && guidelines.length > 0) ||\n (decisionContext && decisionContext.length > 0)\n ? [{ role: \"system\", content: systemPrompt }, ...messages]\n : messages;\n\n const response = await modelWithTools.invoke(messagesWithContext);\n\n return {\n messages: [response],\n requiresValidation: response.tool_calls && response.tool_calls.length > 0,\n };\n}\n\n// Tool execution node\nasync function toolNode(state: any) {\n const { messages } = state;\n const lastMessage = messages[messages.length - 1];\n\n if (!lastMessage.tool_calls || lastMessage.tool_calls.length === 0) {\n return {};\n }\n\n const toolCall = lastMessage.tool_calls[0];\n const result = await sayHello.invoke(toolCall.args);\n\n return {\n messages: [\n new ToolMessage({\n content: result,\n tool_call_id: toolCall.id,\n }),\n ],\n };\n}\n\n// Build the graph with context loading\nconst workflow = new StateGraph(LoopmanGraphState)\n .addNode(\n \"load_context\",\n createLoopmanContextNode({\n apiKey: process.env.LOOPMAN_API_KEY!,\n workflowId: process.env.LOOPMAN_WORKFLOW_ID!,\n category: \"hello-world\",\n debug: true,\n })\n )\n .addNode(\"agent\", agentNode)\n .addNode(\n \"loopman_validation\",\n createLoopmanValidationNode({\n apiKey: process.env.LOOPMAN_API_KEY!,\n workflowId: process.env.LOOPMAN_WORKFLOW_ID!,\n debug: true,\n })\n )\n .addNode(\"tools\", toolNode)\n .addEdge(START, \"load_context\")\n .addEdge(\"load_context\", \"agent\")\n .addEdge(\"agent\", \"loopman_validation\")\n .addConditionalEdges(\n \"loopman_validation\",\n createLoopmanConditionalEdge({ debug: true }),\n {\n execute: \"tools\",\n rejected: END,\n retry: \"agent\",\n timeout: END,\n error: END,\n }\n )\n .addEdge(\"tools\", END);\n\n// Compile and run\nconst checkpointer = new MemorySaver();\nconst app = workflow.compile({ checkpointer });\n\nasync function main() {\n const config = { configurable: { thread_id: \"hello-world-thread\" } };\n const inputs = {\n messages: [new HumanMessage(\"Say hello to Alice\")],\n };\n\n console.log(\"Starting LangGraph workflow with context enrichment...\");\n\n for await (const output of await app.stream(inputs, config)) {\n const nodeName = Object.keys(output)[0];\n console.log(`Step: ${nodeName}`);\n }\n\n const finalState = await app.getState(config);\n console.log(\"Final status:\", finalState.values.loopmanTaskStatus);\n console.log(\"Guidelines loaded:\", finalState.values.guidelines?.length || 0);\n console.log(\n \"Decision context loaded:\",\n finalState.values.decisionContext?.length || 0\n );\n console.log(\"Workflow completed!\");\n}\n\nmain().catch(console.error);\n",
4
+ "package.json": "{\n \"name\": \"loopman-langgraph-hello-world\",\n \"version\": \"1.0.0\",\n \"description\": \"Loopman LangGraph Hello World Example\",\n \"main\": \"index.ts\",\n \"type\": \"module\",\n \"scripts\": {\n \"start\": \"tsx index.ts\",\n \"dev\": \"tsx index.ts\",\n \"build\": \"tsc\",\n \"run\": \"node dist/index.js\"\n },\n \"dependencies\": {\n \"@langchain/core\": \"^1.0.2\",\n \"@langchain/langgraph\": \"^1.0.1\",\n \"@langchain/openai\": \"^1.0.0\",\n \"@loopman/langchain-sdk\": \"^1.12.0\",\n \"dotenv\": \"^17.2.3\",\n \"langchain\": \"^1.0.2\",\n \"tsx\": \"^4.20.6\",\n \"typescript\": \"^5.9.3\",\n \"zod\": \"^3.25.76\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^24.9.2\"\n }\n}\n",
5
+ "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ES2022\",\n \"lib\": [\"ES2022\"],\n \"moduleResolution\": \"bundler\",\n \"resolveJsonModule\": true,\n \"allowJs\": true,\n \"outDir\": \"./dist\",\n \"rootDir\": \"./\",\n \"strict\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"declaration\": true,\n \"declarationMap\": true,\n \"sourceMap\": true\n },\n \"include\": [\"**/*.ts\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n\n",
6
+ "README.md": "# Loopman LangGraph Hello World\n\nThis project demonstrates how to integrate Loopman with LangGraph using Context Enrichment / Feedback Loop mode.\n\n## About LangGraph\n\nLangGraph is LangChain's official framework for building stateful, multi-actor applications with LLMs. It provides:\n\n- **Stateful workflows**: Explicit state management across nodes\n- **Conditional routing**: Dynamic edges based on state\n- **Streaming support**: Real-time updates during execution\n- **Visual debugging**: Graph visualization and inspection\n\n## Setup\n\n1. Install dependencies:\n```bash\nnpm install\n```\n\n2. Copy .env.example to .env and configure your keys:\n```bash\ncp .env.example .env\n```\n\nEdit the .env file and replace the placeholders with your actual values:\n- `OPENAI_API_KEY`: Your OpenAI API key\n- `LOOPMAN_API_KEY`: Your Loopman API key\n- `LOOPMAN_WORKFLOW_ID`: Your workflow ID from Loopman\n\n3. Run the example:\n```bash\nnpm start\n```\n\n## Graph Architecture\n\nThe workflow follows this pattern:\n\n```\nSTART\n ↓\nload_context (load guidelines and decision history)\n ↓\nagent (LLM decides action)\n ↓\nloopman_validation (create task + poll)\n ↓\n[conditional edge based on status]\n ↓\n├─→ tools (APPROVED: execute)\n├─→ agent (NEEDS_CHANGES: retry)\n└─→ END (REJECTED/TIMEOUT/ERROR: end)\n ↓\nEND\n```\n\n## Key Features\n\n- **Context Enrichment**: Loads validation guidelines and historical decisions\n- **Prompt Enhancement**: Automatically enriches system prompts with context\n- **Learning from History**: Agent learns from past human decisions\n- **Category Filtering**: Guidelines filtered by category for relevance\n- **Feedback Loop**: Human feedback is stored and used to improve future decisions\n\n## Learn More\n\n- [LangGraph Documentation](https://js.langchain.com/docs/langgraph/)\n- [Loopman LangGraph Integration Guide](https://github.com/loopman/loopman-langchain-sdk/blob/main/docs/LANGGRAPH_INTEGRATION.md)\n- [Loopman Documentation](https://loopman.dev/docs)\n\n"
7
+ },
8
+ "langchain-tool-validation": {
9
+ "index.ts": "import { MemorySaver } from \"@langchain/langgraph\";\nimport { config } from \"dotenv\";\nimport { createAgent, tool } from \"langchain\";\nimport * as z from \"zod\";\nimport { loopmanMiddleware } from \"@loopman/langchain-sdk\";\n\n// Load environment variables\nconfig();\n\n// Simple hello world tool\nconst sayHello = tool(\n ({ name }) => {\n console.log(`Hello, ${name}!`);\n return `Hello, ${name}! Welcome to Loopman.`;\n },\n {\n name: \"say_hello\",\n description: \"Say hello to someone\",\n schema: z.object({\n name: z.string().describe(\"The name of the person to greet\"),\n }),\n }\n);\n\n// Create agent with Loopman middleware\nconst checkpointer = new MemorySaver();\n\nconst agent = createAgent({\n model: \"openai:gpt-4o-mini\",\n systemPrompt: \"You are a helpful assistant that greets people.\",\n tools: [sayHello],\n middleware: [\n loopmanMiddleware({\n apiKey: process.env.LOOPMAN_API_KEY!,\n workflowId: process.env.LOOPMAN_WORKFLOW_ID!,\n interruptOn: {\n say_hello: true, // Requires human validation\n },\n debug: true,\n }),\n ],\n checkpointer,\n});\n\n// Run the agent\nasync function main() {\n const config = { configurable: { thread_id: \"hello-world-thread\" } };\n\n const result = await agent.invoke(\n {\n messages: [\n {\n role: \"user\",\n content: \"Say hello to Alice\",\n },\n ],\n },\n config\n );\n\n console.log(\"Agent response:\", result.messages[result.messages.length - 1].content);\n}\n\nmain().catch(console.error);\n\n",
10
+ "package.json": "{\n \"name\": \"loopman-langchain-tool-validation\",\n \"version\": \"1.0.0\",\n \"description\": \"Loopman LangChain Tool Validation Example\",\n \"main\": \"index.ts\",\n \"type\": \"module\",\n \"scripts\": {\n \"start\": \"tsx index.ts\",\n \"dev\": \"tsx index.ts\",\n \"build\": \"tsc\",\n \"run\": \"node dist/index.js\"\n },\n \"dependencies\": {\n \"@langchain/core\": \"^1.0.2\",\n \"@langchain/mcp-adapters\": \"^1.0.0\",\n \"@langchain/langgraph\": \"^1.0.1\",\n \"@langchain/openai\": \"^1.0.0\",\n \"@loopman/langchain-sdk\": \"^1.12.0\",\n \"dotenv\": \"^17.2.3\",\n \"langchain\": \"^1.0.2\",\n \"tsx\": \"^4.20.6\",\n \"typescript\": \"^5.9.3\",\n \"zod\": \"^3.25.76\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^24.9.2\"\n }\n}\n\n",
11
+ "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ES2022\",\n \"lib\": [\"ES2022\"],\n \"moduleResolution\": \"bundler\",\n \"resolveJsonModule\": true,\n \"allowJs\": true,\n \"outDir\": \"./dist\",\n \"rootDir\": \"./\",\n \"strict\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"declaration\": true,\n \"declarationMap\": true,\n \"sourceMap\": true\n },\n \"include\": [\"**/*.ts\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n\n",
12
+ "README.md": "# Loopman LangChain - Tool Validation Mode\n\nThis project demonstrates how to integrate Loopman with LangChain using **Tool Validation** mode.\n\n## About Tool Validation Mode\n\nIn this mode, Loopman middleware intercepts specific tool calls and requires human validation before execution. This is useful when:\n- Certain actions need human approval (e.g., sending emails, making payments)\n- You want to validate AI decisions before they affect real systems\n- Compliance requires human oversight for specific operations\n\n## Setup\n\n1. Install dependencies:\n```bash\nnpm install\n```\n\n2. Copy .env.example to .env and configure your keys:\n```bash\ncp .env.example .env\n```\n\nEdit the .env file and replace the placeholders with your actual values:\n- `OPENAI_API_KEY`: Your OpenAI API key\n- `LOOPMAN_API_KEY`: Your Loopman API key\n- `LOOPMAN_WORKFLOW_ID`: Your workflow ID from Loopman\n\n3. Run the example:\n```bash\nnpm start\n```\n\n## How It Works\n\n### 1. Define Tools\n\n```typescript\nconst sayHello = tool(\n ({ name }) => {\n console.log(`Hello, ${name}!`);\n return `Hello, ${name}! Welcome to Loopman.`;\n },\n {\n name: \"say_hello\",\n description: \"Say hello to someone\",\n schema: z.object({\n name: z.string().describe(\"The name of the person to greet\"),\n }),\n }\n);\n```\n\n### 2. Add Loopman Middleware\n\n```typescript\nconst agent = createAgent({\n model: \"openai:gpt-4o-mini\",\n tools: [sayHello],\n middleware: [\n loopmanMiddleware({\n apiKey: process.env.LOOPMAN_API_KEY!,\n workflowId: process.env.LOOPMAN_WORKFLOW_ID!,\n interruptOn: {\n say_hello: true, // Requires human validation\n },\n debug: true,\n }),\n ],\n checkpointer,\n});\n```\n\n### 3. Run the Agent\n\n```typescript\nconst result = await agent.invoke(\n {\n messages: [{ role: \"user\", content: \"Say hello to Alice\" }],\n },\n config\n);\n```\n\n## Key Features\n\n- **Selective Validation**: Only specified tools require approval\n- **Automatic Interception**: Middleware handles validation workflow\n- **Stateful**: Uses checkpointer to maintain conversation state\n- **Debug Mode**: Verbose logging for development\n\n## Workflow\n\n```\n1. User sends message\n ↓\n2. Agent generates tool call (say_hello)\n ↓\n3. Loopman middleware intercepts\n ↓\n4. Creates validation task\n ↓\n5. Waits for human decision\n ↓\n6. If approved → Execute tool\n If rejected → Return to agent with feedback\n```\n\n## Configuration Options\n\n### interruptOn\n\nSpecify which tools require validation:\n\n```typescript\ninterruptOn: {\n say_hello: true, // Always validate\n send_email: true, // Always validate\n get_weather: false, // Never validate (auto-execute)\n}\n```\n\n### debug\n\nEnable/disable verbose logging:\n\n```typescript\ndebug: true // Show detailed logs\ndebug: false // Production mode\n```\n\n## Learn More\n\n- [Loopman Middleware Documentation](https://github.com/loopman/loopman-langchain-sdk/blob/main/docs/TOOL_VALIDATION_MODE.md)\n- [LangChain Agent Documentation](https://js.langchain.com/docs/how_to/agent_executor)\n- [Loopman Documentation](https://loopman.dev/docs)\n\n"
13
+ },
14
+ "langchain-full-review": {
15
+ "index.ts": "import { config } from \"dotenv\";\nimport { tool } from \"langchain\";\nimport * as z from \"zod\";\nimport { createLoopmanAgent } from \"@loopman/langchain-sdk\";\n\n// Load environment variables\nconfig();\n\n// Simple hello world tool\nconst sayHello = tool(\n ({ name }) => {\n console.log(`Hello, ${name}!`);\n return `Hello, ${name}! Welcome to Loopman.`;\n },\n {\n name: \"say_hello\",\n description: \"Say hello to someone\",\n schema: z.object({\n name: z.string().describe(\"The name of the person to greet\"),\n }),\n }\n);\n\n// Create Loopman agent with full human review process\nconst agent = createLoopmanAgent({\n apiKey: process.env.LOOPMAN_API_KEY!,\n workflowId: process.env.LOOPMAN_WORKFLOW_ID!,\n model: \"openai:gpt-4o-mini\",\n systemPrompt: \"You are a helpful assistant that greets people.\",\n category: \"hello-world\",\n additionalTools: [sayHello],\n requireApprovalForTools: [\"say_hello\"], // Requires validation\n debug: true,\n});\n\n// Run the agent\nasync function main() {\n const result = await agent.processWithHumanValidation({\n input: \"Say hello to Alice\",\n });\n\n console.log(\"Agent response:\", result.response);\n if (result.decision) {\n console.log(\"Decision status:\", result.decision.status);\n if (result.decision.feedback) {\n console.log(\"Human feedback:\", result.decision.feedback);\n }\n }\n\n await agent.disconnect();\n}\n\nmain().catch(console.error);\n\n",
16
+ "package.json": "{\n \"name\": \"loopman-langchain-full-review\",\n \"version\": \"1.0.0\",\n \"description\": \"Loopman LangChain Full Human Review Example\",\n \"main\": \"index.ts\",\n \"type\": \"module\",\n \"scripts\": {\n \"start\": \"tsx index.ts\",\n \"dev\": \"tsx index.ts\",\n \"build\": \"tsc\",\n \"run\": \"node dist/index.js\"\n },\n \"dependencies\": {\n \"@langchain/core\": \"^1.0.2\",\n \"@langchain/mcp-adapters\": \"^1.0.0\",\n \"@langchain/langgraph\": \"^1.0.1\",\n \"@langchain/openai\": \"^1.0.0\",\n \"@loopman/langchain-sdk\": \"^1.12.0\",\n \"dotenv\": \"^17.2.3\",\n \"langchain\": \"^1.0.2\",\n \"tsx\": \"^4.20.6\",\n \"typescript\": \"^5.9.3\",\n \"zod\": \"^3.25.76\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^24.9.2\"\n }\n}\n\n",
17
+ "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ES2022\",\n \"lib\": [\"ES2022\"],\n \"moduleResolution\": \"bundler\",\n \"resolveJsonModule\": true,\n \"allowJs\": true,\n \"outDir\": \"./dist\",\n \"rootDir\": \"./\",\n \"strict\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"declaration\": true,\n \"declarationMap\": true,\n \"sourceMap\": true\n },\n \"include\": [\"**/*.ts\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n\n",
18
+ "README.md": "# Loopman LangChain - Full Human Review Mode\n\nThis project demonstrates how to integrate Loopman with LangChain using **Full Human Review Process** mode.\n\n## About Full Human Review Mode\n\nIn this mode, the Loopman Agent handles the entire workflow including:\n- Creating validation tasks\n- Waiting for human approval\n- Handling feedback and retries\n- Managing the complete lifecycle\n\nThis is useful when:\n- You want a complete HITL (Human-In-The-Loop) solution\n- The agent should wait for human decisions before proceeding\n- You need full control over the validation workflow\n\n## Setup\n\n1. Install dependencies:\n```bash\nnpm install\n```\n\n2. Copy .env.example to .env and configure your keys:\n```bash\ncp .env.example .env\n```\n\nEdit the .env file and replace the placeholders with your actual values:\n- `OPENAI_API_KEY`: Your OpenAI API key\n- `LOOPMAN_API_KEY`: Your Loopman API key\n- `LOOPMAN_WORKFLOW_ID`: Your workflow ID from Loopman\n\n3. Run the example:\n```bash\nnpm start\n```\n\n## How It Works\n\n### 1. Define Tools\n\n```typescript\nconst sayHello = tool(\n ({ name }) => {\n console.log(`Hello, ${name}!`);\n return `Hello, ${name}! Welcome to Loopman.`;\n },\n {\n name: \"say_hello\",\n description: \"Say hello to someone\",\n schema: z.object({\n name: z.string().describe(\"The name of the person to greet\"),\n }),\n }\n);\n```\n\n### 2. Create Loopman Agent\n\n```typescript\nconst agent = createLoopmanAgent({\n apiKey: process.env.LOOPMAN_API_KEY!,\n workflowId: process.env.LOOPMAN_WORKFLOW_ID!,\n model: \"openai:gpt-4o-mini\",\n systemPrompt: \"You are a helpful assistant that greets people.\",\n category: \"hello-world\",\n additionalTools: [sayHello],\n requireApprovalForTools: [\"say_hello\"],\n debug: true,\n});\n```\n\n### 3. Process with Human Validation\n\n```typescript\nconst result = await agent.processWithHumanValidation({\n input: \"Say hello to Alice\",\n});\n\nconsole.log(\"Agent response:\", result.response);\nif (result.decision) {\n console.log(\"Decision status:\", result.decision.status);\n console.log(\"Human feedback:\", result.decision.feedback);\n}\n```\n\n## Key Features\n\n- **Complete HITL Workflow**: Agent manages the entire validation lifecycle\n- **Automatic Polling**: Waits for human decisions\n- **Feedback Handling**: Processes human feedback and retries if needed\n- **Category Support**: Organize validations by category\n- **Debug Mode**: Verbose logging for development\n\n## Workflow\n\n```\n1. User sends message\n ↓\n2. Agent processes with LLM\n ↓\n3. Agent generates tool call\n ↓\n4. Creates Loopman validation task\n ↓\n5. Polls for human decision\n ↓\n6. If approved → Execute and return result\n If rejected → Process feedback and retry\n If timeout → Handle timeout\n```\n\n## Configuration Options\n\n### requireApprovalForTools\n\nSpecify which tools require validation:\n\n```typescript\nrequireApprovalForTools: [\"say_hello\", \"send_email\"]\n// Only these tools will require human approval\n```\n\n### category\n\nOrganize validations by category:\n\n```typescript\ncategory: \"hello-world\"\n// Helps filter and organize validation tasks\n```\n\n### debug\n\nEnable/disable verbose logging:\n\n```typescript\ndebug: true // Show detailed logs\ndebug: false // Production mode\n```\n\n## Response Structure\n\nThe `processWithHumanValidation` method returns:\n\n```typescript\n{\n response: string, // Final agent response\n decision?: {\n status: \"APPROVED\" | \"REJECTED\" | \"NEEDS_CHANGES\",\n feedback?: string, // Human feedback if provided\n createdAt: Date,\n updatedAt: Date,\n }\n}\n```\n\n## Learn More\n\n- [Loopman Agent Documentation](https://github.com/loopman/loopman-langchain-sdk/blob/main/docs/LOOPMAN_AGENT.md)\n- [LangChain Documentation](https://js.langchain.com/docs)\n- [Loopman Documentation](https://loopman.dev/docs)\n\n"
19
+ }
20
+ }
package/dist/types.d.ts CHANGED
@@ -5,6 +5,8 @@ import { LoopmanMcpClientConfig } from "./mcp/loopman-mcp-client";
5
5
  export interface LoopmanConfig {
6
6
  /** Loopman API key for authentication */
7
7
  apiKey: string;
8
+ /** Optional backoffice server URL (default: from env LOOPMAN_BACKOFFICE_URL or https://api.loopman.ai) */
9
+ serverUrl?: string;
8
10
  /** Optional timeout for API operations (default: 30000ms) */
9
11
  timeout?: number;
10
12
  /** Optional retry configuration */
@@ -20,7 +22,6 @@ export interface LoopmanAgentConfig {
20
22
  apiKey: string;
21
23
  workflowId: string;
22
24
  executionId?: string;
23
- channelId?: string;
24
25
  category?: string;
25
26
  language?: string;
26
27
  maxIterations?: number;
@@ -42,7 +43,7 @@ export interface LoopmanAgentInput {
42
43
  }
43
44
  export interface LoopmanAgentDecisionResult {
44
45
  taskId: string;
45
- status: "VALIDATED" | "REFUSED" | "NEED_CHANGES" | "CANCELLED" | "EXPIRED" | "TIMEOUT" | "ABORTED";
46
+ status: "VALIDATED" | "REFUSED" | "NEEDS_CHANGES" | "CANCELLED" | "EXPIRED" | "TIMEOUT" | "ABORTED";
46
47
  feedback?: string;
47
48
  modifiedData?: any;
48
49
  }
@@ -66,32 +67,6 @@ export interface LoopmanUser {
66
67
  createdAt: string;
67
68
  updatedAt: string;
68
69
  }
69
- /**
70
- * Token exchange response interface
71
- */
72
- export interface TokenExchangeResponse {
73
- accessToken: string;
74
- refreshToken: string;
75
- expiresIn: number;
76
- serverUrl: string;
77
- }
78
- /**
79
- * Cached token data interface
80
- */
81
- export interface TokenData {
82
- accessToken: string;
83
- refreshToken?: string;
84
- serverUrl: string;
85
- expiresIn: number;
86
- }
87
- /**
88
- * Cached token result interface
89
- */
90
- export interface CachedToken {
91
- accessToken: string;
92
- serverUrl: string;
93
- fromCache: boolean;
94
- }
95
70
  /**
96
71
  * Configuration for LoopmanService
97
72
  */
@@ -99,7 +74,6 @@ export interface LoopmanServiceConfig {
99
74
  apiKey: string;
100
75
  workflowId: string;
101
76
  executionId: string;
102
- channelId?: string;
103
77
  timeout?: number;
104
78
  pollingInterval?: number;
105
79
  debug?: boolean;
@@ -110,7 +84,7 @@ export interface LoopmanServiceConfig {
110
84
  export type LoopmanTaskStatus = "PENDING" | "APPROVED" | "REJECTED" | "NEEDS_CHANGES";
111
85
  /**
112
86
  * Task response from Loopman API
113
- * This is what POST /api/v1/tasks and GET /api/v1/tasks/:id/status return
87
+ * This is what POST /api/v1/tasks and GET /api/v1/tasks/:id return
114
88
  */
115
89
  export interface LoopmanTaskResponse {
116
90
  id: string;
@@ -123,7 +97,6 @@ export interface LoopmanTaskResponse {
123
97
  createdAt: string;
124
98
  updatedAt: string;
125
99
  priority?: "LOW" | "MEDIUM" | "HIGH";
126
- channelId?: string;
127
100
  externalReference?: string;
128
101
  businessContext?: string;
129
102
  proposedDecision?: string;
@@ -147,7 +120,7 @@ export interface LoopmanTaskResponse {
147
120
  */
148
121
  export interface LoopmanDecisionResponse {
149
122
  id: string;
150
- status: "PENDING" | "VALIDATED" | "REFUSED" | "NEED_CHANGES" | "CANCELLED" | "EXPIRED";
123
+ status: "PENDING" | "VALIDATED" | "REFUSED" | "NEEDS_CHANGES" | "CANCELLED" | "EXPIRED";
151
124
  feedback?: string;
152
125
  modified_data?: any;
153
126
  createdAt: string;
@@ -164,15 +137,15 @@ export interface TaskInformation {
164
137
  ruleIds?: string[];
165
138
  }
166
139
  /**
167
- * Request body for creating a task in Loopman
168
- * Maps tool call data to task fields for POST /api/v1/tasks
140
+ * Request body for creating or updating a task in Loopman
141
+ * Maps tool call data to task fields for POST /api/v1/tasks (upsert)
169
142
  */
170
143
  export interface CreateTaskRequest {
144
+ id?: string;
171
145
  title: string;
172
146
  description: string;
173
147
  workflowIdentifier: string;
174
148
  executionIdentifier: string;
175
- channelId?: string;
176
149
  category?: string;
177
150
  businessContext?: string;
178
151
  proposedDecision?: string;
@@ -186,6 +159,7 @@ export interface CreateTaskRequest {
186
159
  };
187
160
  information?: TaskInformation[];
188
161
  priority?: "LOW" | "MEDIUM" | "HIGH";
162
+ status?: "PENDING" | "APPROVED" | "REJECTED" | "NEEDS_CHANGES";
189
163
  externalReference?: string;
190
164
  idempotencyKey?: string;
191
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqRH;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACD;IAAqB;IAAzD,YAAY,OAAe,EAAS,IAAY,EAAS,OAAa;QACpE,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,SAAI,GAAJ,IAAI,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAM;QAEpE,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwPH;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACD;IAAqB;IAAzD,YAAY,OAAe,EAAS,IAAY,EAAS,OAAa;QACpE,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,SAAI,GAAJ,IAAI,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAM;QAEpE,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
@@ -0,0 +1,346 @@
1
+ # Examples - Loopman LangChain SDK
2
+
3
+ A comprehensive collection of examples demonstrating LangChain v1.0 agent patterns and Loopman's Human-in-the-Loop (HITL) integration, from basics to production-ready patterns.
4
+
5
+ ## 📚 Structure
6
+
7
+ ```
8
+ examples/
9
+ ├── 1-basics/ # LangChain fundamentals (no Loopman)
10
+ ├── 2-loopman-integration/ # Loopman HITL core features
11
+ ├── 3-real-world-examples/ # Production use cases
12
+ └── 4-advanced-patterns/ # Sophisticated HITL patterns
13
+ ```
14
+
15
+ ---
16
+
17
+ ## 🎓 Learning Path
18
+
19
+ ### For Beginners
20
+ Start with the basics and progress through each level:
21
+
22
+ 1. **[1-basics/](1-basics/README.md)** - Learn LangChain agent fundamentals
23
+ - Simple agents with tools
24
+ - Conversational memory
25
+ - Native HITL middleware
26
+
27
+ 2. **[2-loopman-integration/](2-loopman-integration/README.md)** - Add Loopman HITL
28
+ - Transparent validation
29
+ - Middleware modes
30
+ - MCP integration
31
+
32
+ 3. **[3-real-world-examples/](3-real-world-examples/README.md)** - Apply to real scenarios
33
+ - Task management
34
+ - Data processing
35
+ - Content workflows
36
+
37
+ 4. **[4-advanced-patterns/](4-advanced-patterns/README.md)** - Master advanced techniques
38
+ - Conditional HITL
39
+ - Context-aware validation
40
+ - Risk-based approval
41
+
42
+ ### For Experienced Developers
43
+ Jump directly to relevant sections:
44
+
45
+ - **Need HITL fast?** → [2-loopman-integration/01-middleware-basic.ts](2-loopman-integration/01-middleware-basic.ts)
46
+ - **Building a workflow?** → [3-real-world-examples/](3-real-world-examples/README.md)
47
+ - **Need conditional approval?** → [4-advanced-patterns/conditional-hitl.ts](4-advanced-patterns/conditional-hitl.ts)
48
+ - **Want the complete agent API?** → [2-loopman-integration/03-loopman-agent.ts](2-loopman-integration/03-loopman-agent.ts)
49
+ - **Review LangChain basics** → [1-basics/](1-basics/README.md)
50
+
51
+ ---
52
+
53
+ ## 🚀 Quick Start
54
+
55
+ ### Prerequisites
56
+
57
+ ```bash
58
+ # Install dependencies
59
+ npm install
60
+
61
+ # Configure environment
62
+ cp ../env.example .env
63
+ # Edit .env and add your API keys
64
+ ```
65
+
66
+ ### Run Your First Example
67
+
68
+ ```bash
69
+ # 1. Basic agent (no HITL)
70
+ npx tsx 1-basics/01-simple-agent.ts
71
+
72
+ # 2. Loopman transparent HITL
73
+ npx tsx 2-loopman-integration/01-middleware-basic.ts
74
+
75
+ # 3. Real-world use case
76
+ npx tsx 3-real-world-examples/task-management/task-approval.ts
77
+
78
+ # 4. Advanced pattern
79
+ npx tsx 4-advanced-patterns/conditional-hitl.ts
80
+ ```
81
+
82
+ ---
83
+
84
+ ## 📂 Detailed Breakdown
85
+
86
+ ### 1️⃣ Basics - LangChain Fundamentals
87
+ **Path:** `1-basics/`
88
+
89
+ Learn core LangChain concepts without Loopman complexity:
90
+
91
+ | Example | Concept | Key Learning |
92
+ |---------|---------|--------------|
93
+ | `01-simple-agent.ts` | Basic agent | Tools, memory, invoke |
94
+ | `02-memory-and-context.ts` | Conversational memory | Checkpointers, thread IDs, context |
95
+ | `03-langchain-native-hitl.ts` | Native HITL | Interruptions, Command.resume() |
96
+
97
+ **Who should start here:**
98
+ - New to LangChain v1.0
99
+ - Want to understand agent fundamentals
100
+ - Need reference for vanilla LangChain patterns
101
+
102
+ [👉 Full documentation](1-basics/README.md)
103
+
104
+ ---
105
+
106
+ ### 2️⃣ Loopman Integration - Core HITL Features
107
+ **Path:** `2-loopman-integration/`
108
+
109
+ Loopman's transparent HITL middleware and agent patterns:
110
+
111
+ | Example | Concept | Key Feature |
112
+ |---------|---------|-------------|
113
+ | `01-middleware-basic.ts` | Transparent HITL | No interrupt handling needed! |
114
+ | `02-middleware-modes.ts` | Three operation modes | tool-validation, prompt-enhancement, full |
115
+ | `03-loopman-agent.ts` | High-level Loopman API | All-in-one solution (recommended) |
116
+
117
+ **Key differences from native HITL:**
118
+
119
+ ```typescript
120
+ // ❌ Native LangChain - manual interrupt handling
121
+ if (result.__interrupt__) {
122
+ const decision = await waitForHuman();
123
+ await agent.invoke(new Command({ resume: decision }));
124
+ }
125
+
126
+ // ✅ Loopman - completely transparent!
127
+ const result = await agent.invoke(...);
128
+ // Human validation already handled ✨
129
+ ```
130
+
131
+ [👉 Full documentation](2-loopman-integration/README.md)
132
+
133
+ ---
134
+
135
+ ### 3️⃣ Real-World Examples - Production Use Cases
136
+ **Path:** `3-real-world-examples/`
137
+
138
+ Complete, domain-specific implementations:
139
+
140
+ | Domain | Example | Scenario |
141
+ |--------|---------|----------|
142
+ | **Task Management** | `task-management/task-approval.ts` | CRUD ops with selective approval |
143
+ | **Data Processing** | `data-processing/data-validation.ts` | ETL with quality checks and fixes |
144
+ | **Content Workflow** | `content-workflow/content-review.ts` | Draft/publish with editorial review |
145
+
146
+ **Pattern:** Safe operations auto-approved, destructive operations require approval
147
+
148
+ ```typescript
149
+ interruptOn: {
150
+ read_data: false, // ✅ Auto-approved
151
+ create_draft: false, // ✅ Auto-approved
152
+ publish: true, // ⚠️ Requires approval
153
+ delete: true // ⚠️ Requires approval
154
+ }
155
+ ```
156
+
157
+ [👉 Full documentation](3-real-world-examples/README.md)
158
+
159
+ ---
160
+
161
+ ### 4️⃣ Advanced Patterns - Sophisticated HITL
162
+ **Path:** `4-advanced-patterns/`
163
+
164
+ Context-aware, intelligent validation:
165
+
166
+ | Pattern | Example | Use Case |
167
+ |---------|---------|----------|
168
+ | **Conditional HITL** | `conditional-hitl.ts` | Amount-based, risk-based, time-based rules |
169
+
170
+ **Example:** Auto-approve small payments, require approval for large ones
171
+
172
+ ```typescript
173
+ const needsApproval =
174
+ amount > userApprovalLimit ||
175
+ isHighRiskCountry(country) ||
176
+ !isBusinessHours();
177
+ ```
178
+
179
+ [👉 Full documentation](4-advanced-patterns/README.md)
180
+
181
+ ---
182
+
183
+ ## 🔧 Environment Configuration
184
+
185
+ Create a `.env` file in the examples directory:
186
+
187
+ ```env
188
+ # Required
189
+ OPENAI_API_KEY=sk-your-openai-api-key
190
+
191
+ # Optional (for Loopman examples)
192
+ LOOPMAN_API_KEY=your-loopman-api-key
193
+ LOOPMAN_CHANNEL_ID=your-channel-id
194
+ ```
195
+
196
+ ---
197
+
198
+ ## 💡 Common Patterns
199
+
200
+ ### Pattern 1: Safe vs. Sensitive Operations
201
+
202
+ Categorize operations by risk level:
203
+
204
+ ```typescript
205
+ // ✅ Always safe - read operations
206
+ list_items: false
207
+ get_item: false
208
+ analyze_data: false
209
+
210
+ // ✅ Usually safe - create/update
211
+ create_draft: false
212
+ update_task: false
213
+
214
+ // ⚠️ Requires approval - destructive/public
215
+ delete_item: true
216
+ publish_content: true
217
+ send_email: true
218
+ bulk_operations: true
219
+ ```
220
+
221
+ ### Pattern 2: Transparent HITL with Loopman
222
+
223
+ Add middleware and forget about interruptions:
224
+
225
+ ```typescript
226
+ const agent = createAgent({
227
+ model: "openai:gpt-4o-mini",
228
+ tools: [myTool],
229
+ middleware: [
230
+ loopmanMiddleware({
231
+ apiKey: process.env.LOOPMAN_API_KEY!,
232
+ workflowId: "my-workflow",
233
+ interruptOn: { my_tool: true },
234
+ }),
235
+ ],
236
+ });
237
+
238
+ // Just invoke - HITL happens automatically!
239
+ const result = await agent.invoke({ messages: [...] }, config);
240
+ ```
241
+
242
+ ### Pattern 3: Auto-Retry on Feedback
243
+
244
+ Use `invokeWithRetry()` for automatic retry on human corrections:
245
+
246
+ ```typescript
247
+ import { invokeWithRetry } from "../src/loopman-agent-wrapper";
248
+
249
+ const result = await invokeWithRetry(
250
+ agent,
251
+ { messages: [...] },
252
+ config,
253
+ { maxRetries: 5, debug: true }
254
+ );
255
+ // Handles NEEDS_CHANGES and auto-retries ✨
256
+ ```
257
+
258
+ ### Pattern 4: Conditional Approval
259
+
260
+ Tools decide if approval needed based on context:
261
+
262
+ ```typescript
263
+ const myTool = tool(({ amount, user }) => {
264
+ if (amount > user.approvalLimit) {
265
+ // Create pending task for approval
266
+ return createPendingTask(amount);
267
+ }
268
+ // Auto-approve
269
+ return executeImmediately(amount);
270
+ });
271
+ ```
272
+
273
+ ---
274
+
275
+ ## 🎯 Choose Your Path
276
+
277
+ ### I want to learn LangChain basics
278
+ 👉 Start with [1-basics/01-simple-agent.ts](1-basics/01-simple-agent.ts)
279
+
280
+ ### I need to add HITL to my agent
281
+ 👉 Jump to [2-loopman-integration/01-middleware-basic.ts](2-loopman-integration/01-middleware-basic.ts)
282
+
283
+ ### I'm building a specific feature
284
+ 👉 Browse [3-real-world-examples/](3-real-world-examples/README.md) for your domain
285
+
286
+ ### I need advanced validation logic
287
+ 👉 Study [4-advanced-patterns/conditional-hitl.ts](4-advanced-patterns/conditional-hitl.ts)
288
+
289
+ ---
290
+
291
+ ## 📖 Additional Resources
292
+
293
+ ### Documentation
294
+ - [Main README](../README.md) - SDK overview and API reference
295
+ - [Double Validation Layer](../docs/DOUBLE_VALIDATION_LAYER.md)
296
+ - [Auto-Correction with Feedback](../docs/AUTO_CORRECTION_WITH_FEEDBACK.md)
297
+ - [Middleware Modes](../docs/TOOL_VALIDATION_MODE.md)
298
+ - [Loopman Agent Guide](../docs/LOOPMAN_AGENT.md)
299
+
300
+ ### LangChain Resources
301
+ - [LangChain v1.0 Quickstart](https://docs.langchain.com/oss/javascript/langchain/quickstart)
302
+ - [Human-in-the-Loop Guide](https://docs.langchain.com/oss/javascript/langchain/human-in-the-loop)
303
+ - [Tools Documentation](https://docs.langchain.com/oss/javascript/langchain/tools)
304
+
305
+ ---
306
+
307
+ ## 🛠️ Development Tips
308
+
309
+ ### Debugging
310
+ - Enable `debug: true` in middleware config
311
+ - Use VSCode debug configurations (`.vscode/launch.json`)
312
+ - Check console output for detailed logs
313
+
314
+ ### Testing
315
+ - Use short timeouts during development (30s instead of 5min)
316
+ - Mock API responses to avoid rate limits
317
+ - Test with different `thread_id` values for isolated conversations
318
+
319
+ ### Production
320
+ - Replace `MemorySaver` with `PostgresSaver` or `RedisSaver`
321
+ - Set appropriate timeouts based on expected human response times
322
+ - Monitor approval rates and tune thresholds
323
+
324
+ ---
325
+
326
+ ## 🤝 Contributing
327
+
328
+ Found a bug or have an improvement?
329
+
330
+ 1. Check existing examples for similar patterns
331
+ 2. Follow the established structure (1-basics, 2-loopman, etc.)
332
+ 3. Add comprehensive comments and documentation
333
+ 4. Update this README with your example
334
+ 5. Test thoroughly before submitting
335
+
336
+ ---
337
+
338
+ ## 📄 License
339
+
340
+ MPL-2.0 - See [LICENSE](../LICENSE) for details
341
+
342
+ ---
343
+
344
+ **Happy coding! 🚀**
345
+
346
+ For questions or support, check the [main documentation](../README.md) or open an issue on GitHub.