@superblocksteam/vite-plugin-file-sync 2.0.70 → 2.0.71-next.1

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 (251) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +1 -1
  2. package/dist/ai-service/agent/subagents/types.d.ts.map +1 -1
  3. package/dist/ai-service/agent/subagents/types.js +1 -0
  4. package/dist/ai-service/agent/subagents/types.js.map +1 -1
  5. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  6. package/dist/ai-service/agent/tool-message-utils.js +5 -0
  7. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  8. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
  9. package/dist/ai-service/agent/tools/apis/build-api-artifact.js +2 -1
  10. package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
  11. package/dist/ai-service/agent/tools/apis/sample-json.d.ts +2 -0
  12. package/dist/ai-service/agent/tools/apis/sample-json.d.ts.map +1 -0
  13. package/dist/ai-service/agent/tools/apis/sample-json.js +16 -0
  14. package/dist/ai-service/agent/tools/apis/sample-json.js.map +1 -0
  15. package/dist/ai-service/agent/tools/apis/test-api.d.ts +4 -4
  16. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  17. package/dist/ai-service/agent/tools/apis/test-api.js +16 -5
  18. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  19. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +35 -0
  20. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
  21. package/dist/ai-service/agent/tools/build-capture-screenshot.js +90 -15
  22. package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
  23. package/dist/ai-service/agent/tools/build-validate-icons.d.ts +3 -18
  24. package/dist/ai-service/agent/tools/build-validate-icons.d.ts.map +1 -1
  25. package/dist/ai-service/agent/tools/build-validate-icons.js +12 -50
  26. package/dist/ai-service/agent/tools/build-validate-icons.js.map +1 -1
  27. package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
  28. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +1 -1
  29. package/dist/ai-service/agent/tools/shared-helpers.d.ts +0 -35
  30. package/dist/ai-service/agent/tools/shared-helpers.d.ts.map +1 -1
  31. package/dist/ai-service/agent/tools/shared-helpers.js +0 -89
  32. package/dist/ai-service/agent/tools/shared-helpers.js.map +1 -1
  33. package/dist/ai-service/agent/tools2/access-control.d.ts +1 -23
  34. package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
  35. package/dist/ai-service/agent/tools2/access-control.js +3 -68
  36. package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
  37. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  38. package/dist/ai-service/agent/tools2/registry.js +16 -5
  39. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  40. package/dist/ai-service/agent/tools2/tools/bash.d.ts.map +1 -1
  41. package/dist/ai-service/agent/tools2/tools/bash.js +2 -1
  42. package/dist/ai-service/agent/tools2/tools/bash.js.map +1 -1
  43. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  44. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +10 -2
  45. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  46. package/dist/ai-service/agent/tools2/tools/grep.d.ts.map +1 -1
  47. package/dist/ai-service/agent/tools2/tools/grep.js +2 -1
  48. package/dist/ai-service/agent/tools2/tools/grep.js.map +1 -1
  49. package/dist/ai-service/agent/tools2/tools/ls.d.ts.map +1 -1
  50. package/dist/ai-service/agent/tools2/tools/ls.js +3 -1
  51. package/dist/ai-service/agent/tools2/tools/ls.js.map +1 -1
  52. package/dist/ai-service/agent/tools2/types.d.ts +2 -1
  53. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  54. package/dist/ai-service/agent/tools2/types.js +31 -11
  55. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  56. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  57. package/dist/ai-service/agent/utils.js +5 -10
  58. package/dist/ai-service/agent/utils.js.map +1 -1
  59. package/dist/ai-service/clark-provider/clark-chat-settings.d.ts +2 -1
  60. package/dist/ai-service/clark-provider/clark-chat-settings.d.ts.map +1 -1
  61. package/dist/ai-service/clark-provider/clark-chat-settings.js +1 -0
  62. package/dist/ai-service/clark-provider/clark-chat-settings.js.map +1 -1
  63. package/dist/ai-service/index.d.ts.map +1 -1
  64. package/dist/ai-service/index.js +7 -4
  65. package/dist/ai-service/index.js.map +1 -1
  66. package/dist/ai-service/integrations/store.d.ts +1 -0
  67. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  68. package/dist/ai-service/integrations/store.js +1 -0
  69. package/dist/ai-service/integrations/store.js.map +1 -1
  70. package/dist/ai-service/llm/client.d.ts +14 -117
  71. package/dist/ai-service/llm/client.d.ts.map +1 -1
  72. package/dist/ai-service/llm/client.js +57 -149
  73. package/dist/ai-service/llm/client.js.map +1 -1
  74. package/dist/ai-service/llm/error.d.ts +7 -2
  75. package/dist/ai-service/llm/error.d.ts.map +1 -1
  76. package/dist/ai-service/llm/error.js +17 -17
  77. package/dist/ai-service/llm/error.js.map +1 -1
  78. package/dist/ai-service/llm/impl/anthropic.d.ts.map +1 -1
  79. package/dist/ai-service/llm/impl/anthropic.js +2 -1
  80. package/dist/ai-service/llm/impl/anthropic.js.map +1 -1
  81. package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
  82. package/dist/ai-service/llm/impl/clark.js +2 -1
  83. package/dist/ai-service/llm/impl/clark.js.map +1 -1
  84. package/dist/ai-service/llm/interaction/index.d.ts +0 -64
  85. package/dist/ai-service/llm/interaction/index.d.ts.map +1 -1
  86. package/dist/ai-service/llm/interaction/index.js +0 -65
  87. package/dist/ai-service/llm/interaction/index.js.map +1 -1
  88. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  89. package/dist/ai-service/llm/provider.js +2 -6
  90. package/dist/ai-service/llm/provider.js.map +1 -1
  91. package/dist/ai-service/llm/stream/config.d.ts +56 -0
  92. package/dist/ai-service/llm/stream/config.d.ts.map +1 -0
  93. package/dist/ai-service/llm/stream/config.js +41 -0
  94. package/dist/ai-service/llm/stream/config.js.map +1 -0
  95. package/dist/ai-service/llm/stream/errors.d.ts +16 -0
  96. package/dist/ai-service/llm/stream/errors.d.ts.map +1 -0
  97. package/dist/ai-service/llm/stream/errors.js +68 -0
  98. package/dist/ai-service/llm/stream/errors.js.map +1 -0
  99. package/dist/ai-service/llm/stream/event-bus.d.ts +68 -0
  100. package/dist/ai-service/llm/stream/event-bus.d.ts.map +1 -0
  101. package/dist/ai-service/llm/stream/event-bus.js +51 -0
  102. package/dist/ai-service/llm/stream/event-bus.js.map +1 -0
  103. package/dist/ai-service/llm/stream/index.d.ts +49 -0
  104. package/dist/ai-service/llm/stream/index.d.ts.map +1 -0
  105. package/dist/ai-service/llm/stream/index.js +46 -0
  106. package/dist/ai-service/llm/stream/index.js.map +1 -0
  107. package/dist/ai-service/llm/stream/managed-stream.d.ts +25 -0
  108. package/dist/ai-service/llm/stream/managed-stream.d.ts.map +1 -0
  109. package/dist/ai-service/llm/stream/managed-stream.js +68 -0
  110. package/dist/ai-service/llm/stream/managed-stream.js.map +1 -0
  111. package/dist/ai-service/llm/stream/observer.d.ts +34 -0
  112. package/dist/ai-service/llm/stream/observer.d.ts.map +1 -0
  113. package/dist/ai-service/llm/stream/observer.js +2 -0
  114. package/dist/ai-service/llm/stream/observer.js.map +1 -0
  115. package/dist/ai-service/llm/stream/observers/context.d.ts +40 -0
  116. package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -0
  117. package/dist/ai-service/llm/stream/observers/context.js +55 -0
  118. package/dist/ai-service/llm/stream/observers/context.js.map +1 -0
  119. package/dist/ai-service/llm/stream/observers/index.d.ts +8 -0
  120. package/dist/ai-service/llm/stream/observers/index.d.ts.map +1 -0
  121. package/dist/ai-service/llm/stream/observers/index.js +8 -0
  122. package/dist/ai-service/llm/stream/observers/index.js.map +1 -0
  123. package/dist/ai-service/llm/stream/observers/llmobs.d.ts +78 -0
  124. package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -0
  125. package/dist/ai-service/llm/stream/observers/llmobs.js +504 -0
  126. package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -0
  127. package/dist/ai-service/llm/stream/observers/logging.d.ts +46 -0
  128. package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -0
  129. package/dist/ai-service/llm/stream/observers/logging.js +296 -0
  130. package/dist/ai-service/llm/stream/observers/logging.js.map +1 -0
  131. package/dist/ai-service/llm/stream/observers/retry-notification.d.ts +17 -0
  132. package/dist/ai-service/llm/stream/observers/retry-notification.d.ts.map +1 -0
  133. package/dist/ai-service/llm/stream/observers/retry-notification.js +36 -0
  134. package/dist/ai-service/llm/stream/observers/retry-notification.js.map +1 -0
  135. package/dist/ai-service/llm/stream/orchestrator.d.ts +73 -0
  136. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -0
  137. package/dist/ai-service/llm/stream/orchestrator.js +285 -0
  138. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -0
  139. package/dist/ai-service/llm/stream/retry-engine.d.ts +58 -0
  140. package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -0
  141. package/dist/ai-service/llm/stream/retry-engine.js +151 -0
  142. package/dist/ai-service/llm/stream/retry-engine.js.map +1 -0
  143. package/dist/ai-service/llm/stream/session.d.ts +58 -0
  144. package/dist/ai-service/llm/stream/session.d.ts.map +1 -0
  145. package/dist/ai-service/llm/stream/session.js +116 -0
  146. package/dist/ai-service/llm/stream/session.js.map +1 -0
  147. package/dist/ai-service/llm/stream/tests/helpers/mock-provider.d.ts +129 -0
  148. package/dist/ai-service/llm/stream/tests/helpers/mock-provider.d.ts.map +1 -0
  149. package/dist/ai-service/llm/stream/tests/helpers/mock-provider.js +508 -0
  150. package/dist/ai-service/llm/stream/tests/helpers/mock-provider.js.map +1 -0
  151. package/dist/ai-service/llm/stream/types.d.ts +15 -0
  152. package/dist/ai-service/llm/stream/types.d.ts.map +1 -0
  153. package/dist/ai-service/llm/stream/types.js +2 -0
  154. package/dist/ai-service/llm/stream/types.js.map +1 -0
  155. package/dist/ai-service/llm/types.d.ts +1 -1
  156. package/dist/ai-service/llm/types.d.ts.map +1 -1
  157. package/dist/ai-service/llmobs/helpers.d.ts +0 -19
  158. package/dist/ai-service/llmobs/helpers.d.ts.map +1 -1
  159. package/dist/ai-service/llmobs/helpers.js +0 -23
  160. package/dist/ai-service/llmobs/helpers.js.map +1 -1
  161. package/dist/ai-service/llmobs/tracer.d.ts +1 -0
  162. package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
  163. package/dist/ai-service/llmobs/tracer.js +1 -0
  164. package/dist/ai-service/llmobs/tracer.js.map +1 -1
  165. package/dist/ai-service/llmobs/types.d.ts +2 -0
  166. package/dist/ai-service/llmobs/types.d.ts.map +1 -1
  167. package/dist/ai-service/llmobs/utils.d.ts.map +1 -1
  168. package/dist/ai-service/llmobs/utils.js +8 -0
  169. package/dist/ai-service/llmobs/utils.js.map +1 -1
  170. package/dist/ai-service/mcp/playwright-server.d.ts.map +1 -1
  171. package/dist/ai-service/mcp/playwright-server.js.map +1 -1
  172. package/dist/ai-service/state-machine/clark-fsm.d.ts +1 -3
  173. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  174. package/dist/ai-service/state-machine/clark-fsm.js +6 -28
  175. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  176. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  177. package/dist/ai-service/state-machine/handlers/agent-planning.js +9 -11
  178. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  179. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  180. package/dist/ai-service/state-machine/handlers/awaiting-user.js +3 -2
  181. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  182. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  183. package/dist/ai-service/state-machine/handlers/llm-generating.js +18 -4
  184. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  185. package/dist/ai-service/state-machine/traced-fsm.d.ts +5 -4
  186. package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
  187. package/dist/ai-service/state-machine/traced-fsm.js +25 -25
  188. package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
  189. package/dist/ai-service/types.d.ts +3 -3
  190. package/dist/ai-service/types.d.ts.map +1 -1
  191. package/dist/ai-service/types.js +10 -10
  192. package/dist/ai-service/types.js.map +1 -1
  193. package/dist/socket-manager.d.ts.map +1 -1
  194. package/dist/socket-manager.js +10 -3
  195. package/dist/socket-manager.js.map +1 -1
  196. package/dist/source-tracker.d.ts.map +1 -1
  197. package/dist/source-tracker.js +8 -0
  198. package/dist/source-tracker.js.map +1 -1
  199. package/dist/sync-service/index.d.ts +7 -2
  200. package/dist/sync-service/index.d.ts.map +1 -1
  201. package/dist/sync-service/index.js +16 -9
  202. package/dist/sync-service/index.js.map +1 -1
  203. package/package.json +11 -11
  204. package/dist/ai-service/llm/interaction/compose.d.ts +0 -71
  205. package/dist/ai-service/llm/interaction/compose.d.ts.map +0 -1
  206. package/dist/ai-service/llm/interaction/compose.js +0 -88
  207. package/dist/ai-service/llm/interaction/compose.js.map +0 -1
  208. package/dist/ai-service/llm/interaction/middleware.d.ts +0 -52
  209. package/dist/ai-service/llm/interaction/middleware.d.ts.map +0 -1
  210. package/dist/ai-service/llm/interaction/middleware.js +0 -17
  211. package/dist/ai-service/llm/interaction/middleware.js.map +0 -1
  212. package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts +0 -45
  213. package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts.map +0 -1
  214. package/dist/ai-service/llm/interaction/middlewares/llmobs.js +0 -85
  215. package/dist/ai-service/llm/interaction/middlewares/llmobs.js.map +0 -1
  216. package/dist/ai-service/llm/interaction/middlewares/logging.d.ts +0 -88
  217. package/dist/ai-service/llm/interaction/middlewares/logging.d.ts.map +0 -1
  218. package/dist/ai-service/llm/interaction/middlewares/logging.js +0 -238
  219. package/dist/ai-service/llm/interaction/middlewares/logging.js.map +0 -1
  220. package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts +0 -47
  221. package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts.map +0 -1
  222. package/dist/ai-service/llm/interaction/middlewares/profiler.js +0 -183
  223. package/dist/ai-service/llm/interaction/middlewares/profiler.js.map +0 -1
  224. package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts +0 -115
  225. package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts.map +0 -1
  226. package/dist/ai-service/llm/interaction/middlewares/stream-retry.js +0 -231
  227. package/dist/ai-service/llm/interaction/middlewares/stream-retry.js.map +0 -1
  228. package/dist/ai-service/llm/interaction/middlewares/utils/abort.d.ts +0 -41
  229. package/dist/ai-service/llm/interaction/middlewares/utils/abort.d.ts.map +0 -1
  230. package/dist/ai-service/llm/interaction/middlewares/utils/abort.js +0 -74
  231. package/dist/ai-service/llm/interaction/middlewares/utils/abort.js.map +0 -1
  232. package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.d.ts +0 -61
  233. package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.d.ts.map +0 -1
  234. package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.js +0 -116
  235. package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.js.map +0 -1
  236. package/dist/ai-service/llm/interaction/middlewares/utils/retries.d.ts +0 -47
  237. package/dist/ai-service/llm/interaction/middlewares/utils/retries.d.ts.map +0 -1
  238. package/dist/ai-service/llm/interaction/middlewares/utils/retries.js +0 -141
  239. package/dist/ai-service/llm/interaction/middlewares/utils/retries.js.map +0 -1
  240. package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.d.ts +0 -30
  241. package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.d.ts.map +0 -1
  242. package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.js +0 -36
  243. package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.js.map +0 -1
  244. package/dist/ai-service/llm/interaction/middlewares/utils/streams.d.ts +0 -42
  245. package/dist/ai-service/llm/interaction/middlewares/utils/streams.d.ts.map +0 -1
  246. package/dist/ai-service/llm/interaction/middlewares/utils/streams.js +0 -208
  247. package/dist/ai-service/llm/interaction/middlewares/utils/streams.js.map +0 -1
  248. package/dist/ai-service/llmobs/middleware/stream-text.d.ts +0 -56
  249. package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +0 -1
  250. package/dist/ai-service/llmobs/middleware/stream-text.js +0 -597
  251. package/dist/ai-service/llmobs/middleware/stream-text.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Type-safe event bus for stream lifecycle events.
