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

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
@@ -1,88 +0,0 @@
1
- /**
2
- * Logging middleware for LLM interactions.
3
- *
4
- * This middleware captures detailed logs of the entire LLM interaction including:
5
- * - Configuration and model details
6
- * - Input messages and context
7
- * - Each step's outputs (text, reasoning, tool calls)
8
- * - Token usage per step and total
9
- * - Timing information
10
- *
11
- * The accumulated log content is made available for saving as an artifact.
12
- */
13
- import type { FileArtifact } from "../../../types.js";
14
- import type { StreamTextMiddleware } from "../middleware.js";
15
- /**
16
- * Reference to a mutable log content string.
17
- * Allows external access to accumulated log content during streaming.
18
- */
19
- export interface LogRef {
20
- content: string;
21
- }
22
- /**
23
- * Options for configuring the logging middleware.
24
- */
25
- export interface LoggingMiddlewareOptions {
26
- /** Unique identifier for this conversation */
27
- conversationId?: string;
28
- /** Function to save the log artifact after stream completes */
29
- saveArtifact: (artifact: FileArtifact, stepId: string, runTimestamp: string) => Promise<void>;
30
- /**
31
- * Optional log reference to use for accumulating log content.
32
- * If provided, the middleware will write to this reference.
33
- * If not provided, an internal reference is created.
34
- * Useful when you need external access to logs during streaming.
35
- */
36
- logRef?: LogRef;
37
- /** Optional additional metadata to log */
38
- metadata?: {
39
- mode?: string;
40
- provider?: string;
41
- thinking?: boolean;
42
- thinkingBudgetTokens?: number;
43
- disabledTools?: string[];
44
- headers?: Record<string, string | undefined>;
45
- [key: string]: unknown;
46
- };
47
- }
48
- /**
49
- * Creates a middleware that logs all LLM interaction details.
50
- *
51
- * The middleware wraps the streamText call to capture:
52
- * - Initial configuration and messages
53
- * - Each step's output (text, reasoning, tool calls, usage)
54
- * - Final aggregated statistics
55
- *
56
- * The log is automatically saved as a file artifact after the stream completes.
57
- *
58
- * @param options - Configuration for the middleware
59
- * @returns A StreamTextMiddleware
60
- *
61
- * @example
62
- * ```typescript
63
- * // Basic usage - internal logRef
64
- * const middleware = createLoggingMiddleware({
65
- * conversationId: "conv-123",
66
- * runTimestamp: new Date().toISOString(),
67
- * saveArtifact: services.appShell.saveGeneratedArtifact,
68
- * metadata: { mode: "build", provider: "anthropic" }
69
- * });
70
- *
71
- * // With external logRef for accessing logs during streaming
72
- * const logRef = { content: "" };
73
- * const middleware = createLoggingMiddleware({
74
- * conversationId: "conv-123",
75
- * runTimestamp: new Date().toISOString(),
76
- * saveArtifact: services.appShell.saveGeneratedArtifact,
77
- * logRef, // Pass your own reference
78
- * metadata: { mode: "build", provider: "anthropic" }
79
- * });
80
- *
81
- * const streamText = applyMiddleware(baseStreamText, middleware);
82
- * const result = await streamText({ model, messages, tools });
83
- * // Access logs during streaming: console.log(logRef.content)
84
- * // Log is automatically saved after stream completes
85
- * ```
86
- */
87
- export declare function createLoggingMiddleware(options: LoggingMiddlewareOptions): StreamTextMiddleware;
88
- //# sourceMappingURL=logging.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/interaction/middlewares/logging.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,kBAAkB,CAAC;AAG1B;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,+DAA+D;IAC/D,YAAY,EAAE,CACZ,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;QAC7C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,GAChC,oBAAoB,CAuLtB"}
@@ -1,238 +0,0 @@
1
- /**
2
- * Logging middleware for LLM interactions.
3
- *
4
- * This middleware captures detailed logs of the entire LLM interaction including:
5
- * - Configuration and model details
6
- * - Input messages and context
7
- * - Each step's outputs (text, reasoning, tool calls)
8
- * - Token usage per step and total
9
- * - Timing information
10
- *
11
- * The accumulated log content is made available for saving as an artifact.
12
- */
13
- import { getLogger } from "../../../../util/logger.js";
14
- import { safeJsonStringify } from "../../../util/safe-stringify.js";
15
- /**
16
- * Creates a middleware that logs all LLM interaction details.
17
- *
18
- * The middleware wraps the streamText call to capture:
19
- * - Initial configuration and messages
20
- * - Each step's output (text, reasoning, tool calls, usage)
21
- * - Final aggregated statistics
22
- *
23
- * The log is automatically saved as a file artifact after the stream completes.
24
- *
25
- * @param options - Configuration for the middleware
26
- * @returns A StreamTextMiddleware
27
- *
28
- * @example
29
- * ```typescript
30
- * // Basic usage - internal logRef
31
- * const middleware = createLoggingMiddleware({
32
- * conversationId: "conv-123",
33
- * runTimestamp: new Date().toISOString(),
34
- * saveArtifact: services.appShell.saveGeneratedArtifact,
35
- * metadata: { mode: "build", provider: "anthropic" }
36
- * });
37
- *
38
- * // With external logRef for accessing logs during streaming
39
- * const logRef = { content: "" };
40
- * const middleware = createLoggingMiddleware({
41
- * conversationId: "conv-123",
42
- * runTimestamp: new Date().toISOString(),
43
- * saveArtifact: services.appShell.saveGeneratedArtifact,
44
- * logRef, // Pass your own reference
45
- * metadata: { mode: "build", provider: "anthropic" }
46
- * });
47
- *
48
- * const streamText = applyMiddleware(baseStreamText, middleware);
49
- * const result = await streamText({ model, messages, tools });
50
- * // Access logs during streaming: console.log(logRef.content)
51
- * // Log is automatically saved after stream completes
52
- * ```
53
- */
54
- export function createLoggingMiddleware(options) {
55
- const { saveArtifact, metadata = {} } = options;
56
- // Use provided logRef or create one internally
57
- const logRef = options.logRef ?? { content: "" };
58
- // Use provided conversationId or generate one
59
- const conversationId = options.conversationId ?? String(Date.now());
60
- return {
61
- wrap(provider) {
62
- return {
63
- async streamText(streamOptions) {
64
- // Timestamp for the run, used when saving the artifact
65
- const runTimestamp = new Date().toISOString();
66
- const modelId = typeof streamOptions.model === "string"
67
- ? streamOptions.model
68
- : streamOptions.model.modelId;
69
- // Log conversation header
70
- logRef.content += `=== LLM CONVERSATION START [${conversationId}] ===\n`;
71
- logRef.content += `Timestamp: ${runTimestamp}\n`;
72
- logRef.content += `Model: ${modelId}\n`;
73
- // Log provider configuration if available
74
- if (metadata.provider || metadata.thinking !== undefined) {
75
- logRef.content += `Provider Config: provider=${metadata.provider || "anthropic (default)"}`;
76
- if (metadata.thinking !== undefined) {
77
- logRef.content += `, thinking=${metadata.thinking}`;
78
- }
79
- if (metadata.thinkingBudgetTokens) {
80
- logRef.content += `, budget=${metadata.thinkingBudgetTokens}`;
81
- }
82
- if (metadata.disabledTools?.length) {
83
- logRef.content += `, disabledTools=${metadata.disabledTools.join(",")}`;
84
- }
85
- if (metadata.headers && Object.keys(metadata.headers).length > 0) {
86
- logRef.content += `, headers=${safeJsonStringify(metadata.headers)}`;
87
- }
88
- logRef.content += "\n";
89
- }
90
- // Log input messages
91
- logRef.content += `--- INPUT MESSAGES ---\n`;
92
- if (streamOptions.messages) {
93
- for (const message of streamOptions.messages) {
94
- logRef.content += formatMessage(message);
95
- }
96
- }
97
- else if (streamOptions.user) {
98
- logRef.content += formatMessage(streamOptions.user);
99
- }
100
- logRef.content += "\n";
101
- // Log mode and tools
102
- if (metadata.mode) {
103
- logRef.content += `[MODE] ${metadata.mode}\n`;
104
- }
105
- if (streamOptions.tools) {
106
- const toolNames = Object.keys(streamOptions.tools);
107
- logRef.content += `Available tools: ${toolNames.length}\n`;
108
- logRef.content += `Tools: ${toolNames.join(", ")}\n`;
109
- }
110
- logRef.content += "\n";
111
- // Track step number ourselves (Vercel SDK doesn't provide it)
112
- let stepNumber = 0;
113
- // Call provider with wrapped callbacks
114
- return await provider.streamText({
115
- ...streamOptions,
116
- onStepFinish: async (step) => {
117
- stepNumber++;
118
- const stepTimestamp = new Date().toISOString();
119
- logRef.content += `--- OUTPUT STEP ${stepNumber} [${stepTimestamp}] ---\n`;
120
- // Log token usage
121
- if (step.usage) {
122
- const stepInputTokens = step.usage.inputTokens ?? 0;
123
- const stepOutputTokens = step.usage.outputTokens ?? 0;
124
- const stepCachedTokens = step.usage.cachedInputTokens ?? 0;
125
- logRef.content += `[TOKEN USAGE] Input: ${stepInputTokens}, Output: ${stepOutputTokens}, Total: ${step.usage.totalTokens ?? 0}`;
126
- if (stepCachedTokens) {
127
- logRef.content += `, Cached: ${stepCachedTokens}`;
128
- }
129
- logRef.content += `\n`;
130
- }
131
- // Log tool calls
132
- if (step.toolCalls && step.toolCalls.length > 0) {
133
- logRef.content += `[TOOLS CALLED]\n`;
134
- step.toolCalls.forEach((toolCall, idx) => {
135
- logRef.content += ` Tool ${idx + 1}: ${toolCall.toolName}\n`;
136
- logRef.content += ` Input: ${safeJsonStringify(toolCall.args)}\n`;
137
- });
138
- }
139
- // Log tool results
140
- if (step.toolResults && step.toolResults.length > 0) {
141
- logRef.content += `[TOOL RESULTS]\n`;
142
- step.toolResults.forEach((result, idx) => {
143
- logRef.content += ` Tool ${idx + 1}: ${result.toolName}\n`;
144
- logRef.content += ` Output: ${safeJsonStringify(result.result)}\n`;
145
- if (result.isError) {
146
- logRef.content += ` [ERROR]\n`;
147
- }
148
- });
149
- }
150
- // Log reasoning (if present)
151
- if (step.reasoningText && step.reasoningText.length > 0) {
152
- logRef.content += `[REASONING]\n${step.reasoningText}\n`;
153
- }
154
- // Log assistant text
155
- if (step.text) {
156
- logRef.content += `[ASSISTANT TEXT] ${step.text}\n`;
157
- }
158
- logRef.content += `\n`;
159
- return await streamOptions.onStepFinish?.(step);
160
- },
161
- onFinish: async (result) => {
162
- const endTimestamp = new Date().toISOString();
163
- logRef.content += `=== LLM CONVERSATION END [${conversationId}] ===\n`;
164
- logRef.content += `Finish reason: ${result.finishReason}\n`;
165
- logRef.content += `End Timestamp: ${endTimestamp}\n`;
166
- logRef.content += `Total Steps: ${result.steps.length}\n`;
167
- const usage = result.totalUsage;
168
- // Log final token usage
169
- logRef.content += `[TOTAL TOKEN USAGE] Input: ${usage.inputTokens ?? 0}, Output: ${usage.outputTokens ?? 0}, Total: ${usage.totalTokens ?? 0}`;
170
- if (usage.cachedInputTokens ?? 0 > 0) {
171
- logRef.content += `, Cached: ${usage.cachedInputTokens ?? 0}`;
172
- }
173
- logRef.content += `\n`;
174
- return await streamOptions.onFinish?.(result);
175
- },
176
- onAbort: async () => {
177
- const abortTimestamp = new Date().toISOString();
178
- logRef.content += `=== LLM CONVERSATION ABORTED [${conversationId}] ===\n`;
179
- logRef.content += `Abort Timestamp: ${abortTimestamp}\n\n`;
180
- return await streamOptions.onAbort?.();
181
- },
182
- onFinally: async () => {
183
- // Save the log artifact
184
- try {
185
- const logArtifact = {
186
- type: "file",
187
- filePath: `llm-conversation-${conversationId}.log`,
188
- content: logRef.content,
189
- };
190
- const stepId = `llm-conversation-${conversationId}`;
191
- await saveArtifact(logArtifact, stepId, runTimestamp);
192
- getLogger().debug("LLM conversation log saved");
193
- }
194
- catch (error) {
195
- getLogger().error("Failed to save LLM conversation log", {
196
- error: {
197
- kind: "SaveLogError",
198
- message: error instanceof Error ? error.message : String(error),
199
- stack: error instanceof Error ? error.stack : undefined,
200
- },
201
- });
202
- }
203
- return await streamOptions.onFinally?.();
204
- },
205
- });
206
- },
207
- };
208
- },
209
- };
210
- }
211
- /**
212
- * Formats a message for logging.
213
- */
214
- function formatMessage(message) {
215
- const role = message.role.toUpperCase();
216
- if (typeof message.content === "string") {
217
- return `[${role}] ${message.content}\n\n`;
218
- }
219
- // Handle array content
220
- let output = `[${role}]\n`;
221
- for (const part of message.content) {
222
- if (part.type === "text") {
223
- output += ` ${part.text}\n`;
224
- }
225
- else if (part.type === "image") {
226
- output += ` [IMAGE]\n`;
227
- }
228
- else if (part.type === "tool-call") {
229
- output += ` [TOOL CALL] ${part.toolName}: ${safeJsonStringify(part.args)}\n`;
230
- }
231
- else if (part.type === "tool-result") {
232
- output += ` [TOOL RESULT] ${part.toolName}: ${safeJsonStringify(part.result)}\n`;
233
- }
234
- }
235
- output += "\n";
236
- return output;
237
- }
238
- //# sourceMappingURL=logging.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/interaction/middlewares/logging.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- /**
2
- * Profiler middleware for LLM interactions.
3
- *
4
- * This middleware creates performance traces for LLM operations including:
5
- * - Waiting for first token (waiting_on_llm span)
6
- * - Streaming response (stream_text span)
7
- * - Individual reasoning and text generation segments
8
- *
9
- * The traces are recorded in Perfetto format for visualization.
10
- */
11
- import type { ClarkProfiler } from "../../../profiler/clark-profiler.js";
12
- import type { StreamTextMiddleware } from "../middleware.js";
13
- /**
14
- * Options for configuring the profiler middleware.
15
- */
16
- export interface ProfilerMiddlewareOptions {
17
- /** The Clark profiler instance */
18
- profiler: ClarkProfiler;
19
- /** Model identifier for logging */
20
- modelId?: string;
21
- }
22
- /**
23
- * Creates a middleware that profiles LLM interactions.
24
- *
25
- * The middleware wraps the streamText call to create timing spans:
26
- * 1. waiting_on_llm: From call start to first token received
27
- * 2. stream_text: From first token to stream completion
28
- * 3. thinking/text_generation: Individual reasoning and text segments
29
- *
30
- * All timing data is recorded to the profiler for later export.
31
- *
32
- * @param options - Configuration for the middleware
33
- * @returns A StreamTextMiddleware
34
- *
35
- * @example
36
- * ```typescript
37
- * const middleware = createProfilerMiddleware({
38
- * profiler: services.clarkProfiler,
39
- * modelId: model.modelId
40
- * });
41
- *
42
- * const streamText = applyMiddleware(baseStreamText, middleware);
43
- * const result = await streamText({ model, messages, tools });
44
- * ```
45
- */
46
- export declare function createProfilerMiddleware(options: ProfilerMiddlewareOptions): StreamTextMiddleware;
47
- //# sourceMappingURL=profiler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiler.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/interaction/middlewares/profiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,kCAAkC;IAClC,QAAQ,EAAE,aAAa,CAAC;IAExB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,yBAAyB,GACjC,oBAAoB,CAwKtB"}
@@ -1,183 +0,0 @@
1
- /**
2
- * Profiler middleware for LLM interactions.
3
- *
4
- * This middleware creates performance traces for LLM operations including:
5
- * - Waiting for first token (waiting_on_llm span)
6
- * - Streaming response (stream_text span)
7
- * - Individual reasoning and text generation segments
8
- *
9
- * The traces are recorded in Perfetto format for visualization.
10
- */
11
- /**
12
- * Creates a middleware that profiles LLM interactions.
13
- *
14
- * The middleware wraps the streamText call to create timing spans:
15
- * 1. waiting_on_llm: From call start to first token received
16
- * 2. stream_text: From first token to stream completion
17
- * 3. thinking/text_generation: Individual reasoning and text segments
18
- *
19
- * All timing data is recorded to the profiler for later export.
20
- *
21
- * @param options - Configuration for the middleware
22
- * @returns A StreamTextMiddleware
23
- *
24
- * @example
25
- * ```typescript
26
- * const middleware = createProfilerMiddleware({
27
- * profiler: services.clarkProfiler,
28
- * modelId: model.modelId
29
- * });
30
- *
31
- * const streamText = applyMiddleware(baseStreamText, middleware);
32
- * const result = await streamText({ model, messages, tools });
33
- * ```
34
- */
35
- export function createProfilerMiddleware(options) {
36
- const { profiler, modelId } = options;
37
- return {
38
- wrap(provider) {
39
- return {
40
- async streamText(streamOptions) {
41
- let firstTokenReceived = false;
42
- let thinkingSpanActive = false;
43
- let textSpanActive = false;
44
- const thinkingTrack = "thinking";
45
- const textTrack = "text_generation";
46
- let stepCount = 0;
47
- // Start waiting span before the call
48
- profiler.startLLMWaiting({
49
- messages: streamOptions.messages,
50
- model: modelId || streamOptions.model.modelId || "unknown",
51
- });
52
- // Wrap onChunk to track first token and segment transitions
53
- const originalOnChunk = streamOptions.onChunk;
54
- const wrappedOnChunk = async (chunk) => {
55
- // Start streaming span on first token
56
- if (!firstTokenReceived) {
57
- firstTokenReceived = true;
58
- const firstChunk = chunk.chunk.type === "text-delta"
59
- ? chunk.chunk.text
60
- : chunk.chunk.type === "reasoning-delta"
61
- ? chunk.chunk.reasoning
62
- : undefined;
63
- profiler.startLLMStreaming({
64
- firstChunk,
65
- });
66
- }
67
- // Track reasoning segments
68
- if (chunk.chunk.type === "reasoning-delta") {
69
- if (!thinkingSpanActive) {
70
- profiler
71
- .getProfiler()
72
- .createTrack(thinkingTrack, "AI Thinking/Reasoning", "llm");
73
- profiler
74
- .getProfiler()
75
- .startFrame(`Thinking Step ${stepCount + 1}`, thinkingTrack);
76
- thinkingSpanActive = true;
77
- }
78
- }
79
- else if (thinkingSpanActive) {
80
- // End thinking span when switching to different chunk type
81
- profiler.getProfiler().endFrame(thinkingTrack);
82
- thinkingSpanActive = false;
83
- }
84
- // Track text generation segments
85
- if (chunk.chunk.type === "text-delta") {
86
- if (!textSpanActive) {
87
- profiler
88
- .getProfiler()
89
- .createTrack(textTrack, "Text Generation", "llm");
90
- profiler
91
- .getProfiler()
92
- .startFrame(`Text Generation Step ${stepCount + 1}`, textTrack);
93
- textSpanActive = true;
94
- }
95
- }
96
- else if (textSpanActive) {
97
- // End text span when switching to different chunk type
98
- profiler.getProfiler().endFrame(textTrack);
99
- textSpanActive = false;
100
- }
101
- // Call original onChunk if present
102
- if (originalOnChunk) {
103
- await originalOnChunk(chunk);
104
- }
105
- };
106
- // Wrap onStepFinish to track step count
107
- const originalOnStepFinish = streamOptions.onStepFinish;
108
- const wrappedOnStepFinish = async (step) => {
109
- stepCount++;
110
- // Call original onStepFinish if present
111
- if (originalOnStepFinish) {
112
- await originalOnStepFinish(step);
113
- }
114
- };
115
- // Wrap onFinish to end all active spans
116
- const originalOnFinish = streamOptions.onFinish;
117
- const wrappedOnFinish = async (result) => {
118
- // End streaming span if it was started
119
- if (firstTokenReceived) {
120
- profiler.endFrame(); // End stream_text
121
- }
122
- profiler.endFrame(); // End waiting_on_llm
123
- // End any active segment spans
124
- if (thinkingSpanActive) {
125
- profiler.getProfiler().endFrame(thinkingTrack);
126
- }
127
- if (textSpanActive) {
128
- profiler.getProfiler().endFrame(textTrack);
129
- }
130
- // Call original onFinish if present
131
- if (originalOnFinish) {
132
- await originalOnFinish(result);
133
- }
134
- };
135
- // Wrap onError to clean up spans on error
136
- const originalOnError = streamOptions.onError;
137
- const wrappedOnError = async (error) => {
138
- // End all active spans on error
139
- if (firstTokenReceived) {
140
- profiler.endFrame(); // End stream_text
141
- }
142
- profiler.endFrame(); // End waiting_on_llm
143
- if (thinkingSpanActive) {
144
- profiler.getProfiler().endFrame(thinkingTrack);
145
- }
146
- if (textSpanActive) {
147
- profiler.getProfiler().endFrame(textTrack);
148
- }
149
- // Call original onError if present
150
- if (originalOnError) {
151
- await originalOnError(error);
152
- }
153
- };
154
- // Call provider with wrapped callbacks
155
- try {
156
- return await provider.streamText({
157
- ...streamOptions,
158
- onChunk: wrappedOnChunk,
159
- onStepFinish: wrappedOnStepFinish,
160
- onFinish: wrappedOnFinish,
161
- onError: wrappedOnError,
162
- });
163
- }
164
- catch (error) {
165
- // Clean up spans if an error is thrown before onError is called
166
- if (firstTokenReceived) {
167
- profiler.endFrame();
168
- }
169
- profiler.endFrame();
170
- if (thinkingSpanActive) {
171
- profiler.getProfiler().endFrame(thinkingTrack);
172
- }
173
- if (textSpanActive) {
174
- profiler.getProfiler().endFrame(textTrack);
175
- }
176
- throw error;
177
- }
178
- },
179
- };
180
- },
181
- };
182
- }
183
- //# sourceMappingURL=profiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiler.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/interaction/middlewares/profiler.ts"],"names":[],"mappings":"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"}