@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,311 @@
1
+ /**
2
+ * Filesystem tools for agent file operations.
3
+ *
4
+ * These tools wrap the BackendProtocol interface to provide file operations
5
+ * to agents. Each tool is a factory function that takes a backend and returns
6
+ * an AI SDK compatible tool.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import { tool } from "ai";
11
+ import { z } from "zod";
12
+ // =============================================================================
13
+ // Constants
14
+ // =============================================================================
15
+ /** Default number of lines to read from a file */
16
+ const DEFAULT_READ_LIMIT = 2000;
17
+ /** Character count threshold for warning (approximate tokens = chars / 4) */
18
+ const LARGE_CONTENT_WARNING_CHARS = 80_000; // ~20k tokens
19
+ // =============================================================================
20
+ // Read Tool
21
+ // =============================================================================
22
+ /**
23
+ * Creates a tool for reading file contents.
24
+ *
25
+ * Reads files with line numbers and supports offset/limit for large files.
26
+ * By default reads the first 2000 lines.
27
+ *
28
+ * @param backend - The backend to use for file operations
29
+ * @returns An AI SDK compatible tool for reading files
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * import { createReadTool } from "@lleverage-ai/agent-sdk";
34
+ *
35
+ * const read = createReadTool(backend);
36
+ * const agent = createAgent({
37
+ * model,
38
+ * tools: { read },
39
+ * });
40
+ * ```
41
+ *
42
+ * @category Tools
43
+ */
44
+ export function createReadTool(backend) {
45
+ return tool({
46
+ description: `Read a file with line numbers. Default reads first ${DEFAULT_READ_LIMIT} lines. Use offset/limit for large files.`,
47
+ inputSchema: z.object({
48
+ file_path: z.string().describe("Absolute path to the file to read"),
49
+ offset: z.number().optional().describe("Line number to start from (0-indexed)"),
50
+ limit: z
51
+ .number()
52
+ .optional()
53
+ .describe(`Maximum lines to read (default: ${DEFAULT_READ_LIMIT})`),
54
+ }),
55
+ execute: async ({ file_path, offset, limit, }) => {
56
+ const effectiveLimit = limit ?? DEFAULT_READ_LIMIT;
57
+ const content = await backend.read(file_path, offset, effectiveLimit);
58
+ // Add warning for large content
59
+ if (content.length > LARGE_CONTENT_WARNING_CHARS) {
60
+ const estimatedTokens = Math.round(content.length / 4);
61
+ return `[Warning: Large file content (~${estimatedTokens} tokens). Consider using offset/limit to read specific sections.]\n\n${content}`;
62
+ }
63
+ return content;
64
+ },
65
+ });
66
+ }
67
+ // =============================================================================
68
+ // Write Tool
69
+ // =============================================================================
70
+ /**
71
+ * Creates a tool for writing/creating files.
72
+ *
73
+ * Creates new files or overwrites existing ones. Parent directories are
74
+ * created automatically if they don't exist.
75
+ *
76
+ * @param backend - The backend to use for file operations
77
+ * @returns An AI SDK compatible tool for writing files
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * import { createWriteTool } from "@lleverage-ai/agent-sdk";
82
+ *
83
+ * const write = createWriteTool(backend);
84
+ * const agent = createAgent({
85
+ * model,
86
+ * tools: { write },
87
+ * });
88
+ * ```
89
+ *
90
+ * @category Tools
91
+ */
92
+ export function createWriteTool(backend) {
93
+ return tool({
94
+ description: "Create or overwrite a file with the given content. Parent directories are created automatically.",
95
+ inputSchema: z.object({
96
+ file_path: z.string().describe("Absolute path for the file to write"),
97
+ content: z.string().describe("Content to write to the file"),
98
+ }),
99
+ execute: async ({ file_path, content }) => {
100
+ const result = await backend.write(file_path, content);
101
+ if (!result.success) {
102
+ return `Error: ${result.error}`;
103
+ }
104
+ const lines = content.split("\n").length;
105
+ return `Successfully wrote ${lines} lines to ${file_path}`;
106
+ },
107
+ });
108
+ }
109
+ // =============================================================================
110
+ // Edit Tool
111
+ // =============================================================================
112
+ /**
113
+ * Creates a tool for editing files via string replacement.
114
+ *
115
+ * Replaces text in a file. By default, the `old_string` must be unique
116
+ * in the file to prevent accidental replacements. Use `replace_all: true`
117
+ * to replace all occurrences.
118
+ *
119
+ * @param backend - The backend to use for file operations
120
+ * @returns An AI SDK compatible tool for editing files
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * import { createEditTool } from "@lleverage-ai/agent-sdk";
125
+ *
126
+ * const edit = createEditTool(backend);
127
+ * const agent = createAgent({
128
+ * model,
129
+ * tools: { edit },
130
+ * });
131
+ * ```
132
+ *
133
+ * @category Tools
134
+ */
135
+ export function createEditTool(backend) {
136
+ return tool({
137
+ description: "Edit a file by replacing text. The old_string must be unique unless replace_all is true.",
138
+ inputSchema: z.object({
139
+ file_path: z.string().describe("Absolute path to the file to edit"),
140
+ old_string: z.string().describe("Text to find and replace (must be unique in file)"),
141
+ new_string: z.string().describe("Replacement text"),
142
+ replace_all: z
143
+ .boolean()
144
+ .optional()
145
+ .describe("If true, replace all occurrences. Default: false (unique match required)"),
146
+ }),
147
+ execute: async ({ file_path, old_string, new_string, replace_all, }) => {
148
+ const result = await backend.edit(file_path, old_string, new_string, replace_all);
149
+ if (!result.success) {
150
+ return `Error: ${result.error}`;
151
+ }
152
+ if (result.occurrences !== undefined && result.occurrences > 1) {
153
+ return `Successfully replaced ${result.occurrences} occurrences in ${file_path}`;
154
+ }
155
+ return `Successfully edited ${file_path}`;
156
+ },
157
+ });
158
+ }
159
+ // =============================================================================
160
+ // Glob Tool
161
+ // =============================================================================
162
+ /**
163
+ * Creates a tool for finding files matching glob patterns.
164
+ *
165
+ * Supports glob patterns like `**\/*.ts`, `src/**\/*.test.ts`, etc.
166
+ *
167
+ * @param backend - The backend to use for file operations
168
+ * @returns An AI SDK compatible tool for glob searching
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * import { createGlobTool } from "@lleverage-ai/agent-sdk";
173
+ *
174
+ * const glob = createGlobTool(backend);
175
+ * const agent = createAgent({
176
+ * model,
177
+ * tools: { glob },
178
+ * });
179
+ * ```
180
+ *
181
+ * @category Tools
182
+ */
183
+ export function createGlobTool(backend) {
184
+ return tool({
185
+ description: 'Find files matching a glob pattern. Supports patterns like "**/*.ts", "src/**/*.test.ts".',
186
+ inputSchema: z.object({
187
+ pattern: z.string().describe('Glob pattern to match files (e.g., "**/*.ts")'),
188
+ path: z.string().optional().describe("Base directory to search from (default: root)"),
189
+ }),
190
+ execute: async ({ pattern, path }) => {
191
+ const files = await backend.globInfo(pattern, path);
192
+ return formatGlobOutput(files);
193
+ },
194
+ });
195
+ }
196
+ /**
197
+ * Format glob output for display.
198
+ * @internal
199
+ */
200
+ function formatGlobOutput(files) {
201
+ if (files.length === 0) {
202
+ return "No files found matching the pattern.";
203
+ }
204
+ const paths = files.map((f) => f.path);
205
+ const header = `Found ${files.length} file(s):`;
206
+ return `${header}\n${paths.join("\n")}`;
207
+ }
208
+ // =============================================================================
209
+ // Grep Tool
210
+ // =============================================================================
211
+ /**
212
+ * Creates a tool for searching file contents with regex.
213
+ *
214
+ * Searches for pattern matches across files, with optional glob filtering.
215
+ *
216
+ * @param backend - The backend to use for file operations
217
+ * @returns An AI SDK compatible tool for grep searching
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * import { createGrepTool } from "@lleverage-ai/agent-sdk";
222
+ *
223
+ * const grep = createGrepTool(backend);
224
+ * const agent = createAgent({
225
+ * model,
226
+ * tools: { grep },
227
+ * });
228
+ * ```
229
+ *
230
+ * @category Tools
231
+ */
232
+ export function createGrepTool(backend) {
233
+ return tool({
234
+ description: "Search for pattern matches in files using regex. Returns matching lines with file paths and line numbers.",
235
+ inputSchema: z.object({
236
+ pattern: z.string().describe("Regular expression pattern to search for"),
237
+ path: z.string().optional().describe("Directory to search in (default: root)"),
238
+ glob: z.string().optional().describe('Glob pattern to filter files (e.g., "*.ts")'),
239
+ }),
240
+ execute: async ({ pattern, path, glob }) => {
241
+ const result = await backend.grepRaw(pattern, path, glob);
242
+ // Handle string result (some backends may return formatted string)
243
+ if (typeof result === "string") {
244
+ return result;
245
+ }
246
+ return formatGrepOutput(result);
247
+ },
248
+ });
249
+ }
250
+ /**
251
+ * Format grep output for display.
252
+ * @internal
253
+ */
254
+ function formatGrepOutput(matches) {
255
+ if (matches.length === 0) {
256
+ return "No matches found.";
257
+ }
258
+ const lines = matches.map((m) => `${m.path}:${m.line}: ${m.text}`);
259
+ const header = `Found ${matches.length} match(es):`;
260
+ return `${header}\n${lines.join("\n")}`;
261
+ }
262
+ /**
263
+ * Creates all filesystem tools from a backend.
264
+ *
265
+ * This is a convenience factory that creates all filesystem tools at once.
266
+ * For read-only access, set `includeWrite` and `includeEdit` to false.
267
+ *
268
+ * @param options - Configuration options
269
+ * @returns Object containing all filesystem tools
270
+ *
271
+ * @example
272
+ * ```typescript
273
+ * import { createFilesystemTools, FilesystemBackend } from "@lleverage-ai/agent-sdk";
274
+ *
275
+ * const backend = new FilesystemBackend({ rootDir: process.cwd() });
276
+ * const fsTools = createFilesystemTools({ backend });
277
+ *
278
+ * const agent = createAgent({
279
+ * model,
280
+ * tools: fsTools,
281
+ * });
282
+ * ```
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * // Read-only mode
287
+ * const fsTools = createFilesystemTools({
288
+ * backend,
289
+ * includeWrite: false,
290
+ * includeEdit: false,
291
+ * });
292
+ * ```
293
+ *
294
+ * @category Tools
295
+ */
296
+ export function createFilesystemTools(options) {
297
+ const { backend, includeWrite = true, includeEdit = true } = options;
298
+ const tools = {
299
+ read: createReadTool(backend),
300
+ glob: createGlobTool(backend),
301
+ grep: createGrepTool(backend),
302
+ };
303
+ if (includeWrite) {
304
+ tools.write = createWriteTool(backend);
305
+ }
306
+ if (includeEdit) {
307
+ tools.edit = createEditTool(backend);
308
+ }
309
+ return tools;
310
+ }
311
+ //# sourceMappingURL=filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Core tools for agent operations.
3
+ *
4
+ * This module provides factory functions for creating the minimal tool set:
5
+ * - `read`, `write`, `edit`, `glob`, `grep` - filesystem operations
6
+ * - `bash` - shell command execution
7
+ * - `todo_write` - task tracking
8
+ * - `task` - subagent delegation
9
+ * - `skill` - progressive capability loading
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ export type { BashResult, BashToolOptions } from "./execute.js";
14
+ export { createBashTool } from "./execute.js";
15
+ export type { CoreTools, CoreToolsOptions } from "./factory.js";
16
+ export { coreToolsToToolSet, createCoreTools, createFilesystemToolsOnly, } from "./factory.js";
17
+ export type { FilesystemTools, FilesystemToolsOptions } from "./filesystem.js";
18
+ export { createEditTool, createFilesystemTools, createGlobTool, createGrepTool, createReadTool, createWriteTool, } from "./filesystem.js";
19
+ export type { SearchToolsOptions } from "./search.js";
20
+ export { createSearchToolsTool } from "./search.js";
21
+ export type { LoadableSkillDefinition, SkillLoadResult, SkillRegistryOptions, SkillToolOptions, } from "./skills.js";
22
+ export { createSkillRegistry, createSkillTool, defineLoadableSkill, SkillRegistry, } from "./skills.js";
23
+ export type { TaskStatus, TaskToolOptions, } from "./task.js";
24
+ export { cleanupStaleTasks, clearCompletedTasks, createTaskTool, getBackgroundTask, listBackgroundTasks, recoverFailedTasks, recoverRunningTasks, } from "./task.js";
25
+ export type { OnTodosChanged, TodoChangeType, TodoInput, TodosChangedData, TodoWriteToolOptions, } from "./todos.js";
26
+ export { createTodoWriteTool } from "./todos.js";
27
+ export type { ToolLoadResult, ToolMetadata, ToolRegistryOptions, ToolSearchOptions, UseToolsToolOptions, } from "./tool-registry.js";
28
+ export { createToolRegistry, createUseToolsTool, ToolRegistry, } from "./tool-registry.js";
29
+ export type { AskUserCallback, QuestionOption, } from "./user-interaction.js";
30
+ export { createAskUserQuestionTool } from "./user-interaction.js";
31
+ export type { ToolReference } from "./utils.js";
32
+ export { mcpTools, mcpToolsFor, toolsFrom, toolsFromPlugin } from "./utils.js";
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EACV,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,UAAU,EACV,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,cAAc,EACd,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Core tools for agent operations.
3
+ *
4
+ * This module provides factory functions for creating the minimal tool set:
5
+ * - `read`, `write`, `edit`, `glob`, `grep` - filesystem operations
6
+ * - `bash` - shell command execution
7
+ * - `todo_write` - task tracking
8
+ * - `task` - subagent delegation
9
+ * - `skill` - progressive capability loading
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ // Bash tool
14
+ export { createBashTool } from "./execute.js";
15
+ // Tool factory (unified tool creation)
16
+ export { coreToolsToToolSet, createCoreTools, createFilesystemToolsOnly, } from "./factory.js";
17
+ // Filesystem tools
18
+ export { createEditTool, createFilesystemTools, createGlobTool, createGrepTool, createReadTool, createWriteTool, } from "./filesystem.js";
19
+ // Search tools (MCP integration)
20
+ export { createSearchToolsTool } from "./search.js";
21
+ // Skill tool (progressive disclosure)
22
+ export { createSkillRegistry, createSkillTool, defineLoadableSkill, SkillRegistry, } from "./skills.js";
23
+ // Task tool (subagent delegation)
24
+ export { cleanupStaleTasks, clearCompletedTasks, createTaskTool, getBackgroundTask, listBackgroundTasks, recoverFailedTasks, recoverRunningTasks, } from "./task.js";
25
+ // Todo tool
26
+ export { createTodoWriteTool } from "./todos.js";
27
+ // Tool registry (deferred tool loading)
28
+ export { createToolRegistry, createUseToolsTool, ToolRegistry, } from "./tool-registry.js";
29
+ // User interaction tools
30
+ export { createAskUserQuestionTool } from "./user-interaction.js";
31
+ // Tool utilities (DX helpers)
32
+ export { mcpTools, mcpToolsFor, toolsFrom, toolsFromPlugin } from "./utils.js";
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,uCAAuC;AACvC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAEtB,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,iCAAiC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAOpD,sCAAsC;AACtC,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,aAAa,GACd,MAAM,aAAa,CAAC;AAKrB,kCAAkC;AAClC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAQnB,YAAY;AACZ,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAQjD,wCAAwC;AACxC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAK5B,yBAAyB;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Tool search meta-tool for progressive disclosure.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import type { Tool } from "ai";
7
+ import type { MCPManager } from "../mcp/manager.js";
8
+ /**
9
+ * Options for creating the search_tools tool.
10
+ *
11
+ * @category Tools
12
+ */
13
+ export interface SearchToolsOptions {
14
+ /** MCP manager to search */
15
+ manager: MCPManager;
16
+ /**
17
+ * Maximum results to return.
18
+ * @defaultValue 10
19
+ */
20
+ maxResults?: number;
21
+ /**
22
+ * Whether to enable loading tools after search.
23
+ * When true, the tool accepts an optional 'load' parameter.
24
+ * @defaultValue false
25
+ */
26
+ enableLoad?: boolean;
27
+ /**
28
+ * Callback when tools are loaded.
29
+ * Used to notify the agent that tools have changed.
30
+ */
31
+ onToolsLoaded?: (toolNames: string[]) => void;
32
+ }
33
+ /**
34
+ * Creates the search_tools meta-tool for discovering MCP tools.
35
+ *
36
+ * This tool allows agents to search for available tools by query,
37
+ * enabling progressive disclosure of capabilities.
38
+ *
39
+ * @param options - Configuration options
40
+ * @returns AI SDK tool definition
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const searchTool = createSearchToolsTool({
45
+ * manager: mcpManager,
46
+ * maxResults: 5,
47
+ * });
48
+ *
49
+ * // Agent can then use:
50
+ * // search_tools({ query: "github issues" })
51
+ *
52
+ * // With loading enabled:
53
+ * // search_tools({ query: "github issues", load: true })
54
+ * ```
55
+ *
56
+ * @category Tools
57
+ */
58
+ export declare function createSearchToolsTool(options: SearchToolsOptions): Tool;
59
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,OAAO,EAAE,UAAU,CAAC;IAEpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CA6EvE"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Tool search meta-tool for progressive disclosure.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import { tool } from "ai";
7
+ import { z } from "zod";
8
+ /**
9
+ * Creates the search_tools meta-tool for discovering MCP tools.
10
+ *
11
+ * This tool allows agents to search for available tools by query,
12
+ * enabling progressive disclosure of capabilities.
13
+ *
14
+ * @param options - Configuration options
15
+ * @returns AI SDK tool definition
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const searchTool = createSearchToolsTool({
20
+ * manager: mcpManager,
21
+ * maxResults: 5,
22
+ * });
23
+ *
24
+ * // Agent can then use:
25
+ * // search_tools({ query: "github issues" })
26
+ *
27
+ * // With loading enabled:
28
+ * // search_tools({ query: "github issues", load: true })
29
+ * ```
30
+ *
31
+ * @category Tools
32
+ */
33
+ export function createSearchToolsTool(options) {
34
+ const { manager, maxResults = 10, enableLoad = false, onToolsLoaded } = options;
35
+ const baseDescription = "Search for available tools by query. Returns tool names and descriptions. " +
36
+ "Use this to discover tools that can help with your task.";
37
+ const loadDescription = enableLoad
38
+ ? " Set 'load: true' to load discovered tools for immediate use."
39
+ : "";
40
+ const inputSchema = enableLoad
41
+ ? z.object({
42
+ query: z
43
+ .string()
44
+ .describe("Search query to find relevant tools. Can match tool names or descriptions."),
45
+ load: z
46
+ .boolean()
47
+ .optional()
48
+ .describe("If true, load the discovered tools for immediate use. Default is false (search only)."),
49
+ })
50
+ : z.object({
51
+ query: z
52
+ .string()
53
+ .describe("Search query to find relevant tools. Can match tool names or descriptions."),
54
+ });
55
+ return tool({
56
+ description: baseDescription + loadDescription,
57
+ inputSchema,
58
+ execute: async (input) => {
59
+ const { query, load = false } = input;
60
+ const results = manager.searchTools(query, maxResults);
61
+ if (results.length === 0) {
62
+ return `No tools found matching "${query}". Try a different search term.`;
63
+ }
64
+ // If load is requested, load the discovered tools
65
+ if (load && enableLoad) {
66
+ const toolNames = results.map((t) => t.name);
67
+ const loadResult = manager.loadTools(toolNames);
68
+ // Notify callback if provided
69
+ if (onToolsLoaded && loadResult.loaded.length > 0) {
70
+ onToolsLoaded(loadResult.loaded);
71
+ }
72
+ if (loadResult.loaded.length === 0) {
73
+ const formatted = results.map((t) => `- **${t.name}**: ${t.description}`).join("\n");
74
+ return `Found ${results.length} tool(s) (all already loaded):\n\n${formatted}`;
75
+ }
76
+ const loadedFormatted = loadResult.loaded
77
+ .map((name) => {
78
+ const meta = results.find((t) => t.name === name);
79
+ return `- **${name}**: ${meta?.description ?? ""}`;
80
+ })
81
+ .join("\n");
82
+ let response = `Loaded ${loadResult.loaded.length} tool(s):\n\n${loadedFormatted}`;
83
+ if (loadResult.alreadyLoaded.length > 0) {
84
+ response += `\n\n(${loadResult.alreadyLoaded.length} tool(s) were already loaded)`;
85
+ }
86
+ return response;
87
+ }
88
+ // Search only - return results without loading
89
+ const formatted = results.map((t) => `- **${t.name}**: ${t.description}`).join("\n");
90
+ return `Found ${results.length} tool(s):\n\n${formatted}`;
91
+ },
92
+ });
93
+ }
94
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}