@zimtsui/typechat 0.0.98 → 0.0.99

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 (258) hide show
  1. package/DEVELOPMENT.md +3 -8
  2. package/README.md +5 -177
  3. package/assets/verbatim/instruction.md +1 -1
  4. package/assets/verbatim/response.handlebars +1 -1
  5. package/build/adaptor.d.ts +9 -9
  6. package/build/adaptor.js +15 -17
  7. package/build/adaptor.js.map +1 -1
  8. package/build/endpoint-spec.d.ts +1 -1
  9. package/build/endpoint-spec.js +1 -1
  10. package/build/engine/message.d.ts +75 -0
  11. package/build/engine/message.js +165 -0
  12. package/build/engine/message.js.map +1 -0
  13. package/build/engine/middleware.d.ts +11 -0
  14. package/build/engine/middleware.js +1 -0
  15. package/build/engine/middleware.js.map +1 -0
  16. package/build/engine/parts-validator.d.ts +9 -0
  17. package/build/engine/parts-validator.js +11 -0
  18. package/build/engine/parts-validator.js.map +1 -0
  19. package/build/engine/recoverable.d.ts +13 -0
  20. package/build/engine/recoverable.js +29 -0
  21. package/build/engine/recoverable.js.map +1 -0
  22. package/build/engine/session.d.ts +8 -32
  23. package/build/engine/session.js +0 -19
  24. package/build/engine/session.js.map +1 -1
  25. package/build/engine/structuring-validator.d.ts +15 -0
  26. package/build/engine/structuring-validator.js +64 -0
  27. package/build/engine/structuring-validator.js.map +1 -0
  28. package/build/engine/transport.d.ts +6 -3
  29. package/build/engine.d.ts +40 -39
  30. package/build/engine.js +100 -64
  31. package/build/engine.js.map +1 -1
  32. package/build/engines/anthropic/billing.js.map +1 -0
  33. package/build/engines/anthropic/message-codec.d.ts +22 -0
  34. package/build/engines/anthropic/message-codec.js +79 -0
  35. package/build/engines/anthropic/message-codec.js.map +1 -0
  36. package/build/engines/anthropic/message.d.ts +22 -0
  37. package/build/engines/anthropic/message.js +25 -0
  38. package/build/engines/anthropic/message.js.map +1 -0
  39. package/build/{compatible-engine.d/anthropic/choice-codec.d.ts → engines/anthropic/structuring-choice-codec.d.ts} +2 -2
  40. package/build/engines/anthropic/structuring-choice-codec.js +23 -0
  41. package/build/engines/anthropic/structuring-choice-codec.js.map +1 -0
  42. package/build/{api-types → engines}/anthropic/tool-codec.d.ts +5 -4
  43. package/build/{api-types → engines}/anthropic/tool-codec.js +16 -14
  44. package/build/engines/anthropic/tool-codec.js.map +1 -0
  45. package/build/engines/anthropic/transport.d.ts +37 -0
  46. package/build/{compatible-engine.d → engines}/anthropic/transport.js +8 -12
  47. package/build/engines/anthropic/transport.js.map +1 -0
  48. package/build/engines/anthropic.d.ts +22 -0
  49. package/build/engines/anthropic.js +46 -0
  50. package/build/engines/anthropic.js.map +1 -0
  51. package/build/engines/google/billing.js.map +1 -0
  52. package/build/engines/google/message-codec.d.ts +24 -0
  53. package/build/engines/google/message-codec.js +113 -0
  54. package/build/engines/google/message-codec.js.map +1 -0
  55. package/build/engines/google/message.d.ts +37 -0
  56. package/build/engines/google/message.js +58 -0
  57. package/build/engines/google/message.js.map +1 -0
  58. package/build/engines/google/restful-request.js.map +1 -0
  59. package/build/{compatible-engine.d/google/choice-codec.d.ts → engines/google/structuring-choice-codec.d.ts} +2 -2
  60. package/build/engines/google/structuring-choice-codec.js +23 -0
  61. package/build/engines/google/structuring-choice-codec.js.map +1 -0
  62. package/build/{api-types → engines}/google/tool-codec.d.ts +5 -4
  63. package/build/{api-types → engines}/google/tool-codec.js +15 -13
  64. package/build/engines/google/tool-codec.js.map +1 -0
  65. package/build/{native-engines.d → engines}/google/transport.d.ts +13 -14
  66. package/build/{native-engines.d → engines}/google/transport.js +18 -13
  67. package/build/engines/google/transport.js.map +1 -0
  68. package/build/engines/google.d.ts +41 -0
  69. package/build/engines/google.js +151 -0
  70. package/build/engines/google.js.map +1 -0
  71. package/build/engines/openai-chatcompletions/billing.js.map +1 -0
  72. package/build/engines/openai-chatcompletions/message-codec.d.ts +22 -0
  73. package/build/engines/openai-chatcompletions/message-codec.js +80 -0
  74. package/build/engines/openai-chatcompletions/message-codec.js.map +1 -0
  75. package/build/{compatible-engine.d/openai-chatcompletions/choice-codec.d.ts → engines/openai-chatcompletions/structuring-choice-codec.d.ts} +2 -2
  76. package/build/engines/openai-chatcompletions/structuring-choice-codec.js +22 -0
  77. package/build/engines/openai-chatcompletions/structuring-choice-codec.js.map +1 -0
  78. package/build/engines/openai-chatcompletions/tool-codec.d.ts +17 -0
  79. package/build/{api-types → engines}/openai-chatcompletions/tool-codec.js +19 -17
  80. package/build/engines/openai-chatcompletions/tool-codec.js.map +1 -0
  81. package/build/{compatible-engine.d → engines}/openai-chatcompletions/transport.d.ts +13 -15
  82. package/build/{compatible-engine.d → engines}/openai-chatcompletions/transport.js +8 -18
  83. package/build/engines/openai-chatcompletions/transport.js.map +1 -0
  84. package/build/engines/openai-chatcompletions.d.ts +22 -0
  85. package/build/engines/openai-chatcompletions.js +48 -0
  86. package/build/engines/openai-chatcompletions.js.map +1 -0
  87. package/build/engines/openai-responses/billing.js.map +1 -0
  88. package/build/engines/openai-responses/message-codec.d.ts +24 -0
  89. package/build/{compatible-engine.d → engines}/openai-responses/message-codec.js +55 -51
  90. package/build/engines/openai-responses/message-codec.js.map +1 -0
  91. package/build/engines/openai-responses/message.d.ts +25 -0
  92. package/build/engines/openai-responses/message.js +43 -0
  93. package/build/engines/openai-responses/message.js.map +1 -0
  94. package/build/engines/openai-responses/structuring-choice-codec.d.ts +3 -0
  95. package/build/engines/openai-responses/structuring-choice-codec.js +22 -0
  96. package/build/engines/openai-responses/structuring-choice-codec.js.map +1 -0
  97. package/build/engines/openai-responses/structuring-validator.d.ts +12 -0
  98. package/build/engines/openai-responses/structuring-validator.js +64 -0
  99. package/build/engines/openai-responses/structuring-validator.js.map +1 -0
  100. package/build/engines/openai-responses/tool-codec.d.ts +17 -0
  101. package/build/{api-types → engines}/openai-responses/tool-codec.js +19 -17
  102. package/build/engines/openai-responses/tool-codec.js.map +1 -0
  103. package/build/{native-engines.d → engines}/openai-responses/tool.d.ts +1 -3
  104. package/build/{native-engines.d → engines}/openai-responses/tool.js +3 -3
  105. package/build/engines/openai-responses/tool.js.map +1 -0
  106. package/build/{compatible-engine.d → engines}/openai-responses/transport.d.ts +16 -12
  107. package/build/{native-engines.d → engines}/openai-responses/transport.js +11 -9
  108. package/build/engines/openai-responses/transport.js.map +1 -0
  109. package/build/engines/openai-responses.d.ts +41 -0
  110. package/build/engines/openai-responses.js +134 -0
  111. package/build/engines/openai-responses.js.map +1 -0
  112. package/build/exports.d.ts +5 -5
  113. package/build/exports.js +5 -5
  114. package/build/exports.js.map +1 -1
  115. package/build/function.d.ts +7 -7
  116. package/build/function.js +19 -19
  117. package/build/function.js.map +1 -1
  118. package/build/repetition.d.ts +2 -2
  119. package/build/repetition.js +21 -20
  120. package/build/repetition.js.map +1 -1
  121. package/build/structuring-choice.d.ts +15 -0
  122. package/build/structuring-choice.js +18 -0
  123. package/build/structuring-choice.js.map +1 -0
  124. package/build/tsconfig.tsbuildinfo +1 -1
  125. package/build/verbatim/codec/declarations.js +0 -2
  126. package/build/verbatim/codec/declarations.js.map +1 -1
  127. package/build/verbatim/codec/quotation.js +0 -3
  128. package/build/verbatim/codec/quotation.js.map +1 -1
  129. package/build/verbatim/codec/request.js +4 -4
  130. package/build/verbatim/codec/request.js.map +1 -1
  131. package/build/verbatim/codec/response.js +0 -3
  132. package/build/verbatim/codec/response.js.map +1 -1
  133. package/package.json +2 -4
  134. package/build/api-types/anthropic/billing.js.map +0 -1
  135. package/build/api-types/anthropic/tool-codec.js.map +0 -1
  136. package/build/api-types/google/billing.js.map +0 -1
  137. package/build/api-types/google/restful-request.js.map +0 -1
  138. package/build/api-types/google/tool-codec.js.map +0 -1
  139. package/build/api-types/openai-chatcompletions/billing.js.map +0 -1
  140. package/build/api-types/openai-chatcompletions/tool-codec.d.ts +0 -16
  141. package/build/api-types/openai-chatcompletions/tool-codec.js.map +0 -1
  142. package/build/api-types/openai-responses/billing.js.map +0 -1
  143. package/build/api-types/openai-responses/tool-codec.d.ts +0 -16
  144. package/build/api-types/openai-responses/tool-codec.js.map +0 -1
  145. package/build/compatible-engine/session.d.ts +0 -56
  146. package/build/compatible-engine/session.js +0 -85
  147. package/build/compatible-engine/session.js.map +0 -1
  148. package/build/compatible-engine/structuring.d.ts +0 -36
  149. package/build/compatible-engine/structuring.js +0 -34
  150. package/build/compatible-engine/structuring.js.map +0 -1
  151. package/build/compatible-engine/validation.d.ts +0 -28
  152. package/build/compatible-engine/validation.js +0 -104
  153. package/build/compatible-engine/validation.js.map +0 -1
  154. package/build/compatible-engine.d/agentloop.d.ts +0 -12
  155. package/build/compatible-engine.d/agentloop.js +0 -52
  156. package/build/compatible-engine.d/agentloop.js.map +0 -1
  157. package/build/compatible-engine.d/anthropic/choice-codec.js +0 -27
  158. package/build/compatible-engine.d/anthropic/choice-codec.js.map +0 -1
  159. package/build/compatible-engine.d/anthropic/message-codec.d.ts +0 -34
  160. package/build/compatible-engine.d/anthropic/message-codec.js +0 -85
  161. package/build/compatible-engine.d/anthropic/message-codec.js.map +0 -1
  162. package/build/compatible-engine.d/anthropic/transport.d.ts +0 -38
  163. package/build/compatible-engine.d/anthropic/transport.js.map +0 -1
  164. package/build/compatible-engine.d/anthropic.d.ts +0 -25
  165. package/build/compatible-engine.d/anthropic.js +0 -47
  166. package/build/compatible-engine.d/anthropic.js.map +0 -1
  167. package/build/compatible-engine.d/google/choice-codec.js +0 -27
  168. package/build/compatible-engine.d/google/choice-codec.js.map +0 -1
  169. package/build/compatible-engine.d/google/message-codec.d.ts +0 -34
  170. package/build/compatible-engine.d/google/message-codec.js +0 -95
  171. package/build/compatible-engine.d/google/message-codec.js.map +0 -1
  172. package/build/compatible-engine.d/google/transport.d.ts +0 -35
  173. package/build/compatible-engine.d/google/transport.js +0 -97
  174. package/build/compatible-engine.d/google/transport.js.map +0 -1
  175. package/build/compatible-engine.d/google.d.ts +0 -25
  176. package/build/compatible-engine.d/google.js +0 -64
  177. package/build/compatible-engine.d/google.js.map +0 -1
  178. package/build/compatible-engine.d/openai-chatcompletions/choice-codec.js +0 -31
  179. package/build/compatible-engine.d/openai-chatcompletions/choice-codec.js.map +0 -1
  180. package/build/compatible-engine.d/openai-chatcompletions/message-codec.d.ts +0 -22
  181. package/build/compatible-engine.d/openai-chatcompletions/message-codec.js +0 -68
  182. package/build/compatible-engine.d/openai-chatcompletions/message-codec.js.map +0 -1
  183. package/build/compatible-engine.d/openai-chatcompletions/transport.js.map +0 -1
  184. package/build/compatible-engine.d/openai-chatcompletions.d.ts +0 -25
  185. package/build/compatible-engine.d/openai-chatcompletions.js +0 -49
  186. package/build/compatible-engine.d/openai-chatcompletions.js.map +0 -1
  187. package/build/compatible-engine.d/openai-responses/choice-codec.d.ts +0 -5
  188. package/build/compatible-engine.d/openai-responses/choice-codec.js +0 -30
  189. package/build/compatible-engine.d/openai-responses/choice-codec.js.map +0 -1
  190. package/build/compatible-engine.d/openai-responses/message-codec.d.ts +0 -36
  191. package/build/compatible-engine.d/openai-responses/message-codec.js.map +0 -1
  192. package/build/compatible-engine.d/openai-responses/transport.js +0 -91
  193. package/build/compatible-engine.d/openai-responses/transport.js.map +0 -1
  194. package/build/compatible-engine.d/openai-responses.d.ts +0 -25
  195. package/build/compatible-engine.d/openai-responses.js +0 -47
  196. package/build/compatible-engine.d/openai-responses.js.map +0 -1
  197. package/build/compatible-engine.d.ts +0 -27
  198. package/build/compatible-engine.js +0 -34
  199. package/build/compatible-engine.js.map +0 -1
  200. package/build/engine/validation.d.ts +0 -6
  201. package/build/engine/validation.js +0 -1
  202. package/build/engine/validation.js.map +0 -1
  203. package/build/native-engines.d/google/message-codec.d.ts +0 -26
  204. package/build/native-engines.d/google/message-codec.js +0 -70
  205. package/build/native-engines.d/google/message-codec.js.map +0 -1
  206. package/build/native-engines.d/google/session.d.ts +0 -58
  207. package/build/native-engines.d/google/session.js +0 -101
  208. package/build/native-engines.d/google/session.js.map +0 -1
  209. package/build/native-engines.d/google/transport.js.map +0 -1
  210. package/build/native-engines.d/google/validation.d.ts +0 -28
  211. package/build/native-engines.d/google/validation.js +0 -26
  212. package/build/native-engines.d/google/validation.js.map +0 -1
  213. package/build/native-engines.d/google.d/agentloop.d.ts +0 -12
  214. package/build/native-engines.d/google.d/agentloop.js +0 -57
  215. package/build/native-engines.d/google.d/agentloop.js.map +0 -1
  216. package/build/native-engines.d/google.d/exports.d.ts +0 -2
  217. package/build/native-engines.d/google.d/exports.js +0 -3
  218. package/build/native-engines.d/google.d/exports.js.map +0 -1
  219. package/build/native-engines.d/google.d.ts +0 -44
  220. package/build/native-engines.d/google.js +0 -100
  221. package/build/native-engines.d/google.js.map +0 -1
  222. package/build/native-engines.d/openai-responses/choice-codec.d.ts +0 -5
  223. package/build/native-engines.d/openai-responses/choice-codec.js +0 -30
  224. package/build/native-engines.d/openai-responses/choice-codec.js.map +0 -1
  225. package/build/native-engines.d/openai-responses/message-codec.d.ts +0 -25
  226. package/build/native-engines.d/openai-responses/message-codec.js +0 -99
  227. package/build/native-engines.d/openai-responses/message-codec.js.map +0 -1
  228. package/build/native-engines.d/openai-responses/session.d.ts +0 -61
  229. package/build/native-engines.d/openai-responses/session.js +0 -86
  230. package/build/native-engines.d/openai-responses/session.js.map +0 -1
  231. package/build/native-engines.d/openai-responses/structuring.d.ts +0 -19
  232. package/build/native-engines.d/openai-responses/structuring.js +0 -19
  233. package/build/native-engines.d/openai-responses/structuring.js.map +0 -1
  234. package/build/native-engines.d/openai-responses/tool.js.map +0 -1
  235. package/build/native-engines.d/openai-responses/transport.d.ts +0 -40
  236. package/build/native-engines.d/openai-responses/transport.js.map +0 -1
  237. package/build/native-engines.d/openai-responses/validation.d.ts +0 -28
  238. package/build/native-engines.d/openai-responses/validation.js +0 -101
  239. package/build/native-engines.d/openai-responses/validation.js.map +0 -1
  240. package/build/native-engines.d/openai-responses.d/agentloop.d.ts +0 -12
  241. package/build/native-engines.d/openai-responses.d/agentloop.js +0 -61
  242. package/build/native-engines.d/openai-responses.d/agentloop.js.map +0 -1
  243. package/build/native-engines.d/openai-responses.d/exports.d.ts +0 -2
  244. package/build/native-engines.d/openai-responses.d/exports.js +0 -3
  245. package/build/native-engines.d/openai-responses.d/exports.js.map +0 -1
  246. package/build/native-engines.d/openai-responses.d.ts +0 -46
  247. package/build/native-engines.d/openai-responses.js +0 -82
  248. package/build/native-engines.d/openai-responses.js.map +0 -1
  249. /package/build/{api-types → engines}/anthropic/billing.d.ts +0 -0
  250. /package/build/{api-types → engines}/anthropic/billing.js +0 -0
  251. /package/build/{api-types → engines}/google/billing.d.ts +0 -0
  252. /package/build/{api-types → engines}/google/billing.js +0 -0
  253. /package/build/{api-types → engines}/google/restful-request.d.ts +0 -0
  254. /package/build/{api-types → engines}/google/restful-request.js +0 -0
  255. /package/build/{api-types → engines}/openai-chatcompletions/billing.d.ts +0 -0
  256. /package/build/{api-types → engines}/openai-chatcompletions/billing.js +0 -0
  257. /package/build/{api-types → engines}/openai-responses/billing.d.ts +0 -0
  258. /package/build/{api-types → engines}/openai-responses/billing.js +0 -0
