@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
@@ -0,0 +1,340 @@
1
+ import { generateObject } from "ai";
2
+ import { z } from "zod";
3
+ import { getLogger } from "../../../../util/logger.js";
4
+ import { sendUserMessageChannel } from "../../../state-machine/helpers/peer.js";
5
+ import { buildTestSubagentSystemPrompt } from "../../subagents/testing/prompt-builder.js";
6
+ import { SubagentType } from "../../subagents/types.js";
7
+ import { processTestStreamChunk } from "../../utils.js";
8
+ import { createToolFactory, ToolCategory, PermissionLevel } from "../types.js";
9
+ /**
10
+ * startTestRun - Invokes the Testing Agent subagent to perform end-to-end testing.
11
+ *
12
+ * This tool:
13
+ * 1. Creates a test run with a unique ID
14
+ * 2. Sends test_run_start message to UI
15
+ * 3. Invokes the TEST subagent with filtered tools
16
+ * 4. Suppresses text/reasoning output (all context in tool descriptions)
17
+ * 5. Streams tool results back to the user
18
+ */
19
+ export const startTestRunToolFactory = createToolFactory("startTestRun", ({ clark, services, }) => {
20
+ const logger = getLogger();
21
+ return {
22
+ description: `
23
+ Invoke the Testing Agent to perform end-to-end testing of the application.
24
+
25
+ Use this tool to start a test run when:
26
+ - The plan has enableTesting set to true
27
+ - The user explicitly asks to test (e.g., "test this", "make sure it works", "verify the changes")
28
+
29
+ The Testing Agent will:
30
+ - Take screenshots to verify UI state
31
+ - Interact with form fields, buttons, etc.
32
+ - Validate that the plan was executed correctly
33
+ - Report test results
34
+
35
+ **IMPORTANT**: Call this tool when:
36
+ - enableTesting is set on the plan context (REQUIRED)
37
+ - User explicitly asks to test the app
38
+ - After completing a significant feature build
39
+ - When the user says things like "make sure it works", "verify", "test it out"
40
+
41
+ The Testing Agent has access to Playwright browser automation and can interact with the running application.
42
+
43
+ **IF TESTS FAIL (status: "failed")**:
44
+ You MUST fix the issues and re-test. Do NOT call \`build_finalize\` until tests pass.
45
+ 1. Review the summary to understand what failed
46
+ 2. Fix the code to address the failures
47
+ 3. Call \`startTestRun\` again to verify your fixes
48
+ 4. Repeat until status is "completed" (max 3 attempts)
49
+ `,
50
+ category: ToolCategory.SUBAGENT,
51
+ defaultPermission: PermissionLevel.ALLOW,
52
+ readOnly: true,
53
+ inputSchema: z.object({
54
+ header: z
55
+ .string()
56
+ .describe("Short, concise header for display (e.g., 'Calculator Test', 'Login Flow', 'Form Validation')"),
57
+ testDescription: z
58
+ .string()
59
+ .describe("Detailed description of what to test for the prompt (e.g., 'Test basic arithmetic operations, special functions, and edge cases') based on the the user prompt and/or the plan to verify"),
60
+ }),
61
+ execute: async ({ header, testDescription }) => {
62
+ const testRunId = crypto.randomUUID();
63
+ const displayHeader = header || "End-to-end testing";
64
+ // check if planContext.enableTesting is explicitly set to false. if so exit this tool
65
+ if (clark.context.planContext?.enableTesting === false) {
66
+ logger.info(`[TestSubagent] Plan context enableTesting is false, exiting tool`);
67
+ return {
68
+ success: true,
69
+ testRunId,
70
+ status: "completed",
71
+ summary: "Testing disabled in plan context",
72
+ };
73
+ }
74
+ logger.info(`[TestSubagent] Test description: ${testDescription}`);
75
+ // Phase 1: Generate test cases via LLM call (before subagent execution)
76
+ const testCaseSchema = z.object({
77
+ testCases: z
78
+ .array(z.object({
79
+ id: z.string().describe("Unique ID for this test case"),
80
+ name: z.string().describe("Short name for the test case"),
81
+ description: z
82
+ .string()
83
+ .describe("Brief description of what this test verifies"),
84
+ }))
85
+ .min(1)
86
+ .max(7)
87
+ .describe("1-7 test cases covering the key functionality to verify. For simpler functionality, generate fewer test cases."),
88
+ });
89
+ let generatedTestCases = [];
90
+ try {
91
+ const { object: testCasesResult } = await generateObject({
92
+ model: services.llmProvider.modelForTask("classifyPrompt"),
93
+ schema: testCaseSchema,
94
+ prompt: `You are a QA expert. Generate 3-7 test cases to verify the following functionality.
95
+
96
+ Test Description: ${testDescription}
97
+
98
+ ${clark.context.planContext?.plan ? `Plan Context:\n${clark.context.planContext.plan}` : ""}
99
+
100
+ Guidelines:
101
+ - Each test case should verify ONE specific piece of functionality
102
+ - Test cases should be feature-level, not click-level (e.g., "Login form submission" not "Click login button")
103
+ - Use unique IDs like "test-1", "test-2", etc.
104
+ - Keep names concise (max 50 chars)
105
+ - Cover both happy path and edge cases where relevant
106
+ - The test cases are meant to be executed in order, so if there are dependencies between test cases, make sure to order the test cases accordingly.
107
+ - Generate 1-3 test cases for simple changes (styling, colors, text)
108
+ - Generate 3-5 test cases for medium complexity (form fields, simple interactions)
109
+ - Generate 5-7 test cases only for complex features (multi-step flows, validation logic)
110
+ - ONLY test what is described - do NOT test unrelated functionality
111
+
112
+ Generate test cases that would be useful for verifying this functionality works correctly.`,
113
+ });
114
+ generatedTestCases = testCasesResult.testCases;
115
+ logger.info(`[TestSubagent] Generated ${generatedTestCases.length} test cases`);
116
+ }
117
+ catch (error) {
118
+ // If test case generation fails, continue without predefined cases
119
+ logger.warn(`[TestSubagent] Failed to generate test cases: ${error instanceof Error ? error.message : String(error)}`);
120
+ }
121
+ // Prepare test cases with initial status
122
+ const testCases = generatedTestCases.map((tc) => ({
123
+ ...tc,
124
+ status: "not_started",
125
+ }));
126
+ // Store test run ID and test cases in context
127
+ clark.updateContext({
128
+ currentTestRunId: testRunId,
129
+ currentTestCases: testCases,
130
+ testCaseStatuses: new Map(testCases.map((tc) => [tc.id, "not_started"])),
131
+ });
132
+ // Send test_run_start message to UI with test cases
133
+ const sendUserMessage = sendUserMessageChannel(clark, services.chatSessionStore);
134
+ await sendUserMessage({
135
+ type: "test_run_start",
136
+ testRunId,
137
+ header: displayHeader,
138
+ testCases: testCases.length > 0 ? testCases : undefined,
139
+ role: "assistant",
140
+ content: "",
141
+ });
142
+ // Capture interactive elements from the current page for DOM context
143
+ // This helps the LLM know which elements are available for interaction
144
+ // without needing to explore the DOM with evaluate()
145
+ let interactiveElements = [];
146
+ try {
147
+ interactiveElements =
148
+ await services.mcpServerManager.captureInteractiveElements();
149
+ logger.info(`[TestSubagent] Captured ${interactiveElements.length} interactive elements for DOM context`);
150
+ }
151
+ catch (error) {
152
+ logger.warn(`[TestSubagent] Failed to capture interactive elements: ${error instanceof Error ? error.message : String(error)}`);
153
+ }
154
+ // Build test-specific system prompt with test cases and DOM context
155
+ const testSystemPrompt = buildTestSubagentSystemPrompt({
156
+ testRunId,
157
+ header: displayHeader,
158
+ planContext: clark.context.planContext,
159
+ testCases,
160
+ interactiveElements,
161
+ });
162
+ // Get tools filtered for TEST subagent
163
+ const accessControl = clark.getAccessControl();
164
+ const testTools = await services.toolRegistry.getToolsRecord({
165
+ ...accessControl,
166
+ subagent: SubagentType.TEST,
167
+ });
168
+ // Invoke the test subagent
169
+ try {
170
+ const maxSteps = 100;
171
+ const testCaseList = testCases.length > 0
172
+ ? `\n\nYou MUST execute ALL ${testCases.length} test cases listed in the system prompt:\n${testCases.map((tc) => `- ${tc.id}: ${tc.name}`).join("\n")}`
173
+ : "";
174
+ const result = await clark.streamText(services, {
175
+ system: testSystemPrompt,
176
+ user: {
177
+ role: "user",
178
+ content: `Test the application.${testCaseList}\n\nContext: ${testDescription}`,
179
+ },
180
+ tools: testTools,
181
+ context: {
182
+ // don't send over the full chat history to improve performance
183
+ messages: [],
184
+ },
185
+ maxSteps,
186
+ // Stop when endTestRun is called (like judge stops on submitFeedback)
187
+ stopWhen: ({ steps }) => {
188
+ const lastStep = steps[steps.length - 1];
189
+ const hasEndTestRun = lastStep?.toolCalls?.some((tc) => tc.toolName === "endTestRun");
190
+ return hasEndTestRun ?? false;
191
+ },
192
+ // Warn about remaining steps and force endTestRun on final step
193
+ prepareStep: (step) => {
194
+ const remainingSteps = maxSteps - step.stepNumber - 1;
195
+ const halfwayPoint = Math.floor(maxSteps / 2);
196
+ let modifiedStep = step;
197
+ // Check if user requested to skip a test case
198
+ const skipRequestedForTestCase = clark.context.skipRequestedForTestCase;
199
+ if (skipRequestedForTestCase) {
200
+ logger.info(`[TestSubagent] User requested skip for test case: ${skipRequestedForTestCase}`);
201
+ // Find the next test case to run
202
+ const currentTestCases = clark.context.currentTestCases ?? [];
203
+ const skippedIndex = currentTestCases.findIndex((tc) => tc.id === skipRequestedForTestCase);
204
+ const nextTestCase = skippedIndex >= 0 &&
205
+ skippedIndex < currentTestCases.length - 1
206
+ ? currentTestCases[skippedIndex + 1]
207
+ : null;
208
+ let skipInstruction;
209
+ if (nextTestCase) {
210
+ skipInstruction = `**USER SKIPPED TEST CASE**: The user has skipped test case "${skipRequestedForTestCase}". Move immediately to the next test case "${nextTestCase.id}" (${nextTestCase.name}). Do NOT continue testing the skipped case. Call \`updateTestCaseStatus\` with status "running" for "${nextTestCase.id}" and proceed with testing it.`;
211
+ }
212
+ else {
213
+ skipInstruction = `**USER SKIPPED TEST CASE**: The user has skipped test case "${skipRequestedForTestCase}" which was the last test case. Call \`endTestRun\` to complete the test run.`;
214
+ }
215
+ const skipMessage = {
216
+ role: "user",
217
+ content: [
218
+ {
219
+ type: "text",
220
+ text: skipInstruction,
221
+ },
222
+ ],
223
+ };
224
+ // We'll keep injecting this instruction until the agent actually starts a different
225
+ // test case (cleared in updateTestCaseStatus) or ends the run.
226
+ const lastMessage = modifiedStep.messages.at(-1);
227
+ const lastText = typeof lastMessage === "object" &&
228
+ lastMessage &&
229
+ "content" in lastMessage &&
230
+ Array.isArray(lastMessage.content)
231
+ ? lastMessage.content?.[0]?.text
232
+ : undefined;
233
+ modifiedStep =
234
+ lastText === skipInstruction
235
+ ? modifiedStep
236
+ : {
237
+ ...modifiedStep,
238
+ messages: [...modifiedStep.messages, skipMessage],
239
+ };
240
+ }
241
+ // Final step: restrict to endTestRun only
242
+ if (step.stepNumber === maxSteps - 1) {
243
+ const warningMessage = {
244
+ role: "user",
245
+ content: [
246
+ {
247
+ type: "text",
248
+ text: "**CRITICAL: This is your FINAL step. You MUST call `endTestRun` now. No other tools are available.**",
249
+ },
250
+ ],
251
+ };
252
+ return {
253
+ ...modifiedStep,
254
+ messages: [...modifiedStep.messages, warningMessage],
255
+ activeTools: ["endTestRun"],
256
+ };
257
+ }
258
+ // Warn from halfway point onwards
259
+ else if (step.stepNumber >= halfwayPoint && remainingSteps > 0) {
260
+ const warningMessage = {
261
+ role: "user",
262
+ content: [
263
+ {
264
+ type: "text",
265
+ text: `**IMPORTANT: You have ${remainingSteps} step${remainingSteps === 1 ? "" : "s"} remaining. Wrap up testing and call \`endTestRun\` soon.**`,
266
+ },
267
+ ],
268
+ };
269
+ return {
270
+ ...modifiedStep,
271
+ messages: [...modifiedStep.messages, warningMessage],
272
+ };
273
+ }
274
+ return modifiedStep;
275
+ },
276
+ });
277
+ let testSummary = null;
278
+ // Process stream chunks with test-specific handling
279
+ // - Text/reasoning is suppressed (not sent to UI)
280
+ // - browser_playwright_action results become test steps
281
+ // - endTestRun handles sending test_run_end message with reconciliation
282
+ for await (const chunk of result.fullStream) {
283
+ // Extract summary from endTestRun result for the return value
284
+ if (chunk.type === "tool-result" &&
285
+ "toolName" in chunk &&
286
+ chunk.toolName === "endTestRun") {
287
+ const output = chunk.output;
288
+ if (output?.success) {
289
+ testSummary = {
290
+ testStatus: output.testStatus,
291
+ summary: output.summary,
292
+ };
293
+ logger.info(`[TestSubagent] Test summary extracted - ${output.summary}`);
294
+ }
295
+ }
296
+ await processTestStreamChunk(chunk, clark, services);
297
+ }
298
+ logger.info(`[TestSubagent] Test run completed: ${testRunId}`);
299
+ // Build the final result from testSummary, using defaults for missing values
300
+ const status = testSummary?.testStatus ?? "completed";
301
+ const summary = testSummary?.summary ?? "Testing completed without summary.";
302
+ // Note: test_run_end message is sent by endTestRun tool with reconciliation
303
+ // We need to send it here only if endTestRun wasn't called (shouldn't happen normally)
304
+ if (!testSummary) {
305
+ void sendUserMessage({
306
+ type: "test_run_end",
307
+ testRunId,
308
+ testStatus: "completed",
309
+ summary: "Testing completed.",
310
+ role: "assistant",
311
+ content: "",
312
+ });
313
+ }
314
+ return {
315
+ success: true,
316
+ testRunId,
317
+ status,
318
+ summary,
319
+ };
320
+ }
321
+ catch (error) {
322
+ logger.error(`[TestSubagent] Test run failed: ${error instanceof Error ? error.message : String(error)}`);
323
+ // Send test_run_end with failed status
324
+ await sendUserMessage({
325
+ type: "test_run_end",
326
+ testRunId,
327
+ testStatus: "failed",
328
+ role: "assistant",
329
+ content: "",
330
+ });
331
+ // Clear test run context
332
+ clark.updateContext({
333
+ currentTestRunId: undefined,
334
+ });
335
+ throw error;
336
+ }
337
+ },
338
+ };
339
+ });
340
+ //# sourceMappingURL=start-test-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-test-run.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/start-test-run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Clark, ClarkStateHandlerParams } from "../../../state-machine/clark-fsm.js";
2
+ /**
3
+ * updateTestCaseStatus - Updates the status of a specific test case during a test run.
4
+ *
5
+ * This tool:
6
+ * 1. Validates that the test case ID exists
7
+ * 2. Updates the status in clark context (server-side tracking)
8
+ * 3. Sends test_case_update message to UI
9
+ *
10
+ * Only accessible to the TEST subagent (ToolCategory.TEST).
11
+ */
12
+ export declare const updateTestCaseStatusToolFactory: import("../types.js").ToolFactory<{
13
+ clark: Clark;
14
+ services: ClarkStateHandlerParams;
15
+ }, import("../types.js").Tool<{
16
+ status: "failed" | "running" | "passed" | "skipped";
17
+ testCaseId: string;
18
+ }, {
19
+ success: boolean;
20
+ error: string;
21
+ testCaseId?: undefined;
22
+ status?: undefined;
23
+ } | {
24
+ success: boolean;
25
+ testCaseId: string;
26
+ status: "failed" | "running" | "passed" | "skipped";
27
+ error?: undefined;
28
+ }>>;
29
+ //# sourceMappingURL=update-test-case-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-test-case-status.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/update-test-case-status.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,KAAK,EACL,uBAAuB,EACxB,MAAM,qCAAqC,CAAC;AAE7C;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B;WAMjC,KAAK;cACF,uBAAuB;;;;;;;;;;;;;;GAqHpC,CAAC"}
@@ -0,0 +1,106 @@
1
+ import { z } from "zod";
2
+ import { getLogger } from "../../../../util/logger.js";
3
+ import { sendUserMessageChannel } from "../../../state-machine/helpers/peer.js";
4
+ import { createToolFactory, ToolCategory, PermissionLevel } from "../types.js";
5
+ /**
6
+ * updateTestCaseStatus - Updates the status of a specific test case during a test run.
7
+ *
8
+ * This tool:
9
+ * 1. Validates that the test case ID exists
10
+ * 2. Updates the status in clark context (server-side tracking)
11
+ * 3. Sends test_case_update message to UI
12
+ *
13
+ * Only accessible to the TEST subagent (ToolCategory.TEST).
14
+ */
15
+ export const updateTestCaseStatusToolFactory = createToolFactory("updateTestCaseStatus", ({ clark, services, }) => {
16
+ const logger = getLogger();
17
+ return {
18
+ description: `
19
+ Update the status of a specific test case during the test run.
20
+
21
+ **IMPORTANT**: You MUST call this tool:
22
+ 1. BEFORE starting each test case - set status to "running"
23
+ 2. AFTER completing each test case - set status to "passed" or "failed"
24
+
25
+ Example workflow for test case "test-1":
26
+ 1. updateTestCaseStatus({ testCaseId: "test-1", status: "running" })
27
+ 2. ... perform browser actions for the test ...
28
+ 3. updateTestCaseStatus({ testCaseId: "test-1", status: "passed" })
29
+
30
+ This ensures the UI shows real-time progress of which tests are running and their results.
31
+ `,
32
+ category: ToolCategory.TEST,
33
+ defaultPermission: PermissionLevel.ALLOW,
34
+ readOnly: true,
35
+ inputSchema: z.object({
36
+ testCaseId: z
37
+ .string()
38
+ .describe("ID of the test case to update (e.g., 'test-1')"),
39
+ status: z
40
+ .enum(["running", "passed", "failed", "skipped"])
41
+ .describe("New status for the test case: 'running' when starting, 'passed' or 'failed' when complete, 'skipped' when user skips the test"),
42
+ }),
43
+ execute: async ({ testCaseId, status }) => {
44
+ const testRunId = clark.context.currentTestRunId;
45
+ const testCases = clark.context.currentTestCases;
46
+ if (!testRunId) {
47
+ logger.warn(`[TestSubagent] No active test run for updateTestCaseStatus`);
48
+ return {
49
+ success: false,
50
+ error: "No active test run",
51
+ };
52
+ }
53
+ const existingStatuses = clark.context.testCaseStatuses;
54
+ const existingStatus = existingStatuses?.get(testCaseId);
55
+ if (existingStatus === "skipped" && status !== "skipped") {
56
+ // Prevent the test subagent from "un-skipping" a test case that the user skipped.
57
+ // This keeps UI + server-side reconciliation consistent.
58
+ logger.info(`[TestSubagent] Ignoring status update for skipped test case '${testCaseId}': attempted '${status}'`);
59
+ return {
60
+ success: false,
61
+ error: `Test case '${testCaseId}' was skipped by the user`,
62
+ };
63
+ }
64
+ // Validate that the test case exists
65
+ if (testCases && testCases.length > 0) {
66
+ const testCaseExists = testCases.some((tc) => tc.id === testCaseId);
67
+ if (!testCaseExists) {
68
+ logger.warn(`[TestSubagent] Test case ID '${testCaseId}' not found in current test cases`);
69
+ // Don't fail - allow the update anyway in case of LLM inconsistency
70
+ }
71
+ }
72
+ // Update status in context for server-side tracking
73
+ const testCaseStatuses = clark.context.testCaseStatuses ??
74
+ new Map();
75
+ testCaseStatuses.set(testCaseId, status);
76
+ // Clear sticky skip instruction once the agent starts a different test case.
77
+ // This prevents the skip instruction from being injected repeatedly after the agent moves on.
78
+ const skipRequestedForTestCase = clark.context.skipRequestedForTestCase;
79
+ clark.updateContext({
80
+ testCaseStatuses,
81
+ ...(status === "running" &&
82
+ skipRequestedForTestCase &&
83
+ testCaseId !== skipRequestedForTestCase
84
+ ? { skipRequestedForTestCase: undefined }
85
+ : {}),
86
+ });
87
+ // Send test_case_update message to UI
88
+ const sendUserMessage = sendUserMessageChannel(clark, services.chatSessionStore);
89
+ await sendUserMessage({
90
+ type: "test_case_update",
91
+ testRunId,
92
+ testCaseId,
93
+ testCaseStatus: status,
94
+ role: "assistant",
95
+ content: "",
96
+ });
97
+ logger.info(`[TestSubagent] Test case '${testCaseId}' status updated to '${status}'`);
98
+ return {
99
+ success: true,
100
+ testCaseId,
101
+ status,
102
+ };
103
+ },
104
+ };
105
+ });
106
+ //# sourceMappingURL=update-test-case-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-test-case-status.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/update-test-case-status.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { SubagentType } from "../subagents/types.js";
2
- import type { AiMode, AiEntityType, PlanContext, PromptContextEntity, PromptContextIntegration, AiPermissionType, AiToolPermission } from "@superblocksteam/library-shared/types";
2
+ import type { AiMode, AiEntityType, PlanContext, PromptContextEntity, PromptContextIntegration, AiPermissionType, AiToolPermission, AiToolExecutionErrorCode } from "@superblocksteam/library-shared/types";
3
3
  import type { ToolCallOptions } from "ai";
