@superblocksteam/vite-plugin-file-sync 2.0.59-next.2 → 2.0.59-next.3

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 (277) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +10 -1
  3. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  4. package/dist/ai-service/agent/subagents/apis/examples.d.ts.map +1 -1
  5. package/dist/ai-service/agent/subagents/apis/examples.js +137 -10
  6. package/dist/ai-service/agent/subagents/apis/examples.js.map +1 -1
  7. package/dist/ai-service/agent/subagents/apis/static-analysis.d.ts.map +1 -1
  8. package/dist/ai-service/agent/subagents/apis/static-analysis.js +14 -7
  9. package/dist/ai-service/agent/subagents/apis/static-analysis.js.map +1 -1
  10. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  11. package/dist/ai-service/agent/tool-message-utils.js +6 -2
  12. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  13. package/dist/ai-service/agent/tools/apis/analysis.d.ts +9 -0
  14. package/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -0
  15. package/dist/ai-service/agent/tools/apis/analysis.js +357 -0
  16. package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -0
  17. package/dist/ai-service/agent/{subagents → tools}/apis/api-executor.d.ts +35 -10
  18. package/dist/ai-service/agent/tools/apis/api-executor.d.ts.map +1 -0
  19. package/dist/ai-service/agent/{subagents → tools}/apis/api-executor.js +179 -94
  20. package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -0
  21. package/dist/ai-service/agent/tools/apis/api-source.d.ts +19 -0
  22. package/dist/ai-service/agent/tools/apis/api-source.d.ts.map +1 -0
  23. package/dist/ai-service/agent/tools/apis/api-source.js +73 -0
  24. package/dist/ai-service/agent/tools/apis/api-source.js.map +1 -0
  25. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts +51 -0
  26. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -0
  27. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +510 -0
  28. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -0
  29. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts +32 -0
  30. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -0
  31. package/dist/ai-service/agent/tools/apis/build-api-artifact.js +313 -0
  32. package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -0
  33. package/dist/ai-service/agent/tools/apis/build-api.d.ts +1 -10
  34. package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
  35. package/dist/ai-service/agent/tools/apis/build-api.js +26 -238
  36. package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
  37. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +11 -0
  38. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -0
  39. package/dist/ai-service/agent/tools/apis/get-api-docs.js +1809 -0
  40. package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -0
  41. package/dist/ai-service/agent/tools/apis/integration-types.d.ts +37 -0
  42. package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -0
  43. package/dist/ai-service/agent/tools/apis/integration-types.js +697 -0
  44. package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -0
  45. package/dist/ai-service/agent/tools/apis/test-api.d.ts +25 -0
  46. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -0
  47. package/dist/ai-service/agent/tools/apis/test-api.js +194 -0
  48. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -0
  49. package/dist/ai-service/agent/tools/apis/write-api.d.ts +11 -0
  50. package/dist/ai-service/agent/tools/apis/write-api.d.ts.map +1 -0
  51. package/dist/ai-service/agent/tools/apis/write-api.js +41 -0
  52. package/dist/ai-service/agent/tools/apis/write-api.js.map +1 -0
  53. package/dist/ai-service/agent/tools/build-read-files.js +2 -2
  54. package/dist/ai-service/agent/tools/build-read-files.js.map +1 -1
  55. package/dist/ai-service/agent/tools.d.ts +2 -5
  56. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  57. package/dist/ai-service/agent/tools.js +51 -22
  58. package/dist/ai-service/agent/tools.js.map +1 -1
  59. package/dist/ai-service/agent/tools2/access-control.d.ts +1 -0
  60. package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
  61. package/dist/ai-service/agent/tools2/access-control.js +15 -13
  62. package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
  63. package/dist/ai-service/agent/tools2/registry.d.ts +2 -1
  64. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  65. package/dist/ai-service/agent/tools2/registry.js +4 -3
  66. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  67. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +2 -1
  68. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  69. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +103 -88
  70. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  71. package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
  72. package/dist/ai-service/agent/tools2/tools/grep-metadata.js +25 -4
  73. package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
  74. package/dist/ai-service/agent/tools2/types.d.ts +1 -1
  75. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  76. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  77. package/dist/ai-service/agent/tools2/utils.d.ts.map +1 -1
  78. package/dist/ai-service/agent/tools2/utils.js +4 -1
  79. package/dist/ai-service/agent/tools2/utils.js.map +1 -1
  80. package/dist/ai-service/agent/utils.d.ts +1 -3
  81. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  82. package/dist/ai-service/agent/utils.js +44 -4
  83. package/dist/ai-service/agent/utils.js.map +1 -1
  84. package/dist/ai-service/app-interface/shell.d.ts +5 -0
  85. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  86. package/dist/ai-service/app-interface/shell.js +17 -2
  87. package/dist/ai-service/app-interface/shell.js.map +1 -1
  88. package/dist/ai-service/chat/chat-session-store.d.ts +7 -0
  89. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  90. package/dist/ai-service/chat/chat-session-store.js +26 -0
  91. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  92. package/dist/ai-service/const.d.ts +2 -1
  93. package/dist/ai-service/const.d.ts.map +1 -1
  94. package/dist/ai-service/const.js +1 -0
  95. package/dist/ai-service/const.js.map +1 -1
  96. package/dist/ai-service/index.d.ts +5 -1
  97. package/dist/ai-service/index.d.ts.map +1 -1
  98. package/dist/ai-service/index.js +55 -7
  99. package/dist/ai-service/index.js.map +1 -1
  100. package/dist/ai-service/integrations/metadata-storage/index.d.ts +10 -0
  101. package/dist/ai-service/integrations/metadata-storage/index.d.ts.map +1 -1
  102. package/dist/ai-service/integrations/metadata-storage/local.d.ts +4 -2
  103. package/dist/ai-service/integrations/metadata-storage/local.d.ts.map +1 -1
  104. package/dist/ai-service/integrations/metadata-storage/local.js +35 -9
  105. package/dist/ai-service/integrations/metadata-storage/local.js.map +1 -1
  106. package/dist/ai-service/integrations/store.d.ts +27 -2
  107. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  108. package/dist/ai-service/integrations/store.js +129 -62
  109. package/dist/ai-service/integrations/store.js.map +1 -1
  110. package/dist/ai-service/llm/client.d.ts +123 -0
  111. package/dist/ai-service/llm/client.d.ts.map +1 -0
  112. package/dist/ai-service/llm/client.js +168 -0
  113. package/dist/ai-service/llm/client.js.map +1 -0
  114. package/dist/ai-service/llm/context/context-handle.d.ts +4 -4
  115. package/dist/ai-service/llm/context/context-handle.d.ts.map +1 -1
  116. package/dist/ai-service/llm/context/context-handle.js +7 -3
  117. package/dist/ai-service/llm/context/context-handle.js.map +1 -1
  118. package/dist/ai-service/llm/context/context.d.ts +28 -0
  119. package/dist/ai-service/llm/context/context.d.ts.map +1 -1
  120. package/dist/ai-service/llm/context/context.js +117 -0
  121. package/dist/ai-service/llm/context/context.js.map +1 -1
  122. package/dist/ai-service/llm/context/manager.d.ts +22 -2
  123. package/dist/ai-service/llm/context/manager.d.ts.map +1 -1
  124. package/dist/ai-service/llm/context/manager.js +86 -13
  125. package/dist/ai-service/llm/context/manager.js.map +1 -1
  126. package/dist/ai-service/llm/context/storage/index.d.ts +1 -0
  127. package/dist/ai-service/llm/context/storage/index.d.ts.map +1 -1
  128. package/dist/ai-service/llm/context/storage/local.d.ts +1 -0
  129. package/dist/ai-service/llm/context/storage/local.d.ts.map +1 -1
  130. package/dist/ai-service/llm/context/storage/local.js +13 -1
  131. package/dist/ai-service/llm/context/storage/local.js.map +1 -1
  132. package/dist/ai-service/llm/error.d.ts +14 -4
  133. package/dist/ai-service/llm/error.d.ts.map +1 -1
  134. package/dist/ai-service/llm/error.js +49 -4
  135. package/dist/ai-service/llm/error.js.map +1 -1
  136. package/dist/ai-service/llm/interaction/adapters/vercel.d.ts +67 -0
  137. package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -0
  138. package/dist/ai-service/llm/interaction/adapters/vercel.js +110 -0
  139. package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -0
  140. package/dist/ai-service/llm/interaction/compose.d.ts +71 -0
  141. package/dist/ai-service/llm/interaction/compose.d.ts.map +1 -0
  142. package/dist/ai-service/llm/interaction/compose.js +88 -0
  143. package/dist/ai-service/llm/interaction/compose.js.map +1 -0
  144. package/dist/ai-service/llm/interaction/index.d.ts +68 -0
  145. package/dist/ai-service/llm/interaction/index.d.ts.map +1 -0
  146. package/dist/ai-service/llm/interaction/index.js +70 -0
  147. package/dist/ai-service/llm/interaction/index.js.map +1 -0
  148. package/dist/ai-service/llm/interaction/middleware.d.ts +52 -0
  149. package/dist/ai-service/llm/interaction/middleware.d.ts.map +1 -0
  150. package/dist/ai-service/llm/interaction/middleware.js +17 -0
  151. package/dist/ai-service/llm/interaction/middleware.js.map +1 -0
  152. package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts +45 -0
  153. package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts.map +1 -0
  154. package/dist/ai-service/llm/interaction/middlewares/llmobs.js +85 -0
  155. package/dist/ai-service/llm/interaction/middlewares/llmobs.js.map +1 -0
  156. package/dist/ai-service/llm/interaction/middlewares/logging.d.ts +88 -0
  157. package/dist/ai-service/llm/interaction/middlewares/logging.d.ts.map +1 -0
  158. package/dist/ai-service/llm/interaction/middlewares/logging.js +238 -0
  159. package/dist/ai-service/llm/interaction/middlewares/logging.js.map +1 -0
  160. package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts +47 -0
  161. package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts.map +1 -0
  162. package/dist/ai-service/llm/interaction/middlewares/profiler.js +183 -0
  163. package/dist/ai-service/llm/interaction/middlewares/profiler.js.map +1 -0
  164. package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts +121 -0
  165. package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts.map +1 -0
  166. package/dist/ai-service/llm/interaction/middlewares/stream-retry.js +291 -0
  167. package/dist/ai-service/llm/interaction/middlewares/stream-retry.js.map +1 -0
  168. package/dist/ai-service/llm/interaction/provider.d.ts +158 -0
  169. package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -0
  170. package/dist/ai-service/llm/interaction/provider.js +15 -0
  171. package/dist/ai-service/llm/interaction/provider.js.map +1 -0
  172. package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts +48 -0
  173. package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts.map +1 -0
  174. package/dist/ai-service/llm/interaction/stream-lifecycle.js +131 -0
  175. package/dist/ai-service/llm/interaction/stream-lifecycle.js.map +1 -0
  176. package/dist/ai-service/llm/provider.d.ts +1 -2
  177. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  178. package/dist/ai-service/llm/provider.js +3 -6
  179. package/dist/ai-service/llm/provider.js.map +1 -1
  180. package/dist/ai-service/llmobs/helpers.d.ts +7 -8
  181. package/dist/ai-service/llmobs/helpers.d.ts.map +1 -1
  182. package/dist/ai-service/llmobs/helpers.js +8 -48
  183. package/dist/ai-service/llmobs/helpers.js.map +1 -1
  184. package/dist/ai-service/llmobs/middleware/stream-text.d.ts +19 -21
  185. package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -1
  186. package/dist/ai-service/llmobs/middleware/stream-text.js +98 -106
  187. package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -1
  188. package/dist/ai-service/llmobs/types.d.ts +14 -1
  189. package/dist/ai-service/llmobs/types.d.ts.map +1 -1
  190. package/dist/ai-service/state-machine/clark-fsm.d.ts +75 -5
  191. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  192. package/dist/ai-service/state-machine/clark-fsm.js +100 -0
  193. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  194. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  195. package/dist/ai-service/state-machine/handlers/agent-planning.js +4 -0
  196. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  197. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  198. package/dist/ai-service/state-machine/handlers/llm-generating.js +91 -456
  199. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  200. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +1 -1
  201. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
  202. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  203. package/dist/ai-service/state-machine/helpers/peer.js +15 -0
  204. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  205. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  206. package/dist/ai-service/state-machine/mocks.js +1 -0
  207. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  208. package/dist/ai-service/types.d.ts +30 -0
  209. package/dist/ai-service/types.d.ts.map +1 -1
  210. package/dist/binding-extraction/extract-identifiers.d.ts +14 -0
  211. package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
  212. package/dist/binding-extraction/extract-identifiers.js +46 -1
  213. package/dist/binding-extraction/extract-identifiers.js.map +1 -1
  214. package/dist/binding-extraction/js-identifiers.d.ts +14 -0
  215. package/dist/binding-extraction/js-identifiers.d.ts.map +1 -1
  216. package/dist/binding-extraction/js-identifiers.js +168 -0
  217. package/dist/binding-extraction/js-identifiers.js.map +1 -1
  218. package/dist/binding-extraction/python-identifiers.d.ts +5 -0
  219. package/dist/binding-extraction/python-identifiers.d.ts.map +1 -1
  220. package/dist/binding-extraction/python-identifiers.js +76 -7
  221. package/dist/binding-extraction/python-identifiers.js.map +1 -1
  222. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  223. package/dist/file-sync-vite-plugin.js +73 -3
  224. package/dist/file-sync-vite-plugin.js.map +1 -1
  225. package/dist/file-system-manager.d.ts.map +1 -1
  226. package/dist/file-system-manager.js +6 -4
  227. package/dist/file-system-manager.js.map +1 -1
  228. package/dist/index.d.ts +1 -1
  229. package/dist/index.d.ts.map +1 -1
  230. package/dist/index.js +1 -1
  231. package/dist/index.js.map +1 -1
  232. package/dist/lock-service/activity-tracker.d.ts +14 -2
  233. package/dist/lock-service/activity-tracker.d.ts.map +1 -1
  234. package/dist/lock-service/activity-tracker.js +43 -6
  235. package/dist/lock-service/activity-tracker.js.map +1 -1
  236. package/dist/lock-service/index.d.ts +13 -2
  237. package/dist/lock-service/index.d.ts.map +1 -1
  238. package/dist/lock-service/index.js +130 -44
  239. package/dist/lock-service/index.js.map +1 -1
  240. package/dist/parsing/jsx.d.ts.map +1 -1
  241. package/dist/parsing/jsx.js +78 -66
  242. package/dist/parsing/jsx.js.map +1 -1
  243. package/dist/socket-manager.js +1 -1
  244. package/dist/socket-manager.js.map +1 -1
  245. package/dist/sync-service/list-dir.d.ts.map +1 -1
  246. package/dist/sync-service/list-dir.js +41 -18
  247. package/dist/sync-service/list-dir.js.map +1 -1
  248. package/dist/vite-plugin-yaml-types.d.ts.map +1 -1
  249. package/dist/vite-plugin-yaml-types.js +2 -4
  250. package/dist/vite-plugin-yaml-types.js.map +1 -1
  251. package/package.json +7 -7
  252. package/dist/ai-service/agent/subagents/apis/api-executor.d.ts.map +0 -1
  253. package/dist/ai-service/agent/subagents/apis/api-executor.js.map +0 -1
  254. package/dist/ai-service/agent/subagents/apis/context.d.ts +0 -12
  255. package/dist/ai-service/agent/subagents/apis/context.d.ts.map +0 -1
  256. package/dist/ai-service/agent/subagents/apis/context.js +0 -18
  257. package/dist/ai-service/agent/subagents/apis/context.js.map +0 -1
  258. package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts +0 -40
  259. package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts.map +0 -1
  260. package/dist/ai-service/agent/subagents/apis/generate-api-source.js +0 -516
  261. package/dist/ai-service/agent/subagents/apis/generate-api-source.js.map +0 -1
  262. package/dist/ai-service/agent/subagents/apis/state.d.ts +0 -49
  263. package/dist/ai-service/agent/subagents/apis/state.d.ts.map +0 -1
  264. package/dist/ai-service/agent/subagents/apis/state.js +0 -25
  265. package/dist/ai-service/agent/subagents/apis/state.js.map +0 -1
  266. package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts +0 -3
  267. package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts.map +0 -1
  268. package/dist/ai-service/agent/subagents/apis/system-prompt.js +0 -1704
  269. package/dist/ai-service/agent/subagents/apis/system-prompt.js.map +0 -1
  270. package/dist/ai-service/agent/tools/apis/finalize-api.d.ts +0 -11
  271. package/dist/ai-service/agent/tools/apis/finalize-api.d.ts.map +0 -1
  272. package/dist/ai-service/agent/tools/apis/finalize-api.js +0 -133
  273. package/dist/ai-service/agent/tools/apis/finalize-api.js.map +0 -1
  274. package/dist/ai-service/llm/middleware/retry.d.ts +0 -112
  275. package/dist/ai-service/llm/middleware/retry.d.ts.map +0 -1
  276. package/dist/ai-service/llm/middleware/retry.js +0 -239
  277. package/dist/ai-service/llm/middleware/retry.js.map +0 -1
