@zimtsui/brainswitch 0.0.40 → 0.0.42

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.
Files changed (88) hide show
  1. package/README.md +9 -20
  2. package/build/adaptor.d.ts +4 -2
  3. package/build/adaptor.js +27 -10
  4. package/build/adaptor.js.map +1 -1
  5. package/build/agentloop.d.ts +1 -1
  6. package/build/agentloop.js +2 -4
  7. package/build/agentloop.js.map +1 -1
  8. package/build/api-types/anthropic.d.ts +18 -22
  9. package/build/api-types/anthropic.js +81 -72
  10. package/build/api-types/anthropic.js.map +1 -1
  11. package/build/api-types/google.d.ts +13 -18
  12. package/build/api-types/google.js +32 -33
  13. package/build/api-types/google.js.map +1 -1
  14. package/build/api-types/openai-chat-completions.d.ts +17 -19
  15. package/build/api-types/openai-chat-completions.js +101 -85
  16. package/build/api-types/openai-chat-completions.js.map +1 -1
  17. package/build/api-types/openai-responses.d.ts +13 -13
  18. package/build/api-types/openai-responses.js +59 -51
  19. package/build/api-types/openai-responses.js.map +1 -1
  20. package/build/compatible-engine.d.ts +19 -24
  21. package/build/compatible-engine.js +54 -56
  22. package/build/compatible-engine.js.map +1 -1
  23. package/build/compatible-engines.d/aliyun.d.ts +38 -55
  24. package/build/compatible-engines.d/aliyun.js +91 -143
  25. package/build/compatible-engines.d/aliyun.js.map +1 -1
  26. package/build/compatible-engines.d/anthropic.d.ts +35 -60
  27. package/build/compatible-engines.d/anthropic.js +233 -282
  28. package/build/compatible-engines.d/anthropic.js.map +1 -1
  29. package/build/compatible-engines.d/google.d.ts +38 -59
  30. package/build/compatible-engines.d/google.js +172 -231
  31. package/build/compatible-engines.d/google.js.map +1 -1
  32. package/build/compatible-engines.d/openai-chatcompletions.d/monolith.d.ts +7 -14
  33. package/build/compatible-engines.d/openai-chatcompletions.d/monolith.js +64 -66
  34. package/build/compatible-engines.d/openai-chatcompletions.d/monolith.js.map +1 -1
  35. package/build/compatible-engines.d/openai-chatcompletions.d/stream.d.ts +10 -16
  36. package/build/compatible-engines.d/openai-chatcompletions.d/stream.js +169 -165
  37. package/build/compatible-engines.d/openai-chatcompletions.d/stream.js.map +1 -1
  38. package/build/compatible-engines.d/openai-chatcompletions.d.ts +12 -18
  39. package/build/compatible-engines.d/openai-chatcompletions.js +64 -64
  40. package/build/compatible-engines.d/openai-chatcompletions.js.map +1 -1
  41. package/build/compatible-engines.d/openai-responses.d.ts +46 -68
  42. package/build/compatible-engines.d/openai-responses.js +222 -274
  43. package/build/compatible-engines.d/openai-responses.js.map +1 -1
  44. package/build/engine.d.ts +10 -24
  45. package/build/engine.js +25 -38
  46. package/build/engine.js.map +1 -1
  47. package/build/exports.d.ts +1 -0
  48. package/build/exports.js +1 -0
  49. package/build/exports.js.map +1 -1
  50. package/build/frontmatter.js +2 -2
  51. package/build/frontmatter.js.map +1 -1
  52. package/build/function.js +9 -4
  53. package/build/function.js.map +1 -1
  54. package/build/inference-context.d.ts +1 -10
  55. package/build/inference-context.js +0 -2
  56. package/build/inference-context.js.map +1 -1
  57. package/build/native-engines.d/google/agentloop.d.ts +1 -1
  58. package/build/native-engines.d/google/agentloop.js +2 -4
  59. package/build/native-engines.d/google/agentloop.js.map +1 -1
  60. package/build/native-engines.d/google/engine.d.ts +56 -73
  61. package/build/native-engines.d/google/engine.js +265 -295
  62. package/build/native-engines.d/google/engine.js.map +1 -1
  63. package/build/native-engines.d/google/exports.d.ts +3 -2
  64. package/build/native-engines.d/google/exports.js +3 -2
  65. package/build/native-engines.d/google/exports.js.map +1 -1
  66. package/build/native-engines.d/google/session.js +6 -3
  67. package/build/native-engines.d/google/session.js.map +1 -1
  68. package/build/native-engines.d/openai-responses/agentloop.d.ts +1 -1
  69. package/build/native-engines.d/openai-responses/agentloop.js +2 -5
  70. package/build/native-engines.d/openai-responses/agentloop.js.map +1 -1
  71. package/build/native-engines.d/openai-responses/engine.d.ts +59 -78
  72. package/build/native-engines.d/openai-responses/engine.js +285 -321
  73. package/build/native-engines.d/openai-responses/engine.js.map +1 -1
  74. package/build/native-engines.d/openai-responses/exports.d.ts +4 -2
  75. package/build/native-engines.d/openai-responses/exports.js +4 -2
  76. package/build/native-engines.d/openai-responses/exports.js.map +1 -1
  77. package/build/native-engines.d/openai-responses/session.js +21 -8
  78. package/build/native-engines.d/openai-responses/session.js.map +1 -1
  79. package/build/session.js +12 -5
  80. package/build/session.js.map +1 -1
  81. package/build/telemetry.d.ts +6 -0
  82. package/build/telemetry.js +3 -0
  83. package/build/telemetry.js.map +1 -0
  84. package/build/throttle.d.ts +1 -1
  85. package/build/throttle.js +6 -6
  86. package/build/throttle.js.map +1 -1
  87. package/build/tsconfig.tsbuildinfo +1 -1
  88. package/package.json +2 -2
