@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,219 @@
1
+ /**
2
+ * Middleware application utilities.
3
+ *
4
+ * Applies middleware to collect hooks and manages middleware lifecycle.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ import { createMiddlewareContext } from "./context.js";
9
+ /**
10
+ * Applies an array of middleware and returns the combined HookRegistration.
11
+ *
12
+ * Processes middleware in order, preserving hook registration order.
13
+ * Each middleware's hooks are added to the combined registration in the
14
+ * order the middleware appears in the array.
15
+ *
16
+ * @param middleware - Array of middleware to apply
17
+ * @returns Combined HookRegistration from all middleware
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const middleware = [
22
+ * createLoggingMiddleware({ transport: consoleTransport }),
23
+ * createMetricsMiddleware({ registry }),
24
+ * ];
25
+ *
26
+ * const hooks = applyMiddleware(middleware);
27
+ * // hooks contains all hooks from both middleware
28
+ * ```
29
+ *
30
+ * @category Middleware
31
+ */
32
+ export function applyMiddleware(middleware) {
33
+ if (middleware.length === 0) {
34
+ return {};
35
+ }
36
+ // Create a shared context that all middleware will register into
37
+ const { context, getHooks } = createMiddlewareContext();
38
+ // Let each middleware register its hooks
39
+ for (const mw of middleware) {
40
+ try {
41
+ mw.register(context);
42
+ }
43
+ catch (error) {
44
+ console.error(`Error registering middleware "${mw.name}":`, error);
45
+ // Continue with other middleware even if one fails
46
+ }
47
+ }
48
+ return getHooks();
49
+ }
50
+ /**
51
+ * Calls setup on all middleware that have a setup method.
52
+ *
53
+ * @param middleware - Array of middleware to setup
54
+ * @returns Promise that resolves when all setup is complete
55
+ *
56
+ * @category Middleware
57
+ */
58
+ export async function setupMiddleware(middleware) {
59
+ const setupPromises = middleware
60
+ .filter((mw) => mw.setup !== undefined)
61
+ .map(async (mw) => {
62
+ try {
63
+ await mw.setup();
64
+ }
65
+ catch (error) {
66
+ console.error(`Error in middleware "${mw.name}" setup:`, error);
67
+ }
68
+ });
69
+ await Promise.all(setupPromises);
70
+ }
71
+ /**
72
+ * Calls teardown on all middleware that have a teardown method.
73
+ *
74
+ * @param middleware - Array of middleware to teardown
75
+ * @returns Promise that resolves when all teardown is complete
76
+ *
77
+ * @category Middleware
78
+ */
79
+ export async function teardownMiddleware(middleware) {
80
+ const teardownPromises = middleware
81
+ .filter((mw) => mw.teardown !== undefined)
82
+ .map(async (mw) => {
83
+ try {
84
+ await mw.teardown();
85
+ }
86
+ catch (error) {
87
+ console.error(`Error in middleware "${mw.name}" teardown:`, error);
88
+ }
89
+ });
90
+ await Promise.all(teardownPromises);
91
+ }
92
+ /**
93
+ * Merges multiple HookRegistration objects into one.
94
+ *
95
+ * Hooks are concatenated in order for each event type. This allows
96
+ * combining hooks from middleware with explicitly provided hooks.
97
+ *
98
+ * @param registrations - HookRegistration objects to merge
99
+ * @returns Merged HookRegistration
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * const middlewareHooks = applyMiddleware(middleware);
104
+ * const explicitHooks = { PreToolUse: [{ matcher: "bash", hooks: [requireApproval] }] };
105
+ *
106
+ * const merged = mergeHooks(middlewareHooks, explicitHooks);
107
+ * // merged contains hooks from both, with middleware hooks first
108
+ * ```
109
+ *
110
+ * @category Middleware
111
+ */
112
+ export function mergeHooks(...registrations) {
113
+ const result = {};
114
+ for (const reg of registrations) {
115
+ if (!reg)
116
+ continue;
117
+ // Merge generation hooks (arrays of HookCallback)
118
+ if (reg.PreGenerate) {
119
+ result.PreGenerate = [...(result.PreGenerate ?? []), ...reg.PreGenerate];
120
+ }
121
+ if (reg.PostGenerate) {
122
+ result.PostGenerate = [...(result.PostGenerate ?? []), ...reg.PostGenerate];
123
+ }
124
+ if (reg.PostGenerateFailure) {
125
+ result.PostGenerateFailure = [
126
+ ...(result.PostGenerateFailure ?? []),
127
+ ...reg.PostGenerateFailure,
128
+ ];
129
+ }
130
+ // Merge tool hooks (arrays of HookMatcher)
131
+ if (reg.PreToolUse) {
132
+ result.PreToolUse = mergeToolHooks(result.PreToolUse, reg.PreToolUse);
133
+ }
134
+ if (reg.PostToolUse) {
135
+ result.PostToolUse = mergeToolHooks(result.PostToolUse, reg.PostToolUse);
136
+ }
137
+ if (reg.PostToolUseFailure) {
138
+ result.PostToolUseFailure = mergeToolHooks(result.PostToolUseFailure, reg.PostToolUseFailure);
139
+ }
140
+ // Merge compaction hooks
141
+ if (reg.PreCompact) {
142
+ result.PreCompact = [...(result.PreCompact ?? []), ...reg.PreCompact];
143
+ }
144
+ if (reg.PostCompact) {
145
+ result.PostCompact = [...(result.PostCompact ?? []), ...reg.PostCompact];
146
+ }
147
+ // Merge session hooks
148
+ if (reg.SessionStart) {
149
+ result.SessionStart = [...(result.SessionStart ?? []), ...reg.SessionStart];
150
+ }
151
+ if (reg.SessionEnd) {
152
+ result.SessionEnd = [...(result.SessionEnd ?? []), ...reg.SessionEnd];
153
+ }
154
+ // Merge subagent hooks
155
+ if (reg.SubagentStart) {
156
+ result.SubagentStart = [...(result.SubagentStart ?? []), ...reg.SubagentStart];
157
+ }
158
+ if (reg.SubagentStop) {
159
+ result.SubagentStop = [...(result.SubagentStop ?? []), ...reg.SubagentStop];
160
+ }
161
+ // Merge MCP hooks
162
+ if (reg.MCPConnectionFailed) {
163
+ result.MCPConnectionFailed = [
164
+ ...(result.MCPConnectionFailed ?? []),
165
+ ...reg.MCPConnectionFailed,
166
+ ];
167
+ }
168
+ if (reg.MCPConnectionRestored) {
169
+ result.MCPConnectionRestored = [
170
+ ...(result.MCPConnectionRestored ?? []),
171
+ ...reg.MCPConnectionRestored,
172
+ ];
173
+ }
174
+ // Merge tool registry hooks
175
+ if (reg.ToolRegistered) {
176
+ result.ToolRegistered = [...(result.ToolRegistered ?? []), ...reg.ToolRegistered];
177
+ }
178
+ if (reg.ToolLoadError) {
179
+ result.ToolLoadError = [...(result.ToolLoadError ?? []), ...reg.ToolLoadError];
180
+ }
181
+ }
182
+ return result;
183
+ }
184
+ /**
185
+ * Merges tool hook matchers.
186
+ *
187
+ * Tool hooks use HookMatcher arrays which need special handling.
188
+ * Matchers with the same pattern have their hooks combined.
189
+ *
190
+ * @param existing - Existing tool hook matchers
191
+ * @param incoming - Incoming tool hook matchers
192
+ * @returns Merged tool hook matchers
193
+ *
194
+ * @internal
195
+ */
196
+ function mergeToolHooks(existing, incoming) {
197
+ if (!existing) {
198
+ return [...incoming];
199
+ }
200
+ const result = [...existing];
201
+ for (const incomingMatcher of incoming) {
202
+ // Look for existing matcher with same pattern
203
+ const existingIndex = result.findIndex((m) => m.matcher === incomingMatcher.matcher);
204
+ if (existingIndex >= 0) {
205
+ // Merge hooks into existing matcher
206
+ const existingMatcher = result[existingIndex];
207
+ result[existingIndex] = {
208
+ ...existingMatcher,
209
+ hooks: [...existingMatcher.hooks, ...incomingMatcher.hooks],
210
+ };
211
+ }
212
+ else {
213
+ // Add new matcher
214
+ result.push(incomingMatcher);
215
+ }
216
+ }
217
+ return result;
218
+ }
219
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/middleware/apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Middleware context implementation.
3
+ *
4
+ * Creates a context that collects hook registrations from middleware.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ import type { MiddlewareContextResult } from "./types.js";
9
+ /**
10
+ * Creates a middleware context that collects hook registrations.
11
+ *
12
+ * The context provides methods for middleware to register hooks for various
13
+ * lifecycle events. Hooks are collected and can be retrieved as a
14
+ * HookRegistration object.
15
+ *
16
+ * @returns The context and a function to get the collected hooks
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const { context, getHooks } = createMiddlewareContext();
21
+ *
22
+ * // Middleware registers hooks through the context
23
+ * middleware.register(context);
24
+ *
25
+ * // Get the collected hooks as HookRegistration
26
+ * const hooks = getHooks();
27
+ * ```
28
+ *
29
+ * @category Middleware
30
+ * @internal
31
+ */
32
+ export declare function createMiddlewareContext(): MiddlewareContextResult;
33
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAqB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,uBAAuB,IAAI,uBAAuB,CA0KjE"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Middleware context implementation.
3
+ *
4
+ * Creates a context that collects hook registrations from middleware.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ /**
9
+ * Creates a middleware context that collects hook registrations.
10
+ *
11
+ * The context provides methods for middleware to register hooks for various
12
+ * lifecycle events. Hooks are collected and can be retrieved as a
13
+ * HookRegistration object.
14
+ *
15
+ * @returns The context and a function to get the collected hooks
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const { context, getHooks } = createMiddlewareContext();
20
+ *
21
+ * // Middleware registers hooks through the context
22
+ * middleware.register(context);
23
+ *
24
+ * // Get the collected hooks as HookRegistration
25
+ * const hooks = getHooks();
26
+ * ```
27
+ *
28
+ * @category Middleware
29
+ * @internal
30
+ */
31
+ export function createMiddlewareContext() {
32
+ // Storage for collected hooks
33
+ const preGenerate = [];
34
+ const postGenerate = [];
35
+ const postGenerateFailure = [];
36
+ const preToolUse = [];
37
+ const postToolUse = [];
38
+ const postToolUseFailure = [];
39
+ const preCompact = [];
40
+ const postCompact = [];
41
+ const sessionStart = [];
42
+ const sessionEnd = [];
43
+ const subagentStart = [];
44
+ const subagentStop = [];
45
+ const mcpConnectionFailed = [];
46
+ const mcpConnectionRestored = [];
47
+ const interruptRequested = [];
48
+ const interruptResolved = [];
49
+ /**
50
+ * Helper to add a tool hook with optional matcher.
51
+ */
52
+ function addToolHook(storage, callback, matcher) {
53
+ // Find existing matcher or create new one
54
+ const existingMatcher = storage.find((m) => m.matcher === matcher);
55
+ if (existingMatcher) {
56
+ existingMatcher.hooks.push(callback);
57
+ }
58
+ else {
59
+ storage.push({
60
+ matcher,
61
+ hooks: [callback],
62
+ });
63
+ }
64
+ }
65
+ const context = {
66
+ onPreGenerate(callback) {
67
+ preGenerate.push(callback);
68
+ },
69
+ onPostGenerate(callback) {
70
+ postGenerate.push(callback);
71
+ },
72
+ onPostGenerateFailure(callback) {
73
+ postGenerateFailure.push(callback);
74
+ },
75
+ onPreToolUse(callback, matcher) {
76
+ addToolHook(preToolUse, callback, matcher);
77
+ },
78
+ onPostToolUse(callback, matcher) {
79
+ addToolHook(postToolUse, callback, matcher);
80
+ },
81
+ onPostToolUseFailure(callback, matcher) {
82
+ addToolHook(postToolUseFailure, callback, matcher);
83
+ },
84
+ onPreCompact(callback) {
85
+ preCompact.push(callback);
86
+ },
87
+ onPostCompact(callback) {
88
+ postCompact.push(callback);
89
+ },
90
+ onSessionStart(callback) {
91
+ sessionStart.push(callback);
92
+ },
93
+ onSessionEnd(callback) {
94
+ sessionEnd.push(callback);
95
+ },
96
+ onSubagentStart(callback) {
97
+ subagentStart.push(callback);
98
+ },
99
+ onSubagentStop(callback) {
100
+ subagentStop.push(callback);
101
+ },
102
+ onMCPConnectionFailed(callback) {
103
+ mcpConnectionFailed.push(callback);
104
+ },
105
+ onMCPConnectionRestored(callback) {
106
+ mcpConnectionRestored.push(callback);
107
+ },
108
+ onInterruptRequested(callback) {
109
+ interruptRequested.push(callback);
110
+ },
111
+ onInterruptResolved(callback) {
112
+ interruptResolved.push(callback);
113
+ },
114
+ };
115
+ function getHooks() {
116
+ const hooks = {};
117
+ // Add generation hooks if any were registered
118
+ if (preGenerate.length > 0) {
119
+ hooks.PreGenerate = preGenerate;
120
+ }
121
+ if (postGenerate.length > 0) {
122
+ hooks.PostGenerate = postGenerate;
123
+ }
124
+ if (postGenerateFailure.length > 0) {
125
+ hooks.PostGenerateFailure = postGenerateFailure;
126
+ }
127
+ // Add tool hooks if any were registered
128
+ if (preToolUse.length > 0) {
129
+ hooks.PreToolUse = preToolUse;
130
+ }
131
+ if (postToolUse.length > 0) {
132
+ hooks.PostToolUse = postToolUse;
133
+ }
134
+ if (postToolUseFailure.length > 0) {
135
+ hooks.PostToolUseFailure = postToolUseFailure;
136
+ }
137
+ // Add compaction hooks if any were registered
138
+ if (preCompact.length > 0) {
139
+ hooks.PreCompact = preCompact;
140
+ }
141
+ if (postCompact.length > 0) {
142
+ hooks.PostCompact = postCompact;
143
+ }
144
+ // Add session hooks if any were registered
145
+ if (sessionStart.length > 0) {
146
+ hooks.SessionStart = sessionStart;
147
+ }
148
+ if (sessionEnd.length > 0) {
149
+ hooks.SessionEnd = sessionEnd;
150
+ }
151
+ // Add subagent hooks if any were registered
152
+ if (subagentStart.length > 0) {
153
+ hooks.SubagentStart = subagentStart;
154
+ }
155
+ if (subagentStop.length > 0) {
156
+ hooks.SubagentStop = subagentStop;
157
+ }
158
+ // Add MCP hooks if any were registered
159
+ if (mcpConnectionFailed.length > 0) {
160
+ hooks.MCPConnectionFailed = mcpConnectionFailed;
161
+ }
162
+ if (mcpConnectionRestored.length > 0) {
163
+ hooks.MCPConnectionRestored = mcpConnectionRestored;
164
+ }
165
+ // Add interrupt hooks if any were registered
166
+ if (interruptRequested.length > 0) {
167
+ hooks.InterruptRequested = interruptRequested;
168
+ }
169
+ if (interruptResolved.length > 0) {
170
+ hooks.InterruptResolved = interruptResolved;
171
+ }
172
+ return hooks;
173
+ }
174
+ return { context, getHooks };
175
+ }
176
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Middleware system for agent cross-cutting concerns.
3
+ *
4
+ * Middleware provides a clean API for adding features like logging, metrics,
5
+ * caching, and rate limiting to agents. Middleware wraps the underlying hook
6
+ * system with a more ergonomic interface.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import {
11
+ * createAgent,
12
+ * createLoggingMiddleware,
13
+ * createConsoleTransport,
14
+ * } from "@lleverage-ai/agent-sdk";
15
+ *
16
+ * const agent = createAgent({
17
+ * model,
18
+ * middleware: [
19
+ * createLoggingMiddleware({ transport: createConsoleTransport() }),
20
+ * ],
21
+ * });
22
+ * ```
23
+ *
24
+ * @packageDocumentation
25
+ */
26
+ export { applyMiddleware, mergeHooks, setupMiddleware, teardownMiddleware, } from "./apply.js";
27
+ export { createMiddlewareContext } from "./context.js";
28
+ export type { LoggingMiddlewareOptions } from "./logging.js";
29
+ export { createLoggingMiddleware } from "./logging.js";
30
+ export type { AgentMiddleware, MiddlewareContext, MiddlewareContextResult, } from "./types.js";
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EACL,eAAe,EACf,UAAU,EACV,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Middleware system for agent cross-cutting concerns.
3
+ *
4
+ * Middleware provides a clean API for adding features like logging, metrics,
5
+ * caching, and rate limiting to agents. Middleware wraps the underlying hook
6
+ * system with a more ergonomic interface.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import {
11
+ * createAgent,
12
+ * createLoggingMiddleware,
13
+ * createConsoleTransport,
14
+ * } from "@lleverage-ai/agent-sdk";
15
+ *
16
+ * const agent = createAgent({
17
+ * model,
18
+ * middleware: [
19
+ * createLoggingMiddleware({ transport: createConsoleTransport() }),
20
+ * ],
21
+ * });
22
+ * ```
23
+ *
24
+ * @packageDocumentation
25
+ */
26
+ // Application utilities
27
+ export { applyMiddleware, mergeHooks, setupMiddleware, teardownMiddleware, } from "./apply.js";
28
+ // Context creation (internal)
29
+ export { createMiddlewareContext } from "./context.js";
30
+ // Built-in middleware
31
+ export { createLoggingMiddleware } from "./logging.js";
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,wBAAwB;AACxB,OAAO,EACL,eAAe,EACf,UAAU,EACV,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,8BAA8B;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGvD,sBAAsB;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Logging middleware.
3
+ *
4
+ * Provides middleware for logging agent lifecycle events using the SDK's
5
+ * logging primitives. The middleware is transport-agnostic - users provide
6
+ * their own transport which determines where logs go.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import type { LogLevel, LogTransport } from "../observability/logger.js";
11
+ import type { AgentMiddleware } from "./types.js";
12
+ /**
13
+ * Options for configuring logging middleware.
14
+ *
15
+ * @category Middleware
16
+ */
17
+ export interface LoggingMiddlewareOptions {
18
+ /**
19
+ * Transport to write logs to.
20
+ *
21
+ * The transport determines where logs go - could be console, file,
22
+ * or streaming to a client. SDK is agnostic to the destination.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // Console logging
27
+ * import { createConsoleTransport } from "@lleverage-ai/agent-sdk";
28
+ * const transport = createConsoleTransport();
29
+ *
30
+ * // Custom transport (e.g., streaming to client)
31
+ * const streamTransport: LogTransport = {
32
+ * name: "stream",
33
+ * write: (entry) => res.write(JSON.stringify(entry) + "\n"),
34
+ * };
35
+ * ```
36
+ */
37
+ transport: LogTransport;
38
+ /**
39
+ * Log level for filtering events.
40
+ * @default "info"
41
+ */
42
+ level?: LogLevel;
43
+ /**
44
+ * Which events to log.
45
+ * @default all enabled
46
+ */
47
+ events?: {
48
+ /** Log generation start/end events */
49
+ generation?: boolean;
50
+ /** Log tool use events */
51
+ tools?: boolean;
52
+ /** Log context compaction events */
53
+ compaction?: boolean;
54
+ /** Log failure/error events */
55
+ failures?: boolean;
56
+ /** Log subagent events */
57
+ subagents?: boolean;
58
+ /** Log interrupt events (approval requests, custom interrupts) */
59
+ interrupts?: boolean;
60
+ };
61
+ /**
62
+ * Maximum content length for truncation.
63
+ * @default 500
64
+ */
65
+ maxContentLength?: number;
66
+ /**
67
+ * Include timing information in logs.
68
+ * @default true
69
+ */
70
+ includeTiming?: boolean;
71
+ /**
72
+ * Logger name for identification.
73
+ * @default "agent"
74
+ */
75
+ name?: string;
76
+ }
77
+ /**
78
+ * Creates logging middleware that logs agent lifecycle events.
79
+ *
80
+ * The transport determines where logs go - SDK is agnostic. If you want
81
+ * streaming to a client, create a transport that writes to your stream.
82
+ *
83
+ * @param options - Logging middleware configuration
84
+ * @returns AgentMiddleware instance
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * // Console logging
89
+ * import { createAgent, createLoggingMiddleware, createConsoleTransport } from "@lleverage-ai/agent-sdk";
90
+ *
91
+ * const agent = createAgent({
92
+ * model,
93
+ * middleware: [
94
+ * createLoggingMiddleware({ transport: createConsoleTransport() }),
95
+ * ],
96
+ * });
97
+ * ```
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * // Custom transport (e.g., streaming to client)
102
+ * const streamTransport: LogTransport = {
103
+ * name: "client-stream",
104
+ * write: (entry) => {
105
+ * // User decides how to get this to the client
106
+ * res.write(`data: ${JSON.stringify(entry)}\n\n`);
107
+ * },
108
+ * };
109
+ *
110
+ * const agent = createAgent({
111
+ * model,
112
+ * middleware: [
113
+ * createLoggingMiddleware({ transport: streamTransport }),
114
+ * ],
115
+ * });
116
+ * ```
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * // External service (e.g., Datadog)
121
+ * const datadogTransport: LogTransport = {
122
+ * name: "datadog",
123
+ * write: (entry) => datadog.log(entry.level, entry.message, entry.context),
124
+ * };
125
+ *
126
+ * const agent = createAgent({
127
+ * model,
128
+ * middleware: [
129
+ * createLoggingMiddleware({ transport: datadogTransport }),
130
+ * ],
131
+ * });
132
+ * ```
133
+ *
134
+ * @category Middleware
135
+ */
136
+ export declare function createLoggingMiddleware(options: LoggingMiddlewareOptions): AgentMiddleware;
137
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/middleware/logging.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAgBzE,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,YAAY,CAAC;AAErE;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,EAAE,YAAY,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE;QACP,sCAAsC;QACtC,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,0BAA0B;QAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,oCAAoC;QACpC,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,+BAA+B;QAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,0BAA0B;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,kEAAkE;QAClE,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IAEF;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,eAAe,CA6V1F"}