@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,86 @@
1
+ /**
2
+ * MultiModeAgent -- A unified agent that supports three execution modes:
3
+ *
4
+ * 1. "loop" - Simple iterative LLM + tool calling (like SimpleAgent)
5
+ * 2. "plan" - LLM creates a task plan, then executes steps (like Agent)
6
+ * 3. "multi-agent" - Sub-agents running in parallel (like TeamExecutor)
7
+ *
8
+ * This provides a single entry point for all agent execution strategies,
9
+ * selectable via the `mode` option.
10
+ */
11
+ import type { BaseProvider } from "@nodetool-ai/runtime";
12
+ import type { ProcessingContext } from "@nodetool-ai/runtime";
13
+ import type { ProcessingMessage } from "@nodetool-ai/protocol";
14
+ import { BaseAgent } from "./base-agent.js";
15
+ import type { Tool } from "./tools/base-tool.js";
16
+ import type { AgentMode, SubAgentConfig, Task } from "./types.js";
17
+ import type { NodeRegistry } from "@nodetool-ai/node-sdk";
18
+ export interface MultiModeAgentOptions {
19
+ name: string;
20
+ objective: string;
21
+ provider: BaseProvider;
22
+ model: string;
23
+ mode?: AgentMode;
24
+ tools?: Tool[];
25
+ inputs?: Record<string, unknown>;
26
+ systemPrompt?: string;
27
+ maxTokenLimit?: number;
28
+ /** Output schema for structured results. */
29
+ outputSchema?: Record<string, unknown>;
30
+ /** Model used for planning phase. Defaults to `model`. */
31
+ planningModel?: string;
32
+ /** Maximum number of steps the planner can create. */
33
+ maxSteps?: number;
34
+ /** Maximum iterations per step. */
35
+ maxStepIterations?: number;
36
+ /** Pre-defined task, skipping planning. */
37
+ task?: Task;
38
+ /** Use graph-native planner (builds DAG directly instead of TaskPlan). */
39
+ useGraphPlanner?: boolean;
40
+ /** Node registry for graph planner (required when useGraphPlanner is true). */
41
+ registry?: NodeRegistry;
42
+ /**
43
+ * Configured BaseProvider instances by id. When supplied, the GraphPlanner
44
+ * exposes a `find_model` tool so the agent can pick a real model+provider
45
+ * for generic AI nodes (TextToImage, TextToVideo, etc.).
46
+ */
47
+ providers?: Record<string, BaseProvider>;
48
+ /** Maximum iterations for loop mode. */
49
+ maxIterations?: number;
50
+ /** Explicit sub-agent definitions. If not provided, agents are auto-specialized. */
51
+ subAgents?: SubAgentConfig[];
52
+ /** Number of sub-agents to auto-specialize (default: 3). Only used when subAgents is not provided. */
53
+ numSubAgents?: number;
54
+ /** Team execution strategy for multi-agent mode. */
55
+ teamStrategy?: "coordinator" | "autonomous" | "hybrid";
56
+ /** Maximum concurrent sub-agents. */
57
+ maxConcurrency?: number;
58
+ }
59
+ export declare class MultiModeAgent extends BaseAgent {
60
+ private readonly mode;
61
+ private readonly outputSchema?;
62
+ private readonly planningModel;
63
+ private readonly maxSteps;
64
+ private readonly maxStepIterations;
65
+ private readonly maxIterations;
66
+ private readonly initialTask?;
67
+ private readonly subAgents?;
68
+ private readonly numSubAgents;
69
+ private readonly teamStrategy;
70
+ private readonly maxConcurrency;
71
+ private readonly useGraphPlanner;
72
+ private readonly registry?;
73
+ private readonly providers?;
74
+ constructor(opts: MultiModeAgentOptions);
75
+ execute(context: ProcessingContext): AsyncGenerator<ProcessingMessage>;
76
+ private executeLoopMode;
77
+ private executePlanMode;
78
+ private executeGraphPlanMode;
79
+ /**
80
+ * Execute a single pre-defined task (legacy path for backward compatibility).
81
+ */
82
+ private executeSingleTask;
83
+ private executeMultiAgentMode;
84
+ getResults(): unknown;
85
+ }
86
+ //# sourceMappingURL=multi-mode-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-mode-agent.d.ts","sourceRoot":"","sources":["../src/multi-mode-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,476 @@
1
+ /**
2
+ * MultiModeAgent -- A unified agent that supports three execution modes:
3
+ *
4
+ * 1. "loop" - Simple iterative LLM + tool calling (like SimpleAgent)
5
+ * 2. "plan" - LLM creates a task plan, then executes steps (like Agent)
6
+ * 3. "multi-agent" - Sub-agents running in parallel (like TeamExecutor)
7
+ *
8
+ * This provides a single entry point for all agent execution strategies,
9
+ * selectable via the `mode` option.
10
+ */
11
+ import { createLogger } from "@nodetool-ai/config";
12
+ import { TaskUpdateEvent } from "@nodetool-ai/protocol";
13
+ import { BaseAgent } from "./base-agent.js";
14
+ import { StepExecutor } from "./step-executor.js";
15
+ import { TaskPlanner } from "./task-planner.js";
16
+ import { TaskExecutor } from "./task-executor.js";
17
+ import { ParallelTaskExecutor } from "./parallel-task-executor.js";
18
+ import { TeamExecutor } from "./team/team-executor.js";
19
+ import { SubAgentPlanner } from "./sub-agent-planner.js";
20
+ import { GraphPlanner } from "./graph-planner.js";
21
+ import { AgentWorkflowRunner } from "./agent-workflow-runner.js";
22
+ import { randomUUID } from "node:crypto";
23
+ const log = createLogger("nodetool.agents.multi-mode-agent");
24
+ export class MultiModeAgent extends BaseAgent {
25
+ mode;
26
+ outputSchema;
27
+ planningModel;
28
+ maxSteps;
29
+ maxStepIterations;
30
+ maxIterations;
31
+ initialTask;
32
+ subAgents;
33
+ numSubAgents;
34
+ teamStrategy;
35
+ maxConcurrency;
36
+ useGraphPlanner;
37
+ registry;
38
+ providers;
39
+ constructor(opts) {
40
+ super({
41
+ name: opts.name,
42
+ objective: opts.objective,
43
+ provider: opts.provider,
44
+ model: opts.model,
45
+ tools: opts.tools,
46
+ inputs: opts.inputs,
47
+ systemPrompt: opts.systemPrompt,
48
+ maxTokenLimit: opts.maxTokenLimit
49
+ });
50
+ this.mode = opts.mode ?? "loop";
51
+ this.outputSchema = opts.outputSchema;
52
+ this.planningModel = opts.planningModel ?? opts.model;
53
+ this.maxSteps = opts.maxSteps ?? 10;
54
+ this.maxStepIterations = opts.maxStepIterations ?? 5;
55
+ this.maxIterations = opts.maxIterations ?? 20;
56
+ this.initialTask = opts.task;
57
+ this.subAgents = opts.subAgents;
58
+ this.numSubAgents = opts.numSubAgents ?? 3;
59
+ this.teamStrategy = opts.teamStrategy ?? "coordinator";
60
+ this.maxConcurrency = opts.maxConcurrency ?? 5;
61
+ this.useGraphPlanner = opts.useGraphPlanner ?? false;
62
+ this.registry = opts.registry;
63
+ this.providers = opts.providers;
64
+ if (opts.task) {
65
+ this.task = opts.task;
66
+ }
67
+ }
68
+ async *execute(context) {
69
+ log.info("MultiModeAgent started", {
70
+ name: this.name,
71
+ mode: this.mode,
72
+ objective: this.objective.slice(0, 80)
73
+ });
74
+ yield {
75
+ type: "log_update",
76
+ node_id: "multi_mode_agent",
77
+ node_name: this.name,
78
+ content: `Starting agent in "${this.mode}" mode: ${this.objective.slice(0, 100)}...`,
79
+ severity: "info"
80
+ };
81
+ switch (this.mode) {
82
+ case "loop":
83
+ yield* this.executeLoopMode(context);
84
+ break;
85
+ case "plan":
86
+ yield* this.executePlanMode(context);
87
+ break;
88
+ case "multi-agent":
89
+ yield* this.executeMultiAgentMode(context);
90
+ break;
91
+ default:
92
+ throw new Error(`Unknown agent mode: ${this.mode}`);
93
+ }
94
+ log.info("MultiModeAgent completed", { name: this.name, mode: this.mode });
95
+ }
96
+ // ---------------------------------------------------------------------------
97
+ // Loop mode: Simple iterative LLM + tool calling
98
+ // ---------------------------------------------------------------------------
99
+ async *executeLoopMode(context) {
100
+ const step = {
101
+ id: randomUUID(),
102
+ instructions: this.objective,
103
+ completed: false,
104
+ dependsOn: [],
105
+ outputSchema: this.outputSchema
106
+ ? JSON.stringify(this.outputSchema)
107
+ : undefined,
108
+ logs: []
109
+ };
110
+ const task = {
111
+ id: randomUUID(),
112
+ title: this.objective,
113
+ steps: [step]
114
+ };
115
+ this.task = task;
116
+ const executor = new StepExecutor({
117
+ task,
118
+ step,
119
+ context,
120
+ provider: this.provider,
121
+ model: this.model,
122
+ tools: this.tools,
123
+ systemPrompt: this.systemPrompt || undefined,
124
+ maxTokenLimit: this.maxTokenLimit,
125
+ maxIterations: this.maxIterations
126
+ });
127
+ for await (const item of executor.execute()) {
128
+ if (item.type === "step_result") {
129
+ this.results = item.result;
130
+ }
131
+ yield item;
132
+ }
133
+ }
134
+ // ---------------------------------------------------------------------------
135
+ // Plan mode: TaskPlanner -> TaskExecutor
136
+ // ---------------------------------------------------------------------------
137
+ async *executePlanMode(context) {
138
+ // If pre-defined task, fall back to single-task execution
139
+ if (this.initialTask) {
140
+ yield* this.executeSingleTask(context, this.initialTask);
141
+ return;
142
+ }
143
+ // Graph-native planner: build DAG directly
144
+ if (this.useGraphPlanner && this.registry) {
145
+ yield* this.executeGraphPlanMode(context);
146
+ return;
147
+ }
148
+ log.info("Planning phase started", { name: this.name });
149
+ yield {
150
+ type: "log_update",
151
+ node_id: "agent_planner",
152
+ node_name: this.name,
153
+ content: `Planning parallel tasks for objective: ${this.objective.slice(0, 100)}...`,
154
+ severity: "info"
155
+ };
156
+ const planner = new TaskPlanner({
157
+ provider: this.provider,
158
+ model: this.planningModel,
159
+ reasoningModel: this.planningModel,
160
+ tools: this.tools,
161
+ systemPrompt: this.systemPrompt || undefined,
162
+ outputSchema: this.outputSchema,
163
+ inputs: this.inputs
164
+ });
165
+ const planGen = planner.planMultiTask(this.objective, context);
166
+ let planResult = await planGen.next();
167
+ while (!planResult.done) {
168
+ yield planResult.value;
169
+ planResult = await planGen.next();
170
+ }
171
+ const taskPlan = planResult.value;
172
+ if (!taskPlan) {
173
+ throw new Error("TaskPlanner failed to create a task plan.");
174
+ }
175
+ log.info("Planning complete", {
176
+ name: this.name,
177
+ tasks: taskPlan.tasks.length,
178
+ totalSteps: taskPlan.tasks.reduce((sum, t) => sum + t.steps.length, 0)
179
+ });
180
+ // Set task for backward compatibility
181
+ if (taskPlan.tasks.length > 0) {
182
+ this.task = taskPlan.tasks[0];
183
+ }
184
+ // Apply output schema to last step of last task
185
+ if (this.outputSchema && taskPlan.tasks.length > 0) {
186
+ const lastTask = taskPlan.tasks[taskPlan.tasks.length - 1];
187
+ if (lastTask.steps.length > 0) {
188
+ lastTask.steps[lastTask.steps.length - 1].outputSchema =
189
+ JSON.stringify(this.outputSchema);
190
+ }
191
+ }
192
+ const totalSteps = taskPlan.tasks.reduce((sum, t) => sum + t.steps.length, 0);
193
+ const independentTasks = taskPlan.tasks.filter((t) => !t.dependsOn || t.dependsOn.length === 0).length;
194
+ yield {
195
+ type: "log_update",
196
+ node_id: "agent_executor",
197
+ node_name: this.name,
198
+ content: `Starting parallel execution: ${taskPlan.tasks.length} tasks (${independentTasks} parallelizable), ${totalSteps} total steps...`,
199
+ severity: "info"
200
+ };
201
+ const executor = new ParallelTaskExecutor({
202
+ provider: this.provider,
203
+ model: this.model,
204
+ context,
205
+ tools: [...this.tools],
206
+ taskPlan,
207
+ systemPrompt: this.systemPrompt || undefined,
208
+ inputs: this.inputs,
209
+ maxStepIterations: this.maxStepIterations,
210
+ maxTokenLimit: this.maxTokenLimit
211
+ });
212
+ for await (const item of executor.execute()) {
213
+ if (item.type === "step_result") {
214
+ const stepResult = item;
215
+ if (stepResult.is_task_result) {
216
+ this.results = stepResult.result;
217
+ }
218
+ }
219
+ yield item;
220
+ }
221
+ // If no task_result was captured, use the final task's result
222
+ if (this.results === null) {
223
+ this.results = executor.getFinalResult();
224
+ }
225
+ }
226
+ // ---------------------------------------------------------------------------
227
+ // Graph plan mode: GraphPlanner -> WorkflowRunner
228
+ // ---------------------------------------------------------------------------
229
+ async *executeGraphPlanMode(context) {
230
+ log.info("Graph planning phase started", { name: this.name });
231
+ yield {
232
+ type: "log_update",
233
+ node_id: "graph_planner",
234
+ node_name: this.name,
235
+ content: `Building workflow graph for: ${this.objective.slice(0, 100)}...`,
236
+ severity: "info"
237
+ };
238
+ const planner = new GraphPlanner({
239
+ provider: this.provider,
240
+ model: this.planningModel,
241
+ registry: this.registry,
242
+ tools: this.tools,
243
+ systemPrompt: this.systemPrompt || undefined,
244
+ outputSchema: this.outputSchema,
245
+ inputs: this.inputs,
246
+ providers: this.providers
247
+ });
248
+ const planGen = planner.plan(this.objective, context);
249
+ let planResult = await planGen.next();
250
+ while (!planResult.done) {
251
+ yield planResult.value;
252
+ planResult = await planGen.next();
253
+ }
254
+ const graphData = planResult.value;
255
+ if (!graphData) {
256
+ throw new Error("GraphPlanner failed to build a workflow graph.");
257
+ }
258
+ log.info("Graph planning complete", {
259
+ name: this.name,
260
+ nodes: graphData.nodes.length,
261
+ edges: graphData.edges.length
262
+ });
263
+ yield {
264
+ type: "log_update",
265
+ node_id: "graph_executor",
266
+ node_name: this.name,
267
+ content: `Executing workflow: ${graphData.nodes.length} nodes, ${graphData.edges.length} edges...`,
268
+ severity: "info"
269
+ };
270
+ const runner = new AgentWorkflowRunner({
271
+ provider: this.provider,
272
+ model: this.model,
273
+ registry: this.registry,
274
+ tools: [...this.tools],
275
+ context,
276
+ systemPrompt: this.systemPrompt || undefined,
277
+ maxTokenLimit: this.maxTokenLimit,
278
+ maxStepIterations: this.maxStepIterations,
279
+ inputs: this.inputs
280
+ });
281
+ for await (const item of runner.execute(graphData)) {
282
+ if (item.type === "step_result") {
283
+ const stepResult = item;
284
+ if (stepResult.is_task_result) {
285
+ this.results = stepResult.result;
286
+ }
287
+ }
288
+ yield item;
289
+ }
290
+ }
291
+ /**
292
+ * Execute a single pre-defined task (legacy path for backward compatibility).
293
+ */
294
+ async *executeSingleTask(context, task) {
295
+ this.task = task;
296
+ if (this.outputSchema && task.steps.length > 0) {
297
+ task.steps[task.steps.length - 1].outputSchema = JSON.stringify(this.outputSchema);
298
+ }
299
+ yield {
300
+ type: "log_update",
301
+ node_id: "agent_executor",
302
+ node_name: this.name,
303
+ content: `Starting execution of ${task.steps.length} steps...`,
304
+ severity: "info"
305
+ };
306
+ const executor = new TaskExecutor({
307
+ provider: this.provider,
308
+ model: this.model,
309
+ context,
310
+ tools: [...this.tools],
311
+ task,
312
+ systemPrompt: this.systemPrompt || undefined,
313
+ inputs: this.inputs,
314
+ maxSteps: this.maxSteps,
315
+ maxStepIterations: this.maxStepIterations,
316
+ maxTokenLimit: this.maxTokenLimit,
317
+ parallelExecution: true
318
+ });
319
+ for await (const item of executor.executeTasks()) {
320
+ if (item.type === "step_result") {
321
+ const stepResult = item;
322
+ if (stepResult.is_task_result) {
323
+ this.results = stepResult.result;
324
+ yield {
325
+ type: "task_update",
326
+ event: TaskUpdateEvent.TaskCompleted,
327
+ task: task
328
+ };
329
+ }
330
+ }
331
+ yield item;
332
+ }
333
+ }
334
+ // ---------------------------------------------------------------------------
335
+ // Multi-agent mode: auto-specialize sub-agents and run TeamExecutor
336
+ // ---------------------------------------------------------------------------
337
+ async *executeMultiAgentMode(context) {
338
+ // Resolve sub-agent configs: use explicit or auto-specialize
339
+ let agentConfigs;
340
+ if (this.subAgents && this.subAgents.length > 0) {
341
+ agentConfigs = this.subAgents;
342
+ log.info("Using explicit sub-agent configs", {
343
+ count: agentConfigs.length
344
+ });
345
+ }
346
+ else {
347
+ log.info("Auto-specializing sub-agents", { count: this.numSubAgents });
348
+ yield {
349
+ type: "log_update",
350
+ node_id: "sub_agent_planner",
351
+ node_name: this.name,
352
+ content: `Auto-specializing ${this.numSubAgents} sub-agents for objective...`,
353
+ severity: "info"
354
+ };
355
+ const planner = new SubAgentPlanner({
356
+ provider: this.provider,
357
+ model: this.planningModel,
358
+ tools: this.tools
359
+ });
360
+ const planGen = planner.plan(this.objective, this.numSubAgents);
361
+ let planResult = await planGen.next();
362
+ while (!planResult.done) {
363
+ yield planResult.value;
364
+ planResult = await planGen.next();
365
+ }
366
+ agentConfigs = planResult.value;
367
+ }
368
+ if (agentConfigs.length === 0) {
369
+ throw new Error("No sub-agents configured for multi-agent mode.");
370
+ }
371
+ yield {
372
+ type: "log_update",
373
+ node_id: "team_executor",
374
+ node_name: this.name,
375
+ content: `Starting team of ${agentConfigs.length} agents with "${this.teamStrategy}" strategy...`,
376
+ severity: "info"
377
+ };
378
+ // Convert SubAgentConfig[] to AgentIdentity[] for TeamExecutor
379
+ const providerKey = this.provider
380
+ .provider ?? "openai";
381
+ const agents = agentConfigs.map((config, index) => ({
382
+ id: `agent_${index}_${config.name.toLowerCase().replace(/\s+/g, "_")}`,
383
+ name: config.name,
384
+ role: config.role,
385
+ skills: config.skills,
386
+ provider: config.provider ?? providerKey,
387
+ model: config.model ?? this.model,
388
+ tools: config.tools ?? this.tools.map((t) => t.name)
389
+ }));
390
+ const teamExecutor = new TeamExecutor({
391
+ config: {
392
+ objective: this.objective,
393
+ agents,
394
+ strategy: this.teamStrategy,
395
+ maxConcurrency: this.maxConcurrency
396
+ },
397
+ context,
398
+ sharedTools: [...this.tools]
399
+ });
400
+ for await (const event of teamExecutor.execute()) {
401
+ // Convert TeamEvents to ProcessingMessages
402
+ switch (event.type) {
403
+ case "chunk":
404
+ yield {
405
+ type: "chunk",
406
+ content: `[${event.agentId}] ${event.content}`,
407
+ done: false
408
+ };
409
+ break;
410
+ case "task_created":
411
+ yield {
412
+ type: "log_update",
413
+ node_id: "team_executor",
414
+ node_name: this.name,
415
+ content: `Task created: ${event.task.title}`,
416
+ severity: "info"
417
+ };
418
+ break;
419
+ case "task_completed":
420
+ yield {
421
+ type: "log_update",
422
+ node_id: "team_executor",
423
+ node_name: this.name,
424
+ content: `Task ${event.taskId} completed`,
425
+ severity: "info"
426
+ };
427
+ break;
428
+ case "task_failed":
429
+ yield {
430
+ type: "log_update",
431
+ node_id: "team_executor",
432
+ node_name: this.name,
433
+ content: `Task ${event.taskId} failed: ${event.reason}`,
434
+ severity: "warning"
435
+ };
436
+ break;
437
+ case "agent_started":
438
+ yield {
439
+ type: "log_update",
440
+ node_id: "team_executor",
441
+ node_name: this.name,
442
+ content: `Agent ${event.agentId} started`,
443
+ severity: "info"
444
+ };
445
+ break;
446
+ case "deadlock_detected":
447
+ yield {
448
+ type: "log_update",
449
+ node_id: "team_executor",
450
+ node_name: this.name,
451
+ content: `Deadlock detected in tasks: ${event.blockingTasks.join(", ")}`,
452
+ severity: "error"
453
+ };
454
+ break;
455
+ case "team_complete":
456
+ this.results = event.result;
457
+ yield {
458
+ type: "log_update",
459
+ node_id: "team_executor",
460
+ node_name: this.name,
461
+ content: "Team execution complete",
462
+ severity: "info"
463
+ };
464
+ break;
465
+ }
466
+ }
467
+ // If no result was set from team_complete, get it from the executor
468
+ if (this.results === null) {
469
+ this.results = teamExecutor.getResult();
470
+ }
471
+ }
472
+ getResults() {
473
+ return this.results;
474
+ }
475
+ }
476
+ //# sourceMappingURL=multi-mode-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-mode-agent.js","sourceRoot":"","sources":["../src/multi-mode-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared output-format options for agents. When an agent runs in a non-
3
+ * "structured" mode, outputSchema is ignored and a short directive is
4
+ * appended to the system prompt so the final step emits the requested
5
+ * presentation format.
6
+ */
7
+ export type AgentOutputFormat = "structured" | "markdown" | "text" | "html";
8
+ export declare const OUTPUT_FORMAT_DIRECTIVES: Record<Exclude<AgentOutputFormat, "structured">, string>;
9
+ export declare function outputFormatDirective(format: AgentOutputFormat): string | null;
10
+ //# sourceMappingURL=output-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-format.d.ts","sourceRoot":"","sources":["../src/output-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5E,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAC3C,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,EACxC,MAAM,CAKP,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAG9E"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Shared output-format options for agents. When an agent runs in a non-
3
+ * "structured" mode, outputSchema is ignored and a short directive is
4
+ * appended to the system prompt so the final step emits the requested
5
+ * presentation format.
6
+ */
7
+ export const OUTPUT_FORMAT_DIRECTIVES = {
8
+ markdown: "Final result: markdown prose.",
9
+ text: "Final result: plain text.",
10
+ html: "Final result: HTML fragment."
11
+ };
12
+ export function outputFormatDirective(format) {
13
+ if (format === "structured")
14
+ return null;
15
+ return OUTPUT_FORMAT_DIRECTIVES[format];
16
+ }
17
+ //# sourceMappingURL=output-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-format.js","sourceRoot":"","sources":["../src/output-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,wBAAwB,GAGjC;IACF,QAAQ,EAAE,+BAA+B;IACzC,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,8BAA8B;CACrC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}