@superblocksteam/vite-plugin-file-sync 2.0.41-next.52 → 2.0.41-next.6

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 (270) hide show
  1. package/dist/ai-service/agent/apis-system-prompt.d.ts +1 -1
  2. package/dist/ai-service/agent/apis-system-prompt.d.ts.map +1 -1
  3. package/dist/ai-service/agent/apis-system-prompt.js +21 -50
  4. package/dist/ai-service/agent/apis-system-prompt.js.map +1 -1
  5. package/dist/ai-service/agent/apis.d.ts +0 -10
  6. package/dist/ai-service/agent/apis.d.ts.map +1 -1
  7. package/dist/ai-service/agent/apis.js +3 -25
  8. package/dist/ai-service/agent/apis.js.map +1 -1
  9. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  10. package/dist/ai-service/agent/tool-message-utils.js +2 -5
  11. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  12. package/dist/ai-service/agent/tools/build-debug.d.ts +1 -1
  13. package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
  14. package/dist/ai-service/agent/tools/build-debug.js +23 -24
  15. package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
  16. package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
  17. package/dist/ai-service/agent/tools/build-edit-file.js +12 -7
  18. package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
  19. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  20. package/dist/ai-service/agent/tools/build-finalize.js +2 -23
  21. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  22. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
  23. package/dist/ai-service/agent/tools/build-multi-edit-file.js +9 -4
  24. package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
  25. package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
  26. package/dist/ai-service/agent/tools/build-write-file.js +9 -4
  27. package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
  28. package/dist/ai-service/agent/tools/debug-cache.d.ts +13 -95
  29. package/dist/ai-service/agent/tools/debug-cache.d.ts.map +1 -1
  30. package/dist/ai-service/agent/tools/debug-cache.js +38 -215
  31. package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
  32. package/dist/ai-service/agent/tools/index.d.ts +0 -1
  33. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  34. package/dist/ai-service/agent/tools/index.js +0 -1
  35. package/dist/ai-service/agent/tools/index.js.map +1 -1
  36. package/dist/ai-service/agent/tools.d.ts +1 -22
  37. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  38. package/dist/ai-service/agent/tools.js +1 -3
  39. package/dist/ai-service/agent/tools.js.map +1 -1
  40. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  41. package/dist/ai-service/agent/utils.js +159 -170
  42. package/dist/ai-service/agent/utils.js.map +1 -1
  43. package/dist/ai-service/app-interface/file-system-interface.d.ts.map +1 -1
  44. package/dist/ai-service/app-interface/file-system-interface.js +68 -117
  45. package/dist/ai-service/app-interface/file-system-interface.js.map +1 -1
  46. package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
  47. package/dist/ai-service/app-interface/linter.js +54 -103
  48. package/dist/ai-service/app-interface/linter.js.map +1 -1
  49. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  50. package/dist/ai-service/app-interface/shell.js +160 -227
  51. package/dist/ai-service/app-interface/shell.js.map +1 -1
  52. package/dist/ai-service/artifacts/bolt.d.ts.map +1 -1
  53. package/dist/ai-service/artifacts/bolt.js +30 -88
  54. package/dist/ai-service/artifacts/bolt.js.map +1 -1
  55. package/dist/ai-service/chat/chat-session-store.d.ts +2 -12
  56. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  57. package/dist/ai-service/chat/chat-session-store.js +1 -45
  58. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  59. package/dist/ai-service/chat/extract-history.d.ts +1 -3
  60. package/dist/ai-service/chat/extract-history.d.ts.map +1 -1
  61. package/dist/ai-service/chat/extract-history.js +1 -6
  62. package/dist/ai-service/chat/extract-history.js.map +1 -1
  63. package/dist/ai-service/context/app-context.d.ts.map +1 -1
  64. package/dist/ai-service/context/app-context.js +241 -305
  65. package/dist/ai-service/context/app-context.js.map +1 -1
  66. package/dist/ai-service/evals/content-matchers/index.d.ts.map +1 -1
  67. package/dist/ai-service/evals/content-matchers/index.js +0 -1
  68. package/dist/ai-service/evals/content-matchers/index.js.map +1 -1
  69. package/dist/ai-service/index.d.ts +0 -3
  70. package/dist/ai-service/index.d.ts.map +1 -1
  71. package/dist/ai-service/index.js +71 -105
  72. package/dist/ai-service/index.js.map +1 -1
  73. package/dist/ai-service/integration-validator.d.ts +1 -1
  74. package/dist/ai-service/integration-validator.d.ts.map +1 -1
  75. package/dist/ai-service/integration-validator.js +3 -6
  76. package/dist/ai-service/integration-validator.js.map +1 -1
  77. package/dist/ai-service/integrations/metadata/database.d.ts.map +1 -1
  78. package/dist/ai-service/integrations/metadata/database.js +1 -1
  79. package/dist/ai-service/integrations/metadata/database.js.map +1 -1
  80. package/dist/ai-service/integrations/metadata/graphql-based.js +1 -1
  81. package/dist/ai-service/integrations/metadata/graphql-based.js.map +1 -1
  82. package/dist/ai-service/integrations/metadata/open-api.js +1 -1
  83. package/dist/ai-service/integrations/metadata/open-api.js.map +1 -1
  84. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  85. package/dist/ai-service/integrations/store.js +74 -135
  86. package/dist/ai-service/integrations/store.js.map +1 -1
  87. package/dist/ai-service/llmobs.d.ts +154 -0
  88. package/dist/ai-service/llmobs.d.ts.map +1 -0
  89. package/dist/ai-service/llmobs.js +216 -0
  90. package/dist/ai-service/llmobs.js.map +1 -0
  91. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.d.ts +1 -3
  92. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.d.ts.map +1 -1
  93. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.js +3 -5
  94. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.js.map +1 -1
  95. package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.d.ts +1 -3
  96. package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.d.ts.map +1 -1
  97. package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.js +1 -3
  98. package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.js.map +1 -1
  99. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ButtonPropsDocs.js +1 -1
  100. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/CheckboxPropsDocs.js +1 -1
  101. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ColumnPropsDocs.js +1 -1
  102. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ContainerPropsDocs.js +1 -1
  103. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.js +1 -1
  104. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DropdownPropsDocs.js +1 -1
  105. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/IconPropsDocs.js +1 -1
  106. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ImagePropsDocs.js +1 -1
  107. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.js +1 -1
  108. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ModalPropsDocs.js +1 -1
  109. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/PagePropsDocs.js +1 -1
  110. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SectionPropsDocs.js +1 -1
  111. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SlideoutPropsDocs.js +1 -1
  112. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SwitchPropsDocs.js +1 -1
  113. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.js +1 -1
  114. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.js +1 -1
  115. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/Dim.js +1 -1
  116. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/EventFlow.js +1 -1
  117. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/TextStyleWithVariant.js +1 -1
  118. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.js +1 -1
  119. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.js +1 -1
  120. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-components-rules.js +1 -1
  121. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-custom-components.js +1 -1
  122. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-data-filtering.js +1 -1
  123. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-event-flow.js +1 -1
  124. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-forms.js +1 -1
  125. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-layouts.js +1 -1
  126. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-page.js +1 -1
  127. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-rbac.js +1 -1
  128. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-routes.js +1 -1
  129. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-state.js +1 -1
  130. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming-chakra-new.js +1 -1
  131. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-base.js +1 -1
  132. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.js +1 -1
  133. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-specific-edit.js +1 -1
  134. package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.d.ts +1 -3
  135. package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.d.ts.map +1 -1
  136. package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.js +2 -4
  137. package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.js.map +1 -1
  138. package/dist/ai-service/prompt-builder-service/utils/markdown-loader.d.ts +1 -3
  139. package/dist/ai-service/prompt-builder-service/utils/markdown-loader.d.ts.map +1 -1
  140. package/dist/ai-service/prompt-builder-service/utils/markdown-loader.js +1 -3
  141. package/dist/ai-service/prompt-builder-service/utils/markdown-loader.js.map +1 -1
  142. package/dist/ai-service/state-machine/clark-fsm.d.ts +4 -16
  143. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  144. package/dist/ai-service/state-machine/clark-fsm.js +0 -47
  145. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  146. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  147. package/dist/ai-service/state-machine/handlers/agent-planning.js +6 -6
  148. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  149. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  150. package/dist/ai-service/state-machine/handlers/awaiting-user.js +4 -5
  151. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  152. package/dist/ai-service/state-machine/handlers/idle.js +1 -1
  153. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  154. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  155. package/dist/ai-service/state-machine/handlers/llm-generating.js +266 -274
  156. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  157. package/dist/ai-service/state-machine/handlers/post-processing.js +0 -2
  158. package/dist/ai-service/state-machine/handlers/post-processing.js.map +1 -1
  159. package/dist/ai-service/state-machine/handlers/simple-prompt-builder.d.ts.map +1 -1
  160. package/dist/ai-service/state-machine/handlers/simple-prompt-builder.js +0 -16
  161. package/dist/ai-service/state-machine/handlers/simple-prompt-builder.js.map +1 -1
  162. package/dist/ai-service/state-machine/traced-fsm.d.ts +70 -41
  163. package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
  164. package/dist/ai-service/state-machine/traced-fsm.js +173 -66
  165. package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
  166. package/dist/ai-service/template-renderer.d.ts.map +1 -1
  167. package/dist/ai-service/template-renderer.js +56 -102
  168. package/dist/ai-service/template-renderer.js.map +1 -1
  169. package/dist/ai-service/test-utils/dd-trace-helpers.d.ts +0 -1
  170. package/dist/ai-service/test-utils/dd-trace-helpers.d.ts.map +1 -1
  171. package/dist/ai-service/test-utils/dd-trace-helpers.js.map +1 -1
  172. package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts +1 -2
  173. package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
  174. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +63 -120
  175. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
  176. package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts.map +1 -1
  177. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +47 -97
  178. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -1
  179. package/dist/ai-service/transform/remove-api-builder-imports/transformer.d.ts.map +1 -1
  180. package/dist/ai-service/transform/remove-api-builder-imports/transformer.js +37 -88
  181. package/dist/ai-service/transform/remove-api-builder-imports/transformer.js.map +1 -1
  182. package/dist/ai-service/transform/shared.d.ts +2 -4
  183. package/dist/ai-service/transform/shared.d.ts.map +1 -1
  184. package/dist/ai-service/transform/shared.js +3 -6
  185. package/dist/ai-service/transform/shared.js.map +1 -1
  186. package/dist/ai-service/transform/workaround-missing-sbapi/transformer.d.ts.map +1 -1
  187. package/dist/ai-service/transform/workaround-missing-sbapi/transformer.js +26 -77
  188. package/dist/ai-service/transform/workaround-missing-sbapi/transformer.js.map +1 -1
  189. package/dist/ai-service/types.d.ts +0 -2
  190. package/dist/ai-service/types.d.ts.map +1 -1
  191. package/dist/ai-service/types.js.map +1 -1
  192. package/dist/ai-service/util/ddog-llmobs.d.ts +20 -0
  193. package/dist/ai-service/util/ddog-llmobs.d.ts.map +1 -0
  194. package/dist/ai-service/util/ddog-llmobs.js +197 -0
  195. package/dist/ai-service/util/ddog-llmobs.js.map +1 -0
  196. package/dist/binding-extraction/extract-identifiers.d.ts +2 -5
  197. package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
  198. package/dist/binding-extraction/extract-identifiers.js +4 -7
  199. package/dist/binding-extraction/extract-identifiers.js.map +1 -1
  200. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  201. package/dist/file-sync-vite-plugin.js +1 -92
  202. package/dist/file-sync-vite-plugin.js.map +1 -1
  203. package/dist/file-system-helpers.d.ts +0 -3
  204. package/dist/file-system-helpers.d.ts.map +1 -1
  205. package/dist/file-system-helpers.js +0 -12
  206. package/dist/file-system-helpers.js.map +1 -1
  207. package/dist/file-system-manager.d.ts.map +1 -1
  208. package/dist/file-system-manager.js +1 -53
  209. package/dist/file-system-manager.js.map +1 -1
  210. package/dist/parsing/entity/to-value-entity.d.ts.map +1 -1
  211. package/dist/parsing/entity/to-value-entity.js +0 -1
  212. package/dist/parsing/entity/to-value-entity.js.map +1 -1
  213. package/dist/parsing/jsx.d.ts +0 -4
  214. package/dist/parsing/jsx.d.ts.map +1 -1
  215. package/dist/parsing/jsx.js +0 -33
  216. package/dist/parsing/jsx.js.map +1 -1
  217. package/dist/parsing/page.d.ts.map +1 -1
  218. package/dist/parsing/page.js +3 -48
  219. package/dist/parsing/page.js.map +1 -1
  220. package/dist/parsing/properties.d.ts.map +1 -1
  221. package/dist/parsing/properties.js +0 -10
  222. package/dist/parsing/properties.js.map +1 -1
  223. package/dist/socket-manager.d.ts.map +1 -1
  224. package/dist/socket-manager.js +1 -3
  225. package/dist/socket-manager.js.map +1 -1
  226. package/dist/source-tracker.d.ts +0 -4
  227. package/dist/source-tracker.d.ts.map +1 -1
  228. package/dist/source-tracker.js +5 -132
  229. package/dist/source-tracker.js.map +1 -1
  230. package/dist/sync-service/list-dir.d.ts +1 -1
  231. package/dist/sync-service/list-dir.d.ts.map +1 -1
  232. package/dist/sync-service/list-dir.js +9 -3
  233. package/dist/sync-service/list-dir.js.map +1 -1
  234. package/dist/util/logger.d.ts +0 -9
  235. package/dist/util/logger.d.ts.map +1 -1
  236. package/dist/util/logger.js +7 -64
  237. package/dist/util/logger.js.map +1 -1
  238. package/package.json +7 -9
  239. package/dist/ai-service/agent/tools/build-set-api-triggers.d.ts +0 -27
  240. package/dist/ai-service/agent/tools/build-set-api-triggers.d.ts.map +0 -1
  241. package/dist/ai-service/agent/tools/build-set-api-triggers.js +0 -265
  242. package/dist/ai-service/agent/tools/build-set-api-triggers.js.map +0 -1
  243. package/dist/ai-service/llmobs/helpers.d.ts +0 -20
  244. package/dist/ai-service/llmobs/helpers.d.ts.map +0 -1
  245. package/dist/ai-service/llmobs/helpers.js +0 -130
  246. package/dist/ai-service/llmobs/helpers.js.map +0 -1
  247. package/dist/ai-service/llmobs/index.d.ts +0 -8
  248. package/dist/ai-service/llmobs/index.d.ts.map +0 -1
  249. package/dist/ai-service/llmobs/index.js +0 -7
  250. package/dist/ai-service/llmobs/index.js.map +0 -1
  251. package/dist/ai-service/llmobs/middleware/stream-text.d.ts +0 -60
  252. package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +0 -1
  253. package/dist/ai-service/llmobs/middleware/stream-text.js +0 -601
  254. package/dist/ai-service/llmobs/middleware/stream-text.js.map +0 -1
  255. package/dist/ai-service/llmobs/tracer.d.ts +0 -95
  256. package/dist/ai-service/llmobs/tracer.d.ts.map +0 -1
  257. package/dist/ai-service/llmobs/tracer.js +0 -341
  258. package/dist/ai-service/llmobs/tracer.js.map +0 -1
  259. package/dist/ai-service/llmobs/types.d.ts +0 -47
  260. package/dist/ai-service/llmobs/types.d.ts.map +0 -1
  261. package/dist/ai-service/llmobs/types.js +0 -2
  262. package/dist/ai-service/llmobs/types.js.map +0 -1
  263. package/dist/ai-service/test-utils/span-interceptor.d.ts +0 -74
  264. package/dist/ai-service/test-utils/span-interceptor.d.ts.map +0 -1
  265. package/dist/ai-service/test-utils/span-interceptor.js +0 -272
  266. package/dist/ai-service/test-utils/span-interceptor.js.map +0 -1
  267. package/dist/ai-service/util/safe-stringify.d.ts +0 -2
  268. package/dist/ai-service/util/safe-stringify.d.ts.map +0 -1
  269. package/dist/ai-service/util/safe-stringify.js +0 -68
  270. package/dist/ai-service/util/safe-stringify.js.map +0 -1