@@ -0,0 +1,151 @@
1
+ import { Engine } from "../engine.js";
2
+ import { Function } from "../function.js";
3
+ import { MessageCodec } from "./google/message-codec.js";
4
+ import { ToolCodec } from "./google/tool-codec.js";
5
+ import { Billing } from "./google/billing.js";
6
+ import { env } from 'node:process';
7
+ import { Agent, ProxyAgent } from 'undici';
8
+ import { StructuringValidator } from "../engine/structuring-validator.js";
9
+ import { Transport } from "./google/transport.js";
10
+ import * as MessageModule from "./google/message.js";
11
+ export var GoogleEngine;
12
+ (function (GoogleEngine) {
13
+ class Instance extends Engine.Instance {
14
+ options;
15
+ toolCodec;
16
+ messageCodec;
17
+ billing;
18
+ transport;
19
+ structuringValidator;
20
+ codeExecution;
21
+ urlContext;
22
+ googleSearch;
23
+ constructor(options) {
24
+ super(options);
25
+ this.options = options;
26
+ this.codeExecution = options.codeExecution ?? false;
27
+ this.urlContext = options.urlContext ?? false;
28
+ this.googleSearch = options.googleSearch ?? false;
29
+ const proxyUrl = options.endpointSpec.proxy || env.https_proxy || env.HTTPS_PROXY;
30
+ this.providerSpecs.dispatcher = proxyUrl
31
+ ? new ProxyAgent({
32
+ uri: proxyUrl,
33
+ headersTimeout: 0,
34
+ bodyTimeout: 0,
35
+ })
36
+ : new Agent({
37
+ headersTimeout: 0,
38
+ bodyTimeout: 0,
39
+ });
40
+ if (options.endpointSpec.parallelToolCall === false)
41
+ throw new Error('Parallel tool calling is required by Google engine.');
42
+ this.toolCodec = new ToolCodec({
43
+ fdm: this.fdm,
44
+ });
45
+ this.messageCodec = new MessageCodec({
46
+ toolCodec: this.toolCodec,
47
+ vdm: this.vdm,
48
+ codeExecution: this.codeExecution,
49
+ });
50
+ this.billing = new Billing({ pricing: this.pricing });
51
+ this.transport = new Transport({
52
+ inferenceParams: this.inferenceOptions,
53
+ providerSpec: this.providerSpecs,
54
+ fdm: this.fdm,
55
+ throttle: this.throttle,
56
+ structuringChoice: this.structuringChoice,
57
+ codeExecution: this.codeExecution,
58
+ urlContext: this.urlContext,
59
+ googleSearch: this.googleSearch,
60
+ messageCodec: this.messageCodec,
61
+ toolCodec: this.toolCodec,
62
+ billing: this.billing,
63
+ });
64
+ this.structuringValidator = new StructuringValidator({ structuringChoice: this.structuringChoice });
65
+ }
66
+ clone() {
67
+ const engine = new GoogleEngine.Instance(this.options);
68
+ engine.middlewaresStateless = [...this.middlewaresStateless];
69
+ engine.middlewaresStateful = [...this.middlewaresStateful];
70
+ return engine;
71
+ }
72
+ async infer(wfctx, session) {
73
+ return await super.infer(wfctx, session);
74
+ }
75
+ async stateless(wfctx, session) {
76
+ return await super.stateless(wfctx, session);
77
+ }
78
+ async stateful(wfctx, session) {
79
+ return await super.stateful(wfctx, session);
80
+ }
81
+ useStateless(middleware) {
82
+ return super.useStateless(middleware);
83
+ }
84
+ useStateful(middleware) {
85
+ return super.useStateful(middleware);
86
+ }
87
+ /**
88
+ * @param session mutable
89
+ */
90
+ async *agentloop(wfctx, session, fnm, vhm, limit = Number.POSITIVE_INFINITY) {
91
+ for (let i = 0; i < limit; i++) {
92
+ const response = await this.stateful(wfctx, session);
93
+ if (response.allChat())
94
+ return response.getChat();
95
+ const pfress = [];
96
+ const pvress = [];
97
+ for (const part of response.getParts()) {
98
+ if (part instanceof Engine.RoleMessage.Ai.Part.Text) {
99
+ const textPart = part;
100
+ yield textPart.text;
101
+ for (const vreq of textPart.vreqs) {
102
+ const vh = vhm[vreq.name];
103
+ pvress.push((async () => new GoogleEngine.RoleMessage.User.Part.Text(await vh.call(vhm, vreq.args)))());
104
+ }
105
+ }
106
+ else if (part instanceof Function.Call) {
107
+ const fcall = part;
108
+ const f = fnm[fcall.name];
109
+ pfress.push((async () => {
110
+ try {
111
+ return Function.Response.Successful.of({
112
+ id: fcall.id,
113
+ name: fcall.name,
114
+ text: await f.call(fnm, fcall.args),
115
+ });
116
+ }
117
+ catch (e) {
118
+ if (e instanceof Function.Error) { }
119
+ else
120
+ throw e;
121
+ return Function.Response.Failed.of({
122
+ id: fcall.id,
123
+ name: fcall.name,
124
+ error: e.message,
125
+ });
126
+ }
127
+ })());
128
+ }
129
+ else if (part instanceof GoogleEngine.RoleMessage.Ai.Part.ExecutableCode) {
130
+ yield GoogleEngine.RoleMessage.Ai.encodeExecutableCodePart(part);
131
+ }
132
+ else if (part instanceof GoogleEngine.RoleMessage.Ai.Part.CodeExecutionResult) {
133
+ yield GoogleEngine.RoleMessage.Ai.encodeCodeExecutionResultPart(part);
134
+ }
135
+ else
136
+ throw new Error();
137
+ }
138
+ const fress = await Promise.all(pfress);
139
+ const vress = await Promise.all(pvress);
140
+ session.chatMessages.push(new GoogleEngine.RoleMessage.User([...fress, ...vress]));
141
+ }
142
+ throw new Engine.FunctionCallLimitExceeded('Function call limit exceeded.');
143
+ }
144
+ }
145
+ GoogleEngine.Instance = Instance;
146
+ GoogleEngine.create = function (options) {
147
+ return new Instance(options);
148
+ };
149
+ GoogleEngine.RoleMessage = MessageModule.RoleMessage;
150
+ })(GoogleEngine || (GoogleEngine = {}));
151
+ //# sourceMappingURL=google.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/engines/google.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/engines/openai-chatcompletions/billing.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,OAAO;IACN,OAAO,CAAU;IAC3B,YAAmB,OAAwB;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACnC,CAAC;IAEM,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,OAAO,CAAC,UAAU,GAAG,mBAAmB,GAAG,GAAG;YACnD,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,kBAAkB,GAAG,GAAG;YAClD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAC3D,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,22 @@
1
+ import { Engine } from '../../engine.ts';
2
+ import { Function } from '../../function.ts';
3
+ import OpenAI from 'openai';
4
+ import type { ToolCodec } from './tool-codec.ts';
5
+ import type { Verbatim } from '../../verbatim.ts';
6
+ export declare class MessageCodec<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
7
+ protected toolCodec: ToolCodec<fdm>;
8
+ protected vdm: vdm;
9
+ constructor(options: MessageCodec.Options<fdm, vdm>);
10
+ decodeAiMessage(message: OpenAI.ChatCompletionMessage): Engine.RoleMessage.Ai.From<fdm, vdm>;
11
+ encodeDeveloperMessage(developerMessage: Engine.RoleMessage.Developer): OpenAI.ChatCompletionSystemMessageParam;
12
+ encodeUserMessage(userMessage: Engine.RoleMessage.User.From<fdm>): [OpenAI.ChatCompletionUserMessageParam] | OpenAI.ChatCompletionToolMessageParam[];
13
+ encodeAiMessage(aiMessage: Engine.RoleMessage.Ai.From<fdm, vdm>): OpenAI.ChatCompletionAssistantMessageParam;
14
+ encodeRoleMessage(roleMessage: Engine.Session.ChatMessage.From<fdm, vdm> | Engine.RoleMessage.Developer): OpenAI.ChatCompletionMessageParam[];
15
+ encodeRoleMessages(chatMessages: (Engine.Session.ChatMessage.From<fdm, vdm> | Engine.RoleMessage.Developer)[]): OpenAI.ChatCompletionMessageParam[];
16
+ }
17
+ export declare namespace MessageCodec {
18
+ interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
19
+ toolCodec: ToolCodec<fdm>;
20
+ vdm: vdm;
21
+ }
22
+ }
@@ -0,0 +1,80 @@
1
+ import { Engine } from "../../engine.js";
2
+ import { Function } from "../../function.js";
3
+ import * as VerbatimCodec from "../../verbatim/codec.js";
4
+ export class MessageCodec {
5
+ toolCodec;
6
+ vdm;
7
+ constructor(options) {
8
+ this.toolCodec = options.toolCodec;
9
+ this.vdm = options.vdm;
10
+ }
11
+ decodeAiMessage(message) {
12
+ const parts = [];
13
+ if (message.content) {
14
+ const vreqs = VerbatimCodec.Request.decode(message.content, this.vdm);
15
+ parts.push(new Engine.RoleMessage.Ai.Part.Text(message.content, vreqs));
16
+ }
17
+ if (message.tool_calls)
18
+ for (const apifc of message.tool_calls)
19
+ if (apifc.type === 'function')
20
+ parts.push(this.toolCodec.decodeFunctionCall(apifc));
21
+ else
22
+ throw new Error();
23
+ if (parts.length)
24
+ return new Engine.RoleMessage.Ai(parts);
25
+ else
26
+ throw new SyntaxError('Content or tool calls not found in Response', { cause: message });
27
+ }
28
+ encodeDeveloperMessage(developerMessage) {
29
+ return {
30
+ role: 'system',
31
+ content: developerMessage.getOnlyTextParts().map(part => part.text).join(''),
32
+ };
33
+ }
34
+ encodeUserMessage(userMessage) {
35
+ const textParts = userMessage.getTextParts();
36
+ const fress = userMessage.getFunctionResponses();
37
+ if (textParts.length && !fress.length)
38
+ return [{ role: 'user', content: textParts.map(part => ({ type: 'text', text: part.text })) }];
39
+ else if (!textParts.length && fress.length)
40
+ return fress.map(fres => this.toolCodec.encodeFunctionResponse(fres));
41
+ else if (textParts.length && fress.length)
42
+ throw new Error('Mixed text and function response parts in user message are not supported by OpenAI ChatCompletions API.');
43
+ else
44
+ throw new Error('Unsupported user message type.');
45
+ }
46
+ encodeAiMessage(aiMessage) {
47
+ const parts = aiMessage.getParts();
48
+ const textParts = [];
49
+ const fcParts = [];
50
+ for (const part of parts) {
51
+ if (part instanceof Engine.RoleMessage.Ai.Part.Text)
52
+ textParts.push(part);
53
+ else if (part instanceof Function.Call)
54
+ fcParts.push(part);
55
+ }
56
+ return {
57
+ role: 'assistant',
58
+ content: textParts.length ? textParts.map(part => part.text).join('') : undefined,
59
+ tool_calls: fcParts.length ? fcParts.map(fcall => this.toolCodec.encodeFunctionCall(fcall)) : undefined,
60
+ };
61
+ }
62
+ encodeRoleMessage(roleMessage) {
63
+ if (roleMessage instanceof Engine.RoleMessage.Developer)
64
+ return [this.encodeDeveloperMessage(roleMessage)];
65
+ else if (roleMessage instanceof Engine.RoleMessage.User) {
66
+ const userMessage = roleMessage;
67
+ return this.encodeUserMessage(userMessage);
68
+ }
69
+ else if (roleMessage instanceof Engine.RoleMessage.Ai) {
70
+ const aiMessage = roleMessage;
71
+ return [this.encodeAiMessage(aiMessage)];
72
+ }
73
+ else
74
+ throw new Error();
75
+ }
76
+ encodeRoleMessages(chatMessages) {
77
+ return chatMessages.map(chatMessage => this.encodeRoleMessage(chatMessage)).flat();
78
+ }
79
+ }
80
+ //# sourceMappingURL=message-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/engines/openai-chatcompletions/message-codec.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Function } from '../../function.ts';
2
2
  import type { Verbatim } from '../../verbatim.ts';
