agent-orcha 0.0.2 → 0.0.4

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 (275) hide show
  1. package/README.md +777 -100
  2. package/dist/lib/agents/agent-executor.d.ts +6 -1
  3. package/dist/lib/agents/agent-executor.d.ts.map +1 -1
  4. package/dist/lib/agents/agent-executor.js +241 -45
  5. package/dist/lib/agents/agent-executor.js.map +1 -1
  6. package/dist/lib/agents/agent-loader.d.ts.map +1 -1
  7. package/dist/lib/agents/agent-loader.js +3 -1
  8. package/dist/lib/agents/agent-loader.js.map +1 -1
  9. package/dist/lib/agents/index.d.ts +2 -1
  10. package/dist/lib/agents/index.d.ts.map +1 -1
  11. package/dist/lib/agents/index.js +1 -0
  12. package/dist/lib/agents/index.js.map +1 -1
  13. package/dist/lib/agents/structured-output-wrapper.d.ts +19 -0
  14. package/dist/lib/agents/structured-output-wrapper.d.ts.map +1 -0
  15. package/dist/lib/agents/structured-output-wrapper.js +104 -0
  16. package/dist/lib/agents/structured-output-wrapper.js.map +1 -0
  17. package/dist/lib/agents/types.d.ts +17 -10
  18. package/dist/lib/agents/types.d.ts.map +1 -1
  19. package/dist/lib/agents/types.js +1 -1
  20. package/dist/lib/agents/types.js.map +1 -1
  21. package/dist/lib/index.d.ts +9 -7
  22. package/dist/lib/index.d.ts.map +1 -1
  23. package/dist/lib/index.js +7 -5
  24. package/dist/lib/index.js.map +1 -1
  25. package/dist/lib/knowledge/graph-rag/community-detector.d.ts +16 -0
  26. package/dist/lib/knowledge/graph-rag/community-detector.d.ts.map +1 -0
  27. package/dist/lib/knowledge/graph-rag/community-detector.js +81 -0
  28. package/dist/lib/knowledge/graph-rag/community-detector.js.map +1 -0
  29. package/dist/lib/knowledge/graph-rag/community-summarizer.d.ts +17 -0
  30. package/dist/lib/knowledge/graph-rag/community-summarizer.d.ts.map +1 -0
  31. package/dist/lib/knowledge/graph-rag/community-summarizer.js +87 -0
  32. package/dist/lib/knowledge/graph-rag/community-summarizer.js.map +1 -0
  33. package/dist/lib/knowledge/graph-rag/entity-extractor.d.ts +36 -0
  34. package/dist/lib/knowledge/graph-rag/entity-extractor.d.ts.map +1 -0
  35. package/dist/lib/knowledge/graph-rag/entity-extractor.js +192 -0
  36. package/dist/lib/knowledge/graph-rag/entity-extractor.js.map +1 -0
  37. package/dist/lib/knowledge/graph-rag/extraction-cache.d.ts +30 -0
  38. package/dist/lib/knowledge/graph-rag/extraction-cache.d.ts.map +1 -0
  39. package/dist/lib/knowledge/graph-rag/extraction-cache.js +88 -0
  40. package/dist/lib/knowledge/graph-rag/extraction-cache.js.map +1 -0
  41. package/dist/lib/knowledge/graph-rag/global-search.d.ts +19 -0
  42. package/dist/lib/knowledge/graph-rag/global-search.d.ts.map +1 -0
  43. package/dist/lib/knowledge/graph-rag/global-search.js +96 -0
  44. package/dist/lib/knowledge/graph-rag/global-search.js.map +1 -0
  45. package/dist/lib/knowledge/graph-rag/graph-rag-factory.d.ts +24 -0
  46. package/dist/lib/knowledge/graph-rag/graph-rag-factory.d.ts.map +1 -0
  47. package/dist/lib/knowledge/graph-rag/graph-rag-factory.js +239 -0
  48. package/dist/lib/knowledge/graph-rag/graph-rag-factory.js.map +1 -0
  49. package/dist/lib/knowledge/graph-rag/index.d.ts +14 -0
  50. package/dist/lib/knowledge/graph-rag/index.d.ts.map +1 -0
  51. package/dist/lib/knowledge/graph-rag/index.js +12 -0
  52. package/dist/lib/knowledge/graph-rag/index.js.map +1 -0
  53. package/dist/lib/knowledge/graph-rag/local-search.d.ts +20 -0
  54. package/dist/lib/knowledge/graph-rag/local-search.d.ts.map +1 -0
  55. package/dist/lib/knowledge/graph-rag/local-search.js +110 -0
  56. package/dist/lib/knowledge/graph-rag/local-search.js.map +1 -0
  57. package/dist/lib/knowledge/graph-rag/memory-graph-store.d.ts +31 -0
  58. package/dist/lib/knowledge/graph-rag/memory-graph-store.d.ts.map +1 -0
  59. package/dist/lib/knowledge/graph-rag/memory-graph-store.js +165 -0
  60. package/dist/lib/knowledge/graph-rag/memory-graph-store.js.map +1 -0
  61. package/dist/lib/knowledge/graph-rag/neo4j-graph-store.d.ts +38 -0
  62. package/dist/lib/knowledge/graph-rag/neo4j-graph-store.d.ts.map +1 -0
  63. package/dist/lib/knowledge/graph-rag/neo4j-graph-store.js +190 -0
  64. package/dist/lib/knowledge/graph-rag/neo4j-graph-store.js.map +1 -0
  65. package/dist/lib/knowledge/graph-rag/search-mode-detector.d.ts +11 -0
  66. package/dist/lib/knowledge/graph-rag/search-mode-detector.d.ts.map +1 -0
  67. package/dist/lib/knowledge/graph-rag/search-mode-detector.js +50 -0
  68. package/dist/lib/knowledge/graph-rag/search-mode-detector.js.map +1 -0
  69. package/dist/lib/knowledge/graph-rag/types.d.ts +368 -0
  70. package/dist/lib/knowledge/graph-rag/types.d.ts.map +1 -0
  71. package/dist/lib/knowledge/graph-rag/types.js +48 -0
  72. package/dist/lib/knowledge/graph-rag/types.js.map +1 -0
  73. package/dist/lib/knowledge/index.d.ts +9 -0
  74. package/dist/lib/knowledge/index.d.ts.map +1 -0
  75. package/dist/lib/knowledge/index.js +8 -0
  76. package/dist/lib/knowledge/index.js.map +1 -0
  77. package/dist/lib/knowledge/knowledge-store-factory.d.ts +16 -0
  78. package/dist/lib/knowledge/knowledge-store-factory.d.ts.map +1 -0
  79. package/dist/lib/{vectors/vector-store-factory.js → knowledge/knowledge-store-factory.js} +36 -10
  80. package/dist/lib/knowledge/knowledge-store-factory.js.map +1 -0
  81. package/dist/lib/knowledge/knowledge-store-manager.d.ts +18 -0
  82. package/dist/lib/knowledge/knowledge-store-manager.d.ts.map +1 -0
  83. package/dist/lib/knowledge/knowledge-store-manager.js +98 -0
  84. package/dist/lib/knowledge/knowledge-store-manager.js.map +1 -0
  85. package/dist/lib/knowledge/loaders/database-loader.d.ts +18 -0
  86. package/dist/lib/knowledge/loaders/database-loader.d.ts.map +1 -0
  87. package/dist/lib/knowledge/loaders/database-loader.js +115 -0
  88. package/dist/lib/knowledge/loaders/database-loader.js.map +1 -0
  89. package/dist/lib/knowledge/loaders/index.d.ts +4 -0
  90. package/dist/lib/knowledge/loaders/index.d.ts.map +1 -0
  91. package/dist/lib/knowledge/loaders/index.js +4 -0
  92. package/dist/lib/knowledge/loaders/index.js.map +1 -0
  93. package/dist/lib/knowledge/loaders/s3-loader.d.ts +17 -0
  94. package/dist/lib/knowledge/loaders/s3-loader.d.ts.map +1 -0
  95. package/dist/lib/knowledge/loaders/s3-loader.js +185 -0
  96. package/dist/lib/knowledge/loaders/s3-loader.js.map +1 -0
  97. package/dist/lib/knowledge/loaders/web-loader.d.ts +12 -0
  98. package/dist/lib/knowledge/loaders/web-loader.d.ts.map +1 -0
  99. package/dist/lib/knowledge/loaders/web-loader.js +56 -0
  100. package/dist/lib/knowledge/loaders/web-loader.js.map +1 -0
  101. package/dist/lib/knowledge/types.d.ts +1839 -0
  102. package/dist/lib/knowledge/types.d.ts.map +1 -0
  103. package/dist/lib/knowledge/types.js +111 -0
  104. package/dist/lib/knowledge/types.js.map +1 -0
  105. package/dist/lib/knowledge/utils/connection-pool.d.ts +18 -0
  106. package/dist/lib/knowledge/utils/connection-pool.d.ts.map +1 -0
  107. package/dist/lib/knowledge/utils/connection-pool.js +77 -0
  108. package/dist/lib/knowledge/utils/connection-pool.js.map +1 -0
  109. package/dist/lib/knowledge/utils/file-type-detector.d.ts +10 -0
  110. package/dist/lib/knowledge/utils/file-type-detector.d.ts.map +1 -0
  111. package/dist/lib/knowledge/utils/file-type-detector.js +32 -0
  112. package/dist/lib/knowledge/utils/file-type-detector.js.map +1 -0
  113. package/dist/lib/knowledge/utils/index.d.ts +3 -0
  114. package/dist/lib/knowledge/utils/index.d.ts.map +1 -0
  115. package/dist/lib/knowledge/utils/index.js +3 -0
  116. package/dist/lib/knowledge/utils/index.js.map +1 -0
  117. package/dist/lib/mcp/mcp-client.d.ts +9 -1
  118. package/dist/lib/mcp/mcp-client.d.ts.map +1 -1
  119. package/dist/lib/mcp/mcp-client.js +33 -0
  120. package/dist/lib/mcp/mcp-client.js.map +1 -1
  121. package/dist/lib/memory/conversation-store.d.ts +43 -0
  122. package/dist/lib/memory/conversation-store.d.ts.map +1 -0
  123. package/dist/lib/memory/conversation-store.js +109 -0
  124. package/dist/lib/memory/conversation-store.js.map +1 -0
  125. package/dist/lib/memory/index.d.ts +3 -0
  126. package/dist/lib/memory/index.d.ts.map +1 -0
  127. package/dist/lib/memory/index.js +3 -0
  128. package/dist/lib/memory/index.js.map +1 -0
  129. package/dist/lib/memory/types.d.ts +19 -0
  130. package/dist/lib/memory/types.d.ts.map +1 -0
  131. package/dist/lib/memory/types.js +6 -0
  132. package/dist/lib/memory/types.js.map +1 -0
  133. package/dist/lib/orchestrator.d.ts +56 -14
  134. package/dist/lib/orchestrator.d.ts.map +1 -1
  135. package/dist/lib/orchestrator.js +182 -25
  136. package/dist/lib/orchestrator.js.map +1 -1
  137. package/dist/lib/tools/agent-tool-wrapper.d.ts +22 -0
  138. package/dist/lib/tools/agent-tool-wrapper.d.ts.map +1 -0
  139. package/dist/lib/tools/agent-tool-wrapper.js +56 -0
  140. package/dist/lib/tools/agent-tool-wrapper.js.map +1 -0
  141. package/dist/lib/tools/built-in/ask-user.tool.d.ts +7 -0
  142. package/dist/lib/tools/built-in/ask-user.tool.d.ts.map +1 -0
  143. package/dist/lib/tools/built-in/ask-user.tool.js +23 -0
  144. package/dist/lib/tools/built-in/ask-user.tool.js.map +1 -0
  145. package/dist/lib/tools/built-in/index.d.ts +2 -1
  146. package/dist/lib/tools/built-in/index.d.ts.map +1 -1
  147. package/dist/lib/tools/built-in/index.js +2 -1
  148. package/dist/lib/tools/built-in/index.js.map +1 -1
  149. package/dist/lib/tools/built-in/knowledge-search.tool.d.ts +4 -0
  150. package/dist/lib/tools/built-in/knowledge-search.tool.d.ts.map +1 -0
  151. package/dist/lib/tools/built-in/{vector-search.tool.js → knowledge-search.tool.js} +4 -4
  152. package/dist/lib/tools/built-in/knowledge-search.tool.js.map +1 -0
  153. package/dist/lib/tools/index.d.ts +3 -1
  154. package/dist/lib/tools/index.d.ts.map +1 -1
  155. package/dist/lib/tools/index.js +3 -1
  156. package/dist/lib/tools/index.js.map +1 -1
  157. package/dist/lib/tools/tool-discovery.d.ts +50 -0
  158. package/dist/lib/tools/tool-discovery.d.ts.map +1 -0
  159. package/dist/lib/tools/tool-discovery.js +178 -0
  160. package/dist/lib/tools/tool-discovery.js.map +1 -0
  161. package/dist/lib/tools/tool-registry.d.ts +19 -3
  162. package/dist/lib/tools/tool-registry.d.ts.map +1 -1
  163. package/dist/lib/tools/tool-registry.js +63 -10
  164. package/dist/lib/tools/tool-registry.js.map +1 -1
  165. package/dist/lib/workflows/index.d.ts +4 -2
  166. package/dist/lib/workflows/index.d.ts.map +1 -1
  167. package/dist/lib/workflows/index.js +3 -1
  168. package/dist/lib/workflows/index.js.map +1 -1
  169. package/dist/lib/workflows/interrupt-manager.d.ts +42 -0
  170. package/dist/lib/workflows/interrupt-manager.d.ts.map +1 -0
  171. package/dist/lib/workflows/interrupt-manager.js +102 -0
  172. package/dist/lib/workflows/interrupt-manager.js.map +1 -0
  173. package/dist/lib/workflows/langgraph-executor.d.ts +51 -0
  174. package/dist/lib/workflows/langgraph-executor.d.ts.map +1 -0
  175. package/dist/lib/workflows/langgraph-executor.js +297 -0
  176. package/dist/lib/workflows/langgraph-executor.js.map +1 -0
  177. package/dist/lib/workflows/types.d.ts +911 -34
  178. package/dist/lib/workflows/types.d.ts.map +1 -1
  179. package/dist/lib/workflows/types.js +51 -2
  180. package/dist/lib/workflows/types.js.map +1 -1
  181. package/dist/lib/workflows/workflow-executor.d.ts.map +1 -1
  182. package/dist/lib/workflows/workflow-executor.js +4 -0
  183. package/dist/lib/workflows/workflow-executor.js.map +1 -1
  184. package/dist/lib/workflows/workflow-loader.d.ts.map +1 -1
  185. package/dist/lib/workflows/workflow-loader.js +3 -1
  186. package/dist/lib/workflows/workflow-loader.js.map +1 -1
  187. package/dist/public/index.html +133 -700
  188. package/dist/public/src/components/AgentsView.js +763 -0
  189. package/dist/public/src/components/AppRoot.js +76 -0
  190. package/dist/public/src/components/IdeView.js +330 -0
  191. package/dist/public/src/components/KnowledgeView.js +133 -0
  192. package/dist/public/src/components/LlmView.js +127 -0
  193. package/dist/public/src/components/McpView.js +387 -0
  194. package/dist/public/src/components/NavBar.js +71 -0
  195. package/dist/public/src/components/WorkflowsView.js +243 -0
  196. package/dist/public/src/main.js +9 -0
  197. package/dist/public/src/services/ApiService.js +142 -0
  198. package/dist/public/src/store.js +41 -0
  199. package/dist/public/src/utils/Component.js +23 -0
  200. package/dist/public/src/utils/markdown.js +82 -0
  201. package/dist/src/cli/commands/init.js +3 -3
  202. package/dist/src/cli/commands/init.js.map +1 -1
  203. package/dist/src/cli/commands/start.d.ts.map +1 -1
  204. package/dist/src/cli/commands/start.js +3 -2
  205. package/dist/src/cli/commands/start.js.map +1 -1
  206. package/dist/src/index.js +46 -12
  207. package/dist/src/index.js.map +1 -1
  208. package/dist/src/routes/agents.route.d.ts.map +1 -1
  209. package/dist/src/routes/agents.route.js +38 -5
  210. package/dist/src/routes/agents.route.js.map +1 -1
  211. package/dist/src/routes/files.route.d.ts +3 -0
  212. package/dist/src/routes/files.route.d.ts.map +1 -0
  213. package/dist/src/routes/files.route.js +160 -0
  214. package/dist/src/routes/files.route.js.map +1 -0
  215. package/dist/src/routes/functions.route.d.ts +3 -0
  216. package/dist/src/routes/functions.route.d.ts.map +1 -0
  217. package/dist/src/routes/functions.route.js +83 -0
  218. package/dist/src/routes/functions.route.js.map +1 -0
  219. package/dist/src/routes/knowledge.route.d.ts +3 -0
  220. package/dist/src/routes/knowledge.route.d.ts.map +1 -0
  221. package/dist/src/routes/knowledge.route.js +153 -0
  222. package/dist/src/routes/knowledge.route.js.map +1 -0
  223. package/dist/src/routes/mcp.route.d.ts +3 -0
  224. package/dist/src/routes/mcp.route.d.ts.map +1 -0
  225. package/dist/src/routes/mcp.route.js +79 -0
  226. package/dist/src/routes/mcp.route.js.map +1 -0
  227. package/dist/src/routes/workflows.route.d.ts.map +1 -1
  228. package/dist/src/routes/workflows.route.js +2 -1
  229. package/dist/src/routes/workflows.route.js.map +1 -1
  230. package/dist/src/server.d.ts.map +1 -1
  231. package/dist/src/server.js +8 -2
  232. package/dist/src/server.js.map +1 -1
  233. package/dist/templates/.env.example +21 -0
  234. package/dist/templates/README.md +43 -152
  235. package/dist/templates/agents/call-center-analyst-simple.agent.yaml +36 -0
  236. package/dist/templates/agents/math.agent.yaml +4 -14
  237. package/dist/templates/agents/sentiment-structured.agent.yaml +42 -0
  238. package/dist/templates/functions/calculator.function.js +69 -0
  239. package/dist/templates/functions/text-formatter.function.js +66 -0
  240. package/dist/templates/{vectors/example.vector.yaml → knowledge/example.knowledge.yaml} +1 -1
  241. package/dist/templates/knowledge/transcripts/call-001.txt +40 -0
  242. package/dist/templates/knowledge/transcripts/call-002.txt +36 -0
  243. package/dist/templates/knowledge/transcripts/call-003.txt +42 -0
  244. package/dist/templates/llm.md +1195 -0
  245. package/dist/templates/workflows/example.workflow.yaml +8 -19
  246. package/dist/templates/workflows/langgraph-example.workflow.yaml +84 -0
  247. package/package.json +21 -12
  248. package/dist/lib/tools/built-in/vector-search.tool.d.ts +0 -4
  249. package/dist/lib/tools/built-in/vector-search.tool.d.ts.map +0 -1
  250. package/dist/lib/tools/built-in/vector-search.tool.js.map +0 -1
  251. package/dist/lib/vectors/index.d.ts +0 -5
  252. package/dist/lib/vectors/index.d.ts.map +0 -1
  253. package/dist/lib/vectors/index.js +0 -4
  254. package/dist/lib/vectors/index.js.map +0 -1
  255. package/dist/lib/vectors/types.d.ts +0 -212
  256. package/dist/lib/vectors/types.d.ts.map +0 -1
  257. package/dist/lib/vectors/types.js +0 -39
  258. package/dist/lib/vectors/types.js.map +0 -1
  259. package/dist/lib/vectors/vector-store-factory.d.ts +0 -14
  260. package/dist/lib/vectors/vector-store-factory.d.ts.map +0 -1
  261. package/dist/lib/vectors/vector-store-factory.js.map +0 -1
  262. package/dist/lib/vectors/vector-store-manager.d.ts +0 -18
  263. package/dist/lib/vectors/vector-store-manager.d.ts.map +0 -1
  264. package/dist/lib/vectors/vector-store-manager.js +0 -79
  265. package/dist/lib/vectors/vector-store-manager.js.map +0 -1
  266. package/dist/src/routes/vectors.route.d.ts +0 -3
  267. package/dist/src/routes/vectors.route.d.ts.map +0 -1
  268. package/dist/src/routes/vectors.route.js +0 -74
  269. package/dist/src/routes/vectors.route.js.map +0 -1
  270. package/dist/templates/agents/example.agent.yaml +0 -32
  271. package/dist/templates/agents/knowledge.agent.yaml +0 -36
  272. package/dist/templates/agents/time.agent.yaml +0 -42
  273. package/dist/templates/functions/README.md +0 -195
  274. package/dist/templates/functions/fibonacci.function.js +0 -55
  275. package/dist/templates/vectors/sample-data/example-document.txt +0 -15
