@zimtsui/typechat 0.0.94 → 0.0.96

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 (164) hide show
  1. package/DEVELOPMENT.md +0 -6
  2. package/README.md +26 -36
  3. package/assets/verbatim/instruction.md +27 -25
  4. package/assets/verbatim/quotation.handlebars +1 -1
  5. package/assets/verbatim/system.handlebars +1 -0
  6. package/build/adaptor.d.ts +5 -23
  7. package/build/adaptor.js +14 -25
  8. package/build/adaptor.js.map +1 -1
  9. package/build/api-types/anthropic/billing.d.ts +3 -3
  10. package/build/api-types/anthropic/billing.js +6 -6
  11. package/build/api-types/anthropic/billing.js.map +1 -1
  12. package/build/api-types/anthropic/tool-codec.d.ts +3 -3
  13. package/build/api-types/anthropic/tool-codec.js +15 -11
  14. package/build/api-types/anthropic/tool-codec.js.map +1 -1
  15. package/build/api-types/google/billing.d.ts +3 -3
  16. package/build/api-types/google/billing.js +7 -7
  17. package/build/api-types/google/billing.js.map +1 -1
  18. package/build/api-types/google/tool-codec.d.ts +3 -3
  19. package/build/api-types/google/tool-codec.js +16 -34
  20. package/build/api-types/google/tool-codec.js.map +1 -1
  21. package/build/api-types/openai-chatcompletions/billing.d.ts +5 -5
  22. package/build/api-types/openai-chatcompletions/billing.js +7 -7
  23. package/build/api-types/openai-chatcompletions/billing.js.map +1 -1
  24. package/build/api-types/openai-chatcompletions/tool-codec.d.ts +5 -5
  25. package/build/api-types/openai-chatcompletions/tool-codec.js +17 -13
  26. package/build/api-types/openai-chatcompletions/tool-codec.js.map +1 -1
  27. package/build/api-types/openai-responses/billing.d.ts +3 -3
  28. package/build/api-types/openai-responses/billing.js +6 -6
  29. package/build/api-types/openai-responses/billing.js.map +1 -1
  30. package/build/api-types/openai-responses/tool-codec.d.ts +3 -3
  31. package/build/api-types/openai-responses/tool-codec.js +16 -12
  32. package/build/api-types/openai-responses/tool-codec.js.map +1 -1
  33. package/build/assets.d.ts +1 -1
  34. package/build/assets.js +6 -5
  35. package/build/assets.js.map +1 -1
  36. package/build/compatible-engine/session.d.ts +4 -16
  37. package/build/compatible-engine/session.js +8 -15
  38. package/build/compatible-engine/session.js.map +1 -1
  39. package/build/compatible-engine/validation.d.ts +7 -7
  40. package/build/compatible-engine/validation.js +33 -34
  41. package/build/compatible-engine/validation.js.map +1 -1
  42. package/build/compatible-engine.d/anthropic/message-codec.d.ts +4 -3
  43. package/build/compatible-engine.d/anthropic/message-codec.js +16 -22
  44. package/build/compatible-engine.d/anthropic/message-codec.js.map +1 -1
  45. package/build/compatible-engine.d/anthropic/transport.d.ts +10 -3
  46. package/build/compatible-engine.d/anthropic/transport.js +105 -101
  47. package/build/compatible-engine.d/anthropic/transport.js.map +1 -1
  48. package/build/compatible-engine.d/anthropic.d.ts +2 -0
  49. package/build/compatible-engine.d/anthropic.js +9 -1
  50. package/build/compatible-engine.d/anthropic.js.map +1 -1
  51. package/build/compatible-engine.d/google/message-codec.d.ts +4 -3
  52. package/build/compatible-engine.d/google/message-codec.js +16 -22
  53. package/build/compatible-engine.d/google/message-codec.js.map +1 -1
  54. package/build/compatible-engine.d/google/transport.d.ts +10 -3
  55. package/build/compatible-engine.d/google/transport.js +32 -24
  56. package/build/compatible-engine.d/google/transport.js.map +1 -1
  57. package/build/compatible-engine.d/google.d.ts +2 -0
  58. package/build/compatible-engine.d/google.js +23 -2
  59. package/build/compatible-engine.d/google.js.map +1 -1
  60. package/build/compatible-engine.d/openai-chatcompletions/message-codec.d.ts +6 -5
  61. package/build/compatible-engine.d/openai-chatcompletions/message-codec.js +17 -24
  62. package/build/compatible-engine.d/openai-chatcompletions/message-codec.js.map +1 -1
  63. package/build/compatible-engine.d/openai-chatcompletions/transport.d.ts +33 -3
  64. package/build/compatible-engine.d/openai-chatcompletions/transport.js +182 -6
  65. package/build/compatible-engine.d/openai-chatcompletions/transport.js.map +1 -1
  66. package/build/compatible-engine.d/openai-chatcompletions.d.ts +10 -2
  67. package/build/compatible-engine.d/openai-chatcompletions.js +35 -0
  68. package/build/compatible-engine.d/openai-chatcompletions.js.map +1 -1
  69. package/build/compatible-engine.d/openai-responses/message-codec.d.ts +4 -6
  70. package/build/compatible-engine.d/openai-responses/message-codec.js +70 -74
  71. package/build/compatible-engine.d/openai-responses/message-codec.js.map +1 -1
  72. package/build/compatible-engine.d/openai-responses/transport.d.ts +14 -8
  73. package/build/compatible-engine.d/openai-responses/transport.js +64 -64
  74. package/build/compatible-engine.d/openai-responses/transport.js.map +1 -1
  75. package/build/compatible-engine.d/openai-responses.d.ts +2 -0
  76. package/build/compatible-engine.d/openai-responses.js +10 -2
  77. package/build/compatible-engine.d/openai-responses.js.map +1 -1
  78. package/build/compatible-engine.d.ts +2 -1
  79. package/build/compatible-engine.js +3 -3
  80. package/build/compatible-engine.js.map +1 -1
  81. package/build/config.d.ts +17 -19
  82. package/build/config.js +2 -4
  83. package/build/config.js.map +1 -1
  84. package/build/endpoint-spec.d.ts +15 -15
  85. package/build/endpoint-spec.js +2 -2
  86. package/build/endpoint-spec.js.map +1 -1
  87. package/build/engine/session.d.ts +31 -0
  88. package/build/engine/session.js +19 -0
  89. package/build/engine/session.js.map +1 -1
  90. package/build/engine/validation.d.ts +1 -7
  91. package/build/engine.d.ts +37 -20
  92. package/build/engine.js +154 -87
  93. package/build/engine.js.map +1 -1
  94. package/build/function.d.ts +1 -1
  95. package/build/native-engines.d/google/message-codec.d.ts +6 -3
  96. package/build/native-engines.d/google/message-codec.js +23 -27
  97. package/build/native-engines.d/google/message-codec.js.map +1 -1
  98. package/build/native-engines.d/google/transport.d.ts +13 -3
  99. package/build/native-engines.d/google/transport.js +41 -27
  100. package/build/native-engines.d/google/transport.js.map +1 -1
  101. package/build/native-engines.d/google/validation.d.ts +5 -6
  102. package/build/native-engines.d/google/validation.js +3 -6
  103. package/build/native-engines.d/google/validation.js.map +1 -1
  104. package/build/native-engines.d/google.d.ts +2 -2
  105. package/build/native-engines.d/google.js +22 -4
  106. package/build/native-engines.d/google.js.map +1 -1
  107. package/build/native-engines.d/openai-responses/choice-codec.d.ts +1 -1
  108. package/build/native-engines.d/openai-responses/choice-codec.js +12 -12
  109. package/build/native-engines.d/openai-responses/choice-codec.js.map +1 -1
  110. package/build/native-engines.d/openai-responses/message-codec.d.ts +5 -3
  111. package/build/native-engines.d/openai-responses/message-codec.js +59 -48
  112. package/build/native-engines.d/openai-responses/message-codec.js.map +1 -1
  113. package/build/native-engines.d/openai-responses/transport.d.ts +14 -6
  114. package/build/native-engines.d/openai-responses/transport.js +56 -54
  115. package/build/native-engines.d/openai-responses/transport.js.map +1 -1
  116. package/build/native-engines.d/openai-responses/validation.d.ts +7 -7
  117. package/build/native-engines.d/openai-responses/validation.js +31 -32
  118. package/build/native-engines.d/openai-responses/validation.js.map +1 -1
  119. package/build/native-engines.d/openai-responses.d.ts +2 -2
  120. package/build/native-engines.d/openai-responses.js +9 -4
  121. package/build/native-engines.d/openai-responses.js.map +1 -1
  122. package/build/repetition.d.ts +2 -1
  123. package/build/repetition.js +7 -42
  124. package/build/repetition.js.map +1 -1
  125. package/build/telemetry.d.ts +1 -0
  126. package/build/telemetry.js +1 -0
  127. package/build/telemetry.js.map +1 -1
  128. package/build/tsconfig.tsbuildinfo +1 -1
  129. package/build/verbatim/codec/declarations.d.ts +0 -1
  130. package/build/verbatim/codec/declarations.js +1 -2
  131. package/build/verbatim/codec/declarations.js.map +1 -1
  132. package/build/verbatim/codec/helpers.d.ts +2 -0
  133. package/build/verbatim/codec/{escape.js → helpers.js} +5 -1
  134. package/build/verbatim/codec/helpers.js.map +1 -0
  135. package/build/verbatim/codec/quotation.d.ts +1 -2
  136. package/build/verbatim/codec/quotation.js +3 -4
  137. package/build/verbatim/codec/quotation.js.map +1 -1
  138. package/build/verbatim/codec/response.d.ts +0 -1
  139. package/build/verbatim/codec/response.js +1 -2
  140. package/build/verbatim/codec/response.js.map +1 -1
  141. package/build/verbatim/codec/{meta.d.ts → system.d.ts} +0 -1
  142. package/build/verbatim/codec/system.js +7 -0
  143. package/build/verbatim/codec/system.js.map +1 -0
  144. package/build/verbatim/codec.d.ts +1 -1
  145. package/build/verbatim/codec.js +1 -1
  146. package/build/verbatim/codec.js.map +1 -1
  147. package/package.json +8 -9
  148. package/assets/verbatim/meta.handlebars +0 -1
  149. package/build/compatible-engine.d/aliyun/transport.d.ts +0 -12
  150. package/build/compatible-engine.d/aliyun/transport.js +0 -7
  151. package/build/compatible-engine.d/aliyun/transport.js.map +0 -1
  152. package/build/compatible-engine.d/aliyun.d.ts +0 -21
  153. package/build/compatible-engine.d/aliyun.js +0 -38
  154. package/build/compatible-engine.d/aliyun.js.map +0 -1
  155. package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.d.ts +0 -31
  156. package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.js +0 -88
  157. package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.js.map +0 -1
  158. package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.d.ts +0 -34
  159. package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.js +0 -190
  160. package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.js.map +0 -1
  161. package/build/verbatim/codec/escape.d.ts +0 -1
  162. package/build/verbatim/codec/escape.js.map +0 -1
  163. package/build/verbatim/codec/meta.js +0 -8
  164. package/build/verbatim/codec/meta.js.map +0 -1
