@omnicross/core 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/dist/ApiConverter.cjs +24 -0
  2. package/dist/ApiConverter.d.cts +82 -0
  3. package/dist/ApiConverter.d.ts +82 -0
  4. package/dist/ApiConverter.js +24 -0
  5. package/dist/BuiltinToolExecutor-BluWyeob.d.ts +81 -0
  6. package/dist/BuiltinToolExecutor-CS2WpXhM.d.cts +81 -0
  7. package/dist/CompletionService-D3a47vdU.d.cts +213 -0
  8. package/dist/CompletionService-DdWaAxq0.d.ts +213 -0
  9. package/dist/{ProviderProxy-f_8ziIhW.d.cts → ProviderProxy-C-xqrkKi.d.ts} +7 -2
  10. package/dist/{ProviderProxy-vjt8sQQk.d.ts → ProviderProxy-CnMQYN59.d.cts} +7 -2
  11. package/dist/auth/GeminiCodeAssistProjectResolver.cjs +27 -60
  12. package/dist/auth/GeminiCodeAssistProjectResolver.js +5 -9
  13. package/dist/builtin-web-fetch-77JZUZGM.cjs +100 -0
  14. package/dist/builtin-web-fetch-IGLBX2XY.js +100 -0
  15. package/dist/chunk-2DCNB7DF.cjs +514 -0
  16. package/dist/chunk-2FEVTJWG.js +4400 -0
  17. package/dist/chunk-3MEACFK3.js +193 -0
  18. package/dist/chunk-3OPYJG76.cjs +266 -0
  19. package/dist/chunk-46RLHI7D.js +0 -0
  20. package/dist/chunk-46ZIFWYG.cjs +277 -0
  21. package/dist/chunk-4NBS6KPV.cjs +43 -0
  22. package/dist/chunk-4VAVYUZS.cjs +991 -0
  23. package/dist/chunk-5ERIZW3D.js +44 -0
  24. package/dist/chunk-5HTVET6E.js +514 -0
  25. package/dist/chunk-5ZQBEOMD.js +764 -0
  26. package/dist/chunk-6VIXXLMX.cjs +14 -0
  27. package/dist/chunk-745DV5FL.js +147 -0
  28. package/dist/chunk-74TMJA7Z.js +53 -0
  29. package/dist/chunk-7VU7V2E4.js +0 -0
  30. package/dist/chunk-7YN22L2H.cjs +87 -0
  31. package/dist/chunk-A2YMUCBT.cjs +105 -0
  32. package/dist/chunk-AQ5TNQB7.js +13 -0
  33. package/dist/chunk-AVYJ4YBN.js +58 -0
  34. package/dist/chunk-C72S6TTV.cjs +49 -0
  35. package/dist/chunk-C7PSERMH.js +87 -0
  36. package/dist/chunk-CDHS2QDC.js +179 -0
  37. package/dist/chunk-DK4A7DLE.js +266 -0
  38. package/dist/chunk-DRWHTIIZ.js +13 -0
  39. package/dist/chunk-DWKQZ2SK.cjs +254 -0
  40. package/dist/chunk-E3WHL7CO.js +14 -0
  41. package/dist/chunk-EYZYXJTJ.cjs +1 -0
  42. package/dist/chunk-FMOBD2OQ.js +39 -0
  43. package/dist/chunk-FTQ7IQUC.js +991 -0
  44. package/dist/chunk-FZ46M34D.cjs +1 -0
  45. package/dist/chunk-G2FUJNA2.cjs +193 -0
  46. package/dist/chunk-G2UTNSGU.js +277 -0
  47. package/dist/chunk-GBHYAGX3.cjs +26 -0
  48. package/dist/chunk-GMMT7RVN.cjs +39 -0
  49. package/dist/chunk-H5JUT3KV.js +105 -0
  50. package/dist/chunk-HQP3K7PU.cjs +431 -0
  51. package/dist/chunk-JO5NLTLY.js +46 -0
  52. package/dist/chunk-JWC6APFQ.js +23 -0
  53. package/dist/chunk-KUU2RNG6.cjs +46 -0
  54. package/dist/chunk-LKZJEL6E.cjs +124 -0
  55. package/dist/chunk-MNYKI4CI.js +94 -0
  56. package/dist/chunk-MZNPGW5Q.js +26 -0
  57. package/dist/chunk-N3V2J5ZO.cjs +53 -0
  58. package/dist/chunk-NYUNU75A.cjs +44 -0
  59. package/dist/chunk-NZYN7C3P.cjs +179 -0
  60. package/dist/chunk-O466Y272.js +235 -0
  61. package/dist/chunk-PXUJF5HS.js +124 -0
  62. package/dist/chunk-QBZJ7P2T.cjs +13 -0
  63. package/dist/chunk-QOCNX236.js +46 -0
  64. package/dist/chunk-QXD4MV2X.cjs +23 -0
  65. package/dist/chunk-R3HK6R4B.cjs +13 -0
  66. package/dist/chunk-RSJ3TWJQ.cjs +186 -0
  67. package/dist/chunk-S4WBV25P.js +913 -0
  68. package/dist/chunk-SN3YWBX7.cjs +4400 -0
  69. package/dist/chunk-SPVWWUHX.cjs +46 -0
  70. package/dist/chunk-SUEGJ75D.cjs +764 -0
  71. package/dist/chunk-SVNDB62D.cjs +58 -0
  72. package/dist/chunk-UYPEN5XE.cjs +235 -0
  73. package/dist/chunk-V5KPWNYX.cjs +147 -0
  74. package/dist/chunk-VVEHS2LI.js +431 -0
  75. package/dist/chunk-XBSYYZIY.cjs +94 -0
  76. package/dist/chunk-YGXJGRFI.cjs +913 -0
  77. package/dist/chunk-YMFAJFQT.cjs +173 -0
  78. package/dist/chunk-Z7LUNECE.js +49 -0
  79. package/dist/chunk-Z7Y2NPHY.js +186 -0
  80. package/dist/chunk-ZJZAOKI7.js +254 -0
  81. package/dist/chunk-ZLX3KGXX.js +173 -0
  82. package/dist/chunk-ZSVQT3PW.js +43 -0
  83. package/dist/completion/ApiKeyPoolService.cjs +23 -48
  84. package/dist/completion/ApiKeyPoolService.d.cts +150 -2
  85. package/dist/completion/ApiKeyPoolService.d.ts +150 -2
  86. package/dist/completion/BuiltinToolExecutor.cjs +12 -0
  87. package/dist/completion/BuiltinToolExecutor.d.cts +4 -0
  88. package/dist/completion/BuiltinToolExecutor.d.ts +4 -0
  89. package/dist/completion/BuiltinToolExecutor.js +12 -0
  90. package/dist/completion/CompletionService.cjs +38 -0
  91. package/dist/completion/CompletionService.d.cts +22 -0
  92. package/dist/completion/CompletionService.d.ts +22 -0
  93. package/dist/completion/CompletionService.js +38 -0
  94. package/dist/completion/NativeSearchInjector.cjs +12 -0
  95. package/dist/completion/NativeSearchInjector.d.cts +42 -0
  96. package/dist/completion/NativeSearchInjector.d.ts +42 -0
  97. package/dist/completion/NativeSearchInjector.js +12 -0
  98. package/dist/completion/ProviderSearchInjector.cjs +60 -0
  99. package/dist/completion/ProviderSearchInjector.d.cts +47 -0
  100. package/dist/completion/ProviderSearchInjector.d.ts +47 -0
  101. package/dist/completion/ProviderSearchInjector.js +60 -0
  102. package/dist/completion/native-search-types.cjs +14 -0
  103. package/dist/completion/native-search-types.d.cts +3 -0
  104. package/dist/completion/native-search-types.d.ts +3 -0
  105. package/dist/completion/native-search-types.js +14 -0
  106. package/dist/completion/openrouter-headers.cjs +16 -0
  107. package/dist/completion/openrouter-headers.d.cts +44 -0
  108. package/dist/completion/openrouter-headers.d.ts +44 -0
  109. package/dist/completion/openrouter-headers.js +16 -0
  110. package/dist/completion/openrouter-models.cjs +29 -0
  111. package/dist/completion/openrouter-models.d.cts +27 -0
  112. package/dist/completion/openrouter-models.d.ts +27 -0
  113. package/dist/completion/openrouter-models.js +29 -0
  114. package/dist/completion/types.cjs +1 -0
  115. package/dist/completion/types.d.cts +3 -0
  116. package/dist/completion/types.d.ts +3 -0
  117. package/dist/completion/types.js +0 -0
  118. package/dist/completion/url-builder.cjs +24 -0
  119. package/dist/completion/url-builder.d.cts +87 -0
  120. package/dist/completion/url-builder.d.ts +87 -0
  121. package/dist/completion/url-builder.js +24 -0
  122. package/dist/completion.cjs +55 -3989
  123. package/dist/completion.d.cts +150 -8
  124. package/dist/completion.d.ts +150 -8
  125. package/dist/completion.js +63 -3953
  126. package/dist/index.cjs +197 -10428
  127. package/dist/index.d.cts +35 -91
  128. package/dist/index.d.ts +35 -91
  129. package/dist/index.js +125 -10267
  130. package/dist/logger-4GvQNzhE.d.cts +22 -0
  131. package/dist/logger-4GvQNzhE.d.ts +22 -0
  132. package/dist/outbound-api/routeResolver.cjs +11 -0
  133. package/dist/outbound-api/routeResolver.d.cts +19 -0
  134. package/dist/outbound-api/routeResolver.d.ts +19 -0
  135. package/dist/outbound-api/routeResolver.js +11 -0
  136. package/dist/outbound-api/subscriptionRegistryPort.cjs +7 -37
  137. package/dist/outbound-api/subscriptionRegistryPort.d.cts +7 -3
  138. package/dist/outbound-api/subscriptionRegistryPort.d.ts +7 -3
  139. package/dist/outbound-api/subscriptionRegistryPort.js +4 -8
  140. package/dist/outbound-api/types.cjs +1 -0
  141. package/dist/{types-CbCN2NQP.d.ts → outbound-api/types.d.cts} +18 -3
  142. package/dist/{types-CGGrKqC_.d.cts → outbound-api/types.d.ts} +18 -3
  143. package/dist/outbound-api/types.js +0 -0
  144. package/dist/outbound-api.cjs +35 -5220
  145. package/dist/outbound-api.d.cts +16 -88
  146. package/dist/outbound-api.d.ts +16 -88
  147. package/dist/outbound-api.js +54 -5193
  148. package/dist/pipeline/AuthSource.cjs +1 -0
  149. package/dist/pipeline/AuthSource.d.cts +101 -0
  150. package/dist/pipeline/AuthSource.d.ts +101 -0
  151. package/dist/pipeline/AuthSource.js +0 -0
  152. package/dist/pipeline/LlmConfigProviderAuth.cjs +8 -0
  153. package/dist/pipeline/LlmConfigProviderAuth.d.cts +87 -0
  154. package/dist/pipeline/LlmConfigProviderAuth.d.ts +87 -0
  155. package/dist/pipeline/LlmConfigProviderAuth.js +8 -0
  156. package/dist/pipeline/SubscriptionAuthSource.cjs +6 -128
  157. package/dist/pipeline/SubscriptionAuthSource.d.cts +165 -3
  158. package/dist/pipeline/SubscriptionAuthSource.d.ts +165 -3
  159. package/dist/pipeline/SubscriptionAuthSource.js +5 -99
  160. package/dist/pipeline/SubscriptionAuthStrategy.cjs +1 -18
  161. package/dist/pipeline/executeProviderCall.cjs +6 -0
  162. package/dist/pipeline/executeProviderCall.d.cts +149 -0
  163. package/dist/pipeline/executeProviderCall.d.ts +149 -0
  164. package/dist/pipeline/executeProviderCall.js +6 -0
  165. package/dist/pipeline/resolveProviderChain.cjs +6 -0
  166. package/dist/pipeline/resolveProviderChain.d.cts +58 -0
  167. package/dist/pipeline/resolveProviderChain.d.ts +58 -0
  168. package/dist/pipeline/resolveProviderChain.js +6 -0
  169. package/dist/pipeline/resolveSubscriptionChain.cjs +6 -0
  170. package/dist/pipeline/resolveSubscriptionChain.d.cts +68 -0
  171. package/dist/pipeline/resolveSubscriptionChain.d.ts +68 -0
  172. package/dist/pipeline/resolveSubscriptionChain.js +6 -0
  173. package/dist/ports/gemini-code-assist-resolver.cjs +7 -37
  174. package/dist/ports/gemini-code-assist-resolver.js +4 -8
  175. package/dist/ports/pricing-store.cjs +1 -0
  176. package/dist/ports/pricing-store.d.cts +50 -0
  177. package/dist/ports/pricing-store.d.ts +50 -0
  178. package/dist/ports/pricing-store.js +0 -0
  179. package/dist/ports/provider-config-source.cjs +1 -0
  180. package/dist/ports/provider-config-source.d.cts +51 -0
  181. package/dist/ports/provider-config-source.d.ts +51 -0
  182. package/dist/ports/provider-config-source.js +0 -0
  183. package/dist/ports/usage-event-store.cjs +1 -0
  184. package/dist/ports/usage-event-store.d.cts +29 -0
  185. package/dist/ports/usage-event-store.d.ts +29 -0
  186. package/dist/ports/usage-event-store.js +0 -0
  187. package/dist/ports/web-search-backend.cjs +1 -0
  188. package/dist/ports/web-search-backend.d.cts +29 -0
  189. package/dist/ports/web-search-backend.d.ts +29 -0
  190. package/dist/ports/web-search-backend.js +0 -0
  191. package/dist/ports.cjs +1 -18
  192. package/dist/ports.d.cts +16 -8
  193. package/dist/ports.d.ts +16 -8
  194. package/dist/provider-proxy/ProviderProxy.cjs +40 -0
  195. package/dist/provider-proxy/ProviderProxy.d.cts +17 -0
  196. package/dist/provider-proxy/ProviderProxy.d.ts +17 -0
  197. package/dist/provider-proxy/ProviderProxy.js +40 -0
  198. package/dist/provider-proxy/ingress/providerProxyShared.cjs +35 -2941
  199. package/dist/provider-proxy/ingress/providerProxyShared.d.cts +7 -3
  200. package/dist/provider-proxy/ingress/providerProxyShared.d.ts +7 -3
  201. package/dist/provider-proxy/ingress/providerProxyShared.js +41 -2914
  202. package/dist/provider-proxy/matchText.cjs +11 -72
  203. package/dist/provider-proxy/matchText.js +6 -39
  204. package/dist/provider-proxy/types.cjs +1 -18
  205. package/dist/provider-proxy/types.d.cts +407 -8
  206. package/dist/provider-proxy/types.d.ts +407 -8
  207. package/dist/provider-proxy.cjs +35 -4654
  208. package/dist/provider-proxy.d.cts +10 -6
  209. package/dist/provider-proxy.d.ts +10 -6
  210. package/dist/provider-proxy.js +39 -4627
  211. package/dist/routeResolver-BrbK6ja9.d.cts +88 -0
  212. package/dist/routeResolver-HE-ZO0fO.d.ts +88 -0
  213. package/dist/serializeError.cjs +5 -81
  214. package/dist/serializeError.js +3 -54
  215. package/dist/sse-parser.cjs +7 -455
  216. package/dist/sse-parser.js +4 -426
  217. package/dist/transformer/TransformerChainExecutor.cjs +4 -318
  218. package/dist/transformer/TransformerChainExecutor.js +4 -291
  219. package/dist/transformer/TransformerService.cjs +5 -289
  220. package/dist/transformer/TransformerService.js +3 -262
  221. package/dist/transformer/anthropicBetaInject.cjs +8 -0
  222. package/dist/transformer/anthropicBetaInject.d.cts +20 -0
  223. package/dist/transformer/anthropicBetaInject.d.ts +20 -0
  224. package/dist/transformer/anthropicBetaInject.js +8 -0
  225. package/dist/transformer/transformers/AnthropicTransformer.cjs +6 -0
  226. package/dist/transformer/transformers/AnthropicTransformer.d.cts +148 -0
  227. package/dist/transformer/transformers/AnthropicTransformer.d.ts +148 -0
  228. package/dist/transformer/transformers/AnthropicTransformer.js +6 -0
  229. package/dist/transformer/transformers/GeminiCodeAssistTransformer.cjs +4 -1106
  230. package/dist/transformer/transformers/GeminiCodeAssistTransformer.js +7 -1079
  231. package/dist/transformer/transformers/GeminiTransformer.cjs +4 -1010
  232. package/dist/transformer/transformers/GeminiTransformer.js +4 -983
  233. package/dist/transformer/transformers/OpenAIResponseTransformer.cjs +3 -535
  234. package/dist/transformer/transformers/OpenAIResponseTransformer.js +3 -510
  235. package/dist/transformer/transformers/OpenCodeGoTransformer.cjs +5 -72
  236. package/dist/transformer/transformers/OpenCodeGoTransformer.js +3 -45
  237. package/dist/transformer/transformers/ReasoningTransformer.cjs +6 -0
  238. package/dist/transformer/transformers/ReasoningTransformer.d.cts +47 -0
  239. package/dist/transformer/transformers/ReasoningTransformer.d.ts +47 -0
  240. package/dist/transformer/transformers/ReasoningTransformer.js +6 -0
  241. package/dist/transformer/transformers.cjs +39 -0
  242. package/dist/transformer/transformers.d.cts +100 -0
  243. package/dist/transformer/transformers.d.ts +100 -0
  244. package/dist/transformer/transformers.js +39 -0
  245. package/dist/transformer/types.cjs +1 -18
  246. package/dist/transformer.cjs +13 -3726
  247. package/dist/transformer.d.cts +8 -31
  248. package/dist/transformer.d.ts +8 -31
  249. package/dist/transformer.js +17 -3706
  250. package/dist/types-BScIHmPr.d.cts +153 -0
  251. package/dist/types-BScIHmPr.d.ts +153 -0
  252. package/dist/usage/pricing-engine.cjs +6 -0
  253. package/dist/usage/pricing-engine.d.cts +83 -0
  254. package/dist/usage/pricing-engine.d.ts +83 -0
  255. package/dist/usage/pricing-engine.js +6 -0
  256. package/dist/usage/usage-recorder.cjs +6 -0
  257. package/dist/usage/usage-recorder.d.cts +73 -0
  258. package/dist/usage/usage-recorder.d.ts +73 -0
  259. package/dist/usage/usage-recorder.js +6 -0
  260. package/dist/usage.cjs +11 -0
  261. package/dist/usage.d.cts +8 -0
  262. package/dist/usage.d.ts +8 -0
  263. package/dist/usage.js +11 -0
  264. package/package.json +3 -3
  265. package/dist/ApiKeyPoolService-BmMkau07.d.cts +0 -170
  266. package/dist/ApiKeyPoolService-BmMkau07.d.ts +0 -170
  267. package/dist/SubscriptionAuthSource-Cr4fVEYY.d.cts +0 -264
  268. package/dist/SubscriptionAuthSource-D89zmiSS.d.ts +0 -264
  269. package/dist/index-BTSmc9Sm.d.ts +0 -645
  270. package/dist/index-DXazdTzZ.d.cts +0 -645
  271. package/dist/types-DCzHkhJt.d.ts +0 -467
  272. package/dist/types-DZIQbgp0.d.cts +0 -467
