@zimtsui/brainswitch 0.0.55 → 0.0.56

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 (214) hide show
  1. package/DEVELOPMENT.md +13 -14
  2. package/README.md +7 -14
  3. package/build/adaptor.d.ts +5 -5
  4. package/build/adaptor.js +16 -16
  5. package/build/adaptor.js.map +1 -1
  6. package/build/agentloop.d.ts +5 -5
  7. package/build/agentloop.js +4 -4
  8. package/build/agentloop.js.map +1 -1
  9. package/build/api-types/anthropic/billing.d.ts +12 -0
  10. package/build/api-types/anthropic/billing.js +15 -0
  11. package/build/api-types/anthropic/billing.js.map +1 -0
  12. package/build/api-types/anthropic/tool-codec.d.ts +17 -0
  13. package/build/api-types/anthropic/tool-codec.js +73 -0
  14. package/build/api-types/anthropic/tool-codec.js.map +1 -0
  15. package/build/api-types/google/billing.d.ts +12 -0
  16. package/build/api-types/google/billing.js +24 -0
  17. package/build/api-types/google/billing.js.map +1 -0
  18. package/build/api-types/google/restful-request.d.ts +8 -0
  19. package/build/api-types/google/restful-request.js +2 -0
  20. package/build/api-types/google/restful-request.js.map +1 -0
  21. package/build/api-types/google/tool-codec.d.ts +16 -0
  22. package/build/api-types/{google.js → google/tool-codec.js} +27 -26
  23. package/build/api-types/google/tool-codec.js.map +1 -0
  24. package/build/api-types/openai-chatcompletion/billing.d.ts +13 -0
  25. package/build/api-types/openai-chatcompletion/billing.js +16 -0
  26. package/build/api-types/openai-chatcompletion/billing.js.map +1 -0
  27. package/build/api-types/openai-chatcompletion/tool-codec.d.ts +18 -0
  28. package/build/api-types/openai-chatcompletion/tool-codec.js +86 -0
  29. package/build/api-types/openai-chatcompletion/tool-codec.js.map +1 -0
  30. package/build/api-types/openai-responses/billing.d.ts +12 -0
  31. package/build/api-types/openai-responses/billing.js +15 -0
  32. package/build/api-types/openai-responses/billing.js.map +1 -0
  33. package/build/api-types/openai-responses/tool-codec.d.ts +16 -0
  34. package/build/api-types/openai-responses/tool-codec.js +72 -0
  35. package/build/api-types/openai-responses/tool-codec.js.map +1 -0
  36. package/build/compatible/engine.d/aliyun.d.ts +23 -0
  37. package/build/compatible/engine.d/aliyun.js +44 -0
  38. package/build/compatible/engine.d/aliyun.js.map +1 -0
  39. package/build/compatible/engine.d/anthropic.d.ts +23 -0
  40. package/build/compatible/engine.d/anthropic.js +41 -0
  41. package/build/compatible/engine.d/anthropic.js.map +1 -0
  42. package/build/compatible/engine.d/google.d.ts +23 -0
  43. package/build/compatible/engine.d/google.js +45 -0
  44. package/build/compatible/engine.d/google.js.map +1 -0
  45. package/build/compatible/engine.d/openai-responses.d.ts +23 -0
  46. package/build/compatible/engine.d/openai-responses.js +41 -0
  47. package/build/compatible/engine.d/openai-responses.js.map +1 -0
  48. package/build/compatible/engine.d.ts +18 -0
  49. package/build/compatible/engine.js +21 -0
  50. package/build/compatible/engine.js.map +1 -0
  51. package/build/compatible/session.d.ts +78 -0
  52. package/build/compatible/session.js +138 -0
  53. package/build/compatible/session.js.map +1 -0
  54. package/build/compatible/tool-call-validator.d.ts +11 -0
  55. package/build/compatible/tool-call-validator.js +12 -0
  56. package/build/compatible/tool-call-validator.js.map +1 -0
  57. package/build/compatible.d/aliyun/transport.d.ts +11 -0
  58. package/build/compatible.d/aliyun/transport.js +9 -0
  59. package/build/compatible.d/aliyun/transport.js.map +1 -0
  60. package/build/compatible.d/anthropic/message-codec.d.ts +31 -0
  61. package/build/compatible.d/anthropic/message-codec.js +88 -0
  62. package/build/compatible.d/anthropic/message-codec.js.map +1 -0
  63. package/build/compatible.d/anthropic/transport.d.ts +31 -0
  64. package/build/compatible.d/anthropic/transport.js +137 -0
  65. package/build/compatible.d/anthropic/transport.js.map +1 -0
  66. package/build/compatible.d/google/message-codec.d.ts +31 -0
  67. package/build/compatible.d/google/message-codec.js +98 -0
  68. package/build/compatible.d/google/message-codec.js.map +1 -0
  69. package/build/compatible.d/google/transport.d.ts +28 -0
  70. package/build/compatible.d/google/transport.js +74 -0
  71. package/build/compatible.d/google/transport.js.map +1 -0
  72. package/build/compatible.d/openai-chatcompletions/message-codec.d.ts +19 -0
  73. package/build/compatible.d/openai-chatcompletions/message-codec.js +66 -0
  74. package/build/compatible.d/openai-chatcompletions/message-codec.js.map +1 -0
  75. package/build/compatible.d/openai-chatcompletions/transport.d.ts +9 -0
  76. package/build/compatible.d/openai-chatcompletions/transport.js +25 -0
  77. package/build/compatible.d/openai-chatcompletions/transport.js.map +1 -0
  78. package/build/compatible.d/openai-chatcompletions.d/monolith.d.ts +36 -0
  79. package/build/compatible.d/openai-chatcompletions.d/monolith.js +74 -0
  80. package/build/compatible.d/openai-chatcompletions.d/monolith.js.map +1 -0
  81. package/build/compatible.d/openai-chatcompletions.d/stream.d.ts +35 -0
  82. package/build/{compatible-engines.d → compatible.d}/openai-chatcompletions.d/stream.js +52 -42
  83. package/build/compatible.d/openai-chatcompletions.d/stream.js.map +1 -0
  84. package/build/compatible.d/openai-responses/message-codec.d.ts +32 -0
  85. package/build/compatible.d/openai-responses/message-codec.js +105 -0
  86. package/build/compatible.d/openai-responses/message-codec.js.map +1 -0
  87. package/build/compatible.d/openai-responses/transport.d.ts +33 -0
  88. package/build/compatible.d/openai-responses/transport.js +88 -0
  89. package/build/compatible.d/openai-responses/transport.js.map +1 -0
  90. package/build/config.js +1 -1
  91. package/build/config.js.map +1 -1
  92. package/build/engine.d.ts +48 -26
  93. package/build/engine.js +78 -29
  94. package/build/engine.js.map +1 -1
  95. package/build/exports.d.ts +14 -13
  96. package/build/exports.js +14 -13
  97. package/build/exports.js.map +1 -1
  98. package/build/function.d.ts +25 -13
  99. package/build/function.js +2 -1
  100. package/build/function.js.map +1 -1
  101. package/build/native-engines.d/google/agentloop.d.ts +6 -6
  102. package/build/native-engines.d/google/agentloop.js +5 -5
  103. package/build/native-engines.d/google/agentloop.js.map +1 -1
  104. package/build/native-engines.d/google/engine.d.ts +28 -103
  105. package/build/native-engines.d/google/engine.js +63 -304
  106. package/build/native-engines.d/google/engine.js.map +1 -1
  107. package/build/native-engines.d/google/exports.d.ts +5 -5
  108. package/build/native-engines.d/google/exports.js +5 -5
  109. package/build/native-engines.d/google/exports.js.map +1 -1
  110. package/build/native-engines.d/google/message-codec.d.ts +21 -0
  111. package/build/native-engines.d/google/message-codec.js +69 -0
  112. package/build/native-engines.d/google/message-codec.js.map +1 -0
  113. package/build/native-engines.d/google/session.d.ts +16 -15
  114. package/build/native-engines.d/google/session.js +2 -2
  115. package/build/native-engines.d/google/session.js.map +1 -1
  116. package/build/native-engines.d/google/transport.d.ts +31 -0
  117. package/build/native-engines.d/google/transport.js +81 -0
  118. package/build/native-engines.d/google/transport.js.map +1 -0
  119. package/build/native-engines.d/openai-responses/agentloop.d.ts +7 -7
  120. package/build/native-engines.d/openai-responses/agentloop.js +6 -6
  121. package/build/native-engines.d/openai-responses/agentloop.js.map +1 -1
  122. package/build/native-engines.d/openai-responses/engine.d.ts +26 -106
  123. package/build/native-engines.d/openai-responses/engine.js +53 -334
  124. package/build/native-engines.d/openai-responses/engine.js.map +1 -1
  125. package/build/native-engines.d/openai-responses/exports.d.ts +6 -7
  126. package/build/native-engines.d/openai-responses/exports.js +6 -7
  127. package/build/native-engines.d/openai-responses/exports.js.map +1 -1
  128. package/build/native-engines.d/openai-responses/message-codec.d.ts +21 -0
  129. package/build/native-engines.d/openai-responses/message-codec.js +69 -0
  130. package/build/native-engines.d/openai-responses/message-codec.js.map +1 -0
  131. package/build/native-engines.d/openai-responses/session.d.ts +27 -26
  132. package/build/native-engines.d/openai-responses/session.js +3 -3
  133. package/build/native-engines.d/openai-responses/session.js.map +1 -1
  134. package/build/native-engines.d/openai-responses/tool-call-validator.d.ts +12 -0
  135. package/build/native-engines.d/openai-responses/tool-call-validator.js +33 -0
  136. package/build/native-engines.d/openai-responses/tool-call-validator.js.map +1 -0
  137. package/build/native-engines.d/openai-responses/tool.d.ts +3 -3
  138. package/build/native-engines.d/openai-responses/tool.js +1 -1
  139. package/build/native-engines.d/openai-responses/tool.js.map +1 -1
  140. package/build/native-engines.d/openai-responses/transport.d.ts +36 -0
  141. package/build/native-engines.d/openai-responses/transport.js +104 -0
  142. package/build/native-engines.d/openai-responses/transport.js.map +1 -0
  143. package/build/session.d.ts +5 -75
  144. package/build/session.js +0 -136
  145. package/build/session.js.map +1 -1
  146. package/build/throttle.d.ts +1 -1
  147. package/build/tsconfig.tsbuildinfo +1 -1
  148. package/package.json +3 -3
  149. package/test/build/test-codecs.js +230 -0
  150. package/test/build/test-codecs.js.map +1 -0
  151. package/test/build/test-compatible-engine.d.ts +1 -0
  152. package/test/build/test-compatible-engine.js +27 -0
  153. package/test/build/test-compatible-engine.js.map +1 -0
  154. package/test/build/test-compatible-engines.d.ts +1 -0
  155. package/test/build/test-compatible-engines.js +112 -0
  156. package/test/build/test-compatible-engines.js.map +1 -0
  157. package/test/build/test-engine.d.ts +1 -0
  158. package/test/build/test-engine.js +97 -0
  159. package/test/build/test-engine.js.map +1 -0
  160. package/test/build/test-helpers.d.ts +46 -0
  161. package/test/build/test-helpers.js +45 -0
  162. package/test/build/test-helpers.js.map +1 -0
  163. package/test/build/test-native-engines.d.ts +1 -0
  164. package/test/build/test-native-engines.js +64 -0
  165. package/test/build/test-native-engines.js.map +1 -0
  166. package/test/build/test.d.ts +5 -0
  167. package/test/build/test.js +6 -0
  168. package/test/build/test.js.map +1 -0
  169. package/test/build/tsconfig.tsbuildinfo +1 -0
  170. package/test/src/test-codecs.ts +256 -0
  171. package/test/src/test-compatible-engine.ts +45 -0
  172. package/test/src/test-compatible-engines.ts +129 -0
  173. package/test/src/test-engine.ts +144 -0
  174. package/test/src/test-helpers.ts +53 -0
  175. package/test/src/test-native-engines.ts +75 -0
  176. package/test/src/test.ts +5 -0
  177. package/test/src/tsconfig.json +30 -0
  178. package/build/api-types/anthropic.d.ts +0 -29
  179. package/build/api-types/anthropic.js +0 -93
  180. package/build/api-types/anthropic.js.map +0 -1
  181. package/build/api-types/google.d.ts +0 -28
  182. package/build/api-types/google.js.map +0 -1
  183. package/build/api-types/openai-chat-completions.d.ts +0 -31
  184. package/build/api-types/openai-chat-completions.js +0 -113
  185. package/build/api-types/openai-chat-completions.js.map +0 -1
  186. package/build/api-types/openai-responses.d.ts +0 -23
  187. package/build/api-types/openai-responses.js +0 -71
  188. package/build/api-types/openai-responses.js.map +0 -1
  189. package/build/compatible-engine.d.ts +0 -51
  190. package/build/compatible-engine.js +0 -67
  191. package/build/compatible-engine.js.map +0 -1
  192. package/build/compatible-engines.d/aliyun.d.ts +0 -69
  193. package/build/compatible-engines.d/aliyun.js +0 -149
  194. package/build/compatible-engines.d/aliyun.js.map +0 -1
  195. package/build/compatible-engines.d/anthropic.d.ts +0 -78
  196. package/build/compatible-engines.d/anthropic.js +0 -312
  197. package/build/compatible-engines.d/anthropic.js.map +0 -1
  198. package/build/compatible-engines.d/google.d.ts +0 -83
  199. package/build/compatible-engines.d/google.js +0 -279
  200. package/build/compatible-engines.d/google.js.map +0 -1
  201. package/build/compatible-engines.d/openai-chatcompletions.d/monolith.d.ts +0 -15
  202. package/build/compatible-engines.d/openai-chatcompletions.d/monolith.js +0 -75
  203. package/build/compatible-engines.d/openai-chatcompletions.d/monolith.js.map +0 -1
  204. package/build/compatible-engines.d/openai-chatcompletions.d/stream.d.ts +0 -21
  205. package/build/compatible-engines.d/openai-chatcompletions.d/stream.js.map +0 -1
  206. package/build/compatible-engines.d/openai-chatcompletions.d.ts +0 -27
  207. package/build/compatible-engines.d/openai-chatcompletions.js +0 -76
  208. package/build/compatible-engines.d/openai-chatcompletions.js.map +0 -1
  209. package/build/compatible-engines.d/openai-responses.d.ts +0 -93
  210. package/build/compatible-engines.d/openai-responses.js +0 -300
  211. package/build/compatible-engines.d/openai-responses.js.map +0 -1
  212. package/build/test.js +0 -198
  213. package/build/test.js.map +0 -1
  214. /package/{build/test.d.ts → test/build/test-codecs.d.ts} +0 -0