@@ -1,11 +1,187 @@
1
- import { ResponseInvalid } from "../../engine.js";
1
+ import OpenAI from 'openai';
2
+ import { loggers } from "../../telemetry.js";
3
+ import * as ChoiceCodec from "./choice-codec.js";
4
+ import * as Undici from 'undici';
2
5
  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)) { }
6
+ client;
7
+ inferenceParams;
8
+ providerSpec;
9
+ fdm;
10
+ throttle;
11
+ choice;
12
+ messageCodec;
13
+ toolCodec;
14
+ billing;
15
+ constructor(options) {
16
+ this.client = new OpenAI({
17
+ baseURL: options.providerSpec.baseUrl,
18
+ apiKey: options.providerSpec.apiKey,
19
+ fetch: Undici.fetch,
20
+ fetchOptions: { dispatcher: options.providerSpec.dispatcher },
21
+ });
22
+ this.inferenceParams = options.inferenceParams;
23
+ this.providerSpec = options.providerSpec;
24
+ this.fdm = options.fdm;
25
+ this.throttle = options.throttle;
26
+ this.choice = options.choice;
27
+ this.messageCodec = options.messageCodec;
28
+ this.toolCodec = options.toolCodec;
29
+ this.billing = options.billing;
30
+ }
31
+ makeParams(session) {
32
+ const tools = this.toolCodec.encodeFunctionDeclarationMap(this.fdm);
33
+ const messages = [];
34
+ if (session.developerMessage)
35
+ messages.push(...this.messageCodec.encodeRoleMessage(session.developerMessage));
36
+ messages.push(...this.messageCodec.encodeRoleMessages(session.chatMessages));
37
+ return {
38
+ model: this.inferenceParams.model,
39
+ messages,
40
+ tools: tools.length ? tools : undefined,
41
+ tool_choice: tools.length ? ChoiceCodec.encode(this.choice) : undefined,
42
+ parallel_tool_calls: tools.length ? this.inferenceParams.parallelToolCall : undefined,
43
+ stream: true,
44
+ stream_options: {
45
+ include_usage: true,
46
+ },
47
+ ...this.inferenceParams.additionalOptions,
48
+ };
49
+ }
50
+ mergeToolCall(apifc) {
51
+ if (apifc.id) { }
52
+ else
53
+ throw new Error();
54
+ if (apifc.function?.name) { }
55
+ else
56
+ throw new Error();
57
+ if (apifc.function?.arguments) { }
7
58
  else
8
- throw new ResponseInvalid('Abnormal finish reason', { cause: finishReason });
59
+ throw new Error();
60
+ return {
61
+ id: apifc.id,
62
+ type: 'function',
63
+ function: {
64
+ name: apifc.function.name,
65
+ arguments: apifc.function.arguments,
66
+ },
67
+ };
68
+ }
69
+ mergeCompletion(stock) {
70
+ const stockChoice = stock?.choices[0];
71
+ if (stockChoice?.finish_reason) { }
72
+ else
73
+ throw new SyntaxError('Finish reason missing', { cause: stock });
74
+ const completion = {
75
+ id: stock.id,
76
+ object: 'chat.completion',
77
+ created: stock.created,
78
+ model: stock.model,
79
+ choices: [{
80
+ index: 0,
81
+ finish_reason: stockChoice.finish_reason,
82
+ message: {
83
+ role: 'assistant',
84
+ content: stockChoice.delta.content ?? null,
85
+ tool_calls: stockChoice.delta.tool_calls?.map(apifc => this.mergeToolCall(apifc)),
86
+ refusal: stockChoice.delta.refusal ?? null,
87
+ },
88
+ logprobs: stockChoice.logprobs ?? null,
89
+ }],
90
+ usage: stock.usage ?? undefined,
91
+ };
92
+ return completion;
93
+ }
94
+ async fetch(wfctx, session, signal) {
95
+ try {
96
+ await this.throttle.requests(wfctx);
97
+ // Prepare request
98
+ const params = this.makeParams(session);
99
+ loggers.message.debug(params);
100
+ // Send request
101
+ const stream = await this.client.chat.completions.create(params, { signal });
102
+ // Get response
103
+ let stock = null;
104
+ for await (const chunk of stream) {
105
+ loggers.stream.trace(chunk);
106
+ stock ??= {
107
+ id: chunk.id,
108
+ created: chunk.created,
109
+ model: chunk.model,
110
+ choices: [],
111
+ object: 'chat.completion.chunk',
112
+ };
113
+ // choice
114
+ const deltaChoice = chunk.choices[0];
115
+ if (deltaChoice) {
116
+ if (!stock.choices.length)
117
+ stock.choices.push({
118
+ index: 0,
119
+ finish_reason: null,
120
+ delta: {},
121
+ });
122
+ // content
123
+ if (deltaChoice.delta.content) {
124
+ stock.choices[0].delta.content ??= '';
125
+ stock.choices[0].delta.content += deltaChoice.delta.content;
126
+ }
127
+ // function calls
128
+ if (deltaChoice.delta.tool_calls) {
129
+ stock.choices[0].delta.tool_calls ??= [];
130
+ for (const deltaToolCall of deltaChoice.delta.tool_calls) {
131
+ const toolCalls = stock.choices[0].delta.tool_calls;
132
+ toolCalls[deltaToolCall.index] ??= { index: deltaToolCall.index };
133
+ toolCalls[deltaToolCall.index].id ??= deltaToolCall.id;
134
+ if (deltaToolCall.function) {
135
+ toolCalls[deltaToolCall.index].function ??= {};
136
+ toolCalls[deltaToolCall.index].function.name ??= deltaToolCall.function.name;
137
+ if (deltaToolCall.function.arguments) {
138
+ toolCalls[deltaToolCall.index].function.arguments ??= '';
139
+ toolCalls[deltaToolCall.index].function.arguments += deltaToolCall.function?.arguments || '';
140
+ }
141
+ }
142
+ }
143
+ }
144
+ // finish reason
145
+ stock.choices[0].finish_reason ??= deltaChoice.finish_reason;
146
+ }
147
+ // usage
148
+ stock.usage ??= chunk.usage;
149
+ }
150
+ // Validate response
151
+ if (stock) { }
152
+ else
153
+ throw new Error();
154
+ const completion = this.mergeCompletion(stock);
155
+ loggers.message.debug(completion);
156
+ const choice = completion.choices[0];
157
+ if (choice) { }
158
+ else
159
+ throw new SyntaxError('Content missing', { cause: completion });
160
+ if (choice.message.content)
161
+ loggers.inference.info(choice.message.content);
162
+ if (choice.finish_reason === 'length')
163
+ throw new SyntaxError('Token limit exceeded.', { cause: completion });
164
+ if (['stop', 'tool_calls'].includes(choice.finish_reason)) { }
165
+ else
166
+ throw new SyntaxError('Abnormal finish reason', { cause: choice.finish_reason });
167
+ if (completion.usage) { }
168
+ else
169
+ throw new Error();
170
+ const cost = this.billing.charge(completion.usage);
171
+ if (choice.message.tool_calls)
172
+ loggers.message.info(choice.message.tool_calls);
173
+ loggers.message.info(completion.usage);
174
+ wfctx.cost?.(cost);
175
+ return this.messageCodec.decodeAiMessage(choice.message);
176
+ }
177
+ catch (e) {
178
+ if (e instanceof OpenAI.InternalServerError)
179
+ throw new TypeError('OpenAI internal server error', { cause: e });
180
+ else if (e instanceof OpenAI.APIConnectionError)
181
+ throw new TypeError('OpenAI API connection error', { cause: e });
182
+ else
183
+ throw e;
184
+ }
9
185
  }
