@superblocksteam/vite-plugin-file-sync 2.0.83 → 2.0.84-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 (315) hide show
  1. package/dist/ai-service/agent/middleware.d.ts +36 -0
  2. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  3. package/dist/ai-service/agent/middleware.js +65 -1
  4. package/dist/ai-service/agent/middleware.js.map +1 -1
  5. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts +1 -1
  6. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  7. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +101 -57
  8. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  9. package/dist/ai-service/agent/tool-message-utils.js +1 -1
  10. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  11. package/dist/ai-service/agent/tools/apis/api-executor.js +1 -1
  12. package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -1
  13. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -1
  14. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +1 -1
  15. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
  16. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
  17. package/dist/ai-service/agent/tools/apis/build-api-artifact.js +23 -7
  18. package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
  19. package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
  20. package/dist/ai-service/agent/tools/apis/build-api.js +36 -19
  21. package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
  22. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +1 -1
  23. package/dist/ai-service/agent/tools/apis/sample-json.js +1 -1
  24. package/dist/ai-service/agent/tools/apis/sample-json.js.map +1 -1
  25. package/dist/ai-service/agent/tools/apis/test-api.d.ts +11 -1
  26. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  27. package/dist/ai-service/agent/tools/apis/test-api.js +95 -54
  28. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  29. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +6 -1
  30. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
  31. package/dist/ai-service/agent/tools/build-capture-screenshot.js +26 -12
  32. package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
  33. package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
  34. package/dist/ai-service/agent/tools/build-debug.js +30 -10
  35. package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
  36. package/dist/ai-service/agent/tools/build-delete-file.d.ts.map +1 -1
  37. package/dist/ai-service/agent/tools/build-delete-file.js +6 -2
  38. package/dist/ai-service/agent/tools/build-delete-file.js.map +1 -1
  39. package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
  40. package/dist/ai-service/agent/tools/build-edit-file.js +20 -5
  41. package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
  42. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  43. package/dist/ai-service/agent/tools/build-finalize.js +30 -4
  44. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  45. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +1 -1
  46. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
  47. package/dist/ai-service/agent/tools/build-multi-edit-file.js +14 -4
  48. package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
  49. package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -1
  50. package/dist/ai-service/agent/tools/build-read-file.js +23 -11
  51. package/dist/ai-service/agent/tools/build-read-file.js.map +1 -1
  52. package/dist/ai-service/agent/tools/debug-cache.js +1 -1
  53. package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
  54. package/dist/ai-service/agent/tools/get-logs.d.ts +72 -0
  55. package/dist/ai-service/agent/tools/get-logs.d.ts.map +1 -0
  56. package/dist/ai-service/agent/tools/get-logs.js +343 -0
  57. package/dist/ai-service/agent/tools/get-logs.js.map +1 -0
  58. package/dist/ai-service/agent/tools/index.d.ts +1 -1
  59. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  60. package/dist/ai-service/agent/tools/index.js +1 -1
  61. package/dist/ai-service/agent/tools/index.js.map +1 -1
  62. package/dist/ai-service/agent/tools/integrations/errors.d.ts +9 -0
  63. package/dist/ai-service/agent/tools/integrations/errors.d.ts.map +1 -0
  64. package/dist/ai-service/agent/tools/integrations/errors.js +35 -0
  65. package/dist/ai-service/agent/tools/integrations/errors.js.map +1 -0
  66. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
  67. package/dist/ai-service/agent/tools/integrations/execute-request.js +20 -5
  68. package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
  69. package/dist/ai-service/agent/tools/integrations/internal.d.ts.map +1 -1
  70. package/dist/ai-service/agent/tools/integrations/internal.js +12 -3
  71. package/dist/ai-service/agent/tools/integrations/internal.js.map +1 -1
  72. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  73. package/dist/ai-service/agent/tools.js +19 -28
  74. package/dist/ai-service/agent/tools.js.map +1 -1
  75. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  76. package/dist/ai-service/agent/tools2/registry.js +37 -15
  77. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  78. package/dist/ai-service/agent/tools2/tools/bash.d.ts +1 -1
  79. package/dist/ai-service/agent/tools2/tools/edit.d.ts.map +1 -1
  80. package/dist/ai-service/agent/tools2/tools/edit.js +9 -4
  81. package/dist/ai-service/agent/tools2/tools/edit.js.map +1 -1
  82. package/dist/ai-service/agent/tools2/tools/grep.d.ts.map +1 -1
  83. package/dist/ai-service/agent/tools2/tools/grep.js +73 -7
  84. package/dist/ai-service/agent/tools2/tools/grep.js.map +1 -1
  85. package/dist/ai-service/agent/tools2/tools/read.d.ts.map +1 -1
  86. package/dist/ai-service/agent/tools2/tools/read.js +9 -4
  87. package/dist/ai-service/agent/tools2/tools/read.js.map +1 -1
  88. package/dist/ai-service/agent/tools2/types.d.ts +40 -8
  89. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  90. package/dist/ai-service/agent/tools2/types.js +41 -3
  91. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  92. package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.d.ts +0 -1
  93. package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.d.ts.map +1 -1
  94. package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.js +60 -54
  95. package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.js.map +1 -1
  96. package/dist/ai-service/chat/chat-session-store.d.ts +6 -0
  97. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  98. package/dist/ai-service/chat/chat-session-store.js +44 -0
  99. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  100. package/dist/ai-service/facts/helpers.d.ts +9 -0
  101. package/dist/ai-service/facts/helpers.d.ts.map +1 -0
  102. package/dist/ai-service/facts/helpers.js +72 -0
  103. package/dist/ai-service/facts/helpers.js.map +1 -0
  104. package/dist/ai-service/facts/index.d.ts +4 -0
  105. package/dist/ai-service/facts/index.d.ts.map +1 -0
  106. package/dist/ai-service/facts/index.js +3 -0
  107. package/dist/ai-service/facts/index.js.map +1 -0
  108. package/dist/ai-service/facts/knowledge-manager.d.ts +50 -0
  109. package/dist/ai-service/facts/knowledge-manager.d.ts.map +1 -0
  110. package/dist/ai-service/facts/knowledge-manager.js +195 -0
  111. package/dist/ai-service/facts/knowledge-manager.js.map +1 -0
  112. package/dist/ai-service/features.d.ts +8 -0
  113. package/dist/ai-service/features.d.ts.map +1 -1
  114. package/dist/ai-service/features.js +8 -0
  115. package/dist/ai-service/features.js.map +1 -1
  116. package/dist/ai-service/index.d.ts +34 -2
  117. package/dist/ai-service/index.d.ts.map +1 -1
  118. package/dist/ai-service/index.js +112 -18
  119. package/dist/ai-service/index.js.map +1 -1
  120. package/dist/ai-service/integrations/metadata-storage/local.d.ts.map +1 -1
  121. package/dist/ai-service/integrations/metadata-storage/local.js +4 -2
  122. package/dist/ai-service/integrations/metadata-storage/local.js.map +1 -1
  123. package/dist/ai-service/integrations/store.d.ts +6 -3
  124. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  125. package/dist/ai-service/integrations/store.js +96 -6
  126. package/dist/ai-service/integrations/store.js.map +1 -1
  127. package/dist/ai-service/judge/judge-executor.js +1 -1
  128. package/dist/ai-service/judge/judge-executor.js.map +1 -1
  129. package/dist/ai-service/judge/tools/playwright-action.d.ts +1 -1
  130. package/dist/ai-service/llm/client.d.ts.map +1 -1
  131. package/dist/ai-service/llm/client.js +26 -13
  132. package/dist/ai-service/llm/client.js.map +1 -1
  133. package/dist/ai-service/llm/context-v2/adapter.d.ts +2 -0
  134. package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -1
  135. package/dist/ai-service/llm/context-v2/adapter.js +6 -0
  136. package/dist/ai-service/llm/context-v2/adapter.js.map +1 -1
  137. package/dist/ai-service/llm/context-v2/context.d.ts +19 -0
  138. package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
  139. package/dist/ai-service/llm/context-v2/context.js +64 -1
  140. package/dist/ai-service/llm/context-v2/context.js.map +1 -1
  141. package/dist/ai-service/llm/context-v2/conversation-context.d.ts +11 -1
  142. package/dist/ai-service/llm/context-v2/conversation-context.d.ts.map +1 -1
  143. package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
  144. package/dist/ai-service/llm/context-v2/manager.js +5 -0
  145. package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
  146. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts +1 -1
  147. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts.map +1 -1
  148. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js +42 -6
  149. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js.map +1 -1
  150. package/dist/ai-service/llm/context-v2/types.d.ts +4 -0
  151. package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
  152. package/dist/ai-service/llm/context-v2/types.js.map +1 -1
  153. package/dist/ai-service/llm/error.js +1 -1
  154. package/dist/ai-service/llm/error.js.map +1 -1
  155. package/dist/ai-service/llm/interaction/adapters/vercel.js +5 -5
  156. package/dist/ai-service/llm/stream/config.d.ts +1 -1
  157. package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
  158. package/dist/ai-service/llm/stream/config.js.map +1 -1
  159. package/dist/ai-service/llm/stream/observers/llmobs.js +1 -1
  160. package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
  161. package/dist/ai-service/llm/stream/observers/logging.d.ts +20 -0
  162. package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -1
  163. package/dist/ai-service/llm/stream/observers/logging.js +115 -18
  164. package/dist/ai-service/llm/stream/observers/logging.js.map +1 -1
  165. package/dist/ai-service/llm/stream/observers/retry-notification.d.ts.map +1 -1
  166. package/dist/ai-service/llm/stream/observers/retry-notification.js +2 -1
  167. package/dist/ai-service/llm/stream/observers/retry-notification.js.map +1 -1
  168. package/dist/ai-service/llm/stream/orchestrator.js +4 -4
  169. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  170. package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
  171. package/dist/ai-service/llm/stream/retry-engine.js +1 -1
  172. package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
  173. package/dist/ai-service/llmobs/otel-exporter.d.ts +111 -14
  174. package/dist/ai-service/llmobs/otel-exporter.d.ts.map +1 -1
  175. package/dist/ai-service/llmobs/otel-exporter.js +441 -66
  176. package/dist/ai-service/llmobs/otel-exporter.js.map +1 -1
  177. package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
  178. package/dist/ai-service/llmobs/tracer.js +40 -4
  179. package/dist/ai-service/llmobs/tracer.js.map +1 -1
  180. package/dist/ai-service/mcp/playwright-server.d.ts.map +1 -1
  181. package/dist/ai-service/mcp/playwright-server.js +11 -2
  182. package/dist/ai-service/mcp/playwright-server.js.map +1 -1
  183. package/dist/ai-service/recording/index.d.ts +25 -0
  184. package/dist/ai-service/recording/index.d.ts.map +1 -0
  185. package/dist/ai-service/recording/index.js +27 -0
  186. package/dist/ai-service/recording/index.js.map +1 -0
  187. package/dist/ai-service/recording/recorders/llm-recorder.d.ts +35 -0
  188. package/dist/ai-service/recording/recorders/llm-recorder.d.ts.map +1 -0
  189. package/dist/ai-service/recording/recorders/llm-recorder.js +221 -0
  190. package/dist/ai-service/recording/recorders/llm-recorder.js.map +1 -0
  191. package/dist/ai-service/recording/recorders/socket-recorder.d.ts +38 -0
  192. package/dist/ai-service/recording/recorders/socket-recorder.d.ts.map +1 -0
  193. package/dist/ai-service/recording/recorders/socket-recorder.js +44 -0
  194. package/dist/ai-service/recording/recorders/socket-recorder.js.map +1 -0
  195. package/dist/ai-service/recording/recorders/tool-recorder.d.ts +25 -0
  196. package/dist/ai-service/recording/recorders/tool-recorder.d.ts.map +1 -0
  197. package/dist/ai-service/recording/recorders/tool-recorder.js +58 -0
  198. package/dist/ai-service/recording/recorders/tool-recorder.js.map +1 -0
  199. package/dist/ai-service/recording/recording-manager.d.ts +104 -0
  200. package/dist/ai-service/recording/recording-manager.d.ts.map +1 -0
  201. package/dist/ai-service/recording/recording-manager.js +308 -0
  202. package/dist/ai-service/recording/recording-manager.js.map +1 -0
  203. package/dist/ai-service/recording/storage/session-recording-storage.d.ts +143 -0
  204. package/dist/ai-service/recording/storage/session-recording-storage.d.ts.map +1 -0
  205. package/dist/ai-service/recording/storage/session-recording-storage.js +374 -0
  206. package/dist/ai-service/recording/storage/session-recording-storage.js.map +1 -0
  207. package/dist/ai-service/recording/types.d.ts +148 -0
  208. package/dist/ai-service/recording/types.d.ts.map +1 -0
  209. package/dist/ai-service/recording/types.js +8 -0
  210. package/dist/ai-service/recording/types.js.map +1 -0
  211. package/dist/ai-service/security/safety-classifier.d.ts.map +1 -1
  212. package/dist/ai-service/security/safety-classifier.js +9 -3
  213. package/dist/ai-service/security/safety-classifier.js.map +1 -1
  214. package/dist/ai-service/skills/index.d.ts +23 -11
  215. package/dist/ai-service/skills/index.d.ts.map +1 -1
  216. package/dist/ai-service/skills/index.js +86 -21
  217. package/dist/ai-service/skills/index.js.map +1 -1
  218. package/dist/ai-service/skills/system/_registry.generated.d.ts +6 -0
  219. package/dist/ai-service/skills/system/_registry.generated.d.ts.map +1 -0
  220. package/dist/ai-service/skills/system/_registry.generated.js +24 -0
  221. package/dist/ai-service/skills/system/_registry.generated.js.map +1 -0
  222. package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.d.ts +1 -1
  223. package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.d.ts.map +1 -1
  224. package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.js +56 -0
  225. package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.js.map +1 -1
  226. package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.d.ts +1 -1
  227. package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.d.ts.map +1 -1
  228. package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.js +143 -11
  229. package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.js.map +1 -1
  230. package/dist/ai-service/skills/system/superblocks-api/skill.generated.d.ts +1 -1
  231. package/dist/ai-service/skills/system/superblocks-api/skill.generated.d.ts.map +1 -1
  232. package/dist/ai-service/skills/system/superblocks-api/skill.generated.js +130 -3
  233. package/dist/ai-service/skills/system/superblocks-api/skill.generated.js.map +1 -1
  234. package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.d.ts +2 -0
  235. package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.d.ts.map +1 -0
  236. package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.js +155 -0
  237. package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.js.map +1 -0
  238. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +1 -1
  239. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -1
  240. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +97 -17
  241. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -1
  242. package/dist/ai-service/skills/types.d.ts +24 -0
  243. package/dist/ai-service/skills/types.d.ts.map +1 -1
  244. package/dist/ai-service/skills/types.js +45 -0
  245. package/dist/ai-service/skills/types.js.map +1 -1
  246. package/dist/ai-service/state-machine/clark-fsm.d.ts +33 -2
  247. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  248. package/dist/ai-service/state-machine/clark-fsm.js +6 -1
  249. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  250. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  251. package/dist/ai-service/state-machine/handlers/agent-planning.js +24 -21
  252. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  253. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  254. package/dist/ai-service/state-machine/handlers/llm-generating.js +120 -5
  255. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  256. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  257. package/dist/ai-service/state-machine/mocks.js +23 -0
  258. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  259. package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
  260. package/dist/ai-service/state-machine/traced-fsm.js +1 -1
  261. package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
  262. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  263. package/dist/file-sync-vite-plugin.js +52 -22
  264. package/dist/file-sync-vite-plugin.js.map +1 -1
  265. package/dist/ids.d.ts +1 -0
  266. package/dist/ids.d.ts.map +1 -1
  267. package/dist/ids.js +3 -0
  268. package/dist/ids.js.map +1 -1
  269. package/dist/refactor/entities.d.ts.map +1 -1
  270. package/dist/refactor/entities.js +0 -1
  271. package/dist/refactor/entities.js.map +1 -1
  272. package/dist/socket-manager.d.ts.map +1 -1
  273. package/dist/socket-manager.js +26 -4
  274. package/dist/socket-manager.js.map +1 -1
  275. package/dist/sync-service/index.d.ts +4 -0
  276. package/dist/sync-service/index.d.ts.map +1 -1
  277. package/dist/sync-service/index.js +6 -0
  278. package/dist/sync-service/index.js.map +1 -1
  279. package/dist/util/log-sanitizer.d.ts +42 -0
  280. package/dist/util/log-sanitizer.d.ts.map +1 -0
  281. package/dist/util/log-sanitizer.js +177 -0
  282. package/dist/util/log-sanitizer.js.map +1 -0
  283. package/dist/util/logger.d.ts +4 -0
  284. package/dist/util/logger.d.ts.map +1 -1
  285. package/dist/util/logger.js +77 -19
  286. package/dist/util/logger.js.map +1 -1
  287. package/package.json +17 -14
  288. package/dist/ai-service/agent/tools/get-console-logs.d.ts +0 -29
  289. package/dist/ai-service/agent/tools/get-console-logs.d.ts.map +0 -1
  290. package/dist/ai-service/agent/tools/get-console-logs.js +0 -171
  291. package/dist/ai-service/agent/tools/get-console-logs.js.map +0 -1
  292. package/dist/ai-service/test-utils/anthropic-service-mock.d.ts +0 -2
  293. package/dist/ai-service/test-utils/anthropic-service-mock.d.ts.map +0 -1
  294. package/dist/ai-service/test-utils/anthropic-service-mock.js +0 -91
  295. package/dist/ai-service/test-utils/anthropic-service-mock.js.map +0 -1
  296. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts +0 -3
  297. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts.map +0 -1
  298. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js +0 -886
  299. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js.map +0 -1
  300. package/dist/ai-service/test-utils/app-generation-mocks/reprompt.d.ts +0 -3
  301. package/dist/ai-service/test-utils/app-generation-mocks/reprompt.d.ts.map +0 -1
  302. package/dist/ai-service/test-utils/app-generation-mocks/reprompt.js +0 -70
  303. package/dist/ai-service/test-utils/app-generation-mocks/reprompt.js.map +0 -1
  304. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts +0 -3
  305. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts.map +0 -1
  306. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js +0 -109
  307. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js.map +0 -1
  308. package/dist/ai-service/test-utils/mock-utils.d.ts +0 -12
  309. package/dist/ai-service/test-utils/mock-utils.d.ts.map +0 -1
  310. package/dist/ai-service/test-utils/mock-utils.js +0 -70
  311. package/dist/ai-service/test-utils/mock-utils.js.map +0 -1
  312. package/dist/ai-service/util/safe-stringify.d.ts +0 -2
  313. package/dist/ai-service/util/safe-stringify.d.ts.map +0 -1
  314. package/dist/ai-service/util/safe-stringify.js +0 -75
  315. package/dist/ai-service/util/safe-stringify.js.map +0 -1
