@rudderjs/ai 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +484 -7
- package/boost/guidelines.md +62 -2
- package/boost/skills/ai-tools/SKILL.md +14 -5
- package/dist/agent.d.ts +66 -15
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +529 -58
- package/dist/agent.js.map +1 -1
- package/dist/budget/pricing.d.ts +124 -0
- package/dist/budget/pricing.d.ts.map +1 -0
- package/dist/budget/pricing.js +175 -0
- package/dist/budget/pricing.js.map +1 -0
- package/dist/budget/storage.d.ts +104 -0
- package/dist/budget/storage.d.ts.map +1 -0
- package/dist/budget/storage.js +0 -0
- package/dist/budget/storage.js.map +1 -0
- package/dist/budget/with-budget.d.ts +119 -0
- package/dist/budget/with-budget.d.ts.map +1 -0
- package/dist/budget/with-budget.js +175 -0
- package/dist/budget/with-budget.js.map +1 -0
- package/dist/budget-orm/index.d.ts +96 -0
- package/dist/budget-orm/index.d.ts.map +1 -0
- package/dist/budget-orm/index.js +177 -0
- package/dist/budget-orm/index.js.map +1 -0
- package/dist/commands/ai-eval.d.ts +93 -0
- package/dist/commands/ai-eval.d.ts.map +1 -0
- package/dist/commands/ai-eval.js +378 -0
- package/dist/commands/ai-eval.js.map +1 -0
- package/dist/computer-use/actions.d.ts +214 -0
- package/dist/computer-use/actions.d.ts.map +1 -0
- package/dist/computer-use/actions.js +48 -0
- package/dist/computer-use/actions.js.map +1 -0
- package/dist/computer-use/errors.d.ts +57 -0
- package/dist/computer-use/errors.d.ts.map +1 -0
- package/dist/computer-use/errors.js +76 -0
- package/dist/computer-use/errors.js.map +1 -0
- package/dist/computer-use/index.d.ts +53 -0
- package/dist/computer-use/index.d.ts.map +1 -0
- package/dist/computer-use/index.js +51 -0
- package/dist/computer-use/index.js.map +1 -0
- package/dist/computer-use/playwright.d.ts +76 -0
- package/dist/computer-use/playwright.d.ts.map +1 -0
- package/dist/computer-use/playwright.js +270 -0
- package/dist/computer-use/playwright.js.map +1 -0
- package/dist/computer-use/tool.d.ts +154 -0
- package/dist/computer-use/tool.d.ts.map +1 -0
- package/dist/computer-use/tool.js +210 -0
- package/dist/computer-use/tool.js.map +1 -0
- package/dist/eval/fixtures.d.ts +65 -0
- package/dist/eval/fixtures.d.ts.map +1 -0
- package/dist/eval/fixtures.js +110 -0
- package/dist/eval/fixtures.js.map +1 -0
- package/dist/eval/html-reporter.d.ts +25 -0
- package/dist/eval/html-reporter.d.ts.map +1 -0
- package/dist/eval/html-reporter.js +209 -0
- package/dist/eval/html-reporter.js.map +1 -0
- package/dist/eval/index.d.ts +271 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +510 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/json-reporter.d.ts +43 -0
- package/dist/eval/json-reporter.d.ts.map +1 -0
- package/dist/eval/json-reporter.js +40 -0
- package/dist/eval/json-reporter.js.map +1 -0
- package/dist/fake.d.ts +36 -1
- package/dist/fake.d.ts.map +1 -1
- package/dist/fake.js +49 -2
- package/dist/fake.js.map +1 -1
- package/dist/file-search.d.ts +168 -0
- package/dist/file-search.d.ts.map +1 -0
- package/dist/file-search.js +158 -0
- package/dist/file-search.js.map +1 -0
- package/dist/handoff.d.ts +95 -0
- package/dist/handoff.d.ts.map +1 -0
- package/dist/handoff.js +78 -0
- package/dist/handoff.js.map +1 -0
- package/dist/index.d.ts +29 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp/client-tools.d.ts +39 -0
- package/dist/mcp/client-tools.d.ts.map +1 -0
- package/dist/mcp/client-tools.js +147 -0
- package/dist/mcp/client-tools.js.map +1 -0
- package/dist/mcp/index.d.ts +16 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +15 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server-from-agent.d.ts +24 -0
- package/dist/mcp/server-from-agent.d.ts.map +1 -0
- package/dist/mcp/server-from-agent.js +113 -0
- package/dist/mcp/server-from-agent.js.map +1 -0
- package/dist/mcp/types.d.ts +64 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +6 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/memory-embedding/index.d.ts +121 -0
- package/dist/memory-embedding/index.d.ts.map +1 -0
- package/dist/memory-embedding/index.js +229 -0
- package/dist/memory-embedding/index.js.map +1 -0
- package/dist/memory-extract.d.ts +60 -0
- package/dist/memory-extract.d.ts.map +1 -0
- package/dist/memory-extract.js +163 -0
- package/dist/memory-extract.js.map +1 -0
- package/dist/memory-inject.d.ts +39 -0
- package/dist/memory-inject.d.ts.map +1 -0
- package/dist/memory-inject.js +135 -0
- package/dist/memory-inject.js.map +1 -0
- package/dist/memory-orm/index.d.ts +118 -0
- package/dist/memory-orm/index.d.ts.map +1 -0
- package/dist/memory-orm/index.js +187 -0
- package/dist/memory-orm/index.js.map +1 -0
- package/dist/memory.d.ts +55 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +132 -0
- package/dist/memory.js.map +1 -0
- package/dist/observers.d.ts +22 -0
- package/dist/observers.d.ts.map +1 -1
- package/dist/observers.js.map +1 -1
- package/dist/provider-tools.d.ts +15 -1
- package/dist/provider-tools.d.ts.map +1 -1
- package/dist/provider-tools.js +21 -1
- package/dist/provider-tools.js.map +1 -1
- package/dist/providers/anthropic.d.ts +9 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +66 -11
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/bedrock.d.ts +60 -0
- package/dist/providers/bedrock.d.ts.map +1 -0
- package/dist/providers/bedrock.js +167 -0
- package/dist/providers/bedrock.js.map +1 -0
- package/dist/providers/elevenlabs.d.ts +98 -0
- package/dist/providers/elevenlabs.d.ts.map +1 -0
- package/dist/providers/elevenlabs.js +229 -0
- package/dist/providers/elevenlabs.js.map +1 -0
- package/dist/providers/google.d.ts +83 -1
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js +491 -8
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/openai.d.ts +8 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +215 -5
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter.d.ts +43 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +21 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/voyage.d.ts +91 -0
- package/dist/providers/voyage.d.ts.map +1 -0
- package/dist/providers/voyage.js +166 -0
- package/dist/providers/voyage.js.map +1 -0
- package/dist/queue-job.d.ts +69 -4
- package/dist/queue-job.d.ts.map +1 -1
- package/dist/queue-job.js +114 -11
- package/dist/queue-job.js.map +1 -1
- package/dist/registry.d.ts +3 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +10 -0
- package/dist/registry.js.map +1 -1
- package/dist/server/provider.d.ts.map +1 -1
- package/dist/server/provider.js +38 -1
- package/dist/server/provider.js.map +1 -1
- package/dist/similarity-search.d.ts +163 -0
- package/dist/similarity-search.d.ts.map +1 -0
- package/dist/similarity-search.js +147 -0
- package/dist/similarity-search.js.map +1 -0
- package/dist/sub-agent-run-store.d.ts +40 -3
- package/dist/sub-agent-run-store.d.ts.map +1 -1
- package/dist/sub-agent-run-store.js.map +1 -1
- package/dist/tool.d.ts +59 -0
- package/dist/tool.d.ts.map +1 -1
- package/dist/tool.js +45 -4
- package/dist/tool.js.map +1 -1
- package/dist/types.d.ts +285 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vector-stores/index.d.ts +96 -0
- package/dist/vector-stores/index.d.ts.map +1 -0
- package/dist/vector-stores/index.js +153 -0
- package/dist/vector-stores/index.js.map +1 -0
- package/package.json +43 -4
package/dist/fake.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProviderRequestOptions, ImageGenerationOptions, TextToSpeechOptions, SpeechToTextOptions, RerankingOptions, RerankingResult, FileUploadResult, ToolCall, FinishReason } from './types.js';
|
|
1
|
+
import type { ProviderRequestOptions, ImageGenerationOptions, TextToSpeechOptions, SpeechToTextOptions, RerankingOptions, RerankingResult, FileUploadResult, ToolCall, FinishReason, TokenUsage } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* One scripted provider response in a multi-step agent loop.
|
|
4
4
|
*
|
|
@@ -17,6 +17,12 @@ export interface AiFakeStep {
|
|
|
17
17
|
text?: string;
|
|
18
18
|
toolCalls?: ToolCall[];
|
|
19
19
|
finishReason?: FinishReason;
|
|
20
|
+
/**
|
|
21
|
+
* Token usage to surface on the `'usage'` / `'finish'` chunks. Defaults
|
|
22
|
+
* to all zeros — fine for most tests, but middlewares that depend on
|
|
23
|
+
* realistic usage (e.g. budget enforcement) need this set.
|
|
24
|
+
*/
|
|
25
|
+
usage?: TokenUsage;
|
|
20
26
|
}
|
|
21
27
|
/**
|
|
22
28
|
* Testing fake for @rudderjs/ai.
|
|
@@ -122,6 +128,35 @@ export declare class AiFake {
|
|
|
122
128
|
respondWithRanking(results: RerankingResult['results']): void;
|
|
123
129
|
/** Set the file upload result the fake will return */
|
|
124
130
|
respondWithFileUpload(result: FileUploadResult): void;
|
|
131
|
+
/**
|
|
132
|
+
* Stub a `fileSearch` interaction. The hosted-OpenAI path runs the
|
|
133
|
+
* search server-side and the result lands in the assistant message —
|
|
134
|
+
* no agent-loop tool round-trip — so the simplest fake is a single
|
|
135
|
+
* scripted response carrying the synthesized text.
|
|
136
|
+
*
|
|
137
|
+
* Pass `hits` to auto-format the text or pass `text` to control the
|
|
138
|
+
* exact assistant reply. `usage` flows through to budget middleware.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* fake.respondWithFileSearchResults({ text: 'The policy expires in 2027.' })
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* fake.respondWithFileSearchResults({
|
|
145
|
+
* hits: [
|
|
146
|
+
* { text: 'Policies are reviewed annually.', source: 'policy.pdf', score: 0.92 },
|
|
147
|
+
* { text: 'The renewal date is March 1st.', source: 'renewal.pdf', score: 0.88 },
|
|
148
|
+
* ],
|
|
149
|
+
* })
|
|
150
|
+
*/
|
|
151
|
+
respondWithFileSearchResults(opts: {
|
|
152
|
+
text?: string;
|
|
153
|
+
hits?: Array<{
|
|
154
|
+
text: string;
|
|
155
|
+
source?: string;
|
|
156
|
+
score?: number;
|
|
157
|
+
}>;
|
|
158
|
+
usage?: TokenUsage;
|
|
159
|
+
}): void;
|
|
125
160
|
/** Install the fake — replaces all registered providers with a mock */
|
|
126
161
|
static fake(): AiFake;
|
|
127
162
|
/** Assert at least one prompt was sent, optionally matching a predicate */
|
package/dist/fake.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,sBAAsB,EAMtB,sBAAsB,EAGtB,mBAAmB,EAGnB,mBAAmB,EAGnB,gBAAgB,EAChB,eAAe,EAGf,gBAAgB,EAGhB,QAAQ,EACR,YAAY,
|
|
1
|
+
{"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"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"}
|
package/dist/fake.js
CHANGED
|
@@ -125,6 +125,33 @@ export class AiFake {
|
|
|
125
125
|
respondWithFileUpload(result) {
|
|
126
126
|
this._fileUploadResponse = result;
|
|
127
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Stub a `fileSearch` interaction. The hosted-OpenAI path runs the
|
|
130
|
+
* search server-side and the result lands in the assistant message —
|
|
131
|
+
* no agent-loop tool round-trip — so the simplest fake is a single
|
|
132
|
+
* scripted response carrying the synthesized text.
|
|
133
|
+
*
|
|
134
|
+
* Pass `hits` to auto-format the text or pass `text` to control the
|
|
135
|
+
* exact assistant reply. `usage` flows through to budget middleware.
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* fake.respondWithFileSearchResults({ text: 'The policy expires in 2027.' })
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* fake.respondWithFileSearchResults({
|
|
142
|
+
* hits: [
|
|
143
|
+
* { text: 'Policies are reviewed annually.', source: 'policy.pdf', score: 0.92 },
|
|
144
|
+
* { text: 'The renewal date is March 1st.', source: 'renewal.pdf', score: 0.88 },
|
|
145
|
+
* ],
|
|
146
|
+
* })
|
|
147
|
+
*/
|
|
148
|
+
respondWithFileSearchResults(opts) {
|
|
149
|
+
const text = opts.text ?? formatFileSearchHits(opts.hits ?? []);
|
|
150
|
+
const step = { text };
|
|
151
|
+
if (opts.usage)
|
|
152
|
+
step.usage = opts.usage;
|
|
153
|
+
this.respondWithSequence([step]);
|
|
154
|
+
}
|
|
128
155
|
/** Install the fake — replaces all registered providers with a mock */
|
|
129
156
|
static fake() {
|
|
130
157
|
const fake = new AiFake();
|
|
@@ -145,7 +172,7 @@ export class AiFake {
|
|
|
145
172
|
content: next.text ?? '',
|
|
146
173
|
...(next.toolCalls ? { toolCalls: next.toolCalls } : {}),
|
|
147
174
|
},
|
|
148
|
-
usage: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
|
|
175
|
+
usage: next.usage ?? { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
|
|
149
176
|
finishReason: next.finishReason ?? (next.toolCalls ? 'tool_calls' : 'stop'),
|
|
150
177
|
};
|
|
151
178
|
}
|
|
@@ -174,7 +201,7 @@ export class AiFake {
|
|
|
174
201
|
yield {
|
|
175
202
|
type: 'finish',
|
|
176
203
|
finishReason: next.finishReason ?? (next.toolCalls ? 'tool_calls' : 'stop'),
|
|
177
|
-
usage: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
|
|
204
|
+
usage: next.usage ?? { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
|
|
178
205
|
};
|
|
179
206
|
return;
|
|
180
207
|
}
|
|
@@ -378,4 +405,24 @@ export class AiFake {
|
|
|
378
405
|
AiRegistry.reset();
|
|
379
406
|
}
|
|
380
407
|
}
|
|
408
|
+
/**
|
|
409
|
+
* Render canned file-search hits into a prose assistant reply for
|
|
410
|
+
* {@link AiFake.respondWithFileSearchResults}. Keeps tests readable
|
|
411
|
+
* without each app having to ad-hoc its own formatter.
|
|
412
|
+
*/
|
|
413
|
+
function formatFileSearchHits(hits) {
|
|
414
|
+
if (hits.length === 0)
|
|
415
|
+
return 'No relevant documents found.';
|
|
416
|
+
return hits
|
|
417
|
+
.map(h => {
|
|
418
|
+
const parts = [];
|
|
419
|
+
if (h.score !== undefined)
|
|
420
|
+
parts.push(`(${h.score.toFixed(2)})`);
|
|
421
|
+
parts.push(h.text);
|
|
422
|
+
if (h.source)
|
|
423
|
+
parts.push(`— ${h.source}`);
|
|
424
|
+
return parts.join(' ');
|
|
425
|
+
})
|
|
426
|
+
.join('\n');
|
|
427
|
+
}
|
|
381
428
|
//# sourceMappingURL=fake.js.map
|
package/dist/fake.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake.js","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fake.js","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAyD1C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,MAAM;IACA,KAAK,GAA6B,EAAE,CAAA;IACpC,UAAU,GAA6B,EAAE,CAAA;IACzC,QAAQ,GAA0B,EAAE,CAAA;IACpC,QAAQ,GAA0B,EAAE,CAAA;IACpC,UAAU,GAAuD,EAAE,CAAA;IACnE,WAAW,GAAuB,EAAE,CAAA;IACpC,SAAS,GAA6C,EAAE,CAAA;IACjE,SAAS,GAAG,eAAe,CAAA;IAC3B,SAAS,GAAiB,EAAE,CAAA;IACnB,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAA;IAC7C,aAAa,GAAG,KAAK,CAAA;IACrB,cAAc,GAAG,kBAAkB,CAAA,CAAE,yBAAyB;IAC9D,YAAY,GAAW,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAChD,YAAY,GAAG,oBAAoB,CAAA;IACnC,cAAc,GAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAC9C,eAAe,GAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAClD,mBAAmB,GAAqB,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IAEtG,iDAAiD;IACjD,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,mBAAmB;QACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,KAAmB;QACrC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IACvB,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,SAAiB,EAAE,KAAY;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,gDAAgD;IAChD,gBAAgB,CAAC,MAAc;QAC7B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAA;IAC9B,CAAC;IAED,oDAAoD;IACpD,gBAAgB,CAAC,KAAa;QAC5B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;IAC3B,CAAC;IAED,0DAA0D;IAC1D,wBAAwB,CAAC,IAAY;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC1B,CAAC;IAED,8CAA8C;IAC9C,oBAAoB,CAAC,UAAsB;QACzC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAA;IAClC,CAAC;IAED,qDAAqD;IACrD,kBAAkB,CAAC,OAAmC;QACpD,IAAI,CAAC,eAAe,GAAG,EAAE,OAAO,EAAE,CAAA;IACpC,CAAC;IAED,sDAAsD;IACtD,qBAAqB,CAAC,MAAwB;QAC5C,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAA;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,4BAA4B,CAAC,IAI5B;QACC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAC/D,MAAM,IAAI,GAAe,EAAE,IAAI,EAAE,CAAA;QACjC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACvC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,IAAI;QACT,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAA;QAEzB,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAS,EAAE,CAAC,IAAI,KAAK,CACxD,4DAA4D,SAAS,IAAI;YACzE,8EAA8E,CAC/E,CAAA;QAED,MAAM,OAAO,GAAoB;YAC/B,KAAK,CAAC,QAAQ,CAAC,IAA4B;gBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;gBACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACrB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAC7C,IAAI,OAAO;oBAAE,MAAM,OAAO,CAAA;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;gBACtC,IAAI,IAAI,EAAE,CAAC;oBACT,OAAO;wBACL,OAAO,EAAE;4BACP,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;4BACxB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACzD;wBACD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;wBAC7E,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;qBAC5E,CAAA;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa;oBAAE,MAAM,UAAU,CAAC,SAAS,CAAC,CAAA;gBACnD,OAAO;oBACL,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;oBACvD,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;oBAC/D,YAAY,EAAE,MAAM;iBACrB,CAAA;YACH,CAAC;YACD,KAAK,CAAC,CAAC,MAAM,CAAC,IAA4B;gBACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;gBACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACrB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAC7C,IAAI,OAAO;oBAAE,MAAM,OAAO,CAAA;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;gBACtC,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,IAAI,CAAC,IAAI;wBAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;oBAC5D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBACnB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS;4BAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;oBAC5E,CAAC;oBACD,MAAM;wBACJ,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;wBAC3E,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;qBAC9E,CAAA;oBACD,OAAM;gBACR,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa;oBAAE,MAAM,UAAU,CAAC,SAAS,CAAC,CAAA;gBACnD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAA;gBAClD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAA;YACjH,CAAC;SACF,CAAA;QAED,MAAM,YAAY,GAA2B;YAC3C,KAAK,CAAC,QAAQ,CAAC,IAA4B;gBACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC1B,OAAO;oBACL,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;oBACzC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,YAAY;iBAClC,CAAA;YACH,CAAC;SACF,CAAA;QAED,MAAM,UAAU,GAAwB;YACtC,KAAK,CAAC,QAAQ,CAAC,IAAyB;gBACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACxB,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,YAAY;oBACxB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;oBAC5B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,UAAU;iBAChC,CAAA;YACH,CAAC;SACF,CAAA;QAED,MAAM,UAAU,GAAwB;YACtC,KAAK,CAAC,UAAU,CAAC,IAAyB;gBACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACxB,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,YAAY;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,UAAU;iBAChC,CAAA;YACH,CAAC;SACF,CAAA;QAED,MAAM,gBAAgB,GAAqB;YACzC,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,KAAa;gBACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBACtC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;gBACrD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC,CAAA;gBAC7F,OAAO;oBACL,UAAU;oBACV,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;iBAC3C,CAAA;YACH,CAAC;SACF,CAAA;QAED,MAAM,gBAAgB,GAAqB;YACzC,KAAK,CAAC,MAAM,CAAC,IAAsB;gBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC3B,OAAO,IAAI,CAAC,eAAe,CAAA;YAC7B,CAAC;SACF,CAAA;QAED,MAAM,WAAW,GAAgB;YAC/B,KAAK,CAAC,MAAM,CAAC,IAAuB;gBAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;gBACrD,OAAO,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAA;YACvH,CAAC;YACD,KAAK,CAAC,IAAI;gBACR,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;gBACjD,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAA;YAC9C,CAAC;YACD,KAAK,CAAC,MAAM,CAAC,MAAc;gBACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YACzD,CAAC;YACD,KAAK,CAAC,QAAQ,CAAC,MAAc;gBAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;gBACzD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,0BAA0B,EAAE,CAAA;YACpF,CAAC;SACF,CAAA;QAED,MAAM,OAAO,GAAoB;YAC/B,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO;YACrB,eAAe,EAAE,GAAG,EAAE,CAAC,gBAAgB;YACvC,WAAW,EAAE,GAAG,EAAE,CAAC,YAAY;YAC/B,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU;YAC3B,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU;YAC3B,eAAe,EAAE,GAAG,EAAE,CAAC,gBAAgB;YACvC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW;SAC/B,CAAA;QAED,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC5B,UAAU,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2EAA2E;IAC3E,cAAc,CAAC,SAAsC;QACnD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;QAC/G,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAChC,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;gBACvD,IAAI,CAAC,OAAO;oBAAE,OAAO,KAAK,CAAA;gBAC1B,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACnK,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;YACxB,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QAC/E,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,qBAAqB;QACnB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,KAAK,CAAC,MAAM,aAAa,CAAC,CAAA;QAC3F,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,oBAAoB,CAAC,SAAuC;QAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;QAC9H,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;YAC5D,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,oBAAoB,CAAC,SAAqC;QACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;QAC5H,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YACxD,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,iBAAiB,CAAC,SAAkD;QAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;QACzH,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;YACnD,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QACtF,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IAED,8CAA8C;IAC9C,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,iCAAiC;IACjC,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAED,iCAAiC;IACjC,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAED,6CAA6C;IAC7C,cAAc,CAAC,SAAiD;QAC9D,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;QACvH,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YAC3D,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QAClF,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,cAAc,CAAC,SAA+C;QAC5D,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;QACxH,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;YACtD,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QAClF,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,uCAAuC;IACvC,cAAc;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;IAC9B,CAAC;IAED,+CAA+C;IAC/C,kBAAkB,CAAC,SAAyC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAA;QACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;QACjH,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAE,CAAC,CAAC,IAA0B,CAAC,QAAQ,CAAC,CAAC,CAAA;YAClF,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;QACpF,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC;IAED,uEAAuE;IACvE,OAAO;QACL,UAAU,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAC3B,IAA8D;IAE9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,8BAA8B,CAAA;IAC5D,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAChE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAClB,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,168 @@
|
|
|
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 type { SimilaritySearchOptions } from './similarity-search.js';
|
|
50
|
+
import type { Tool, ToolDefinitionOptions, ToolDefinitionSchema } from './types.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 declare const FILE_SEARCH_MARKER: unique symbol;
|
|
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 declare const FILE_SEARCH_TOOL_NAME = "file_search";
|
|
63
|
+
/** OpenAI vector-store metadata filter, typed form. */
|
|
64
|
+
export type FileSearchFilter = {
|
|
65
|
+
type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte';
|
|
66
|
+
key: string;
|
|
67
|
+
value: string | number | boolean;
|
|
68
|
+
} | {
|
|
69
|
+
type: 'and' | 'or';
|
|
70
|
+
filters: FileSearchFilter[];
|
|
71
|
+
};
|
|
72
|
+
/** Sugar shape for `where` — `{ key: value }` pairs lowered to a typed `and` of `eq` filters. */
|
|
73
|
+
export type FileSearchWhereSugar = Record<string, string | number | boolean>;
|
|
74
|
+
/**
|
|
75
|
+
* Local pgvector fallback configuration (#B8 Phase 3). When set, the tool
|
|
76
|
+
* gains an `execute` that delegates to {@link similaritySearch} against
|
|
77
|
+
* the supplied Model. Forwards every {@link SimilaritySearchOptions} field
|
|
78
|
+
* except `name` / `description` (those flow from the outer `fileSearch`
|
|
79
|
+
* call so the agent prompt stays identical across providers).
|
|
80
|
+
*/
|
|
81
|
+
export type FileSearchFallback<TInstance = unknown> = Omit<SimilaritySearchOptions<TInstance>, 'name' | 'description'>;
|
|
82
|
+
export interface FileSearchOptions<TInstance = unknown> {
|
|
83
|
+
/**
|
|
84
|
+
* Vector-store IDs the model should search. At least one required.
|
|
85
|
+
* Mixing providers (e.g. an OpenAI `vs_...` id with a Gemini cached-
|
|
86
|
+
* content id) is not supported in v1 — every id must come from the
|
|
87
|
+
* agent's configured provider.
|
|
88
|
+
*/
|
|
89
|
+
stores: string[];
|
|
90
|
+
/**
|
|
91
|
+
* Metadata filter applied server-side. Accepts either the sugar
|
|
92
|
+
* `{ key: value }` form (lowered to an `and` of `eq` filters) or the
|
|
93
|
+
* typed {@link FileSearchFilter} shape directly.
|
|
94
|
+
*/
|
|
95
|
+
where?: FileSearchWhereSugar | FileSearchFilter;
|
|
96
|
+
/** Maximum number of result chunks to return. Provider default applies when unset. */
|
|
97
|
+
maxResults?: number;
|
|
98
|
+
/** Override the tool name. Defaults to {@link FILE_SEARCH_TOOL_NAME}. */
|
|
99
|
+
name?: string;
|
|
100
|
+
/** Override the tool description shown to the model. Defaults to a generic phrasing. */
|
|
101
|
+
description?: string;
|
|
102
|
+
/**
|
|
103
|
+
* Local pgvector fallback (#B8 Phase 3). When set, the returned tool gains
|
|
104
|
+
* an `execute` that delegates to `similaritySearch` for providers that
|
|
105
|
+
* don't recognize the `'file-search'` `providerHint`.
|
|
106
|
+
*
|
|
107
|
+
* The cascade is automatic. On OpenAI the adapter emits the native
|
|
108
|
+
* `file_search` block — the search runs server-side, the model never
|
|
109
|
+
* invokes the function-call tool, and `execute` is dead weight. On any
|
|
110
|
+
* other provider (Anthropic, Gemini today, others) the tool serializes
|
|
111
|
+
* as a regular function-call schema, the model calls it, and `execute`
|
|
112
|
+
* delegates to `similaritySearch` against the local pgvector model.
|
|
113
|
+
*
|
|
114
|
+
* Same agent prompt across hosted and self-hosted RAG — ops can swap
|
|
115
|
+
* deployment targets without retraining.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* fileSearch({
|
|
120
|
+
* stores: [vs_id],
|
|
121
|
+
* fallback: {
|
|
122
|
+
* model: Document,
|
|
123
|
+
* column: 'embedding',
|
|
124
|
+
* embedWith: 'openai/text-embedding-3-small',
|
|
125
|
+
* },
|
|
126
|
+
* })
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
fallback?: FileSearchFallback<TInstance>;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* A `fileSearch` tool. Implements {@link Tool}; carries
|
|
133
|
+
* {@link FILE_SEARCH_MARKER} for typeguarding.
|
|
134
|
+
*
|
|
135
|
+
* `execute` is absent on the hosted-only path (no `fallback` opt) — the
|
|
136
|
+
* provider runs the search natively and the model gets results back
|
|
137
|
+
* inline. With a `fallback` opt configured (#B8 Phase 3), `execute` is
|
|
138
|
+
* present and delegates to `similaritySearch` so non-native providers
|
|
139
|
+
* (Anthropic, Gemini today, others) get a working RAG path against a
|
|
140
|
+
* local pgvector model.
|
|
141
|
+
*/
|
|
142
|
+
export interface FileSearchTool extends Tool<{
|
|
143
|
+
query: string;
|
|
144
|
+
}, unknown> {
|
|
145
|
+
readonly [FILE_SEARCH_MARKER]: true;
|
|
146
|
+
readonly definition: ToolDefinitionOptions;
|
|
147
|
+
toSchema(): ToolDefinitionSchema;
|
|
148
|
+
}
|
|
149
|
+
/** Build the agent tool. See module JSDoc for usage. */
|
|
150
|
+
export declare function fileSearch<TInstance = unknown>(opts: FileSearchOptions<TInstance>): FileSearchTool;
|
|
151
|
+
/**
|
|
152
|
+
* Structural typeguard. Mirrors `isComputerUseTool` / `isHandoffTool` —
|
|
153
|
+
* tools are plain objects tagged with `Symbol.for(...)` markers so the
|
|
154
|
+
* loop and adapters can detect them without coupling to a class.
|
|
155
|
+
*/
|
|
156
|
+
export declare function isFileSearchTool(t: unknown): t is FileSearchTool;
|
|
157
|
+
/**
|
|
158
|
+
* Lower the user-friendly `where` shape to OpenAI's typed filter object.
|
|
159
|
+
*
|
|
160
|
+
* - `{ author: 'Alice', year: 2026 }` → `{ type: 'and', filters: [eq, eq] }`
|
|
161
|
+
* - `{ type: 'eq' | ... }` → pass-through
|
|
162
|
+
* - `{ type: 'and' | 'or', filters }` → pass-through
|
|
163
|
+
*
|
|
164
|
+
* A single-key sugar object short-circuits to the bare `eq` (no `and`
|
|
165
|
+
* wrapper), matching OpenAI's recommended shape.
|
|
166
|
+
*/
|
|
167
|
+
export declare function normalizeWhere(where: FileSearchWhereSugar | FileSearchFilter): FileSearchFilter;
|
|
168
|
+
//# sourceMappingURL=file-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-search.d.ts","sourceRoot":"","sources":["../src/file-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAKH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EAAgB,IAAI,EAAE,qBAAqB,EAAE,oBAAoB,EAAiB,MAAM,YAAY,CAAA;AAEhH;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,MAA8C,CAAA;AAEtF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,gBAAgB,CAAA;AAMlD,uDAAuD;AACvD,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,GAClG;IAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAA;AAEvD,iGAAiG;AACjG,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAE5E;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,CAAC,SAAS,GAAG,OAAO,IAChD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,CAAA;AAElE,MAAM,WAAW,iBAAiB,CAAC,SAAS,GAAG,OAAO;IACpD;;;;;OAKG;IACH,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,oBAAoB,GAAG,gBAAgB,CAAA;IAC/C,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAA;CACzC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,CAAC;IACtE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAA;IACnC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAA;IAC1C,QAAQ,IAAI,oBAAoB,CAAA;CACjC;AAED,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,SAAS,GAAG,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,cAAc,CA4DlG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,cAAc,CAIhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,gBAAgB,CAS/F"}
|
|
@@ -0,0 +1,158 @@
|
|
|
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('[RudderJS 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('[RudderJS 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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-search.js","sourceRoot":"","sources":["../src/file-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;AAEtF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAElD,MAAM,mBAAmB,GACvB,+EAA+E;IAC/E,4EAA4E,CAAA;AAuF9E,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAsB,IAAkC;IAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,8EAA8E;YAC9E,kEAAkE,CACnE,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAU,IAAI,CAAC,IAAI,IAAW,qBAAqB,CAAA;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,mBAAmB,CAAA;IAE3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEjF,qEAAqE;IACrE,+DAA+D;IAC/D,MAAM,YAAY,GAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;IACzF,IAAI,OAAO;QAAgB,YAAY,CAAC,SAAS,CAAC,GAAW,OAAO,CAAA;IACpE,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAA;IAEpF,MAAM,UAAU,GAA0B;QACxC,IAAI;QACJ,WAAW;QACX,kEAAkE;QAClE,kEAAkE;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAChF,YAAY;KACb,CAAA;IAED,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,IAAI,OAA8E,CAAA;IAClF,IAAI,aAA2E,CAAA;IAC/E,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,gBAAgB,CAAY;YACxC,GAAG,IAAI,CAAC,QAAQ;YAChB,IAAI;YACJ,WAAW;SACZ,CAAC,CAAA;QACF,OAAO,GAAS,KAAK,CAAC,OAAmE,CAAA;QACzF,aAAa,GAAG,KAAK,CAAC,aAA4E,CAAA;IACpG,CAAC;IAED,MAAM,IAAI,GAAmB;QAC3B,CAAC,kBAAkB,CAAC,EAAE,IAAI;QAC1B,UAAU;QACV,GAAG,CAAC,OAAO,CAAO,CAAC,CAAC,EAAE,OAAO,EAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,QAAQ;YACN,MAAM,MAAM,GAAyB;gBACnC,IAAI;gBACJ,WAAW;gBACX,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;gBAC9F,YAAY;aACb,CAAA;YACD,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAA;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,MAAM,GAAI,CAAsC,CAAC,kBAAkB,CAAC,CAAA;IAC1E,OAAO,MAAM,KAAK,IAAI,CAAA;AACxB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,KAA8C;IAC3E,IAAI,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;IACvF,CAAC;IACD,MAAM,GAAG,GAAuB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAC3F,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAA;AACnE,CAAC;AAED,SAAS,aAAa,CAAC,CAA0C;IAC/D,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,CAAC,GAAI,CAAwB,CAAC,IAAI,CAAA;IACxC,OAAO,OAAO,CAAC,KAAK,QAAQ;WACvB,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;AACxH,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolDefinitionOptions, ToolDefinitionSchema } from './types.js';
|
|
3
|
+
import type { Agent } from './agent.js';
|
|
4
|
+
/**
|
|
5
|
+
* Symbol-tagged marker identifying a handoff tool. Looked up via
|
|
6
|
+
* `Symbol.for(...)` so cross-bundle / cross-realm checks succeed even when
|
|
7
|
+
* `@rudderjs/ai` is loaded twice (rare, but possible in monorepo + linked
|
|
8
|
+
* setups).
|
|
9
|
+
*/
|
|
10
|
+
export declare const HANDOFF_MARKER: unique symbol;
|
|
11
|
+
/**
|
|
12
|
+
* Internal spec attached to a handoff tool. The agent loop reads this when
|
|
13
|
+
* it sees a tool call that lands on a `HandoffTool` — it does NOT execute
|
|
14
|
+
* the tool's body (there isn't one). Instead it short-circuits the loop,
|
|
15
|
+
* synthesizes a tool result, and pivots control to a new instance of
|
|
16
|
+
* `AgentClass` for the rest of the conversation.
|
|
17
|
+
*/
|
|
18
|
+
export interface HandoffSpec {
|
|
19
|
+
readonly AgentClass: new (...args: unknown[]) => Agent;
|
|
20
|
+
readonly name: string;
|
|
21
|
+
readonly description: string;
|
|
22
|
+
readonly inputSchema: z.ZodType;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A tool returned by {@link handoff}. The loop recognizes it via the
|
|
26
|
+
* `HANDOFF_MARKER` symbol property and treats it as a control-transfer,
|
|
27
|
+
* not a normal server tool. Its `execute` is intentionally absent.
|
|
28
|
+
*/
|
|
29
|
+
export interface HandoffTool {
|
|
30
|
+
readonly [HANDOFF_MARKER]: true;
|
|
31
|
+
readonly __handoffSpec: HandoffSpec;
|
|
32
|
+
readonly definition: ToolDefinitionOptions;
|
|
33
|
+
readonly execute?: undefined;
|
|
34
|
+
toSchema(): ToolDefinitionSchema;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Options for {@link handoff}. All fields optional — by default, a handoff
|
|
38
|
+
* tool is named `handoffTo${AgentClass.name}` and accepts a single
|
|
39
|
+
* `message: string` argument that becomes the transition prompt seen by
|
|
40
|
+
* the new agent as its first user message.
|
|
41
|
+
*/
|
|
42
|
+
export interface HandoffOptions<TInput extends z.ZodType = z.ZodType> {
|
|
43
|
+
/** Override the tool name. Default: `handoffTo${AgentClass.name}`. */
|
|
44
|
+
name?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Trigger guidance — a short phrase appended to the description so the
|
|
47
|
+
* model knows when to pick this handoff. Example: `'pricing or sales'`
|
|
48
|
+
* → "Hand off the conversation to SalesAgent for pricing or sales."
|
|
49
|
+
*/
|
|
50
|
+
when?: string;
|
|
51
|
+
/** Override the entire description. If set, takes precedence over `when`. */
|
|
52
|
+
description?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Zod schema for the handoff payload. Defaults to
|
|
55
|
+
* `z.object({ message: z.string() })` — the parent's model writes a
|
|
56
|
+
* transition prompt that becomes the child's first user message.
|
|
57
|
+
*
|
|
58
|
+
* Custom schemas are supported but the loop reads `args.message` (string)
|
|
59
|
+
* as the transition prompt. Schemas without a `message` string field will
|
|
60
|
+
* pass an empty transition message; the carried conversation history is
|
|
61
|
+
* still surfaced to the child.
|
|
62
|
+
*/
|
|
63
|
+
inputSchema?: TInput;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Define a handoff tool — a control-transfer tool the parent agent's model
|
|
67
|
+
* can call to pivot the conversation to another agent. After the model
|
|
68
|
+
* calls it, the parent's loop ends and the child agent runs from the same
|
|
69
|
+
* message history with its own instructions, tools, and model.
|
|
70
|
+
*
|
|
71
|
+
* Distinct from {@link Agent.asTool} (which is call-and-return: the parent
|
|
72
|
+
* resumes after the child finishes and incorporates the child's text as a
|
|
73
|
+
* tool result). Handoffs do not return — the child owns the rest of the
|
|
74
|
+
* conversation.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* class TriageAgent extends Agent {
|
|
79
|
+
* tools() {
|
|
80
|
+
* return [
|
|
81
|
+
* handoff(SalesAgent, { when: 'pricing or sales questions' }),
|
|
82
|
+
* handoff(SupportAgent, { when: 'bug reports or technical issues' }),
|
|
83
|
+
* ]
|
|
84
|
+
* }
|
|
85
|
+
* }
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare function handoff(AgentClass: new (...args: never[]) => Agent, opts?: HandoffOptions): HandoffTool;
|
|
89
|
+
/**
|
|
90
|
+
* Structural typeguard. Used by the agent loop to detect handoff tools
|
|
91
|
+
* without coupling to a class hierarchy — handoff tools are plain objects
|
|
92
|
+
* tagged with the {@link HANDOFF_MARKER} symbol.
|
|
93
|
+
*/
|
|
94
|
+
export declare function isHandoffTool(t: unknown): t is HandoffTool;
|
|
95
|
+
//# sourceMappingURL=handoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,MAA0C,CAAA;AAE9E;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,KAAK,CAAA;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAA;IACnC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAA;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,QAAQ,IAAI,oBAAoB,CAAA;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IAClE,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAQD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,EAC3C,IAAI,CAAC,EAAE,cAAc,GACpB,WAAW,CA0Bb;AAOD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAI1D"}
|