@zimtsui/brainswitch 0.0.1 → 0.0.2

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 (60) hide show
  1. package/README.md +98 -83
  2. package/build/adaptor.d.ts +1 -1
  3. package/build/adaptor.js +8 -8
  4. package/build/adaptor.js.map +1 -1
  5. package/build/agentloop.d.ts +1 -1
  6. package/build/agentloop.js +21 -21
  7. package/build/agentloop.js.map +1 -1
  8. package/build/api-types/base.d.ts +0 -2
  9. package/build/api-types/base.js +0 -2
  10. package/build/api-types/base.js.map +1 -1
  11. package/build/api-types/google-base.d.ts +15 -3
  12. package/build/api-types/google-base.js +33 -13
  13. package/build/api-types/google-base.js.map +1 -1
  14. package/build/api-types/google-rest.d.ts +13 -9
  15. package/build/api-types/google-rest.js +102 -89
  16. package/build/api-types/google-rest.js.map +1 -1
  17. package/build/api-types/huggingface-cerebras-qwen3-thinking.d.ts +9 -7
  18. package/build/api-types/huggingface-cerebras-qwen3-thinking.js +46 -41
  19. package/build/api-types/huggingface-cerebras-qwen3-thinking.js.map +1 -1
  20. package/build/api-types/openai-chatcompletions-base.d.ts +2 -6
  21. package/build/api-types/openai-chatcompletions-base.js +5 -12
  22. package/build/api-types/openai-chatcompletions-base.js.map +1 -1
  23. package/build/api-types/openai-chatcompletions-monolith-base.d.ts +1 -1
  24. package/build/api-types/openai-chatcompletions-monolith-base.js +12 -16
  25. package/build/api-types/openai-chatcompletions-monolith-base.js.map +1 -1
  26. package/build/api-types/openai-chatcompletions-stream-base.d.ts +1 -1
  27. package/build/api-types/openai-chatcompletions-stream-base.js +13 -16
  28. package/build/api-types/openai-chatcompletions-stream-base.js.map +1 -1
  29. package/build/api-types/openai-chatcompletions.d.ts +4 -2
  30. package/build/api-types/openai-chatcompletions.js +9 -4
  31. package/build/api-types/openai-chatcompletions.js.map +1 -1
  32. package/build/api-types/openai-responses.d.ts +35 -21
  33. package/build/api-types/openai-responses.js +211 -188
  34. package/build/api-types/openai-responses.js.map +1 -1
  35. package/build/api-types/openrouter-monolith.d.ts +8 -8
  36. package/build/api-types/openrouter-monolith.js +39 -44
  37. package/build/api-types/openrouter-monolith.js.map +1 -1
  38. package/build/api-types/openrouter-stream.d.ts +10 -10
  39. package/build/api-types/openrouter-stream.js +49 -54
  40. package/build/api-types/openrouter-stream.js.map +1 -1
  41. package/build/api-types/qwen.d.ts +5 -3
  42. package/build/api-types/qwen.js +11 -6
  43. package/build/api-types/qwen.js.map +1 -1
  44. package/build/config.js.map +1 -1
  45. package/build/endpoint-spec.js.map +1 -1
  46. package/build/engine.d.ts +1 -1
  47. package/build/engine.js +2 -2
  48. package/build/engine.js.map +1 -1
  49. package/build/function.d.ts +14 -2
  50. package/build/function.js +12 -0
  51. package/build/function.js.map +1 -1
  52. package/build/session.d.ts +105 -38
  53. package/build/session.js +212 -60
  54. package/build/session.js.map +1 -1
  55. package/build/throttle.js.map +1 -1
  56. package/build/tsconfig.tsbuildinfo +1 -1
  57. package/package.json +1 -1
  58. package/build/test.d.ts +0 -1
  59. package/build/test.js +0 -23
  60. package/build/test.js.map +0 -1
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- <!-- 本文档由 GPT-5 生成 -->
1
+ <!-- 本文档由 GPT-5 辅助生成 -->
2
2
 
3
3
  # Brainswitch
4
4
 
@@ -8,7 +8,7 @@ Brainswitch 是一个为 AI 工作流设计的 LLM 推理 API 适配器,支持
8
8
 
9
9
  ## Motivation
10
10
 
