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

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
@@ -1 +0,0 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/apis/system-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwpDpB,CAAC;AAEF,oEAAoE;AACpE,oBAAoB;AACpB,mBAAmB;AACnB,gDAAgD;AAChD,iBAAiB;AACjB,oBAAoB;AACpB,gBAAgB;AAChB,oCAAoC;AACpC,qCAAqC;AACrC,yBAAyB;AACzB,SAAS;AACT,OAAO;AACP,IAAI;AAEJ,eAAe,YAAY,CAAC"}
@@ -1,11 +0,0 @@
1
- export declare const finalizeApiToolFactory: import("../../tools2/types.js").ToolFactory<import("../../tools2/types.js").Tool<{
2
- apiName: string;
3
- summary: string;
4
- responseInterface: string;
5
- inputInterface: string;
6
- givingUpDueToFatalError?: boolean | undefined;
7
- }, {
8
- message: string;
9
- apiName: string;
10
- }>>;
11
- //# sourceMappingURL=finalize-api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finalize-api.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/finalize-api.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,sBAAsB;;;;;;;;;GAqLlC,CAAC"}
@@ -1,133 +0,0 @@
1
- import path from "node:path";
2
- import { z } from "zod";
3
- import { ApiGenerationContext } from "../../subagents/apis/context.js";
4
- import { createToolFactory, ToolCategory } from "../../tools2/types.js";
5
- export const finalizeApiToolFactory = createToolFactory("finalizeApi", (clark, services, scopeUpdateQueue) => {
6
- return {
7
- category: ToolCategory.API,
8
- description: `Finalize. Create a summary of the work completed.
9
-
10
- IMPORTANT: You must supply ACCURATE TypeScript interfaces for the response and input of the API based on the API source code you wrote.`,
11
- inputSchema: z.object({
12
- responseInterface: z
13
- .string()
14
- .describe("A TypeScript interface describing the expected response from the API"),
15
- inputInterface: z
16
- .string()
17
- .describe("A TypeScript interface describing the expected input to the API"),
18
- summary: z.string().describe("A summary of the API"),
19
- apiName: z.string().describe("The name of the API"),
20
- givingUpDueToFatalError: z
21
- .boolean()
22
- .optional()
23
- .describe("Whether you are giving up due to a fatal error"),
24
- }),
25
- execute: async ({ responseInterface, inputInterface, summary, apiName, givingUpDueToFatalError, }, options) => {
26
- const context = ApiGenerationContext.from(options?.experimental_context);
27
- let id = apiName;
28
- if (context && context.id) {
29
- id = context.id;
30
- }
31
- const apiGenStateMap = clark.context.apiGenStateMap;
32
- if (!apiGenStateMap) {
33
- throw new Error("API generation state map is not initialized. This is an internal error.");
34
- }
35
- const state = apiGenStateMap.get(id);
36
- if (!state) {
37
- throw new Error(`No API generation state found for ${apiName}. This is an internal error.`);
38
- }
39
- if (state.status !== "built") {
40
- throw new Error(`Cannot finalize API in status "${state.status}". The API must be successfully built first using the buildApi tool. Expected status: "built", current status: "${state.status}".`);
41
- }
42
- if (givingUpDueToFatalError) {
43
- const error = new Error(`Unable to complete API generation. ${summary}`);
44
- apiGenStateMap.set(id, {
45
- ...state,
46
- status: "failed",
47
- error,
48
- errorContext: {
49
- phase: "finalizing",
50
- userPrompt: summary,
51
- suggestion: "Review the error details and consider alternative approaches",
52
- },
53
- });
54
- throw error;
55
- }
56
- const { apiYaml, isNewApi } = state;
57
- try {
58
- // Write API YAML file
59
- if (state.isNewApi) {
60
- await scopeUpdateQueue.enqueue(async () => {
61
- await services.draftInterface.createDraftFile(apiYaml.filePath, apiYaml.content);
62
- });
63
- }
64
- else {
65
- await services.draftInterface.createDraftFile(apiYaml.filePath, apiYaml.content);
66
- }
67
- const typesContent = `// Auto-generated by Clark
68
- // Contains input/output type definitions for ${apiName}
69
-
70
- ${inputInterface}
71
-
72
- ${responseInterface}
73
- `;
74
- const apiDir = path.dirname(apiYaml.filePath);
75
- const typesFilePath = path.join(apiDir, "types.d.ts");
76
- if (state.isNewApi) {
77
- await scopeUpdateQueue.enqueue(async () => {
78
- await services.draftInterface.createDraftFile(typesFilePath, typesContent);
79
- });
80
- }
81
- else {
82
- await services.draftInterface.createDraftFile(typesFilePath, typesContent);
83
- }
84
- }
85
- catch (error) {
86
- apiGenStateMap.set(id, {
87
- ...state,
88
- status: "failed",
89
- error,
90
- errorContext: {
91
- phase: "finalizing",
92
- suggestion: "There may be an issue with file system permissions or the page configuration",
93
- },
94
- });
95
- throw error;
96
- }
97
- let message = `${summary}
98
-
99
- The API response corresponds to the following TypeScript interface:
100
-
101
- \`\`\`typescript
102
- ${responseInterface}
103
- \`\`\`
104
-
105
- The API input corresponds to the following TypeScript interface:
106
-
107
- \`\`\`typescript
108
- ${inputInterface}
109
- \`\`\`
110
- `;
111
- if (isNewApi) {
112
- message = `${message}
113
-
114
- The ${apiName} scope was updated to include the ${apiName} entity.
115
- `;
116
- }
117
- apiGenStateMap.set(id, {
118
- ...state,
119
- status: "finalized",
120
- interface: {
121
- input: inputInterface,
122
- output: responseInterface,
123
- },
124
- message,
125
- });
126
- return {
127
- message,
128
- apiName,
129
- };
130
- },
131
- };
132
- });
133
- //# sourceMappingURL=finalize-api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finalize-api.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/finalize-api.ts"],"names":[],"mappings":"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"}
@@ -1,112 +0,0 @@
1
- /**
2
- * Retry middleware for AI SDK language models.
3
- *
4
- * Provides automatic retry functionality for streaming operations that fail
5
- * due to transient network errors (e.g., timeouts). This middleware operates
6
- * at the LanguageModelV2 level, retrying doStream() calls with exponential
7
- * backoff.
8
- *
9
- * **Two-phase retry architecture:**
10
- * 1. **Initial call retry**: Retries HTTP-level errors when calling doStream() to get metadata
11
- * 2. **Stream consumption retry**: Retries mid-stream errors during stream consumption
12
- *
13
- * **Separate retry budgets:**
14
- * Each phase has its own independent retry budget. For example, with maxRetries: 3:
15
- * - Phase 1 can retry up to 3 times (4 total attempts to get initial metadata)
16
- * - Phase 2 can retry up to 3 times (4 total attempts to consume stream)
17
- * - Maximum total attempts: 4 (phase 1) + 4 (phase 2) = 8
18
- *
19
- * This design ensures that failures in one phase don't prevent retries in the other phase.
20
- *
21
- * Handles two error types:
22
- * 1. HTTP-level errors: doStream() throws an exception (retried in phase 1)
23
- * 2. Stream-level errors: error chunks in the stream or connection drops (retried in phase 2)
24
- *
25
- * **Default retry strategy: Permissive**
26
- * - Retries all errors except known permanent failures (auth, permission, invalid request)
27
- * - Handles rate limits, server overload, timeouts, network issues
28
- * - Future-proof: retries unknown error types
29
- *
30
- * By default, retries are unlimited but can be constrained by maxRetries and/or
31
- * maxTotalRetryTimeMs options.
32
- */
33
- import { type Logger } from "../../../util/logger.js";
34
- import { type BackoffStrategy } from "../../util/backoff-strategy.js";
35
- import type { LanguageModelV2Middleware } from "@ai-sdk/provider";
36
- import type { LLMProviderConfig } from "@superblocksteam/library-shared/types";
37
- export interface RetryOptions {
38
- /**
39
- * Maximum number of retry attempts (not including the initial attempt).
40
- * Default: unlimited
41
- */
42
- maxRetries?: number;
43
- /**
44
- * Custom backoff strategy for calculating retry delays.
45
- * If not provided, uses ExponentialBackoff with initialDelayMs, maxDelayMs, and backoffMultiplier.
46
- */
47
- backoffStrategy?: BackoffStrategy;
48
- /**
49
- * Initial delay in milliseconds before the first retry.
50
- * Subsequent retries use exponential backoff.
51
- * Only used if backoffStrategy is not provided.
52
- * Default: 500 (0.5 seconds)
53
- */
54
- initialDelayMs?: number;
55
- /**
56
- * Maximum delay in milliseconds for exponential backoff.
57
- * Only used if backoffStrategy is not provided.
58
- * Default: 5000 (5 seconds)
59
- */
60
- maxDelayMs?: number;
61
- /**
62
- * Backoff multiplier for exponential backoff.
63
- * Only used if backoffStrategy is not provided.
64
- * Default: 2
65
- */
66
- backoffMultiplier?: number;
67
- /**
68
- * Maximum total time in milliseconds for all retry attempts.
69
- * If retries exceed this total time, no more retries will be attempted.
70
- * Default: undefined (no time limit)
71
- */
72
- maxTotalRetryTimeMs?: number;
73
- /**
74
- * Function to determine if an error is retryable.
75
- * Default: checks for timeout and connection errors
76
- */
77
- isRetryable?: (error: unknown) => boolean;
78
- /**
79
- * Callback invoked before each retry attempt.
80
- */
81
- onRetry?: (error: unknown, attempt: number, delayMs: number, totalRetryTimeMs: number) => void | Promise<void>;
82
- /**
83
- * Optional abort signal to cancel retry attempts.
84
- * When the signal is aborted, no further retries will be attempted.
85
- */
86
- abortSignal?: AbortSignal;
87
- }
88
- /**
89
- * Creates retry middleware for LanguageModelV2.
90
- *
91
- * This middleware wraps the doStream function and automatically retries
92
- * both HTTP-level errors (thrown exceptions) and stream-level errors
93
- * (error chunks in the stream). Retries use exponential backoff and
94
- * respect configured limits.
95
- *
96
- * @example
97
- * ```typescript
98
- * // Unlimited retries with 2-minute time limit
99
- * const middleware = retryMiddleware("bedrock", { maxTotalRetryTimeMs: 120000 });
100
- *
101
- * // Limit to 3 retries
102
- * const middleware = retryMiddleware("bedrock", { maxRetries: 3 });
103
- *
104
- * // Apply to model
105
- * const model = wrapLanguageModel({
106
- * model: baseModel,
107
- * middleware: [middleware]
108
- * });
109
- * ```
110
- */
111
- export declare function retryMiddleware(provider: LLMProviderConfig["provider"], options?: RetryOptions, logger?: Logger): LanguageModelV2Middleware;
112
- //# sourceMappingURL=retry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/middleware/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,KAAK,MAAM,EAA2B,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAE1C;;OAEG;IACH,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,KACrB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,EACvC,OAAO,GAAE,YAAiB,EAC1B,MAAM,GAAE,MAAoB,GAC3B,yBAAyB,CAsJ3B"}
@@ -1,239 +0,0 @@
1
- /**
2
- * Retry middleware for AI SDK language models.
3
- *
4
- * Provides automatic retry functionality for streaming operations that fail
5
- * due to transient network errors (e.g., timeouts). This middleware operates
6
- * at the LanguageModelV2 level, retrying doStream() calls with exponential
7
- * backoff.
8
- *
9
- * **Two-phase retry architecture:**
10
- * 1. **Initial call retry**: Retries HTTP-level errors when calling doStream() to get metadata
11
- * 2. **Stream consumption retry**: Retries mid-stream errors during stream consumption
12
- *
13
- * **Separate retry budgets:**
14
- * Each phase has its own independent retry budget. For example, with maxRetries: 3:
15
- * - Phase 1 can retry up to 3 times (4 total attempts to get initial metadata)
16
- * - Phase 2 can retry up to 3 times (4 total attempts to consume stream)
17
- * - Maximum total attempts: 4 (phase 1) + 4 (phase 2) = 8
18
- *
19
- * This design ensures that failures in one phase don't prevent retries in the other phase.
20
- *
21
- * Handles two error types:
22
- * 1. HTTP-level errors: doStream() throws an exception (retried in phase 1)
23
- * 2. Stream-level errors: error chunks in the stream or connection drops (retried in phase 2)
24
- *
25
- * **Default retry strategy: Permissive**
26
- * - Retries all errors except known permanent failures (auth, permission, invalid request)
27
- * - Handles rate limits, server overload, timeouts, network issues
28
- * - Future-proof: retries unknown error types
29
- *
30
- * By default, retries are unlimited but can be constrained by maxRetries and/or
31
- * maxTotalRetryTimeMs options.
32
- */
33
- import { getErrorMeta, getLogger } from "../../../util/logger.js";
34
- import { ExponentialBackoff, } from "../../util/backoff-strategy.js";
35
- import { LLMProviderError } from "../error.js";
36
- import { isProviderErrorRetryable } from "../util/provider-errors.js";
37
- /**
38
- * Creates retry middleware for LanguageModelV2.
39
- *
40
- * This middleware wraps the doStream function and automatically retries
41
- * both HTTP-level errors (thrown exceptions) and stream-level errors
42
- * (error chunks in the stream). Retries use exponential backoff and
43
- * respect configured limits.
44
- *
45
- * @example
46
- * ```typescript
47
- * // Unlimited retries with 2-minute time limit
48
- * const middleware = retryMiddleware("bedrock", { maxTotalRetryTimeMs: 120000 });
49
- *
50
- * // Limit to 3 retries
51
- * const middleware = retryMiddleware("bedrock", { maxRetries: 3 });
52
- *
53
- * // Apply to model
54
- * const model = wrapLanguageModel({
55
- * model: baseModel,
56
- * middleware: [middleware]
57
- * });
58
- * ```
59
- */
60
- export function retryMiddleware(provider, options = {}, logger = getLogger()) {
61
- const maxRetries = options.maxRetries ?? Infinity;
62
- const isRetryable = options.isRetryable ?? isProviderErrorRetryable;
63
- const maxTotalRetryTimeMs = options.maxTotalRetryTimeMs;
64
- const onRetry = options.onRetry;
65
- const backoffStrategy = options.backoffStrategy ??
66
- new ExponentialBackoff({
67
- initialDelayMs: options.initialDelayMs ?? 500,
68
- maxDelayMs: options.maxDelayMs ?? 5000,
69
- backoffMultiplier: options.backoffMultiplier ?? 2,
70
- });
71
- // Format maxRetries for display
72
- const maxRetriesDisplay = maxRetries === Infinity ? "unlimited" : String(maxRetries);
73
- const retryConfig = {
74
- provider,
75
- maxRetries,
76
- maxRetriesDisplay,
77
- maxTotalRetryTimeMs,
78
- backoffStrategy,
79
- isRetryable,
80
- onRetry,
81
- abortSignal: options.abortSignal,
82
- logger,
83
- };
84
- return {
85
- wrapStream: async ({ doStream }) => {
86
- // First retry loop: Get initial result with metadata
87
- // This retries HTTP-level errors from doStream() call
88
- let attempt = 0;
89
- let totalRetryTime = 0;
90
- let initialResult;
91
- while (true) {
92
- try {
93
- initialResult = await doStream();
94
- break; // Success!
95
- }
96
- catch (err) {
97
- attempt++;
98
- const delay = await handleRetryAttempt(err, attempt, totalRetryTime, {
99
- ...retryConfig,
100
- errorContext: "HTTP error",
101
- });
102
- totalRetryTime += delay;
103
- }
104
- }
105
- // Second retry loop: Handle stream consumption errors
106
- // This retries mid-stream errors (connection drops, timeouts)
107
- const retryingStream = new ReadableStream({
108
- async start(controller) {
109
- let consumptionAttempt = 0;
110
- let consumptionRetryTime = 0;
111
- let isFirstAttempt = true;
112
- while (true) {
113
- let reader = null;
114
- let error;
115
- try {
116
- // First attempt: reuse initial stream
117
- // Subsequent attempts: call doStream() fresh
118
- const streamResult = isFirstAttempt
119
- ? initialResult
120
- : await doStream();
121
- isFirstAttempt = false;
122
- reader = streamResult.stream.getReader();
123
- // Read and forward chunks
124
- while (true) {
125
- const { value: chunk, done } = await reader.read();
126
- if (done) {
127
- controller.close();
128
- return; // Success!
129
- }
130
- // Check for error chunks
131
- if (chunk.type === "error") {
132
- throw new LLMProviderError({
133
- provider,
134
- cause: chunk.error,
135
- });
136
- }
137
- // Normal chunk - forward it
138
- controller.enqueue(chunk);
139
- // Reset consumption attempt on successful chunk
140
- consumptionAttempt = 0;
141
- consumptionRetryTime = 0;
142
- }
143
- }
144
- catch (err) {
145
- // Release reader before retry
146
- if (reader) {
147
- try {
148
- reader.releaseLock();
149
- }
150
- catch {
151
- // Ignore errors during release
152
- }
153
- }
154
- error =
155
- err instanceof LLMProviderError
156
- ? err
157
- : new LLMProviderError({ provider, cause: err });
158
- }
159
- // Handle error - check if we should retry
160
- consumptionAttempt++;
161
- try {
162
- const delay = await handleRetryAttempt(error, consumptionAttempt, consumptionRetryTime, {
163
- ...retryConfig,
164
- errorContext: "Stream error",
165
- });
166
- consumptionRetryTime += delay;
167
- }
168
- catch (finalError) {
169
- // Exhausted or non-retryable - pass error through and close
170
- controller.enqueue({
171
- type: "error",
172
- error: finalError,
173
- });
174
- controller.close();
175
- return;
176
- }
177
- // Loop continues - will call doStream() again
178
- }
179
- },
180
- });
181
- // Return metadata from initial result with retrying stream
182
- return {
183
- ...initialResult,
184
- stream: retryingStream,
185
- };
186
- },
187
- };
188
- }
189
- /**
190
- * Checks if an error can be retried and returns appropriate error handling info.
191
- */
192
- function checkRetryability(error, attempt, maxRetries, maxRetriesDisplay, totalRetryTime, maxTotalRetryTimeMs, isRetryable, logger) {
193
- const withinMaxRetries = attempt <= maxRetries;
194
- const withinTimeLimit = !maxTotalRetryTimeMs || totalRetryTime < maxTotalRetryTimeMs;
195
- const canRetry = isRetryable(error) && withinMaxRetries && withinTimeLimit;
196
- if (!canRetry) {
197
- const reason = !isRetryable(error)
198
- ? `not retryable (type: ${error.type})`
199
- : !withinMaxRetries
200
- ? `after ${maxRetriesDisplay} retries`
201
- : `total retry time exceeded ${maxTotalRetryTimeMs}ms`;
202
- const message = `Stream error ${reason}`;
203
- error.message = message;
204
- logger.error(message, getErrorMeta(error.cause));
205
- return { canRetry: false, errorToThrow: error };
206
- }
207
- return { canRetry: true };
208
- }
209
- /**
210
- * Executes retry logic for a single attempt including error wrapping, backoff, logging, and callbacks.
211
- * Returns the delay in milliseconds if a retry should be attempted, or throws if no retry is possible.
212
- */
213
- async function handleRetryAttempt(err, attempt, totalRetryTime, config) {
214
- const error = err instanceof LLMProviderError
215
- ? err
216
- : new LLMProviderError({ provider: config.provider, cause: err });
217
- const retryCheck = checkRetryability(error, attempt, config.maxRetries, config.maxRetriesDisplay, totalRetryTime, config.maxTotalRetryTimeMs, config.isRetryable, config.logger);
218
- if (!retryCheck.canRetry) {
219
- throw retryCheck.errorToThrow;
220
- }
221
- // Check if abort signal was triggered
222
- if (config.abortSignal?.aborted) {
223
- const abortError = new LLMProviderError({
224
- message: "Request aborted",
225
- provider: config.provider,
226
- aborted: true,
227
- });
228
- config.logger.info("Request aborted, stopping retry attempts");
229
- throw abortError;
230
- }
231
- const delay = config.backoffStrategy.getNextDelay(attempt);
232
- config.logger.warn(`${config.errorContext} (type: ${error.type}). Attempt ${attempt}/${config.maxRetriesDisplay}. Retrying in ${delay}ms...`);
233
- if (config.onRetry) {
234
- await config.onRetry(error, attempt, delay, totalRetryTime);
235
- }
236
- await new Promise((resolve) => setTimeout(resolve, delay));
237
- return delay;
238
- }
239
- //# sourceMappingURL=retry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/middleware/retry.ts"],"names":[],"mappings":"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"}