@superblocksteam/vite-plugin-file-sync 2.0.59-next.2 → 2.0.59-next.3

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 (277) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +10 -1
  3. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  4. package/dist/ai-service/agent/subagents/apis/examples.d.ts.map +1 -1
  5. package/dist/ai-service/agent/subagents/apis/examples.js +137 -10
  6. package/dist/ai-service/agent/subagents/apis/examples.js.map +1 -1
  7. package/dist/ai-service/agent/subagents/apis/static-analysis.d.ts.map +1 -1
  8. package/dist/ai-service/agent/subagents/apis/static-analysis.js +14 -7
  9. package/dist/ai-service/agent/subagents/apis/static-analysis.js.map +1 -1
  10. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  11. package/dist/ai-service/agent/tool-message-utils.js +6 -2
  12. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  13. package/dist/ai-service/agent/tools/apis/analysis.d.ts +9 -0
  14. package/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -0
  15. package/dist/ai-service/agent/tools/apis/analysis.js +357 -0
  16. package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -0
  17. package/dist/ai-service/agent/{subagents → tools}/apis/api-executor.d.ts +35 -10
  18. package/dist/ai-service/agent/tools/apis/api-executor.d.ts.map +1 -0
  19. package/dist/ai-service/agent/{subagents → tools}/apis/api-executor.js +179 -94
  20. package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -0
  21. package/dist/ai-service/agent/tools/apis/api-source.d.ts +19 -0
  22. package/dist/ai-service/agent/tools/apis/api-source.d.ts.map +1 -0
  23. package/dist/ai-service/agent/tools/apis/api-source.js +73 -0
  24. package/dist/ai-service/agent/tools/apis/api-source.js.map +1 -0
  25. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts +51 -0
  26. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -0
  27. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +510 -0
  28. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -0
  29. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts +32 -0
  30. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -0
  31. package/dist/ai-service/agent/tools/apis/build-api-artifact.js +313 -0
  32. package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -0
  33. package/dist/ai-service/agent/tools/apis/build-api.d.ts +1 -10
  34. package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
  35. package/dist/ai-service/agent/tools/apis/build-api.js +26 -238
  36. package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
  37. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +11 -0
  38. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -0
  39. package/dist/ai-service/agent/tools/apis/get-api-docs.js +1809 -0
  40. package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -0
  41. package/dist/ai-service/agent/tools/apis/integration-types.d.ts +37 -0
  42. package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -0
  43. package/dist/ai-service/agent/tools/apis/integration-types.js +697 -0
  44. package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -0
  45. package/dist/ai-service/agent/tools/apis/test-api.d.ts +25 -0
  46. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -0
  47. package/dist/ai-service/agent/tools/apis/test-api.js +194 -0
  48. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -0
  49. package/dist/ai-service/agent/tools/apis/write-api.d.ts +11 -0
  50. package/dist/ai-service/agent/tools/apis/write-api.d.ts.map +1 -0
  51. package/dist/ai-service/agent/tools/apis/write-api.js +41 -0
  52. package/dist/ai-service/agent/tools/apis/write-api.js.map +1 -0
  53. package/dist/ai-service/agent/tools/build-read-files.js +2 -2
  54. package/dist/ai-service/agent/tools/build-read-files.js.map +1 -1
  55. package/dist/ai-service/agent/tools.d.ts +2 -5
  56. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  57. package/dist/ai-service/agent/tools.js +51 -22
  58. package/dist/ai-service/agent/tools.js.map +1 -1
  59. package/dist/ai-service/agent/tools2/access-control.d.ts +1 -0
  60. package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
  61. package/dist/ai-service/agent/tools2/access-control.js +15 -13
  62. package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
  63. package/dist/ai-service/agent/tools2/registry.d.ts +2 -1
  64. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  65. package/dist/ai-service/agent/tools2/registry.js +4 -3
  66. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  67. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +2 -1
  68. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  69. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +103 -88
  70. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  71. package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
  72. package/dist/ai-service/agent/tools2/tools/grep-metadata.js +25 -4
  73. package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
  74. package/dist/ai-service/agent/tools2/types.d.ts +1 -1
  75. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  76. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  77. package/dist/ai-service/agent/tools2/utils.d.ts.map +1 -1
  78. package/dist/ai-service/agent/tools2/utils.js +4 -1
  79. package/dist/ai-service/agent/tools2/utils.js.map +1 -1
  80. package/dist/ai-service/agent/utils.d.ts +1 -3
  81. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  82. package/dist/ai-service/agent/utils.js +44 -4
  83. package/dist/ai-service/agent/utils.js.map +1 -1
  84. package/dist/ai-service/app-interface/shell.d.ts +5 -0
  85. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  86. package/dist/ai-service/app-interface/shell.js +17 -2
  87. package/dist/ai-service/app-interface/shell.js.map +1 -1
  88. package/dist/ai-service/chat/chat-session-store.d.ts +7 -0
  89. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  90. package/dist/ai-service/chat/chat-session-store.js +26 -0
  91. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  92. package/dist/ai-service/const.d.ts +2 -1
  93. package/dist/ai-service/const.d.ts.map +1 -1
  94. package/dist/ai-service/const.js +1 -0
  95. package/dist/ai-service/const.js.map +1 -1
  96. package/dist/ai-service/index.d.ts +5 -1
  97. package/dist/ai-service/index.d.ts.map +1 -1
  98. package/dist/ai-service/index.js +55 -7
  99. package/dist/ai-service/index.js.map +1 -1
  100. package/dist/ai-service/integrations/metadata-storage/index.d.ts +10 -0
  101. package/dist/ai-service/integrations/metadata-storage/index.d.ts.map +1 -1
  102. package/dist/ai-service/integrations/metadata-storage/local.d.ts +4 -2
  103. package/dist/ai-service/integrations/metadata-storage/local.d.ts.map +1 -1
  104. package/dist/ai-service/integrations/metadata-storage/local.js +35 -9
  105. package/dist/ai-service/integrations/metadata-storage/local.js.map +1 -1
  106. package/dist/ai-service/integrations/store.d.ts +27 -2
  107. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  108. package/dist/ai-service/integrations/store.js +129 -62
  109. package/dist/ai-service/integrations/store.js.map +1 -1
  110. package/dist/ai-service/llm/client.d.ts +123 -0
  111. package/dist/ai-service/llm/client.d.ts.map +1 -0
  112. package/dist/ai-service/llm/client.js +168 -0
  113. package/dist/ai-service/llm/client.js.map +1 -0
  114. package/dist/ai-service/llm/context/context-handle.d.ts +4 -4
  115. package/dist/ai-service/llm/context/context-handle.d.ts.map +1 -1
  116. package/dist/ai-service/llm/context/context-handle.js +7 -3
  117. package/dist/ai-service/llm/context/context-handle.js.map +1 -1
  118. package/dist/ai-service/llm/context/context.d.ts +28 -0
  119. package/dist/ai-service/llm/context/context.d.ts.map +1 -1
  120. package/dist/ai-service/llm/context/context.js +117 -0
  121. package/dist/ai-service/llm/context/context.js.map +1 -1
  122. package/dist/ai-service/llm/context/manager.d.ts +22 -2
  123. package/dist/ai-service/llm/context/manager.d.ts.map +1 -1
  124. package/dist/ai-service/llm/context/manager.js +86 -13
  125. package/dist/ai-service/llm/context/manager.js.map +1 -1
  126. package/dist/ai-service/llm/context/storage/index.d.ts +1 -0
  127. package/dist/ai-service/llm/context/storage/index.d.ts.map +1 -1
  128. package/dist/ai-service/llm/context/storage/local.d.ts +1 -0
  129. package/dist/ai-service/llm/context/storage/local.d.ts.map +1 -1
  130. package/dist/ai-service/llm/context/storage/local.js +13 -1
  131. package/dist/ai-service/llm/context/storage/local.js.map +1 -1
  132. package/dist/ai-service/llm/error.d.ts +14 -4
  133. package/dist/ai-service/llm/error.d.ts.map +1 -1
  134. package/dist/ai-service/llm/error.js +49 -4
  135. package/dist/ai-service/llm/error.js.map +1 -1
  136. package/dist/ai-service/llm/interaction/adapters/vercel.d.ts +67 -0
  137. package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -0
  138. package/dist/ai-service/llm/interaction/adapters/vercel.js +110 -0
  139. package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -0
  140. package/dist/ai-service/llm/interaction/compose.d.ts +71 -0
  141. package/dist/ai-service/llm/interaction/compose.d.ts.map +1 -0
  142. package/dist/ai-service/llm/interaction/compose.js +88 -0
  143. package/dist/ai-service/llm/interaction/compose.js.map +1 -0
  144. package/dist/ai-service/llm/interaction/index.d.ts +68 -0
  145. package/dist/ai-service/llm/interaction/index.d.ts.map +1 -0
  146. package/dist/ai-service/llm/interaction/index.js +70 -0
  147. package/dist/ai-service/llm/interaction/index.js.map +1 -0
  148. package/dist/ai-service/llm/interaction/middleware.d.ts +52 -0
  149. package/dist/ai-service/llm/interaction/middleware.d.ts.map +1 -0
  150. package/dist/ai-service/llm/interaction/middleware.js +17 -0
  151. package/dist/ai-service/llm/interaction/middleware.js.map +1 -0
  152. package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts +45 -0
  153. package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts.map +1 -0
  154. package/dist/ai-service/llm/interaction/middlewares/llmobs.js +85 -0
  155. package/dist/ai-service/llm/interaction/middlewares/llmobs.js.map +1 -0
  156. package/dist/ai-service/llm/interaction/middlewares/logging.d.ts +88 -0
  157. package/dist/ai-service/llm/interaction/middlewares/logging.d.ts.map +1 -0
  158. package/dist/ai-service/llm/interaction/middlewares/logging.js +238 -0
  159. package/dist/ai-service/llm/interaction/middlewares/logging.js.map +1 -0
  160. package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts +47 -0
  161. package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts.map +1 -0
  162. package/dist/ai-service/llm/interaction/middlewares/profiler.js +183 -0
  163. package/dist/ai-service/llm/interaction/middlewares/profiler.js.map +1 -0
  164. package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts +121 -0
  165. package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts.map +1 -0
  166. package/dist/ai-service/llm/interaction/middlewares/stream-retry.js +291 -0
  167. package/dist/ai-service/llm/interaction/middlewares/stream-retry.js.map +1 -0
  168. package/dist/ai-service/llm/interaction/provider.d.ts +158 -0
  169. package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -0
  170. package/dist/ai-service/llm/interaction/provider.js +15 -0
  171. package/dist/ai-service/llm/interaction/provider.js.map +1 -0
  172. package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts +48 -0
  173. package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts.map +1 -0
  174. package/dist/ai-service/llm/interaction/stream-lifecycle.js +131 -0
  175. package/dist/ai-service/llm/interaction/stream-lifecycle.js.map +1 -0
  176. package/dist/ai-service/llm/provider.d.ts +1 -2
  177. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  178. package/dist/ai-service/llm/provider.js +3 -6
  179. package/dist/ai-service/llm/provider.js.map +1 -1
  180. package/dist/ai-service/llmobs/helpers.d.ts +7 -8
  181. package/dist/ai-service/llmobs/helpers.d.ts.map +1 -1
  182. package/dist/ai-service/llmobs/helpers.js +8 -48
  183. package/dist/ai-service/llmobs/helpers.js.map +1 -1
  184. package/dist/ai-service/llmobs/middleware/stream-text.d.ts +19 -21
  185. package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -1
  186. package/dist/ai-service/llmobs/middleware/stream-text.js +98 -106
  187. package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -1
  188. package/dist/ai-service/llmobs/types.d.ts +14 -1
  189. package/dist/ai-service/llmobs/types.d.ts.map +1 -1
  190. package/dist/ai-service/state-machine/clark-fsm.d.ts +75 -5
  191. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  192. package/dist/ai-service/state-machine/clark-fsm.js +100 -0
  193. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  194. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  195. package/dist/ai-service/state-machine/handlers/agent-planning.js +4 -0
  196. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  197. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  198. package/dist/ai-service/state-machine/handlers/llm-generating.js +91 -456
  199. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  200. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +1 -1
  201. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
  202. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  203. package/dist/ai-service/state-machine/helpers/peer.js +15 -0
  204. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  205. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  206. package/dist/ai-service/state-machine/mocks.js +1 -0
  207. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  208. package/dist/ai-service/types.d.ts +30 -0
  209. package/dist/ai-service/types.d.ts.map +1 -1
  210. package/dist/binding-extraction/extract-identifiers.d.ts +14 -0
  211. package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
  212. package/dist/binding-extraction/extract-identifiers.js +46 -1
  213. package/dist/binding-extraction/extract-identifiers.js.map +1 -1
  214. package/dist/binding-extraction/js-identifiers.d.ts +14 -0
  215. package/dist/binding-extraction/js-identifiers.d.ts.map +1 -1
  216. package/dist/binding-extraction/js-identifiers.js +168 -0
  217. package/dist/binding-extraction/js-identifiers.js.map +1 -1
  218. package/dist/binding-extraction/python-identifiers.d.ts +5 -0
  219. package/dist/binding-extraction/python-identifiers.d.ts.map +1 -1
  220. package/dist/binding-extraction/python-identifiers.js +76 -7
  221. package/dist/binding-extraction/python-identifiers.js.map +1 -1
  222. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  223. package/dist/file-sync-vite-plugin.js +73 -3
  224. package/dist/file-sync-vite-plugin.js.map +1 -1
  225. package/dist/file-system-manager.d.ts.map +1 -1
  226. package/dist/file-system-manager.js +6 -4
  227. package/dist/file-system-manager.js.map +1 -1
  228. package/dist/index.d.ts +1 -1
  229. package/dist/index.d.ts.map +1 -1
  230. package/dist/index.js +1 -1
  231. package/dist/index.js.map +1 -1
  232. package/dist/lock-service/activity-tracker.d.ts +14 -2
  233. package/dist/lock-service/activity-tracker.d.ts.map +1 -1
  234. package/dist/lock-service/activity-tracker.js +43 -6
  235. package/dist/lock-service/activity-tracker.js.map +1 -1
  236. package/dist/lock-service/index.d.ts +13 -2
  237. package/dist/lock-service/index.d.ts.map +1 -1
  238. package/dist/lock-service/index.js +130 -44
  239. package/dist/lock-service/index.js.map +1 -1
  240. package/dist/parsing/jsx.d.ts.map +1 -1
  241. package/dist/parsing/jsx.js +78 -66
  242. package/dist/parsing/jsx.js.map +1 -1
  243. package/dist/socket-manager.js +1 -1
  244. package/dist/socket-manager.js.map +1 -1
  245. package/dist/sync-service/list-dir.d.ts.map +1 -1
  246. package/dist/sync-service/list-dir.js +41 -18
  247. package/dist/sync-service/list-dir.js.map +1 -1
  248. package/dist/vite-plugin-yaml-types.d.ts.map +1 -1
  249. package/dist/vite-plugin-yaml-types.js +2 -4
  250. package/dist/vite-plugin-yaml-types.js.map +1 -1
  251. package/package.json +7 -7
  252. package/dist/ai-service/agent/subagents/apis/api-executor.d.ts.map +0 -1
  253. package/dist/ai-service/agent/subagents/apis/api-executor.js.map +0 -1
  254. package/dist/ai-service/agent/subagents/apis/context.d.ts +0 -12
  255. package/dist/ai-service/agent/subagents/apis/context.d.ts.map +0 -1
  256. package/dist/ai-service/agent/subagents/apis/context.js +0 -18
  257. package/dist/ai-service/agent/subagents/apis/context.js.map +0 -1
  258. package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts +0 -40
  259. package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts.map +0 -1
  260. package/dist/ai-service/agent/subagents/apis/generate-api-source.js +0 -516
  261. package/dist/ai-service/agent/subagents/apis/generate-api-source.js.map +0 -1
  262. package/dist/ai-service/agent/subagents/apis/state.d.ts +0 -49
  263. package/dist/ai-service/agent/subagents/apis/state.d.ts.map +0 -1
  264. package/dist/ai-service/agent/subagents/apis/state.js +0 -25
  265. package/dist/ai-service/agent/subagents/apis/state.js.map +0 -1
  266. package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts +0 -3
  267. package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts.map +0 -1
  268. package/dist/ai-service/agent/subagents/apis/system-prompt.js +0 -1704
  269. package/dist/ai-service/agent/subagents/apis/system-prompt.js.map +0 -1
  270. package/dist/ai-service/agent/tools/apis/finalize-api.d.ts +0 -11
  271. package/dist/ai-service/agent/tools/apis/finalize-api.d.ts.map +0 -1
  272. package/dist/ai-service/agent/tools/apis/finalize-api.js +0 -133
  273. package/dist/ai-service/agent/tools/apis/finalize-api.js.map +0 -1
  274. package/dist/ai-service/llm/middleware/retry.d.ts +0 -112
  275. package/dist/ai-service/llm/middleware/retry.d.ts.map +0 -1
  276. package/dist/ai-service/llm/middleware/retry.js +0 -239
  277. package/dist/ai-service/llm/middleware/retry.js.map +0 -1
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Vercel AI SDK adapter for StreamTextProvider.
3
+ *
4
+ * This adapter bridges our high-level StreamTextProvider interface
5
+ * to the Vercel AI SDK's streamText function. It handles:
6
+ * - Mapping our options to SDK options
7
+ * - Adding onFinally support via stream wrapping
8
+ * - Translating SDK results to our interface
9
+ *
10
+ * This is the only place that depends on Vercel AI SDK internals.
11
+ * All other code (middlewares, etc.) depends only on our interface.
12
+ */
13
+ import { streamText } from "ai";
14
+ import { withStreamLifecycle } from "../stream-lifecycle.js";
15
+ /**
16
+ * Adapter that implements StreamTextProvider using Vercel AI SDK.
17
+ *
18
+ * This class wraps Vercel's streamText function and adds our custom
19
+ * lifecycle management (particularly onFinally support).
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const provider = new VercelStreamTextAdapter();
24
+ * const result = await provider.streamText({
25
+ * model: anthropic('claude-3-5-sonnet-20241022'),
26
+ * messages: [{ role: 'user', content: 'Hello!' }],
27
+ * onFinally: async () => {
28
+ * console.log('Stream consumed!');
29
+ * }
30
+ * });
31
+ *
32
+ * for await (const text of result.textStream) {
33
+ * console.log(text);
34
+ * }
35
+ * // onFinally runs here
36
+ * ```
37
+ */
38
+ export class VercelStreamTextAdapter {
39
+ /**
40
+ * Streams text using Vercel AI SDK with lifecycle management.
41
+ *
42
+ * @param options - Stream options including onFinally hook
43
+ * @returns Promise resolving to stream result
44
+ */
45
+ async streamText(options) {
46
+ // Extract our custom options that SDK doesn't support
47
+ const { onFinally, user, ...rest } = options;
48
+ // Validate that messages are provided (either directly or via user)
49
+ if (!rest.messages && !user) {
50
+ throw new Error("Either messages or user must be provided to streamText");
51
+ }
52
+ // Call Vercel SDK's streamText with proper generic types
53
+ // TOOLS: The tools type parameter from our method signature
54
+ // any, any: OUTPUT and PARTIAL_OUTPUT (we don't use structured outputs)
55
+ const result = streamText({
56
+ model: rest.model,
57
+ messages: rest.messages || (user ? [user] : []),
58
+ system: rest.system,
59
+ tools: rest.tools,
60
+ ...(rest.maxSteps !== undefined && { maxSteps: rest.maxSteps }),
61
+ abortSignal: rest.abortSignal,
62
+ headers: rest.headers,
63
+ providerOptions: rest.providerOptions,
64
+ stopWhen: rest.stopWhen,
65
+ experimental_transform: rest.experimental_transform,
66
+ prepareStep: rest.prepareStep,
67
+ onChunk: rest.onChunk,
68
+ onStepFinish: rest.onStepFinish,
69
+ onFinish: rest.onFinish,
70
+ onError: rest.onError
71
+ ? (event) => {
72
+ const error = event.error instanceof Error
73
+ ? event.error
74
+ : new Error(String(event.error));
75
+ return rest.onError(error);
76
+ }
77
+ : undefined,
78
+ onAbort: rest.onAbort,
79
+ });
80
+ // If no onFinally hook, return result as-is
81
+ if (!onFinally) {
82
+ return result;
83
+ }
84
+ // Wrap streams to add onFinally lifecycle tracking
85
+ return withStreamLifecycle(result, onFinally);
86
+ }
87
+ }
88
+ /**
89
+ * Creates a StreamTextProvider using Vercel AI SDK.
90
+ *
91
+ * Convenience function for creating the adapter.
92
+ *
93
+ * @returns A new Vercel SDK adapter instance
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const provider = createVercelProvider();
98
+ *
99
+ * // Use with middlewares
100
+ * const wrapped = applyMiddleware(
101
+ * provider,
102
+ * contextMiddleware,
103
+ * loggingMiddleware
104
+ * );
105
+ * ```
106
+ */
107
+ export function createVercelProvider() {
108
+ return new VercelStreamTextAdapter();
109
+ }
110
+ //# sourceMappingURL=vercel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/interaction/adapters/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAQ7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,uBAAuB;IAClC;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,OAAiC;QAEjC,sDAAsD;QACtD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAE7C,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,yDAAyD;QACzD,4DAA4D;QAC5D,wEAAwE;QACxE,MAAM,MAAM,GAAG,UAAU,CAAkB;YACzC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAA0B;YACtC,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/D,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACnB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;oBACR,MAAM,KAAK,GACT,KAAK,CAAC,KAAK,YAAY,KAAK;wBAC1B,CAAC,CAAC,KAAK,CAAC,KAAK;wBACb,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrC,OAAO,IAAI,CAAC,OAAQ,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACH,CAAC,CAAC,SAAS;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,mDAAmD;QACnD,OAAO,mBAAmB,CAAQ,MAAM,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,uBAAuB,EAAE,CAAC;AACvC,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Composition utilities for StreamTextProvider middlewares.
3
+ *
4
+ * Provides functions to compose multiple middlewares into a single
5
+ * execution chain, similar to Express.js middleware composition.
6
+ */
7
+ import type { StreamTextProvider, StreamTextMiddleware } from "./middleware.js";
8
+ /**
9
+ * Composes multiple middlewares into a single middleware.
10
+ *
11
+ * Middlewares are applied from left to right (first middleware wraps second,
12
+ * second wraps third, etc.). This means the first middleware in the array
13
+ * is the outermost layer and executes first.
14
+ *
15
+ * @param middlewares - The middlewares to compose
16
+ * @returns A single composed middleware
17
+ *
18
+ * @example
19
+ * const combined = compose(loggingMiddleware, authMiddleware, rateLimitMiddleware);
20
+ * // Execution order:
21
+ * // 1. loggingMiddleware (outermost)
22
+ * // 2. authMiddleware
23
+ * // 3. rateLimitMiddleware (innermost)
24
+ * // 4. actual provider.streamText() call
25
+ */
26
+ export declare function compose(...middlewares: StreamTextMiddleware[]): StreamTextMiddleware;
27
+ /**
28
+ * Applies middlewares to a base StreamTextProvider.
29
+ *
30
+ * This is a convenience function that composes the middlewares and
31
+ * applies them to the base provider in one step.
32
+ *
33
+ * @param baseProvider - The base provider to wrap
34
+ * @param middlewares - The middlewares to apply
35
+ * @returns The wrapped provider with all middlewares applied
36
+ *
37
+ * @example
38
+ * const provider = applyMiddleware(
39
+ * createVercelProvider(),
40
+ * contextMiddleware,
41
+ * loggingMiddleware,
42
+ * profilerMiddleware
43
+ * );
44
+ *
45
+ * // Use the wrapped provider:
46
+ * const result = await provider.streamText({ model, messages, tools });
47
+ */
48
+ export declare function applyMiddleware(baseProvider: StreamTextProvider, ...middlewares: StreamTextMiddleware[]): StreamTextProvider;
49
+ /**
50
+ * Creates a middleware from a simple wrapper function.
51
+ *
52
+ * This is a helper for creating middlewares without implementing
53
+ * the full interface. Useful for simple transformations.
54
+ *
55
+ * @param wrapperFn - A function that wraps the provider
56
+ * @returns A StreamTextMiddleware
57
+ *
58
+ * @example
59
+ * const timingMiddleware = createMiddleware((provider) => {
60
+ * return {
61
+ * async streamText(options) {
62
+ * const start = Date.now();
63
+ * const result = await provider.streamText(options);
64
+ * console.log(`Took ${Date.now() - start}ms`);
65
+ * return result;
66
+ * }
67
+ * };
68
+ * });
69
+ */
70
+ export declare function createMiddleware(wrapperFn: (provider: StreamTextProvider) => StreamTextProvider): StreamTextMiddleware;
71
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/interaction/compose.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEhF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CACrB,GAAG,WAAW,EAAE,oBAAoB,EAAE,GACrC,oBAAoB,CAWtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,kBAAkB,EAChC,GAAG,WAAW,EAAE,oBAAoB,EAAE,GACrC,kBAAkB,CAOpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,kBAAkB,GAC9D,oBAAoB,CAItB"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Composition utilities for StreamTextProvider middlewares.
3
+ *
4
+ * Provides functions to compose multiple middlewares into a single
5
+ * execution chain, similar to Express.js middleware composition.
6
+ */
7
+ /**
8
+ * Composes multiple middlewares into a single middleware.
9
+ *
10
+ * Middlewares are applied from left to right (first middleware wraps second,
11
+ * second wraps third, etc.). This means the first middleware in the array
12
+ * is the outermost layer and executes first.
13
+ *
14
+ * @param middlewares - The middlewares to compose
15
+ * @returns A single composed middleware
16
+ *
17
+ * @example
18
+ * const combined = compose(loggingMiddleware, authMiddleware, rateLimitMiddleware);
19
+ * // Execution order:
20
+ * // 1. loggingMiddleware (outermost)
21
+ * // 2. authMiddleware
22
+ * // 3. rateLimitMiddleware (innermost)
23
+ * // 4. actual provider.streamText() call
24
+ */
25
+ export function compose(...middlewares) {
26
+ return {
27
+ wrap(provider) {
28
+ // Apply middlewares from right to left (innermost to outermost)
29
+ // so that the first middleware in the array becomes the outermost wrapper
30
+ return middlewares.reduceRight((wrappedProvider, middleware) => middleware.wrap(wrappedProvider), provider);
31
+ },
32
+ };
33
+ }
34
+ /**
35
+ * Applies middlewares to a base StreamTextProvider.
36
+ *
37
+ * This is a convenience function that composes the middlewares and
38
+ * applies them to the base provider in one step.
39
+ *
40
+ * @param baseProvider - The base provider to wrap
41
+ * @param middlewares - The middlewares to apply
42
+ * @returns The wrapped provider with all middlewares applied
43
+ *
44
+ * @example
45
+ * const provider = applyMiddleware(
46
+ * createVercelProvider(),
47
+ * contextMiddleware,
48
+ * loggingMiddleware,
49
+ * profilerMiddleware
50
+ * );
51
+ *
52
+ * // Use the wrapped provider:
53
+ * const result = await provider.streamText({ model, messages, tools });
54
+ */
55
+ export function applyMiddleware(baseProvider, ...middlewares) {
56
+ if (middlewares.length === 0) {
57
+ return baseProvider;
58
+ }
59
+ const composed = compose(...middlewares);
60
+ return composed.wrap(baseProvider);
61
+ }
62
+ /**
63
+ * Creates a middleware from a simple wrapper function.
64
+ *
65
+ * This is a helper for creating middlewares without implementing
66
+ * the full interface. Useful for simple transformations.
67
+ *
68
+ * @param wrapperFn - A function that wraps the provider
69
+ * @returns A StreamTextMiddleware
70
+ *
71
+ * @example
72
+ * const timingMiddleware = createMiddleware((provider) => {
73
+ * return {
74
+ * async streamText(options) {
75
+ * const start = Date.now();
76
+ * const result = await provider.streamText(options);
77
+ * console.log(`Took ${Date.now() - start}ms`);
78
+ * return result;
79
+ * }
80
+ * };
81
+ * });
82
+ */
83
+ export function createMiddleware(wrapperFn) {
84
+ return {
85
+ wrap: wrapperFn,
86
+ };
87
+ }
88
+ //# sourceMappingURL=compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/interaction/compose.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,OAAO,CACrB,GAAG,WAAmC;IAEtC,OAAO;QACL,IAAI,CAAC,QAA4B;YAC/B,gEAAgE;YAChE,0EAA0E;YAC1E,OAAO,WAAW,CAAC,WAAW,CAC5B,CAAC,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,EACjE,QAAQ,CACT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAC7B,YAAgC,EAChC,GAAG,WAAmC;IAEtC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAA+D;IAE/D,OAAO;QACL,IAAI,EAAE,SAAS;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Multi-step LLM interaction system with provider interface and middleware.
3
+ *
4
+ * This module provides a clean, SDK-agnostic interface for LLM streaming
5
+ * with composable middleware. Key features:
6
+ * - Provider interface abstracts away SDK details
7
+ * - onFinally lifecycle hook for cleanup after stream consumption
8
+ * - Composable middlewares for cross-cutting concerns
9
+ * - Adapter pattern for SDK flexibility
10
+ *
11
+ * ## Architecture
12
+ *
13
+ * ```
14
+ * Middlewares (Context, Logging, Profiler, LLMObs)
15
+ * ↓
16
+ * StreamTextProvider Interface (with onFinally)
17
+ * ↓
18
+ * VercelStreamTextAdapter
19
+ * ↓
20
+ * Vercel AI SDK
21
+ * ```
22
+ *
23
+ * ## Usage
24
+ *
25
+ * ```typescript
26
+ * import {
27
+ * createVercelProvider,
28
+ * applyMiddleware,
29
+ * createContextMiddleware,
30
+ * createLoggingMiddleware,
31
+ * } from "./interaction";
32
+ *
33
+ * // Create base provider
34
+ * const baseProvider = createVercelProvider();
35
+ *
36
+ * // Apply middlewares
37
+ * const provider = applyMiddleware(
38
+ * baseProvider,
39
+ * createContextMiddleware({ ... }),
40
+ * createLoggingMiddleware({ ... })
41
+ * );
42
+ *
43
+ * // Use the provider
44
+ * const result = await provider.streamText({
45
+ * model,
46
+ * messages,
47
+ * tools,
48
+ * onFinally: async () => {
49
+ * // Cleanup after stream consumption
50
+ * }
51
+ * });
52
+ *
53
+ * for await (const chunk of result.fullStream) {
54
+ * // Process chunks
55
+ * }
56
+ * // onFinally runs here ^
57
+ * ```
58
+ */
59
+ export type { StreamTextProvider, StreamTextOptions, StreamTextResult, StepParameters, StreamChunk, StepResult, FinalResult, } from "./provider.js";
60
+ export type { StreamTextMiddleware } from "./middleware.js";
61
+ export { compose, applyMiddleware, createMiddleware } from "./compose.js";
62
+ export { withStreamLifecycle } from "./stream-lifecycle.js";
63
+ export { VercelStreamTextAdapter, createVercelProvider, } from "./adapters/vercel.js";
64
+ export { createLoggingMiddleware, type LoggingMiddlewareOptions, type LogRef, } from "./middlewares/logging.js";
65
+ export { createProfilerMiddleware, type ProfilerMiddlewareOptions, } from "./middlewares/profiler.js";
66
+ export { createLLMObsMiddleware, type LLMObsMiddlewareOptions, } from "./middlewares/llmobs.js";
67
+ export { createStreamRetryMiddleware, type StreamRetryOptions, } from "./middlewares/stream-retry.js";
68
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/interaction/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAGH,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,MAAM,GACZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,2BAA2B,EAC3B,KAAK,kBAAkB,GACxB,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Multi-step LLM interaction system with provider interface and middleware.
3
+ *
4
+ * This module provides a clean, SDK-agnostic interface for LLM streaming
5
+ * with composable middleware. Key features:
6
+ * - Provider interface abstracts away SDK details
7
+ * - onFinally lifecycle hook for cleanup after stream consumption
8
+ * - Composable middlewares for cross-cutting concerns
9
+ * - Adapter pattern for SDK flexibility
10
+ *
11
+ * ## Architecture
12
+ *
13
+ * ```
14
+ * Middlewares (Context, Logging, Profiler, LLMObs)
15
+ * ↓
16
+ * StreamTextProvider Interface (with onFinally)
17
+ * ↓
18
+ * VercelStreamTextAdapter
19
+ * ↓
20
+ * Vercel AI SDK
21
+ * ```
22
+ *
23
+ * ## Usage
24
+ *
25
+ * ```typescript
26
+ * import {
27
+ * createVercelProvider,
28
+ * applyMiddleware,
29
+ * createContextMiddleware,
30
+ * createLoggingMiddleware,
31
+ * } from "./interaction";
32
+ *
33
+ * // Create base provider
34
+ * const baseProvider = createVercelProvider();
35
+ *
36
+ * // Apply middlewares
37
+ * const provider = applyMiddleware(
38
+ * baseProvider,
39
+ * createContextMiddleware({ ... }),
40
+ * createLoggingMiddleware({ ... })
41
+ * );
42
+ *
43
+ * // Use the provider
44
+ * const result = await provider.streamText({
45
+ * model,
46
+ * messages,
47
+ * tools,
48
+ * onFinally: async () => {
49
+ * // Cleanup after stream consumption
50
+ * }
51
+ * });
52
+ *
53
+ * for await (const chunk of result.fullStream) {
54
+ * // Process chunks
55
+ * }
56
+ * // onFinally runs here ^
57
+ * ```
58
+ */
59
+ // Composition utilities
60
+ export { compose, applyMiddleware, createMiddleware } from "./compose.js";
61
+ // Stream lifecycle utilities
62
+ export { withStreamLifecycle } from "./stream-lifecycle.js";
63
+ // Vercel SDK adapter
64
+ export { VercelStreamTextAdapter, createVercelProvider, } from "./adapters/vercel.js";
65
+ // Built-in middlewares
66
+ export { createLoggingMiddleware, } from "./middlewares/logging.js";
67
+ export { createProfilerMiddleware, } from "./middlewares/profiler.js";
68
+ export { createLLMObsMiddleware, } from "./middlewares/llmobs.js";
69
+ export { createStreamRetryMiddleware, } from "./middlewares/stream-retry.js";
70
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/interaction/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAgBH,wBAAwB;AACxB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE1E,6BAA6B;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAqB;AACrB,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,uBAAuB;AACvB,OAAO,EACL,uBAAuB,GAGxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,wBAAwB,GAEzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,2BAA2B,GAE5B,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Middleware interface for multi-step LLM interactions.
3
+ *
4
+ * Provides a composable wrap pattern for intercepting and transforming
5
+ * StreamTextProvider calls. Each middleware can:
6
+ * - Transform input options before execution
7
+ * - Add lifecycle hooks (onFinally, etc.)
8
+ * - Wrap and transform output streams
9
+ * - Handle errors and control flow
10
+ * - Short-circuit execution if needed
11
+ *
12
+ * Middlewares operate on the high-level StreamTextProvider interface,
13
+ * not on SDK-specific details. This makes them portable across different
14
+ * LLM SDKs (Vercel, Anthropic, OpenAI, etc.).
15
+ */
16
+ import type { StreamTextProvider } from "./provider.js";
17
+ /**
18
+ * Middleware interface using the wrap pattern.
19
+ *
20
+ * Each middleware wraps a StreamTextProvider, allowing it to:
21
+ * - Intercept and transform streamText() calls
22
+ * - Execute logic before/after the call
23
+ * - Transform or wrap the options and results
24
+ * - Handle errors and control flow
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const loggingMiddleware: StreamTextMiddleware = {
29
+ * wrap(provider) {
30
+ * return {
31
+ * async streamText(options) {
32
+ * console.log('Starting streamText call');
33
+ * const result = await provider.streamText(options);
34
+ * console.log('Call complete');
35
+ * return result;
36
+ * }
37
+ * };
38
+ * }
39
+ * };
40
+ * ```
41
+ */
42
+ export interface StreamTextMiddleware {
43
+ /**
44
+ * Wraps a StreamTextProvider with middleware behavior.
45
+ *
46
+ * @param provider - The provider to wrap
47
+ * @returns A wrapped provider with the middleware's behavior
48
+ */
49
+ wrap(provider: StreamTextProvider): StreamTextProvider;
50
+ }
51
+ export type { StreamTextProvider, StreamTextOptions, StreamTextResult, StepParameters, StreamChunk, StepResult, FinalResult, } from "./provider.js";
52
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/interaction/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;CACxD;AAGD,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Middleware interface for multi-step LLM interactions.
3
+ *
4
+ * Provides a composable wrap pattern for intercepting and transforming
5
+ * StreamTextProvider calls. Each middleware can:
6
+ * - Transform input options before execution
7
+ * - Add lifecycle hooks (onFinally, etc.)
8
+ * - Wrap and transform output streams
9
+ * - Handle errors and control flow
10
+ * - Short-circuit execution if needed
11
+ *
12
+ * Middlewares operate on the high-level StreamTextProvider interface,
13
+ * not on SDK-specific details. This makes them portable across different
14
+ * LLM SDKs (Vercel, Anthropic, OpenAI, etc.).
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/interaction/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * LLMObs middleware adapter.
3
+ *
4
+ * This middleware wraps the existing LLMObsStreamTextMiddleware to work
5
+ * with the new provider-based middleware interface. It provides observability
6
+ * tracing for LLM interactions.
7
+ */
8
+ import type { Logger } from "../../../../util/logger.js";
9
+ import type { LLMObsTracer } from "../../../llmobs/index.js";
10
+ import type { StreamTextMiddleware } from "../middleware.js";
11
+ /**
12
+ * Options for configuring the LLMObs middleware.
13
+ */
14
+ export interface LLMObsMiddlewareOptions {
15
+ /** LLMObs tracer instance */
16
+ tracer?: LLMObsTracer;
17
+ /** Logger instance */
18
+ logger?: Logger;
19
+ }
20
+ /**
21
+ * Creates a middleware that adds LLMObs observability tracing.
22
+ *
23
+ * This middleware wraps the existing LLMObsStreamTextMiddleware to provide:
24
+ * - Workflow and LLM span hierarchy
25
+ * - Token usage tracking
26
+ * - Tool call tracing
27
+ * - Segment-level tracking (thinking, text, tool-input)
28
+ * - Error and abort handling
29
+ *
30
+ * @param options - Configuration for the middleware
31
+ * @returns A StreamTextMiddleware
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const middleware = createLLMObsMiddleware({
36
+ * tracer: LLMObsTracer.instance,
37
+ * logger: getLogger()
38
+ * });
39
+ *
40
+ * const streamText = applyMiddleware(baseStreamText, middleware);
41
+ * const result = await streamText({ model, messages, tools });
42
+ * ```
43
+ */
44
+ export declare function createLLMObsMiddleware(options?: LLMObsMiddlewareOptions): StreamTextMiddleware;
45
+ //# sourceMappingURL=llmobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llmobs.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/interaction/middlewares/llmobs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,6BAA6B;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,uBAA4B,GACpC,oBAAoB,CAwEtB"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * LLMObs middleware adapter.
3
+ *
4
+ * This middleware wraps the existing LLMObsStreamTextMiddleware to work
5
+ * with the new provider-based middleware interface. It provides observability
6
+ * tracing for LLM interactions.
7
+ */
8
+ import { LLMObsStreamTextMiddleware, wrapStream, } from "../../../llmobs/middleware/stream-text.js";
9
+ /**
10
+ * Creates a middleware that adds LLMObs observability tracing.
11
+ *
12
+ * This middleware wraps the existing LLMObsStreamTextMiddleware to provide:
13
+ * - Workflow and LLM span hierarchy
14
+ * - Token usage tracking
15
+ * - Tool call tracing
16
+ * - Segment-level tracking (thinking, text, tool-input)
17
+ * - Error and abort handling
18
+ *
19
+ * @param options - Configuration for the middleware
20
+ * @returns A StreamTextMiddleware
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const middleware = createLLMObsMiddleware({
25
+ * tracer: LLMObsTracer.instance,
26
+ * logger: getLogger()
27
+ * });
28
+ *
29
+ * const streamText = applyMiddleware(baseStreamText, middleware);
30
+ * const result = await streamText({ model, messages, tools });
31
+ * ```
32
+ */
33
+ export function createLLMObsMiddleware(options = {}) {
34
+ const { tracer, logger } = options;
35
+ return {
36
+ wrap(provider) {
37
+ return {
38
+ async streamText(streamOptions) {
39
+ // Create LLMObs middleware instance
40
+ const llmobs = new LLMObsStreamTextMiddleware(streamOptions.model, streamOptions.tools, tracer, logger);
41
+ try {
42
+ // Call provider with wrapped callbacks and tools
43
+ const result = await provider.streamText({
44
+ ...streamOptions,
45
+ tools: streamOptions.tools
46
+ ? llmobs.wrapTools(streamOptions.tools)
47
+ : undefined,
48
+ prepareStep: async (step) => {
49
+ return await llmobs.prepareStep(step, streamOptions.model, streamOptions.prepareStep);
50
+ },
51
+ onChunk: async (event) => {
52
+ await llmobs.onChunk(event.chunk, streamOptions.onChunk);
53
+ },
54
+ onStepFinish: async (step) => {
55
+ await llmobs.onStepFinish(step, streamOptions.onStepFinish);
56
+ },
57
+ onFinish: async (result) => {
58
+ await llmobs.onFinish(result, streamOptions.onFinish);
59
+ },
60
+ onError: async (error) => {
61
+ await llmobs.onError(error, streamOptions.onError);
62
+ },
63
+ onAbort: async () => {
64
+ await llmobs.onAbort(streamOptions.onAbort);
65
+ },
66
+ });
67
+ // Wrap result streams with error/finally handlers using the wrapStream utility
68
+ // from stream-text.ts which properly creates AsyncIterableStream
69
+ return {
70
+ ...result,
71
+ textStream: wrapStream(result.textStream, async (error) => llmobs.handleStreamError(error), async () => llmobs.onFinally()),
72
+ fullStream: wrapStream(result.fullStream, async (error) => llmobs.handleStreamError(error), async () => llmobs.onFinally()),
73
+ };
74
+ }
75
+ catch (error) {
76
+ // Clean up spans if error occurs before streams are created
77
+ llmobs.handleStreamError(error);
78
+ throw error;
79
+ }
80
+ },
81
+ };
82
+ },
83
+ };
84
+ }
85
+ //# sourceMappingURL=llmobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llmobs.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/interaction/middlewares/llmobs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,0BAA0B,EAC1B,UAAU,GACX,MAAM,2CAA2C,CAAC;AAsBnD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAmC,EAAE;IAErC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEnC,OAAO;QACL,IAAI,CAAC,QAA4B;YAC/B,OAAO;gBACL,KAAK,CAAC,UAAU,CACd,aAAuC;oBAEvC,oCAAoC;oBACpC,MAAM,MAAM,GAAG,IAAI,0BAA0B,CAC3C,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,KAAK,EACnB,MAAM,EACN,MAAM,CACP,CAAC;oBAEF,IAAI,CAAC;wBACH,iDAAiD;wBACjD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAQ;4BAC9C,GAAG,aAAa;4BAChB,KAAK,EAAE,aAAa,CAAC,KAAK;gCACxB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;gCACvC,CAAC,CAAC,SAAS;4BACb,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gCAC1B,OAAO,MAAM,MAAM,CAAC,WAAW,CAC7B,IAAI,EACJ,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,WAAW,CAC1B,CAAC;4BACJ,CAAC;4BACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gCACvB,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;4BAC3D,CAAC;4BACD,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gCAC3B,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;4BAC9D,CAAC;4BACD,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gCACzB,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;4BACxD,CAAC;4BACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gCACvB,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;4BACrD,CAAC;4BACD,OAAO,EAAE,KAAK,IAAI,EAAE;gCAClB,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;4BAC9C,CAAC;yBACF,CAAC,CAAC;wBAEH,+EAA+E;wBAC/E,iEAAiE;wBACjE,OAAO;4BACL,GAAG,MAAM;4BACT,UAAU,EAAE,UAAU,CACpB,MAAM,CAAC,UAAU,EACjB,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAChD,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAC/B;4BACD,UAAU,EAAE,UAAU,CACpB,MAAM,CAAC,UAAU,EACjB,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAChD,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAC/B;yBACF,CAAC;oBACJ,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,4DAA4D;wBAC5D,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBAChC,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}