@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,241 @@
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 { createBashTool } from "./execute.js";
10
+ // Tool creators
11
+ import { createEditTool, createFilesystemTools, createGlobTool, createGrepTool, createReadTool, createWriteTool, } from "./filesystem.js";
12
+ import { createSearchToolsTool } from "./search.js";
13
+ import { createSkillRegistry, createSkillTool, SkillRegistry, } from "./skills.js";
14
+ import { clearCompletedTasks, createTaskTool, getBackgroundTask, listBackgroundTasks, } from "./task.js";
15
+ import { createTodoWriteTool } from "./todos.js";
16
+ // =============================================================================
17
+ // Factory Function
18
+ // =============================================================================
19
+ /**
20
+ * Creates all core tools from configuration.
21
+ *
22
+ * This is the recommended way to create agent tools. The minimal tool set is:
23
+ * - `read`, `write`, `edit`, `glob`, `grep` - filesystem operations
24
+ * - `bash` - shell command execution (optional, requires sandbox)
25
+ * - `todo_write` - task tracking (optional)
26
+ * - `task` - subagent delegation (optional, requires subagents)
27
+ * - `skill` - progressive capability loading (optional, requires registry)
28
+ *
29
+ * @param options - Configuration options
30
+ * @returns Object containing all created tools and registries
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * import { createAgent, createCoreTools, createAgentState } from "@lleverage-ai/agent-sdk";
35
+ * import { FilesystemBackend, LocalSandbox } from "@lleverage-ai/agent-sdk";
36
+ *
37
+ * const state = createAgentState();
38
+ * const backend = new FilesystemBackend({ rootDir: process.cwd() });
39
+ * const sandbox = new LocalSandbox({ cwd: process.cwd() });
40
+ *
41
+ * const tools = createCoreTools({
42
+ * backend,
43
+ * state,
44
+ * sandbox,
45
+ * });
46
+ *
47
+ * const agent = createAgent({
48
+ * model: anthropic("claude-sonnet-4-20250514"),
49
+ * tools,
50
+ * });
51
+ * ```
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * // Minimal: just filesystem tools
56
+ * const tools = createCoreTools({
57
+ * backend: new StateBackend(state),
58
+ * state,
59
+ * includeTodoWrite: false,
60
+ * });
61
+ * ```
62
+ *
63
+ * @category Tools
64
+ */
65
+ export function createCoreTools(options) {
66
+ const { backend, state,
67
+ // Disable
68
+ disabled = [],
69
+ // Filesystem
70
+ includeWrite = true, includeEdit = true,
71
+ // Todos
72
+ includeTodoWrite = true, onTodosChanged,
73
+ // Bash
74
+ sandbox, bashOptions = {},
75
+ // Skills
76
+ skillRegistry: providedSkillRegistry, skills = [], skillToolOptions = {},
77
+ // Tasks
78
+ subagents, parentAgent, defaultModel, includeGeneralPurpose = false, taskOptions = {},
79
+ // Search/MCP
80
+ mcpManager, searchToolsOptions = {}, } = options;
81
+ // Create disabled set for efficient lookup
82
+ const disabledSet = new Set(disabled);
83
+ // Helper to check if a tool is disabled
84
+ const isDisabled = (name) => disabledSet.has(name);
85
+ // Create result object
86
+ const result = {};
87
+ // =========================================================================
88
+ // Filesystem Tools
89
+ // =========================================================================
90
+ if (!isDisabled("read")) {
91
+ result.read = createReadTool(backend);
92
+ }
93
+ if (!isDisabled("glob")) {
94
+ result.glob = createGlobTool(backend);
95
+ }
96
+ if (!isDisabled("grep")) {
97
+ result.grep = createGrepTool(backend);
98
+ }
99
+ if (!isDisabled("write") && includeWrite) {
100
+ result.write = createWriteTool(backend);
101
+ }
102
+ if (!isDisabled("edit") && includeEdit) {
103
+ result.edit = createEditTool(backend);
104
+ }
105
+ // =========================================================================
106
+ // Todo Tool
107
+ // =========================================================================
108
+ if (!isDisabled("todo_write") && includeTodoWrite) {
109
+ result.todo_write = createTodoWriteTool({
110
+ state,
111
+ onTodosChanged,
112
+ });
113
+ }
114
+ // =========================================================================
115
+ // Bash Tool
116
+ // =========================================================================
117
+ if (!isDisabled("bash") && sandbox) {
118
+ result.bash = createBashTool({ sandbox, ...bashOptions });
119
+ }
120
+ // =========================================================================
121
+ // Skill Tool
122
+ // =========================================================================
123
+ if (!isDisabled("skill")) {
124
+ // Use provided registry if available, otherwise create from skills array
125
+ let skillRegistry = providedSkillRegistry;
126
+ if (!skillRegistry && skills.length > 0) {
127
+ // Only include skills that have tools defined
128
+ const skillsWithTools = skills.filter((s) => s.tools);
129
+ if (skillsWithTools.length > 0) {
130
+ skillRegistry = createSkillRegistry(skillsWithTools.map((s) => ({
131
+ name: s.name,
132
+ description: s.description,
133
+ prompt: s.prompt,
134
+ tools: s.tools, // Safe due to filter
135
+ })));
136
+ }
137
+ }
138
+ if (skillRegistry) {
139
+ result.skill = createSkillTool({
140
+ registry: skillRegistry,
141
+ ...skillToolOptions,
142
+ });
143
+ result.skillRegistry = skillRegistry;
144
+ }
145
+ }
146
+ // =========================================================================
147
+ // Task Tool
148
+ // =========================================================================
149
+ if (!isDisabled("task") && subagents && subagents.length > 0 && parentAgent && defaultModel) {
150
+ result.task = createTaskTool({
151
+ subagents,
152
+ defaultModel,
153
+ parentAgent,
154
+ includeGeneralPurpose,
155
+ ...taskOptions,
156
+ });
157
+ }
158
+ // =========================================================================
159
+ // Search Tools (MCP)
160
+ // =========================================================================
161
+ if (!isDisabled("search_tools") && mcpManager) {
162
+ result.search_tools = createSearchToolsTool({
163
+ manager: mcpManager,
164
+ ...searchToolsOptions,
165
+ });
166
+ }
167
+ return result;
168
+ }
169
+ /**
170
+ * Converts CoreTools to a ToolSet for direct use with AI SDK.
171
+ *
172
+ * This extracts only the tool properties (excluding skillRegistry)
173
+ * and filters out undefined tools.
174
+ *
175
+ * @param coreTools - The core tools object from createCoreTools
176
+ * @returns A ToolSet compatible with AI SDK
177
+ *
178
+ * @example
179
+ * ```typescript
180
+ * const coreTools = createCoreTools({ backend, state });
181
+ * const toolSet = coreToolsToToolSet(coreTools);
182
+ *
183
+ * const result = await generateText({
184
+ * model,
185
+ * tools: toolSet,
186
+ * prompt: "...",
187
+ * });
188
+ * ```
189
+ *
190
+ * @category Tools
191
+ */
192
+ export function coreToolsToToolSet(coreTools) {
193
+ const { skillRegistry: _registry, // Exclude non-tool property
194
+ ...tools } = coreTools;
195
+ // Filter out undefined tools
196
+ const result = {};
197
+ for (const [name, tool] of Object.entries(tools)) {
198
+ if (tool !== undefined) {
199
+ result[name] = tool;
200
+ }
201
+ }
202
+ return result;
203
+ }
204
+ // =============================================================================
205
+ // Convenience Exports
206
+ // =============================================================================
207
+ /**
208
+ * Creates filesystem tools only.
209
+ *
210
+ * Use this when you only need file operations without other tools.
211
+ *
212
+ * @param options - Filesystem tools options
213
+ * @returns Object containing filesystem tools
214
+ *
215
+ * @example
216
+ * ```typescript
217
+ * const fsTools = createFilesystemToolsOnly({
218
+ * backend: new FilesystemBackend({ rootDir: process.cwd() }),
219
+ * });
220
+ * ```
221
+ *
222
+ * @category Tools
223
+ */
224
+ export function createFilesystemToolsOnly(options) {
225
+ return createFilesystemTools(options);
226
+ }
227
+ // Re-export individual tool creators for maximum flexibility
228
+ export {
229
+ // Filesystem
230
+ createReadTool, createWriteTool, createEditTool, createGlobTool, createGrepTool, createFilesystemTools,
231
+ // Todos
232
+ createTodoWriteTool,
233
+ // Bash
234
+ createBashTool,
235
+ // Skills
236
+ SkillRegistry, createSkillTool, createSkillRegistry,
237
+ // Tasks
238
+ createTaskTool, getBackgroundTask, listBackgroundTasks, clearCompletedTasks,
239
+ // Search
240
+ createSearchToolsTool, };
241
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/tools/factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
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 type { BackendProtocol } from "../backend.js";
11
+ /**
12
+ * Creates a tool for reading file contents.
13
+ *
14
+ * Reads files with line numbers and supports offset/limit for large files.
15
+ * By default reads the first 2000 lines.
16
+ *
17
+ * @param backend - The backend to use for file operations
18
+ * @returns An AI SDK compatible tool for reading files
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * import { createReadTool } from "@lleverage-ai/agent-sdk";
23
+ *
24
+ * const read = createReadTool(backend);
25
+ * const agent = createAgent({
26
+ * model,
27
+ * tools: { read },
28
+ * });
29
+ * ```
30
+ *
31
+ * @category Tools
32
+ */
33
+ export declare function createReadTool(backend: BackendProtocol): import("ai").Tool<{
34
+ file_path: string;
35
+ offset?: number | undefined;
36
+ limit?: number | undefined;
37
+ }, string>;
38
+ /**
39
+ * Creates a tool for writing/creating files.
40
+ *
41
+ * Creates new files or overwrites existing ones. Parent directories are
42
+ * created automatically if they don't exist.
43
+ *
44
+ * @param backend - The backend to use for file operations
45
+ * @returns An AI SDK compatible tool for writing files
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * import { createWriteTool } from "@lleverage-ai/agent-sdk";
50
+ *
51
+ * const write = createWriteTool(backend);
52
+ * const agent = createAgent({
53
+ * model,
54
+ * tools: { write },
55
+ * });
56
+ * ```
57
+ *
58
+ * @category Tools
59
+ */
60
+ export declare function createWriteTool(backend: BackendProtocol): import("ai").Tool<{
61
+ file_path: string;
62
+ content: string;
63
+ }, string>;
64
+ /**
65
+ * Creates a tool for editing files via string replacement.
66
+ *
67
+ * Replaces text in a file. By default, the `old_string` must be unique
68
+ * in the file to prevent accidental replacements. Use `replace_all: true`
69
+ * to replace all occurrences.
70
+ *
71
+ * @param backend - The backend to use for file operations
72
+ * @returns An AI SDK compatible tool for editing files
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * import { createEditTool } from "@lleverage-ai/agent-sdk";
77
+ *
78
+ * const edit = createEditTool(backend);
79
+ * const agent = createAgent({
80
+ * model,
81
+ * tools: { edit },
82
+ * });
83
+ * ```
84
+ *
85
+ * @category Tools
86
+ */
87
+ export declare function createEditTool(backend: BackendProtocol): import("ai").Tool<{
88
+ file_path: string;
89
+ old_string: string;
90
+ new_string: string;
91
+ replace_all?: boolean | undefined;
92
+ }, string>;
93
+ /**
94
+ * Creates a tool for finding files matching glob patterns.
95
+ *
96
+ * Supports glob patterns like `**\/*.ts`, `src/**\/*.test.ts`, etc.
97
+ *
98
+ * @param backend - The backend to use for file operations
99
+ * @returns An AI SDK compatible tool for glob searching
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * import { createGlobTool } from "@lleverage-ai/agent-sdk";
104
+ *
105
+ * const glob = createGlobTool(backend);
106
+ * const agent = createAgent({
107
+ * model,
108
+ * tools: { glob },
109
+ * });
110
+ * ```
111
+ *
112
+ * @category Tools
113
+ */
114
+ export declare function createGlobTool(backend: BackendProtocol): import("ai").Tool<{
115
+ pattern: string;
116
+ path?: string | undefined;
117
+ }, string>;
118
+ /**
119
+ * Creates a tool for searching file contents with regex.
120
+ *
121
+ * Searches for pattern matches across files, with optional glob filtering.
122
+ *
123
+ * @param backend - The backend to use for file operations
124
+ * @returns An AI SDK compatible tool for grep searching
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * import { createGrepTool } from "@lleverage-ai/agent-sdk";
129
+ *
130
+ * const grep = createGrepTool(backend);
131
+ * const agent = createAgent({
132
+ * model,
133
+ * tools: { grep },
134
+ * });
135
+ * ```
136
+ *
137
+ * @category Tools
138
+ */
139
+ export declare function createGrepTool(backend: BackendProtocol): import("ai").Tool<{
140
+ pattern: string;
141
+ path?: string | undefined;
142
+ glob?: string | undefined;
143
+ }, string>;
144
+ /**
145
+ * Options for creating filesystem tools.
146
+ *
147
+ * @category Tools
148
+ */
149
+ export interface FilesystemToolsOptions {
150
+ /** The backend to use for file operations */
151
+ backend: BackendProtocol;
152
+ /**
153
+ * Whether to include the write tool.
154
+ * @defaultValue true
155
+ */
156
+ includeWrite?: boolean;
157
+ /**
158
+ * Whether to include the edit tool.
159
+ * @defaultValue true
160
+ */
161
+ includeEdit?: boolean;
162
+ }
163
+ /**
164
+ * Result from createFilesystemTools containing all filesystem tools.
165
+ *
166
+ * @category Tools
167
+ */
168
+ export interface FilesystemTools {
169
+ /** Read file contents */
170
+ read: ReturnType<typeof createReadTool>;
171
+ /** Write/create files (optional) */
172
+ write?: ReturnType<typeof createWriteTool>;
173
+ /** Edit files via replacement (optional) */
174
+ edit?: ReturnType<typeof createEditTool>;
175
+ /** Find files by glob pattern */
176
+ glob: ReturnType<typeof createGlobTool>;
177
+ /** Search file contents */
178
+ grep: ReturnType<typeof createGrepTool>;
179
+ }
180
+ /**
181
+ * Creates all filesystem tools from a backend.
182
+ *
183
+ * This is a convenience factory that creates all filesystem tools at once.
184
+ * For read-only access, set `includeWrite` and `includeEdit` to false.
185
+ *
186
+ * @param options - Configuration options
187
+ * @returns Object containing all filesystem tools
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * import { createFilesystemTools, FilesystemBackend } from "@lleverage-ai/agent-sdk";
192
+ *
193
+ * const backend = new FilesystemBackend({ rootDir: process.cwd() });
194
+ * const fsTools = createFilesystemTools({ backend });
195
+ *
196
+ * const agent = createAgent({
197
+ * model,
198
+ * tools: fsTools,
199
+ * });
200
+ * ```
201
+ *
202
+ * @example
203
+ * ```typescript
204
+ * // Read-only mode
205
+ * const fsTools = createFilesystemTools({
206
+ * backend,
207
+ * includeWrite: false,
208
+ * includeEdit: false,
209
+ * });
210
+ * ```
211
+ *
212
+ * @category Tools
213
+ */
214
+ export declare function createFilesystemTools(options: FilesystemToolsOptions): FilesystemTools;
215
+ //# sourceMappingURL=filesystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,eAAe,CAAC;AAgB1E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe;;;;WAgCtD;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe;;;WAmBvD;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe;;;;;WAqCtD;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe;;;WAatD;AAoBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe;;;;WAoBtD;AAoBD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,OAAO,EAAE,eAAe,CAAC;IAEzB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,IAAI,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IACxC,oCAAoC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IAC3C,4CAA4C;IAC5C,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IACzC,iCAAiC;IACjC,IAAI,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IACxC,2BAA2B;IAC3B,IAAI,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAkBtF"}