@rudderjs/ai 1.17.3 → 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/file-search.js
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `fileSearch({ stores, where?, maxResults?, name?, description? })` — agent
|
|
3
|
-
* tool factory for hosted vector-store retrieval (#B8 Phase 2).
|
|
4
|
-
*
|
|
5
|
-
* Wraps OpenAI's native `file_search` tool. The tool object is tagged with
|
|
6
|
-
* `providerHint: { type: 'file-search', ... }`; the OpenAI adapter's
|
|
7
|
-
* `toOpenAITools` recognizes the hint and emits the native
|
|
8
|
-
* `{ type: 'file_search', vector_store_ids, filters, max_num_results }`
|
|
9
|
-
* block instead of a generic function-call shape. The model runs the search
|
|
10
|
-
* server-side and the results land in the assistant message — no agent-loop
|
|
11
|
-
* tool round-trip on the hosted path.
|
|
12
|
-
*
|
|
13
|
-
* # Hosted on OpenAI today
|
|
14
|
-
*
|
|
15
|
-
* Other providers see the tool as a regular function-call tool with the
|
|
16
|
-
* placeholder `{ query: string }` schema — without an `execute` they pause
|
|
17
|
-
* for client tools, which is degraded. Phase 3 will add a `fallback` opt
|
|
18
|
-
* that installs an `execute` delegating to `similaritySearch` over a local
|
|
19
|
-
* pgvector model.
|
|
20
|
-
*
|
|
21
|
-
* # Wiring
|
|
22
|
-
*
|
|
23
|
-
* ```ts
|
|
24
|
-
* import { Agent, fileSearch, VectorStores } from '@rudderjs/ai'
|
|
25
|
-
*
|
|
26
|
-
* const kb = await VectorStores.get('vs_abc123')
|
|
27
|
-
*
|
|
28
|
-
* class SupportAgent extends Agent {
|
|
29
|
-
* model() { return 'openai/gpt-4o' }
|
|
30
|
-
* tools() {
|
|
31
|
-
* return [
|
|
32
|
-
* fileSearch({
|
|
33
|
-
* stores: [kb.id],
|
|
34
|
-
* where: { author: 'Alice', year: 2026 },
|
|
35
|
-
* maxResults: 10,
|
|
36
|
-
* }),
|
|
37
|
-
* ]
|
|
38
|
-
* }
|
|
39
|
-
* }
|
|
40
|
-
* ```
|
|
41
|
-
*
|
|
42
|
-
* # Metadata filter sugar
|
|
43
|
-
*
|
|
44
|
-
* `where: { author: 'Alice', year: 2026 }` is shorthand for the typed
|
|
45
|
-
* OpenAI filter shape `{ type: 'and', filters: [{ type: 'eq', key: 'author',
|
|
46
|
-
* value: 'Alice' }, { type: 'eq', key: 'year', value: 2026 }] }`. Either
|
|
47
|
-
* shape works — pass the typed object form for `gt` / `lt` / `or`.
|
|
48
|
-
*/
|
|
49
|
-
import { z } from 'zod';
|
|
50
|
-
import { similaritySearch } from './similarity-search.js';
|
|
51
|
-
/**
|
|
52
|
-
* Symbol-tagged marker identifying a file-search tool. Mirrors the
|
|
53
|
-
* `COMPUTER_USE_MARKER` pattern — `Symbol.for(...)` so cross-bundle /
|
|
54
|
-
* cross-realm checks succeed even when `@rudderjs/ai` loads twice.
|
|
55
|
-
*/
|
|
56
|
-
export const FILE_SEARCH_MARKER = Symbol.for('rudderjs.ai.file-search');
|
|
57
|
-
/**
|
|
58
|
-
* Default tool name. OpenAI's native `file_search` tool expects calls to
|
|
59
|
-
* land on a tool literally named `file_search` — the model is trained on
|
|
60
|
-
* that identifier. Apps can override via `opts.name` but usually shouldn't.
|
|
61
|
-
*/
|
|
62
|
-
export const FILE_SEARCH_TOOL_NAME = 'file_search';
|
|
63
|
-
const DEFAULT_DESCRIPTION = 'Search the configured knowledge base(s) for documents relevant to the query. ' +
|
|
64
|
-
'Returns the most relevant passages alongside the source document metadata.';
|
|
65
|
-
/** Build the agent tool. See module JSDoc for usage. */
|
|
66
|
-
export function fileSearch(opts) {
|
|
67
|
-
if (!Array.isArray(opts.stores) || opts.stores.length === 0) {
|
|
68
|
-
throw new Error('[Rudder AI] fileSearch({ stores }) requires at least one vector-store id. ' +
|
|
69
|
-
'Create a store via `VectorStores.create(...)` and pass its `id`.');
|
|
70
|
-
}
|
|
71
|
-
const name = opts.name ?? FILE_SEARCH_TOOL_NAME;
|
|
72
|
-
const description = opts.description ?? DEFAULT_DESCRIPTION;
|
|
73
|
-
const filters = opts.where !== undefined ? normalizeWhere(opts.where) : undefined;
|
|
74
|
-
// The provider hint is the load-bearing piece — adapters recognizing
|
|
75
|
-
// `type === 'file-search'` substitute their native tool block.
|
|
76
|
-
const providerHint = { type: 'file-search', vector_store_ids: opts.stores };
|
|
77
|
-
if (filters)
|
|
78
|
-
providerHint['filters'] = filters;
|
|
79
|
-
if (opts.maxResults !== undefined)
|
|
80
|
-
providerHint['max_num_results'] = opts.maxResults;
|
|
81
|
-
const definition = {
|
|
82
|
-
name,
|
|
83
|
-
description,
|
|
84
|
-
// Placeholder schema. Non-OpenAI providers see this and treat the
|
|
85
|
-
// tool as a normal function-call. OpenAI's native block drops it.
|
|
86
|
-
inputSchema: z.object({ query: z.string().describe('Natural-language query.') }),
|
|
87
|
-
providerHint,
|
|
88
|
-
};
|
|
89
|
-
// Build the fallback execute when configured. The inner similaritySearch
|
|
90
|
-
// tool's name/description are overridden so structural identity stays on
|
|
91
|
-
// the outer fileSearch (the model still sees the same tool and prompt).
|
|
92
|
-
let execute;
|
|
93
|
-
let toModelOutput;
|
|
94
|
-
if (opts.fallback) {
|
|
95
|
-
const inner = similaritySearch({
|
|
96
|
-
...opts.fallback,
|
|
97
|
-
name,
|
|
98
|
-
description,
|
|
99
|
-
});
|
|
100
|
-
execute = inner.execute;
|
|
101
|
-
toModelOutput = inner.toModelOutput;
|
|
102
|
-
}
|
|
103
|
-
const tool = {
|
|
104
|
-
[FILE_SEARCH_MARKER]: true,
|
|
105
|
-
definition,
|
|
106
|
-
...(execute ? { execute } : {}),
|
|
107
|
-
...(toModelOutput ? { toModelOutput } : {}),
|
|
108
|
-
toSchema() {
|
|
109
|
-
const schema = {
|
|
110
|
-
name,
|
|
111
|
-
description,
|
|
112
|
-
parameters: { type: 'object', properties: { query: { type: 'string' } }, required: ['query'] },
|
|
113
|
-
providerHint,
|
|
114
|
-
};
|
|
115
|
-
return schema;
|
|
116
|
-
},
|
|
117
|
-
};
|
|
118
|
-
return tool;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Structural typeguard. Mirrors `isComputerUseTool` / `isHandoffTool` —
|
|
122
|
-
* tools are plain objects tagged with `Symbol.for(...)` markers so the
|
|
123
|
-
* loop and adapters can detect them without coupling to a class.
|
|
124
|
-
*/
|
|
125
|
-
export function isFileSearchTool(t) {
|
|
126
|
-
if (t === null || typeof t !== 'object')
|
|
127
|
-
return false;
|
|
128
|
-
const marker = t[FILE_SEARCH_MARKER];
|
|
129
|
-
return marker === true;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Lower the user-friendly `where` shape to OpenAI's typed filter object.
|
|
133
|
-
*
|
|
134
|
-
* - `{ author: 'Alice', year: 2026 }` → `{ type: 'and', filters: [eq, eq] }`
|
|
135
|
-
* - `{ type: 'eq' | ... }` → pass-through
|
|
136
|
-
* - `{ type: 'and' | 'or', filters }` → pass-through
|
|
137
|
-
*
|
|
138
|
-
* A single-key sugar object short-circuits to the bare `eq` (no `and`
|
|
139
|
-
* wrapper), matching OpenAI's recommended shape.
|
|
140
|
-
*/
|
|
141
|
-
export function normalizeWhere(where) {
|
|
142
|
-
if (isTypedFilter(where))
|
|
143
|
-
return where;
|
|
144
|
-
const entries = Object.entries(where);
|
|
145
|
-
if (entries.length === 0) {
|
|
146
|
-
throw new Error('[Rudder AI] fileSearch({ where }) must contain at least one key.');
|
|
147
|
-
}
|
|
148
|
-
const eqs = entries.map(([key, value]) => ({ type: 'eq', key, value }));
|
|
149
|
-
return eqs.length === 1 ? eqs[0] : { type: 'and', filters: eqs };
|
|
150
|
-
}
|
|
151
|
-
function isTypedFilter(w) {
|
|
152
|
-
if (typeof w !== 'object' || w === null)
|
|
153
|
-
return false;
|
|
154
|
-
const t = w.type;
|
|
155
|
-
return typeof t === 'string'
|
|
156
|
-
&& (t === 'eq' || t === 'ne' || t === 'gt' || t === 'gte' || t === 'lt' || t === 'lte' || t === 'and' || t === 'or');
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=file-search.js.map
|
package/dist/file-search.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-search.js","sourceRoot":"","sources":["../src/file-search.ts"],"names":[],"mappings":"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"}
|
package/dist/files.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { FileUploadResult, FileListResult, FileContent } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Provider file management — upload, list, delete, and retrieve files
|
|
4
|
-
* on provider platforms (OpenAI, Anthropic, Google).
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* const files = AI.files('openai')
|
|
8
|
-
* const uploaded = await files.upload('./report.pdf', { purpose: 'assistants' })
|
|
9
|
-
* const list = await files.list()
|
|
10
|
-
* await files.delete(uploaded.id)
|
|
11
|
-
*/
|
|
12
|
-
export declare class FileManager {
|
|
13
|
-
private readonly providerName;
|
|
14
|
-
private constructor();
|
|
15
|
-
static for(providerName: string): FileManager;
|
|
16
|
-
/** Upload a file to the provider */
|
|
17
|
-
upload(filePath: string, options?: {
|
|
18
|
-
purpose?: string | undefined;
|
|
19
|
-
}): Promise<FileUploadResult>;
|
|
20
|
-
/** List all files on the provider */
|
|
21
|
-
list(): Promise<FileListResult>;
|
|
22
|
-
/** Delete a file by ID */
|
|
23
|
-
delete(fileId: string): Promise<void>;
|
|
24
|
-
/** Retrieve file content by ID (not all providers support this) */
|
|
25
|
-
retrieve(fileId: string): Promise<FileContent>;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=files.d.ts.map
|
package/dist/files.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE/E;;;;;;;;;GASG;AACH,qBAAa,WAAW;IACF,OAAO,CAAC,QAAQ,CAAC,YAAY;IAAjD,OAAO;IAEP,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW;IAI7C,oCAAoC;IAC9B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKrG,qCAAqC;IAC/B,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IAKrC,0BAA0B;IACpB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,mEAAmE;IAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAOrD"}
|
package/dist/files.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { AiRegistry } from './registry.js';
|
|
2
|
-
/**
|
|
3
|
-
* Provider file management — upload, list, delete, and retrieve files
|
|
4
|
-
* on provider platforms (OpenAI, Anthropic, Google).
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* const files = AI.files('openai')
|
|
8
|
-
* const uploaded = await files.upload('./report.pdf', { purpose: 'assistants' })
|
|
9
|
-
* const list = await files.list()
|
|
10
|
-
* await files.delete(uploaded.id)
|
|
11
|
-
*/
|
|
12
|
-
export class FileManager {
|
|
13
|
-
providerName;
|
|
14
|
-
constructor(providerName) {
|
|
15
|
-
this.providerName = providerName;
|
|
16
|
-
}
|
|
17
|
-
static for(providerName) {
|
|
18
|
-
return new FileManager(providerName);
|
|
19
|
-
}
|
|
20
|
-
/** Upload a file to the provider */
|
|
21
|
-
async upload(filePath, options) {
|
|
22
|
-
const adapter = AiRegistry.resolveFiles(this.providerName);
|
|
23
|
-
return adapter.upload({ filePath, purpose: options?.purpose });
|
|
24
|
-
}
|
|
25
|
-
/** List all files on the provider */
|
|
26
|
-
async list() {
|
|
27
|
-
const adapter = AiRegistry.resolveFiles(this.providerName);
|
|
28
|
-
return adapter.list();
|
|
29
|
-
}
|
|
30
|
-
/** Delete a file by ID */
|
|
31
|
-
async delete(fileId) {
|
|
32
|
-
const adapter = AiRegistry.resolveFiles(this.providerName);
|
|
33
|
-
return adapter.delete(fileId);
|
|
34
|
-
}
|
|
35
|
-
/** Retrieve file content by ID (not all providers support this) */
|
|
36
|
-
async retrieve(fileId) {
|
|
37
|
-
const adapter = AiRegistry.resolveFiles(this.providerName);
|
|
38
|
-
if (!adapter.retrieve) {
|
|
39
|
-
throw new Error(`[Rudder AI] Provider "${this.providerName}" does not support file retrieval.`);
|
|
40
|
-
}
|
|
41
|
-
return adapter.retrieve(fileId);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=files.js.map
|
package/dist/files.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C;;;;;;;;;GASG;AACH,MAAM,OAAO,WAAW;IACe;IAArC,YAAqC,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;IAAG,CAAC;IAE7D,MAAM,CAAC,GAAG,CAAC,YAAoB;QAC7B,OAAO,IAAI,WAAW,CAAC,YAAY,CAAC,CAAA;IACtC,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,OAA0C;QACvE,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC1D,OAAO,OAAO,CAAC,IAAI,EAAE,CAAA;IACvB,CAAC;IAED,0BAA0B;IAC1B,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC/B,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC1D,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,YAAY,oCAAoC,CAAC,CAAA;QACjG,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;CACF"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import type { ProviderAdapter, ProviderRequestOptions, ProviderResponse, StreamChunk } from '../types.js';
|
|
2
|
-
import { type SseEvent } from './sse.js';
|
|
3
|
-
/**
|
|
4
|
-
* Connection config shared by every gateway adapter. Subclasses may extend
|
|
5
|
-
* this with gateway-specific fields (region, project id, ...).
|
|
6
|
-
*/
|
|
7
|
-
export interface GatewayAdapterConfig {
|
|
8
|
-
/** Base URL of the gateway endpoint. */
|
|
9
|
-
baseUrl: string;
|
|
10
|
-
/** Optional API key — surfaced for {@link HttpGatewayAdapter.buildHeaders}. */
|
|
11
|
-
apiKey?: string | undefined;
|
|
12
|
-
/** Static headers merged into every request (auth from `buildHeaders` wins). */
|
|
13
|
-
headers?: Record<string, string> | undefined;
|
|
14
|
-
}
|
|
15
|
-
/** Context passed to the request-shaping hooks. */
|
|
16
|
-
export interface GatewayRequestContext {
|
|
17
|
-
/** `true` for the streaming (`stream()`) path, `false` for `generate()`. */
|
|
18
|
-
stream: boolean;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Abstract template for normalizing an upstream LLM gateway behind the
|
|
22
|
-
* framework's {@link ProviderAdapter} contract.
|
|
23
|
-
*
|
|
24
|
-
* This is the Laravel custom-driver pattern (Template Method): the base class
|
|
25
|
-
* owns the reusable lifecycle — `fetch`, JSON / SSE handling, `AbortSignal`
|
|
26
|
-
* wiring, and error mapping — and leaves four `protected abstract` hooks for
|
|
27
|
-
* the gateway's wire format:
|
|
28
|
-
*
|
|
29
|
-
* - {@link buildHeaders} — the gateway's auth scheme.
|
|
30
|
-
* - {@link buildRequestBody} — map {@link ProviderRequestOptions} → the
|
|
31
|
-
* gateway's request envelope.
|
|
32
|
-
* - {@link parseResponse} — map a non-streaming response → {@link ProviderResponse}.
|
|
33
|
-
* - {@link parseStreamEvent} — map one {@link SseEvent} → zero or more
|
|
34
|
-
* {@link StreamChunk}s.
|
|
35
|
-
*
|
|
36
|
-
* Reach for this only when the gateway's wire format matches no built-in
|
|
37
|
-
* provider. An OpenAI- or Anthropic-compatible gateway needs no subclass:
|
|
38
|
-
* register the `openai` / `anthropic` driver with a `baseUrl` override instead.
|
|
39
|
-
*
|
|
40
|
-
* Register a subclass through the usual factory path — `AiRegistry.register()`
|
|
41
|
-
* (the framework's `extend()` equivalent).
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* ```ts
|
|
45
|
-
* class AcmeGatewayAdapter extends HttpGatewayAdapter {
|
|
46
|
-
* protected buildHeaders() {
|
|
47
|
-
* return { authorization: `Bearer ${this.config.apiKey}` }
|
|
48
|
-
* }
|
|
49
|
-
* protected buildRequestBody(o: ProviderRequestOptions, ctx: GatewayRequestContext) {
|
|
50
|
-
* return { model: this.model, messages: o.messages, stream: ctx.stream }
|
|
51
|
-
* }
|
|
52
|
-
* protected parseResponse(json: any): ProviderResponse {
|
|
53
|
-
* return {
|
|
54
|
-
* message: { role: 'assistant', content: json.text },
|
|
55
|
-
* usage: { promptTokens: json.usage.in, completionTokens: json.usage.out, totalTokens: json.usage.total },
|
|
56
|
-
* finishReason: 'stop',
|
|
57
|
-
* }
|
|
58
|
-
* }
|
|
59
|
-
* protected parseStreamEvent(e: SseEvent): StreamChunk[] {
|
|
60
|
-
* if (e.data === '[DONE]') return [{ type: 'finish', finishReason: 'stop' }]
|
|
61
|
-
* const { delta } = JSON.parse(e.data)
|
|
62
|
-
* return delta ? [{ type: 'text-delta', text: delta }] : []
|
|
63
|
-
* }
|
|
64
|
-
* }
|
|
65
|
-
* ```
|
|
66
|
-
*/
|
|
67
|
-
export declare abstract class HttpGatewayAdapter implements ProviderAdapter {
|
|
68
|
-
protected readonly config: GatewayAdapterConfig;
|
|
69
|
-
protected readonly model: string;
|
|
70
|
-
constructor(config: GatewayAdapterConfig, model: string);
|
|
71
|
-
generate(options: ProviderRequestOptions): Promise<ProviderResponse>;
|
|
72
|
-
stream(options: ProviderRequestOptions): AsyncIterable<StreamChunk>;
|
|
73
|
-
/** Perform the POST, wire the abort signal, and map error responses. */
|
|
74
|
-
private send;
|
|
75
|
-
/**
|
|
76
|
-
* Resolve the request URL. Defaults to {@link GatewayAdapterConfig.baseUrl}
|
|
77
|
-
* for both paths; override to append a path or branch on `ctx.stream`.
|
|
78
|
-
*/
|
|
79
|
-
protected endpoint(_ctx: GatewayRequestContext): string;
|
|
80
|
-
/**
|
|
81
|
-
* Map a non-2xx response to an error. Override to parse a gateway-specific
|
|
82
|
-
* error envelope. The default reads the body as text and throws.
|
|
83
|
-
*/
|
|
84
|
-
protected onErrorResponse(res: Response): Promise<never>;
|
|
85
|
-
/** Auth/identity headers for every request (merged over `config.headers`). */
|
|
86
|
-
protected abstract buildHeaders(): Record<string, string>;
|
|
87
|
-
/** Map the framework request to the gateway's request envelope. */
|
|
88
|
-
protected abstract buildRequestBody(options: ProviderRequestOptions, ctx: GatewayRequestContext): unknown;
|
|
89
|
-
/** Map a complete (non-streaming) gateway response to a {@link ProviderResponse}. */
|
|
90
|
-
protected abstract parseResponse(json: unknown): ProviderResponse;
|
|
91
|
-
/** Map one parsed {@link SseEvent} to zero or more {@link StreamChunk}s. */
|
|
92
|
-
protected abstract parseStreamEvent(event: SseEvent): StreamChunk[];
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=http-gateway-adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-gateway-adapter.d.ts","sourceRoot":"","sources":["../../src/gateway/http-gateway-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACZ,MAAM,aAAa,CAAA;AACpB,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;CAC7C;AAED,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,8BAAsB,kBAAmB,YAAW,eAAe;IAE/D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB;IAC/C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;gBADb,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,MAAM;IAG5B,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAMnE,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa,CAAC,WAAW,CAAC;IAY1E,wEAAwE;YAC1D,IAAI;IAiBlB;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM;IAIvD;;;OAGG;cACa,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAS9D,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzD,mEAAmE;IACnE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CACjC,OAAO,EAAE,sBAAsB,EAC/B,GAAG,EAAE,qBAAqB,GACzB,OAAO;IAEV,qFAAqF;IACrF,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB;IAEjE,4EAA4E;IAC5E,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,EAAE;CACpE"}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { parseSseStream } from './sse.js';
|
|
2
|
-
/**
|
|
3
|
-
* Abstract template for normalizing an upstream LLM gateway behind the
|
|
4
|
-
* framework's {@link ProviderAdapter} contract.
|
|
5
|
-
*
|
|
6
|
-
* This is the Laravel custom-driver pattern (Template Method): the base class
|
|
7
|
-
* owns the reusable lifecycle — `fetch`, JSON / SSE handling, `AbortSignal`
|
|
8
|
-
* wiring, and error mapping — and leaves four `protected abstract` hooks for
|
|
9
|
-
* the gateway's wire format:
|
|
10
|
-
*
|
|
11
|
-
* - {@link buildHeaders} — the gateway's auth scheme.
|
|
12
|
-
* - {@link buildRequestBody} — map {@link ProviderRequestOptions} → the
|
|
13
|
-
* gateway's request envelope.
|
|
14
|
-
* - {@link parseResponse} — map a non-streaming response → {@link ProviderResponse}.
|
|
15
|
-
* - {@link parseStreamEvent} — map one {@link SseEvent} → zero or more
|
|
16
|
-
* {@link StreamChunk}s.
|
|
17
|
-
*
|
|
18
|
-
* Reach for this only when the gateway's wire format matches no built-in
|
|
19
|
-
* provider. An OpenAI- or Anthropic-compatible gateway needs no subclass:
|
|
20
|
-
* register the `openai` / `anthropic` driver with a `baseUrl` override instead.
|
|
21
|
-
*
|
|
22
|
-
* Register a subclass through the usual factory path — `AiRegistry.register()`
|
|
23
|
-
* (the framework's `extend()` equivalent).
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* ```ts
|
|
27
|
-
* class AcmeGatewayAdapter extends HttpGatewayAdapter {
|
|
28
|
-
* protected buildHeaders() {
|
|
29
|
-
* return { authorization: `Bearer ${this.config.apiKey}` }
|
|
30
|
-
* }
|
|
31
|
-
* protected buildRequestBody(o: ProviderRequestOptions, ctx: GatewayRequestContext) {
|
|
32
|
-
* return { model: this.model, messages: o.messages, stream: ctx.stream }
|
|
33
|
-
* }
|
|
34
|
-
* protected parseResponse(json: any): ProviderResponse {
|
|
35
|
-
* return {
|
|
36
|
-
* message: { role: 'assistant', content: json.text },
|
|
37
|
-
* usage: { promptTokens: json.usage.in, completionTokens: json.usage.out, totalTokens: json.usage.total },
|
|
38
|
-
* finishReason: 'stop',
|
|
39
|
-
* }
|
|
40
|
-
* }
|
|
41
|
-
* protected parseStreamEvent(e: SseEvent): StreamChunk[] {
|
|
42
|
-
* if (e.data === '[DONE]') return [{ type: 'finish', finishReason: 'stop' }]
|
|
43
|
-
* const { delta } = JSON.parse(e.data)
|
|
44
|
-
* return delta ? [{ type: 'text-delta', text: delta }] : []
|
|
45
|
-
* }
|
|
46
|
-
* }
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
export class HttpGatewayAdapter {
|
|
50
|
-
config;
|
|
51
|
-
model;
|
|
52
|
-
constructor(config, model) {
|
|
53
|
-
this.config = config;
|
|
54
|
-
this.model = model;
|
|
55
|
-
}
|
|
56
|
-
async generate(options) {
|
|
57
|
-
const res = await this.send(options, { stream: false });
|
|
58
|
-
const json = (await res.json());
|
|
59
|
-
return this.parseResponse(json);
|
|
60
|
-
}
|
|
61
|
-
async *stream(options) {
|
|
62
|
-
const res = await this.send(options, { stream: true });
|
|
63
|
-
if (!res.body) {
|
|
64
|
-
throw new Error('[Rudder AI] Gateway stream response had no body');
|
|
65
|
-
}
|
|
66
|
-
for await (const event of parseSseStream(res.body, options.signal)) {
|
|
67
|
-
for (const chunk of this.parseStreamEvent(event))
|
|
68
|
-
yield chunk;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// ─── reusable plumbing ─────────────────────────────────────
|
|
72
|
-
/** Perform the POST, wire the abort signal, and map error responses. */
|
|
73
|
-
async send(options, ctx) {
|
|
74
|
-
const headers = {
|
|
75
|
-
'content-type': 'application/json',
|
|
76
|
-
accept: ctx.stream ? 'text/event-stream' : 'application/json',
|
|
77
|
-
...this.config.headers,
|
|
78
|
-
...this.buildHeaders(),
|
|
79
|
-
};
|
|
80
|
-
const res = await fetch(this.endpoint(ctx), {
|
|
81
|
-
method: 'POST',
|
|
82
|
-
headers,
|
|
83
|
-
body: JSON.stringify(this.buildRequestBody(options, ctx)),
|
|
84
|
-
...(options.signal ? { signal: options.signal } : {}),
|
|
85
|
-
});
|
|
86
|
-
if (!res.ok)
|
|
87
|
-
await this.onErrorResponse(res);
|
|
88
|
-
return res;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Resolve the request URL. Defaults to {@link GatewayAdapterConfig.baseUrl}
|
|
92
|
-
* for both paths; override to append a path or branch on `ctx.stream`.
|
|
93
|
-
*/
|
|
94
|
-
endpoint(_ctx) {
|
|
95
|
-
return this.config.baseUrl;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Map a non-2xx response to an error. Override to parse a gateway-specific
|
|
99
|
-
* error envelope. The default reads the body as text and throws.
|
|
100
|
-
*/
|
|
101
|
-
async onErrorResponse(res) {
|
|
102
|
-
const body = await res.text().catch(() => '');
|
|
103
|
-
throw new Error(`[Rudder AI] Gateway request failed: ${res.status} ${res.statusText}${body ? ` — ${body}` : ''}`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=http-gateway-adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-gateway-adapter.js","sourceRoot":"","sources":["../../src/gateway/http-gateway-adapter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAiB,MAAM,UAAU,CAAA;AAqBxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,OAAgB,kBAAkB;IAEjB;IACA;IAFrB,YACqB,MAA4B,EAC5B,KAAa;QADb,WAAM,GAAN,MAAM,CAAsB;QAC5B,UAAK,GAAL,KAAK,CAAQ;IAC/B,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,OAA+B;QAC5C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QACvD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAA;QAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAA+B;QAC3C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACpE,CAAC;QACD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAA;QAC/D,CAAC;IACH,CAAC;IAED,8DAA8D;IAE9D,wEAAwE;IAChE,KAAK,CAAC,IAAI,CAAC,OAA+B,EAAE,GAA0B;QAC5E,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB;YAC7D,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;YACtB,GAAG,IAAI,CAAC,YAAY,EAAE;SACvB,CAAA;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACzD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QAC5C,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;;;OAGG;IACO,QAAQ,CAAC,IAA2B;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5B,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,eAAe,CAAC,GAAa;QAC3C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAC7C,MAAM,IAAI,KAAK,CACb,uCAAuC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACjG,CAAA;IACH,CAAC;CAkBF"}
|
package/dist/gateway/sse.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A single Server-Sent Event frame, parsed from a `text/event-stream` body.
|
|
3
|
-
*
|
|
4
|
-
* Only the two fields LLM gateways use in practice are surfaced: the optional
|
|
5
|
-
* `event:` name and the (possibly multi-line) `data:` payload. Comment lines
|
|
6
|
-
* (`:`-prefixed) and `id:` / `retry:` fields are consumed and ignored.
|
|
7
|
-
*/
|
|
8
|
-
export interface SseEvent {
|
|
9
|
-
/** The `event:` field, if the frame declared one. */
|
|
10
|
-
event?: string | undefined;
|
|
11
|
-
/** The concatenated `data:` payload (multiple `data:` lines joined by `\n`). */
|
|
12
|
-
data: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Frame a `text/event-stream` response body into {@link SseEvent}s.
|
|
16
|
-
*
|
|
17
|
-
* Standalone and dependency-free so the gateway template ships its own
|
|
18
|
-
* framing — every built-in chat provider streams through a vendor SDK, so
|
|
19
|
-
* there is no shared framer to reuse. Handles `\n` and `\r\n` line endings,
|
|
20
|
-
* multi-line `data:` payloads, and back-pressure-friendly chunk boundaries
|
|
21
|
-
* (an event split across two network reads is buffered until complete).
|
|
22
|
-
*
|
|
23
|
-
* Aborts cleanly: when `signal` fires, the reader is cancelled and iteration
|
|
24
|
-
* ends. A trailing event with no terminating blank line is still yielded once
|
|
25
|
-
* the stream closes.
|
|
26
|
-
*/
|
|
27
|
-
export declare function parseSseStream(body: ReadableStream<Uint8Array>, signal?: AbortSignal): AsyncGenerator<SseEvent>;
|
|
28
|
-
//# sourceMappingURL=sse.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/gateway/sse.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;GAYG;AACH,wBAAuB,cAAc,CACnC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC,CAuC1B"}
|
package/dist/gateway/sse.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Frame a `text/event-stream` response body into {@link SseEvent}s.
|
|
3
|
-
*
|
|
4
|
-
* Standalone and dependency-free so the gateway template ships its own
|
|
5
|
-
* framing — every built-in chat provider streams through a vendor SDK, so
|
|
6
|
-
* there is no shared framer to reuse. Handles `\n` and `\r\n` line endings,
|
|
7
|
-
* multi-line `data:` payloads, and back-pressure-friendly chunk boundaries
|
|
8
|
-
* (an event split across two network reads is buffered until complete).
|
|
9
|
-
*
|
|
10
|
-
* Aborts cleanly: when `signal` fires, the reader is cancelled and iteration
|
|
11
|
-
* ends. A trailing event with no terminating blank line is still yielded once
|
|
12
|
-
* the stream closes.
|
|
13
|
-
*/
|
|
14
|
-
export async function* parseSseStream(body, signal) {
|
|
15
|
-
const reader = body.getReader();
|
|
16
|
-
const decoder = new TextDecoder();
|
|
17
|
-
let buffer = '';
|
|
18
|
-
const onAbort = () => {
|
|
19
|
-
void reader.cancel().catch(() => { });
|
|
20
|
-
};
|
|
21
|
-
signal?.addEventListener('abort', onAbort, { once: true });
|
|
22
|
-
try {
|
|
23
|
-
while (true) {
|
|
24
|
-
if (signal?.aborted)
|
|
25
|
-
return;
|
|
26
|
-
const { done, value } = await reader.read();
|
|
27
|
-
if (done)
|
|
28
|
-
break;
|
|
29
|
-
buffer += decoder.decode(value, { stream: true });
|
|
30
|
-
// Events are separated by a blank line. Normalize CRLF to LF first so a
|
|
31
|
-
// single split handles both endings.
|
|
32
|
-
let sep;
|
|
33
|
-
buffer = buffer.replace(/\r\n/g, '\n');
|
|
34
|
-
while ((sep = buffer.indexOf('\n\n')) !== -1) {
|
|
35
|
-
const raw = buffer.slice(0, sep);
|
|
36
|
-
buffer = buffer.slice(sep + 2);
|
|
37
|
-
const event = parseFrame(raw);
|
|
38
|
-
if (event)
|
|
39
|
-
yield event;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// Flush a final frame that arrived without a trailing blank line.
|
|
43
|
-
const tail = (buffer + decoder.decode()).replace(/\r\n/g, '\n').trim();
|
|
44
|
-
if (tail) {
|
|
45
|
-
const event = parseFrame(tail);
|
|
46
|
-
if (event)
|
|
47
|
-
yield event;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
finally {
|
|
51
|
-
signal?.removeEventListener('abort', onAbort);
|
|
52
|
-
reader.releaseLock();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/** Parse one raw SSE frame (the text between blank-line separators). */
|
|
56
|
-
function parseFrame(raw) {
|
|
57
|
-
let event;
|
|
58
|
-
const dataLines = [];
|
|
59
|
-
for (const line of raw.split('\n')) {
|
|
60
|
-
if (line === '' || line.startsWith(':'))
|
|
61
|
-
continue; // blank or comment
|
|
62
|
-
const colon = line.indexOf(':');
|
|
63
|
-
const field = colon === -1 ? line : line.slice(0, colon);
|
|
64
|
-
// Per spec, a single leading space after the colon is stripped.
|
|
65
|
-
let value = colon === -1 ? '' : line.slice(colon + 1);
|
|
66
|
-
if (value.startsWith(' '))
|
|
67
|
-
value = value.slice(1);
|
|
68
|
-
if (field === 'event')
|
|
69
|
-
event = value;
|
|
70
|
-
else if (field === 'data')
|
|
71
|
-
dataLines.push(value);
|
|
72
|
-
// id / retry / unknown fields ignored
|
|
73
|
-
}
|
|
74
|
-
if (dataLines.length === 0 && event === undefined)
|
|
75
|
-
return null;
|
|
76
|
-
return { ...(event !== undefined ? { event } : {}), data: dataLines.join('\n') };
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=sse.js.map
|
package/dist/gateway/sse.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/gateway/sse.ts"],"names":[],"mappings":"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"}
|