package/DEVELOPMENT.md CHANGED
@@ -3,21 +3,20 @@
3
3
  ```mermaid
4
4
  classDiagram
5
5
 
6
- OpenAIResponsesEngine <|.. OpenAIResponsesNativeEngine
7
-
8
- CompatibleEngine <|.. OpenAIResponsesCompatibleEngine
9
- OpenAIResponsesEngine <|.. OpenAIResponsesCompatibleEngine
10
- Engine <|.. OpenAIResponsesEngine
11
-
12
6
  Engine <|.. CompatibleEngine
13
7
 
14
- Engine <|.. OpenAIChatCompletionsEngine
15
- OpenAIChatCompletionsEngine <|.. OpenAIChatCompletionsCompatibleEngine
16
- CompatibleEngine <|.. OpenAIChatCompletionsCompatibleEngine
17
- OpenAIChatCompletionsCompatibleEngine <|.. OpenAIChatCompletionsCompatibleMonolithEngine
18
- OpenAIChatCompletionsCompatibleEngine <|.. OpenAIChatCompletionsCompatibleStreamEngine
19
- ```
8
+ Engine <|.. OpenAIResponsesNativeEngine
9
+ OpenAIResponsesNativeEngine o--> OpenAIResponsesNativeHelpers
10
+ OpenAIResponsesNativeHelpers o--> OpenAIResponsesHelpers
20
11
 