4
4
  import type z from "zod";
5
5
  /**
@@ -15,7 +15,8 @@ export declare enum ToolCategory {
15
15
  METADATA = "metadata",
16
16
  DATA = "data",
17
17
  PLAN = "plan",
18
- TEST = "test"
18
+ TEST = "test",
19
+ DEBUG = "debug"
19
20
  }
20
21
  /**
21
22
  * Entity reference extracted from tool input.
@@ -147,20 +148,6 @@ export declare enum PermissionLevel {
147
148
  /** Block execution completely */
148
149
  BLOCK = "block"
149
150
  }
150
- /**
151
- * User response to a tool permission prompt.
152
- *
153
- * Controls both execution and whether the permission should be stored
154
- * in the entity permission store for future use.
155
- */
156
- export declare enum ToolPermissionResponse {
157
- /** Execute the tool once, but don't store permission (user will be prompted again next time) */
158
- ALLOW = "allow",
159
- /** Execute the tool AND store permission in the entity store (never prompt again for this entity) */
160
- ALWAYS_ALLOW = "always_allow",
161
- /** Block execution completely */
162
- DENY = "deny"
163
- }
164
151
  /**
165
152
  * Factory for creating tool instances.
166
153
  *
@@ -255,13 +242,6 @@ export interface AccessControlContext {
255
242
  * Rules are evaluated in order, most restrictive wins.
256
243
  */