@@ -1,60 +0,0 @@
1
- import { type Logger } from "../../../util/logger.js";
2
- import { LLMObsTracer, type LLMObsSpan } from "../index.js";
3
- import type { ToolSet, StreamTextOnStepFinishCallback, LanguageModel, StreamTextOnFinishCallback, StreamTextOnErrorCallback, StepResult, ModelMessage, PrepareStepFunction, PrepareStepResult, StreamTextOnChunkCallback } from "ai";
4
- import type { streamText } from "ai";
5
- type StreamAbortEvent<T extends ToolSet> = {
6
- readonly steps: StepResult<T>[];
7
- };
8
- type StreamTextOnAbortCallback<T extends ToolSet> = (event: StreamAbortEvent<T>) => PromiseLike<void> | void;
9
- type StreamSegment = {
10
- type: "text" | "reasoning" | "tool-call" | "tool-result" | "tool-input" | "raw" | "thinking" | "source";
11
- span: LLMObsSpan;
12
- content: string | {
13
- [key: string]: any;
14
- } | undefined;
15
- };
16
- export declare class LLMObsStreamTextMiddleware {
17
- fullSpan?: LLMObsSpan;
18
- stepSpan?: LLMObsSpan;
19
- currentSegment?: StreamSegment;
20
- modelName: string;
21
- modelProvider?: string;
22
- modelProviderDetailed?: string;
23
- tools?: ToolSet;
24
- stepResults: StepResult<any>[];
25
- llmobs: LLMObsTracer;
26
- logger: Logger;
27
- private errorLogged;
28
- wrap<T extends ToolSet>(fn: typeof streamText<T>): typeof streamText<T>;
29
- constructor(llmobs?: LLMObsTracer, logger?: Logger);
30
- private transform;
31
- prepareStep<T extends ToolSet>(options: Parameters<PrepareStepFunction<T>>[0], next?: PrepareStepFunction<T>): Promise<{
32
- steps: StepResult<NoInfer<T>>[];
33
- stepNumber: number;
34
- model: LanguageModel;
35
- messages: Array<ModelMessage>;
36
- } | PrepareStepResult<T>>;
37
- onChunk<T extends ToolSet>(event: Parameters<StreamTextOnChunkCallback<T>>[0], next?: StreamTextOnChunkCallback<T>): Promise<void>;
38
- onStepFinish<T extends ToolSet>(result: Parameters<StreamTextOnStepFinishCallback<T>>[0], next?: StreamTextOnStepFinishCallback<T>): Promise<void>;
39
- onError(event: Parameters<StreamTextOnErrorCallback>[0], next?: StreamTextOnErrorCallback): Promise<void>;
40
- onAbort<T extends ToolSet>(event: StreamAbortEvent<T>, next?: StreamTextOnAbortCallback<T>): Promise<void>;
41
- onFinish<T extends ToolSet>(event: Parameters<StreamTextOnFinishCallback<T>>[0], next?: StreamTextOnFinishCallback<T>): Promise<void>;
42
- onFinally(): Promise<void>;
43
- private handleStreamError;
44
- private handleToolExecuteStart;
45
- private logStreamError;
46
- private ensureSegment;
47
- private appendTextToCurrentSegment;
48
- private appendToolInputDelta;
49
- private isTextualSegment;
50
- private getSegmentType;
51
- private startSegment;
52
- private finishSegment;
53
- private startStepSpan;
54
- private finishStepSpan;
55
- private startFullSpan;
56
- private finishFullSpan;
57
- private setModel;
58
- }
59
- export {};
60
- //# sourceMappingURL=stream-text.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream-text.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llmobs/middleware/stream-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGjE,OAAO,EACL,YAAY,EAGZ,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EACV,OAAO,EACP,8BAA8B,EAC9B,aAAa,EACb,0BAA0B,EAC1B,yBAAyB,EAEzB,UAAU,EAGV,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EAK1B,MAAM,IAAI,CAAC;AACZ,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAErC,KAAK,gBAAgB,CAAC,CAAC,SAAS,OAAO,IAAI;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;CAAE,CAAC;AAE/E,KAAK,yBAAyB,CAAC,CAAC,SAAS,OAAO,IAAI,CAClD,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KACvB,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE9B,KAAK,aAAa,GAAG;IACnB,IAAI,EACA,MAAM,GACN,WAAW,GACX,WAAW,GACX,aAAa,GACb,YAAY,GACZ,KAAK,GACL,UAAU,GACV,QAAQ,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,SAAS,CAAC;CACtD,CAAC;AAEF,qBAAa,0BAA0B;IACrC,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,SAAS,SAAa;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAM;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,WAAW,CAAS;IAE5B,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC,CAAC;gBAerE,MAAM,GAAE,YAAoC,EAC5C,MAAM,GAAE,MAAoB;IAM9B,OAAO,CAAC,SAAS;IAyBX,WAAW,CAAC,CAAC,SAAS,OAAO,EACjC,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC9C,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;;;;;;IAyBzB,OAAO,CAAC,CAAC,SAAS,OAAO,EAC7B,KAAK,EAAE,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClD,IAAI,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAmC/B,YAAY,CAAC,CAAC,SAAS,OAAO,EAClC,MAAM,EAAE,UAAU,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxD,IAAI,CAAC,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAsBpC,OAAO,CACX,KAAK,EAAE,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAC/C,IAAI,CAAC,EAAE,yBAAyB;IAa5B,OAAO,CAAC,CAAC,SAAS,OAAO,EAC7B,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC1B,IAAI,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAY/B,QAAQ,CAAC,CAAC,SAAS,OAAO,EAC9B,KAAK,EAAE,UAAU,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACnD,IAAI,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAWhC,SAAS;IAIf,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,QAAQ;CAOjB"}
@@ -1,601 +0,0 @@
1
- import { getLogger } from "../../../util/logger.js";
2
- import { safeJsonStringify } from "../../util/safe-stringify.js";
3
- import { traceToolSet } from "../helpers.js";
4
- import { LLMObsTracer, } from "../index.js";
5
- export class LLMObsStreamTextMiddleware {
6
- fullSpan;
7
- stepSpan;
8
- currentSegment;
9
- modelName = "unknown";
10
- modelProvider;
11
- modelProviderDetailed;
12
- tools;
13
- stepResults = [];
14
- llmobs;
15
- logger;
16
- errorLogged = false;
17
- wrap(fn) {
18
- return (params) => {
19
- const result = fn(this.transform(params));
20
- return {
21
- ...result,
22
- fullStream: wrapStream(result.fullStream, async (error) => this.handleStreamError(error, "full"), async () => this.onFinally()),
23
- };
24
- };
25
- }
26
- constructor(llmobs = LLMObsTracer.instance, logger = getLogger()) {
27
- this.llmobs = llmobs;
28
- this.logger = logger;
29
- }
30
- transform(params) {
31
- const tools = params.tools
32
- ? traceToolSet(params.tools, this.llmobs, {
33
- beforeExecute: this.handleToolExecuteStart.bind(this),
34
- })
35
- : undefined;
36
- this.tools = tools;
37
- return {
38
- ...params,
39
- prepareStep: (e) => this.prepareStep(e, params.prepareStep),
40
- onChunk: (e) => this.onChunk(e, params.onChunk),
41
- onStepFinish: (e) => this.onStepFinish(e, params.onStepFinish),
42
- onError: (e) => this.onError(e, params.onError),
43
- onAbort: (e) => this.onAbort(e, params.onAbort),
44
- onFinish: (e) => this.onFinish(e, params.onFinish),
45
- tools: params.tools
46
- ? traceToolSet(params.tools, this.llmobs, {
47
- beforeExecute: (e) => this.handleToolExecuteStart(e),
48
- })
49
- : undefined,
50
- };
51
- }
52
- async prepareStep(options, next) {
53
- let preparedStepResult;
54
- try {
55
- if (next) {
56
- preparedStepResult = await next(options);
57
- return preparedStepResult;
58
- }
59
- else {
60
- return options;
61
- }
62
- }
63
- finally {
64
- this.setModel(preparedStepResult?.model ?? options.model);
65
- const messages = preparedStepResult?.messages ?? options.messages;
66
- if (!this.fullSpan) {
67
- // Start a full span for the entire streamText call
68
- this.startFullSpan({ messages });
69
- }
70
- this.startStepSpan({
71
- stepNumber: options.stepNumber,
72
- inputMessages: messages,
73
- });
74
- this.startSegment({ type: "thinking" });
75
- }
76
- }
77
- async onChunk(event, next) {
78
- if (next) {
79
- try {
80
- await next(event);
81
- }
82
- catch {
83
- // Ignore user callback errors to avoid breaking stream processing
84
- }
85
- }
86
- const chunk = event.chunk;
87
- if (chunk.type === "tool-input-start") {
88
- const startContent = { tool: chunk.toolName, input: "" };
89
- this.startSegment({ type: "tool-input", startContent });
90
- return;
91
- }
92
- if (chunk.type === "tool-input-delta") {
93
- this.appendToolInputDelta(chunk.delta);
94
- return;
95
- }
96
- const deltaType = this.getSegmentType(chunk.type, "-delta");
97
- if (deltaType) {
98
- this.ensureSegment(deltaType);
99
- if (this.isTextualSegment(deltaType) &&
100
- "text" in chunk &&
101
- typeof chunk.text === "string") {
102
- this.appendTextToCurrentSegment(chunk.text);
103
- }
104
- return;
105
- }
106
- }
107
- async onStepFinish(result, next) {
108
- this.logger.debug("onStepFinish called");
109
- this.stepResults.push(result);
110
- try {
111
- if (next) {
112
- await next(result);
113
- }
114
- }
115
- finally {
116
- const provider = result.providerMetadata && safeJsonStringify(result.providerMetadata);
117
- this.finishStepSpan({
118
- result,
119
- annotations: {
120
- metadata: {
121
- provider,
122
- },
123
- },
124
- });
125
- }
126
- }
127
- async onError(event, next) {
128
- if (next) {
129
- try {
130
- await next(event);
131
- }
132
- catch (userError) {
133
- this.logger.error(`Error in user-provided onError: ${userError}`);
134
- }
135
- }
136
- const error = event.error;
137
- this.finishStepSpan({ error });
138
- }
139
- async onAbort(event, next) {
140
- try {
141
- if (next) {
142
- await next(event);
143
- }
144
- return;
145
- }
146
- finally {
147
- this.finishFullSpan({ annotations: { tags: { aborted: true } } });
148
- }
149
- }
150
- async onFinish(event, next) {
151
- try {
152
- if (next) {
153
- await next(event);
154
- }
155
- }
156
- finally {
157
- this.finishFullSpan({ finalResult: event });
158
- }
159
- }
160
- async onFinally() {
161
- this.finishFullSpan();
162
- }
163
- handleStreamError(error, context) {
164
- this.logStreamError(error, context);
165
- this.finishFullSpan({ error });
166
- }
167
- handleToolExecuteStart(_name) {
168
- this.finishSegment();
169
- }
170
- logStreamError(error, context) {
171
- if (this.errorLogged) {
172
- return;
173
- }
174
- this.errorLogged = true;
175
- const message = error instanceof Error
176
- ? `Error in ${context} async iterable: ${error.message}`
177
- : `Error in ${context} async iterable: ${safeJsonStringify(error)}`;
178
- this.logger.error(message);
179
- }
180
- ensureSegment(type) {
181
- if (this.currentSegment?.type !== type) {
182
- this.finishSegment();
183
- this.startSegment({ type });
184
- return;
185
- }
186
- if (!this.currentSegment) {
187
- this.startSegment({ type });
188
- }
189
- }
190
- appendTextToCurrentSegment(text) {
191
- const segment = this.currentSegment;
192
- if (!segment) {
193
- return;
194
- }
195
- const existing = typeof segment.content === "string" ? segment.content : "";
196
- segment.content = `${existing}${text}`;
197
- }
198
- appendToolInputDelta(delta) {
199
- const segment = this.currentSegment;
200
- if (!segment || segment.type !== "tool-input") {
201
- return;
202
- }
203
- const content = segment.content;
204
- content.input += delta;
205
- }
206
- isTextualSegment(type) {
207
- return (type === "text" ||
208
- type === "reasoning" ||
209
- type === "thinking" ||
210
- type === "raw" ||
211
- type === "source");
212
- }
213
- getSegmentType(eventType, suffix) {
214
- if (!eventType.endsWith(suffix)) {
215
- return undefined;
216
- }
217
- const base = eventType.slice(0, -suffix.length);
218
- const admissible = [
219
- "text",
220
- "reasoning",
221
- "thinking",
222
- "raw",
223
- "source",
224
- "tool-call",
225
- "tool-result",
226
- "tool-input",
227
- ];
228
- return admissible.includes(base) ? base : undefined;
229
- }
230
- startSegment(options) {
231
- if (this.currentSegment) {
232
- // Finish any existing segment before starting a new one
233
- this.finishSegment();
234
- }
235
- const { type, startContent } = options;
236
- const segmentSpan = this.llmobs.startActiveSpan({
237
- kind: "task",
238
- name: `ai.streamText.${type}`,
239
- });
240
- this.currentSegment = { span: segmentSpan, type, content: startContent };
241
- }
242
- finishSegment(options) {
243
- const segment = this.currentSegment;
244
- if (!segment) {
245
- return;
246
- }
247
- const { lastText, annotations, error } = options || {};
248
- if (lastText) {
249
- segment.content += lastText;
250
- }
251
- if (segment.type === "tool-input" && typeof segment.content === "object") {
252
- try {
253
- segment.content.input = JSON.parse(segment.content.input);
254
- }
255
- catch {
256
- // leave as-is if not JSON
257
- }
258
- }
259
- this.llmobs.annotate(segment.span, {
260
- outputData: segment.content,
261
- ...annotations,
262
- ...{ error },
263
- });
264
- segment.span.finish();
265
- this.currentSegment = undefined;
266
- }
267
- startStepSpan(options) {
268
- this.finishSegment();
269
- this.stepSpan = this.llmobs.startActiveSpan({
270
- kind: "llm",
271
- name: "ai.streamText.step",
272
- modelName: this.modelName,
273
- modelProvider: this.modelProvider,
274
- });
275
- this.llmobs.annotate(this.stepSpan, {
276
- inputData: formatInputData(options.inputMessages, this.tools),
277
- tags: {
278
- stepNumber: options.stepNumber,
279
- modelProviderDetailed: this.modelProviderDetailed,
280
- },
281
- });
282
- }
283
- finishStepSpan(options) {
284
- if (!this.stepSpan) {
285
- return;
286
- }
287
- this.finishSegment({ ...options });
288
- const { result, annotations, error } = options || {};
289
- const resultAnnotations = {};
290
- if (result) {
291
- resultAnnotations.outputData = formatOutputData(result, this.tools);
292
- resultAnnotations.metrics = compileMetrics([result]);
293
- }
294
- this.llmobs.annotate(this.stepSpan, {
295
- ...resultAnnotations,
296
- ...annotations,
297
- ...{ error },
298
- });
299
- this.stepSpan.finish();
300
- this.stepSpan = undefined;
301
- }
302
- startFullSpan(options) {
303
- const { messages, providerOptions } = options || {};
304
- this.fullSpan = this.llmobs.startActiveSpan({
305
- kind: "workflow",
306
- name: "ai.streamText",
307
- modelName: this.modelName,
308
- modelProvider: this.modelProvider,
309
- });
310
- const userPrompt = typeof messages === "string" ? messages : messages?.at(-1)?.content;
311
- const inputData = safeJsonStringify(userPrompt);
312
- this.llmobs.annotate(this.fullSpan, {
313
- inputData,
314
- metadata: {
315
- ...providerOptions,
316
- },
317
- tags: {
318
- modelProviderDetailed: this.modelProviderDetailed,
319
- },
320
- });
321
- }
322
- finishFullSpan(options) {
323
- if (!this.fullSpan) {
324
- return;
325
- }
326
- this.finishStepSpan({ ...options });
327
- const { finalResult, annotations, error } = options || {};
328
- const resultAnnotations = {};
329
- if (finalResult) {
330
- const lastMessage = formatOutputData(finalResult, this.tools).at(-1);
331
- resultAnnotations.outputData = lastMessage?.content;
332
- resultAnnotations.metadata = finalResult.providerMetadata
333
- ? {
334
- provider: safeJsonStringify(finalResult.providerMetadata),
335
- }
336
- : {};
337
- }
338
- this.llmobs.annotate(this.fullSpan, {
339
- ...resultAnnotations,
340
- ...annotations,
341
- ...{ error },
342
- });
343
- this.fullSpan.finish();
344
- this.fullSpan = undefined;
345
- }
346
- setModel(model) {
347
- const { modelName, modelProvider, modelProviderDetailed } = parseModelConfig(model);
348
- this.modelName = modelName;
349
- this.modelProvider = modelProvider;
350
- this.modelProviderDetailed = modelProviderDetailed;
351
- }
352
- }
353
- function parseModelConfig(model) {
354
- let modelName = typeof model === "string" ? model : model.modelId;
355
- if (modelName.startsWith("claude-4-sonnet")) {
356
- // Normalize naming for consistency with models.dev
357
- modelName = modelName.replace("claude-4-sonnet", "claude-sonnet-4");
358
- }
359
- const modelProviderDetailed = typeof model === "string" ? undefined : model.provider;
360
- const modelProvider = modelProviderDetailed?.split(".")[0];
361
- return { modelName, modelProvider, modelProviderDetailed };
362
- }
363
- function compileMetrics(steps) {
364
- const metrics = {};
365
- metrics.toolCallCount = 0;
366
- metrics.staticToolCallCount = 0;
367
- metrics.dynamicToolCallCount = 0;
368
- metrics.filesGeneratedCount = 0;
369
- metrics.stepCount = steps.length;
370
- steps.forEach((step) => {
371
- const usage = step.usage;
372
- if (usage.inputTokens != undefined) {
373
- metrics.inputTokens = (metrics.inputTokens ?? 0) + usage.inputTokens;
374
- }
375
- if (usage.outputTokens != undefined) {
376
- metrics.outputTokens = (metrics.outputTokens ?? 0) + usage.outputTokens;
377
- }
378
- if (usage.totalTokens != undefined) {
379
- metrics.totalTokens = (metrics.totalTokens ?? 0) + usage.totalTokens;
380
- }
381
- if (usage.reasoningTokens != undefined) {
382
- metrics.reasoningTokens =
383
- (metrics.reasoningTokens ?? 0) + usage.reasoningTokens;
384
- }
385
- if (usage.cachedInputTokens != undefined) {
386
- metrics.cachedInputTokens =
387
- (metrics.cachedInputTokens ?? 0) + usage.cachedInputTokens;
388
- }
389
- metrics.toolCallCount += step.toolCalls.length;
390
- metrics.staticToolCallCount += step.staticToolCalls.length;
391
- metrics.dynamicToolCallCount += step.dynamicToolCalls.length;
392
- metrics.filesGeneratedCount += step.files.length;
393
- });
394
- return metrics;
395
- }
396
- function formatInputData(input, toolSet) {
397
- if (!input)
398
- return undefined;
399
- if (typeof input === "string") {
400
- return [{ role: "user", content: input }];
401
- }
402
- const messages = [];
403
- input.forEach((m) => {
404
- if (m.role === "system") {
405
- messages.push({
406
- role: "system",
407
- content: m.content,
408
- });
409
- }
410
- else if (m.role === "user") {
411
- if (!Array.isArray(m.content)) {
412
- messages.push({
413
- role: "user",
414
- content: m.content,
415
- });
416
- }
417
- else {
418
- formatContent(m.content, toolSet, messages.pop()).forEach((m) => {
419
- messages.push({
420
- ...m,
421
- role: "user",
422
- });
423
- });
424
- }
425
- }
426
- else if (m.role === "assistant") {
427
- if (!Array.isArray(m.content)) {
428
- messages.push({
429
- role: "text",
430
- content: m.content,
431
- });
432
- }
433
- else {
434
- formatContent(m.content, toolSet, messages.pop()).forEach((m) => {
435
- messages.push({
436
- ...m,
437
- });
438
- });
439
- }
440
- }
441
- else if (m.role === "tool") {
442
- formatContent(m.content, toolSet, messages.pop()).forEach((m) => {
443
- messages.push({
444
- ...m,
445
- });
446
- });
447
- }
448
- });
449
- return messages;
450
- }
451
- function formatOutputData(result, toolSet) {
452
- return formatContent(result.content, toolSet);
453
- }
454
- function formatContent(parts, toolSet, lastMessage) {
455
- const messages = lastMessage ? [lastMessage] : [];
456
- parts.forEach((part) => {
457
- if (part.type === "reasoning") {
458
- messages.push({
459
- role: "reasoning",
460
- content: part.text,
461
- });
462
- }
463
- else if (part.type === "text") {
464
- messages.push({
465
- role: "text",
466
- content: part.text,
467
- });
468
- }
469
- else if (part.type === "tool-call") {
470
- const message = messages.pop() ?? {
471
- role: "tool",
472
- toolId: part.toolCallId,
473
- content: "",
474
- };
475
- if (!message.toolCalls) {
476
- message.toolCalls = [];
477
- }
478
- const [type, name] = part.toolName.split("_", 1);
479
- const toolCall = {
480
- name: name ?? part.toolName,
481
- arguments: asDictionary(part.input) ?? {},
482
- toolId: part.toolCallId,
483
- type,
484
- };
485
- message.toolCalls.push(toolCall);
486
- messages.push(message);
487
- }
488
- else if (part.type === "tool-result") {
489
- const { toolName } = part;
490
- const tool = toolSet?.[toolName];
491
- let output;
492
- if (tool?.toModelOutput) {
493
- output = tool.toModelOutput(part.output);
494
- }
495
- else {
496
- output = part.output;
497
- }
498
- messages.push({
499
- role: "tool",
500
- toolId: part.toolCallId,
501
- content: stringifyToolOutput(output),
502
- });
503
- }
504
- else if (part.type === "tool-error") {
505
- const { error } = part;
506
- messages.push({
507
- role: "tool",
508
- toolId: part.toolCallId,
509
- content: safeJsonStringify({
510
- error,
511
- }),
512
- });
513
- }
514
- else if (part.type === "file") {
515
- messages.push({
516
- role: "file",
517
- content: `Generated file`,
518
- });
519
- }
520
- else if (part.type === "source") {
521
- messages.push({
522
- role: "source",
523
- content: `Retrieved source: ${part.title}`,
524
- });
525
- }
526
- else if (part.type === "image") {
527
- messages.push({
528
- role: "image",
529
- content: `Generated image`,
530
- });
531
- }
532
- });
533
- return messages;
534
- }
535
- function stringifyToolOutput(output) {
536
- if (typeof output !== "object" || output === null || !("type" in output)) {
537
- return typeof output == "string" ? output : safeJsonStringify(output);
538
- }
539
- const { type, value } = output;
540
- if (type == "text") {
541
- return value;
542
- }
543
- else if (type == "error-text") {
544
- return `ERROR: ${value}`;
545
- }
546
- else if (type == "json") {
547
- return safeJsonStringify(value);
548
- }
549
- else if (type == "error-json") {
550
- return safeJsonStringify({ error: value });
551
- }
552
- else {
553
- return value
554
- .filter((v) => v.type === "text")
555
- .map((v) => v.text)
556
- .join();
557
- }
558
- }
559
- function asDictionary(value) {
560
- if (value && typeof value === "object" && !Array.isArray(value)) {
561
- return value;
562
- }
563
- return undefined;
564
- }
565
- function wrapStream(source, onError, onFinally) {
566
- const iterator = source[Symbol.asyncIterator]();
567
- let done = false;
568
- const stream = new ReadableStream({
569
- async pull(controller) {
570
- try {
571
- const { value, done: finished } = await iterator.next();
572
- if (finished) {
573
- done = true;
574
- controller.close();
575
- await onFinally();
576
- }
577
- else {
578
- controller.enqueue(value);
579
- }
580
- }
581
- catch (err) {
582
- await onError(err);
583
- controller.error(err);
584
- await onFinally();
585
- }
586
- },
587
- async cancel(reason) {
588
- try {
589
- await iterator.throw?.(reason);
590
- }
591
- finally {
592
- if (!done) {
593
- done = true;
594
- await onFinally();
595
- }
596
- }
597
- },
598
- });
599
- return stream;
600
- }
601
- //# sourceMappingURL=stream-text.js.map