21
- ## 继承
12
+ CompatibleEngine <|.. AliyunEngine
13
+ OpenAIChatCompletionsCompatibleHelpers o--> OpenAIChatCompletionsHelpers
14
+ OpenAIChatCompletionsCompatibleMonolithHelpers o--> OpenAIChatCompletionsCompatibleHelpers
15
+ OpenAIChatCompletionsCompatibleStreamHelpers o--> OpenAIChatCompletionsCompatibleHelpers
16
+ AliyunEngine o--> OpenAIChatCompletionsCompatibleStreamHelpers
22
17
 
23
- 用组合代替继承以实现多重继承的效果。
18
+ CompatibleEngine <|.. OpenAICompatibleEngine
19
+ OpenAICompatibleEngine o--> OpenAIResponsesCompatibleHelpers
20
+ OpenAIResponsesCompatibleHelpers o--> OpenAIResponsesHelpers
21
+
22
+ ```
package/README.md CHANGED
@@ -4,13 +4,7 @@
4
4
 
5
5
  [![NPM Version](https://img.shields.io/npm/v/@zimtsui/brainswitch?style=flat-square)](https://www.npmjs.com/package/@zimtsui/brainswitch)
6
6
 
7
- Brainswitch 是一个为 AI 工作流设计的 LLM 推理 API 适配器,支持在会话中途切换模型。
8
-
9
- ## Motivation
10
-
11
- 大多数 LLM 的[聊天模板](https://huggingface.co/docs/transformers/en/chat_templating) ChatML 原生不支持[严格函数调用](https://platform.openai.com/docs/guides/function-calling#strict-mode),在批处理 AI 工作流中难以达到生产级可靠性。如果仅使用 OpenAI 等支持严格函数调用的服务商,那么可选的模型型号会大幅受限。
12
-
13
- Brainswitch 支持在一次会话中途切换模型并保持对话上下文,包括 OpenAI、Google、Anthropic 的深度思考模型[交替思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking)的加密思考内容,这样即可在会话的大量推理阶段使用最合适的模型生成自然语言结果,在最后的总结阶段切换成支持严格函数调用的模型进行结构化提交。
7
+ Brainswitch 是一个强类型的 LLM 推理 API 适配器。
14
8
 
15
9
  ## 支持服务商 API 类型
16
10
 
@@ -69,11 +63,10 @@ export type Config = {
69
63
  ## 快速上手
70
64
 
71
65
  ```ts
