ai-functions 2.1.1 → 2.3.0

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 (286) hide show
  1. package/.turbo/turbo-build.log +1 -4
  2. package/CHANGELOG.md +68 -1
  3. package/README.md +397 -157
  4. package/dist/ai-promise.d.ts +50 -3
  5. package/dist/ai-promise.d.ts.map +1 -1
  6. package/dist/ai-promise.js +410 -51
  7. package/dist/ai-promise.js.map +1 -1
  8. package/dist/ai-schemas.d.ts +56 -0
  9. package/dist/ai-schemas.d.ts.map +1 -0
  10. package/dist/ai-schemas.js +53 -0
  11. package/dist/ai-schemas.js.map +1 -0
  12. package/dist/ai.d.ts +16 -242
  13. package/dist/ai.d.ts.map +1 -1
  14. package/dist/ai.js +54 -837
  15. package/dist/ai.js.map +1 -1
  16. package/dist/batch/anthropic.d.ts +6 -4
  17. package/dist/batch/anthropic.d.ts.map +1 -1
  18. package/dist/batch/anthropic.js +83 -145
  19. package/dist/batch/anthropic.js.map +1 -1
  20. package/dist/batch/bedrock.d.ts +8 -30
  21. package/dist/batch/bedrock.d.ts.map +1 -1
  22. package/dist/batch/bedrock.js +155 -338
  23. package/dist/batch/bedrock.js.map +1 -1
  24. package/dist/batch/cloudflare.d.ts +8 -20
  25. package/dist/batch/cloudflare.d.ts.map +1 -1
  26. package/dist/batch/cloudflare.js +68 -189
  27. package/dist/batch/cloudflare.js.map +1 -1
  28. package/dist/batch/google.d.ts +6 -20
  29. package/dist/batch/google.d.ts.map +1 -1
  30. package/dist/batch/google.js +70 -238
  31. package/dist/batch/google.js.map +1 -1
  32. package/dist/batch/index.d.ts +4 -1
  33. package/dist/batch/index.d.ts.map +1 -1
  34. package/dist/batch/index.js +4 -1
  35. package/dist/batch/index.js.map +1 -1
  36. package/dist/batch/memory.d.ts +1 -1
  37. package/dist/batch/memory.d.ts.map +1 -1
  38. package/dist/batch/memory.js +14 -10
  39. package/dist/batch/memory.js.map +1 -1
  40. package/dist/batch/openai.d.ts +11 -14
  41. package/dist/batch/openai.d.ts.map +1 -1
  42. package/dist/batch/openai.js +52 -156
  43. package/dist/batch/openai.js.map +1 -1
  44. package/dist/batch/provider.d.ts +111 -0
  45. package/dist/batch/provider.d.ts.map +1 -0
  46. package/dist/batch/provider.js +233 -0
  47. package/dist/batch/provider.js.map +1 -0
  48. package/dist/batch-map.d.ts.map +1 -1
  49. package/dist/batch-map.js +23 -17
  50. package/dist/batch-map.js.map +1 -1
  51. package/dist/batch-queue.d.ts +65 -0
  52. package/dist/batch-queue.d.ts.map +1 -1
  53. package/dist/batch-queue.js +169 -14
  54. package/dist/batch-queue.js.map +1 -1
  55. package/dist/budget.d.ts +272 -0
  56. package/dist/budget.d.ts.map +1 -0
  57. package/dist/budget.js +513 -0
  58. package/dist/budget.js.map +1 -0
  59. package/dist/cache.d.ts +295 -0
  60. package/dist/cache.d.ts.map +1 -0
  61. package/dist/cache.js +433 -0
  62. package/dist/cache.js.map +1 -0
  63. package/dist/context.d.ts +42 -8
  64. package/dist/context.d.ts.map +1 -1
  65. package/dist/context.js +64 -62
  66. package/dist/context.js.map +1 -1
  67. package/dist/digital-objects-registry.d.ts +229 -0
  68. package/dist/digital-objects-registry.d.ts.map +1 -0
  69. package/dist/digital-objects-registry.js +617 -0
  70. package/dist/digital-objects-registry.js.map +1 -0
  71. package/dist/embeddings.d.ts +2 -2
  72. package/dist/embeddings.d.ts.map +1 -1
  73. package/dist/errors.d.ts +22 -0
  74. package/dist/errors.d.ts.map +1 -0
  75. package/dist/errors.js +35 -0
  76. package/dist/errors.js.map +1 -0
  77. package/dist/eval/runner.d.ts +10 -1
  78. package/dist/eval/runner.d.ts.map +1 -1
  79. package/dist/eval/runner.js +41 -35
  80. package/dist/eval/runner.js.map +1 -1
  81. package/dist/eval-log/in-memory.d.ts +34 -0
  82. package/dist/eval-log/in-memory.d.ts.map +1 -0
  83. package/dist/eval-log/in-memory.js +84 -0
  84. package/dist/eval-log/in-memory.js.map +1 -0
  85. package/dist/eval-log/index.d.ts +29 -0
  86. package/dist/eval-log/index.d.ts.map +1 -0
  87. package/dist/eval-log/index.js +39 -0
  88. package/dist/eval-log/index.js.map +1 -0
  89. package/dist/eval-log/types.d.ts +101 -0
  90. package/dist/eval-log/types.d.ts.map +1 -0
  91. package/dist/eval-log/types.js +16 -0
  92. package/dist/eval-log/types.js.map +1 -0
  93. package/dist/function-registry.d.ts +116 -0
  94. package/dist/function-registry.d.ts.map +1 -0
  95. package/dist/function-registry.js +546 -0
  96. package/dist/function-registry.js.map +1 -0
  97. package/dist/generate.d.ts +9 -3
  98. package/dist/generate.d.ts.map +1 -1
  99. package/dist/generate.js +18 -22
  100. package/dist/generate.js.map +1 -1
  101. package/dist/index.d.ts +35 -20
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +89 -42
  104. package/dist/index.js.map +1 -1
  105. package/dist/logger.d.ts +118 -0
  106. package/dist/logger.d.ts.map +1 -0
  107. package/dist/logger.js +187 -0
  108. package/dist/logger.js.map +1 -0
  109. package/dist/middleware/budget.d.ts +84 -0
  110. package/dist/middleware/budget.d.ts.map +1 -0
  111. package/dist/middleware/budget.js +110 -0
  112. package/dist/middleware/budget.js.map +1 -0
  113. package/dist/middleware/cache.d.ts +103 -0
  114. package/dist/middleware/cache.d.ts.map +1 -0
  115. package/dist/middleware/cache.js +228 -0
  116. package/dist/middleware/cache.js.map +1 -0
  117. package/dist/middleware/embed-cache.d.ts +99 -0
  118. package/dist/middleware/embed-cache.d.ts.map +1 -0
  119. package/dist/middleware/embed-cache.js +128 -0
  120. package/dist/middleware/embed-cache.js.map +1 -0
  121. package/dist/middleware/index.d.ts +11 -0
  122. package/dist/middleware/index.d.ts.map +1 -0
  123. package/dist/middleware/index.js +11 -0
  124. package/dist/middleware/index.js.map +1 -0
  125. package/dist/middleware/trace.d.ts +103 -0
  126. package/dist/middleware/trace.d.ts.map +1 -0
  127. package/dist/middleware/trace.js +176 -0
  128. package/dist/middleware/trace.js.map +1 -0
  129. package/dist/primitives.d.ts +120 -1
  130. package/dist/primitives.d.ts.map +1 -1
  131. package/dist/primitives.js +398 -26
  132. package/dist/primitives.js.map +1 -1
  133. package/dist/retry.d.ts +368 -0
  134. package/dist/retry.d.ts.map +1 -0
  135. package/dist/retry.js +646 -0
  136. package/dist/retry.js.map +1 -0
  137. package/dist/schema.d.ts.map +1 -1
  138. package/dist/schema.js +2 -10
  139. package/dist/schema.js.map +1 -1
  140. package/dist/telemetry.d.ts +128 -0
  141. package/dist/telemetry.d.ts.map +1 -0
  142. package/dist/telemetry.js +285 -0
  143. package/dist/telemetry.js.map +1 -0
  144. package/dist/template.d.ts.map +1 -1
  145. package/dist/template.js +6 -1
  146. package/dist/template.js.map +1 -1
  147. package/dist/tool-orchestration.d.ts +453 -0
  148. package/dist/tool-orchestration.d.ts.map +1 -0
  149. package/dist/tool-orchestration.js +763 -0
  150. package/dist/tool-orchestration.js.map +1 -0
  151. package/dist/type-guards.d.ts +28 -0
  152. package/dist/type-guards.d.ts.map +1 -0
  153. package/dist/type-guards.js +29 -0
  154. package/dist/type-guards.js.map +1 -0
  155. package/dist/types.d.ts +135 -17
  156. package/dist/types.d.ts.map +1 -1
  157. package/dist/types.js +36 -1
  158. package/dist/types.js.map +1 -1
  159. package/dist/wrap-for-v3.d.ts +80 -0
  160. package/dist/wrap-for-v3.d.ts.map +1 -0
  161. package/dist/wrap-for-v3.js +89 -0
  162. package/dist/wrap-for-v3.js.map +1 -0
  163. package/examples/00-quickstart.ts +232 -0
  164. package/examples/01-rag-chatbot.ts +212 -0
  165. package/examples/02-multi-agent-research.ts +290 -0
  166. package/examples/03-email-classification.ts +379 -0
  167. package/examples/04-content-moderation.ts +400 -0
  168. package/examples/05-document-extraction.ts +455 -0
  169. package/examples/06-streaming-chat-nextjs.ts +437 -0
  170. package/examples/07-cloudflare-worker.ts +483 -0
  171. package/examples/08-batch-processing.ts +491 -0
  172. package/examples/09-budget-constrained.ts +527 -0
  173. package/examples/10-tool-orchestration.ts +565 -0
  174. package/examples/11-retry-resilience.ts +403 -0
  175. package/examples/12-caching-strategies.ts +422 -0
  176. package/examples/README.md +145 -0
  177. package/package.json +10 -6
  178. package/src/ai-promise.ts +528 -99
  179. package/src/ai-schemas.ts +122 -0
  180. package/src/ai.ts +69 -1153
  181. package/src/batch/anthropic.ts +96 -161
  182. package/src/batch/bedrock.ts +203 -454
  183. package/src/batch/cloudflare.ts +99 -282
  184. package/src/batch/google.ts +91 -297
  185. package/src/batch/index.ts +4 -1
  186. package/src/batch/memory.ts +15 -10
  187. package/src/batch/openai.ts +65 -193
  188. package/src/batch/provider.ts +336 -0
  189. package/src/batch-map.ts +29 -24
  190. package/src/batch-queue.ts +200 -11
  191. package/src/budget.ts +740 -0
  192. package/src/cache.ts +681 -0
  193. package/src/context.ts +122 -76
  194. package/src/digital-objects-registry.ts +750 -0
  195. package/src/errors.ts +37 -0
  196. package/src/eval/runner.ts +63 -38
  197. package/src/eval-log/in-memory.ts +90 -0
  198. package/src/eval-log/index.ts +46 -0
  199. package/src/eval-log/types.ts +110 -0
  200. package/src/function-registry.ts +671 -0
  201. package/src/generate.ts +33 -33
  202. package/src/index.ts +325 -49
  203. package/src/logger.ts +232 -0
  204. package/src/middleware/budget.ts +171 -0
  205. package/src/middleware/cache.ts +299 -0
  206. package/src/middleware/embed-cache.ts +195 -0
  207. package/src/middleware/index.ts +23 -0
  208. package/src/middleware/trace.ts +248 -0
  209. package/src/primitives.ts +589 -62
  210. package/src/retry.ts +902 -0
  211. package/src/schema.ts +8 -17
  212. package/src/telemetry.ts +403 -0
  213. package/src/template.ts +8 -4
  214. package/src/tool-orchestration.ts +1173 -0
  215. package/src/type-guards.ts +31 -0
  216. package/src/types.ts +164 -25
  217. package/src/wrap-for-v3.ts +105 -0
  218. package/test/ai-promise.test.ts +1080 -0
  219. package/test/ai-proxy.test.ts +1 -1
  220. package/test/backward-compat.test.ts +147 -0
  221. package/test/batch-autosubmit-errors.test.ts +610 -0
  222. package/test/batch-blog-posts.test.ts +87 -129
  223. package/test/budget-tracking.test.ts +800 -0
  224. package/test/cache.test.ts +712 -0
  225. package/test/context-isolation.test.ts +687 -0
  226. package/test/core-functions.test.ts +183 -579
  227. package/test/decide.test.ts +154 -322
  228. package/test/define.test.ts +211 -8
  229. package/test/digital-objects-registry.test.ts +760 -0
  230. package/test/embedding-cache-middleware.test.ts +140 -0
  231. package/test/evals/deterministic.eval.test.ts +376 -0
  232. package/test/generate-core.test.ts +140 -229
  233. package/test/implicit-batch.test.ts +22 -65
  234. package/test/json-parse-error-handling.test.ts +463 -0
  235. package/test/retry-policy-integration.test.ts +117 -0
  236. package/test/retry.test.ts +1016 -0
  237. package/test/schema.test.ts +55 -19
  238. package/test/streaming.test.ts +316 -0
  239. package/test/template.test.ts +1164 -0
  240. package/test/tool-orchestration.test.ts +1040 -0
  241. package/test/wrap-for-v3.test.ts +612 -0
  242. package/vitest.config.js +6 -0
  243. package/vitest.config.ts +20 -0
  244. package/dist/rpc/auth.d.ts +0 -69
  245. package/dist/rpc/auth.d.ts.map +0 -1
  246. package/dist/rpc/auth.js +0 -136
  247. package/dist/rpc/auth.js.map +0 -1
  248. package/dist/rpc/client.d.ts +0 -62
  249. package/dist/rpc/client.d.ts.map +0 -1
  250. package/dist/rpc/client.js +0 -103
  251. package/dist/rpc/client.js.map +0 -1
  252. package/dist/rpc/deferred.d.ts +0 -60
  253. package/dist/rpc/deferred.d.ts.map +0 -1
  254. package/dist/rpc/deferred.js +0 -96
  255. package/dist/rpc/deferred.js.map +0 -1
  256. package/dist/rpc/index.d.ts +0 -22
  257. package/dist/rpc/index.d.ts.map +0 -1
  258. package/dist/rpc/index.js +0 -38
  259. package/dist/rpc/index.js.map +0 -1
  260. package/dist/rpc/local.d.ts +0 -42
  261. package/dist/rpc/local.d.ts.map +0 -1
  262. package/dist/rpc/local.js +0 -50
  263. package/dist/rpc/local.js.map +0 -1
  264. package/dist/rpc/server.d.ts +0 -165
  265. package/dist/rpc/server.d.ts.map +0 -1
  266. package/dist/rpc/server.js +0 -405
  267. package/dist/rpc/server.js.map +0 -1
  268. package/dist/rpc/session.d.ts +0 -32
  269. package/dist/rpc/session.d.ts.map +0 -1
  270. package/dist/rpc/session.js +0 -43
  271. package/dist/rpc/session.js.map +0 -1
  272. package/dist/rpc/transport.d.ts +0 -306
  273. package/dist/rpc/transport.d.ts.map +0 -1
  274. package/dist/rpc/transport.js +0 -731
  275. package/dist/rpc/transport.js.map +0 -1
  276. package/src/batch/anthropic.js +0 -256
  277. package/src/batch/bedrock.js +0 -584
  278. package/src/batch/cloudflare.js +0 -287
  279. package/src/batch/google.js +0 -359
  280. package/src/batch/index.js +0 -30
  281. package/src/batch/memory.js +0 -187
  282. package/src/batch/openai.js +0 -402
  283. package/src/eval/index.js +0 -7
  284. package/src/eval/models.js +0 -119
  285. package/src/eval/runner.js +0 -147
  286. package/test/schema.test.js +0 -96
