@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,191 @@
1
+ /**
2
+ * Bash tool for running shell commands in a sandbox.
3
+ *
4
+ * This tool wraps the SandboxBackendProtocol to provide command execution
5
+ * to agents. It includes timeout support, output truncation, and optional
6
+ * command approval for dangerous operations.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import { tool } from "ai";
11
+ import { z } from "zod";
12
+ // =============================================================================
13
+ // Constants
14
+ // =============================================================================
15
+ /** Default timeout for command execution (2 minutes) */
16
+ const DEFAULT_TIMEOUT_MS = 120000;
17
+ /** Character count threshold for output truncation warning (~20k tokens) */
18
+ const LARGE_OUTPUT_WARNING_CHARS = 80_000;
19
+ /** Maximum output size before truncation (same as in tools, ~30k chars) */
20
+ const MAX_OUTPUT_SIZE_CHARS = 120_000;
21
+ // =============================================================================
22
+ // Bash Tool
23
+ // =============================================================================
24
+ /**
25
+ * Creates a tool for executing shell commands in a sandbox.
26
+ *
27
+ * This tool provides secure command execution with:
28
+ * - Timeout enforcement
29
+ * - Output size limits
30
+ * - Command blocking/allowlisting at tool level
31
+ * - Optional approval for dangerous commands
32
+ *
33
+ * @param options - Configuration options
34
+ * @returns An AI SDK compatible tool for shell execution
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * import { createBashTool, LocalSandbox } from "@lleverage-ai/agent-sdk";
39
+ *
40
+ * const sandbox = new LocalSandbox({ cwd: process.cwd() });
41
+ * const bash = createBashTool({
42
+ * sandbox,
43
+ * timeout: 30000,
44
+ * blockedCommands: ["rm -rf /"],
45
+ * });
46
+ *
47
+ * const agent = createAgent({
48
+ * model,
49
+ * tools: { bash },
50
+ * });
51
+ * ```
52
+ *
53
+ * @category Tools
54
+ */
55
+ export function createBashTool(options) {
56
+ const { sandbox, timeout = DEFAULT_TIMEOUT_MS, blockedCommands = [], allowedCommands, requireApproval = [], onApprovalRequest, maxOutputSize = MAX_OUTPUT_SIZE_CHARS, } = options;
57
+ return tool({
58
+ description: "Execute a shell command. Returns stdout/stderr output, exit code, and whether output was truncated.",
59
+ inputSchema: z.object({
60
+ command: z.string().describe("Shell command to execute"),
61
+ timeout: z.number().optional().describe(`Timeout in milliseconds (default: ${timeout})`),
62
+ }),
63
+ execute: async ({ command, timeout: commandTimeout, }) => {
64
+ // Validate command at tool level
65
+ const validationError = validateCommand(command, blockedCommands, allowedCommands);
66
+ if (validationError) {
67
+ return {
68
+ success: false,
69
+ output: "",
70
+ exitCode: null,
71
+ truncated: false,
72
+ error: validationError,
73
+ };
74
+ }
75
+ // Check if approval is required
76
+ const approvalReason = needsApproval(command, requireApproval);
77
+ if (approvalReason) {
78
+ if (!onApprovalRequest) {
79
+ return {
80
+ success: false,
81
+ output: "",
82
+ exitCode: null,
83
+ truncated: false,
84
+ error: `Command requires approval: ${approvalReason}. No approval callback configured.`,
85
+ };
86
+ }
87
+ const approved = await onApprovalRequest(command, approvalReason);
88
+ if (!approved) {
89
+ return {
90
+ success: false,
91
+ output: "",
92
+ exitCode: null,
93
+ truncated: false,
94
+ error: `Command execution denied: ${approvalReason}`,
95
+ };
96
+ }
97
+ }
98
+ try {
99
+ // Execute command through sandbox
100
+ const result = await sandbox.execute(command);
101
+ // Format output
102
+ return formatBashResult(result, maxOutputSize);
103
+ }
104
+ catch (error) {
105
+ // Handle sandbox-level errors (e.g., CommandBlockedError)
106
+ return {
107
+ success: false,
108
+ output: "",
109
+ exitCode: null,
110
+ truncated: false,
111
+ error: error instanceof Error ? error.message : String(error),
112
+ };
113
+ }
114
+ },
115
+ });
116
+ }
117
+ // =============================================================================
118
+ // Helper Functions
119
+ // =============================================================================
120
+ /**
121
+ * Validate a command against blocked/allowed patterns.
122
+ * @internal
123
+ */
124
+ function validateCommand(command, blockedCommands, allowedCommands) {
125
+ // Empty command check
126
+ if (!command.trim()) {
127
+ return "Command cannot be empty";
128
+ }
129
+ // Check allowlist first (if configured)
130
+ if (allowedCommands && allowedCommands.length > 0) {
131
+ const isAllowed = allowedCommands.some((pattern) => matchesPattern(command, pattern));
132
+ if (!isAllowed) {
133
+ return "Command not in allowlist";
134
+ }
135
+ }
136
+ // Check blocklist
137
+ for (const pattern of blockedCommands) {
138
+ if (matchesPattern(command, pattern)) {
139
+ return `Command matches blocked pattern`;
140
+ }
141
+ }
142
+ return null;
143
+ }
144
+ /**
145
+ * Check if a command needs approval.
146
+ * @internal
147
+ */
148
+ function needsApproval(command, requireApproval) {
149
+ for (const pattern of requireApproval) {
150
+ if (matchesPattern(command, pattern)) {
151
+ const patternStr = typeof pattern === "string" ? pattern : pattern.source.slice(0, 50);
152
+ return `matches pattern: ${patternStr}`;
153
+ }
154
+ }
155
+ return null;
156
+ }
157
+ /**
158
+ * Check if a command matches a pattern.
159
+ * @internal
160
+ */
161
+ function matchesPattern(command, pattern) {
162
+ if (typeof pattern === "string") {
163
+ return command.includes(pattern);
164
+ }
165
+ return pattern.test(command);
166
+ }
167
+ /**
168
+ * Format the execution result for display.
169
+ * @internal
170
+ */
171
+ function formatBashResult(result, maxOutputSize) {
172
+ let output = result.output;
173
+ let truncated = result.truncated;
174
+ // Apply tool-level truncation if needed
175
+ if (output.length > maxOutputSize) {
176
+ output = `${output.slice(0, maxOutputSize)}\n\n[Output truncated at ${maxOutputSize} characters]`;
177
+ truncated = true;
178
+ }
179
+ // Add warning for large output
180
+ if (output.length > LARGE_OUTPUT_WARNING_CHARS && !truncated) {
181
+ const estimatedTokens = Math.round(output.length / 4);
182
+ output = `[Warning: Large output (~${estimatedTokens} tokens)]\n\n${output}`;
183
+ }
184
+ return {
185
+ success: result.exitCode === 0,
186
+ output,
187
+ exitCode: result.exitCode,
188
+ truncated,
189
+ };
190
+ }
191
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/tools/execute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Tool factory for creating all core tools from configuration.
3
+ *
4
+ * This module provides a unified factory function that creates the minimal
5
+ * set of agent tools: read, write, edit, bash, glob, grep, todo_write, task, skill.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { LanguageModel, Tool, ToolSet } from "ai";
10
+ import type { BackendProtocol, SandboxBackendProtocol } from "../backend.js";
11
+ import type { AgentState } from "../backends/state.js";
12
+ import type { MCPManager } from "../mcp/manager.js";
13
+ import type { Agent, CoreToolName, SkillDefinition, SubagentDefinition } from "../types.js";
14
+ import { type BashToolOptions, createBashTool } from "./execute.js";
15
+ import { createEditTool, createFilesystemTools, createGlobTool, createGrepTool, createReadTool, createWriteTool, type FilesystemTools, type FilesystemToolsOptions } from "./filesystem.js";
16
+ import { createSearchToolsTool, type SearchToolsOptions } from "./search.js";
17
+ import { createSkillRegistry, createSkillTool, type LoadableSkillDefinition, SkillRegistry, type SkillToolOptions } from "./skills.js";
18
+ import { clearCompletedTasks, createTaskTool, getBackgroundTask, listBackgroundTasks, type TaskStatus, type TaskToolOptions } from "./task.js";
19
+ import { createTodoWriteTool, type TodoWriteToolOptions } from "./todos.js";
20
+ /**
21
+ * Options for creating core tools.
22
+ *
23
+ * This is the main configuration interface for the tool factory.
24
+ * Only `backend` and `state` are required - all other options enable
25
+ * additional functionality.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const tools = createCoreTools({
30
+ * backend: new FilesystemBackend({ rootDir: process.cwd() }),
31
+ * state: createAgentState(),
32
+ *
33
+ * // Enable shell execution
34
+ * sandbox: new LocalSandbox({ cwd: process.cwd() }),
35
+ *
36
+ * // Enable skill loading
37
+ * skillRegistry: createSkillRegistry([gitSkill, dockerSkill]),
38
+ *
39
+ * // Enable subagent delegation
40
+ * subagents: [researcherAgent, coderAgent],
41
+ * parentAgent: mainAgent,
42
+ * defaultModel: anthropic("claude-sonnet-4-20250514"),
43
+ * });
44
+ * ```
45
+ *
46
+ * @category Tools
47
+ */
48
+ export interface CoreToolsOptions {
49
+ /** Storage backend for file operations */
50
+ backend: BackendProtocol;
51
+ /** Agent state containing todos and virtual filesystem */
52
+ state: AgentState;
53
+ /**
54
+ * Array of core tool names to disable.
55
+ * Takes precedence over individual include options.
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const tools = createCoreTools({
60
+ * backend,
61
+ * state,
62
+ * disabled: ["bash", "write"], // Disable bash and write tools
63
+ * });
64
+ * ```
65
+ */
66
+ disabled?: CoreToolName[];
67
+ /**
68
+ * Include write tool.
69
+ * @defaultValue true
70
+ */
71
+ includeWrite?: boolean;
72
+ /**
73
+ * Include edit tool.
74
+ * @defaultValue true
75
+ */
76
+ includeEdit?: boolean;
77
+ /**
78
+ * Include todo_write tool.
79
+ * @defaultValue true
80
+ */
81
+ includeTodoWrite?: boolean;
82
+ /**
83
+ * Callback invoked when todos change.
84
+ */
85
+ onTodosChanged?: TodoWriteToolOptions["onTodosChanged"];
86
+ /**
87
+ * Sandbox backend for command execution.
88
+ * If provided, bash tool is included.
89
+ */
90
+ sandbox?: SandboxBackendProtocol;
91
+ /** Options for the bash tool */
92
+ bashOptions?: Omit<BashToolOptions, "sandbox">;
93
+ /**
94
+ * Skill registry for progressive disclosure.
95
+ * If provided, the skill tool is included.
96
+ * Takes precedence over `skills` if both are provided.
97
+ */
98
+ skillRegistry?: SkillRegistry;
99
+ /**
100
+ * Array of skill definitions to auto-create a registry from.
101
+ * Alternative to providing a skillRegistry directly.
102
+ * Only skills with tools will be included.
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const tools = createCoreTools({
107
+ * backend,
108
+ * state,
109
+ * skills: [gitSkill, dockerSkill],
110
+ * });
111
+ * ```
112
+ */
113
+ skills?: SkillDefinition[];
114
+ /** Options for the skill tool */
115
+ skillToolOptions?: Partial<SkillToolOptions>;
116
+ /**
117
+ * Subagent definitions for task delegation.
118
+ * If provided along with parentAgent and defaultModel, task tool is included.
119
+ */
120
+ subagents?: SubagentDefinition[];
121
+ /** Parent agent for creating subagents (required with subagents) */
122
+ parentAgent?: Agent;
123
+ /** Default model for subagents (required with subagents) */
124
+ defaultModel?: LanguageModel;
125
+ /**
126
+ * Include general-purpose subagent automatically.
127
+ * @defaultValue false
128
+ */
129
+ includeGeneralPurpose?: boolean;
130
+ /** Options for the task tool */
131
+ taskOptions?: Partial<TaskToolOptions>;
132
+ /**
133
+ * MCP manager for search_tools meta-tool.
134
+ * If provided, search_tools tool is included.
135
+ */
136
+ mcpManager?: MCPManager;
137
+ /** Options for the search_tools tool */
138
+ searchToolsOptions?: Omit<SearchToolsOptions, "manager">;
139
+ }
140
+ /**
141
+ * Result from createCoreTools containing all created tools and registries.
142
+ *
143
+ * @category Tools
144
+ */
145
+ export interface CoreTools {
146
+ /** Read file contents */
147
+ read?: Tool;
148
+ /** Write/create files (if enabled) */
149
+ write?: Tool;
150
+ /** Edit files via replacement (if enabled) */
151
+ edit?: Tool;
152
+ /** Find files by glob pattern */
153
+ glob?: Tool;
154
+ /** Search file contents */
155
+ grep?: Tool;
156
+ /** Write/update todo list (if enabled) */
157
+ todo_write?: Tool;
158
+ /** Shell execution (if sandbox provided) */
159
+ bash?: Tool;
160
+ /** Load skill tool (if registry provided) */
161
+ skill?: Tool;
162
+ /** Task delegation tool (if subagents provided) */
163
+ task?: Tool;
164
+ /** Tool search/discovery (if mcpManager provided) */
165
+ search_tools?: Tool;
166
+ /** The skill registry (if provided) */
167
+ skillRegistry?: SkillRegistry;
168
+ }
169
+ /**
170
+ * Creates all core tools from configuration.
171
+ *
172
+ * This is the recommended way to create agent tools. The minimal tool set is:
173
+ * - `read`, `write`, `edit`, `glob`, `grep` - filesystem operations
174
+ * - `bash` - shell command execution (optional, requires sandbox)
175
+ * - `todo_write` - task tracking (optional)
176
+ * - `task` - subagent delegation (optional, requires subagents)
177
+ * - `skill` - progressive capability loading (optional, requires registry)
178
+ *
179
+ * @param options - Configuration options
180
+ * @returns Object containing all created tools and registries
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * import { createAgent, createCoreTools, createAgentState } from "@lleverage-ai/agent-sdk";
185
+ * import { FilesystemBackend, LocalSandbox } from "@lleverage-ai/agent-sdk";
186
+ *
187
+ * const state = createAgentState();
188
+ * const backend = new FilesystemBackend({ rootDir: process.cwd() });
189
+ * const sandbox = new LocalSandbox({ cwd: process.cwd() });
190
+ *
191
+ * const tools = createCoreTools({
192
+ * backend,
193
+ * state,
194
+ * sandbox,
195
+ * });
196
+ *
197
+ * const agent = createAgent({
198
+ * model: anthropic("claude-sonnet-4-20250514"),
199
+ * tools,
200
+ * });
201
+ * ```
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * // Minimal: just filesystem tools
206
+ * const tools = createCoreTools({
207
+ * backend: new StateBackend(state),
208
+ * state,
209
+ * includeTodoWrite: false,
210
+ * });
211
+ * ```
212
+ *
213
+ * @category Tools
214
+ */
215
+ export declare function createCoreTools(options: CoreToolsOptions): CoreTools;
216
+ /**
217
+ * Converts CoreTools to a ToolSet for direct use with AI SDK.
218
+ *
219
+ * This extracts only the tool properties (excluding skillRegistry)
220
+ * and filters out undefined tools.
221
+ *
222
+ * @param coreTools - The core tools object from createCoreTools
223
+ * @returns A ToolSet compatible with AI SDK
224
+ *
225
+ * @example
226
+ * ```typescript
227
+ * const coreTools = createCoreTools({ backend, state });
228
+ * const toolSet = coreToolsToToolSet(coreTools);
229
+ *
230
+ * const result = await generateText({
231
+ * model,
232
+ * tools: toolSet,
233
+ * prompt: "...",
234
+ * });
235
+ * ```
236
+ *
237
+ * @category Tools
238
+ */
239
+ export declare function coreToolsToToolSet(coreTools: CoreTools): ToolSet;
240
+ /**
241
+ * Creates filesystem tools only.
242
+ *
243
+ * Use this when you only need file operations without other tools.
244
+ *
245
+ * @param options - Filesystem tools options
246
+ * @returns Object containing filesystem tools
247
+ *
248
+ * @example
249
+ * ```typescript
250
+ * const fsTools = createFilesystemToolsOnly({
251
+ * backend: new FilesystemBackend({ rootDir: process.cwd() }),
252
+ * });
253
+ * ```
254
+ *
255
+ * @category Tools
256
+ */
257
+ export declare function createFilesystemToolsOnly(options: FilesystemToolsOptions): FilesystemTools;
258
+ export { createReadTool, createWriteTool, createEditTool, createGlobTool, createGrepTool, createFilesystemTools, createTodoWriteTool, createBashTool, SkillRegistry, createSkillTool, createSkillRegistry, createTaskTool, getBackgroundTask, listBackgroundTasks, clearCompletedTasks, createSearchToolsTool, };
259
+ export type { FilesystemTools, FilesystemToolsOptions, TodoWriteToolOptions, BashToolOptions, LoadableSkillDefinition, SkillToolOptions, TaskToolOptions, TaskStatus, SearchToolsOptions, };
260
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/tools/factory.ts"],"names":[],"mappings":"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"}