72
- import { Adaptor, agentloop, RoleMessage, Function, type InferenceContext, type Config, Session } from '@zimtsui/brainswitch';
66
+ import { Adaptor, agentloop, RoleMessage, Function, type InferenceContext, type Config, type Session } from '@zimtsui/brainswitch';
73
67
  import { Type } from '@sinclair/typebox';
74
68
  import { RWLock } from '@zimtsui/coroutine-locks';
75
- import { Channel } from '@zimtsui/typelog';
76
- import * as Presets from '@zimtsui/typelog/presets';
69
+
77
70
 
78
71
  // 配置推理服务商 API 接入点
79
72
  const config: Config = {
@@ -115,7 +108,6 @@ const fdm = {
115
108
  },
116
109
  } satisfies Function.Declaration.Map;
117
110
  type fdm = typeof fdm;
118
- type fdu = Function.Declaration.From<fdm>;
119
111
 
120
112
  // 实现函数工具
121
113
  export class Submission {
@@ -132,15 +124,16 @@ const fnm: Function.Map<fdm> = {
132
124
  };
133
125
 
134
126
  // 初始化工作流上下文
135
- const ctx: InferenceContext = {
127
+ const wfctx: InferenceContext = {
136
128
  busy: new RWLock(),
137
129
  cost(deltaCost) {
138
130
  console.log((-deltaCost).toFixed(2));
139
131
  },
132
+ signal: null,
140
133
  };
141
134
 
142
135
  // 创建会话
143
- const session: Session<fdu> = {
136
+ const session: Session<fdm> = {
144
137
  developerMessage: RoleMessage.Developer.create([
145
138
  RoleMessage.Part.Text.create('你的工作是为用户查询天气,并给出穿衣建议。调用工具提交最终结果'),
146
139
  ]),
@@ -155,7 +148,7 @@ const engine = adaptor.makeEngine('gpt-5-mini', fdm, Function.ToolChoice.REQUIRE
155
148
 
156
149
  // 使用 agentloop 驱动智能体循环,最多 8 轮对话
157
150
  try {
158
- for await (const text of agentloop(ctx, session, engine, fnm, 8)) console.log(text);
151
+ for await (const text of agentloop(wfctx, session, engine, fnm, 8)) console.log(text);
159
152
  } catch (e) {
160
153
  if (e instanceof Submission) {} else throw e;
161
154
  console.log(e.weather);
@@ -1,8 +1,8 @@
1
- import { Config } from '#config';
2
- import { Function } from './function.ts';
3
- import { type CompatibleEngine } from './compatible-engine.ts';
4
- import { OpenAIResponsesNativeEngine } from './native-engines.d/openai-responses/engine.ts';
5
- import { GoogleNativeEngine } from './native-engines.d/google/engine.ts';
1
+ import { Config } from '#@/config.ts';
2
+ import { Function } from '#@/function.ts';
3
+ import { type CompatibleEngine } from '#@/compatible/engine.ts';
4
+ import { OpenAIResponsesNativeEngine } from '#@/native-engines.d/openai-responses/engine.ts';
5
+ import { GoogleNativeEngine } from '#@/native-engines.d/google/engine.ts';
6
6
  export declare class Adaptor {
7
7
  config: Config;
8
8
  static create(config: Config): Adaptor;
package/build/adaptor.js CHANGED
@@ -1,13 +1,13 @@
1
- import { Config } from '#config';
2
- import { Function } from "./function.js";
3
- import {} from "./compatible-engine.js";
4
- import { Throttle } from "./throttle.js";
5
- import { GoogleCompatibleEngine } from "./compatible-engines.d/google.js";
6
- import { AliyunEngine } from "./compatible-engines.d/aliyun.js";
7
- import { OpenAIResponsesCompatibleEngine } from "./compatible-engines.d/openai-responses.js";
8
- import { AnthropicCompatibleEngine } from "./compatible-engines.d/anthropic.js";
9
- import { OpenAIResponsesNativeEngine } from "./native-engines.d/openai-responses/engine.js";
10
- import { GoogleNativeEngine } from "./native-engines.d/google/engine.js";
1
+ import { Config } from '#@/config.ts';
2
+ import { Function } from '#@/function.ts';
3
+ import {} from '#@/compatible/engine.ts';
4
+ import { Throttle } from '#@/throttle.ts';
5
+ import { GoogleCompatibleEngine } from '#@/compatible/engine.d/google.ts';
6
+ import { OpenAIResponsesCompatibleEngine } from '#@/compatible/engine.d/openai-responses.ts';
7
+ import { AnthropicCompatibleEngine } from '#@/compatible/engine.d/anthropic.ts';
8
+ import { AliyunEngine } from '#@/compatible/engine.d/aliyun.ts';
9
+ import { OpenAIResponsesNativeEngine } from '#@/native-engines.d/openai-responses/engine.ts';
10
+ import { GoogleNativeEngine } from '#@/native-engines.d/google/engine.ts';
11
11
  export class Adaptor {
12
12
  config;
13
13
  static create(config) {
@@ -38,13 +38,13 @@ export class Adaptor {
38
38
  throttle,
39
39
  };
40
40
  if (endpointSpec.apiType === 'openai-responses')
41
- return OpenAIResponsesCompatibleEngine.create(options);
41
+ return new OpenAIResponsesCompatibleEngine(options);
42
42
  else if (endpointSpec.apiType === 'google')
43
- return GoogleCompatibleEngine.create(options);
43
+ return new GoogleCompatibleEngine(options);
44
44
  else if (endpointSpec.apiType === 'aliyun')
45
- return AliyunEngine.create(options);
45
+ return new AliyunEngine(options);
46
46
  else if (endpointSpec.apiType === 'anthropic')
47
- return AnthropicCompatibleEngine.create(options);
47
+ return new AnthropicCompatibleEngine(options);
48
48
  else
49
49
  throw new Error();
50
50
  }
@@ -65,7 +65,7 @@ export class Adaptor {
65
65
  throttle,
66
66
  applyPatch,
67
67
  };
68
- return OpenAIResponsesNativeEngine.create(options);
68
+ return new OpenAIResponsesNativeEngine(options);
69
69
  }
70
70
  makeGoogleNativeEngine(endpoint, functionDeclarationMap, toolChoice, codeExecution, urlContext, googleSearch, parallelToolCall) {
71
71
  const endpointSpec = this.config.brainswitch.endpoints[endpoint];
@@ -86,7 +86,7 @@ export class Adaptor {
86
86
  urlContext,
87
87
  googleSearch,
88
88
  };
89
- return GoogleNativeEngine.create(options);
89
+ return new GoogleNativeEngine(options);
90
90
  }
91
91
  }
92
92
  //# sourceMappingURL=adaptor.js.map
@@ -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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"}
@@ -1,11 +1,11 @@
1
- import { type InferenceContext } from './inference-context.ts';
2
- import { type Session } from './session.ts';
3
- import { Function } from './function.ts';
4
- import { type CompatibleEngine } from './compatible-engine.ts';
1
+ import { type InferenceContext } from '#@/inference-context.ts';
2
+ import { type Session } from '#@/compatible/session.ts';
3
+ import { Function } from '#@/function.ts';
4
+ import { type CompatibleEngine } from '#@/compatible/engine.ts';
5
5
  /**
6
6
  * @param session mutable
7
7
  */
8
- export declare function agentloop<fdm extends Function.Declaration.Map>(wfctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>, engine: CompatibleEngine<fdm>, fnm: Function.Map<fdm>, limit?: number): AsyncGenerator<string, string, void>;
8
+ export declare function agentloop<fdm extends Function.Declaration.Map>(wfctx: InferenceContext, session: Session<fdm>, engine: CompatibleEngine<fdm>, fnm: Function.Map<fdm>, limit?: number): AsyncGenerator<string, string, void>;
9
9
  export declare namespace agentloop {
10
10
  class FunctionCallLimitExceeded extends Error {
11
11
  }
@@ -1,7 +1,7 @@
1
- import {} from "./inference-context.js";
2
- import { RoleMessage } from "./session.js";
3
- import { Function } from "./function.js";
4
- import {} from "./compatible-engine.js";
1
+ import {} from '#@/inference-context.ts';
2
+ import { RoleMessage } from '#@/compatible/session.ts';
3
+ import { Function } from '#@/function.ts';
4
+ import {} from '#@/compatible/engine.ts';
5
5
  /**
6
6
  * @param session mutable
7
7
  */
@@ -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,EAAyB,MAAM,wBAAwB,CAAC;AAG/D;;GAEG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,SAAS,CAC5B,KAAuB,EACvB,OAAgD,EAChD,MAA6B,EAC7B,GAAsB,EACtB,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,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,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,QAAQ,EAAE,EAAE,CAAC;YACrC,IAAI,IAAI,YAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjD,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,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;oBAClB,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAM;wBACjC,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC;qBACM,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,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAM,GAAG,CAAC,CAAC,CAAC;IACvE,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"}
1
+ {"version":3,"file":"agentloop.js","sourceRoot":"","sources":["../src/agentloop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAgB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAyB,MAAM,yBAAyB,CAAC;AAGhE;;GAEG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,SAAS,CAC5B,KAAuB,EACvB,OAAqB,EACrB,MAA6B,EAC7B,GAAsB,EACtB,KAAK,GAAG,MAAM,CAAC,iBAAiB;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,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,QAAQ,EAAE,EAAE,CAAC;YACrC,IAAI,IAAI,YAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,CAAC,IAAI,CAAC;YACpB,CAAC;iBAAM,IAAI,IAAI,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,EAAE,GAAG,IAA+B,CAAC;gBAC3C,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;oBAClB,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAM;wBACjC,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC;qBACM,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,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAM,GAAG,CAAC,CAAC,CAAC;IACvE,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"}
@@ -0,0 +1,12 @@
1
+ import type { Pricing } from '#@/engine.ts';
2
+ import Anthropic from '@anthropic-ai/sdk';
3
+ export declare class AnthropicBilling {
4
+ protected ctx: AnthropicBilling.Context;
5
+ constructor(ctx: AnthropicBilling.Context);
6
+ charge(usage: Anthropic.Usage): number;
7
+ }
8
+ export declare namespace AnthropicBilling {
9
+ interface Context {
10
+ pricing: Pricing;
11
+ }
12
+ }
@@ -0,0 +1,15 @@
1
+ import Anthropic from '@anthropic-ai/sdk';
2
+ export class AnthropicBilling {
3
+ ctx;
4
+ constructor(ctx) {
5
+ this.ctx = ctx;
6
+ }
7
+ charge(usage) {
8
+ const cacheHitTokenCount = usage.cache_read_input_tokens || 0;
9
+ const cacheMissTokenCount = usage.input_tokens - cacheHitTokenCount;
10
+ return (this.ctx.pricing.inputPrice * cacheMissTokenCount / 1e6 +
11
+ this.ctx.pricing.cachePrice * cacheHitTokenCount / 1e6 +
12
+ this.ctx.pricing.outputPrice * usage.output_tokens / 1e6);
13
+ }
14
+ }
15
+ //# sourceMappingURL=billing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/api-types/anthropic/billing.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAG1C,MAAM,OAAO,gBAAgB;IACI;IAA7B,YAA6B,GAA6B;QAA7B,QAAG,GAAH,GAAG,CAA0B;IAAG,CAAC;IAEvD,MAAM,CAAC,KAAsB;QAChC,MAAM,kBAAkB,GAAG,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;QAC9D,MAAM,mBAAmB,GAAG,KAAK,CAAC,YAAY,GAAG,kBAAkB,CAAC;QACpE,OAAO,CACH,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,mBAAmB,GAAG,GAAG;YACvD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,kBAAkB,GAAG,GAAG;YACtD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,GAAG,GAAG,CAC3D,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,17 @@
1
+ import { Function } from '#@/function.ts';
2
+ import Anthropic from '@anthropic-ai/sdk';
3
+ export declare class AnthropicToolCodec<in out fdm extends Function.Declaration.Map> {
4
+ protected ctx: AnthropicToolCodec.Context<fdm>;
5
+ constructor(ctx: AnthropicToolCodec.Context<fdm>);
6
+ convertFromFunctionCall(fc: Function.Call.From<fdm>): Anthropic.ToolUseBlock;
7
+ convertToFunctionCall(apifc: Anthropic.ToolUseBlock): Function.Call.From<fdm>;
8
+ convertFromFunctionResponse(fr: Function.Response.Distributive<fdm>): Anthropic.ToolResultBlockParam;
9
+ protected convertFromFunctionDeclarationEntry(fdentry: Function.Declaration.Entry.From<fdm>): Anthropic.Tool;
10
+ convertFromFunctionDeclarationMap(fdm: fdm): Anthropic.Tool[];
11
+ convertFromToolChoice(toolChoice: Function.ToolChoice<fdm>, parallelToolCall: boolean): Anthropic.ToolChoice;
12
+ }
13
+ export declare namespace AnthropicToolCodec {
14
+ interface Context<in out fdm extends Function.Declaration.Map> {
15
+ fdm: fdm;
16
+ }
17
+ }
@@ -0,0 +1,73 @@
1
+ import { Function } from '#@/function.ts';
2
+ import { ResponseInvalid } from '#@/engine.ts';
3
+ import Anthropic from '@anthropic-ai/sdk';
4
+ import Ajv from 'ajv';
5
+ import {} from '@sinclair/typebox';
6
+ const ajv = new Ajv();
7
+ export class AnthropicToolCodec {
8
+ ctx;
9
+ constructor(ctx) {
10
+ this.ctx = ctx;
11
+ }
12
+ convertFromFunctionCall(fc) {
13
+ throw new Error('Anthropic compatible engine requires native function calls.');
14
+ }
15
+ convertToFunctionCall(apifc) {
16
+ const fditem = this.ctx.fdm[apifc.name];
17
+ if (fditem) { }
18
+ else
19
+ throw new ResponseInvalid('Unknown function call', { cause: apifc });
20
+ const args = (() => {
21
+ try {
22
+ return JSON.parse(apifc.input);
23
+ }
24
+ catch {
25
+ throw new ResponseInvalid('Invalid JSON of function call', { cause: apifc });
26
+ }
27
+ })();
28
+ if (ajv.validate(fditem.paraschema, args)) { }
29
+ else
30
+ throw new ResponseInvalid('Function call not conforming to schema', { cause: apifc });
31
+ return Function.Call.create({
32
+ id: apifc.id,
33
+ name: apifc.name,
34
+ args,
35
+ });
36
+ }
37
+ convertFromFunctionResponse(fr) {
38
+ if (fr.id) { }
39
+ else
40
+ throw new Error();
41
+ return {
42
+ type: 'tool_result',
43
+ tool_use_id: fr.id,
44
+ content: fr.text,
45
+ };
46
+ }
47
+ convertFromFunctionDeclarationEntry(fdentry) {
48
+ return {
49
+ name: fdentry[0],
50
+ description: fdentry[1].description,
51
+ input_schema: fdentry[1].paraschema,
52
+ };
53
+ }
54
+ convertFromFunctionDeclarationMap(fdm) {
55
+ const fdentries = Object.entries(fdm);
56
+ return fdentries.map(fdentry => this.convertFromFunctionDeclarationEntry(fdentry));
57
+ }
58
+ convertFromToolChoice(toolChoice, parallelToolCall) {
59
+ if (toolChoice === Function.ToolChoice.NONE)
60
+ return { type: 'none' };
61
+ else if (toolChoice === Function.ToolChoice.REQUIRED)
62
+ return { type: 'any', disable_parallel_tool_use: !parallelToolCall };
63
+ else if (toolChoice === Function.ToolChoice.AUTO)
64
+ return { type: 'auto', disable_parallel_tool_use: !parallelToolCall };
65
+ else {
66
+ if (toolChoice.length === 1) { }
67
+ else
68
+ throw new Error();
69
+ return { type: 'tool', name: toolChoice[0], disable_parallel_tool_use: !parallelToolCall };
70
+ }
71
+ }
72
+ }
73
+ //# sourceMappingURL=tool-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-codec.js","sourceRoot":"","sources":["../../../src/api-types/anthropic/tool-codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import * as Google from '@google/genai';
2
+ import type { Pricing } from '#@/engine.ts';
3
+ export declare class GoogleBilling {
4
+ protected ctx: GoogleBilling.Context;
5
+ constructor(ctx: GoogleBilling.Context);
6
+ charge(usageMetadata: Google.GenerateContentResponseUsageMetadata): number;
7
+ }
8
+ export declare namespace GoogleBilling {
9
+ interface Context {
10
+ pricing: Pricing;
11
+ }
12
+ }
@@ -0,0 +1,24 @@
1
+ import * as Google from '@google/genai';
2
+ import { logger } from '#@/telemetry.ts';
3
+ export class GoogleBilling {
4
+ ctx;
5
+ constructor(ctx) {
6
+ this.ctx = ctx;
7
+ }
8
+ charge(usageMetadata) {
9
+ logger.message.debug(usageMetadata);
10
+ if (usageMetadata.promptTokenCount) { }
11
+ else
12
+ throw new Error('Prompt token count missing.', { cause: usageMetadata });
13
+ const candidatesTokenCount = usageMetadata.candidatesTokenCount ?? 0;
14
+ const cacheHitTokenCount = usageMetadata.cachedContentTokenCount ?? 0;
15
+ const cacheMissTokenCount = usageMetadata.promptTokenCount - cacheHitTokenCount;
16
+ const thinkingTokenCount = usageMetadata.thoughtsTokenCount ?? 0;
17
+ const cost = this.ctx.pricing.inputPrice * cacheMissTokenCount / 1e6 +
18
+ this.ctx.pricing.cachePrice * cacheHitTokenCount / 1e6 +
19
+ this.ctx.pricing.outputPrice * candidatesTokenCount / 1e6 +
20
+ this.ctx.pricing.outputPrice * thinkingTokenCount / 1e6;
21
+ return cost;
22
+ }
23
+ }
24
+ //# sourceMappingURL=billing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/api-types/google/billing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,MAAM,OAAO,aAAa;IACO;IAA7B,YAA6B,GAA0B;QAA1B,QAAG,GAAH,GAAG,CAAuB;IAAG,CAAC;IAEpD,MAAM,CAAC,aAA0D;QACpE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEpC,IAAI,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QACrH,MAAM,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,IAAI,CAAC,CAAC;QACrE,MAAM,kBAAkB,GAAG,aAAa,CAAC,uBAAuB,IAAI,CAAC,CAAC;QACtE,MAAM,mBAAmB,GAAG,aAAa,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;QAChF,MAAM,kBAAkB,GAAG,aAAa,CAAC,kBAAkB,IAAI,CAAC,CAAC;QACjE,MAAM,IAAI,GACN,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,mBAAmB,GAAG,GAAG;YACvD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,kBAAkB,GAAG,GAAG;YACtD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,oBAAoB,GAAG,GAAG;YACzD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,kBAAkB,GAAG,GAAG,CAAC;QAC5D,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -0,0 +1,8 @@
1
+ import * as Google from '@google/genai';
2
+ export interface GoogleRestfulRequest {
3
+ contents: Google.Content[];
4
+ tools?: Google.Tool[];
5
+ toolConfig?: Google.ToolConfig;
6
+ systemInstruction?: Google.Content;
7
+ generationConfig?: Google.GenerationConfig;
8
+ }
@@ -0,0 +1,2 @@
1
+ import * as Google from '@google/genai';
2
+ //# sourceMappingURL=restful-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restful-request.js","sourceRoot":"","sources":["../../../src/api-types/google/restful-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Function } from '#@/function.ts';
2
+ import * as Google from '@google/genai';
3
+ export declare class GoogleToolCodec<in out fdm extends Function.Declaration.Map> {
4
+ protected ctx: GoogleToolCodec.Context<fdm>;
5
+ constructor(ctx: GoogleToolCodec.Context<fdm>);
6
+ convertFromFunctionCall(fc: Function.Call.From<fdm>): Google.FunctionCall;
7
+ convertFromFunctionDeclarationMap(fdm: fdm): Google.FunctionDeclaration[];
8
+ protected convertFromFunctionDeclarationEntry(fdentry: Function.Declaration.Entry.From<fdm>): Google.FunctionDeclaration;
9
+ convertToFunctionCall(googlefc: Google.FunctionCall): Function.Call.From<fdm>;
10
+ convertFromToolChoice(toolChoice: Function.ToolChoice<fdm>): Google.FunctionCallingConfig;
11
+ }
12
+ export declare namespace GoogleToolCodec {
13
+ interface Context<in out fdm extends Function.Declaration.Map> {
14
+ fdm: fdm;
15
+ }
16
+ }
@@ -1,32 +1,25 @@
1
- import { ResponseInvalid } from "../engine.js";
2
- import { Function } from "../function.js";
1
+ import { ResponseInvalid } from '#@/engine.ts';
2
+ import { Function } from '#@/function.ts';
3
3
  import * as Google from '@google/genai';
4
4
  import Ajv from 'ajv';
5
5
  const ajv = new Ajv();
6
- export var GoogleEngine;
7
- (function (GoogleEngine) {
8
- let OwnProps;
9
- (function (OwnProps) {
10
- function init(options) {
11
- const parallelToolCall = options.parallelToolCall ?? true;
12
- if (parallelToolCall) { }
13
- else
14
- throw new Error('Google API requires parallel tool calls.');
15
- return {
16
- parallelToolCall,
17
- };
18
- }
19
- OwnProps.init = init;
20
- })(OwnProps = GoogleEngine.OwnProps || (GoogleEngine.OwnProps = {}));
21
- function convertFromFunctionCall(fc) {
6
+ export class GoogleToolCodec {
7
+ ctx;
8
+ constructor(ctx) {
9
+ this.ctx = ctx;
10
+ }
11
+ convertFromFunctionCall(fc) {
22
12
  return {
23
13
  id: fc.id,
24
14
  name: fc.name,
25
15
  args: fc.args,
26
16
  };
27
17
  }
28
- GoogleEngine.convertFromFunctionCall = convertFromFunctionCall;
29
- function convertFromFunctionDeclarationEntry(fdentry) {
18
+ convertFromFunctionDeclarationMap(fdm) {
19
+ const fdentries = Object.entries(fdm);
20
+ return fdentries.map(fdentry => this.convertFromFunctionDeclarationEntry(fdentry));
21
+ }
22
+ convertFromFunctionDeclarationEntry(fdentry) {
30
23
  const json = JSON.stringify(fdentry[1].paraschema);
31
24
  const parsed = JSON.parse(json, (key, value) => {
32
25
  if (key === 'type' && typeof value === 'string') {
@@ -54,12 +47,11 @@ export var GoogleEngine;
54
47
  parameters: parsed,
55
48
  };
56
49
  }
57
- GoogleEngine.convertFromFunctionDeclarationEntry = convertFromFunctionDeclarationEntry;
58
- function convertToFunctionCall(googlefc) {
50
+ convertToFunctionCall(googlefc) {
59
51
  if (googlefc.name) { }
60
52
  else
61
53
  throw new Error();
62
- const fditem = this.fdm[googlefc.name];
54
+ const fditem = this.ctx.fdm[googlefc.name];
63
55
  if (fditem) { }
64
56
  else
65
57
  throw new ResponseInvalid('Unknown function call', { cause: googlefc });
@@ -72,6 +64,15 @@ export var GoogleEngine;
72
64
  args: googlefc.args,
73
65
  });
74
66
  }
75
- GoogleEngine.convertToFunctionCall = convertToFunctionCall;
76
- })(GoogleEngine || (GoogleEngine = {}));
77
- //# sourceMappingURL=google.js.map
67
+ convertFromToolChoice(toolChoice) {
68
+ if (toolChoice === Function.ToolChoice.NONE)
69
+ return { mode: Google.FunctionCallingConfigMode.NONE };
70
+ else if (toolChoice === Function.ToolChoice.REQUIRED)
71
+ return { mode: Google.FunctionCallingConfigMode.ANY };
72
+ else if (toolChoice === Function.ToolChoice.AUTO)
73
+ return { mode: Google.FunctionCallingConfigMode.AUTO };
74
+ else
75
+ return { mode: Google.FunctionCallingConfigMode.ANY, allowedFunctionNames: [...toolChoice] };
76
+ }
77
+ }
78
+ //# sourceMappingURL=tool-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-codec.js","sourceRoot":"","sources":["../../../src/api-types/google/tool-codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Pricing } from '#@/engine.ts';
2
+ import OpenAI from 'openai';
3
+ import { Function } from '#@/function.ts';
4
+ export declare class OpenAIChatCompletionsBilling<in out fdm extends Function.Declaration.Map> {
5
+ protected ctx: OpenAIChatCompletionsBilling.Context;
6
+ constructor(ctx: OpenAIChatCompletionsBilling.Context);
7
+ charge(usage: OpenAI.CompletionUsage): number;
8
+ }
9
+ export declare namespace OpenAIChatCompletionsBilling {
10
+ interface Context {
11
+ pricing: Pricing;
12
+ }
13
+ }
@@ -0,0 +1,16 @@
1
+ import OpenAI from 'openai';
2
+ import { Function } from '#@/function.ts';
3
+ export class OpenAIChatCompletionsBilling {
4
+ ctx;
5
+ constructor(ctx) {
6
+ this.ctx = ctx;
7
+ }
8
+ charge(usage) {
9
+ const cacheHitTokenCount = usage.prompt_tokens_details?.cached_tokens ?? 0;
10
+ const cacheMissTokenCount = usage.prompt_tokens - cacheHitTokenCount;
11
+ return (this.ctx.pricing.inputPrice * cacheMissTokenCount / 1e6 +
12
+ this.ctx.pricing.cachePrice * cacheHitTokenCount / 1e6 +
13
+ this.ctx.pricing.outputPrice * usage.completion_tokens / 1e6);
14
+ }
15
+ }
16
+ //# sourceMappingURL=billing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/api-types/openai-chatcompletion/billing.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAO,4BAA4B;IACR;IAA7B,YAA6B,GAAyC;QAAzC,QAAG,GAAH,GAAG,CAAsC;IAAG,CAAC;IAEnE,MAAM,CAAC,KAA6B;QACvC,MAAM,kBAAkB,GAAG,KAAK,CAAC,qBAAqB,EAAE,aAAa,IAAI,CAAC,CAAC;QAC3E,MAAM,mBAAmB,GAAG,KAAK,CAAC,aAAa,GAAG,kBAAkB,CAAC;QACrE,OAAO,CACH,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,mBAAmB,GAAG,GAAG;YACvD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,kBAAkB,GAAG,GAAG;YACtD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAC/D,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,18 @@
1
+ import { Function } from '#@/function.ts';
2
+ import OpenAI from 'openai';
3
+ export declare class OpenAIChatCompletionsToolCodec<in out fdm extends Function.Declaration.Map> {
4
+ protected ctx: OpenAIChatCompletionsToolCodec.Context<fdm>;
5
+ constructor(ctx: OpenAIChatCompletionsToolCodec.Context<fdm>);
6
+ convertFromFunctionCall(fc: Function.Call.From<fdm>): OpenAI.ChatCompletionMessageToolCall;
7
+ convertToFunctionCall(apifc: OpenAI.ChatCompletionMessageFunctionToolCall): Function.Call.From<fdm>;
8
+ convertFromFunctionResponse(fr: Function.Response.Distributive<fdm>): OpenAI.ChatCompletionToolMessageParam;
9
+ protected convertFromFunctionDeclarationEntry(fdentry: Function.Declaration.Entry.From<fdm>): OpenAI.ChatCompletionTool;
10
+ convertFromFunctionDeclarationMap(fdm: fdm): OpenAI.ChatCompletionTool[];
11
+ convertFromToolChoice(toolChoice: Function.ToolChoice<fdm>): OpenAI.ChatCompletionToolChoiceOption;
12
+ }
13
+ export declare namespace OpenAIChatCompletionsToolCodec {
14
+ interface Context<in out fdm extends Function.Declaration.Map> {
15
+ parallelToolCall: boolean;
16
+ fdm: fdm;
17
+ }
18
+ }