@rudderjs/ai 1.17.3 → 1.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/scoped-tool.d.ts
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { ServerToolBuilder } from './tool.js';
|
|
3
|
-
import type { ToolCallContext, ToolNeedsApproval } from './types.js';
|
|
4
|
-
/**
|
|
5
|
-
* One capability branch of a scoped tool: a named sub-tool with its own
|
|
6
|
-
* input shape + handler. Authored either inline in {@link scopedTool}'s
|
|
7
|
-
* `capabilities` map or via the {@link capability} helper (which preserves
|
|
8
|
-
* per-branch input inference for the handler signature).
|
|
9
|
-
*/
|
|
10
|
-
export interface ScopedCapability<TInput extends z.ZodType = z.ZodType, TOutput = unknown, TUpdate = unknown> {
|
|
11
|
-
/** Optional per-capability description, surfaced in the discriminator enum note. */
|
|
12
|
-
description?: string;
|
|
13
|
-
/** This branch's input schema. Validated in code before the handler runs. */
|
|
14
|
-
input: TInput;
|
|
15
|
-
/**
|
|
16
|
-
* Branch handler. May be a plain async function (single return value) or
|
|
17
|
-
* an `async function*` (yields `tool-update` chunks, returns the result) —
|
|
18
|
-
* the same dual protocol `ToolBuilder.server` accepts.
|
|
19
|
-
*/
|
|
20
|
-
handler: (input: z.infer<TInput>, ctx?: ToolCallContext) => TOutput | Promise<TOutput> | AsyncGenerator<TUpdate, TOutput, void>;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Identity helper that infers a capability's input type at the definition
|
|
24
|
-
* site, so its `handler` parameter is typed without an explicit annotation.
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* const web = capability({
|
|
28
|
-
* input: z.object({ query: z.string() }),
|
|
29
|
-
* handler: async ({ query }) => search(query), // `query` is `string`
|
|
30
|
-
* })
|
|
31
|
-
*/
|
|
32
|
-
export declare function capability<TInput extends z.ZodType, TOutput, TUpdate = unknown>(spec: ScopedCapability<TInput, TOutput, TUpdate>): ScopedCapability<TInput, TOutput, TUpdate>;
|
|
33
|
-
export interface ScopedToolOptions {
|
|
34
|
-
name: string;
|
|
35
|
-
description: string;
|
|
36
|
-
/** Discriminator field name added to the flat schema. Default `'sub_tool'`. */
|
|
37
|
-
discriminator?: string;
|
|
38
|
-
/** Named capability branches. Keys become the discriminator enum values. */
|
|
39
|
-
capabilities: Record<string, ScopedCapability>;
|
|
40
|
-
/**
|
|
41
|
-
* Runtime allowlist — restrict callable capabilities to a subset of
|
|
42
|
-
* `capabilities` keys (e.g. per-plan gating). Both the discriminator enum
|
|
43
|
-
* and the runtime dispatch honor it. Defaults to every capability key.
|
|
44
|
-
* Entries not present in `capabilities` throw at build time.
|
|
45
|
-
*/
|
|
46
|
-
allow?: string[];
|
|
47
|
-
/** Forwarded to the generated tool definition. */
|
|
48
|
-
needsApproval?: ToolNeedsApproval | undefined;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* The shared flattening plan, computed once so the JSON-Schema render and the
|
|
52
|
-
* runtime dispatch/validation cannot drift. Exported for adapters and tests.
|
|
53
|
-
*/
|
|
54
|
-
export interface FlatPlan {
|
|
55
|
-
discriminator: string;
|
|
56
|
-
/** Allowed discriminator values, in declaration order. */
|
|
57
|
-
values: string[];
|
|
58
|
-
/** Merged JSON-Schema properties (discriminator included). */
|
|
59
|
-
properties: Record<string, unknown>;
|
|
60
|
-
/** Top-level required = discriminator + fields required by EVERY branch. */
|
|
61
|
-
required: string[];
|
|
62
|
-
/** Per-capability required field names, for in-code validation before dispatch. */
|
|
63
|
-
requiredByCapability: Record<string, string[]>;
|
|
64
|
-
/** For each non-discriminator field, which capabilities reference it. */
|
|
65
|
-
owners: Record<string, string[]>;
|
|
66
|
-
}
|
|
67
|
-
/** Error thrown by a scoped tool's dispatch before any handler runs. */
|
|
68
|
-
export declare class ScopedToolError extends Error {
|
|
69
|
-
readonly name = "ScopedToolError";
|
|
70
|
-
constructor(message: string);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Collapse N capability branches into one flat function-call plan with a
|
|
74
|
-
* discriminator enum. Function-calling APIs do not reliably honor a top-level
|
|
75
|
-
* `oneOf`, so a discriminated union must flatten to a single object schema:
|
|
76
|
-
* the union of all branches' fields, a top-level `required` containing only
|
|
77
|
-
* fields required by EVERY branch, and per-branch requireds enforced in code.
|
|
78
|
-
*/
|
|
79
|
-
export declare function flattenCapabilities(capabilities: Record<string, ScopedCapability>, discriminator?: string, allow?: string[]): FlatPlan;
|
|
80
|
-
/**
|
|
81
|
-
* Build a single function-call tool from a discriminated union of capability
|
|
82
|
-
* branches. The branches collapse into one flat schema with a discriminator
|
|
83
|
-
* enum (see {@link flattenCapabilities}); at call time the dispatch validates
|
|
84
|
-
* the discriminator against the allowlist, validates the chosen branch's input
|
|
85
|
-
* (enforcing its required fields), and runs that branch's handler.
|
|
86
|
-
*
|
|
87
|
-
* @example
|
|
88
|
-
* const search = scopedTool({
|
|
89
|
-
* name: 'search',
|
|
90
|
-
* description: 'Run a search across one of several engines.',
|
|
91
|
-
* capabilities: {
|
|
92
|
-
* web: capability({ input: z.object({ query: z.string() }), handler: webSearch }),
|
|
93
|
-
* images: capability({ input: z.object({ query: z.string(), safe: z.boolean() }), handler: imageSearch }),
|
|
94
|
-
* },
|
|
95
|
-
* })
|
|
96
|
-
*/
|
|
97
|
-
export declare function scopedTool(options: ScopedToolOptions): ServerToolBuilder<Record<string, unknown>, unknown>;
|
|
98
|
-
//# sourceMappingURL=scoped-tool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scoped-tool.d.ts","sourceRoot":"","sources":["../src/scoped-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,OAAO,KAAK,EAAE,eAAe,EAAyB,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE3F;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB,CAC/B,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EACpC,OAAO,GAAG,OAAO,EACjB,OAAO,GAAG,OAAO;IAEjB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,OAAO,EAAE,CACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EACtB,GAAG,CAAC,EAAE,eAAe,KAClB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;CACzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,EAC7E,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAC/C,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAE5C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC9C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,kDAAkD;IAClD,aAAa,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,mFAAmF;IACnF,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAC9C,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CACjC;AAED,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAkB,IAAI,qBAAoB;gBAC9B,OAAO,EAAE,MAAM;CAG5B;AAYD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC9C,aAAa,SAAa,EAC1B,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,QAAQ,CA8EV;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAoD1G"}
|
package/dist/scoped-tool.js
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { ServerToolBuilder } from './tool.js';
|
|
3
|
-
import { isAsyncGenerator } from './tool-helpers.js';
|
|
4
|
-
import { zodToJsonSchema } from './zod-to-json-schema.js';
|
|
5
|
-
/**
|
|
6
|
-
* Identity helper that infers a capability's input type at the definition
|
|
7
|
-
* site, so its `handler` parameter is typed without an explicit annotation.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* const web = capability({
|
|
11
|
-
* input: z.object({ query: z.string() }),
|
|
12
|
-
* handler: async ({ query }) => search(query), // `query` is `string`
|
|
13
|
-
* })
|
|
14
|
-
*/
|
|
15
|
-
export function capability(spec) {
|
|
16
|
-
return spec;
|
|
17
|
-
}
|
|
18
|
-
/** Error thrown by a scoped tool's dispatch before any handler runs. */
|
|
19
|
-
export class ScopedToolError extends Error {
|
|
20
|
-
name = 'ScopedToolError';
|
|
21
|
-
constructor(message) {
|
|
22
|
-
super(message);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
function jsonSchemaFor(schema) {
|
|
26
|
-
const json = zodToJsonSchema(schema, 'input');
|
|
27
|
-
const properties = (json.properties && typeof json.properties === 'object') ? json.properties : {};
|
|
28
|
-
const required = Array.isArray(json.required) ? json.required.filter((r) => typeof r === 'string') : [];
|
|
29
|
-
return { properties, required };
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Collapse N capability branches into one flat function-call plan with a
|
|
33
|
-
* discriminator enum. Function-calling APIs do not reliably honor a top-level
|
|
34
|
-
* `oneOf`, so a discriminated union must flatten to a single object schema:
|
|
35
|
-
* the union of all branches' fields, a top-level `required` containing only
|
|
36
|
-
* fields required by EVERY branch, and per-branch requireds enforced in code.
|
|
37
|
-
*/
|
|
38
|
-
export function flattenCapabilities(capabilities, discriminator = 'sub_tool', allow) {
|
|
39
|
-
const keys = Object.keys(capabilities);
|
|
40
|
-
if (keys.length === 0) {
|
|
41
|
-
throw new ScopedToolError('A scoped tool needs at least one capability.');
|
|
42
|
-
}
|
|
43
|
-
const values = allow ?? keys;
|
|
44
|
-
for (const v of values) {
|
|
45
|
-
if (!(v in capabilities)) {
|
|
46
|
-
throw new ScopedToolError(`allow lists "${v}", which is not a declared capability.`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
if (values.length === 0) {
|
|
50
|
-
throw new ScopedToolError('A scoped tool needs at least one allowed capability.');
|
|
51
|
-
}
|
|
52
|
-
const properties = {};
|
|
53
|
-
const owners = {};
|
|
54
|
-
const requiredByCapability = {};
|
|
55
|
-
// A field is top-level required iff every allowed branch requires it. Seed
|
|
56
|
-
// with the first branch's requireds, then intersect down across the rest.
|
|
57
|
-
let requiredByAll = null;
|
|
58
|
-
for (const key of values) {
|
|
59
|
-
if (key === discriminator) {
|
|
60
|
-
throw new ScopedToolError(`Capability "${key}" collides with the discriminator field name "${discriminator}".`);
|
|
61
|
-
}
|
|
62
|
-
const { properties: props, required } = jsonSchemaFor(capabilities[key].input);
|
|
63
|
-
requiredByCapability[key] = required;
|
|
64
|
-
for (const [field, schema] of Object.entries(props)) {
|
|
65
|
-
if (field === discriminator) {
|
|
66
|
-
throw new ScopedToolError(`Capability "${key}" declares a field named "${discriminator}", which collides with the discriminator.`);
|
|
67
|
-
}
|
|
68
|
-
// First branch to declare a field owns its schema; later branches must
|
|
69
|
-
// share the field name (the model fills one flat object), so we keep the
|
|
70
|
-
// first shape and just record co-ownership for the field's note.
|
|
71
|
-
if (!(field in properties))
|
|
72
|
-
properties[field] = schema;
|
|
73
|
-
(owners[field] ??= []).push(key);
|
|
74
|
-
}
|
|
75
|
-
requiredByAll = requiredByAll === null
|
|
76
|
-
? [...required]
|
|
77
|
-
: requiredByAll.filter(f => required.includes(f));
|
|
78
|
-
}
|
|
79
|
-
// Annotate each non-universal field with the capabilities that use it, so
|
|
80
|
-
// the model knows a field only applies to certain discriminator values.
|
|
81
|
-
for (const [field, ownerKeys] of Object.entries(owners)) {
|
|
82
|
-
if (ownerKeys.length === values.length)
|
|
83
|
-
continue; // universal — no note
|
|
84
|
-
const note = `Only for ${discriminator}: ${ownerKeys.join(', ')}.`;
|
|
85
|
-
const schema = properties[field];
|
|
86
|
-
if (schema && typeof schema === 'object') {
|
|
87
|
-
const s = schema;
|
|
88
|
-
s.description = typeof s.description === 'string' && s.description.length > 0
|
|
89
|
-
? `${s.description} ${note}`
|
|
90
|
-
: note;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
const descParts = values.map(k => {
|
|
94
|
-
const d = capabilities[k].description;
|
|
95
|
-
return d ? `"${k}" (${d})` : `"${k}"`;
|
|
96
|
-
});
|
|
97
|
-
properties[discriminator] = {
|
|
98
|
-
type: 'string',
|
|
99
|
-
enum: values,
|
|
100
|
-
description: `Which capability to invoke. One of: ${descParts.join(', ')}.`,
|
|
101
|
-
};
|
|
102
|
-
return {
|
|
103
|
-
discriminator,
|
|
104
|
-
values,
|
|
105
|
-
properties,
|
|
106
|
-
required: [discriminator, ...(requiredByAll ?? [])],
|
|
107
|
-
requiredByCapability,
|
|
108
|
-
owners,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Build a single function-call tool from a discriminated union of capability
|
|
113
|
-
* branches. The branches collapse into one flat schema with a discriminator
|
|
114
|
-
* enum (see {@link flattenCapabilities}); at call time the dispatch validates
|
|
115
|
-
* the discriminator against the allowlist, validates the chosen branch's input
|
|
116
|
-
* (enforcing its required fields), and runs that branch's handler.
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
* const search = scopedTool({
|
|
120
|
-
* name: 'search',
|
|
121
|
-
* description: 'Run a search across one of several engines.',
|
|
122
|
-
* capabilities: {
|
|
123
|
-
* web: capability({ input: z.object({ query: z.string() }), handler: webSearch }),
|
|
124
|
-
* images: capability({ input: z.object({ query: z.string(), safe: z.boolean() }), handler: imageSearch }),
|
|
125
|
-
* },
|
|
126
|
-
* })
|
|
127
|
-
*/
|
|
128
|
-
export function scopedTool(options) {
|
|
129
|
-
const discriminator = options.discriminator ?? 'sub_tool';
|
|
130
|
-
const plan = flattenCapabilities(options.capabilities, discriminator, options.allow);
|
|
131
|
-
const allowed = new Set(plan.values);
|
|
132
|
-
const jsonSchema = {
|
|
133
|
-
type: 'object',
|
|
134
|
-
properties: plan.properties,
|
|
135
|
-
required: plan.required,
|
|
136
|
-
};
|
|
137
|
-
const definition = {
|
|
138
|
-
name: options.name,
|
|
139
|
-
description: options.description,
|
|
140
|
-
// Placeholder — the wire schema is `jsonSchema`; the loop's arg validation
|
|
141
|
-
// passes the raw object through and our dispatch does per-branch checks.
|
|
142
|
-
inputSchema: z.unknown(),
|
|
143
|
-
jsonSchema,
|
|
144
|
-
...(options.needsApproval !== undefined ? { needsApproval: options.needsApproval } : {}),
|
|
145
|
-
};
|
|
146
|
-
async function* dispatch(input, ctx) {
|
|
147
|
-
const raw = (input && typeof input === 'object') ? input : {};
|
|
148
|
-
const which = raw[discriminator];
|
|
149
|
-
if (typeof which !== 'string') {
|
|
150
|
-
throw new ScopedToolError(`Missing or non-string "${discriminator}". Expected one of: ${plan.values.join(', ')}.`);
|
|
151
|
-
}
|
|
152
|
-
if (!allowed.has(which)) {
|
|
153
|
-
throw new ScopedToolError(`Unknown ${discriminator} "${which}". Expected one of: ${plan.values.join(', ')}.`);
|
|
154
|
-
}
|
|
155
|
-
const branch = options.capabilities[which];
|
|
156
|
-
// Strip the discriminator before validating against the branch's schema —
|
|
157
|
-
// the branch never declares it, and a strict schema would reject it.
|
|
158
|
-
const { [discriminator]: _omit, ...branchInput } = raw;
|
|
159
|
-
const parsed = branch.input.safeParse(branchInput);
|
|
160
|
-
if (!parsed.success) {
|
|
161
|
-
const issues = parsed.error.issues
|
|
162
|
-
.map(i => `${i.path.map(String).join('.') || '(root)'}: ${i.message}`)
|
|
163
|
-
.join('; ');
|
|
164
|
-
throw new ScopedToolError(`Invalid arguments for ${discriminator} "${which}": ${issues}`);
|
|
165
|
-
}
|
|
166
|
-
const result = branch.handler(parsed.data, ctx);
|
|
167
|
-
if (isAsyncGenerator(result)) {
|
|
168
|
-
return yield* result;
|
|
169
|
-
}
|
|
170
|
-
return await result;
|
|
171
|
-
}
|
|
172
|
-
return new ServerToolBuilder(definition, dispatch);
|
|
173
|
-
}
|
|
174
|
-
//# sourceMappingURL=scoped-tool.js.map
|
package/dist/scoped-tool.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scoped-tool.js","sourceRoot":"","sources":["../src/scoped-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ServiceProvider } from '@rudderjs/core';
|
|
2
|
-
/**
|
|
3
|
-
* AI ServiceProvider — reads config from `config('ai')`.
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
* // bootstrap/providers.ts
|
|
7
|
-
* import { AiProvider } from '@rudderjs/ai/server'
|
|
8
|
-
* export default [AiProvider, ...]
|
|
9
|
-
*/
|
|
10
|
-
export declare class AiProvider extends ServiceProvider {
|
|
11
|
-
register(): void;
|
|
12
|
-
boot(): Promise<void>;
|
|
13
|
-
/**
|
|
14
|
-
* Build a `GoogleCacheRegistry` for Gemini's `cachedContent` resources.
|
|
15
|
-
* When `@rudderjs/cache` is installed and booted, the registered cache
|
|
16
|
-
* adapter is plumbed in for cross-process / cross-restart persistence.
|
|
17
|
-
* Otherwise the registry uses an in-process `Map` and warns once on
|
|
18
|
-
* first use.
|
|
19
|
-
*/
|
|
20
|
-
private buildGoogleCacheRegistry;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/server/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,gBAAgB,CAAA;AAmHpE;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C,QAAQ,IAAI,IAAI;IAEV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C3B;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;CAOjC"}
|
package/dist/server/provider.js
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { ServiceProvider, config, bootNotice } from '@rudderjs/core';
|
|
2
|
-
import { AiRegistry } from '../registry.js';
|
|
3
|
-
import { setConversationStore, setUserMemory } from '../agent.js';
|
|
4
|
-
import { GoogleCacheRegistry } from '../providers/google-cache-registry.js';
|
|
5
|
-
/**
|
|
6
|
-
* Return the configured `apiKey`, or `null` when missing/empty.
|
|
7
|
-
*
|
|
8
|
-
* The config type lets `apiKey` be undefined (some drivers — ollama, bedrock —
|
|
9
|
-
* don't need one), so apiKey-requiring drivers use this gate. When the gate
|
|
10
|
-
* returns `null` the driver factory bails to `null` and `AiProvider.boot()`
|
|
11
|
-
* skips the provider with a warning instead of crashing — matches Laravel's
|
|
12
|
-
* "drivers as data, missing credentials don't kill the framework" pattern.
|
|
13
|
-
*
|
|
14
|
-
* Use-site (`AI.use('anthropic')`) will surface the standard
|
|
15
|
-
* "provider not registered" error so debugging stays actionable.
|
|
16
|
-
*/
|
|
17
|
-
function requireKey(_name, cfg) {
|
|
18
|
-
return cfg.apiKey || null;
|
|
19
|
-
}
|
|
20
|
-
const DRIVERS = {
|
|
21
|
-
anthropic: async (name, cfg) => {
|
|
22
|
-
const apiKey = requireKey(name, cfg);
|
|
23
|
-
if (apiKey === null)
|
|
24
|
-
return null;
|
|
25
|
-
const { AnthropicProvider } = await import('../providers/anthropic.js');
|
|
26
|
-
return new AnthropicProvider({ apiKey, baseUrl: cfg.baseUrl });
|
|
27
|
-
},
|
|
28
|
-
openai: async (name, cfg) => {
|
|
29
|
-
const apiKey = requireKey(name, cfg);
|
|
30
|
-
if (apiKey === null)
|
|
31
|
-
return null;
|
|
32
|
-
const { OpenAIProvider } = await import('../providers/openai.js');
|
|
33
|
-
return new OpenAIProvider({
|
|
34
|
-
apiKey,
|
|
35
|
-
baseUrl: cfg.baseUrl,
|
|
36
|
-
organization: cfg['organization'],
|
|
37
|
-
});
|
|
38
|
-
},
|
|
39
|
-
google: async (name, cfg, { googleCacheRegistry }) => {
|
|
40
|
-
const apiKey = requireKey(name, cfg);
|
|
41
|
-
if (apiKey === null)
|
|
42
|
-
return null;
|
|
43
|
-
const { GoogleProvider } = await import('../providers/google.js');
|
|
44
|
-
return new GoogleProvider({ apiKey }, googleCacheRegistry);
|
|
45
|
-
},
|
|
46
|
-
ollama: async (_name, cfg) => {
|
|
47
|
-
const { OllamaProvider } = await import('../providers/ollama.js');
|
|
48
|
-
return new OllamaProvider({ baseUrl: cfg.baseUrl });
|
|
49
|
-
},
|
|
50
|
-
deepseek: async (name, cfg) => {
|
|
51
|
-
const apiKey = requireKey(name, cfg);
|
|
52
|
-
if (apiKey === null)
|
|
53
|
-
return null;
|
|
54
|
-
const { DeepSeekProvider } = await import('../providers/deepseek.js');
|
|
55
|
-
return new DeepSeekProvider({ apiKey, baseUrl: cfg.baseUrl });
|
|
56
|
-
},
|
|
57
|
-
xai: async (name, cfg) => {
|
|
58
|
-
const apiKey = requireKey(name, cfg);
|
|
59
|
-
if (apiKey === null)
|
|
60
|
-
return null;
|
|
61
|
-
const { XaiProvider } = await import('../providers/xai.js');
|
|
62
|
-
return new XaiProvider({ apiKey, baseUrl: cfg.baseUrl });
|
|
63
|
-
},
|
|
64
|
-
groq: async (name, cfg) => {
|
|
65
|
-
const apiKey = requireKey(name, cfg);
|
|
66
|
-
if (apiKey === null)
|
|
67
|
-
return null;
|
|
68
|
-
const { GroqProvider } = await import('../providers/groq.js');
|
|
69
|
-
return new GroqProvider({ apiKey, baseUrl: cfg.baseUrl });
|
|
70
|
-
},
|
|
71
|
-
mistral: async (name, cfg) => {
|
|
72
|
-
const apiKey = requireKey(name, cfg);
|
|
73
|
-
if (apiKey === null)
|
|
74
|
-
return null;
|
|
75
|
-
const { MistralProvider } = await import('../providers/mistral.js');
|
|
76
|
-
return new MistralProvider({ apiKey, baseUrl: cfg.baseUrl });
|
|
77
|
-
},
|
|
78
|
-
azure: async (name, cfg) => {
|
|
79
|
-
const apiKey = requireKey(name, cfg);
|
|
80
|
-
if (apiKey === null)
|
|
81
|
-
return null;
|
|
82
|
-
if (!cfg.baseUrl) {
|
|
83
|
-
throw new Error(`[Rudder AI] config('ai').providers.${name} is missing baseUrl (driver "azure" requires it).`);
|
|
84
|
-
}
|
|
85
|
-
const { AzureOpenAIProvider } = await import('../providers/azure.js');
|
|
86
|
-
return new AzureOpenAIProvider({ apiKey, baseUrl: cfg.baseUrl });
|
|
87
|
-
},
|
|
88
|
-
openrouter: async (name, cfg) => {
|
|
89
|
-
const apiKey = requireKey(name, cfg);
|
|
90
|
-
if (apiKey === null)
|
|
91
|
-
return null;
|
|
92
|
-
const { OpenRouterProvider } = await import('../providers/openrouter.js');
|
|
93
|
-
return new OpenRouterProvider({
|
|
94
|
-
apiKey,
|
|
95
|
-
baseUrl: cfg.baseUrl,
|
|
96
|
-
siteUrl: cfg['siteUrl'],
|
|
97
|
-
siteName: cfg['siteName'],
|
|
98
|
-
});
|
|
99
|
-
},
|
|
100
|
-
bedrock: async (_name, cfg) => {
|
|
101
|
-
const { BedrockProvider } = await import('../providers/bedrock.js');
|
|
102
|
-
const region = cfg['region'] ?? 'us-east-1';
|
|
103
|
-
const credentials = cfg['credentials'];
|
|
104
|
-
return new BedrockProvider(credentials ? { region, credentials } : { region });
|
|
105
|
-
},
|
|
106
|
-
elevenlabs: async (name, cfg) => {
|
|
107
|
-
const apiKey = requireKey(name, cfg);
|
|
108
|
-
if (apiKey === null)
|
|
109
|
-
return null;
|
|
110
|
-
const { ElevenLabsProvider } = await import('../providers/elevenlabs.js');
|
|
111
|
-
return new ElevenLabsProvider({
|
|
112
|
-
apiKey,
|
|
113
|
-
...(cfg.baseUrl ? { baseUrl: cfg.baseUrl } : {}),
|
|
114
|
-
...(cfg['defaultTtsModelId'] ? { defaultTtsModelId: cfg['defaultTtsModelId'] } : {}),
|
|
115
|
-
});
|
|
116
|
-
},
|
|
117
|
-
voyage: async (name, cfg) => {
|
|
118
|
-
const apiKey = requireKey(name, cfg);
|
|
119
|
-
if (apiKey === null)
|
|
120
|
-
return null;
|
|
121
|
-
const { VoyageProvider } = await import('../providers/voyage.js');
|
|
122
|
-
return new VoyageProvider({
|
|
123
|
-
apiKey,
|
|
124
|
-
...(cfg.baseUrl ? { baseUrl: cfg.baseUrl } : {}),
|
|
125
|
-
...(cfg['defaultInputType'] ? { defaultInputType: cfg['defaultInputType'] } : {}),
|
|
126
|
-
});
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
/**
|
|
130
|
-
* AI ServiceProvider — reads config from `config('ai')`.
|
|
131
|
-
*
|
|
132
|
-
* @example
|
|
133
|
-
* // bootstrap/providers.ts
|
|
134
|
-
* import { AiProvider } from '@rudderjs/ai/server'
|
|
135
|
-
* export default [AiProvider, ...]
|
|
136
|
-
*/
|
|
137
|
-
export class AiProvider extends ServiceProvider {
|
|
138
|
-
register() { }
|
|
139
|
-
async boot() {
|
|
140
|
-
const cfg = config('ai');
|
|
141
|
-
const googleCacheRegistry = this.buildGoogleCacheRegistry();
|
|
142
|
-
for (const [name, providerConfig] of Object.entries(cfg.providers)) {
|
|
143
|
-
const driver = providerConfig.driver ?? name;
|
|
144
|
-
const build = DRIVERS[driver];
|
|
145
|
-
if (!build)
|
|
146
|
-
continue;
|
|
147
|
-
const instance = await build(name, providerConfig, { googleCacheRegistry });
|
|
148
|
-
if (instance === null) {
|
|
149
|
-
// Drivers that need an apiKey return null when it's missing/empty
|
|
150
|
-
// (see requireKey). Skip with a grouped boot notice so the app boots
|
|
151
|
-
// and `AI.use('${name}')` surfaces the standard "not registered"
|
|
152
|
-
// error at the use-site with a clear hint to set the env var.
|
|
153
|
-
bootNotice('ai', `${name} skipped, no API key (set it in .env)`);
|
|
154
|
-
continue;
|
|
155
|
-
}
|
|
156
|
-
AiRegistry.register(instance);
|
|
157
|
-
}
|
|
158
|
-
AiRegistry.setDefault(cfg.default);
|
|
159
|
-
AiRegistry.setModels(cfg.models ?? []);
|
|
160
|
-
this.app.instance('ai.registry', AiRegistry);
|
|
161
|
-
// Register conversation store if provided in config
|
|
162
|
-
if (cfg.conversations) {
|
|
163
|
-
setConversationStore(cfg.conversations);
|
|
164
|
-
this.app.instance('ai.conversations', cfg.conversations);
|
|
165
|
-
}
|
|
166
|
-
// Register user-memory store if provided in config (#A4)
|
|
167
|
-
if (cfg.memory) {
|
|
168
|
-
setUserMemory(cfg.memory);
|
|
169
|
-
this.app.instance('ai.memory', cfg.memory);
|
|
170
|
-
}
|
|
171
|
-
// Register make:agent scaffolder
|
|
172
|
-
try {
|
|
173
|
-
const { registerMakeSpecs } = await import('@rudderjs/console');
|
|
174
|
-
const { makeAgentSpec } = await import('../commands/make-agent.js');
|
|
175
|
-
registerMakeSpecs(makeAgentSpec);
|
|
176
|
-
}
|
|
177
|
-
catch { /* rudder not available */ }
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Build a `GoogleCacheRegistry` for Gemini's `cachedContent` resources.
|
|
181
|
-
* When `@rudderjs/cache` is installed and booted, the registered cache
|
|
182
|
-
* adapter is plumbed in for cross-process / cross-restart persistence.
|
|
183
|
-
* Otherwise the registry uses an in-process `Map` and warns once on
|
|
184
|
-
* first use.
|
|
185
|
-
*/
|
|
186
|
-
buildGoogleCacheRegistry() {
|
|
187
|
-
if (this.app.container.has('cache')) {
|
|
188
|
-
const store = this.app.make('cache');
|
|
189
|
-
return new GoogleCacheRegistry({ store });
|
|
190
|
-
}
|
|
191
|
-
return new GoogleCacheRegistry();
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/server/provider.ts"],"names":[],"mappings":"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"}
|