@@ -1,340 +1,310 @@
1
1
  import { Function } from "../../function.js";
2
2
  import { RoleMessage } from "./session.js";
3
- import { ResponseInvalid, Engine, UserAbortion, InferenceTimeout } from "../../engine.js";
3
+ import { ResponseInvalid, Engine, USER_ABORTION, InferenceTimeout } from "../../engine.js";
4
4
  import {} from "../../inference-context.js";
5
5
  import * as Google from '@google/genai';
6
- import assert from 'node:assert';
7
- import { fetch } from 'undici';
6
+ import * as Undici from 'undici';
8
7
  import { GoogleEngine } from "../../api-types/google.js";
9
8
  import { GoogleCompatibleEngine } from "../../compatible-engines.d/google.js";
10
9
  import { CompatibleEngine } from "../../compatible-engine.js";
10
+ import { Throttle } from "../../throttle.js";
11
+ import {} from "../../telemetry.js";
11
12
  export var GoogleNativeEngine;
12
13
  (function (GoogleNativeEngine) {
13
- let Base;
14
- (function (Base) {
15
- class Instance {
16
- instance;
17
- apiURL;
18
- parallel;
19
- codeExecution;
20
- urlContext;
21
- googleSearch;
22
- toolChoice;
23
- constructor(instance, options) {
24
- this.instance = instance;
25
- this.apiURL = new URL(`${this.instance.baseUrl}/v1beta/models/${this.instance.model}:generateContent`);
26
- this.parallel = options.parallelToolCall ?? false;
27
- this.codeExecution = options.codeExecution ?? false;
28
- this.urlContext = options.urlContext ?? false;
29
- this.googleSearch = options.googleSearch ?? false;
30
- this.toolChoice = options.toolChoice ?? Function.ToolChoice.AUTO;
14
+ let OwnProps;
15
+ (function (OwnProps) {
16
+ function init(options) {
17
+ return {
18
+ apiURL: new URL(`${this.baseUrl}/v1beta/models/${this.model}:generateContent`),
19
+ codeExecution: options.codeExecution ?? false,
20
+ urlContext: options.urlContext ?? false,
21
+ googleSearch: options.googleSearch ?? false,
22
+ toolChoice: options.toolChoice ?? Function.ToolChoice.AUTO,
23
+ };
24
+ }
25
+ OwnProps.init = init;
26
+ })(OwnProps = GoogleNativeEngine.OwnProps || (GoogleNativeEngine.OwnProps = {}));
27
+ async function stateless(wfctx, session) {
28
+ for (let retry = 0;; retry++) {
29
+ const signalTimeout = this.timeout ? AbortSignal.timeout(this.timeout) : undefined;
30
+ const signal = wfctx.signal && signalTimeout ? AbortSignal.any([
31
+ wfctx.signal,
32
+ signalTimeout,
33
+ ]) : wfctx.signal || signalTimeout;
34
+ try {
35
+ return await this.fetch(wfctx, session, signal);
31
36
  }
32
- async stateless(ctx, session) {
33
- for (let retry = 0;; retry++) {
34
- const signalTimeout = this.instance.timeout ? AbortSignal.timeout(this.instance.timeout) : undefined;
35
- const signal = ctx.signal && signalTimeout ? AbortSignal.any([
36
- ctx.signal,
37
- signalTimeout,
38
- ]) : ctx.signal || signalTimeout;
39
- try {
40
- return await this.fetch(ctx, session, signal);
41
- }
42
- catch (e) {
43
- if (ctx.signal?.aborted)
44
- throw new UserAbortion(); // 用户中止
45
- else if (signalTimeout?.aborted)
46
- e = new InferenceTimeout(undefined, { cause: e }); // 推理超时
47
- else if (e instanceof ResponseInvalid) { } // 模型抽风
48
- else if (e instanceof TypeError) { } // 网络故障
49
- else
50
- throw e;
51
- if (retry < 3)
52
- ctx.logger.message?.warn(e);
53
- else
54
- throw e;
55
- }
56
- }
37
+ catch (e) {
38
+ if (wfctx.signal?.aborted)
39
+ throw USER_ABORTION; // 用户中止
40
+ else if (signalTimeout?.aborted)
41
+ e = new InferenceTimeout(undefined, { cause: e }); // 推理超时
42
+ else if (e instanceof ResponseInvalid) { } // 模型抽风
43
+ else if (e instanceof TypeError) { } // 网络故障
44
+ else
45
+ throw e;
46
+ if (retry < 3)
47
+ this.logger.message?.warn(e);
48
+ else
49
+ throw e;
57
50
  }
58
- async stateful(ctx, session) {
59
- const response = await this.stateless(ctx, session);
60
- session.chatMessages.push(response);
61
- return response;
62
- }
63
- appendUserMessage(session, message) {
64
- return {
65
- ...session,
66
- chatMessages: [...session.chatMessages, message],
67
- };
68
- }
69
- pushUserMessage(session, message) {
70
- session.chatMessages.push(message);
71
- return session;
72
- }
73
- convertToAiMessage(content) {
74
- assert(content.parts);
75
- return RoleMessage.Ai.create(content.parts.flatMap(part => {
76
- const parts = [];
77
- let payload = false;
78
- if (part.text) {
79
- payload = true;
80
- parts.push(RoleMessage.Part.Text.create(part.text));
81
- }
82
- if (part.functionCall) {
83
- payload = true;
84
- parts.push(this.instance.convertToFunctionCall(part.functionCall));
85
- }
86
- if (this.instance.codeExecution && part.executableCode) {
87
- payload = true;
88
- assert(part.executableCode.code);
89
- assert(part.executableCode.language);
90
- parts.push(RoleMessage.Ai.Part.ExecutableCode.create(part.executableCode.code, part.executableCode.language));
91
- }
92
- if (this.instance.codeExecution && part.codeExecutionResult) {
93
- payload = true;
94
- assert(part.codeExecutionResult.outcome);
95
- parts.push(RoleMessage.Ai.Part.CodeExecutionResult.create(part.codeExecutionResult.outcome, part.codeExecutionResult.output));
96
- }
97
- assert(payload, new ResponseInvalid('Unknown content part', { cause: content }));
98
- return parts;
99
- }), content);
100
- }
101
- convertFromAiMessage(aiMessage) {
102
- return aiMessage.getRaw();
103
- }
104
- convertFromUserMessage(userMessage) {
105
- return GoogleCompatibleEngine.convertFromUserMessage(userMessage);
106
- }
107
- convertFromDeveloperMessage(developerMessage) {
108
- return GoogleCompatibleEngine.convertFromDeveloperMessage(developerMessage);
109
- }
110
- convertFromChatMessages(chatMessages) {
111
- return chatMessages.map(chatMessage => {
112
- if (chatMessage instanceof RoleMessage.User.Instance)
113
- return this.convertFromUserMessage(chatMessage);
114
- else if (chatMessage instanceof RoleMessage.Ai.Instance)
115
- return this.convertFromAiMessage(chatMessage);
116
- else
117
- throw new Error();
118
- });
51
+ }
52
+ }
53
+ GoogleNativeEngine.stateless = stateless;
54
+ async function stateful(wfctx, session) {
55
+ const response = await this.stateless(wfctx, session);
56
+ session.chatMessages.push(response);
57
+ return response;
58
+ }
59
+ GoogleNativeEngine.stateful = stateful;
60
+ function appendUserMessage(session, message) {
61
+ return {
62
+ ...session,
63
+ chatMessages: [...session.chatMessages, message],
64
+ };
65
+ }
66
+ GoogleNativeEngine.appendUserMessage = appendUserMessage;
67
+ function pushUserMessage(session, message) {
68
+ session.chatMessages.push(message);
69
+ return session;
70
+ }
71
+ GoogleNativeEngine.pushUserMessage = pushUserMessage;
72
+ function convertToAiMessage(content) {
73
+ if (content.parts) { }
74
+ else
75
+ throw new Error();
76
+ return RoleMessage.Ai.create(content.parts.flatMap(part => {
77
+ const parts = [];
78
+ let payload = false;
79
+ if (part.text) {
80
+ payload = true;
81
+ parts.push(RoleMessage.Part.Text.create(part.text));
119
82
  }
120
- convertFromToolChoice(toolChoice) {
121
- return GoogleCompatibleEngine.convertFromToolChoice(toolChoice);
83
+ if (part.functionCall) {
84
+ payload = true;
85
+ parts.push(this.convertToFunctionCall(part.functionCall));
122
86
  }
123
- async fetch(ctx, session, signal) {
124
- const systemInstruction = session.developerMessage && this.instance.convertFromDeveloperMessage(session.developerMessage);
125
- const contents = this.instance.convertFromChatMessages(session.chatMessages);
126
- await this.instance.throttle.requests(ctx);
127
- const fdentries = Object.entries(this.instance.fdm);
128
- const functionDeclarations = fdentries.map(fdentry => this.instance.convertFromFunctionDeclarationEntry(fdentry));
129
- const tools = [];
130
- if (functionDeclarations.length)
131
- tools.push({ functionDeclarations });
132
- if (this.urlContext)
133
- tools.push({ urlContext: {} });
134
- if (this.googleSearch)
135
- tools.push({ googleSearch: {} });
136
- if (this.codeExecution)
137
- tools.push({ codeExecution: {} });
138
- const reqbody = {
139
- contents,
140
- tools: tools.length ? tools : undefined,
141
- toolConfig: functionDeclarations.length ? {
142
- functionCallingConfig: this.instance.convertFromToolChoice(this.instance.toolChoice),
143
- } : undefined,
144
- systemInstruction,
145
- generationConfig: this.instance.maxTokens || this.instance.additionalOptions ? {
146
- maxOutputTokens: this.instance.maxTokens ?? undefined,
147
- ...this.instance.additionalOptions,
148
- } : undefined,
149
- };
150
- ctx.logger.message?.trace(reqbody);
151
- const res = await fetch(this.apiURL, {
152
- method: 'POST',
153
- headers: new Headers({
154
- 'Content-Type': 'application/json',
155
- 'x-goog-api-key': this.instance.apiKey,
156
- }),
157
- body: JSON.stringify(reqbody),
158
- dispatcher: this.instance.proxyAgent,
159
- signal,
160
- });
161
- ctx.logger.message?.trace(res);
162
- assert(res.ok, new Error(undefined, { cause: res }));
163
- const response = await res.json();
164
- assert(response.candidates?.[0]?.content?.parts?.length, new ResponseInvalid('Content missing', { cause: response }));
165
- if (response.candidates[0].finishReason === Google.FinishReason.MAX_TOKENS)
166
- throw new ResponseInvalid('Token limit exceeded.', { cause: response });
167
- assert(response.candidates[0].finishReason === Google.FinishReason.STOP, new ResponseInvalid('Abnormal finish reason', { cause: response }));
168
- for (const part of response.candidates[0].content.parts) {
169
- if (part.text)
170
- ctx.logger.inference?.debug(part.text + '\n');
171
- if (part.functionCall)
172
- ctx.logger.message?.debug(part.functionCall);
173
- }
174
- assert(response.usageMetadata?.promptTokenCount, new Error('Prompt token count absent', { cause: response }));
175
- ctx.logger.message?.debug(response.usageMetadata);
176
- const candidatesTokenCount = response.usageMetadata.candidatesTokenCount ?? 0;
177
- const cacheHitTokenCount = response.usageMetadata.cachedContentTokenCount ?? 0;
178
- const cacheMissTokenCount = response.usageMetadata.promptTokenCount - cacheHitTokenCount;
179
- const thinkingTokenCount = response.usageMetadata.thoughtsTokenCount ?? 0;
180
- const cost = this.instance.inputPrice * cacheMissTokenCount / 1e6 +
181
- this.instance.cachedPrice * cacheHitTokenCount / 1e6 +
182
- this.instance.outputPrice * candidatesTokenCount / 1e6 +
183
- this.instance.outputPrice * thinkingTokenCount / 1e6;
184
- ctx.logger.cost?.(cost);
185
- const aiMessage = this.instance.convertToAiMessage(response.candidates[0].content);
186
- this.instance.validateToolCallsByToolChoice(aiMessage.getFunctionCalls());
187
- return aiMessage;
87
+ if (this.codeExecution && part.executableCode) {
88
+ payload = true;
89
+ if (part.executableCode.code) { }
90
+ else
91
+ throw new Error();
92
+ if (part.executableCode.language) { }
93
+ else
94
+ throw new Error();
95
+ parts.push(RoleMessage.Ai.Part.ExecutableCode.create(part.executableCode.code, part.executableCode.language));
188
96
  }
189
- validateToolCallsByToolChoice(toolCalls) {
190
- return CompatibleEngine.validateToolCallsByToolChoice(toolCalls, this.toolChoice);
97
+ if (this.codeExecution && part.codeExecutionResult) {
98
+ payload = true;
99
+ if (part.codeExecutionResult.outcome) { }
100
+ else
101
+ throw new Error();
102
+ parts.push(RoleMessage.Ai.Part.CodeExecutionResult.create(part.codeExecutionResult.outcome, part.codeExecutionResult.output));
191
103
  }
192
- }
193
- Base.Instance = Instance;
194
- })(Base = GoogleNativeEngine.Base || (GoogleNativeEngine.Base = {}));
104
+ if (payload) { }
105
+ else
106
+ throw new ResponseInvalid('Unknown content part', { cause: content });
107
+ return parts;
108
+ }), content);
109
+ }
110
+ GoogleNativeEngine.convertToAiMessage = convertToAiMessage;
111
+ function convertFromAiMessage(aiMessage) {
112
+ return aiMessage.getRaw();
113
+ }
114
+ GoogleNativeEngine.convertFromAiMessage = convertFromAiMessage;
115
+ function convertFromUserMessage(userMessage) {
116
+ return (GoogleCompatibleEngine.convertFromUserMessage).call(this, userMessage);
117
+ }
118
+ GoogleNativeEngine.convertFromUserMessage = convertFromUserMessage;
119
+ function convertFromDeveloperMessage(developerMessage) {
120
+ return (GoogleCompatibleEngine.convertFromDeveloperMessage).call(this, developerMessage);
121
+ }
122
+ GoogleNativeEngine.convertFromDeveloperMessage = convertFromDeveloperMessage;
123
+ function convertFromChatMessages(chatMessages) {
124
+ return chatMessages.map(chatMessage => {
125
+ if (chatMessage instanceof RoleMessage.User.Instance)
126
+ return this.convertFromUserMessage(chatMessage);
127
+ else if (chatMessage instanceof RoleMessage.Ai.Instance)
128
+ return this.convertFromAiMessage(chatMessage);
129
+ else
130
+ throw new Error();
131
+ });
132
+ }
133
+ GoogleNativeEngine.convertFromChatMessages = convertFromChatMessages;
134
+ function convertFromToolChoice(toolChoice) {
135
+ return (GoogleCompatibleEngine.convertFromToolChoice).call(this, toolChoice);
136
+ }
137
+ GoogleNativeEngine.convertFromToolChoice = convertFromToolChoice;
138
+ async function fetch(wfctx, session, signal) {
139
+ const systemInstruction = session.developerMessage && this.convertFromDeveloperMessage(session.developerMessage);
140
+ const contents = this.convertFromChatMessages(session.chatMessages);
141
+ await this.throttle.requests(wfctx);
142
+ const fdentries = Object.entries(this.fdm);
143
+ const functionDeclarations = fdentries.map(fdentry => this.convertFromFunctionDeclarationEntry(fdentry));
144
+ const tools = [];
145
+ if (functionDeclarations.length)
146
+ tools.push({ functionDeclarations });
147
+ if (this.urlContext)
148
+ tools.push({ urlContext: {} });
149
+ if (this.googleSearch)
150
+ tools.push({ googleSearch: {} });
151
+ if (this.codeExecution)
152
+ tools.push({ codeExecution: {} });
153
+ const reqbody = {
154
+ contents,
155
+ tools: tools.length ? tools : undefined,
156
+ toolConfig: functionDeclarations.length ? {
157
+ functionCallingConfig: this.convertFromToolChoice(this.toolChoice),
158
+ } : undefined,
159
+ systemInstruction,
160
+ generationConfig: this.maxTokens || this.additionalOptions ? {
161
+ maxOutputTokens: this.maxTokens ?? undefined,
162
+ ...this.additionalOptions,
163
+ } : undefined,
164
+ };
165
+ this.logger.message?.trace(reqbody);
166
+ const res = await Undici.fetch(this.apiURL, {
167
+ method: 'POST',
168
+ headers: new Headers({
169
+ 'Content-Type': 'application/json',
170
+ 'x-goog-api-key': this.apiKey,
171
+ }),
172
+ body: JSON.stringify(reqbody),
173
+ dispatcher: this.proxyAgent,
174
+ signal,
175
+ });
176
+ this.logger.message?.trace(res);
177
+ if (res.ok) { }
178
+ else
179
+ throw new Error(undefined, { cause: res });
180
+ const response = await res.json();
181
+ if (response.candidates?.[0]?.content?.parts?.length) { }
182
+ else
183
+ throw new ResponseInvalid('Content missing', { cause: response });
184
+ if (response.candidates[0].finishReason === Google.FinishReason.MAX_TOKENS)
185
+ throw new ResponseInvalid('Token limit exceeded.', { cause: response });
186
+ if (response.candidates[0].finishReason === Google.FinishReason.STOP) { }
187
+ else
188
+ throw new ResponseInvalid('Abnormal finish reason', { cause: response });
189
+ for (const part of response.candidates[0].content.parts) {
190
+ if (part.text)
191
+ this.logger.inference?.debug(part.text + '\n');
192
+ if (part.functionCall)
193
+ this.logger.message?.debug(part.functionCall);
194
+ }
195
+ if (response.usageMetadata?.promptTokenCount) { }
196
+ else
197
+ throw new Error('Prompt token count absent', { cause: response });
198
+ this.logger.message?.debug(response.usageMetadata);
199
+ const candidatesTokenCount = response.usageMetadata.candidatesTokenCount ?? 0;
200
+ const cacheHitTokenCount = response.usageMetadata.cachedContentTokenCount ?? 0;
201
+ const cacheMissTokenCount = response.usageMetadata.promptTokenCount - cacheHitTokenCount;
202
+ const thinkingTokenCount = response.usageMetadata.thoughtsTokenCount ?? 0;
203
+ const cost = this.inputPrice * cacheMissTokenCount / 1e6 +
204
+ this.cachePrice * cacheHitTokenCount / 1e6 +
205
+ this.outputPrice * candidatesTokenCount / 1e6 +
206
+ this.outputPrice * thinkingTokenCount / 1e6;
207
+ wfctx.cost?.(cost);
208
+ const aiMessage = this.convertToAiMessage(response.candidates[0].content);
209
+ this.validateToolCallsByToolChoice(aiMessage.getFunctionCalls());
210
+ return aiMessage;
211
+ }
212
+ GoogleNativeEngine.fetch = fetch;
213
+ function validateToolCallsByToolChoice(toolCalls) {
214
+ Function.Call.validate(toolCalls, this.toolChoice, new ResponseInvalid('Invalid function call', { cause: toolCalls }));
215
+ }
216
+ GoogleNativeEngine.validateToolCallsByToolChoice = validateToolCallsByToolChoice;
195
217
  class Instance {
196
- engineBase;
197
- googleEngineBase;
198
- googleNativeEngineBase;
218
+ baseUrl;
219
+ apiKey;
220
+ model;
221
+ name;
222
+ inputPrice;
223
+ outputPrice;
224
+ cachePrice;
225
+ fdm;
226
+ additionalOptions;
227
+ throttle;
228
+ timeout;
229
+ maxTokens;
230
+ proxyAgent;
231
+ logger;
232
+ parallelToolCall;
233
+ apiURL;
234
+ codeExecution;
235
+ urlContext;
236
+ googleSearch;
237
+ toolChoice;
199
238
  constructor(options) {
200
- this.engineBase = new Engine.Base.Instance(this, options);
201
- this.googleEngineBase = new GoogleEngine.Base.Instance(this, options);
202
- this.googleNativeEngineBase = new GoogleNativeEngine.Base.Instance(this, options);
203
- }
204
- get baseUrl() {
205
- return this.engineBase.baseUrl;
206
- }
207
- set baseUrl(value) {
208
- this.engineBase.baseUrl = value;
209
- }
210
- get apiKey() {
211
- return this.engineBase.apiKey;
212
- }
213
- set apiKey(value) {
214
- this.engineBase.apiKey = value;
215
- }
216
- get model() {
217
- return this.engineBase.model;
218
- }
219
- set model(value) {
220
- this.engineBase.model = value;
221
- }
222
- get name() {
223
- return this.engineBase.name;
224
- }
225
- set name(value) {
226
- this.engineBase.name = value;
227
- }
228
- get inputPrice() {
229
- return this.engineBase.inputPrice;
230
- }
231
- set inputPrice(value) {
232
- this.engineBase.inputPrice = value;
233
- }
234
- get outputPrice() {
235
- return this.engineBase.outputPrice;
236
- }
237
- set outputPrice(value) {
238
- this.engineBase.outputPrice = value;
239
- }
240
- get cachedPrice() {
241
- return this.engineBase.cachedPrice;
242
- }
243
- set cachedPrice(value) {
244
- this.engineBase.cachedPrice = value;
245
- }
246
- get fdm() {
247
- return this.engineBase.fdm;
248
- }
249
- set fdm(value) {
250
- this.engineBase.fdm = value;
251
- }
252
- get additionalOptions() {
253
- return this.engineBase.additionalOptions;
254
- }
255
- set additionalOptions(value) {
256
- this.engineBase.additionalOptions = value;
257
- }
258
- get throttle() {
259
- return this.engineBase.throttle;
260
- }
261
- set throttle(value) {
262
- this.engineBase.throttle = value;
263
- }
264
- get timeout() {
265
- return this.engineBase.timeout;
266
- }
267
- set timeout(value) {
268
- this.engineBase.timeout = value;
269
- }
270
- get maxTokens() {
271
- return this.engineBase.maxTokens;
272
- }
273
- set maxTokens(value) {
274
- this.engineBase.maxTokens = value;
275
- }
276
- get proxyAgent() {
277
- return this.engineBase.proxyAgent;
278
- }
279
- set proxyAgent(value) {
280
- this.engineBase.proxyAgent = value;
281
- }
282
- get toolChoice() {
283
- return this.googleNativeEngineBase.toolChoice;
284
- }
285
- set toolChoice(value) {
286
- this.googleNativeEngineBase.toolChoice = value;
287
- }
288
- stateless(ctx, session) {
289
- return this.googleNativeEngineBase.stateless(ctx, session);
290
- }
291
- stateful(ctx, session) {
292
- return this.googleNativeEngineBase.stateful(ctx, session);
239
+ ({
240
+ baseUrl: this.baseUrl,
241
+ apiKey: this.apiKey,
242
+ model: this.model,
243
+ name: this.name,
244
+ inputPrice: this.inputPrice,
245
+ outputPrice: this.outputPrice,
246
+ cachePrice: this.cachePrice,
247
+ fdm: this.fdm,
248
+ additionalOptions: this.additionalOptions,
249
+ throttle: this.throttle,
250
+ timeout: this.timeout,
251
+ maxTokens: this.maxTokens,
252
+ proxyAgent: this.proxyAgent,
253
+ logger: this.logger,
254
+ } = (Engine.OwnProps.init).call(this, options));
255
+ ({ parallelToolCall: this.parallelToolCall } = (GoogleEngine.OwnProps.init).call(this, options));
256
+ ({
257
+ apiURL: this.apiURL,
258
+ codeExecution: this.codeExecution,
259
+ urlContext: this.urlContext,
260
+ googleSearch: this.googleSearch,
261
+ toolChoice: this.toolChoice,
262
+ } = (GoogleNativeEngine.OwnProps.init).call(this, options));
263
+ }
264
+ stateless(wfctx, session) {
265
+ return (GoogleNativeEngine.stateless).call(this, wfctx, session);
266
+ }
267
+ stateful(wfctx, session) {
268
+ return (GoogleNativeEngine.stateful).call(this, wfctx, session);
293
269
  }
294
270
  appendUserMessage(session, message) {
295
- return this.googleNativeEngineBase.appendUserMessage(session, message);
271
+ return (GoogleNativeEngine.appendUserMessage).call(this, session, message);
296
272
  }
297
273
  pushUserMessage(session, message) {
298
- return this.googleNativeEngineBase.pushUserMessage(session, message);
274
+ return (GoogleNativeEngine.pushUserMessage).call(this, session, message);
299
275
  }
300
276
  validateToolCallsByToolChoice(toolCalls) {
301
- return this.googleNativeEngineBase.validateToolCallsByToolChoice(toolCalls);
302
- }
303
- get parallel() {
304
- return this.googleEngineBase.parallel;
305
- }
306
- set parallel(value) {
307
- this.googleEngineBase.parallel = value;
277
+ return (GoogleNativeEngine.validateToolCallsByToolChoice).call(this, toolCalls);
308
278
  }
309
279
  convertFromFunctionCall(fc) {
310
- return this.googleEngineBase.convertFromFunctionCall(fc);
280
+ return (GoogleEngine.convertFromFunctionCall).call(this, fc);
311
281
  }
312
282
  convertToFunctionCall(googlefc) {
313
- return this.googleEngineBase.convertToFunctionCall(googlefc);
283
+ return (GoogleEngine.convertToFunctionCall).call(this, googlefc);
314
284
  }
315
285
  convertFromFunctionDeclarationEntry(fdentry) {
316
- return this.googleEngineBase.convertFromFunctionDeclarationEntry(fdentry);
286
+ return (GoogleEngine.convertFromFunctionDeclarationEntry).call(this, fdentry);
317
287
  }
318
288
  convertFromUserMessage(userMessage) {
319
- return this.googleNativeEngineBase.convertFromUserMessage(userMessage);
289
+ return (GoogleNativeEngine.convertFromUserMessage).call(this, userMessage);
320
290
  }
321
291
  convertFromAiMessage(aiMessage) {
322
- return this.googleNativeEngineBase.convertFromAiMessage(aiMessage);
292
+ return (GoogleNativeEngine.convertFromAiMessage).call(this, aiMessage);
323
293
  }
324
294
  convertFromDeveloperMessage(developerMessage) {
325
- return this.googleNativeEngineBase.convertFromDeveloperMessage(developerMessage);
295
+ return (GoogleNativeEngine.convertFromDeveloperMessage).call(this, developerMessage);
326
296
  }
327
297
  convertFromChatMessages(chatMessages) {
328
- return this.googleNativeEngineBase.convertFromChatMessages(chatMessages);
298
+ return (GoogleNativeEngine.convertFromChatMessages).call(this, chatMessages);
329
299
  }
330
300
  convertToAiMessage(content) {
331
- return this.googleNativeEngineBase.convertToAiMessage(content);
301
+ return (GoogleNativeEngine.convertToAiMessage).call(this, content);
332
302
  }
333
303
  convertFromToolChoice(toolChoice) {
334
- return this.googleNativeEngineBase.convertFromToolChoice(toolChoice);
304
+ return (GoogleNativeEngine.convertFromToolChoice).call(this, toolChoice);
335
305
  }
336
- fetch(ctx, session, signal) {
337
- return this.googleNativeEngineBase.fetch(ctx, session, signal);
306
+ fetch(wfctx, session, signal) {
307
+ return (GoogleNativeEngine.fetch).call(this, wfctx, session, signal);
338
308
  }
339
309
  }
340
310
  GoogleNativeEngine.Instance = Instance;