@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,326 @@
1
+ /**
2
+ * Guardrails hook utilities.
3
+ *
4
+ * Provides content filtering and safety hooks using the unified hook system.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ /**
9
+ * Extracts text content from a single message.
10
+ */
11
+ function extractTextFromMessage(msg) {
12
+ if (typeof msg !== "object" || msg === null) {
13
+ return "";
14
+ }
15
+ const content = msg.content;
16
+ if (typeof content === "string") {
17
+ return content;
18
+ }
19
+ if (Array.isArray(content)) {
20
+ const texts = [];
21
+ for (const part of content) {
22
+ if (typeof part === "object" &&
23
+ part !== null &&
24
+ "text" in part &&
25
+ typeof part.text === "string") {
26
+ texts.push(part.text);
27
+ }
28
+ }
29
+ return texts.join("\n");
30
+ }
31
+ return "";
32
+ }
33
+ /**
34
+ * Extracts text content from all messages for pattern matching.
35
+ */
36
+ function extractTextFromMessages(messages = []) {
37
+ const texts = [];
38
+ for (const msg of messages) {
39
+ const text = extractTextFromMessage(msg);
40
+ if (text) {
41
+ texts.push(text);
42
+ }
43
+ }
44
+ return texts.join("\n");
45
+ }
46
+ /**
47
+ * Finds message IDs that match any of the given patterns.
48
+ * Returns IDs of messages containing blocked content.
49
+ */
50
+ function findBlockedMessageIds(messages, patterns) {
51
+ const blockedIds = [];
52
+ for (const msg of messages) {
53
+ const typedMsg = msg;
54
+ if (!typedMsg.id)
55
+ continue;
56
+ const text = extractTextFromMessage(msg);
57
+ if (!text)
58
+ continue;
59
+ for (const pattern of patterns) {
60
+ if (pattern.test(text)) {
61
+ blockedIds.push(typedMsg.id);
62
+ break; // Only add each message once
63
+ }
64
+ }
65
+ }
66
+ return blockedIds;
67
+ }
68
+ /**
69
+ * Creates guardrails hooks for input and output content filtering.
70
+ *
71
+ * The PreGenerate hook blocks requests matching input patterns.
72
+ * The PostGenerate hook filters output matching output patterns.
73
+ *
74
+ * This replaces guardrails middleware with hook-based filtering that
75
+ * works correctly with the unified hook system.
76
+ *
77
+ * @param options - Configuration options
78
+ * @returns Array of two hooks: [PreGenerate input filter, PostGenerate output filter]
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * const [inputFilter, outputFilter] = createGuardrailsHooks({
83
+ * blockedInputPatterns: [
84
+ * /password/i,
85
+ * /api.?key/i,
86
+ * /secret/i,
87
+ * ],
88
+ * blockedOutputPatterns: [
89
+ * /\b\d{16}\b/, // Credit card numbers
90
+ * /\b\d{3}-\d{2}-\d{4}\b/, // SSN
91
+ * ],
92
+ * });
93
+ *
94
+ * const agent = createAgent({
95
+ * model,
96
+ * hooks: {
97
+ * PreGenerate: [{ hooks: [inputFilter] }],
98
+ * PostGenerate: [{ hooks: [outputFilter] }],
99
+ * },
100
+ * });
101
+ * ```
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * // Custom validation with transformation
106
+ * const hooks = createGuardrailsHooks({
107
+ * checkInput: (input) => {
108
+ * // Allow but transform: remove PII from messages
109
+ * const cleaned = cleanPII(input.options.messages);
110
+ * return {
111
+ * ...input,
112
+ * options: { ...input.options, messages: cleaned },
113
+ * };
114
+ * },
115
+ * checkOutput: (input) => {
116
+ * // Filter harmful content
117
+ * if (isHarmful(input.result.text)) {
118
+ * return { ...input.result, text: "[Content filtered for safety]" };
119
+ * }
120
+ * },
121
+ * });
122
+ * ```
123
+ *
124
+ * @category Hooks
125
+ */
126
+ export function createGuardrailsHooks(options = {}) {
127
+ const { blockedInputPatterns = [], blockedOutputPatterns = [], blockedInputMessage = "Request blocked by content policy", filteredOutputMessage = "[Content filtered]", checkInput, checkOutput, } = options;
128
+ // PreGenerate: Block inputs matching patterns
129
+ const inputFilter = async (input) => {
130
+ if (input.hook_event_name !== "PreGenerate")
131
+ return {};
132
+ const preGenInput = input;
133
+ // Custom input validation
134
+ if (checkInput) {
135
+ const result = checkInput(preGenInput);
136
+ if (result && result !== preGenInput) {
137
+ // Transform input
138
+ return {
139
+ hookSpecificOutput: {
140
+ hookEventName: "PreGenerate",
141
+ updatedInput: result.options,
142
+ },
143
+ };
144
+ }
145
+ }
146
+ // Pattern-based blocking
147
+ if (blockedInputPatterns.length > 0) {
148
+ const messages = preGenInput.options.messages;
149
+ const text = extractTextFromMessages(messages);
150
+ for (const pattern of blockedInputPatterns) {
151
+ if (pattern.test(text)) {
152
+ // Find which messages contain blocked content
153
+ const blockedMessageIds = findBlockedMessageIds(messages, [pattern]);
154
+ return {
155
+ hookSpecificOutput: {
156
+ hookEventName: "PreGenerate",
157
+ permissionDecision: "deny",
158
+ permissionDecisionReason: blockedInputMessage,
159
+ blockedMessageIds,
160
+ },
161
+ };
162
+ }
163
+ }
164
+ }
165
+ return {};
166
+ };
167
+ // PostGenerate: Filter outputs matching patterns
168
+ const outputFilter = async (input) => {
169
+ if (input.hook_event_name !== "PostGenerate")
170
+ return {};
171
+ const postGenInput = input;
172
+ // Custom output validation
173
+ if (checkOutput) {
174
+ const result = checkOutput(postGenInput);
175
+ if (result && result !== postGenInput.result) {
176
+ // Transform output
177
+ return {
178
+ hookSpecificOutput: {
179
+ hookEventName: "PostGenerate",
180
+ updatedResult: result,
181
+ },
182
+ };
183
+ }
184
+ }
185
+ // Pattern-based filtering
186
+ if (blockedOutputPatterns.length > 0) {
187
+ const text = postGenInput.result.text || "";
188
+ for (const pattern of blockedOutputPatterns) {
189
+ if (pattern.test(text)) {
190
+ // Replace output text with filter message
191
+ return {
192
+ hookSpecificOutput: {
193
+ hookEventName: "PostGenerate",
194
+ updatedResult: {
195
+ ...postGenInput.result,
196
+ text: filteredOutputMessage,
197
+ },
198
+ },
199
+ };
200
+ }
201
+ }
202
+ }
203
+ return {};
204
+ };
205
+ return [inputFilter, outputFilter];
206
+ }
207
+ /**
208
+ * Creates guardrails hooks with statistics tracking.
209
+ *
210
+ * Returns hooks along with functions to get filtering statistics.
211
+ *
212
+ * @param options - Configuration options
213
+ * @returns Object with hooks and statistics getter
214
+ *
215
+ * @example
216
+ * ```typescript
217
+ * const { hooks, getStats } = createManagedGuardrailsHooks({
218
+ * blockedInputPatterns: [/password/i, /secret/i],
219
+ * blockedOutputPatterns: [/\b\d{16}\b/],
220
+ * });
221
+ *
222
+ * const agent = createAgent({
223
+ * model,
224
+ * hooks: {
225
+ * PreGenerate: [{ hooks: [hooks[0]] }],
226
+ * PostGenerate: [{ hooks: [hooks[1]] }],
227
+ * },
228
+ * });
229
+ *
230
+ * // Check statistics
231
+ * const stats = getStats();
232
+ * console.log(`Blocked inputs: ${stats.blockedInputs}`);
233
+ * console.log(`Filtered outputs: ${stats.filteredOutputs}`);
234
+ * ```
235
+ *
236
+ * @category Hooks
237
+ */
238
+ export function createManagedGuardrailsHooks(options = {}) {
239
+ const { blockedInputPatterns = [], blockedOutputPatterns = [], blockedInputMessage = "Request blocked by content policy", filteredOutputMessage = "[Content filtered]", checkInput, checkOutput, } = options;
240
+ let blockedInputs = 0;
241
+ let filteredOutputs = 0;
242
+ let totalInputs = 0;
243
+ let totalOutputs = 0;
244
+ const inputFilter = async (input) => {
245
+ if (input.hook_event_name !== "PreGenerate")
246
+ return {};
247
+ const preGenInput = input;
248
+ totalInputs++;
249
+ if (checkInput) {
250
+ const result = checkInput(preGenInput);
251
+ if (result && result !== preGenInput) {
252
+ return {
253
+ hookSpecificOutput: {
254
+ hookEventName: "PreGenerate",
255
+ updatedInput: result.options,
256
+ },
257
+ };
258
+ }
259
+ }
260
+ if (blockedInputPatterns.length > 0) {
261
+ const messages = preGenInput.options.messages;
262
+ const text = extractTextFromMessages(messages);
263
+ for (const pattern of blockedInputPatterns) {
264
+ if (pattern.test(text)) {
265
+ blockedInputs++;
266
+ // Find which messages contain blocked content
267
+ const blockedMessageIds = findBlockedMessageIds(messages, [pattern]);
268
+ return {
269
+ hookSpecificOutput: {
270
+ hookEventName: "PreGenerate",
271
+ permissionDecision: "deny",
272
+ permissionDecisionReason: blockedInputMessage,
273
+ blockedMessageIds,
274
+ },
275
+ };
276
+ }
277
+ }
278
+ }
279
+ return {};
280
+ };
281
+ const outputFilter = async (input) => {
282
+ if (input.hook_event_name !== "PostGenerate")
283
+ return {};
284
+ const postGenInput = input;
285
+ totalOutputs++;
286
+ if (checkOutput) {
287
+ const result = checkOutput(postGenInput);
288
+ if (result && result !== postGenInput.result) {
289
+ return {
290
+ hookSpecificOutput: {
291
+ hookEventName: "PostGenerate",
292
+ updatedResult: result,
293
+ },
294
+ };
295
+ }
296
+ }
297
+ if (blockedOutputPatterns.length > 0) {
298
+ const text = postGenInput.result.text || "";
299
+ for (const pattern of blockedOutputPatterns) {
300
+ if (pattern.test(text)) {
301
+ filteredOutputs++;
302
+ return {
303
+ hookSpecificOutput: {
304
+ hookEventName: "PostGenerate",
305
+ updatedResult: {
306
+ ...postGenInput.result,
307
+ text: filteredOutputMessage,
308
+ },
309
+ },
310
+ };
311
+ }
312
+ }
313
+ }
314
+ return {};
315
+ };
316
+ return {
317
+ hooks: [inputFilter, outputFilter],
318
+ getStats: () => ({
319
+ blockedInputs,
320
+ filteredOutputs,
321
+ totalInputs,
322
+ totalOutputs,
323
+ }),
324
+ };
325
+ }
326
+ //# sourceMappingURL=guardrails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../../src/hooks/guardrails.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Hook utility factories.
3
+ *
4
+ * This module provides convenience factories that create hooks for common
5
+ * use cases like caching, retries, rate limiting, and content filtering.
6
+ *
7
+ * @packageDocumentation
8
+ * @category Hooks
9
+ */
10
+ export { type AuditEvent, type AuditEventCategory, type AuditEventHandler, type AuditHooksOptions, createAuditHooks, createInMemoryAuditStore, exportAuditEventsJSONLines, } from "./audit.js";
11
+ export { type CacheEntry, type CacheHooksOptions, type CacheStore, createCacheHooks, createManagedCacheHooks, InMemoryCacheStore, } from "./cache.js";
12
+ export { createGuardrailsHooks, createManagedGuardrailsHooks, type GuardrailsHooksOptions, } from "./guardrails.js";
13
+ export { createCompactionLoggingHooks, createComprehensiveLoggingHooks, createLoggingHooks, createToolLoggingHooks, type LoggingHooksOptions, } from "./logging.js";
14
+ export { type BufferedGuardrailState, BufferedOutputGuardrail, createBufferedOutputGuardrail, createRegexGuardrail, extractTextFromMessages, findLastUserMessageId, type Guardrail, type GuardrailCheckResult, type OutputGuardrailConfig, type RaceGuardrailsOptions, raceGuardrails, runWithGuardrails, withTimeout, wrapStreamWithOutputGuardrail, } from "./parallel-guardrails.js";
15
+ export { createManagedRateLimitHooks, createRateLimitHooks, extractStandardRateLimitHeaders, type RateLimitHooksOptions, type ServerRateLimitInfo, TokenBucketRateLimiter, } from "./rate-limit.js";
16
+ export { createManagedRetryHooks, createRetryHooks, type RetryHooksOptions, } from "./retry.js";
17
+ export { COMMON_SECRET_PATTERNS, createManagedSecretsFilterHooks, createSecretsFilterHooks, type SecretsFilterHooksOptions, } from "./secrets.js";
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,sBAAsB,EAC3B,uBAAuB,EAEvB,6BAA6B,EAE7B,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAE1B,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,+BAA+B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,cAAc,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Hook utility factories.
3
+ *
4
+ * This module provides convenience factories that create hooks for common
5
+ * use cases like caching, retries, rate limiting, and content filtering.
6
+ *
7
+ * @packageDocumentation
8
+ * @category Hooks
9
+ */
10
+ // Audit hooks
11
+ export { createAuditHooks, createInMemoryAuditStore, exportAuditEventsJSONLines, } from "./audit.js";
12
+ // Cache hooks
13
+ export { createCacheHooks, createManagedCacheHooks, InMemoryCacheStore, } from "./cache.js";
14
+ // Guardrails hooks
15
+ export { createGuardrailsHooks, createManagedGuardrailsHooks, } from "./guardrails.js";
16
+ // Logging hooks
17
+ export { createCompactionLoggingHooks, createComprehensiveLoggingHooks, createLoggingHooks, createToolLoggingHooks, } from "./logging.js";
18
+ // Guardrails (composable content moderation)
19
+ export { BufferedOutputGuardrail,
20
+ // Buffered output guardrails
21
+ createBufferedOutputGuardrail,
22
+ // Helpers
23
+ createRegexGuardrail, extractTextFromMessages, findLastUserMessageId,
24
+ // Core
25
+ raceGuardrails, runWithGuardrails, withTimeout, wrapStreamWithOutputGuardrail, } from "./parallel-guardrails.js";
26
+ // Rate limit hooks
27
+ export { createManagedRateLimitHooks, createRateLimitHooks, extractStandardRateLimitHeaders, TokenBucketRateLimiter, } from "./rate-limit.js";
28
+ // Retry hooks
29
+ export { createManagedRetryHooks, createRetryHooks, } from "./retry.js";
30
+ // Secrets filter hooks
31
+ export { COMMON_SECRET_PATTERNS, createManagedSecretsFilterHooks, createSecretsFilterHooks, } from "./secrets.js";
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc;AACd,OAAO,EAKL,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AACpB,cAAc;AACd,OAAO,EAIL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,mBAAmB;AACnB,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAE7B,MAAM,iBAAiB,CAAC;AAEzB,gBAAgB;AAChB,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,cAAc,CAAC;AACtB,6CAA6C;AAC7C,OAAO,EAEL,uBAAuB;AACvB,6BAA6B;AAC7B,6BAA6B;AAC7B,UAAU;AACV,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB;AAKrB,OAAO;AACP,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAClC,mBAAmB;AACnB,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,+BAA+B,EAG/B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,cAAc;AACd,OAAO,EACL,uBAAuB,EACvB,gBAAgB,GAEjB,MAAM,YAAY,CAAC;AACpB,uBAAuB;AACvB,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,GAEzB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Logging hook utilities.
3
+ *
4
+ * Provides logging hooks for observability and debugging using the unified
5
+ * hook system.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { HookCallback } from "../types.js";
10
+ /**
11
+ * Options for creating logging hooks.
12
+ *
13
+ * @category Hooks
14
+ */
15
+ export interface LoggingHooksOptions {
16
+ /**
17
+ * Custom logging function.
18
+ * @defaultValue console.log
19
+ */
20
+ log?: (message: string) => void;
21
+ /**
22
+ * Whether to log generation requests.
23
+ * @defaultValue true
24
+ */
25
+ logGeneration?: boolean;
26
+ /**
27
+ * Whether to log tool usage.
28
+ * @defaultValue true
29
+ */
30
+ logTools?: boolean;
31
+ /**
32
+ * Whether to log timing information.
33
+ * @defaultValue true
34
+ */
35
+ logTiming?: boolean;
36
+ /**
37
+ * Whether to log errors.
38
+ * @defaultValue true
39
+ */
40
+ logErrors?: boolean;
41
+ /**
42
+ * Whether to log compaction events.
43
+ * @defaultValue true
44
+ */
45
+ logCompaction?: boolean;
46
+ /**
47
+ * Maximum length for logged text content.
48
+ * @defaultValue 200
49
+ */
50
+ maxTextLength?: number;
51
+ /**
52
+ * Prefix for all log messages.
53
+ * @defaultValue "[Agent]"
54
+ */
55
+ prefix?: string;
56
+ /**
57
+ * Whether to log full message arrays.
58
+ * @defaultValue false (just count)
59
+ */
60
+ logFullMessages?: boolean;
61
+ }
62
+ /**
63
+ * Creates logging hooks for generation lifecycle events.
64
+ *
65
+ * Provides Pre/Post logging for generation with timing information,
66
+ * usage statistics, and error logging.
67
+ *
68
+ * @param options - Configuration options
69
+ * @returns Array of hooks for generation events
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const logHooks = createLoggingHooks({
74
+ * prefix: "[MyAgent]",
75
+ * logTiming: true,
76
+ * maxTextLength: 100,
77
+ * });
78
+ *
79
+ * const agent = createAgent({
80
+ * model,
81
+ * hooks: {
82
+ * PreGenerate: [{ hooks: [logHooks[0]] }],
83
+ * PostGenerate: [{ hooks: [logHooks[1]] }],
84
+ * PostGenerateFailure: [{ hooks: [logHooks[2]] }],
85
+ * },
86
+ * });
87
+ * ```
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * // Custom logger (e.g., structured logging)
92
+ * const logHooks = createLoggingHooks({
93
+ * log: (msg) => logger.info(msg),
94
+ * });
95
+ * ```
96
+ *
97
+ * @category Hooks
98
+ */
99
+ export declare function createLoggingHooks(options?: LoggingHooksOptions): HookCallback[];
100
+ /**
101
+ * Creates logging hooks for tool execution events.
102
+ *
103
+ * Provides Pre/Post logging for tool calls with arguments, results,
104
+ * and error information.
105
+ *
106
+ * @param options - Configuration options
107
+ * @returns Array of hooks for tool events
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const toolLogHooks = createToolLoggingHooks({
112
+ * prefix: "[Tools]",
113
+ * maxTextLength: 150,
114
+ * });
115
+ *
116
+ * const agent = createAgent({
117
+ * model,
118
+ * hooks: {
119
+ * PreToolUse: [{ hooks: [toolLogHooks[0]] }],
120
+ * PostToolUse: [{ hooks: [toolLogHooks[1]] }],
121
+ * PostToolUseFailure: [{ hooks: [toolLogHooks[2]] }],
122
+ * },
123
+ * });
124
+ * ```
125
+ *
126
+ * @category Hooks
127
+ */
128
+ export declare function createToolLoggingHooks(options?: LoggingHooksOptions): HookCallback[];
129
+ /**
130
+ * Creates logging hooks for context compaction events.
131
+ *
132
+ * Provides Pre/Post logging for compaction with token savings
133
+ * and message count information.
134
+ *
135
+ * @param options - Configuration options
136
+ * @returns Array of hooks for compaction events
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * const compactLogHooks = createCompactionLoggingHooks({
141
+ * prefix: "[Compaction]",
142
+ * });
143
+ *
144
+ * const agent = createAgent({
145
+ * model,
146
+ * hooks: {
147
+ * PreCompact: [compactLogHooks[0]],
148
+ * PostCompact: [compactLogHooks[1]],
149
+ * },
150
+ * });
151
+ * ```
152
+ *
153
+ * @category Hooks
154
+ */
155
+ export declare function createCompactionLoggingHooks(options?: LoggingHooksOptions): HookCallback[];
156
+ /**
157
+ * Creates comprehensive logging hooks for all lifecycle events.
158
+ *
159
+ * Combines generation, tool, and compaction logging into a single set of hooks.
160
+ *
161
+ * @param options - Configuration options
162
+ * @returns Object with hooks for all events
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * const { generationHooks, toolHooks, compactionHooks } = createComprehensiveLoggingHooks({
167
+ * prefix: "[MyAgent]",
168
+ * logTiming: true,
169
+ * });
170
+ *
171
+ * const agent = createAgent({
172
+ * model,
173
+ * hooks: {
174
+ * PreGenerate: [generationHooks[0]],
175
+ * PostGenerate: [generationHooks[1]],
176
+ * PostGenerateFailure: [generationHooks[2]],
177
+ * PreToolUse: [toolHooks[0]],
178
+ * PostToolUse: [toolHooks[1]],
179
+ * PostToolUseFailure: [toolHooks[2]],
180
+ * PreCompact: [compactionHooks[0]],
181
+ * PostCompact: [compactionHooks[1]],
182
+ * },
183
+ * });
184
+ * ```
185
+ *
186
+ * @category Hooks
187
+ */
188
+ export declare function createComprehensiveLoggingHooks(options?: LoggingHooksOptions): {
189
+ generationHooks: HookCallback[];
190
+ toolHooks: HookCallback[];
191
+ compactionHooks: HookCallback[];
192
+ };
193
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/hooks/logging.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EASb,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,EAAE,CA6FpF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,EAAE,CAmFxF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,EAAE,CA0D9F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,GAAE,mBAAwB,GAAG;IAClF,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,eAAe,EAAE,YAAY,EAAE,CAAC;CACjC,CAMA"}