3
+ *
4
+ * Observers subscribe to specific events and receive typed arguments.
5
+ * Handlers are called in parallel, and errors in one handler don't affect others.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const events = new StreamEventBus();
10
+ *
11
+ * // Subscribe to events
12
+ * const unsubscribe = events.on("chunk", (chunk, session) => {
13
+ * console.log(`Received chunk: ${chunk.type}`);
14
+ * });
15
+ *
16
+ * // Emit events
17
+ * await events.emit("chunk", myChunk, mySession);
18
+ *
19
+ * // Unsubscribe when done
20
+ * unsubscribe();
21
+ * ```
22
+ */
23
+ export class StreamEventBus {
24
+ listeners = new Map();
25
+ on(event, handler) {
26
+ let handlers = this.listeners.get(event);
27
+ if (!handlers) {
28
+ handlers = new Set();
29
+ this.listeners.set(event, handlers);
30
+ }
31
+ handlers.add(handler);
32
+ return () => {
33
+ handlers?.delete(handler);
34
+ };
35
+ }
36
+ async emit(event, ...args) {
37
+ const handlers = this.listeners.get(event);
38
+ if (!handlers || handlers.size === 0)
39
+ return;
40
+ const results = await Promise.allSettled([...handlers].map(async (handler) => handler(...args)));
41
+ for (const result of results) {
42
+ if (result.status === "rejected") {
43
+ console.error(`Observer error on "${event}" event:`, result.reason);
44
+ }
45
+ }
46
+ }
47
+ clear() {
48
+ this.listeners.clear();
49
+ }
50
+ }
51
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/event-bus.ts"],"names":[],"mappings":"AAiDA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,cAAc;IACR,SAAS,GAAG,IAAI,GAAG,EAGjC,CAAC;IAEJ,EAAE,CACA,KAAQ,EACR,OAA8B;QAE9B,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtB,OAAO,GAAG,EAAE;YACV,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CACR,KAAQ,EACR,GAAG,IAAqB;QAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE7C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CACvD,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Handling LLM streaming operations.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import {
7
+ * StreamOrchestrator,
8
+ * StreamConfig,
9
+ * LoggingObserver,
10
+ * LLMObsObserver,
11
+ * } from "./stream/index.js";
12
+ *
13
+ * // Create configuration
14
+ * const config = StreamConfig.create({
15
+ * retry: { maxAttempts: 3, stallTimeoutMs: 60_000 },
16
+ * fallback: { enabled: true, initialProvider: "vertex" },
17
+ * logging: { enabled: true, conversationId: "abc" },
18
+ * });
19
+ *
20
+ * // Create orchestrator with observers
21
+ * const orchestrator = new StreamOrchestrator({
22
+ * provider: createVercelProvider(),
23
+ * config,
24
+ * observers: [
25
+ * new LoggingObserver(),
26
+ * new LLMObsObserver({ tracer, logger }),
27
+ * ],
28
+ * logger,
29
+ * });
30
+ *
31
+ * // Execute stream with full lifecycle management
32
+ * const result = await orchestrator.execute({
33
+ * model,
34
+ * messages,
35
+ * tools,
36
+ * });
37
+ *
38
+ * for await (const chunk of result.fullStream) {
39
+ * console.log(chunk);
40
+ * }
41
+ * ```
42
+ */
43
+ export { StreamConfig } from "./config.js";
44
+ export type { RetryConfigOptions, ProviderType, CoreModelType, } from "./config.js";
45
+ export type { StreamObserver } from "./observer.js";
46
+ export { StreamOrchestrator } from "./orchestrator.js";
47
+ export { LoggingObserver, LLMObsObserver, ContextObserver, RetryNotificationObserver, wrapToolsForObservability, } from "./observers/index.js";
48
+ export type { LogRef } from "./observers/index.js";
49
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Handling LLM streaming operations.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import {
7
+ * StreamOrchestrator,
8
+ * StreamConfig,
9
+ * LoggingObserver,
10
+ * LLMObsObserver,
11
+ * } from "./stream/index.js";
12
+ *
13
+ * // Create configuration
14
+ * const config = StreamConfig.create({
15
+ * retry: { maxAttempts: 3, stallTimeoutMs: 60_000 },
16
+ * fallback: { enabled: true, initialProvider: "vertex" },
17
+ * logging: { enabled: true, conversationId: "abc" },
18
+ * });
19
+ *
20
+ * // Create orchestrator with observers
21
+ * const orchestrator = new StreamOrchestrator({
22
+ * provider: createVercelProvider(),
23
+ * config,
24
+ * observers: [
25
+ * new LoggingObserver(),
26
+ * new LLMObsObserver({ tracer, logger }),
27
+ * ],
28
+ * logger,
29
+ * });
30
+ *
31
+ * // Execute stream with full lifecycle management
32
+ * const result = await orchestrator.execute({
33
+ * model,
34
+ * messages,
35
+ * tools,
36
+ * });
37
+ *
38
+ * for await (const chunk of result.fullStream) {
39
+ * console.log(chunk);
40
+ * }
41
+ * ```
42
+ */
43
+ export { StreamConfig } from "./config.js";
44
+ export { StreamOrchestrator } from "./orchestrator.js";
45
+ export { LoggingObserver, LLMObsObserver, ContextObserver, RetryNotificationObserver, wrapToolsForObservability, } from "./observers/index.js";
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { StreamSession } from "./session.js";
2
+ import type { Tool } from "../../agent/tools2/types.js";
3
+ import type { AsyncIterableStream, TextStreamPart } from "ai";
4
+ /**
5
+ * Creates a managed stream that wraps the source stream with lifecycle management.
6
+ *
7
+ * The managed stream:
8
+ * - Emits "chunk" events for each chunk
9
+ * - Throws errors from error chunks
10
+ * - Finalizes the session on complete or cancel (but NOT on error - see below)
11
+ *
12
+ * IMPORTANT: This stream intentionally does NOT finalize the session on errors.
13
+ * If you call session.finalize("error") here, the session becomes non-pending,
14
+ * which means new managed streams created during retry will immediately close
15
+ * (see the `!session.isPending()` check in pull).
16
+ *
17
+ * The retry logic in wrapWithRetry is responsible for finalizing the session
18
+ * when all retries are exhausted. Don't be a hero and add finalization here.
19
+ *
20
+ * @param source - The source async iterable stream
21
+ * @param session - The session to update with events
22
+ * @returns A managed stream with lifecycle hooks
23
+ */
24
+ export declare function createManagedStream<T extends TextStreamPart<Record<string, Tool>>>(source: AsyncIterableStream<T>, session: StreamSession): AsyncIterableStream<T>;
25
+ //# sourceMappingURL=managed-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-stream.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/managed-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAE9C,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC9B,OAAO,EAAE,aAAa,GACrB,mBAAmB,CAAC,CAAC,CAAC,CAqDxB"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Creates a managed stream that wraps the source stream with lifecycle management.
3
+ *
4
+ * The managed stream:
5
+ * - Emits "chunk" events for each chunk
6
+ * - Throws errors from error chunks
7
+ * - Finalizes the session on complete or cancel (but NOT on error - see below)
8
+ *
9
+ * IMPORTANT: This stream intentionally does NOT finalize the session on errors.
10
+ * If you call session.finalize("error") here, the session becomes non-pending,
11
+ * which means new managed streams created during retry will immediately close
12
+ * (see the `!session.isPending()` check in pull).
13
+ *
14
+ * The retry logic in wrapWithRetry is responsible for finalizing the session
15
+ * when all retries are exhausted. Don't be a hero and add finalization here.
16
+ *
17
+ * @param source - The source async iterable stream
18
+ * @param session - The session to update with events
19
+ * @returns A managed stream with lifecycle hooks
20
+ */
21
+ export function createManagedStream(source, session) {
22
+ const iterator = source[Symbol.asyncIterator]();
23
+ let closed = false;
24
+ const readable = new ReadableStream({
25
+ async pull(controller) {
26
+ if (closed || !session.isPending()) {
27
+ controller.close();
28
+ return;
29
+ }
30
+ try {
31
+ const result = await iterator.next();
32
+ if (result.done) {
33
+ closed = true;
34
+ session.finalize("complete");
35
+ controller.close();
36
+ return;
37
+ }
38
+ session.recordChunk();
39
+ void session.events.emit("chunk", result.value, session);
40
+ if (result.value.type === "error") {
41
+ const chunkError = result.value
42
+ .error;
43
+ closed = true;
44
+ // don't finalize here, wrapWithRetry catches this and decides whether to retry
45
+ controller.error(chunkError);
46
+ return;
47
+ }
48
+ controller.enqueue(result.value);
49
+ }
50
+ catch (error) {
51
+ closed = true;
52
+ // no finalization, let wrapWithRetry handle it
53
+ controller.error(error);
54
+ }
55
+ },
56
+ cancel() {
57
+ if (!closed) {
58
+ closed = true;
59
+ if (session.isPending()) {
60
+ session.finalize("aborted");
61
+ }
62
+ }
63
+ void iterator.return?.();
64
+ },
65
+ });
66
+ return readable;
67
+ }
68
+ //# sourceMappingURL=managed-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-stream.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/managed-stream.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,mBAAmB,CAGjC,MAA8B,EAC9B,OAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAChD,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAI;QACrC,KAAK,CAAC,IAAI,CAAC,UAAU;YACnB,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;gBACnC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAErC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAChB,MAAM,GAAG,IAAI,CAAC;oBACd,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC7B,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO;gBACT,CAAC;gBAED,OAAO,CAAC,WAAW,EAAE,CAAC;gBACtB,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAEzD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAClC,MAAM,UAAU,GAAI,MAAM,CAAC,KAAuC;yBAC/D,KAAK,CAAC;oBACT,MAAM,GAAG,IAAI,CAAC;oBACd,+EAA+E;oBAC/E,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC7B,OAAO;gBACT,CAAC;gBAED,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,IAAI,CAAC;gBACd,+CAA+C;gBAC/C,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,MAAM;YACJ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;oBACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,KAAK,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,QAAkC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { StreamConfig } from "./config.js";
2
+ import type { StreamEventBus } from "./event-bus.js";
3
+ /**
4
+ * Interface for stream event observers.
5
+ *
6
+ * Observers subscribe to session events via the attach() method.
7
+ * They can perform side effects (logging, tracing, etc.) but cannot
8
+ * modify the stream flow.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * class LoggingObserver implements StreamObserver {
13
+ * attach(events: StreamEventBus, config: StreamConfig): void {
14
+ * events.on("session:start", (session) => {
15
+ * console.log(`Session ${session.id} started`);
16
+ * });
17
+ *
18
+ * events.on("session:complete", (session) => {
19
+ * console.log(`Session ${session.id} completed`);
20
+ * });
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ export interface StreamObserver {
26
+ /**
27
+ * Subscribe to session events.
28
+ *
29
+ * Called once when the observer is registered with an orchestrator.
30
+ * The observer should set up all its event subscriptions here.
31
+ */
32
+ attach(events: StreamEventBus, config: StreamConfig): void;
33
+ }
34
+ //# sourceMappingURL=observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/observer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import type { StreamConfig } from "../config.js";
2
+ import type { StreamEventBus } from "../event-bus.js";
3
+ import type { StreamObserver } from "../observer.js";
4
+ export interface ContextHandle {
5
+ context: ConversationContext;
6
+ release(): void;
7
+ }
8
+ export interface ConversationContext {
9
+ startStep(): void;
10
+ endStep(messages: unknown[], usage?: unknown): void;
11
+ endTurn(usage?: unknown): void;
12
+ }
13
+ export interface ContextObserverOptions {
14
+ contextHandle: ContextHandle;
15
+ }
16
+ /**
17
+ * Observer that manages conversation context during LLM interactions.
18
+ *
19
+ * Handles:
20
+ * - Starting and ending steps in the context
21
+ * - Ending the turn on completion
22
+ * - Releasing the context handle on completion/error/abort
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const observer = new ContextObserver({
27
+ * contextHandle: await contextManager.acquireContext(contextId, ownerId),
28
+ * });
29
+ * ```
30
+ */
31
+ export declare class ContextObserver implements StreamObserver {
32
+ private readonly contextHandle;
33
+ private released;
34
+ constructor(options: ContextObserverOptions);
35
+ attach(events: StreamEventBus, _config: StreamConfig): void;
36
+ private onStepComplete;
37
+ private onStreamFinish;
38
+ private release;
39
+ }
40
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/stream/observers/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,IAAI,IAAI,CAAC;IAClB,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACpD,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAgB,YAAW,cAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,sBAAsB;IAI3C,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAsB3D,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,OAAO;CAMhB"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Observer that manages conversation context during LLM interactions.
3
+ *
4
+ * Handles:
5
+ * - Starting and ending steps in the context
6
+ * - Ending the turn on completion
7
+ * - Releasing the context handle on completion/error/abort
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const observer = new ContextObserver({
12
+ * contextHandle: await contextManager.acquireContext(contextId, ownerId),
13
+ * });
14
+ * ```
15
+ */
16
+ export class ContextObserver {
17
+ contextHandle;
18
+ released = false;
19
+ constructor(options) {
20
+ this.contextHandle = options.contextHandle;
21
+ }
22
+ attach(events, _config) {
23
+ events.on("step:complete", (step, session) => {
24
+ this.onStepComplete(step, session);
25
+ });
26
+ events.on("stream:finish", (result, session) => {
27
+ this.onStreamFinish(result, session);
28
+ });
29
+ events.on("session:complete", () => {
30
+ this.release();
31
+ });
32
+ events.on("session:error", () => {
33
+ this.release();
34
+ });
35
+ events.on("session:abort", () => {
36
+ this.release();
37
+ });
38
+ }
39
+ onStepComplete(step, _session) {
40
+ if (step.response?.messages) {
41
+ this.contextHandle.context.endStep(step.response.messages, step.usage);
42
+ }
43
+ this.contextHandle.context.startStep();
44
+ }
45
+ onStreamFinish(result, _session) {
46
+ this.contextHandle.context.endTurn(result.totalUsage);
47
+ }
48
+ release() {
49
+ if (!this.released) {
50
+ this.released = true;
51
+ this.contextHandle.release();
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/stream/observers/context.ts"],"names":[],"mappings":"AAsBA;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,eAAe;IACT,aAAa,CAAgB;IACtC,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAAY,OAA+B;QACzC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,MAAsB,EAAE,OAAqB;QAClD,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YAC7C,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;YACjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CACpB,IAAsC,EACtC,QAAuB;QAEvB,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC;IAEO,cAAc,CACpB,MAAyC,EACzC,QAAuB;QAEvB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Stream observers for handling side effects during LLM interactions.
3
+ */
4
+ export { LoggingObserver, type LoggingObserverOptions, type LogRef, } from "./logging.js";
5
+ export { LLMObsObserver, wrapToolsForObservability, type LLMObsObserverOptions, } from "./llmobs.js";
6
+ export { ContextObserver, type ContextObserverOptions, type ContextHandle, type ConversationContext, } from "./context.js";
7
+ export { RetryNotificationObserver, type RetryNotificationOptions, } from "./retry-notification.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/stream/observers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,MAAM,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Stream observers for handling side effects during LLM interactions.
3
+ */
4
+ export { LoggingObserver, } from "./logging.js";
5
+ export { LLMObsObserver, wrapToolsForObservability, } from "./llmobs.js";
6
+ export { ContextObserver, } from "./context.js";
7
+ export { RetryNotificationObserver, } from "./retry-notification.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/stream/observers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,GAGhB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,yBAAyB,GAE1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,GAIhB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,GAE1B,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { type ErrorCategory } from "../../error.js";
2
+ import type { Logger } from "../../../../util/logger.js";
3
+ import type { Tool } from "../../../agent/tools2/types.js";
4
+ import type { LLMObsTracer } from "../../../llmobs/index.js";
5
+ import type { StreamConfig } from "../config.js";
6
+ import type { StreamEventBus } from "../event-bus.js";
7
+ import type { StreamObserver } from "../observer.js";
8
+ export interface ClassifiedError {
9
+ category: ErrorCategory;
10
+ code?: string | number;
11
+ isRetryable: boolean;
12
+ message: string;
13
+ }
14
+ export declare function classifyError(error: unknown): ClassifiedError;
15
+ export interface LLMObsObserverOptions {
16
+ tracer: LLMObsTracer;
17
+ logger: Logger;
18
+ }
19
+ /**
20
+ * Observer that manages LLM Observability tracing spans.
21
+ *
22
+ * Creates and manages:
23
+ * - A full workflow span (`ai.streamText`) for the entire session
24
+ * - Step spans (`ai.streamText.step`) for each LLM step
25
+ * - Segment spans (`ai.streamText.{type}`) for thinking/reasoning/text/tool-input
26
+ * - Annotations with usage metrics, model info, and input/output data
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const observer = new LLMObsObserver({
31
+ * tracer: LLMObsTracer.instance,
32
+ * logger: getLogger(),
33
+ * });
34
+ * ```
35
+ */
36
+ export declare class LLMObsObserver implements StreamObserver {
37
+ private readonly tracer;
38
+ private readonly logger;
39
+ private fullSpan?;
40
+ private stepSpan?;
41
+ private currentSegment?;
42
+ private stepNumber;
43
+ constructor(options: LLMObsObserverOptions);
44
+ attach(events: StreamEventBus, _config: StreamConfig): void;
45
+ private onSessionStart;
46
+ private onChunk;
47
+ private onStepComplete;
48
+ private onStreamFinish;
49
+ private onRetry;
50
+ private onFallback;
51
+ private onSessionComplete;
52
+ private onSessionError;
53
+ private onSessionAbort;
54
+ private startSegment;
55
+ private finishSegment;
56
+ private ensureSegment;
57
+ private appendTextToCurrentSegment;
58
+ private appendToolInputDelta;
59
+ private isTextualSegment;
60
+ private getSegmentTypeFromChunk;
61
+ private startStepSpan;
62
+ private finishStepSpan;
63
+ private finishFullSpan;
64
+ private compileMetrics;
65
+ }
66
+ /**
67
+ * Wraps tools with LLMObs tracing for real-time tool execution observability.
68
+ *
69
+ * This utility intercepts each tool's `execute` function and wraps it with
70
+ * a traced span, capturing:
71
+ * - Tool name (`tool.{name}`)
72
+ * - Input arguments
73
+ * - Output result
74
+ * - Execution duration
75
+ * - Error status
76
+ */
77
+ export declare function wrapToolsForObservability<TOOLS extends Record<string, Tool>>(tools: TOOLS, tracer: LLMObsTracer): TOOLS;
78
+ //# sourceMappingURL=llmobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llmobs.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/stream/observers/llmobs.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,0BAA0B,CAAC;AAMlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAqD7D;AAYD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAe,YAAW,cAAc;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,UAAU,CAAK;gBAEX,OAAO,EAAE,qBAAqB;IAK1C,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAsC3D,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,OAAO;IAwBf,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,OAAO;IA8Bf,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,cAAc;IAsCtB,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,cAAc;CAuCvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1E,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,YAAY,GACnB,KAAK,CAuDP"}