257
244
  export type AccessControlRule = (tool: Tool, context: AccessControlContext, input?: any) => PermissionLevel | Promise<PermissionLevel>;
258
- /**
259
- * Result from a prompt handler, including the response and which permissions to always allow.
260
- */
261
- export interface PromptHandlerResult {
262
- response: ToolPermissionResponse;
263
- alwaysAllowPermissions?: AiToolPermission[];
264
- }
265
245
  /**
266
246
  * Handler for prompting user for confirmation.
267
247
  *
@@ -279,7 +259,7 @@ export interface PromptHandlerResult {
279
259
  * - ALWAYS_ALLOW: Execute and store permission for future use (with alwaysAllowPermissions indicating which specific permissions to store)
280
260
  * - DENY: Block execution
281
261
  */
282
- export type PromptHandler = (tool: Tool, input: any, permissions: AiToolPermission[], context: AccessControlContext, options?: ToolCallOptions) => Promise<PromptHandlerResult>;
262
+ export type PromptHandler = (tool: Tool, input: any, permissions: AiToolPermission[], context: AccessControlContext, options?: ToolCallOptions) => Promise<void>;
283
263
  /**
284
264
  * Middleware function that can transform tools.
285
265
  * Receives the tool name and tool instance, returns transformed tool.
@@ -302,6 +282,7 @@ export interface ToolExecutionErrorOptions {
302
282
  input: any;
303
283
  context: AccessControlContext;
304
284
  cause?: unknown;
285
+ code?: AiToolExecutionErrorCode;
305
286
  }
306
287
  export declare class ToolExecutionError extends Error {
307
288
  readonly name: string;
@@ -310,6 +291,7 @@ export declare class ToolExecutionError extends Error {
310
291
  constructor(message: string, options?: ToolExecutionErrorOptions);
311
292
  constructor(options?: ToolExecutionErrorOptions);
312
293
  private getMessage;
294
+ get code(): AiToolExecutionErrorCode | undefined;
313
295
  get toolName(): string | undefined;
314
296
  get input(): any;
315
297
  get message(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools2/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools2/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,IAAI,EAAE,YAAY,CAAC;IACnB,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG;IAC7C,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,EAAE,YAAY,CAAC;IACvB,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,sCAAsC;IACtC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,gDAAgD;IAChD,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,4CAA4C;IAC5C,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,0DAA0D;IAC1D,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,CAAC;IACxC;;;;;;;;;;;;OAYG;IACH,sBAAsB,CAAC,EAAE,CACvB,KAAK,EAAE,KAAK,KACT,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC;IACtD;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,MAAM;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK;QAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,mDAAmD;IACnD,KAAK,UAAU;IACf,oDAAoD;IACpD,MAAM,WAAW;IACjB,iCAAiC;IACjC,KAAK,UAAU;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,SAAS,IAAI,GAAG,IAAI;IAC7D,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,SAAS,CAAC,CAAC,UAAU,EACjC,KAAK,EACL,aAAa,SAAS,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS,EAC1D,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAC9B,OAAO,GAAG,aAAa,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,EAE3E,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;IACvB,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAC/C,WAAW,EAAE,YAAY,CAAC;IAC1B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,GAAG,CAAC;IACzC,sBAAsB,CAAC,EAAE,CACvB,KAAK,EAAE,MAAM,KACV,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC;IACtD,aAAa,CAAC,EAAE,MAAM;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,GACA,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAK3C;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,eAAe;IACf,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACnD,2DAA2D;IAC3D,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,8CAA8C;IAC9C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,oCAAoC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,oBAAoB,EAC7B,KAAK,CAAC,EAAE,GAAG,KACR,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAEhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,GAAG,EACV,WAAW,EAAE,gBAAgB,EAAE,EAC/B,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,eAAe,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,MAAM,GAAG,GAAG,IACxC,0BAA0B,CAAC,MAAM,CAAC,GAClC,wBAAwB,CAAC;AAE7B,MAAM,MAAM,0BAA0B,CAAC,MAAM,GAAG,GAAG,IAAI;IACrD,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,kBAAkB,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,oBAAoB,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,wBAAwB,CAAC;CACjC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAkB,IAAI,EAAE,MAAM,CAAwB;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB;gBACpD,OAAO,CAAC,EAAE,yBAAyB;IA0B/C,OAAO,CAAC,UAAU;IA2BlB,IAAI,IAAI,yCAEP;IAED,IAAI,QAAQ,uBAEX;IAED,IAAI,KAAK,QAER;IAED,IAAa,OAAO,WAEnB;IAED,IAAa,KAAK,uBAKjB;IAED,IAAa,KAAK,YAEjB;IAED;;;OAGG;IACH,MAAM;;;;;;;;CAiBP"}
@@ -14,6 +14,7 @@ export var ToolCategory;
14
14
  ToolCategory["DATA"] = "data";
15
15
  ToolCategory["PLAN"] = "plan";
16
16
  ToolCategory["TEST"] = "test";
17
+ ToolCategory["DEBUG"] = "debug";
17
18
  })(ToolCategory || (ToolCategory = {}));
18
19
  /**
19
20
  * Permission levels for tool execution.
@@ -27,21 +28,6 @@ export var PermissionLevel;
27
28
  /** Block execution completely */