11
- 大多数 LLM 推理服务商不支持[严格函数调用](https://platform.openai.com/docs/guides/function-calling#strict-mode),在 AI 批处理工作流中难以达到生产级的可靠性。如果仅使用 OpenAI、Google 等支持严格函数调用的服务商,那么可选的模型型号会大幅受限。
11
+ 大多数 LLM 推理服务商不支持[严格函数调用](https://platform.openai.com/docs/guides/function-calling#strict-mode),在 AI 批处理工作流中难以达到生产级的可靠性。如果仅使用 OpenAI 等支持严格函数调用的服务商,那么可选的模型型号会大幅受限。
12
12
 
13
13
  Brainswitch 支持在一次会话中途切换模型并保持对话上下文,包括 OpenAI、Google 的深度思考模型的加密思考内容。有了 Brainswitch 就可以在会话的大量推理阶段使用最合适的模型生成自然语言结果,在最后的总结阶段切换成支持严格函数调用的模型进行结构化提交。
14
14
 
@@ -17,7 +17,7 @@ Brainswitch 支持在一次会话中途切换模型并保持对话上下文,
17
17
  - OpenAI Chat Completions
18
18
  - OpenAI Responses
19
19
  - Google
20
- - Qwen
20
+ - 百炼/火山引擎 OpenAI 兼容
21
21
  - OpenRouter
22
22
  - HuggingFace Cerebras Qwen3 Thinking
23
23
 
@@ -43,23 +43,23 @@ npm i @zimtsui/brainswitch
43
43
 
44
44
  ```ts
45
45
  export type Config = {
46
- brainswitch: {
47
- endpoints: Record<string, {
48
- baseUrl: string;
49
- apiKey: string;
50
- model: string;
51
- name: string;
52
- apiType: 'openai-chatcompletions' | 'openai-responses' | 'google' | 'qwen' | 'openrouter-monolith' | 'openrouter-stream' | 'huggingface-cerebras-qwen3-thinking';
53
- proxy?: string;
54
- inputPrice?: number; // 每百万输入 Token 人民币成本
55
- outputPrice?: number; // 每百万输出 Token 人民币成本
56
- cachedPrice?: number; // 每百万缓存命中 Token 人民币成本
57
- customOptions?: Record<string, unknown>; // 直通服务商的自定义参数
58
- rpm?: number; // 每分钟请求次数上限
59
- tpm?: number; // 每分钟 Token 上限
60
- timeout?: number; // 单次请求超时(毫秒)
61
- }>;
62
- };
46
+ brainswitch: {
47
+ endpoints: Record<string, {
48
+ baseUrl: string;
49
+ apiKey: string;
50
+ model: string;
51
+ name: string;
52
+ apiType: 'openai-chatcompletions' | 'openai-responses' | 'google' | 'qwen' | 'openrouter-monolith' | 'openrouter-stream' | 'huggingface-cerebras-qwen3-thinking';
53
+ proxy?: string;
54
+ inputPrice?: number; // 每百万输入 Token 人民币成本
55
+ outputPrice?: number; // 每百万输出 Token 人民币成本
56
+ cachedPrice?: number; // 每百万缓存命中 Token 人民币成本
57
+ customOptions?: Record<string, unknown>; // 直通服务商的自定义参数
58
+ rpm?: number; // 每分钟请求次数上限
59
+ tpm?: number; // 每分钟 Token 上限
60
+ timeout?: number; // 单次请求超时(毫秒)
61
+ }>;
62
+ };
63
63
  }
64
64
  ```
65
65
 
@@ -72,7 +72,7 @@ export type Config = {
72
72
  下面演示:定义一个工具函数,先用 Google 做推理与工具调用,再在同一会话中切换到 OpenAI Responses 做最终的结构化总结。
73
73
 
74
74
  ```ts
75
- import { Adaptor, agentloop, RoleMessage, Function, type InferenceContext } from '@zimtsui/brainswitch';
75
+ import { Adaptor, agentloop, RoleMessage, Function, type InferenceContext, type Config, Session } from '@zimtsui/brainswitch';
76
76
  import { Type } from '@sinclair/typebox';
77
77
  import { RWLock } from '@zimtsui/coroutine-locks';
78
78
  import { Channel } from '@zimtsui/typelog';
@@ -80,85 +80,100 @@ import * as Presets from '@zimtsui/typelog/presets';
80
80
 
81
81
  // 配置
82
82
  const config: Config = {
83
- brainswitch: {
84
- endpoints: {
85
- 'gpt-4o-mini': {
86
- name: 'GPT-4o mini',
87
- apiType: 'openai-chatcompletions',
88
- baseUrl: 'https://api.openai.com/v1',
89
- apiKey: process.env.OPENAI_API_KEY!,
90
- model: 'gpt-4o-mini',
91
- inputPrice: 5, outputPrice: 15, cachedPrice: 1,
92
- rpm: 3000, tpm: 1_000_000, timeout: 60_000,
93
- },
94
- 'o4-mini': {
95
- name: 'o4 mini',
96
- apiType: 'openai-responses',
97
- baseUrl: 'https://api.openai.com/v1',
98
- apiKey: process.env.OPENAI_API_KEY!,
99
- model: 'o4-mini',
100
- },
101
- 'gemini-2.0-flash': {
102
- name: 'Gemini 2.0 Flash',
103
- apiType: 'google',
104
- baseUrl: 'https://generativelanguage.googleapis.com',
105
- apiKey: process.env.GOOGLE_API_KEY!,
106
- model: 'gemini-2.0-flash',
107
- },
108
- }
109
- }
83
+ brainswitch: {
84
+ endpoints: {
85
+ 'gpt-4o-mini': {
86
+ name: 'GPT-4o mini',
87
+ apiType: 'openai-chatcompletions',
88
+ baseUrl: 'https://api.openai.com/v1',
89
+ apiKey: process.env.OPENAI_API_KEY!,
90
+ model: 'gpt-4o-mini',
91
+ inputPrice: 5, outputPrice: 15, cachedPrice: 1,
92
+ rpm: 3000, tpm: 1_000_000, timeout: 60_000,
93
+ },
94
+ 'o4-mini': {
95
+ name: 'o4 mini',
96
+ apiType: 'openai-responses',
97
+ baseUrl: 'https://api.openai.com/v1',
98
+ apiKey: process.env.OPENAI_API_KEY!,
99
+ model: 'o4-mini',
100
+ },
101
+ 'gemini-2.5-flash': {
102
+ name: 'Gemini 2.5 Flash',
103
+ apiType: 'google',
104
+ baseUrl: 'https://generativelanguage.googleapis.com',
105
+ apiKey: process.env.GOOGLE_API_KEY!,
106
+ model: 'gemini-2.5-flash',
107
+ },
108
+ }
109
+ }
110
110
  }
111
111
 
112
112
  // 声明函数工具
113
113
  const fdm = {
114
- get_weather: {
115
- description: '获取某城市的天气',
116
- paraschema: Type.Object({
117
- city: Type.String(),
118
- unit: Type.Optional(Type.Union([Type.Literal('C'), Type.Literal('F')]))
119
- }),
120
- },
114
+ get_weather: {
115
+ description: '获取某城市的天气',
116
+ paraschema: Type.Object({
117
+ city: Type.String(),
118
+ unit: Type.Optional(Type.Union([Type.Literal('C'), Type.Literal('F')]))
119
+ }),
120
+ },
121
+ submit_result: {
122
+ description: '提交最终结果',
123
+ paraschema: Type.Object({
124
+ weather: Type.String(),
125
+ advice: Type.String(),
126
+ }),
127
+ },
121
128
  } satisfies Function.Declaration.Map;
122
129
  type fdm = typeof fdm;
130
+ type fdu = Function.Declaration.From<fdm>;
123
131
 
132
+ export class Submission extends Error {
133
+ public constructor(public weather: string, public advice: string) {
134
+ super(undefined);
135
+ }
136
+ }
124
137
  const fnm: Function.Map<fdm> = {
125
- async get_weather({ city, unit }) {
126
- // 实际项目中此处调用真实 API,这里仅示例
127
- const data = { city, unit: unit ?? 'C', temperature: 26, sky: 'sunny' };
128
- return JSON.stringify(data);
129
- },
138
+ async get_weather({ city, unit }) {
139
+ // 实际项目中此处调用真实 API,这里仅示例
140
+ const data = { city, unit: unit ?? 'C', temperature: 26, sky: 'sunny' };
141
+ return JSON.stringify(data);
142
+ },
143
+ async submit_result({ weather, advice }) {
144
+ throw new Submission(weather, advice);
145
+ },
130
146
  };
131
147
 
132
148
  // 初始化工作流上下文
133
149
  const ctx: InferenceContext = {
134
- busy: new RWLock(),
135
- logger: {
136
- message: new Channel(Presets.Level),
137
- cost(deltaCost) { console.log((-deltaCost).toFixed(2)); },
138
- },
150
+ busy: new RWLock(),
151
+ logger: {
152
+ message: Channel.create(Presets.Level, message => console.log(message)),
153
+ cost(deltaCost) { console.log((-deltaCost).toFixed(2)); },
154
+ },
139
155
  };
140
156
 
141
157
  // 创建会话
142
- const session = {
143
- developerMessage: new RoleMessage.Developer([
144
- new RoleMessage.Text('你是一个会使用工具的中文助理,遇到需要实时数据请调用工具,完成后用简洁中文回答。'),
145
- ]),
146
- chatMessages: [
147
- new RoleMessage.User([ new RoleMessage.Text('帮我查一下明天北京的天气,并给穿衣建议。') ]),
148
- ],
158
+ const session: Session<fdu> = {
159
+ developerMessage: RoleMessage.Developer.create([
160
+ RoleMessage.Part.Text.create('你的工作是为用户查询天气,并给出穿衣建议。'),
161
+ ]),
162
+ chatMessages: [
163
+ RoleMessage.User.create([ RoleMessage.Part.Text.create('请查询现在北京的天气,并给穿衣建议。') ]),
164
+ ],
149
165
  };
150
166
 
151
167
  // 选择推理引擎
152
168
  const adaptor = Adaptor.create(config);
153
- const engineReason = adaptor.createEngine('gemini-2.0-flash', fdm, ['get_weather']);
154
-
155
- // 使用 agentloop 驱动工具调用到完成,最多 8 轮对话
156
- for await (const text of agentloop(ctx, session, engineReason, fnm, 8)) console.log(text);
157
-
158
- // 在同一会话中切换到 OpenAI Responses 做结构化总结
159
- session.chatMessages.push(new RoleMessage.User([
160
- new RoleMessage.Text('请把以上结论整理成 JSON:{"reason": string, "advice": string}')
161
- ]));
162
- const engineStrict = adaptor.createEngine('gpt-4o-mini', fdm); // Responses API 在声明了工具时会强制严格模式
163
- for await (const text of agentloop(ctx, session, engineStrict, fnm, 4)) console.log(text);
169
+ const engine = adaptor.makeEngine('gpt-4o-mini', fdm, Function.ToolChoice.REQUIRED);
170
+
171
+ // 使用 agentloop 驱动智能体循环,最多 8 轮对话
172
+ try {
173
+ for await (const text of agentloop(ctx, session, engine, fnm, 8)) console.log(text);
174
+ } catch (e) {
175
+ if (e instanceof Submission) {} else throw e;
176
+ console.log(e.weather);
177
+ console.log(e.advice);
178
+ }
164
179
  ```
@@ -8,5 +8,5 @@ export declare class Adaptor {
8
8
  protected constructor(config: Config);
9
9
  private throttles;
10
10
  getThrottle(endpointId: string): Throttle;
11
- createEngine<fdm extends Function.Declaration.Map = {}>(endpoint: string, functionDeclarationMap: fdm, functionCallMode?: Function.ToolChoice<fdm>): Engine<Function.Declaration.From<fdm>>;
11
+ makeEngine<fdm extends Function.Declaration.Map = {}>(endpoint: string, functionDeclarationMap: fdm, functionCallMode?: Function.ToolChoice<fdm>): Engine<Function.Declaration.From<fdm>>;
12
12
  }
package/build/adaptor.js CHANGED
@@ -31,7 +31,7 @@ export class Adaptor {
31
31
  this.throttles.get(baseUrl).set(model, new Throttle(rpm, tpm));
32
32
  return this.throttles.get(baseUrl).get(model);
33
33
  }
34
- createEngine(endpoint, functionDeclarationMap, functionCallMode) {
34
+ makeEngine(endpoint, functionDeclarationMap, functionCallMode) {
35
35
  assert(endpoint in this.config.brainswitch.endpoints);
36
36
  const endpointSpec = this.config.brainswitch.endpoints[endpoint];
37
37
  const throttle = this.getThrottle(endpoint);
@@ -42,19 +42,19 @@ export class Adaptor {
42
42
  throttle,
43
43
  };
44
44
  if (endpointSpec.apiType === 'openai-responses')
45
- return OpenAIResponsesAPI.create(options);
45
+ return OpenAIResponsesAPI.makeEngine(options);
46
46
  else if (endpointSpec.apiType === 'openai-chatcompletions')
47
- return OpenAIChatCompletionsAPI.create(options);
47
+ return OpenAIChatCompletionsAPI.makeEngine(options);
48
48
  else if (endpointSpec.apiType === 'google')
49
- return GoogleRESTfulAPI.create(options);
49
+ return GoogleRESTfulAPI.makeEngine(options);
50
50
  else if (endpointSpec.apiType === 'qwen')
51
- return QwenAPI.create(options);
51
+ return QwenAPI.makeEngine(options);
52
52
  else if (endpointSpec.apiType === 'openrouter-monolith')
53
- return OpenRouterMonolithAPI.create(options);
53
+ return OpenRouterMonolithAPI.makeEngine(options);
54
54
  else if (endpointSpec.apiType === 'openrouter-stream')
55
- return OpenRouterStreamAPI.create(options);
55
+ return OpenRouterStreamAPI.makeEngine(options);
56
56
  else if (endpointSpec.apiType === 'huggingface-cerebras-qwen3-thinking')
57
- return HuggingFaceCerebrasQwen3ThinkingAPI.create(options);
57
+ return HuggingFaceCerebrasQwen3ThinkingAPI.makeEngine(options);
58
58
  else
59
59
  throw new Error();
60
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { Engine } from './engine.ts';
5
5
  /**
6
6
  * @param session mutable
7
7
  */
8
- export declare function agentloop<fdm extends Function.Declaration.Map>(ctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>, engine: Engine<Function.Declaration.From<fdm>>, functionMap: Function.Map<fdm>, limit?: number): AsyncGenerator<string, void, void>;
8
+ export declare function agentloop<fdm extends Function.Declaration.Map>(ctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>, engine: Engine<Function.Declaration.From<fdm>>, functionMap: Function.Map<fdm>, limit?: number): AsyncGenerator<string, string, void>;
9
9
  export declare namespace agentloop {
10
10
  class FunctionCallLimitExceeded extends Error {
11
11
  }
@@ -10,32 +10,32 @@ export async function* agentloop(ctx, session, engine, functionMap, limit = Numb
10
10
  for (let i = 0; i < limit; i++) {
11
11
  const response = await Engine.apply(ctx, session, engine);
12
12
  const fcs = response.getFunctionCalls();
13
- if (fcs.length) {
14
- const parts = [];
15
- for (const part of response.parts) {
16
- if (part instanceof RoleMessage.Text) {
17
- yield part.text;
18
- }
19
- else if (part instanceof Function.Call) {
20
- const fc = part;
21
- const f = functionMap[fc.name];
22
- assert(f);
23
- const text = await f(fc.args);
24
- ctx.logger.message?.debug('\n' + text);
25
- const fr = Function.Response.create({
13
+ if (!fcs.length)
14
+ return response.getOnlyText();
15
+ const pfrs = [];
16
+ for (const part of response.parts) {
17
+ if (part instanceof RoleMessage.Part.Text.Constructor) {
18
+ yield part.text;
19
+ }
20
+ else if (part instanceof Function.Call) {
21
+ const fc = part;
22
+ const f = functionMap[fc.name];
23
+ assert(f);
24
+ pfrs.push((async () => {
25
+ const rv = await f(fc.args);
26
+ ctx.logger.message?.debug('\n' + rv);
27
+ return Function.Response.create({
26
28
  id: fc.id,
27
29
  name: fc.name,
28
- text,
30
+ text: rv,
29
31
  });
30
- parts.push(fr);
31
- }
32
- else
33
- throw new Error();
32
+ })());
34
33
  }
35
- session.chatMessages.push(new RoleMessage.User(parts));
34
+ else
35
+ throw new Error();
36
36
  }
37
- else
38
- return yield response.getOnlyText();
37
+ const frs = await Promise.all(pfrs);
38
+ session.chatMessages.push(RoleMessage.User.create(frs));
39
39
  }
40
40
  throw new agentloop.FunctionCallLimitExceeded('Function call limit exceeded.');
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agentloop.js","sourceRoot":"","sources":["../src/agentloop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAgB,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC;;GAEG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,SAAS,CAC/B,GAAqB,EACrB,OAAgD,EAChD,MAA8C,EAC9C,WAA8B,EAC9B,KAAK,GAAG,MAAM,CAAC,iBAAiB;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,KAAK,GAAqE,EAAE,CAAC;YACnF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnC,IAAI,IAAI,YAAY,WAAW,CAAC,IAAI,EAAE,CAAC;oBACtC,MAAM,IAAI,CAAC,IAAI,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC1C,MAAM,EAAE,GAAG,IAAkE,CAAC;oBAC9E,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC/B,MAAM,CAAC,CAAC,CAAC,CAAC;oBACV,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC9B,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,GAAC,IAAI,CAAC,CAAC;oBACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;wBACnC,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,IAAI;qBACgE,CAAC,CAAC;oBACvE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;;oBAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAC1B,CAAC;YACD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAiC,KAAK,CAAC,CAAC,CAAC;QACxF,CAAC;;YAAM,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,+BAA+B,CAAC,CAAC;AAChF,CAAC;AAED,WAAiB,SAAS;IACzB,MAAa,yBAA0B,SAAQ,KAAK;KAAG;IAA1C,mCAAyB,4BAAiB,CAAA;AACxD,CAAC,EAFgB,SAAS,KAAT,SAAS,QAEzB"}
1
+ {"version":3,"file":"agentloop.js","sourceRoot":"","sources":["../src/agentloop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAgB,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC;;GAEG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,SAAS,CAC5B,GAAqB,EACrB,OAAgD,EAChD,MAA8C,EAC9C,WAA8B,EAC9B,KAAK,GAAG,MAAM,CAAC,iBAAiB;IAGhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAmD,EAAE,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,IAAI,YAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpD,MAAM,IAAI,CAAC,IAAI,CAAC;YACpB,CAAC;iBAAM,IAAI,IAAI,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,EAAE,GAAG,IAAuC,CAAC;gBACnD,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;oBAClB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC5B,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,GAAC,EAAE,CAAC,CAAC;oBACnC,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAM;wBACjC,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,IAAI,EAAE,EAAE;qBAC8B,CAAC,CAAC;gBAChD,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,CAAC;;gBAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAM,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,+BAA+B,CAAC,CAAC;AACnF,CAAC;AAED,WAAiB,SAAS;IACtB,MAAa,yBAA0B,SAAQ,KAAK;KAAG;IAA1C,mCAAyB,4BAAiB,CAAA;AAC3D,CAAC,EAFgB,SAAS,KAAT,SAAS,QAEzB"}
@@ -17,5 +17,3 @@ export declare abstract class APIBase<in out fdm extends Function.Declaration.Ma
17
17
  }
18
18
  export declare class TransientError extends Error {
19
19
  }
20
- export declare class RetryLimitError extends Error {
21
- }
@@ -32,6 +32,4 @@ export class APIBase {
32
32
  }
33
33
  export class TransientError extends Error {
34
34
  }
35
- export class RetryLimitError extends Error {
36
- }
37
35
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/api-types/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAgB,OAAO;IAClB,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,KAAK,CAAS;IACd,UAAU,CAAS;IACnB,WAAW,CAAS;IACpB,WAAW,CAAS;IACpB,sBAAsB,CAAM;IAC5B,UAAU,CAA2B;IACrC,aAAa,CAA2B;IACxC,QAAQ,CAAW;IACnB,OAAO,CAAU;IAE3B,YAAmB,OAA4B;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM;YAClD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,gBAAgB,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;;YACnE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,CAAC;CACD;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;CAAG;AAC5C,MAAM,OAAO,eAAgB,SAAQ,KAAK;CAAG"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/api-types/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAgB,OAAO;IAClB,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,KAAK,CAAS;IACd,UAAU,CAAS;IACnB,WAAW,CAAS;IACpB,WAAW,CAAS;IACpB,sBAAsB,CAAM;IAC5B,UAAU,CAA2B;IACrC,aAAa,CAA2B;IACxC,QAAQ,CAAW;IACnB,OAAO,CAAU;IAE3B,YAAmB,OAA4B;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM;YAClD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,gBAAgB,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;;YACnE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,CAAC;CACD;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;CAAG"}
@@ -16,7 +16,19 @@ export declare abstract class GoogleAPIBase<in out fdm extends Function.Declarat
16
16
  protected convertFromFunctionCallMode(mode: Function.ToolChoice<fdm>): Google.FunctionCallingConfig;
17
17
  protected validateFunctionCallByToolChoice(aiMessage: RoleMessage.AI<Function.Declaration.From<fdm>>): void;
18
18
  }
19
- export declare class GoogleAIMessage<out fdu extends Function.Declaration> extends RoleMessage.AI<fdu> {
20
- raw: Google.Content;
21
- constructor(parts: RoleMessage.AI.Part<fdu>[], raw: Google.Content);
19
+ export type GoogleAIMessage<fdu extends Function.Declaration> = GoogleAIMessage.Constructor<fdu>;
20
+ export declare namespace GoogleAIMessage {
21
+ function create<fdu extends Function.Declaration>(parts: RoleMessage.AI.Part<fdu>[], raw: Google.Content): GoogleAIMessage<fdu>;
22
+ const NOMINAL: unique symbol;
23
+ class Constructor<out fdu extends Function.Declaration> extends RoleMessage.AI.Constructor<fdu> {
24
+ raw: Google.Content;
25
+ readonly [NOMINAL]: void;
26
+ constructor(parts: RoleMessage.AI.Part<fdu>[], raw: Google.Content);
27
+ }
28
+ interface Snapshot<in out fdu extends Function.Declaration = never> {
29
+ parts: RoleMessage.AI.Part.Snapshot<fdu>[];
30
+ raw: Google.Content;
31
+ }
32
+ function restore<fdu extends Function.Declaration>(snapshot: GoogleAIMessage.Snapshot<fdu>): GoogleAIMessage<fdu>;
33
+ function capture<fdu extends Function.Declaration>(message: GoogleAIMessage<fdu>): GoogleAIMessage.Snapshot<fdu>;
22
34
  }
@@ -30,7 +30,7 @@ export class GoogleAPIBase extends APIBase {
30
30
  }
31
31
  convertFromUserMessage(userMessage) {
32
32
  const parts = userMessage.parts.map(part => {
33
- if (part instanceof RoleMessage.Text)
33
+ if (part instanceof RoleMessage.Part.Text.Constructor)
34
34
  return Google.createPartFromText(part.text);
35
35
  else if (part instanceof Function.Response)
36
36
  return {
@@ -42,11 +42,11 @@ export class GoogleAPIBase extends APIBase {
42
42
  return Google.createUserContent(parts);
43
43
  }
44
44
  convertFromAIMessage(aiMessage) {
45
- if (aiMessage instanceof GoogleAIMessage)
45
+ if (aiMessage instanceof GoogleAIMessage.Constructor)
46
46
  return aiMessage.raw;
47
47
  else {
48
48
  const parts = aiMessage.parts.map(part => {
49
- if (part instanceof RoleMessage.Text)
49
+ if (part instanceof RoleMessage.Part.Text.Constructor)
50
50
  return Google.createPartFromText(part.text);
51
51
  else if (part instanceof Function.Call) {
52
52
  assert(part.args instanceof Object);
@@ -64,9 +64,9 @@ export class GoogleAPIBase extends APIBase {
64
64
  }
65
65
  convertFromChatMessages(chatMessages) {
66
66
  return chatMessages.map(chatMessage => {
67
- if (chatMessage instanceof RoleMessage.User)
67
+ if (chatMessage instanceof RoleMessage.User.Constructor)
68
68
  return this.convertFromUserMessage(chatMessage);
69
- else if (chatMessage instanceof RoleMessage.AI)
69
+ else if (chatMessage instanceof RoleMessage.AI.Constructor)
70
70
  return this.convertFromAIMessage(chatMessage);
71
71
  else
72
72
  throw new Error();
@@ -74,10 +74,10 @@ export class GoogleAPIBase extends APIBase {
74
74
  }
75
75
  convertToAIMessage(content) {
76
76
  assert(content.parts);
77
- return new GoogleAIMessage(content.parts.flatMap(part => {
77
+ return GoogleAIMessage.create(content.parts.flatMap(part => {
78
78
  const parts = [];
79
79
  if (part.text)
80
- parts.push(new RoleMessage.Text(part.text));
80
+ parts.push(RoleMessage.Part.Text.create(part.text));
81
81
  if (part.functionCall)
82
82
  parts.push(this.convertToFunctionCall(part.functionCall));
83
83
  return parts;
@@ -132,11 +132,31 @@ export class GoogleAPIBase extends APIBase {
132
132
  assert(!functionCalls.length, new TransientError('No function should be called.'));
133
133
  }
134
134
  }
135
- export class GoogleAIMessage extends RoleMessage.AI {
136
- raw;
137
- constructor(parts, raw) {
138
- super(parts);
139
- this.raw = raw;
135
+ export var GoogleAIMessage;
136
+ (function (GoogleAIMessage) {
137
+ function create(parts, raw) {
138
+ return new Constructor(parts, raw);
140
139
  }
141
- }
140
+ GoogleAIMessage.create = create;
141
+ GoogleAIMessage.NOMINAL = Symbol();
142
+ class Constructor extends RoleMessage.AI.Constructor {
143
+ raw;
144
+ constructor(parts, raw) {
145
+ super(parts);
146
+ this.raw = raw;
147
+ }
148
+ }
149
+ GoogleAIMessage.Constructor = Constructor;
150
+ function restore(snapshot) {
151
+ return new Constructor(RoleMessage.AI.restore(snapshot.parts).parts, snapshot.raw);
152
+ }
153
+ GoogleAIMessage.restore = restore;
154
+ function capture(message) {
155
+ return {
156
+ parts: RoleMessage.AI.capture(message),
157
+ raw: message.raw,
158
+ };
159
+ }
160
+ GoogleAIMessage.capture = capture;
161
+ })(GoogleAIMessage || (GoogleAIMessage = {}));
142
162
  //# sourceMappingURL=google-base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-base.js","sourceRoot":"","sources":["../../src/api-types/google-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google-base.js","sourceRoot":"","sources":["../../src/api-types/google-base.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { Engine } from '../engine.ts';
2
+ import { type Session } from '../session.ts';
2
3
  import { Function } from '../function.ts';
3
4
  import * as Google from '@google/genai';
4
- import { GoogleAPIBase } from './google-base.ts';
5
+ import { GoogleAIMessage, GoogleAPIBase } from './google-base.ts';
6
+ import { type InferenceContext } from '../inference-context.ts';
5
7
  export interface GoogleRESTfulRequest {
6
8
  contents: Google.Content[];
7
9
  tools?: Google.Tool[];
@@ -9,12 +11,14 @@ export interface GoogleRESTfulRequest {
9
11
  systemInstruction?: Google.Content;
10
12
  generationConfig?: Google.GenerationConfig;
11
13
  }
12
- export declare class GoogleRESTfulAPI<in out fdm extends Function.Declaration.Map = {}> extends GoogleAPIBase<fdm> {
13
- private proxyAgent?;
14
- private apiURL;
15
- private tokenizerURL;
16
- protected constructor(options: Engine.Options<fdm>);
17
- static create<fdm extends Function.Declaration.Map = {}>(options: Engine.Options<fdm>): Engine<Function.Declaration.From<fdm>>;
18
- private tokenize;
19
- private monolith;
14
+ export declare namespace GoogleRESTfulAPI {
15
+ function makeEngine<fdm extends Function.Declaration.Map = {}>(options: Engine.Options<fdm>): Engine<Function.Declaration.From<fdm>>;
16
+ class Constructor<in out fdm extends Function.Declaration.Map = {}> extends GoogleAPIBase<fdm> {
17
+ private proxyAgent?;
18
+ private apiURL;
19
+ private tokenizerURL;
20
+ constructor(options: Engine.Options<fdm>);
21
+ private tokenize;
22
+ monolith(ctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>, retry?: number): Promise<GoogleAIMessage<Function.Declaration.From<fdm>>>;
23
+ }
20
24
  }