@rudderjs/ai 1.6.1 → 1.6.3
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/dist/agent.d.ts +44 -13
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +19 -819
- package/dist/agent.js.map +1 -1
- package/dist/handoffs-driver.d.ts +58 -0
- package/dist/handoffs-driver.d.ts.map +1 -0
- package/dist/handoffs-driver.js +103 -0
- package/dist/handoffs-driver.js.map +1 -0
- package/dist/resume-approval.d.ts +30 -0
- package/dist/resume-approval.d.ts.map +1 -0
- package/dist/resume-approval.js +98 -0
- package/dist/resume-approval.js.map +1 -0
- package/dist/server/provider.d.ts.map +1 -1
- package/dist/server/provider.js +96 -99
- package/dist/server/provider.js.map +1 -1
- package/dist/tool-execution.d.ts +16 -0
- package/dist/tool-execution.d.ts.map +1 -0
- package/dist/tool-execution.js +498 -0
- package/dist/tool-execution.js.map +1 -0
- package/dist/tool-helpers.d.ts +77 -0
- package/dist/tool-helpers.d.ts.map +1 -0
- package/dist/tool-helpers.js +117 -0
- package/dist/tool-helpers.js.map +1 -0
- package/package.json +9 -6
package/dist/server/provider.js
CHANGED
|
@@ -2,6 +2,94 @@ import { ServiceProvider, config } from '@rudderjs/core';
|
|
|
2
2
|
import { AiRegistry } from '../registry.js';
|
|
3
3
|
import { setConversationStore, setUserMemory } from '../agent.js';
|
|
4
4
|
import { GoogleCacheRegistry } from '../providers/google-cache-registry.js';
|
|
5
|
+
/**
|
|
6
|
+
* Throw with a clear pointer to the offending config key when an apiKey-
|
|
7
|
+
* requiring provider has no key set. The config type lets `apiKey` be
|
|
8
|
+
* undefined (some drivers — ollama, bedrock — don't need one), so this is
|
|
9
|
+
* the bootstrap-time enforcement point for the drivers that do.
|
|
10
|
+
*/
|
|
11
|
+
function requireKey(name, cfg) {
|
|
12
|
+
if (!cfg.apiKey) {
|
|
13
|
+
throw new Error(`[RudderJS AI] config('ai').providers.${name} is missing apiKey (driver "${cfg.driver ?? name}").`);
|
|
14
|
+
}
|
|
15
|
+
return cfg.apiKey;
|
|
16
|
+
}
|
|
17
|
+
const DRIVERS = {
|
|
18
|
+
anthropic: async (name, cfg) => {
|
|
19
|
+
const { AnthropicProvider } = await import('../providers/anthropic.js');
|
|
20
|
+
return new AnthropicProvider({ apiKey: requireKey(name, cfg), baseUrl: cfg.baseUrl });
|
|
21
|
+
},
|
|
22
|
+
openai: async (name, cfg) => {
|
|
23
|
+
const { OpenAIProvider } = await import('../providers/openai.js');
|
|
24
|
+
return new OpenAIProvider({
|
|
25
|
+
apiKey: requireKey(name, cfg),
|
|
26
|
+
baseUrl: cfg.baseUrl,
|
|
27
|
+
organization: cfg['organization'],
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
google: async (name, cfg, { googleCacheRegistry }) => {
|
|
31
|
+
const { GoogleProvider } = await import('../providers/google.js');
|
|
32
|
+
return new GoogleProvider({ apiKey: requireKey(name, cfg) }, googleCacheRegistry);
|
|
33
|
+
},
|
|
34
|
+
ollama: async (_name, cfg) => {
|
|
35
|
+
const { OllamaProvider } = await import('../providers/ollama.js');
|
|
36
|
+
return new OllamaProvider({ baseUrl: cfg.baseUrl });
|
|
37
|
+
},
|
|
38
|
+
deepseek: async (name, cfg) => {
|
|
39
|
+
const { DeepSeekProvider } = await import('../providers/deepseek.js');
|
|
40
|
+
return new DeepSeekProvider({ apiKey: requireKey(name, cfg), baseUrl: cfg.baseUrl });
|
|
41
|
+
},
|
|
42
|
+
xai: async (name, cfg) => {
|
|
43
|
+
const { XaiProvider } = await import('../providers/xai.js');
|
|
44
|
+
return new XaiProvider({ apiKey: requireKey(name, cfg), baseUrl: cfg.baseUrl });
|
|
45
|
+
},
|
|
46
|
+
groq: async (name, cfg) => {
|
|
47
|
+
const { GroqProvider } = await import('../providers/groq.js');
|
|
48
|
+
return new GroqProvider({ apiKey: requireKey(name, cfg), baseUrl: cfg.baseUrl });
|
|
49
|
+
},
|
|
50
|
+
mistral: async (name, cfg) => {
|
|
51
|
+
const { MistralProvider } = await import('../providers/mistral.js');
|
|
52
|
+
return new MistralProvider({ apiKey: requireKey(name, cfg), baseUrl: cfg.baseUrl });
|
|
53
|
+
},
|
|
54
|
+
azure: async (name, cfg) => {
|
|
55
|
+
const { AzureOpenAIProvider } = await import('../providers/azure.js');
|
|
56
|
+
if (!cfg.baseUrl) {
|
|
57
|
+
throw new Error(`[RudderJS AI] config('ai').providers.${name} is missing baseUrl (driver "azure" requires it).`);
|
|
58
|
+
}
|
|
59
|
+
return new AzureOpenAIProvider({ apiKey: requireKey(name, cfg), baseUrl: cfg.baseUrl });
|
|
60
|
+
},
|
|
61
|
+
openrouter: async (name, cfg) => {
|
|
62
|
+
const { OpenRouterProvider } = await import('../providers/openrouter.js');
|
|
63
|
+
return new OpenRouterProvider({
|
|
64
|
+
apiKey: requireKey(name, cfg),
|
|
65
|
+
baseUrl: cfg.baseUrl,
|
|
66
|
+
siteUrl: cfg['siteUrl'],
|
|
67
|
+
siteName: cfg['siteName'],
|
|
68
|
+
});
|
|
69
|
+
},
|
|
70
|
+
bedrock: async (_name, cfg) => {
|
|
71
|
+
const { BedrockProvider } = await import('../providers/bedrock.js');
|
|
72
|
+
const region = cfg['region'] ?? 'us-east-1';
|
|
73
|
+
const credentials = cfg['credentials'];
|
|
74
|
+
return new BedrockProvider(credentials ? { region, credentials } : { region });
|
|
75
|
+
},
|
|
76
|
+
elevenlabs: async (name, cfg) => {
|
|
77
|
+
const { ElevenLabsProvider } = await import('../providers/elevenlabs.js');
|
|
78
|
+
return new ElevenLabsProvider({
|
|
79
|
+
apiKey: requireKey(name, cfg),
|
|
80
|
+
...(cfg.baseUrl ? { baseUrl: cfg.baseUrl } : {}),
|
|
81
|
+
...(cfg['defaultTtsModelId'] ? { defaultTtsModelId: cfg['defaultTtsModelId'] } : {}),
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
voyage: async (name, cfg) => {
|
|
85
|
+
const { VoyageProvider } = await import('../providers/voyage.js');
|
|
86
|
+
return new VoyageProvider({
|
|
87
|
+
apiKey: requireKey(name, cfg),
|
|
88
|
+
...(cfg.baseUrl ? { baseUrl: cfg.baseUrl } : {}),
|
|
89
|
+
...(cfg['defaultInputType'] ? { defaultInputType: cfg['defaultInputType'] } : {}),
|
|
90
|
+
});
|
|
91
|
+
},
|
|
92
|
+
};
|
|
5
93
|
/**
|
|
6
94
|
* AI ServiceProvider — reads config from `config('ai')`.
|
|
7
95
|
*
|
|
@@ -17,114 +105,23 @@ export class AiProvider extends ServiceProvider {
|
|
|
17
105
|
const googleCacheRegistry = this.buildGoogleCacheRegistry();
|
|
18
106
|
for (const [name, providerConfig] of Object.entries(cfg.providers)) {
|
|
19
107
|
const driver = providerConfig.driver ?? name;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
baseUrl: providerConfig.baseUrl,
|
|
25
|
-
}));
|
|
26
|
-
}
|
|
27
|
-
else if (driver === 'openai') {
|
|
28
|
-
const { OpenAIProvider } = await import('../providers/openai.js');
|
|
29
|
-
AiRegistry.register(new OpenAIProvider({
|
|
30
|
-
apiKey: providerConfig.apiKey,
|
|
31
|
-
baseUrl: providerConfig.baseUrl,
|
|
32
|
-
organization: providerConfig['organization'],
|
|
33
|
-
}));
|
|
34
|
-
}
|
|
35
|
-
else if (driver === 'google') {
|
|
36
|
-
const { GoogleProvider } = await import('../providers/google.js');
|
|
37
|
-
AiRegistry.register(new GoogleProvider({
|
|
38
|
-
apiKey: providerConfig.apiKey,
|
|
39
|
-
}, googleCacheRegistry));
|
|
40
|
-
}
|
|
41
|
-
else if (driver === 'ollama') {
|
|
42
|
-
const { OllamaProvider } = await import('../providers/ollama.js');
|
|
43
|
-
AiRegistry.register(new OllamaProvider({
|
|
44
|
-
baseUrl: providerConfig.baseUrl,
|
|
45
|
-
}));
|
|
46
|
-
}
|
|
47
|
-
else if (driver === 'deepseek') {
|
|
48
|
-
const { DeepSeekProvider } = await import('../providers/deepseek.js');
|
|
49
|
-
AiRegistry.register(new DeepSeekProvider({
|
|
50
|
-
apiKey: providerConfig.apiKey,
|
|
51
|
-
baseUrl: providerConfig.baseUrl,
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
else if (driver === 'xai') {
|
|
55
|
-
const { XaiProvider } = await import('../providers/xai.js');
|
|
56
|
-
AiRegistry.register(new XaiProvider({
|
|
57
|
-
apiKey: providerConfig.apiKey,
|
|
58
|
-
baseUrl: providerConfig.baseUrl,
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
else if (driver === 'groq') {
|
|
62
|
-
const { GroqProvider } = await import('../providers/groq.js');
|
|
63
|
-
AiRegistry.register(new GroqProvider({
|
|
64
|
-
apiKey: providerConfig.apiKey,
|
|
65
|
-
baseUrl: providerConfig.baseUrl,
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
else if (driver === 'mistral') {
|
|
69
|
-
const { MistralProvider } = await import('../providers/mistral.js');
|
|
70
|
-
AiRegistry.register(new MistralProvider({
|
|
71
|
-
apiKey: providerConfig.apiKey,
|
|
72
|
-
baseUrl: providerConfig.baseUrl,
|
|
73
|
-
}));
|
|
74
|
-
}
|
|
75
|
-
else if (driver === 'azure') {
|
|
76
|
-
const { AzureOpenAIProvider } = await import('../providers/azure.js');
|
|
77
|
-
AiRegistry.register(new AzureOpenAIProvider({
|
|
78
|
-
apiKey: providerConfig.apiKey,
|
|
79
|
-
baseUrl: providerConfig.baseUrl,
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
else if (driver === 'openrouter') {
|
|
83
|
-
const { OpenRouterProvider } = await import('../providers/openrouter.js');
|
|
84
|
-
AiRegistry.register(new OpenRouterProvider({
|
|
85
|
-
apiKey: providerConfig.apiKey,
|
|
86
|
-
baseUrl: providerConfig.baseUrl,
|
|
87
|
-
siteUrl: providerConfig['siteUrl'],
|
|
88
|
-
siteName: providerConfig['siteName'],
|
|
89
|
-
}));
|
|
90
|
-
}
|
|
91
|
-
else if (driver === 'bedrock') {
|
|
92
|
-
const { BedrockProvider } = await import('../providers/bedrock.js');
|
|
93
|
-
const region = providerConfig['region'] ?? 'us-east-1';
|
|
94
|
-
const credentials = providerConfig['credentials'];
|
|
95
|
-
AiRegistry.register(new BedrockProvider(credentials ? { region, credentials } : { region }));
|
|
96
|
-
}
|
|
97
|
-
else if (driver === 'elevenlabs') {
|
|
98
|
-
const { ElevenLabsProvider } = await import('../providers/elevenlabs.js');
|
|
99
|
-
AiRegistry.register(new ElevenLabsProvider({
|
|
100
|
-
apiKey: providerConfig.apiKey,
|
|
101
|
-
...(providerConfig.baseUrl ? { baseUrl: providerConfig.baseUrl } : {}),
|
|
102
|
-
...(providerConfig['defaultTtsModelId'] ? { defaultTtsModelId: providerConfig['defaultTtsModelId'] } : {}),
|
|
103
|
-
}));
|
|
104
|
-
}
|
|
105
|
-
else if (driver === 'voyage') {
|
|
106
|
-
const { VoyageProvider } = await import('../providers/voyage.js');
|
|
107
|
-
AiRegistry.register(new VoyageProvider({
|
|
108
|
-
apiKey: providerConfig.apiKey,
|
|
109
|
-
...(providerConfig.baseUrl ? { baseUrl: providerConfig.baseUrl } : {}),
|
|
110
|
-
...(providerConfig['defaultInputType'] ? { defaultInputType: providerConfig['defaultInputType'] } : {}),
|
|
111
|
-
}));
|
|
112
|
-
}
|
|
108
|
+
const build = DRIVERS[driver];
|
|
109
|
+
if (!build)
|
|
110
|
+
continue;
|
|
111
|
+
AiRegistry.register(await build(name, providerConfig, { googleCacheRegistry }));
|
|
113
112
|
}
|
|
114
113
|
AiRegistry.setDefault(cfg.default);
|
|
115
114
|
AiRegistry.setModels(cfg.models ?? []);
|
|
116
115
|
this.app.instance('ai.registry', AiRegistry);
|
|
117
116
|
// Register conversation store if provided in config
|
|
118
117
|
if (cfg.conversations) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
this.app.instance('ai.conversations', store);
|
|
118
|
+
setConversationStore(cfg.conversations);
|
|
119
|
+
this.app.instance('ai.conversations', cfg.conversations);
|
|
122
120
|
}
|
|
123
121
|
// Register user-memory store if provided in config (#A4)
|
|
124
122
|
if (cfg.memory) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
this.app.instance('ai.memory', memory);
|
|
123
|
+
setUserMemory(cfg.memory);
|
|
124
|
+
this.app.instance('ai.memory', cfg.memory);
|
|
128
125
|
}
|
|
129
126
|
// Register make:agent scaffolder
|
|
130
127
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/server/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAuB,MAAM,uCAAuC,CAAA;AAGhG
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/server/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { LoopContext } from './agent.js';
|
|
2
|
+
import type { AiMessage, StreamChunk, ToolCall, ToolResult } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Execute the tool phase for a single agent step. Yields the same
|
|
5
|
+
* `StreamChunk` sequence (`tool-call` → `tool-update*` → `tool-result`) that
|
|
6
|
+
* the streaming caller surfaces to consumers. Non-streaming callers iterate
|
|
7
|
+
* via `.next()` and discard yields — the side effects (message pushes,
|
|
8
|
+
* pending-state mutations on `loopCtx`) are identical regardless of whether
|
|
9
|
+
* the chunks reach a consumer.
|
|
10
|
+
*
|
|
11
|
+
* Returns the step's `ToolResult[]`. The caller passes the assistant message
|
|
12
|
+
* to push before iteration so the AgentStep shape (response.message) and the
|
|
13
|
+
* final `messages` array stay in sync with the loop variant.
|
|
14
|
+
*/
|
|
15
|
+
export declare function executeToolPhase(loopCtx: LoopContext, toolCalls: ToolCall[], assistantMessage: AiMessage): AsyncGenerator<StreamChunk, ToolResult[], void>;
|
|
16
|
+
//# sourceMappingURL=tool-execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../src/tool-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAkB7C,OAAO,KAAK,EAAE,SAAS,EAAW,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvF;;;;;;;;;;;GAWG;AACH,wBAAuB,gBAAgB,CACrC,OAAO,EAAW,WAAW,EAC7B,SAAS,EAAS,QAAQ,EAAE,EAC5B,gBAAgB,EAAE,SAAS,GAC1B,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,CA8BjD"}
|