28
29
  PermissionLevel["BLOCK"] = "block";
29
30
  })(PermissionLevel || (PermissionLevel = {}));
30
- /**
31
- * User response to a tool permission prompt.
32
- *
33
- * Controls both execution and whether the permission should be stored
34
- * in the entity permission store for future use.
35
- */
36
- export var ToolPermissionResponse;
37
- (function (ToolPermissionResponse) {
38
- /** Execute the tool once, but don't store permission (user will be prompted again next time) */
39
- ToolPermissionResponse["ALLOW"] = "allow";
40
- /** Execute the tool AND store permission in the entity store (never prompt again for this entity) */
41
- ToolPermissionResponse["ALWAYS_ALLOW"] = "always_allow";
42
- /** Block execution completely */
43
- ToolPermissionResponse["DENY"] = "deny";
44
- })(ToolPermissionResponse || (ToolPermissionResponse = {}));
45
31
  /**
46
32
  * Helper function to create a tool factory without name duplication.
47
33
  *
@@ -121,6 +107,9 @@ export class ToolExecutionError extends Error {
121
107
  }
122
108
  return message;
123
109
  }
110
+ get code() {
111
+ return this.options?.code;
112
+ }
124
113
  get toolName() {
125
114
  return this.options?.toolName;
126
115
  }