@rudderjs/ai 1.4.0 → 1.6.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.
- package/README.md +484 -7
- package/boost/guidelines.md +62 -2
- package/boost/skills/ai-tools/SKILL.md +14 -5
- package/dist/agent.d.ts +66 -15
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +529 -58
- package/dist/agent.js.map +1 -1
- package/dist/budget/pricing.d.ts +124 -0
- package/dist/budget/pricing.d.ts.map +1 -0
- package/dist/budget/pricing.js +175 -0
- package/dist/budget/pricing.js.map +1 -0
- package/dist/budget/storage.d.ts +104 -0
- package/dist/budget/storage.d.ts.map +1 -0
- package/dist/budget/storage.js +0 -0
- package/dist/budget/storage.js.map +1 -0
- package/dist/budget/with-budget.d.ts +119 -0
- package/dist/budget/with-budget.d.ts.map +1 -0
- package/dist/budget/with-budget.js +175 -0
- package/dist/budget/with-budget.js.map +1 -0
- package/dist/budget-orm/index.d.ts +96 -0
- package/dist/budget-orm/index.d.ts.map +1 -0
- package/dist/budget-orm/index.js +177 -0
- package/dist/budget-orm/index.js.map +1 -0
- package/dist/commands/ai-eval.d.ts +93 -0
- package/dist/commands/ai-eval.d.ts.map +1 -0
- package/dist/commands/ai-eval.js +378 -0
- package/dist/commands/ai-eval.js.map +1 -0
- package/dist/computer-use/actions.d.ts +214 -0
- package/dist/computer-use/actions.d.ts.map +1 -0
- package/dist/computer-use/actions.js +48 -0
- package/dist/computer-use/actions.js.map +1 -0
- package/dist/computer-use/errors.d.ts +57 -0
- package/dist/computer-use/errors.d.ts.map +1 -0
- package/dist/computer-use/errors.js +76 -0
- package/dist/computer-use/errors.js.map +1 -0
- package/dist/computer-use/index.d.ts +53 -0
- package/dist/computer-use/index.d.ts.map +1 -0
- package/dist/computer-use/index.js +51 -0
- package/dist/computer-use/index.js.map +1 -0
- package/dist/computer-use/playwright.d.ts +76 -0
- package/dist/computer-use/playwright.d.ts.map +1 -0
- package/dist/computer-use/playwright.js +270 -0
- package/dist/computer-use/playwright.js.map +1 -0
- package/dist/computer-use/tool.d.ts +154 -0
- package/dist/computer-use/tool.d.ts.map +1 -0
- package/dist/computer-use/tool.js +210 -0
- package/dist/computer-use/tool.js.map +1 -0
- package/dist/eval/fixtures.d.ts +65 -0
- package/dist/eval/fixtures.d.ts.map +1 -0
- package/dist/eval/fixtures.js +110 -0
- package/dist/eval/fixtures.js.map +1 -0
- package/dist/eval/html-reporter.d.ts +25 -0
- package/dist/eval/html-reporter.d.ts.map +1 -0
- package/dist/eval/html-reporter.js +209 -0
- package/dist/eval/html-reporter.js.map +1 -0
- package/dist/eval/index.d.ts +271 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +510 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/json-reporter.d.ts +43 -0
- package/dist/eval/json-reporter.d.ts.map +1 -0
- package/dist/eval/json-reporter.js +40 -0
- package/dist/eval/json-reporter.js.map +1 -0
- package/dist/fake.d.ts +36 -1
- package/dist/fake.d.ts.map +1 -1
- package/dist/fake.js +49 -2
- package/dist/fake.js.map +1 -1
- package/dist/file-search.d.ts +168 -0
- package/dist/file-search.d.ts.map +1 -0
- package/dist/file-search.js +158 -0
- package/dist/file-search.js.map +1 -0
- package/dist/handoff.d.ts +95 -0
- package/dist/handoff.d.ts.map +1 -0
- package/dist/handoff.js +78 -0
- package/dist/handoff.js.map +1 -0
- package/dist/index.d.ts +29 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp/client-tools.d.ts +39 -0
- package/dist/mcp/client-tools.d.ts.map +1 -0
- package/dist/mcp/client-tools.js +147 -0
- package/dist/mcp/client-tools.js.map +1 -0
- package/dist/mcp/index.d.ts +16 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +15 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server-from-agent.d.ts +24 -0
- package/dist/mcp/server-from-agent.d.ts.map +1 -0
- package/dist/mcp/server-from-agent.js +113 -0
- package/dist/mcp/server-from-agent.js.map +1 -0
- package/dist/mcp/types.d.ts +64 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +6 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/memory-embedding/index.d.ts +121 -0
- package/dist/memory-embedding/index.d.ts.map +1 -0
- package/dist/memory-embedding/index.js +229 -0
- package/dist/memory-embedding/index.js.map +1 -0
- package/dist/memory-extract.d.ts +60 -0
- package/dist/memory-extract.d.ts.map +1 -0
- package/dist/memory-extract.js +163 -0
- package/dist/memory-extract.js.map +1 -0
- package/dist/memory-inject.d.ts +39 -0
- package/dist/memory-inject.d.ts.map +1 -0
- package/dist/memory-inject.js +135 -0
- package/dist/memory-inject.js.map +1 -0
- package/dist/memory-orm/index.d.ts +118 -0
- package/dist/memory-orm/index.d.ts.map +1 -0
- package/dist/memory-orm/index.js +187 -0
- package/dist/memory-orm/index.js.map +1 -0
- package/dist/memory.d.ts +55 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +132 -0
- package/dist/memory.js.map +1 -0
- package/dist/observers.d.ts +22 -0
- package/dist/observers.d.ts.map +1 -1
- package/dist/observers.js.map +1 -1
- package/dist/provider-tools.d.ts +15 -1
- package/dist/provider-tools.d.ts.map +1 -1
- package/dist/provider-tools.js +21 -1
- package/dist/provider-tools.js.map +1 -1
- package/dist/providers/anthropic.d.ts +9 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +66 -11
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/bedrock.d.ts +60 -0
- package/dist/providers/bedrock.d.ts.map +1 -0
- package/dist/providers/bedrock.js +167 -0
- package/dist/providers/bedrock.js.map +1 -0
- package/dist/providers/elevenlabs.d.ts +98 -0
- package/dist/providers/elevenlabs.d.ts.map +1 -0
- package/dist/providers/elevenlabs.js +229 -0
- package/dist/providers/elevenlabs.js.map +1 -0
- package/dist/providers/google.d.ts +83 -1
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js +491 -8
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/openai.d.ts +8 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +215 -5
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter.d.ts +43 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +21 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/voyage.d.ts +91 -0
- package/dist/providers/voyage.d.ts.map +1 -0
- package/dist/providers/voyage.js +166 -0
- package/dist/providers/voyage.js.map +1 -0
- package/dist/queue-job.d.ts +69 -4
- package/dist/queue-job.d.ts.map +1 -1
- package/dist/queue-job.js +114 -11
- package/dist/queue-job.js.map +1 -1
- package/dist/registry.d.ts +3 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +10 -0
- package/dist/registry.js.map +1 -1
- package/dist/server/provider.d.ts.map +1 -1
- package/dist/server/provider.js +38 -1
- package/dist/server/provider.js.map +1 -1
- package/dist/similarity-search.d.ts +163 -0
- package/dist/similarity-search.d.ts.map +1 -0
- package/dist/similarity-search.js +147 -0
- package/dist/similarity-search.js.map +1 -0
- package/dist/sub-agent-run-store.d.ts +40 -3
- package/dist/sub-agent-run-store.d.ts.map +1 -1
- package/dist/sub-agent-run-store.js.map +1 -1
- package/dist/tool.d.ts +59 -0
- package/dist/tool.d.ts.map +1 -1
- package/dist/tool.js +45 -4
- package/dist/tool.js.map +1 -1
- package/dist/types.d.ts +285 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vector-stores/index.d.ts +96 -0
- package/dist/vector-stores/index.d.ts.map +1 -0
- package/dist/vector-stores/index.js +153 -0
- package/dist/vector-stores/index.js.map +1 -0
- package/package.json +43 -4
|
@@ -181,28 +181,37 @@ const secretTool = toolDefinition({
|
|
|
181
181
|
})
|
|
182
182
|
```
|
|
183
183
|
|
|
184
|
-
### 9. Pause
|
|
184
|
+
### 9. Pause the parent loop from inside a server tool
|
|
185
185
|
|
|
186
186
|
```ts
|
|
187
|
-
import { pauseForClientTools } from '@rudderjs/ai'
|
|
187
|
+
import { pauseForClientTools, pauseForApproval } from '@rudderjs/ai'
|
|
188
188
|
|
|
189
189
|
const runSubAgentTool = toolDefinition({
|
|
190
190
|
name: 'run_sub_agent',
|
|
191
|
-
description: 'Run a sub-agent that may need browser tools',
|
|
191
|
+
description: 'Run a sub-agent that may need browser tools or approval',
|
|
192
192
|
inputSchema: z.object({ task: z.string() }),
|
|
193
193
|
}).server(async function* ({ task }, ctx) {
|
|
194
194
|
const subResponse = await runSubAgent(task)
|
|
195
195
|
|
|
196
196
|
if (subResponse.pendingClientToolCalls?.length) {
|
|
197
|
-
//
|
|
197
|
+
// Client-tool pause -- surface inner client tool calls to the browser
|
|
198
198
|
yield pauseForClientTools(subResponse.pendingClientToolCalls, subResponse.resumeId)
|
|
199
199
|
return undefined as never // unreachable after pause
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
+
if (subResponse.pendingApprovalToolCall) {
|
|
203
|
+
// Approval pause -- surface the gated tool call for the user to approve/reject
|
|
204
|
+
const { toolCall, isClientTool } = subResponse.pendingApprovalToolCall
|
|
205
|
+
yield pauseForApproval(toolCall, isClientTool, subResponse.resumeId)
|
|
206
|
+
return undefined as never
|
|
207
|
+
}
|
|
208
|
+
|
|
202
209
|
return subResponse.text
|
|
203
210
|
})
|
|
204
211
|
```
|
|
205
212
|
|
|
213
|
+
`Agent.asTool({ suspendable })` does this automatically — yield manually only for hand-rolled sub-agent runners or non-agent tools that need a browser/approval round-trip.
|
|
214
|
+
|
|
206
215
|
### 10. Using tools with an agent
|
|
207
216
|
|
|
208
217
|
```ts
|
|
@@ -238,7 +247,7 @@ Tools are typically defined in `app/Tools/` or co-located with the agent that us
|
|
|
238
247
|
- **Zod schemas required**: Tool input schemas must be Zod objects. They are converted to JSON Schema for each provider automatically.
|
|
239
248
|
- **Generator vs async function**: Use `async function*` only when you need streaming progress yields. For simple tools, use a regular `async` function.
|
|
240
249
|
- **modelOutput is optional**: Only use `.modelOutput()` when the tool returns large structured data that would waste model context. The default behavior is `JSON.stringify` of the result.
|
|
241
|
-
- **Approval flow is two-step**: When a tool needs approval, the loop stops. You must resume with `approvedToolCallIds` or `rejectedToolCallIds` in the next `prompt()` call's options.
|
|
250
|
+
- **Approval flow is two-step**: When a tool needs approval, the loop stops. You must resume with `approvedToolCallIds` or `rejectedToolCallIds` in the next `prompt()` call's options. For approval-gated tools inside a sub-agent wrapped via `asTool({ suspendable })`, resume goes through `Agent.resumeAsTool(subRunId, [], { runStore, agent, approvedToolCallIds })` — the snapshot's `pauseKind: 'approval'` discriminator routes the resume contract.
|
|
242
251
|
- **Client tool placeholder mode**: By default, client tools without `execute` get a placeholder result and the loop continues. Pass `toolCallStreamingMode: 'stop-on-client-tool'` to pause instead.
|
|
243
252
|
- **exactOptionalPropertyTypes**: If your tsconfig has this enabled, do not pass `undefined` for optional tool parameters -- omit the key entirely.
|
|
244
253
|
- **Tool name conventions**: Use `snake_case` for tool names (e.g. `get_weather`, `search_documents`). This matches what AI models expect.
|
package/dist/agent.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import type { ServerToolBuilder } from './tool.js';
|
|
3
3
|
import { QueuedPromptBuilder } from './queue-job.js';
|
|
4
|
-
import type { SubAgentRunStore } from './sub-agent-run-store.js';
|
|
5
|
-
import type { AgentPromptOptions, AiMessage, AiMiddleware, AgentResponse, AgentStep, AgentStreamResponse, AnyTool, CacheableConfig, ConversationalSpec, ConversationStore, SubAgentUpdate, HasMiddleware, HasTools, PrepareStepResult, StopCondition, StreamChunk } from './types.js';
|
|
4
|
+
import type { SubAgentPauseKind, SubAgentRunStore } from './sub-agent-run-store.js';
|
|
5
|
+
import type { AgentPromptOptions, AiMessage, AiMiddleware, AgentResponse, AgentStep, AgentStreamResponse, AnyTool, CacheableConfig, ConversationalSpec, ConversationStore, SubAgentUpdate, HasMiddleware, HasTools, PrepareStepResult, RemembersSpec, StopCondition, StreamChunk, ToolCall, UserMemory } from './types.js';
|
|
6
6
|
/** Stop after N steps */
|
|
7
7
|
export declare function stepCountIs(n: number): StopCondition;
|
|
8
8
|
/** Stop when a specific tool is called in the latest step */
|
|
@@ -80,6 +80,31 @@ export declare abstract class Agent {
|
|
|
80
80
|
* from an async DI binding.
|
|
81
81
|
*/
|
|
82
82
|
conversational(): false | ConversationalSpec | Promise<false | ConversationalSpec>;
|
|
83
|
+
/**
|
|
84
|
+
* Opt this agent class into per-user memory beyond conversation history
|
|
85
|
+
* (#A4). Returns a {@link RemembersSpec} naming the user whose memory
|
|
86
|
+
* the agent reads/writes, and how injection / extraction should behave.
|
|
87
|
+
* Returning `false` (the default) leaves the agent memory-stateless.
|
|
88
|
+
*
|
|
89
|
+
* Phase 1 wires the declaration + the per-call precedence chain so
|
|
90
|
+
* apps and downstream phases (auto-inject middleware in Phase 2,
|
|
91
|
+
* auto-extract middleware in Phase 3) can read a consistent spec.
|
|
92
|
+
* Calling this method directly today produces no runtime behavior
|
|
93
|
+
* unless application code reads it via `resolveRemembersSpec()`.
|
|
94
|
+
*
|
|
95
|
+
* **Precedence (high → low):**
|
|
96
|
+
* 1. Per-call `prompt(input, { memory: false | {...} })`
|
|
97
|
+
* 2. This method's return value
|
|
98
|
+
*
|
|
99
|
+
* Async returns are supported — useful when the user identity is fetched
|
|
100
|
+
* from an async DI binding.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* class SupportAgent extends Agent {
|
|
104
|
+
* remembers() { return { user: ctx.user.id, inject: 'auto', tags: ['support'] } }
|
|
105
|
+
* }
|
|
106
|
+
*/
|
|
107
|
+
remembers(): false | RemembersSpec | Promise<false | RemembersSpec>;
|
|
83
108
|
/**
|
|
84
109
|
* Default for `AgentPromptOptions.parallelTools`. When `true` (default),
|
|
85
110
|
* multiple tool calls within a single step run their `execute()` functions
|
|
@@ -144,23 +169,35 @@ export declare abstract class Agent {
|
|
|
144
169
|
prompt: string;
|
|
145
170
|
}, AgentResponse>;
|
|
146
171
|
/**
|
|
147
|
-
* Resume a sub-agent run that previously paused with
|
|
148
|
-
* `pauseForClientTools` (
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
172
|
+
* Resume a sub-agent run that previously paused with either
|
|
173
|
+
* `pauseForClientTools` (client-tool pause) or `pauseForApproval`
|
|
174
|
+
* (approval pause), typically from {@link Agent.asTool} with
|
|
175
|
+
* `suspendable: { runStore }` set. The snapshot's `pauseKind`
|
|
176
|
+
* (default `'client_tool'`) selects the resume contract:
|
|
177
|
+
*
|
|
178
|
+
* - **`client_tool`** — `clientToolResults` must carry one entry per
|
|
179
|
+
* id in the snapshot's `pendingToolCallIds`. Results are appended
|
|
180
|
+
* to the inner-agent message history and the loop re-runs.
|
|
181
|
+
* - **`approval`** — `approvedToolCallIds` and/or
|
|
182
|
+
* `rejectedToolCallIds` must reference the single pending id.
|
|
183
|
+
* `clientToolResults` must be empty; the loop re-runs with the
|
|
184
|
+
* approval decision injected via `AgentPromptOptions`.
|
|
152
185
|
*
|
|
153
|
-
* Returns either a `'completed'` result (the inner agent finished)
|
|
186
|
+
* Returns either a `'completed'` result (the inner agent finished),
|
|
154
187
|
* a `'paused'` continuation pointing at a fresh `subRunId` for the
|
|
155
|
-
* next round-trip
|
|
188
|
+
* next round-trip, or stays `'paused'` if the inner loop hits another
|
|
189
|
+
* gate. The resume can pause on a different kind than it started on
|
|
190
|
+
* (e.g. an approval pause that, once approved, hits a client-tool
|
|
191
|
+
* pause on the next step).
|
|
156
192
|
*
|
|
157
|
-
* @example
|
|
193
|
+
* @example Client-tool resume
|
|
158
194
|
* const r = await Agent.resumeAsTool(subRunId, browserResults, { runStore, agent: subAgent })
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
195
|
+
*
|
|
196
|
+
* @example Approval resume
|
|
197
|
+
* const r = await Agent.resumeAsTool(subRunId, [], {
|
|
198
|
+
* runStore, agent: subAgent,
|
|
199
|
+
* approvedToolCallIds: ['inner-call-id'],
|
|
200
|
+
* })
|
|
164
201
|
*/
|
|
165
202
|
static resumeAsTool(subRunId: string, clientToolResults: ReadonlyArray<{
|
|
166
203
|
toolCallId: string;
|
|
@@ -168,13 +205,18 @@ export declare abstract class Agent {
|
|
|
168
205
|
}>, options: {
|
|
169
206
|
runStore: SubAgentRunStore;
|
|
170
207
|
agent: Agent;
|
|
208
|
+
approvedToolCallIds?: string[];
|
|
209
|
+
rejectedToolCallIds?: string[];
|
|
171
210
|
}): Promise<{
|
|
172
211
|
kind: 'completed';
|
|
173
212
|
response: AgentResponse;
|
|
174
213
|
} | {
|
|
175
214
|
kind: 'paused';
|
|
176
215
|
subRunId: string;
|
|
216
|
+
pauseKind: SubAgentPauseKind;
|
|
177
217
|
pendingToolCallIds: string[];
|
|
218
|
+
toolCall?: ToolCall;
|
|
219
|
+
isClientTool?: boolean;
|
|
178
220
|
}>;
|
|
179
221
|
}
|
|
180
222
|
type ChunkProjector = (chunk: StreamChunk) => SubAgentUpdate | null;
|
|
@@ -224,6 +266,15 @@ export declare function agent(instructionsOrOptions: string | {
|
|
|
224
266
|
}): Agent & HasTools & HasMiddleware;
|
|
225
267
|
/** Set the global conversation store (called by service provider or manually) */
|
|
226
268
|
export declare function setConversationStore(store: ConversationStore): void;
|
|
269
|
+
/**
|
|
270
|
+
* Set the global {@link UserMemory} (called by `AiProvider` from
|
|
271
|
+
* `AiConfig.memory`, or manually for tests / standalone setups).
|
|
272
|
+
* Phase 2/3 middleware reads it via `resolveUserMemory()` —
|
|
273
|
+
* imported by the persistence layer the same way
|
|
274
|
+
* `resolveConversationStore` is wired today.
|
|
275
|
+
*/
|
|
276
|
+
export declare function setUserMemory(memory: UserMemory): void;
|
|
277
|
+
export declare function resolveUserMemory(): UserMemory | undefined;
|
|
227
278
|
/**
|
|
228
279
|
* Structured error returned to the model when a tool call's arguments fail
|
|
229
280
|
* the tool's `inputSchema`. Surfaced both as the `result` on `AgentStep`
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|