@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,396 @@
1
+ /**
2
+ * Advanced subagent system with context isolation and parallel execution.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import { createSubagent } from "../subagents.js";
7
+ // =============================================================================
8
+ // Context Management
9
+ // =============================================================================
10
+ let executionIdCounter = 0;
11
+ /**
12
+ * Creates an isolated context for subagent execution.
13
+ *
14
+ * By default:
15
+ * - Files are shared (subagent sees parent's files)
16
+ * - Todos are isolated (subagent gets empty todos)
17
+ *
18
+ * This follows the DeepAgentSDK pattern where files represent shared
19
+ * work product but todos represent the agent's internal planning.
20
+ *
21
+ * @param options - Context creation options
22
+ * @returns Isolated subagent context
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const context = createSubagentContext({
27
+ * parentState: parentAgent.state,
28
+ * shareFiles: true,
29
+ * isolateTodos: true,
30
+ * });
31
+ *
32
+ * // Subagent can see parent's files
33
+ * // Subagent has empty todos
34
+ * ```
35
+ *
36
+ * @category Subagents
37
+ */
38
+ export function createSubagentContext(options) {
39
+ const { parentState, shareFiles = true, isolateTodos = true, initialTodos = [] } = options;
40
+ // Create isolated state
41
+ const state = {
42
+ // Share or copy files based on option
43
+ files: shareFiles ? parentState.files : { ...parentState.files },
44
+ // Isolate or inherit todos based on option
45
+ todos: isolateTodos ? [...initialTodos] : [...parentState.todos],
46
+ };
47
+ return {
48
+ state,
49
+ parentState,
50
+ filesShared: shareFiles,
51
+ todosIsolated: isolateTodos,
52
+ };
53
+ }
54
+ /**
55
+ * Merges subagent context changes back to parent.
56
+ *
57
+ * Only file changes are merged back (if files were shared).
58
+ * Todo changes are NOT merged (todos are isolated by design).
59
+ *
60
+ * @param context - The subagent context to merge
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * // After subagent completes
65
+ * mergeSubagentContext(result.context);
66
+ *
67
+ * // Parent now has any files the subagent created/modified
68
+ * ```
69
+ *
70
+ * @category Subagents
71
+ */
72
+ export function mergeSubagentContext(context) {
73
+ // Only merge files if they were shared (meaning mutations affect parent)
74
+ // If files weren't shared, we need to copy changes back
75
+ if (!context.filesShared) {
76
+ // Merge file changes back to parent
77
+ Object.assign(context.parentState.files, context.state.files);
78
+ }
79
+ // Note: If filesShared is true, the state.files is the same object as
80
+ // parentState.files, so changes are already reflected.
81
+ // Todos are intentionally NOT merged - they represent the subagent's
82
+ // internal planning and are discarded after execution.
83
+ }
84
+ // =============================================================================
85
+ // Subagent Execution
86
+ // =============================================================================
87
+ /**
88
+ * Executes a subagent with isolated context.
89
+ *
90
+ * Creates a subagent from the definition, executes the prompt,
91
+ * and returns the result with the final context for merging.
92
+ *
93
+ * @param options - Execution options
94
+ * @returns Execution result with context
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * const result = await executeSubagent({
99
+ * definition: {
100
+ * type: "researcher",
101
+ * description: "Researches topics",
102
+ * systemPrompt: "You are a research assistant.",
103
+ * },
104
+ * prompt: "Research the history of TypeScript",
105
+ * parentAgent,
106
+ * hooks,
107
+ * onStep: (event) => console.log(`Step ${event.stepNumber}`),
108
+ * });
109
+ *
110
+ * if (result.success) {
111
+ * mergeSubagentContext(result.context);
112
+ * console.log(result.text);
113
+ * }
114
+ * ```
115
+ *
116
+ * @category Subagents
117
+ */
118
+ export async function executeSubagent(options) {
119
+ const { definition, prompt, parentAgent, maxTokens, signal, onStart, onStep, onFinish, onError } = options;
120
+ // Generate execution ID
121
+ const executionId = `subagent-${++executionIdCounter}-${Date.now()}`;
122
+ const startTime = Date.now();
123
+ // Create or use provided context
124
+ const context = options.context ??
125
+ createSubagentContext({
126
+ parentState: parentAgent.state,
127
+ shareFiles: true,
128
+ isolateTodos: true,
129
+ });
130
+ // Emit start event
131
+ const startEvent = {
132
+ type: "subagent-start",
133
+ executionId,
134
+ subagentType: definition.type,
135
+ timestamp: new Date().toISOString(),
136
+ prompt,
137
+ };
138
+ onStart?.(startEvent);
139
+ try {
140
+ // Resolve tools for subagent
141
+ let subagentTools;
142
+ if (definition.tools) {
143
+ if (Array.isArray(definition.tools)) {
144
+ // Subset of parent tools by name
145
+ const parentTools = parentAgent.options.tools ?? {};
146
+ subagentTools = {};
147
+ for (const toolName of definition.tools) {
148
+ const tool = parentTools[toolName];
149
+ if (tool) {
150
+ subagentTools[toolName] = tool;
151
+ }
152
+ }
153
+ }
154
+ else {
155
+ // Use provided tools directly
156
+ subagentTools = definition.tools;
157
+ }
158
+ }
159
+ else {
160
+ // Inherit parent tools
161
+ subagentTools = parentAgent.options.tools;
162
+ }
163
+ // Create the subagent
164
+ const subagent = createSubagent(parentAgent, {
165
+ name: definition.type,
166
+ description: definition.description,
167
+ model: definition.model,
168
+ systemPrompt: definition.systemPrompt,
169
+ maxSteps: definition.maxSteps,
170
+ tools: subagentTools,
171
+ });
172
+ // Execute generation
173
+ const effectiveMaxTokens = maxTokens ?? (definition.maxSteps ?? 10) * 4096;
174
+ const result = await subagent.generate({
175
+ prompt,
176
+ maxTokens: effectiveMaxTokens,
177
+ signal,
178
+ });
179
+ // Handle interrupted results
180
+ if (result.status === "interrupted") {
181
+ const duration = Date.now() - startTime;
182
+ return {
183
+ success: false,
184
+ text: result.partial?.text ?? "",
185
+ output: undefined,
186
+ steps: result.partial?.steps?.length ?? 0,
187
+ finishReason: "interrupted",
188
+ duration,
189
+ context,
190
+ result,
191
+ error: `Subagent was interrupted: ${result.interrupt.type}`,
192
+ };
193
+ }
194
+ // Emit step events for each step
195
+ let stepNumber = 0;
196
+ for (const step of result.steps) {
197
+ stepNumber++;
198
+ const stepEvent = {
199
+ type: "subagent-step",
200
+ executionId,
201
+ subagentType: definition.type,
202
+ timestamp: new Date().toISOString(),
203
+ stepNumber,
204
+ toolCalls: step.toolCalls.map((tc) => ({
205
+ toolName: tc.toolName,
206
+ args: tc.input,
207
+ result: step.toolResults.find((tr) => tr.toolCallId === tc.toolCallId)?.output,
208
+ })),
209
+ text: step.text,
210
+ };
211
+ onStep?.(stepEvent);
212
+ }
213
+ const duration = Date.now() - startTime;
214
+ // Emit finish event
215
+ const finishEvent = {
216
+ type: "subagent-finish",
217
+ executionId,
218
+ subagentType: definition.type,
219
+ timestamp: new Date().toISOString(),
220
+ success: true,
221
+ summary: result.text.slice(0, 200) + (result.text.length > 200 ? "..." : ""),
222
+ steps: result.steps.length,
223
+ duration,
224
+ finishReason: result.finishReason,
225
+ };
226
+ onFinish?.(finishEvent);
227
+ return {
228
+ success: true,
229
+ text: result.text,
230
+ output: result.output,
231
+ steps: result.steps.length,
232
+ finishReason: result.finishReason,
233
+ duration,
234
+ context,
235
+ result,
236
+ };
237
+ }
238
+ catch (error) {
239
+ const duration = Date.now() - startTime;
240
+ const errorObj = error instanceof Error ? error : new Error(String(error));
241
+ // Emit error event
242
+ const errorEvent = {
243
+ type: "subagent-error",
244
+ executionId,
245
+ subagentType: definition.type,
246
+ timestamp: new Date().toISOString(),
247
+ error: errorObj,
248
+ };
249
+ onError?.(errorEvent);
250
+ return {
251
+ success: false,
252
+ text: "",
253
+ steps: 0,
254
+ finishReason: "error",
255
+ duration,
256
+ error: errorObj.message,
257
+ context,
258
+ };
259
+ }
260
+ }
261
+ /**
262
+ * Executes multiple subagents in parallel.
263
+ *
264
+ * All subagents share the same parent context initially.
265
+ * After completion, file changes from all subagents are merged back.
266
+ *
267
+ * Note: If multiple subagents modify the same file, the last one wins.
268
+ * For better conflict handling, consider using different file paths.
269
+ *
270
+ * @param tasks - Array of tasks to execute
271
+ * @param parentAgent - Parent agent for configuration
272
+ * @param onResult - Optional callback for each completed task
273
+ * @returns Combined results from all executions
274
+ *
275
+ * @example
276
+ * ```typescript
277
+ * const results = await executeSubagentsParallel(
278
+ * [
279
+ * {
280
+ * definition: researcherDef,
281
+ * prompt: "Research TypeScript history",
282
+ * },
283
+ * {
284
+ * definition: coderDef,
285
+ * prompt: "Write a utility function",
286
+ * },
287
+ * ],
288
+ * parentAgent,
289
+ * (result, index) => console.log(`Task ${index} completed`),
290
+ * );
291
+ *
292
+ * console.log(`${results.successCount}/${results.results.length} succeeded`);
293
+ * ```
294
+ *
295
+ * @category Subagents
296
+ */
297
+ export async function executeSubagentsParallel(tasks, parentAgent, onResult) {
298
+ const startTime = Date.now();
299
+ // Create isolated contexts for each task
300
+ // Note: Files are shared via reference, so changes from one subagent
301
+ // are visible to others. This is intentional for collaboration.
302
+ const contexts = tasks.map(() => createSubagentContext({
303
+ parentState: parentAgent.state,
304
+ shareFiles: true,
305
+ isolateTodos: true,
306
+ }));
307
+ // Execute all tasks in parallel
308
+ const results = await Promise.all(tasks.map(async (task, index) => {
309
+ const result = await executeSubagent({
310
+ definition: task.definition,
311
+ prompt: task.prompt,
312
+ parentAgent,
313
+ context: contexts[index],
314
+ });
315
+ onResult?.(result, index);
316
+ return result;
317
+ }));
318
+ // Merge contexts (file changes already reflected due to shared reference)
319
+ // Just ensure any non-shared contexts are merged
320
+ for (const result of results) {
321
+ if (!result.context.filesShared) {
322
+ mergeSubagentContext(result.context);
323
+ }
324
+ }
325
+ const totalDuration = Date.now() - startTime;
326
+ const successCount = results.filter((r) => r.success).length;
327
+ const failureCount = results.length - successCount;
328
+ return {
329
+ results,
330
+ successCount,
331
+ failureCount,
332
+ totalDuration,
333
+ allSucceeded: failureCount === 0,
334
+ };
335
+ }
336
+ // =============================================================================
337
+ // Event Emitter
338
+ // =============================================================================
339
+ /**
340
+ * Creates an event emitter for subagent lifecycle events.
341
+ *
342
+ * Provides a convenient way to handle all subagent events
343
+ * without passing individual callbacks.
344
+ *
345
+ * @returns Event emitter instance
346
+ *
347
+ * @example
348
+ * ```typescript
349
+ * const emitter = createSubagentEventEmitter();
350
+ *
351
+ * emitter.onStart((event) => {
352
+ * console.log(`Starting ${event.subagentType}: ${event.prompt}`);
353
+ * });
354
+ *
355
+ * emitter.onStep((event) => {
356
+ * console.log(`Step ${event.stepNumber}: ${event.toolCalls.length} tool calls`);
357
+ * });
358
+ *
359
+ * emitter.onFinish((event) => {
360
+ * console.log(`Finished in ${event.duration}ms: ${event.summary}`);
361
+ * });
362
+ *
363
+ * emitter.onError((event) => {
364
+ * console.error(`Error: ${event.error.message}`);
365
+ * });
366
+ * ```
367
+ *
368
+ * @category Subagents
369
+ */
370
+ export function createSubagentEventEmitter() {
371
+ const startHandlers = [];
372
+ const stepHandlers = [];
373
+ const finishHandlers = [];
374
+ const errorHandlers = [];
375
+ return {
376
+ onStart(handler) {
377
+ startHandlers.push(handler);
378
+ },
379
+ onStep(handler) {
380
+ stepHandlers.push(handler);
381
+ },
382
+ onFinish(handler) {
383
+ finishHandlers.push(handler);
384
+ },
385
+ onError(handler) {
386
+ errorHandlers.push(handler);
387
+ },
388
+ removeAllListeners() {
389
+ startHandlers.length = 0;
390
+ stepHandlers.length = 0;
391
+ finishHandlers.length = 0;
392
+ errorHandlers.length = 0;
393
+ },
394
+ };
395
+ }
396
+ //# sourceMappingURL=advanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.js","sourceRoot":"","sources":["../../src/subagents/advanced.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Advanced subagent system with context isolation and parallel execution.
3
+ *
4
+ * This module provides:
5
+ * - Enhanced subagent definitions with output schemas and interrupt support
6
+ * - Context isolation (files shared, todos isolated)
7
+ * - Parallel execution of multiple subagents
8
+ * - Event streaming for subagent lifecycle
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ export type { SubagentDefinition, SubagentOptions, TaskToolOptions, } from "../types.js";
13
+ export { createSubagentContext, createSubagentEventEmitter, type EnhancedSubagentDefinition, executeSubagent, executeSubagentsParallel, mergeSubagentContext, type ParallelExecutionResult, type ParallelTask, type SubagentContext, type SubagentContextOptions, type SubagentErrorEvent, type SubagentEvent, type SubagentEventEmitter, type SubagentExecutionOptions, type SubagentExecutionResult, type SubagentFinishEvent, type SubagentStartEvent, type SubagentStepEvent, } from "./advanced.js";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/subagents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EAEV,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,qBAAqB,EACrB,0BAA0B,EAE1B,KAAK,0BAA0B,EAC/B,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Advanced subagent system with context isolation and parallel execution.
3
+ *
4
+ * This module provides:
5
+ * - Enhanced subagent definitions with output schemas and interrupt support
6
+ * - Context isolation (files shared, todos isolated)
7
+ * - Parallel execution of multiple subagents
8
+ * - Event streaming for subagent lifecycle
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ export {
13
+ // Functions
14
+ createSubagentContext, createSubagentEventEmitter, executeSubagent, executeSubagentsParallel, mergeSubagentContext, } from "./advanced.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/subagents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO;AACL,YAAY;AACZ,qBAAqB,EACrB,0BAA0B,EAG1B,eAAe,EACf,wBAAwB,EACxB,oBAAoB,GAarB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Subagent creation and task delegation.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import type { Agent, SubagentOptions } from "./types.js";
7
+ /**
8
+ * Creates a subagent that inherits configuration from a parent agent.
9
+ *
10
+ * Subagents are specialized agents that can be spawned by a parent agent
11
+ * to handle specific tasks. They can inherit the parent's model or use
12
+ * their own, and can have their own tools, plugins, and configuration.
13
+ *
14
+ * **Hook Inheritance**:
15
+ * By default, subagents inherit all hooks from their parent agent. You can control
16
+ * this behavior with the `inheritHooks` option:
17
+ * - `true` (default): Inherit all parent hooks
18
+ * - `false`: No inheritance, use only subagent's own hooks
19
+ * - `string[]`: Inherit only specific hook events
20
+ *
21
+ * **Tool Filtering Security**:
22
+ * When `allowedTools` is specified, subagent gets access to only those tools.
23
+ * A warning is logged if dangerous tools (bash, write, edit, rm, etc.) are included
24
+ * without explicit opt-in via `inheritHooks: false` or specific hook controls.
25
+ *
26
+ * @param parentAgent - The parent agent to inherit configuration from
27
+ * @param options - Configuration options for the subagent
28
+ * @returns A new agent instance configured as a subagent
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * import { createAgent, createSubagent } from "@lleverage-ai/agent-sdk";
33
+ * import { anthropic } from "@ai-sdk/anthropic";
34
+ * import { tool } from "ai";
35
+ * import { z } from "zod";
36
+ *
37
+ * const mainAgent = createAgent({
38
+ * model: anthropic("claude-sonnet-4-20250514"),
39
+ * systemPrompt: "You are a helpful assistant.",
40
+ * hooks: {
41
+ * PreToolUse: [{
42
+ * callback: async (input) => {
43
+ * console.log("Parent hook:", input.tool_name);
44
+ * return {};
45
+ * },
46
+ * }],
47
+ * },
48
+ * });
49
+ *
50
+ * // Create a specialized subagent for code review
51
+ * const reviewerAgent = createSubagent(mainAgent, {
52
+ * name: "code-reviewer",
53
+ * description: "Reviews code for quality and best practices",
54
+ * systemPrompt: "You are an expert code reviewer.",
55
+ * inheritHooks: true, // Inherits parent's PreToolUse hook
56
+ * tools: {
57
+ * analyze: tool({
58
+ * description: "Analyze code",
59
+ * inputSchema: z.object({ code: z.string() }),
60
+ * execute: async ({ code }) => analyzeCode(code),
61
+ * }),
62
+ * },
63
+ * });
64
+ *
65
+ * const result = await reviewerAgent.generate({
66
+ * prompt: "Review this function: function add(a, b) { return a + b; }",
67
+ * });
68
+ * ```
69
+ *
70
+ * @category Subagents
71
+ */
72
+ export declare function createSubagent(parentAgent: Agent, options: SubagentOptions): Agent;
73
+ //# sourceMappingURL=subagents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagents.d.ts","sourceRoot":"","sources":["../src/subagents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAoB,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,KAAK,CAoClF"}