@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,7 @@
1
+ /**
2
+ * Preset bundles for quick agent setup.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export { createProductionAgent, createSecureProductionAgent, DEFAULT_BLOCKED_INPUT_PATTERNS, DEFAULT_BLOCKED_OUTPUT_PATTERNS, } from "./production.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,8BAA8B,EAC9B,+BAA+B,GAIhC,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Production Agent Preset.
3
+ *
4
+ * Provides a convenience function for creating production-ready agents
5
+ * with security, observability, and recommended hooks in a single call.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { LanguageModel } from "ai";
10
+ import { type ObservabilityPreset, type ObservabilityPresetOptions } from "../observability/preset.js";
11
+ import { type SecurityPolicy, type SecurityPolicyPreset } from "../security/index.js";
12
+ import type { Agent, AgentOptions } from "../types.js";
13
+ /**
14
+ * Options for creating a production agent.
15
+ *
16
+ * @category Presets
17
+ */
18
+ export interface ProductionAgentOptions {
19
+ /**
20
+ * The language model to use for generation.
21
+ */
22
+ model: LanguageModel;
23
+ /**
24
+ * Security policy preset to apply.
25
+ * @defaultValue "production"
26
+ */
27
+ securityPreset?: SecurityPolicyPreset;
28
+ /**
29
+ * Optional security policy overrides.
30
+ */
31
+ securityOverrides?: Partial<SecurityPolicy>;
32
+ /**
33
+ * Whether to enable observability (logging, metrics, tracing).
34
+ * @defaultValue true
35
+ */
36
+ enableObservability?: boolean;
37
+ /**
38
+ * Observability configuration options.
39
+ */
40
+ observabilityOptions?: ObservabilityPresetOptions;
41
+ /**
42
+ * Whether to enable secrets filtering to prevent credential leakage.
43
+ * @defaultValue true
44
+ */
45
+ enableSecretsFilter?: boolean;
46
+ /**
47
+ * Whether to enable guardrails for content filtering.
48
+ * @defaultValue false
49
+ */
50
+ enableGuardrails?: boolean;
51
+ /**
52
+ * Blocked input patterns for guardrails (regex patterns).
53
+ */
54
+ blockedInputPatterns?: RegExp[];
55
+ /**
56
+ * Blocked output patterns for guardrails (regex patterns).
57
+ */
58
+ blockedOutputPatterns?: RegExp[];
59
+ /**
60
+ * Additional agent options to merge with preset defaults.
61
+ * This can be used to add custom plugins, tools, checkpointers, etc.
62
+ */
63
+ additionalOptions?: Partial<AgentOptions>;
64
+ }
65
+ /**
66
+ * Result of creating a production agent.
67
+ *
68
+ * @category Presets
69
+ */
70
+ export interface ProductionAgentResult {
71
+ /**
72
+ * The created agent instance.
73
+ */
74
+ agent: Agent;
75
+ /**
76
+ * The observability preset (if enabled).
77
+ */
78
+ observability?: ObservabilityPreset;
79
+ }
80
+ /**
81
+ * Creates a production-ready agent with security, observability, and recommended hooks.
82
+ *
83
+ * This function provides a convenient way to create an agent configured for production
84
+ * deployment in a single call. It combines:
85
+ * - Security policy presets (sandbox, permissions, tool restrictions)
86
+ * - Observability (logging, metrics, tracing)
87
+ * - Secrets filtering to prevent credential leakage
88
+ * - Optional guardrails for content filtering
89
+ *
90
+ * @param options - Configuration options
91
+ * @returns Production agent and observability preset
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * import { createProductionAgent } from "@lleverage-ai/agent-sdk";
96
+ * import { anthropic } from "@ai-sdk/anthropic";
97
+ *
98
+ * // One-line production agent setup
99
+ * const { agent, observability } = createProductionAgent({
100
+ * model: anthropic("claude-sonnet-4-20250514"),
101
+ * });
102
+ *
103
+ * // Access observability primitives
104
+ * observability.logger?.info("Agent started");
105
+ * observability.metrics?.requests.inc();
106
+ * ```
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * // Customize security and observability
111
+ * const { agent } = createProductionAgent({
112
+ * model: anthropic("claude-sonnet-4-20250514"),
113
+ * securityPreset: "readonly", // Maximum restrictions
114
+ * enableGuardrails: true, // Enable content filtering
115
+ * blockedInputPatterns: [/ignore.*instructions/i],
116
+ * observabilityOptions: {
117
+ * name: "my-production-agent",
118
+ * loggerOptions: { level: "warn" },
119
+ * },
120
+ * });
121
+ * ```
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * // Add custom plugins and checkpointers
126
+ * const { agent, observability } = createProductionAgent({
127
+ * model: anthropic("claude-sonnet-4-20250514"),
128
+ * additionalOptions: {
129
+ * plugins: [myCustomPlugin],
130
+ * checkpointer: createMemorySaver(),
131
+ * systemPrompt: "You are a helpful assistant.",
132
+ * },
133
+ * });
134
+ * ```
135
+ *
136
+ * @category Presets
137
+ */
138
+ export declare function createProductionAgent(options: ProductionAgentOptions): ProductionAgentResult;
139
+ /**
140
+ * Default blocked input patterns for secure production mode.
141
+ *
142
+ * These patterns help prevent common prompt injection and jailbreak attempts.
143
+ *
144
+ * @category Presets
145
+ */
146
+ export declare const DEFAULT_BLOCKED_INPUT_PATTERNS: RegExp[];
147
+ /**
148
+ * Default blocked output patterns for secure production mode.
149
+ *
150
+ * These patterns help prevent accidental credential/PII leakage.
151
+ *
152
+ * @category Presets
153
+ */
154
+ export declare const DEFAULT_BLOCKED_OUTPUT_PATTERNS: RegExp[];
155
+ /**
156
+ * Options for creating a secure production agent.
157
+ *
158
+ * This extends ProductionAgentOptions with secure-by-default values.
159
+ *
160
+ * @category Presets
161
+ */
162
+ export interface SecureProductionAgentOptions extends Omit<ProductionAgentOptions, "enableGuardrails"> {
163
+ /**
164
+ * Whether to enable guardrails for content filtering.
165
+ * Unlike ProductionAgentOptions, this defaults to true.
166
+ * @defaultValue true
167
+ */
168
+ enableGuardrails?: boolean;
169
+ /**
170
+ * Whether to use the default blocked input patterns.
171
+ * Set to false to only use custom patterns.
172
+ * @defaultValue true
173
+ */
174
+ useDefaultInputPatterns?: boolean;
175
+ /**
176
+ * Whether to use the default blocked output patterns.
177
+ * Set to false to only use custom patterns.
178
+ * @defaultValue true
179
+ */
180
+ useDefaultOutputPatterns?: boolean;
181
+ }
182
+ /**
183
+ * Creates a secure production-ready agent with all security features enabled by default.
184
+ *
185
+ * This is the **recommended entry point** for production deployments. It provides:
186
+ * - Production security policy (blocks dangerous commands, limits file operations)
187
+ * - **Guardrails enabled by default** (content filtering for inputs and outputs)
188
+ * - Secrets filtering to prevent credential leakage
189
+ * - Full observability (logging, metrics, tracing)
190
+ *
191
+ * Use this instead of `createProductionAgent()` unless you have specific reasons
192
+ * to disable guardrails or want more permissive defaults.
193
+ *
194
+ * @param options - Configuration options
195
+ * @returns Secure production agent and observability preset
196
+ *
197
+ * @example
198
+ * ```typescript
199
+ * import { createSecureProductionAgent } from "@lleverage-ai/agent-sdk";
200
+ * import { anthropic } from "@ai-sdk/anthropic";
201
+ *
202
+ * // Recommended production setup - all security features enabled
203
+ * const { agent, observability } = createSecureProductionAgent({
204
+ * model: anthropic("claude-sonnet-4-20250514"),
205
+ * });
206
+ *
207
+ * // Use the agent
208
+ * const result = await agent.generate({
209
+ * prompt: "Help me with a task",
210
+ * });
211
+ *
212
+ * // Access observability
213
+ * observability.logger?.info("Request completed");
214
+ * observability.metrics?.requests.inc();
215
+ * ```
216
+ *
217
+ * @example
218
+ * ```typescript
219
+ * // Customize with additional blocked patterns
220
+ * const { agent } = createSecureProductionAgent({
221
+ * model: anthropic("claude-sonnet-4-20250514"),
222
+ * blockedInputPatterns: [
223
+ * /confidential/i, // Additional custom pattern
224
+ * ],
225
+ * blockedOutputPatterns: [
226
+ * /internal-only/i,
227
+ * ],
228
+ * observabilityOptions: {
229
+ * name: "my-secure-agent",
230
+ * },
231
+ * });
232
+ * ```
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * // Disable default patterns, use only custom ones
237
+ * const { agent } = createSecureProductionAgent({
238
+ * model: anthropic("claude-sonnet-4-20250514"),
239
+ * useDefaultInputPatterns: false,
240
+ * useDefaultOutputPatterns: false,
241
+ * blockedInputPatterns: [/my-custom-pattern/],
242
+ * blockedOutputPatterns: [/another-pattern/],
243
+ * });
244
+ * ```
245
+ *
246
+ * @example
247
+ * ```typescript
248
+ * // Add custom plugins and system prompt
249
+ * const { agent, observability } = createSecureProductionAgent({
250
+ * model: anthropic("claude-sonnet-4-20250514"),
251
+ * additionalOptions: {
252
+ * plugins: [myCustomPlugin],
253
+ * systemPrompt: "You are a helpful assistant.",
254
+ * checkpointer: createMemorySaver(),
255
+ * },
256
+ * });
257
+ * ```
258
+ *
259
+ * @category Presets
260
+ */
261
+ export declare function createSecureProductionAgent(options: SecureProductionAgentOptions): ProductionAgentResult;
262
+ //# sourceMappingURL=production.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"production.d.ts","sourceRoot":"","sources":["../../src/presets/production.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAGxC,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAA+C,MAAM,aAAa,CAAC;AAmCpG;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,KAAK,EAAE,aAAa,CAAC;IAErB;;;OAGG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEtC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAE5C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAElD;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhC;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAmF5F;AAED;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,EAUlD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,EAAE,MAAM,EAOnD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,4BACf,SAAQ,IAAI,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;IACxD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,CA0BvB"}
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Production Agent Preset.
3
+ *
4
+ * Provides a convenience function for creating production-ready agents
5
+ * with security, observability, and recommended hooks in a single call.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { createAgent } from "../agent.js";
10
+ import { createGuardrailsHooks, createSecretsFilterHooks } from "../hooks/index.js";
11
+ import { createObservabilityPreset, } from "../observability/preset.js";
12
+ import { applySecurityPolicy, } from "../security/index.js";
13
+ /**
14
+ * Type-safe helper to merge hook registrations.
15
+ * Handles both HookMatcher[] (tool hooks) and HookCallback[] (other hooks).
16
+ */
17
+ function mergeHooks(target, source) {
18
+ const hookEvents = [
19
+ "PreToolUse",
20
+ "PostToolUse",
21
+ "PostToolUseFailure",
22
+ "PreGenerate",
23
+ "PostGenerate",
24
+ "PostGenerateFailure",
25
+ "SessionStart",
26
+ "SessionEnd",
27
+ "SubagentStart",
28
+ "SubagentStop",
29
+ ];
30
+ for (const event of hookEvents) {
31
+ const sourceCallbacks = source[event];
32
+ if (sourceCallbacks) {
33
+ if (!target[event]) {
34
+ target[event] = sourceCallbacks;
35
+ }
36
+ else {
37
+ target[event] = [
38
+ ...target[event],
39
+ ...sourceCallbacks,
40
+ ];
41
+ }
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * Creates a production-ready agent with security, observability, and recommended hooks.
47
+ *
48
+ * This function provides a convenient way to create an agent configured for production
49
+ * deployment in a single call. It combines:
50
+ * - Security policy presets (sandbox, permissions, tool restrictions)
51
+ * - Observability (logging, metrics, tracing)
52
+ * - Secrets filtering to prevent credential leakage
53
+ * - Optional guardrails for content filtering
54
+ *
55
+ * @param options - Configuration options
56
+ * @returns Production agent and observability preset
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * import { createProductionAgent } from "@lleverage-ai/agent-sdk";
61
+ * import { anthropic } from "@ai-sdk/anthropic";
62
+ *
63
+ * // One-line production agent setup
64
+ * const { agent, observability } = createProductionAgent({
65
+ * model: anthropic("claude-sonnet-4-20250514"),
66
+ * });
67
+ *
68
+ * // Access observability primitives
69
+ * observability.logger?.info("Agent started");
70
+ * observability.metrics?.requests.inc();
71
+ * ```
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // Customize security and observability
76
+ * const { agent } = createProductionAgent({
77
+ * model: anthropic("claude-sonnet-4-20250514"),
78
+ * securityPreset: "readonly", // Maximum restrictions
79
+ * enableGuardrails: true, // Enable content filtering
80
+ * blockedInputPatterns: [/ignore.*instructions/i],
81
+ * observabilityOptions: {
82
+ * name: "my-production-agent",
83
+ * loggerOptions: { level: "warn" },
84
+ * },
85
+ * });
86
+ * ```
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * // Add custom plugins and checkpointers
91
+ * const { agent, observability } = createProductionAgent({
92
+ * model: anthropic("claude-sonnet-4-20250514"),
93
+ * additionalOptions: {
94
+ * plugins: [myCustomPlugin],
95
+ * checkpointer: createMemorySaver(),
96
+ * systemPrompt: "You are a helpful assistant.",
97
+ * },
98
+ * });
99
+ * ```
100
+ *
101
+ * @category Presets
102
+ */
103
+ export function createProductionAgent(options) {
104
+ const { model, securityPreset = "production", securityOverrides, enableObservability = true, observabilityOptions, enableSecretsFilter = true, enableGuardrails = false, blockedInputPatterns, blockedOutputPatterns, additionalOptions, } = options;
105
+ // Apply security policy
106
+ const securityConfig = applySecurityPolicy(securityPreset, securityOverrides);
107
+ // Create observability preset
108
+ let observability;
109
+ if (enableObservability) {
110
+ observability = createObservabilityPreset({
111
+ name: observabilityOptions?.name ?? "production-agent",
112
+ ...observabilityOptions,
113
+ });
114
+ }
115
+ // Collect hooks from various sources in HookRegistration format
116
+ const hooksRegistration = {};
117
+ // Add observability hooks
118
+ if (observability?.hooks) {
119
+ mergeHooks(hooksRegistration, observability.hooks);
120
+ }
121
+ // Add security hooks from policy (already in HookRegistration format)
122
+ if (securityConfig.hooks) {
123
+ mergeHooks(hooksRegistration, securityConfig.hooks);
124
+ }
125
+ // Add secrets filter hooks (PreGenerate and PostGenerate)
126
+ if (enableSecretsFilter) {
127
+ const [preGenHook, postGenHook] = createSecretsFilterHooks();
128
+ if (!hooksRegistration.PreGenerate) {
129
+ hooksRegistration.PreGenerate = [];
130
+ }
131
+ if (!hooksRegistration.PostGenerate) {
132
+ hooksRegistration.PostGenerate = [];
133
+ }
134
+ hooksRegistration.PreGenerate.push(preGenHook);
135
+ hooksRegistration.PostGenerate.push(postGenHook);
136
+ }
137
+ // Add guardrails hooks (PreGenerate and PostGenerate)
138
+ if (enableGuardrails) {
139
+ const [preGenHook, postGenHook] = createGuardrailsHooks({
140
+ blockedInputPatterns,
141
+ blockedOutputPatterns,
142
+ });
143
+ if (!hooksRegistration.PreGenerate) {
144
+ hooksRegistration.PreGenerate = [];
145
+ }
146
+ if (!hooksRegistration.PostGenerate) {
147
+ hooksRegistration.PostGenerate = [];
148
+ }
149
+ hooksRegistration.PreGenerate.push(preGenHook);
150
+ hooksRegistration.PostGenerate.push(postGenHook);
151
+ }
152
+ // Check if we have any hooks
153
+ const hasHooks = Object.keys(hooksRegistration).length > 0;
154
+ // Create agent with combined configuration
155
+ const agent = createAgent({
156
+ model,
157
+ ...securityConfig,
158
+ hooks: hasHooks ? hooksRegistration : undefined,
159
+ ...additionalOptions,
160
+ });
161
+ return {
162
+ agent,
163
+ observability,
164
+ };
165
+ }
166
+ /**
167
+ * Default blocked input patterns for secure production mode.
168
+ *
169
+ * These patterns help prevent common prompt injection and jailbreak attempts.
170
+ *
171
+ * @category Presets
172
+ */
173
+ export const DEFAULT_BLOCKED_INPUT_PATTERNS = [
174
+ // Common jailbreak/injection phrases
175
+ /ignore\s+(all\s+)?(previous|prior|above)\s+instructions/i,
176
+ /disregard\s+(all\s+)?(previous|prior|above)/i,
177
+ /forget\s+(everything|all|your)\s+(you\s+)?(know|learned|training)/i,
178
+ /you\s+are\s+now\s+in\s+(developer|debug|admin|test)\s+mode/i,
179
+ /pretend\s+(you\s+are|to\s+be)\s+(?!a\s+helpful)/i,
180
+ /act\s+as\s+if\s+you\s+(have\s+no|don't\s+have|lack)/i,
181
+ /bypass\s+(your|all|the)\s+(safety|security|content|filter)/i,
182
+ /override\s+(your|all|the)\s+(safety|security|restriction)/i,
183
+ ];
184
+ /**
185
+ * Default blocked output patterns for secure production mode.
186
+ *
187
+ * These patterns help prevent accidental credential/PII leakage.
188
+ *
189
+ * @category Presets
190
+ */
191
+ export const DEFAULT_BLOCKED_OUTPUT_PATTERNS = [
192
+ // Credit card numbers (basic pattern)
193
+ /\b(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13})\b/,
194
+ // SSN patterns
195
+ /\b\d{3}-\d{2}-\d{4}\b/,
196
+ // IP addresses that look internal
197
+ /\b(?:192\.168|10\.|172\.(?:1[6-9]|2[0-9]|3[01]))\.\d{1,3}\.\d{1,3}\b/,
198
+ ];
199
+ /**
200
+ * Creates a secure production-ready agent with all security features enabled by default.
201
+ *
202
+ * This is the **recommended entry point** for production deployments. It provides:
203
+ * - Production security policy (blocks dangerous commands, limits file operations)
204
+ * - **Guardrails enabled by default** (content filtering for inputs and outputs)
205
+ * - Secrets filtering to prevent credential leakage
206
+ * - Full observability (logging, metrics, tracing)
207
+ *
208
+ * Use this instead of `createProductionAgent()` unless you have specific reasons
209
+ * to disable guardrails or want more permissive defaults.
210
+ *
211
+ * @param options - Configuration options
212
+ * @returns Secure production agent and observability preset
213
+ *
214
+ * @example
215
+ * ```typescript
216
+ * import { createSecureProductionAgent } from "@lleverage-ai/agent-sdk";
217
+ * import { anthropic } from "@ai-sdk/anthropic";
218
+ *
219
+ * // Recommended production setup - all security features enabled
220
+ * const { agent, observability } = createSecureProductionAgent({
221
+ * model: anthropic("claude-sonnet-4-20250514"),
222
+ * });
223
+ *
224
+ * // Use the agent
225
+ * const result = await agent.generate({
226
+ * prompt: "Help me with a task",
227
+ * });
228
+ *
229
+ * // Access observability
230
+ * observability.logger?.info("Request completed");
231
+ * observability.metrics?.requests.inc();
232
+ * ```
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * // Customize with additional blocked patterns
237
+ * const { agent } = createSecureProductionAgent({
238
+ * model: anthropic("claude-sonnet-4-20250514"),
239
+ * blockedInputPatterns: [
240
+ * /confidential/i, // Additional custom pattern
241
+ * ],
242
+ * blockedOutputPatterns: [
243
+ * /internal-only/i,
244
+ * ],
245
+ * observabilityOptions: {
246
+ * name: "my-secure-agent",
247
+ * },
248
+ * });
249
+ * ```
250
+ *
251
+ * @example
252
+ * ```typescript
253
+ * // Disable default patterns, use only custom ones
254
+ * const { agent } = createSecureProductionAgent({
255
+ * model: anthropic("claude-sonnet-4-20250514"),
256
+ * useDefaultInputPatterns: false,
257
+ * useDefaultOutputPatterns: false,
258
+ * blockedInputPatterns: [/my-custom-pattern/],
259
+ * blockedOutputPatterns: [/another-pattern/],
260
+ * });
261
+ * ```
262
+ *
263
+ * @example
264
+ * ```typescript
265
+ * // Add custom plugins and system prompt
266
+ * const { agent, observability } = createSecureProductionAgent({
267
+ * model: anthropic("claude-sonnet-4-20250514"),
268
+ * additionalOptions: {
269
+ * plugins: [myCustomPlugin],
270
+ * systemPrompt: "You are a helpful assistant.",
271
+ * checkpointer: createMemorySaver(),
272
+ * },
273
+ * });
274
+ * ```
275
+ *
276
+ * @category Presets
277
+ */
278
+ export function createSecureProductionAgent(options) {
279
+ const { useDefaultInputPatterns = true, useDefaultOutputPatterns = true, blockedInputPatterns = [], blockedOutputPatterns = [], enableGuardrails = true, ...restOptions } = options;
280
+ // Combine default and custom patterns
281
+ const combinedInputPatterns = useDefaultInputPatterns
282
+ ? [...DEFAULT_BLOCKED_INPUT_PATTERNS, ...blockedInputPatterns]
283
+ : blockedInputPatterns;
284
+ const combinedOutputPatterns = useDefaultOutputPatterns
285
+ ? [...DEFAULT_BLOCKED_OUTPUT_PATTERNS, ...blockedOutputPatterns]
286
+ : blockedOutputPatterns;
287
+ // Call createProductionAgent with secure defaults
288
+ return createProductionAgent({
289
+ ...restOptions,
290
+ enableGuardrails,
291
+ blockedInputPatterns: combinedInputPatterns,
292
+ blockedOutputPatterns: combinedOutputPatterns,
293
+ });
294
+ }
295
+ //# sourceMappingURL=production.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"production.js","sourceRoot":"","sources":["../../src/presets/production.ts"],"names":[],"mappings":"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"}