@@ -1,456 +1,8 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
19
2
 
20
- // src/sse-parser.ts
21
- var sse_parser_exports = {};
22
- __export(sse_parser_exports, {
23
- createSSEParser: () => createSSEParser,
24
- streamSSEResponse: () => streamSSEResponse
25
- });
26
- module.exports = __toCommonJS(sse_parser_exports);
27
- var DEBUG_SSE = true;
28
- function debugSSE(prefix, ...args) {
29
- if (DEBUG_SSE) {
30
- console.log(`[SSE-Parser] ${prefix}`, ...args);
31
- }
32
- }
33
- function createSSEParser(format, callbacks) {
34
- const state = {
35
- buffer: "",
36
- content: "",
37
- reasoning: "",
38
- usage: void 0,
39
- isDone: false,
40
- streamStartTime: void 0,
41
- firstTokenTime: void 0,
42
- streamEndTime: void 0,
43
- blocks: [],
44
- currentBlockIndex: -1,
45
- currentBlockType: "",
46
- inputJsonBuffer: "",
47
- audios: [],
48
- videos: []
49
- };
50
- function parseOpenAIEvent(data) {
51
- if (data === "[DONE]") {
52
- debugSSE("OpenAI [DONE] received, content length:", state.content.length);
53
- state.isDone = true;
54
- callbacks.onDone?.();
55
- return;
56
- }
57
- try {
58
- const json = JSON.parse(data);
59
- callbacks.onRawEvent?.({ data: json, raw: data });
60
- const delta = json.choices?.[0]?.delta;
61
- const finishReason = json.choices?.[0]?.finish_reason;
62
- if (finishReason) {
63
- debugSSE("OpenAI finish_reason:", finishReason, "content length so far:", state.content.length);
64
- }
65
- if (delta?.content) {
66
- if (!state.firstTokenTime) {
67
- state.firstTokenTime = Date.now();
68
- }
69
- state.content += delta.content;
70
- callbacks.onDelta?.(delta.content);
71
- }
72
- if (delta?.reasoning_content) {
73
- state.reasoning += delta.reasoning_content;
74
- callbacks.onReasoning?.(delta.reasoning_content);
75
- }
76
- if (delta?.audio) {
77
- const audioData = delta.audio;
78
- if (audioData.data) {
79
- const mimeType = audioData.format ? `audio/${audioData.format}` : "audio/wav";
80
- const audio = {
81
- url: audioData.data.startsWith("data:") ? audioData.data : `data:${mimeType};base64,${audioData.data}`,
82
- mimeType
83
- };
84
- state.audios.push(audio);
85
- callbacks.onAudio?.(audio);
86
- }
87
- }
88
- if (json.usage) {
89
- debugSSE("OpenAI usage received:", JSON.stringify(json.usage));
90
- debugSSE("OpenAI final chunk full data:", JSON.stringify(json));
91
- state.usage = {
92
- promptTokens: json.usage.prompt_tokens || 0,
93
- completionTokens: json.usage.completion_tokens || 0,
94
- totalTokens: json.usage.total_tokens || 0
95
- };
96
- callbacks.onUsage?.(state.usage);
97
- }
98
- if (finishReason === "stop" || finishReason === "end_turn" || finishReason === "length") {
99
- debugSSE("OpenAI stream marked done due to finish_reason:", finishReason);
100
- }
101
- } catch {
102
- }
103
- }
104
- function parseAnthropicEvent(data) {
105
- try {
106
- const json = JSON.parse(data);
107
- callbacks.onRawEvent?.({ type: json.type, data: json, raw: data });
108
- if (json.type === "content_block_start") {
109
- const contentBlock = json.content_block;
110
- const blockIndex = json.index ?? -1;
111
- if (contentBlock?.type === "thinking") {
112
- debugSSE("THINKING BLOCK STARTED!");
113
- }
114
- if (contentBlock?.type === "server_tool_use") {
115
- state.currentBlockIndex = blockIndex;
116
- state.currentBlockType = "server_tool_use";
117
- state.inputJsonBuffer = "";
118
- const toolUseBlock = {
119
- id: contentBlock.id || `block_${Date.now()}`,
120
- type: "tool_use",
121
- toolId: contentBlock.id || "",
122
- toolName: contentBlock.name || "web_search",
123
- input: contentBlock.input || {},
124
- status: "running"
125
- };
126
- state.blocks.push(toolUseBlock);
127
- callbacks.onBlock?.(toolUseBlock);
128
- }
129
- if (contentBlock?.type === "web_search_tool_result") {
130
- state.currentBlockIndex = blockIndex;
131
- state.currentBlockType = "web_search_tool_result";
132
- const searchResults = contentBlock.content;
133
- let output = "";
134
- if (Array.isArray(searchResults)) {
135
- output = searchResults.filter((r) => r.type === "web_search_result").map(
136
- (r) => `**${r.title || "Untitled"}**
137
- ${r.url || ""}
138
- ${r.encrypted_content ? "(encrypted)" : r.page_content || r.snippet || ""}`
139
- ).join("\n\n");
140
- }
141
- const lastToolUse = [...state.blocks].reverse().find(
142
- (b) => b.type === "tool_use"
143
- );
144
- const toolResultBlock = {
145
- id: `result_${Date.now()}`,
146
- type: "tool_result",
147
- toolId: lastToolUse?.toolId || "",
148
- toolName: lastToolUse?.toolName || "web_search",
149
- output: output || "(no results)"
150
- };
151
- state.blocks.push(toolResultBlock);
152
- callbacks.onBlock?.(toolResultBlock);
153
- if (lastToolUse) {
154
- lastToolUse.status = "completed";
155
- callbacks.onBlock?.(lastToolUse);
156
- }
157
- }
158
- }
159
- if (json.type === "content_block_delta") {
160
- const delta = json.delta;
161
- if (delta?.type === "text_delta" && delta?.text) {
162
- if (!state.firstTokenTime) {
163
- state.firstTokenTime = Date.now();
164
- }
165
- state.content += delta.text;
166
- callbacks.onDelta?.(delta.text);
167
- }
168
- if (delta?.type === "thinking_delta" && delta?.thinking) {
169
- state.reasoning += delta.thinking;
170
- callbacks.onReasoning?.(delta.thinking);
171
- }
172
- if (delta?.type === "input_json_delta" && delta?.partial_json) {
173
- state.inputJsonBuffer += delta.partial_json;
174
- }
175
- }
176
- if (json.type === "content_block_stop") {
177
- if (state.currentBlockType === "server_tool_use" && state.inputJsonBuffer) {
178
- const lastToolUse = [...state.blocks].reverse().find(
179
- (b) => b.type === "tool_use"
180
- );
181
- if (lastToolUse) {
182
- try {
183
- lastToolUse.input = JSON.parse(state.inputJsonBuffer);
184
- } catch {
185
- lastToolUse.input = { raw: state.inputJsonBuffer };
186
- }
187
- callbacks.onBlock?.(lastToolUse);
188
- }
189
- }
190
- state.currentBlockIndex = -1;
191
- state.currentBlockType = "";
192
- state.inputJsonBuffer = "";
193
- }
194
- if (json.type === "message_delta" && json.usage) {
195
- state.usage = {
196
- promptTokens: json.usage.input_tokens || 0,
197
- completionTokens: json.usage.output_tokens || 0,
198
- totalTokens: (json.usage.input_tokens || 0) + (json.usage.output_tokens || 0)
199
- };
200
- callbacks.onUsage?.(state.usage);
201
- }
202
- if (json.type === "message_stop") {
203
- state.isDone = true;
204
- callbacks.onDone?.();
205
- }
206
- if (json.type === "error") {
207
- callbacks.onError?.(json.error?.message || "Unknown error");
208
- }
209
- } catch {
210
- }
211
- }
212
- function parseGeminiEvent(data) {
213
- try {
214
- const json = JSON.parse(data);
215
- callbacks.onRawEvent?.({ data: json, raw: data });
216
- const candidates = json.candidates;
217
- if (candidates && candidates.length > 0) {
218
- const candidate = candidates[0];
219
- const content = candidate.content;
220
- if (content?.parts) {
221
- for (const part of content.parts) {
222
- if (part.thought === true && part.text) {
223
- state.reasoning += part.text;
224
- callbacks.onReasoning?.(part.text);
225
- } else if (part.text) {
226
- if (!state.firstTokenTime) {
227
- state.firstTokenTime = Date.now();
228
- }
229
- state.content += part.text;
230
- callbacks.onDelta?.(part.text);
231
- }
232
- }
233
- }
234
- const finishReason = candidate.finishReason;
235
- if (finishReason === "STOP" || finishReason === "MAX_TOKENS" || finishReason === "SAFETY") {
236
- debugSSE("Gemini finish reason:", finishReason);
237
- }
238
- }
239
- const usage = json.usageMetadata;
240
- if (usage) {
241
- state.usage = {
242
- promptTokens: usage.promptTokenCount || 0,
243
- completionTokens: usage.candidatesTokenCount || 0,
244
- totalTokens: usage.totalTokenCount || 0
245
- };
246
- callbacks.onUsage?.(state.usage);
247
- debugSSE("Gemini usage:", state.usage);
248
- }
249
- if (json.error) {
250
- callbacks.onError?.(json.error.message || "Gemini API error");
251
- }
252
- } catch {
253
- }
254
- }
255
- function parseOpenAIResponseEvent(data) {
256
- try {
257
- const json = JSON.parse(data);
258
- callbacks.onRawEvent?.({ type: json.type, data: json, raw: data });
259
- switch (json.type) {
260
- case "response.output_text.delta":
261
- if (json.delta) {
262
- if (!state.firstTokenTime) {
263
- state.firstTokenTime = Date.now();
264
- }
265
- state.content += json.delta;
266
- callbacks.onDelta?.(json.delta);
267
- }
268
- break;
269
- case "response.reasoning_summary_text.delta":
270
- if (json.delta) {
271
- state.reasoning += json.delta;
272
- callbacks.onReasoning?.(json.delta);
273
- }
274
- break;
275
- case "response.completed": {
276
- const response = json.response;
277
- if (response?.usage) {
278
- state.usage = {
279
- promptTokens: response.usage.input_tokens || 0,
280
- completionTokens: response.usage.output_tokens || 0,
281
- totalTokens: (response.usage.input_tokens || 0) + (response.usage.output_tokens || 0)
282
- };
283
- callbacks.onUsage?.(state.usage);
284
- }
285
- state.isDone = true;
286
- callbacks.onDone?.();
287
- break;
288
- }
289
- case "error":
290
- callbacks.onError?.(json.error?.message || json.message || "Unknown error");
291
- break;
292
- // Informational events — no-op
293
- // response.created, response.in_progress, response.output_item.added,
294
- // response.content_part.added, response.output_text.done,
295
- // response.content_part.done, response.output_item.done, etc.
296
- default:
297
- break;
298
- }
299
- } catch {
300
- }
301
- }
302
- function processEventBlock(eventBlock) {
303
- const lines = eventBlock.split("\n");
304
- const dataLines = [];
305
- for (const line of lines) {
306
- if (line.startsWith("data: ")) {
307
- dataLines.push(line.slice(6));
308
- } else if (line.trim() !== "" && !line.startsWith(":")) {
309
- }
310
- }
311
- if (dataLines.length > 0) {
312
- const data = dataLines.join("\n");
313
- if (format === "openai") {
314
- parseOpenAIEvent(data);
315
- } else if (format === "gemini") {
316
- parseGeminiEvent(data);
317
- } else if (format === "openai-response") {
318
- parseOpenAIResponseEvent(data);
319
- } else {
320
- parseAnthropicEvent(data);
321
- }
322
- }
323
- }
324
- return {
325
- /**
326
- * Push a chunk of data to the parser
327
- * @param chunk - Raw SSE chunk from response stream
328
- */
329
- push(chunk) {
330
- if (state.isDone) return;
331
- if (!state.streamStartTime) {
332
- state.streamStartTime = Date.now();
333
- }
334
- state.buffer += chunk;
335
- const events = state.buffer.split("\n\n");
336
- state.buffer = events.pop() || "";
337
- for (const eventBlock of events) {
338
- processEventBlock(eventBlock);
339
- if (state.isDone) break;
340
- }
341
- },
342
- /**
343
- * Flush any remaining data in the buffer
344
- */
345
- flush() {
346
- debugSSE("flush() called, buffer length:", state.buffer.length, "isDone:", state.isDone);
347
- if (state.buffer.trim()) {
348
- debugSSE("flush() processing remaining buffer:", state.buffer.substring(0, 200));
349
- processEventBlock(state.buffer);
350
- state.buffer = "";
351
- }
352
- state.streamEndTime = Date.now();
353
- if (!state.isDone) {
354
- debugSSE("flush() marking stream as done, final content length:", state.content.length);
355
- state.isDone = true;
356
- callbacks.onDone?.();
357
- }
358
- },
359
- /**
360
- * Get accumulated results
361
- */
362
- getResult() {
363
- let metrics;
364
- if (state.usage && state.firstTokenTime && state.streamEndTime) {
365
- const timeCompletionMs = state.streamEndTime - state.firstTokenTime;
366
- const timeFirstTokenMs = state.streamStartTime ? state.firstTokenTime - state.streamStartTime : void 0;
367
- metrics = {
368
- completionTokens: state.usage.completionTokens,
369
- timeCompletionMs: timeCompletionMs > 0 ? timeCompletionMs : 1,
370
- // Ensure at least 1ms
371
- timeFirstTokenMs
372
- };
373
- }
374
- if (state.reasoning) {
375
- const thinkingBlock = {
376
- id: `thinking_${Date.now()}`,
377
- type: "thinking",
378
- content: state.reasoning
379
- };
380
- state.blocks.unshift(thinkingBlock);
381
- }
382
- return {
383
- content: state.content,
384
- reasoning: state.reasoning,
385
- usage: state.usage,
386
- metrics,
387
- blocks: state.blocks,
388
- audios: state.audios,
389
- videos: state.videos
390
- };
391
- },
392
- /**
393
- * Check if stream is complete
394
- */
395
- isDone() {
396
- return state.isDone;
397
- },
398
- /**
399
- * Reset parser state for reuse
400
- */
401
- reset() {
402
- state.buffer = "";
403
- state.content = "";
404
- state.reasoning = "";
405
- state.usage = void 0;
406
- state.isDone = false;
407
- state.streamStartTime = void 0;
408
- state.firstTokenTime = void 0;
409
- state.streamEndTime = void 0;
410
- state.blocks = [];
411
- state.currentBlockIndex = -1;
412
- state.currentBlockType = "";
413
- state.inputJsonBuffer = "";
414
- state.audios = [];
415
- state.videos = [];
416
- }
417
- };
418
- }
419
- async function streamSSEResponse(response, format, callbacks) {
420
- debugSSE("streamSSEResponse started, format:", format);
421
- const reader = response.body?.getReader();
422
- if (!reader) {
423
- callbacks.onError?.("No response body");
424
- return { content: "", reasoning: "", blocks: [], audios: [], videos: [] };
425
- }
426
- const decoder = new TextDecoder();
427
- const parser = createSSEParser(format, callbacks);
428
- let chunkCount = 0;
429
- try {
430
- while (true) {
431
- const { done, value } = await reader.read();
432
- if (done) {
433
- debugSSE("Reader done signal received after", chunkCount, "chunks");
434
- break;
435
- }
436
- const chunk = decoder.decode(value, { stream: true });
437
- chunkCount++;
438
- parser.push(chunk);
439
- if (parser.isDone()) {
440
- debugSSE("Parser isDone after", chunkCount, "chunks");
441
- break;
442
- }
443
- }
444
- parser.flush();
445
- const result = parser.getResult();
446
- debugSSE("streamSSEResponse complete, content length:", result.content.length, "completionTokens:", result.usage?.completionTokens, "usage:", result.usage);
447
- return result;
448
- } finally {
449
- reader.releaseLock();
450
- }
451
- }
452
- // Annotate the CommonJS export names for ESM import in node:
453
- 0 && (module.exports = {
454
- createSSEParser,
455
- streamSSEResponse
456
- });
3
+
4
+ var _chunkHQP3K7PUcjs = require('./chunk-HQP3K7PU.cjs');
5
+
6
+
7
+
8
+ exports.createSSEParser = _chunkHQP3K7PUcjs.createSSEParser; exports.streamSSEResponse = _chunkHQP3K7PUcjs.streamSSEResponse;