@rudderjs/ai 1.17.2 → 1.18.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 +19 -1274
- package/dist/budget-orm/index.d.ts +1 -95
- package/dist/budget-orm/index.d.ts.map +1 -1
- package/dist/budget-orm/index.js +4 -176
- package/dist/budget-orm/index.js.map +1 -1
- package/dist/chat-mentions.d.ts +1 -58
- package/dist/chat-mentions.d.ts.map +1 -1
- package/dist/chat-mentions.js +4 -80
- package/dist/chat-mentions.js.map +1 -1
- package/dist/commands/ai-eval.d.ts +1 -92
- package/dist/commands/ai-eval.d.ts.map +1 -1
- package/dist/commands/ai-eval.js +4 -377
- package/dist/commands/ai-eval.js.map +1 -1
- package/dist/commands/make-agent.d.ts +1 -2
- package/dist/commands/make-agent.d.ts.map +1 -1
- package/dist/commands/make-agent.js +4 -22
- package/dist/commands/make-agent.js.map +1 -1
- package/dist/computer-use/index.d.ts +1 -52
- package/dist/computer-use/index.d.ts.map +1 -1
- package/dist/computer-use/index.js +4 -50
- package/dist/computer-use/index.js.map +1 -1
- package/dist/conversation-orm/index.d.ts +1 -108
- package/dist/conversation-orm/index.d.ts.map +1 -1
- package/dist/conversation-orm/index.js +4 -214
- package/dist/conversation-orm/index.js.map +1 -1
- package/dist/doctor.d.ts +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +4 -65
- package/dist/doctor.js.map +1 -1
- package/dist/eval/index.d.ts +1 -270
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js +4 -509
- package/dist/eval/index.js.map +1 -1
- package/dist/gateway/index.d.ts +1 -10
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +4 -10
- package/dist/gateway/index.js.map +1 -1
- package/dist/index.d.ts +1 -66
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -78
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -15
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +4 -14
- package/dist/mcp/index.js.map +1 -1
- package/dist/memory-embedding/index.d.ts +1 -120
- package/dist/memory-embedding/index.d.ts.map +1 -1
- package/dist/memory-embedding/index.js +4 -228
- package/dist/memory-embedding/index.js.map +1 -1
- package/dist/memory-orm/index.d.ts +1 -117
- package/dist/memory-orm/index.d.ts.map +1 -1
- package/dist/memory-orm/index.js +4 -186
- package/dist/memory-orm/index.js.map +1 -1
- package/dist/node/index.d.ts +1 -2
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +4 -2
- package/dist/node/index.js.map +1 -1
- package/dist/observers.d.ts +1 -129
- package/dist/observers.d.ts.map +1 -1
- package/dist/observers.js +4 -39
- package/dist/observers.js.map +1 -1
- package/dist/react/index.d.ts +1 -15
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +4 -15
- package/dist/react/index.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -1
- package/dist/server/index.js.map +1 -1
- package/package.json +9 -13
- package/boost/guidelines.md +0 -260
- package/boost/skills/ai-agents/SKILL.md +0 -240
- package/boost/skills/ai-tools/SKILL.md +0 -260
- package/dist/agent-run-store.d.ts +0 -161
- package/dist/agent-run-store.d.ts.map +0 -1
- package/dist/agent-run-store.js +0 -98
- package/dist/agent-run-store.js.map +0 -1
- package/dist/agent-sse.d.ts +0 -153
- package/dist/agent-sse.d.ts.map +0 -1
- package/dist/agent-sse.js +0 -282
- package/dist/agent-sse.js.map +0 -1
- package/dist/agent.d.ts +0 -508
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -1538
- package/dist/agent.js.map +0 -1
- package/dist/attachment.d.ts +0 -31
- package/dist/attachment.d.ts.map +0 -1
- package/dist/attachment.js +0 -89
- package/dist/attachment.js.map +0 -1
- package/dist/audio.d.ts +0 -45
- package/dist/audio.d.ts.map +0 -1
- package/dist/audio.js +0 -93
- package/dist/audio.js.map +0 -1
- package/dist/base64.d.ts +0 -7
- package/dist/base64.d.ts.map +0 -1
- package/dist/base64.js +0 -39
- package/dist/base64.js.map +0 -1
- package/dist/budget/pricing.d.ts +0 -124
- package/dist/budget/pricing.d.ts.map +0 -1
- package/dist/budget/pricing.js +0 -175
- package/dist/budget/pricing.js.map +0 -1
- package/dist/budget/storage.d.ts +0 -104
- package/dist/budget/storage.d.ts.map +0 -1
- package/dist/budget/storage.js +0 -0
- package/dist/budget/storage.js.map +0 -1
- package/dist/budget/with-budget.d.ts +0 -119
- package/dist/budget/with-budget.d.ts.map +0 -1
- package/dist/budget/with-budget.js +0 -175
- package/dist/budget/with-budget.js.map +0 -1
- package/dist/cached-embedding.d.ts +0 -14
- package/dist/cached-embedding.d.ts.map +0 -1
- package/dist/cached-embedding.js +0 -44
- package/dist/cached-embedding.js.map +0 -1
- package/dist/computer-use/actions.d.ts +0 -214
- package/dist/computer-use/actions.d.ts.map +0 -1
- package/dist/computer-use/actions.js +0 -48
- package/dist/computer-use/actions.js.map +0 -1
- package/dist/computer-use/errors.d.ts +0 -57
- package/dist/computer-use/errors.d.ts.map +0 -1
- package/dist/computer-use/errors.js +0 -76
- package/dist/computer-use/errors.js.map +0 -1
- package/dist/computer-use/playwright.d.ts +0 -76
- package/dist/computer-use/playwright.d.ts.map +0 -1
- package/dist/computer-use/playwright.js +0 -270
- package/dist/computer-use/playwright.js.map +0 -1
- package/dist/computer-use/tool.d.ts +0 -154
- package/dist/computer-use/tool.d.ts.map +0 -1
- package/dist/computer-use/tool.js +0 -210
- package/dist/computer-use/tool.js.map +0 -1
- package/dist/continuation-validation.d.ts +0 -85
- package/dist/continuation-validation.d.ts.map +0 -1
- package/dist/continuation-validation.js +0 -166
- package/dist/continuation-validation.js.map +0 -1
- package/dist/conversation-persistence.d.ts +0 -46
- package/dist/conversation-persistence.d.ts.map +0 -1
- package/dist/conversation-persistence.js +0 -176
- package/dist/conversation-persistence.js.map +0 -1
- package/dist/conversation.d.ts +0 -11
- package/dist/conversation.d.ts.map +0 -1
- package/dist/conversation.js +0 -55
- package/dist/conversation.js.map +0 -1
- package/dist/eval/fixtures.d.ts +0 -65
- package/dist/eval/fixtures.d.ts.map +0 -1
- package/dist/eval/fixtures.js +0 -110
- package/dist/eval/fixtures.js.map +0 -1
- package/dist/eval/html-reporter.d.ts +0 -25
- package/dist/eval/html-reporter.d.ts.map +0 -1
- package/dist/eval/html-reporter.js +0 -209
- package/dist/eval/html-reporter.js.map +0 -1
- package/dist/eval/json-reporter.d.ts +0 -43
- package/dist/eval/json-reporter.d.ts.map +0 -1
- package/dist/eval/json-reporter.js +0 -40
- package/dist/eval/json-reporter.js.map +0 -1
- package/dist/facade.d.ts +0 -96
- package/dist/facade.d.ts.map +0 -1
- package/dist/facade.js +0 -146
- package/dist/facade.js.map +0 -1
- package/dist/fake.d.ts +0 -201
- package/dist/fake.d.ts.map +0 -1
- package/dist/fake.js +0 -428
- package/dist/fake.js.map +0 -1
- package/dist/file-search.d.ts +0 -168
- package/dist/file-search.d.ts.map +0 -1
- package/dist/file-search.js +0 -158
- package/dist/file-search.js.map +0 -1
- package/dist/files.d.ts +0 -27
- package/dist/files.d.ts.map +0 -1
- package/dist/files.js +0 -44
- package/dist/files.js.map +0 -1
- package/dist/gateway/http-gateway-adapter.d.ts +0 -94
- package/dist/gateway/http-gateway-adapter.d.ts.map +0 -1
- package/dist/gateway/http-gateway-adapter.js +0 -106
- package/dist/gateway/http-gateway-adapter.js.map +0 -1
- package/dist/gateway/sse.d.ts +0 -28
- package/dist/gateway/sse.d.ts.map +0 -1
- package/dist/gateway/sse.js +0 -78
- package/dist/gateway/sse.js.map +0 -1
- package/dist/handoff.d.ts +0 -95
- package/dist/handoff.d.ts.map +0 -1
- package/dist/handoff.js +0 -78
- package/dist/handoff.js.map +0 -1
- package/dist/handoffs-driver.d.ts +0 -58
- package/dist/handoffs-driver.d.ts.map +0 -1
- package/dist/handoffs-driver.js +0 -103
- package/dist/handoffs-driver.js.map +0 -1
- package/dist/image.d.ts +0 -40
- package/dist/image.d.ts.map +0 -1
- package/dist/image.js +0 -109
- package/dist/image.js.map +0 -1
- package/dist/mcp/client-tools.d.ts +0 -39
- package/dist/mcp/client-tools.d.ts.map +0 -1
- package/dist/mcp/client-tools.js +0 -147
- package/dist/mcp/client-tools.js.map +0 -1
- package/dist/mcp/server-from-agent.d.ts +0 -24
- package/dist/mcp/server-from-agent.d.ts.map +0 -1
- package/dist/mcp/server-from-agent.js +0 -113
- package/dist/mcp/server-from-agent.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -64
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js +0 -6
- package/dist/mcp/types.js.map +0 -1
- package/dist/memory-extract.d.ts +0 -60
- package/dist/memory-extract.d.ts.map +0 -1
- package/dist/memory-extract.js +0 -163
- package/dist/memory-extract.js.map +0 -1
- package/dist/memory-inject.d.ts +0 -39
- package/dist/memory-inject.d.ts.map +0 -1
- package/dist/memory-inject.js +0 -135
- package/dist/memory-inject.js.map +0 -1
- package/dist/memory.d.ts +0 -55
- package/dist/memory.d.ts.map +0 -1
- package/dist/memory.js +0 -132
- package/dist/memory.js.map +0 -1
- package/dist/middleware.d.ts +0 -18
- package/dist/middleware.d.ts.map +0 -1
- package/dist/middleware.js +0 -72
- package/dist/middleware.js.map +0 -1
- package/dist/node/attachment.d.ts +0 -6
- package/dist/node/attachment.d.ts.map +0 -1
- package/dist/node/attachment.js +0 -35
- package/dist/node/attachment.js.map +0 -1
- package/dist/node/transcription.d.ts +0 -4
- package/dist/node/transcription.d.ts.map +0 -1
- package/dist/node/transcription.js +0 -8
- package/dist/node/transcription.js.map +0 -1
- package/dist/output.d.ts +0 -22
- package/dist/output.d.ts.map +0 -1
- package/dist/output.js +0 -60
- package/dist/output.js.map +0 -1
- package/dist/provider-tools.d.ts +0 -87
- package/dist/provider-tools.d.ts.map +0 -1
- package/dist/provider-tools.js +0 -189
- package/dist/provider-tools.js.map +0 -1
- package/dist/providers/anthropic.d.ts +0 -24
- package/dist/providers/anthropic.d.ts.map +0 -1
- package/dist/providers/anthropic.js +0 -405
- package/dist/providers/anthropic.js.map +0 -1
- package/dist/providers/azure.d.ts +0 -13
- package/dist/providers/azure.d.ts.map +0 -1
- package/dist/providers/azure.js +0 -15
- package/dist/providers/azure.js.map +0 -1
- package/dist/providers/bedrock.d.ts +0 -75
- package/dist/providers/bedrock.d.ts.map +0 -1
- package/dist/providers/bedrock.js +0 -181
- package/dist/providers/bedrock.js.map +0 -1
- package/dist/providers/cohere.d.ts +0 -13
- package/dist/providers/cohere.d.ts.map +0 -1
- package/dist/providers/cohere.js +0 -87
- package/dist/providers/cohere.js.map +0 -1
- package/dist/providers/deepseek.d.ts +0 -12
- package/dist/providers/deepseek.d.ts.map +0 -1
- package/dist/providers/deepseek.js +0 -15
- package/dist/providers/deepseek.js.map +0 -1
- package/dist/providers/elevenlabs.d.ts +0 -98
- package/dist/providers/elevenlabs.d.ts.map +0 -1
- package/dist/providers/elevenlabs.js +0 -229
- package/dist/providers/elevenlabs.js.map +0 -1
- package/dist/providers/google-cache-registry.d.ts +0 -132
- package/dist/providers/google-cache-registry.d.ts.map +0 -1
- package/dist/providers/google-cache-registry.js +0 -209
- package/dist/providers/google-cache-registry.js.map +0 -1
- package/dist/providers/google.d.ts +0 -38
- package/dist/providers/google.d.ts.map +0 -1
- package/dist/providers/google.js +0 -903
- package/dist/providers/google.js.map +0 -1
- package/dist/providers/groq.d.ts +0 -12
- package/dist/providers/groq.d.ts.map +0 -1
- package/dist/providers/groq.js +0 -15
- package/dist/providers/groq.js.map +0 -1
- package/dist/providers/jina.d.ts +0 -13
- package/dist/providers/jina.d.ts.map +0 -1
- package/dist/providers/jina.js +0 -90
- package/dist/providers/jina.js.map +0 -1
- package/dist/providers/mistral.d.ts +0 -13
- package/dist/providers/mistral.d.ts.map +0 -1
- package/dist/providers/mistral.js +0 -46
- package/dist/providers/mistral.js.map +0 -1
- package/dist/providers/ollama.d.ts +0 -11
- package/dist/providers/ollama.d.ts.map +0 -1
- package/dist/providers/ollama.js +0 -15
- package/dist/providers/ollama.js.map +0 -1
- package/dist/providers/openai.d.ts +0 -79
- package/dist/providers/openai.d.ts.map +0 -1
- package/dist/providers/openai.js +0 -792
- package/dist/providers/openai.js.map +0 -1
- package/dist/providers/openrouter.d.ts +0 -43
- package/dist/providers/openrouter.d.ts.map +0 -1
- package/dist/providers/openrouter.js +0 -21
- package/dist/providers/openrouter.js.map +0 -1
- package/dist/providers/voyage.d.ts +0 -91
- package/dist/providers/voyage.d.ts.map +0 -1
- package/dist/providers/voyage.js +0 -166
- package/dist/providers/voyage.js.map +0 -1
- package/dist/providers/xai.d.ts +0 -12
- package/dist/providers/xai.d.ts.map +0 -1
- package/dist/providers/xai.js +0 -15
- package/dist/providers/xai.js.map +0 -1
- package/dist/queue-job.d.ts +0 -100
- package/dist/queue-job.d.ts.map +0 -1
- package/dist/queue-job.js +0 -185
- package/dist/queue-job.js.map +0 -1
- package/dist/react/agent-run.d.ts +0 -111
- package/dist/react/agent-run.d.ts.map +0 -1
- package/dist/react/agent-run.js +0 -107
- package/dist/react/agent-run.js.map +0 -1
- package/dist/react/useAgentRun.d.ts +0 -68
- package/dist/react/useAgentRun.d.ts.map +0 -1
- package/dist/react/useAgentRun.js +0 -125
- package/dist/react/useAgentRun.js.map +0 -1
- package/dist/registry.d.ts +0 -45
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -131
- package/dist/registry.js.map +0 -1
- package/dist/rerank.d.ts +0 -20
- package/dist/rerank.d.ts.map +0 -1
- package/dist/rerank.js +0 -40
- package/dist/rerank.js.map +0 -1
- package/dist/resume-approval.d.ts +0 -30
- package/dist/resume-approval.d.ts.map +0 -1
- package/dist/resume-approval.js +0 -147
- package/dist/resume-approval.js.map +0 -1
- package/dist/sanitize-conversation.d.ts +0 -43
- package/dist/sanitize-conversation.d.ts.map +0 -1
- package/dist/sanitize-conversation.js +0 -85
- package/dist/sanitize-conversation.js.map +0 -1
- package/dist/scoped-tool.d.ts +0 -98
- package/dist/scoped-tool.d.ts.map +0 -1
- package/dist/scoped-tool.js +0 -174
- package/dist/scoped-tool.js.map +0 -1
- package/dist/server/provider.d.ts +0 -22
- package/dist/server/provider.d.ts.map +0 -1
- package/dist/server/provider.js +0 -194
- package/dist/server/provider.js.map +0 -1
- package/dist/similarity-search.d.ts +0 -163
- package/dist/similarity-search.d.ts.map +0 -1
- package/dist/similarity-search.js +0 -147
- package/dist/similarity-search.js.map +0 -1
- package/dist/sub-agent-run-store.d.ts +0 -157
- package/dist/sub-agent-run-store.d.ts.map +0 -1
- package/dist/sub-agent-run-store.js +0 -87
- package/dist/sub-agent-run-store.js.map +0 -1
- package/dist/tool-execution.d.ts +0 -16
- package/dist/tool-execution.d.ts.map +0 -1
- package/dist/tool-execution.js +0 -498
- package/dist/tool-execution.js.map +0 -1
- package/dist/tool-helpers.d.ts +0 -77
- package/dist/tool-helpers.d.ts.map +0 -1
- package/dist/tool-helpers.js +0 -117
- package/dist/tool-helpers.js.map +0 -1
- package/dist/tool.d.ts +0 -216
- package/dist/tool.d.ts.map +0 -1
- package/dist/tool.js +0 -175
- package/dist/tool.js.map +0 -1
- package/dist/transcription.d.ts +0 -42
- package/dist/transcription.d.ts.map +0 -1
- package/dist/transcription.js +0 -77
- package/dist/transcription.js.map +0 -1
- package/dist/types.d.ts +0 -1020
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/util/hash.d.ts +0 -11
- package/dist/util/hash.d.ts.map +0 -1
- package/dist/util/hash.js +0 -23
- package/dist/util/hash.js.map +0 -1
- package/dist/vector-stores/index.d.ts +0 -96
- package/dist/vector-stores/index.d.ts.map +0 -1
- package/dist/vector-stores/index.js +0 -153
- package/dist/vector-stores/index.js.map +0 -1
- package/dist/vercel-protocol.d.ts +0 -18
- package/dist/vercel-protocol.d.ts.map +0 -1
- package/dist/vercel-protocol.js +0 -75
- package/dist/vercel-protocol.js.map +0 -1
- package/dist/zod-to-json-schema.d.ts +0 -16
- package/dist/zod-to-json-schema.d.ts.map +0 -1
- package/dist/zod-to-json-schema.js +0 -17
- package/dist/zod-to-json-schema.js.map +0 -1
package/dist/handoff.d.ts
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import type { ToolDefinitionOptions, ToolDefinitionSchema } from './types.js';
|
|
3
|
-
import type { Agent } from './agent.js';
|
|
4
|
-
/**
|
|
5
|
-
* Symbol-tagged marker identifying a handoff tool. Looked up via
|
|
6
|
-
* `Symbol.for(...)` so cross-bundle / cross-realm checks succeed even when
|
|
7
|
-
* `@rudderjs/ai` is loaded twice (rare, but possible in monorepo + linked
|
|
8
|
-
* setups).
|
|
9
|
-
*/
|
|
10
|
-
export declare const HANDOFF_MARKER: unique symbol;
|
|
11
|
-
/**
|
|
12
|
-
* Internal spec attached to a handoff tool. The agent loop reads this when
|
|
13
|
-
* it sees a tool call that lands on a `HandoffTool` — it does NOT execute
|
|
14
|
-
* the tool's body (there isn't one). Instead it short-circuits the loop,
|
|
15
|
-
* synthesizes a tool result, and pivots control to a new instance of
|
|
16
|
-
* `AgentClass` for the rest of the conversation.
|
|
17
|
-
*/
|
|
18
|
-
export interface HandoffSpec {
|
|
19
|
-
readonly AgentClass: new (...args: unknown[]) => Agent;
|
|
20
|
-
readonly name: string;
|
|
21
|
-
readonly description: string;
|
|
22
|
-
readonly inputSchema: z.ZodType;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* A tool returned by {@link handoff}. The loop recognizes it via the
|
|
26
|
-
* `HANDOFF_MARKER` symbol property and treats it as a control-transfer,
|
|
27
|
-
* not a normal server tool. Its `execute` is intentionally absent.
|
|
28
|
-
*/
|
|
29
|
-
export interface HandoffTool {
|
|
30
|
-
readonly [HANDOFF_MARKER]: true;
|
|
31
|
-
readonly __handoffSpec: HandoffSpec;
|
|
32
|
-
readonly definition: ToolDefinitionOptions;
|
|
33
|
-
readonly execute?: undefined;
|
|
34
|
-
toSchema(): ToolDefinitionSchema;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Options for {@link handoff}. All fields optional — by default, a handoff
|
|
38
|
-
* tool is named `handoffTo${AgentClass.name}` and accepts a single
|
|
39
|
-
* `message: string` argument that becomes the transition prompt seen by
|
|
40
|
-
* the new agent as its first user message.
|
|
41
|
-
*/
|
|
42
|
-
export interface HandoffOptions<TInput extends z.ZodType = z.ZodType> {
|
|
43
|
-
/** Override the tool name. Default: `handoffTo${AgentClass.name}`. */
|
|
44
|
-
name?: string;
|
|
45
|
-
/**
|
|
46
|
-
* Trigger guidance — a short phrase appended to the description so the
|
|
47
|
-
* model knows when to pick this handoff. Example: `'pricing or sales'`
|
|
48
|
-
* → "Hand off the conversation to SalesAgent for pricing or sales."
|
|
49
|
-
*/
|
|
50
|
-
when?: string;
|
|
51
|
-
/** Override the entire description. If set, takes precedence over `when`. */
|
|
52
|
-
description?: string;
|
|
53
|
-
/**
|
|
54
|
-
* Zod schema for the handoff payload. Defaults to
|
|
55
|
-
* `z.object({ message: z.string() })` — the parent's model writes a
|
|
56
|
-
* transition prompt that becomes the child's first user message.
|
|
57
|
-
*
|
|
58
|
-
* Custom schemas are supported but the loop reads `args.message` (string)
|
|
59
|
-
* as the transition prompt. Schemas without a `message` string field will
|
|
60
|
-
* pass an empty transition message; the carried conversation history is
|
|
61
|
-
* still surfaced to the child.
|
|
62
|
-
*/
|
|
63
|
-
inputSchema?: TInput;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Define a handoff tool — a control-transfer tool the parent agent's model
|
|
67
|
-
* can call to pivot the conversation to another agent. After the model
|
|
68
|
-
* calls it, the parent's loop ends and the child agent runs from the same
|
|
69
|
-
* message history with its own instructions, tools, and model.
|
|
70
|
-
*
|
|
71
|
-
* Distinct from {@link Agent.asTool} (which is call-and-return: the parent
|
|
72
|
-
* resumes after the child finishes and incorporates the child's text as a
|
|
73
|
-
* tool result). Handoffs do not return — the child owns the rest of the
|
|
74
|
-
* conversation.
|
|
75
|
-
*
|
|
76
|
-
* @example
|
|
77
|
-
* ```ts
|
|
78
|
-
* class TriageAgent extends Agent {
|
|
79
|
-
* tools() {
|
|
80
|
-
* return [
|
|
81
|
-
* handoff(SalesAgent, { when: 'pricing or sales questions' }),
|
|
82
|
-
* handoff(SupportAgent, { when: 'bug reports or technical issues' }),
|
|
83
|
-
* ]
|
|
84
|
-
* }
|
|
85
|
-
* }
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
export declare function handoff(AgentClass: new (...args: never[]) => Agent, opts?: HandoffOptions): HandoffTool;
|
|
89
|
-
/**
|
|
90
|
-
* Structural typeguard. Used by the agent loop to detect handoff tools
|
|
91
|
-
* without coupling to a class hierarchy — handoff tools are plain objects
|
|
92
|
-
* tagged with the {@link HANDOFF_MARKER} symbol.
|
|
93
|
-
*/
|
|
94
|
-
export declare function isHandoffTool(t: unknown): t is HandoffTool;
|
|
95
|
-
//# sourceMappingURL=handoff.d.ts.map
|
package/dist/handoff.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,MAA0C,CAAA;AAE9E;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,KAAK,CAAA;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAA;IACnC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAA;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,QAAQ,IAAI,oBAAoB,CAAA;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IAClE,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAQD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,EAC3C,IAAI,CAAC,EAAE,cAAc,GACpB,WAAW,CA0Bb;AAOD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAI1D"}
|
package/dist/handoff.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { zodToJsonSchema } from './zod-to-json-schema.js';
|
|
3
|
-
/**
|
|
4
|
-
* Symbol-tagged marker identifying a handoff tool. Looked up via
|
|
5
|
-
* `Symbol.for(...)` so cross-bundle / cross-realm checks succeed even when
|
|
6
|
-
* `@rudderjs/ai` is loaded twice (rare, but possible in monorepo + linked
|
|
7
|
-
* setups).
|
|
8
|
-
*/
|
|
9
|
-
export const HANDOFF_MARKER = Symbol.for('rudderjs.ai.handoff');
|
|
10
|
-
const DEFAULT_INPUT_SCHEMA = z.object({
|
|
11
|
-
message: z
|
|
12
|
-
.string()
|
|
13
|
-
.describe('A short user-style prompt for the next agent describing what to do next.'),
|
|
14
|
-
});
|
|
15
|
-
/**
|
|
16
|
-
* Define a handoff tool — a control-transfer tool the parent agent's model
|
|
17
|
-
* can call to pivot the conversation to another agent. After the model
|
|
18
|
-
* calls it, the parent's loop ends and the child agent runs from the same
|
|
19
|
-
* message history with its own instructions, tools, and model.
|
|
20
|
-
*
|
|
21
|
-
* Distinct from {@link Agent.asTool} (which is call-and-return: the parent
|
|
22
|
-
* resumes after the child finishes and incorporates the child's text as a
|
|
23
|
-
* tool result). Handoffs do not return — the child owns the rest of the
|
|
24
|
-
* conversation.
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```ts
|
|
28
|
-
* class TriageAgent extends Agent {
|
|
29
|
-
* tools() {
|
|
30
|
-
* return [
|
|
31
|
-
* handoff(SalesAgent, { when: 'pricing or sales questions' }),
|
|
32
|
-
* handoff(SupportAgent, { when: 'bug reports or technical issues' }),
|
|
33
|
-
* ]
|
|
34
|
-
* }
|
|
35
|
-
* }
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
export function handoff(AgentClass, opts) {
|
|
39
|
-
const name = opts?.name ?? `handoffTo${AgentClass.name}`;
|
|
40
|
-
const description = opts?.description ?? buildDefaultDescription(AgentClass.name, opts?.when);
|
|
41
|
-
const inputSchema = (opts?.inputSchema ?? DEFAULT_INPUT_SCHEMA);
|
|
42
|
-
const spec = {
|
|
43
|
-
AgentClass: AgentClass,
|
|
44
|
-
name,
|
|
45
|
-
description,
|
|
46
|
-
inputSchema,
|
|
47
|
-
};
|
|
48
|
-
const definition = { name, description, inputSchema };
|
|
49
|
-
const tool = {
|
|
50
|
-
[HANDOFF_MARKER]: true,
|
|
51
|
-
__handoffSpec: spec,
|
|
52
|
-
definition,
|
|
53
|
-
toSchema() {
|
|
54
|
-
return {
|
|
55
|
-
name,
|
|
56
|
-
description,
|
|
57
|
-
parameters: zodToJsonSchema(inputSchema, 'input'),
|
|
58
|
-
};
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
return tool;
|
|
62
|
-
}
|
|
63
|
-
function buildDefaultDescription(agentName, when) {
|
|
64
|
-
const base = `Hand off the conversation to ${agentName}`;
|
|
65
|
-
return when ? `${base} for ${when}.` : `${base}.`;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Structural typeguard. Used by the agent loop to detect handoff tools
|
|
69
|
-
* without coupling to a class hierarchy — handoff tools are plain objects
|
|
70
|
-
* tagged with the {@link HANDOFF_MARKER} symbol.
|
|
71
|
-
*/
|
|
72
|
-
export function isHandoffTool(t) {
|
|
73
|
-
if (t === null || typeof t !== 'object')
|
|
74
|
-
return false;
|
|
75
|
-
const marker = t[HANDOFF_MARKER];
|
|
76
|
-
return marker === true;
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=handoff.js.map
|
package/dist/handoff.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AA2D9E,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CAAC,0EAA0E,CAAC;CACxF,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,OAAO,CACrB,UAA2C,EAC3C,IAAqB;IAErB,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,YAAY,UAAU,CAAC,IAAI,EAAE,CAAA;IACxD,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,uBAAuB,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAC7F,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,oBAAoB,CAAc,CAAA;IAE5E,MAAM,IAAI,GAAgB;QACxB,UAAU,EAAE,UAA0D;QACtE,IAAI;QACJ,WAAW;QACX,WAAW;KACZ,CAAA;IACD,MAAM,UAAU,GAA0B,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;IAE5E,MAAM,IAAI,GAAgB;QACxB,CAAC,cAAc,CAAC,EAAE,IAAI;QACtB,aAAa,EAAE,IAAI;QACnB,UAAU;QACV,QAAQ;YACN,OAAO;gBACL,IAAI;gBACJ,WAAW;gBACX,UAAU,EAAE,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC;aAClD,CAAA;QACH,CAAC;KACF,CAAA;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAiB,EAAE,IAAa;IAC/D,MAAM,IAAI,GAAG,gCAAgC,SAAS,EAAE,CAAA;IACxD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAA;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,CAAU;IACtC,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,MAAM,GAAI,CAAsC,CAAC,cAAc,CAAC,CAAA;IACtE,OAAO,MAAM,KAAK,IAAI,CAAA;AACxB,CAAC"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import type { Agent } from './agent.js';
|
|
2
|
-
import type { HandoffSpec } from './handoff.js';
|
|
3
|
-
import type { AgentPromptOptions, AgentResponse, AgentStep, AiMessage, TokenUsage } from './types.js';
|
|
4
|
-
/**
|
|
5
|
-
* Hard ceiling for the number of agent-to-agent handoffs in a single
|
|
6
|
-
* `prompt()` / `stream()` call. Most workflows hop once or twice (triage →
|
|
7
|
-
* specialist). Anything beyond this almost certainly means the agents are
|
|
8
|
-
* cycling — surfacing a clear error beats silently looping until token
|
|
9
|
-
* budgets explode.
|
|
10
|
-
*/
|
|
11
|
-
export declare const MAX_HANDOFFS = 5;
|
|
12
|
-
/**
|
|
13
|
-
* Internal record of a pending handoff carried from the loop to the
|
|
14
|
-
* handoff-aware wrapper. Not part of the public surface.
|
|
15
|
-
*/
|
|
16
|
-
export interface PendingHandoff {
|
|
17
|
-
spec: HandoffSpec;
|
|
18
|
-
transitionMessage: string;
|
|
19
|
-
parentToolCallId: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Signature of `runAgentLoopOnce` from `agent.ts`, injected so this module
|
|
23
|
-
* doesn't import its caller and create a runtime cycle.
|
|
24
|
-
*/
|
|
25
|
-
export type RunOnce = (a: Agent, input: string, options?: AgentPromptOptions) => Promise<AgentResponse & {
|
|
26
|
-
_pendingHandoff?: PendingHandoff;
|
|
27
|
-
_carriedMessages?: AiMessage[];
|
|
28
|
-
}>;
|
|
29
|
-
/**
|
|
30
|
-
* Iteratively drive pending handoffs, carrying steps + usage forward.
|
|
31
|
-
* Used by the non-streaming path. (Streaming has its own iterative driver
|
|
32
|
-
* inline so chunks can flow as each hop's loop runs.)
|
|
33
|
-
*/
|
|
34
|
-
export declare function driveHandoffs(rootName: string, rootResult: AgentResponse & {
|
|
35
|
-
_pendingHandoff?: PendingHandoff;
|
|
36
|
-
_carriedMessages?: AiMessage[];
|
|
37
|
-
}, pending: PendingHandoff, carriedMessages: AiMessage[], origOptions: AgentPromptOptions | undefined, startHopCount: number, runOnce: RunOnce): Promise<AgentResponse>;
|
|
38
|
-
/** Merge the terminal hop's response with carried steps / usage / path. */
|
|
39
|
-
export declare function mergeFinalHandoff(terminal: AgentResponse, mergedSteps: AgentStep[], mergedUsage: TokenUsage, pathPrefix: string[], terminalName: string): AgentResponse;
|
|
40
|
-
/**
|
|
41
|
-
* Build the {@link AgentPromptOptions} for a child agent invoked via
|
|
42
|
-
* handoff. The parent's carried message log replaces the child's input
|
|
43
|
-
* (so the child sees the full conversation up to the handoff point) but
|
|
44
|
-
* the child still prepends its own `instructions()` as the system message
|
|
45
|
-
* during initialization, so we drop the parent's leading system message
|
|
46
|
-
* to avoid double-prefixing.
|
|
47
|
-
*
|
|
48
|
-
* Per-call options that make sense to carry across (signal, attachments,
|
|
49
|
-
* tool/middleware overrides) are preserved; `messages` and `history` are
|
|
50
|
-
* deliberately overridden.
|
|
51
|
-
*/
|
|
52
|
-
export declare function buildHandoffChildOptions(parentOptions: AgentPromptOptions | undefined, carriedMessages: AiMessage[]): AgentPromptOptions;
|
|
53
|
-
/** Strip the internal `_pendingHandoff` / `_carriedMessages` fields before surfacing the response to public callers. */
|
|
54
|
-
export declare function stripInternal(r: AgentResponse & {
|
|
55
|
-
_pendingHandoff?: PendingHandoff;
|
|
56
|
-
_carriedMessages?: AiMessage[];
|
|
57
|
-
}): AgentResponse;
|
|
58
|
-
//# sourceMappingURL=handoffs-driver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handoffs-driver.d.ts","sourceRoot":"","sources":["../src/handoffs-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAErG;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,IAAI,CAAA;AAE7B;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAe,WAAW,CAAA;IAC9B,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAG,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAC1E,OAAO,CAAC,aAAa,GAAG;IAAE,eAAe,CAAC,EAAE,cAAc,CAAC;IAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC,CAAA;AAQ/F;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAS,MAAM,EACvB,UAAU,EAAO,aAAa,GAAG;IAAE,eAAe,CAAC,EAAE,cAAc,CAAC;IAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAA;CAAE,EACrG,OAAO,EAAU,cAAc,EAC/B,eAAe,EAAE,SAAS,EAAE,EAC5B,WAAW,EAAM,kBAAkB,GAAG,SAAS,EAC/C,aAAa,EAAI,MAAM,EACvB,OAAO,EAAU,OAAO,GACvB,OAAO,CAAC,aAAa,CAAC,CAqCxB;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAM,aAAa,EAC3B,WAAW,EAAG,SAAS,EAAE,EACzB,WAAW,EAAG,UAAU,EACxB,UAAU,EAAI,MAAM,EAAE,EACtB,YAAY,EAAE,MAAM,GACnB,aAAa,CAOf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAI,kBAAkB,GAAG,SAAS,EAC/C,eAAe,EAAE,SAAS,EAAE,GAC3B,kBAAkB,CAQpB;AAED,wHAAwH;AACxH,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG;IAAE,eAAe,CAAC,EAAE,cAAc,CAAC;IAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG,aAAa,CAapI"}
|
package/dist/handoffs-driver.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hard ceiling for the number of agent-to-agent handoffs in a single
|
|
3
|
-
* `prompt()` / `stream()` call. Most workflows hop once or twice (triage →
|
|
4
|
-
* specialist). Anything beyond this almost certainly means the agents are
|
|
5
|
-
* cycling — surfacing a clear error beats silently looping until token
|
|
6
|
-
* budgets explode.
|
|
7
|
-
*/
|
|
8
|
-
export const MAX_HANDOFFS = 5;
|
|
9
|
-
function addUsage(total, step) {
|
|
10
|
-
total.promptTokens += step.promptTokens;
|
|
11
|
-
total.completionTokens += step.completionTokens;
|
|
12
|
-
total.totalTokens += step.totalTokens;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Iteratively drive pending handoffs, carrying steps + usage forward.
|
|
16
|
-
* Used by the non-streaming path. (Streaming has its own iterative driver
|
|
17
|
-
* inline so chunks can flow as each hop's loop runs.)
|
|
18
|
-
*/
|
|
19
|
-
export async function driveHandoffs(rootName, rootResult, pending, carriedMessages, origOptions, startHopCount, runOnce) {
|
|
20
|
-
const mergedSteps = [...rootResult.steps];
|
|
21
|
-
const mergedUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
|
|
22
|
-
addUsage(mergedUsage, rootResult.usage);
|
|
23
|
-
const handoffPath = [rootName];
|
|
24
|
-
let currentPending = pending;
|
|
25
|
-
let currentCarried = carriedMessages;
|
|
26
|
-
let hopCount = startHopCount;
|
|
27
|
-
for (;;) {
|
|
28
|
-
if (hopCount >= MAX_HANDOFFS) {
|
|
29
|
-
throw new Error(`[Rudder AI] Exceeded max handoffs (${MAX_HANDOFFS}). Likely a cycle between agents.`);
|
|
30
|
-
}
|
|
31
|
-
const ChildClass = currentPending.spec.AgentClass;
|
|
32
|
-
handoffPath.push(ChildClass.name);
|
|
33
|
-
const child = new ChildClass();
|
|
34
|
-
const childOpts = buildHandoffChildOptions(origOptions, currentCarried);
|
|
35
|
-
const childOnce = await runOnce(child, currentPending.transitionMessage, childOpts);
|
|
36
|
-
mergedSteps.push(...childOnce.steps);
|
|
37
|
-
addUsage(mergedUsage, childOnce.usage);
|
|
38
|
-
if (childOnce._pendingHandoff) {
|
|
39
|
-
currentPending = childOnce._pendingHandoff;
|
|
40
|
-
currentCarried = childOnce._carriedMessages ?? [];
|
|
41
|
-
hopCount++;
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
return {
|
|
45
|
-
...stripInternal(childOnce),
|
|
46
|
-
steps: mergedSteps,
|
|
47
|
-
usage: mergedUsage,
|
|
48
|
-
handoffPath,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/** Merge the terminal hop's response with carried steps / usage / path. */
|
|
53
|
-
export function mergeFinalHandoff(terminal, mergedSteps, mergedUsage, pathPrefix, terminalName) {
|
|
54
|
-
return {
|
|
55
|
-
...terminal,
|
|
56
|
-
steps: mergedSteps,
|
|
57
|
-
usage: mergedUsage,
|
|
58
|
-
handoffPath: [...pathPrefix, terminalName],
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Build the {@link AgentPromptOptions} for a child agent invoked via
|
|
63
|
-
* handoff. The parent's carried message log replaces the child's input
|
|
64
|
-
* (so the child sees the full conversation up to the handoff point) but
|
|
65
|
-
* the child still prepends its own `instructions()` as the system message
|
|
66
|
-
* during initialization, so we drop the parent's leading system message
|
|
67
|
-
* to avoid double-prefixing.
|
|
68
|
-
*
|
|
69
|
-
* Per-call options that make sense to carry across (signal, attachments,
|
|
70
|
-
* tool/middleware overrides) are preserved; `messages` and `history` are
|
|
71
|
-
* deliberately overridden.
|
|
72
|
-
*/
|
|
73
|
-
export function buildHandoffChildOptions(parentOptions, carriedMessages) {
|
|
74
|
-
const stripped = carriedMessages.length > 0 && carriedMessages[0]?.role === 'system'
|
|
75
|
-
? carriedMessages.slice(1)
|
|
76
|
-
: carriedMessages;
|
|
77
|
-
return {
|
|
78
|
-
...(parentOptions ?? {}),
|
|
79
|
-
messages: stripped,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
/** Strip the internal `_pendingHandoff` / `_carriedMessages` fields before surfacing the response to public callers. */
|
|
83
|
-
export function stripInternal(r) {
|
|
84
|
-
const out = {
|
|
85
|
-
text: r.text,
|
|
86
|
-
steps: r.steps,
|
|
87
|
-
usage: r.usage,
|
|
88
|
-
};
|
|
89
|
-
if (r.conversationId !== undefined)
|
|
90
|
-
out.conversationId = r.conversationId;
|
|
91
|
-
if (r.finishReason !== undefined)
|
|
92
|
-
out.finishReason = r.finishReason;
|
|
93
|
-
if (r.pendingClientToolCalls !== undefined)
|
|
94
|
-
out.pendingClientToolCalls = r.pendingClientToolCalls;
|
|
95
|
-
if (r.pendingApprovalToolCall !== undefined)
|
|
96
|
-
out.pendingApprovalToolCall = r.pendingApprovalToolCall;
|
|
97
|
-
if (r.resumedToolMessages !== undefined)
|
|
98
|
-
out.resumedToolMessages = r.resumedToolMessages;
|
|
99
|
-
if (r.handoffPath !== undefined)
|
|
100
|
-
out.handoffPath = r.handoffPath;
|
|
101
|
-
return out;
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=handoffs-driver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handoffs-driver.js","sourceRoot":"","sources":["../src/handoffs-driver.ts"],"names":[],"mappings":"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"}
|
package/dist/image.d.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { ImageGenerationResult } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Fluent image generation facade.
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
* const result = await ImageGenerator.of('A sunset over mountains').size('landscape').generate()
|
|
7
|
-
* const path = await ImageGenerator.of('A logo').model('openai/dall-e-3').store('images/logo.png')
|
|
8
|
-
*
|
|
9
|
-
* @example Failover across providers
|
|
10
|
-
* const result = await ImageGenerator.of('A donut')
|
|
11
|
-
* .model('openai/dall-e-3')
|
|
12
|
-
* .failover('google/imagen-3', 'azure/dall-e-3')
|
|
13
|
-
* .generate()
|
|
14
|
-
*/
|
|
15
|
-
export declare class ImageGenerator {
|
|
16
|
-
private readonly _prompt;
|
|
17
|
-
private _model;
|
|
18
|
-
private _size;
|
|
19
|
-
private _quality;
|
|
20
|
-
private _style;
|
|
21
|
-
private _n;
|
|
22
|
-
private _failover;
|
|
23
|
-
private constructor();
|
|
24
|
-
static of(prompt: string): ImageGenerator;
|
|
25
|
-
model(model: string): this;
|
|
26
|
-
/**
|
|
27
|
-
* Provider/model strings to try if the primary fails.
|
|
28
|
-
* Tried in order; the first to succeed wins. Swallows individual errors,
|
|
29
|
-
* surfaces only the last one if every candidate fails.
|
|
30
|
-
*/
|
|
31
|
-
failover(...models: string[]): this;
|
|
32
|
-
size(size: string): this;
|
|
33
|
-
quality(quality: 'standard' | 'hd'): this;
|
|
34
|
-
style(style: 'natural' | 'vivid'): this;
|
|
35
|
-
count(n: number): this;
|
|
36
|
-
generate(): Promise<ImageGenerationResult>;
|
|
37
|
-
/** Generate and store the first image to storage. Requires @rudderjs/storage. */
|
|
38
|
-
store(path: string): Promise<string>;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=image.d.ts.map
|
package/dist/image.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA0B,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAE/E;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc;IAQL,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP5C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,SAAS,CAAe;IAEhC,OAAO;IAEP,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAIzC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAKnC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAKzC,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,IAAI;IAKvC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKhB,QAAQ,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAyBhD,iFAAiF;IAC3E,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAwB3C"}
|
package/dist/image.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { AiRegistry, tryWithFailover } from './registry.js';
|
|
2
|
-
import { fromBase64 } from './base64.js';
|
|
3
|
-
/**
|
|
4
|
-
* Fluent image generation facade.
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* const result = await ImageGenerator.of('A sunset over mountains').size('landscape').generate()
|
|
8
|
-
* const path = await ImageGenerator.of('A logo').model('openai/dall-e-3').store('images/logo.png')
|
|
9
|
-
*
|
|
10
|
-
* @example Failover across providers
|
|
11
|
-
* const result = await ImageGenerator.of('A donut')
|
|
12
|
-
* .model('openai/dall-e-3')
|
|
13
|
-
* .failover('google/imagen-3', 'azure/dall-e-3')
|
|
14
|
-
* .generate()
|
|
15
|
-
*/
|
|
16
|
-
export class ImageGenerator {
|
|
17
|
-
_prompt;
|
|
18
|
-
_model;
|
|
19
|
-
_size;
|
|
20
|
-
_quality;
|
|
21
|
-
_style;
|
|
22
|
-
_n;
|
|
23
|
-
_failover = [];
|
|
24
|
-
constructor(_prompt) {
|
|
25
|
-
this._prompt = _prompt;
|
|
26
|
-
}
|
|
27
|
-
static of(prompt) {
|
|
28
|
-
return new ImageGenerator(prompt);
|
|
29
|
-
}
|
|
30
|
-
model(model) {
|
|
31
|
-
this._model = model;
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Provider/model strings to try if the primary fails.
|
|
36
|
-
* Tried in order; the first to succeed wins. Swallows individual errors,
|
|
37
|
-
* surfaces only the last one if every candidate fails.
|
|
38
|
-
*/
|
|
39
|
-
failover(...models) {
|
|
40
|
-
this._failover = models;
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
size(size) {
|
|
44
|
-
this._size = size;
|
|
45
|
-
return this;
|
|
46
|
-
}
|
|
47
|
-
quality(quality) {
|
|
48
|
-
this._quality = quality;
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
style(style) {
|
|
52
|
-
this._style = style;
|
|
53
|
-
return this;
|
|
54
|
-
}
|
|
55
|
-
count(n) {
|
|
56
|
-
this._n = n;
|
|
57
|
-
return this;
|
|
58
|
-
}
|
|
59
|
-
async generate() {
|
|
60
|
-
const primary = this._model ?? AiRegistry.getDefault();
|
|
61
|
-
return tryWithFailover(primary, this._failover, async (modelStr) => {
|
|
62
|
-
const [providerName, modelName] = AiRegistry.parseModelString(modelStr);
|
|
63
|
-
const factory = AiRegistry.getFactory(providerName);
|
|
64
|
-
if (!factory.createImage) {
|
|
65
|
-
throw new Error(`[Rudder AI] Provider "${providerName}" does not support image generation.`);
|
|
66
|
-
}
|
|
67
|
-
const adapter = factory.createImage(modelName);
|
|
68
|
-
const options = {
|
|
69
|
-
prompt: this._prompt,
|
|
70
|
-
model: modelStr,
|
|
71
|
-
};
|
|
72
|
-
if (this._size !== undefined)
|
|
73
|
-
options.size = this._size;
|
|
74
|
-
if (this._quality !== undefined)
|
|
75
|
-
options.quality = this._quality;
|
|
76
|
-
if (this._style !== undefined)
|
|
77
|
-
options.style = this._style;
|
|
78
|
-
if (this._n !== undefined)
|
|
79
|
-
options.n = this._n;
|
|
80
|
-
return adapter.generate(options);
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
/** Generate and store the first image to storage. Requires @rudderjs/storage. */
|
|
84
|
-
async store(path) {
|
|
85
|
-
const result = await this.generate();
|
|
86
|
-
const image = result.images[0];
|
|
87
|
-
if (!image)
|
|
88
|
-
throw new Error('[Rudder AI] No image generated.');
|
|
89
|
-
try {
|
|
90
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
91
|
-
const mod = await import(/* @vite-ignore */ '@rudderjs/storage');
|
|
92
|
-
const Storage = mod.Storage;
|
|
93
|
-
if (image.base64) {
|
|
94
|
-
const bytes = fromBase64(image.base64);
|
|
95
|
-
await Storage.put(path, bytes);
|
|
96
|
-
}
|
|
97
|
-
else if (image.url) {
|
|
98
|
-
const response = await fetch(image.url);
|
|
99
|
-
const bytes = new Uint8Array(await response.arrayBuffer());
|
|
100
|
-
await Storage.put(path, bytes);
|
|
101
|
-
}
|
|
102
|
-
return path;
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
throw new Error('[Rudder AI] Image storage requires @rudderjs/storage to be installed.');
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=image.js.map
|
package/dist/image.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { Tool } from '../types.js';
|
|
2
|
-
import type { McpClientTransport, McpClientToolsOptions } from './types.js';
|
|
3
|
-
/**
|
|
4
|
-
* The result of `mcpClientTools()` — an array of `Tool`s that also carries a
|
|
5
|
-
* `close()` method when this call owns the underlying client lifecycle.
|
|
6
|
-
*
|
|
7
|
-
* Spreading this into `tools()` works because the extra method is non-enumerable
|
|
8
|
-
* (and only present when relevant) — the agent loop iterates with for-of which
|
|
9
|
-
* skips it.
|
|
10
|
-
*/
|
|
11
|
-
export interface McpClientToolsHandle extends ReadonlyArray<Tool> {
|
|
12
|
-
/** Disconnect the underlying MCP client. No-op when an external client was passed in. */
|
|
13
|
-
close?: () => Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Connect to a remote MCP server and surface its tools as RudderJS `Tool`s.
|
|
17
|
-
*
|
|
18
|
-
* Three transport shapes are accepted:
|
|
19
|
-
*
|
|
20
|
-
* ```ts
|
|
21
|
-
* // (a) HTTP — string URL or URL instance
|
|
22
|
-
* const t = await mcpClientTools('https://api.example.com/mcp')
|
|
23
|
-
*
|
|
24
|
-
* // (b) Local stdio subprocess
|
|
25
|
-
* const t = await mcpClientTools({ command: 'npx', args: ['some-mcp-server'] })
|
|
26
|
-
*
|
|
27
|
-
* // (c) Already-connected SDK Client (caller owns lifecycle)
|
|
28
|
-
* const t = await mcpClientTools(myClient)
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* The returned array exposes a `close()` method when this call owns the client
|
|
32
|
-
* (cases a + b). Pass it back so the subprocess / HTTP session can shut down
|
|
33
|
-
* cleanly when your agent is done.
|
|
34
|
-
*
|
|
35
|
-
* The remote server's `inputSchema` (JSON Schema) ships through to providers
|
|
36
|
-
* via `ToolDefinitionOptions.jsonSchema` — no zod conversion in either direction.
|
|
37
|
-
*/
|
|
38
|
-
export declare function mcpClientTools(transport: McpClientTransport, opts?: McpClientToolsOptions): Promise<McpClientToolsHandle>;
|
|
39
|
-
//# sourceMappingURL=client-tools.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/client-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAmB,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EACV,kBAAkB,EAAE,qBAAqB,EAC1C,MAAM,YAAY,CAAA;AAInB;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa,CAAC,IAAI,CAAC;IAC/D,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,kBAAkB,EAC7B,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CA4B/B"}
|