10
186
  }
11
187
  //# sourceMappingURL=transport.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-chatcompletions/transport.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAK5B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAM7C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAIjC,MAAM,OAAO,SAAS;IASR,MAAM,CAAS;IACf,eAAe,CAAkB;IACjC,YAAY,CAAe;IAC3B,GAAG,CAAM;IACT,QAAQ,CAAW;IACnB,MAAM,CAAoC;IAC1C,YAAY,CAAyB;IACrC,SAAS,CAAiB;IAC1B,OAAO,CAAU;IAC3B,YAAmB,OAAoC;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACrB,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO;YACrC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM;YACnC,KAAK,EAAE,MAAM,CAAC,KAAgC;YAC9C,YAAY,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE;SAChE,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACnC,CAAC;IAES,UAAU,CAChB,OAA+B;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAwC,EAAE,CAAC;QACzD,IAAI,OAAO,CAAC,gBAAgB;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC9G,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAC7E,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;YACjC,QAAQ;YACR,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACvC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YACvE,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;YACrF,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE;gBACZ,aAAa,EAAE,IAAI;aACtB;YACD,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB;SAC5C,CAAC;IACN,CAAC;IAEM,aAAa,CAChB,KAAuD;QAEvD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QACzD,OAAO;YACH,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACN,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;gBACzB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS;aACtC;SACJ,CAAC;IACN,CAAC;IAEM,eAAe,CAClB,KAAiC;QAEjC,MAAM,WAAW,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,WAAW,EAAE,aAAa,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzG,MAAM,UAAU,GAA0B;YACtC,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,CAAC;oBACN,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,WAAW,CAAC,aAAa;oBACxC,OAAO,EAAE;wBACL,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;wBAC1C,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CACzC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CACrC;wBACD,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;qBAC7C;oBACD,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,IAAI;iBACzC,CAAC;YACF,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;SAClC,CAAC;QACF,OAAO,UAAU,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,KAAK,CACd,KAAuB,EACvB,OAA+B,EAC/B,MAAoB;QAEpB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEpC,kBAAkB;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE9B,eAAe;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAE7E,eAAe;YACf,IAAI,KAAK,GAAsC,IAAI,CAAC;YACpD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAE5B,KAAK,KAAK;oBACN,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,OAAO,EAAE,EAAE;oBACX,MAAM,EAAE,uBAAuB;iBAClC,CAAC;gBAEF,SAAS;gBACT,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,WAAW,EAAE,CAAC;oBACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;wBACrB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;4BACf,KAAK,EAAE,CAAC;4BACR,aAAa,EAAE,IAAI;4BACnB,KAAK,EAAE,EAAE;yBACZ,CAAC,CAAC;oBAEP,UAAU;oBACV,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC;wBACvC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,OAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;oBAClE,CAAC;oBAED,iBAAiB;oBACjB,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;wBAC/B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,CAAC;wBAC1C,KAAK,MAAM,aAAa,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;4BACvD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,UAAW,CAAC;4BACtD,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;4BAClE,SAAS,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,CAAC;4BACxD,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;gCACzB,SAAS,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,QAAQ,KAAK,EAAE,CAAC;gCAChD,SAAS,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,QAAS,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;gCAC/E,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oCACnC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,QAAS,CAAC,SAAS,KAAK,EAAE,CAAC;oCAC3D,SAAS,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,QAAS,CAAC,SAAU,IAAI,aAAa,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;gCACpG,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC;oBAED,gBAAgB;oBAChB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,aAAa,KAAK,WAAW,CAAC,aAAa,CAAC;gBAClE,CAAC;gBAED,QAAQ;gBACR,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;YAChC,CAAC;YAED,oBAAoB;YACpB,IAAI,KAAK,EAAE,CAAC,CAAA,CAAC;;gBAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC/C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,MAAM,EAAE,CAAC,CAAA,CAAC;;gBAAM,MAAM,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACpF,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO;gBAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE3E,IAAI,MAAM,CAAC,aAAa,KAAK,QAAQ;gBAAE,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAC7G,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA,CAAC;;gBACxD,MAAM,IAAI,WAAW,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;YAEtF,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA,CAAC;;gBAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEnD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU;gBAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;YAEnB,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,YAAY,MAAM,CAAC,mBAAmB;gBACvC,MAAM,IAAI,SAAS,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;iBACjE,IAAI,CAAC,YAAY,MAAM,CAAC,kBAAkB;gBAC3C,MAAM,IAAI,SAAS,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;;gBAChE,MAAM,CAAC,CAAC;QACjB,CAAC;IACL,CAAC;CAEJ"}
