@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,120 @@
1
+ /**
2
+ * Todo tool for task planning and tracking.
3
+ *
4
+ * Provides a single `todo_write` tool for managing task lists, similar to
5
+ * Claude Code's TodoWrite. Agents replace the entire todo list with each call.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { tool } from "ai";
10
+ import { z } from "zod";
11
+ // =============================================================================
12
+ // Helper Functions
13
+ // =============================================================================
14
+ /**
15
+ * Helper to create a summary of current todos.
16
+ * @internal
17
+ */
18
+ function createTodoSummary(todos) {
19
+ return {
20
+ pending: todos.filter((t) => t.status === "pending").length,
21
+ inProgress: todos.filter((t) => t.status === "in_progress").length,
22
+ completed: todos.filter((t) => t.status === "completed").length,
23
+ };
24
+ }
25
+ /**
26
+ * Helper to emit todos:changed event.
27
+ * @internal
28
+ */
29
+ async function emitTodosChanged(onTodosChanged, changeType, affectedIds, todos) {
30
+ if (!onTodosChanged)
31
+ return;
32
+ const data = {
33
+ type: "todosChanged",
34
+ changeType,
35
+ affectedIds,
36
+ totalCount: todos.length,
37
+ summary: createTodoSummary(todos),
38
+ };
39
+ await onTodosChanged(data);
40
+ }
41
+ // =============================================================================
42
+ // Todo Write Tool
43
+ // =============================================================================
44
+ /**
45
+ * Creates the todo_write tool for managing task lists.
46
+ *
47
+ * This tool replaces the entire todo list with the provided items. It's designed
48
+ * to match Claude Code's TodoWrite behavior where the agent always provides the
49
+ * complete list state.
50
+ *
51
+ * @param options - Configuration options
52
+ * @returns An AI SDK compatible tool for writing todos
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * import { createTodoWriteTool, createAgentState } from "@lleverage-ai/agent-sdk";
57
+ *
58
+ * const state = createAgentState();
59
+ * const todoWrite = createTodoWriteTool({ state });
60
+ *
61
+ * const agent = createAgent({
62
+ * model,
63
+ * tools: { todo_write: todoWrite },
64
+ * });
65
+ * ```
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * // With change callback for UI integration
70
+ * const todoWrite = createTodoWriteTool({
71
+ * state,
72
+ * onTodosChanged: (data) => {
73
+ * console.log(`Todos updated: ${data.summary.completed}/${data.totalCount} completed`);
74
+ * },
75
+ * });
76
+ * ```
77
+ *
78
+ * @category Tools
79
+ */
80
+ export function createTodoWriteTool(options) {
81
+ const { state, onTodosChanged } = options;
82
+ return tool({
83
+ description: "Update the task list. Replace the entire todo list with the provided items. Use this to track progress on multi-step tasks.",
84
+ inputSchema: z.object({
85
+ todos: z.array(z.object({
86
+ content: z.string().describe("Task description"),
87
+ status: z.enum(["pending", "in_progress", "completed"]).describe("Current task status"),
88
+ })),
89
+ }),
90
+ execute: async ({ todos }) => {
91
+ const now = new Date().toISOString();
92
+ // Transform input to full TodoItem format
93
+ const newTodos = todos.map((t, i) => {
94
+ // Try to find existing todo with same content to preserve ID
95
+ const existingTodo = state.todos.find((existing) => existing.content === t.content);
96
+ const id = existingTodo?.id ?? `todo-${Date.now()}-${i}`;
97
+ const createdAt = existingTodo?.createdAt ?? now;
98
+ const completedAt = t.status === "completed" ? (existingTodo?.completedAt ?? now) : undefined;
99
+ return {
100
+ id,
101
+ content: t.content,
102
+ status: t.status,
103
+ createdAt,
104
+ completedAt,
105
+ };
106
+ });
107
+ state.todos = newTodos;
108
+ // Emit change event
109
+ await emitTodosChanged(onTodosChanged, "replaced", newTodos.map((t) => t.id), newTodos);
110
+ // Generate summary
111
+ const summary = createTodoSummary(newTodos);
112
+ return {
113
+ success: true,
114
+ count: newTodos.length,
115
+ summary,
116
+ };
117
+ },
118
+ });
119
+ }
120
+ //# sourceMappingURL=todos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todos.js","sourceRoot":"","sources":["../../src/tools/todos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,424 @@
1
+ /**
2
+ * Tool Registry for progressive tool disclosure.
3
+ *
4
+ * The ToolRegistry enables deferred tool loading to keep initial context small.
5
+ * Instead of loading all tool schemas upfront, tools are registered with lightweight
6
+ * metadata and loaded on-demand when the agent needs them.
7
+ *
8
+ * This mirrors the MCP Tool Search pattern used in Claude Code, where hundreds
9
+ * of tools can be available without consuming context window until needed.
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ import type { Tool, ToolSet } from "ai";
14
+ /**
15
+ * Lightweight metadata for a registered tool.
16
+ *
17
+ * This is what the agent sees before loading - just enough information
18
+ * to decide whether to load the full tool definition.
19
+ *
20
+ * @category Tools
21
+ */
22
+ export interface ToolMetadata {
23
+ /** Tool name (unique identifier) */
24
+ name: string;
25
+ /** Brief description for search/discovery */
26
+ description: string;
27
+ /** Plugin that provides this tool (if any) */
28
+ plugin?: string;
29
+ /** Category for grouping related tools */
30
+ category?: string;
31
+ /** Tags for semantic search */
32
+ tags?: string[];
33
+ }
34
+ /**
35
+ * Result from loading tools.
36
+ *
37
+ * @category Tools
38
+ */
39
+ export interface ToolLoadResult {
40
+ /** Whether loading was successful */
41
+ success: boolean;
42
+ /** Names of tools that were loaded */
43
+ loaded: string[];
44
+ /** Names of tools that were already loaded (skipped) */
45
+ skipped: string[];
46
+ /** Names of tools that weren't found */
47
+ notFound: string[];
48
+ /** The loaded tools as a ToolSet */
49
+ tools: ToolSet;
50
+ /** Error message if something went wrong */
51
+ error?: string;
52
+ }
53
+ /**
54
+ * Options for creating a tool registry.
55
+ *
56
+ * @category Tools
57
+ */
58
+ export interface ToolRegistryOptions {
59
+ /**
60
+ * Callback when tools are loaded.
61
+ */
62
+ onToolsLoaded?: (result: ToolLoadResult) => void;
63
+ /**
64
+ * Callback when the registry is updated.
65
+ */
66
+ onRegistryUpdated?: () => void;
67
+ /**
68
+ * Callback when a tool is registered.
69
+ */
70
+ onToolRegistered?: (input: {
71
+ tool_name: string;
72
+ description: string;
73
+ source?: string;
74
+ }) => void | Promise<void>;
75
+ /**
76
+ * Callback when a tool fails to load.
77
+ */
78
+ onToolLoadError?: (input: {
79
+ tool_name: string;
80
+ error: Error;
81
+ source?: string;
82
+ }) => void | Promise<void>;
83
+ }
84
+ /**
85
+ * Options for searching tools.
86
+ *
87
+ * @category Tools
88
+ */
89
+ export interface ToolSearchOptions {
90
+ /** Search query (matches name, description, tags) */
91
+ query?: string;
92
+ /** Filter by plugin name */
93
+ plugin?: string;
94
+ /** Filter by category */
95
+ category?: string;
96
+ /** Filter by tags (any match) */
97
+ tags?: string[];
98
+ /** Include already-loaded tools in results */
99
+ includeLoaded?: boolean;
100
+ /** Maximum results to return */
101
+ limit?: number;
102
+ }
103
+ /**
104
+ * Registry for managing tools with deferred loading.
105
+ *
106
+ * The ToolRegistry stores tools with lightweight metadata and loads full
107
+ * definitions on-demand. This enables agents to have access to hundreds of
108
+ * tools without consuming context window until needed.
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * const registry = new ToolRegistry();
113
+ *
114
+ * // Register tools (does not load them)
115
+ * registry.register({
116
+ * name: "stripe_create_payment",
117
+ * description: "Create a payment intent in Stripe",
118
+ * plugin: "stripe",
119
+ * tool: stripeCreatePaymentTool,
120
+ * });
121
+ *
122
+ * // Agent searches for tools
123
+ * const matches = registry.search({ query: "payment" });
124
+ * // Returns: [{ name: "stripe_create_payment", description: "..." }]
125
+ *
126
+ * // Agent loads tools when needed
127
+ * const result = registry.load(["stripe_create_payment"]);
128
+ * // Tools are now available for use
129
+ * ```
130
+ *
131
+ * @category Tools
132
+ */
133
+ export declare class ToolRegistry {
134
+ /** All registered tools */
135
+ private entries;
136
+ /** Callbacks */
137
+ private onToolsLoaded?;
138
+ private onRegistryUpdated?;
139
+ private onToolRegistered?;
140
+ private onToolLoadError?;
141
+ /**
142
+ * Creates a new tool registry.
143
+ *
144
+ * @param options - Configuration options
145
+ */
146
+ constructor(options?: ToolRegistryOptions);
147
+ /**
148
+ * Register a tool with the registry.
149
+ *
150
+ * The tool is stored but not loaded - only metadata is exposed until
151
+ * the tool is explicitly loaded.
152
+ *
153
+ * @param metadata - Tool metadata
154
+ * @param toolDef - The full tool definition
155
+ * @throws Error if a tool with the same name is already registered
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * registry.register(
160
+ * {
161
+ * name: "send_email",
162
+ * description: "Send an email via SMTP",
163
+ * plugin: "email",
164
+ * category: "communication",
165
+ * tags: ["email", "notification"],
166
+ * },
167
+ * sendEmailTool
168
+ * );
169
+ * ```
170
+ */
171
+ register(metadata: ToolMetadata, toolDef: Tool): void;
172
+ /**
173
+ * Register multiple tools at once.
174
+ *
175
+ * @param tools - Array of [metadata, tool] tuples
176
+ *
177
+ * @example
178
+ * ```typescript
179
+ * registry.registerMany([
180
+ * [{ name: "tool1", description: "..." }, tool1],
181
+ * [{ name: "tool2", description: "..." }, tool2],
182
+ * ]);
183
+ * ```
184
+ */
185
+ registerMany(tools: Array<[ToolMetadata, Tool]>): void;
186
+ /**
187
+ * Register all tools from a plugin.
188
+ *
189
+ * Convenience method that extracts tool metadata and registers each tool
190
+ * with the plugin name attached.
191
+ *
192
+ * @param pluginName - Name of the plugin
193
+ * @param tools - ToolSet from the plugin
194
+ * @param options - Optional metadata overrides
195
+ *
196
+ * @example
197
+ * ```typescript
198
+ * registry.registerPlugin("stripe", stripePlugin.tools, {
199
+ * category: "payments",
200
+ * });
201
+ * ```
202
+ */
203
+ registerPlugin(pluginName: string, tools: ToolSet, options?: {
204
+ category?: string;
205
+ tags?: string[];
206
+ }): void;
207
+ /**
208
+ * Unregister a tool from the registry.
209
+ *
210
+ * @param name - The tool name to unregister
211
+ * @returns True if the tool was found and removed
212
+ */
213
+ unregister(name: string): boolean;
214
+ /**
215
+ * Check if a tool is registered.
216
+ *
217
+ * @param name - The tool name to check
218
+ */
219
+ has(name: string): boolean;
220
+ /**
221
+ * Check if a tool is currently loaded.
222
+ *
223
+ * @param name - The tool name to check
224
+ */
225
+ isLoaded(name: string): boolean;
226
+ /**
227
+ * Get metadata for a registered tool.
228
+ *
229
+ * @param name - The tool name
230
+ * @returns Tool metadata or undefined if not found
231
+ */
232
+ getMetadata(name: string): ToolMetadata | undefined;
233
+ /**
234
+ * Search for tools matching criteria.
235
+ *
236
+ * Searches tool metadata (name, description, tags) without loading
237
+ * the full tool definitions.
238
+ *
239
+ * @param options - Search options
240
+ * @returns Array of matching tool metadata
241
+ *
242
+ * @example
243
+ * ```typescript
244
+ * // Search by query
245
+ * const paymentTools = registry.search({ query: "payment" });
246
+ *
247
+ * // Filter by plugin
248
+ * const stripeTools = registry.search({ plugin: "stripe" });
249
+ *
250
+ * // Combined search
251
+ * const results = registry.search({
252
+ * query: "create",
253
+ * plugin: "stripe",
254
+ * limit: 5,
255
+ * });
256
+ * ```
257
+ */
258
+ search(options?: ToolSearchOptions): ToolMetadata[];
259
+ /**
260
+ * Load tools, making them available for use.
261
+ *
262
+ * @param names - Tool names to load
263
+ * @returns Result containing loaded tools and status
264
+ *
265
+ * @example
266
+ * ```typescript
267
+ * const result = registry.load(["stripe_create_payment", "stripe_refund"]);
268
+ * if (result.success) {
269
+ * // result.tools contains the loaded ToolSet
270
+ * // Inject into agent's active tools
271
+ * }
272
+ * ```
273
+ */
274
+ load(names: string[]): ToolLoadResult;
275
+ /**
276
+ * Load tools matching a search query.
277
+ *
278
+ * Convenience method combining search and load.
279
+ *
280
+ * @param options - Search options (same as search())
281
+ * @returns Result containing loaded tools
282
+ *
283
+ * @example
284
+ * ```typescript
285
+ * const result = registry.loadMatching({ query: "stripe", limit: 5 });
286
+ * ```
287
+ */
288
+ loadMatching(options: ToolSearchOptions): ToolLoadResult;
289
+ /**
290
+ * Get all currently loaded tools as a ToolSet.
291
+ *
292
+ * @returns ToolSet containing all loaded tools
293
+ */
294
+ getLoadedTools(): ToolSet;
295
+ /**
296
+ * List all available (not yet loaded) tools.
297
+ *
298
+ * @returns Array of tool metadata
299
+ */
300
+ listAvailable(): ToolMetadata[];
301
+ /**
302
+ * List all loaded tools.
303
+ *
304
+ * @returns Array of tool names
305
+ */
306
+ listLoaded(): string[];
307
+ /**
308
+ * List all registered tools with their load status.
309
+ *
310
+ * @returns Array of tool metadata with loaded flag
311
+ */
312
+ listAll(): Array<ToolMetadata & {
313
+ loaded: boolean;
314
+ }>;
315
+ /**
316
+ * Get all plugins that have registered tools.
317
+ *
318
+ * @returns Array of unique plugin names
319
+ */
320
+ listPlugins(): string[];
321
+ /**
322
+ * Reset all tools to unloaded state.
323
+ *
324
+ * Does not unregister tools, only marks them as unloaded.
325
+ */
326
+ reset(): void;
327
+ /**
328
+ * Clear all registered tools.
329
+ */
330
+ clear(): void;
331
+ /**
332
+ * Get the number of registered tools.
333
+ */
334
+ get size(): number;
335
+ /**
336
+ * Get the number of loaded tools.
337
+ */
338
+ get loadedCount(): number;
339
+ /**
340
+ * Build the tool index string for the use_tools description.
341
+ *
342
+ * This creates a compact representation of available tools that fits
343
+ * in the meta-tool description.
344
+ *
345
+ * @param options - Formatting options
346
+ * @returns Formatted tool index string
347
+ */
348
+ buildToolIndex(options?: {
349
+ includePlugins?: boolean;
350
+ }): string;
351
+ }
352
+ /**
353
+ * Options for creating the use_tools meta-tool.
354
+ *
355
+ * @category Tools
356
+ */
357
+ export interface UseToolsToolOptions {
358
+ /** The tool registry to use */
359
+ registry: ToolRegistry;
360
+ /**
361
+ * Custom name for the tool.
362
+ * @defaultValue "use_tools"
363
+ */
364
+ name?: string;
365
+ /**
366
+ * Custom description prefix.
367
+ */
368
+ descriptionPrefix?: string;
369
+ /**
370
+ * Whether to include plugin groupings in tool index.
371
+ * @defaultValue true
372
+ */
373
+ groupByPlugin?: boolean;
374
+ }
375
+ /**
376
+ * Creates the use_tools meta-tool for discovering and loading tools.
377
+ *
378
+ * This tool allows agents to search available tools and load them on-demand.
379
+ * Tools loaded through this tool become available in subsequent agent steps.
380
+ *
381
+ * @param options - Configuration options
382
+ * @returns An AI SDK compatible tool
383
+ *
384
+ * @example
385
+ * ```typescript
386
+ * const registry = new ToolRegistry();
387
+ * registry.registerPlugin("stripe", stripePlugin.tools);
388
+ *
389
+ * const useToolsTool = createUseToolsTool({ registry });
390
+ *
391
+ * const agent = createAgent({
392
+ * model,
393
+ * tools: {
394
+ * ...coreTools,
395
+ * use_tools: useToolsTool,
396
+ * },
397
+ * toolRegistry: registry,
398
+ * });
399
+ * ```
400
+ *
401
+ * @category Tools
402
+ */
403
+ export declare function createUseToolsTool(options: UseToolsToolOptions): Tool<{
404
+ query?: string | undefined;
405
+ tools?: string[] | undefined;
406
+ plugin?: string | undefined;
407
+ }, Record<string, unknown>>;
408
+ /**
409
+ * Creates a new tool registry.
410
+ *
411
+ * @param options - Configuration options
412
+ * @returns A new ToolRegistry instance
413
+ *
414
+ * @example
415
+ * ```typescript
416
+ * const registry = createToolRegistry({
417
+ * onToolsLoaded: (result) => console.log("Loaded:", result.loaded),
418
+ * });
419
+ * ```
420
+ *
421
+ * @category Tools
422
+ */
423
+ export declare function createToolRegistry(options?: ToolRegistryOptions): ToolRegistry;
424
+ //# sourceMappingURL=tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/tools/tool-registry.ts"],"names":[],"mappings":"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"}