3
3
  import OpenAI from 'openai';
4
- import { Structuring } from '../../compatible-engine/structuring.ts';
5
- export declare function encode<fdu extends Function.Decl.Proto, vdu extends Verbatim.Decl.Proto>(choice: Structuring.Choice<fdu, vdu>): OpenAI.ChatCompletionToolChoiceOption;
4
+ import { StructuringChoice } from '../../structuring-choice.ts';
5
+ export declare function encode<fdu extends Function.Decl.Proto, vdu extends Verbatim.Decl.Proto>(structuringChoice: StructuringChoice): OpenAI.ChatCompletionToolChoiceOption;
@@ -0,0 +1,22 @@
1
+ import { StructuringChoice } from "../../structuring-choice.js";
2
+ export function encode(structuringChoice) {
3
+ if (structuringChoice === StructuringChoice.NONE)
4
+ return 'none';
5
+ else if (structuringChoice === StructuringChoice.REQUIRED)
6
+ return 'auto';
7
+ else if (structuringChoice === StructuringChoice.ANYONE)
8
+ return 'auto';
9
+ else if (structuringChoice === StructuringChoice.AUTO)
10
+ return 'auto';
11
+ else if (structuringChoice === StructuringChoice.TCall.REQUIRED)
12
+ return 'required';
13
+ else if (structuringChoice === StructuringChoice.TCall.ANYONE)
14
+ return 'required';
15
+ else if (structuringChoice === StructuringChoice.VRequest.REQUIRED)
16
+ return 'none';
17
+ else if (structuringChoice === StructuringChoice.VRequest.ANYONE)
18
+ return 'none';
19
+ else
20
+ throw new Error();
21
+ }
22
+ //# sourceMappingURL=structuring-choice-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structuring-choice-codec.js","sourceRoot":"","sources":["../../../src/engines/openai-chatcompletions/structuring-choice-codec.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,MAAM,UAAU,MAAM,CAIlB,iBAAoC;IAEpC,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;SAC3D,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;SACpE,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;SAClE,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;SAEhE,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;SAC9E,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;SAE5E,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;SAC7E,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;;QAE3E,MAAM,IAAI,KAAK,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Function } from '../../function.ts';
2
+ import OpenAI from 'openai';
3
+ export declare class ToolCodec<in out fdm extends Function.Decl.Map.Proto> {
4
+ protected fdm: fdm;
5
+ protected apiFds: OpenAI.ChatCompletionTool[];
6
+ constructor(options: ToolCodec.Options<fdm>);
7
+ encodeFunctionCall(fcall: Function.Call.From<fdm>): OpenAI.ChatCompletionMessageToolCall;
8
+ decodeFunctionCall(apifc: OpenAI.ChatCompletionMessageFunctionToolCall): Function.Call.From<fdm>;
9
+ encodeFunctionResponse(fres: Function.Response.From<fdm>): OpenAI.ChatCompletionToolMessageParam;
10
+ protected static encodeFunctionDeclarationEntry<fdu extends Function.Decl.Proto>(fdentry: Function.Decl.Entry.Of<fdu>): OpenAI.ChatCompletionTool;
11
+ encodeFunctionDeclarationMap(): OpenAI.ChatCompletionTool[];
12
+ }
13
+ export declare namespace ToolCodec {
14
+ interface Options<in out fdm extends Function.Decl.Map.Proto> {
15
+ fdm: fdm;
16
+ }
17
+ }
@@ -2,19 +2,22 @@ import { Parse, ParseError } from 'typebox/schema';
2
2
  import { Function } from "../../function.js";
