@vybestack/llxprt-code 0.1.20-nightly.250818.90f427f5 → 0.1.21

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 (341) hide show
  1. package/README.md +31 -0
  2. package/dist/package.json +3 -3
  3. package/dist/src/config/auth.test.d.ts +6 -0
  4. package/dist/src/config/auth.test.js +57 -0
  5. package/dist/src/config/auth.test.js.map +1 -0
  6. package/dist/src/config/config.d.ts +1 -1
  7. package/dist/src/config/config.js +27 -14
  8. package/dist/src/config/config.js.map +1 -1
  9. package/dist/src/config/keyBindings.js +2 -2
  10. package/dist/src/config/keyBindings.test.d.ts +6 -0
  11. package/dist/src/config/keyBindings.test.js +51 -0
  12. package/dist/src/config/keyBindings.test.js.map +1 -0
  13. package/dist/src/config/logging/loggingConfig.test.d.ts +6 -0
  14. package/dist/src/config/logging/loggingConfig.test.js +363 -0
  15. package/dist/src/config/logging/loggingConfig.test.js.map +1 -0
  16. package/dist/src/config/settingsSchema.d.ts +0 -9
  17. package/dist/src/config/settingsSchema.js +0 -9
  18. package/dist/src/config/settingsSchema.js.map +1 -1
  19. package/dist/src/config/settingsSchema.test.d.ts +6 -0
  20. package/dist/src/config/settingsSchema.test.js +195 -0
  21. package/dist/src/config/settingsSchema.test.js.map +1 -0
  22. package/dist/src/config/trustedFolders.test.d.ts +6 -0
  23. package/dist/src/config/trustedFolders.test.js +156 -0
  24. package/dist/src/config/trustedFolders.test.js.map +1 -0
  25. package/dist/src/gemini.js +14 -4
  26. package/dist/src/gemini.js.map +1 -1
  27. package/dist/src/gemini.test.d.ts +6 -0
  28. package/dist/src/gemini.test.js +199 -0
  29. package/dist/src/gemini.test.js.map +1 -0
  30. package/dist/src/generated/git-commit.d.ts +1 -1
  31. package/dist/src/generated/git-commit.js +1 -1
  32. package/dist/src/integration-tests/base-url-behavior.integration.test.d.ts +6 -0
  33. package/dist/src/integration-tests/base-url-behavior.integration.test.js +492 -0
  34. package/dist/src/integration-tests/base-url-behavior.integration.test.js.map +1 -0
  35. package/dist/src/integration-tests/cli-args.integration.test.d.ts +6 -0
  36. package/dist/src/integration-tests/cli-args.integration.test.js +398 -0
  37. package/dist/src/integration-tests/cli-args.integration.test.js.map +1 -0
  38. package/dist/src/integration-tests/compression-settings-apply.integration.test.d.ts +6 -0
  39. package/dist/src/integration-tests/compression-settings-apply.integration.test.js +436 -0
  40. package/dist/src/integration-tests/compression-settings-apply.integration.test.js.map +1 -0
  41. package/dist/src/integration-tests/ephemeral-settings.integration.test.d.ts +6 -0
  42. package/dist/src/integration-tests/ephemeral-settings.integration.test.js +290 -0
  43. package/dist/src/integration-tests/ephemeral-settings.integration.test.js.map +1 -0
  44. package/dist/src/integration-tests/model-params-isolation.integration.test.d.ts +6 -0
  45. package/dist/src/integration-tests/model-params-isolation.integration.test.js +564 -0
  46. package/dist/src/integration-tests/model-params-isolation.integration.test.js.map +1 -0
  47. package/dist/src/integration-tests/modelParams.integration.test.d.ts +6 -0
  48. package/dist/src/integration-tests/modelParams.integration.test.js +784 -0
  49. package/dist/src/integration-tests/modelParams.integration.test.js.map +1 -0
  50. package/dist/src/integration-tests/profile-keyfile.integration.test.d.ts +6 -0
  51. package/dist/src/integration-tests/profile-keyfile.integration.test.js +429 -0
  52. package/dist/src/integration-tests/profile-keyfile.integration.test.js.map +1 -0
  53. package/dist/src/integration-tests/profile-system.integration.test.d.ts +6 -0
  54. package/dist/src/integration-tests/profile-system.integration.test.js +364 -0
  55. package/dist/src/integration-tests/profile-system.integration.test.js.map +1 -0
  56. package/dist/src/integration-tests/provider-switching.integration.test.d.ts +6 -0
  57. package/dist/src/integration-tests/provider-switching.integration.test.js +207 -0
  58. package/dist/src/integration-tests/provider-switching.integration.test.js.map +1 -0
  59. package/dist/src/integration-tests/security.integration.test.d.ts +6 -0
  60. package/dist/src/integration-tests/security.integration.test.js +319 -0
  61. package/dist/src/integration-tests/security.integration.test.js.map +1 -0
  62. package/dist/src/integration-tests/test-utils.test.d.ts +6 -0
  63. package/dist/src/integration-tests/test-utils.test.js +221 -0
  64. package/dist/src/integration-tests/test-utils.test.js.map +1 -0
  65. package/dist/src/integration-tests/todo-continuation.integration.test.d.ts +6 -0
  66. package/dist/src/integration-tests/todo-continuation.integration.test.js +559 -0
  67. package/dist/src/integration-tests/todo-continuation.integration.test.js.map +1 -0
  68. package/dist/src/providers/logging/LoggingProviderWrapper.test.d.ts +6 -0
  69. package/dist/src/providers/logging/LoggingProviderWrapper.test.js +305 -0
  70. package/dist/src/providers/logging/LoggingProviderWrapper.test.js.map +1 -0
  71. package/dist/src/providers/logging/git-stats.integration.test.d.ts +6 -0
  72. package/dist/src/providers/logging/git-stats.integration.test.js +245 -0
  73. package/dist/src/providers/logging/git-stats.integration.test.js.map +1 -0
  74. package/dist/src/providers/logging/git-stats.test.d.ts +6 -0
  75. package/dist/src/providers/logging/git-stats.test.js +432 -0
  76. package/dist/src/providers/logging/git-stats.test.js.map +1 -0
  77. package/dist/src/providers/logging/multi-provider-logging.integration.test.d.ts +6 -0
  78. package/dist/src/providers/logging/multi-provider-logging.integration.test.js +531 -0
  79. package/dist/src/providers/logging/multi-provider-logging.integration.test.js.map +1 -0
  80. package/dist/src/providers/logging/performance.test.d.ts +6 -0
  81. package/dist/src/providers/logging/performance.test.js +465 -0
  82. package/dist/src/providers/logging/performance.test.js.map +1 -0
  83. package/dist/src/providers/provider-gemini-switching.test.d.ts +6 -0
  84. package/dist/src/providers/provider-gemini-switching.test.js +129 -0
  85. package/dist/src/providers/provider-gemini-switching.test.js.map +1 -0
  86. package/dist/src/providers/provider-switching.integration.test.d.ts +6 -0
  87. package/dist/src/providers/provider-switching.integration.test.js +113 -0
  88. package/dist/src/providers/provider-switching.integration.test.js.map +1 -0
  89. package/dist/src/providers/providerManagerInstance.test.d.ts +6 -0
  90. package/dist/src/providers/providerManagerInstance.test.js +104 -0
  91. package/dist/src/providers/providerManagerInstance.test.js.map +1 -0
  92. package/dist/src/services/BuiltinCommandLoader.test.d.ts +6 -0
  93. package/dist/src/services/BuiltinCommandLoader.test.js +118 -0
  94. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -0
  95. package/dist/src/services/CommandService.test.d.ts +6 -0
  96. package/dist/src/services/CommandService.test.js +232 -0
  97. package/dist/src/services/CommandService.test.js.map +1 -0
  98. package/dist/src/storage/ConversationStorage.test.d.ts +6 -0
  99. package/dist/src/storage/ConversationStorage.test.js +379 -0
  100. package/dist/src/storage/ConversationStorage.test.js.map +1 -0
  101. package/dist/src/test-utils/customMatchers.d.ts +14 -0
  102. package/dist/src/test-utils/customMatchers.js +46 -0
  103. package/dist/src/test-utils/customMatchers.js.map +1 -0
  104. package/dist/src/test-utils/mockCommandContext.d.ts +18 -0
  105. package/dist/src/test-utils/mockCommandContext.js +86 -0
  106. package/dist/src/test-utils/mockCommandContext.js.map +1 -0
  107. package/dist/src/test-utils/mockCommandContext.test.d.ts +6 -0
  108. package/dist/src/test-utils/mockCommandContext.test.js +51 -0
  109. package/dist/src/test-utils/mockCommandContext.test.js.map +1 -0
  110. package/dist/src/test-utils/responsive-testing.d.ts +14 -0
  111. package/dist/src/test-utils/responsive-testing.js +35 -0
  112. package/dist/src/test-utils/responsive-testing.js.map +1 -0
  113. package/dist/src/test-utils/responsive-testing.test.d.ts +6 -0
  114. package/dist/src/test-utils/responsive-testing.test.js +89 -0
  115. package/dist/src/test-utils/responsive-testing.test.js.map +1 -0
  116. package/dist/src/test-utils/testProviderConfig.d.ts +18 -0
  117. package/dist/src/test-utils/testProviderConfig.js +19 -0
  118. package/dist/src/test-utils/testProviderConfig.js.map +1 -0
  119. package/dist/src/ui/App.js +1 -1
  120. package/dist/src/ui/App.js.map +1 -1
  121. package/dist/src/ui/IdeIntegrationNudge.js +1 -1
  122. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  123. package/dist/src/ui/commands/chatCommand.js +8 -6
  124. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  125. package/dist/src/ui/commands/diagnosticsCommand.js +0 -1
  126. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
  127. package/dist/src/ui/commands/ideCommand.js +5 -5
  128. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  129. package/dist/src/ui/commands/keyCommand.test.d.ts +6 -0
  130. package/dist/src/ui/commands/keyCommand.test.js +128 -0
  131. package/dist/src/ui/commands/keyCommand.test.js.map +1 -0
  132. package/dist/src/ui/commands/profileCommand.test.d.ts +6 -0
  133. package/dist/src/ui/commands/profileCommand.test.js +343 -0
  134. package/dist/src/ui/commands/profileCommand.test.js.map +1 -0
  135. package/dist/src/ui/commands/setCommand.test.d.ts +6 -0
  136. package/dist/src/ui/commands/setCommand.test.js +431 -0
  137. package/dist/src/ui/commands/setCommand.test.js.map +1 -0
  138. package/dist/src/ui/commands/setupGithubCommand.test.d.ts +6 -0
  139. package/dist/src/ui/commands/setupGithubCommand.test.js +69 -0
  140. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -0
  141. package/dist/src/ui/commands/toolformatCommand.test.d.ts +1 -0
  142. package/dist/src/ui/commands/toolformatCommand.test.js +145 -0
  143. package/dist/src/ui/commands/toolformatCommand.test.js.map +1 -0
  144. package/dist/src/ui/components/AuthDialog.js +1 -1
  145. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  146. package/dist/src/ui/components/AuthDialog.test.d.ts +6 -0
  147. package/dist/src/ui/components/AuthDialog.test.js +252 -0
  148. package/dist/src/ui/components/AuthDialog.test.js.map +1 -0
  149. package/dist/src/ui/components/ContextIndicator.ui.test.d.ts +1 -0
  150. package/dist/src/ui/components/ContextIndicator.ui.test.js +89 -0
  151. package/dist/src/ui/components/ContextIndicator.ui.test.js.map +1 -0
  152. package/dist/src/ui/components/ContextSummaryDisplay.js +1 -1
  153. package/dist/src/ui/components/ContextUsageDisplay.semantic.test.d.ts +6 -0
  154. package/dist/src/ui/components/ContextUsageDisplay.semantic.test.js +75 -0
  155. package/dist/src/ui/components/ContextUsageDisplay.semantic.test.js.map +1 -0
  156. package/dist/src/ui/components/FolderTrustDialog.test.d.ts +6 -0
  157. package/dist/src/ui/components/FolderTrustDialog.test.js +26 -0
  158. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -0
  159. package/dist/src/ui/components/Footer.d.ts +1 -0
  160. package/dist/src/ui/components/Footer.js +2 -2
  161. package/dist/src/ui/components/Footer.js.map +1 -1
  162. package/dist/src/ui/components/Footer.responsive.test.d.ts +6 -0
  163. package/dist/src/ui/components/Footer.responsive.test.js +262 -0
  164. package/dist/src/ui/components/Footer.responsive.test.js.map +1 -0
  165. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +6 -0
  166. package/dist/src/ui/components/HistoryItemDisplay.test.js +92 -0
  167. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -0
  168. package/dist/src/ui/components/InputPrompt.paste.test.d.ts +6 -0
  169. package/dist/src/ui/components/InputPrompt.paste.test.js +263 -0
  170. package/dist/src/ui/components/InputPrompt.paste.test.js.map +1 -0
  171. package/dist/src/ui/components/LoadingIndicator.test.d.ts +6 -0
  172. package/dist/src/ui/components/LoadingIndicator.test.js +149 -0
  173. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -0
  174. package/dist/src/ui/components/MemoryUsageDisplay.semantic.test.d.ts +6 -0
  175. package/dist/src/ui/components/MemoryUsageDisplay.semantic.test.js +127 -0
  176. package/dist/src/ui/components/MemoryUsageDisplay.semantic.test.js.map +1 -0
  177. package/dist/src/ui/components/ProviderDialog.responsive.test.d.ts +6 -0
  178. package/dist/src/ui/components/ProviderDialog.responsive.test.js +153 -0
  179. package/dist/src/ui/components/ProviderDialog.responsive.test.js.map +1 -0
  180. package/dist/src/ui/components/ProviderModelDialog.responsive.test.d.ts +6 -0
  181. package/dist/src/ui/components/ProviderModelDialog.responsive.test.js +252 -0
  182. package/dist/src/ui/components/ProviderModelDialog.responsive.test.js.map +1 -0
  183. package/dist/src/ui/components/ProviderModelDialog.test.d.ts +6 -0
  184. package/dist/src/ui/components/ProviderModelDialog.test.js +197 -0
  185. package/dist/src/ui/components/ProviderModelDialog.test.js.map +1 -0
  186. package/dist/src/ui/components/SettingsDialog.test.d.ts +6 -0
  187. package/dist/src/ui/components/SettingsDialog.test.js +555 -0
  188. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -0
  189. package/dist/src/ui/components/ShellConfirmationDialog.test.d.ts +6 -0
  190. package/dist/src/ui/components/ShellConfirmationDialog.test.js +40 -0
  191. package/dist/src/ui/components/ShellConfirmationDialog.test.js.map +1 -0
  192. package/dist/src/ui/components/TodoPanel.responsive.test.d.ts +6 -0
  193. package/dist/src/ui/components/TodoPanel.responsive.test.js +221 -0
  194. package/dist/src/ui/components/TodoPanel.responsive.test.js.map +1 -0
  195. package/dist/src/ui/components/TodoPanel.semantic.test.d.ts +6 -0
  196. package/dist/src/ui/components/TodoPanel.semantic.test.js +137 -0
  197. package/dist/src/ui/components/TodoPanel.semantic.test.js.map +1 -0
  198. package/dist/src/ui/components/__tests__/LayoutManager.test.d.ts +6 -0
  199. package/dist/src/ui/components/__tests__/LayoutManager.test.js +94 -0
  200. package/dist/src/ui/components/__tests__/LayoutManager.test.js.map +1 -0
  201. package/dist/src/ui/components/messages/DiffRenderer.js +9 -7
  202. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  203. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +6 -0
  204. package/dist/src/ui/components/messages/DiffRenderer.test.js +239 -0
  205. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -0
  206. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +13 -4
  207. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  208. package/dist/src/ui/components/messages/ToolConfirmationMessage.responsive.test.d.ts +6 -0
  209. package/dist/src/ui/components/messages/ToolConfirmationMessage.responsive.test.js +172 -0
  210. package/dist/src/ui/components/messages/ToolConfirmationMessage.responsive.test.js.map +1 -0
  211. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +6 -0
  212. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +37 -0
  213. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -0
  214. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +6 -0
  215. package/dist/src/ui/components/messages/ToolMessage.test.js +118 -0
  216. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -0
  217. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +6 -0
  218. package/dist/src/ui/components/shared/MaxSizedBox.test.js +154 -0
  219. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -0
  220. package/dist/src/ui/components/shared/RadioButtonSelect.js +1 -1
  221. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  222. package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +6 -0
  223. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +112 -0
  224. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -0
  225. package/dist/src/ui/containers/SessionController.test.d.ts +6 -0
  226. package/dist/src/ui/containers/SessionController.test.js +440 -0
  227. package/dist/src/ui/containers/SessionController.test.js.map +1 -0
  228. package/dist/src/ui/hooks/atCommandProcessor.test.d.ts +6 -0
  229. package/dist/src/ui/hooks/atCommandProcessor.test.js +830 -0
  230. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -0
  231. package/dist/src/ui/hooks/shellCommandProcessor.test.d.ts +6 -0
  232. package/dist/src/ui/hooks/shellCommandProcessor.test.js +328 -0
  233. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -0
  234. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.d.ts +6 -0
  235. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +191 -0
  236. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -0
  237. package/dist/src/ui/hooks/useEditorSettings.test.d.ts +6 -0
  238. package/dist/src/ui/hooks/useEditorSettings.test.js +221 -0
  239. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -0
  240. package/dist/src/ui/hooks/useGeminiStream.integration.test.d.ts +6 -0
  241. package/dist/src/ui/hooks/useGeminiStream.integration.test.js +800 -0
  242. package/dist/src/ui/hooks/useGeminiStream.integration.test.js.map +1 -0
  243. package/dist/src/ui/hooks/useGeminiStream.js +12 -47
  244. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  245. package/dist/src/ui/hooks/useGitBranchName.test.d.ts +6 -0
  246. package/dist/src/ui/hooks/useGitBranchName.test.js +170 -0
  247. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -0
  248. package/dist/src/ui/hooks/useHistoryManager.test.d.ts +6 -0
  249. package/dist/src/ui/hooks/useHistoryManager.test.js +171 -0
  250. package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -0
  251. package/dist/src/ui/hooks/useInputHistory.test.d.ts +6 -0
  252. package/dist/src/ui/hooks/useInputHistory.test.js +207 -0
  253. package/dist/src/ui/hooks/useInputHistory.test.js.map +1 -0
  254. package/dist/src/ui/hooks/useKeypress.test.d.ts +6 -0
  255. package/dist/src/ui/hooks/useKeypress.test.js +171 -0
  256. package/dist/src/ui/hooks/useKeypress.test.js.map +1 -0
  257. package/dist/src/ui/hooks/useResponsive.test.d.ts +6 -0
  258. package/dist/src/ui/hooks/useResponsive.test.js +124 -0
  259. package/dist/src/ui/hooks/useResponsive.test.js.map +1 -0
  260. package/dist/src/ui/hooks/useReverseSearchCompletion.test.d.ts +6 -0
  261. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +163 -0
  262. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -0
  263. package/dist/src/ui/hooks/useShellHistory.test.d.ts +6 -0
  264. package/dist/src/ui/hooks/useShellHistory.test.js +162 -0
  265. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -0
  266. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +6 -0
  267. package/dist/src/ui/hooks/useSlashCompletion.test.js +929 -0
  268. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -0
  269. package/dist/src/ui/hooks/useStableCallback.test.d.ts +6 -0
  270. package/dist/src/ui/hooks/useStableCallback.test.js +57 -0
  271. package/dist/src/ui/hooks/useStableCallback.test.js.map +1 -0
  272. package/dist/src/ui/keyMatchers.test.d.ts +6 -0
  273. package/dist/src/ui/keyMatchers.test.js +276 -0
  274. package/dist/src/ui/keyMatchers.test.js.map +1 -0
  275. package/dist/src/ui/reducers/appReducer.test.d.ts +6 -0
  276. package/dist/src/ui/reducers/appReducer.test.js +519 -0
  277. package/dist/src/ui/reducers/appReducer.test.js.map +1 -0
  278. package/dist/src/ui/themes/color-utils.test.d.ts +6 -0
  279. package/dist/src/ui/themes/color-utils.test.js +197 -0
  280. package/dist/src/ui/themes/color-utils.test.js.map +1 -0
  281. package/dist/src/ui/themes/semantic-resolver.test.d.ts +6 -0
  282. package/dist/src/ui/themes/semantic-resolver.test.js +210 -0
  283. package/dist/src/ui/themes/semantic-resolver.test.js.map +1 -0
  284. package/dist/src/ui/themes/semantic-tokens.test.d.ts +6 -0
  285. package/dist/src/ui/themes/semantic-tokens.test.js +272 -0
  286. package/dist/src/ui/themes/semantic-tokens.test.js.map +1 -0
  287. package/dist/src/ui/themes/theme-manager.test.d.ts +6 -0
  288. package/dist/src/ui/themes/theme-manager.test.js +151 -0
  289. package/dist/src/ui/themes/theme-manager.test.js.map +1 -0
  290. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +6 -0
  291. package/dist/src/ui/utils/MarkdownDisplay.test.js +151 -0
  292. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -0
  293. package/dist/src/ui/utils/clipboardUtils.test.d.ts +6 -0
  294. package/dist/src/ui/utils/clipboardUtils.test.js +65 -0
  295. package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -0
  296. package/dist/src/ui/utils/commandUtils.test.d.ts +6 -0
  297. package/dist/src/ui/utils/commandUtils.test.js +294 -0
  298. package/dist/src/ui/utils/commandUtils.test.js.map +1 -0
  299. package/dist/src/ui/utils/displayUtils.test.d.ts +6 -0
  300. package/dist/src/ui/utils/displayUtils.test.js +42 -0
  301. package/dist/src/ui/utils/displayUtils.test.js.map +1 -0
  302. package/dist/src/ui/utils/formatters.test.d.ts +6 -0
  303. package/dist/src/ui/utils/formatters.test.js +56 -0
  304. package/dist/src/ui/utils/formatters.test.js.map +1 -0
  305. package/dist/src/ui/utils/markdownUtilities.test.d.ts +6 -0
  306. package/dist/src/ui/utils/markdownUtilities.test.js +42 -0
  307. package/dist/src/ui/utils/markdownUtilities.test.js.map +1 -0
  308. package/dist/src/ui/utils/responsive.test.d.ts +6 -0
  309. package/dist/src/ui/utils/responsive.test.js +107 -0
  310. package/dist/src/ui/utils/responsive.test.js.map +1 -0
  311. package/dist/src/ui/utils/secureInputHandler.test.d.ts +6 -0
  312. package/dist/src/ui/utils/secureInputHandler.test.js +274 -0
  313. package/dist/src/ui/utils/secureInputHandler.test.js.map +1 -0
  314. package/dist/src/ui/utils/updateCheck.test.d.ts +6 -0
  315. package/dist/src/ui/utils/updateCheck.test.js +202 -0
  316. package/dist/src/ui/utils/updateCheck.test.js.map +1 -0
  317. package/dist/src/utils/ConversationContext.test.d.ts +6 -0
  318. package/dist/src/utils/ConversationContext.test.js +64 -0
  319. package/dist/src/utils/ConversationContext.test.js.map +1 -0
  320. package/dist/src/utils/gitUtils.test.d.ts +6 -0
  321. package/dist/src/utils/gitUtils.test.js +113 -0
  322. package/dist/src/utils/gitUtils.test.js.map +1 -0
  323. package/dist/src/utils/installationInfo.test.d.ts +6 -0
  324. package/dist/src/utils/installationInfo.test.js +242 -0
  325. package/dist/src/utils/installationInfo.test.js.map +1 -0
  326. package/dist/src/utils/privacy/ConversationDataRedactor.test.d.ts +6 -0
  327. package/dist/src/utils/privacy/ConversationDataRedactor.test.js +463 -0
  328. package/dist/src/utils/privacy/ConversationDataRedactor.test.js.map +1 -0
  329. package/dist/src/utils/readStdin.js +10 -0
  330. package/dist/src/utils/readStdin.js.map +1 -1
  331. package/dist/src/utils/sandbox.js +2 -2
  332. package/dist/src/utils/sandbox.js.map +1 -1
  333. package/dist/src/utils/settingsUtils.test.d.ts +6 -0
  334. package/dist/src/utils/settingsUtils.test.js +514 -0
  335. package/dist/src/utils/settingsUtils.test.js.map +1 -0
  336. package/dist/src/utils/userStartupWarnings.js +2 -2
  337. package/dist/src/utils/userStartupWarnings.test.d.ts +6 -0
  338. package/dist/src/utils/userStartupWarnings.test.js +67 -0
  339. package/dist/src/utils/userStartupWarnings.test.js.map +1 -0
  340. package/dist/tsconfig.tsbuildinfo +1 -1
  341. package/package.json +3 -3
