@lleverage-ai/agent-sdk 0.0.1

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 (327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2321 -0
  3. package/dist/agent.d.ts +52 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +2122 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/backend.d.ts +378 -0
  8. package/dist/backend.d.ts.map +1 -0
  9. package/dist/backend.js +71 -0
  10. package/dist/backend.js.map +1 -0
  11. package/dist/backends/composite.d.ts +258 -0
  12. package/dist/backends/composite.d.ts.map +1 -0
  13. package/dist/backends/composite.js +437 -0
  14. package/dist/backends/composite.js.map +1 -0
  15. package/dist/backends/filesystem.d.ts +268 -0
  16. package/dist/backends/filesystem.d.ts.map +1 -0
  17. package/dist/backends/filesystem.js +623 -0
  18. package/dist/backends/filesystem.js.map +1 -0
  19. package/dist/backends/index.d.ts +14 -0
  20. package/dist/backends/index.d.ts.map +1 -0
  21. package/dist/backends/index.js +14 -0
  22. package/dist/backends/index.js.map +1 -0
  23. package/dist/backends/persistent.d.ts +312 -0
  24. package/dist/backends/persistent.d.ts.map +1 -0
  25. package/dist/backends/persistent.js +519 -0
  26. package/dist/backends/persistent.js.map +1 -0
  27. package/dist/backends/sandbox.d.ts +315 -0
  28. package/dist/backends/sandbox.d.ts.map +1 -0
  29. package/dist/backends/sandbox.js +490 -0
  30. package/dist/backends/sandbox.js.map +1 -0
  31. package/dist/backends/state.d.ts +225 -0
  32. package/dist/backends/state.d.ts.map +1 -0
  33. package/dist/backends/state.js +396 -0
  34. package/dist/backends/state.js.map +1 -0
  35. package/dist/checkpointer/file-saver.d.ts +182 -0
  36. package/dist/checkpointer/file-saver.d.ts.map +1 -0
  37. package/dist/checkpointer/file-saver.js +298 -0
  38. package/dist/checkpointer/file-saver.js.map +1 -0
  39. package/dist/checkpointer/index.d.ts +40 -0
  40. package/dist/checkpointer/index.d.ts.map +1 -0
  41. package/dist/checkpointer/index.js +40 -0
  42. package/dist/checkpointer/index.js.map +1 -0
  43. package/dist/checkpointer/kv-saver.d.ts +142 -0
  44. package/dist/checkpointer/kv-saver.d.ts.map +1 -0
  45. package/dist/checkpointer/kv-saver.js +176 -0
  46. package/dist/checkpointer/kv-saver.js.map +1 -0
  47. package/dist/checkpointer/memory-saver.d.ts +158 -0
  48. package/dist/checkpointer/memory-saver.d.ts.map +1 -0
  49. package/dist/checkpointer/memory-saver.js +222 -0
  50. package/dist/checkpointer/memory-saver.js.map +1 -0
  51. package/dist/checkpointer/types.d.ts +353 -0
  52. package/dist/checkpointer/types.d.ts.map +1 -0
  53. package/dist/checkpointer/types.js +159 -0
  54. package/dist/checkpointer/types.js.map +1 -0
  55. package/dist/context-manager.d.ts +627 -0
  56. package/dist/context-manager.d.ts.map +1 -0
  57. package/dist/context-manager.js +1039 -0
  58. package/dist/context-manager.js.map +1 -0
  59. package/dist/context.d.ts +57 -0
  60. package/dist/context.d.ts.map +1 -0
  61. package/dist/context.js +76 -0
  62. package/dist/context.js.map +1 -0
  63. package/dist/errors/index.d.ts +611 -0
  64. package/dist/errors/index.d.ts.map +1 -0
  65. package/dist/errors/index.js +1023 -0
  66. package/dist/errors/index.js.map +1 -0
  67. package/dist/generation-helpers.d.ts +126 -0
  68. package/dist/generation-helpers.d.ts.map +1 -0
  69. package/dist/generation-helpers.js +181 -0
  70. package/dist/generation-helpers.js.map +1 -0
  71. package/dist/hooks/audit.d.ts +210 -0
  72. package/dist/hooks/audit.d.ts.map +1 -0
  73. package/dist/hooks/audit.js +305 -0
  74. package/dist/hooks/audit.js.map +1 -0
  75. package/dist/hooks/cache.d.ts +180 -0
  76. package/dist/hooks/cache.d.ts.map +1 -0
  77. package/dist/hooks/cache.js +273 -0
  78. package/dist/hooks/cache.js.map +1 -0
  79. package/dist/hooks/guardrails.d.ts +145 -0
  80. package/dist/hooks/guardrails.d.ts.map +1 -0
  81. package/dist/hooks/guardrails.js +326 -0
  82. package/dist/hooks/guardrails.js.map +1 -0
  83. package/dist/hooks/index.d.ts +18 -0
  84. package/dist/hooks/index.d.ts.map +1 -0
  85. package/dist/hooks/index.js +32 -0
  86. package/dist/hooks/index.js.map +1 -0
  87. package/dist/hooks/logging.d.ts +193 -0
  88. package/dist/hooks/logging.d.ts.map +1 -0
  89. package/dist/hooks/logging.js +345 -0
  90. package/dist/hooks/logging.js.map +1 -0
  91. package/dist/hooks/parallel-guardrails.d.ts +268 -0
  92. package/dist/hooks/parallel-guardrails.d.ts.map +1 -0
  93. package/dist/hooks/parallel-guardrails.js +416 -0
  94. package/dist/hooks/parallel-guardrails.js.map +1 -0
  95. package/dist/hooks/rate-limit.d.ts +305 -0
  96. package/dist/hooks/rate-limit.d.ts.map +1 -0
  97. package/dist/hooks/rate-limit.js +372 -0
  98. package/dist/hooks/rate-limit.js.map +1 -0
  99. package/dist/hooks/retry.d.ts +144 -0
  100. package/dist/hooks/retry.d.ts.map +1 -0
  101. package/dist/hooks/retry.js +210 -0
  102. package/dist/hooks/retry.js.map +1 -0
  103. package/dist/hooks/secrets.d.ts +174 -0
  104. package/dist/hooks/secrets.d.ts.map +1 -0
  105. package/dist/hooks/secrets.js +306 -0
  106. package/dist/hooks/secrets.js.map +1 -0
  107. package/dist/hooks.d.ts +229 -0
  108. package/dist/hooks.d.ts.map +1 -0
  109. package/dist/hooks.js +352 -0
  110. package/dist/hooks.js.map +1 -0
  111. package/dist/index.d.ts +97 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +182 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/mcp/env.d.ts +25 -0
  116. package/dist/mcp/env.d.ts.map +1 -0
  117. package/dist/mcp/env.js +18 -0
  118. package/dist/mcp/env.js.map +1 -0
  119. package/dist/mcp/index.d.ts +16 -0
  120. package/dist/mcp/index.d.ts.map +1 -0
  121. package/dist/mcp/index.js +17 -0
  122. package/dist/mcp/index.js.map +1 -0
  123. package/dist/mcp/manager.d.ts +184 -0
  124. package/dist/mcp/manager.d.ts.map +1 -0
  125. package/dist/mcp/manager.js +446 -0
  126. package/dist/mcp/manager.js.map +1 -0
  127. package/dist/mcp/types.d.ts +58 -0
  128. package/dist/mcp/types.d.ts.map +1 -0
  129. package/dist/mcp/types.js +7 -0
  130. package/dist/mcp/types.js.map +1 -0
  131. package/dist/mcp/validation.d.ts +119 -0
  132. package/dist/mcp/validation.d.ts.map +1 -0
  133. package/dist/mcp/validation.js +407 -0
  134. package/dist/mcp/validation.js.map +1 -0
  135. package/dist/mcp/virtual-server.d.ts +78 -0
  136. package/dist/mcp/virtual-server.d.ts.map +1 -0
  137. package/dist/mcp/virtual-server.js +137 -0
  138. package/dist/mcp/virtual-server.js.map +1 -0
  139. package/dist/memory/filesystem-store.d.ts +217 -0
  140. package/dist/memory/filesystem-store.d.ts.map +1 -0
  141. package/dist/memory/filesystem-store.js +343 -0
  142. package/dist/memory/filesystem-store.js.map +1 -0
  143. package/dist/memory/index.d.ts +46 -0
  144. package/dist/memory/index.d.ts.map +1 -0
  145. package/dist/memory/index.js +46 -0
  146. package/dist/memory/index.js.map +1 -0
  147. package/dist/memory/loader.d.ts +396 -0
  148. package/dist/memory/loader.d.ts.map +1 -0
  149. package/dist/memory/loader.js +419 -0
  150. package/dist/memory/loader.js.map +1 -0
  151. package/dist/memory/permissions.d.ts +282 -0
  152. package/dist/memory/permissions.d.ts.map +1 -0
  153. package/dist/memory/permissions.js +297 -0
  154. package/dist/memory/permissions.js.map +1 -0
  155. package/dist/memory/rules.d.ts +249 -0
  156. package/dist/memory/rules.d.ts.map +1 -0
  157. package/dist/memory/rules.js +362 -0
  158. package/dist/memory/rules.js.map +1 -0
  159. package/dist/memory/store.d.ts +286 -0
  160. package/dist/memory/store.d.ts.map +1 -0
  161. package/dist/memory/store.js +263 -0
  162. package/dist/memory/store.js.map +1 -0
  163. package/dist/middleware/apply.d.ts +73 -0
  164. package/dist/middleware/apply.d.ts.map +1 -0
  165. package/dist/middleware/apply.js +219 -0
  166. package/dist/middleware/apply.js.map +1 -0
  167. package/dist/middleware/context.d.ts +33 -0
  168. package/dist/middleware/context.d.ts.map +1 -0
  169. package/dist/middleware/context.js +176 -0
  170. package/dist/middleware/context.js.map +1 -0
  171. package/dist/middleware/index.d.ts +31 -0
  172. package/dist/middleware/index.d.ts.map +1 -0
  173. package/dist/middleware/index.js +32 -0
  174. package/dist/middleware/index.js.map +1 -0
  175. package/dist/middleware/logging.d.ts +137 -0
  176. package/dist/middleware/logging.d.ts.map +1 -0
  177. package/dist/middleware/logging.js +374 -0
  178. package/dist/middleware/logging.js.map +1 -0
  179. package/dist/middleware/types.d.ts +183 -0
  180. package/dist/middleware/types.d.ts.map +1 -0
  181. package/dist/middleware/types.js +11 -0
  182. package/dist/middleware/types.js.map +1 -0
  183. package/dist/observability/events.d.ts +183 -0
  184. package/dist/observability/events.d.ts.map +1 -0
  185. package/dist/observability/events.js +305 -0
  186. package/dist/observability/events.js.map +1 -0
  187. package/dist/observability/index.d.ts +55 -0
  188. package/dist/observability/index.d.ts.map +1 -0
  189. package/dist/observability/index.js +87 -0
  190. package/dist/observability/index.js.map +1 -0
  191. package/dist/observability/logger.d.ts +318 -0
  192. package/dist/observability/logger.d.ts.map +1 -0
  193. package/dist/observability/logger.js +436 -0
  194. package/dist/observability/logger.js.map +1 -0
  195. package/dist/observability/metrics.d.ts +341 -0
  196. package/dist/observability/metrics.d.ts.map +1 -0
  197. package/dist/observability/metrics.js +490 -0
  198. package/dist/observability/metrics.js.map +1 -0
  199. package/dist/observability/preset.d.ts +161 -0
  200. package/dist/observability/preset.d.ts.map +1 -0
  201. package/dist/observability/preset.js +133 -0
  202. package/dist/observability/preset.js.map +1 -0
  203. package/dist/observability/streaming.d.ts +113 -0
  204. package/dist/observability/streaming.d.ts.map +1 -0
  205. package/dist/observability/streaming.js +114 -0
  206. package/dist/observability/streaming.js.map +1 -0
  207. package/dist/observability/tracing.d.ts +378 -0
  208. package/dist/observability/tracing.d.ts.map +1 -0
  209. package/dist/observability/tracing.js +539 -0
  210. package/dist/observability/tracing.js.map +1 -0
  211. package/dist/plugins.d.ts +55 -0
  212. package/dist/plugins.d.ts.map +1 -0
  213. package/dist/plugins.js +63 -0
  214. package/dist/plugins.js.map +1 -0
  215. package/dist/presets/index.d.ts +7 -0
  216. package/dist/presets/index.d.ts.map +1 -0
  217. package/dist/presets/index.js +7 -0
  218. package/dist/presets/index.js.map +1 -0
  219. package/dist/presets/production.d.ts +262 -0
  220. package/dist/presets/production.d.ts.map +1 -0
  221. package/dist/presets/production.js +295 -0
  222. package/dist/presets/production.js.map +1 -0
  223. package/dist/security/index.d.ts +179 -0
  224. package/dist/security/index.d.ts.map +1 -0
  225. package/dist/security/index.js +323 -0
  226. package/dist/security/index.js.map +1 -0
  227. package/dist/subagents/advanced.d.ts +413 -0
  228. package/dist/subagents/advanced.d.ts.map +1 -0
  229. package/dist/subagents/advanced.js +396 -0
  230. package/dist/subagents/advanced.js.map +1 -0
  231. package/dist/subagents/index.d.ts +14 -0
  232. package/dist/subagents/index.d.ts.map +1 -0
  233. package/dist/subagents/index.js +15 -0
  234. package/dist/subagents/index.js.map +1 -0
  235. package/dist/subagents.d.ts +73 -0
  236. package/dist/subagents.d.ts.map +1 -0
  237. package/dist/subagents.js +213 -0
  238. package/dist/subagents.js.map +1 -0
  239. package/dist/task-store/file-store.d.ts +76 -0
  240. package/dist/task-store/file-store.d.ts.map +1 -0
  241. package/dist/task-store/file-store.js +190 -0
  242. package/dist/task-store/file-store.js.map +1 -0
  243. package/dist/task-store/index.d.ts +11 -0
  244. package/dist/task-store/index.d.ts.map +1 -0
  245. package/dist/task-store/index.js +10 -0
  246. package/dist/task-store/index.js.map +1 -0
  247. package/dist/task-store/kv-store.d.ts +140 -0
  248. package/dist/task-store/kv-store.d.ts.map +1 -0
  249. package/dist/task-store/kv-store.js +169 -0
  250. package/dist/task-store/kv-store.js.map +1 -0
  251. package/dist/task-store/memory-store.d.ts +66 -0
  252. package/dist/task-store/memory-store.d.ts.map +1 -0
  253. package/dist/task-store/memory-store.js +125 -0
  254. package/dist/task-store/memory-store.js.map +1 -0
  255. package/dist/task-store/types.d.ts +235 -0
  256. package/dist/task-store/types.d.ts.map +1 -0
  257. package/dist/task-store/types.js +110 -0
  258. package/dist/task-store/types.js.map +1 -0
  259. package/dist/testing/assertions.d.ts +401 -0
  260. package/dist/testing/assertions.d.ts.map +1 -0
  261. package/dist/testing/assertions.js +630 -0
  262. package/dist/testing/assertions.js.map +1 -0
  263. package/dist/testing/index.d.ts +343 -0
  264. package/dist/testing/index.d.ts.map +1 -0
  265. package/dist/testing/index.js +360 -0
  266. package/dist/testing/index.js.map +1 -0
  267. package/dist/testing/mock-agent.d.ts +214 -0
  268. package/dist/testing/mock-agent.d.ts.map +1 -0
  269. package/dist/testing/mock-agent.js +448 -0
  270. package/dist/testing/mock-agent.js.map +1 -0
  271. package/dist/testing/recorder.d.ts +288 -0
  272. package/dist/testing/recorder.d.ts.map +1 -0
  273. package/dist/testing/recorder.js +499 -0
  274. package/dist/testing/recorder.js.map +1 -0
  275. package/dist/tools/execute.d.ts +104 -0
  276. package/dist/tools/execute.d.ts.map +1 -0
  277. package/dist/tools/execute.js +191 -0
  278. package/dist/tools/execute.js.map +1 -0
  279. package/dist/tools/factory.d.ts +260 -0
  280. package/dist/tools/factory.d.ts.map +1 -0
  281. package/dist/tools/factory.js +241 -0
  282. package/dist/tools/factory.js.map +1 -0
  283. package/dist/tools/filesystem.d.ts +215 -0
  284. package/dist/tools/filesystem.d.ts.map +1 -0
  285. package/dist/tools/filesystem.js +311 -0
  286. package/dist/tools/filesystem.js.map +1 -0
  287. package/dist/tools/index.d.ts +33 -0
  288. package/dist/tools/index.d.ts.map +1 -0
  289. package/dist/tools/index.js +33 -0
  290. package/dist/tools/index.js.map +1 -0
  291. package/dist/tools/search.d.ts +59 -0
  292. package/dist/tools/search.d.ts.map +1 -0
  293. package/dist/tools/search.js +94 -0
  294. package/dist/tools/search.js.map +1 -0
  295. package/dist/tools/skills.d.ts +354 -0
  296. package/dist/tools/skills.d.ts.map +1 -0
  297. package/dist/tools/skills.js +413 -0
  298. package/dist/tools/skills.js.map +1 -0
  299. package/dist/tools/task.d.ts +272 -0
  300. package/dist/tools/task.d.ts.map +1 -0
  301. package/dist/tools/task.js +521 -0
  302. package/dist/tools/task.js.map +1 -0
  303. package/dist/tools/todos.d.ts +131 -0
  304. package/dist/tools/todos.d.ts.map +1 -0
  305. package/dist/tools/todos.js +120 -0
  306. package/dist/tools/todos.js.map +1 -0
  307. package/dist/tools/tool-registry.d.ts +424 -0
  308. package/dist/tools/tool-registry.d.ts.map +1 -0
  309. package/dist/tools/tool-registry.js +607 -0
  310. package/dist/tools/tool-registry.js.map +1 -0
  311. package/dist/tools/user-interaction.d.ts +116 -0
  312. package/dist/tools/user-interaction.d.ts.map +1 -0
  313. package/dist/tools/user-interaction.js +147 -0
  314. package/dist/tools/user-interaction.js.map +1 -0
  315. package/dist/tools/utils.d.ts +124 -0
  316. package/dist/tools/utils.d.ts.map +1 -0
  317. package/dist/tools/utils.js +189 -0
  318. package/dist/tools/utils.js.map +1 -0
  319. package/dist/tools.d.ts +74 -0
  320. package/dist/tools.d.ts.map +1 -0
  321. package/dist/tools.js +73 -0
  322. package/dist/tools.js.map +1 -0
  323. package/dist/types.d.ts +2421 -0
  324. package/dist/types.d.ts.map +1 -0
  325. package/dist/types.js +55 -0
  326. package/dist/types.js.map +1 -0
  327. package/package.json +81 -0
@@ -0,0 +1,413 @@
1
+ /**
2
+ * Advanced subagent system with context isolation and parallel execution.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import type { LanguageModel, ToolSet } from "ai";
7
+ import type { AgentState, TodoItem } from "../backends/state.js";
8
+ import type { Agent, GenerateResult } from "../types.js";
9
+ /**
10
+ * Enhanced subagent definition with additional capabilities.
11
+ *
12
+ * Extends the basic SubagentDefinition with:
13
+ * - Structured output schemas
14
+ * - Tool specification (subset or custom)
15
+ * - Interrupt conditions for human-in-the-loop
16
+ * - Model override
17
+ * - Maximum steps
18
+ *
19
+ * @category Subagents
20
+ */
21
+ export interface EnhancedSubagentDefinition {
22
+ /** Unique type identifier for this subagent */
23
+ type: string;
24
+ /** Description of what this subagent specializes in */
25
+ description: string;
26
+ /** System prompt for this subagent */
27
+ systemPrompt: string;
28
+ /**
29
+ * Tools available to this subagent.
30
+ * - If ToolSet: use these specific tools
31
+ * - If string[]: subset of parent tools by name
32
+ * - If undefined: inherit all parent tools
33
+ */
34
+ tools?: ToolSet | string[];
35
+ /**
36
+ * Model to use for this subagent.
37
+ * If not specified, inherits from parent.
38
+ */
39
+ model?: LanguageModel;
40
+ /** Maximum steps/turns for this subagent */
41
+ maxSteps?: number;
42
+ }
43
+ /**
44
+ * Options for creating an isolated subagent context.
45
+ *
46
+ * @category Subagents
47
+ */
48
+ export interface SubagentContextOptions {
49
+ /** Parent agent state to derive from */
50
+ parentState: AgentState;
51
+ /**
52
+ * Whether to share files with parent.
53
+ * @defaultValue true
54
+ */
55
+ shareFiles?: boolean;
56
+ /**
57
+ * Whether to isolate todos (give subagent empty todos).
58
+ * @defaultValue true
59
+ */
60
+ isolateTodos?: boolean;
61
+ /**
62
+ * Initial todos for the subagent (only used if isolateTodos is true).
63
+ */
64
+ initialTodos?: TodoItem[];
65
+ }
66
+ /**
67
+ * Isolated context for a subagent execution.
68
+ *
69
+ * @category Subagents
70
+ */
71
+ export interface SubagentContext {
72
+ /** The subagent's isolated state */
73
+ state: AgentState;
74
+ /** Reference to the parent state (for merging back) */
75
+ parentState: AgentState;
76
+ /** Whether files are shared with parent */
77
+ filesShared: boolean;
78
+ /** Whether todos are isolated */
79
+ todosIsolated: boolean;
80
+ }
81
+ /**
82
+ * Options for executing a subagent.
83
+ *
84
+ * @category Subagents
85
+ */
86
+ export interface SubagentExecutionOptions {
87
+ /** The subagent definition to execute */
88
+ definition: EnhancedSubagentDefinition;
89
+ /** The task/prompt for the subagent */
90
+ prompt: string;
91
+ /** Parent agent for inheriting configuration */
92
+ parentAgent: Agent;
93
+ /**
94
+ * Isolated context for the subagent.
95
+ * If not provided, context is created automatically.
96
+ */
97
+ context?: SubagentContext;
98
+ /**
99
+ * Maximum tokens for generation.
100
+ * If not specified, uses definition.maxSteps * 4096.
101
+ */
102
+ maxTokens?: number;
103
+ /**
104
+ * Abort signal for cancellation.
105
+ */
106
+ signal?: AbortSignal;
107
+ /**
108
+ * Callback when the subagent starts.
109
+ */
110
+ onStart?: (event: SubagentStartEvent) => void;
111
+ /**
112
+ * Callback for each step the subagent takes.
113
+ */
114
+ onStep?: (event: SubagentStepEvent) => void;
115
+ /**
116
+ * Callback when the subagent finishes.
117
+ */
118
+ onFinish?: (event: SubagentFinishEvent) => void;
119
+ /**
120
+ * Callback when an error occurs.
121
+ */
122
+ onError?: (event: SubagentErrorEvent) => void;
123
+ }
124
+ /**
125
+ * Result from executing a subagent.
126
+ *
127
+ * @category Subagents
128
+ */
129
+ export interface SubagentExecutionResult {
130
+ /** Whether execution succeeded */
131
+ success: boolean;
132
+ /** The generated text response */
133
+ text: string;
134
+ /** Structured output if schema was provided */
135
+ output?: unknown;
136
+ /** Number of steps taken */
137
+ steps: number;
138
+ /** Why generation finished */
139
+ finishReason: string;
140
+ /** Execution duration in milliseconds */
141
+ duration: number;
142
+ /** Error message if failed */
143
+ error?: string;
144
+ /** The subagent's final context (for merging back) */
145
+ context: SubagentContext;
146
+ /** Full generation result */
147
+ result?: GenerateResult;
148
+ }
149
+ /**
150
+ * Result from parallel subagent execution.
151
+ *
152
+ * @category Subagents
153
+ */
154
+ export interface ParallelExecutionResult {
155
+ /** Individual results for each subagent */
156
+ results: SubagentExecutionResult[];
157
+ /** Number of successful executions */
158
+ successCount: number;
159
+ /** Number of failed executions */
160
+ failureCount: number;
161
+ /** Total duration (max of individual durations) */
162
+ totalDuration: number;
163
+ /** Whether all executions succeeded */
164
+ allSucceeded: boolean;
165
+ }
166
+ /**
167
+ * Base event for subagent lifecycle.
168
+ *
169
+ * @category Subagents
170
+ */
171
+ export interface SubagentEvent {
172
+ /** Unique identifier for this execution */
173
+ executionId: string;
174
+ /** The subagent type */
175
+ subagentType: string;
176
+ /** Timestamp of the event */
177
+ timestamp: string;
178
+ }
179
+ /**
180
+ * Event emitted when a subagent starts.
181
+ *
182
+ * @category Subagents
183
+ */
184
+ export interface SubagentStartEvent extends SubagentEvent {
185
+ type: "subagent-start";
186
+ /** The task prompt */
187
+ prompt: string;
188
+ }
189
+ /**
190
+ * Event emitted for each subagent step.
191
+ *
192
+ * @category Subagents
193
+ */
194
+ export interface SubagentStepEvent extends SubagentEvent {
195
+ type: "subagent-step";
196
+ /** Step number (1-indexed) */
197
+ stepNumber: number;
198
+ /** Tool calls made in this step */
199
+ toolCalls: Array<{
200
+ toolName: string;
201
+ args: unknown;
202
+ result: unknown;
203
+ }>;
204
+ /** Text generated in this step */
205
+ text: string;
206
+ }
207
+ /**
208
+ * Event emitted when a subagent finishes.
209
+ *
210
+ * @category Subagents
211
+ */
212
+ export interface SubagentFinishEvent extends SubagentEvent {
213
+ type: "subagent-finish";
214
+ /** Whether execution succeeded */
215
+ success: boolean;
216
+ /** Summary of the result */
217
+ summary: string;
218
+ /** Total steps taken */
219
+ steps: number;
220
+ /** Execution duration in milliseconds */
221
+ duration: number;
222
+ /** Finish reason */
223
+ finishReason: string;
224
+ }
225
+ /**
226
+ * Event emitted when an error occurs.
227
+ *
228
+ * @category Subagents
229
+ */
230
+ export interface SubagentErrorEvent extends SubagentEvent {
231
+ type: "subagent-error";
232
+ /** The error that occurred */
233
+ error: Error;
234
+ /** Step number where error occurred (if applicable) */
235
+ stepNumber?: number;
236
+ }
237
+ /**
238
+ * Event emitter interface for subagent events.
239
+ *
240
+ * @category Subagents
241
+ */
242
+ export interface SubagentEventEmitter {
243
+ /** Register a listener for start events */
244
+ onStart(handler: (event: SubagentStartEvent) => void): void;
245
+ /** Register a listener for step events */
246
+ onStep(handler: (event: SubagentStepEvent) => void): void;
247
+ /** Register a listener for finish events */
248
+ onFinish(handler: (event: SubagentFinishEvent) => void): void;
249
+ /** Register a listener for error events */
250
+ onError(handler: (event: SubagentErrorEvent) => void): void;
251
+ /** Remove all listeners */
252
+ removeAllListeners(): void;
253
+ }
254
+ /**
255
+ * Creates an isolated context for subagent execution.
256
+ *
257
+ * By default:
258
+ * - Files are shared (subagent sees parent's files)
259
+ * - Todos are isolated (subagent gets empty todos)
260
+ *
261
+ * This follows the DeepAgentSDK pattern where files represent shared
262
+ * work product but todos represent the agent's internal planning.
263
+ *
264
+ * @param options - Context creation options
265
+ * @returns Isolated subagent context
266
+ *
267
+ * @example
268
+ * ```typescript
269
+ * const context = createSubagentContext({
270
+ * parentState: parentAgent.state,
271
+ * shareFiles: true,
272
+ * isolateTodos: true,
273
+ * });
274
+ *
275
+ * // Subagent can see parent's files
276
+ * // Subagent has empty todos
277
+ * ```
278
+ *
279
+ * @category Subagents
280
+ */
281
+ export declare function createSubagentContext(options: SubagentContextOptions): SubagentContext;
282
+ /**
283
+ * Merges subagent context changes back to parent.
284
+ *
285
+ * Only file changes are merged back (if files were shared).
286
+ * Todo changes are NOT merged (todos are isolated by design).
287
+ *
288
+ * @param context - The subagent context to merge
289
+ *
290
+ * @example
291
+ * ```typescript
292
+ * // After subagent completes
293
+ * mergeSubagentContext(result.context);
294
+ *
295
+ * // Parent now has any files the subagent created/modified
296
+ * ```
297
+ *
298
+ * @category Subagents
299
+ */
300
+ export declare function mergeSubagentContext(context: SubagentContext): void;
301
+ /**
302
+ * Executes a subagent with isolated context.
303
+ *
304
+ * Creates a subagent from the definition, executes the prompt,
305
+ * and returns the result with the final context for merging.
306
+ *
307
+ * @param options - Execution options
308
+ * @returns Execution result with context
309
+ *
310
+ * @example
311
+ * ```typescript
312
+ * const result = await executeSubagent({
313
+ * definition: {
314
+ * type: "researcher",
315
+ * description: "Researches topics",
316
+ * systemPrompt: "You are a research assistant.",
317
+ * },
318
+ * prompt: "Research the history of TypeScript",
319
+ * parentAgent,
320
+ * hooks,
321
+ * onStep: (event) => console.log(`Step ${event.stepNumber}`),
322
+ * });
323
+ *
324
+ * if (result.success) {
325
+ * mergeSubagentContext(result.context);
326
+ * console.log(result.text);
327
+ * }
328
+ * ```
329
+ *
330
+ * @category Subagents
331
+ */
332
+ export declare function executeSubagent(options: SubagentExecutionOptions): Promise<SubagentExecutionResult>;
333
+ /**
334
+ * Options for a single parallel execution task.
335
+ *
336
+ * @category Subagents
337
+ */
338
+ export interface ParallelTask {
339
+ /** The subagent definition */
340
+ definition: EnhancedSubagentDefinition;
341
+ /** The prompt for this task */
342
+ prompt: string;
343
+ }
344
+ /**
345
+ * Executes multiple subagents in parallel.
346
+ *
347
+ * All subagents share the same parent context initially.
348
+ * After completion, file changes from all subagents are merged back.
349
+ *
350
+ * Note: If multiple subagents modify the same file, the last one wins.
351
+ * For better conflict handling, consider using different file paths.
352
+ *
353
+ * @param tasks - Array of tasks to execute
354
+ * @param parentAgent - Parent agent for configuration
355
+ * @param onResult - Optional callback for each completed task
356
+ * @returns Combined results from all executions
357
+ *
358
+ * @example
359
+ * ```typescript
360
+ * const results = await executeSubagentsParallel(
361
+ * [
362
+ * {
363
+ * definition: researcherDef,
364
+ * prompt: "Research TypeScript history",
365
+ * },
366
+ * {
367
+ * definition: coderDef,
368
+ * prompt: "Write a utility function",
369
+ * },
370
+ * ],
371
+ * parentAgent,
372
+ * (result, index) => console.log(`Task ${index} completed`),
373
+ * );
374
+ *
375
+ * console.log(`${results.successCount}/${results.results.length} succeeded`);
376
+ * ```
377
+ *
378
+ * @category Subagents
379
+ */
380
+ export declare function executeSubagentsParallel(tasks: ParallelTask[], parentAgent: Agent, onResult?: (result: SubagentExecutionResult, index: number) => void): Promise<ParallelExecutionResult>;
381
+ /**
382
+ * Creates an event emitter for subagent lifecycle events.
383
+ *
384
+ * Provides a convenient way to handle all subagent events
385
+ * without passing individual callbacks.
386
+ *
387
+ * @returns Event emitter instance
388
+ *
389
+ * @example
390
+ * ```typescript
391
+ * const emitter = createSubagentEventEmitter();
392
+ *
393
+ * emitter.onStart((event) => {
394
+ * console.log(`Starting ${event.subagentType}: ${event.prompt}`);
395
+ * });
396
+ *
397
+ * emitter.onStep((event) => {
398
+ * console.log(`Step ${event.stepNumber}: ${event.toolCalls.length} tool calls`);
399
+ * });
400
+ *
401
+ * emitter.onFinish((event) => {
402
+ * console.log(`Finished in ${event.duration}ms: ${event.summary}`);
403
+ * });
404
+ *
405
+ * emitter.onError((event) => {
406
+ * console.error(`Error: ${event.error.message}`);
407
+ * });
408
+ * ```
409
+ *
410
+ * @category Subagents
411
+ */
412
+ export declare function createSubagentEventEmitter(): SubagentEventEmitter;
413
+ //# sourceMappingURL=advanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../src/subagents/advanced.ts"],"names":[],"mappings":"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"}