@zimtsui/typechat 0.0.98 → 0.0.100

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 +10 -6
  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
@@ -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
+ }
@@ -0,0 +1,48 @@
1
+ import { Engine } from "../engine.js";
2
+ import { MessageCodec } from "./openai-chatcompletions/message-codec.js";
3
+ import { Transport } from "./openai-chatcompletions/transport.js";
4
+ import { ToolCodec } from "./openai-chatcompletions/tool-codec.js";
5
+ import { Billing } from "./openai-chatcompletions/billing.js";
6
+ export var OpenAIChatCompletionsEngine;
7
+ (function (OpenAIChatCompletionsEngine) {
8
+ class Instance extends Engine.Instance {
9
+ options;
10
+ toolCodec;
11
+ messageCodec;
12
+ billing;
13
+ transport;
14
+ constructor(options) {
15
+ super(options);
16
+ this.options = options;
17
+ this.toolCodec = new ToolCodec({ fdm: this.fdm });
18
+ this.messageCodec = new MessageCodec({
19
+ toolCodec: this.toolCodec,
20
+ vdm: this.vdm,
21
+ });
22
+ this.billing = new Billing({ pricing: this.pricing });
23
+ this.transport = new Transport({
24
+ inferenceParams: this.inferenceOptions,
25
+ providerSpec: this.providerSpecs,
26
+ fdm: this.fdm,
27
+ throttle: this.throttle,
28
+ structuringChoice: this.structuringChoice,
29
+ messageCodec: this.messageCodec,
30
+ toolCodec: this.toolCodec,
31
+ billing: this.billing,
32
+ });
33
+ if (Object.keys(this.fdm).length && Object.keys(this.vdm).length)
34
+ throw new Error('Functions cannot be declared together with Verbatim Channels in OpenAI ChatCompletions Engine.');
35
+ }
36
+ clone() {
37
+ const engine = new OpenAIChatCompletionsEngine.Instance(this.options);
38
+ engine.middlewaresStateless = [...this.middlewaresStateless];
39
+ engine.middlewaresStateful = [...this.middlewaresStateful];
40
+ return engine;
41
+ }
42
+ }
43
+ OpenAIChatCompletionsEngine.Instance = Instance;
44
+ OpenAIChatCompletionsEngine.create = function (options) {
45
+ return new Instance(options);
46
+ };
47
+ })(OpenAIChatCompletionsEngine || (OpenAIChatCompletionsEngine = {}));
48
+ //# sourceMappingURL=openai-chatcompletions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-chatcompletions.js","sourceRoot":"","sources":["../../src/engines/openai-chatcompletions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAO9D,MAAM,KAAW,2BAA2B,CAmD3C;AAnDD,WAAiB,2BAA2B;IACxC,MAAa,QAGX,SAAQ,MAAM,CAAC,QAAkB;QAMF;QALnB,SAAS,CAAiB;QAC1B,YAAY,CAAyB;QACrC,OAAO,CAAU;QACR,SAAS,CAAsB;QAElD,YAA6B,OAAsD;YAC/E,KAAK,CAAC,OAAO,CAAC,CAAC;YADU,YAAO,GAAP,OAAO,CAA+C;YAE/E,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,GAAG,EAAE,IAAI,CAAC,GAAG;aAChB,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;gBAC3B,eAAe,EAAE,IAAI,CAAC,gBAAgB;gBACtC,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;gBAC5D,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAC;QAC1H,CAAC;QAEe,KAAK;YACjB,MAAM,MAAM,GAAG,IAAI,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtE,MAAM,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC7D,MAAM,CAAC,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAClB,CAAC;KACJ;IArCY,oCAAQ,WAqCpB,CAAA;IAOY,kCAAM,GAAkB,UAGnC,OAAiC;QAC/B,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAA;AACL,CAAC,EAnDgB,2BAA2B,KAA3B,2BAA2B,QAmD3C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/engines/openai-responses/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,KAAqC;QAC/C,MAAM,kBAAkB,GAAG,KAAK,CAAC,oBAAoB,CAAC,aAAa,CAAC;QACpE,MAAM,mBAAmB,GAAG,KAAK,CAAC,YAAY,GAAG,kBAAkB,CAAC;QACpE,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,aAAa,GAAG,GAAG,CACvD,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,24 @@
1
+ import { Engine } from '../../engine.ts';
2
+ import { RoleMessage } from './message.ts';
3
+ import { Function } from '../../function.ts';
4
+ import OpenAI from 'openai';
5
+ import type { ToolCodec } from './tool-codec.ts';
6
+ import type { Verbatim } from '../../verbatim.ts';
7
+ import { Media } from '../../media.ts';
8
+ export declare class MessageCodec<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
9
+ protected toolCodec: ToolCodec<fdm>;
10
+ protected vdm: vdm;
11
+ constructor(options: MessageCodec.Options<fdm, vdm>);
12
+ protected encodeImageResolution(resolution: Media.Image.Resolution): OpenAI.Responses.ResponseInputImage['detail'];
13
+ decodeAiMessage(output: OpenAI.Responses.ResponseOutputItem[]): RoleMessage.Ai.From<fdm, vdm>;
14
+ encodeUserMessage(userMessage: Engine.RoleMessage.User.From<fdm>): OpenAI.Responses.ResponseInput;
15
+ encodeAiMessage(aiMessage: Engine.RoleMessage.Ai.From<fdm, vdm>): OpenAI.Responses.ResponseInput;
16
+ encodeDeveloperMessage(developerMessage: Engine.RoleMessage.Developer): string;
17
+ encodeChatMessage(chatMessage: Engine.Session.ChatMessage.From<fdm, vdm>): OpenAI.Responses.ResponseInput;
18
+ }
19
+ export declare namespace MessageCodec {
20
+ interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
21
+ toolCodec: ToolCodec<fdm>;
22
+ vdm: vdm;
23
+ }
24
+ }
@@ -1,8 +1,9 @@
1
- import { RoleMessage } from "../../compatible-engine/session.js";
1
+ import { Engine } from "../../engine.js";
2
+ import { RoleMessage } from "./message.js";
2
3
  import { Function } from "../../function.js";