@@ -42,6 +42,7 @@ import { Api as ProtoApi } from "@superblocksteam/types";
42
42
  import { getLogger, getErrorMeta } from "../../../../util/logger.js";
43
43
  import llmobs from "../../../llmobs/index.js";
44
44
  import { safeJsonStringify } from "../../../util/safe-stringify.js";
45
+ import { validateBlockFieldNames } from "./build-api-artifact.js";
45
46
  let ApiExecutor = (() => {
46
47
  let _instanceExtraInitializers = [];
47
48
  let _execute_decorators;
@@ -68,72 +69,48 @@ let ApiExecutor = (() => {
68
69
  async execute(api, inputs = {}) {
69
70
  const logger = getLogger();
70
71
  const startTime = Date.now();
72
+ const apiName = api.type === "fetch" ? api.apiName : api.definition.metadata.name;
73
+ logger.info(`Executing API ${apiName}`, api.type === "inline" ? safeJsonStringify(api.definition, 2) : "");
71
74
  try {
72
75
  // Validate proto compatibility before execution
73
- this.validateProtoCompatibility(api);
74
- logger.info(`Executing API ${api.metadata.name}:\n${safeJsonStringify(api, 2)}`);
76
+ if (api.type === "inline") {
77
+ this.validateProtoCompatibility(api.definition);
78
+ }
75
79
  // Step 3: Execute via aiExecuteV2Api
76
80
  const result = await this.editorClient.call.aiExecuteV2Api({
77
81
  api,
78
82
  inputs,
79
83
  });
80
- // Step 4: Handle execution result
81
- if (result.error) {
82
- // Parse error for helpful details
83
- const errorDetails = this.parseExecutionError(result.error);
84
- return {
85
- success: false,
86
- error: result.error,
87
- errorDetails,
88
- executionTime: Date.now() - startTime,
89
- };
84
+ let errors = result.errors?.map((err) => ({
85
+ ...this.parseExecutionError(err.message),
86
+ handled: err.handled,
87
+ }));
88
+ const topLevelError = result.systemError;
89
+ if (!errors?.length && typeof topLevelError === "string") {
90
+ errors = [this.parseExecutionError(topLevelError)];
90
91
  }
92
+ const success = !result.systemError &&
93
+ (!errors || errors.length === 0 || errors.every((err) => err.handled));
91
94
  return {
92
- success: true,
93
- outputs: result.outputs || {},
95
+ success,
96
+ outputs: result.outputs,
94
97
  executionTime: Date.now() - startTime,
98
+ systemError: result.systemError,
99
+ errors,
95
100
  };
96
101
  }
97
102
  catch (error) {
98
- logger.error(`API execution failed for ${api.metadata.name}:`, getErrorMeta(error));
99
- // Handle different error types
100
- if (error instanceof Error) {
101
- if (error.message.includes("Proto")) {
102
- return {
103
- success: false,
104
- error: error.message,
105
- errorDetails: {
106
- type: "proto",
107
- message: error.message,
108
- suggestion: this.getProtoErrorSuggestion(error.message),
109
- originalError: error,
110
- },
111
- executionTime: Date.now() - startTime,
112
- };
113
- }
114
- if (error.message.includes("ValidationError")) {
115
- return {
116
- success: false,
117
- error: error.message,
118
- errorDetails: {
119
- type: "validation",
120
- message: error.message,
121
- suggestion: this.getValidationErrorSuggestion(error.message),
122
- originalError: error,
123
- },
124
- executionTime: Date.now() - startTime,
125
- };
126
- }
127
- }
128
- // Generic error
103
+ logger.error(`API execution failed for ${apiName}:`, getErrorMeta(error));
104
+ const parsedError = this.parseExecutionError(error instanceof Error ? error.message : String(error));
129
105
  return {
130
106
  success: false,
131
- error: error instanceof Error ? error.message : String(error),
132
- errorDetails: {
133
- type: "unknown",
134
- message: error instanceof Error ? error.message : String(error),
135
- originalError: error,
136
- },
107
+ errors: [
108
+ {
109
+ ...parsedError,
110
+ handled: false,
111
+ originalError: error,
112
+ },
113
+ ],
137
114
  executionTime: Date.now() - startTime,
138
115
  };
139
116
  }
@@ -145,7 +122,7 @@ let ApiExecutor = (() => {
145
122
  validateProtoCompatibility(api) {
146
123
  const logger = getLogger();
147
124
  // Check for incorrect generic field names
148
- this.validateBlockFieldNames(api);
125
+ validateBlockFieldNames(api, this.integrationStore);
149
126
  try {
150
127
  // Convert to proto and back
151
128
  const proto = ProtoApi.fromJson(api);
@@ -168,89 +145,197 @@ let ApiExecutor = (() => {
168
145
  }
169
146
  }
170
147
  /**
171
- * Validate that blocks use the correct plugin field name matching the integration's plugin.id.
148
+ * Parse error messages to extract the message and body (JSON) separately.
149
+ *
150
+ * @param errorMessage - The raw error message that may contain JSON with escaped newlines
151
+ * @returns Object with message and body if body exists, undefined otherwise
172
152
  */
173
- validateBlockFieldNames(api) {
174
- const logger = getLogger();
175
- for (const block of api.blocks || []) {
176
- if (!block.step)
177
- continue;
178
- const integrationId = block.step.integration;
179
- if (!integrationId)
180
- continue;
181
- // Skip built-in plugins that don't have integrations in the store
182
- if (integrationId === "javascript" || integrationId === "python") {
183
- continue;
153
+ parseErrorMessage(errorMessage) {
154
+ // Check if the message contains a Body section with JSON
155
+ // Look for Body: followed by JSON, handling escaped newlines
156
+ const bodyIndex = errorMessage.indexOf("Body:");
157
+ if (bodyIndex !== -1) {
158
+ // Find the JSON part after Body:
159
+ const afterBody = errorMessage.substring(bodyIndex + 5); // Skip "Body:"
160
+ const jsonMatch = afterBody.match(/(\{[\s\S]*\})/);
161
+ if (jsonMatch && jsonMatch[1]) {
162
+ try {
163
+ // Extract and clean the JSON string
164
+ const jsonString = jsonMatch[1]
165
+ .replace(/^\\n/, "") // Remove leading \n if present
166
+ .replace(/\\n/g, "\n")
167
+ .replace(/\\"/g, '"')
168
+ .replace(/\\\\/g, "\\");
169
+ // Parse and re-stringify with proper formatting
170
+ const parsed = JSON.parse(jsonString);
171
+ const prettyJson = JSON.stringify(parsed, null, 2);
172
+ // Get the part before Body: and remove trailing \n
173
+ let messageText = errorMessage.substring(0, bodyIndex);
174
+ if (messageText.endsWith("\\n")) {
175
+ messageText = messageText.slice(0, -2);
176
+ }
177
+ return {
178
+ message: messageText,
179
+ body: prettyJson,
180
+ };
181
+ }
182
+ catch {
183
+ // If parsing fails, return undefined to indicate no parseable body
184
+ return undefined;
185
+ }
184
186
  }
185
- // Get the integration header to find the actual plugin type
186
- const integrationHeader = this.integrationStore.getHeader(integrationId);
187
- if (!integrationHeader) {
188
- logger.warn(`Integration "${integrationId}" not found in store for block "${block.name}"`);
189
- continue;
187
+ }
188
+ // If no Body section found, try to detect standalone JSON
189
+ const jsonMatch = errorMessage.match(/^(.*?)(\{[\s\S]*\})$/);
190
+ if (jsonMatch && jsonMatch[1] !== undefined && jsonMatch[2]) {
191
+ try {
192
+ const jsonString = jsonMatch[2]
193
+ .replace(/\\n/g, "\n")
194
+ .replace(/\\"/g, '"')
195
+ .replace(/\\\\/g, "\\");
196
+ const parsed = JSON.parse(jsonString);
197
+ const prettyJson = JSON.stringify(parsed, null, 2);
198
+ // Get the non-JSON part as message
199
+ const messageText = jsonMatch[1].trim().replace(/\\n/g, "\n");
200
+ return {
201
+ message: messageText || "Error",
202
+ body: prettyJson,
203
+ };
190
204
  }
191
- const expectedPluginId = integrationHeader.plugin.id;
192
- // Check if the correct field name is used
193
- if (!(expectedPluginId in block.step)) {
194
- // Find what field they're actually using
195
- const usedFields = Object.keys(block.step).filter((key) => key !== "integration" &&
196
- typeof block.step[key] === "object");
197
- throw new Error(`Block "${block.name}" uses incorrect field name. ` +
198
- `The field name must match the integration's plugin ID.\n\n` +
199
- `Expected field name: "${expectedPluginId}"\n` +
200
- (usedFields.length > 0
201
- ? `Used field name: "${usedFields[0]}"\n\n`
202
- : `No plugin configuration field found\n\n`) +
203
- `The integration "${integrationId}" is of type "${expectedPluginId}", ` +
204
- `so your step configuration must use:\n` +
205
- `${expectedPluginId}: { ... }\n\n` +
206
- `This ensures proper routing and validation of your API calls.`);
205
+ catch {
206
+ // If parsing fails, return undefined
207
+ return undefined;
207
208
  }
208
209
  }
210
+ // No parseable body found
211
+ return undefined;
209
212
  }
210
213
  /**
211
214
  * Parse execution errors to provide helpful details.
212
215
  */
213
216
  parseExecutionError(errorMessage) {
217
+ // Parse the error message to extract message and body
218
+ const parsedError = this.parseErrorMessage(errorMessage);
219
+ // Build messages for different purposes
220
+ const fullMessage = parsedError
221
+ ? `${parsedError.message}\n\nBody:\n\n${parsedError.body}`
222
+ : errorMessage.replace(/\\n/g, "\n");
223
+ const displayMessage = parsedError
224
+ ? parsedError.message
225
+ : errorMessage.replace(/\\n/g, "\n");
226
+ const bodyDetails = parsedError?.body;
214
227
  // Check for common error patterns
228
+ if (errorMessage.includes("Proto")) {
229
+ return {
230
+ type: "proto",
231
+ message: fullMessage,
232
+ displayMessage,
233
+ bodyDetails,
234
+ suggestion: this.getProtoErrorSuggestion(errorMessage),
235
+ };
236
+ }
237
+ if (errorMessage.includes("ValidationError")) {
238
+ return {
239
+ type: "validation",
240
+ message: fullMessage,
241
+ displayMessage,
242
+ bodyDetails,
243
+ suggestion: this.getValidationErrorSuggestion(errorMessage),
244
+ };
245
+ }
215
246
  if (errorMessage.includes("ReferenceError")) {
216
247
  const match = errorMessage.match(/ReferenceError: (\w+) is not defined/);
217
248
  const variable = match?.[1];
218
249
  return {
219
- type: "execution",
220
- message: errorMessage,
221
- suggestion: variable
222
- ? `Variable "${variable}" is not defined. If this is in a Variables block, remember that values are JavaScript expressions - strings must be quoted like '"${variable}"'`
223
- : "Check that all variables are properly defined and string values in Variables blocks are quoted",
250
+ type: "binding",
251
+ message: fullMessage,
252
+ displayMessage,
253
+ bodyDetails,
254
+ suggestion: (variable ? `Variable "${variable}" is not defined. '` : "") +
255
+ "Check that all inputs are supplied and string values in Variables blocks are quoted",
224
256
  };
225
257
  }
226
258
  if (errorMessage.includes("Integration") &&
227
259
  errorMessage.includes("not found")) {
228
260
  return {
229
261
  type: "validation",
230
- message: errorMessage,
262
+ message: fullMessage,
263
+ displayMessage,
264
+ bodyDetails,
231
265
  suggestion: "Check that the integration ID exists and is accessible. Use listIntegrations to see available integrations.",
232
266
  };
233
267
  }
234
268
  if (errorMessage.includes("UUID")) {
235
269
  return {
236
270
  type: "validation",
237
- message: errorMessage,
271
+ message: fullMessage,
272
+ displayMessage,
273
+ bodyDetails,
238
274
  suggestion: 'Organization ID must be a valid UUID. Use "00000000-0000-0000-0000-000000000000" for testing.',
239
275
  };
240
276
  }
241
277
  if (errorMessage.includes("type must not be in list [0]")) {
242
278
  return {
243
279
  type: "validation",
244
- message: errorMessage,
280
+ message: fullMessage,
281
+ displayMessage,
282
+ bodyDetails,
245
283
  suggestion: "Variables block 'type' field must be a non-zero value. Use 1 for TYPE_SIMPLE.",
246
284
  };
247
285
  }
286
+ if (this.isAuthError(errorMessage)) {
287
+ return {
288
+ type: "auth",
289
+ message: fullMessage,
290
+ displayMessage,
291
+ bodyDetails,
292
+ suggestion: "There may be an issue with the integration configuration. Verify the integration is set up correctly and the credentials are valid.",
293
+ };
294
+ }
295
+ if (this.isRateLimitError(errorMessage)) {
296
+ return {
297
+ type: "rate_limit",
298
+ message: fullMessage,
299
+ displayMessage,
300
+ bodyDetails,
301
+ suggestion: "The integration reported a rate limit. Wait a moment and retry or reduce the frequency of requests.",
302
+ };
303
+ }
304
+ if (this.isBindingError(errorMessage)) {
305
+ return {
306
+ type: "binding",
307
+ message: fullMessage,
308
+ displayMessage,
309
+ bodyDetails,
310
+ suggestion: "Review component and state bindings referenced by the API to ensure they exist and are spelled correctly.",
311
+ };
312
+ }
248
313
  // Generic execution error
249
314
  return {
250
315
  type: "execution",
251
- message: errorMessage,
316
+ message: fullMessage,
317
+ displayMessage,
318
+ bodyDetails,
252
319
  };
253
320
  }
321
+ /**
322
+ * Determine whether an error message indicates an authentication or authorization failure.
323
+ */
324
+ isAuthError(message) {
325
+ return /(unauthorized|forbidden|permission denied|401|403|oauth|no token|authentication|credential|token.*expired|invalid.*token)/i.test(message);
326
+ }
327
+ /**
328
+ * Determine whether an error message indicates a rate limit condition.
329
+ */
330
+ isRateLimitError(message) {
331
+ return /(429|rate limit|throttled)/i.test(message);
332
+ }
333
+ /**
334
+ * Determine whether an error message indicates missing or incorrect bindings.
335
+ */
336
+ isBindingError(message) {
337
+ return /ReferenceError|is not defined|Cannot read properties/i.test(message);
338
+ }
254
339
  /**
255
340
  * Get suggestion for proto errors.
256
341
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-executor.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/api-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ClarkStateHandlerParams } from "../../../state-machine/clark-fsm.js";
2
+ import type { FileArtifact } from "../../../types.js";
3
+ /**
4
+ * Read the TypeScript source of an API
5
+ */
6
+ export declare const readApiSource: (services: Pick<ClarkStateHandlerParams, "appShell" | "templateRenderer">, apiName: string, entityNames?: string[]) => Promise<FileArtifact | undefined>;
7
+ /**
8
+ * Write the TypeScript source of an API to the temporary directory
9
+ *
10
+ * This function writes the API source code to a temporary location where it can be
11
+ * compiled and validated before being persisted to the actual API location.
12
+ *
13
+ * @param apiName - The name of the API
14
+ * @param apiSource - The TypeScript source code of the API
15
+ * @param services - Service dependencies including app shell for file operations
16
+ * @returns The path where the API source was written
17
+ */
18
+ export declare function writeApiSource(apiName: string, apiSource: string, services: ClarkStateHandlerParams): Promise<string>;
19
+ //# sourceMappingURL=api-source.d.ts.map
@@ -0,0 +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;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,kBAAkB,CAAC,EACxE,SAAS,MAAM,EACf,cAAc,MAAM,EAAE,sCA8CvB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
@@ -0,0 +1,73 @@
1
+ import { writeFile, mkdir, readFile } from "fs/promises";
2
+ import path from "path";
3
+ import { Paths } from "../../../const.js";
4
+ import { YamlToApiBuilderTransformer } from "../../../transform/api-builder/to-sdk-transformer.js";
5
+ import { applyFileTransformations, renderPath, } from "../../../transform/shared.js";
6
+ // import { getPageEntitiesFiltered } from "../../utils.js";
7
+ /**
8
+ * Read the TypeScript source of an API
9
+ */
10
+ export const readApiSource = async (services, apiName, entityNames) => {
11
+ const apiTsPath = renderPath(Paths.GeneratedApis, {
12
+ apiName,
13
+ }) + ".ts";
14
+ const tmpPath = renderPath(Paths.Scratch, { path: apiTsPath });
15
+ if (await services.appShell.pathExists(tmpPath)) {
16
+ const content = await readFile(tmpPath);
17
+ const artifact = {
18
+ type: "file",
19
+ filePath: apiTsPath,
20
+ content: content.toString(),
21
+ };
22
+ return artifact;
23
+ }
24
+ const yamlPath = renderPath(Paths.ApiYamls, {
25
+ apiName,
26
+ });
27
+ const pathExists = await services.appShell.pathExists(yamlPath);
28
+ if (!pathExists) {
29
+ return undefined;
30
+ }
31
+ const yamlArtifact = {
32
+ type: "file",
33
+ filePath: yamlPath,
34
+ content: "", // xform just needs path params
35
+ };
36
+ const [sdkArtifact] = await applyFileTransformations([yamlArtifact], [
37
+ new YamlToApiBuilderTransformer({
38
+ appRootDirPath: services.appShell.appRootDirPath,
39
+ entityNames: entityNames || [],
40
+ skipCleanup: true,
41
+ templateRenderer: services.templateRenderer,
42
+ }),
43
+ ]);
44
+ return sdkArtifact;
45
+ };
46
+ /**
47
+ * Write the TypeScript source of an API to the temporary directory
48
+ *
49
+ * This function writes the API source code to a temporary location where it can be
50
+ * compiled and validated before being persisted to the actual API location.
51
+ *
52
+ * @param apiName - The name of the API
53
+ * @param apiSource - The TypeScript source code of the API
54
+ * @param services - Service dependencies including app shell for file operations
55
+ * @returns The path where the API source was written
56
+ */
57
+ export async function writeApiSource(apiName, apiSource, services) {
58
+ const apiTsFilePath = renderPath(Paths.GeneratedApis, {
59
+ apiName,
60
+ }) + ".ts";
61
+ const filePath = renderPath(Paths.Scratch, {
62
+ path: apiTsFilePath,
63
+ });
64
+ const fullPath = path.join(services.appShell.appRootDirPath, filePath);
65
+ const dirPath = path.dirname(fullPath);
66
+ // Ensure all intermediate directories exist
67
+ await mkdir(dirPath, { recursive: true });
68
+ await writeFile(fullPath, apiSource, {
69
+ encoding: "utf-8",
70
+ });
71
+ return apiTsFilePath;
72
+ }
73
+ //# sourceMappingURL=api-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-source.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/api-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EACL,wBAAwB,EACxB,UAAU,GACX,MAAM,8BAA8B,CAAC;AAGtC,4DAA4D;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,QAAwE,EACxE,OAAe,EACf,WAAsB,EACtB,EAAE;IACF,MAAM,SAAS,GACb,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE;QAC9B,OAAO;KACR,CAAC,GAAG,KAAK,CAAC;IACb,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAE/D,IAAI,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAiB;YAC7B,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;SAC5B,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC1C,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG;QACnB,IAAI,EAAE,MAAe;QACrB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,EAAE,EAAE,+BAA+B;KAC7C,CAAC;IAEF,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,wBAAwB,CAClD,CAAC,YAAY,CAAC,EACd;QACE,IAAI,2BAA2B,CAAC;YAC9B,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc;YAChD,WAAW,EAAE,WAAW,IAAI,EAAE;YAC9B,WAAW,EAAE,IAAI;YACjB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;SAC5C,CAAC;KACH,CACF,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,SAAiB,EACjB,QAAiC;IAEjC,MAAM,aAAa,GACjB,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE;QAC9B,OAAO;KACR,CAAC,GAAG,KAAK,CAAC;IAEb,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE;QACzC,IAAI,EAAE,aAAa;KACpB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvC,4CAA4C;IAC5C,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,MAAM,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE;QACnC,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { getPrefixedLogger } from "../../../../util/logger.js";
2
+ import { type Clark, type ClarkStateHandlerParams } from "../../../state-machine/clark-fsm.js";
3
+ import type { ApiExecutionResult, ApiExecutionInputs } from "./api-executor.js";
4
+ import type { ApiIdentifier } from "../../subagents/apis/types.js";
5
+ export declare enum ApiValidationStage {
6
+ REGISTRATION = "registration",
7
+ EXECUTE = "execute",
8
+ AUTH = "auth",
9
+ RESULTS = "results",
10
+ METADATA = "metadata"
11
+ }
12
+ export interface ApiValidationIssue {
13
+ stage: ApiValidationStage;
14
+ reason: string;
15
+ recoverable: boolean;
16
+ attempt: number;
17
+ error?: string;
18
+ suggestion?: string;
19
+ }
20
+ export interface ApiValidationPipelineOptions {
21
+ maxRegistrationAttempts: number;
22
+ maxExecutionAttempts: number;
23
+ validateMetadata?: boolean;
24
+ }
25
+ export interface ApiValidationPipelineResult {
26
+ success: boolean;
27
+ summary: string;
28
+ issues: ApiValidationIssue[];
29
+ attempts: Record<ApiValidationStage, number>;
30
+ executionResult?: ApiExecutionResult;
31
+ escalated: boolean;
32
+ }
33
+ export declare class ApiValidationEscalatedError extends Error {
34
+ readonly issues: ApiValidationIssue[];
35
+ readonly summary: string;
36
+ constructor(summary: string, issues: ApiValidationIssue[]);
37
+ }
38
+ export interface RunApiValidationPipelineParams {
39
+ clark: Clark;
40
+ services: ClarkStateHandlerParams;
41
+ identifier: ApiIdentifier;
42
+ inputs?: ApiExecutionInputs;
43
+ options?: Partial<ApiValidationPipelineOptions>;
44
+ logger?: ReturnType<typeof getPrefixedLogger>;
45
+ }
46
+ /**
47
+ * Execute the automated API validation pipeline, progressing through execution,
48
+ * authentication, parameter, metadata, and result validation stages.
49
+ */
50
+ export declare const runApiValidationPipeline: (params: RunApiValidationPipelineParams) => Promise<ApiValidationPipelineResult>;
51
+ //# sourceMappingURL=api-validation-orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-validation-orchestrator.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/api-validation-orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,uBAAuB,EAC7B,MAAM,qCAAqC,CAAC;AAI7C,OAAO,KAAK,EACV,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,oBAAY,kBAAkB;IAC5B,YAAY,iBAAiB;IAC7B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,uBAAuB,EAAE,MAAM,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC7C,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE;CAQ1D;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,uBAAuB,CAAC;IAClC,UAAU,EAAE,aAAa,CAAC;IAC1B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;CAC/C;AAgBD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,8BAA8B,KACrC,OAAO,CAAC,2BAA2B,CAmTrC,CAAC"}