@superblocksteam/vite-plugin-file-sync 2.0.41-next.5 → 2.0.41-next.51

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 (273) 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 +50 -21
  4. package/dist/ai-service/agent/apis-system-prompt.js.map +1 -1
  5. package/dist/ai-service/agent/apis.d.ts +10 -0
  6. package/dist/ai-service/agent/apis.d.ts.map +1 -1
  7. package/dist/ai-service/agent/apis.js +25 -3
  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 +5 -2
  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 +24 -23
  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 +7 -12
  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 +23 -2
  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 +4 -9
  24. package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
  25. package/dist/ai-service/agent/tools/build-set-api-triggers.d.ts +27 -0
  26. package/dist/ai-service/agent/tools/build-set-api-triggers.d.ts.map +1 -0
  27. package/dist/ai-service/agent/tools/build-set-api-triggers.js +265 -0
  28. package/dist/ai-service/agent/tools/build-set-api-triggers.js.map +1 -0
  29. package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
  30. package/dist/ai-service/agent/tools/build-write-file.js +4 -9
  31. package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
  32. package/dist/ai-service/agent/tools/debug-cache.d.ts +95 -13
  33. package/dist/ai-service/agent/tools/debug-cache.d.ts.map +1 -1
  34. package/dist/ai-service/agent/tools/debug-cache.js +215 -38
  35. package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
  36. package/dist/ai-service/agent/tools/index.d.ts +1 -0
  37. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  38. package/dist/ai-service/agent/tools/index.js +1 -0
  39. package/dist/ai-service/agent/tools/index.js.map +1 -1
  40. package/dist/ai-service/agent/tools.d.ts +22 -1
  41. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  42. package/dist/ai-service/agent/tools.js +3 -1
  43. package/dist/ai-service/agent/tools.js.map +1 -1
  44. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  45. package/dist/ai-service/agent/utils.js +170 -159
  46. package/dist/ai-service/agent/utils.js.map +1 -1
  47. package/dist/ai-service/app-interface/file-system-interface.d.ts.map +1 -1
  48. package/dist/ai-service/app-interface/file-system-interface.js +117 -68
  49. package/dist/ai-service/app-interface/file-system-interface.js.map +1 -1
  50. package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
  51. package/dist/ai-service/app-interface/linter.js +103 -54
  52. package/dist/ai-service/app-interface/linter.js.map +1 -1
  53. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  54. package/dist/ai-service/app-interface/shell.js +227 -160
  55. package/dist/ai-service/app-interface/shell.js.map +1 -1
  56. package/dist/ai-service/artifacts/bolt.d.ts.map +1 -1
  57. package/dist/ai-service/artifacts/bolt.js +88 -30
  58. package/dist/ai-service/artifacts/bolt.js.map +1 -1
  59. package/dist/ai-service/chat/chat-session-store.d.ts +12 -2
  60. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  61. package/dist/ai-service/chat/chat-session-store.js +45 -1
  62. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  63. package/dist/ai-service/chat/extract-history.d.ts +3 -1
  64. package/dist/ai-service/chat/extract-history.d.ts.map +1 -1
  65. package/dist/ai-service/chat/extract-history.js +6 -1
  66. package/dist/ai-service/chat/extract-history.js.map +1 -1
  67. package/dist/ai-service/context/app-context.d.ts.map +1 -1
  68. package/dist/ai-service/context/app-context.js +305 -241
  69. package/dist/ai-service/context/app-context.js.map +1 -1
  70. package/dist/ai-service/evals/content-matchers/index.d.ts.map +1 -1
  71. package/dist/ai-service/evals/content-matchers/index.js +1 -0
  72. package/dist/ai-service/evals/content-matchers/index.js.map +1 -1
  73. package/dist/ai-service/index.d.ts +3 -0
  74. package/dist/ai-service/index.d.ts.map +1 -1
  75. package/dist/ai-service/index.js +105 -71
  76. package/dist/ai-service/index.js.map +1 -1
  77. package/dist/ai-service/integration-validator.d.ts +1 -1
  78. package/dist/ai-service/integration-validator.d.ts.map +1 -1
  79. package/dist/ai-service/integration-validator.js +6 -3
  80. package/dist/ai-service/integration-validator.js.map +1 -1
  81. package/dist/ai-service/integrations/metadata/database.d.ts.map +1 -1
  82. package/dist/ai-service/integrations/metadata/database.js +1 -1
  83. package/dist/ai-service/integrations/metadata/database.js.map +1 -1
  84. package/dist/ai-service/integrations/metadata/graphql-based.js +1 -1
  85. package/dist/ai-service/integrations/metadata/graphql-based.js.map +1 -1
  86. package/dist/ai-service/integrations/metadata/open-api.js +1 -1
  87. package/dist/ai-service/integrations/metadata/open-api.js.map +1 -1
  88. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  89. package/dist/ai-service/integrations/store.js +135 -74
  90. package/dist/ai-service/integrations/store.js.map +1 -1
  91. package/dist/ai-service/llmobs/helpers.d.ts +20 -0
  92. package/dist/ai-service/llmobs/helpers.d.ts.map +1 -0
  93. package/dist/ai-service/llmobs/helpers.js +130 -0
  94. package/dist/ai-service/llmobs/helpers.js.map +1 -0
  95. package/dist/ai-service/llmobs/index.d.ts +8 -0
  96. package/dist/ai-service/llmobs/index.d.ts.map +1 -0
  97. package/dist/ai-service/llmobs/index.js +7 -0
  98. package/dist/ai-service/llmobs/index.js.map +1 -0
  99. package/dist/ai-service/llmobs/middleware/stream-text.d.ts +60 -0
  100. package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -0
  101. package/dist/ai-service/llmobs/middleware/stream-text.js +601 -0
  102. package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -0
  103. package/dist/ai-service/llmobs/tracer.d.ts +95 -0
  104. package/dist/ai-service/llmobs/tracer.d.ts.map +1 -0
  105. package/dist/ai-service/llmobs/tracer.js +341 -0
  106. package/dist/ai-service/llmobs/tracer.js.map +1 -0
  107. package/dist/ai-service/llmobs/types.d.ts +47 -0
  108. package/dist/ai-service/llmobs/types.d.ts.map +1 -0
  109. package/dist/ai-service/llmobs/types.js +2 -0
  110. package/dist/ai-service/llmobs/types.js.map +1 -0
  111. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.d.ts +3 -1
  112. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.d.ts.map +1 -1
  113. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.js +5 -3
  114. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.js.map +1 -1
  115. package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.d.ts +3 -1
  116. package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.d.ts.map +1 -1
  117. package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.js +3 -1
  118. package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.js.map +1 -1
  119. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ButtonPropsDocs.js +1 -1
  120. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/CheckboxPropsDocs.js +1 -1
  121. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ColumnPropsDocs.js +1 -1
  122. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ContainerPropsDocs.js +1 -1
  123. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.js +1 -1
  124. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DropdownPropsDocs.js +1 -1
  125. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/IconPropsDocs.js +1 -1
  126. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ImagePropsDocs.js +1 -1
  127. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.js +1 -1
  128. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ModalPropsDocs.js +1 -1
  129. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/PagePropsDocs.js +1 -1
  130. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SectionPropsDocs.js +1 -1
  131. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SlideoutPropsDocs.js +1 -1
  132. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SwitchPropsDocs.js +1 -1
  133. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.js +1 -1
  134. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.js +1 -1
  135. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/Dim.js +1 -1
  136. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/EventFlow.js +1 -1
  137. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/TextStyleWithVariant.js +1 -1
  138. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.js +1 -1
  139. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.js +1 -1
  140. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-components-rules.js +1 -1
  141. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-custom-components.js +1 -1
  142. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-data-filtering.js +1 -1
  143. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-event-flow.js +1 -1
  144. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-forms.js +1 -1
  145. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-layouts.js +1 -1
  146. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-page.js +1 -1
  147. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-rbac.js +1 -1
  148. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-routes.js +1 -1
  149. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-state.js +1 -1
  150. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming-chakra-new.js +1 -1
  151. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-base.js +1 -1
  152. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.js +1 -1
  153. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-specific-edit.js +1 -1
  154. package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.d.ts +3 -1
  155. package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.d.ts.map +1 -1
  156. package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.js +4 -2
  157. package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.js.map +1 -1
  158. package/dist/ai-service/prompt-builder-service/utils/markdown-loader.d.ts +3 -1
  159. package/dist/ai-service/prompt-builder-service/utils/markdown-loader.d.ts.map +1 -1
  160. package/dist/ai-service/prompt-builder-service/utils/markdown-loader.js +3 -1
  161. package/dist/ai-service/prompt-builder-service/utils/markdown-loader.js.map +1 -1
  162. package/dist/ai-service/state-machine/clark-fsm.d.ts +16 -4
  163. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  164. package/dist/ai-service/state-machine/clark-fsm.js +47 -0
  165. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  166. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  167. package/dist/ai-service/state-machine/handlers/agent-planning.js +6 -6
  168. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  169. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  170. package/dist/ai-service/state-machine/handlers/awaiting-user.js +5 -4
  171. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  172. package/dist/ai-service/state-machine/handlers/idle.js +1 -1
  173. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  174. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  175. package/dist/ai-service/state-machine/handlers/llm-generating.js +274 -266
  176. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  177. package/dist/ai-service/state-machine/handlers/post-processing.js +2 -0
  178. package/dist/ai-service/state-machine/handlers/post-processing.js.map +1 -1
  179. package/dist/ai-service/state-machine/handlers/simple-prompt-builder.d.ts.map +1 -1
  180. package/dist/ai-service/state-machine/handlers/simple-prompt-builder.js +54 -19
  181. package/dist/ai-service/state-machine/handlers/simple-prompt-builder.js.map +1 -1
  182. package/dist/ai-service/state-machine/traced-fsm.d.ts +41 -70
  183. package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
  184. package/dist/ai-service/state-machine/traced-fsm.js +66 -173
  185. package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
  186. package/dist/ai-service/template-renderer.d.ts.map +1 -1
  187. package/dist/ai-service/template-renderer.js +102 -56
  188. package/dist/ai-service/template-renderer.js.map +1 -1
  189. package/dist/ai-service/test-utils/dd-trace-helpers.d.ts +1 -0
  190. package/dist/ai-service/test-utils/dd-trace-helpers.d.ts.map +1 -1
  191. package/dist/ai-service/test-utils/dd-trace-helpers.js.map +1 -1
  192. package/dist/ai-service/test-utils/span-interceptor.d.ts +74 -0
  193. package/dist/ai-service/test-utils/span-interceptor.d.ts.map +1 -0
  194. package/dist/ai-service/test-utils/span-interceptor.js +272 -0
  195. package/dist/ai-service/test-utils/span-interceptor.js.map +1 -0
  196. package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts +2 -1
  197. package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
  198. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +120 -63
  199. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
  200. package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts.map +1 -1
  201. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +97 -47
  202. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -1
  203. package/dist/ai-service/transform/remove-api-builder-imports/transformer.d.ts.map +1 -1
  204. package/dist/ai-service/transform/remove-api-builder-imports/transformer.js +88 -37
  205. package/dist/ai-service/transform/remove-api-builder-imports/transformer.js.map +1 -1
  206. package/dist/ai-service/transform/shared.d.ts +4 -2
  207. package/dist/ai-service/transform/shared.d.ts.map +1 -1
  208. package/dist/ai-service/transform/shared.js +6 -3
  209. package/dist/ai-service/transform/shared.js.map +1 -1
  210. package/dist/ai-service/transform/workaround-missing-sbapi/transformer.d.ts.map +1 -1
  211. package/dist/ai-service/transform/workaround-missing-sbapi/transformer.js +77 -26
  212. package/dist/ai-service/transform/workaround-missing-sbapi/transformer.js.map +1 -1
  213. package/dist/ai-service/types.d.ts +2 -0
  214. package/dist/ai-service/types.d.ts.map +1 -1
  215. package/dist/ai-service/types.js.map +1 -1
  216. package/dist/ai-service/util/safe-stringify.d.ts +2 -0
  217. package/dist/ai-service/util/safe-stringify.d.ts.map +1 -0
  218. package/dist/ai-service/util/safe-stringify.js +68 -0
  219. package/dist/ai-service/util/safe-stringify.js.map +1 -0
  220. package/dist/binding-extraction/extract-identifiers.d.ts +5 -2
  221. package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
  222. package/dist/binding-extraction/extract-identifiers.js +7 -4
  223. package/dist/binding-extraction/extract-identifiers.js.map +1 -1
  224. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  225. package/dist/file-sync-vite-plugin.js +92 -1
  226. package/dist/file-sync-vite-plugin.js.map +1 -1
  227. package/dist/file-system-helpers.d.ts +3 -0
  228. package/dist/file-system-helpers.d.ts.map +1 -1
  229. package/dist/file-system-helpers.js +12 -0
  230. package/dist/file-system-helpers.js.map +1 -1
  231. package/dist/file-system-manager.d.ts.map +1 -1
  232. package/dist/file-system-manager.js +53 -1
  233. package/dist/file-system-manager.js.map +1 -1
  234. package/dist/parsing/entity/to-value-entity.d.ts.map +1 -1
  235. package/dist/parsing/entity/to-value-entity.js +1 -0
  236. package/dist/parsing/entity/to-value-entity.js.map +1 -1
  237. package/dist/parsing/jsx.d.ts +4 -0
  238. package/dist/parsing/jsx.d.ts.map +1 -1
  239. package/dist/parsing/jsx.js +33 -0
  240. package/dist/parsing/jsx.js.map +1 -1
  241. package/dist/parsing/page.d.ts.map +1 -1
  242. package/dist/parsing/page.js +48 -3
  243. package/dist/parsing/page.js.map +1 -1
  244. package/dist/parsing/properties.d.ts.map +1 -1
  245. package/dist/parsing/properties.js +10 -0
  246. package/dist/parsing/properties.js.map +1 -1
  247. package/dist/routing.d.ts.map +1 -1
  248. package/dist/routing.js +15 -16
  249. package/dist/routing.js.map +1 -1
  250. package/dist/socket-manager.d.ts.map +1 -1
  251. package/dist/socket-manager.js +3 -1
  252. package/dist/socket-manager.js.map +1 -1
  253. package/dist/source-tracker.d.ts +4 -0
  254. package/dist/source-tracker.d.ts.map +1 -1
  255. package/dist/source-tracker.js +132 -5
  256. package/dist/source-tracker.js.map +1 -1
  257. package/dist/sync-service/list-dir.d.ts +1 -1
  258. package/dist/sync-service/list-dir.d.ts.map +1 -1
  259. package/dist/sync-service/list-dir.js +3 -9
  260. package/dist/sync-service/list-dir.js.map +1 -1
  261. package/dist/util/logger.d.ts +9 -0
  262. package/dist/util/logger.d.ts.map +1 -1
  263. package/dist/util/logger.js +64 -7
  264. package/dist/util/logger.js.map +1 -1
  265. package/package.json +9 -7
  266. package/dist/ai-service/llmobs.d.ts +0 -154
  267. package/dist/ai-service/llmobs.d.ts.map +0 -1
  268. package/dist/ai-service/llmobs.js +0 -216
  269. package/dist/ai-service/llmobs.js.map +0 -1
  270. package/dist/ai-service/util/ddog-llmobs.d.ts +0 -20
  271. package/dist/ai-service/util/ddog-llmobs.d.ts.map +0 -1
  272. package/dist/ai-service/util/ddog-llmobs.js +0 -197
  273. package/dist/ai-service/util/ddog-llmobs.js.map +0 -1
@@ -0,0 +1,601 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-text.js","sourceRoot":"","sources":["../../../../src/ai-service/llmobs/middleware/stream-text.ts"],"names":[],"mappings":"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"}