@zimtsui/brainswitch 0.0.55 → 0.0.57

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 (272) hide show
  1. package/DEVELOPMENT.md +13 -14
  2. package/README.md +110 -62
  3. package/assets/verbatim/declarations.handlebars +11 -0
  4. package/assets/verbatim/instruction.md +49 -0
  5. package/build/adaptor.d.ts +38 -7
  6. package/build/adaptor.js +35 -37
  7. package/build/adaptor.js.map +1 -1
  8. package/build/api-types/anthropic/billing.d.ts +12 -0
  9. package/build/api-types/anthropic/billing.js +14 -0
  10. package/build/api-types/anthropic/billing.js.map +1 -0
  11. package/build/api-types/anthropic/tool-codec.d.ts +16 -0
  12. package/build/api-types/anthropic/tool-codec.js +58 -0
  13. package/build/api-types/anthropic/tool-codec.js.map +1 -0
  14. package/build/api-types/google/billing.d.ts +12 -0
  15. package/build/api-types/google/billing.js +23 -0
  16. package/build/api-types/google/billing.js.map +1 -0
  17. package/build/api-types/google/restful-request.d.ts +8 -0
  18. package/build/api-types/google/restful-request.js +1 -0
  19. package/build/api-types/google/restful-request.js.map +1 -0
  20. package/build/api-types/google/tool-codec.d.ts +16 -0
  21. package/build/api-types/{google.js → google/tool-codec.js} +32 -29
  22. package/build/api-types/google/tool-codec.js.map +1 -0
  23. package/build/api-types/openai-chatcompletions/billing.d.ts +12 -0
  24. package/build/api-types/openai-chatcompletions/billing.js +14 -0
  25. package/build/api-types/openai-chatcompletions/billing.js.map +1 -0
  26. package/build/api-types/openai-chatcompletions/tool-codec.d.ts +17 -0
  27. package/build/api-types/openai-chatcompletions/tool-codec.js +80 -0
  28. package/build/api-types/openai-chatcompletions/tool-codec.js.map +1 -0
  29. package/build/api-types/openai-responses/billing.d.ts +12 -0
  30. package/build/api-types/openai-responses/billing.js +14 -0
  31. package/build/api-types/openai-responses/billing.js.map +1 -0
  32. package/build/api-types/openai-responses/tool-codec.d.ts +16 -0
  33. package/build/api-types/openai-responses/tool-codec.js +76 -0
  34. package/build/api-types/openai-responses/tool-codec.js.map +1 -0
  35. package/build/assets.d.ts +7 -0
  36. package/build/assets.js +8 -0
  37. package/build/assets.js.map +1 -0
  38. package/build/compatible-engine/session.d.ts +67 -0
  39. package/build/compatible-engine/session.js +92 -0
  40. package/build/compatible-engine/session.js.map +1 -0
  41. package/build/compatible-engine/structuring.d.ts +36 -0
  42. package/build/compatible-engine/structuring.js +34 -0
  43. package/build/compatible-engine/structuring.js.map +1 -0
  44. package/build/compatible-engine/validation.d.ts +21 -0
  45. package/build/compatible-engine/validation.js +82 -0
  46. package/build/compatible-engine/validation.js.map +1 -0
  47. package/build/compatible-engine.d/agentloop.d.ts +12 -0
  48. package/build/compatible-engine.d/agentloop.js +52 -0
  49. package/build/compatible-engine.d/agentloop.js.map +1 -0
  50. package/build/compatible-engine.d/aliyun/transport.d.ts +12 -0
  51. package/build/compatible-engine.d/aliyun/transport.js +7 -0
  52. package/build/compatible-engine.d/aliyun/transport.js.map +1 -0
  53. package/build/compatible-engine.d/aliyun.d.ts +24 -0
  54. package/build/compatible-engine.d/aliyun.js +46 -0
  55. package/build/compatible-engine.d/aliyun.js.map +1 -0
  56. package/build/compatible-engine.d/anthropic/choice-codec.d.ts +5 -0
  57. package/build/compatible-engine.d/anthropic/choice-codec.js +26 -0
  58. package/build/compatible-engine.d/anthropic/choice-codec.js.map +1 -0
  59. package/build/compatible-engine.d/anthropic/message-codec.d.ts +36 -0
  60. package/build/compatible-engine.d/anthropic/message-codec.js +86 -0
  61. package/build/compatible-engine.d/anthropic/message-codec.js.map +1 -0
  62. package/build/compatible-engine.d/anthropic/transport.d.ts +34 -0
  63. package/build/compatible-engine.d/anthropic/transport.js +150 -0
  64. package/build/compatible-engine.d/anthropic/transport.js.map +1 -0
  65. package/build/compatible-engine.d/anthropic.d.ts +26 -0
  66. package/build/compatible-engine.d/anthropic.js +46 -0
  67. package/build/compatible-engine.d/anthropic.js.map +1 -0
  68. package/build/compatible-engine.d/google/choice-codec.d.ts +5 -0
  69. package/build/compatible-engine.d/google/choice-codec.js +27 -0
  70. package/build/compatible-engine.d/google/choice-codec.js.map +1 -0
  71. package/build/compatible-engine.d/google/message-codec.d.ts +36 -0
  72. package/build/compatible-engine.d/google/message-codec.js +94 -0
  73. package/build/compatible-engine.d/google/message-codec.js.map +1 -0
  74. package/build/compatible-engine.d/google/transport.d.ts +30 -0
  75. package/build/compatible-engine.d/google/transport.js +78 -0
  76. package/build/compatible-engine.d/google/transport.js.map +1 -0
  77. package/build/compatible-engine.d/google.d.ts +26 -0
  78. package/build/compatible-engine.d/google.js +50 -0
  79. package/build/compatible-engine.d/google.js.map +1 -0
  80. package/build/compatible-engine.d/openai-chatcompletions/choice-codec.d.ts +5 -0
  81. package/build/compatible-engine.d/openai-chatcompletions/choice-codec.js +31 -0
  82. package/build/compatible-engine.d/openai-chatcompletions/choice-codec.js.map +1 -0
  83. package/build/compatible-engine.d/openai-chatcompletions/message-codec.d.ts +24 -0
  84. package/build/compatible-engine.d/openai-chatcompletions/message-codec.js +71 -0
  85. package/build/compatible-engine.d/openai-chatcompletions/message-codec.js.map +1 -0
  86. package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.d.ts +38 -0
  87. package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.js +77 -0
  88. package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.js.map +1 -0
  89. package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.d.ts +37 -0
  90. package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.js +190 -0
  91. package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.js.map +1 -0
  92. package/build/compatible-engine.d/openai-chatcompletions/transport.d.ts +10 -0
  93. package/build/compatible-engine.d/openai-chatcompletions/transport.js +11 -0
  94. package/build/compatible-engine.d/openai-chatcompletions/transport.js.map +1 -0
  95. package/build/compatible-engine.d/openai-chatcompletions.d.ts +17 -0
  96. package/build/compatible-engine.d/openai-chatcompletions.js +14 -0
  97. package/build/compatible-engine.d/openai-chatcompletions.js.map +1 -0
  98. package/build/compatible-engine.d/openai-responses/choice-codec.d.ts +5 -0
  99. package/build/compatible-engine.d/openai-responses/choice-codec.js +30 -0
  100. package/build/compatible-engine.d/openai-responses/choice-codec.js.map +1 -0
  101. package/build/compatible-engine.d/openai-responses/message-codec.d.ts +36 -0
  102. package/build/compatible-engine.d/openai-responses/message-codec.js +96 -0
  103. package/build/compatible-engine.d/openai-responses/message-codec.js.map +1 -0
  104. package/build/compatible-engine.d/openai-responses/transport.d.ts +35 -0
  105. package/build/compatible-engine.d/openai-responses/transport.js +80 -0
  106. package/build/compatible-engine.d/openai-responses/transport.js.map +1 -0
  107. package/build/compatible-engine.d/openai-responses.d.ts +26 -0
  108. package/build/compatible-engine.d/openai-responses.js +46 -0
  109. package/build/compatible-engine.d/openai-responses.js.map +1 -0
  110. package/build/compatible-engine.d.ts +17 -46
  111. package/build/compatible-engine.js +20 -58
  112. package/build/compatible-engine.js.map +1 -1
  113. package/build/config.d.ts +1 -0
  114. package/build/config.js +0 -1
  115. package/build/config.js.map +1 -1
  116. package/build/endpoint-spec.d.ts +1 -0
  117. package/build/endpoint-spec.js +2 -1
  118. package/build/endpoint-spec.js.map +1 -1
  119. package/build/engine/session.d.ts +7 -0
  120. package/build/engine/session.js +1 -0
  121. package/build/engine/session.js.map +1 -0
  122. package/build/engine/transport.d.ts +5 -0
  123. package/build/engine/transport.js +1 -0
  124. package/build/engine/transport.js.map +1 -0
  125. package/build/engine/validation.d.ts +9 -0
  126. package/build/engine/validation.js +1 -0
  127. package/build/engine/validation.js.map +1 -0
  128. package/build/engine.d.ts +60 -29
  129. package/build/engine.js +86 -19
  130. package/build/engine.js.map +1 -1
  131. package/build/exports.d.ts +4 -3
  132. package/build/exports.js +4 -3
  133. package/build/exports.js.map +1 -1
  134. package/build/function.d.ts +79 -54
  135. package/build/function.js +30 -46
  136. package/build/function.js.map +1 -1
  137. package/build/inference-context.d.ts +2 -2
  138. package/build/inference-context.js +0 -1
  139. package/build/inference-context.js.map +1 -1
  140. package/build/native-engines.d/google/message-codec.d.ts +23 -0
  141. package/build/native-engines.d/google/message-codec.js +67 -0
  142. package/build/native-engines.d/google/message-codec.js.map +1 -0
  143. package/build/native-engines.d/google/session.d.ts +45 -51
  144. package/build/native-engines.d/google/session.js +84 -80
  145. package/build/native-engines.d/google/session.js.map +1 -1
  146. package/build/native-engines.d/google/transport.d.ts +34 -0
  147. package/build/native-engines.d/google/transport.js +81 -0
  148. package/build/native-engines.d/google/transport.js.map +1 -0
  149. package/build/native-engines.d/google/validation.d.ts +22 -0
  150. package/build/native-engines.d/google/validation.js +20 -0
  151. package/build/native-engines.d/google/validation.js.map +1 -0
  152. package/build/native-engines.d/google.d/agentloop.d.ts +12 -0
  153. package/build/native-engines.d/google.d/agentloop.js +57 -0
  154. package/build/native-engines.d/google.d/agentloop.js.map +1 -0
  155. package/build/native-engines.d/google.d/exports.d.ts +3 -0
  156. package/build/native-engines.d/google.d/exports.js +4 -0
  157. package/build/native-engines.d/google.d/exports.js.map +1 -0
  158. package/build/native-engines.d/google.d.ts +42 -0
  159. package/build/native-engines.d/google.js +83 -0
  160. package/build/native-engines.d/google.js.map +1 -0
  161. package/build/native-engines.d/openai-responses/choice-codec.d.ts +5 -0
  162. package/build/native-engines.d/openai-responses/choice-codec.js +30 -0
  163. package/build/native-engines.d/openai-responses/choice-codec.js.map +1 -0
  164. package/build/native-engines.d/openai-responses/message-codec.d.ts +23 -0
  165. package/build/native-engines.d/openai-responses/message-codec.js +75 -0
  166. package/build/native-engines.d/openai-responses/message-codec.js.map +1 -0
  167. package/build/native-engines.d/openai-responses/session.d.ts +47 -44
  168. package/build/native-engines.d/openai-responses/session.js +73 -103
  169. package/build/native-engines.d/openai-responses/session.js.map +1 -1
  170. package/build/native-engines.d/openai-responses/structuring.d.ts +19 -0
  171. package/build/native-engines.d/openai-responses/structuring.js +19 -0
  172. package/build/native-engines.d/openai-responses/structuring.js.map +1 -0
  173. package/build/native-engines.d/openai-responses/tool.d.ts +14 -11
  174. package/build/native-engines.d/openai-responses/tool.js +1 -12
  175. package/build/native-engines.d/openai-responses/tool.js.map +1 -1
  176. package/build/native-engines.d/openai-responses/transport.d.ts +35 -0
  177. package/build/native-engines.d/openai-responses/transport.js +84 -0
  178. package/build/native-engines.d/openai-responses/transport.js.map +1 -0
  179. package/build/native-engines.d/openai-responses/validation.d.ts +20 -0
  180. package/build/native-engines.d/openai-responses/validation.js +80 -0
  181. package/build/native-engines.d/openai-responses/validation.js.map +1 -0
  182. package/build/native-engines.d/openai-responses.d/agentloop.d.ts +12 -0
  183. package/build/native-engines.d/openai-responses.d/agentloop.js +61 -0
  184. package/build/native-engines.d/openai-responses.d/agentloop.js.map +1 -0
  185. package/build/native-engines.d/{google → openai-responses.d}/exports.d.ts +1 -2
  186. package/build/native-engines.d/{google → openai-responses.d}/exports.js +1 -2
  187. package/build/native-engines.d/openai-responses.d/exports.js.map +1 -0
  188. package/build/native-engines.d/openai-responses.d.ts +44 -0
  189. package/build/native-engines.d/openai-responses.js +78 -0
  190. package/build/native-engines.d/openai-responses.js.map +1 -0
  191. package/build/throttle.d.ts +5 -4
  192. package/build/throttle.js +17 -14
  193. package/build/throttle.js.map +1 -1
  194. package/build/tsconfig.tsbuildinfo +1 -1
  195. package/build/verbatim/codec/declarations.d.ts +2 -0
  196. package/build/verbatim/codec/declarations.js +22 -0
  197. package/build/verbatim/codec/declarations.js.map +1 -0
  198. package/build/verbatim/codec/request.d.ts +7 -0
  199. package/build/verbatim/codec/request.js +53 -0
  200. package/build/verbatim/codec/request.js.map +1 -0
  201. package/build/verbatim/codec.d.ts +2 -0
  202. package/build/verbatim/codec.js +3 -0
  203. package/build/verbatim/codec.js.map +1 -0
  204. package/build/verbatim.d.ts +74 -0
  205. package/build/verbatim.js +17 -0
  206. package/build/verbatim.js.map +1 -0
  207. package/examples/agent.ts +65 -0
  208. package/examples/chat.ts +24 -0
  209. package/examples/config.ts +24 -0
  210. package/examples/tsconfig.json +34 -0
  211. package/examples/verbatim.ts +44 -0
  212. package/package.json +10 -9
  213. package/build/agentloop.d.ts +0 -12
  214. package/build/agentloop.js +0 -43
  215. package/build/agentloop.js.map +0 -1
  216. package/build/api-types/anthropic.d.ts +0 -29
  217. package/build/api-types/anthropic.js +0 -93
  218. package/build/api-types/anthropic.js.map +0 -1
  219. package/build/api-types/google.d.ts +0 -28
  220. package/build/api-types/google.js.map +0 -1
  221. package/build/api-types/openai-chat-completions.d.ts +0 -31
  222. package/build/api-types/openai-chat-completions.js +0 -113
  223. package/build/api-types/openai-chat-completions.js.map +0 -1
  224. package/build/api-types/openai-responses.d.ts +0 -23
  225. package/build/api-types/openai-responses.js +0 -71
  226. package/build/api-types/openai-responses.js.map +0 -1
  227. package/build/compatible-engines.d/aliyun.d.ts +0 -69
  228. package/build/compatible-engines.d/aliyun.js +0 -149
  229. package/build/compatible-engines.d/aliyun.js.map +0 -1
  230. package/build/compatible-engines.d/anthropic.d.ts +0 -78
  231. package/build/compatible-engines.d/anthropic.js +0 -312
  232. package/build/compatible-engines.d/anthropic.js.map +0 -1
  233. package/build/compatible-engines.d/google.d.ts +0 -83
  234. package/build/compatible-engines.d/google.js +0 -279
  235. package/build/compatible-engines.d/google.js.map +0 -1
  236. package/build/compatible-engines.d/openai-chatcompletions.d/monolith.d.ts +0 -15
  237. package/build/compatible-engines.d/openai-chatcompletions.d/monolith.js +0 -75
  238. package/build/compatible-engines.d/openai-chatcompletions.d/monolith.js.map +0 -1
  239. package/build/compatible-engines.d/openai-chatcompletions.d/stream.d.ts +0 -21
  240. package/build/compatible-engines.d/openai-chatcompletions.d/stream.js +0 -186
  241. package/build/compatible-engines.d/openai-chatcompletions.d/stream.js.map +0 -1
  242. package/build/compatible-engines.d/openai-chatcompletions.d.ts +0 -27
  243. package/build/compatible-engines.d/openai-chatcompletions.js +0 -76
  244. package/build/compatible-engines.d/openai-chatcompletions.js.map +0 -1
  245. package/build/compatible-engines.d/openai-responses.d.ts +0 -93
  246. package/build/compatible-engines.d/openai-responses.js +0 -300
  247. package/build/compatible-engines.d/openai-responses.js.map +0 -1
  248. package/build/frontmatter.d.ts +0 -5
  249. package/build/frontmatter.js +0 -13
  250. package/build/frontmatter.js.map +0 -1
  251. package/build/native-engines.d/google/agentloop.d.ts +0 -12
  252. package/build/native-engines.d/google/agentloop.js +0 -42
  253. package/build/native-engines.d/google/agentloop.js.map +0 -1
  254. package/build/native-engines.d/google/engine.d.ts +0 -110
  255. package/build/native-engines.d/google/engine.js +0 -314
  256. package/build/native-engines.d/google/engine.js.map +0 -1
  257. package/build/native-engines.d/google/exports.js.map +0 -1
  258. package/build/native-engines.d/openai-responses/agentloop.d.ts +0 -13
  259. package/build/native-engines.d/openai-responses/agentloop.js +0 -53
  260. package/build/native-engines.d/openai-responses/agentloop.js.map +0 -1
  261. package/build/native-engines.d/openai-responses/engine.d.ts +0 -112
  262. package/build/native-engines.d/openai-responses/engine.js +0 -344
  263. package/build/native-engines.d/openai-responses/engine.js.map +0 -1
  264. package/build/native-engines.d/openai-responses/exports.d.ts +0 -7
  265. package/build/native-engines.d/openai-responses/exports.js +0 -8
  266. package/build/native-engines.d/openai-responses/exports.js.map +0 -1
  267. package/build/session.d.ts +0 -77
  268. package/build/session.js +0 -137
  269. package/build/session.js.map +0 -1
  270. package/build/test.d.ts +0 -1
  271. package/build/test.js +0 -198
  272. package/build/test.js.map +0 -1