@@ -0,0 +1,453 @@
1
+ /**
2
+ * Agentic Tool Orchestration
3
+ *
4
+ * Provides multi-turn model→tools→model loop orchestration for complex AI workflows.
5
+ *
6
+ * Key components:
7
+ * - AgenticLoop: Orchestrates multi-turn conversations with tool execution
8
+ * - ToolRouter: Routes tool calls to registered handlers
9
+ * - ToolValidator: Validates tool arguments before execution
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ import { z, type ZodTypeAny } from 'zod';
14
+ /**
15
+ * A tool that can be executed by the agentic loop
16
+ */
17
+ export interface Tool<TParams extends ZodTypeAny = ZodTypeAny, TResult = unknown> {
18
+ /** Unique name for the tool */
19
+ name: string;
20
+ /** Human-readable description */
21
+ description: string;
22
+ /** Zod schema for parameters */
23
+ parameters: TParams;
24
+ /** Execute the tool with validated parameters */
25
+ execute: (params: z.infer<TParams>) => Promise<TResult>;
26
+ }
27
+ /**
28
+ * A tool call from the model
29
+ */
30
+ export interface ToolCall {
31
+ /** Name of the tool to call */
32
+ name: string;
33
+ /** Arguments for the tool */
34
+ arguments: Record<string, unknown>;
35
+ /** Optional ID for tracking */
36
+ id?: string;
37
+ }
38
+ /**
39
+ * Result of a tool execution
40
+ */
41
+ export interface ToolResult<T = unknown> {
42
+ /** Whether execution succeeded */
43
+ success: boolean;
44
+ /** The result value if successful */
45
+ result?: T;
46
+ /** Error message if failed */
47
+ error?: string;
48
+ /** The original tool call */
49
+ toolCall?: ToolCall;
50
+ /** Number of retries attempted */
51
+ retryCount?: number;
52
+ }
53
+ /**
54
+ * Formatted tool result for model consumption
55
+ */
56
+ export interface FormattedToolResult {
57
+ /** Role is always 'tool' */
58
+ role: 'tool';
59
+ /** String content of the result */
60
+ content: string;
61
+ /** Tool call ID for correlation */
62
+ tool_call_id?: string;
63
+ /** Whether this is an error result */
64
+ isError?: boolean;
65
+ }
66
+ /**
67
+ * Validation result for tool arguments
68
+ */
69
+ export interface ValidationResult {
70
+ /** Whether validation passed */
71
+ valid: boolean;
72
+ /** Validation errors if any */
73
+ errors?: string[];
74
+ /** Validated and parsed arguments */
75
+ parsedArgs?: unknown;
76
+ }
77
+ /**
78
+ * Model response from a generation
79
+ */
80
+ export interface ModelResponse {
81
+ /** Generated text (if no tool calls) */
82
+ text?: string;
83
+ /** Tool calls requested by the model */
84
+ toolCalls?: ToolCall[];
85
+ /** Why generation stopped */
86
+ finishReason: 'stop' | 'tool_call' | 'length' | 'content_filter' | 'error';
87
+ /** Token usage */
88
+ usage?: {
89
+ promptTokens: number;
90
+ completionTokens: number;
91
+ totalTokens: number;
92
+ };
93
+ }
94
+ /**
95
+ * Message in the conversation
96
+ */
97
+ export interface Message {
98
+ role: 'user' | 'assistant' | 'system' | 'tool';
99
+ content: string;
100
+ tool_calls?: ToolCall[];
101
+ tool_call_id?: string;
102
+ isError?: boolean;
103
+ }
104
+ /**
105
+ * Step information for callbacks
106
+ */
107
+ export interface StepInfo {
108
+ /** Step number (1-indexed) */
109
+ stepNumber: number;
110
+ /** Tool calls in this step */
111
+ toolCalls: Array<ToolCall & {
112
+ result?: unknown;
113
+ error?: string;
114
+ }>;
115
+ /** Model response */
116
+ response: ModelResponse;
117
+ /** Current messages */
118
+ messages: Message[];
119
+ }
120
+ /**
121
+ * Options for creating an AgenticLoop
122
+ */
123
+ export interface LoopOptions {
124
+ /** Available tools */
125
+ tools: Tool[];
126
+ /** Maximum number of steps before stopping */
127
+ maxSteps: number;
128
+ /** Whether to throw error when maxSteps is exceeded */
129
+ strictMaxSteps?: boolean;
130
+ /** Whether to execute tool calls in parallel */
131
+ parallelExecution?: boolean;
132
+ /** Maximum concurrent tool calls when parallel execution is enabled */
133
+ maxParallelCalls?: number;
134
+ /** Whether to retry failed tool calls */
135
+ retryFailedTools?: boolean;
136
+ /** Maximum retries per tool call */
137
+ maxToolRetries?: number;
138
+ /** Whether to continue when a tool fails */
139
+ continueOnError?: boolean;
140
+ /** Timeout for individual tool execution (ms) */
141
+ toolTimeout?: number;
142
+ /** Track token usage across steps */
143
+ trackUsage?: boolean;
144
+ /** Callback for each step */
145
+ onStep?: (step: StepInfo) => void;
146
+ }
147
+ /**
148
+ * Model generation options passed to the model
149
+ */
150
+ export interface ModelGenerationOptions {
151
+ /** Messages for the conversation */
152
+ messages: Message[];
153
+ /** Tools available for use */
154
+ tools: Record<string, {
155
+ description: string;
156
+ parameters: unknown;
157
+ execute: (args: unknown) => Promise<unknown>;
158
+ }>;
159
+ }
160
+ /**
161
+ * Options for running the loop
162
+ */
163
+ export interface RunOptions {
164
+ /** Model to use for generation */
165
+ model: {
166
+ generate: (options: ModelGenerationOptions) => Promise<ModelResponse>;
167
+ };
168
+ /** Initial prompt */
169
+ prompt: string;
170
+ /** System message */
171
+ system?: string;
172
+ /** Abort signal */
173
+ abortSignal?: AbortSignal;
174
+ }
175
+ /**
176
+ * Extended tool call result with metadata
177
+ */
178
+ export interface ToolCallResult {
179
+ /** Tool name */
180
+ name: string;
181
+ /** Arguments passed */
182
+ arguments: Record<string, unknown>;
183
+ /** Result if successful */
184
+ result?: unknown;
185
+ /** Error if failed */
186
+ error?: string;
187
+ /** Number of retries */
188
+ retryCount?: number;
189
+ }
190
+ /**
191
+ * Tool result for SDK compatibility
192
+ */
193
+ export interface SDKToolResult {
194
+ /** Tool name */
195
+ toolName: string;
196
+ /** Tool call ID */
197
+ toolCallId?: string;
198
+ /** Result value */
199
+ result: unknown;
200
+ }
201
+ /**
202
+ * Result of running the agentic loop
203
+ */
204
+ export interface LoopResult {
205
+ /** Final text output */
206
+ text: string;
207
+ /** Number of steps executed */
208
+ steps: number;
209
+ /** All tool calls made */
210
+ toolCalls: ToolCallResult[];
211
+ /** Tool results in SDK format */
212
+ toolResults: SDKToolResult[];
213
+ /** Why the loop stopped */
214
+ stopReason: 'stop' | 'max_steps' | 'error' | 'aborted';
215
+ /** Token usage if tracked */
216
+ usage?: {
217
+ promptTokens: number;
218
+ completionTokens: number;
219
+ totalTokens: number;
220
+ };
221
+ /** Conversation messages */
222
+ messages: Message[];
223
+ }
224
+ /**
225
+ * Validates tool arguments before execution
226
+ */
227
+ export declare class ToolValidator {
228
+ private tools;
229
+ /**
230
+ * Register a tool for validation
231
+ */
232
+ register(tool: Tool): void;
233
+ /**
234
+ * Validate arguments for a tool
235
+ */
236
+ validate(toolName: string, args: unknown): ValidationResult;
237
+ /**
238
+ * Validate multiple tool calls at once
239
+ */
240
+ validateAll(calls: ToolCall[]): ValidationResult[];
241
+ }
242
+ /**
243
+ * Routes tool calls to registered handlers
244
+ *
245
+ * @deprecated Phase C Week 2 — `ToolRouter` has zero production callers in
246
+ * primitives.org.ai (audited 2026-05-06; see `bd show aip-ibid`). Only the
247
+ * `ai-primitives` umbrella re-export tests reference it. AI SDK 6's native
248
+ * tool-routing under `generateText({ tools })` and `Agent` / `ToolLoopAgent`
249
+ * cover the same surface. Will be removed in the Phase C semver bump
250
+ * alongside `AgenticLoop` and `createAgenticLoop`.
251
+ */
252
+ export declare class ToolRouter {
253
+ private tools;
254
+ private validator;
255
+ /**
256
+ * Register a tool
257
+ */
258
+ register(tool: Tool): void;
259
+ /**
260
+ * Route a single tool call
261
+ */
262
+ route(call: ToolCall): Promise<ToolResult>;
263
+ /**
264
+ * Route multiple tool calls sequentially
265
+ */
266
+ routeAll(calls: ToolCall[]): Promise<ToolResult[]>;
267
+ /**
268
+ * Route multiple tool calls in parallel
269
+ */
270
+ routeAllParallel(calls: ToolCall[]): Promise<ToolResult[]>;
271
+ /**
272
+ * Format a tool result for model consumption
273
+ */
274
+ formatResult(result: ToolResult): FormattedToolResult;
275
+ }
276
+ /**
277
+ * Orchestrates multi-turn model→tools→model loops
278
+ *
279
+ * @deprecated Phase C Week 2 — `AgenticLoop` has zero production callers in
280
+ * primitives.org.ai (audited 2026-05-06; see `bd show aip-ibid`). Only the
281
+ * `ai-primitives` umbrella re-export tests reference it. The production
282
+ * cascade walker (`services-as-software/v3/invoke/cascade-walker.ts:178`)
283
+ * already uses AI SDK 6's `generateText({ tools, maxSteps: 10 })` directly
284
+ * for agentic steps — no consumer code paths through this class. AI SDK 6's
285
+ * `Agent` / `ToolLoopAgent` (`stopWhen: stepCountIs(N)`) are the going-
286
+ * forward primitives. Will be removed in the Phase C semver bump.
287
+ */
288
+ export declare class AgenticLoop {
289
+ private options;
290
+ private router;
291
+ private validator;
292
+ constructor(options: LoopOptions);
293
+ /**
294
+ * Get tools in AI SDK format
295
+ */
296
+ getToolsForSDK(): Record<string, {
297
+ description: string;
298
+ parameters: unknown;
299
+ execute: (args: unknown) => Promise<unknown>;
300
+ }>;
301
+ /**
302
+ * Execute a tool call with timeout and retry support
303
+ */
304
+ private executeToolCall;
305
+ /**
306
+ * Execute multiple tool calls
307
+ */
308
+ private executeToolCalls;
309
+ /**
310
+ * Build messages for the next model call
311
+ */
312
+ private buildMessages;
313
+ /**
314
+ * Run the agentic loop
315
+ */
316
+ run(runOptions: RunOptions): Promise<LoopResult>;
317
+ /**
318
+ * Run the agentic loop with streaming support
319
+ *
320
+ * Returns an async generator that yields step events as they occur.
321
+ */
322
+ stream(runOptions: RunOptions): AsyncGenerator<LoopStreamEvent, LoopResult>;
323
+ }
324
+ /**
325
+ * Events emitted during streaming loop execution
326
+ */
327
+ export type LoopStreamEvent = {
328
+ type: 'start';
329
+ prompt: string;
330
+ timestamp: number;
331
+ } | {
332
+ type: 'step_start';
333
+ stepNumber: number;
334
+ timestamp: number;
335
+ } | {
336
+ type: 'step_end';
337
+ stepNumber: number;
338
+ hasToolCalls: boolean;
339
+ timestamp: number;
340
+ } | {
341
+ type: 'text';
342
+ text: string;
343
+ stepNumber: number;
344
+ timestamp: number;
345
+ } | {
346
+ type: 'tool_calls';
347
+ toolCalls: ToolCall[];
348
+ stepNumber: number;
349
+ timestamp: number;
350
+ } | {
351
+ type: 'tool_result';
352
+ toolName: string;
353
+ result?: unknown;
354
+ error?: string;
355
+ stepNumber: number;
356
+ timestamp: number;
357
+ } | {
358
+ type: 'max_steps';
359
+ steps: number;
360
+ timestamp: number;
361
+ } | {
362
+ type: 'aborted';
363
+ steps: number;
364
+ timestamp: number;
365
+ } | {
366
+ type: 'error';
367
+ error: string;
368
+ timestamp: number;
369
+ } | {
370
+ type: 'end';
371
+ steps: number;
372
+ stopReason: LoopResult['stopReason'];
373
+ timestamp: number;
374
+ };
375
+ /**
376
+ * Create a tool from a simple function
377
+ */
378
+ export declare function createTool<TParams extends z.ZodRawShape, TResult>(config: {
379
+ name: string;
380
+ description: string;
381
+ parameters: TParams;
382
+ execute: (params: z.infer<z.ZodObject<TParams>>) => Promise<TResult>;
383
+ }): Tool<z.ZodObject<TParams>, TResult>;
384
+ /**
385
+ * Compose multiple tools into a single toolset
386
+ */
387
+ export declare function createToolset(...tools: Tool[]): Tool[];
388
+ /**
389
+ * Create a tool that wraps another tool with middleware
390
+ */
391
+ export declare function wrapTool<T extends Tool>(tool: T, middleware: {
392
+ before?: (params: unknown) => Promise<unknown> | unknown;
393
+ after?: (result: unknown) => Promise<unknown> | unknown;
394
+ onError?: (error: Error) => Promise<unknown> | unknown;
395
+ }): Tool;
396
+ /**
397
+ * Options for cachedTool
398
+ */
399
+ export interface CachedToolOptions {
400
+ /** Time-to-live in milliseconds (default: 60000) */
401
+ ttl?: number;
402
+ /** Function to generate cache key from params (default: JSON.stringify) */
403
+ keyFn?: (params: unknown) => string;
404
+ /** Interval in ms for automatic cleanup of expired entries (default: 0 = disabled) */
405
+ cleanupIntervalMs?: number;
406
+ /** Maximum cache size before LRU eviction kicks in (default: 0 = unlimited) */
407
+ maxSize?: number;
408
+ }
409
+ /**
410
+ * Extended tool interface with cache management methods
411
+ */
412
+ export interface CachedTool extends Tool {
413
+ /** Get the current number of entries in the cache */
414
+ cacheSize(): number;
415
+ /** Clear all cache entries */
416
+ clearCache(): void;
417
+ /** Stop cleanup timer and clear cache */
418
+ destroy(): void;
419
+ }
420
+ /**
421
+ * Create a tool with caching support
422
+ *
423
+ * Features:
424
+ * - TTL-based expiration
425
+ * - Optional periodic cleanup of expired entries (prevents memory leaks)
426
+ * - Optional max size with LRU eviction
427
+ * - Manual cache control (clear, destroy)
428
+ */
429
+ export declare function cachedTool<T extends Tool>(tool: T, options?: CachedToolOptions): CachedTool;
430
+ /**
431
+ * Create a tool with rate limiting
432
+ */
433
+ export declare function rateLimitedTool<T extends Tool>(tool: T, options: {
434
+ maxCalls: number;
435
+ windowMs: number;
436
+ }): Tool;
437
+ /**
438
+ * Create a tool that times out after a specified duration
439
+ */
440
+ export declare function timeoutTool<T extends Tool>(tool: T, timeoutMs: number): Tool;
441
+ /**
442
+ * Create an agentic loop with sensible defaults
443
+ *
444
+ * @deprecated Phase C Week 2 — `createAgenticLoop` has zero production
445
+ * callers in primitives.org.ai (only `ai-primitives` umbrella re-export
446
+ * tests). Use AI SDK 6's `Agent` / `ToolLoopAgent` with
447
+ * `stopWhen: stepCountIs(N)` instead. Will be removed alongside
448
+ * `AgenticLoop` in the Phase C semver bump. See `bd show aip-ibid`.
449
+ */
450
+ export declare function createAgenticLoop(options: Partial<LoopOptions> & {
451
+ tools: Tool[];
452
+ }): AgenticLoop;
453
+ //# sourceMappingURL=tool-orchestration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-orchestration.d.ts","sourceRoot":"","sources":["../src/tool-orchestration.ts"],"names":[],"mappings":"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"}