@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,116 @@
1
+ import { StreamEventBus } from "./event-bus.js";
2
+ /**
3
+ * State container for a single stream operation.
4
+ *
5
+ * Contains all mutable state for the session:
6
+ * - Current attempt number
7
+ * - Current provider info
8
+ * - Metrics (chunks, tokens, retries, duration)
9
+ * - Error and outcome status
10
+ *
11
+ * The session also owns the event bus for this operation.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const session = new StreamSession(config, initialProvider);
16
+ *
17
+ * // Record activity
18
+ * session.recordChunk();
19
+ * session.recordRetry(500);
20
+ *
21
+ * // Finalize when done
22
+ * session.finalize("complete");
23
+ * ```
24
+ */
25
+ export class StreamSession {
26
+ id;
27
+ startTime;
28
+ events;
29
+ config;
30
+ attempt = 1;
31
+ provider;
32
+ metrics = {
33
+ chunkCount: 0,
34
+ totalTokens: 0,
35
+ retryCount: 0,
36
+ totalRetryDelayMs: 0,
37
+ durationMs: 0,
38
+ timeToFirstTokenMs: undefined,
39
+ };
40
+ error = null;
41
+ outcome = "pending";
42
+ // tracks when we last received a chunk or started a retry, used for max-time checks.
43
+ lastActivityTime;
44
+ constructor(config, initialProvider) {
45
+ this.id = crypto.randomUUID();
46
+ this.startTime = Date.now();
47
+ this.lastActivityTime = this.startTime;
48
+ this.config = config;
49
+ this.provider = initialProvider;
50
+ this.events = new StreamEventBus();
51
+ }
52
+ /**
53
+ * Finalize the session with an outcome.
54
+ *
55
+ * Can only be called once. Subsequent calls are ignored.
56
+ * Emits the appropriate lifecycle event based on outcome.
57
+ *
58
+ * @param outcome - The final outcome of the session
59
+ * @param error - Optional error that caused failure
60
+ */
61
+ finalize(outcome, error) {
62
+ if (this.outcome !== "pending") {
63
+ return;
64
+ }
65
+ this.outcome = outcome;
66
+ this.error = error ?? null;
67
+ this.metrics.durationMs = Date.now() - this.startTime;
68
+ switch (outcome) {
69
+ case "complete":
70
+ void this.events.emit("session:complete", this);
71
+ break;
72
+ case "error":
73
+ void this.events.emit("session:error", error, this);
74
+ break;
75
+ case "aborted":
76
+ void this.events.emit("session:abort", this);
77
+ break;
78
+ }
79
+ }
80
+ recordRetry(delayMs) {
81
+ this.attempt++;
82
+ this.metrics.retryCount++;
83
+ this.metrics.totalRetryDelayMs += delayMs;
84
+ this.lastActivityTime = Date.now();
85
+ }
86
+ // called when falling back to a new provider, each provider gets fresh attempts.
87
+ // if we do not reset, we burn through all providers in one go.
88
+ resetAttempts() {
89
+ this.attempt = 0;
90
+ }
91
+ recordChunk() {
92
+ if (this.metrics.chunkCount === 0) {
93
+ this.metrics.timeToFirstTokenMs = Date.now() - this.startTime;
94
+ }
95
+ this.metrics.chunkCount++;
96
+ this.lastActivityTime = Date.now();
97
+ }
98
+ setTotalTokens(tokens) {
99
+ this.metrics.totalTokens = tokens;
100
+ }
101
+ isPending() {
102
+ return this.outcome === "pending";
103
+ }
104
+ getElapsedMs() {
105
+ return Date.now() - this.startTime;
106
+ }
107
+ // use this for max-time checks, NOT getElapsedMs(). we only want to timeout
108
+ // if nothing is happening, not if the stream has been running for a while.
109
+ getTimeSinceLastActivity() {
110
+ return Date.now() - this.lastActivityTime;
111
+ }
112
+ resetActivityTimer() {
113
+ this.lastActivityTime = Date.now();
114
+ }
115
+ }
116
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Mock provider helpers for testing the stream architecture.
3
+ *
4
+ * Provides declarative mock builders that make tests readable.
5
+ */
6
+ import type { Tool } from "../../../../agent/tools2/types.js";
7
+ import type { StreamTextProvider, StreamTextResult, StreamTextOptions } from "../../../interaction/provider.js";
8
+ import type { TextStreamPart, AsyncIterableStream } from "ai";
9
+ /**
10
+ * Default chunks to return from mock streams.
11
+ */
12
+ export declare const defaultChunks: TextStreamPart<Record<string, Tool>>[];
13
+ /** Default usage stats for sentence-based providers. */
14
+ export declare const sentenceUsage: {
15
+ inputTokens: number;
16
+ outputTokens: number;
17
+ totalTokens: number;
18
+ };
19
+ /**
20
+ * Create full stream chunks from an array of text strings.
21
+ */
22
+ export declare function chunksFromText<TOOLS extends Record<string, Tool>>(textChunks: string[], usage?: {
23
+ inputTokens: number;
24
+ outputTokens: number;
25
+ totalTokens: number;
26
+ }): TextStreamPart<TOOLS>[];
27
+ /**
28
+ * Split a sentence into word-based text chunks (space-separated).
29
+ * Each word after the first is prefixed with a space.
30
+ */
31
+ export declare function textToChunks(text: string): string[];
32
+ /**
33
+ * Create a mock StreamTextResult from text chunks.
34
+ */
35
+ export declare function createResultFromText<TOOLS extends Record<string, Tool>>(textChunks: string[], usage?: {
36
+ inputTokens: number;
37
+ outputTokens: number;
38
+ totalTokens: number;
39
+ }): StreamTextResult<TOOLS>;
40
+ /**
41
+ * Create a mock StreamTextResult from a sentence (splits by spaces).
42
+ */
43
+ export declare function createResultFromSentence<TOOLS extends Record<string, Tool>>(text: string): StreamTextResult<TOOLS>;
44
+ /**
45
+ * Create an AsyncIterableStream from an array of items.
46
+ * Each call to [Symbol.asyncIterator]() creates a fresh iterator.
47
+ */
48
+ export declare function asyncIterableFrom<T>(items: T[]): AsyncIterableStream<T>;
49
+ export declare const MockProvider: {
50
+ /**
51
+ * Provider that always succeeds with the given chunks.
52
+ */
53
+ success<TOOLS extends Record<string, Tool> = Record<string, Tool<any, any>>>(chunks?: TextStreamPart<TOOLS>[]): StreamTextProvider;
54
+ /**
55
+ * Provider that always succeeds with the given text (splits by spaces).
56
+ */
57
+ successWithText(text: string): StreamTextProvider;
58
+ /**
59
+ * Provider that fails on the first N attempts then succeeds.
60
+ * Optionally tracks calls by pushing to the provided `calls` array.
61
+ */
62
+ failsThenSucceeds(failCount: number, options?: {
63
+ error?: Error;
64
+ text?: string;
65
+ textChunks?: string[];
66
+ calls?: Array<{
67
+ messages: any[];
68
+ timestamp: number;
69
+ }>;
70
+ }): StreamTextProvider;
71
+ /**
72
+ * Provider where the stream fails after N chunks (sends error chunk).
73
+ */
74
+ streamFailsAfter(chunkCount: number, error?: Error): StreamTextProvider;
75
+ /**
76
+ * Provider where the iterator throws after N chunks (simulates network disconnect).
77
+ * Unlike streamFailsAfter which sends an error chunk, this throws from iterator.next().
78
+ */
79
+ iteratorThrowsAfter(chunkCount: number, error?: Error): StreamTextProvider;
80
+ /**
81
+ * Provider where iterator throws on first N attempts, then succeeds.
82
+ * Simulates network issues that recover after retries.
83
+ */
84
+ iteratorThrowsThenSucceeds(failCount: number, options?: {
85
+ error?: Error;
86
+ chunksBeforeError?: number;
87
+ text?: string;
88
+ }): StreamTextProvider;
89
+ /**
90
+ * Provider that stalls after N chunks.
91
+ */
92
+ streamStalls(chunkCount: number): StreamTextProvider;
93
+ /**
94
+ * Provider that tracks calls for verification.
95
+ */
96
+ tracked(text?: string): {
97
+ provider: StreamTextProvider;
98
+ calls: Array<{
99
+ options: StreamTextOptions<any>;
100
+ timestamp: number;
101
+ }>;
102
+ };
103
+ /**
104
+ * Provider that always fails with the given error.
105
+ */
106
+ alwaysFails(error?: Error): StreamTextProvider;
107
+ /**
108
+ * Provider that waits for a delay then fails.
109
+ */
110
+ slowAlwaysFails(delayMs: number, error?: Error): StreamTextProvider;
111
+ /**
112
+ * Provider that stalls for a specified duration then continues producing chunks.
113
+ * This simulates the scenario where stall detection fires but the underlying
114
+ * stream continues to produce data (e.g., tool calls appear after the stall error).
115
+ *
116
+ * @param stallDurationMs - How long to stall before continuing
117
+ * @param chunksBeforeStall - Number of chunks to emit before stalling
118
+ * @param chunksAfterStall - Optional chunks to emit after stall (defaults to success chunks)
119
+ */
120
+ stallsThenContinues(stallDurationMs: number, chunksBeforeStall?: number, chunksAfterStall?: TextStreamPart<Record<string, Tool>>[]): StreamTextProvider;
121
+ /**
122
+ * Provider with slow steps on first N attempts, then succeeds.
123
+ * Simulates slow LLM responses that trigger stall detection.
124
+ */
125
+ slowStepsThenSucceeds(slowCount: number, stepDelayMs: number, options?: {
126
+ text?: string;
127
+ }): StreamTextProvider;
128
+ };
129
+ //# sourceMappingURL=mock-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-provider.d.ts","sourceRoot":"","sources":["../../../../../../src/ai-service/llm/stream/tests/helpers/mock-provider.ts"],"names":[],"mappings":"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"}