@nodetool-ai/agents 0.7.0-rc.11

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 (281) hide show
  1. package/dist/agent-executor.d.ts +62 -0
  2. package/dist/agent-executor.d.ts.map +1 -0
  3. package/dist/agent-executor.js +324 -0
  4. package/dist/agent-executor.js.map +1 -0
  5. package/dist/agent-step-executor.d.ts +28 -0
  6. package/dist/agent-step-executor.d.ts.map +1 -0
  7. package/dist/agent-step-executor.js +99 -0
  8. package/dist/agent-step-executor.js.map +1 -0
  9. package/dist/agent-workflow-runner.d.ts +31 -0
  10. package/dist/agent-workflow-runner.d.ts.map +1 -0
  11. package/dist/agent-workflow-runner.js +124 -0
  12. package/dist/agent-workflow-runner.js.map +1 -0
  13. package/dist/agent.d.ts +115 -0
  14. package/dist/agent.d.ts.map +1 -0
  15. package/dist/agent.js +587 -0
  16. package/dist/agent.js.map +1 -0
  17. package/dist/base-agent.d.ts +42 -0
  18. package/dist/base-agent.d.ts.map +1 -0
  19. package/dist/base-agent.js +29 -0
  20. package/dist/base-agent.js.map +1 -0
  21. package/dist/constants.d.ts +8 -0
  22. package/dist/constants.d.ts.map +1 -0
  23. package/dist/constants.js +8 -0
  24. package/dist/constants.js.map +1 -0
  25. package/dist/graph-builder.d.ts +49 -0
  26. package/dist/graph-builder.d.ts.map +1 -0
  27. package/dist/graph-builder.js +206 -0
  28. package/dist/graph-builder.js.map +1 -0
  29. package/dist/graph-planner.d.ts +56 -0
  30. package/dist/graph-planner.d.ts.map +1 -0
  31. package/dist/graph-planner.js +311 -0
  32. package/dist/graph-planner.js.map +1 -0
  33. package/dist/index.d.ts +79 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +81 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/js-sandbox.d.ts +84 -0
  38. package/dist/js-sandbox.d.ts.map +1 -0
  39. package/dist/js-sandbox.js +654 -0
  40. package/dist/js-sandbox.js.map +1 -0
  41. package/dist/multi-mode-agent.d.ts +86 -0
  42. package/dist/multi-mode-agent.d.ts.map +1 -0
  43. package/dist/multi-mode-agent.js +476 -0
  44. package/dist/multi-mode-agent.js.map +1 -0
  45. package/dist/output-format.d.ts +10 -0
  46. package/dist/output-format.d.ts.map +1 -0
  47. package/dist/output-format.js +17 -0
  48. package/dist/output-format.js.map +1 -0
  49. package/dist/parallel-task-executor.d.ts +87 -0
  50. package/dist/parallel-task-executor.d.ts.map +1 -0
  51. package/dist/parallel-task-executor.js +332 -0
  52. package/dist/parallel-task-executor.js.map +1 -0
  53. package/dist/prompts/graph-planner-prompt.d.ts +48 -0
  54. package/dist/prompts/graph-planner-prompt.d.ts.map +1 -0
  55. package/dist/prompts/graph-planner-prompt.js +180 -0
  56. package/dist/prompts/graph-planner-prompt.js.map +1 -0
  57. package/dist/reject-agentic-provider.d.ts +21 -0
  58. package/dist/reject-agentic-provider.d.ts.map +1 -0
  59. package/dist/reject-agentic-provider.js +32 -0
  60. package/dist/reject-agentic-provider.js.map +1 -0
  61. package/dist/simple-agent.d.ts +29 -0
  62. package/dist/simple-agent.d.ts.map +1 -0
  63. package/dist/simple-agent.js +54 -0
  64. package/dist/simple-agent.js.map +1 -0
  65. package/dist/step-executor.d.ts +162 -0
  66. package/dist/step-executor.d.ts.map +1 -0
  67. package/dist/step-executor.js +1114 -0
  68. package/dist/step-executor.js.map +1 -0
  69. package/dist/sub-agent-planner.d.ts +33 -0
  70. package/dist/sub-agent-planner.d.ts.map +1 -0
  71. package/dist/sub-agent-planner.js +203 -0
  72. package/dist/sub-agent-planner.js.map +1 -0
  73. package/dist/task-executor.d.ts +89 -0
  74. package/dist/task-executor.d.ts.map +1 -0
  75. package/dist/task-executor.js +359 -0
  76. package/dist/task-executor.js.map +1 -0
  77. package/dist/task-planner.d.ts +44 -0
  78. package/dist/task-planner.d.ts.map +1 -0
  79. package/dist/task-planner.js +532 -0
  80. package/dist/task-planner.js.map +1 -0
  81. package/dist/team/db-task-board.d.ts +54 -0
  82. package/dist/team/db-task-board.d.ts.map +1 -0
  83. package/dist/team/db-task-board.js +361 -0
  84. package/dist/team/db-task-board.js.map +1 -0
  85. package/dist/team/edge-message-bus.d.ts +51 -0
  86. package/dist/team/edge-message-bus.d.ts.map +1 -0
  87. package/dist/team/edge-message-bus.js +169 -0
  88. package/dist/team/edge-message-bus.js.map +1 -0
  89. package/dist/team/edge-task-board.d.ts +77 -0
  90. package/dist/team/edge-task-board.d.ts.map +1 -0
  91. package/dist/team/edge-task-board.js +140 -0
  92. package/dist/team/edge-task-board.js.map +1 -0
  93. package/dist/team/index.d.ts +16 -0
  94. package/dist/team/index.d.ts.map +1 -0
  95. package/dist/team/index.js +17 -0
  96. package/dist/team/index.js.map +1 -0
  97. package/dist/team/message-bus.d.ts +58 -0
  98. package/dist/team/message-bus.d.ts.map +1 -0
  99. package/dist/team/message-bus.js +151 -0
  100. package/dist/team/message-bus.js.map +1 -0
  101. package/dist/team/task-board.d.ts +106 -0
  102. package/dist/team/task-board.d.ts.map +1 -0
  103. package/dist/team/task-board.js +370 -0
  104. package/dist/team/task-board.js.map +1 -0
  105. package/dist/team/team-executor.d.ts +72 -0
  106. package/dist/team/team-executor.d.ts.map +1 -0
  107. package/dist/team/team-executor.js +466 -0
  108. package/dist/team/team-executor.js.map +1 -0
  109. package/dist/team/team-tools.d.ts +252 -0
  110. package/dist/team/team-tools.d.ts.map +1 -0
  111. package/dist/team/team-tools.js +412 -0
  112. package/dist/team/team-tools.js.map +1 -0
  113. package/dist/team/types.d.ts +198 -0
  114. package/dist/team/types.d.ts.map +1 -0
  115. package/dist/team/types.js +8 -0
  116. package/dist/team/types.js.map +1 -0
  117. package/dist/tools/add-edge-tool.d.ts +18 -0
  118. package/dist/tools/add-edge-tool.d.ts.map +1 -0
  119. package/dist/tools/add-edge-tool.js +92 -0
  120. package/dist/tools/add-edge-tool.js.map +1 -0
  121. package/dist/tools/add-node-tool.d.ts +22 -0
  122. package/dist/tools/add-node-tool.d.ts.map +1 -0
  123. package/dist/tools/add-node-tool.js +128 -0
  124. package/dist/tools/add-node-tool.js.map +1 -0
  125. package/dist/tools/asset-tools.d.ts +58 -0
  126. package/dist/tools/asset-tools.d.ts.map +1 -0
  127. package/dist/tools/asset-tools.js +191 -0
  128. package/dist/tools/asset-tools.js.map +1 -0
  129. package/dist/tools/base-tool.d.ts +25 -0
  130. package/dist/tools/base-tool.d.ts.map +1 -0
  131. package/dist/tools/base-tool.js +24 -0
  132. package/dist/tools/base-tool.js.map +1 -0
  133. package/dist/tools/browser-tools.d.ts +32 -0
  134. package/dist/tools/browser-tools.d.ts.map +1 -0
  135. package/dist/tools/browser-tools.js +208 -0
  136. package/dist/tools/browser-tools.js.map +1 -0
  137. package/dist/tools/calculator-tool.d.ts +24 -0
  138. package/dist/tools/calculator-tool.d.ts.map +1 -0
  139. package/dist/tools/calculator-tool.js +64 -0
  140. package/dist/tools/calculator-tool.js.map +1 -0
  141. package/dist/tools/claude-code-tools.d.ts +96 -0
  142. package/dist/tools/claude-code-tools.d.ts.map +1 -0
  143. package/dist/tools/claude-code-tools.js +463 -0
  144. package/dist/tools/claude-code-tools.js.map +1 -0
  145. package/dist/tools/code-tools.d.ts +26 -0
  146. package/dist/tools/code-tools.d.ts.map +1 -0
  147. package/dist/tools/code-tools.js +82 -0
  148. package/dist/tools/code-tools.js.map +1 -0
  149. package/dist/tools/control-tool.d.ts +47 -0
  150. package/dist/tools/control-tool.d.ts.map +1 -0
  151. package/dist/tools/control-tool.js +101 -0
  152. package/dist/tools/control-tool.js.map +1 -0
  153. package/dist/tools/create-plan-tool.d.ts +29 -0
  154. package/dist/tools/create-plan-tool.d.ts.map +1 -0
  155. package/dist/tools/create-plan-tool.js +355 -0
  156. package/dist/tools/create-plan-tool.js.map +1 -0
  157. package/dist/tools/create-task-tool.d.ts +28 -0
  158. package/dist/tools/create-task-tool.d.ts.map +1 -0
  159. package/dist/tools/create-task-tool.js +254 -0
  160. package/dist/tools/create-task-tool.js.map +1 -0
  161. package/dist/tools/dataseo-tools.d.ts +38 -0
  162. package/dist/tools/dataseo-tools.d.ts.map +1 -0
  163. package/dist/tools/dataseo-tools.js +329 -0
  164. package/dist/tools/dataseo-tools.js.map +1 -0
  165. package/dist/tools/email-tools.d.ts +76 -0
  166. package/dist/tools/email-tools.d.ts.map +1 -0
  167. package/dist/tools/email-tools.js +259 -0
  168. package/dist/tools/email-tools.js.map +1 -0
  169. package/dist/tools/filesystem-tools.d.ts +77 -0
  170. package/dist/tools/filesystem-tools.d.ts.map +1 -0
  171. package/dist/tools/filesystem-tools.js +334 -0
  172. package/dist/tools/filesystem-tools.js.map +1 -0
  173. package/dist/tools/find-model-tool.d.ts +25 -0
  174. package/dist/tools/find-model-tool.d.ts.map +1 -0
  175. package/dist/tools/find-model-tool.js +236 -0
  176. package/dist/tools/find-model-tool.js.map +1 -0
  177. package/dist/tools/finish-graph-tool.d.ts +23 -0
  178. package/dist/tools/finish-graph-tool.d.ts.map +1 -0
  179. package/dist/tools/finish-graph-tool.js +46 -0
  180. package/dist/tools/finish-graph-tool.js.map +1 -0
  181. package/dist/tools/finish-step-tool.d.ts +16 -0
  182. package/dist/tools/finish-step-tool.d.ts.map +1 -0
  183. package/dist/tools/finish-step-tool.js +68 -0
  184. package/dist/tools/finish-step-tool.js.map +1 -0
  185. package/dist/tools/google-tools.d.ts +44 -0
  186. package/dist/tools/google-tools.d.ts.map +1 -0
  187. package/dist/tools/google-tools.js +176 -0
  188. package/dist/tools/google-tools.js.map +1 -0
  189. package/dist/tools/http-tools.d.ts +56 -0
  190. package/dist/tools/http-tools.d.ts.map +1 -0
  191. package/dist/tools/http-tools.js +180 -0
  192. package/dist/tools/http-tools.js.map +1 -0
  193. package/dist/tools/js-code-tool.d.ts +30 -0
  194. package/dist/tools/js-code-tool.d.ts.map +1 -0
  195. package/dist/tools/js-code-tool.js +98 -0
  196. package/dist/tools/js-code-tool.js.map +1 -0
  197. package/dist/tools/local-get-node-info-tool.d.ts +19 -0
  198. package/dist/tools/local-get-node-info-tool.d.ts.map +1 -0
  199. package/dist/tools/local-get-node-info-tool.js +75 -0
  200. package/dist/tools/local-get-node-info-tool.js.map +1 -0
  201. package/dist/tools/local-list-nodes-tool.d.ts +19 -0
  202. package/dist/tools/local-list-nodes-tool.d.ts.map +1 -0
  203. package/dist/tools/local-list-nodes-tool.js +69 -0
  204. package/dist/tools/local-list-nodes-tool.js.map +1 -0
  205. package/dist/tools/local-search-nodes-tool.d.ts +21 -0
  206. package/dist/tools/local-search-nodes-tool.d.ts.map +1 -0
  207. package/dist/tools/local-search-nodes-tool.js +111 -0
  208. package/dist/tools/local-search-nodes-tool.js.map +1 -0
  209. package/dist/tools/math-tools.d.ts +156 -0
  210. package/dist/tools/math-tools.d.ts.map +1 -0
  211. package/dist/tools/math-tools.js +422 -0
  212. package/dist/tools/math-tools.js.map +1 -0
  213. package/dist/tools/mcp-tools.d.ts +413 -0
  214. package/dist/tools/mcp-tools.d.ts.map +1 -0
  215. package/dist/tools/mcp-tools.js +618 -0
  216. package/dist/tools/mcp-tools.js.map +1 -0
  217. package/dist/tools/media-tools.d.ts +277 -0
  218. package/dist/tools/media-tools.d.ts.map +1 -0
  219. package/dist/tools/media-tools.js +682 -0
  220. package/dist/tools/media-tools.js.map +1 -0
  221. package/dist/tools/model-tools.d.ts +25 -0
  222. package/dist/tools/model-tools.d.ts.map +1 -0
  223. package/dist/tools/model-tools.js +48 -0
  224. package/dist/tools/model-tools.js.map +1 -0
  225. package/dist/tools/openai-tools.d.ts +73 -0
  226. package/dist/tools/openai-tools.d.ts.map +1 -0
  227. package/dist/tools/openai-tools.js +193 -0
  228. package/dist/tools/openai-tools.js.map +1 -0
  229. package/dist/tools/pdf-tools.d.ts +152 -0
  230. package/dist/tools/pdf-tools.d.ts.map +1 -0
  231. package/dist/tools/pdf-tools.js +339 -0
  232. package/dist/tools/pdf-tools.js.map +1 -0
  233. package/dist/tools/plan-builder-tools.d.ts +72 -0
  234. package/dist/tools/plan-builder-tools.d.ts.map +1 -0
  235. package/dist/tools/plan-builder-tools.js +438 -0
  236. package/dist/tools/plan-builder-tools.js.map +1 -0
  237. package/dist/tools/search-tools.d.ts +39 -0
  238. package/dist/tools/search-tools.d.ts.map +1 -0
  239. package/dist/tools/search-tools.js +218 -0
  240. package/dist/tools/search-tools.js.map +1 -0
  241. package/dist/tools/serp-providers/dataforseo-provider.d.ts +14 -0
  242. package/dist/tools/serp-providers/dataforseo-provider.d.ts.map +1 -0
  243. package/dist/tools/serp-providers/dataforseo-provider.js +114 -0
  244. package/dist/tools/serp-providers/dataforseo-provider.js.map +1 -0
  245. package/dist/tools/serp-providers/index.d.ts +35 -0
  246. package/dist/tools/serp-providers/index.d.ts.map +1 -0
  247. package/dist/tools/serp-providers/index.js +14 -0
  248. package/dist/tools/serp-providers/index.js.map +1 -0
  249. package/dist/tools/serp-providers/serpapi-provider.d.ts +18 -0
  250. package/dist/tools/serp-providers/serpapi-provider.d.ts.map +1 -0
  251. package/dist/tools/serp-providers/serpapi-provider.js +66 -0
  252. package/dist/tools/serp-providers/serpapi-provider.js.map +1 -0
  253. package/dist/tools/tool-registry.d.ts +9 -0
  254. package/dist/tools/tool-registry.d.ts.map +1 -0
  255. package/dist/tools/tool-registry.js +17 -0
  256. package/dist/tools/tool-registry.js.map +1 -0
  257. package/dist/tools/vector-tools.d.ts +224 -0
  258. package/dist/tools/vector-tools.d.ts.map +1 -0
  259. package/dist/tools/vector-tools.js +582 -0
  260. package/dist/tools/vector-tools.js.map +1 -0
  261. package/dist/tools/workspace-tools.d.ts +58 -0
  262. package/dist/tools/workspace-tools.d.ts.map +1 -0
  263. package/dist/tools/workspace-tools.js +152 -0
  264. package/dist/tools/workspace-tools.js.map +1 -0
  265. package/dist/types.d.ts +65 -0
  266. package/dist/types.d.ts.map +1 -0
  267. package/dist/types.js +5 -0
  268. package/dist/types.js.map +1 -0
  269. package/dist/utils/json-parser.d.ts +15 -0
  270. package/dist/utils/json-parser.d.ts.map +1 -0
  271. package/dist/utils/json-parser.js +78 -0
  272. package/dist/utils/json-parser.js.map +1 -0
  273. package/dist/utils/remove-base64-images.d.ts +12 -0
  274. package/dist/utils/remove-base64-images.d.ts.map +1 -0
  275. package/dist/utils/remove-base64-images.js +20 -0
  276. package/dist/utils/remove-base64-images.js.map +1 -0
  277. package/dist/utils/wrap-generators-parallel.d.ts +11 -0
  278. package/dist/utils/wrap-generators-parallel.d.ts.map +1 -0
  279. package/dist/utils/wrap-generators-parallel.js +38 -0
  280. package/dist/utils/wrap-generators-parallel.js.map +1 -0
  281. package/package.json +65 -0
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Abstract base class for all agents.
3
+ *
4
+ * Port of src/nodetool/agents/base_agent.py
5
+ */
6
+ import { DEFAULT_TOKEN_LIMIT } from "./constants.js";
7
+ export class BaseAgent {
8
+ name;
9
+ objective;
10
+ provider;
11
+ model;
12
+ tools;
13
+ inputs;
14
+ systemPrompt;
15
+ maxTokenLimit;
16
+ results = null;
17
+ task = null;
18
+ constructor(opts) {
19
+ this.name = opts.name;
20
+ this.objective = opts.objective;
21
+ this.provider = opts.provider;
22
+ this.model = opts.model;
23
+ this.tools = opts.tools ?? [];
24
+ this.inputs = opts.inputs ?? {};
25
+ this.systemPrompt = opts.systemPrompt ?? "";
26
+ this.maxTokenLimit = opts.maxTokenLimit ?? DEFAULT_TOKEN_LIMIT;
27
+ }
28
+ }
29
+ //# sourceMappingURL=base-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-agent.js","sourceRoot":"","sources":["../src/base-agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,OAAgB,SAAS;IACpB,IAAI,CAAS;IACb,SAAS,CAAS;IAClB,QAAQ,CAAe;IACvB,KAAK,CAAS;IACd,KAAK,CAAS;IACd,MAAM,CAA0B;IAChC,YAAY,CAAS;IACrB,aAAa,CAAS;IAC/B,OAAO,GAAY,IAAI,CAAC;IACxB,IAAI,GAAgB,IAAI,CAAC;IAEzB,YAAY,IASX;QACC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,mBAAmB,CAAC;IACjE,CAAC;CAcF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared constants for the agents package.
3
+ */
4
+ /** Default context window token limit shared across all executors. */
5
+ export declare const DEFAULT_TOKEN_LIMIT = 128000;
6
+ /** Maximum characters to retain from a single tool result. */
7
+ export declare const MAX_TOOL_RESULT_CHARS = 25000;
8
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAE3C,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,QAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared constants for the agents package.
3
+ */
4
+ /** Default context window token limit shared across all executors. */
5
+ export const DEFAULT_TOKEN_LIMIT = 128_000;
6
+ /** Maximum characters to retain from a single tool result. */
7
+ export const MAX_TOOL_RESULT_CHARS = 25_000;
8
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAE3C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * GraphBuilder -- stateful in-memory graph accumulator for the graph planner.
3
+ *
4
+ * The planner LLM calls add_node / add_edge tools which mutate a shared
5
+ * GraphBuilder instance. Once the LLM calls finish_graph, the builder
6
+ * validates and produces a GraphData object for WorkflowRunner.
7
+ */
8
+ import type { NodeDescriptor, GraphData } from "@nodetool-ai/protocol";
9
+ /** The virtual node type used for LLM-driven agent steps. */
10
+ export declare const AGENT_STEP_NODE_TYPE = "nodetool.agents.AgentStep";
11
+ export declare class GraphBuilder {
12
+ private readonly _nodes;
13
+ private readonly _edges;
14
+ private _built;
15
+ /** All node IDs currently in the graph. */
16
+ get nodeIds(): ReadonlySet<string>;
17
+ /** Number of nodes in the graph. */
18
+ get nodeCount(): number;
19
+ /** Number of edges in the graph. */
20
+ get edgeCount(): number;
21
+ /** Check whether a node ID is already registered. */
22
+ hasNode(id: string): boolean;
23
+ /** Get a node descriptor by ID. */
24
+ getNode(id: string): NodeDescriptor | undefined;
25
+ /**
26
+ * Add a node to the graph.
27
+ * Returns an array of validation errors (empty = success).
28
+ */
29
+ addNode(id: string, type: string, properties?: Record<string, unknown>, name?: string): string[];
30
+ /**
31
+ * Add an edge connecting two nodes.
32
+ * Returns an array of validation errors (empty = success).
33
+ */
34
+ addEdge(source: string, sourceHandle: string, target: string, targetHandle: string): string[];
35
+ /**
36
+ * Validate the full graph: cycle detection, dangling edge references,
37
+ * and at least one node.
38
+ * Returns an array of errors (empty = valid).
39
+ */
40
+ validate(): string[];
41
+ /**
42
+ * Finalize and return the graph as GraphData.
43
+ * Throws if validation fails.
44
+ */
45
+ build(): GraphData;
46
+ /** Reset the builder for reuse. */
47
+ reset(): void;
48
+ }
49
+ //# sourceMappingURL=graph-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-builder.d.ts","sourceRoot":"","sources":["../src/graph-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAQ,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE7E,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAEhE,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,MAAM,CAAS;IAEvB,2CAA2C;IAC3C,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAEjC;IAED,oCAAoC;IACpC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,oCAAoC;IACpC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,qDAAqD;IACrD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI5B,mCAAmC;IACnC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI/C;;;OAGG;IACH,OAAO,CACL,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,EAAE;IA8BX;;;OAGG;IACH,OAAO,CACL,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE;IA0CX;;;;OAIG;IACH,QAAQ,IAAI,MAAM,EAAE;IAyDpB;;;OAGG;IACH,KAAK,IAAI,SAAS;IA0ClB,mCAAmC;IACnC,KAAK,IAAI,IAAI;CAKd"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * GraphBuilder -- stateful in-memory graph accumulator for the graph planner.
3
+ *
4
+ * The planner LLM calls add_node / add_edge tools which mutate a shared
5
+ * GraphBuilder instance. Once the LLM calls finish_graph, the builder
6
+ * validates and produces a GraphData object for WorkflowRunner.
7
+ */
8
+ /** The virtual node type used for LLM-driven agent steps. */
9
+ export const AGENT_STEP_NODE_TYPE = "nodetool.agents.AgentStep";
10
+ export class GraphBuilder {
11
+ _nodes = new Map();
12
+ _edges = [];
13
+ _built = false;
14
+ /** All node IDs currently in the graph. */
15
+ get nodeIds() {
16
+ return new Set(this._nodes.keys());
17
+ }
18
+ /** Number of nodes in the graph. */
19
+ get nodeCount() {
20
+ return this._nodes.size;
21
+ }
22
+ /** Number of edges in the graph. */
23
+ get edgeCount() {
24
+ return this._edges.length;
25
+ }
26
+ /** Check whether a node ID is already registered. */
27
+ hasNode(id) {
28
+ return this._nodes.has(id);
29
+ }
30
+ /** Get a node descriptor by ID. */
31
+ getNode(id) {
32
+ return this._nodes.get(id);
33
+ }
34
+ /**
35
+ * Add a node to the graph.
36
+ * Returns an array of validation errors (empty = success).
37
+ */
38
+ addNode(id, type, properties, name) {
39
+ const errors = [];
40
+ if (this._built) {
41
+ errors.push("Graph has already been finalized.");
42
+ return errors;
43
+ }
44
+ if (!id || typeof id !== "string") {
45
+ errors.push("Node id must be a non-empty string.");
46
+ return errors;
47
+ }
48
+ if (!type || typeof type !== "string") {
49
+ errors.push("Node type must be a non-empty string.");
50
+ return errors;
51
+ }
52
+ if (this._nodes.has(id)) {
53
+ errors.push(`Duplicate node id: '${id}'.`);
54
+ return errors;
55
+ }
56
+ const descriptor = {
57
+ id,
58
+ type,
59
+ name: name ?? id,
60
+ properties: properties ?? {}
61
+ };
62
+ this._nodes.set(id, descriptor);
63
+ return errors;
64
+ }
65
+ /**
66
+ * Add an edge connecting two nodes.
67
+ * Returns an array of validation errors (empty = success).
68
+ */
69
+ addEdge(source, sourceHandle, target, targetHandle) {
70
+ const errors = [];
71
+ if (this._built) {
72
+ errors.push("Graph has already been finalized.");
73
+ return errors;
74
+ }
75
+ if (!this._nodes.has(source)) {
76
+ errors.push(`Source node '${source}' does not exist.`);
77
+ }
78
+ if (!this._nodes.has(target)) {
79
+ errors.push(`Target node '${target}' does not exist.`);
80
+ }
81
+ if (!sourceHandle) {
82
+ errors.push("sourceHandle must be a non-empty string.");
83
+ }
84
+ if (!targetHandle) {
85
+ errors.push("targetHandle must be a non-empty string.");
86
+ }
87
+ if (source === target) {
88
+ errors.push("Self-loops are not allowed.");
89
+ }
90
+ if (errors.length > 0)
91
+ return errors;
92
+ // Check for duplicate edge
93
+ const isDuplicate = this._edges.some((e) => e.source === source &&
94
+ e.sourceHandle === sourceHandle &&
95
+ e.target === target &&
96
+ e.targetHandle === targetHandle);
97
+ if (isDuplicate) {
98
+ errors.push(`Duplicate edge: ${source}.${sourceHandle} → ${target}.${targetHandle}`);
99
+ return errors;
100
+ }
101
+ this._edges.push({ source, sourceHandle, target, targetHandle });
102
+ return errors;
103
+ }
104
+ /**
105
+ * Validate the full graph: cycle detection, dangling edge references,
106
+ * and at least one node.
107
+ * Returns an array of errors (empty = valid).
108
+ */
109
+ validate() {
110
+ const errors = [];
111
+ if (this._nodes.size === 0) {
112
+ errors.push("Graph must contain at least one node.");
113
+ return errors;
114
+ }
115
+ // Check edge references
116
+ for (const edge of this._edges) {
117
+ if (!this._nodes.has(edge.source)) {
118
+ errors.push(`Edge references non-existent source node '${edge.source}'.`);
119
+ }
120
+ if (!this._nodes.has(edge.target)) {
121
+ errors.push(`Edge references non-existent target node '${edge.target}'.`);
122
+ }
123
+ }
124
+ // Cycle detection via Kahn's algorithm
125
+ const inDegree = new Map();
126
+ const adjList = new Map();
127
+ for (const id of this._nodes.keys()) {
128
+ inDegree.set(id, 0);
129
+ adjList.set(id, []);
130
+ }
131
+ for (const edge of this._edges) {
132
+ if (adjList.has(edge.source) && inDegree.has(edge.target)) {
133
+ adjList.get(edge.source).push(edge.target);
134
+ inDegree.set(edge.target, (inDegree.get(edge.target) ?? 0) + 1);
135
+ }
136
+ }
137
+ const queue = [];
138
+ for (const [id, deg] of inDegree) {
139
+ if (deg === 0)
140
+ queue.push(id);
141
+ }
142
+ let visited = 0;
143
+ while (queue.length > 0) {
144
+ const id = queue.shift();
145
+ visited++;
146
+ for (const neighbor of adjList.get(id) ?? []) {
147
+ const newDeg = (inDegree.get(neighbor) ?? 1) - 1;
148
+ inDegree.set(neighbor, newDeg);
149
+ if (newDeg === 0)
150
+ queue.push(neighbor);
151
+ }
152
+ }
153
+ if (visited < this._nodes.size) {
154
+ errors.push("Graph contains a cycle.");
155
+ }
156
+ return errors;
157
+ }
158
+ /**
159
+ * Finalize and return the graph as GraphData.
160
+ * Throws if validation fails.
161
+ */
162
+ build() {
163
+ const errors = this.validate();
164
+ if (errors.length > 0) {
165
+ throw new Error(`Graph validation failed:\n${errors.map((e) => `- ${e}`).join("\n")}`);
166
+ }
167
+ this._built = true;
168
+ // Topological sort for deterministic node ordering
169
+ const inDegree = new Map();
170
+ const adjList = new Map();
171
+ for (const id of this._nodes.keys()) {
172
+ inDegree.set(id, 0);
173
+ adjList.set(id, []);
174
+ }
175
+ for (const edge of this._edges) {
176
+ adjList.get(edge.source).push(edge.target);
177
+ inDegree.set(edge.target, (inDegree.get(edge.target) ?? 0) + 1);
178
+ }
179
+ const queue = [];
180
+ for (const [id, deg] of inDegree) {
181
+ if (deg === 0)
182
+ queue.push(id);
183
+ }
184
+ const sorted = [];
185
+ while (queue.length > 0) {
186
+ const id = queue.shift();
187
+ sorted.push(id);
188
+ for (const neighbor of adjList.get(id) ?? []) {
189
+ const newDeg = (inDegree.get(neighbor) ?? 1) - 1;
190
+ inDegree.set(neighbor, newDeg);
191
+ if (newDeg === 0)
192
+ queue.push(neighbor);
193
+ }
194
+ }
195
+ const nodes = sorted.map((id) => this._nodes.get(id));
196
+ const edges = [...this._edges];
197
+ return { nodes, edges };
198
+ }
199
+ /** Reset the builder for reuse. */
200
+ reset() {
201
+ this._nodes.clear();
202
+ this._edges.length = 0;
203
+ this._built = false;
204
+ }
205
+ }
206
+ //# sourceMappingURL=graph-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-builder.js","sourceRoot":"","sources":["../src/graph-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * GraphPlanner -- builds a workflow graph directly via LLM tool calling.
3
+ *
4
+ * Instead of producing a TaskPlan with prose steps, this planner gives the LLM
5
+ * tools to search for nodes, inspect their metadata, and build a DAG node-by-node.
6
+ * The result is a GraphData that goes straight to WorkflowRunner.
7
+ */
8
+ import type { BaseProvider, ProcessingContext } from "@nodetool-ai/runtime";
9
+ import type { NodeRegistry } from "@nodetool-ai/node-sdk";
10
+ import type { GraphData, ProcessingMessage } from "@nodetool-ai/protocol";
11
+ import type { Tool } from "./tools/base-tool.js";
12
+ export interface GraphPlannerOptions {
13
+ provider: BaseProvider;
14
+ model: string;
15
+ registry: NodeRegistry;
16
+ tools?: Tool[];
17
+ systemPrompt?: string;
18
+ outputSchema?: Record<string, unknown>;
19
+ inputs?: Record<string, unknown>;
20
+ maxRetries?: number;
21
+ threadId?: string;
22
+ /**
23
+ * Configured BaseProvider instances by id. When supplied, the planner
24
+ * exposes a `find_model` tool so the agent can pick a real
25
+ * `{provider, model_id}` for generic AI nodes.
26
+ */
27
+ providers?: Record<string, BaseProvider>;
28
+ }
29
+ export declare class GraphPlanner {
30
+ private readonly provider;
31
+ private readonly model;
32
+ private readonly registry;
33
+ private readonly tools;
34
+ private readonly systemPrompt;
35
+ private readonly outputSchema;
36
+ private readonly inputs;
37
+ private readonly maxRetries;
38
+ private readonly threadId?;
39
+ private readonly providers?;
40
+ private readonly hasFindModel;
41
+ constructor(opts: GraphPlannerOptions);
42
+ /**
43
+ * Build a workflow graph from an objective using LLM tool calling.
44
+ * Returns null on repeated failure.
45
+ */
46
+ plan(objective: string, context: ProcessingContext): AsyncGenerator<ProcessingMessage, GraphData | null>;
47
+ private _planImpl;
48
+ /**
49
+ * Run the multi-turn tool-calling loop.
50
+ * The LLM can call search/inspect/add tools multiple times before finish_graph.
51
+ */
52
+ private runToolLoop;
53
+ private formatToolCallMessage;
54
+ private formatToolsInfo;
55
+ }
56
+ //# sourceMappingURL=graph-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-planner.d.ts","sourceRoot":"","sources":["../src/graph-planner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EAIlB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AA0BjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC1C;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA+B;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;gBAE3B,IAAI,EAAE,mBAAmB;IAsBrC;;;OAGG;IACI,IAAI,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,cAAc,CAAC,iBAAiB,EAAE,SAAS,GAAG,IAAI,CAAC;YAavC,SAAS;IAwGxB;;;OAGG;YACY,WAAW;IAiJ1B,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,eAAe;CA0BxB"}