@eko-ai/eko 1.0.9 → 1.0.10

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 (280) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +139 -139
  3. package/dist/extension/script/bing.js +0 -0
  4. package/dist/extension/script/build_dom_tree.js +661 -661
  5. package/dist/extension/script/common.js +0 -0
  6. package/dist/extension/script/duckduckgo.js +0 -0
  7. package/dist/extension/script/google.js +0 -0
  8. package/dist/extension/tools/cancel_workflow.d.ts +9 -0
  9. package/dist/extension.cjs.js +75 -75
  10. package/dist/extension.esm.js +75 -75
  11. package/dist/extension_content_script.js +55 -55
  12. package/dist/fellou.cjs.js +18 -18
  13. package/dist/fellou.esm.js +18 -18
  14. package/dist/index.cjs.js +4356 -4255
  15. package/dist/index.d.ts +2 -1
  16. package/dist/index.esm.js +4356 -4256
  17. package/dist/jest.config.js +10 -0
  18. package/dist/jest.config.js.map +1 -0
  19. package/dist/nodejs.cjs.js +1627 -1627
  20. package/dist/nodejs.esm.js +1627 -1627
  21. package/dist/rollup.config.js +171 -0
  22. package/dist/rollup.config.js.map +1 -0
  23. package/dist/script.js +10 -0
  24. package/dist/script.js.map +1 -0
  25. package/dist/services/llm/deepseek-provider.d.ts +13 -0
  26. package/dist/services/llm/provider-factory.d.ts +4 -0
  27. package/dist/services/llm/siliconflow-provider.d.ts +13 -0
  28. package/dist/services/workflow/generator.d.ts +1 -0
  29. package/dist/src/core/eko.js +99 -0
  30. package/dist/src/core/eko.js.map +1 -0
  31. package/dist/src/core/tool-registry.js +51 -0
  32. package/dist/src/core/tool-registry.js.map +1 -0
  33. package/dist/src/extension/content/index.js +409 -0
  34. package/dist/src/extension/content/index.js.map +1 -0
  35. package/dist/src/extension/core.js +29 -0
  36. package/dist/src/extension/core.js.map +1 -0
  37. package/dist/src/extension/index.js +12 -0
  38. package/dist/src/extension/index.js.map +1 -0
  39. package/dist/src/extension/script/bing.js +25 -0
  40. package/dist/src/extension/script/bing.js.map +1 -0
  41. package/dist/src/extension/script/build_dom_tree.js +585 -0
  42. package/dist/src/extension/script/build_dom_tree.js.map +1 -0
  43. package/dist/src/extension/script/common.js +203 -0
  44. package/dist/src/extension/script/common.js.map +1 -0
  45. package/dist/src/extension/script/duckduckgo.js +25 -0
  46. package/dist/src/extension/script/duckduckgo.js.map +1 -0
  47. package/dist/src/extension/script/google.js +26 -0
  48. package/dist/src/extension/script/google.js.map +1 -0
  49. package/dist/src/extension/tools/browser.js +174 -0
  50. package/dist/src/extension/tools/browser.js.map +1 -0
  51. package/dist/src/extension/tools/browser_use.js +186 -0
  52. package/dist/src/extension/tools/browser_use.js.map +1 -0
  53. package/dist/src/extension/tools/element_click.js +123 -0
  54. package/dist/src/extension/tools/element_click.js.map +1 -0
  55. package/dist/src/extension/tools/export_file.js +93 -0
  56. package/dist/src/extension/tools/export_file.js.map +1 -0
  57. package/dist/src/extension/tools/extract_content.js +38 -0
  58. package/dist/src/extension/tools/extract_content.js.map +1 -0
  59. package/dist/src/extension/tools/find_element_position.js +125 -0
  60. package/dist/src/extension/tools/find_element_position.js.map +1 -0
  61. package/dist/src/extension/tools/html_script.js +219 -0
  62. package/dist/src/extension/tools/html_script.js.map +1 -0
  63. package/dist/src/extension/tools/index.js +12 -0
  64. package/dist/src/extension/tools/index.js.map +1 -0
  65. package/dist/src/extension/tools/open_url.js +68 -0
  66. package/dist/src/extension/tools/open_url.js.map +1 -0
  67. package/dist/src/extension/tools/request_login.js +87 -0
  68. package/dist/src/extension/tools/request_login.js.map +1 -0
  69. package/dist/src/extension/tools/screenshot.js +26 -0
  70. package/dist/src/extension/tools/screenshot.js.map +1 -0
  71. package/dist/src/extension/tools/tab_management.js +160 -0
  72. package/dist/src/extension/tools/tab_management.js.map +1 -0
  73. package/dist/src/extension/tools/web_search.js +281 -0
  74. package/dist/src/extension/tools/web_search.js.map +1 -0
  75. package/dist/src/extension/utils.js +244 -0
  76. package/dist/src/extension/utils.js.map +1 -0
  77. package/dist/src/fellou/computer.js +104 -0
  78. package/dist/src/fellou/computer.js.map +1 -0
  79. package/dist/src/fellou/index.js +7 -0
  80. package/dist/src/fellou/index.js.map +1 -0
  81. package/dist/src/fellou/tools/computer_use.js +111 -0
  82. package/dist/src/fellou/tools/computer_use.js.map +1 -0
  83. package/dist/src/index.js +9 -0
  84. package/dist/src/index.js.map +1 -0
  85. package/dist/src/models/action.js +364 -0
  86. package/dist/src/models/action.js.map +1 -0
  87. package/dist/src/models/workflow.js +120 -0
  88. package/dist/src/models/workflow.js.map +1 -0
  89. package/dist/src/nodejs/core.js +18 -0
  90. package/dist/src/nodejs/core.js.map +1 -0
  91. package/dist/src/nodejs/index.js +6 -0
  92. package/dist/src/nodejs/index.js.map +1 -0
  93. package/dist/src/nodejs/script/build_dom_tree.js +586 -0
  94. package/dist/src/nodejs/script/build_dom_tree.js.map +1 -0
  95. package/dist/src/nodejs/tools/browser_use.js +458 -0
  96. package/dist/src/nodejs/tools/browser_use.js.map +1 -0
  97. package/dist/src/nodejs/tools/command_execute.js +65 -0
  98. package/dist/src/nodejs/tools/command_execute.js.map +1 -0
  99. package/dist/src/nodejs/tools/file_read.js +45 -0
  100. package/dist/src/nodejs/tools/file_read.js.map +1 -0
  101. package/dist/src/nodejs/tools/file_write.js +95 -0
  102. package/dist/src/nodejs/tools/file_write.js.map +1 -0
  103. package/dist/src/nodejs/tools/index.js +5 -0
  104. package/dist/src/nodejs/tools/index.js.map +1 -0
  105. package/dist/src/schemas/workflow.schema.js +64 -0
  106. package/dist/src/schemas/workflow.schema.js.map +1 -0
  107. package/dist/src/services/llm/claude-provider.js +140 -0
  108. package/dist/src/services/llm/claude-provider.js.map +1 -0
  109. package/dist/src/services/llm/deepseek-provider.js +432 -0
  110. package/dist/src/services/llm/deepseek-provider.js.map +1 -0
  111. package/dist/src/services/llm/glm-provider.js +317 -0
  112. package/dist/src/services/llm/glm-provider.js.map +1 -0
  113. package/dist/src/services/llm/openai-provider copy.js +317 -0
  114. package/dist/src/services/llm/openai-provider copy.js.map +1 -0
  115. package/dist/src/services/llm/openai-provider.js +317 -0
  116. package/dist/src/services/llm/openai-provider.js.map +1 -0
  117. package/dist/src/services/parser/workflow-parser.js +208 -0
  118. package/dist/src/services/parser/workflow-parser.js.map +1 -0
  119. package/dist/src/services/workflow/generator.js +105 -0
  120. package/dist/src/services/workflow/generator.js.map +1 -0
  121. package/dist/src/services/workflow/templates.js +42 -0
  122. package/dist/src/services/workflow/templates.js.map +1 -0
  123. package/dist/src/types/action.types.js +2 -0
  124. package/dist/src/types/action.types.js.map +1 -0
  125. package/dist/src/types/eko.types.js +2 -0
  126. package/dist/src/types/eko.types.js.map +1 -0
  127. package/dist/src/types/index.js +6 -0
  128. package/dist/src/types/index.js.map +1 -0
  129. package/dist/src/types/llm.types.js +2 -0
  130. package/dist/src/types/llm.types.js.map +1 -0
  131. package/dist/src/types/parser.types.js +2 -0
  132. package/dist/src/types/parser.types.js.map +1 -0
  133. package/dist/src/types/tools.types.js +2 -0
  134. package/dist/src/types/tools.types.js.map +1 -0
  135. package/dist/src/types/workflow.types.js +3 -0
  136. package/dist/src/types/workflow.types.js.map +1 -0
  137. package/dist/src/web/core.js +18 -0
  138. package/dist/src/web/core.js.map +1 -0
  139. package/dist/src/web/index.js +9 -0
  140. package/dist/src/web/index.js.map +1 -0
  141. package/dist/src/web/script/build_dom_tree.js +584 -0
  142. package/dist/src/web/script/build_dom_tree.js.map +1 -0
  143. package/dist/src/web/tools/browser.js +249 -0
  144. package/dist/src/web/tools/browser.js.map +1 -0
  145. package/dist/src/web/tools/browser_use.js +176 -0
  146. package/dist/src/web/tools/browser_use.js.map +1 -0
  147. package/dist/src/web/tools/element_click.js +121 -0
  148. package/dist/src/web/tools/element_click.js.map +1 -0
  149. package/dist/src/web/tools/export_file.js +74 -0
  150. package/dist/src/web/tools/export_file.js.map +1 -0
  151. package/dist/src/web/tools/extract_content.js +24 -0
  152. package/dist/src/web/tools/extract_content.js.map +1 -0
  153. package/dist/src/web/tools/find_element_position.js +121 -0
  154. package/dist/src/web/tools/find_element_position.js.map +1 -0
  155. package/dist/src/web/tools/html_script.js +219 -0
  156. package/dist/src/web/tools/html_script.js.map +1 -0
  157. package/dist/src/web/tools/index.js +8 -0
  158. package/dist/src/web/tools/index.js.map +1 -0
  159. package/dist/src/web/tools/screenshot.js +24 -0
  160. package/dist/src/web/tools/screenshot.js.map +1 -0
  161. package/dist/test/integration/claude-provider.test.js +170 -0
  162. package/dist/test/integration/claude-provider.test.js.map +1 -0
  163. package/dist/test/integration/deepseek-provider.test.js +171 -0
  164. package/dist/test/integration/deepseek-provider.test.js.map +1 -0
  165. package/dist/test/integration/glm-provider.test.js +173 -0
  166. package/dist/test/integration/glm-provider.test.js.map +1 -0
  167. package/dist/test/integration/openai-provider.test copy.js +170 -0
  168. package/dist/test/integration/openai-provider.test copy.js.map +1 -0
  169. package/dist/test/integration/openai-provider.test.js +170 -0
  170. package/dist/test/integration/openai-provider.test.js.map +1 -0
  171. package/dist/test/integration/qwen-provider.js +170 -0
  172. package/dist/test/integration/qwen-provider.js.map +1 -0
  173. package/dist/test/integration/qwen-provider.test copy.js +170 -0
  174. package/dist/test/integration/qwen-provider.test copy.js.map +1 -0
  175. package/dist/test/integration/qwen-provider.test.js +170 -0
  176. package/dist/test/integration/qwen-provider.test.js.map +1 -0
  177. package/dist/test/integration/workflow.execution.test.js +152 -0
  178. package/dist/test/integration/workflow.execution.test.js.map +1 -0
  179. package/dist/test/integration/workflow.generation-and-execution.test.js +131 -0
  180. package/dist/test/integration/workflow.generation-and-execution.test.js.map +1 -0
  181. package/dist/test/integration/workflow.generator.test.js +207 -0
  182. package/dist/test/integration/workflow.generator.test.js.map +1 -0
  183. package/dist/test/unit/action.test.js +186 -0
  184. package/dist/test/unit/action.test.js.map +1 -0
  185. package/dist/test/unit/tool-registry.test.js +99 -0
  186. package/dist/test/unit/tool-registry.test.js.map +1 -0
  187. package/dist/test/unit/workflow-parser.test.js +189 -0
  188. package/dist/test/unit/workflow-parser.test.js.map +1 -0
  189. package/dist/test/unit/workflow.test.js +102 -0
  190. package/dist/test/unit/workflow.test.js.map +1 -0
  191. package/dist/types/jest.config.d.ts +10 -0
  192. package/dist/types/rollup.config.d.ts +16 -0
  193. package/dist/types/script.d.ts +1 -0
  194. package/dist/types/src/core/eko.d.ts +20 -0
  195. package/dist/types/src/core/tool-registry.d.ts +13 -0
  196. package/dist/types/src/extension/content/index.d.ts +16 -0
  197. package/dist/types/src/extension/core.d.ts +11 -0
  198. package/dist/types/src/extension/index.d.ts +7 -0
  199. package/dist/types/src/extension/script/bing.d.ts +0 -0
  200. package/dist/types/src/extension/script/build_dom_tree.d.ts +38 -0
  201. package/dist/types/src/extension/script/common.d.ts +0 -0
  202. package/dist/types/src/extension/script/duckduckgo.d.ts +0 -0
  203. package/dist/types/src/extension/script/google.d.ts +0 -0
  204. package/dist/types/src/extension/tools/browser.d.ts +22 -0
  205. package/dist/types/src/extension/tools/browser_use.d.ts +19 -0
  206. package/dist/types/src/extension/tools/element_click.d.ts +12 -0
  207. package/dist/types/src/extension/tools/export_file.d.ts +18 -0
  208. package/dist/types/src/extension/tools/extract_content.d.ts +18 -0
  209. package/dist/types/src/extension/tools/find_element_position.d.ts +12 -0
  210. package/dist/types/src/extension/tools/html_script.d.ts +10 -0
  211. package/dist/types/src/extension/tools/index.d.ts +11 -0
  212. package/dist/types/src/extension/tools/open_url.d.ts +18 -0
  213. package/dist/{extension/tools/form_autofill.d.ts → types/src/extension/tools/request_login.d.ts} +3 -4
  214. package/dist/types/src/extension/tools/screenshot.d.ts +18 -0
  215. package/dist/types/src/extension/tools/tab_management.d.ts +19 -0
  216. package/dist/types/src/extension/tools/web_search.d.ts +18 -0
  217. package/dist/types/src/extension/utils.d.ts +31 -0
  218. package/dist/types/src/fellou/computer.d.ts +20 -0
  219. package/dist/types/src/fellou/index.d.ts +6 -0
  220. package/dist/types/src/fellou/tools/computer_use.d.ts +18 -0
  221. package/dist/types/src/index.d.ts +8 -0
  222. package/dist/types/src/models/action.d.ts +22 -0
  223. package/dist/types/src/models/workflow.d.ts +16 -0
  224. package/dist/types/src/nodejs/core.d.ts +2 -0
  225. package/dist/types/src/nodejs/index.d.ts +3 -0
  226. package/dist/types/src/nodejs/script/build_dom_tree.d.ts +1 -0
  227. package/dist/types/src/nodejs/tools/browser_use.d.ts +28 -0
  228. package/dist/types/src/nodejs/tools/command_execute.d.ts +12 -0
  229. package/dist/types/src/nodejs/tools/file_read.d.ts +11 -0
  230. package/dist/types/src/nodejs/tools/file_write.d.ts +15 -0
  231. package/dist/types/src/nodejs/tools/index.d.ts +4 -0
  232. package/dist/types/src/schemas/workflow.schema.d.ts +88 -0
  233. package/dist/types/src/services/llm/claude-provider.d.ts +11 -0
  234. package/dist/types/src/services/llm/deepseek-provider.d.ts +15 -0
  235. package/dist/types/src/services/llm/glm-provider.d.ts +11 -0
  236. package/dist/types/src/services/llm/openai-provider copy.d.ts +11 -0
  237. package/dist/types/src/services/llm/openai-provider.d.ts +11 -0
  238. package/dist/types/src/services/parser/workflow-parser.d.ts +29 -0
  239. package/dist/types/src/services/workflow/generator.d.ts +13 -0
  240. package/dist/types/src/services/workflow/templates.d.ts +8 -0
  241. package/dist/types/src/types/action.types.d.ts +38 -0
  242. package/dist/types/src/types/eko.types.d.ts +21 -0
  243. package/dist/types/src/types/index.d.ts +5 -0
  244. package/dist/types/src/types/llm.types.d.ts +54 -0
  245. package/dist/types/src/types/parser.types.d.ts +9 -0
  246. package/dist/types/src/types/tools.types.d.ts +88 -0
  247. package/dist/types/src/types/workflow.types.d.ts +39 -0
  248. package/dist/types/src/web/core.d.ts +2 -0
  249. package/dist/types/src/web/index.d.ts +5 -0
  250. package/dist/types/src/web/script/build_dom_tree.d.ts +10 -0
  251. package/dist/types/src/web/tools/browser.d.ts +21 -0
  252. package/dist/types/src/web/tools/browser_use.d.ts +19 -0
  253. package/dist/types/src/web/tools/element_click.d.ts +12 -0
  254. package/dist/types/src/web/tools/export_file.d.ts +18 -0
  255. package/dist/types/src/web/tools/extract_content.d.ts +17 -0
  256. package/dist/types/src/web/tools/find_element_position.d.ts +12 -0
  257. package/dist/types/src/web/tools/html_script.d.ts +10 -0
  258. package/dist/types/src/web/tools/index.d.ts +7 -0
  259. package/dist/types/src/web/tools/screenshot.d.ts +18 -0
  260. package/dist/types/test/integration/claude-provider.test.d.ts +1 -0
  261. package/dist/types/test/integration/deepseek-provider.test.d.ts +1 -0
  262. package/dist/types/test/integration/glm-provider.test.d.ts +1 -0
  263. package/dist/types/test/integration/openai-provider.test copy.d.ts +1 -0
  264. package/dist/types/test/integration/openai-provider.test.d.ts +1 -0
  265. package/dist/types/test/integration/qwen-provider.d.ts +1 -0
  266. package/dist/types/test/integration/qwen-provider.test copy.d.ts +1 -0
  267. package/dist/types/test/integration/qwen-provider.test.d.ts +1 -0
  268. package/dist/types/test/integration/workflow.execution.test.d.ts +1 -0
  269. package/dist/types/test/integration/workflow.generation-and-execution.test.d.ts +1 -0
  270. package/dist/types/test/integration/workflow.generator.test.d.ts +1 -0
  271. package/dist/types/test/unit/action.test.d.ts +1 -0
  272. package/dist/types/test/unit/tool-registry.test.d.ts +1 -0
  273. package/dist/types/test/unit/workflow-parser.test.d.ts +1 -0
  274. package/dist/types/test/unit/workflow.test.d.ts +1 -0
  275. package/dist/universal_tools/human/text.d.ts +9 -0
  276. package/dist/web.cjs.js +117 -117
  277. package/dist/web.esm.js +117 -117
  278. package/package.json +106 -106
  279. package/dist/fellou/tools/index.d.ts +0 -2
  280. package/dist/types/framework.types.d.ts +0 -11