4
+ import { Tool } from "./tool.js";
3
5
  import * as VerbatimCodec from "../../verbatim/codec.js";
4
6
  import { Media } from "../../media.js";
5
- const NOMINAL = Symbol();
6
7
  export class MessageCodec {
7
8
  toolCodec;
8
9
  vdm;
@@ -10,14 +11,26 @@ export class MessageCodec {
10
11
  this.toolCodec = options.toolCodec;
11
12
  this.vdm = options.vdm;
12
13
  }
14
+ encodeImageResolution(resolution) {
15
+ if (resolution === 1 /* Media.Image.Resolution.LOW */)
16
+ return 'low';
17
+ else if (resolution === 2 /* Media.Image.Resolution.HIGH */)
18
+ return 'high';
19
+ else if (resolution === 3 /* Media.Image.Resolution.HIGHEST */)
20
+ return 'original';
21
+ else if (resolution === 0 /* Media.Image.Resolution.AUTO */)
22
+ return 'auto';
23
+ else
24
+ throw new Error();
25
+ }
13
26
  decodeAiMessage(output) {
14
27
  const parts = [];
15
- for (const item of output)
28
+ for (const item of output) {
16
29
  if (item.type === 'message')
17
30
  for (const part of item.content)
18
31
  if (part.type === 'output_text') {
19
- const vrs = VerbatimCodec.Request.decode(part.text, this.vdm);
20
- parts.push(new RoleMessage.Part.Text(part.text, vrs));
32
+ const vreqs = VerbatimCodec.Request.decode(part.text, this.vdm);
33
+ parts.push(new RoleMessage.Ai.Part.Text(part.text, vreqs));
21
34
  }
22
35
  else if (part.type === 'refusal')
23
36
  throw new SyntaxError('Refusal', { cause: output });
@@ -26,21 +39,12 @@ export class MessageCodec {
26
39
  else if (item.type === 'function_call')
27
40
  parts.push(this.toolCodec.decodeFunctionCall(item));
28
41
  else if (item.type === 'reasoning') { }
42
+ else if (item.type === 'apply_patch_call')
43
+ parts.push(new Tool.ApplyPatch.Call(item));
29
44
  else
30
45
  throw new Error();
31
- return new MessageCodec.Message.Ai(parts, output);
32
- }
33
- encodeImageResolution(resolution) {
34
- if (resolution === 1 /* Media.Image.Resolution.LOW */)
35
- return 'low';
36
- else if (resolution === 2 /* Media.Image.Resolution.HIGH */)
37
- return 'high';
38
- else if (resolution === 3 /* Media.Image.Resolution.HIGHEST */)
39
- return 'original';
40
- else if (resolution === 0 /* Media.Image.Resolution.AUTO */)
41
- return 'auto';
42
- else
43
- throw new Error();
46
+ }
47
+ return new RoleMessage.Ai(parts, output);
44
48
  }
45
49
  encodeUserMessage(userMessage) {
46
50
  const responseInput = [];
@@ -56,7 +60,7 @@ export class MessageCodec {
56
60
  }
57
61
  }
58
62
  for (const part of userMessage.getParts()) {
59
- if (part instanceof RoleMessage.Part.Text)
63
+ if (part instanceof Engine.RoleMessage.User.Part.Text)
60
64
  content.push({
61
65
  type: 'input_text',
62
66
  text: part.text,
@@ -73,64 +77,64 @@ export class MessageCodec {
73
77
  file_data: `data:${part.mimeType};base64,${part.base64}`,
74
78
  });
75
79
  else if (part instanceof Function.Response) {
80
+ const fres = part;
81
+ flush();
82
+ responseInput.push(this.toolCodec.encodeFunctionResponse(fres));
83
+ }
84
+ else if (part instanceof Tool.ApplyPatch.Response) {
76
85
  flush();
77
- responseInput.push(this.toolCodec.encodeFunctionResponse(part));
86
+ responseInput.push({
87
+ type: 'apply_patch_call_output',
88
+ call_id: part.id,
89
+ status: part.failure ? 'failed' : 'completed',
90
+ output: part.failure || undefined,
91
+ });
78
92
  }
79
93
  else
80
- throw new Error();
94
+ throw new Error('Unknown user message part type', { cause: part });
81
95
  }
82
96
  flush();
83
97
  return responseInput;
84
98
  }
85
99
  encodeAiMessage(aiMessage) {
86
- if (aiMessage instanceof MessageCodec.Message.Ai) {
87
- const responseInput = aiMessage.getRaw();
88
- if (responseInput.every(item => item.type !== 'computer_call_output')) { }
100
+ if (aiMessage instanceof RoleMessage.Ai) {
101
+ const nativeAiMessage = aiMessage;
102
+ const raw = nativeAiMessage.getRaw();
103
+ if (raw.every(item => item.type !== 'computer_call_output')) { }
89
104
  else
90
105
  throw new Error('Computer calls are not supported yet.');
91
- return responseInput;
106
+ return raw;
92
107
  }
93
108
  const responseInput = [];
94
109
  for (const part of aiMessage.getParts()) {
95
- if (part instanceof RoleMessage.Part.Text)
110
+ if (part instanceof Engine.RoleMessage.Ai.Part.Text)
96
111
  responseInput.push({
97
112
  role: 'assistant',
98
113
  content: part.text,
99
114
  });
100
- else if (part instanceof Function.Call)
101
- responseInput.push(this.toolCodec.encodeFunctionCall(part));
115
+ else if (part instanceof Function.Call) {
116
+ const fcall = part;
117
+ responseInput.push(this.toolCodec.encodeFunctionCall(fcall));
118
+ }
102
119
  else
103
- throw new Error();
120
+ throw new Error('Unknown AI message part type', { cause: part });
104
121
  }
105
- ;
106
122
  return responseInput;
107
123
  }
108
124
  encodeDeveloperMessage(developerMessage) {
109
- return developerMessage.getText();
125
+ return developerMessage.getOnlyTextParts().map(part => part.text).join('');
110
126
  }
111
127
  encodeChatMessage(chatMessage) {
112
- if (chatMessage instanceof RoleMessage.User)
113
- return this.encodeUserMessage(chatMessage);
114
- else if (chatMessage instanceof RoleMessage.Ai)
115
- return this.encodeAiMessage(chatMessage);
128
+ if (chatMessage instanceof Engine.RoleMessage.User) {
129
+ const userMessage = chatMessage;
130
+ return this.encodeUserMessage(userMessage);
131
+ }
132
+ else if (chatMessage instanceof Engine.RoleMessage.Ai) {
133
+ const aiMessage = chatMessage;
134
+ return this.encodeAiMessage(aiMessage);
135
+ }
116
136
  else
117
137
  throw new Error();
118
138
  }
119
139
  }
120
- (function (MessageCodec) {
121
- let Message;
122
- (function (Message) {
123
- class Ai extends RoleMessage.Ai {
124
- raw;
125
- constructor(parts, raw) {
126
- super(parts);
127
- this.raw = raw;
128
- }
129
- getRaw() {
130
- return this.raw;
131
- }
132
- }
133
- Message.Ai = Ai;
134
- })(Message = MessageCodec.Message || (MessageCodec.Message = {}));
135
- })(MessageCodec || (MessageCodec = {}));
136
140
  //# sourceMappingURL=message-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/engines/openai-responses/message-codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { Engine } from '../../engine.ts';
2
+ import { Function } from '../../function.ts';
3
+ import { Tool } from './tool.ts';
4
+ import type { Verbatim } from '../../verbatim.ts';
5
+ import OpenAI from 'openai';
6
+ declare const NOMINAL: unique symbol;
7
+ export declare namespace RoleMessage {
8
+ class Ai<in out fdu extends Function.Decl.Proto, in out vdu extends Verbatim.Decl.Proto> extends Engine.RoleMessage.Ai<fdu, vdu> {
9
+ protected raw: OpenAI.Responses.ResponseOutputItem[];
10
+ protected [NOMINAL]: never;
11
+ constructor(parts: unknown[], raw: OpenAI.Responses.ResponseOutputItem[]);
12
+ getRaw(): OpenAI.Responses.ResponseOutputItem[];
13
+ getToolCalls(): Tool.Call.Of<fdu>[];
14
+ getOnlyToolCall(): Tool.Call.Of<fdu>;
15
+ }
16
+ namespace Ai {
17
+ type From<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = Ai<Function.Decl.From<fdm>, Verbatim.Decl.From<vdm>>;
18
+ namespace Part {
19
+ export import Text = Engine.RoleMessage.Ai.Part.Text;
20
+ }
21
+ }
22
+ export import User = Engine.RoleMessage.User;
23
+ export import Developer = Engine.RoleMessage.Developer;
24
+ }
25
+ export {};
@@ -0,0 +1,43 @@
1
+ import { Engine } from "../../engine.js";
2
+ import { Function } from "../../function.js";
3
+ import { Tool } from "./tool.js";
4
+ const NOMINAL = Symbol();
5
+ export var RoleMessage;
6
+ (function (RoleMessage) {
7
+ class Ai extends Engine.RoleMessage.Ai {
8
+ raw;
9
+ constructor(parts, raw) {
10
+ super(parts);
11
+ this.raw = raw;
12
+ }
13
+ getRaw() {
14
+ return this.raw;
15
+ }
16
+ getToolCalls() {
17
+ const tcs = [];
18
+ for (const part of this.parts)
19
+ if (part instanceof Function.Call || part instanceof Tool.ApplyPatch.Call) {
20
+ const tc = part;
21
+ tcs.push(tc);
22
+ }
23
+ return tcs;
24
+ }
25
+ getOnlyToolCall() {
26
+ const tcs = this.getToolCalls();
27
+ if (tcs.length === 1) { }
28
+ else
29
+ throw new Error();
30
+ return tcs[0];
31
+ }
32
+ }
33
+ RoleMessage.Ai = Ai;
34
+ (function (Ai) {
35
+ let Part;
36
+ (function (Part) {
37
+ Part.Text = Engine.RoleMessage.Ai.Part.Text;
38
+ })(Part = Ai.Part || (Ai.Part = {}));
39
+ })(Ai = RoleMessage.Ai || (RoleMessage.Ai = {}));
40
+ RoleMessage.User = Engine.RoleMessage.User;
41
+ RoleMessage.Developer = Engine.RoleMessage.Developer;
42
+ })(RoleMessage || (RoleMessage = {}));
43
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/engines/openai-responses/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;AAGzB,MAAM,KAAW,WAAW,CA6C3B;AA7CD,WAAiB,WAAW;IACxB,MAAa,EAGX,SAAQ,MAAM,CAAC,WAAW,CAAC,EAAY;QAIvB;QAFd,YACI,KAAgB,EACN,GAA0C;YAEpD,KAAK,CAAC,KAAK,CAAC,CAAC;YAFH,QAAG,GAAH,GAAG,CAAuC;QAGxD,CAAC;QAEM,MAAM;YACT,OAAO,IAAI,CAAC,GAAG,CAAC;QACpB,CAAC;QACM,YAAY;YACf,MAAM,GAAG,GAAwB,EAAE,CAAC;YACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;gBACzB,IAAI,IAAI,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;oBACxE,MAAM,EAAE,GAAG,IAAyB,CAAC;oBACrC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;YACL,OAAO,GAAG,CAAC;QACf,CAAC;QACM,eAAe;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC;;gBAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAChD,OAAO,GAAG,CAAC,CAAC,CAAE,CAAC;QACnB,CAAC;KACJ;IA7BY,cAAE,KA6Bd,CAAA;IAED,WAAiB,EAAE;QAMf,IAAiB,IAAI,CAEpB;QAFD,WAAiB,IAAI;YACH,SAAI,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;QACzD,CAAC,EAFgB,IAAI,GAAJ,OAAI,KAAJ,OAAI,QAEpB;IACL,CAAC,EATgB,EAAE,GAAF,cAAE,KAAF,cAAE,QASlB;IAEa,gBAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,qBAAS,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3D,CAAC,EA7CgB,WAAW,KAAX,WAAW,QA6C3B"}
@@ -0,0 +1,3 @@
1
+ import { StructuringChoice } from '../../structuring-choice.ts';
2
+ import type { OpenAI } from 'openai';
3
+ export declare function encode(structuringChoice: StructuringChoice): OpenAI.Responses.ToolChoiceOptions | OpenAI.Responses.ToolChoiceAllowed;
@@ -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-responses/structuring-choice-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAIhE,MAAM,UAAU,MAAM,CAClB,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,12 @@
1
+ import { Function } from '../../function.ts';
2
+ import { Verbatim } from '../../verbatim.ts';
3
+ import { RoleMessage } from './message.ts';
4
+ import { Engine } from '../../engine.ts';
5
+ export declare class StructuringValidator<in out fdu extends Function.Decl.Proto, in out vdu extends Verbatim.Decl.Proto> extends Engine.StructuringValidator<fdu, vdu> {
6
+ constructor(options: StructuringValidator.Options);
7
+ validate(aiMessage: RoleMessage.Ai<fdu, vdu>): RoleMessage.User<never> | void;
8
+ }
9
+ export declare namespace StructuringValidator {
10
+ type From<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = StructuringValidator<Function.Decl.From<fdm>, Verbatim.Decl.From<vdm>>;
11
+ type Options = Engine.StructuringValidator.Options;
12
+ }
@@ -0,0 +1,64 @@
1
+ import { RoleMessage } from "./message.js";
2
+ import * as VerbatimCodec from "../../verbatim/codec.js";
3
+ import { StructuringChoice } from "../../structuring-choice.js";
4
+ import { Engine } from "../../engine.js";
5
+ export class StructuringValidator extends Engine.StructuringValidator {
6
+ constructor(options) {
7
+ super(options);
8
+ }
9
+ validate(aiMessage) {
10
+ const tcalls = aiMessage.getToolCalls();
11
+ const vreqs = aiMessage.getVerbatimRequests();
12
+ if (this.structuringChoice === StructuringChoice.TCall.REQUIRED) {
13
+ if (!tcalls.length)
14
+ throw new SyntaxError('Tool call required.');
15
+ }
16
+ else if (this.structuringChoice === StructuringChoice.TCall.ANYONE) {
17
+ if (!tcalls.length)
18
+ throw new SyntaxError('Tool call required.');
19
+ if (tcalls.length > 1)
20
+ throw new SyntaxError('Only 1 tool call allowed.');
21
+ }
22
+ else if (this.structuringChoice === StructuringChoice.VRequest.REQUIRED) {
23
+ if (!vreqs.length)
24
+ return new RoleMessage.User([
25
+ RoleMessage.User.Part.Text.paragraph(VerbatimCodec.System.encode(`Error: Verbatim request required, but not found. Check your output format.`)),
26
+ ]);
27
+ }
28
+ else if (this.structuringChoice === StructuringChoice.VRequest.ANYONE) {
29
+ if (!vreqs.length)
30
+ return new RoleMessage.User([
31
+ RoleMessage.User.Part.Text.paragraph(VerbatimCodec.System.encode(`Error: Verbatim request required, but not found. Check your output format.`)),
32
+ ]);
33
+ if (vreqs.length > 1)
34
+ return new RoleMessage.User([
35
+ RoleMessage.User.Part.Text.paragraph(VerbatimCodec.System.encode(`Error: Only 1 verbatim request allowed, but multiple found.`)),
36
+ ]);
37
+ }
38
+ else if (this.structuringChoice === StructuringChoice.REQUIRED) {
39
+ if (tcalls.length + vreqs.length) { }
40
+ else
41
+ return new RoleMessage.User([
42
+ RoleMessage.User.Part.Text.paragraph(VerbatimCodec.System.encode(`Error: Either tool call or verbatim request required, but none found. Check your output format.`)),
43
+ ]);
44
+ }
45
+ else if (this.structuringChoice === StructuringChoice.ANYONE) {
46
+ if (tcalls.length + vreqs.length) { }
47
+ else
48
+ return new RoleMessage.User([
49
+ RoleMessage.User.Part.Text.paragraph(VerbatimCodec.System.encode(`Error: Either 1 tool call or 1 verbatim request required, but none found. Check your output format.`)),
50
+ ]);
51
+ if (tcalls.length + vreqs.length > 1)
52
+ return new RoleMessage.User([
53
+ RoleMessage.User.Part.Text.paragraph(VerbatimCodec.System.encode(`Error: Either Only 1 tool call or only 1 verbatim request allowed, but multiple found.`)),
54
+ ]);
55
+ }
56
+ else if (this.structuringChoice === StructuringChoice.NONE) {
57
+ if (tcalls.length + vreqs.length)
58
+ return new RoleMessage.User([
59
+ RoleMessage.User.Part.Text.paragraph(VerbatimCodec.System.encode(`Error: Neither tool call nor verbatim request allowed.`)),
60
+ ]);
61
+ }
62
+ }
63
+ }
64
+ //# sourceMappingURL=structuring-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structuring-validator.js","sourceRoot":"","sources":["../../../src/engines/openai-responses/structuring-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import OpenAI from 'openai';
2
+ import { Function } from '../../function.ts';
3
+ export declare class ToolCodec<in out fdm extends Function.Decl.Map.Proto> {
4
+ protected fdm: fdm;
5
+ protected apiFds: OpenAI.Responses.FunctionTool[];
6
+ constructor(options: ToolCodec.Options<fdm>);
7
+ encodeFunctionResponse(fres: Function.Response.From<fdm>): OpenAI.Responses.ResponseInputItem.FunctionCallOutput;
8
+ protected static encodeFunctionDeclarationEntry<fdu extends Function.Decl.Proto>(fdentry: Function.Decl.Entry.Of<fdu>): OpenAI.Responses.FunctionTool;
9
+ encodeFunctionDeclarationMap(): OpenAI.Responses.FunctionTool[];
10
+ decodeFunctionCall(apifc: OpenAI.Responses.ResponseFunctionToolCall): Function.Call.From<fdm>;
11
+ encodeFunctionCall(fcall: Function.Call.From<fdm>): OpenAI.Responses.ResponseFunctionToolCall;
12
+ }
13
+ export declare namespace ToolCodec {
14
+ interface Options<in out fdm extends Function.Decl.Map.Proto> {
15
+ fdm: fdm;
16
+ }
17
+ }