@superblocksteam/vite-plugin-file-sync 2.0.72-next.12 → 2.0.72-next.15

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 (284) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts +2 -1
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  3. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +18 -2
  4. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  5. package/dist/ai-service/agent/subagents/testing/index.d.ts +3 -0
  6. package/dist/ai-service/agent/subagents/testing/index.d.ts.map +1 -0
  7. package/dist/ai-service/agent/subagents/testing/index.js +2 -0
  8. package/dist/ai-service/agent/subagents/testing/index.js.map +1 -0
  9. package/dist/ai-service/agent/subagents/testing/prompt-builder.d.ts +10 -0
  10. package/dist/ai-service/agent/subagents/testing/prompt-builder.d.ts.map +1 -0
  11. package/dist/ai-service/agent/subagents/testing/prompt-builder.js +162 -0
  12. package/dist/ai-service/agent/subagents/testing/prompt-builder.js.map +1 -0
  13. package/dist/ai-service/agent/subagents/testing/types.d.ts +67 -0
  14. package/dist/ai-service/agent/subagents/testing/types.d.ts.map +1 -0
  15. package/dist/ai-service/agent/subagents/testing/types.js +2 -0
  16. package/dist/ai-service/agent/subagents/testing/types.js.map +1 -0
  17. package/dist/ai-service/agent/subagents/types.d.ts +9 -8
  18. package/dist/ai-service/agent/subagents/types.d.ts.map +1 -1
  19. package/dist/ai-service/agent/subagents/types.js +9 -9
  20. package/dist/ai-service/agent/subagents/types.js.map +1 -1
  21. package/dist/ai-service/agent/tool-message-utils.d.ts +7 -2
  22. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  23. package/dist/ai-service/agent/tool-message-utils.js +21 -2
  24. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  25. package/dist/ai-service/agent/tools/apis/api-source.d.ts +1 -1
  26. package/dist/ai-service/agent/tools/apis/api-source.d.ts.map +1 -1
  27. package/dist/ai-service/agent/tools/apis/api-source.js +37 -9
  28. package/dist/ai-service/agent/tools/apis/api-source.js.map +1 -1
  29. package/dist/ai-service/agent/tools/apis/test-api.js +1 -1
  30. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  31. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +1 -0
  32. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
  33. package/dist/ai-service/agent/tools/build-capture-screenshot.js +4 -2
  34. package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
  35. package/dist/ai-service/agent/tools/build-delete-file.d.ts +1 -1
  36. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +1 -1
  37. package/dist/ai-service/agent/tools/{build-read-files.d.ts → build-read-file.d.ts} +10 -6
  38. package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -0
  39. package/dist/ai-service/agent/tools/build-read-file.js +139 -0
  40. package/dist/ai-service/agent/tools/build-read-file.js.map +1 -0
  41. package/dist/ai-service/agent/tools/build-reload-file.d.ts +9 -3
  42. package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -1
  43. package/dist/ai-service/agent/tools/build-reload-file.js +20 -9
  44. package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -1
  45. package/dist/ai-service/agent/tools/get-console-logs.js +1 -1
  46. package/dist/ai-service/agent/tools/get-console-logs.js.map +1 -1
  47. package/dist/ai-service/agent/tools/get-runtime-errors.js +1 -1
  48. package/dist/ai-service/agent/tools/get-runtime-errors.js.map +1 -1
  49. package/dist/ai-service/agent/tools/index.d.ts +5 -1
  50. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  51. package/dist/ai-service/agent/tools/index.js +5 -1
  52. package/dist/ai-service/agent/tools/index.js.map +1 -1
  53. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +1 -1
  54. package/dist/ai-service/agent/tools/integrations/internal.d.ts.map +1 -1
  55. package/dist/ai-service/agent/tools/integrations/internal.js +8 -1
  56. package/dist/ai-service/agent/tools/integrations/internal.js.map +1 -1
  57. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  58. package/dist/ai-service/agent/tools.js +124 -31
  59. package/dist/ai-service/agent/tools.js.map +1 -1
  60. package/dist/ai-service/agent/tools2/access-control.d.ts +23 -1
  61. package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
  62. package/dist/ai-service/agent/tools2/access-control.js +67 -1
  63. package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
  64. package/dist/ai-service/agent/tools2/entity-permissions.d.ts +26 -0
  65. package/dist/ai-service/agent/tools2/entity-permissions.d.ts.map +1 -1
  66. package/dist/ai-service/agent/tools2/entity-permissions.js +15 -0
  67. package/dist/ai-service/agent/tools2/entity-permissions.js.map +1 -1
  68. package/dist/ai-service/agent/tools2/example.d.ts.map +1 -1
  69. package/dist/ai-service/agent/tools2/example.js +2 -4
  70. package/dist/ai-service/agent/tools2/example.js.map +1 -1
  71. package/dist/ai-service/agent/tools2/index.d.ts +1 -1
  72. package/dist/ai-service/agent/tools2/index.d.ts.map +1 -1
  73. package/dist/ai-service/agent/tools2/index.js +1 -1
  74. package/dist/ai-service/agent/tools2/index.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 -23
  77. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  78. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts +0 -1
  79. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
  80. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +1 -6
  81. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
  82. package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts +31 -0
  83. package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts.map +1 -0
  84. package/dist/ai-service/agent/tools2/tools/end-test-run.js +107 -0
  85. package/dist/ai-service/agent/tools2/tools/end-test-run.js.map +1 -0
  86. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +2 -1
  87. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  88. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +63 -76
  89. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  90. package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts +15 -0
  91. package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -0
  92. package/dist/ai-service/agent/tools2/tools/list-attachments.js +47 -0
  93. package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -0
  94. package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts +24 -0
  95. package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -0
  96. package/dist/ai-service/agent/tools2/tools/start-test-run.js +340 -0
  97. package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -0
  98. package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts +29 -0
  99. package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts.map +1 -0
  100. package/dist/ai-service/agent/tools2/tools/update-test-case-status.js +106 -0
  101. package/dist/ai-service/agent/tools2/tools/update-test-case-status.js.map +1 -0
  102. package/dist/ai-service/agent/tools2/types.d.ts +6 -24
  103. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  104. package/dist/ai-service/agent/tools2/types.js +4 -15
  105. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  106. package/dist/ai-service/agent/utils.d.ts +10 -0
  107. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  108. package/dist/ai-service/agent/utils.js +160 -2
  109. package/dist/ai-service/agent/utils.js.map +1 -1
  110. package/dist/ai-service/attachments/index.d.ts +2 -0
  111. package/dist/ai-service/attachments/index.d.ts.map +1 -0
  112. package/dist/ai-service/attachments/index.js +2 -0
  113. package/dist/ai-service/attachments/index.js.map +1 -0
  114. package/dist/ai-service/attachments/store.d.ts +65 -0
  115. package/dist/ai-service/attachments/store.d.ts.map +1 -0
  116. package/dist/ai-service/attachments/store.js +158 -0
  117. package/dist/ai-service/attachments/store.js.map +1 -0
  118. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  119. package/dist/ai-service/chat/chat-session-store.js +133 -1
  120. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  121. package/dist/ai-service/context-download.d.ts +24 -0
  122. package/dist/ai-service/context-download.d.ts.map +1 -0
  123. package/dist/ai-service/context-download.js +127 -0
  124. package/dist/ai-service/context-download.js.map +1 -0
  125. package/dist/ai-service/context-upload.d.ts +17 -0
  126. package/dist/ai-service/context-upload.d.ts.map +1 -0
  127. package/dist/ai-service/context-upload.js +100 -0
  128. package/dist/ai-service/context-upload.js.map +1 -0
  129. package/dist/ai-service/features.d.ts +4 -0
  130. package/dist/ai-service/features.d.ts.map +1 -1
  131. package/dist/ai-service/features.js +4 -0
  132. package/dist/ai-service/features.js.map +1 -1
  133. package/dist/ai-service/index.d.ts +27 -3
  134. package/dist/ai-service/index.d.ts.map +1 -1
  135. package/dist/ai-service/index.js +259 -20
  136. package/dist/ai-service/index.js.map +1 -1
  137. package/dist/ai-service/judge/integration/mcp-client.d.ts +3 -6
  138. package/dist/ai-service/judge/integration/mcp-client.d.ts.map +1 -1
  139. package/dist/ai-service/judge/integration/mcp-client.js.map +1 -1
  140. package/dist/ai-service/judge/tools/playwright-action.d.ts +1 -1
  141. package/dist/ai-service/judge/tools/submit-feedback.d.ts +1 -1
  142. package/dist/ai-service/llm/client.d.ts +6 -0
  143. package/dist/ai-service/llm/client.d.ts.map +1 -1
  144. package/dist/ai-service/llm/client.js +9 -0
  145. package/dist/ai-service/llm/client.js.map +1 -1
  146. package/dist/ai-service/llm/context/constants.d.ts +8 -0
  147. package/dist/ai-service/llm/context/constants.d.ts.map +1 -1
  148. package/dist/ai-service/llm/context/constants.js +8 -0
  149. package/dist/ai-service/llm/context/constants.js.map +1 -1
  150. package/dist/ai-service/llm/context/context.d.ts +4 -0
  151. package/dist/ai-service/llm/context/context.d.ts.map +1 -1
  152. package/dist/ai-service/llm/context/context.js +22 -9
  153. package/dist/ai-service/llm/context/context.js.map +1 -1
  154. package/dist/ai-service/llm/context/manager.d.ts +6 -1
  155. package/dist/ai-service/llm/context/manager.d.ts.map +1 -1
  156. package/dist/ai-service/llm/context/manager.js +9 -1
  157. package/dist/ai-service/llm/context/manager.js.map +1 -1
  158. package/dist/ai-service/llm/context/serialization.d.ts +3 -0
  159. package/dist/ai-service/llm/context/serialization.d.ts.map +1 -1
  160. package/dist/ai-service/llm/context/utils/message-utils.d.ts +10 -0
  161. package/dist/ai-service/llm/context/utils/message-utils.d.ts.map +1 -1
  162. package/dist/ai-service/llm/context/utils/message-utils.js +92 -0
  163. package/dist/ai-service/llm/context/utils/message-utils.js.map +1 -1
  164. package/dist/ai-service/llm/interaction/provider.d.ts +1 -0
  165. package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -1
  166. package/dist/ai-service/llm/stream/config.d.ts +2 -0
  167. package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
  168. package/dist/ai-service/llm/stream/config.js +1 -0
  169. package/dist/ai-service/llm/stream/config.js.map +1 -1
  170. package/dist/ai-service/llm/stream/event-bus.d.ts +5 -0
  171. package/dist/ai-service/llm/stream/event-bus.d.ts.map +1 -1
  172. package/dist/ai-service/llm/stream/event-bus.js.map +1 -1
  173. package/dist/ai-service/llm/stream/observers/llmobs.d.ts +4 -1
  174. package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
  175. package/dist/ai-service/llm/stream/observers/llmobs.js +194 -10
  176. package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
  177. package/dist/ai-service/llm/stream/observers/logging.d.ts +1 -0
  178. package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -1
  179. package/dist/ai-service/llm/stream/observers/logging.js +92 -20
  180. package/dist/ai-service/llm/stream/observers/logging.js.map +1 -1
  181. package/dist/ai-service/llm/stream/orchestrator.d.ts +7 -1
  182. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  183. package/dist/ai-service/llm/stream/orchestrator.js +23 -3
  184. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  185. package/dist/ai-service/llm/stream/retry-engine.d.ts +1 -0
  186. package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
  187. package/dist/ai-service/llm/stream/retry-engine.js +20 -1
  188. package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
  189. package/dist/ai-service/llm/stream/session.d.ts +14 -2
  190. package/dist/ai-service/llm/stream/session.d.ts.map +1 -1
  191. package/dist/ai-service/llm/stream/session.js +15 -28
  192. package/dist/ai-service/llm/stream/session.js.map +1 -1
  193. package/dist/ai-service/llmobs/otel-exporter.d.ts +58 -0
  194. package/dist/ai-service/llmobs/otel-exporter.d.ts.map +1 -0
  195. package/dist/ai-service/llmobs/otel-exporter.js +182 -0
  196. package/dist/ai-service/llmobs/otel-exporter.js.map +1 -0
  197. package/dist/ai-service/llmobs/tracer.d.ts +9 -5
  198. package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
  199. package/dist/ai-service/llmobs/tracer.js +46 -41
  200. package/dist/ai-service/llmobs/tracer.js.map +1 -1
  201. package/dist/ai-service/llmobs/types.d.ts +1 -0
  202. package/dist/ai-service/llmobs/types.d.ts.map +1 -1
  203. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts +1 -1
  204. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts.map +1 -1
  205. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js +5 -2
  206. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js.map +1 -1
  207. package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts +33 -1
  208. package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts.map +1 -1
  209. package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +949 -91
  210. package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -1
  211. package/dist/ai-service/mcp/playwright-server.d.ts +39 -0
  212. package/dist/ai-service/mcp/playwright-server.d.ts.map +1 -1
  213. package/dist/ai-service/mcp/playwright-server.js +56 -0
  214. package/dist/ai-service/mcp/playwright-server.js.map +1 -1
  215. package/dist/ai-service/mcp/types.d.ts +4 -0
  216. package/dist/ai-service/mcp/types.d.ts.map +1 -1
  217. package/dist/ai-service/prompts/explain-code.d.ts +2 -2
  218. package/dist/ai-service/prompts/explain-code.d.ts.map +1 -1
  219. package/dist/ai-service/prompts/explain-code.js +2 -2
  220. package/dist/ai-service/prompts/explain-code.js.map +1 -1
  221. package/dist/ai-service/state-machine/clark-fsm.d.ts +20 -1
  222. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  223. package/dist/ai-service/state-machine/clark-fsm.js +16 -0
  224. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  225. package/dist/ai-service/state-machine/fsm.d.ts.map +1 -1
  226. package/dist/ai-service/state-machine/fsm.js +1 -0
  227. package/dist/ai-service/state-machine/fsm.js.map +1 -1
  228. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  229. package/dist/ai-service/state-machine/handlers/agent-planning.js +71 -7
  230. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  231. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  232. package/dist/ai-service/state-machine/handlers/llm-generating.js +112 -33
  233. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  234. package/dist/ai-service/state-machine/helpers/peer.d.ts +1 -1
  235. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  236. package/dist/ai-service/state-machine/helpers/peer.js +21 -4
  237. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  238. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  239. package/dist/ai-service/state-machine/mocks.js +2 -0
  240. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  241. package/dist/ai-service/state-machine/traced-fsm.d.ts +2 -0
  242. package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
  243. package/dist/ai-service/state-machine/traced-fsm.js +18 -0
  244. package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
  245. package/dist/ai-service/util/safe-parse.d.ts +2 -0
  246. package/dist/ai-service/util/safe-parse.d.ts.map +1 -0
  247. package/dist/ai-service/util/safe-parse.js +9 -0
  248. package/dist/ai-service/util/safe-parse.js.map +1 -0
  249. package/dist/ai-service/util/safe-stringify.d.ts.map +1 -1
  250. package/dist/ai-service/util/safe-stringify.js +7 -0
  251. package/dist/ai-service/util/safe-stringify.js.map +1 -1
  252. package/dist/ai-service/util/scoped-token-utils.d.ts +15 -0
  253. package/dist/ai-service/util/scoped-token-utils.d.ts.map +1 -0
  254. package/dist/ai-service/util/scoped-token-utils.js +131 -0
  255. package/dist/ai-service/util/scoped-token-utils.js.map +1 -0
  256. package/dist/ai-service/util/stop-condition.d.ts +1 -0
  257. package/dist/ai-service/util/stop-condition.d.ts.map +1 -1
  258. package/dist/ai-service/util/stop-condition.js +5 -0
  259. package/dist/ai-service/util/stop-condition.js.map +1 -1
  260. package/dist/ai-service/util/strip-content.d.ts +2 -0
  261. package/dist/ai-service/util/strip-content.d.ts.map +1 -0
  262. package/dist/ai-service/util/strip-content.js +31 -0
  263. package/dist/ai-service/util/strip-content.js.map +1 -0
  264. package/dist/ai-service/util/tool-signature.d.ts +13 -0
  265. package/dist/ai-service/util/tool-signature.d.ts.map +1 -0
  266. package/dist/ai-service/util/tool-signature.js +38 -0
  267. package/dist/ai-service/util/tool-signature.js.map +1 -0
  268. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  269. package/dist/file-sync-vite-plugin.js +4 -1
  270. package/dist/file-sync-vite-plugin.js.map +1 -1
  271. package/dist/injected-index.js +2 -2
  272. package/dist/injected-index.js.map +1 -1
  273. package/dist/parsing/jsx.d.ts.map +1 -1
  274. package/dist/parsing/jsx.js +0 -2
  275. package/dist/parsing/jsx.js.map +1 -1
  276. package/dist/server-rpc/index.js +1 -1
  277. package/dist/server-rpc/index.js.map +1 -1
  278. package/dist/socket-manager.d.ts.map +1 -1
  279. package/dist/socket-manager.js +61 -4
  280. package/dist/socket-manager.js.map +1 -1
  281. package/package.json +9 -9
  282. package/dist/ai-service/agent/tools/build-read-files.d.ts.map +0 -1
  283. package/dist/ai-service/agent/tools/build-read-files.js +0 -67
  284. package/dist/ai-service/agent/tools/build-read-files.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import type { AiServiceConfig } from "../../types.js";