@@ -0,0 +1,559 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
+ import { Config, GeminiClient, TodoStore, ApprovalMode, todoEvents, } from '@vybestack/llxprt-code-core';
8
+ import { createTempDirectory, cleanupTempDirectory } from './test-utils.js';
9
+ /**
10
+ * Todo Continuation Integration Tests
11
+ *
12
+ * These tests validate end-to-end functionality of the todo continuation feature
13
+ * by testing the real components and their interactions without mocking core functionality.
14
+ */
15
+ describe('Todo Continuation Integration Tests', () => {
16
+ let tempDir;
17
+ let config;
18
+ let geminiClient;
19
+ let todoStore;
20
+ let sessionId;
21
+ let originalHome;
22
+ const createTodo = (id, content, status = 'pending') => ({
23
+ id,
24
+ content,
25
+ status,
26
+ priority: 'medium',
27
+ });
28
+ beforeEach(async () => {
29
+ originalHome = process.env.HOME;
30
+ tempDir = await createTempDirectory();
31
+ process.env.HOME = tempDir;
32
+ sessionId = 'integration-test-session';
33
+ todoStore = new TodoStore(sessionId);
34
+ config = new Config({
35
+ sessionId,
36
+ targetDir: tempDir,
37
+ debugMode: false,
38
+ model: 'gemini-2.0-flash-exp',
39
+ cwd: tempDir,
40
+ });
41
+ await config.initialize();
42
+ geminiClient = new GeminiClient(config);
43
+ });
44
+ afterEach(async () => {
45
+ if (originalHome !== undefined) {
46
+ process.env.HOME = originalHome;
47
+ }
48
+ else {
49
+ delete process.env.HOME;
50
+ }
51
+ await cleanupTempDirectory(tempDir);
52
+ });
53
+ describe('Configuration Persistence', () => {
54
+ it('@requirement REQ-004 should persist todo-continuation setting in Config', async () => {
55
+ // Given: Initially no setting
56
+ expect(config.getEphemeralSetting('todo-continuation')).toBeUndefined();
57
+ // When: Set todo-continuation to true
58
+ config.setEphemeralSetting('todo-continuation', true);
59
+ // Then: Setting should be persisted
60
+ expect(config.getEphemeralSetting('todo-continuation')).toBe(true);
61
+ // When: Set to false
62
+ config.setEphemeralSetting('todo-continuation', false);
63
+ // Then: Setting should be updated
64
+ expect(config.getEphemeralSetting('todo-continuation')).toBe(false);
65
+ // When: Remove setting
66
+ config.setEphemeralSetting('todo-continuation', undefined);
67
+ // Then: Setting should be undefined
68
+ expect(config.getEphemeralSetting('todo-continuation')).toBeUndefined();
69
+ });
70
+ it('@requirement REQ-004 should not persist across Config instances by default', async () => {
71
+ // Given: Set setting in first instance
72
+ config.setEphemeralSetting('todo-continuation', true);
73
+ expect(config.getEphemeralSetting('todo-continuation')).toBe(true);
74
+ // When: Create new Config instance
75
+ const newConfig = new Config({
76
+ sessionId: 'new-session',
77
+ targetDir: tempDir,
78
+ debugMode: false,
79
+ model: 'gemini-2.0-flash-exp',
80
+ cwd: tempDir,
81
+ });
82
+ await newConfig.initialize();
83
+ // Then: Setting should not be persisted
84
+ expect(newConfig.getEphemeralSetting('todo-continuation')).toBeUndefined();
85
+ });
86
+ it('@requirement REQ-004 should handle all ephemeral setting data types', async () => {
87
+ // Given: Various data types for configuration
88
+ const testCases = [
89
+ { key: 'bool-true', value: true },
90
+ { key: 'bool-false', value: false },
91
+ { key: 'string', value: 'test-string' },
92
+ { key: 'number', value: 42 },
93
+ { key: 'null', value: null },
94
+ { key: 'object', value: { nested: 'value' } },
95
+ { key: 'array', value: ['item1', 'item2'] },
96
+ ];
97
+ for (const testCase of testCases) {
98
+ // When: Set various types
99
+ config.setEphemeralSetting(testCase.key, testCase.value);
100
+ // Then: Should retrieve correctly
101
+ expect(config.getEphemeralSetting(testCase.key)).toEqual(testCase.value);
102
+ }
103
+ });
104
+ });
105
+ describe('TodoStore Integration', () => {
106
+ it('@requirement REQ-001 should read and write todos through TodoStore', async () => {
107
+ // Given: Create todos
108
+ const todos = [
109
+ createTodo('1', 'Complete feature implementation', 'in_progress'),
110
+ createTodo('2', 'Write comprehensive tests', 'pending'),
111
+ createTodo('3', 'Update documentation', 'completed'),
112
+ ];
113
+ // When: Write todos to store
114
+ await todoStore.writeTodos(todos);
115
+ // Then: Should be able to read back
116
+ const storedTodos = await todoStore.readTodos();
117
+ expect(storedTodos).toHaveLength(3);
118
+ expect(storedTodos[0].content).toBe('Complete feature implementation');
119
+ expect(storedTodos[0].status).toBe('in_progress');
120
+ expect(storedTodos[1].status).toBe('pending');
121
+ expect(storedTodos[2].status).toBe('completed');
122
+ });
123
+ it('@requirement REQ-001 should handle empty todo lists', async () => {
124
+ // Given: Empty todo list
125
+ const todos = [];
126
+ // When: Write empty list
127
+ await todoStore.writeTodos(todos);
128
+ // Then: Should read back empty list
129
+ const storedTodos = await todoStore.readTodos();
130
+ expect(storedTodos).toHaveLength(0);
131
+ });
132
+ it('@requirement REQ-001 should update existing todos', async () => {
133
+ // Given: Initial todos
134
+ const initialTodos = [createTodo('1', 'Initial task', 'pending')];
135
+ await todoStore.writeTodos(initialTodos);
136
+ // When: Update todo status
137
+ const updatedTodos = [
138
+ createTodo('1', 'Initial task', 'completed'),
139
+ createTodo('2', 'New task', 'in_progress'),
140
+ ];
141
+ await todoStore.writeTodos(updatedTodos);
142
+ // Then: Should reflect updates
143
+ const storedTodos = await todoStore.readTodos();
144
+ expect(storedTodos).toHaveLength(2);
145
+ expect(storedTodos[0].status).toBe('completed');
146
+ expect(storedTodos[1].content).toBe('New task');
147
+ expect(storedTodos[1].status).toBe('in_progress');
148
+ });
149
+ it('@requirement REQ-001 should isolate todos by session ID', async () => {
150
+ // Given: Multiple sessions
151
+ const session1Id = 'session-1';
152
+ const session2Id = 'session-2';
153
+ const store1 = new TodoStore(session1Id);
154
+ const store2 = new TodoStore(session2Id);
155
+ const todos1 = [createTodo('1', 'Session 1 task', 'in_progress')];
156
+ const todos2 = [createTodo('1', 'Session 2 task', 'pending')];
157
+ // When: Write different todos to each session
158
+ await store1.writeTodos(todos1);
159
+ await store2.writeTodos(todos2);
160
+ // Then: Each session should have its own todos
161
+ const stored1 = await store1.readTodos();
162
+ const stored2 = await store2.readTodos();
163
+ expect(stored1).toHaveLength(1);
164
+ expect(stored2).toHaveLength(1);
165
+ expect(stored1[0].content).toBe('Session 1 task');
166
+ expect(stored2[0].content).toBe('Session 2 task');
167
+ expect(stored1[0].status).toBe('in_progress');
168
+ expect(stored2[0].status).toBe('pending');
169
+ });
170
+ });
171
+ describe('GeminiClient Integration', () => {
172
+ it('@requirement REQ-002 should create GeminiClient with correct configuration', async () => {
173
+ // Given: GeminiClient instance
174
+ expect(geminiClient).toBeDefined();
175
+ expect(typeof geminiClient.sendMessageStream).toBe('function');
176
+ });
177
+ it('@requirement REQ-002 should support ephemeral messaging interface', async () => {
178
+ // Given: Mock the sendMessageStream to capture calls
179
+ let capturedMessage = '';
180
+ let capturedOptions = null;
181
+ const originalSendMessageStream = geminiClient.sendMessageStream;
182
+ geminiClient.sendMessageStream = vi.fn(async function* (request, signal, prompt_id, turns, originalModel) {
183
+ capturedMessage =
184
+ typeof request === 'string' ? request : JSON.stringify(request);
185
+ capturedOptions = { signal, prompt_id, turns, originalModel };
186
+ // Yield a mock stream event
187
+ yield {
188
+ type: 'content',
189
+ value: 'test',
190
+ };
191
+ // Create a mock Turn object
192
+ const mockTurn = {};
193
+ return mockTurn;
194
+ });
195
+ // When: Send ephemeral message
196
+ const generator = geminiClient.sendMessageStream('Test continuation prompt', new AbortController().signal, 'test-prompt-id');
197
+ await generator.next();
198
+ // Then: Should capture message and options
199
+ expect(capturedMessage).toBe('Test continuation prompt');
200
+ expect(capturedOptions).toEqual({
201
+ signal: expect.any(AbortSignal),
202
+ prompt_id: 'test-prompt-id',
203
+ turns: undefined,
204
+ originalModel: undefined,
205
+ });
206
+ // Restore original method
207
+ geminiClient.sendMessageStream = originalSendMessageStream;
208
+ });
209
+ it('@requirement REQ-002 should handle YOLO vs DEFAULT approval modes', async () => {
210
+ // Given: Test different approval modes
211
+ const yoloConfig = new Config({
212
+ sessionId: 'yolo-session',
213
+ targetDir: tempDir,
214
+ debugMode: false,
215
+ model: 'gemini-2.0-flash-exp',
216
+ cwd: tempDir,
217
+ });
218
+ await yoloConfig.initialize();
219
+ // When: Set YOLO mode
220
+ yoloConfig.setApprovalMode(ApprovalMode.YOLO);
221
+ // Then: Should reflect mode change
222
+ expect(yoloConfig.getApprovalMode()).toBe(ApprovalMode.YOLO);
223
+ // When: Set DEFAULT mode
224
+ config.setApprovalMode(ApprovalMode.DEFAULT);
225
+ // Then: Should reflect mode change
226
+ expect(config.getApprovalMode()).toBe(ApprovalMode.DEFAULT);
227
+ });
228
+ });
229
+ describe('Todo Events Integration', () => {
230
+ it('@requirement REQ-003 should emit and handle todo update events', async () => {
231
+ // Given: Setup event listener
232
+ let receivedEvent = null;
233
+ const eventHandler = (eventData) => {
234
+ receivedEvent = eventData;
235
+ };
236
+ todoEvents.onTodoUpdated(eventHandler);
237
+ // When: Emit todo update event
238
+ const testTodos = [createTodo('1', 'Event test task', 'in_progress')];
239
+ todoEvents.emitTodoUpdated({
240
+ sessionId,
241
+ todos: testTodos,
242
+ timestamp: new Date(),
243
+ });
244
+ // Then: Event should be received
245
+ expect(receivedEvent).toBeDefined();
246
+ expect(receivedEvent).not.toBeNull();
247
+ const event = receivedEvent;
248
+ expect(event.sessionId).toBe(sessionId);
249
+ expect(event.todos).toHaveLength(1);
250
+ expect(event.todos[0].content).toBe('Event test task');
251
+ // Cleanup
252
+ todoEvents.offTodoUpdated(eventHandler);
253
+ });
254
+ it('@requirement REQ-003 should handle multiple event listeners', async () => {
255
+ // Given: Multiple event listeners
256
+ const receivedEvents = [];
257
+ const handler1 = (eventData) => {
258
+ receivedEvents.push({ handler: 1, data: eventData });
259
+ };
260
+ const handler2 = (eventData) => {
261
+ receivedEvents.push({ handler: 2, data: eventData });
262
+ };
263
+ todoEvents.onTodoUpdated(handler1);
264
+ todoEvents.onTodoUpdated(handler2);
265
+ // When: Emit event
266
+ const testTodos = [createTodo('1', 'Multi-handler test', 'pending')];
267
+ todoEvents.emitTodoUpdated({
268
+ sessionId,
269
+ todos: testTodos,
270
+ timestamp: new Date(),
271
+ });
272
+ // Then: All handlers should receive event
273
+ expect(receivedEvents).toHaveLength(2);
274
+ expect(receivedEvents[0].handler).toBe(1);
275
+ expect(receivedEvents[1].handler).toBe(2);
276
+ expect(receivedEvents[0].data.todos[0].content).toBe('Multi-handler test');
277
+ expect(receivedEvents[1].data.todos[0].content).toBe('Multi-handler test');
278
+ // Cleanup
279
+ todoEvents.offTodoUpdated(handler1);
280
+ todoEvents.offTodoUpdated(handler2);
281
+ });
282
+ it('@requirement REQ-003 should properly unregister event listeners', async () => {
283
+ // Given: Event listener
284
+ let eventCount = 0;
285
+ const handler = () => {
286
+ eventCount++;
287
+ };
288
+ todoEvents.onTodoUpdated(handler);
289
+ // When: Emit event
290
+ todoEvents.emitTodoUpdated({
291
+ sessionId,
292
+ todos: [createTodo('1', 'Test', 'pending')],
293
+ timestamp: new Date(),
294
+ });
295
+ expect(eventCount).toBe(1);
296
+ // When: Unregister and emit again
297
+ todoEvents.offTodoUpdated(handler);
298
+ todoEvents.emitTodoUpdated({
299
+ sessionId,
300
+ todos: [createTodo('2', 'Test 2', 'pending')],
301
+ timestamp: new Date(),
302
+ });
303
+ // Then: Handler should not be called again
304
+ expect(eventCount).toBe(1);
305
+ });
306
+ });
307
+ describe('Real Component Data Flow', () => {
308
+ it('@requirement REQ-001, REQ-002, REQ-003, REQ-004 should demonstrate end-to-end data flow', async () => {
309
+ // Given: Enable todo continuation
310
+ config.setEphemeralSetting('todo-continuation', true);
311
+ expect(config.getEphemeralSetting('todo-continuation')).toBe(true);
312
+ // Create active todos through real TodoStore
313
+ const todos = [
314
+ createTodo('1', 'Implement authentication', 'in_progress'),
315
+ createTodo('2', 'Write integration tests', 'pending'),
316
+ createTodo('3', 'Update user guide', 'completed'),
317
+ ];
318
+ await todoStore.writeTodos(todos);
319
+ // Verify storage worked
320
+ const storedTodos = await todoStore.readTodos();
321
+ expect(storedTodos).toHaveLength(3);
322
+ // Filter for active todos (simulating continuation logic)
323
+ const activeTodos = storedTodos.filter((todo) => todo.status === 'in_progress' || todo.status === 'pending');
324
+ expect(activeTodos).toHaveLength(2);
325
+ // Prioritize in_progress todos (simulating continuation prioritization)
326
+ const inProgressTodos = activeTodos.filter((todo) => todo.status === 'in_progress');
327
+ const pendingTodos = activeTodos.filter((todo) => todo.status === 'pending');
328
+ const prioritizedTodo = inProgressTodos.length > 0 ? inProgressTodos[0] : pendingTodos[0];
329
+ expect(prioritizedTodo.content).toBe('Implement authentication');
330
+ expect(prioritizedTodo.status).toBe('in_progress');
331
+ // Simulate continuation prompt generation
332
+ const isYoloMode = config.getApprovalMode() === ApprovalMode.YOLO;
333
+ const continuationPrompt = isYoloMode
334
+ ? `Continue to proceed with the active task without waiting for confirmation: "${prioritizedTodo.content}"`
335
+ : `Please continue working on the following task: "${prioritizedTodo.content}"`;
336
+ expect(continuationPrompt).toContain('Implement authentication');
337
+ expect(continuationPrompt).toMatch(/please continue working/i);
338
+ // Test YOLO mode prompt
339
+ config.setApprovalMode(ApprovalMode.YOLO);
340
+ const yoloPrompt = config.getApprovalMode() === ApprovalMode.YOLO
341
+ ? `Continue to proceed with the active task without waiting for confirmation: "${prioritizedTodo.content}"`
342
+ : `Please continue working on the following task: "${prioritizedTodo.content}"`;
343
+ expect(yoloPrompt).toMatch(/(continue|proceed).*without.*confirmation/i);
344
+ // Simulate todo pause functionality
345
+ const pauseResult = {
346
+ type: 'pause',
347
+ reason: 'User needs to review requirements',
348
+ message: 'Task paused: User needs to review requirements',
349
+ };
350
+ expect(pauseResult.type).toBe('pause');
351
+ expect(pauseResult.reason).toBe('User needs to review requirements');
352
+ expect(pauseResult.message).toContain('paused');
353
+ });
354
+ it('@requirement REQ-001, REQ-003 should handle todo state transitions through events', async () => {
355
+ // Given: Initial todos
356
+ const initialTodos = [
357
+ createTodo('1', 'Design database schema', 'pending'),
358
+ ];
359
+ await todoStore.writeTodos(initialTodos);
360
+ // Setup event tracking
361
+ const events = [];
362
+ const eventHandler = (eventData) => {
363
+ events.push(eventData);
364
+ };
365
+ todoEvents.onTodoUpdated(eventHandler);
366
+ // When: Update todo status to in_progress
367
+ const updatedTodos = [
368
+ createTodo('1', 'Design database schema', 'in_progress'),
369
+ ];
370
+ await todoStore.writeTodos(updatedTodos);
371
+ todoEvents.emitTodoUpdated({
372
+ sessionId,
373
+ todos: updatedTodos,
374
+ timestamp: new Date(),
375
+ });
376
+ // Then: Event should reflect state change
377
+ expect(events).toHaveLength(1);
378
+ expect(events[0].todos[0].status).toBe('in_progress');
379
+ // When: Complete the todo
380
+ const completedTodos = [
381
+ createTodo('1', 'Design database schema', 'completed'),
382
+ ];
383
+ await todoStore.writeTodos(completedTodos);
384
+ todoEvents.emitTodoUpdated({
385
+ sessionId,
386
+ todos: completedTodos,
387
+ timestamp: new Date(),
388
+ });
389
+ // Then: Should have two events showing progression
390
+ expect(events).toHaveLength(2);
391
+ expect(events[1].todos[0].status).toBe('completed');
392
+ // Verify final state in storage
393
+ const finalTodos = await todoStore.readTodos();
394
+ expect(finalTodos[0].status).toBe('completed');
395
+ // Cleanup
396
+ todoEvents.offTodoUpdated(eventHandler);
397
+ });
398
+ it('@requirement REQ-002 should validate ephemeral settings persistence patterns', async () => {
399
+ // Given: Multiple configuration scenarios
400
+ const testSettings = [
401
+ { key: 'todo-continuation', value: true },
402
+ { key: 'context-limit', value: 150000 },
403
+ { key: 'compression-threshold', value: 0.75 },
404
+ { key: 'base-url', value: 'https://api.example.com' },
405
+ { key: 'custom-headers', value: { 'X-Test': 'integration' } },
406
+ ];
407
+ // When: Set all ephemeral settings
408
+ for (const setting of testSettings) {
409
+ config.setEphemeralSetting(setting.key, setting.value);
410
+ }
411
+ // Then: All should be retrievable
412
+ for (const setting of testSettings) {
413
+ expect(config.getEphemeralSetting(setting.key)).toEqual(setting.value);
414
+ }
415
+ // When: Get all settings at once
416
+ const allSettings = config.getEphemeralSettings();
417
+ // Then: Should contain all set values
418
+ expect(allSettings['todo-continuation']).toBe(true);
419
+ expect(allSettings['context-limit']).toBe(150000);
420
+ expect(allSettings['compression-threshold']).toBe(0.75);
421
+ expect(allSettings['base-url']).toBe('https://api.example.com');
422
+ expect(allSettings['custom-headers']).toEqual({
423
+ 'X-Test': 'integration',
424
+ });
425
+ // When: Create new Config instance
426
+ const newConfig = new Config({
427
+ sessionId: 'ephemeral-test',
428
+ targetDir: tempDir,
429
+ debugMode: false,
430
+ model: 'gemini-2.0-flash-exp',
431
+ cwd: tempDir,
432
+ });
433
+ await newConfig.initialize();
434
+ // Then: New instance should have empty ephemeral settings
435
+ const newSettings = newConfig.getEphemeralSettings();
436
+ expect(Object.keys(newSettings)).toHaveLength(0);
437
+ });
438
+ it('@requirement REQ-004 should demonstrate configuration edge cases', async () => {
439
+ // Test undefined values
440
+ config.setEphemeralSetting('undefined-test', undefined);
441
+ expect(config.getEphemeralSetting('undefined-test')).toBeUndefined();
442
+ // Test null values
443
+ config.setEphemeralSetting('null-test', null);
444
+ expect(config.getEphemeralSetting('null-test')).toBeNull();
445
+ // Test empty string
446
+ config.setEphemeralSetting('empty-string', '');
447
+ expect(config.getEphemeralSetting('empty-string')).toBe('');
448
+ // Test zero
449
+ config.setEphemeralSetting('zero', 0);
450
+ expect(config.getEphemeralSetting('zero')).toBe(0);
451
+ // Test false
452
+ config.setEphemeralSetting('false', false);
453
+ expect(config.getEphemeralSetting('false')).toBe(false);
454
+ // Test overwriting values
455
+ config.setEphemeralSetting('overwrite-test', 'initial');
456
+ expect(config.getEphemeralSetting('overwrite-test')).toBe('initial');
457
+ config.setEphemeralSetting('overwrite-test', 'updated');
458
+ expect(config.getEphemeralSetting('overwrite-test')).toBe('updated');
459
+ });
460
+ it('@requirement REQ-001, REQ-002, REQ-003 should validate data and handle edge cases', async () => {
461
+ // Test valid todos with edge case content
462
+ const edgeCaseTodos = [
463
+ {
464
+ id: '1',
465
+ content: 'Valid todo',
466
+ status: 'pending',
467
+ priority: 'medium',
468
+ },
469
+ {
470
+ id: '2',
471
+ content: 'Todo with special chars: !@#$%^&*()',
472
+ status: 'in_progress',
473
+ priority: 'high',
474
+ },
475
+ {
476
+ id: '3',
477
+ content: 'Very long todo content that spans multiple lines and contains various characters',
478
+ status: 'completed',
479
+ priority: 'low',
480
+ },
481
+ ];
482
+ // Should handle valid todos with edge cases
483
+ await todoStore.writeTodos(edgeCaseTodos);
484
+ const storedTodos = await todoStore.readTodos();
485
+ expect(storedTodos).toHaveLength(3);
486
+ expect(storedTodos[1].content).toContain('special chars');
487
+ // Test that TodoStore validates malformed todos (expected to throw)
488
+ const malformedTodos = [
489
+ { id: '1', status: 'pending', priority: 'low' },
490
+ ];
491
+ // TodoStore should validate and throw for invalid data
492
+ await expect(async () => {
493
+ await todoStore.writeTodos(malformedTodos);
494
+ }).rejects.toThrow();
495
+ // Test graceful handling of various configuration values
496
+ expect(() => {
497
+ config.setEphemeralSetting('test-undefined', undefined);
498
+ config.setEphemeralSetting('test-null', null);
499
+ config.setEphemeralSetting('test-empty-string', '');
500
+ config.setEphemeralSetting('test-zero', 0);
501
+ config.setEphemeralSetting('test-false', false);
502
+ config.setEphemeralSetting('test-array', []);
503
+ config.setEphemeralSetting('test-object', {});
504
+ }).not.toThrow();
505
+ });
506
+ });
507
+ describe('Performance and Scale Testing', () => {
508
+ it('@requirement REQ-001 should handle large numbers of todos efficiently', async () => {
509
+ // Given: Large number of todos
510
+ const largeTodoSet = [];
511
+ for (let i = 0; i < 1000; i++) {
512
+ largeTodoSet.push(createTodo(`todo-${i}`, `Task number ${i}`, i % 3 === 0 ? 'completed' : i % 3 === 1 ? 'in_progress' : 'pending'));
513
+ }
514
+ const startTime = Date.now();
515
+ // When: Write large todo set
516
+ await todoStore.writeTodos(largeTodoSet);
517
+ // Then: Should complete in reasonable time
518
+ const writeTime = Date.now() - startTime;
519
+ expect(writeTime).toBeLessThan(5000); // Should complete within 5 seconds
520
+ // When: Read back large todo set
521
+ const readStartTime = Date.now();
522
+ const storedTodos = await todoStore.readTodos();
523
+ const readTime = Date.now() - readStartTime;
524
+ // Then: Should read efficiently
525
+ expect(readTime).toBeLessThan(1000); // Should read within 1 second
526
+ expect(storedTodos).toHaveLength(1000);
527
+ // Verify data integrity
528
+ expect(storedTodos[0].content).toBe('Task number 0');
529
+ expect(storedTodos[999].content).toBe('Task number 999');
530
+ });
531
+ it('@requirement REQ-003 should handle rapid event emissions', async () => {
532
+ // Given: Event handler that tracks all events
533
+ const receivedEvents = [];
534
+ const eventHandler = (eventData) => {
535
+ receivedEvents.push(eventData);
536
+ };
537
+ todoEvents.onTodoUpdated(eventHandler);
538
+ // When: Emit many events rapidly
539
+ const eventCount = 100;
540
+ const startTime = Date.now();
541
+ for (let i = 0; i < eventCount; i++) {
542
+ todoEvents.emitTodoUpdated({
543
+ sessionId: `rapid-test-${i}`,
544
+ todos: [createTodo(`${i}`, `Rapid event ${i}`, 'pending')],
545
+ timestamp: new Date(),
546
+ });
547
+ }
548
+ // Give events time to process
549
+ await new Promise((resolve) => setTimeout(resolve, 100));
550
+ const processTime = Date.now() - startTime;
551
+ // Then: All events should be processed efficiently
552
+ expect(receivedEvents).toHaveLength(eventCount);
553
+ expect(processTime).toBeLessThan(1000); // Should process within 1 second
554
+ // Cleanup
555
+ todoEvents.offTodoUpdated(eventHandler);
556
+ });
557
+ });
558
+ });
559
+ //# sourceMappingURL=todo-continuation.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo-continuation.integration.test.js","sourceRoot":"","sources":["../../../src/integration-tests/todo-continuation.integration.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EAET,YAAY,EACZ,UAAU,GAIX,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5E;;;;;GAKG;AACH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IACnB,IAAI,YAA0B,CAAC;IAC/B,IAAI,SAAoB,CAAC;IACzB,IAAI,SAAiB,CAAC;IACtB,IAAI,YAAgC,CAAC;IAErC,MAAM,UAAU,GAAG,CACjB,EAAU,EACV,OAAe,EACf,SAAkD,SAAS,EACrD,EAAE,CAAC,CAAC;QACV,EAAE;QACF,OAAO;QACP,MAAM;QACN,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAChC,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;QAE3B,SAAS,GAAG,0BAA0B,CAAC;QACvC,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QAErC,MAAM,GAAG,IAAI,MAAM,CAAC;YAClB,SAAS;YACT,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,sBAAsB;YAC7B,GAAG,EAAE,OAAO;SACb,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAE1B,YAAY,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,CAAC;QAED,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;YACvF,8BAA8B;YAC9B,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAExE,sCAAsC;YACtC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YAEtD,oCAAoC;YACpC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnE,qBAAqB;YACrB,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAEvD,kCAAkC;YAClC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpE,uBAAuB;YACvB,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YAE3D,oCAAoC;YACpC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,uCAAuC;YACvC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnE,mCAAmC;YACnC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC;gBAC3B,SAAS,EAAE,aAAa;gBACxB,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,sBAAsB;gBAC7B,GAAG,EAAE,OAAO;aACb,CAAC,CAAC;YACH,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAE7B,wCAAwC;YACxC,MAAM,CACJ,SAAS,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CACnD,CAAC,aAAa,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,8CAA8C;YAC9C,MAAM,SAAS,GAAG;gBAChB,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE;gBACjC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;gBACnC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE;gBACvC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC5B,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;gBAC5B,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;gBAC7C,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;aAC5C,CAAC;YAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,0BAA0B;gBAC1B,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAEzD,kCAAkC;gBAClC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CACtD,QAAQ,CAAC,KAAK,CACf,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,sBAAsB;YACtB,MAAM,KAAK,GAAG;gBACZ,UAAU,CAAC,GAAG,EAAE,iCAAiC,EAAE,aAAa,CAAC;gBACjE,UAAU,CAAC,GAAG,EAAE,2BAA2B,EAAE,SAAS,CAAC;gBACvD,UAAU,CAAC,GAAG,EAAE,sBAAsB,EAAE,WAAW,CAAC;aACrD,CAAC;YAEF,6BAA6B;YAC7B,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAElC,oCAAoC;YACpC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACvE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,yBAAyB;YACzB,MAAM,KAAK,GAAW,EAAE,CAAC;YAEzB,yBAAyB;YACzB,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAElC,oCAAoC;YACpC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,uBAAuB;YACvB,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;YAClE,MAAM,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAEzC,2BAA2B;YAC3B,MAAM,YAAY,GAAG;gBACnB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC;gBAC5C,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC;aAC3C,CAAC;YACF,MAAM,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAEzC,+BAA+B;YAC/B,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,2BAA2B;YAC3B,MAAM,UAAU,GAAG,WAAW,CAAC;YAC/B,MAAM,UAAU,GAAG,WAAW,CAAC;YAE/B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;YAE9D,8CAA8C;YAC9C,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEhC,+CAA+C;YAC/C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YAEzC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,+BAA+B;YAC/B,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,OAAO,YAAY,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,qDAAqD;YACrD,IAAI,eAAe,GAAG,EAAE,CAAC;YACzB,IAAI,eAAe,GAAY,IAAI,CAAC;YAEpC,MAAM,yBAAyB,GAAG,YAAY,CAAC,iBAAiB,CAAC;YACjE,YAAY,CAAC,iBAAiB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,EACpD,OAAsB,EACtB,MAAmB,EACnB,SAAiB,EACjB,KAAc,EACd,aAAsB;gBAEtB,eAAe;oBACb,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAClE,eAAe,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;gBAC9D,4BAA4B;gBAC5B,MAAM;oBACJ,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,MAAM;iBACa,CAAC;gBAC7B,4BAA4B;gBAC5B,MAAM,QAAQ,GAAG,EAAU,CAAC;gBAC5B,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,+BAA+B;YAC/B,MAAM,SAAS,GAAG,YAAY,CAAC,iBAAiB,CAC9C,0BAA0B,EAC1B,IAAI,eAAe,EAAE,CAAC,MAAM,EAC5B,gBAAgB,CACjB,CAAC;YACF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;YAEvB,2CAA2C;YAC3C,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACzD,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;gBAC9B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/B,SAAS,EAAE,gBAAgB;gBAC3B,KAAK,EAAE,SAAS;gBAChB,aAAa,EAAE,SAAS;aACzB,CAAC,CAAC;YAEH,0BAA0B;YAC1B,YAAY,CAAC,iBAAiB,GAAG,yBAAyB,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,uCAAuC;YACvC,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC;gBAC5B,SAAS,EAAE,cAAc;gBACzB,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,sBAAsB;gBAC7B,GAAG,EAAE,OAAO;aACb,CAAC,CAAC;YACH,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAE9B,sBAAsB;YACtB,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAE9C,mCAAmC;YACnC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAE7D,yBAAyB;YACzB,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAE7C,mCAAmC;YACnC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,8BAA8B;YAC9B,IAAI,aAAa,GAA2B,IAAI,CAAC;YAEjD,MAAM,YAAY,GAAG,CAAC,SAA0B,EAAE,EAAE;gBAClD,aAAa,GAAG,SAAS,CAAC;YAC5B,CAAC,CAAC;YAEF,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAEvC,+BAA+B;YAC/B,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;YACtE,UAAU,CAAC,eAAe,CAAC;gBACzB,SAAS;gBACT,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC;YAEH,iCAAiC;YACjC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,aAA2C,CAAC;YAC1D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAEvD,UAAU;YACV,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,kCAAkC;YAClC,MAAM,cAAc,GAClB,EAAE,CAAC;YAEL,MAAM,QAAQ,GAAG,CAAC,SAA0B,EAAE,EAAE;gBAC9C,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC;YAEF,MAAM,QAAQ,GAAG,CAAC,SAA0B,EAAE,EAAE;gBAC9C,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC;YAEF,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACnC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEnC,mBAAmB;YACnB,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAAC;YACrE,UAAU,CAAC,eAAe,CAAC;gBACzB,SAAS;gBACT,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC;YAEH,0CAA0C;YAC1C,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,oBAAoB,CACrB,CAAC;YACF,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,oBAAoB,CACrB,CAAC;YAEF,UAAU;YACV,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACpC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,wBAAwB;YACxB,IAAI,UAAU,GAAG,CAAC,CAAC;YAEnB,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,UAAU,EAAE,CAAC;YACf,CAAC,CAAC;YAEF,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAElC,mBAAmB;YACnB,UAAU,CAAC,eAAe,CAAC;gBACzB,SAAS;gBACT,KAAK,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC3C,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE3B,kCAAkC;YAClC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACnC,UAAU,CAAC,eAAe,CAAC;gBACzB,SAAS;gBACT,KAAK,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC7C,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC;YAEH,2CAA2C;YAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;YACvG,kCAAkC;YAClC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnE,6CAA6C;YAC7C,MAAM,KAAK,GAAG;gBACZ,UAAU,CAAC,GAAG,EAAE,0BAA0B,EAAE,aAAa,CAAC;gBAC1D,UAAU,CAAC,GAAG,EAAE,yBAAyB,EAAE,SAAS,CAAC;gBACrD,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,WAAW,CAAC;aAClD,CAAC;YAEF,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAElC,wBAAwB;YACxB,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEpC,0DAA0D;YAC1D,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CACrE,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEpC,wEAAwE;YACxE,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,CACxC,CAAC;YACF,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CACrC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CACpC,CAAC;YAEF,MAAM,eAAe,GACnB,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpE,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACjE,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAEnD,0CAA0C;YAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,EAAE,KAAK,YAAY,CAAC,IAAI,CAAC;YAClE,MAAM,kBAAkB,GAAG,UAAU;gBACnC,CAAC,CAAC,+EAA+E,eAAe,CAAC,OAAO,GAAG;gBAC3G,CAAC,CAAC,mDAAmD,eAAe,CAAC,OAAO,GAAG,CAAC;YAElF,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YACjE,MAAM,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YAE/D,wBAAwB;YACxB,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,UAAU,GACd,MAAM,CAAC,eAAe,EAAE,KAAK,YAAY,CAAC,IAAI;gBAC5C,CAAC,CAAC,+EAA+E,eAAe,CAAC,OAAO,GAAG;gBAC3G,CAAC,CAAC,mDAAmD,eAAe,CAAC,OAAO,GAAG,CAAC;YAEpF,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;YAEzE,oCAAoC;YACpC,MAAM,WAAW,GAAG;gBAClB,IAAI,EAAE,OAAgB;gBACtB,MAAM,EAAE,mCAAmC;gBAC3C,OAAO,EAAE,gDAAgD;aAC1D,CAAC;YAEF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACrE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;YACjG,uBAAuB;YACvB,MAAM,YAAY,GAAG;gBACnB,UAAU,CAAC,GAAG,EAAE,wBAAwB,EAAE,SAAS,CAAC;aACrD,CAAC;YAEF,MAAM,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAEzC,uBAAuB;YACvB,MAAM,MAAM,GAAsB,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,CAAC,SAA0B,EAAE,EAAE;gBAClD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC,CAAC;YAEF,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAEvC,0CAA0C;YAC1C,MAAM,YAAY,GAAG;gBACnB,UAAU,CAAC,GAAG,EAAE,wBAAwB,EAAE,aAAa,CAAC;aACzD,CAAC;YAEF,MAAM,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACzC,UAAU,CAAC,eAAe,CAAC;gBACzB,SAAS;gBACT,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC;YAEH,0CAA0C;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAEtD,0BAA0B;YAC1B,MAAM,cAAc,GAAG;gBACrB,UAAU,CAAC,GAAG,EAAE,wBAAwB,EAAE,WAAW,CAAC;aACvD,CAAC;YAEF,MAAM,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC3C,UAAU,CAAC,eAAe,CAAC;gBACzB,SAAS;gBACT,KAAK,EAAE,cAAc;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC;YAEH,mDAAmD;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEpD,gCAAgC;YAChC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE/C,UAAU;YACV,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;YAC5F,0CAA0C;YAC1C,MAAM,YAAY,GAAG;gBACnB,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE;gBACzC,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE;gBACvC,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE;gBAC7C,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE;gBACrD,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE;aAC9D,CAAC;YAEF,mCAAmC;YACnC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;gBACnC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;YAED,kCAAkC;YAClC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzE,CAAC;YAED,iCAAiC;YACjC,MAAM,WAAW,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAElD,sCAAsC;YACtC,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAChE,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC5C,QAAQ,EAAE,aAAa;aACxB,CAAC,CAAC;YAEH,mCAAmC;YACnC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC;gBAC3B,SAAS,EAAE,gBAAgB;gBAC3B,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,sBAAsB;gBAC7B,GAAG,EAAE,OAAO;aACb,CAAC,CAAC;YACH,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAE7B,0DAA0D;YAC1D,MAAM,WAAW,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,wBAAwB;YACxB,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAErE,mBAAmB;YACnB,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE3D,oBAAoB;YACpB,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE5D,YAAY;YACZ,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEnD,aAAa;YACb,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAExD,0BAA0B;YAC1B,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAErE,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;YACjG,0CAA0C;YAC1C,MAAM,aAAa,GAAG;gBACpB;oBACE,EAAE,EAAE,GAAG;oBACP,OAAO,EAAE,YAAY;oBACrB,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,QAAQ;iBACX;gBACT;oBACE,EAAE,EAAE,GAAG;oBACP,OAAO,EAAE,qCAAqC;oBAC9C,MAAM,EAAE,aAAa;oBACrB,QAAQ,EAAE,MAAM;iBACT;gBACT;oBACE,EAAE,EAAE,GAAG;oBACP,OAAO,EACL,kFAAkF;oBACpF,MAAM,EAAE,WAAW;oBACnB,QAAQ,EAAE,KAAK;iBACR;aACV,CAAC;YAEF,4CAA4C;YAC5C,MAAM,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAE1D,oEAAoE;YACpE,MAAM,cAAc,GAAG;gBACrB,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAqB;aACnE,CAAC;YAEF,uDAAuD;YACvD,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;gBACtB,MAAM,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAErB,yDAAyD;YACzD,MAAM,CAAC,GAAG,EAAE;gBACV,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBACxD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBAC9C,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;gBACpD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC3C,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAChD,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,+BAA+B;YAC/B,MAAM,YAAY,GAAW,EAAE,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,YAAY,CAAC,IAAI,CACf,UAAU,CACR,QAAQ,CAAC,EAAE,EACX,eAAe,CAAC,EAAE,EAClB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CACpE,CACF,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE7B,6BAA6B;YAC7B,MAAM,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAEzC,2CAA2C;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACzC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC;YAEzE,iCAAiC;YACjC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;YAE5C,gCAAgC;YAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B;YACnE,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAEvC,wBAAwB;YACxB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACrD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,8CAA8C;YAC9C,MAAM,cAAc,GAAsB,EAAE,CAAC;YAC7C,MAAM,YAAY,GAAG,CAAC,SAA0B,EAAE,EAAE;gBAClD,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC;YAEF,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAEvC,iCAAiC;YACjC,MAAM,UAAU,GAAG,GAAG,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,UAAU,CAAC,eAAe,CAAC;oBACzB,SAAS,EAAE,cAAc,CAAC,EAAE;oBAC5B,KAAK,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oBAC1D,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,8BAA8B;YAC9B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEzD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE3C,mDAAmD;YACnD,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC;YAEzE,UAAU;YACV,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};