@vybestack/llxprt-code-core 0.1.19-beta → 0.1.19-gamma

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 (475) hide show
  1. package/README.md +49 -2
  2. package/dist/index.d.ts +6 -0
  3. package/dist/index.js +5 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/auth/anthropic-device-flow.d.ts +53 -0
  6. package/dist/src/auth/anthropic-device-flow.js +208 -0
  7. package/dist/src/auth/anthropic-device-flow.js.map +1 -0
  8. package/dist/src/auth/precedence.d.ts +55 -0
  9. package/dist/src/auth/precedence.js +211 -0
  10. package/dist/src/auth/precedence.js.map +1 -0
  11. package/dist/src/auth/qwen-device-flow.d.ts +45 -0
  12. package/dist/src/auth/qwen-device-flow.js +179 -0
  13. package/dist/src/auth/qwen-device-flow.js.map +1 -0
  14. package/dist/src/auth/token-store.d.ts +66 -0
  15. package/dist/src/auth/token-store.js +151 -0
  16. package/dist/src/auth/token-store.js.map +1 -0
  17. package/dist/src/auth/types.d.ts +130 -0
  18. package/dist/src/auth/types.js +60 -0
  19. package/dist/src/auth/types.js.map +1 -0
  20. package/dist/src/config/config.d.ts +7 -1
  21. package/dist/src/config/config.js +42 -4
  22. package/dist/src/config/config.js.map +1 -1
  23. package/dist/src/config/endpoints.d.ts +60 -0
  24. package/dist/src/config/endpoints.js +126 -0
  25. package/dist/src/config/endpoints.js.map +1 -0
  26. package/dist/src/config/profileManager.d.ts +14 -4
  27. package/dist/src/config/profileManager.js +90 -11
  28. package/dist/src/config/profileManager.js.map +1 -1
  29. package/dist/src/core/client.js +9 -12
  30. package/dist/src/core/client.js.map +1 -1
  31. package/dist/src/core/contentGenerator.d.ts +4 -1
  32. package/dist/src/core/contentGenerator.js +3 -0
  33. package/dist/src/core/contentGenerator.js.map +1 -1
  34. package/dist/src/core/subagent.js +12 -10
  35. package/dist/src/core/subagent.js.map +1 -1
  36. package/dist/src/index.d.ts +9 -0
  37. package/dist/src/index.js +9 -0
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/providers/BaseProvider.d.ts +149 -0
  40. package/dist/src/providers/BaseProvider.js +315 -0
  41. package/dist/src/providers/BaseProvider.js.map +1 -0
  42. package/dist/src/providers/IProvider.d.ts +1 -0
  43. package/dist/src/providers/LoggingProviderWrapper.d.ts +1 -0
  44. package/dist/src/providers/LoggingProviderWrapper.js +3 -0
  45. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
  46. package/dist/src/providers/ProviderManager.d.ts +0 -1
  47. package/dist/src/providers/ProviderManager.js +23 -14
  48. package/dist/src/providers/ProviderManager.js.map +1 -1
  49. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +20 -6
  50. package/dist/src/providers/anthropic/AnthropicProvider.js +172 -26
  51. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  52. package/dist/src/providers/gemini/GeminiProvider.d.ts +16 -7
  53. package/dist/src/providers/gemini/GeminiProvider.js +163 -148
  54. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  55. package/dist/src/providers/openai/OpenAIProvider.d.ts +53 -6
  56. package/dist/src/providers/openai/OpenAIProvider.js +373 -40
  57. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  58. package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +1 -1
  59. package/dist/src/providers/openai/RESPONSES_API_MODELS.js +1 -0
  60. package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +1 -1
  61. package/dist/src/providers/openai/syntheticToolResponses.d.ts +52 -0
  62. package/dist/src/providers/openai/syntheticToolResponses.js +129 -0
  63. package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -0
  64. package/dist/src/settings/SettingsService.d.ts +32 -0
  65. package/dist/src/settings/SettingsService.js +204 -0
  66. package/dist/src/settings/SettingsService.js.map +1 -0
  67. package/dist/src/settings/settingsServiceInstance.d.ts +12 -0
  68. package/dist/src/settings/settingsServiceInstance.js +24 -0
  69. package/dist/src/settings/settingsServiceInstance.js.map +1 -0
  70. package/dist/src/settings/types.d.ts +141 -0
  71. package/dist/src/settings/types.js +5 -0
  72. package/dist/src/settings/types.js.map +1 -0
  73. package/package.json +4 -2
  74. package/dist/src/code_assist/converter.test.d.ts +0 -6
  75. package/dist/src/code_assist/converter.test.js +0 -279
  76. package/dist/src/code_assist/converter.test.js.map +0 -1
  77. package/dist/src/code_assist/oauth2.test.d.ts +0 -6
  78. package/dist/src/code_assist/oauth2.test.js +0 -370
  79. package/dist/src/code_assist/oauth2.test.js.map +0 -1
  80. package/dist/src/code_assist/server.test.d.ts +0 -6
  81. package/dist/src/code_assist/server.test.js +0 -134
  82. package/dist/src/code_assist/server.test.js.map +0 -1
  83. package/dist/src/code_assist/setup.test.d.ts +0 -6
  84. package/dist/src/code_assist/setup.test.js +0 -65
  85. package/dist/src/code_assist/setup.test.js.map +0 -1
  86. package/dist/src/config/config.alwaysAllow.test.d.ts +0 -6
  87. package/dist/src/config/config.alwaysAllow.test.js +0 -84
  88. package/dist/src/config/config.alwaysAllow.test.js.map +0 -1
  89. package/dist/src/config/config.ephemeral.test.d.ts +0 -6
  90. package/dist/src/config/config.ephemeral.test.js +0 -152
  91. package/dist/src/config/config.ephemeral.test.js.map +0 -1
  92. package/dist/src/config/config.test.d.ts +0 -6
  93. package/dist/src/config/config.test.js +0 -369
  94. package/dist/src/config/config.test.js.map +0 -1
  95. package/dist/src/config/flashFallback.test.d.ts +0 -6
  96. package/dist/src/config/flashFallback.test.js +0 -91
  97. package/dist/src/config/flashFallback.test.js.map +0 -1
  98. package/dist/src/core/client.test.d.ts +0 -6
  99. package/dist/src/core/client.test.js +0 -1322
  100. package/dist/src/core/client.test.js.map +0 -1
  101. package/dist/src/core/contentGenerator.test.d.ts +0 -6
  102. package/dist/src/core/contentGenerator.test.js +0 -103
  103. package/dist/src/core/contentGenerator.test.js.map +0 -1
  104. package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
  105. package/dist/src/core/coreToolScheduler.test.js +0 -637
  106. package/dist/src/core/coreToolScheduler.test.js.map +0 -1
  107. package/dist/src/core/geminiChat.test.d.ts +0 -6
  108. package/dist/src/core/geminiChat.test.js +0 -425
  109. package/dist/src/core/geminiChat.test.js.map +0 -1
  110. package/dist/src/core/googleGenAIWrapper.test.d.ts +0 -6
  111. package/dist/src/core/googleGenAIWrapper.test.js +0 -104
  112. package/dist/src/core/googleGenAIWrapper.test.js.map +0 -1
  113. package/dist/src/core/logger.test.d.ts +0 -6
  114. package/dist/src/core/logger.test.js +0 -467
  115. package/dist/src/core/logger.test.js.map +0 -1
  116. package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +0 -6
  117. package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -165
  118. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +0 -1
  119. package/dist/src/core/prompts-async.test.d.ts +0 -6
  120. package/dist/src/core/prompts-async.test.js +0 -115
  121. package/dist/src/core/prompts-async.test.js.map +0 -1
  122. package/dist/src/core/prompts.test.d.ts +0 -6
  123. package/dist/src/core/prompts.test.js +0 -68
  124. package/dist/src/core/prompts.test.js.map +0 -1
  125. package/dist/src/core/subagent.test.d.ts +0 -6
  126. package/dist/src/core/subagent.test.js +0 -519
  127. package/dist/src/core/subagent.test.js.map +0 -1
  128. package/dist/src/core/tokenLimits.test.d.ts +0 -6
  129. package/dist/src/core/tokenLimits.test.js +0 -66
  130. package/dist/src/core/tokenLimits.test.js.map +0 -1
  131. package/dist/src/core/turn.test.d.ts +0 -6
  132. package/dist/src/core/turn.test.js +0 -366
  133. package/dist/src/core/turn.test.js.map +0 -1
  134. package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +0 -6
  135. package/dist/src/hooks/tool-render-suppression-hook.test.js +0 -59
  136. package/dist/src/hooks/tool-render-suppression-hook.test.js.map +0 -1
  137. package/dist/src/ide/ide-installer.test.d.ts +0 -6
  138. package/dist/src/ide/ide-installer.test.js +0 -55
  139. package/dist/src/ide/ide-installer.test.js.map +0 -1
  140. package/dist/src/ide/ideContext.test.d.ts +0 -6
  141. package/dist/src/ide/ideContext.test.js +0 -265
  142. package/dist/src/ide/ideContext.test.js.map +0 -1
  143. package/dist/src/index.test.d.ts +0 -6
  144. package/dist/src/index.test.js +0 -12
  145. package/dist/src/index.test.js.map +0 -1
  146. package/dist/src/integration-tests/todo-system.test.d.ts +0 -6
  147. package/dist/src/integration-tests/todo-system.test.js +0 -46
  148. package/dist/src/integration-tests/todo-system.test.js.map +0 -1
  149. package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
  150. package/dist/src/mcp/google-auth-provider.test.js +0 -54
  151. package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
  152. package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
  153. package/dist/src/mcp/oauth-provider.test.js +0 -602
  154. package/dist/src/mcp/oauth-provider.test.js.map +0 -1
  155. package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
  156. package/dist/src/mcp/oauth-token-storage.test.js +0 -205
  157. package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
  158. package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
  159. package/dist/src/mcp/oauth-utils.test.js +0 -144
  160. package/dist/src/mcp/oauth-utils.test.js.map +0 -1
  161. package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +0 -1
  162. package/dist/src/parsers/TextToolCallParser.multibyte.test.js +0 -42
  163. package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +0 -1
  164. package/dist/src/parsers/TextToolCallParser.test.d.ts +0 -1
  165. package/dist/src/parsers/TextToolCallParser.test.js +0 -225
  166. package/dist/src/parsers/TextToolCallParser.test.js.map +0 -1
  167. package/dist/src/prompt-config/TemplateEngine.test.d.ts +0 -1
  168. package/dist/src/prompt-config/TemplateEngine.test.js +0 -494
  169. package/dist/src/prompt-config/TemplateEngine.test.js.map +0 -1
  170. package/dist/src/prompt-config/prompt-cache.test.d.ts +0 -6
  171. package/dist/src/prompt-config/prompt-cache.test.js +0 -437
  172. package/dist/src/prompt-config/prompt-cache.test.js.map +0 -1
  173. package/dist/src/prompt-config/prompt-installer.test.d.ts +0 -7
  174. package/dist/src/prompt-config/prompt-installer.test.js +0 -503
  175. package/dist/src/prompt-config/prompt-installer.test.js.map +0 -1
  176. package/dist/src/prompt-config/prompt-loader.test.d.ts +0 -5
  177. package/dist/src/prompt-config/prompt-loader.test.js +0 -413
  178. package/dist/src/prompt-config/prompt-loader.test.js.map +0 -1
  179. package/dist/src/prompt-config/prompt-resolver.test.d.ts +0 -1
  180. package/dist/src/prompt-config/prompt-resolver.test.js +0 -529
  181. package/dist/src/prompt-config/prompt-resolver.test.js.map +0 -1
  182. package/dist/src/prompt-config/prompt-service.test.d.ts +0 -1
  183. package/dist/src/prompt-config/prompt-service.test.js +0 -811
  184. package/dist/src/prompt-config/prompt-service.test.js.map +0 -1
  185. package/dist/src/providers/ProviderManager.gemini-switch.test.d.ts +0 -6
  186. package/dist/src/providers/ProviderManager.gemini-switch.test.js +0 -57
  187. package/dist/src/providers/ProviderManager.gemini-switch.test.js.map +0 -1
  188. package/dist/src/providers/ProviderManager.test.d.ts +0 -6
  189. package/dist/src/providers/ProviderManager.test.js +0 -284
  190. package/dist/src/providers/ProviderManager.test.js.map +0 -1
  191. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.d.ts +0 -6
  192. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +0 -273
  193. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +0 -1
  194. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +0 -1
  195. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +0 -48
  196. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +0 -1
  197. package/dist/src/providers/anthropic/AnthropicProvider.test.d.ts +0 -1
  198. package/dist/src/providers/anthropic/AnthropicProvider.test.js +0 -487
  199. package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +0 -1
  200. package/dist/src/providers/gemini/GeminiProvider.integration.test.d.ts +0 -6
  201. package/dist/src/providers/gemini/GeminiProvider.integration.test.js +0 -126
  202. package/dist/src/providers/gemini/GeminiProvider.integration.test.js.map +0 -1
  203. package/dist/src/providers/gemini/GeminiProvider.test.d.ts +0 -6
  204. package/dist/src/providers/gemini/GeminiProvider.test.js +0 -136
  205. package/dist/src/providers/gemini/GeminiProvider.test.js.map +0 -1
  206. package/dist/src/providers/integration/multi-provider.integration.test.d.ts +0 -6
  207. package/dist/src/providers/integration/multi-provider.integration.test.js +0 -292
  208. package/dist/src/providers/integration/multi-provider.integration.test.js.map +0 -1
  209. package/dist/src/providers/openai/ConversationCache.accumTokens.test.d.ts +0 -1
  210. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js +0 -97
  211. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js.map +0 -1
  212. package/dist/src/providers/openai/ConversationCache.test.d.ts +0 -1
  213. package/dist/src/providers/openai/ConversationCache.test.js +0 -113
  214. package/dist/src/providers/openai/ConversationCache.test.js.map +0 -1
  215. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.d.ts +0 -1
  216. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js +0 -189
  217. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js.map +0 -1
  218. package/dist/src/providers/openai/OpenAIProvider.integration.test.d.ts +0 -6
  219. package/dist/src/providers/openai/OpenAIProvider.integration.test.js +0 -125
  220. package/dist/src/providers/openai/OpenAIProvider.integration.test.js.map +0 -1
  221. package/dist/src/providers/openai/OpenAIProvider.responses.test.d.ts +0 -1
  222. package/dist/src/providers/openai/OpenAIProvider.responses.test.js +0 -350
  223. package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +0 -1
  224. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.d.ts +0 -1
  225. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js +0 -213
  226. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js.map +0 -1
  227. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.d.ts +0 -1
  228. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +0 -59
  229. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +0 -1
  230. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.d.ts +0 -6
  231. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +0 -105
  232. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +0 -1
  233. package/dist/src/providers/openai/OpenAIProvider.switch.test.d.ts +0 -1
  234. package/dist/src/providers/openai/OpenAIProvider.switch.test.js +0 -256
  235. package/dist/src/providers/openai/OpenAIProvider.switch.test.js.map +0 -1
  236. package/dist/src/providers/openai/OpenAIProvider.test.d.ts +0 -16
  237. package/dist/src/providers/openai/OpenAIProvider.test.js +0 -620
  238. package/dist/src/providers/openai/OpenAIProvider.test.js.map +0 -1
  239. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.d.ts +0 -1
  240. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js +0 -210
  241. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js.map +0 -1
  242. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.d.ts +0 -1
  243. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js +0 -65
  244. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js.map +0 -1
  245. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.d.ts +0 -1
  246. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js +0 -129
  247. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js.map +0 -1
  248. package/dist/src/providers/openai/buildResponsesRequest.test.d.ts +0 -1
  249. package/dist/src/providers/openai/buildResponsesRequest.test.js +0 -406
  250. package/dist/src/providers/openai/buildResponsesRequest.test.js.map +0 -1
  251. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.d.ts +0 -1
  252. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js +0 -50
  253. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js.map +0 -1
  254. package/dist/src/providers/openai/estimateRemoteTokens.test.d.ts +0 -1
  255. package/dist/src/providers/openai/estimateRemoteTokens.test.js +0 -125
  256. package/dist/src/providers/openai/estimateRemoteTokens.test.js.map +0 -1
  257. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.d.ts +0 -1
  258. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js +0 -192
  259. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js.map +0 -1
  260. package/dist/src/providers/openai/parseResponsesStream.test.d.ts +0 -1
  261. package/dist/src/providers/openai/parseResponsesStream.test.js +0 -151
  262. package/dist/src/providers/openai/parseResponsesStream.test.js.map +0 -1
  263. package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
  264. package/dist/src/services/fileDiscoveryService.test.js +0 -143
  265. package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
  266. package/dist/src/services/gitService.test.d.ts +0 -6
  267. package/dist/src/services/gitService.test.js +0 -209
  268. package/dist/src/services/gitService.test.js.map +0 -1
  269. package/dist/src/services/loopDetectionService.test.d.ts +0 -6
  270. package/dist/src/services/loopDetectionService.test.js +0 -484
  271. package/dist/src/services/loopDetectionService.test.js.map +0 -1
  272. package/dist/src/services/shellExecutionService.multibyte.test.d.ts +0 -6
  273. package/dist/src/services/shellExecutionService.multibyte.test.js +0 -72
  274. package/dist/src/services/shellExecutionService.multibyte.test.js.map +0 -1
  275. package/dist/src/services/shellExecutionService.test.d.ts +0 -6
  276. package/dist/src/services/shellExecutionService.test.js +0 -272
  277. package/dist/src/services/shellExecutionService.test.js.map +0 -1
  278. package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +0 -6
  279. package/dist/src/services/shellExecutionService.windows.multibyte.test.js +0 -98
  280. package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +0 -1
  281. package/dist/src/services/shellExecutionService.windows.test.d.ts +0 -6
  282. package/dist/src/services/shellExecutionService.windows.test.js +0 -79
  283. package/dist/src/services/shellExecutionService.windows.test.js.map +0 -1
  284. package/dist/src/services/tool-call-tracker-service.test.d.ts +0 -6
  285. package/dist/src/services/tool-call-tracker-service.test.js +0 -99
  286. package/dist/src/services/tool-call-tracker-service.test.js.map +0 -1
  287. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +0 -6
  288. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +0 -187
  289. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +0 -1
  290. package/dist/src/telemetry/loggers.test.d.ts +0 -6
  291. package/dist/src/telemetry/loggers.test.js +0 -573
  292. package/dist/src/telemetry/loggers.test.js.map +0 -1
  293. package/dist/src/telemetry/metrics.test.d.ts +0 -6
  294. package/dist/src/telemetry/metrics.test.js +0 -212
  295. package/dist/src/telemetry/metrics.test.js.map +0 -1
  296. package/dist/src/telemetry/telemetry.test.d.ts +0 -6
  297. package/dist/src/telemetry/telemetry.test.js +0 -54
  298. package/dist/src/telemetry/telemetry.test.js.map +0 -1
  299. package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
  300. package/dist/src/telemetry/uiTelemetry.test.js +0 -518
  301. package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
  302. package/dist/src/tools/ToolFormatter.test.d.ts +0 -16
  303. package/dist/src/tools/ToolFormatter.test.js +0 -349
  304. package/dist/src/tools/ToolFormatter.test.js.map +0 -1
  305. package/dist/src/tools/ToolFormatter.toResponsesTool.test.d.ts +0 -1
  306. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js +0 -241
  307. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js.map +0 -1
  308. package/dist/src/tools/diffOptions.test.d.ts +0 -6
  309. package/dist/src/tools/diffOptions.test.js +0 -119
  310. package/dist/src/tools/diffOptions.test.js.map +0 -1
  311. package/dist/src/tools/edit.test.d.ts +0 -6
  312. package/dist/src/tools/edit.test.js +0 -689
  313. package/dist/src/tools/edit.test.js.map +0 -1
  314. package/dist/src/tools/glob.test.d.ts +0 -6
  315. package/dist/src/tools/glob.test.js +0 -332
  316. package/dist/src/tools/glob.test.js.map +0 -1
  317. package/dist/src/tools/grep.test.d.ts +0 -6
  318. package/dist/src/tools/grep.test.js +0 -272
  319. package/dist/src/tools/grep.test.js.map +0 -1
  320. package/dist/src/tools/ls.test.d.ts +0 -6
  321. package/dist/src/tools/ls.test.js +0 -357
  322. package/dist/src/tools/ls.test.js.map +0 -1
  323. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  324. package/dist/src/tools/mcp-client.test.js +0 -617
  325. package/dist/src/tools/mcp-client.test.js.map +0 -1
  326. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  327. package/dist/src/tools/mcp-tool.test.js +0 -501
  328. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  329. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  330. package/dist/src/tools/memoryTool.test.js +0 -266
  331. package/dist/src/tools/memoryTool.test.js.map +0 -1
  332. package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
  333. package/dist/src/tools/modifiable-tool.test.js +0 -193
  334. package/dist/src/tools/modifiable-tool.test.js.map +0 -1
  335. package/dist/src/tools/read-file.test.d.ts +0 -6
  336. package/dist/src/tools/read-file.test.js +0 -319
  337. package/dist/src/tools/read-file.test.js.map +0 -1
  338. package/dist/src/tools/read-many-files.test.d.ts +0 -6
  339. package/dist/src/tools/read-many-files.test.js +0 -644
  340. package/dist/src/tools/read-many-files.test.js.map +0 -1
  341. package/dist/src/tools/shell.multibyte.test.d.ts +0 -6
  342. package/dist/src/tools/shell.multibyte.test.js +0 -75
  343. package/dist/src/tools/shell.multibyte.test.js.map +0 -1
  344. package/dist/src/tools/shell.test.d.ts +0 -6
  345. package/dist/src/tools/shell.test.js +0 -367
  346. package/dist/src/tools/shell.test.js.map +0 -1
  347. package/dist/src/tools/todo-pause.spec.d.ts +0 -6
  348. package/dist/src/tools/todo-pause.spec.js +0 -287
  349. package/dist/src/tools/todo-pause.spec.js.map +0 -1
  350. package/dist/src/tools/todo-read.test.d.ts +0 -6
  351. package/dist/src/tools/todo-read.test.js +0 -162
  352. package/dist/src/tools/todo-read.test.js.map +0 -1
  353. package/dist/src/tools/todo-schemas.test.d.ts +0 -6
  354. package/dist/src/tools/todo-schemas.test.js +0 -341
  355. package/dist/src/tools/todo-schemas.test.js.map +0 -1
  356. package/dist/src/tools/todo-store.test.d.ts +0 -6
  357. package/dist/src/tools/todo-store.test.js +0 -169
  358. package/dist/src/tools/todo-store.test.js.map +0 -1
  359. package/dist/src/tools/todo-write.test.d.ts +0 -6
  360. package/dist/src/tools/todo-write.test.js +0 -226
  361. package/dist/src/tools/todo-write.test.js.map +0 -1
  362. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  363. package/dist/src/tools/tool-registry.test.js +0 -468
  364. package/dist/src/tools/tool-registry.test.js.map +0 -1
  365. package/dist/src/tools/tools.test.d.ts +0 -6
  366. package/dist/src/tools/tools.test.js +0 -117
  367. package/dist/src/tools/tools.test.js.map +0 -1
  368. package/dist/src/tools/web-fetch.integration.test.d.ts +0 -6
  369. package/dist/src/tools/web-fetch.integration.test.js +0 -532
  370. package/dist/src/tools/web-fetch.integration.test.js.map +0 -1
  371. package/dist/src/tools/web-search.test.d.ts +0 -6
  372. package/dist/src/tools/web-search.test.js +0 -230
  373. package/dist/src/tools/web-search.test.js.map +0 -1
  374. package/dist/src/tools/write-file.test.d.ts +0 -6
  375. package/dist/src/tools/write-file.test.js +0 -465
  376. package/dist/src/tools/write-file.test.js.map +0 -1
  377. package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
  378. package/dist/src/utils/bfsFileSearch.test.js +0 -191
  379. package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
  380. package/dist/src/utils/editCorrector.test.d.ts +0 -6
  381. package/dist/src/utils/editCorrector.test.js +0 -564
  382. package/dist/src/utils/editCorrector.test.js.map +0 -1
  383. package/dist/src/utils/editor.test.d.ts +0 -6
  384. package/dist/src/utils/editor.test.js +0 -445
  385. package/dist/src/utils/editor.test.js.map +0 -1
  386. package/dist/src/utils/environmentContext.test.d.ts +0 -6
  387. package/dist/src/utils/environmentContext.test.js +0 -139
  388. package/dist/src/utils/environmentContext.test.js.map +0 -1
  389. package/dist/src/utils/errorReporting.test.d.ts +0 -6
  390. package/dist/src/utils/errorReporting.test.js +0 -130
  391. package/dist/src/utils/errorReporting.test.js.map +0 -1
  392. package/dist/src/utils/fileUtils.test.d.ts +0 -6
  393. package/dist/src/utils/fileUtils.test.js +0 -363
  394. package/dist/src/utils/fileUtils.test.js.map +0 -1
  395. package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
  396. package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
  397. package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
  398. package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
  399. package/dist/src/utils/filesearch/fileSearch.test.js +0 -654
  400. package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
  401. package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
  402. package/dist/src/utils/filesearch/ignore.test.js +0 -57
  403. package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
  404. package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
  405. package/dist/src/utils/filesearch/result-cache.test.js +0 -47
  406. package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
  407. package/dist/src/utils/flashFallback.integration.test.d.ts +0 -6
  408. package/dist/src/utils/flashFallback.integration.test.js +0 -120
  409. package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
  410. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
  411. package/dist/src/utils/generateContentResponseUtilities.test.js +0 -273
  412. package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
  413. package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
  414. package/dist/src/utils/getFolderStructure.test.js +0 -282
  415. package/dist/src/utils/getFolderStructure.test.js.map +0 -1
  416. package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
  417. package/dist/src/utils/gitIgnoreParser.test.js +0 -154
  418. package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
  419. package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
  420. package/dist/src/utils/memoryDiscovery.test.js +0 -181
  421. package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
  422. package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
  423. package/dist/src/utils/memoryImportProcessor.test.js +0 -715
  424. package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
  425. package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
  426. package/dist/src/utils/nextSpeakerChecker.test.js +0 -172
  427. package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
  428. package/dist/src/utils/partUtils.test.d.ts +0 -6
  429. package/dist/src/utils/partUtils.test.js +0 -130
  430. package/dist/src/utils/partUtils.test.js.map +0 -1
  431. package/dist/src/utils/paths.test.d.ts +0 -6
  432. package/dist/src/utils/paths.test.js +0 -153
  433. package/dist/src/utils/paths.test.js.map +0 -1
  434. package/dist/src/utils/retry.test.d.ts +0 -6
  435. package/dist/src/utils/retry.test.js +0 -322
  436. package/dist/src/utils/retry.test.js.map +0 -1
  437. package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
  438. package/dist/src/utils/safeJsonStringify.test.js +0 -61
  439. package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
  440. package/dist/src/utils/sanitization.test.d.ts +0 -6
  441. package/dist/src/utils/sanitization.test.js +0 -81
  442. package/dist/src/utils/sanitization.test.js.map +0 -1
  443. package/dist/src/utils/schemaValidator.test.d.ts +0 -6
  444. package/dist/src/utils/schemaValidator.test.js +0 -146
  445. package/dist/src/utils/schemaValidator.test.js.map +0 -1
  446. package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
  447. package/dist/src/utils/secure-browser-launcher.test.js +0 -149
  448. package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
  449. package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +0 -6
  450. package/dist/src/utils/shell-utils.shellReplacement.test.js +0 -149
  451. package/dist/src/utils/shell-utils.shellReplacement.test.js.map +0 -1
  452. package/dist/src/utils/shell-utils.test.d.ts +0 -6
  453. package/dist/src/utils/shell-utils.test.js +0 -200
  454. package/dist/src/utils/shell-utils.test.js.map +0 -1
  455. package/dist/src/utils/summarizer.test.d.ts +0 -6
  456. package/dist/src/utils/summarizer.test.js +0 -131
  457. package/dist/src/utils/summarizer.test.js.map +0 -1
  458. package/dist/src/utils/systemEncoding.test.d.ts +0 -6
  459. package/dist/src/utils/systemEncoding.test.js +0 -368
  460. package/dist/src/utils/systemEncoding.test.js.map +0 -1
  461. package/dist/src/utils/toolOutputLimiter.test.d.ts +0 -6
  462. package/dist/src/utils/toolOutputLimiter.test.js +0 -164
  463. package/dist/src/utils/toolOutputLimiter.test.js.map +0 -1
  464. package/dist/src/utils/unicodeUtils.test.d.ts +0 -6
  465. package/dist/src/utils/unicodeUtils.test.js +0 -120
  466. package/dist/src/utils/unicodeUtils.test.js.map +0 -1
  467. package/dist/src/utils/user_account.test.d.ts +0 -6
  468. package/dist/src/utils/user_account.test.js +0 -153
  469. package/dist/src/utils/user_account.test.js.map +0 -1
  470. package/dist/src/utils/user_id.test.d.ts +0 -6
  471. package/dist/src/utils/user_id.test.js +0 -21
  472. package/dist/src/utils/user_id.test.js.map +0 -1
  473. package/dist/src/utils/workspaceContext.test.d.ts +0 -6
  474. package/dist/src/utils/workspaceContext.test.js +0 -209
  475. package/dist/src/utils/workspaceContext.test.js.map +0 -1