1
2
  import type { AiMode } from "@superblocksteam/library-shared/types";
2
- export declare const buildBaseSystemPrompt: (mode?: AiMode) => string;
3
+ export declare const buildBaseSystemPrompt: (config: AiServiceConfig, mode?: AiMode) => string;
3
4
  //# sourceMappingURL=build-base-system-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-base-system-prompt.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/build-base-system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAEpE,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,WAqqBlD,CAAC"}
1
+ {"version":3,"file":"build-base-system-prompt.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/build-base-system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAEpE,eAAO,MAAM,qBAAqB,GAChC,QAAQ,eAAe,EACvB,OAAO,MAAM,WAgrBd,CAAC"}
@@ -1,4 +1,4 @@
1
- export const buildBaseSystemPrompt = (mode) => {
1
+ export const buildBaseSystemPrompt = (config, mode) => {
2
2
  let preamble = "";
3
3
  if (mode !== undefined) {
4
4
  preamble = `## System Instructions
@@ -28,9 +28,13 @@ Here are some additional guidelines to follow:
28
28
 
29
29
  `;
30
30
  }
31
+ const safetyGuidance = config.features.safetyGuidancePrompt ?? DEFAULT_SAFETY_GUIDANCE;
32
+ const currentDate = new Date().toISOString().split("T")[0];
31
33
  return (preamble +
32
34
  /*md*/ `You are Clark, the Engineer Agent for the Superblocks platform based on the React framework.
33
35
 
36
+ Today is ${currentDate}.
37
+
34
38
  The user is viewing their application in the editor UI.
35
39
  Your job is to understand the user request, make a plan, and then act upon the plan. Do not hold back, the user's success is your success.
36
40
 
@@ -53,7 +57,9 @@ IMPORTANT: to explore the application structure, use tools:
53
57
  - 'glob' to find files matching patterns across the directory tree (e.g., "**/*.tsx")
54
58
  - 'grep' to search for specific code patterns or text within files
55
59
 
56
-
60
+ <safety_guidance>
61
+ ${safetyGuidance}
62
+ </safety_guidance>
57
63
 
58
64
  <engineering_best_practices>
59
65
  **CRITICAL: Act like a professional engineer solving real problems.**
@@ -98,6 +104,7 @@ Think of cleanup as the final step: build → identify orphans → suggest delet
98
104
  - Create components for things like: list items, cards, forms, filters, headers, sections
99
105
  - Pages should orchestrate components, not contain all the JSX
100
106
  - Monolithic pages are unacceptable and hard to maintain
107
+ - keep file sizes small and focused on a single responsibility
101
108
 
102
109
  ALWAYS read components using tools like \`grep\` and \`glob\` when you do not have a clear idea of what a components props are.
103
110
 
@@ -672,4 +679,13 @@ You should always attempt to use an existing component before creating a new one
672
679
  </tool_call_guidance>
673
680
  `);
674
681
  };
682
+ const DEFAULT_SAFETY_GUIDANCE = /*md*/ `
683
+ - NEVER assist with activities that could harm individuals or violate laws and regulations.
684
+ - NEVER create, modify, or suggest code that facilitates unauthorized access to systems or data.
685
+ - NEVER assist in developing malware, viruses, or any malicious software.
686
+ - NEVER provide guidance on bypassing security measures or exploiting vulnerabilities.
687
+ - NEVER engage in activities that compromise user privacy or data security.
688
+ - NEVER include hardcoded secrets, API keys, passwords, or sensitive information in the code.
689
+ - ALWAYS validate and sanitize user inputs to prevent security vulnerabilities such as SQL injection and XSS attacks.
690
+ `;
675
691
  //# sourceMappingURL=build-base-system-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-base-system-prompt.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/build-base-system-prompt.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAa,EAAE,EAAE;IACrD,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBd,CAAC;IACA,CAAC;IAED,OAAO,CACL,QAAQ;QACR,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAioBV,CACE,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"build-base-system-prompt.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/build-base-system-prompt.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,MAAuB,EACvB,IAAa,EACb,EAAE;IACF,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBd,CAAC;IACA,CAAC;IAED,MAAM,cAAc,GAClB,MAAM,CAAC,QAAQ,CAAC,oBAAoB,IAAI,uBAAuB,CAAC;IAElE,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,OAAO,CACL,QAAQ;QACR,MAAM,CAAC;;WAEA,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2mBf,CACE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,MAAM,CAAC;;;;;;;;CAQtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { buildTestSubagentSystemPrompt } from "./prompt-builder.js";
2
+ export type { TestRunConfig, TestStepResult } from "./types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { buildTestSubagentSystemPrompt } from "./prompt-builder.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { TestRunConfig } from "./types.js";
2
+ /**
3
+ * Build the system prompt for the test subagent.
4
+ *
5
+ * The test subagent is specialized for end-to-end testing with Playwright.
6
+ * It should NOT output text/reasoning messages - all context should be in
7
+ * the tool's description parameter.
8
+ */
9
+ export declare function buildTestSubagentSystemPrompt(config: TestRunConfig): string;
10
+ //# sourceMappingURL=prompt-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,YAAY,CAAC;AA8EpE;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAkG3E"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Format interactive elements into a readable string for the LLM.
3
+ */
4
+ function formatInteractiveElements(elements) {
5
+ if (!elements || elements.length === 0) {
6
+ return "";
7
+ }
8
+ // Group elements by tag for better readability
9
+ const grouped = {};
10
+ for (const el of elements) {
11
+ const tag = el.tag;
12
+ if (!grouped[tag]) {
13
+ grouped[tag] = [];
14
+ }
15
+ grouped[tag].push(el);
16
+ }
17
+ const lines = [];
18
+ for (const [tag, els] of Object.entries(grouped)) {
19
+ for (const el of els) {
20
+ const parts = [`<${tag}>`];
21
+ // Add the most useful identifier info
22
+ if (el.text) {
23
+ parts.push(`"${el.text.slice(0, 50)}${el.text.length > 50 ? "..." : ""}"`);
24
+ }
25
+ if (el.testId) {
26
+ parts.push(`[data-testid="${el.testId}"]`);
27
+ }
28
+ if (el.id) {
29
+ parts.push(`#${el.id}`);
30
+ }
31
+ if (el.placeholder) {
32
+ parts.push(`[placeholder="${el.placeholder}"]`);
33
+ }
34
+ if (el.ariaLabel) {
35
+ parts.push(`[aria-label="${el.ariaLabel}"]`);
36
+ }
37
+ if (el.name) {
38
+ parts.push(`[name="${el.name}"]`);
39
+ }
40
+ if (el.href) {
41
+ parts.push(`[href="${el.href.slice(0, 50)}${el.href.length > 50 ? "..." : ""}"]`);
42
+ }
43
+ if (el.type) {
44
+ parts.push(`[type="${el.type}"]`);
45
+ }
46
+ if (el.role && el.role !== tag) {
47
+ parts.push(`[role="${el.role}"]`);
48
+ }
49
+ if (el.disabled) {
50
+ parts.push(`(DISABLED)`);
51
+ }
52
+ lines.push(`- ${parts.join(" ")}`);
53
+ }
54
+ }
55
+ // Limit to first 50 elements to avoid token bloat
56
+ const maxElements = 50;
57
+ if (lines.length > maxElements) {
58
+ return (lines.slice(0, maxElements).join("\n") +
59
+ `\n... and ${lines.length - maxElements} more elements`);
60
+ }
61
+ return lines.join("\n");
62
+ }
63
+ /**
64
+ * Build the system prompt for the test subagent.
65
+ *
66
+ * The test subagent is specialized for end-to-end testing with Playwright.
67
+ * It should NOT output text/reasoning messages - all context should be in
68
+ * the tool's description parameter.
69
+ */
70
+ export function buildTestSubagentSystemPrompt(config) {
71
+ const planSection = config.planContext?.plan
72
+ ? `
73
+ ## Plan to Verify
74
+ ${config.planContext.plan}
75
+ `
76
+ : "";
77
+ const hasTestCases = config.testCases && config.testCases.length > 0;
78
+ const testCasesSection = hasTestCases
79
+ ? `
80
+ ## Test Cases to Execute (ALL REQUIRED)
81
+
82
+ ⚠️ You MUST execute ALL ${config.testCases.length} test cases below. Do NOT skip any.
83
+
84
+ ${config.testCases.map((tc) => `- **${tc.id}**: ${tc.name}${tc.description ? ` - ${tc.description}` : ""}`).join("\n")}
85
+ `
86
+ : "";
87
+ // Add DOM context section if interactive elements are provided
88
+ const domContextSection = config.interactiveElements && config.interactiveElements.length > 0
89
+ ? `
90
+ ## Page Elements (Current DOM State)
91
+
92
+ Use these elements for your selectors. Prefer \`data-testid\`, \`id\`, or unique text content.
93
+
94
+ ${formatInteractiveElements(config.interactiveElements)}
95
+ `
96
+ : "";
97
+ const workflowSection = hasTestCases
98
+ ? `## Workflow
99
+
100
+ Execute ALL ${config.testCases.length} test cases in order. For EACH test case:
101
+ 1. Call \`updateTestCaseStatus(testCaseId, "running")\`
102
+ 2. Use \`browser_playwright_action\` with the \`testCaseId\` parameter to test
103
+ 3. Call \`updateTestCaseStatus(testCaseId, "passed")\` or \`updateTestCaseStatus(testCaseId, "failed")\`
104
+
105
+ After completing ALL ${config.testCases.length} test cases, call \`endTestRun\` with status and summary.
106
+
107
+ **Rules:**
108
+ - Each test case should generate at least one screenshot
109
+ - If a test case is taking too long because of flaky selectors, try to add \`data-testid\` attributes using \`edit\`
110
+ - If still not working, fail the test case and move on to the next one
111
+ - Do NOT call \`endTestRun\` until you have executed ALL test cases`
112
+ : `## Workflow
113
+
114
+ 1. Use \`browser_playwright_action\` to interact with UI elements (clicks, form inputs, navigation)
115
+ 2. Run MULTIPLE actions to thoroughly test the application
116
+ 3. **When complete**: Call \`endTestRun\` with status and summary`;
117
+ const toolsSection = hasTestCases
118
+ ? `## Available Tools
119
+ - \`updateTestCaseStatus\` - Update test case status before/after each test
120
+ - \`browser_playwright_action\` - Interact with and screenshot the app (include \`testCaseId\` parameter)
121
+ - \`edit\` - Add data-testid attributes when selectors are flaky
122
+ - \`read\` - Read source files to understand component structure
123
+ - \`endTestRun\` - **REQUIRED** - Call when ALL test cases are complete`
124
+ : `## Available Tools
125
+ - \`browser_playwright_action\` - Interact with and screenshot the app
126
+ - \`edit\` - Add data-testid attributes when selectors are flaky
127
+ - \`read\` - Read source files to understand component structure
128
+ - \`endTestRun\` - **REQUIRED** - Call when ALL testing is complete`;
129
+ return `You are a QA Testing Agent specialized in end-to-end testing of web applications using Playwright.
130
+
131
+ ## Test Run Context
132
+ - Test Run ID: ${config.testRunId}
133
+ - Test Header: ${config.header}
134
+ ${planSection}
135
+ ${testCasesSection}
136
+ ${domContextSection}
137
+ ${workflowSection}
138
+
139
+ ${toolsSection}
140
+
141
+ ## Guidelines
142
+
143
+ - Write clear descriptions: "Verify **login form** displays with \`email\` field"
144
+ - Each browser action automatically includes a screenshot
145
+ - Prefer using the Page Elements section above for selectors - it shows what's available on the page
146
+ - Selector priority: \`data-testid\`, \`id\`, \`aria-label\`, text content, then class/tag
147
+ - Use \`edit\` to add \`data-testid\` attributes if selectors are unreliable
148
+
149
+ ## Using evaluate()
150
+ - You can use \`evaluate()\` for custom JavaScript checks if needed
151
+ - ⚠️ IMPORTANT: \`evaluate()\` runs in the browser with standard CSS selectors only
152
+ - ❌ Do NOT use Playwright selectors like \`:has-text()\`, \`text=\`, or \`:visible\` in evaluate()
153
+ - ✓ Use standard CSS: \`document.querySelector('button[type="submit"]')\`
154
+ - ✓ Use data-testid: \`document.querySelector('[data-testid="submit-btn"]')\`
155
+ - ✓ Find by text: \`Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('Submit'))\`
156
+
157
+ ## ⚠️ CRITICAL: You must not send any text messages - they will NOT be displayed to the user. All context and user information will be encapsulated in the tool calls.
158
+
159
+ ## ⚠️ CRITICAL: You MUST call \`endTestRun\` to complete the test run
160
+ `;
161
+ }
162
+ //# sourceMappingURL=prompt-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/prompt-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * A test case generated for the test run.
3
+ */
4
+ export interface TestCase {
5
+ id: string;
6
+ name: string;
7
+ description?: string;
8
+ }
9
+ /**
10
+ * Information about an interactive element on the page.
11
+ * Used for DOM context in testing prompts.
12
+ */
13
+ export interface InteractiveElement {
14
+ tag: string;
15
+ text?: string;
16
+ id?: string;
17
+ className?: string;
18
+ testId?: string;
19
+ placeholder?: string;
20
+ href?: string;
21
+ type?: string;
22
+ role?: string;
23
+ ariaLabel?: string;
24
+ name?: string;
25
+ disabled?: boolean;
26
+ }
27
+ /**
28
+ * Configuration for starting a test run with the test subagent.
29
+ */
30
+ export interface TestRunConfig {
31
+ /** Unique identifier for the test run */
32
+ testRunId: string;
33
+ /** Header/title displayed in the UI for the test run */
34
+ header: string;
35
+ /** Plan context from the main agent */
36
+ planContext?: {
37
+ plan?: string;
38
+ title?: string;
39
+ };
40
+ /** Predefined test cases to execute */
41
+ testCases?: TestCase[];
42
+ /** Interactive elements on the current page for DOM context */
43
+ interactiveElements?: InteractiveElement[];
44
+ }
45
+ /**
46
+ * Result from a test step (browser action).
47
+ */
48
+ export interface TestStepResult {
49
+ /** Unique identifier for the step */
50
+ stepId: string;
51
+ /** Human-readable description of what was tested */
52
+ description: string;
53
+ /** The action that was performed (click, fill, screenshot, etc.) */
54
+ action: string;
55
+ /** Whether the step succeeded */
56
+ success: boolean;
57
+ /** Screenshot captured during/after the step */
58
+ screenshot?: {
59
+ data: string;
60
+ format: string;
61
+ };
62
+ /** Additional details about the step (selector, value, etc.) */
63
+ details?: Record<string, any>;
64
+ /** Error message if the step failed */
65
+ error?: string;
66
+ }
67
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,uCAAuC;IACvC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/types.ts"],"names":[],"mappings":""}
@@ -9,17 +9,17 @@
9
9
  * Tools without this property are available to all subagents.
10
10
  *
11
11
  * @example
12
- * // Define a tool restricted to API subagent
13
- * const apiTool = createToolFactory('api-tool', () => ({
14
- * description: 'API-specific tool',
15
- * allowedSubagents: [SubagentType.API],
12
+ * // Define a tool restricted to test subagent
13
+ * const testTool = createToolFactory('test-tool', () => ({
14
+ * description: 'Test-specific tool',
15
+ * allowedSubagents: [SubagentType.TEST],
16
16
  * // ...
17
17
  * }));
18
18
  *
19
19
  * @example
20
20
  * // Get tools filtered for a specific subagent
21
21
  * const tools = await registry.getToolsRecord({
22
- * subagent: SubagentType.API,
22
+ * subagent: SubagentType.TEST,
23
23
  * mode: AiMode.BUILD
24
24
  * });
25
25
  */
@@ -31,9 +31,10 @@ export declare enum SubagentType {
31
31
  */
32
32
  MAIN = "main",
33
33
  /**
34
- * API subagent - Specializes in creating and modifying Superblocks APIs.
35
- * Has access to API building tools and integration-related tools.
34
+ * Test subagent - Specializes in end-to-end testing of applications.
35
+ * Has access to Playwright browser automation tools.
36
+ * Invoked by the main agent via the startTestRun tool.
36
37
  */
37
- API = "api"
38
+ TEST = "test"
38
39
  }
39
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/subagents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,oBAAY,YAAY;IACtB;;;;OAIG;IACH,IAAI,SAAS;IAEb;;;OAGG;IAEH,GAAG,QAAQ;CACZ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/subagents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,oBAAY,YAAY;IACtB;;;;OAIG;IACH,IAAI,SAAS;IAEb;;;;OAIG;IACH,IAAI,SAAS;CACd"}
@@ -9,17 +9,17 @@
9
9
  * Tools without this property are available to all subagents.
10
10
  *
11
11
  * @example
12
- * // Define a tool restricted to API subagent
13
- * const apiTool = createToolFactory('api-tool', () => ({
14
- * description: 'API-specific tool',
15
- * allowedSubagents: [SubagentType.API],
12
+ * // Define a tool restricted to test subagent
13
+ * const testTool = createToolFactory('test-tool', () => ({
14
+ * description: 'Test-specific tool',
15
+ * allowedSubagents: [SubagentType.TEST],
16
16
  * // ...
17
17
  * }));
18
18
  *
19
19
  * @example
20
20
  * // Get tools filtered for a specific subagent
21
21
  * const tools = await registry.getToolsRecord({
22
- * subagent: SubagentType.API,
22
+ * subagent: SubagentType.TEST,
23
23
  * mode: AiMode.BUILD
24
24
  * });
25
25
  */
@@ -32,10 +32,10 @@ export var SubagentType;
32
32
  */
33
33
  SubagentType["MAIN"] = "main";
34
34
  /**
35
- * API subagent - Specializes in creating and modifying Superblocks APIs.
36
- * Has access to API building tools and integration-related tools.
35
+ * Test subagent - Specializes in end-to-end testing of applications.
36
+ * Has access to Playwright browser automation tools.
37
+ * Invoked by the main agent via the startTestRun tool.
37
38
  */
38
- // @deprecated - API subagent is no longer used
39
- SubagentType["API"] = "api";
39
+ SubagentType["TEST"] = "test";
40
40
  })(SubagentType || (SubagentType = {}));
41
41
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/subagents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAN,IAAY,YAcX;AAdD,WAAY,YAAY;IACtB;;;;OAIG;IACH,6BAAa,CAAA;IAEb;;;OAGG;IACH,+CAA+C;IAC/C,2BAAW,CAAA;AACb,CAAC,EAdW,YAAY,KAAZ,YAAY,QAcvB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/subagents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAN,IAAY,YAcX;AAdD,WAAY,YAAY;IACtB;;;;OAIG;IACH,6BAAa,CAAA;IAEb;;;;OAIG;IACH,6BAAa,CAAA;AACf,CAAC,EAdW,YAAY,KAAZ,YAAY,QAcvB"}
@@ -1,10 +1,14 @@
1
1
  import type { buildTools } from "./tools.js";
2
2
  import type { Clark } from "../state-machine/clark-fsm.js";
3
- import type { AiToolCallChatMessage, ToolName } from "@superblocksteam/library-shared/types";
3
+ import type { AiToolCallChatMessage, BrowserPlaywrightToolCallChatMessage, AiToolExecutionErrorCode, ToolName } from "@superblocksteam/library-shared/types";
4
4
  import type { Tool } from "ai";
5
5
  type AppToolSet = Awaited<ReturnType<typeof buildTools>>;
6
+ type DynamicToolSet = {
7
+ browser_playwright_action: Tool<BrowserPlaywrightToolCallChatMessage["args"]>;
8
+ };
9
+ type ToolSet = AppToolSet & DynamicToolSet;
6
10
  type ToolInputMap = {
7
- [K in ToolName]: AppToolSet[K] extends Tool<infer PARAMETERS> ? PARAMETERS : never;
11
+ [K in ToolName]: ToolSet[K] extends Tool<infer PARAMETERS> ? PARAMETERS : never;
8
12
  };
9
13
  type ToolArguments<N extends ToolName> = ToolInputMap[N];
10
14
  /**
@@ -16,6 +20,7 @@ type ToolArguments<N extends ToolName> = ToolInputMap[N];
16
20
  */
17
21
  export declare function getToolCallArguments<T extends ToolName>(toolName: T, toolArguments?: ToolArguments<T>, clark?: Clark): Promise<AiToolCallChatMessage["args"]>;
18
22
  export declare function getToolOutput<T extends ToolName>(toolName: T, output: any): any;
23
+ export declare function getToolErrorCode(error: any): AiToolExecutionErrorCode | undefined;
19
24
  export declare function getToolErrorMessage(error: any): string;
20
25
  export {};
21
26
  //# sourceMappingURL=tool-message-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-message-utils.d.ts","sourceRoot":"","sources":["../../../src/ai-service/agent/tool-message-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EACV,qBAAqB,EACrB,QAAQ,EACT,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG/B,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AAGzD,KAAK,YAAY,GAAG;KACjB,CAAC,IAAI,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,UAAU,CAAC,GACzD,UAAU,GACV,KAAK;CACV,CAAC;AAEF,KAAK,aAAa,CAAC,CAAC,SAAS,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAsHzD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EAC3D,QAAQ,EAAE,CAAC,EACX,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAChC,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;AAgB1C,wBAAgB,aAAa,CAAC,CAAC,SAAS,QAAQ,EAC9C,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,GAAG,GACV,GAAG,CA8BL;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAuBtD"}
1
+ {"version":3,"file":"tool-message-utils.d.ts","sourceRoot":"","sources":["../../../src/ai-service/agent/tool-message-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EACV,qBAAqB,EACrB,oCAAoC,EACpC,wBAAwB,EACxB,QAAQ,EACT,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG/B,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AACzD,KAAK,cAAc,GAAG;IACpB,yBAAyB,EAAE,IAAI,CAAC,oCAAoC,CAAC,MAAM,CAAC,CAAC,CAAC;CAC/E,CAAC;AACF,KAAK,OAAO,GAAG,UAAU,GAAG,cAAc,CAAC;AAG3C,KAAK,YAAY,GAAG;KACjB,CAAC,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,UAAU,CAAC,GACtD,UAAU,GACV,KAAK;CACV,CAAC;AAEF,KAAK,aAAa,CAAC,CAAC,SAAS,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AA+HzD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EAC3D,QAAQ,EAAE,CAAC,EACX,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAChC,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;AAgB1C,wBAAgB,aAAa,CAAC,CAAC,SAAS,QAAQ,EAC9C,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,GAAG,GACV,GAAG,CAkCL;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,GAAG,GACT,wBAAwB,GAAG,SAAS,CAKtC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAuBtD"}
@@ -1,4 +1,5 @@
1
1
  import { safeJsonStringify } from "../util/safe-stringify.js";
2
+ import { ToolExecutionError } from "./tools2/types.js";
2
3
  // Define handlers with proper typing
3
4
  // The MessageHandlers type ensures that each handler receives the correct
4
5
  // argument type based on its key. TypeScript automatically infers the correct
@@ -19,8 +20,9 @@ const messageHandlers = {
19
20
  packages: args?.packages ?? [],
20
21
  };
21
22
  },
22
- build_readFiles: (args) => ({
23
- filePaths: args?.filePaths ?? [],
23
+ build_readFile: (args) => ({
24
+ filePath: args?.filePath ?? "",
25
+ ranges: args?.ranges ?? [],
24
26
  }),
25
27
  build_reloadFile: (args) => ({
26
28
  filePath: args?.filePath ?? "",
@@ -97,6 +99,14 @@ const messageHandlers = {
97
99
  filePath: args?.filePath ?? "",
98
100
  reason: args?.reason,
99
101
  }),
102
+ browser_playwright_action: (args) => ({
103
+ action: args?.action ?? "navigate",
104
+ url: args?.url,
105
+ selector: args?.selector,
106
+ value: args?.value,
107
+ fullPage: args?.fullPage,
108
+ script: args?.script,
109
+ }),
100
110
  };
101
111
  export async function getToolCallArguments(toolName, toolArguments, clark) {
102
112
  if (toolName in messageHandlers) {
@@ -132,12 +142,21 @@ export function getToolOutput(toolName, output) {
132
142
  screenshotDataUrl: output?.dataUrl,
133
143
  };
134
144
  }
145
+ if (toolName === "browser_playwright_action") {
146
+ return output;
147
+ }
135
148
  return undefined;
136
149
  }
137
150
  catch {
138
151
  return undefined;
139
152
  }
140
153
  }
154
+ export function getToolErrorCode(error) {
155
+ if (error instanceof ToolExecutionError) {
156
+ return error.code;
157
+ }
158
+ return undefined;
159
+ }
141
160
  export function getToolErrorMessage(error) {
142
161
  try {
143
162
  if (error instanceof Error) {
@@ -1 +1 @@
1
- {"version":3,"file":"tool-message-utils.js","sourceRoot":"","sources":["../../../src/ai-service/agent/tool-message-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-message-utils.js","sourceRoot":"","sources":["../../../src/ai-service/agent/tool-message-utils.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import type { FileArtifact } from "../../../types.js";
4
4
  * Read the TypeScript source of an API
5
5
  *
6
6
  * Priority order:
7
- * 1. Check scratch directory (primary location for TS source)
7
+ * 1. Check scratch directory if it is more recent than the YAML (primary location for TS source)
8
8
  * 2. Generate from YAML if only api.yaml exists (legacy apps or after UI edits)
9
9
  */
10
10
  export declare const readApiSource: (services: Pick<ClarkStateHandlerParams, "appShell" | "templateRenderer">, apiName: string, entityNames?: string[]) => Promise<FileArtifact | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"api-source.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/api-source.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,kBAAkB,CAAC,EACxE,SAAS,MAAM,EACf,cAAc,MAAM,EAAE,sCAkDvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
1
+ {"version":3,"file":"api-source.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/api-source.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,kBAAkB,CAAC,EACxE,SAAS,MAAM,EACf,cAAc,MAAM,EAAE,sCAiFvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,CAAC,CAqBjB"}