@zimtsui/typechat 0.0.93 → 0.0.95

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,3 +1,2 @@
1
1
  import { Verbatim } from '../../verbatim.ts';
2
- import './escape.ts';
3
2
  export declare function encode<vdm extends Verbatim.Decl.Map.Proto>(vdm: vdm): string;
@@ -1,7 +1,6 @@
1
- import Handlebars from 'handlebars';
1
+ import Handlebars from "./helpers.js";
2
2
  import Assets from "../../assets.js";
3
3
  import assert from 'node:assert';
4
- import "./escape.js";
5
4
  const template = Handlebars.compile(Assets.verbatim.declarations);
6
5
  export function encode(vdm) {
7
6
  const vds = Object.entries(vdm).map(([name, body]) => {
@@ -1 +1 @@
1
- {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/verbatim/codec/declarations.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,aAAa,CAAC;AAGrB,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAiB,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAsBlF,MAAM,UAAU,MAAM,CAClB,GAAQ;IAER,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAC/B,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACb,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC;YACJ,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAA4B,CAAC;IAClC,CAAC,CACJ,CAAC;IAEF,OAAO,QAAQ,CAAC;QACZ,YAAY,EAAE,GAAG,CAAC,GAAG,CACjB,WAAW,CAAC,EAAE,CAAC,CAAC;YACZ,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAClD,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpB,IAAI;gBACJ,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,QAAQ,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE;gBACjC,QAAQ,EAAE,SAAS,CAAC,QAAQ;aAC/B,CAAC,CACL;SACJ,CAAC,CACL;KACJ,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/verbatim/codec/declarations.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAiB,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAsBlF,MAAM,UAAU,MAAM,CAClB,GAAQ;IAER,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAC/B,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACb,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC;YACJ,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAA4B,CAAC;IAClC,CAAC,CACJ,CAAC;IAEF,OAAO,QAAQ,CAAC;QACZ,YAAY,EAAE,GAAG,CAAC,GAAG,CACjB,WAAW,CAAC,EAAE,CAAC,CAAC;YACZ,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAClD,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpB,IAAI;gBACJ,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,QAAQ,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE;gBACjC,QAAQ,EAAE,SAAS,CAAC,QAAQ;aAC/B,CAAC,CACL;SACJ,CAAC,CACL;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import Handlebars from 'handlebars';
2
+ export default Handlebars;
@@ -30,4 +30,8 @@ Handlebars.registerHelper('XmlBody', (value) => {
30
30
  assert(typeof value === 'string');
31
31
  return new Handlebars.SafeString(escapeXmlBody(value));
32
32
  });
33
- //# sourceMappingURL=escape.js.map
33
+ Handlebars.registerHelper('isDefined', function (value) {
34
+ return value !== undefined;
35
+ });
36
+ export default Handlebars;
37
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/verbatim/codec/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,SAAS,aAAa,CAAC,KAAa;IAChC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,UAAU,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,KAAc,EAAE,EAAE;IAC1D,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;IAClC,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAGH,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,KAAK;SACP,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAC7B;AACL,CAAC;AACD,UAAU,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,KAAc,EAAE,EAAE;IACpD,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;IAClC,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAGH,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,KAAK;SACP,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAC3B;AACL,CAAC;AACD,UAAU,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,KAAc,EAAE,EAAE;IACpD,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;IAClC,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,KAAK;IAClD,OAAO,KAAK,KAAK,SAAS,CAAC;AAC/B,CAAC,CAAC,CAAC;AAGH,eAAe,UAAU,CAAC"}
@@ -1,3 +1,2 @@
1
1
  import { MIMEType } from 'whatwg-mimetype';
2
- import './escape.ts';
3
- export declare function encode(mimeType: MIMEType, text: string): string;
2
+ export declare function encode(mimeType: MIMEType, text: string, author?: string): string;
@@ -1,11 +1,10 @@
1
- import Handlebars from 'handlebars';
2
1
  import Assets from "../../assets.js";
2
+ import Handlebars from "./helpers.js";
3
3
  import { loggers } from "../../telemetry.js";
4
- import "./escape.js";
5
4
  const template = Handlebars.compile(Assets.verbatim.quotation);
6
- export function encode(mimeType, text) {
5
+ export function encode(mimeType, text, author) {
7
6
  if (text.includes(']]>'))
8
7
  loggers.message.warn('The quotation contains "]]>", which is not allowed in XML CDATA sections. ');
9
- return template({ mimeType: `${mimeType}`, text });
8
+ return template({ mimeType: `${mimeType}`, text, author });
10
9
  }
11
10
  //# sourceMappingURL=quotation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quotation.js","sourceRoot":"","sources":["../../../src/verbatim/codec/quotation.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,aAAa,CAAC;AAGrB,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAiB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAQ/E,MAAM,UAAU,MAAM,CAAC,QAAkB,EAAE,IAAY;IACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IACvG,OAAO,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"quotation.js","sourceRoot":"","sources":["../../../src/verbatim/codec/quotation.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAiB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAS/E,MAAM,UAAU,MAAM,CAAC,QAAkB,EAAE,IAAY,EAAE,MAAe;IACpE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IACvG,OAAO,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC"}
@@ -1,3 +1,2 @@
1
1
  import { MIMEType } from 'whatwg-mimetype';
2
- import './escape.ts';
3
2
  export declare function encode(name: string, mimeType: MIMEType, text: string): string;
@@ -1,7 +1,6 @@
1
- import Handlebars from 'handlebars';
2
1
  import Assets from "../../assets.js";
2
+ import Handlebars from "./helpers.js";
3
3
  import { loggers } from "../../telemetry.js";
4
- import "./escape.js";
5
4
  const template = Handlebars.compile(Assets.verbatim.response);
6
5
  export function encode(name, mimeType, text) {
7
6
  if (text.includes(']]>'))
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/verbatim/codec/response.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,aAAa,CAAC;AAGrB,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAiB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAS9E,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,QAAkB,EAAE,IAAY;IACjE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IAClG,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/verbatim/codec/response.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAiB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAS9E,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,QAAkB,EAAE,IAAY;IACjE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IAClG,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC"}
@@ -1,2 +1 @@
1
- import './escape.ts';
2
1
  export declare function encode(text: string): string;
@@ -0,0 +1,7 @@
1
+ import Assets from "../../assets.js";
2
+ import Handlebars from "./helpers.js";
3
+ const template = Handlebars.compile(Assets.verbatim.system);
4
+ export function encode(text) {
5
+ return template({ text });
6
+ }
7
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/verbatim/codec/system.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,UAAU,MAAM,cAAc,CAAC;AAGtC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAiB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAO5E,MAAM,UAAU,MAAM,CAAC,IAAY;IAC/B,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC"}
@@ -2,4 +2,4 @@ export * as Declarations from './codec/declarations.ts';
2
2
  export * as Request from './codec/request.ts';
3
3
  export * as Quotation from './codec/quotation.ts';
4
4
  export * as Response from './codec/response.ts';
5
- export * as Meta from './codec/meta.ts';
5
+ export * as System from './codec/system.ts';
@@ -2,5 +2,5 @@ export * as Declarations from "./codec/declarations.js";
2
2
  export * as Request from "./codec/request.js";
3
3
  export * as Quotation from "./codec/quotation.js";
4
4
  export * as Response from "./codec/response.js";
5
- export * as Meta from "./codec/meta.js";
5
+ export * as System from "./codec/system.js";
6
6
  //# sourceMappingURL=codec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/verbatim/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/verbatim/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zimtsui/typechat",
3
- "version": "0.0.93",
3
+ "version": "0.0.95",
4
4
  "exports": {
5
5
  ".": "./build/exports.js",
6
6
  "./assets": "./build/assets.js",
@@ -9,7 +9,7 @@
9
9
  "./google": "./build/native-engines.d/google.d/exports.js"
10
10
  },
11
11
  "engines": {
12
- "node": ">=22"
12
+ "node": ">=24"
13
13
  },
14
14
  "type": "module",
15
15
  "scripts": {
@@ -24,21 +24,20 @@
24
24
  "url": "git+https://github.com/zimtsui/typechat.git"
25
25
  },
26
26
  "dependencies": {
27
- "@anthropic-ai/sdk": "^0.80.0",
27
+ "@anthropic-ai/sdk": "^0.90.0",
28
28
  "@google/genai": "^1.33.0",
29
- "@zimtsui/node-loaders": "^0.0.2",
30
- "ajv": "^8.17.1",
29
+ "@types/node": "^24.12.2",
30
+ "@zimtsui/node-loaders": "^0.0.4",
31
31
  "handlebars": "^4.7.8",
32
32
  "openai": "^6.10.0",
33
33
  "strings-to-regex": "^1.3.0",
34
- "undici": "^7.16.0"
34
+ "undici": "^8.1.0"
35
35
  },
36
36
  "peerDependencies": {
37
- "@sinclair/typebox": "^0.34.40",
38
- "@types/node": "^22.17.2",
39
37
  "@types/whatwg-mimetype": "^5.0.0",
40
- "@zimtsui/typelemetry": "^0.0.48",
38
+ "@zimtsui/typelemetry": "^0.0.51",
41
39
  "@zimtsui/typelocks": "^0.0.28",
40
+ "typebox": "^1.1.31",
42
41
  "whatwg-mimetype": "^5.0.0"
43
42
  },
44
43
  "devDependencies": {
@@ -1 +0,0 @@
1
- <verbatim:meta>{{this.text}}</verbatim:meta>
@@ -1,12 +0,0 @@
1
- import { Function } from '../../function.ts';
2
- import { StreamTransport } from '../openai-chatcompletions/transport.d/stream.ts';
3
- import OpenAI from 'openai';
4
- import type { Verbatim } from '../../verbatim.ts';
5
- export declare class Transport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends StreamTransport<fdm, vdm> {
6
- protected getDeltaThoughts(delta: OpenAI.ChatCompletionChunk.Choice.Delta): string;
7
- }
8
- export declare namespace Transport {
9
- interface ChatCompletionChunkChoiceDelta extends OpenAI.ChatCompletionChunk.Choice.Delta {
10
- reasoning_content?: string;
11
- }
12
- }
@@ -1,7 +0,0 @@
1
- import { StreamTransport } from "../openai-chatcompletions/transport.d/stream.js";
2
- export class Transport extends StreamTransport {
3
- getDeltaThoughts(delta) {
4
- return delta.reasoning_content ?? '';
5
- }
6
- }
7
- //# sourceMappingURL=transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/aliyun/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAMlF,MAAM,OAAO,SAGX,SAAQ,eAAyB;IACZ,gBAAgB,CAAC,KAA8C;QAC9E,OAAQ,KAAkD,CAAC,iBAAiB,IAAI,EAAE,CAAC;IACvF,CAAC;CAEJ"}
@@ -1,21 +0,0 @@
1
- import { Function } from '../function.ts';
2
- import { CompatibleEngine } from '../compatible-engine.ts';
3
- import { OpenAIChatCompletionsToolCodec } from '../api-types/openai-chatcompletions/tool-codec.ts';
4
- import { MessageCodec } from './openai-chatcompletions/message-codec.ts';
5
- import { OpenAIChatCompletionsBilling } from '../api-types/openai-chatcompletions/billing.ts';
6
- import * as TransportModule from './aliyun/transport.ts';
7
- import type { Verbatim } from '../verbatim.ts';
8
- import { OpenAIChatCompletionsCompatibleEngine } from './openai-chatcompletions.ts';
9
- export type AliyunCompatibleEngine<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = AliyunCompatibleEngine.Instance<fdm, vdm>;
10
- export declare namespace AliyunCompatibleEngine {
11
- class Instance<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends OpenAIChatCompletionsCompatibleEngine.Instance<fdm, vdm> {
12
- protected toolCodec: OpenAIChatCompletionsToolCodec<fdm>;
13
- protected messageCodec: MessageCodec<fdm, vdm>;
14
- protected billing: OpenAIChatCompletionsBilling;
15
- protected transport: AliyunCompatibleEngine.Transport<fdm, vdm>;
16
- constructor(options: AliyunCompatibleEngine.Options<fdm, vdm>);
17
- }
18
- interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Options<fdm, vdm> {
19
- }
20
- export import Transport = TransportModule.Transport;
21
- }
@@ -1,38 +0,0 @@
1
- import { OpenAIChatCompletionsToolCodec } from "../api-types/openai-chatcompletions/tool-codec.js";
2
- import { MessageCodec } from "./openai-chatcompletions/message-codec.js";
3
- import { OpenAIChatCompletionsBilling } from "../api-types/openai-chatcompletions/billing.js";
4
- import * as TransportModule from "./aliyun/transport.js";
5
- import { OpenAIChatCompletionsCompatibleEngine } from "./openai-chatcompletions.js";
6
- export var AliyunCompatibleEngine;
7
- (function (AliyunCompatibleEngine) {
8
- class Instance extends OpenAIChatCompletionsCompatibleEngine.Instance {
9
- toolCodec;
10
- messageCodec;
11
- billing;
12
- transport;
13
- constructor(options) {
14
- super(options);
15
- this.toolCodec = new OpenAIChatCompletionsToolCodec({
16
- fdm: this.fdm,
17
- });
18
- this.messageCodec = new MessageCodec({
19
- toolCodec: this.toolCodec,
20
- vdm: this.vdm,
21
- });
22
- this.billing = new OpenAIChatCompletionsBilling({ pricing: this.pricing });
23
- this.transport = new AliyunCompatibleEngine.Transport({
24
- inferenceParams: this.inferenceParams,
25
- providerSpec: this.providerSpec,
26
- fdm: this.fdm,
27
- throttle: this.throttle,
28
- choice: this.choice,
29
- messageCodec: this.messageCodec,
30
- toolCodec: this.toolCodec,
31
- billing: this.billing,
32
- });
33
- }
34
- }
35
- AliyunCompatibleEngine.Instance = Instance;
36
- AliyunCompatibleEngine.Transport = TransportModule.Transport;
37
- })(AliyunCompatibleEngine || (AliyunCompatibleEngine = {}));
38
- //# sourceMappingURL=aliyun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aliyun.js","sourceRoot":"","sources":["../../src/compatible-engine.d/aliyun.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,6BAA6B,CAAC;AAQpF,MAAM,KAAW,sBAAsB,CAuCtC;AAvCD,WAAiB,sBAAsB;IACnC,MAAa,QAGX,SAAQ,qCAAqC,CAAC,QAAkB;QACpD,SAAS,CAAsC;QAC/C,YAAY,CAAyB;QACrC,OAAO,CAA+B;QAC7B,SAAS,CAA6C;QAEzE,YAAmB,OAAiD;YAChE,KAAK,CAAC,OAAO,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,IAAI,8BAA8B,CAAC;gBAChD,GAAG,EAAE,IAAI,CAAC,GAAG;aAChB,CAAC,CAAC;YACH,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,4BAA4B,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC;gBAClD,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,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;QACP,CAAC;KAEJ;IA/BY,+BAAQ,WA+BpB,CAAA;IAMa,gCAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AACxD,CAAC,EAvCgB,sBAAsB,KAAtB,sBAAsB,QAuCtC"}
@@ -1,31 +0,0 @@
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 { ProviderSpec, InferenceParams } 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 type { MessageCodec } from '../message-codec.ts';
10
- import type { Throttle } from '../../../throttle.ts';
11
- import type { Verbatim } from '../../../verbatim.ts';
12
- import type { Structuring } from '../../../compatible-engine/structuring.ts';
13
- 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> {
14
- protected ctx: MonolithTransport.Context<fdm, vdm>;
15
- constructor(ctx: MonolithTransport.Context<fdm, vdm>);
16
- protected getApiURL(baseUrl: string): URL;
17
- protected makeParams(session: Session.From<fdm, vdm>): OpenAI.ChatCompletionCreateParamsNonStreaming;
18
- fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
19
- }
20
- export declare namespace MonolithTransport {
21
- interface Context<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
22
- fdm: fdm;
23
- throttle: Throttle;
24
- choice: Structuring.Choice.From<fdm, vdm>;
25
- providerSpec: ProviderSpec;
26
- inferenceParams: InferenceParams;
27
- messageCodec: MessageCodec<fdm, vdm>;
28
- toolCodec: OpenAIChatCompletionsToolCodec<fdm>;
29
- billing: OpenAIChatCompletionsBilling;
30
- }
31
- }
@@ -1,88 +0,0 @@
1
- import { Transport } from "../transport.js";
2
- import * as Undici from 'undici';
3
- import { ResponseInvalid, NetworkError } from "../../../engine.js";
4
- import { loggers } from "../../../telemetry.js";
5
- import * as ChoiceCodec from "../choice-codec.js";
6
- import { MIMEType } from 'whatwg-mimetype';
7
- export class MonolithTransport extends Transport {
8
- ctx;
9
- constructor(ctx) {
10
- super();
11
- this.ctx = ctx;
12
- }
13
- getApiURL(baseUrl) {
14
- return new URL(`${baseUrl}/chat/completions`);
15
- }
16
- makeParams(session) {
17
- const tools = this.ctx.toolCodec.encodeFunctionDeclarationMap(this.ctx.fdm);
18
- return {
19
- model: this.ctx.inferenceParams.model,
20
- stream: false,
21
- messages: [
22
- ...(session.developerMessage ? this.ctx.messageCodec.encodeRoleMessage(session.developerMessage) : []),
23
- ...this.ctx.messageCodec.encodeRoleMessages(session.chatMessages),
24
- ],
25
- tools: tools.length ? tools : undefined,
26
- tool_choice: tools.length ? ChoiceCodec.encode(this.ctx.choice) : undefined,
27
- parallel_tool_calls: tools.length ? this.ctx.inferenceParams.parallelToolCall : undefined,
28
- ...this.ctx.inferenceParams.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
- loggers.message.debug(params);
36
- // Send request
37
- const res = await Undici.fetch(new URL(`${this.ctx.providerSpec.baseUrl}/chat/completions`), {
38
- method: 'POST',
39
- headers: {
40
- 'Content-Type': 'application/json',
41
- 'Authorization': `Bearer ${this.ctx.providerSpec.apiKey}`,
42
- },
43
- body: JSON.stringify(params),
44
- dispatcher: this.ctx.providerSpec.dispatcher,
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
- const contentType = res.headers.get('Content-Type');
56
- if (contentType) { }
57
- else
58
- throw new Error(res.statusText, { cause: res });
59
- const mimeType = new MIMEType(contentType);
60
- if (mimeType.essence === 'application/json')
61
- throw new Error(res.statusText, { cause: await res.json() });
62
- else if (mimeType.type === 'text')
63
- throw new Error(res.statusText, { cause: await res.text() });
64
- else
65
- throw new Error(res.statusText, { cause: res });
66
- }
67
- const completion = await res.json();
68
- loggers.message.debug(completion);
69
- // Validate response
70
- const choice = completion.choices[0];
71
- if (choice) { }
72
- else
73
- throw new ResponseInvalid('Content missing', { cause: completion });
74
- this.handleFinishReason(completion, choice.finish_reason);
75
- if (completion.usage) { }
76
- else
77
- throw new Error();
78
- const cost = this.ctx.billing.charge(completion.usage);
79
- if (choice.message.content)
80
- loggers.inference.info(choice.message.content);
81
- if (choice.message.tool_calls)
82
- loggers.message.info(choice.message.tool_calls);
83
- loggers.message.info(completion.usage);
84
- wfctx.cost?.(cost);
85
- return this.ctx.messageCodec.decodeAiMessage(choice.message);
86
- }
87
- }
88
- //# sourceMappingURL=monolith.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monolith.js","sourceRoot":"","sources":["../../../../src/compatible-engine.d/openai-chatcompletions/transport.d/monolith.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
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 type { Structuring } from '../../../compatible-engine/structuring.ts';
13
- 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> {
14
- protected ctx: StreamTransport.Context<fdm, vdm>;
15
- protected client: OpenAI;
16
- constructor(ctx: StreamTransport.Context<fdm, vdm>);
17
- protected makeParams(session: Session.From<fdm, vdm>): OpenAI.ChatCompletionCreateParamsStreaming;
18
- convertFromDeltaToolCall(apifc: OpenAI.ChatCompletionChunk.Choice.Delta.ToolCall): OpenAI.ChatCompletionMessageFunctionToolCall;
19
- convertCompletionStockToCompletion(stock: OpenAI.ChatCompletionChunk): OpenAI.ChatCompletion;
20
- fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
21
- protected abstract getDeltaThoughts(delta: OpenAI.ChatCompletionChunk.Choice.Delta): string;
22
- }
23
- export declare namespace StreamTransport {
24
- interface Context<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
25
- inferenceParams: InferenceParams;
26
- providerSpec: ProviderSpec;
27
- fdm: fdm;
28
- throttle: Throttle;
29
- choice: Structuring.Choice.From<fdm, vdm>;
30
- messageCodec: MessageCodec<fdm, vdm>;
31
- toolCodec: OpenAIChatCompletionsToolCodec<fdm>;
32
- billing: OpenAIChatCompletionsBilling;
33
- }
34
- }
@@ -1,190 +0,0 @@
1
- import OpenAI from 'openai';
2
- import { Transport } from "../transport.js";
3
- import { ResponseInvalid, NetworkError } from "../../../engine.js";
4
- import { loggers } 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: { dispatcher: this.ctx.providerSpec.dispatcher },
16
- });
17
- }
18
- makeParams(session) {
19
- const tools = this.ctx.toolCodec.encodeFunctionDeclarationMap(this.ctx.fdm);
20
- return {
21
- model: this.ctx.inferenceParams.model,
22
- messages: [
23
- ...(session.developerMessage ? this.ctx.messageCodec.encodeRoleMessage(session.developerMessage) : []),
24
- ...this.ctx.messageCodec.encodeRoleMessages(session.chatMessages),
25
- ],
26
- tools: tools.length ? tools : undefined,
27
- tool_choice: tools.length ? ChoiceCodec.encode(this.ctx.choice) : undefined,
28
- parallel_tool_calls: tools.length ? this.ctx.inferenceParams.parallelToolCall : undefined,
29
- stream: true,
30
- stream_options: {
31
- include_usage: true,
32
- },
33
- ...this.ctx.inferenceParams.additionalOptions,
34
- };
35
- }
36
- convertFromDeltaToolCall(apifc) {
37
- if (apifc.id) { }
38
- else
39
- throw new Error();
40
- if (apifc.function?.name) { }
41
- else
42
- throw new Error();
43
- if (apifc.function?.arguments) { }
44
- else
45
- throw new Error();
46
- return apifc;
47
- }
48
- convertCompletionStockToCompletion(stock) {
49
- const stockChoice = stock?.choices[0];
50
- if (stockChoice?.finish_reason) { }
51
- else
52
- throw new ResponseInvalid('Finish reason missing', { cause: stock });
53
- const completion = {
54
- id: stock.id,
55
- object: 'chat.completion',
56
- created: stock.created,
57
- model: stock.model,
58
- choices: [{
59
- index: 0,
60
- finish_reason: stockChoice.finish_reason,
61
- message: {
62
- role: 'assistant',
63
- content: stockChoice.delta.content ?? null,
64
- tool_calls: stockChoice.delta.tool_calls?.map(apifc => this.convertFromDeltaToolCall(apifc)),
65
- refusal: stockChoice.delta.refusal ?? null,
66
- },
67
- logprobs: stockChoice.logprobs ?? null,
68
- }],
69
- usage: stock.usage ?? undefined,
70
- };
71
- return completion;
72
- }
73
- async fetch(wfctx, session, signal) {
74
- try {
75
- await this.ctx.throttle.requests(wfctx);
76
- // Prepare request
77
- const params = this.makeParams(session);
78
- loggers.message.debug(params);
79
- // Send request
80
- const stream = await this.client.chat.completions.create(params, {
81
- signal,
82
- fetchOptions: {
83
- dispatcher: this.ctx.providerSpec.dispatcher,
84
- }
85
- });
86
- // Get response
87
- let stock = null;
88
- let thoughts = null;
89
- try {
90
- let thinking = false;
91
- for await (const chunk of stream) {
92
- stock ??= {
93
- id: chunk.id,
94
- created: chunk.created,
95
- model: chunk.model,
96
- choices: [],
97
- object: 'chat.completion.chunk',
98
- };
99
- // choice
100
- const deltaChoice = chunk.choices[0];
101
- if (deltaChoice) {
102
- if (!stock.choices.length)
103
- stock.choices.push({
104
- index: 0,
105
- finish_reason: null,
106
- delta: {},
107
- });
108
- // thoughts
109
- const deltaThoughts = this.getDeltaThoughts(deltaChoice.delta);
110
- if (deltaThoughts) {
111
- if (!thinking) {
112
- thinking = true;
113
- }
114
- thoughts ??= '';
115
- thoughts += deltaThoughts;
116
- }
117
- // content
118
- if (deltaChoice.delta.content) {
119
- if (thinking) {
120
- thinking = false;
121
- }
122
- stock.choices[0].delta.content ??= '';
123
- stock.choices[0].delta.content += deltaChoice.delta.content;
124
- }
125
- // function calls
126
- if (deltaChoice.delta.tool_calls) {
127
- if (thinking) {
128
- thinking = false;
129
- }
130
- stock.choices[0].delta.tool_calls ??= [];
131
- for (const deltaToolCall of deltaChoice.delta.tool_calls) {
132
- const toolCalls = stock.choices[0].delta.tool_calls;
133
- toolCalls[deltaToolCall.index] ??= { index: deltaToolCall.index };
134
- toolCalls[deltaToolCall.index].id ??= deltaToolCall.id;
135
- if (deltaToolCall.function) {
136
- toolCalls[deltaToolCall.index].function ??= {};
137
- toolCalls[deltaToolCall.index].function.name ??= deltaToolCall.function.name;
138
- if (deltaToolCall.function.arguments) {
139
- toolCalls[deltaToolCall.index].function.arguments ??= '';
140
- toolCalls[deltaToolCall.index].function.arguments += deltaToolCall.function?.arguments || '';
141
- }
142
- }
143
- }
144
- }
145
- // finish reason
146
- stock.choices[0].finish_reason ??= deltaChoice.finish_reason;
147
- }
148
- // usage
149
- stock.usage ??= chunk.usage;
150
- }
151
- }
152
- catch (e) {
153
- if (e instanceof TypeError)
154
- throw new NetworkError(undefined, { cause: e });
155
- else
156
- throw e;
157
- }
158
- // Validate response
159
- if (stock) { }
160
- else
161
- throw new Error();
162
- const completion = this.convertCompletionStockToCompletion(stock);
163
- const choice = completion.choices[0];
164
- if (choice) { }
165
- else
166
- throw new ResponseInvalid('Content missing', { cause: completion });
167
- if (thoughts)
168
- loggers.inference.debug(thoughts);
169
- if (choice.message.content)
170
- loggers.inference.info(choice.message.content);
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
- loggers.message.info(choice.message.tool_calls);
178
- loggers.message.info(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