@@ -1,532 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Vybestack LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, vi, beforeEach } from 'vitest';
7
- import { WebFetchTool } from './web-fetch.js';
8
- import * as fetchUtils from '../utils/fetch.js';
9
- describe('WebFetchTool Integration Tests', () => {
10
- let webFetchTool;
11
- let mockConfig;
12
- let mockAbortSignal;
13
- let mockProviderManager;
14
- let mockGeminiProvider;
15
- let mockOpenAIProvider;
16
- let mockAnthropicProvider;
17
- beforeEach(() => {
18
- vi.clearAllMocks();
19
- // Create mock providers
20
- mockGeminiProvider = {
21
- name: 'gemini',
22
- getModels: vi.fn().mockResolvedValue([]),
23
- generateChatCompletion: vi.fn(),
24
- getServerTools: vi.fn().mockReturnValue(['web_fetch', 'web_search']),
25
- invokeServerTool: vi.fn(),
26
- };
27
- mockOpenAIProvider = {
28
- name: 'openai',
29
- getModels: vi.fn().mockResolvedValue([]),
30
- generateChatCompletion: vi.fn(),
31
- getServerTools: vi.fn().mockReturnValue([]), // OpenAI doesn't have server tools
32
- invokeServerTool: vi.fn(),
33
- };
34
- mockAnthropicProvider = {
35
- name: 'anthropic',
36
- getModels: vi.fn().mockResolvedValue([]),
37
- generateChatCompletion: vi.fn(),
38
- getServerTools: vi.fn().mockReturnValue([]), // Anthropic doesn't have server tools
39
- invokeServerTool: vi.fn(),
40
- };
41
- // Create mock provider manager
42
- mockProviderManager = {
43
- registerProvider: vi.fn(),
44
- setActiveProvider: vi.fn(),
45
- clearActiveProvider: vi.fn(),
46
- hasActiveProvider: vi.fn().mockReturnValue(true),
47
- getActiveProvider: vi.fn().mockReturnValue(mockGeminiProvider),
48
- getActiveProviderName: vi.fn().mockReturnValue('gemini'),
49
- getAvailableModels: vi.fn().mockResolvedValue([]),
50
- listProviders: vi.fn().mockReturnValue(['gemini', 'openai', 'anthropic']),
51
- getServerToolsProvider: vi.fn().mockReturnValue(mockGeminiProvider),
52
- setServerToolsProvider: vi.fn(),
53
- };
54
- // Create mock config with provider manager
55
- mockConfig = {
56
- getContentGeneratorConfig: vi.fn().mockReturnValue({
57
- providerManager: mockProviderManager,
58
- }),
59
- getApprovalMode: vi.fn().mockReturnValue('auto_edit'),
60
- setApprovalMode: vi.fn(),
61
- getProxy: vi.fn().mockReturnValue(null),
62
- };
63
- webFetchTool = new WebFetchTool(mockConfig);
64
- mockAbortSignal = new AbortController().signal;
65
- });
66
- describe('Web-fetch with Gemini as active provider', () => {
67
- it('should successfully fetch content when Gemini is active', async () => {
68
- // Mock successful web fetch response
69
- const mockResponse = {
70
- candidates: [
71
- {
72
- content: {
73
- parts: [{ text: 'This is the fetched content from example.com' }],
74
- role: 'model',
75
- },
76
- urlContextMetadata: {
77
- urlMetadata: [
78
- {
79
- retrievedUrl: 'https://example.com',
80
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
81
- },
82
- ],
83
- },
84
- groundingMetadata: {
85
- groundingChunks: [
86
- {
87
- web: {
88
- title: 'Example Page',
89
- uri: 'https://example.com',
90
- },
91
- },
92
- ],
93
- },
94
- },
95
- ],
96
- };
97
- mockGeminiProvider.invokeServerTool.mockResolvedValue(mockResponse);
98
- const result = await webFetchTool.execute({ prompt: 'Summarize the content from https://example.com' }, mockAbortSignal);
99
- expect(mockGeminiProvider.invokeServerTool).toHaveBeenCalledWith('web_fetch', { prompt: 'Summarize the content from https://example.com' }, { signal: mockAbortSignal });
100
- expect(result.llmContent).toContain('This is the fetched content from example.com');
101
- expect(result.llmContent).toContain('Sources:');
102
- expect(result.llmContent).toContain('[1] Example Page (https://example.com)');
103
- expect(result.returnDisplay).toBe('Content processed from prompt.');
104
- });
105
- it('should handle multiple URLs in prompt', async () => {
106
- const mockResponse = {
107
- candidates: [
108
- {
109
- content: {
110
- parts: [{ text: 'Summary of both pages' }],
111
- role: 'model',
112
- },
113
- urlContextMetadata: {
114
- urlMetadata: [
115
- {
116
- retrievedUrl: 'https://example1.com',
117
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
118
- },
119
- {
120
- retrievedUrl: 'https://example2.com',
121
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
122
- },
123
- ],
124
- },
125
- },
126
- ],
127
- };
128
- mockGeminiProvider.invokeServerTool.mockResolvedValue(mockResponse);
129
- const result = await webFetchTool.execute({ prompt: 'Compare https://example1.com and https://example2.com' }, mockAbortSignal);
130
- expect(result.llmContent).toContain('Summary of both pages');
131
- expect(result.returnDisplay).toBe('Content processed from prompt.');
132
- });
133
- });
134
- describe('Web-fetch with OpenAI as active provider', () => {
135
- beforeEach(() => {
136
- // Set OpenAI as active provider, but Gemini remains server tools provider
137
- mockProviderManager.getActiveProvider.mockReturnValue(mockOpenAIProvider);
138
- mockProviderManager.getActiveProviderName.mockReturnValue('openai');
139
- // Server tools provider should still be Gemini
140
- mockProviderManager.getServerToolsProvider.mockReturnValue(mockGeminiProvider);
141
- });
142
- it('should use Gemini for web-fetch even when OpenAI is active', async () => {
143
- const mockResponse = {
144
- candidates: [
145
- {
146
- content: {
147
- parts: [{ text: 'Content fetched via Gemini' }],
148
- role: 'model',
149
- },
150
- urlContextMetadata: {
151
- urlMetadata: [
152
- {
153
- retrievedUrl: 'https://example.com',
154
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
155
- },
156
- ],
157
- },
158
- },
159
- ],
160
- };
161
- mockGeminiProvider.invokeServerTool.mockResolvedValue(mockResponse);
162
- const result = await webFetchTool.execute({ prompt: 'Get content from https://example.com' }, mockAbortSignal);
163
- // Should call Gemini's invokeServerTool, not OpenAI's
164
- expect(mockGeminiProvider.invokeServerTool).toHaveBeenCalled();
165
- expect(mockOpenAIProvider.invokeServerTool).not.toHaveBeenCalled();
166
- expect(result.llmContent).toContain('Content fetched via Gemini');
167
- expect(result.returnDisplay).toBe('Content processed from prompt.');
168
- });
169
- });
170
- describe('Web-fetch with Anthropic as active provider', () => {
171
- beforeEach(() => {
172
- // Set Anthropic as active provider, but Gemini remains server tools provider
173
- mockProviderManager.getActiveProvider.mockReturnValue(mockAnthropicProvider);
174
- mockProviderManager.getActiveProviderName.mockReturnValue('anthropic');
175
- // Server tools provider should still be Gemini
176
- mockProviderManager.getServerToolsProvider.mockReturnValue(mockGeminiProvider);
177
- });
178
- it('should use Gemini for web-fetch even when Anthropic is active', async () => {
179
- const mockResponse = {
180
- candidates: [
181
- {
182
- content: {
183
- parts: [{ text: 'Anthropic user but Gemini fetched this' }],
184
- role: 'model',
185
- },
186
- urlContextMetadata: {
187
- urlMetadata: [
188
- {
189
- retrievedUrl: 'https://example.com',
190
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
191
- },
192
- ],
193
- },
194
- },
195
- ],
196
- };
197
- mockGeminiProvider.invokeServerTool.mockResolvedValue(mockResponse);
198
- const result = await webFetchTool.execute({ prompt: 'Analyze https://example.com' }, mockAbortSignal);
199
- // Should call Gemini's invokeServerTool, not Anthropic's
200
- expect(mockGeminiProvider.invokeServerTool).toHaveBeenCalled();
201
- expect(mockAnthropicProvider.invokeServerTool).not.toHaveBeenCalled();
202
- expect(result.llmContent).toContain('Anthropic user but Gemini fetched this');
203
- expect(result.returnDisplay).toBe('Content processed from prompt.');
204
- });
205
- });
206
- describe('Missing Gemini authentication error handling', () => {
207
- it('should return error when no provider manager is available', async () => {
208
- // Mock config to return no provider manager
209
- mockConfig.getContentGeneratorConfig.mockReturnValue({
210
- providerManager: null,
211
- });
212
- const result = await webFetchTool.execute({ prompt: 'Fetch https://example.com' }, mockAbortSignal);
213
- expect(result.llmContent).toContain('Web fetch requires a provider. Please use --provider gemini with authentication.');
214
- expect(result.returnDisplay).toBe('Web fetch requires a provider.');
215
- });
216
- it('should return error when no server tools provider is configured', async () => {
217
- // Mock provider manager to return null for server tools provider
218
- mockProviderManager.getServerToolsProvider.mockReturnValue(null);
219
- const result = await webFetchTool.execute({ prompt: 'Fetch https://example.com' }, mockAbortSignal);
220
- expect(result.llmContent).toContain('Web fetch requires Gemini provider to be configured. Please ensure Gemini is available with authentication.');
221
- expect(result.returnDisplay).toBe('Web fetch requires Gemini provider.');
222
- });
223
- it('should return error when server tools provider does not support web_fetch', async () => {
224
- // Mock Gemini provider to not support web_fetch
225
- mockGeminiProvider.getServerTools.mockReturnValue(['web_search']); // Only web_search, no web_fetch
226
- const result = await webFetchTool.execute({ prompt: 'Fetch https://example.com' }, mockAbortSignal);
227
- expect(result.llmContent).toContain('Web fetch is not available. The server tools provider does not support web fetch.');
228
- expect(result.returnDisplay).toBe('Web fetch not available.');
229
- });
230
- });
231
- describe('Fallback to direct fetch for private IPs', () => {
232
- it('should fallback to direct fetch for localhost URLs', async () => {
233
- // Mock isPrivateIp to return true for localhost
234
- vi.spyOn(fetchUtils, 'isPrivateIp').mockReturnValue(true);
235
- // Mock fetchWithTimeout
236
- vi.spyOn(fetchUtils, 'fetchWithTimeout').mockResolvedValue({
237
- ok: true,
238
- status: 200,
239
- statusText: 'OK',
240
- text: vi
241
- .fn()
242
- .mockResolvedValue('<html><body>Local content</body></html>'),
243
- });
244
- const result = await webFetchTool.execute({ prompt: 'Get content from http://localhost:3000' }, mockAbortSignal);
245
- // Should not call Gemini's invokeServerTool
246
- expect(mockGeminiProvider.invokeServerTool).not.toHaveBeenCalled();
247
- // Should contain error message about fallback
248
- expect(result.llmContent).toContain('Private/local URLs cannot be processed with AI');
249
- expect(result.llmContent).toContain('Content from http://localhost:3000');
250
- expect(result.llmContent).toContain('Local content');
251
- });
252
- it('should fallback to direct fetch for private IP ranges', async () => {
253
- // Mock isPrivateIp to return true for private IPs
254
- vi.spyOn(fetchUtils, 'isPrivateIp').mockReturnValue(true);
255
- // Mock fetchWithTimeout
256
- vi.spyOn(fetchUtils, 'fetchWithTimeout').mockResolvedValue({
257
- ok: true,
258
- status: 200,
259
- statusText: 'OK',
260
- text: vi
261
- .fn()
262
- .mockResolvedValue('<html><body>Private network content</body></html>'),
263
- });
264
- const result = await webFetchTool.execute({ prompt: 'Get content from http://192.168.1.100:8080' }, mockAbortSignal);
265
- // Should not call Gemini's invokeServerTool
266
- expect(mockGeminiProvider.invokeServerTool).not.toHaveBeenCalled();
267
- // Should contain error message about fallback
268
- expect(result.llmContent).toContain('Private/local URLs cannot be processed with AI');
269
- expect(result.llmContent).toContain('Content from http://192.168.1.100:8080');
270
- expect(result.llmContent).toContain('Private network content');
271
- });
272
- it('should handle fallback fetch errors gracefully', async () => {
273
- // Mock isPrivateIp to return true
274
- vi.spyOn(fetchUtils, 'isPrivateIp').mockReturnValue(true);
275
- // Mock fetchWithTimeout to fail
276
- vi.spyOn(fetchUtils, 'fetchWithTimeout').mockRejectedValue(new Error('Network error'));
277
- const result = await webFetchTool.execute({ prompt: 'Get content from http://localhost:3000' }, mockAbortSignal);
278
- expect(result.llmContent).toContain('Error: Error during fallback fetch for http://localhost:3000: Network error');
279
- expect(result.returnDisplay).toContain('Error: Error during fallback fetch');
280
- });
281
- });
282
- describe('Error handling', () => {
283
- it('should handle server tool invocation errors', async () => {
284
- mockGeminiProvider.invokeServerTool.mockRejectedValue(new Error('API key not configured'));
285
- // Mock isPrivateIp to return false so it doesn't fallback
286
- vi.spyOn(fetchUtils, 'isPrivateIp').mockReturnValue(false);
287
- const result = await webFetchTool.execute({ prompt: 'Fetch https://example.com' }, mockAbortSignal);
288
- expect(result.llmContent).toContain('Error processing web content');
289
- expect(result.llmContent).toContain('API key not configured');
290
- });
291
- it('should handle URL retrieval failures', async () => {
292
- const mockResponse = {
293
- candidates: [
294
- {
295
- content: {
296
- parts: [{ text: '' }],
297
- role: 'model',
298
- },
299
- urlContextMetadata: {
300
- urlMetadata: [
301
- {
302
- retrievedUrl: 'https://example.com',
303
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_FAILED',
304
- },
305
- ],
306
- },
307
- },
308
- ],
309
- };
310
- mockGeminiProvider.invokeServerTool.mockResolvedValue(mockResponse);
311
- // Mock isPrivateIp to return false (not private, so should use server tool)
312
- vi.spyOn(fetchUtils, 'isPrivateIp').mockReturnValue(false);
313
- // Mock fetchWithTimeout for fallback
314
- vi.spyOn(fetchUtils, 'fetchWithTimeout').mockResolvedValue({
315
- ok: false,
316
- status: 404,
317
- statusText: 'Not Found',
318
- text: vi.fn().mockResolvedValue(''),
319
- });
320
- const result = await webFetchTool.execute({ prompt: 'Fetch https://example.com' }, mockAbortSignal);
321
- // Should return no content found
322
- expect(result.llmContent).toContain('No content found');
323
- });
324
- });
325
- describe('Validation', () => {
326
- it('should reject empty prompt', async () => {
327
- const result = await webFetchTool.execute({ prompt: '' }, mockAbortSignal);
328
- expect(result.llmContent).toContain('Error: Invalid parameters');
329
- expect(result.llmContent).toContain('cannot be empty');
330
- });
331
- it('should reject prompt without URLs', async () => {
332
- const result = await webFetchTool.execute({ prompt: 'Just some text without any URLs' }, mockAbortSignal);
333
- expect(result.llmContent).toContain('Error: Invalid parameters');
334
- expect(result.llmContent).toContain('must contain at least one valid URL');
335
- });
336
- it('should accept prompt with multiple URLs', async () => {
337
- const mockResponse = {
338
- candidates: [
339
- {
340
- content: {
341
- parts: [{ text: 'Processed multiple URLs' }],
342
- role: 'model',
343
- },
344
- urlContextMetadata: {
345
- urlMetadata: [
346
- {
347
- retrievedUrl: 'https://example1.com',
348
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
349
- },
350
- {
351
- retrievedUrl: 'https://example2.com',
352
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
353
- },
354
- ],
355
- },
356
- },
357
- ],
358
- };
359
- mockGeminiProvider.invokeServerTool.mockResolvedValue(mockResponse);
360
- const result = await webFetchTool.execute({ prompt: 'Compare https://example1.com and https://example2.com' }, mockAbortSignal);
361
- expect(result.llmContent).toContain('Processed multiple URLs');
362
- expect(result.returnDisplay).toBe('Content processed from prompt.');
363
- });
364
- });
365
- describe('GitHub URL handling', () => {
366
- it('should convert GitHub blob URLs to raw URLs', async () => {
367
- const mockResponse = {
368
- candidates: [
369
- {
370
- content: {
371
- parts: [{ text: 'GitHub file content' }],
372
- role: 'model',
373
- },
374
- urlContextMetadata: {
375
- urlMetadata: [
376
- {
377
- retrievedUrl: 'https://raw.githubusercontent.com/user/repo/main/file.js',
378
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
379
- },
380
- ],
381
- },
382
- },
383
- ],
384
- };
385
- mockGeminiProvider.invokeServerTool.mockResolvedValue(mockResponse);
386
- const result = await webFetchTool.execute({
387
- prompt: 'Get content from https://github.com/user/repo/blob/main/file.js',
388
- }, mockAbortSignal);
389
- // The tool should still pass the original prompt to the server
390
- expect(mockGeminiProvider.invokeServerTool).toHaveBeenCalledWith('web_fetch', {
391
- prompt: 'Get content from https://github.com/user/repo/blob/main/file.js',
392
- }, { signal: mockAbortSignal });
393
- expect(result.llmContent).toContain('GitHub file content');
394
- });
395
- });
396
- describe('Grounding metadata and citations', () => {
397
- it('should insert citation markers when grounding supports are provided', async () => {
398
- const mockResponse = {
399
- candidates: [
400
- {
401
- content: {
402
- parts: [{ text: 'This is cited content from the webpage.' }],
403
- role: 'model',
404
- },
405
- groundingMetadata: {
406
- groundingChunks: [
407
- {
408
- web: {
409
- title: 'Source Page',
410
- uri: 'https://example.com/source',
411
- },
412
- },
413
- ],
414
- groundingSupports: [
415
- {
416
- segment: {
417
- startIndex: 0,
418
- endIndex: 12,
419
- },
420
- groundingChunkIndices: [0],
421
- },
422
- ],
423
- },
424
- urlContextMetadata: {
425
- urlMetadata: [
426
- {
427
- retrievedUrl: 'https://example.com/source',
428
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
429
- },
430
- ],
431
- },
432
- },
433
- ],
434
- };
435
- mockGeminiProvider.invokeServerTool.mockResolvedValue(mockResponse);
436
- const result = await webFetchTool.execute({ prompt: 'Extract info from https://example.com/source' }, mockAbortSignal);
437
- // Should have citation marker inserted after 'cite' (at index 12)
438
- expect(result.llmContent).toContain('This is cite[1]d content');
439
- expect(result.llmContent).toContain('from the webpage.');
440
- expect(result.llmContent).toContain('Sources:');
441
- expect(result.llmContent).toContain('[1] Source Page (https://example.com/source)');
442
- });
443
- it('should handle response with null parts gracefully', async () => {
444
- const mockResponse = {
445
- candidates: [
446
- {
447
- content: {
448
- parts: [
449
- null,
450
- { text: 'Valid content' },
451
- undefined,
452
- { text: ' continues' },
453
- ],
454
- role: 'model',
455
- },
456
- urlContextMetadata: {
457
- urlMetadata: [
458
- {
459
- retrievedUrl: 'https://example.com',
460
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
461
- },
462
- ],
463
- },
464
- },
465
- ],
466
- };
467
- mockGeminiProvider.invokeServerTool.mockResolvedValue(mockResponse);
468
- const result = await webFetchTool.execute({ prompt: 'Fetch https://example.com' }, mockAbortSignal);
469
- // getResponseText throws on null parts, so we get an error
470
- expect(result.llmContent).toContain('Error processing web content');
471
- expect(result.llmContent).toContain('Cannot read properties of null');
472
- });
473
- });
474
- describe('Multiple providers edge cases', () => {
475
- it('should handle when provider manager has no server tools provider but active provider exists', async () => {
476
- // Set active provider to OpenAI, but no server tools provider
477
- mockProviderManager.getActiveProvider.mockReturnValue(mockOpenAIProvider);
478
- mockProviderManager.getServerToolsProvider.mockReturnValue(null);
479
- const result = await webFetchTool.execute({ prompt: 'Fetch https://example.com' }, mockAbortSignal);
480
- expect(result.llmContent).toContain('Web fetch requires Gemini provider to be configured');
481
- expect(result.returnDisplay).toBe('Web fetch requires Gemini provider.');
482
- });
483
- it('should work correctly when switching between providers', async () => {
484
- // First request with Gemini active
485
- const geminiResponse = {
486
- candidates: [
487
- {
488
- content: {
489
- parts: [{ text: 'Gemini fetched content' }],
490
- role: 'model',
491
- },
492
- urlContextMetadata: {
493
- urlMetadata: [
494
- {
495
- retrievedUrl: 'https://example.com',
496
- urlRetrievalStatus: 'URL_RETRIEVAL_STATUS_SUCCESS',
497
- },
498
- ],
499
- },
500
- },
501
- ],
502
- };
503
- mockGeminiProvider.invokeServerTool.mockResolvedValue(geminiResponse);
504
- let result = await webFetchTool.execute({ prompt: 'Fetch https://example.com' }, mockAbortSignal);
505
- expect(result.llmContent).toContain('Gemini fetched content');
506
- // Switch to OpenAI as active provider
507
- mockProviderManager.getActiveProvider.mockReturnValue(mockOpenAIProvider);
508
- mockProviderManager.getActiveProviderName.mockReturnValue('openai');
509
- // Second request should still use Gemini for server tools
510
- result = await webFetchTool.execute({ prompt: 'Fetch https://example.com again' }, mockAbortSignal);
511
- // Should still call Gemini's invokeServerTool
512
- expect(mockGeminiProvider.invokeServerTool).toHaveBeenCalledTimes(2);
513
- expect(mockOpenAIProvider.invokeServerTool).not.toHaveBeenCalled();
514
- });
515
- });
516
- describe('Tool description and getDescription', () => {
517
- it('should truncate long prompts in description', () => {
518
- const longPrompt = 'Fetch and analyze ' +
519
- 'https://example.com/very/long/url/path '.repeat(10);
520
- const description = webFetchTool.getDescription({ prompt: longPrompt });
521
- expect(description).toContain('Processing URLs and instructions from prompt:');
522
- expect(description).toContain('...');
523
- expect(description.length).toBeLessThan(150);
524
- });
525
- it('should show full prompt for short prompts', () => {
526
- const shortPrompt = 'Fetch https://example.com';
527
- const description = webFetchTool.getDescription({ prompt: shortPrompt });
528
- expect(description).toBe(`Processing URLs and instructions from prompt: "${shortPrompt}"`);
529
- });
530
- });
531
- });
532
- //# sourceMappingURL=web-fetch.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-fetch.integration.test.js","sourceRoot":"","sources":["../../../src/tools/web-fetch.integration.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAEhD,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAI,YAA0B,CAAC;IAC/B,IAAI,UAAkB,CAAC;IACvB,IAAI,eAA4B,CAAC;IACjC,IAAI,mBAAqC,CAAC;IAC1C,IAAI,kBAA6B,CAAC;IAClC,IAAI,kBAA6B,CAAC;IAClC,IAAI,qBAAgC,CAAC;IAErC,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,wBAAwB;QACxB,kBAAkB,GAAG;YACnB,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxC,sBAAsB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC/B,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACpE,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;SACF,CAAC;QAE1B,kBAAkB,GAAG;YACnB,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxC,sBAAsB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC/B,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,mCAAmC;YAChF,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;SACF,CAAC;QAE1B,qBAAqB,GAAG;YACtB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxC,sBAAsB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC/B,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,sCAAsC;YACnF,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;SACF,CAAC;QAE1B,+BAA+B;QAC/B,mBAAmB,GAAG;YACpB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC1B,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC5B,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;YAChD,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;YAC9D,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;YACxD,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACjD,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YACzE,sBAAsB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;YACnE,sBAAsB,EAAE,EAAE,CAAC,EAAE,EAAE;SACD,CAAC;QAEjC,2CAA2C;QAC3C,UAAU,GAAG;YACX,yBAAyB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;gBACjD,eAAe,EAAE,mBAAmB;aACX,CAAC;YAC5B,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC;YACrD,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;YACxB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;SACnB,CAAC;QAEvB,YAAY,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;QAC5C,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,qCAAqC;YACrC,MAAM,YAAY,GAAG;gBACnB,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAC;4BACjE,IAAI,EAAE,OAAO;yBACd;wBACD,kBAAkB,EAAE;4BAClB,WAAW,EAAE;gCACX;oCACE,YAAY,EAAE,qBAAqB;oCACnC,kBAAkB,EAAE,8BAA8B;iCACnD;6BACF;yBACF;wBACD,iBAAiB,EAAE;4BACjB,eAAe,EAAE;gCACf;oCACE,GAAG,EAAE;wCACH,KAAK,EAAE,cAAc;wCACrB,GAAG,EAAE,qBAAqB;qCAC3B;iCACF;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAGA,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,gDAAgD,EAAE,EAC5D,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAC9D,WAAW,EACX,EAAE,MAAM,EAAE,gDAAgD,EAAE,EAC5D,EAAE,MAAM,EAAE,eAAe,EAAE,CAC5B,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,8CAA8C,CAC/C,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,wCAAwC,CACzC,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,YAAY,GAAG;gBACnB,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;4BAC1C,IAAI,EAAE,OAAO;yBACd;wBACD,kBAAkB,EAAE;4BAClB,WAAW,EAAE;gCACX;oCACE,YAAY,EAAE,sBAAsB;oCACpC,kBAAkB,EAAE,8BAA8B;iCACnD;gCACD;oCACE,YAAY,EAAE,sBAAsB;oCACpC,kBAAkB,EAAE,8BAA8B;iCACnD;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAGA,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,uDAAuD,EAAE,EACnE,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,UAAU,CAAC,GAAG,EAAE;YACd,0EAA0E;YAExE,mBAAmB,CAAC,iBACrB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAEpC,mBAAmB,CAAC,qBACrB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC5B,+CAA+C;YAE7C,mBAAmB,CAAC,sBACrB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,YAAY,GAAG;gBACnB,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;4BAC/C,IAAI,EAAE,OAAO;yBACd;wBACD,kBAAkB,EAAE;4BAClB,WAAW,EAAE;gCACX;oCACE,YAAY,EAAE,qBAAqB;oCACnC,kBAAkB,EAAE,8BAA8B;iCACnD;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAGA,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,sCAAsC,EAAE,EAClD,eAAe,CAChB,CAAC;YAEF,sDAAsD;YACtD,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC/D,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAEnE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;QAC3D,UAAU,CAAC,GAAG,EAAE;YACd,6EAA6E;YAE3E,mBAAmB,CAAC,iBACrB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;YAEvC,mBAAmB,CAAC,qBACrB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAC/B,+CAA+C;YAE7C,mBAAmB,CAAC,sBACrB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,YAAY,GAAG;gBACnB,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC;4BAC3D,IAAI,EAAE,OAAO;yBACd;wBACD,kBAAkB,EAAE;4BAClB,WAAW,EAAE;gCACX;oCACE,YAAY,EAAE,qBAAqB;oCACnC,kBAAkB,EAAE,8BAA8B;iCACnD;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAGA,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,6BAA6B,EAAE,EACzC,eAAe,CAChB,CAAC;YAEF,yDAAyD;YACzD,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC/D,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAEtE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,wCAAwC,CACzC,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;QAC5D,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,4CAA4C;YAE1C,UAAU,CAAC,yBACZ,CAAC,eAAe,CAAC;gBAChB,eAAe,EAAE,IAAI;aACe,CAAC,CAAC;YAExC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,2BAA2B,EAAE,EACvC,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,kFAAkF,CACnF,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,iEAAiE;YAE/D,mBAAmB,CAAC,sBACrB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,2BAA2B,EAAE,EACvC,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,6GAA6G,CAC9G,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,gDAAgD;YAE9C,kBAAkB,CAAC,cACpB,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,gCAAgC;YAEnE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,2BAA2B,EAAE,EACvC,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,mFAAmF,CACpF,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,gDAAgD;YAChD,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1D,wBAAwB;YACxB,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,iBAAiB,CAAC;gBACzD,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,EAAE;qBACL,EAAE,EAAE;qBACJ,iBAAiB,CAAC,yCAAyC,CAAC;aACzC,CAAC,CAAC;YAE1B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,wCAAwC,EAAE,EACpD,eAAe,CAChB,CAAC;YAEF,4CAA4C;YAC5C,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAEnE,8CAA8C;YAC9C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,gDAAgD,CACjD,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;YAC1E,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,kDAAkD;YAClD,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1D,wBAAwB;YACxB,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,iBAAiB,CAAC;gBACzD,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,EAAE;qBACL,EAAE,EAAE;qBACJ,iBAAiB,CAChB,mDAAmD,CACpD;aACmB,CAAC,CAAC;YAE1B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,4CAA4C,EAAE,EACxD,eAAe,CAChB,CAAC;YAEF,4CAA4C;YAC5C,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAEnE,8CAA8C;YAC9C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,gDAAgD,CACjD,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,wCAAwC,CACzC,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,kCAAkC;YAClC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1D,gCAAgC;YAChC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,iBAAiB,CACxD,IAAI,KAAK,CAAC,eAAe,CAAC,CAC3B,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,wCAAwC,EAAE,EACpD,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,6EAA6E,CAC9E,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CACpC,oCAAoC,CACrC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAEzD,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACzD,0DAA0D;YAC1D,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAE3D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,2BAA2B,EAAE,EACvC,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,YAAY,GAAG;gBACnB,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;4BACrB,IAAI,EAAE,OAAO;yBACd;wBACD,kBAAkB,EAAE;4BAClB,WAAW,EAAE;gCACX;oCACE,YAAY,EAAE,qBAAqB;oCACnC,kBAAkB,EAAE,6BAA6B;iCAClD;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAGA,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAElC,4EAA4E;YAC5E,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC3D,qCAAqC;YACrC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,iBAAiB,CAAC;gBACzD,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,WAAW;gBACvB,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;aACb,CAAC,CAAC;YAE1B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,2BAA2B,EAAE,EACvC,eAAe,CAChB,CAAC;YAEF,iCAAiC;YACjC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,EAAE,EAAE,EACd,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,iCAAiC,EAAE,EAC7C,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,qCAAqC,CACtC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,YAAY,GAAG;gBACnB,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;4BAC5C,IAAI,EAAE,OAAO;yBACd;wBACD,kBAAkB,EAAE;4BAClB,WAAW,EAAE;gCACX;oCACE,YAAY,EAAE,sBAAsB;oCACpC,kBAAkB,EAAE,8BAA8B;iCACnD;gCACD;oCACE,YAAY,EAAE,sBAAsB;oCACpC,kBAAkB,EAAE,8BAA8B;iCACnD;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAGA,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,uDAAuD,EAAE,EACnE,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,YAAY,GAAG;gBACnB,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;4BACxC,IAAI,EAAE,OAAO;yBACd;wBACD,kBAAkB,EAAE;4BAClB,WAAW,EAAE;gCACX;oCACE,YAAY,EACV,0DAA0D;oCAC5D,kBAAkB,EAAE,8BAA8B;iCACnD;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAGA,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC;gBACE,MAAM,EACJ,iEAAiE;aACpE,EACD,eAAe,CAChB,CAAC;YAEF,+DAA+D;YAC/D,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAC9D,WAAW,EACX;gBACE,MAAM,EACJ,iEAAiE;aACpE,EACD,EAAE,MAAM,EAAE,eAAe,EAAE,CAC5B,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAChD,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,YAAY,GAAG;gBACnB,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC;4BAC5D,IAAI,EAAE,OAAO;yBACd;wBACD,iBAAiB,EAAE;4BACjB,eAAe,EAAE;gCACf;oCACE,GAAG,EAAE;wCACH,KAAK,EAAE,aAAa;wCACpB,GAAG,EAAE,4BAA4B;qCAClC;iCACF;6BACF;4BACD,iBAAiB,EAAE;gCACjB;oCACE,OAAO,EAAE;wCACP,UAAU,EAAE,CAAC;wCACb,QAAQ,EAAE,EAAE;qCACb;oCACD,qBAAqB,EAAE,CAAC,CAAC,CAAC;iCAC3B;6BACF;yBACF;wBACD,kBAAkB,EAAE;4BAClB,WAAW,EAAE;gCACX;oCACE,YAAY,EAAE,4BAA4B;oCAC1C,kBAAkB,EAAE,8BAA8B;iCACnD;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAGA,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,8CAA8C,EAAE,EAC1D,eAAe,CAChB,CAAC;YAEF,kEAAkE;YAClE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,8CAA8C,CAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,YAAY,GAAG;gBACnB,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE;4BACP,KAAK,EAAE;gCACL,IAAI;gCACJ,EAAE,IAAI,EAAE,eAAe,EAAE;gCACzB,SAAS;gCACT,EAAE,IAAI,EAAE,YAAY,EAAE;6BACvB;4BACD,IAAI,EAAE,OAAO;yBACd;wBACD,kBAAkB,EAAE;4BAClB,WAAW,EAAE;gCACX;oCACE,YAAY,EAAE,qBAAqB;oCACnC,kBAAkB,EAAE,8BAA8B;iCACnD;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAGA,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,2BAA2B,EAAE,EACvC,eAAe,CAChB,CAAC;YAEF,2DAA2D;YAC3D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,6FAA6F,EAAE,KAAK,IAAI,EAAE;YAC3G,8DAA8D;YAE5D,mBAAmB,CAAC,iBACrB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAEpC,mBAAmB,CAAC,sBACrB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC,EAAE,MAAM,EAAE,2BAA2B,EAAE,EACvC,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACjC,qDAAqD,CACtD,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,mCAAmC;YACnC,MAAM,cAAc,GAAG;gBACrB,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;4BAC3C,IAAI,EAAE,OAAO;yBACd;wBACD,kBAAkB,EAAE;4BAClB,WAAW,EAAE;gCACX;oCACE,YAAY,EAAE,qBAAqB;oCACnC,kBAAkB,EAAE,8BAA8B;iCACnD;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAGA,kBAAkB,CAAC,gBACpB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAEpC,IAAI,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACrC,EAAE,MAAM,EAAE,2BAA2B,EAAE,EACvC,eAAe,CAChB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YAE9D,sCAAsC;YAEpC,mBAAmB,CAAC,iBACrB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAEpC,mBAAmB,CAAC,qBACrB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE5B,0DAA0D;YAC1D,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACjC,EAAE,MAAM,EAAE,iCAAiC,EAAE,EAC7C,eAAe,CAChB,CAAC;YAEF,8CAA8C;YAC9C,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACrE,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;QACnD,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,UAAU,GACd,oBAAoB;gBACpB,yCAAyC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAExE,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAC3B,+CAA+C,CAChD,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,WAAW,GAAG,2BAA2B,CAAC;YAChD,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAEzE,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CACtB,kDAAkD,WAAW,GAAG,CACjE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Vybestack LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};