@@ -4,10 +4,18 @@ import * as MessageCodecModule from './openai-chatcompletions/message-codec.ts';
4
4
  import * as TransportModule from './openai-chatcompletions/transport.ts';
5
5
  import type { Verbatim } from '../verbatim.ts';
6
6
  import * as ChoiceCodecModule from './openai-chatcompletions/choice-codec.ts';
7
+ import { ToolCodec } from '../api-types/openai-chatcompletions/tool-codec.ts';
8
+ import { Billing } from '../api-types/openai-chatcompletions/billing.ts';
7
9
  export type OpenAIChatCompletionsCompatibleEngine<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = OpenAIChatCompletionsCompatibleEngine.Instance<fdm, vdm>;
8
10
  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
+ class Instance<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Instance<fdm, vdm> {
12
+ protected options: OpenAIChatCompletionsCompatibleEngine.Options<fdm, vdm>;
13
+ protected toolCodec: ToolCodec<fdm>;
14
+ protected messageCodec: MessageCodec<fdm, vdm>;
15
+ protected billing: Billing;
16
+ protected transport: Transport<fdm, vdm>;
17
+ constructor(options: OpenAIChatCompletionsCompatibleEngine.Options<fdm, vdm>);
18
+ clone(): OpenAIChatCompletionsCompatibleEngine<fdm, vdm>;
11
19
  }