@@ -0,0 +1,364 @@
1
+ // src/models/action.ts
2
+ /**
3
+ * Special tool that allows LLM to write values to context
4
+ */
5
+ class WriteContextTool {
6
+ constructor() {
7
+ this.name = 'write_context';
8
+ this.description = 'Write a value to the workflow context. Use this to store intermediate results or outputs.';
9
+ this.input_schema = {
10
+ type: 'object',
11
+ properties: {
12
+ key: {
13
+ type: 'string',
14
+ description: 'The key to store the value under',
15
+ },
16
+ value: {
17
+ type: 'string',
18
+ description: 'The value to store (must be JSON stringified if object/array)',
19
+ },
20
+ },
21
+ required: ['key', 'value'],
22
+ };
23
+ }
24
+ async execute(context, params) {
25
+ const { key, value } = params;
26
+ try {
27
+ // Try to parse the value as JSON
28
+ const parsedValue = JSON.parse(value);
29
+ context.variables.set(key, parsedValue);
30
+ }
31
+ catch (_a) {
32
+ // If parsing fails, store as string
33
+ context.variables.set(key, value);
34
+ }
35
+ return { success: true, key, value };
36
+ }
37
+ }
38
+ function createReturnTool(outputSchema) {
39
+ return {
40
+ name: 'return_output',
41
+ description: 'Return the final output of this action. Use this to return a value matching the required output schema.',
42
+ input_schema: {
43
+ type: 'object',
44
+ properties: {
45
+ value: outputSchema || {
46
+ // Default to accepting any JSON value
47
+ type: ['string', 'number', 'boolean', 'object', 'null'],
48
+ description: 'The output value',
49
+ },
50
+ },
51
+ required: ['value'],
52
+ },
53
+ async execute(context, params) {
54
+ const { value } = params;
55
+ context.variables.set('__action_output', value);
56
+ return { returned: value };
57
+ },
58
+ };
59
+ }
60
+ export class ActionImpl {
61
+ constructor(type, // Only support prompt type
62
+ name, description, tools, llmProvider, llmConfig, config) {
63
+ this.type = type;
64
+ this.name = name;
65
+ this.description = description;
66
+ this.tools = tools;
67
+ this.llmProvider = llmProvider;
68
+ this.llmConfig = llmConfig;
69
+ this.maxRounds = 10; // Default max rounds
70
+ this.writeContextTool = new WriteContextTool();
71
+ this.tools = [...tools, this.writeContextTool];
72
+ if (config === null || config === void 0 ? void 0 : config.maxRounds) {
73
+ this.maxRounds = config.maxRounds;
74
+ }
75
+ }
76
+ async executeSingleRound(messages, params, toolMap, context) {
77
+ const roundMessages = [];
78
+ let hasToolUse = false;
79
+ let response = null;
80
+ // Buffer to collect into roundMessages
81
+ let assistantTextMessage = '';
82
+ let toolUseMessage = null;
83
+ let toolResultMessage = null;
84
+ // Track tool execution promise
85
+ let toolExecutionPromise = null;
86
+ const handler = {
87
+ onContent: (content) => {
88
+ if (content.trim()) {
89
+ assistantTextMessage += content;
90
+ }
91
+ },
92
+ onToolUse: async (toolCall) => {
93
+ console.log('Tool Call:', toolCall.name, toolCall.input);
94
+ hasToolUse = true;
95
+ const tool = toolMap.get(toolCall.name);
96
+ if (!tool) {
97
+ throw new Error(`Tool not found: ${toolCall.name}`);
98
+ }
99
+ toolUseMessage = {
100
+ role: 'assistant',
101
+ content: [
102
+ {
103
+ type: 'tool_use',
104
+ id: toolCall.id,
105
+ name: tool.name,
106
+ input: toolCall.input,
107
+ },
108
+ ],
109
+ };
110
+ // Store the promise of tool execution
111
+ toolExecutionPromise = (async () => {
112
+ try {
113
+ // beforeToolUse
114
+ context.__skip = false;
115
+ if (context.callback && context.callback.hooks.beforeToolUse) {
116
+ let modified_input = await context.callback.hooks.beforeToolUse(tool, context, toolCall.input);
117
+ if (modified_input) {
118
+ toolCall.input = modified_input;
119
+ }
120
+ }
121
+ if (context.__skip || context.__abort) {
122
+ toolResultMessage = {
123
+ role: 'user',
124
+ content: [
125
+ {
126
+ type: 'tool_result',
127
+ tool_use_id: toolCall.id,
128
+ content: 'skip',
129
+ },
130
+ ],
131
+ };
132
+ return;
133
+ }
134
+ // Execute the tool
135
+ let result = await tool.execute(context, toolCall.input);
136
+ // afterToolUse
137
+ if (context.callback && context.callback.hooks.afterToolUse) {
138
+ let modified_result = await context.callback.hooks.afterToolUse(tool, context, result);
139
+ if (modified_result) {
140
+ result = modified_result;
141
+ }
142
+ }
143
+ const resultMessage = {
144
+ role: 'user',
145
+ content: [
146
+ result.image && result.image.type
147
+ ? {
148
+ type: 'tool_result',
149
+ tool_use_id: toolCall.id,
150
+ content: result.text
151
+ ? [
152
+ { type: 'image', source: result.image },
153
+ { type: 'text', text: result.text },
154
+ ]
155
+ : [{ type: 'image', source: result.image }],
156
+ }
157
+ : {
158
+ type: 'tool_result',
159
+ tool_use_id: toolCall.id,
160
+ content: [{ type: 'text', text: JSON.stringify(result) }],
161
+ },
162
+ ],
163
+ };
164
+ toolResultMessage = resultMessage;
165
+ console.log('Tool Result:', result);
166
+ }
167
+ catch (err) {
168
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error occurred';
169
+ const errorResult = {
170
+ role: 'user',
171
+ content: [
172
+ {
173
+ type: 'tool_result',
174
+ tool_use_id: toolCall.id,
175
+ content: [{ type: 'text', text: `Error: ${errorMessage}` }],
176
+ is_error: true,
177
+ },
178
+ ],
179
+ };
180
+ toolResultMessage = errorResult;
181
+ console.error('Tool Error:', err);
182
+ }
183
+ })();
184
+ },
185
+ onComplete: (llmResponse) => {
186
+ response = llmResponse;
187
+ },
188
+ onError: (error) => {
189
+ console.error('Stream Error:', error);
190
+ },
191
+ };
192
+ this.handleHistoryImageMessages(messages);
193
+ // Wait for stream to complete
194
+ await this.llmProvider.generateStream(messages, params, handler);
195
+ // Wait for tool execution to complete if it was started
196
+ if (toolExecutionPromise) {
197
+ await toolExecutionPromise;
198
+ }
199
+ if (context.__abort) {
200
+ throw new Error('Abort');
201
+ }
202
+ // Add messages in the correct order after everything is complete
203
+ if (assistantTextMessage) {
204
+ roundMessages.push({ role: 'assistant', content: assistantTextMessage });
205
+ }
206
+ if (toolUseMessage) {
207
+ roundMessages.push(toolUseMessage);
208
+ }
209
+ if (toolResultMessage) {
210
+ roundMessages.push(toolResultMessage);
211
+ }
212
+ return { response, hasToolUse, roundMessages };
213
+ }
214
+ handleHistoryImageMessages(messages) {
215
+ // Remove all images of the historical tool call results, except for the last one.
216
+ let last_user = true;
217
+ for (let i = messages.length - 1; i >= 0; i--) {
218
+ const message = messages[i];
219
+ if (message.role === 'user') {
220
+ if (last_user) {
221
+ last_user = false;
222
+ continue;
223
+ }
224
+ if (message.content instanceof Array) {
225
+ let content = message.content;
226
+ for (let j = 0; j < content.length; j++) {
227
+ if (content[j].type === 'tool_result' && content[j].content instanceof Array) {
228
+ let tool_content = content[j].content;
229
+ if (tool_content.length > 0) {
230
+ for (let k = tool_content.length - 1; k >= 0; k--) {
231
+ if (tool_content[k].type === 'image') {
232
+ tool_content.splice(k, 1);
233
+ }
234
+ }
235
+ }
236
+ else if (tool_content[0].type === 'image') {
237
+ tool_content = [{ type: 'text', text: 'ok' }];
238
+ }
239
+ }
240
+ }
241
+ }
242
+ }
243
+ }
244
+ }
245
+ async execute(input, context, outputSchema) {
246
+ var _a;
247
+ // Create return tool with output schema
248
+ const returnTool = createReturnTool(outputSchema);
249
+ // Create tool map combining context tools, action tools, and return tool
250
+ const toolMap = new Map();
251
+ this.tools.forEach((tool) => toolMap.set(tool.name, tool));
252
+ (_a = context.tools) === null || _a === void 0 ? void 0 : _a.forEach((tool) => toolMap.set(tool.name, tool));
253
+ toolMap.set(returnTool.name, returnTool);
254
+ // Prepare initial messages
255
+ const messages = [
256
+ { role: 'system', content: this.formatSystemPrompt() },
257
+ { role: 'user', content: this.formatUserPrompt(context, input) },
258
+ ];
259
+ console.log('Starting LLM conversation...');
260
+ console.log('Initial messages:', messages);
261
+ console.log('Output schema:', outputSchema);
262
+ // Configure tool parameters
263
+ const params = {
264
+ ...this.llmConfig,
265
+ tools: Array.from(toolMap.values()).map((tool) => ({
266
+ name: tool.name,
267
+ description: tool.description,
268
+ input_schema: tool.input_schema,
269
+ })),
270
+ };
271
+ let roundCount = 0;
272
+ let lastResponse = null;
273
+ while (roundCount < this.maxRounds) {
274
+ roundCount++;
275
+ console.log(`Starting round ${roundCount} of ${this.maxRounds}`);
276
+ console.log('Current conversation status:', JSON.stringify(messages, null, 2));
277
+ const { response, hasToolUse, roundMessages } = await this.executeSingleRound(messages, params, toolMap, context);
278
+ lastResponse = response;
279
+ // Add round messages to conversation history
280
+ messages.push(...roundMessages);
281
+ // Check termination conditions
282
+ if (!hasToolUse && response) {
283
+ // LLM sent a message without using tools - request explicit return
284
+ console.log('No tool use detected, requesting explicit return');
285
+ console.log('Response:', response);
286
+ const returnOnlyParams = {
287
+ ...params,
288
+ tools: [
289
+ {
290
+ name: returnTool.name,
291
+ description: returnTool.description,
292
+ input_schema: returnTool.input_schema,
293
+ },
294
+ ],
295
+ };
296
+ messages.push({
297
+ role: 'user',
298
+ content: 'Please process the above information and return a final result using the return_output tool.',
299
+ });
300
+ const { roundMessages: finalRoundMessages } = await this.executeSingleRound(messages, returnOnlyParams, new Map([[returnTool.name, returnTool]]), context);
301
+ messages.push(...finalRoundMessages);
302
+ break;
303
+ }
304
+ if (response === null || response === void 0 ? void 0 : response.toolCalls.some((call) => call.name === 'return_output')) {
305
+ console.log('Task completed with return_output tool');
306
+ break;
307
+ }
308
+ // If this is the last round, force an explicit return
309
+ if (roundCount === this.maxRounds) {
310
+ console.log('Max rounds reached, requesting explicit return');
311
+ const returnOnlyParams = {
312
+ ...params,
313
+ tools: [
314
+ {
315
+ name: returnTool.name,
316
+ description: returnTool.description,
317
+ input_schema: returnTool.input_schema,
318
+ },
319
+ ],
320
+ };
321
+ messages.push({
322
+ role: 'user',
323
+ content: 'Maximum number of steps reached. Please return the best result possible with the return_output tool.',
324
+ });
325
+ const { roundMessages: finalRoundMessages } = await this.executeSingleRound(messages, returnOnlyParams, new Map([[returnTool.name, returnTool]]), context);
326
+ messages.push(...finalRoundMessages);
327
+ }
328
+ }
329
+ // Get and clean up output value
330
+ const output = context.variables.get('__action_output');
331
+ context.variables.delete('__action_output');
332
+ if (output === undefined) {
333
+ console.warn('Action completed without returning a value');
334
+ return {};
335
+ }
336
+ return output;
337
+ }
338
+ formatSystemPrompt() {
339
+ return `You are a task executor. You need to complete the task specified by the user, using the tools provided. When you need to store results or outputs, use the write_context tool. When you are ready to return the final output, use the return_output tool.
340
+
341
+ Remember to:
342
+ 1. Use tools when needed to accomplish the task
343
+ 2. Store important results using write_context, including intermediate and final results
344
+ 3. Think step by step about what needs to be done`;
345
+ }
346
+ formatUserPrompt(context, input) {
347
+ // Create a description of the current context
348
+ const contextDescription = Array.from(context.variables.entries())
349
+ .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
350
+ .join('\n');
351
+ return `You are executing the action "${this.name}". The specific instructions are: "${this.description}". You have access to the following context:
352
+
353
+ ${contextDescription || 'No context variables set'}
354
+
355
+ You have been provided with the following input:
356
+ ${(typeof input === 'string' ? input : JSON.stringify(input, null, 2)) || 'No additional input provided'}
357
+ `;
358
+ }
359
+ // Static factory method
360
+ static createPromptAction(name, description, tools, llmProvider, llmConfig) {
361
+ return new ActionImpl('prompt', name, description, tools, llmProvider, llmConfig);
362
+ }
363
+ }
364
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/models/action.ts"],"names":[],"mappings":"AAAA,uBAAuB;AAYvB;;GAEG;AACH,MAAM,gBAAgB;IAAtB;QACE,SAAI,GAAG,eAAe,CAAC;QACvB,gBAAW,GACT,2FAA2F,CAAC;QAC9F,iBAAY,GAAG;YACb,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kCAAkC;iBAChD;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+DAA+D;iBAC7E;aACF;YACD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;SACZ,CAAC;IAcnB,CAAC;IAZC,KAAK,CAAC,OAAO,CAAC,OAAyB,EAAE,MAAe;QACtD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAwC,CAAC;QAChE,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC1C,CAAC;QAAC,WAAM,CAAC;YACP,oCAAoC;YACpC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,YAAqB;IAC7C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,yGAAyG;QAC3G,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,YAAY,IAAI;oBACrB,sCAAsC;oBACtC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;oBACvD,WAAW,EAAE,kBAAkB;iBAChC;aACS;YACZ,QAAQ,EAAE,CAAC,OAAO,CAAC;SACL;QAEhB,KAAK,CAAC,OAAO,CAAC,OAAyB,EAAE,MAAe;YACtD,MAAM,EAAE,KAAK,EAAE,GAAG,MAA4B,CAAC;YAC/C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,UAAU;IAIrB,YACS,IAAc,EAAE,2BAA2B;IAC3C,IAAY,EACZ,WAAmB,EACnB,KAAuB,EACtB,WAAwB,EACxB,SAAyB,EACjC,MAA+B;QANxB,SAAI,GAAJ,IAAI,CAAU;QACd,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,UAAK,GAAL,KAAK,CAAkB;QACtB,gBAAW,GAAX,WAAW,CAAa;QACxB,cAAS,GAAT,SAAS,CAAgB;QATlB,cAAS,GAAW,EAAE,CAAC,CAAC,qBAAqB;QAY5D,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/C,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACpC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,QAAmB,EACnB,MAAqB,EACrB,OAAoC,EACpC,OAAyB;QAMzB,MAAM,aAAa,GAAc,EAAE,CAAC;QACpC,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,QAAQ,GAAuB,IAAI,CAAC;QAExC,uCAAuC;QACvC,IAAI,oBAAoB,GAAG,EAAE,CAAC;QAC9B,IAAI,cAAc,GAAmB,IAAI,CAAC;QAC1C,IAAI,iBAAiB,GAAmB,IAAI,CAAC;QAE7C,+BAA+B;QAC/B,IAAI,oBAAoB,GAAyB,IAAI,CAAC;QAEtD,MAAM,OAAO,GAAqB;YAChC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACrB,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnB,oBAAoB,IAAI,OAAO,CAAC;gBAClC,CAAC;YACH,CAAC;YACD,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC5B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACzD,UAAU,GAAG,IAAI,CAAC;gBAElB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtD,CAAC;gBAED,cAAc,GAAG;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,QAAQ,CAAC,EAAE;4BACf,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,KAAK,EAAE,QAAQ,CAAC,KAAK;yBACtB;qBACF;iBACF,CAAC;gBAEF,sCAAsC;gBACtC,oBAAoB,GAAG,CAAC,KAAK,IAAI,EAAE;oBACjC,IAAI,CAAC;wBACH,gBAAgB;wBAChB,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;wBACvB,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;4BAC7D,IAAI,cAAc,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAC7D,IAAI,EACJ,OAAO,EACP,QAAQ,CAAC,KAAK,CACf,CAAC;4BACF,IAAI,cAAc,EAAE,CAAC;gCACnB,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC;4BAClC,CAAC;wBACH,CAAC;wBACD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;4BACtC,iBAAiB,GAAG;gCAClB,IAAI,EAAE,MAAM;gCACZ,OAAO,EAAE;oCACP;wCACE,IAAI,EAAE,aAAa;wCACnB,WAAW,EAAE,QAAQ,CAAC,EAAE;wCACxB,OAAO,EAAE,MAAM;qCAChB;iCACF;6BACF,CAAC;4BACF,OAAO;wBACT,CAAC;wBACD,mBAAmB;wBACnB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACzD,eAAe;wBACf,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;4BAC5D,IAAI,eAAe,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAC7D,IAAI,EACJ,OAAO,EACP,MAAM,CACP,CAAC;4BACF,IAAI,eAAe,EAAE,CAAC;gCACpB,MAAM,GAAG,eAAe,CAAC;4BAC3B,CAAC;wBACH,CAAC;wBACD,MAAM,aAAa,GAAY;4BAC7B,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI;oCAC/B,CAAC,CAAC;wCACE,IAAI,EAAE,aAAa;wCACnB,WAAW,EAAE,QAAQ,CAAC,EAAE;wCACxB,OAAO,EAAE,MAAM,CAAC,IAAI;4CAClB,CAAC,CAAC;gDACE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE;gDACvC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;6CACpC;4CACH,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;qCAC9C;oCACH,CAAC,CAAC;wCACE,IAAI,EAAE,aAAa;wCACnB,WAAW,EAAE,QAAQ,CAAC,EAAE;wCACxB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;qCAC1D;6BACN;yBACF,CAAC;wBACF,iBAAiB,GAAG,aAAa,CAAC;wBAClC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;oBACtC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;wBACnF,MAAM,WAAW,GAAY;4BAC3B,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,aAAa;oCACnB,WAAW,EAAE,QAAQ,CAAC,EAAE;oCACxB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,YAAY,EAAE,EAAE,CAAC;oCAC3D,QAAQ,EAAE,IAAI;iCACf;6BACF;yBACF,CAAC;wBACF,iBAAiB,GAAG,WAAW,CAAC;wBAChC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,CAAC;YACD,UAAU,EAAE,CAAC,WAAW,EAAE,EAAE;gBAC1B,QAAQ,GAAG,WAAW,CAAC;YACzB,CAAC;YACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;SACF,CAAC;QAEF,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAE1C,8BAA8B;QAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAEjE,wDAAwD;QACxD,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,oBAAoB,CAAC;QAC7B,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,iEAAiE;QACjE,IAAI,oBAAoB,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IACjD,CAAC;IAEO,0BAA0B,CAAC,QAAmB;QACpD,kFAAkF;QAClF,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5B,IAAI,SAAS,EAAE,CAAC;oBACd,SAAS,GAAG,KAAK,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,IAAI,OAAO,CAAC,OAAO,YAAY,KAAK,EAAE,CAAC;oBACrC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAgB,CAAC;oBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACxC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,YAAY,KAAK,EAAE,CAAC;4BAC7E,IAAI,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAgB,CAAC;4BAC/C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC5B,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oCAClD,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wCACrC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oCAC5B,CAAC;gCACH,CAAC;4BACH,CAAC;iCAAM,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gCAC5C,YAAY,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;4BAChD,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAAc,EACd,OAAyB,EACzB,YAAsB;;QAEtB,wCAAwC;QACxC,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAElD,yEAAyE;QACzE,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3D,MAAA,OAAO,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEzC,2BAA2B;QAC3B,MAAM,QAAQ,GAAc;YAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;SACjE,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAE5C,4BAA4B;QAC5B,MAAM,MAAM,GAAkB;YAC5B,GAAG,IAAI,CAAC,SAAS;YACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACjD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC,CAAC,CAAqB;SACxB,CAAC;QAEF,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,YAAY,GAAuB,IAAI,CAAC;QAE5C,OAAO,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAEjE,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/E,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC3E,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,CACR,CAAC;YAEF,YAAY,GAAG,QAAQ,CAAC;YAExB,6CAA6C;YAC7C,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YAEhC,+BAA+B;YAC/B,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;gBAC5B,mEAAmE;gBACnE,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACnC,MAAM,gBAAgB,GAAG;oBACvB,GAAG,MAAM;oBACT,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,UAAU,CAAC,IAAI;4BACrB,WAAW,EAAE,UAAU,CAAC,WAAW;4BACnC,YAAY,EAAE,UAAU,CAAC,YAAY;yBACtC;qBACF;iBACe,CAAC;gBAEnB,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EACL,8FAA8F;iBACjG,CAAC,CAAC;gBAEH,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CACzE,QAAQ,EACR,gBAAgB,EAChB,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACxC,OAAO,CACR,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;gBACrC,MAAM;YACR,CAAC;YAED,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,CAAC;gBACtE,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;gBACtD,MAAM;YACR,CAAC;YAED,sDAAsD;YACtD,IAAI,UAAU,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;gBAC9D,MAAM,gBAAgB,GAAG;oBACvB,GAAG,MAAM;oBACT,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,UAAU,CAAC,IAAI;4BACrB,WAAW,EAAE,UAAU,CAAC,WAAW;4BACnC,YAAY,EAAE,UAAU,CAAC,YAAY;yBACtC;qBACF;iBACe,CAAC;gBAEnB,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EACL,sGAAsG;iBACzG,CAAC,CAAC;gBAEH,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CACzE,QAAQ,EACR,gBAAgB,EAChB,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACxC,OAAO,CACR,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACxD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAE5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC3D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,kBAAkB;QACxB,OAAO;;;;;sDAK2C,CAAC;IACrD,CAAC;IAEO,gBAAgB,CAAC,OAAyB,EAAE,KAAc;QAChE,8CAA8C;QAC9C,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;aAC/D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;aACzD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,iCAAiC,IAAI,CAAC,IAAI,sCAAsC,IAAI,CAAC,WAAW;;MAErG,kBAAkB,IAAI,0BAA0B;;;MAGhD,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,8BAA8B;KACvG,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,MAAM,CAAC,kBAAkB,CACvB,IAAY,EACZ,WAAmB,EACnB,KAAuB,EACvB,WAAwB,EACxB,SAAyB;QAEzB,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACpF,CAAC;CACF"}
@@ -0,0 +1,120 @@
1
+ export class WorkflowImpl {
2
+ constructor(id, name, description, nodes = [], variables = new Map(), llmProvider) {
3
+ this.id = id;
4
+ this.name = name;
5
+ this.description = description;
6
+ this.nodes = nodes;
7
+ this.variables = variables;
8
+ this.llmProvider = llmProvider;
9
+ }
10
+ async execute(callback) {
11
+ var _a, _b, _c, _d;
12
+ if (!this.validateDAG()) {
13
+ throw new Error("Invalid workflow: Contains circular dependencies");
14
+ }
15
+ this.abort = false;
16
+ callback && await ((_b = (_a = callback.hooks).beforeWorkflow) === null || _b === void 0 ? void 0 : _b.call(_a, this));
17
+ const executed = new Set();
18
+ const executing = new Set();
19
+ const executeNode = async (nodeId) => {
20
+ var _a, _b, _c, _d, _e;
21
+ if (this.abort) {
22
+ throw new Error("Abort");
23
+ }
24
+ if (executed.has(nodeId)) {
25
+ return;
26
+ }
27
+ if (executing.has(nodeId)) {
28
+ throw new Error(`Circular dependency detected at node: ${nodeId}`);
29
+ }
30
+ const node = this.getNode(nodeId);
31
+ // Execute the node's action
32
+ const context = {
33
+ __skip: false,
34
+ __abort: false,
35
+ variables: this.variables,
36
+ llmProvider: this.llmProvider,
37
+ tools: new Map(node.action.tools.map(tool => [tool.name, tool])),
38
+ callback,
39
+ next: () => context.__skip = true,
40
+ abortAll: () => this.abort = context.__abort = true,
41
+ };
42
+ callback && await ((_b = (_a = callback.hooks).beforeSubtask) === null || _b === void 0 ? void 0 : _b.call(_a, node, context));
43
+ if (context.__abort) {
44
+ throw new Error("Abort");
45
+ }
46
+ else if (context.__skip) {
47
+ return;
48
+ }
49
+ executing.add(nodeId);
50
+ // Execute dependencies first
51
+ for (const depId of node.dependencies) {
52
+ await executeNode(depId);
53
+ }
54
+ // Prepare input by gathering outputs from dependencies
55
+ const input = {};
56
+ for (const depId of node.dependencies) {
57
+ const depNode = this.getNode(depId);
58
+ input[depId] = depNode.output.value;
59
+ }
60
+ node.input.value = input;
61
+ node.output.value = await node.action.execute(node.input.value, context);
62
+ executing.delete(nodeId);
63
+ executed.add(nodeId);
64
+ callback && await ((_d = (_c = callback.hooks).afterSubtask) === null || _d === void 0 ? void 0 : _d.call(_c, node, context, (_e = node.output) === null || _e === void 0 ? void 0 : _e.value));
65
+ };
66
+ // Execute all terminal nodes (nodes with no dependents)
67
+ const terminalNodes = this.nodes.filter(node => !this.nodes.some(n => n.dependencies.includes(node.id)));
68
+ await Promise.all(terminalNodes.map(node => executeNode(node.id)));
69
+ callback && await ((_d = (_c = callback.hooks).afterWorkflow) === null || _d === void 0 ? void 0 : _d.call(_c, this, this.variables));
70
+ }
71
+ addNode(node) {
72
+ if (this.nodes.some(n => n.id === node.id)) {
73
+ throw new Error(`Node with id ${node.id} already exists`);
74
+ }
75
+ this.nodes.push(node);
76
+ }
77
+ removeNode(nodeId) {
78
+ const index = this.nodes.findIndex(n => n.id === nodeId);
79
+ if (index === -1) {
80
+ throw new Error(`Node with id ${nodeId} not found`);
81
+ }
82
+ // Check if any nodes depend on this one
83
+ const dependentNodes = this.nodes.filter(n => n.dependencies.includes(nodeId));
84
+ if (dependentNodes.length > 0) {
85
+ throw new Error(`Cannot remove node ${nodeId}: Nodes ${dependentNodes.map(n => n.id).join(", ")} depend on it`);
86
+ }
87
+ this.nodes.splice(index, 1);
88
+ }
89
+ getNode(nodeId) {
90
+ const node = this.nodes.find(n => n.id === nodeId);
91
+ if (!node) {
92
+ throw new Error(`Node with id ${nodeId} not found`);
93
+ }
94
+ return node;
95
+ }
96
+ validateDAG() {
97
+ const visited = new Set();
98
+ const recursionStack = new Set();
99
+ const hasCycle = (nodeId) => {
100
+ if (recursionStack.has(nodeId)) {
101
+ return true;
102
+ }
103
+ if (visited.has(nodeId)) {
104
+ return false;
105
+ }
106
+ visited.add(nodeId);
107
+ recursionStack.add(nodeId);
108
+ const node = this.getNode(nodeId);
109
+ for (const depId of node.dependencies) {
110
+ if (hasCycle(depId)) {
111
+ return true;
112
+ }
113
+ }
114
+ recursionStack.delete(nodeId);
115
+ return false;
116
+ };
117
+ return !this.nodes.some(node => hasCycle(node.id));
118
+ }
119
+ }
120
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/models/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import * as tools from './tools';
2
+ export function loadTools() {
3
+ let toolsMap = new Map();
4
+ for (const key in tools) {
5
+ let tool = tools[key];
6
+ if (typeof tool === 'function' && tool.prototype && 'execute' in tool.prototype) {
7
+ try {
8
+ let instance = new tool();
9
+ toolsMap.set(instance.name || key, instance);
10
+ }
11
+ catch (e) {
12
+ console.error(`Failed to instantiate ${key}:`, e);
13
+ }
14
+ }
15
+ }
16
+ return toolsMap;
17
+ }
18
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/nodejs/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAGjC,MAAM,UAAU,SAAS;IACvB,IAAI,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,IAAI,GAAI,KAAa,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAChF,IAAI,CAAC;gBACH,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC1B,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // core
2
+ export * from './core';
3
+ // tools
4
+ import * as tools from './tools';
5
+ export { tools };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nodejs/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,cAAc,QAAQ,CAAC;AAEvB,QAAQ;AACR,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,CAAC"}