@@ -0,0 +1,31 @@
1
+ import { Structuring } from "../../compatible-engine/structuring.js";
2
+ export function encode(choice) {
3
+ if (choice === Structuring.Choice.NONE)
4
+ return 'none';
5
+ else if (choice === Structuring.Choice.REQUIRED)
6
+ return 'auto';
7
+ else if (choice === Structuring.Choice.ANYONE)
8
+ return 'auto';
9
+ else if (choice === Structuring.Choice.AUTO)
10
+ return 'auto';
11
+ else if (choice === Structuring.Choice.FCall.REQUIRED)
12
+ return 'required';
13
+ else if (choice === Structuring.Choice.FCall.ANYONE)
14
+ return 'required';
15
+ else if (choice instanceof Structuring.Choice.FCall)
16
+ return {
17
+ type: 'function',
18
+ function: {
19
+ name: choice.name,
20
+ },
21
+ };
22
+ else if (choice === Structuring.Choice.VRequest.REQUIRED)
23
+ return 'none';
24
+ else if (choice === Structuring.Choice.VRequest.ANYONE)
25
+ return 'none';
26
+ else if (choice instanceof Structuring.Choice.VRequest)
27
+ return 'none';
28
+ else
29
+ throw new Error();
30
+ }
31
+ //# sourceMappingURL=choice-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choice-codec.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-chatcompletions/choice-codec.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAGrE,MAAM,UAAU,MAAM,CAIlB,MAAoC;IAGpC,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;SACjD,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;SAC1D,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;SACxD,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;SAEtD,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;SACpE,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;SAClE,IAAI,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,KAAK;QAC/C,OAAO;YACH,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB;SACJ,CAAC;SAED,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;SACnE,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;SACjE,IAAI,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;;QAEjE,MAAM,IAAI,KAAK,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { RoleMessage, type Session } from '../../compatible-engine/session.ts';
2
+ import { Function } from '../../function.ts';
3
+ import OpenAI from 'openai';
4
+ import type { OpenAIChatCompletionsToolCodec } from '../../api-types/openai-chatcompletions/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 ctx: MessageCodec.Context<fdm, vdm>;
8
+ constructor(ctx: MessageCodec.Context<fdm, vdm>);
9
+ /**
10
+ * @throws {@link VerbatimCodec.Request.Invalid}
11
+ */
12
+ decodeAiMessage(message: OpenAI.ChatCompletionMessage): RoleMessage.Ai.From<fdm, vdm>;
13
+ encodeDeveloperMessage(developerMessage: RoleMessage.Developer): OpenAI.ChatCompletionSystemMessageParam;
14
+ encodeUserMessage(userMessage: RoleMessage.User.From<fdm>): [OpenAI.ChatCompletionUserMessageParam] | OpenAI.ChatCompletionToolMessageParam[];
15
+ encodeAiMessage(aiMessage: RoleMessage.Ai.From<fdm, vdm>): OpenAI.ChatCompletionAssistantMessageParam;
16
+ encodeRoleMessage(roleMessage: Session.ChatMessage.From<fdm, vdm> | RoleMessage.Developer): OpenAI.ChatCompletionMessageParam[];
17
+ encodeRoleMessages(chatMessages: (Session.ChatMessage.From<fdm, vdm> | RoleMessage.Developer)[]): OpenAI.ChatCompletionMessageParam[];
18
+ }
19
+ export declare namespace MessageCodec {
20
+ interface Context<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
21
+ toolCodec: OpenAIChatCompletionsToolCodec<fdm>;
22
+ vdm: vdm;
23
+ }
24
+ }
@@ -0,0 +1,71 @@
1
+ import { ResponseInvalid } from "../../engine.js";
2
+ import { RoleMessage } from "../../compatible-engine/session.js";
3
+ import { Function } from "../../function.js";
4
+ import * as VerbatimCodec from "../../verbatim/codec.js";
5
+ export class MessageCodec {
6
+ ctx;
7
+ constructor(ctx) {
8
+ this.ctx = ctx;
9
+ }
10
+ /**
11
+ * @throws {@link VerbatimCodec.Request.Invalid}
12
+ */
13
+ decodeAiMessage(message) {
14
+ const parts = [];
15
+ if (message.content) {
16
+ const vrs = VerbatimCodec.Request.decode(message.content, this.ctx.vdm);
17
+ parts.push(new RoleMessage.Part.Text(message.content, vrs));
18
+ }
19
+ if (message.tool_calls)
20
+ parts.push(...message.tool_calls.map(apifc => {
21
+ if (apifc.type === 'function') { }
22
+ else
23
+ throw new Error();
24
+ return this.ctx.toolCodec.decodeFunctionCall(apifc);
25
+ }));
26
+ if (parts.length) { }
27
+ else
28
+ throw new ResponseInvalid('Content or tool calls not found in Response', { cause: message });
29
+ return new RoleMessage.Ai(parts);
30
+ }
31
+ encodeDeveloperMessage(developerMessage) {
32
+ return {
33
+ role: 'system',
34
+ content: developerMessage.getText(),
35
+ };
36
+ }
37
+ encodeUserMessage(userMessage) {
38
+ const textParts = userMessage.getParts().filter(part => part instanceof RoleMessage.Part.Text);
39
+ const frs = userMessage.getFunctionResponses();
40
+ if (textParts.length && !frs.length)
41
+ return [{ role: 'user', content: textParts.map(part => ({ type: 'text', text: part.text })) }];
42
+ else if (!textParts.length && frs.length)
43
+ return frs.map(fr => this.ctx.toolCodec.encodeFunctionResponse(fr));
44
+ else
45
+ throw new Error();
46
+ }
47
+ encodeAiMessage(aiMessage) {
48
+ const parts = aiMessage.getParts();
49
+ const textParts = parts.filter(part => part instanceof RoleMessage.Part.Text);
50
+ const fcParts = parts.filter(part => part instanceof Function.Call);
51
+ return {
52
+ role: 'assistant',
53
+ content: textParts.length ? textParts.map(part => part.text).join('') : undefined,
54
+ tool_calls: fcParts.length ? fcParts.map(fc => this.ctx.toolCodec.encodeFunctionCall(fc)) : undefined,
55
+ };
56
+ }
57
+ encodeRoleMessage(roleMessage) {
58
+ if (roleMessage instanceof RoleMessage.Developer)
59
+ return [this.encodeDeveloperMessage(roleMessage)];
60
+ else if (roleMessage instanceof RoleMessage.User)
61
+ return this.encodeUserMessage(roleMessage);
62
+ else if (roleMessage instanceof RoleMessage.Ai)
63
+ return [this.encodeAiMessage(roleMessage)];
64
+ else
65
+ throw new Error();
66
+ }
67
+ encodeRoleMessages(chatMessages) {
68
+ return chatMessages.map(chatMessage => this.encodeRoleMessage(chatMessage)).flat();
69
+ }
70
+ }
71
+ //# sourceMappingURL=message-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-chatcompletions/message-codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { RoleMessage, type Session } from '../../../compatible-engine/session.ts';
2
+ import { Function } from '../../../function.ts';
3
+ import type OpenAI from 'openai';
4
+ import { Transport } from '../transport.ts';
5
+ import { type InferenceContext } from '../../../inference-context.ts';
6
+ import * as Undici from 'undici';
7
+ import type { OpenAIChatCompletionsBilling } from '../../../api-types/openai-chatcompletions/billing.ts';
8
+ import type { OpenAIChatCompletionsToolCodec } from '../../../api-types/openai-chatcompletions/tool-codec.ts';
9
+ import type { MessageCodec } from '../message-codec.ts';
10
+ import type { Throttle } from '../../../throttle.ts';
11
+ import type { Verbatim } from '../../../verbatim.ts';
12
+ import { Validator } from '../../../compatible-engine/validation.ts';
13
+ import type { Structuring } from '../../../compatible-engine/structuring.ts';
14
+ export declare abstract class MonolithTransport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends Transport<fdm, vdm> {
15
+ protected ctx: MonolithTransport.Context<fdm, vdm>;
16
+ constructor(ctx: MonolithTransport.Context<fdm, vdm>);
17
+ protected getApiURL(baseUrl: string): URL;
18
+ protected makeParams(session: Session.From<fdm, vdm>): OpenAI.ChatCompletionCreateParamsNonStreaming;
19
+ fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
20
+ }
21
+ export declare namespace MonolithTransport {
22
+ interface Context<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
23
+ proxyAgent?: Undici.ProxyAgent;
24
+ apiURL: URL;
25
+ apiKey: string;
26
+ model: string;
27
+ fdm: fdm;
28
+ maxTokens?: number;
29
+ throttle: Throttle;
30
+ additionalOptions?: Record<string, unknown>;
31
+ choice: Structuring.Choice.From<fdm, vdm>;
32
+ parallelToolCall: boolean;
33
+ messageCodec: MessageCodec<fdm, vdm>;
34
+ toolCodec: OpenAIChatCompletionsToolCodec<fdm>;
35
+ billing: OpenAIChatCompletionsBilling;
36
+ validator: Validator.From<fdm, vdm>;
37
+ }
38
+ }
@@ -0,0 +1,77 @@
1
+ import { Transport } from "../transport.js";
2
+ import * as Undici from 'undici';
3
+ import { ResponseInvalid, NetworkError } from "../../../engine.js";
4
+ import { logger } from "../../../telemetry.js";
5
+ import * as ChoiceCodec from "../choice-codec.js";
6
+ export class MonolithTransport extends Transport {
7
+ ctx;
8
+ constructor(ctx) {
9
+ super();
10
+ this.ctx = ctx;
11
+ }
12
+ getApiURL(baseUrl) {
13
+ return new URL(`${baseUrl}/chat/completions`);
14
+ }
15
+ makeParams(session) {
16
+ const tools = this.ctx.toolCodec.encodeFunctionDeclarationMap(this.ctx.fdm);
17
+ return {
18
+ model: this.ctx.model,
19
+ stream: false,
20
+ messages: [
21
+ ...(session.developerMessage ? this.ctx.messageCodec.encodeRoleMessage(session.developerMessage) : []),
22
+ ...this.ctx.messageCodec.encodeRoleMessages(session.chatMessages),
23
+ ],
24
+ tools: tools.length ? tools : undefined,
25
+ tool_choice: tools.length ? ChoiceCodec.encode(this.ctx.choice) : undefined,
26
+ parallel_tool_calls: tools.length ? this.ctx.parallelToolCall : undefined,
27
+ max_completion_tokens: this.ctx.maxTokens ?? undefined,
28
+ ...this.ctx.additionalOptions,
29
+ };
30
+ }
31
+ async fetch(wfctx, session, signal) {
32
+ await this.ctx.throttle.requests(wfctx);
33
+ // Prepare request
34
+ const params = this.makeParams(session);
35
+ logger.message.trace(params);
36
+ // Send request
37
+ const res = await Undici.fetch(this.ctx.apiURL, {
38
+ method: 'POST',
39
+ headers: new Headers({
40
+ 'Content-Type': 'application/json',
41
+ 'Authorization': `Bearer ${this.ctx.apiKey}`,
42
+ }),
43
+ body: JSON.stringify(params),
44
+ dispatcher: this.ctx.proxyAgent,
45
+ signal,
46
+ }).catch(e => {
47
+ if (e instanceof TypeError)
48
+ throw new NetworkError(undefined, { cause: e });
49
+ else
50
+ throw e;
51
+ });
52
+ // Get response
53
+ if (res.ok) { }
54
+ else
55
+ throw new Error(undefined, { cause: res });
56
+ const completion = await res.json();
57
+ logger.message.trace(completion);
58
+ // Validate response
59
+ const choice = completion.choices[0];
60
+ if (choice) { }
61
+ else
62
+ throw new ResponseInvalid('Content missing', { cause: completion });
63
+ this.handleFinishReason(completion, choice.finish_reason);
64
+ if (completion.usage) { }
65
+ else
66
+ throw new Error();
67
+ const cost = this.ctx.billing.charge(completion.usage);
68
+ if (choice.message.content)
69
+ logger.inference.debug(choice.message.content);
70
+ if (choice.message.tool_calls)
71
+ logger.message.debug(choice.message.tool_calls);
72
+ logger.message.debug(completion.usage);
73
+ wfctx.cost?.(cost);
74
+ return this.ctx.messageCodec.decodeAiMessage(choice.message);
75
+ }
76
+ }
77
+ //# sourceMappingURL=monolith.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monolith.js","sourceRoot":"","sources":["../../../../src/compatible-engine.d/openai-chatcompletions/transport.d/monolith.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { RoleMessage, type Session } from '../../../compatible-engine/session.ts';
2
+ import { Function } from '../../../function.ts';
3
+ import OpenAI from 'openai';
4
+ import { Transport } from '../transport.ts';
5
+ import { type InferenceContext } from '../../../inference-context.ts';
6
+ import { type InferenceParams, type ProviderSpec } from '../../../engine.ts';
7
+ import type { OpenAIChatCompletionsBilling } from '../../../api-types/openai-chatcompletions/billing.ts';
8
+ import type { OpenAIChatCompletionsToolCodec } from '../../../api-types/openai-chatcompletions/tool-codec.ts';
9
+ import { Throttle } from '../../../throttle.ts';
10
+ import { type MessageCodec } from '../message-codec.ts';
11
+ import type { Verbatim } from '../../../verbatim.ts';
12
+ import { Validator } from '../../../compatible-engine/validation.ts';
13
+ import type { Structuring } from '../../../compatible-engine/structuring.ts';
14
+ export declare abstract class StreamTransport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends Transport<fdm, vdm> {
15
+ protected ctx: StreamTransport.Context<fdm, vdm>;
16
+ protected client: OpenAI;
17
+ constructor(ctx: StreamTransport.Context<fdm, vdm>);
18
+ protected makeParams(session: Session.From<fdm, vdm>): OpenAI.ChatCompletionCreateParamsStreaming;
19
+ convertFromDeltaToolCall(apifc: OpenAI.ChatCompletionChunk.Choice.Delta.ToolCall): OpenAI.ChatCompletionMessageFunctionToolCall;
20
+ convertCompletionStockToCompletion(stock: OpenAI.ChatCompletionChunk): OpenAI.ChatCompletion;
21
+ fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
22
+ protected abstract getDeltaThoughts(delta: OpenAI.ChatCompletionChunk.Choice.Delta): string;
23
+ }
24
+ export declare namespace StreamTransport {
25
+ interface Context<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
26
+ inferenceParams: InferenceParams;
27
+ providerSpec: ProviderSpec;
28
+ fdm: fdm;
29
+ throttle: Throttle;
30
+ choice: Structuring.Choice.From<fdm, vdm>;
31
+ parallelToolCall: boolean;
32
+ messageCodec: MessageCodec<fdm, vdm>;
33
+ toolCodec: OpenAIChatCompletionsToolCodec<fdm>;
34
+ billing: OpenAIChatCompletionsBilling;
35
+ validator: Validator.From<fdm, vdm>;
36
+ }
37
+ }
@@ -0,0 +1,190 @@
1
+ import OpenAI from 'openai';
2
+ import { Transport } from "../transport.js";
3
+ import { ResponseInvalid, NetworkError } from "../../../engine.js";
4
+ import { logger } from "../../../telemetry.js";
5
+ import * as ChoiceCodec from "../choice-codec.js";
6
+ export class StreamTransport extends Transport {
7
+ ctx;
8
+ client;
9
+ constructor(ctx) {
10
+ super();
11
+ this.ctx = ctx;
12
+ this.client = new OpenAI({
13
+ baseURL: this.ctx.providerSpec.baseUrl,
14
+ apiKey: this.ctx.providerSpec.apiKey,
15
+ fetchOptions: {
16
+ dispatcher: this.ctx.providerSpec.proxyAgent,
17
+ },
18
+ });
19
+ }
20
+ makeParams(session) {
21
+ const tools = this.ctx.toolCodec.encodeFunctionDeclarationMap(this.ctx.fdm);
22
+ return {
23
+ model: this.ctx.inferenceParams.model,
24
+ messages: [
25
+ ...(session.developerMessage ? this.ctx.messageCodec.encodeRoleMessage(session.developerMessage) : []),
26
+ ...this.ctx.messageCodec.encodeRoleMessages(session.chatMessages),
27
+ ],
28
+ tools: tools.length ? tools : undefined,
29
+ tool_choice: tools.length ? ChoiceCodec.encode(this.ctx.choice) : undefined,
30
+ parallel_tool_calls: tools.length ? this.ctx.parallelToolCall : undefined,
31
+ stream: true,
32
+ stream_options: {
33
+ include_usage: true
34
+ },
35
+ max_completion_tokens: this.ctx.inferenceParams.maxTokens ?? undefined,
36
+ ...this.ctx.inferenceParams.additionalOptions,
37
+ };
38
+ }
39
+ convertFromDeltaToolCall(apifc) {
40
+ if (apifc.id) { }
41
+ else
42
+ throw new Error();
43
+ if (apifc.function?.name) { }
44
+ else
45
+ throw new Error();
46
+ if (apifc.function?.arguments) { }
47
+ else
48
+ throw new Error();
49
+ return apifc;
50
+ }
51
+ convertCompletionStockToCompletion(stock) {
52
+ const stockChoice = stock?.choices[0];
53
+ if (stockChoice?.finish_reason) { }
54
+ else
55
+ throw new ResponseInvalid('Finish reason missing', { cause: stock });
56
+ const completion = {
57
+ id: stock.id,
58
+ object: 'chat.completion',
59
+ created: stock.created,
60
+ model: stock.model,
61
+ choices: [{
62
+ index: 0,
63
+ finish_reason: stockChoice.finish_reason,
64
+ message: {
65
+ role: 'assistant',
66
+ content: stockChoice.delta.content ?? null,
67
+ tool_calls: stockChoice.delta.tool_calls?.map(apifc => this.convertFromDeltaToolCall(apifc)),
68
+ refusal: stockChoice.delta.refusal ?? null,
69
+ },
70
+ logprobs: stockChoice.logprobs ?? null,
71
+ }],
72
+ usage: stock.usage ?? undefined,
73
+ };
74
+ return completion;
75
+ }
76
+ async fetch(wfctx, session, signal) {
77
+ try {
78
+ await this.ctx.throttle.requests(wfctx);
79
+ // Prepare request
80
+ const params = this.makeParams(session);
81
+ logger.message.trace(params);
82
+ // Send request
83
+ const stream = await this.client.chat.completions.create(params, { signal });
84
+ // Get response
85
+ let stock = null;
86
+ try {
87
+ let thoughts = null, thinking = false;
88
+ for await (const chunk of stream) {
89
+ stock ??= {
90
+ id: chunk.id,
91
+ created: chunk.created,
92
+ model: chunk.model,
93
+ choices: [],
94
+ object: 'chat.completion.chunk',
95
+ };
96
+ // choice
97
+ const deltaChoice = chunk.choices[0];
98
+ if (deltaChoice) {
99
+ if (!stock.choices.length)
100
+ stock.choices.push({
101
+ index: 0,
102
+ finish_reason: null,
103
+ delta: {},
104
+ });
105
+ // thoughts
106
+ const deltaThoughts = this.getDeltaThoughts(deltaChoice.delta);
107
+ if (deltaThoughts) {
108
+ if (!thinking) {
109
+ thinking = true;
110
+ logger.inference.trace('<think>\n');
111
+ }
112
+ logger.inference.trace(deltaThoughts);
113
+ thoughts ??= '';
114
+ thoughts += deltaThoughts;
115
+ }
116
+ // content
117
+ if (deltaChoice.delta.content) {
118
+ if (thinking) {
119
+ thinking = false;
120
+ logger.inference.trace('\n</think>\n');
121
+ }
122
+ logger.inference.debug(deltaChoice.delta.content);
123
+ stock.choices[0].delta.content ??= '';
124
+ stock.choices[0].delta.content += deltaChoice.delta.content;
125
+ }
126
+ // function calls
127
+ if (deltaChoice.delta.tool_calls) {
128
+ if (thinking) {
129
+ thinking = false;
130
+ logger.inference.trace('\n</think>\n');
131
+ }
132
+ stock.choices[0].delta.tool_calls ??= [];
133
+ for (const deltaToolCall of deltaChoice.delta.tool_calls) {
134
+ const toolCalls = stock.choices[0].delta.tool_calls;
135
+ toolCalls[deltaToolCall.index] ??= { index: deltaToolCall.index };
136
+ toolCalls[deltaToolCall.index].id ??= deltaToolCall.id;
137
+ if (deltaToolCall.function) {
138
+ toolCalls[deltaToolCall.index].function ??= {};
139
+ toolCalls[deltaToolCall.index].function.name ??= deltaToolCall.function.name;
140
+ if (deltaToolCall.function.arguments) {
141
+ toolCalls[deltaToolCall.index].function.arguments ??= '';
142
+ toolCalls[deltaToolCall.index].function.arguments += deltaToolCall.function?.arguments || '';
143
+ }
144
+ }
145
+ }
146
+ }
147
+ // finish reason
148
+ stock.choices[0].finish_reason ??= deltaChoice.finish_reason;
149
+ }
150
+ // usage
151
+ stock.usage ??= chunk.usage;
152
+ }
153
+ }
154
+ catch (e) {
155
+ if (e instanceof TypeError)
156
+ throw new NetworkError(undefined, { cause: e });
157
+ else
158
+ throw e;
159
+ }
160
+ // Validate response
161
+ if (stock) { }
162
+ else
163
+ throw new Error();
164
+ const completion = this.convertCompletionStockToCompletion(stock);
165
+ const choice = completion.choices[0];
166
+ if (choice) { }
167
+ else
168
+ throw new ResponseInvalid('Content missing', { cause: completion });
169
+ if (choice.message.content)
170
+ logger.inference.debug('\n');
171
+ this.handleFinishReason(completion, choice.finish_reason);
172
+ if (completion.usage) { }
173
+ else
174
+ throw new Error();
175
+ const cost = this.ctx.billing.charge(completion.usage);
176
+ if (choice.message.tool_calls)
177
+ logger.message.debug(choice.message.tool_calls);
178
+ logger.message.debug(completion.usage);
179
+ wfctx.cost?.(cost);
180
+ return this.ctx.messageCodec.decodeAiMessage(choice.message);
181
+ }
182
+ catch (e) {
183
+ if (e instanceof OpenAI.APIError)
184
+ throw new ResponseInvalid(undefined, { cause: e });
185
+ else
186
+ throw e;
187
+ }
188
+ }
189
+ }
190
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../../src/compatible-engine.d/openai-chatcompletions/transport.d/stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { RoleMessage, type Session } from '../../compatible-engine/session.ts';
2
+ import { Function } from '../../function.ts';
3
+ import OpenAI from 'openai';
4
+ import type { InferenceContext } from '../../inference-context.ts';
5
+ import type { Verbatim } from '../../verbatim.ts';
6
+ import type { Engine } from '../../engine.ts';
7
+ export declare abstract 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>> {
8
+ abstract fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
9
+ handleFinishReason(completion: OpenAI.ChatCompletion, finishReason: OpenAI.ChatCompletion.Choice['finish_reason']): void;
10
+ }
@@ -0,0 +1,11 @@
1
+ import { ResponseInvalid } from "../../engine.js";
2
+ export class Transport {
3
+ handleFinishReason(completion, finishReason) {
4
+ if (finishReason === 'length')
5
+ throw new ResponseInvalid('Token limit exceeded.', { cause: completion });
6
+ if (['stop', 'tool_calls'].includes(finishReason)) { }
7
+ else
8
+ throw new ResponseInvalid('Abnormal finish reason', { cause: finishReason });
9
+ }
10
+ }
11
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-chatcompletions/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAUlD,MAAM,OAAgB,SAAS;IAepB,kBAAkB,CAAC,UAAiC,EAAE,YAA2D;QACpH,IAAI,YAAY,KAAK,QAAQ;YACzB,MAAM,IAAI,eAAe,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA,CAAC;;YAChD,MAAM,IAAI,eAAe,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACtF,CAAC;CAEJ"}
@@ -0,0 +1,17 @@
1
+ import { Function } from '../function.ts';
2
+ import { CompatibleEngine } from '../compatible-engine.ts';
3
+ import * as MessageCodecModule from './openai-chatcompletions/message-codec.ts';
4
+ import * as TransportModule from './openai-chatcompletions/transport.ts';
5
+ import type { Verbatim } from '../verbatim.ts';
6
+ import * as ChoiceCodecModule from './openai-chatcompletions/choice-codec.ts';
7
+ export type OpenAIChatCompletionsCompatibleEngine<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = OpenAIChatCompletionsCompatibleEngine.Instance<fdm, vdm>;
8
+ export declare namespace OpenAIChatCompletionsCompatibleEngine {
9
+ abstract class Instance<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Instance<fdm, vdm> {
10
+ protected abstract transport: OpenAIChatCompletionsCompatibleEngine.Transport<fdm, vdm>;
11
+ }
12
+ interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Options<fdm, vdm> {
13
+ }
14
+ export import Transport = TransportModule.Transport;
15
+ export import MessageCodec = MessageCodecModule.MessageCodec;
16
+ export import ChoiceCodec = ChoiceCodecModule;
17
+ }
@@ -0,0 +1,14 @@
1
+ import { CompatibleEngine } from "../compatible-engine.js";
2
+ import * as MessageCodecModule from "./openai-chatcompletions/message-codec.js";
3
+ import * as TransportModule from "./openai-chatcompletions/transport.js";
4
+ import * as ChoiceCodecModule from "./openai-chatcompletions/choice-codec.js";
5
+ export var OpenAIChatCompletionsCompatibleEngine;
6
+ (function (OpenAIChatCompletionsCompatibleEngine) {
7
+ class Instance extends CompatibleEngine.Instance {
8
+ }
9
+ OpenAIChatCompletionsCompatibleEngine.Instance = Instance;
10
+ OpenAIChatCompletionsCompatibleEngine.Transport = TransportModule.Transport;
11
+ OpenAIChatCompletionsCompatibleEngine.MessageCodec = MessageCodecModule.MessageCodec;
12
+ OpenAIChatCompletionsCompatibleEngine.ChoiceCodec = ChoiceCodecModule;
13
+ })(OpenAIChatCompletionsCompatibleEngine || (OpenAIChatCompletionsCompatibleEngine = {}));
14
+ //# sourceMappingURL=openai-chatcompletions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-chatcompletions.js","sourceRoot":"","sources":["../../src/compatible-engine.d/openai-chatcompletions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,kBAAkB,MAAM,2CAA2C,CAAC;AAChF,OAAO,KAAK,eAAe,MAAM,uCAAuC,CAAC;AAEzE,OAAO,KAAK,iBAAiB,MAAM,0CAA0C,CAAC;AAQ9E,MAAM,KAAW,qCAAqC,CAgBrD;AAhBD,WAAiB,qCAAqC;IAClD,MAAsB,QAGpB,SAAQ,gBAAgB,CAAC,QAAkB;KAE5C;IALqB,8CAAQ,WAK7B,CAAA;IAOa,+CAAS,GAAG,eAAe,CAAC,SAAS,CAAC;IACtC,kDAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC;IAC/C,iDAAW,GAAG,iBAAiB,CAAC;AAClD,CAAC,EAhBgB,qCAAqC,KAArC,qCAAqC,QAgBrD"}
@@ -0,0 +1,5 @@
1
+ import { Structuring } from '../../compatible-engine/structuring.ts';
2
+ import type { Function } from '../../function.ts';
3
+ import type { Verbatim } from '../../verbatim.ts';
4
+ import type { OpenAI } from 'openai';
5
+ export declare function encode<fdu extends Function.Decl.Proto, vdu extends Verbatim.Decl.Proto>(choice: Structuring.Choice<fdu, vdu>): OpenAI.Responses.ToolChoiceOptions | OpenAI.Responses.ToolChoiceAllowed;
@@ -0,0 +1,30 @@
1
+ import { Structuring } from "../../compatible-engine/structuring.js";
2
+ export function encode(choice) {
3
+ if (choice === Structuring.Choice.NONE)
4
+ return 'none';
5
+ else if (choice === Structuring.Choice.REQUIRED)
6
+ return 'auto';
7
+ else if (choice === Structuring.Choice.ANYONE)
8
+ return 'auto';
9
+ else if (choice === Structuring.Choice.AUTO)
10
+ return 'auto';
11
+ else if (choice === Structuring.Choice.FCall.REQUIRED)
12
+ return 'required';
13
+ else if (choice === Structuring.Choice.FCall.ANYONE)
14
+ return 'required';
15
+ else if (choice instanceof Structuring.Choice.FCall)
16
+ return {
17
+ type: 'allowed_tools',
18
+ mode: 'required',
19
+ tools: [{ type: 'function', name: choice.name }],
20
+ };
21
+ else if (choice === Structuring.Choice.VRequest.REQUIRED)
22
+ return 'none';
23
+ else if (choice === Structuring.Choice.VRequest.ANYONE)
24
+ return 'none';
25
+ else if (choice instanceof Structuring.Choice.VRequest)
26
+ return 'none';
27
+ else
28
+ throw new Error();
29
+ }
30
+ //# sourceMappingURL=choice-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choice-codec.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-responses/choice-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAOrE,MAAM,UAAU,MAAM,CAIlB,MAAoC;IAEpC,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;SACjD,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;SAC1D,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;SACxD,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;SAEtD,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;SACpE,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;SAClE,IAAI,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,KAAK;QAC/C,OAAO;YACH,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAiD;SACnG,CAAC;SAED,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;SACnE,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;SACjE,IAAI,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;;QAEjE,MAAM,IAAI,KAAK,EAAE,CAAC;AAC3B,CAAC"}