@@ -0,0 +1,102 @@
1
+ import { logger } from '../logger.js';
2
+ /**
3
+ * Manages workflow interrupts for human-in-the-loop interactions.
4
+ * Interrupts are stored in-memory and expire after 1 hour.
5
+ */
6
+ export class InterruptManager {
7
+ interrupts = new Map();
8
+ INTERRUPT_TTL = 3600000; // 1 hour in milliseconds
9
+ /**
10
+ * Adds a new interrupt.
11
+ */
12
+ addInterrupt(interrupt) {
13
+ this.interrupts.set(interrupt.threadId, interrupt);
14
+ logger.info(`Added interrupt for thread ${interrupt.threadId}: ${interrupt.question}`);
15
+ // Clean up expired interrupts
16
+ this.cleanupExpired();
17
+ }
18
+ /**
19
+ * Gets an interrupt by thread ID.
20
+ */
21
+ getInterrupt(threadId) {
22
+ const interrupt = this.interrupts.get(threadId);
23
+ // Check if expired
24
+ if (interrupt && Date.now() - interrupt.timestamp > this.INTERRUPT_TTL) {
25
+ this.interrupts.delete(threadId);
26
+ logger.info(`Interrupt expired for thread ${threadId}`);
27
+ return undefined;
28
+ }
29
+ return interrupt;
30
+ }
31
+ /**
32
+ * Gets all interrupts for a workflow.
33
+ */
34
+ getInterruptsByWorkflow(workflowName) {
35
+ const interrupts = [];
36
+ for (const interrupt of this.interrupts.values()) {
37
+ if (interrupt.workflowName === workflowName && !interrupt.resolved) {
38
+ // Check if expired
39
+ if (Date.now() - interrupt.timestamp <= this.INTERRUPT_TTL) {
40
+ interrupts.push(interrupt);
41
+ }
42
+ }
43
+ }
44
+ return interrupts;
45
+ }
46
+ /**
47
+ * Resolves an interrupt with the user's answer.
48
+ */
49
+ resolveInterrupt(threadId, answer) {
50
+ const interrupt = this.getInterrupt(threadId);
51
+ if (!interrupt) {
52
+ logger.warn(`No interrupt found for thread ${threadId}`);
53
+ return false;
54
+ }
55
+ interrupt.resolved = true;
56
+ interrupt.answer = answer;
57
+ this.interrupts.set(threadId, interrupt);
58
+ logger.info(`Resolved interrupt for thread ${threadId} with answer: ${answer}`);
59
+ return true;
60
+ }
61
+ /**
62
+ * Removes an interrupt.
63
+ */
64
+ removeInterrupt(threadId) {
65
+ const deleted = this.interrupts.delete(threadId);
66
+ if (deleted) {
67
+ logger.info(`Removed interrupt for thread ${threadId}`);
68
+ }
69
+ return deleted;
70
+ }
71
+ /**
72
+ * Cleans up expired interrupts.
73
+ */
74
+ cleanupExpired() {
75
+ const now = Date.now();
76
+ const expiredThreadIds = [];
77
+ for (const [threadId, interrupt] of this.interrupts.entries()) {
78
+ if (now - interrupt.timestamp > this.INTERRUPT_TTL) {
79
+ expiredThreadIds.push(threadId);
80
+ }
81
+ }
82
+ for (const threadId of expiredThreadIds) {
83
+ this.interrupts.delete(threadId);
84
+ logger.info(`Cleaned up expired interrupt for thread ${threadId}`);
85
+ }
86
+ }
87
+ /**
88
+ * Gets the total number of active interrupts.
89
+ */
90
+ getInterruptCount() {
91
+ this.cleanupExpired();
92
+ return this.interrupts.size;
93
+ }
94
+ /**
95
+ * Clears all interrupts (useful for testing).
96
+ */
97
+ clear() {
98
+ this.interrupts.clear();
99
+ logger.info('Cleared all interrupts');
100
+ }
101
+ }
102
+ //# sourceMappingURL=interrupt-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrupt-manager.js","sourceRoot":"","sources":["../../../lib/workflows/interrupt-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { LangGraphWorkflowDefinition, WorkflowResult, WorkflowStatus } from './types.js';
2
+ import type { InterruptManager } from './interrupt-manager.js';
3
+ import { ToolDiscovery } from '../tools/tool-discovery.js';
4
+ /**
5
+ * Executes LangGraph workflows using ReAct pattern (Reasoning + Acting).
6
+ * Supports autonomous tool/agent discovery and human-in-the-loop via ask_user tool.
7
+ */
8
+ export declare class LangGraphExecutor {
9
+ private toolDiscovery;
10
+ private interruptManager;
11
+ private checkpointer;
12
+ constructor(toolDiscovery: ToolDiscovery, interruptManager: InterruptManager);
13
+ /**
14
+ * Executes a LangGraph workflow.
15
+ * @param definition - The LangGraph workflow definition
16
+ * @param input - Input values for the workflow
17
+ * @param threadId - Optional thread ID for resuming interrupted workflows
18
+ * @param onStatus - Optional callback for status updates
19
+ * @returns Workflow result
20
+ */
21
+ execute(definition: LangGraphWorkflowDefinition, input: Record<string, unknown>, threadId?: string, onStatus?: (status: WorkflowStatus) => void): Promise<WorkflowResult>;
22
+ /**
23
+ * Resumes a workflow that was interrupted by ask_user.
24
+ */
25
+ resumeWithAnswer(definition: LangGraphWorkflowDefinition, threadId: string, answer: string, onStatus?: (status: WorkflowStatus) => void): Promise<WorkflowResult>;
26
+ /**
27
+ * Handles workflow interrupts (ask_user).
28
+ */
29
+ private handleInterrupt;
30
+ /**
31
+ * Builds a ReAct graph with the given LLM and tools.
32
+ */
33
+ private buildReActGraph;
34
+ /**
35
+ * Decides whether to continue to tools or end.
36
+ */
37
+ private shouldContinue;
38
+ /**
39
+ * Interpolates template variables in the goal.
40
+ */
41
+ private interpolateGoal;
42
+ /**
43
+ * Extracts output from graph state.
44
+ */
45
+ private extractOutput;
46
+ /**
47
+ * Generates a unique thread ID.
48
+ */
49
+ private generateThreadId;
50
+ }
51
+ //# sourceMappingURL=langgraph-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langgraph-executor.d.ts","sourceRoot":"","sources":["../../../lib/workflows/langgraph-executor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,2BAA2B,EAC3B,cAAc,EACd,cAAc,EAEf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D;;;GAGG;AACH,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IAJ1B,OAAO,CAAC,YAAY,CAAqB;gBAG/B,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB;IAG5C;;;;;;;OAOG;IACG,OAAO,CACX,UAAU,EAAE,2BAA2B,EACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAC1C,OAAO,CAAC,cAAc,CAAC;IA8F1B;;OAEG;IACG,gBAAgB,CACpB,UAAU,EAAE,2BAA2B,EACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAC1C,OAAO,CAAC,cAAc,CAAC;IAsF1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAmDvB;;OAEG;IACH,OAAO,CAAC,eAAe;IA8CvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiCtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwBrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -0,0 +1,297 @@
1
+ import { StateGraph, MessagesAnnotation, MemorySaver } from '@langchain/langgraph';
2
+ import { ToolNode } from '@langchain/langgraph/prebuilt';
3
+ import { NodeInterrupt } from '@langchain/langgraph';
4
+ import { LLMFactory } from '../llm/llm-factory.js';
5
+ import { logger } from '../logger.js';
6
+ /**
7
+ * Executes LangGraph workflows using ReAct pattern (Reasoning + Acting).
8
+ * Supports autonomous tool/agent discovery and human-in-the-loop via ask_user tool.
9
+ */
10
+ export class LangGraphExecutor {
11
+ toolDiscovery;
12
+ interruptManager;
13
+ checkpointer = new MemorySaver();
14
+ constructor(toolDiscovery, interruptManager) {
15
+ this.toolDiscovery = toolDiscovery;
16
+ this.interruptManager = interruptManager;
17
+ }
18
+ /**
19
+ * Executes a LangGraph workflow.
20
+ * @param definition - The LangGraph workflow definition
21
+ * @param input - Input values for the workflow
22
+ * @param threadId - Optional thread ID for resuming interrupted workflows
23
+ * @param onStatus - Optional callback for status updates
24
+ * @returns Workflow result
25
+ */
26
+ async execute(definition, input, threadId, onStatus) {
27
+ const startTime = Date.now();
28
+ const actualThreadId = threadId || this.generateThreadId();
29
+ onStatus?.({
30
+ type: 'workflow_start',
31
+ message: `Starting LangGraph workflow: ${definition.name}`,
32
+ elapsed: 0,
33
+ });
34
+ try {
35
+ // 1. Discover tools
36
+ logger.info(`[LangGraph] Discovering tools for workflow "${definition.name}"...`);
37
+ const tools = await this.toolDiscovery.discoverAll(definition.graph.tools);
38
+ logger.info(`[LangGraph] Discovered ${tools.length} tools`);
39
+ // 2. Discover agents
40
+ logger.info(`[LangGraph] Discovering agents for workflow "${definition.name}"...`);
41
+ const agentTools = await this.toolDiscovery.discoverAgents(definition.graph.agents);
42
+ logger.info(`[LangGraph] Discovered ${agentTools.length} agent tools`);
43
+ // 3. Combine all tools
44
+ const allTools = [...tools, ...agentTools];
45
+ logger.info(`[LangGraph] Total tools available: ${allTools.length}`);
46
+ // 4. Get LLM
47
+ const llm = LLMFactory.create(definition.graph.model);
48
+ // 5. Build and compile graph
49
+ const app = this.buildReActGraph(llm, allTools, definition);
50
+ // 6. Execute
51
+ const goal = this.interpolateGoal(definition.prompt.goal, input);
52
+ const config = {
53
+ recursionLimit: definition.graph.maxIterations,
54
+ configurable: { thread_id: actualThreadId },
55
+ };
56
+ logger.info(`[LangGraph] Executing workflow with goal: ${goal}`);
57
+ const result = await app.invoke({ messages: [{ role: 'user', content: goal }] }, config);
58
+ // 7. Extract output
59
+ const output = this.extractOutput(definition.output, result);
60
+ const duration = Date.now() - startTime;
61
+ onStatus?.({
62
+ type: 'workflow_complete',
63
+ message: 'LangGraph workflow completed',
64
+ elapsed: duration,
65
+ });
66
+ logger.info(`[LangGraph] Workflow completed in ${duration}ms`);
67
+ return {
68
+ output,
69
+ metadata: {
70
+ duration,
71
+ stepsExecuted: result.messages?.length || 0,
72
+ success: true,
73
+ },
74
+ stepResults: {}, // No explicit steps in LangGraph
75
+ };
76
+ }
77
+ catch (error) {
78
+ // Check if it's an interrupt
79
+ if (error instanceof NodeInterrupt) {
80
+ return this.handleInterrupt(error, definition, actualThreadId, startTime, onStatus);
81
+ }
82
+ const duration = Date.now() - startTime;
83
+ onStatus?.({
84
+ type: 'workflow_error',
85
+ message: error instanceof Error ? error.message : String(error),
86
+ elapsed: duration,
87
+ error: String(error),
88
+ });
89
+ logger.error(`[LangGraph] Workflow error:`, error);
90
+ throw error;
91
+ }
92
+ }
93
+ /**
94
+ * Resumes a workflow that was interrupted by ask_user.
95
+ */
96
+ async resumeWithAnswer(definition, threadId, answer, onStatus) {
97
+ const startTime = Date.now();
98
+ logger.info(`[LangGraph] Resuming workflow "${definition.name}" with thread ${threadId}`);
99
+ // Resolve the interrupt
100
+ const resolved = this.interruptManager.resolveInterrupt(threadId, answer);
101
+ if (!resolved) {
102
+ throw new Error(`No active interrupt found for thread ${threadId}`);
103
+ }
104
+ onStatus?.({
105
+ type: 'workflow_start',
106
+ message: `Resuming LangGraph workflow: ${definition.name}`,
107
+ elapsed: 0,
108
+ });
109
+ try {
110
+ // 1. Discover tools (same as before)
111
+ const tools = await this.toolDiscovery.discoverAll(definition.graph.tools);
112
+ const agentTools = await this.toolDiscovery.discoverAgents(definition.graph.agents);
113
+ const allTools = [...tools, ...agentTools];
114
+ // 2. Get LLM
115
+ const llm = LLMFactory.create(definition.graph.model);
116
+ // 3. Build and compile graph
117
+ const app = this.buildReActGraph(llm, allTools, definition);
118
+ // 4. Resume with answer
119
+ const config = {
120
+ recursionLimit: definition.graph.maxIterations,
121
+ configurable: { thread_id: threadId },
122
+ };
123
+ // The answer is passed as a command to resume
124
+ const result = await app.invoke(null, config);
125
+ // 5. Extract output
126
+ const output = this.extractOutput(definition.output, result);
127
+ const duration = Date.now() - startTime;
128
+ onStatus?.({
129
+ type: 'workflow_complete',
130
+ message: 'LangGraph workflow resumed and completed',
131
+ elapsed: duration,
132
+ });
133
+ // Clean up interrupt
134
+ this.interruptManager.removeInterrupt(threadId);
135
+ return {
136
+ output,
137
+ metadata: {
138
+ duration,
139
+ stepsExecuted: result.messages?.length || 0,
140
+ success: true,
141
+ },
142
+ stepResults: {},
143
+ };
144
+ }
145
+ catch (error) {
146
+ // Check if it's another interrupt
147
+ if (error instanceof NodeInterrupt) {
148
+ return this.handleInterrupt(error, definition, threadId, startTime, onStatus);
149
+ }
150
+ const duration = Date.now() - startTime;
151
+ onStatus?.({
152
+ type: 'workflow_error',
153
+ message: error instanceof Error ? error.message : String(error),
154
+ elapsed: duration,
155
+ error: String(error),
156
+ });
157
+ throw error;
158
+ }
159
+ }
160
+ /**
161
+ * Handles workflow interrupts (ask_user).
162
+ */
163
+ handleInterrupt(error, definition, threadId, startTime, onStatus) {
164
+ // NodeInterrupt contains the interrupt data passed from the tool
165
+ // Access it via the error's properties
166
+ const interruptData = error.args?.[0] || {};
167
+ const question = interruptData.question || error.message || 'Agent requires input';
168
+ logger.info(`[LangGraph] Workflow interrupted with question: ${question}`);
169
+ // Store interrupt state
170
+ this.interruptManager.addInterrupt({
171
+ threadId,
172
+ workflowName: definition.name,
173
+ question,
174
+ timestamp: Date.now(),
175
+ resolved: false,
176
+ });
177
+ const interrupt = {
178
+ threadId,
179
+ question,
180
+ timestamp: Date.now(),
181
+ };
182
+ const duration = Date.now() - startTime;
183
+ onStatus?.({
184
+ type: 'workflow_interrupt',
185
+ message: `Workflow paused: ${question}`,
186
+ elapsed: duration,
187
+ interrupt,
188
+ });
189
+ // Return partial result with interrupt info
190
+ return {
191
+ output: { interrupted: true, threadId, question },
192
+ metadata: {
193
+ duration,
194
+ stepsExecuted: 0,
195
+ success: false,
196
+ },
197
+ stepResults: {},
198
+ };
199
+ }
200
+ /**
201
+ * Builds a ReAct graph with the given LLM and tools.
202
+ */
203
+ buildReActGraph(llm, tools, definition) {
204
+ const executionMode = definition.graph.executionMode || 'react';
205
+ let toolExecutionCount = 0;
206
+ const graph = new StateGraph(MessagesAnnotation)
207
+ .addNode('agent', async (state) => {
208
+ // In single-turn mode, after tools have executed once, don't bind tools
209
+ // This forces the agent to generate a final response without more tool calls
210
+ const shouldBindTools = executionMode === 'react' || toolExecutionCount === 0;
211
+ const modelToUse = shouldBindTools ? llm.bindTools(tools) : llm;
212
+ // Add instruction to wrap up if in single-turn mode after tools executed
213
+ const systemPrompt = executionMode === 'single-turn' && toolExecutionCount > 0
214
+ ? `${definition.prompt.system}\n\nIMPORTANT: You have received tool results. Provide your final answer now without calling any more tools.`
215
+ : definition.prompt.system;
216
+ const response = await modelToUse.invoke([
217
+ { role: 'system', content: systemPrompt },
218
+ ...state.messages,
219
+ ]);
220
+ return { messages: [response] };
221
+ })
222
+ .addNode('tools', async (state) => {
223
+ toolExecutionCount++;
224
+ const toolNode = new ToolNode(tools);
225
+ return toolNode.invoke(state);
226
+ })
227
+ .addEdge('__start__', 'agent')
228
+ .addConditionalEdges('agent', (state) => this.shouldContinue(state, executionMode, toolExecutionCount))
229
+ .addEdge('tools', 'agent');
230
+ // Compile with checkpointer (enables pause/resume)
231
+ return graph.compile({
232
+ checkpointer: this.checkpointer,
233
+ });
234
+ }
235
+ /**
236
+ * Decides whether to continue to tools or end.
237
+ */
238
+ shouldContinue(state, executionMode, toolExecutionCount) {
239
+ if (!state.messages || state.messages.length === 0) {
240
+ return '__end__';
241
+ }
242
+ const lastMessage = state.messages[state.messages.length - 1];
243
+ // Check if there are tool calls
244
+ const hasToolCalls = lastMessage &&
245
+ 'tool_calls' in lastMessage &&
246
+ Array.isArray(lastMessage.tool_calls) &&
247
+ lastMessage.tool_calls.length > 0;
248
+ if (!hasToolCalls) {
249
+ return '__end__';
250
+ }
251
+ // In single-turn mode, only allow one round of tool execution
252
+ if (executionMode === 'single-turn' && toolExecutionCount > 0) {
253
+ logger.info('[LangGraph] Single-turn mode: tools already executed, ending workflow');
254
+ return '__end__';
255
+ }
256
+ return 'tools';
257
+ }
258
+ /**
259
+ * Interpolates template variables in the goal.
260
+ */
261
+ interpolateGoal(template, input) {
262
+ return template.replace(/\{\{input\.([^}]+)\}\}/g, (_, key) => {
263
+ const value = input[key];
264
+ return value !== undefined ? String(value) : '';
265
+ });
266
+ }
267
+ /**
268
+ * Extracts output from graph state.
269
+ */
270
+ extractOutput(outputMapping, state) {
271
+ const output = {};
272
+ for (const [key, template] of Object.entries(outputMapping)) {
273
+ // Simple extraction: just get the last message content
274
+ if (template.includes('{{state.messages[-1].content}}')) {
275
+ const lastMessage = state.messages?.[state.messages.length - 1];
276
+ if (lastMessage && 'content' in lastMessage) {
277
+ output[key] = lastMessage.content;
278
+ }
279
+ else {
280
+ output[key] = '';
281
+ }
282
+ }
283
+ else {
284
+ // For other templates, just use as-is for now
285
+ output[key] = template;
286
+ }
287
+ }
288
+ return output;
289
+ }
290
+ /**
291
+ * Generates a unique thread ID.
292
+ */
293
+ generateThreadId() {
294
+ return `thread_${Date.now()}_${Math.random().toString(36).substring(7)}`;
295
+ }
296
+ }
297
+ //# sourceMappingURL=langgraph-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langgraph-executor.js","sourceRoot":"","sources":["../../../lib/workflows/langgraph-executor.ts"],"names":[],"mappings":"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"}