3
3
  export class ToolCodec {
4
4
  fdm;
5
+ apiFds;
5
6
  constructor(options) {
6
7
  this.fdm = options.fdm;
8
+ const fdentries = Object.entries(this.fdm);
9
+ this.apiFds = fdentries.map(fdentry => ToolCodec.encodeFunctionDeclarationEntry(fdentry));
7
10
  }
8
- encodeFunctionCall(fc) {
9
- if (fc.id) { }
11
+ encodeFunctionCall(fcall) {
12
+ if (fcall.id) { }
10
13
  else
11
14
  throw new Error();
12
15
  return {
13
- id: fc.id,
16
+ id: fcall.id,
14
17
  type: 'function',
15
18
  function: {
16
- name: fc.name,
17
- arguments: JSON.stringify(fc.args),
19
+ name: fcall.name,
20
+ arguments: JSON.stringify(fcall.args),
18
21
  },
19
22
  };
20
23
  }
@@ -46,26 +49,26 @@ export class ToolCodec {
46
49
  args,
47
50
  });
48
51
  }
49
- encodeFunctionResponse(fr) {
50
- if (fr.id) { }
52
+ encodeFunctionResponse(fres) {
53
+ if (fres.id) { }
51
54
  else
52
55
  throw new Error();
53
- if (fr instanceof Function.Response.Successful)
56
+ if (fres instanceof Function.Response.Successful)
54
57
  return {
55
58
  role: 'tool',
56
- tool_call_id: fr.id,
57
- content: fr.text,
59
+ tool_call_id: fres.id,
60
+ content: fres.text,
58
61
  };
59
- else if (fr instanceof Function.Response.Failed)
62
+ else if (fres instanceof Function.Response.Failed)
60
63
  return {
61
64
  role: 'tool',
62
- tool_call_id: fr.id,
63
- content: fr.error,
65
+ tool_call_id: fres.id,
66
+ content: fres.error,
64
67
  };
65
68
  else
66
69
  throw new Error();
67
70
  }
68
- encodeFunctionDeclarationEntry(fdentry) {
71
+ static encodeFunctionDeclarationEntry(fdentry) {
69
72
  return {
70
73
  type: 'function',
71
74
  function: {
@@ -76,9 +79,8 @@ export class ToolCodec {
76
79
  },
77
80
  };
78
81
  }
79
- encodeFunctionDeclarationMap(fdm) {
80
- const fdentries = Object.entries(fdm);
81
- return fdentries.map(fdentry => this.encodeFunctionDeclarationEntry(fdentry));
82
+ encodeFunctionDeclarationMap() {
83
+ return this.apiFds.slice();
82
84
  }
83
85
  }
84
86
  //# sourceMappingURL=tool-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-codec.js","sourceRoot":"","sources":["../../../src/engines/openai-chatcompletions/tool-codec.ts"],"names":[],"mappings":"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"}
@@ -1,38 +1,36 @@
1
- import { RoleMessage, type Session } from '../../compatible-engine/session.ts';
2
1
  import { Function } from '../../function.ts';
3
2
  import OpenAI from 'openai';
4
3
  import type { InferenceContext } from '../../inference-context.ts';
5
4
  import type { Verbatim } from '../../verbatim.ts';
6
- import type { Engine } from '../../engine.ts';
7
- import { type InferenceParams, type ProviderSpec } from '../../engine.ts';
8
- import type { Billing } from '../../api-types/openai-chatcompletions/billing.ts';
9
- import type { ToolCodec } from '../../api-types/openai-chatcompletions/tool-codec.ts';
5
+ import { type InferenceOptions, type ProviderSpecs, Engine } from '../../engine.ts';
6
+ import type { Billing } from './billing.ts';
7
+ import type { ToolCodec } from './tool-codec.ts';
10
8
  import { Throttle } from '../../throttle.ts';
11
9
  import { type MessageCodec } from './message-codec.ts';
12
- import type { Structuring } from '../../compatible-engine/structuring.ts';
13
- export declare class Transport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> implements Engine.Transport<RoleMessage.User.From<fdm>, RoleMessage.Ai.From<fdm, vdm>, RoleMessage.Developer, Session.From<fdm, vdm>> {
10
+ import type { StructuringChoice } from '../../structuring-choice.ts';
11
+ export declare class Transport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> implements Engine.Transport<fdm, vdm> {
14
12
  protected client: OpenAI;
15
- protected inferenceParams: InferenceParams;
16
- protected providerSpec: ProviderSpec;
13
+ protected inferenceParams: InferenceOptions;
14
+ protected providerSpec: ProviderSpecs;
17
15
  protected fdm: fdm;
18
16
  protected throttle: Throttle;
19
- protected choice: Structuring.Choice.From<fdm, vdm>;
17
+ protected structuringChoice: StructuringChoice;
20
18
  protected messageCodec: MessageCodec<fdm, vdm>;
21
19
  protected toolCodec: ToolCodec<fdm>;
22
20
  protected billing: Billing;
23
21
  constructor(options: Transport.Options<fdm, vdm>);
24
- protected makeParams(session: Session.From<fdm, vdm>): OpenAI.ChatCompletionCreateParamsStreaming;
22
+ protected makeParams(session: Engine.Session.From<fdm, vdm>): OpenAI.ChatCompletionCreateParamsStreaming;
25
23
  mergeToolCall(apifc: OpenAI.ChatCompletionChunk.Choice.Delta.ToolCall): OpenAI.ChatCompletionMessageToolCall;
26
24
  mergeCompletion(stock: OpenAI.ChatCompletionChunk): OpenAI.ChatCompletion;
27
- fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
25
+ fetch(wfctx: InferenceContext, session: Engine.Session.From<fdm, vdm>, signal?: AbortSignal): Promise<Engine.RoleMessage.Ai.From<fdm, vdm>>;
28
26
  }
29
27
  export declare namespace Transport {
30
28
  interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
31
- inferenceParams: InferenceParams;
32
- providerSpec: ProviderSpec;
29
+ inferenceParams: InferenceOptions;
30
+ providerSpec: ProviderSpecs;
33
31
  fdm: fdm;
34
32
  throttle: Throttle;
35
- choice: Structuring.Choice.From<fdm, vdm>;
33
+ structuringChoice: StructuringChoice;
36
34
  messageCodec: MessageCodec<fdm, vdm>;
37
35
  toolCodec: ToolCodec<fdm>;
38
36
  billing: Billing;
@@ -1,6 +1,6 @@
1
1
  import OpenAI from 'openai';
2
2
  import { loggers } from "../../telemetry.js";
3
- import * as ChoiceCodec from "./choice-codec.js";
3
+ import * as StructuringChoiceCodec from "./structuring-choice-codec.js";
4
4
  import * as Undici from 'undici';
5
5
  export class Transport {
6
6
  client;
@@ -8,7 +8,7 @@ export class Transport {
8
8
  providerSpec;
9
9
  fdm;
10
10
  throttle;
11
- choice;
11
+ structuringChoice;
12
12
  messageCodec;
13
13
  toolCodec;
14
14
  billing;
@@ -23,13 +23,13 @@ export class Transport {
23
23
  this.providerSpec = options.providerSpec;
24
24
  this.fdm = options.fdm;
25
25
  this.throttle = options.throttle;
26
- this.choice = options.choice;
26
+ this.structuringChoice = options.structuringChoice;
27
27
  this.messageCodec = options.messageCodec;
28
28
  this.toolCodec = options.toolCodec;
29
29
  this.billing = options.billing;
30
30
  }
31
31
  makeParams(session) {
32
- const tools = this.toolCodec.encodeFunctionDeclarationMap(this.fdm);
32
+ const tools = this.toolCodec.encodeFunctionDeclarationMap();
33
33
  const messages = [];
34
34
  if (session.developerMessage)
35
35
  messages.push(...this.messageCodec.encodeRoleMessage(session.developerMessage));
@@ -38,7 +38,7 @@ export class Transport {
38
38
  model: this.inferenceParams.model,
39
39
  messages,
40
40
  tools: tools.length ? tools : undefined,
41
- tool_choice: tools.length ? ChoiceCodec.encode(this.choice) : undefined,
41
+ tool_choice: tools.length ? StructuringChoiceCodec.encode(this.structuringChoice) : undefined,
42
42
  parallel_tool_calls: tools.length ? this.inferenceParams.parallelToolCall : undefined,
43
43
  stream: true,
44
44
  stream_options: {
@@ -53,10 +53,10 @@ export class Transport {
53
53
  throw new Error();
54
54
  if (apifc.function?.name) { }
55
55
  else
56
- throw new Error();
56
+ throw new SyntaxError('Function name missing.', { cause: apifc });
57
57
  if (apifc.function?.arguments) { }
58
58
  else
59
- throw new Error();
59
+ throw new SyntaxError('Function arguments missing.', { cause: apifc });
60
60
  return {
61
61
  id: apifc.id,
62
62
  type: 'function',
@@ -71,7 +71,7 @@ export class Transport {
71
71
  if (stockChoice?.finish_reason) { }
72
72
  else
73
73
  throw new SyntaxError('Finish reason missing', { cause: stock });
74
- const completion = {
74
+ return {
75
75
  id: stock.id,
76
76
  object: 'chat.completion',
77
77
  created: stock.created,
@@ -89,17 +89,13 @@ export class Transport {
89
89
  }],
90
90
  usage: stock.usage ?? undefined,
91
91
  };
92
- return completion;
93
92
  }
94
93
  async fetch(wfctx, session, signal) {
95
94
  try {
96
95
  await this.throttle.requests(wfctx);
97
- // Prepare request
98
96
  const params = this.makeParams(session);
99
97
  loggers.message.debug(params);
100
- // Send request
101
98
  const stream = await this.client.chat.completions.create(params, { signal });
102
- // Get response
103
99
  let stock = null;
104
100
  for await (const chunk of stream) {
105
101
  loggers.stream.trace(chunk);
@@ -110,7 +106,6 @@ export class Transport {
110
106
  choices: [],
111
107
  object: 'chat.completion.chunk',
112
108
  };
113
- // choice
114
109
  const deltaChoice = chunk.choices[0];
115
110
  if (deltaChoice) {
116
111
  if (!stock.choices.length)
@@ -119,12 +114,10 @@ export class Transport {
119
114
  finish_reason: null,
120
115
  delta: {},
121
116
  });
122
- // content
123
117
  if (deltaChoice.delta.content) {
124
118
  stock.choices[0].delta.content ??= '';
125
119
  stock.choices[0].delta.content += deltaChoice.delta.content;
126
120
  }
127
- // function calls
128
121
  if (deltaChoice.delta.tool_calls) {
129
122
  stock.choices[0].delta.tool_calls ??= [];
130
123
  for (const deltaToolCall of deltaChoice.delta.tool_calls) {
@@ -141,13 +134,10 @@ export class Transport {
141
134
  }
142
135
  }
143
136
  }
144
- // finish reason
145
137
  stock.choices[0].finish_reason ??= deltaChoice.finish_reason;
146
138
  }
147
- // usage
148
139
  stock.usage ??= chunk.usage;
149
140
  }
150
- // Validate response
151
141
  if (stock) { }
152
142
  else
153
143
  throw new Error();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/engines/openai-chatcompletions/transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Function } from '../function.ts';
2
+ import { Engine } from '../engine.ts';
3
+ import { MessageCodec } from './openai-chatcompletions/message-codec.ts';
4
+ import { Transport } from './openai-chatcompletions/transport.ts';
5
+ import type { Verbatim } from '../verbatim.ts';
6
+ import { ToolCodec } from './openai-chatcompletions/tool-codec.ts';
7
+ import { Billing } from './openai-chatcompletions/billing.ts';
8
+ export type OpenAIChatCompletionsEngine<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = OpenAIChatCompletionsEngine.Instance<fdm, vdm>;
9
+ export declare namespace OpenAIChatCompletionsEngine {
10
+ class Instance<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends Engine.Instance<fdm, vdm> {
11
+ protected options: OpenAIChatCompletionsEngine.Options<fdm, vdm>;
12
+ protected toolCodec: ToolCodec<fdm>;
13
+ protected messageCodec: MessageCodec<fdm, vdm>;
14
+ protected billing: Billing;
15
+ protected transport: Transport<fdm, vdm>;
16
+ constructor(options: OpenAIChatCompletionsEngine.Options<fdm, vdm>);
17
+ clone(): Engine<fdm, vdm>;
18
+ }
19
+ interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends Engine.Options<fdm, vdm> {
20
+ }
21
+ const create: Engine.Create;
22
+ }