@@ -1,171 +0,0 @@
1
- import z from "zod";
2
- import { createToolFactory, ToolCategory } from "../tools2/types.js";
3
- // Default truncation limit for messages (5KB)
4
- const DEFAULT_MESSAGE_TRUNCATE_LIMIT = 5 * 1024;
5
- /**
6
- * Truncates a string to a maximum number of characters, adding a truncation indicator if needed.
7
- */
8
- function truncateMessage(str, maxChars) {
9
- if (str.length <= maxChars) {
10
- return { text: str, truncated: false, originalLength: str.length };
11
- }
12
- return {
13
- text: str.slice(0, maxChars) +
14
- `... [truncated, ${str.length - maxChars} more chars]`,
15
- truncated: true,
16
- originalLength: str.length,
17
- };
18
- }
19
- export const buildGetConsoleLogsToolFactory = createToolFactory("get_console_logs", ({ clark }) => {
20
- return {
21
- category: ToolCategory.DEBUG,
22
- description: `
23
- Retrieve console logs from the user's application.
24
-
25
- Captures console.log(), console.info(), console.debug(), console.warn(), and console.error() calls from the user's app running in the browser.
26
-
27
- Use this tool to: investigate warnings, review error messages, or understand application errors.
28
-
29
- Returns an array of console log entries with:
30
- - id: unique identifier for the log entry
31
- - timestamp: when the log was created (milliseconds since epoch)
32
- - timeAgo: human-readable relative time (e.g., "2 minutes ago", "just now")
33
- - level: log level (log/info/debug/warn/error)
34
- - message: the logged message (may be truncated by default)
35
- - messageTruncated: boolean indicating if the message was truncated
36
- - stack: stack trace (may be truncated by default)
37
- - generationTimestamp: ISO timestamp of when log was captured
38
-
39
- Logs are sorted by timestamp (most recent first) and retained for 10 minutes.
40
-
41
- **Filtering options:**
42
- - level: Filter by specific log level (log/info/debug/warn/error)
43
- - prefix: Filter logs where the message starts with this prefix (e.g., "[DEBUG]")
44
- - limit: Maximum number of logs to return (default: 50)
45
-
46
- **Content control:**
47
- - fullContent: Set to true to retrieve full (non-truncated) messages. Use sparingly to avoid large responses.
48
- - maxMessageLength: Custom max length for message truncation (default: 5000 chars)
49
-
50
- Returns:
51
- - logs: Array of log entries (most recent first)
52
- - count: Number of logs returned
53
- - totalCount: Total number of logs in buffer
54
- - truncatedCount: Number of logs with truncated messages
55
-
56
- Note: Logs older than 10 minutes are automatically removed.
57
- `,
58
- inputSchema: z.object({
59
- level: z
60
- .enum(["log", "info", "debug", "warn", "error"])
61
- .optional()
62
- .describe("Filter logs by level"),
63
- prefix: z
64
- .string()
65
- .min(3, "Prefix must be at least 3 characters")
66
- .optional()
67
- .describe("Filter logs where message starts with this prefix (e.g., '[DEBUG]', 'Error:')"),
68
- limit: z
69
- .number()
70
- .positive()
71
- .max(200)
72
- .optional()
73
- .describe("Maximum number of logs to return (most recent first). Default: 50, max: 200."),
74
- fullContent: z
75
- .boolean()
76
- .optional()
77
- .describe("If true, return full (non-truncated) messages. Use when you need to see complete log content for specific entries."),
78
- maxMessageLength: z
79
- .number()
80
- .positive()
81
- .optional()
82
- .describe("Maximum characters per message before truncation. Default: 5000. Ignored if fullContent is true."),
83
- }),
84
- execute: async ({ level, prefix, limit, fullContent, maxMessageLength, }) => {
85
- const allLogs = clark.context.consoleLogs ?? [];
86
- const now = Date.now();
87
- const effectiveLimit = limit ?? 50;
88
- const truncateLimit = maxMessageLength ?? DEFAULT_MESSAGE_TRUNCATE_LIMIT;
89
- // Helper function to format relative time
90
- const formatTimeAgo = (timestamp) => {
91
- const seconds = Math.floor((now - timestamp) / 1000);
92
- if (seconds < 10)
93
- return "just now";
94
- if (seconds < 60)
95
- return `${seconds} seconds ago`;
96
- const minutes = Math.floor(seconds / 60);
97
- return `${minutes} ${minutes === 1 ? "minute" : "minutes"} ago`;
98
- };
99
- // Filter by level if specified
100
- let logs = level
101
- ? allLogs.filter((log) => log.level === level)
102
- : allLogs;
103
- // Filter by prefix if specified
104
- if (prefix) {
105
- logs = logs.filter((log) => typeof log.message === "string" && log.message.startsWith(prefix));
106
- }
107
- // Sort by timestamp descending (most recent first)
108
- logs = logs
109
- .sort((a, b) => (b.timestamp ?? 0) - (a.timestamp ?? 0))
110
- .slice(0, effectiveLimit);
111
- let truncatedCount = 0;
112
- // Process logs: add timeAgo and handle truncation
113
- const processedLogs = logs.map((log) => {
114
- const shouldTruncate = !fullContent;
115
- const message = typeof log.message === "string"
116
- ? log.message
117
- : String(log.message ?? "");
118
- // Truncate message if needed
119
- const messageResult = shouldTruncate
120
- ? truncateMessage(message, truncateLimit)
121
- : {
122
- text: message,
123
- truncated: false,
124
- originalLength: message.length,
125
- };
126
- // Truncate stack if present and truncation is enabled
127
- const stack = typeof log.stack === "string" ? log.stack : undefined;
128
- const stackResult = stack
129
- ? shouldTruncate
130
- ? truncateMessage(stack, truncateLimit)
131
- : {
132
- text: stack,
133
- truncated: false,
134
- originalLength: stack.length,
135
- }
136
- : undefined;
137
- if (messageResult.truncated || stackResult?.truncated) {
138
- truncatedCount++;
139
- }
140
- return {
141
- id: log.id,
142
- timestamp: log.timestamp,
143
- timeAgo: log.timestamp ? formatTimeAgo(log.timestamp) : "unknown",
144
- level: log.level,
145
- message: messageResult.text,
146
- messageTruncated: messageResult.truncated,
147
- messageOriginalLength: messageResult.truncated
148
- ? messageResult.originalLength
149
- : undefined,
150
- stack: stackResult?.text,
151
- stackTruncated: stackResult?.truncated,
152
- generationTimestamp: log.generationTimestamp,
153
- };
154
- });
155
- return {
156
- logs: processedLogs,
157
- count: processedLogs.length,
158
- totalCount: allLogs.length,
159
- truncatedCount,
160
- };
161
- },
162
- readOnly: true,
163
- getSummary: (_input, output) => {
164
- const count = output.count ?? 0;
165
- return {
166
- output: `${count} log${count === 1 ? "" : "s"}`,
167
- };
168
- },
169
- };
170
- });
171
- //# sourceMappingURL=get-console-logs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-console-logs.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/get-console-logs.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare const mockAnthropicFetch: (url: URL | RequestInfo, init?: RequestInit) => Promise<Response>;
2
- //# sourceMappingURL=anthropic-service-mock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic-service-mock.d.ts","sourceRoot":"","sources":["../../../src/ai-service/test-utils/anthropic-service-mock.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,GAC7B,KAAK,GAAG,GAAG,WAAW,EACtB,OAAO,WAAW,KACjB,OAAO,CAAC,QAAQ,CAkGlB,CAAC"}
@@ -1,91 +0,0 @@
1
- import { getMockContent, getPromptFromRequest, splitGenMockIntoChunks, } from "./mock-utils.js";
2
- export const mockAnthropicFetch = async (url, init) => {
3
- try {
4
- // Check if this is a streaming request
5
- const body = init?.body ? JSON.parse(init.body) : {};
6
- const isStreaming = body.stream === true;
7
- // If not streaming, fall back to the original fetch
8
- if (!isStreaming) {
9
- return fetch(url, init);
10
- }
11
- console.log("Streaming request detected, using mock response");
12
- const chunks = [
13
- {
14
- type: "step-start",
15
- messageId: "msg-bw66bqzcY13TQo3d4WCFpg2G",
16
- request: {},
17
- warnings: [],
18
- },
19
- ];
20
- const userPrompt = getPromptFromRequest(init);
21
- const mockContent = getMockContent(userPrompt);
22
- // Split the content into smaller chunks to simulate streaming
23
- const contentChunks = splitGenMockIntoChunks(mockContent);
24
- for (const chunk of contentChunks) {
25
- chunks.push({
26
- type: "text-delta",
27
- textDelta: chunk,
28
- });
29
- }
30
- chunks.push(...[
31
- {
32
- type: "step-finish",
33
- finishReason: "stop",
34
- usage: { promptTokens: 31, completionTokens: 133, totalTokens: 164 },
35
- request: {},
36
- response: {
37
- id: "aitxt-yNkqOHEI21FICqDQwPHMY6Zy",
38
- modelId: "us.anthropic.claude-sonnet-4-20250514-v1:0",
39
- headers: {
40
- connection: "keep-alive",
41
- "content-type": "application/vnd.amazon.eventstream",
42
- "transfer-encoding": "chunked",
43
- },
44
- },
45
- warnings: [],
46
- isContinued: false,
47
- messageId: "msg-bw66bqzcY13TQo3d4WCFpg2G",
48
- },
49
- {
50
- type: "finish",
51
- finishReason: "stop",
52
- usage: { promptTokens: 31, completionTokens: 133, totalTokens: 164 },
53
- response: {
54
- id: "aitxt-yNkqOHEI21FICqDQwPHMY6Zy",
55
- modelId: "us.anthropic.claude-sonnet-4-20250514-v1:0",
56
- headers: {
57
- connection: "keep-alive",
58
- "content-type": "application/vnd.amazon.eventstream",
59
- "transfer-encoding": "chunked",
60
- },
61
- },
62
- },
63
- ]);
64
- const encoder = new TextEncoder();
65
- const stream = new ReadableStream({
66
- async start(controller) {
67
- for (const chunk of chunks) {
68
- const json = JSON.stringify(chunk);
69
- const data = encoder.encode(`data: ${json}\n\n`);
70
- await new Promise((resolve) => setTimeout(resolve, 20));
71
- controller.enqueue(data);
72
- }
73
- controller.close();
74
- },
75
- });
76
- return new Response(stream, {
77
- status: 200,
78
- headers: {
79
- "Content-Type": "text/event-stream",
80
- },
81
- });
82
- }
83
- catch (error) {
84
- console.error("Error in mockAnthropicFetch", error);
85
- return new Response(JSON.stringify({ error: "Internal server error" }), {
86
- status: 500,
87
- headers: { "Content-Type": "application/json" },
88
- });
89
- }
90
- };
91
- //# sourceMappingURL=anthropic-service-mock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic-service-mock.js","sourceRoot":"","sources":["../../../src/ai-service/test-utils/anthropic-service-mock.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- declare const _default: "BUILDING APPLICATION FROM MOCK RESPONSE: I'll create a comprehensive order management app with CRUD operations using the DemoOrders and DemoShipping databases.\n\n<boltArtifact id=\"order-management-app\" title=\"Order Management App\">\n\n<boltAction type=\"file\" filePath=\"pages/Page1/scope.ts\">\nimport {\n createScope,\n SbApi,\n StateVar,\n StateVarPersistence,\n computed,\n} from \"@superblocksteam/library\";\n\nexport const Page1Scope = createScope<{\n OrdersTable: any;\n ProductFilterInput: any;\n CreateOrderModal: any;\n EditOrderModal: any;\n OrderDetailsModal: any;\n CreateOrderButton: any;\n NewOrderProductInput: any;\n NewOrderUserEmailInput: any;\n NewOrderPriceInput: any;\n NewOrderImageInput: any;\n EditOrderProductInput: any;\n EditOrderUserEmailInput: any;\n EditOrderPriceInput: any;\n EditOrderImageInput: any;\n}>(\n ({\n entities: {\n OrdersTable,\n ProductFilterInput,\n getMetricsApi,\n getOrdersApi,\n getOrderDetailsApi,\n getShippingInfoApi,\n createOrderApi,\n updateOrderApi,\n deleteOrderApi,\n NewOrderProductInput,\n NewOrderUserEmailInput,\n NewOrderPriceInput,\n NewOrderImageInput,\n EditOrderProductInput,\n EditOrderUserEmailInput,\n EditOrderPriceInput,\n EditOrderImageInput,\n },\n }) => ({\n getMetricsApi: SbApi({}),\n getOrdersApi: SbApi({}),\n getOrderDetailsApi: SbApi({}),\n getShippingInfoApi: SbApi({}),\n createOrderApi: SbApi({}),\n updateOrderApi: SbApi({}),\n deleteOrderApi: SbApi({}),\n\n filteredOrdersVar: StateVar({\n defaultValue: computed(() => {\n const orders = getOrdersApi.response || [];\n const filterText = ProductFilterInput.value?.toLowerCase() || '';\n\n if (!filterText) return orders;\n\n return orders.filter((order: any) =>\n order.product?.toLowerCase().includes(filterText)\n );\n }),\n persistence: StateVarPersistence.TEMPORARY,\n }),\n }),\n {\n name: \"Page1\",\n }\n);\n\nexport const Page1 = Page1Scope.entities;\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/index.tsx\">\nimport {\n Page,\n Dim,\n Section,\n Column,\n registerPage,\n Table,\n computed,\n Container,\n Input,\n Button,\n EventFlow,\n Modal,\n Text,\n Theme,\n} from \"@superblocksteam/library\";\nimport MetricCard from \"components/MetricCard/MetricCard\";\nimport AppHeader from \"components/AppHeader/AppHeader\";\nimport KeyValue from \"components/KeyValue\";\nimport { Page1, Page1Scope } from \"./scope\";\n\nfunction PageContent() {\n const {\n OrdersTable,\n ProductFilterInput,\n CreateOrderModal,\n EditOrderModal,\n CreateOrderButton,\n OrderDetailsModal,\n NewOrderProductInput,\n NewOrderUserEmailInput,\n NewOrderPriceInput,\n NewOrderImageInput,\n EditOrderProductInput,\n EditOrderUserEmailInput,\n EditOrderPriceInput,\n EditOrderImageInput,\n getMetricsApi,\n getOrdersApi,\n getOrderDetailsApi,\n getShippingInfoApi,\n createOrderApi,\n updateOrderApi,\n deleteOrderApi,\n filteredOrdersVar,\n } = Page1;\n\n return (\n <Page\n name=\"Page1\"\n height={Dim.fill()}\n width={Dim.fill()}\n onLoad={EventFlow.runApis([getMetricsApi, getOrdersApi])}\n >\n <Section height={Dim.fill()}>\n <Column width={Dim.fill()} spacing={Dim.px(0)}>\n <AppHeader\n title=\"Order Management\"\n avatarUrl=\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=40&h=40&fit=crop&crop=face\"\n userEmail=\"admin@company.com\"\n height={Dim.fit()}\n />\n\n <Container\n layout=\"vertical\"\n spacing={Dim.px(24)}\n padding={{\n top: Dim.px(24),\n bottom: Dim.px(24),\n left: Dim.px(24),\n right: Dim.px(24),\n }}\n height={Dim.fill()}\n >\n {/* Metrics Cards */}\n <Container layout=\"horizontal\" spacing={Dim.px(16)}>\n <MetricCard\n title=\"Total Orders\"\n value={computed(() => getMetricsApi.response?.totalOrders?.toString() || \"0\")}\n icon=\"receipt_long\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Total Revenue\"\n value={computed(() => `$${getMetricsApi.response?.totalRevenue?.toLocaleString() || \"0\"}`)}\n icon=\"attach_money\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Orders This Month\"\n value={computed(() => getMetricsApi.response?.ordersThisMonth?.toString() || \"0\")}\n icon=\"calendar_today\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Active Shipments\"\n value={computed(() => getMetricsApi.response?.activeShipments?.toString() || \"0\")}\n icon=\"local_shipping\"\n width={Dim.fill()}\n />\n </Container>\n\n {/* Orders Section */}\n <Container layout=\"vertical\" spacing={Dim.px(16)} variant=\"card\">\n <Container layout=\"horizontal\" spacing={Dim.px(12)} verticalAlign=\"bottom\">\n <Input\n bind={ProductFilterInput}\n label=\"Filter by Product\"\n placeholder=\"Search products...\"\n width={Dim.px(300)}\n />\n <Button\n bind={CreateOrderButton}\n label=\"Create Order\"\n variant=\"primary\"\n icon=\"add\"\n onClick={EventFlow.controlModal(CreateOrderModal, { action: \"open\" })}\n />\n </Container>\n\n <Table\n bind={OrdersTable}\n tableData={computed(() => filteredOrdersVar.value)}\n columns={{\n id: {\n label: \"Order ID\",\n columnType: \"text\",\n },\n product: {\n label: \"Product\",\n columnType: \"text\",\n },\n user_email: {\n label: \"Customer Email\",\n columnType: \"email\",\n },\n date_purchased: {\n label: \"Date Purchased\",\n columnType: \"date\",\n inputFormat: \"YYYY-MM-DD\",\n outputFormat: \"MM/DD/YYYY\",\n },\n price: {\n label: \"Price\",\n columnType: \"currency\",\n currency: \"USD\",\n },\n actions: {\n label: \"Actions\",\n columnType: \"button\",\n buttonLabel: \"View Details\",\n onClick: EventFlow.runJS(() => {\n getOrderDetailsApi.run();\n getShippingInfoApi.run();\n }).controlModal(OrderDetailsModal, { action: \"open\" }),\n },\n }}\n onRowClick={EventFlow.runJS(() => {\n EditOrderProductInput.text = OrdersTable.selectedRow?.product || \"\";\n EditOrderUserEmailInput.text = OrdersTable.selectedRow?.user_email || \"\";\n EditOrderPriceInput.text = OrdersTable.selectedRow?.price?.toString() || \"\";\n EditOrderImageInput.text = OrdersTable.selectedRow?.image || \"\";\n }).controlModal(EditOrderModal, { action: \"open\" })}\n height={Dim.px(400)}\n />\n </Container>\n </Container>\n </Column>\n </Section>\n\n {/* Create Order Modal */}\n <Modal bind={CreateOrderModal}>\n <Container layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <Text text=\"Create New Order\" textStyle={{ variant: \"heading3\" }} />\n\n <Container layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <Input\n bind={NewOrderProductInput}\n label=\"Product Name\"\n placeholder=\"Enter product name\"\n width={Dim.fill()}\n required={true}\n />\n <Input\n bind={NewOrderUserEmailInput}\n label=\"Customer Email\"\n placeholder=\"Enter customer email\"\n inputType=\"EMAIL\"\n width={Dim.fill()}\n required={true}\n />\n <Input\n bind={NewOrderPriceInput}\n label=\"Price\"\n placeholder=\"Enter price\"\n inputType=\"NUMBER\"\n width={Dim.fill()}\n required={true}\n />\n <Input\n bind={NewOrderImageInput}\n label=\"Product Image URL\"\n placeholder=\"Enter image URL (optional)\"\n width={Dim.fill()}\n />\n </Container>\n\n <Container layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <Button\n label=\"Cancel\"\n variant=\"secondary\"\n onClick={EventFlow.runJS(() => {\n NewOrderProductInput.text = \"\";\n NewOrderUserEmailInput.text = \"\";\n NewOrderPriceInput.text = \"\";\n NewOrderImageInput.text = \"\";\n }).controlModal(CreateOrderModal, { action: \"close\" })}\n />\n <Button\n label=\"Create Order\"\n variant=\"primary\"\n onClick={EventFlow.runApis([createOrderApi])\n .runApis([getMetricsApi, getOrdersApi])\n .runJS(() => {\n NewOrderProductInput.text = \"\";\n NewOrderUserEmailInput.text = \"\";\n NewOrderPriceInput.text = \"\";\n NewOrderImageInput.text = \"\";\n })\n .controlModal(CreateOrderModal, { action: \"close\" })}\n />\n </Container>\n </Container>\n </Modal>\n\n {/* Edit Order Modal */}\n <Modal bind={EditOrderModal}>\n <Container layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <Container layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"space-between\" width={Dim.fill()}>\n <Text\n width={Dim.fit()}\n text={computed(() => `Edit Order #${OrdersTable.selectedRow?.id || \"\"}`)}\n textStyle={{ variant: \"heading3\" }}\n />\n </Container>\n\n <Container layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <Input\n bind={EditOrderProductInput}\n label=\"Product Name\"\n width={Dim.fill()}\n required={true}\n />\n <Input\n bind={EditOrderUserEmailInput}\n label=\"Customer Email\"\n inputType=\"EMAIL\"\n width={Dim.fill()}\n required={true}\n />\n <Input\n bind={EditOrderPriceInput}\n label=\"Price\"\n inputType=\"NUMBER\"\n width={Dim.fill()}\n required={true}\n />\n <Input\n bind={EditOrderImageInput}\n label=\"Product Image URL\"\n width={Dim.fill()}\n />\n </Container>\n\n <Container layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <Button\n label=\"Cancel\"\n variant=\"secondary\"\n onClick={EventFlow.controlModal(EditOrderModal, { action: \"close\" })}\n />\n <Button\n label=\"Update Order\"\n variant=\"primary\"\n onClick={EventFlow.runApis([updateOrderApi])\n .runApis([getMetricsApi, getOrdersApi])\n .controlModal(EditOrderModal, { action: \"close\" })}\n />\n </Container>\n </Container>\n </Modal>\n\n {/* Order Details Modal */}\n <Modal bind={OrderDetailsModal}>\n <Container layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <Text\n text={computed(() => `Order Details #${OrdersTable.selectedRow?.id || \"\"}`)}\n textStyle={{ variant: \"heading3\" }}\n />\n\n <Container layout=\"horizontal\" spacing={Dim.px(24)} width={Dim.fill()}>\n <Container layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <KeyValue\n label=\"Order Information\"\n data={computed(() => getOrderDetailsApi.response || {})}\n />\n </Container>\n\n <Container layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <KeyValue\n label=\"Shipping Information\"\n data={computed(() => getShippingInfoApi.response || {})}\n />\n </Container>\n </Container>\n\n <Container layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <Button\n label=\"Close\"\n variant=\"secondary\"\n onClick={EventFlow.controlModal(OrderDetailsModal, { action: \"close\" })}\n />\n </Container>\n </Container>\n </Modal>\n </Page>\n );\n}\n\nexport default registerPage(PageContent, Page1Scope);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getMetricsApi.ts\">\nimport {\n Api,\n Athena,\n BigQuery,\n DynamoDb,\n JavaScript,\n Python,\n Databricks,\n MicrosoftSql,\n MySql,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Salesforce,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getMetricsApi\", [\n new JavaScript(\"getMetrics\", {\n fn: () => {\n return {\n totalOrders: 45,\n totalRevenue: 12489.50,\n ordersThisMonth: 8,\n activeShipments: 12,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getOrdersApi.ts\">\nimport {\n Api,\n Athena,\n BigQuery,\n DynamoDb,\n JavaScript,\n Python,\n Databricks,\n MicrosoftSql,\n MySql,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Salesforce,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getOrdersApi\", [\n new JavaScript(\"getOrders\", {\n fn: () => {\n return [\n {\n id: 1,\n product: \"Wireless Headphones\",\n user_email: \"john.doe@example.com\",\n date_purchased: \"2024-01-15\",\n price: 199.99,\n image: \"https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=200&h=200&fit=crop\",\n },\n {\n id: 2,\n product: \"Smart Watch\",\n user_email: \"jane.smith@example.com\",\n date_purchased: \"2024-01-14\",\n price: 299.99,\n image: \"https://images.unsplash.com/photo-1523275335684-37898b6baf30?w=200&h=200&fit=crop\",\n },\n {\n id: 3,\n product: \"Laptop Stand\",\n user_email: \"mike.johnson@example.com\",\n date_purchased: \"2024-01-13\",\n price: 49.99,\n image: \"https://images.unsplash.com/photo-1527864550417-7fd91fc51a46?w=200&h=200&fit=crop\",\n },\n {\n id: 4,\n product: \"Bluetooth Speaker\",\n user_email: \"sarah.wilson@example.com\",\n date_purchased: \"2024-01-12\",\n price: 79.99,\n image: \"https://images.unsplash.com/photo-1608043152269-423dbba4e7e1?w=200&h=200&fit=crop\",\n },\n {\n id: 5,\n product: \"Gaming Mouse\",\n user_email: \"alex.brown@example.com\",\n date_purchased: \"2024-01-11\",\n price: 89.99,\n image: \"https://images.unsplash.com/photo-1527814050087-3793815479db?w=200&h=200&fit=crop\",\n },\n {\n id: 6,\n product: \"USB-C Hub\",\n user_email: \"emily.davis@example.com\",\n date_purchased: \"2024-01-10\",\n price: 39.99,\n image: \"https://images.unsplash.com/photo-1558618047-3c8c76ca7d13?w=200&h=200&fit=crop\",\n },\n {\n id: 7,\n product: \"Phone Case\",\n user_email: \"david.miller@example.com\",\n date_purchased: \"2024-01-09\",\n price: 24.99,\n image: \"https://images.unsplash.com/photo-1601944177325-f8867652837f?w=200&h=200&fit=crop\",\n },\n {\n id: 8,\n product: \"Tablet Stand\",\n user_email: \"lisa.garcia@example.com\",\n date_purchased: \"2024-01-08\",\n price: 34.99,\n image: \"https://images.unsplash.com/photo-1544244015-0df4b3ffc6b0?w=200&h=200&fit=crop\",\n },\n ];\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getOrderDetailsApi.ts\">\nimport {\n Api,\n Athena,\n BigQuery,\n DynamoDb,\n JavaScript,\n Python,\n Databricks,\n MicrosoftSql,\n MySql,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Salesforce,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getOrderDetailsApi\", [\n new JavaScript(\"getOrderDetails\", {\n fn: ({ OrdersTable }) => {\n const order = OrdersTable.selectedRow;\n if (!order) return {};\n\n // Generate a user_id if not present (for display purposes)\n const userId = order.user_id || Math.floor(Math.random() * 10000) + 1000;\n\n return {\n \"Order ID\": order.id,\n \"Product\": order.product,\n \"Customer Email\": order.user_email,\n \"User ID\": userId,\n \"Date Purchased\": order.date_purchased,\n \"Price\": `$${order.price}`,\n \"Image URL\": order.image || \"N/A\",\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getShippingInfoApi.ts\">\nimport {\n Api,\n Athena,\n BigQuery,\n DynamoDb,\n JavaScript,\n Python,\n Databricks,\n MicrosoftSql,\n MySql,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Salesforce,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getShippingInfoApi\", [\n new JavaScript(\"getShippingInfo\", {\n fn: ({ OrdersTable }) => {\n const order = OrdersTable.selectedRow;\n if (!order) return { \"Shipping Status\": \"No shipping info\" };\n\n const orderId = order.id;\n\n // Generate shipping data based on order ID patterns\n const shippingStatuses = [\"Processing\", \"In Transit\", \"Delivered\", \"Out for Delivery\"];\n const locations = [\"Los Angeles, CA\", \"Phoenix, AZ\", \"Denver, CO\", \"Chicago, IL\", \"Miami, FL\"];\n const activities = [\"Order received\", \"Package shipped\", \"In transit\", \"Out for delivery\", \"Delivered\"];\n\n const statusIndex = orderId % shippingStatuses.length;\n const status = shippingStatuses[statusIndex];\n\n // Generate 2-3 shipping activities\n const numActivities = 2 + (orderId % 2);\n const history = [];\n\n for (let i = 0; i < numActivities; i++) {\n const date = new Date();\n date.setDate(date.getDate() - (numActivities - i));\n const timestamp = date.toISOString().replace('T', ' ').substring(0, 19);\n\n history.push({\n TIMESTAMP: timestamp,\n ACTIVITY: activities[i % activities.length],\n LOCATION: locations[i % locations.length],\n });\n }\n\n const result = {\n \"Shipping Status\": status,\n };\n\n history.forEach((item, index) => {\n result[`Activity ${index + 1}`] = `${item.ACTIVITY} - ${item.LOCATION} (${item.TIMESTAMP})`;\n });\n\n return result;\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/createOrderApi.ts\">\nimport {\n Api,\n Athena,\n BigQuery,\n DynamoDb,\n JavaScript,\n Python,\n Databricks,\n MicrosoftSql,\n MySql,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Salesforce,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"createOrderApi\", [\n new Conditional(\"validateInputs\", {\n if: {\n when: ({ NewOrderProductInput, NewOrderUserEmailInput, NewOrderPriceInput }) =>\n !NewOrderProductInput.value ||\n !NewOrderUserEmailInput.value ||\n !NewOrderPriceInput.value,\n then: [\n new Throw(\"validation_error\", {\n error: \"Product name, customer email, and price are required\",\n }),\n ],\n },\n }),\n\n new JavaScript(\"createOrder\", {\n fn: ({ NewOrderProductInput, NewOrderUserEmailInput, NewOrderPriceInput, NewOrderImageInput }) => {\n // Generate a new order ID and user ID\n const orderId = Math.floor(Math.random() * 1000) + 100;\n const userId = Math.floor(Math.random() * 10000) + 1;\n const currentDate = new Date().toISOString().split('T')[0];\n\n // Simulate order creation\n console.log(\"Creating order:\", {\n id: orderId,\n user_id: userId,\n product: NewOrderProductInput.value,\n user_email: NewOrderUserEmailInput.value,\n price: NewOrderPriceInput.value,\n date_purchased: currentDate,\n image: NewOrderImageInput.value || \"\",\n });\n\n return {\n success: true,\n message: \"Order created successfully\",\n orderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/updateOrderApi.ts\">\nimport {\n Api,\n Athena,\n BigQuery,\n DynamoDb,\n JavaScript,\n Python,\n Databricks,\n MicrosoftSql,\n MySql,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Salesforce,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"updateOrderApi\", [\n new Conditional(\"validateInputs\", {\n if: {\n when: ({ EditOrderProductInput, EditOrderUserEmailInput, EditOrderPriceInput }) =>\n !EditOrderProductInput.value ||\n !EditOrderUserEmailInput.value ||\n !EditOrderPriceInput.value,\n then: [\n new Throw(\"validation_error\", {\n error: \"Product name, customer email, and price are required\",\n }),\n ],\n },\n }),\n\n new JavaScript(\"updateOrder\", {\n fn: ({ OrdersTable, EditOrderProductInput, EditOrderUserEmailInput, EditOrderPriceInput, EditOrderImageInput }) => {\n const orderId = OrdersTable.selectedRow?.id;\n if (!orderId) {\n throw new Error(\"No order selected for update\");\n }\n\n // Simulate order update\n console.log(\"Updating order:\", {\n id: orderId,\n product: EditOrderProductInput.value,\n user_email: EditOrderUserEmailInput.value,\n price: EditOrderPriceInput.value,\n image: EditOrderImageInput.value || \"\",\n });\n\n return {\n success: true,\n message: \"Order updated successfully\",\n orderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/deleteOrderApi.ts\">\nimport {\n Api,\n Athena,\n BigQuery,\n DynamoDb,\n JavaScript,\n Python,\n Databricks,\n MicrosoftSql,\n MySql,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Salesforce,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"deleteOrderApi\", [\n new JavaScript(\"deleteOrder\", {\n fn: ({ OrdersTable }) => {\n const orderId = OrdersTable.selectedRow?.id;\n if (!orderId) {\n throw new Error(\"No order selected for deletion\");\n }\n\n // Simulate order deletion\n console.log(\"Deleting order:\", {\n id: orderId,\n product: OrdersTable.selectedRow?.product,\n user_email: OrdersTable.selectedRow?.user_email,\n });\n\n return {\n success: true,\n message: \"Order deleted successfully\",\n deletedOrderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n</boltArtifact>\n\nThe order management app is now complete with all the requested features:\n\n## **Key Features:**\n\n### **Metrics Dashboard**\n- **Total Orders**: Count of all records from DemoOrders\n- **Total Revenue**: Sum of price field from DemoOrders\n- **Orders This Month**: Count of orders from current month\n- **Active Shipments**: Count of records in DemoShipping SHIPPING_STATUS table\n\n### **Orders Management**\n- **Orders Table**: Displays all orders with id, product, user_email, date_purchased, price\n- **Product Filter**: Real-time text filtering on product names\n- **CRUD Operations**:\n - **Create**: Add new orders with product, email, price, and optional image\n - **Update**: Edit existing orders (click row to edit)\n - **Delete**: Remove orders (delete button in edit modal)\n - **View Details**: See full order info plus shipping status (click \"View Details\" button)\n\n### **Shipping Integration**\n- **Order Details Modal**: Shows order information plus shipping status and recent activity from DemoShipping tables\n- **Real-time Data**: Fetches shipping status and history by ORDER_ID\n\n### **User Experience**\n- Clean, professional interface with metric cards\n- Intuitive modals for all CRUD operations\n- Real-time filtering and data updates\n- Proper validation and error handling\n- Responsive design with consistent spacing\n\nThe app automatically loads metrics and orders data on page load, and all operations refresh the data to keep everything in sync.";
2
- export default _default;
3
- //# sourceMappingURL=orders-app.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orders-app.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/test-utils/app-generation-mocks/orders-app.ts"],"names":[],"mappings":";AAAA,wBAo3BmI"}