12
20
  interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Options<fdm, vdm> {
13
21
  }
@@ -2,9 +2,44 @@ import { CompatibleEngine } from "../compatible-engine.js";
2
2
  import * as MessageCodecModule from "./openai-chatcompletions/message-codec.js";
3
3
  import * as TransportModule from "./openai-chatcompletions/transport.js";
4
4
  import * as ChoiceCodecModule from "./openai-chatcompletions/choice-codec.js";
5
+ import { ToolCodec } from "../api-types/openai-chatcompletions/tool-codec.js";
6
+ import { Billing } from "../api-types/openai-chatcompletions/billing.js";
5
7
  export var OpenAIChatCompletionsCompatibleEngine;
6
8
  (function (OpenAIChatCompletionsCompatibleEngine) {
7
9
  class Instance extends CompatibleEngine.Instance {
10
+ options;
11
+ toolCodec;
12
+ messageCodec;
13
+ billing;
14
+ transport;
15
+ constructor(options) {
16
+ super(options);
17
+ this.options = options;
18
+ this.toolCodec = new ToolCodec({
19
+ fdm: this.fdm,
20
+ });
21
+ this.messageCodec = new OpenAIChatCompletionsCompatibleEngine.MessageCodec({
22
+ toolCodec: this.toolCodec,
23
+ vdm: this.vdm,
24
+ });
25
+ this.billing = new Billing({ pricing: this.pricing });
26
+ this.transport = new OpenAIChatCompletionsCompatibleEngine.Transport({
27
+ inferenceParams: this.inferenceParams,
28
+ providerSpec: this.providerSpec,
29
+ fdm: this.fdm,
30
+ throttle: this.throttle,
31
+ choice: this.structuringChoice,
32
+ messageCodec: this.messageCodec,
33
+ toolCodec: this.toolCodec,
34
+ billing: this.billing,
35
+ });
36
+ }
37
+ clone() {
38
+ const engine = new OpenAIChatCompletionsCompatibleEngine.Instance(this.options);
39
+ engine.middlewares = [...this.middlewares];
40
+ engine.statefulMiddlewares = [...this.statefulMiddlewares];
41
+ return engine;
42
+ }
8
43
  }
9
44
  OpenAIChatCompletionsCompatibleEngine.Instance = Instance;
10
45
  OpenAIChatCompletionsCompatibleEngine.Transport = TransportModule.Transport;
@@ -1 +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"}
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;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,mDAAmD,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAQzE,MAAM,KAAW,qCAAqC,CAiDrD;AAjDD,WAAiB,qCAAqC;IAClD,MAAa,QAGX,SAAQ,gBAAgB,CAAC,QAAkB;QAMZ;QALnB,SAAS,CAAiB;QAC1B,YAAY,CAAyB;QACrC,OAAO,CAAU;QACR,SAAS,CAAsB;QAElD,YAA6B,OAAgE;YACzF,KAAK,CAAC,OAAO,CAAC,CAAC;YADU,YAAO,GAAP,OAAO,CAAyD;YAEzF,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;gBAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;aAChB,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,sCAAA,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,qCAAqC,CAAC,SAAS,CAAC;gBACjE,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,iBAAiB;gBAC9B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;QACP,CAAC;QAEe,KAAK;YACjB,MAAM,MAAM,GAAG,IAAI,qCAAqC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChF,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,CAAC,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAClB,CAAC;KAEJ;IAtCY,8CAAQ,WAsCpB,CAAA;IAOa,+CAAS,GAAG,eAAe,CAAC,SAAS,CAAC;IACtC,kDAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC;IAC/C,iDAAW,GAAG,iBAAiB,CAAC;AAClD,CAAC,EAjDgB,qCAAqC,KAArC,qCAAqC,QAiDrD"}
@@ -6,11 +6,9 @@ import type { Verbatim } from '../../verbatim.ts';
6
6
  import { Media } from '../../media.ts';
7
7
  declare const NOMINAL: unique symbol;
8
8
  export declare class MessageCodec<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
9
- protected ctx: MessageCodec.Context<fdm, vdm>;
10
- constructor(ctx: MessageCodec.Context<fdm, vdm>);
11
- /**
12
- * @throws {@link VerbatimCodec.Request.Invalid}
13
- */
9
+ protected toolCodec: ToolCodec<fdm>;
10
+ protected vdm: vdm;
11
+ constructor(options: MessageCodec.Options<fdm, vdm>);
14
12
  decodeAiMessage(output: OpenAI.Responses.ResponseOutputItem[]): MessageCodec.Message.Ai.From<fdm, vdm>;
15
13
  protected encodeImageResolution(resolution: Media.Image.Resolution): OpenAI.Responses.ResponseInputImage['detail'];
16
14
  encodeUserMessage(userMessage: RoleMessage.User.From<fdm>): OpenAI.Responses.ResponseInput;
@@ -19,7 +17,7 @@ export declare class MessageCodec<in out fdm extends Function.Decl.Map.Proto, in
19
17
  encodeChatMessage(chatMessage: Session.ChatMessage.From<fdm, vdm>): OpenAI.Responses.ResponseInput;
20
18
  }
21
19
  export declare namespace MessageCodec {
22
- interface Context<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
20
+ interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
23
21
  toolCodec: ToolCodec<fdm>;
24
22
  vdm: vdm;
25
23
  }
@@ -1,45 +1,33 @@
1
1
  import { RoleMessage } from "../../compatible-engine/session.js";
2
2
  import { Function } from "../../function.js";
3
3
  import * as VerbatimCodec from "../../verbatim/codec.js";
4
- import { ResponseInvalid } from "../../engine.js";
5
4
  import { Media } from "../../media.js";
6
5
  const NOMINAL = Symbol();
7
6
  export class MessageCodec {
8
- ctx;
9
- constructor(ctx) {
10
- this.ctx = ctx;
7
+ toolCodec;
8
+ vdm;
9
+ constructor(options) {
10
+ this.toolCodec = options.toolCodec;
11
+ this.vdm = options.vdm;
11
12
  }
12
- /**
13
- * @throws {@link VerbatimCodec.Request.Invalid}
14
- */
15
13
  decodeAiMessage(output) {
16
- const parts = output.flatMap((item) => {
17
- if (item.type === 'message') {
18
- if (item.content.every(part => part.type === 'output_text')) { }
19
- else
20
- throw new ResponseInvalid('Refusal', { cause: output });
21
- const text = item.content.map(part => part.text).join('');
22
- if (text)
23
- try {
24
- const vrs = VerbatimCodec.Request.decode(text, this.ctx.vdm);
25
- return [new RoleMessage.Part.Text(text, vrs)];
14
+ const parts = [];
15
+ for (const item of output)
16
+ if (item.type === 'message')
17
+ for (const part of item.content)
18
+ 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));
26
21
  }
27
- catch (e) {
28
- if (e instanceof SyntaxError)
29
- throw new ResponseInvalid('Invalid verbatim message', { cause: output });
30
- else
31
- throw e;
32
- }
33
- else
34
- return [];
35
- }
22
+ else if (part.type === 'refusal')
23
+ throw new SyntaxError('Refusal', { cause: output });
24
+ else
25
+ throw new Error();
36
26
  else if (item.type === 'function_call')
37
- return [this.ctx.toolCodec.decodeFunctionCall(item)];
38
- else if (item.type === 'reasoning')
39
- return [];
27
+ parts.push(this.toolCodec.decodeFunctionCall(item));
28
+ else if (item.type === 'reasoning') { }
40
29
  else
41
30
  throw new Error();
42
- });
43
31
  return new MessageCodec.Message.Ai(parts, output);
44
32
  }
45
33
  encodeImageResolution(resolution) {
@@ -56,58 +44,66 @@ export class MessageCodec {
56
44
  }
57
45
  encodeUserMessage(userMessage) {
58
46
  const responseInput = [];
59
- const frs = userMessage.getFunctionResponses();
60
- responseInput.push(...frs.map(fr => this.ctx.toolCodec.encodeFunctionResponse(fr)));
61
- const content = userMessage.getParts().flatMap(part => {
47
+ let content = [];
48
+ function flush() {
49
+ if (content.length) {
50
+ responseInput.push({
51
+ type: 'message',
52
+ role: 'user',
53
+ content,
54
+ });
55
+ content = [];
56
+ }
57
+ }
58
+ for (const part of userMessage.getParts()) {
62
59
  if (part instanceof RoleMessage.Part.Text)
63
- return [{
64
- type: 'input_text',
65
- text: part.text,
66
- }];
67
- else if (part instanceof Function.Response)
68
- return [];
60
+ content.push({
61
+ type: 'input_text',
62
+ text: part.text,
63
+ });
69
64
  else if (part instanceof Media.Image)
70
- return [{
71
- type: 'input_image',
72
- image_url: `data:${part.mimeType};base64,${part.base64}`,
73
- detail: this.encodeImageResolution(part.resolution),
74
- }];
65
+ content.push({
66
+ type: 'input_image',
67
+ image_url: `data:${part.mimeType};base64,${part.base64}`,
68
+ detail: this.encodeImageResolution(part.resolution),
69
+ });
75
70
  else if (part instanceof Media.Pdf)
76
- return [{
77
- type: 'input_file',
78
- file_data: `data:${part.mimeType};base64,${part.base64}`,
79
- }];
71
+ content.push({
72
+ type: 'input_file',
73
+ file_data: `data:${part.mimeType};base64,${part.base64}`,
74
+ });
75
+ else if (part instanceof Function.Response) {
76
+ flush();
77
+ responseInput.push(this.toolCodec.encodeFunctionResponse(part));
78
+ }
80
79
  else
81
80
  throw new Error();
82
- });
83
- if (content.length)
84
- responseInput.push({
85
- type: 'message',
86
- role: 'user',
87
- content,
88
- });
81
+ }
82
+ flush();
89
83
  return responseInput;
90
84
  }
91
85
  encodeAiMessage(aiMessage) {
92
- if (aiMessage instanceof MessageCodec.Message.Ai)
93
- return aiMessage.getRaw().map(item => {
94
- if (item.type !== 'computer_call_output')
95
- return item;
96
- else
97
- throw new Error('Computer calls are not supported yet.');
98
- });
99
- else
100
- return aiMessage.getParts().map(part => {
101
- if (part instanceof RoleMessage.Part.Text)
102
- return {
103
- role: 'assistant',
104
- content: part.text,
105
- };
106
- else if (part instanceof Function.Call)
107
- return this.ctx.toolCodec.encodeFunctionCall(part);
108
- else
109
- throw new Error();
110
- });
86
+ if (aiMessage instanceof MessageCodec.Message.Ai) {
87
+ const responseInput = aiMessage.getRaw();
88
+ if (responseInput.every(item => item.type !== 'computer_call_output')) { }
89
+ else
90
+ throw new Error('Computer calls are not supported yet.');
91
+ return responseInput;
92
+ }
93
+ const responseInput = [];
94
+ for (const part of aiMessage.getParts()) {
95
+ if (part instanceof RoleMessage.Part.Text)
96
+ responseInput.push({
97
+ role: 'assistant',
98
+ content: part.text,
99
+ });
100
+ else if (part instanceof Function.Call)
101
+ responseInput.push(this.toolCodec.encodeFunctionCall(part));
102
+ else
103
+ throw new Error();
104
+ }
105
+ ;
106
+ return responseInput;
111
107
  }
112
108
  encodeDeveloperMessage(developerMessage) {
113
109
  return developerMessage.getText();
@@ -1 +1 @@
1
- {"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-responses/message-codec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-responses/message-codec.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type InferenceParams, type ProviderSpec } from '../../engine.ts';
2
2
  import { RoleMessage, type Session } from '../../compatible-engine/session.ts';
3
3
  import { Function } from '../../function.ts';
4
- import type OpenAI from 'openai';
4
+ import OpenAI from 'openai';
5
5
  import { type InferenceContext } from '../../inference-context.ts';
6
6
  import { Throttle } from '../../throttle.ts';
7
7
  import type { MessageCodec } from './message-codec.ts';
@@ -11,16 +11,22 @@ import type { Verbatim } from '../../verbatim.ts';
11
11
  import type { Structuring } from '../../compatible-engine/structuring.ts';
12
12
  import type { Engine } from '../../engine.ts';
13
13
  export declare class Transport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> implements Engine.Transport<RoleMessage.User.From<fdm>, RoleMessage.Ai.From<fdm, vdm>, RoleMessage.Developer, Session.From<fdm, vdm>> {
14
- protected ctx: Transport.Context<fdm, vdm>;
15
- protected apiURL: URL;
16
- constructor(ctx: Transport.Context<fdm, vdm>);
17
- protected makeParams(session: Session.From<fdm, vdm>): OpenAI.Responses.ResponseCreateParamsNonStreaming;
18
- protected logAiMessage(output: OpenAI.Responses.ResponseOutputItem[]): void;
14
+ protected client: OpenAI;
15
+ inferenceParams: InferenceParams;
16
+ protected providerSpec: ProviderSpec;
17
+ protected fdm: fdm;
18
+ protected throttle: Throttle;
19
+ protected choice: Structuring.Choice.From<fdm, vdm>;
20
+ protected messageCodec: MessageCodec<fdm, vdm>;
21
+ protected toolCodec: ToolCodec<fdm>;
22
+ protected billing: Billing;
23
+ constructor(options: Transport.Options<fdm, vdm>);
24
+ protected makeParams(session: Session.From<fdm, vdm>): OpenAI.Responses.ResponseCreateParamsStreaming;
19
25
  fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
20
26
  }
21
27
  export declare namespace Transport {
22
- interface Context<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
23
- inferenceSpec: InferenceParams;
28
+ interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
29
+ inferenceParams: InferenceParams;
24
30
  providerSpec: ProviderSpec;
25
31
  fdm: fdm;
26
32
  throttle: Throttle;