@didim365/agent-cli 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1091) hide show
  1. package/dist/package.json +5 -2
  2. package/dist/src/config/settingsSchema.d.ts +85 -0
  3. package/dist/src/config/settingsSchema.js +85 -0
  4. package/dist/src/config/settingsSchema.js.map +1 -1
  5. package/dist/src/core/initializer.js +42 -3
  6. package/dist/src/core/initializer.js.map +1 -1
  7. package/dist/src/gemini.d.ts +6 -0
  8. package/dist/src/gemini.js +79 -5
  9. package/dist/src/gemini.js.map +1 -1
  10. package/dist/src/generated/git-commit.d.ts +1 -1
  11. package/dist/src/generated/git-commit.js +1 -1
  12. package/dist/src/test-utils/render.js +9 -0
  13. package/dist/src/test-utils/render.js.map +1 -1
  14. package/dist/src/ui/AppContainer.js +182 -9
  15. package/dist/src/ui/AppContainer.js.map +1 -1
  16. package/dist/src/ui/auth/ApiAuthDialog.d.ts +3 -1
  17. package/dist/src/ui/auth/ApiAuthDialog.js +7 -5
  18. package/dist/src/ui/auth/ApiAuthDialog.js.map +1 -1
  19. package/dist/src/ui/auth/AuthDialog.d.ts +3 -1
  20. package/dist/src/ui/auth/AuthDialog.js +6 -6
  21. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  22. package/dist/src/ui/auth/ProviderSelectDialog.d.ts +15 -0
  23. package/dist/src/ui/auth/ProviderSelectDialog.js +39 -0
  24. package/dist/src/ui/auth/ProviderSelectDialog.js.map +1 -0
  25. package/dist/src/ui/auth/SlmConfigDialog.d.ts +21 -0
  26. package/dist/src/ui/auth/SlmConfigDialog.js +170 -0
  27. package/dist/src/ui/auth/SlmConfigDialog.js.map +1 -0
  28. package/dist/src/ui/auth/VertexConfigDialog.d.ts +18 -0
  29. package/dist/src/ui/auth/VertexConfigDialog.js +97 -0
  30. package/dist/src/ui/auth/VertexConfigDialog.js.map +1 -0
  31. package/dist/src/ui/auth/providerMetadata.d.ts +38 -0
  32. package/dist/src/ui/auth/providerMetadata.js +71 -0
  33. package/dist/src/ui/auth/providerMetadata.js.map +1 -0
  34. package/dist/src/ui/auth/useAuth.d.ts +3 -0
  35. package/dist/src/ui/auth/useAuth.js +243 -39
  36. package/dist/src/ui/auth/useAuth.js.map +1 -1
  37. package/dist/src/ui/commands/authCommand.js +18 -1
  38. package/dist/src/ui/commands/authCommand.js.map +1 -1
  39. package/dist/src/ui/commands/initCommand.js +1 -1
  40. package/dist/src/ui/commands/initCommand.js.map +1 -1
  41. package/dist/src/ui/commands/rewindCommand.js.map +1 -1
  42. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  43. package/dist/src/ui/components/DialogManager.js +27 -2
  44. package/dist/src/ui/components/DialogManager.js.map +1 -1
  45. package/dist/src/ui/components/InputPrompt.js +1 -1
  46. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  47. package/dist/src/ui/contexts/UIActionsContext.d.ts +14 -0
  48. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  49. package/dist/src/ui/contexts/UIStateContext.d.ts +4 -0
  50. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  51. package/dist/src/ui/hooks/useRewind.js.map +1 -1
  52. package/dist/src/ui/types.d.ts +4 -1
  53. package/dist/src/ui/types.js +6 -0
  54. package/dist/src/ui/types.js.map +1 -1
  55. package/dist/src/ui/utils/mouse.js +1 -1
  56. package/dist/src/ui/utils/mouse.js.map +1 -1
  57. package/dist/src/ui/utils/rewindFileOps.js.map +1 -1
  58. package/package.json +6 -3
  59. package/dist/src/commands/extensions/configure.test.d.ts +0 -1
  60. package/dist/src/commands/extensions/configure.test.js +0 -197
  61. package/dist/src/commands/extensions/configure.test.js.map +0 -1
  62. package/dist/src/commands/extensions/disable.test.d.ts +0 -6
  63. package/dist/src/commands/extensions/disable.test.js +0 -169
  64. package/dist/src/commands/extensions/disable.test.js.map +0 -1
  65. package/dist/src/commands/extensions/enable.test.d.ts +0 -6
  66. package/dist/src/commands/extensions/enable.test.js +0 -199
  67. package/dist/src/commands/extensions/enable.test.js.map +0 -1
  68. package/dist/src/commands/extensions/install.test.d.ts +0 -6
  69. package/dist/src/commands/extensions/install.test.js +0 -140
  70. package/dist/src/commands/extensions/install.test.js.map +0 -1
  71. package/dist/src/commands/extensions/link.test.d.ts +0 -6
  72. package/dist/src/commands/extensions/link.test.js +0 -137
  73. package/dist/src/commands/extensions/link.test.js.map +0 -1
  74. package/dist/src/commands/extensions/list.test.d.ts +0 -6
  75. package/dist/src/commands/extensions/list.test.js +0 -148
  76. package/dist/src/commands/extensions/list.test.js.map +0 -1
  77. package/dist/src/commands/extensions/new.test.d.ts +0 -6
  78. package/dist/src/commands/extensions/new.test.js +0 -62
  79. package/dist/src/commands/extensions/new.test.js.map +0 -1
  80. package/dist/src/commands/extensions/uninstall.test.d.ts +0 -6
  81. package/dist/src/commands/extensions/uninstall.test.js +0 -199
  82. package/dist/src/commands/extensions/uninstall.test.js.map +0 -1
  83. package/dist/src/commands/extensions/update.test.d.ts +0 -6
  84. package/dist/src/commands/extensions/update.test.js +0 -170
  85. package/dist/src/commands/extensions/update.test.js.map +0 -1
  86. package/dist/src/commands/extensions/validate.test.d.ts +0 -6
  87. package/dist/src/commands/extensions/validate.test.js +0 -96
  88. package/dist/src/commands/extensions/validate.test.js.map +0 -1
  89. package/dist/src/commands/extensions.test.d.ts +0 -6
  90. package/dist/src/commands/extensions.test.js +0 -67
  91. package/dist/src/commands/extensions.test.js.map +0 -1
  92. package/dist/src/commands/hooks/migrate.test.d.ts +0 -6
  93. package/dist/src/commands/hooks/migrate.test.js +0 -388
  94. package/dist/src/commands/hooks/migrate.test.js.map +0 -1
  95. package/dist/src/commands/mcp/add.test.d.ts +0 -6
  96. package/dist/src/commands/mcp/add.test.js +0 -274
  97. package/dist/src/commands/mcp/add.test.js.map +0 -1
  98. package/dist/src/commands/mcp/list.test.d.ts +0 -6
  99. package/dist/src/commands/mcp/list.test.js +0 -150
  100. package/dist/src/commands/mcp/list.test.js.map +0 -1
  101. package/dist/src/commands/mcp/remove.test.d.ts +0 -6
  102. package/dist/src/commands/mcp/remove.test.js +0 -189
  103. package/dist/src/commands/mcp/remove.test.js.map +0 -1
  104. package/dist/src/commands/mcp.test.d.ts +0 -6
  105. package/dist/src/commands/mcp.test.js +0 -65
  106. package/dist/src/commands/mcp.test.js.map +0 -1
  107. package/dist/src/commands/skills/disable.test.d.ts +0 -6
  108. package/dist/src/commands/skills/disable.test.js +0 -96
  109. package/dist/src/commands/skills/disable.test.js.map +0 -1
  110. package/dist/src/commands/skills/enable.test.d.ts +0 -6
  111. package/dist/src/commands/skills/enable.test.js +0 -107
  112. package/dist/src/commands/skills/enable.test.js.map +0 -1
  113. package/dist/src/commands/skills/install.test.d.ts +0 -6
  114. package/dist/src/commands/skills/install.test.js +0 -95
  115. package/dist/src/commands/skills/install.test.js.map +0 -1
  116. package/dist/src/commands/skills/list.test.d.ts +0 -6
  117. package/dist/src/commands/skills/list.test.js +0 -136
  118. package/dist/src/commands/skills/list.test.js.map +0 -1
  119. package/dist/src/commands/skills/uninstall.test.d.ts +0 -6
  120. package/dist/src/commands/skills/uninstall.test.js +0 -61
  121. package/dist/src/commands/skills/uninstall.test.js.map +0 -1
  122. package/dist/src/commands/skills.test.d.ts +0 -6
  123. package/dist/src/commands/skills.test.js +0 -49
  124. package/dist/src/commands/skills.test.js.map +0 -1
  125. package/dist/src/commands/utils.test.d.ts +0 -6
  126. package/dist/src/commands/utils.test.js +0 -35
  127. package/dist/src/commands/utils.test.js.map +0 -1
  128. package/dist/src/config/auth.test.d.ts +0 -6
  129. package/dist/src/config/auth.test.js +0 -89
  130. package/dist/src/config/auth.test.js.map +0 -1
  131. package/dist/src/config/config.integration.test.d.ts +0 -6
  132. package/dist/src/config/config.integration.test.js +0 -205
  133. package/dist/src/config/config.integration.test.js.map +0 -1
  134. package/dist/src/config/config.test.d.ts +0 -6
  135. package/dist/src/config/config.test.js +0 -2413
  136. package/dist/src/config/config.test.js.map +0 -1
  137. package/dist/src/config/extension-manager-agents.test.d.ts +0 -6
  138. package/dist/src/config/extension-manager-agents.test.js +0 -114
  139. package/dist/src/config/extension-manager-agents.test.js.map +0 -1
  140. package/dist/src/config/extension-manager-scope.test.d.ts +0 -6
  141. package/dist/src/config/extension-manager-scope.test.js +0 -153
  142. package/dist/src/config/extension-manager-scope.test.js.map +0 -1
  143. package/dist/src/config/extension-manager-skills.test.d.ts +0 -6
  144. package/dist/src/config/extension-manager-skills.test.js +0 -148
  145. package/dist/src/config/extension-manager-skills.test.js.map +0 -1
  146. package/dist/src/config/extension.test.d.ts +0 -6
  147. package/dist/src/config/extension.test.js +0 -1671
  148. package/dist/src/config/extension.test.js.map +0 -1
  149. package/dist/src/config/extensions/consent.test.d.ts +0 -6
  150. package/dist/src/config/extensions/consent.test.js +0 -280
  151. package/dist/src/config/extensions/consent.test.js.map +0 -1
  152. package/dist/src/config/extensions/extensionEnablement.test.d.ts +0 -6
  153. package/dist/src/config/extensions/extensionEnablement.test.js +0 -404
  154. package/dist/src/config/extensions/extensionEnablement.test.js.map +0 -1
  155. package/dist/src/config/extensions/extensionSettings.test.d.ts +0 -6
  156. package/dist/src/config/extensions/extensionSettings.test.js +0 -493
  157. package/dist/src/config/extensions/extensionSettings.test.js.map +0 -1
  158. package/dist/src/config/extensions/extensionUpdates.test.d.ts +0 -6
  159. package/dist/src/config/extensions/extensionUpdates.test.js +0 -230
  160. package/dist/src/config/extensions/extensionUpdates.test.js.map +0 -1
  161. package/dist/src/config/extensions/github.test.d.ts +0 -6
  162. package/dist/src/config/extensions/github.test.js +0 -441
  163. package/dist/src/config/extensions/github.test.js.map +0 -1
  164. package/dist/src/config/extensions/github_fetch.test.d.ts +0 -6
  165. package/dist/src/config/extensions/github_fetch.test.js +0 -169
  166. package/dist/src/config/extensions/github_fetch.test.js.map +0 -1
  167. package/dist/src/config/extensions/storage.test.d.ts +0 -6
  168. package/dist/src/config/extensions/storage.test.js +0 -64
  169. package/dist/src/config/extensions/storage.test.js.map +0 -1
  170. package/dist/src/config/extensions/update.test.d.ts +0 -6
  171. package/dist/src/config/extensions/update.test.js +0 -231
  172. package/dist/src/config/extensions/update.test.js.map +0 -1
  173. package/dist/src/config/extensions/variables.test.d.ts +0 -6
  174. package/dist/src/config/extensions/variables.test.js +0 -103
  175. package/dist/src/config/extensions/variables.test.js.map +0 -1
  176. package/dist/src/config/keyBindings.test.d.ts +0 -6
  177. package/dist/src/config/keyBindings.test.js +0 -108
  178. package/dist/src/config/keyBindings.test.js.map +0 -1
  179. package/dist/src/config/mcp/mcpServerEnablement.test.d.ts +0 -6
  180. package/dist/src/config/mcp/mcpServerEnablement.test.js +0 -147
  181. package/dist/src/config/mcp/mcpServerEnablement.test.js.map +0 -1
  182. package/dist/src/config/policy-engine.integration.test.d.ts +0 -6
  183. package/dist/src/config/policy-engine.integration.test.js +0 -353
  184. package/dist/src/config/policy-engine.integration.test.js.map +0 -1
  185. package/dist/src/config/sandboxConfig.test.d.ts +0 -6
  186. package/dist/src/config/sandboxConfig.test.js +0 -184
  187. package/dist/src/config/sandboxConfig.test.js.map +0 -1
  188. package/dist/src/config/settingPaths.test.d.ts +0 -6
  189. package/dist/src/config/settingPaths.test.js +0 -22
  190. package/dist/src/config/settingPaths.test.js.map +0 -1
  191. package/dist/src/config/settings-validation.test.d.ts +0 -6
  192. package/dist/src/config/settings-validation.test.js +0 -370
  193. package/dist/src/config/settings-validation.test.js.map +0 -1
  194. package/dist/src/config/settings.test.d.ts +0 -6
  195. package/dist/src/config/settings.test.js +0 -1822
  196. package/dist/src/config/settings.test.js.map +0 -1
  197. package/dist/src/config/settingsSchema.test.d.ts +0 -6
  198. package/dist/src/config/settingsSchema.test.js +0 -309
  199. package/dist/src/config/settingsSchema.test.js.map +0 -1
  200. package/dist/src/config/settings_repro.test.d.ts +0 -6
  201. package/dist/src/config/settings_repro.test.js +0 -166
  202. package/dist/src/config/settings_repro.test.js.map +0 -1
  203. package/dist/src/config/settings_validation_warning.test.d.ts +0 -6
  204. package/dist/src/config/settings_validation_warning.test.js +0 -123
  205. package/dist/src/config/settings_validation_warning.test.js.map +0 -1
  206. package/dist/src/config/skills-backward-compatibility.test.d.ts +0 -6
  207. package/dist/src/config/skills-backward-compatibility.test.js +0 -99
  208. package/dist/src/config/skills-backward-compatibility.test.js.map +0 -1
  209. package/dist/src/config/trustedFolders.test.d.ts +0 -6
  210. package/dist/src/config/trustedFolders.test.js +0 -385
  211. package/dist/src/config/trustedFolders.test.js.map +0 -1
  212. package/dist/src/core/auth.test.d.ts +0 -6
  213. package/dist/src/core/auth.test.js +0 -47
  214. package/dist/src/core/auth.test.js.map +0 -1
  215. package/dist/src/core/initializer.test.d.ts +0 -6
  216. package/dist/src/core/initializer.test.js +0 -101
  217. package/dist/src/core/initializer.test.js.map +0 -1
  218. package/dist/src/core/theme.test.d.ts +0 -6
  219. package/dist/src/core/theme.test.js +0 -46
  220. package/dist/src/core/theme.test.js.map +0 -1
  221. package/dist/src/deferred.test.d.ts +0 -6
  222. package/dist/src/deferred.test.js +0 -164
  223. package/dist/src/deferred.test.js.map +0 -1
  224. package/dist/src/gemini.test.d.ts +0 -6
  225. package/dist/src/gemini.test.js +0 -1334
  226. package/dist/src/gemini.test.js.map +0 -1
  227. package/dist/src/gemini_cleanup.test.d.ts +0 -6
  228. package/dist/src/gemini_cleanup.test.js +0 -208
  229. package/dist/src/gemini_cleanup.test.js.map +0 -1
  230. package/dist/src/nonInteractiveCli.test.d.ts +0 -6
  231. package/dist/src/nonInteractiveCli.test.js +0 -1687
  232. package/dist/src/nonInteractiveCli.test.js.map +0 -1
  233. package/dist/src/services/BuiltinCommandLoader.test.d.ts +0 -6
  234. package/dist/src/services/BuiltinCommandLoader.test.js +0 -254
  235. package/dist/src/services/BuiltinCommandLoader.test.js.map +0 -1
  236. package/dist/src/services/CommandService.test.d.ts +0 -6
  237. package/dist/src/services/CommandService.test.js +0 -234
  238. package/dist/src/services/CommandService.test.js.map +0 -1
  239. package/dist/src/services/FileCommandLoader.test.d.ts +0 -6
  240. package/dist/src/services/FileCommandLoader.test.js +0 -1102
  241. package/dist/src/services/FileCommandLoader.test.js.map +0 -1
  242. package/dist/src/services/McpPromptLoader.test.d.ts +0 -6
  243. package/dist/src/services/McpPromptLoader.test.js +0 -411
  244. package/dist/src/services/McpPromptLoader.test.js.map +0 -1
  245. package/dist/src/services/prompt-processors/argumentProcessor.test.d.ts +0 -6
  246. package/dist/src/services/prompt-processors/argumentProcessor.test.js +0 -40
  247. package/dist/src/services/prompt-processors/argumentProcessor.test.js.map +0 -1
  248. package/dist/src/services/prompt-processors/atFileProcessor.test.d.ts +0 -6
  249. package/dist/src/services/prompt-processors/atFileProcessor.test.js +0 -174
  250. package/dist/src/services/prompt-processors/atFileProcessor.test.js.map +0 -1
  251. package/dist/src/services/prompt-processors/injectionParser.test.d.ts +0 -6
  252. package/dist/src/services/prompt-processors/injectionParser.test.js +0 -189
  253. package/dist/src/services/prompt-processors/injectionParser.test.js.map +0 -1
  254. package/dist/src/services/prompt-processors/shellProcessor.test.d.ts +0 -6
  255. package/dist/src/services/prompt-processors/shellProcessor.test.js +0 -514
  256. package/dist/src/services/prompt-processors/shellProcessor.test.js.map +0 -1
  257. package/dist/src/test-utils/mockCommandContext.test.d.ts +0 -6
  258. package/dist/src/test-utils/mockCommandContext.test.js +0 -51
  259. package/dist/src/test-utils/mockCommandContext.test.js.map +0 -1
  260. package/dist/src/test-utils/render.test.d.ts +0 -6
  261. package/dist/src/test-utils/render.test.js +0 -79
  262. package/dist/src/test-utils/render.test.js.map +0 -1
  263. package/dist/src/ui/App.test.d.ts +0 -6
  264. package/dist/src/ui/App.test.js +0 -218
  265. package/dist/src/ui/App.test.js.map +0 -1
  266. package/dist/src/ui/AppContainer.test.d.ts +0 -6
  267. package/dist/src/ui/AppContainer.test.js +0 -2072
  268. package/dist/src/ui/AppContainer.test.js.map +0 -1
  269. package/dist/src/ui/IdeIntegrationNudge.test.d.ts +0 -6
  270. package/dist/src/ui/IdeIntegrationNudge.test.js +0 -158
  271. package/dist/src/ui/IdeIntegrationNudge.test.js.map +0 -1
  272. package/dist/src/ui/auth/ApiAuthDialog.test.d.ts +0 -6
  273. package/dist/src/ui/auth/ApiAuthDialog.test.js +0 -109
  274. package/dist/src/ui/auth/ApiAuthDialog.test.js.map +0 -1
  275. package/dist/src/ui/auth/AuthDialog.test.d.ts +0 -6
  276. package/dist/src/ui/auth/AuthDialog.test.js +0 -309
  277. package/dist/src/ui/auth/AuthDialog.test.js.map +0 -1
  278. package/dist/src/ui/auth/AuthInProgress.test.d.ts +0 -6
  279. package/dist/src/ui/auth/AuthInProgress.test.js +0 -81
  280. package/dist/src/ui/auth/AuthInProgress.test.js.map +0 -1
  281. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.d.ts +0 -6
  282. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js +0 -66
  283. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js.map +0 -1
  284. package/dist/src/ui/auth/useAuth.test.d.ts +0 -6
  285. package/dist/src/ui/auth/useAuth.test.js +0 -189
  286. package/dist/src/ui/auth/useAuth.test.js.map +0 -1
  287. package/dist/src/ui/commands/aboutCommand.test.d.ts +0 -6
  288. package/dist/src/ui/commands/aboutCommand.test.js +0 -143
  289. package/dist/src/ui/commands/aboutCommand.test.js.map +0 -1
  290. package/dist/src/ui/commands/agentsCommand.test.d.ts +0 -6
  291. package/dist/src/ui/commands/agentsCommand.test.js +0 -344
  292. package/dist/src/ui/commands/agentsCommand.test.js.map +0 -1
  293. package/dist/src/ui/commands/authCommand.test.d.ts +0 -6
  294. package/dist/src/ui/commands/authCommand.test.js +0 -98
  295. package/dist/src/ui/commands/authCommand.test.js.map +0 -1
  296. package/dist/src/ui/commands/bugCommand.test.d.ts +0 -6
  297. package/dist/src/ui/commands/bugCommand.test.js +0 -186
  298. package/dist/src/ui/commands/bugCommand.test.js.map +0 -1
  299. package/dist/src/ui/commands/chatCommand.test.d.ts +0 -6
  300. package/dist/src/ui/commands/chatCommand.test.js +0 -620
  301. package/dist/src/ui/commands/chatCommand.test.js.map +0 -1
  302. package/dist/src/ui/commands/clearCommand.test.d.ts +0 -6
  303. package/dist/src/ui/commands/clearCommand.test.js +0 -87
  304. package/dist/src/ui/commands/clearCommand.test.js.map +0 -1
  305. package/dist/src/ui/commands/compressCommand.test.d.ts +0 -6
  306. package/dist/src/ui/commands/compressCommand.test.js +0 -98
  307. package/dist/src/ui/commands/compressCommand.test.js.map +0 -1
  308. package/dist/src/ui/commands/copyCommand.test.d.ts +0 -6
  309. package/dist/src/ui/commands/copyCommand.test.js +0 -242
  310. package/dist/src/ui/commands/copyCommand.test.js.map +0 -1
  311. package/dist/src/ui/commands/corgiCommand.test.d.ts +0 -6
  312. package/dist/src/ui/commands/corgiCommand.test.js +0 -28
  313. package/dist/src/ui/commands/corgiCommand.test.js.map +0 -1
  314. package/dist/src/ui/commands/directoryCommand.test.d.ts +0 -6
  315. package/dist/src/ui/commands/directoryCommand.test.js +0 -353
  316. package/dist/src/ui/commands/directoryCommand.test.js.map +0 -1
  317. package/dist/src/ui/commands/docsCommand.test.d.ts +0 -6
  318. package/dist/src/ui/commands/docsCommand.test.js +0 -72
  319. package/dist/src/ui/commands/docsCommand.test.js.map +0 -1
  320. package/dist/src/ui/commands/editorCommand.test.d.ts +0 -6
  321. package/dist/src/ui/commands/editorCommand.test.js +0 -27
  322. package/dist/src/ui/commands/editorCommand.test.js.map +0 -1
  323. package/dist/src/ui/commands/extensionsCommand.test.d.ts +0 -6
  324. package/dist/src/ui/commands/extensionsCommand.test.js +0 -778
  325. package/dist/src/ui/commands/extensionsCommand.test.js.map +0 -1
  326. package/dist/src/ui/commands/helpCommand.test.d.ts +0 -6
  327. package/dist/src/ui/commands/helpCommand.test.js +0 -42
  328. package/dist/src/ui/commands/helpCommand.test.js.map +0 -1
  329. package/dist/src/ui/commands/hooksCommand.test.d.ts +0 -6
  330. package/dist/src/ui/commands/hooksCommand.test.js +0 -572
  331. package/dist/src/ui/commands/hooksCommand.test.js.map +0 -1
  332. package/dist/src/ui/commands/ideCommand.test.d.ts +0 -6
  333. package/dist/src/ui/commands/ideCommand.test.js +0 -203
  334. package/dist/src/ui/commands/ideCommand.test.js.map +0 -1
  335. package/dist/src/ui/commands/initCommand.test.d.ts +0 -6
  336. package/dist/src/ui/commands/initCommand.test.js +0 -84
  337. package/dist/src/ui/commands/initCommand.test.js.map +0 -1
  338. package/dist/src/ui/commands/mcpCommand.test.d.ts +0 -6
  339. package/dist/src/ui/commands/mcpCommand.test.js +0 -189
  340. package/dist/src/ui/commands/mcpCommand.test.js.map +0 -1
  341. package/dist/src/ui/commands/memoryCommand.test.d.ts +0 -6
  342. package/dist/src/ui/commands/memoryCommand.test.js +0 -350
  343. package/dist/src/ui/commands/memoryCommand.test.js.map +0 -1
  344. package/dist/src/ui/commands/modelCommand.test.d.ts +0 -6
  345. package/dist/src/ui/commands/modelCommand.test.js +0 -41
  346. package/dist/src/ui/commands/modelCommand.test.js.map +0 -1
  347. package/dist/src/ui/commands/permissionsCommand.test.d.ts +0 -6
  348. package/dist/src/ui/commands/permissionsCommand.test.js +0 -86
  349. package/dist/src/ui/commands/permissionsCommand.test.js.map +0 -1
  350. package/dist/src/ui/commands/policiesCommand.test.d.ts +0 -6
  351. package/dist/src/ui/commands/policiesCommand.test.js +0 -87
  352. package/dist/src/ui/commands/policiesCommand.test.js.map +0 -1
  353. package/dist/src/ui/commands/privacyCommand.test.d.ts +0 -6
  354. package/dist/src/ui/commands/privacyCommand.test.js +0 -32
  355. package/dist/src/ui/commands/privacyCommand.test.js.map +0 -1
  356. package/dist/src/ui/commands/quitCommand.test.d.ts +0 -6
  357. package/dist/src/ui/commands/quitCommand.test.js +0 -50
  358. package/dist/src/ui/commands/quitCommand.test.js.map +0 -1
  359. package/dist/src/ui/commands/restoreCommand.test.d.ts +0 -6
  360. package/dist/src/ui/commands/restoreCommand.test.js +0 -190
  361. package/dist/src/ui/commands/restoreCommand.test.js.map +0 -1
  362. package/dist/src/ui/commands/rewindCommand.test.d.ts +0 -6
  363. package/dist/src/ui/commands/rewindCommand.test.js +0 -242
  364. package/dist/src/ui/commands/rewindCommand.test.js.map +0 -1
  365. package/dist/src/ui/commands/settingsCommand.test.d.ts +0 -6
  366. package/dist/src/ui/commands/settingsCommand.test.js +0 -30
  367. package/dist/src/ui/commands/settingsCommand.test.js.map +0 -1
  368. package/dist/src/ui/commands/setupGithubCommand.test.d.ts +0 -6
  369. package/dist/src/ui/commands/setupGithubCommand.test.js +0 -238
  370. package/dist/src/ui/commands/setupGithubCommand.test.js.map +0 -1
  371. package/dist/src/ui/commands/skillsCommand.test.d.ts +0 -6
  372. package/dist/src/ui/commands/skillsCommand.test.js +0 -426
  373. package/dist/src/ui/commands/skillsCommand.test.js.map +0 -1
  374. package/dist/src/ui/commands/statsCommand.test.d.ts +0 -6
  375. package/dist/src/ui/commands/statsCommand.test.js +0 -70
  376. package/dist/src/ui/commands/statsCommand.test.js.map +0 -1
  377. package/dist/src/ui/commands/terminalSetupCommand.test.d.ts +0 -6
  378. package/dist/src/ui/commands/terminalSetupCommand.test.js +0 -66
  379. package/dist/src/ui/commands/terminalSetupCommand.test.js.map +0 -1
  380. package/dist/src/ui/commands/themeCommand.test.d.ts +0 -6
  381. package/dist/src/ui/commands/themeCommand.test.js +0 -32
  382. package/dist/src/ui/commands/themeCommand.test.js.map +0 -1
  383. package/dist/src/ui/commands/toolsCommand.test.d.ts +0 -6
  384. package/dist/src/ui/commands/toolsCommand.test.js +0 -100
  385. package/dist/src/ui/commands/toolsCommand.test.js.map +0 -1
  386. package/dist/src/ui/components/AboutBox.test.d.ts +0 -6
  387. package/dist/src/ui/components/AboutBox.test.js +0 -59
  388. package/dist/src/ui/components/AboutBox.test.js.map +0 -1
  389. package/dist/src/ui/components/AdminSettingsChangedDialog.test.d.ts +0 -6
  390. package/dist/src/ui/components/AdminSettingsChangedDialog.test.js +0 -43
  391. package/dist/src/ui/components/AdminSettingsChangedDialog.test.js.map +0 -1
  392. package/dist/src/ui/components/AgentConfigDialog.test.d.ts +0 -6
  393. package/dist/src/ui/components/AgentConfigDialog.test.js +0 -241
  394. package/dist/src/ui/components/AgentConfigDialog.test.js.map +0 -1
  395. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.d.ts +0 -6
  396. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +0 -190
  397. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +0 -1
  398. package/dist/src/ui/components/AnsiOutput.test.d.ts +0 -6
  399. package/dist/src/ui/components/AnsiOutput.test.js +0 -92
  400. package/dist/src/ui/components/AnsiOutput.test.js.map +0 -1
  401. package/dist/src/ui/components/AppHeader.test.d.ts +0 -6
  402. package/dist/src/ui/components/AppHeader.test.js +0 -225
  403. package/dist/src/ui/components/AppHeader.test.js.map +0 -1
  404. package/dist/src/ui/components/ApprovalModeIndicator.test.d.ts +0 -6
  405. package/dist/src/ui/components/ApprovalModeIndicator.test.js +0 -37
  406. package/dist/src/ui/components/ApprovalModeIndicator.test.js.map +0 -1
  407. package/dist/src/ui/components/AskUserDialog.test.d.ts +0 -6
  408. package/dist/src/ui/components/AskUserDialog.test.js +0 -598
  409. package/dist/src/ui/components/AskUserDialog.test.js.map +0 -1
  410. package/dist/src/ui/components/Banner.test.d.ts +0 -6
  411. package/dist/src/ui/components/Banner.test.js +0 -24
  412. package/dist/src/ui/components/Banner.test.js.map +0 -1
  413. package/dist/src/ui/components/CliSpinner.test.d.ts +0 -6
  414. package/dist/src/ui/components/CliSpinner.test.js +0 -28
  415. package/dist/src/ui/components/CliSpinner.test.js.map +0 -1
  416. package/dist/src/ui/components/Composer.test.d.ts +0 -6
  417. package/dist/src/ui/components/Composer.test.js +0 -383
  418. package/dist/src/ui/components/Composer.test.js.map +0 -1
  419. package/dist/src/ui/components/ConfigInitDisplay.test.d.ts +0 -6
  420. package/dist/src/ui/components/ConfigInitDisplay.test.js +0 -117
  421. package/dist/src/ui/components/ConfigInitDisplay.test.js.map +0 -1
  422. package/dist/src/ui/components/ConsentPrompt.test.d.ts +0 -6
  423. package/dist/src/ui/components/ConsentPrompt.test.js +0 -77
  424. package/dist/src/ui/components/ConsentPrompt.test.js.map +0 -1
  425. package/dist/src/ui/components/ConsoleSummaryDisplay.test.d.ts +0 -6
  426. package/dist/src/ui/components/ConsoleSummaryDisplay.test.js +0 -26
  427. package/dist/src/ui/components/ConsoleSummaryDisplay.test.js.map +0 -1
  428. package/dist/src/ui/components/ContextSummaryDisplay.test.d.ts +0 -6
  429. package/dist/src/ui/components/ContextSummaryDisplay.test.js +0 -102
  430. package/dist/src/ui/components/ContextSummaryDisplay.test.js.map +0 -1
  431. package/dist/src/ui/components/ContextUsageDisplay.test.d.ts +0 -6
  432. package/dist/src/ui/components/ContextUsageDisplay.test.js +0 -43
  433. package/dist/src/ui/components/ContextUsageDisplay.test.js.map +0 -1
  434. package/dist/src/ui/components/CopyModeWarning.test.d.ts +0 -6
  435. package/dist/src/ui/components/CopyModeWarning.test.js +0 -33
  436. package/dist/src/ui/components/CopyModeWarning.test.js.map +0 -1
  437. package/dist/src/ui/components/DebugProfiler.test.d.ts +0 -6
  438. package/dist/src/ui/components/DebugProfiler.test.js +0 -229
  439. package/dist/src/ui/components/DebugProfiler.test.js.map +0 -1
  440. package/dist/src/ui/components/DetailedMessagesDisplay.test.d.ts +0 -6
  441. package/dist/src/ui/components/DetailedMessagesDisplay.test.js +0 -39
  442. package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +0 -1
  443. package/dist/src/ui/components/DialogManager.test.d.ts +0 -6
  444. package/dist/src/ui/components/DialogManager.test.js +0 -177
  445. package/dist/src/ui/components/DialogManager.test.js.map +0 -1
  446. package/dist/src/ui/components/EditorSettingsDialog.test.d.ts +0 -6
  447. package/dist/src/ui/components/EditorSettingsDialog.test.js +0 -119
  448. package/dist/src/ui/components/EditorSettingsDialog.test.js.map +0 -1
  449. package/dist/src/ui/components/ExitWarning.test.d.ts +0 -6
  450. package/dist/src/ui/components/ExitWarning.test.js +0 -54
  451. package/dist/src/ui/components/ExitWarning.test.js.map +0 -1
  452. package/dist/src/ui/components/FolderTrustDialog.test.d.ts +0 -6
  453. package/dist/src/ui/components/FolderTrustDialog.test.js +0 -102
  454. package/dist/src/ui/components/FolderTrustDialog.test.js.map +0 -1
  455. package/dist/src/ui/components/Footer.test.d.ts +0 -6
  456. package/dist/src/ui/components/Footer.test.js +0 -321
  457. package/dist/src/ui/components/Footer.test.js.map +0 -1
  458. package/dist/src/ui/components/GeminiRespondingSpinner.test.d.ts +0 -6
  459. package/dist/src/ui/components/GeminiRespondingSpinner.test.js +0 -61
  460. package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +0 -1
  461. package/dist/src/ui/components/GradientRegression.test.d.ts +0 -6
  462. package/dist/src/ui/components/GradientRegression.test.js +0 -105
  463. package/dist/src/ui/components/GradientRegression.test.js.map +0 -1
  464. package/dist/src/ui/components/Header.test.d.ts +0 -6
  465. package/dist/src/ui/components/Header.test.js +0 -147
  466. package/dist/src/ui/components/Header.test.js.map +0 -1
  467. package/dist/src/ui/components/Help.test.d.ts +0 -6
  468. package/dist/src/ui/components/Help.test.js +0 -67
  469. package/dist/src/ui/components/Help.test.js.map +0 -1
  470. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +0 -6
  471. package/dist/src/ui/components/HistoryItemDisplay.test.js +0 -207
  472. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +0 -1
  473. package/dist/src/ui/components/HookStatusDisplay.test.d.ts +0 -6
  474. package/dist/src/ui/components/HookStatusDisplay.test.js +0 -51
  475. package/dist/src/ui/components/HookStatusDisplay.test.js.map +0 -1
  476. package/dist/src/ui/components/IdeTrustChangeDialog.test.d.ts +0 -6
  477. package/dist/src/ui/components/IdeTrustChangeDialog.test.js +0 -58
  478. package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +0 -1
  479. package/dist/src/ui/components/InputPrompt.test.d.ts +0 -6
  480. package/dist/src/ui/components/InputPrompt.test.js +0 -2596
  481. package/dist/src/ui/components/InputPrompt.test.js.map +0 -1
  482. package/dist/src/ui/components/LoadingIndicator.test.d.ts +0 -6
  483. package/dist/src/ui/components/LoadingIndicator.test.js +0 -207
  484. package/dist/src/ui/components/LoadingIndicator.test.js.map +0 -1
  485. package/dist/src/ui/components/LogoutConfirmationDialog.test.d.ts +0 -6
  486. package/dist/src/ui/components/LogoutConfirmationDialog.test.js +0 -59
  487. package/dist/src/ui/components/LogoutConfirmationDialog.test.js.map +0 -1
  488. package/dist/src/ui/components/LoopDetectionConfirmation.test.d.ts +0 -6
  489. package/dist/src/ui/components/LoopDetectionConfirmation.test.js +0 -25
  490. package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +0 -1
  491. package/dist/src/ui/components/MainContent.test.d.ts +0 -6
  492. package/dist/src/ui/components/MainContent.test.js +0 -83
  493. package/dist/src/ui/components/MainContent.test.js.map +0 -1
  494. package/dist/src/ui/components/MemoryUsageDisplay.test.d.ts +0 -6
  495. package/dist/src/ui/components/MemoryUsageDisplay.test.js +0 -49
  496. package/dist/src/ui/components/MemoryUsageDisplay.test.js.map +0 -1
  497. package/dist/src/ui/components/ModelDialog.test.d.ts +0 -6
  498. package/dist/src/ui/components/ModelDialog.test.js +0 -197
  499. package/dist/src/ui/components/ModelDialog.test.js.map +0 -1
  500. package/dist/src/ui/components/ModelStatsDisplay.test.d.ts +0 -6
  501. package/dist/src/ui/components/ModelStatsDisplay.test.js +0 -343
  502. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +0 -1
  503. package/dist/src/ui/components/MultiFolderTrustDialog.test.d.ts +0 -6
  504. package/dist/src/ui/components/MultiFolderTrustDialog.test.js +0 -162
  505. package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +0 -1
  506. package/dist/src/ui/components/NewAgentsNotification.test.d.ts +0 -6
  507. package/dist/src/ui/components/NewAgentsNotification.test.js +0 -48
  508. package/dist/src/ui/components/NewAgentsNotification.test.js.map +0 -1
  509. package/dist/src/ui/components/Notifications.test.d.ts +0 -6
  510. package/dist/src/ui/components/Notifications.test.js +0 -164
  511. package/dist/src/ui/components/Notifications.test.js.map +0 -1
  512. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.d.ts +0 -6
  513. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +0 -162
  514. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +0 -1
  515. package/dist/src/ui/components/ProQuotaDialog.test.d.ts +0 -6
  516. package/dist/src/ui/components/ProQuotaDialog.test.js +0 -191
  517. package/dist/src/ui/components/ProQuotaDialog.test.js.map +0 -1
  518. package/dist/src/ui/components/QueuedMessageDisplay.test.d.ts +0 -6
  519. package/dist/src/ui/components/QueuedMessageDisplay.test.js +0 -65
  520. package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +0 -1
  521. package/dist/src/ui/components/QuittingDisplay.test.d.ts +0 -6
  522. package/dist/src/ui/components/QuittingDisplay.test.js +0 -49
  523. package/dist/src/ui/components/QuittingDisplay.test.js.map +0 -1
  524. package/dist/src/ui/components/RawMarkdownIndicator.test.d.ts +0 -6
  525. package/dist/src/ui/components/RawMarkdownIndicator.test.js +0 -34
  526. package/dist/src/ui/components/RawMarkdownIndicator.test.js.map +0 -1
  527. package/dist/src/ui/components/RewindConfirmation.test.d.ts +0 -6
  528. package/dist/src/ui/components/RewindConfirmation.test.js +0 -53
  529. package/dist/src/ui/components/RewindConfirmation.test.js.map +0 -1
  530. package/dist/src/ui/components/RewindViewer.test.d.ts +0 -6
  531. package/dist/src/ui/components/RewindViewer.test.js +0 -241
  532. package/dist/src/ui/components/RewindViewer.test.js.map +0 -1
  533. package/dist/src/ui/components/SessionBrowser.test.d.ts +0 -6
  534. package/dist/src/ui/components/SessionBrowser.test.js +0 -256
  535. package/dist/src/ui/components/SessionBrowser.test.js.map +0 -1
  536. package/dist/src/ui/components/SessionSummaryDisplay.test.d.ts +0 -6
  537. package/dist/src/ui/components/SessionSummaryDisplay.test.js +0 -75
  538. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +0 -1
  539. package/dist/src/ui/components/SettingsDialog.test.d.ts +0 -6
  540. package/dist/src/ui/components/SettingsDialog.test.js +0 -1150
  541. package/dist/src/ui/components/SettingsDialog.test.js.map +0 -1
  542. package/dist/src/ui/components/ShellInputPrompt.test.d.ts +0 -6
  543. package/dist/src/ui/components/ShellInputPrompt.test.js +0 -91
  544. package/dist/src/ui/components/ShellInputPrompt.test.js.map +0 -1
  545. package/dist/src/ui/components/ShellModeIndicator.test.d.ts +0 -6
  546. package/dist/src/ui/components/ShellModeIndicator.test.js +0 -17
  547. package/dist/src/ui/components/ShellModeIndicator.test.js.map +0 -1
  548. package/dist/src/ui/components/ShowMoreLines.test.d.ts +0 -6
  549. package/dist/src/ui/components/ShowMoreLines.test.js +0 -40
  550. package/dist/src/ui/components/ShowMoreLines.test.js.map +0 -1
  551. package/dist/src/ui/components/StatsDisplay.test.d.ts +0 -6
  552. package/dist/src/ui/components/StatsDisplay.test.js +0 -438
  553. package/dist/src/ui/components/StatsDisplay.test.js.map +0 -1
  554. package/dist/src/ui/components/StatusDisplay.test.d.ts +0 -6
  555. package/dist/src/ui/components/StatusDisplay.test.js +0 -155
  556. package/dist/src/ui/components/StatusDisplay.test.js.map +0 -1
  557. package/dist/src/ui/components/StickyHeader.test.d.ts +0 -6
  558. package/dist/src/ui/components/StickyHeader.test.js +0 -17
  559. package/dist/src/ui/components/StickyHeader.test.js.map +0 -1
  560. package/dist/src/ui/components/SuggestionsDisplay.test.d.ts +0 -6
  561. package/dist/src/ui/components/SuggestionsDisplay.test.js +0 -56
  562. package/dist/src/ui/components/SuggestionsDisplay.test.js.map +0 -1
  563. package/dist/src/ui/components/Table.test.d.ts +0 -6
  564. package/dist/src/ui/components/Table.test.js +0 -53
  565. package/dist/src/ui/components/Table.test.js.map +0 -1
  566. package/dist/src/ui/components/ThemeDialog.test.d.ts +0 -6
  567. package/dist/src/ui/components/ThemeDialog.test.js +0 -167
  568. package/dist/src/ui/components/ThemeDialog.test.js.map +0 -1
  569. package/dist/src/ui/components/ThemedGradient.test.d.ts +0 -6
  570. package/dist/src/ui/components/ThemedGradient.test.js +0 -30
  571. package/dist/src/ui/components/ThemedGradient.test.js.map +0 -1
  572. package/dist/src/ui/components/Tips.test.d.ts +0 -6
  573. package/dist/src/ui/components/Tips.test.js +0 -23
  574. package/dist/src/ui/components/Tips.test.js.map +0 -1
  575. package/dist/src/ui/components/ToolConfirmationQueue.test.d.ts +0 -6
  576. package/dist/src/ui/components/ToolConfirmationQueue.test.js +0 -71
  577. package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +0 -1
  578. package/dist/src/ui/components/ToolStatsDisplay.test.d.ts +0 -6
  579. package/dist/src/ui/components/ToolStatsDisplay.test.js +0 -227
  580. package/dist/src/ui/components/ToolStatsDisplay.test.js.map +0 -1
  581. package/dist/src/ui/components/UpdateNotification.test.d.ts +0 -6
  582. package/dist/src/ui/components/UpdateNotification.test.js +0 -16
  583. package/dist/src/ui/components/UpdateNotification.test.js.map +0 -1
  584. package/dist/src/ui/components/ValidationDialog.test.d.ts +0 -6
  585. package/dist/src/ui/components/ValidationDialog.test.js +0 -153
  586. package/dist/src/ui/components/ValidationDialog.test.js.map +0 -1
  587. package/dist/src/ui/components/messages/CompressionMessage.test.d.ts +0 -6
  588. package/dist/src/ui/components/messages/CompressionMessage.test.js +0 -191
  589. package/dist/src/ui/components/messages/CompressionMessage.test.js.map +0 -1
  590. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +0 -6
  591. package/dist/src/ui/components/messages/DiffRenderer.test.js +0 -240
  592. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +0 -1
  593. package/dist/src/ui/components/messages/ErrorMessage.test.d.ts +0 -6
  594. package/dist/src/ui/components/messages/ErrorMessage.test.js +0 -23
  595. package/dist/src/ui/components/messages/ErrorMessage.test.js.map +0 -1
  596. package/dist/src/ui/components/messages/GeminiMessage.test.d.ts +0 -6
  597. package/dist/src/ui/components/messages/GeminiMessage.test.js +0 -35
  598. package/dist/src/ui/components/messages/GeminiMessage.test.js.map +0 -1
  599. package/dist/src/ui/components/messages/InfoMessage.test.d.ts +0 -6
  600. package/dist/src/ui/components/messages/InfoMessage.test.js +0 -28
  601. package/dist/src/ui/components/messages/InfoMessage.test.js.map +0 -1
  602. package/dist/src/ui/components/messages/RedirectionConfirmation.test.d.ts +0 -6
  603. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js +0 -33
  604. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js.map +0 -1
  605. package/dist/src/ui/components/messages/ShellToolMessage.test.d.ts +0 -6
  606. package/dist/src/ui/components/messages/ShellToolMessage.test.js +0 -123
  607. package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +0 -1
  608. package/dist/src/ui/components/messages/Todo.test.d.ts +0 -6
  609. package/dist/src/ui/components/messages/Todo.test.js +0 -114
  610. package/dist/src/ui/components/messages/Todo.test.js.map +0 -1
  611. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +0 -6
  612. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -232
  613. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +0 -1
  614. package/dist/src/ui/components/messages/ToolGroupMessage.test.d.ts +0 -6
  615. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +0 -529
  616. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +0 -1
  617. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +0 -6
  618. package/dist/src/ui/components/messages/ToolMessage.test.js +0 -217
  619. package/dist/src/ui/components/messages/ToolMessage.test.js.map +0 -1
  620. package/dist/src/ui/components/messages/ToolMessageFocusHint.test.d.ts +0 -6
  621. package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js +0 -89
  622. package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js.map +0 -1
  623. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.d.ts +0 -6
  624. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js +0 -62
  625. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js.map +0 -1
  626. package/dist/src/ui/components/messages/ToolResultDisplay.test.d.ts +0 -6
  627. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +0 -114
  628. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +0 -1
  629. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.d.ts +0 -6
  630. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +0 -134
  631. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +0 -1
  632. package/dist/src/ui/components/messages/UserMessage.test.d.ts +0 -6
  633. package/dist/src/ui/components/messages/UserMessage.test.js +0 -32
  634. package/dist/src/ui/components/messages/UserMessage.test.js.map +0 -1
  635. package/dist/src/ui/components/messages/WarningMessage.test.d.ts +0 -6
  636. package/dist/src/ui/components/messages/WarningMessage.test.js +0 -23
  637. package/dist/src/ui/components/messages/WarningMessage.test.js.map +0 -1
  638. package/dist/src/ui/components/shared/BaseSelectionList.test.d.ts +0 -6
  639. package/dist/src/ui/components/shared/BaseSelectionList.test.js +0 -386
  640. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +0 -1
  641. package/dist/src/ui/components/shared/BaseSettingsDialog.test.d.ts +0 -6
  642. package/dist/src/ui/components/shared/BaseSettingsDialog.test.js +0 -434
  643. package/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +0 -1
  644. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.d.ts +0 -6
  645. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +0 -79
  646. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +0 -1
  647. package/dist/src/ui/components/shared/EnumSelector.test.d.ts +0 -6
  648. package/dist/src/ui/components/shared/EnumSelector.test.js +0 -70
  649. package/dist/src/ui/components/shared/EnumSelector.test.js.map +0 -1
  650. package/dist/src/ui/components/shared/ExpandableText.test.d.ts +0 -6
  651. package/dist/src/ui/components/shared/ExpandableText.test.js +0 -88
  652. package/dist/src/ui/components/shared/ExpandableText.test.js.map +0 -1
  653. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.d.ts +0 -6
  654. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js +0 -34
  655. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js.map +0 -1
  656. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +0 -6
  657. package/dist/src/ui/components/shared/MaxSizedBox.test.js +0 -90
  658. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +0 -1
  659. package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +0 -6
  660. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +0 -134
  661. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +0 -1
  662. package/dist/src/ui/components/shared/Scrollable.test.d.ts +0 -6
  663. package/dist/src/ui/components/shared/Scrollable.test.js +0 -74
  664. package/dist/src/ui/components/shared/Scrollable.test.js.map +0 -1
  665. package/dist/src/ui/components/shared/ScrollableList.test.d.ts +0 -6
  666. package/dist/src/ui/components/shared/ScrollableList.test.js +0 -241
  667. package/dist/src/ui/components/shared/ScrollableList.test.js.map +0 -1
  668. package/dist/src/ui/components/shared/TabHeader.test.d.ts +0 -6
  669. package/dist/src/ui/components/shared/TabHeader.test.js +0 -106
  670. package/dist/src/ui/components/shared/TabHeader.test.js.map +0 -1
  671. package/dist/src/ui/components/shared/TextInput.test.d.ts +0 -6
  672. package/dist/src/ui/components/shared/TextInput.test.js +0 -242
  673. package/dist/src/ui/components/shared/TextInput.test.js.map +0 -1
  674. package/dist/src/ui/components/shared/VirtualizedList.test.d.ts +0 -6
  675. package/dist/src/ui/components/shared/VirtualizedList.test.js +0 -171
  676. package/dist/src/ui/components/shared/VirtualizedList.test.js.map +0 -1
  677. package/dist/src/ui/components/shared/performance.test.d.ts +0 -1
  678. package/dist/src/ui/components/shared/performance.test.js +0 -67
  679. package/dist/src/ui/components/shared/performance.test.js.map +0 -1
  680. package/dist/src/ui/components/shared/text-buffer.test.d.ts +0 -6
  681. package/dist/src/ui/components/shared/text-buffer.test.js +0 -2490
  682. package/dist/src/ui/components/shared/text-buffer.test.js.map +0 -1
  683. package/dist/src/ui/components/shared/vim-buffer-actions.test.d.ts +0 -6
  684. package/dist/src/ui/components/shared/vim-buffer-actions.test.js +0 -964
  685. package/dist/src/ui/components/shared/vim-buffer-actions.test.js.map +0 -1
  686. package/dist/src/ui/components/views/ChatList.test.d.ts +0 -6
  687. package/dist/src/ui/components/views/ChatList.test.js +0 -45
  688. package/dist/src/ui/components/views/ChatList.test.js.map +0 -1
  689. package/dist/src/ui/components/views/ExtensionsList.test.d.ts +0 -6
  690. package/dist/src/ui/components/views/ExtensionsList.test.js +0 -148
  691. package/dist/src/ui/components/views/ExtensionsList.test.js.map +0 -1
  692. package/dist/src/ui/components/views/McpStatus.test.d.ts +0 -6
  693. package/dist/src/ui/components/views/McpStatus.test.js +0 -153
  694. package/dist/src/ui/components/views/McpStatus.test.js.map +0 -1
  695. package/dist/src/ui/components/views/SkillsList.test.d.ts +0 -6
  696. package/dist/src/ui/components/views/SkillsList.test.js +0 -97
  697. package/dist/src/ui/components/views/SkillsList.test.js.map +0 -1
  698. package/dist/src/ui/components/views/ToolsList.test.d.ts +0 -6
  699. package/dist/src/ui/components/views/ToolsList.test.js +0 -45
  700. package/dist/src/ui/components/views/ToolsList.test.js.map +0 -1
  701. package/dist/src/ui/contexts/KeypressContext.test.d.ts +0 -6
  702. package/dist/src/ui/contexts/KeypressContext.test.js +0 -957
  703. package/dist/src/ui/contexts/KeypressContext.test.js.map +0 -1
  704. package/dist/src/ui/contexts/MouseContext.test.d.ts +0 -6
  705. package/dist/src/ui/contexts/MouseContext.test.js +0 -198
  706. package/dist/src/ui/contexts/MouseContext.test.js.map +0 -1
  707. package/dist/src/ui/contexts/ScrollProvider.drag.test.d.ts +0 -6
  708. package/dist/src/ui/contexts/ScrollProvider.drag.test.js +0 -319
  709. package/dist/src/ui/contexts/ScrollProvider.drag.test.js.map +0 -1
  710. package/dist/src/ui/contexts/ScrollProvider.test.d.ts +0 -6
  711. package/dist/src/ui/contexts/ScrollProvider.test.js +0 -377
  712. package/dist/src/ui/contexts/ScrollProvider.test.js.map +0 -1
  713. package/dist/src/ui/contexts/SessionContext.test.d.ts +0 -6
  714. package/dist/src/ui/contexts/SessionContext.test.js +0 -198
  715. package/dist/src/ui/contexts/SessionContext.test.js.map +0 -1
  716. package/dist/src/ui/contexts/ToolActionsContext.test.d.ts +0 -6
  717. package/dist/src/ui/contexts/ToolActionsContext.test.js +0 -166
  718. package/dist/src/ui/contexts/ToolActionsContext.test.js.map +0 -1
  719. package/dist/src/ui/hooks/atCommandProcessor.test.d.ts +0 -6
  720. package/dist/src/ui/hooks/atCommandProcessor.test.js +0 -1032
  721. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +0 -1
  722. package/dist/src/ui/hooks/atCommandProcessor_agents.test.d.ts +0 -6
  723. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js +0 -183
  724. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js.map +0 -1
  725. package/dist/src/ui/hooks/shellCommandProcessor.test.d.ts +0 -6
  726. package/dist/src/ui/hooks/shellCommandProcessor.test.js +0 -521
  727. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +0 -1
  728. package/dist/src/ui/hooks/slashCommandProcessor.test.d.ts +0 -6
  729. package/dist/src/ui/hooks/slashCommandProcessor.test.js +0 -796
  730. package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +0 -1
  731. package/dist/src/ui/hooks/toolMapping.test.d.ts +0 -6
  732. package/dist/src/ui/hooks/toolMapping.test.js +0 -209
  733. package/dist/src/ui/hooks/toolMapping.test.js.map +0 -1
  734. package/dist/src/ui/hooks/useAnimatedScrollbar.test.d.ts +0 -6
  735. package/dist/src/ui/hooks/useAnimatedScrollbar.test.js +0 -85
  736. package/dist/src/ui/hooks/useAnimatedScrollbar.test.js.map +0 -1
  737. package/dist/src/ui/hooks/useApprovalModeIndicator.test.d.ts +0 -6
  738. package/dist/src/ui/hooks/useApprovalModeIndicator.test.js +0 -435
  739. package/dist/src/ui/hooks/useApprovalModeIndicator.test.js.map +0 -1
  740. package/dist/src/ui/hooks/useAtCompletion.test.d.ts +0 -6
  741. package/dist/src/ui/hooks/useAtCompletion.test.js +0 -417
  742. package/dist/src/ui/hooks/useAtCompletion.test.js.map +0 -1
  743. package/dist/src/ui/hooks/useAtCompletion_agents.test.d.ts +0 -6
  744. package/dist/src/ui/hooks/useAtCompletion_agents.test.js +0 -87
  745. package/dist/src/ui/hooks/useAtCompletion_agents.test.js.map +0 -1
  746. package/dist/src/ui/hooks/useBanner.test.d.ts +0 -6
  747. package/dist/src/ui/hooks/useBanner.test.js +0 -92
  748. package/dist/src/ui/hooks/useBanner.test.js.map +0 -1
  749. package/dist/src/ui/hooks/useBatchedScroll.test.d.ts +0 -6
  750. package/dist/src/ui/hooks/useBatchedScroll.test.js +0 -62
  751. package/dist/src/ui/hooks/useBatchedScroll.test.js.map +0 -1
  752. package/dist/src/ui/hooks/useCommandCompletion.test.d.ts +0 -6
  753. package/dist/src/ui/hooks/useCommandCompletion.test.js +0 -462
  754. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +0 -1
  755. package/dist/src/ui/hooks/useConsoleMessages.test.d.ts +0 -6
  756. package/dist/src/ui/hooks/useConsoleMessages.test.js +0 -159
  757. package/dist/src/ui/hooks/useConsoleMessages.test.js.map +0 -1
  758. package/dist/src/ui/hooks/useEditorSettings.test.d.ts +0 -6
  759. package/dist/src/ui/hooks/useEditorSettings.test.js +0 -179
  760. package/dist/src/ui/hooks/useEditorSettings.test.js.map +0 -1
  761. package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +0 -6
  762. package/dist/src/ui/hooks/useExtensionUpdates.test.js +0 -279
  763. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +0 -1
  764. package/dist/src/ui/hooks/useFlickerDetector.test.d.ts +0 -6
  765. package/dist/src/ui/hooks/useFlickerDetector.test.js +0 -106
  766. package/dist/src/ui/hooks/useFlickerDetector.test.js.map +0 -1
  767. package/dist/src/ui/hooks/useFocus.test.d.ts +0 -6
  768. package/dist/src/ui/hooks/useFocus.test.js +0 -131
  769. package/dist/src/ui/hooks/useFocus.test.js.map +0 -1
  770. package/dist/src/ui/hooks/useFolderTrust.test.d.ts +0 -6
  771. package/dist/src/ui/hooks/useFolderTrust.test.js +0 -218
  772. package/dist/src/ui/hooks/useFolderTrust.test.js.map +0 -1
  773. package/dist/src/ui/hooks/useGeminiStream.test.d.ts +0 -6
  774. package/dist/src/ui/hooks/useGeminiStream.test.js +0 -2149
  775. package/dist/src/ui/hooks/useGeminiStream.test.js.map +0 -1
  776. package/dist/src/ui/hooks/useGitBranchName.test.d.ts +0 -6
  777. package/dist/src/ui/hooks/useGitBranchName.test.js +0 -183
  778. package/dist/src/ui/hooks/useGitBranchName.test.js.map +0 -1
  779. package/dist/src/ui/hooks/useHistoryManager.test.d.ts +0 -6
  780. package/dist/src/ui/hooks/useHistoryManager.test.js +0 -188
  781. package/dist/src/ui/hooks/useHistoryManager.test.js.map +0 -1
  782. package/dist/src/ui/hooks/useHookDisplayState.test.d.ts +0 -6
  783. package/dist/src/ui/hooks/useHookDisplayState.test.js +0 -180
  784. package/dist/src/ui/hooks/useHookDisplayState.test.js.map +0 -1
  785. package/dist/src/ui/hooks/useIdeTrustListener.test.d.ts +0 -6
  786. package/dist/src/ui/hooks/useIdeTrustListener.test.js +0 -214
  787. package/dist/src/ui/hooks/useIdeTrustListener.test.js.map +0 -1
  788. package/dist/src/ui/hooks/useIncludeDirsTrust.test.d.ts +0 -6
  789. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +0 -172
  790. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +0 -1
  791. package/dist/src/ui/hooks/useInputHistory.test.d.ts +0 -6
  792. package/dist/src/ui/hooks/useInputHistory.test.js +0 -208
  793. package/dist/src/ui/hooks/useInputHistory.test.js.map +0 -1
  794. package/dist/src/ui/hooks/useInputHistoryStore.test.d.ts +0 -6
  795. package/dist/src/ui/hooks/useInputHistoryStore.test.js +0 -238
  796. package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +0 -1
  797. package/dist/src/ui/hooks/useKeypress.test.d.ts +0 -6
  798. package/dist/src/ui/hooks/useKeypress.test.js +0 -205
  799. package/dist/src/ui/hooks/useKeypress.test.js.map +0 -1
  800. package/dist/src/ui/hooks/useLoadingIndicator.test.d.ts +0 -6
  801. package/dist/src/ui/hooks/useLoadingIndicator.test.js +0 -145
  802. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +0 -1
  803. package/dist/src/ui/hooks/useMcpStatus.test.d.ts +0 -6
  804. package/dist/src/ui/hooks/useMcpStatus.test.js +0 -69
  805. package/dist/src/ui/hooks/useMcpStatus.test.js.map +0 -1
  806. package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +0 -6
  807. package/dist/src/ui/hooks/useMemoryMonitor.test.js +0 -62
  808. package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +0 -1
  809. package/dist/src/ui/hooks/useMessageQueue.test.d.ts +0 -6
  810. package/dist/src/ui/hooks/useMessageQueue.test.js +0 -327
  811. package/dist/src/ui/hooks/useMessageQueue.test.js.map +0 -1
  812. package/dist/src/ui/hooks/useModelCommand.test.d.ts +0 -6
  813. package/dist/src/ui/hooks/useModelCommand.test.js +0 -45
  814. package/dist/src/ui/hooks/useModelCommand.test.js.map +0 -1
  815. package/dist/src/ui/hooks/useMouse.test.d.ts +0 -6
  816. package/dist/src/ui/hooks/useMouse.test.js +0 -57
  817. package/dist/src/ui/hooks/useMouse.test.js.map +0 -1
  818. package/dist/src/ui/hooks/useMouseClick.test.d.ts +0 -6
  819. package/dist/src/ui/hooks/useMouseClick.test.js +0 -59
  820. package/dist/src/ui/hooks/useMouseClick.test.js.map +0 -1
  821. package/dist/src/ui/hooks/useMouseDoubleClick.test.d.ts +0 -6
  822. package/dist/src/ui/hooks/useMouseDoubleClick.test.js +0 -125
  823. package/dist/src/ui/hooks/useMouseDoubleClick.test.js.map +0 -1
  824. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.d.ts +0 -6
  825. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +0 -291
  826. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +0 -1
  827. package/dist/src/ui/hooks/usePhraseCycler.test.d.ts +0 -6
  828. package/dist/src/ui/hooks/usePhraseCycler.test.js +0 -208
  829. package/dist/src/ui/hooks/usePhraseCycler.test.js.map +0 -1
  830. package/dist/src/ui/hooks/usePrivacySettings.test.d.ts +0 -6
  831. package/dist/src/ui/hooks/usePrivacySettings.test.js +0 -104
  832. package/dist/src/ui/hooks/usePrivacySettings.test.js.map +0 -1
  833. package/dist/src/ui/hooks/useQuotaAndFallback.test.d.ts +0 -6
  834. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +0 -477
  835. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +0 -1
  836. package/dist/src/ui/hooks/useReactToolScheduler.test.d.ts +0 -6
  837. package/dist/src/ui/hooks/useReactToolScheduler.test.js +0 -58
  838. package/dist/src/ui/hooks/useReactToolScheduler.test.js.map +0 -1
  839. package/dist/src/ui/hooks/useReverseSearchCompletion.test.d.ts +0 -6
  840. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +0 -169
  841. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +0 -1
  842. package/dist/src/ui/hooks/useRewind.test.d.ts +0 -6
  843. package/dist/src/ui/hooks/useRewind.test.js +0 -100
  844. package/dist/src/ui/hooks/useRewind.test.js.map +0 -1
  845. package/dist/src/ui/hooks/useSelectionList.test.d.ts +0 -6
  846. package/dist/src/ui/hooks/useSelectionList.test.js +0 -848
  847. package/dist/src/ui/hooks/useSelectionList.test.js.map +0 -1
  848. package/dist/src/ui/hooks/useSessionBrowser.test.d.ts +0 -6
  849. package/dist/src/ui/hooks/useSessionBrowser.test.js +0 -203
  850. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +0 -1
  851. package/dist/src/ui/hooks/useSessionResume.test.d.ts +0 -6
  852. package/dist/src/ui/hooks/useSessionResume.test.js +0 -336
  853. package/dist/src/ui/hooks/useSessionResume.test.js.map +0 -1
  854. package/dist/src/ui/hooks/useShellHistory.test.d.ts +0 -6
  855. package/dist/src/ui/hooks/useShellHistory.test.js +0 -223
  856. package/dist/src/ui/hooks/useShellHistory.test.js.map +0 -1
  857. package/dist/src/ui/hooks/useShellInactivityStatus.test.d.ts +0 -6
  858. package/dist/src/ui/hooks/useShellInactivityStatus.test.js +0 -84
  859. package/dist/src/ui/hooks/useShellInactivityStatus.test.js.map +0 -1
  860. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +0 -9
  861. package/dist/src/ui/hooks/useSlashCompletion.test.js +0 -845
  862. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +0 -1
  863. package/dist/src/ui/hooks/useSnowfall.test.d.ts +0 -6
  864. package/dist/src/ui/hooks/useSnowfall.test.js +0 -88
  865. package/dist/src/ui/hooks/useSnowfall.test.js.map +0 -1
  866. package/dist/src/ui/hooks/useTabbedNavigation.test.d.ts +0 -6
  867. package/dist/src/ui/hooks/useTabbedNavigation.test.js +0 -187
  868. package/dist/src/ui/hooks/useTabbedNavigation.test.js.map +0 -1
  869. package/dist/src/ui/hooks/useTimer.test.d.ts +0 -6
  870. package/dist/src/ui/hooks/useTimer.test.js +0 -119
  871. package/dist/src/ui/hooks/useTimer.test.js.map +0 -1
  872. package/dist/src/ui/hooks/useTips.test.d.ts +0 -6
  873. package/dist/src/ui/hooks/useTips.test.js +0 -33
  874. package/dist/src/ui/hooks/useTips.test.js.map +0 -1
  875. package/dist/src/ui/hooks/useToolExecutionScheduler.test.d.ts +0 -6
  876. package/dist/src/ui/hooks/useToolExecutionScheduler.test.js +0 -376
  877. package/dist/src/ui/hooks/useToolExecutionScheduler.test.js.map +0 -1
  878. package/dist/src/ui/hooks/useToolScheduler.test.d.ts +0 -6
  879. package/dist/src/ui/hooks/useToolScheduler.test.js +0 -881
  880. package/dist/src/ui/hooks/useToolScheduler.test.js.map +0 -1
  881. package/dist/src/ui/hooks/useToolSchedulerFacade.test.d.ts +0 -6
  882. package/dist/src/ui/hooks/useToolSchedulerFacade.test.js +0 -45
  883. package/dist/src/ui/hooks/useToolSchedulerFacade.test.js.map +0 -1
  884. package/dist/src/ui/hooks/useTurnActivityMonitor.test.d.ts +0 -6
  885. package/dist/src/ui/hooks/useTurnActivityMonitor.test.js +0 -97
  886. package/dist/src/ui/hooks/useTurnActivityMonitor.test.js.map +0 -1
  887. package/dist/src/ui/hooks/vim.test.d.ts +0 -6
  888. package/dist/src/ui/hooks/vim.test.js +0 -1384
  889. package/dist/src/ui/hooks/vim.test.js.map +0 -1
  890. package/dist/src/ui/keyMatchers.test.d.ts +0 -6
  891. package/dist/src/ui/keyMatchers.test.js +0 -386
  892. package/dist/src/ui/keyMatchers.test.js.map +0 -1
  893. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.d.ts +0 -6
  894. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js +0 -121
  895. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js.map +0 -1
  896. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.d.ts +0 -6
  897. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js +0 -34
  898. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js.map +0 -1
  899. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.d.ts +0 -6
  900. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js +0 -34
  901. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js.map +0 -1
  902. package/dist/src/ui/privacy/PrivacyNotice.test.d.ts +0 -6
  903. package/dist/src/ui/privacy/PrivacyNotice.test.js +0 -62
  904. package/dist/src/ui/privacy/PrivacyNotice.test.js.map +0 -1
  905. package/dist/src/ui/state/extensions.test.d.ts +0 -6
  906. package/dist/src/ui/state/extensions.test.js +0 -219
  907. package/dist/src/ui/state/extensions.test.js.map +0 -1
  908. package/dist/src/ui/themes/color-utils.test.d.ts +0 -6
  909. package/dist/src/ui/themes/color-utils.test.js +0 -245
  910. package/dist/src/ui/themes/color-utils.test.js.map +0 -1
  911. package/dist/src/ui/themes/theme-manager.test.d.ts +0 -6
  912. package/dist/src/ui/themes/theme-manager.test.js +0 -150
  913. package/dist/src/ui/themes/theme-manager.test.js.map +0 -1
  914. package/dist/src/ui/themes/theme.test.d.ts +0 -6
  915. package/dist/src/ui/themes/theme.test.js +0 -174
  916. package/dist/src/ui/themes/theme.test.js.map +0 -1
  917. package/dist/src/ui/utils/CodeColorizer.test.d.ts +0 -6
  918. package/dist/src/ui/utils/CodeColorizer.test.js +0 -38
  919. package/dist/src/ui/utils/CodeColorizer.test.js.map +0 -1
  920. package/dist/src/ui/utils/InlineMarkdownRenderer.test.d.ts +0 -6
  921. package/dist/src/ui/utils/InlineMarkdownRenderer.test.js +0 -21
  922. package/dist/src/ui/utils/InlineMarkdownRenderer.test.js.map +0 -1
  923. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +0 -6
  924. package/dist/src/ui/utils/MarkdownDisplay.test.js +0 -159
  925. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +0 -1
  926. package/dist/src/ui/utils/clipboardUtils.test.d.ts +0 -6
  927. package/dist/src/ui/utils/clipboardUtils.test.js +0 -359
  928. package/dist/src/ui/utils/clipboardUtils.test.js.map +0 -1
  929. package/dist/src/ui/utils/clipboardUtils.windows.test.d.ts +0 -6
  930. package/dist/src/ui/utils/clipboardUtils.windows.test.js +0 -55
  931. package/dist/src/ui/utils/clipboardUtils.windows.test.js.map +0 -1
  932. package/dist/src/ui/utils/commandUtils.test.d.ts +0 -6
  933. package/dist/src/ui/utils/commandUtils.test.js +0 -479
  934. package/dist/src/ui/utils/commandUtils.test.js.map +0 -1
  935. package/dist/src/ui/utils/computeStats.test.d.ts +0 -6
  936. package/dist/src/ui/utils/computeStats.test.js +0 -271
  937. package/dist/src/ui/utils/computeStats.test.js.map +0 -1
  938. package/dist/src/ui/utils/directoryUtils.test.d.ts +0 -6
  939. package/dist/src/ui/utils/directoryUtils.test.js +0 -244
  940. package/dist/src/ui/utils/directoryUtils.test.js.map +0 -1
  941. package/dist/src/ui/utils/displayUtils.test.d.ts +0 -6
  942. package/dist/src/ui/utils/displayUtils.test.js +0 -61
  943. package/dist/src/ui/utils/displayUtils.test.js.map +0 -1
  944. package/dist/src/ui/utils/formatters.test.d.ts +0 -6
  945. package/dist/src/ui/utils/formatters.test.js +0 -124
  946. package/dist/src/ui/utils/formatters.test.js.map +0 -1
  947. package/dist/src/ui/utils/highlight.test.d.ts +0 -6
  948. package/dist/src/ui/utils/highlight.test.js +0 -198
  949. package/dist/src/ui/utils/highlight.test.js.map +0 -1
  950. package/dist/src/ui/utils/input.test.d.ts +0 -6
  951. package/dist/src/ui/utils/input.test.js +0 -44
  952. package/dist/src/ui/utils/input.test.js.map +0 -1
  953. package/dist/src/ui/utils/markdownUtilities.test.d.ts +0 -6
  954. package/dist/src/ui/utils/markdownUtilities.test.js +0 -42
  955. package/dist/src/ui/utils/markdownUtilities.test.js.map +0 -1
  956. package/dist/src/ui/utils/mouse.test.d.ts +0 -6
  957. package/dist/src/ui/utils/mouse.test.js +0 -136
  958. package/dist/src/ui/utils/mouse.test.js.map +0 -1
  959. package/dist/src/ui/utils/rewindFileOps.test.d.ts +0 -6
  960. package/dist/src/ui/utils/rewindFileOps.test.js +0 -375
  961. package/dist/src/ui/utils/rewindFileOps.test.js.map +0 -1
  962. package/dist/src/ui/utils/terminalCapabilityManager.test.d.ts +0 -6
  963. package/dist/src/ui/utils/terminalCapabilityManager.test.js +0 -220
  964. package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +0 -1
  965. package/dist/src/ui/utils/terminalSetup.test.d.ts +0 -6
  966. package/dist/src/ui/utils/terminalSetup.test.js +0 -147
  967. package/dist/src/ui/utils/terminalSetup.test.js.map +0 -1
  968. package/dist/src/ui/utils/terminalUtils.test.d.ts +0 -6
  969. package/dist/src/ui/utils/terminalUtils.test.js +0 -40
  970. package/dist/src/ui/utils/terminalUtils.test.js.map +0 -1
  971. package/dist/src/ui/utils/textOutput.test.d.ts +0 -6
  972. package/dist/src/ui/utils/textOutput.test.js +0 -79
  973. package/dist/src/ui/utils/textOutput.test.js.map +0 -1
  974. package/dist/src/ui/utils/textUtils.test.d.ts +0 -6
  975. package/dist/src/ui/utils/textUtils.test.js +0 -168
  976. package/dist/src/ui/utils/textUtils.test.js.map +0 -1
  977. package/dist/src/ui/utils/ui-sizing.test.d.ts +0 -6
  978. package/dist/src/ui/utils/ui-sizing.test.js +0 -38
  979. package/dist/src/ui/utils/ui-sizing.test.js.map +0 -1
  980. package/dist/src/ui/utils/updateCheck.test.d.ts +0 -6
  981. package/dist/src/ui/utils/updateCheck.test.js +0 -134
  982. package/dist/src/ui/utils/updateCheck.test.js.map +0 -1
  983. package/dist/src/utils/agentUtils.test.d.ts +0 -6
  984. package/dist/src/utils/agentUtils.test.js +0 -121
  985. package/dist/src/utils/agentUtils.test.js.map +0 -1
  986. package/dist/src/utils/checks.test.d.ts +0 -6
  987. package/dist/src/utils/checks.test.js +0 -29
  988. package/dist/src/utils/checks.test.js.map +0 -1
  989. package/dist/src/utils/cleanup.test.d.ts +0 -6
  990. package/dist/src/utils/cleanup.test.js +0 -92
  991. package/dist/src/utils/cleanup.test.js.map +0 -1
  992. package/dist/src/utils/commands.test.d.ts +0 -6
  993. package/dist/src/utils/commands.test.js +0 -115
  994. package/dist/src/utils/commands.test.js.map +0 -1
  995. package/dist/src/utils/commentJson.test.d.ts +0 -6
  996. package/dist/src/utils/commentJson.test.js +0 -308
  997. package/dist/src/utils/commentJson.test.js.map +0 -1
  998. package/dist/src/utils/deepMerge.test.d.ts +0 -6
  999. package/dist/src/utils/deepMerge.test.js +0 -201
  1000. package/dist/src/utils/deepMerge.test.js.map +0 -1
  1001. package/dist/src/utils/dialogScopeUtils.test.d.ts +0 -6
  1002. package/dist/src/utils/dialogScopeUtils.test.js +0 -81
  1003. package/dist/src/utils/dialogScopeUtils.test.js.map +0 -1
  1004. package/dist/src/utils/envVarResolver.test.d.ts +0 -6
  1005. package/dist/src/utils/envVarResolver.test.js +0 -221
  1006. package/dist/src/utils/envVarResolver.test.js.map +0 -1
  1007. package/dist/src/utils/errors.test.d.ts +0 -6
  1008. package/dist/src/utils/errors.test.js +0 -435
  1009. package/dist/src/utils/errors.test.js.map +0 -1
  1010. package/dist/src/utils/events.test.d.ts +0 -6
  1011. package/dist/src/utils/events.test.js +0 -24
  1012. package/dist/src/utils/events.test.js.map +0 -1
  1013. package/dist/src/utils/gitUtils.test.d.ts +0 -6
  1014. package/dist/src/utils/gitUtils.test.js +0 -113
  1015. package/dist/src/utils/gitUtils.test.js.map +0 -1
  1016. package/dist/src/utils/handleAutoUpdate.test.d.ts +0 -6
  1017. package/dist/src/utils/handleAutoUpdate.test.js +0 -310
  1018. package/dist/src/utils/handleAutoUpdate.test.js.map +0 -1
  1019. package/dist/src/utils/installationInfo.test.d.ts +0 -6
  1020. package/dist/src/utils/installationInfo.test.js +0 -296
  1021. package/dist/src/utils/installationInfo.test.js.map +0 -1
  1022. package/dist/src/utils/jsonoutput.test.d.ts +0 -6
  1023. package/dist/src/utils/jsonoutput.test.js +0 -74
  1024. package/dist/src/utils/jsonoutput.test.js.map +0 -1
  1025. package/dist/src/utils/math.test.d.ts +0 -6
  1026. package/dist/src/utils/math.test.js +0 -23
  1027. package/dist/src/utils/math.test.js.map +0 -1
  1028. package/dist/src/utils/persistentState.test.d.ts +0 -6
  1029. package/dist/src/utils/persistentState.test.js +0 -68
  1030. package/dist/src/utils/persistentState.test.js.map +0 -1
  1031. package/dist/src/utils/processUtils.test.d.ts +0 -6
  1032. package/dist/src/utils/processUtils.test.js +0 -20
  1033. package/dist/src/utils/processUtils.test.js.map +0 -1
  1034. package/dist/src/utils/readStdin.test.d.ts +0 -6
  1035. package/dist/src/utils/readStdin.test.js +0 -117
  1036. package/dist/src/utils/readStdin.test.js.map +0 -1
  1037. package/dist/src/utils/readStdin_safety.test.d.ts +0 -6
  1038. package/dist/src/utils/readStdin_safety.test.js +0 -68
  1039. package/dist/src/utils/readStdin_safety.test.js.map +0 -1
  1040. package/dist/src/utils/relaunch.test.d.ts +0 -6
  1041. package/dist/src/utils/relaunch.test.js +0 -279
  1042. package/dist/src/utils/relaunch.test.js.map +0 -1
  1043. package/dist/src/utils/resolvePath.test.d.ts +0 -6
  1044. package/dist/src/utils/resolvePath.test.js +0 -34
  1045. package/dist/src/utils/resolvePath.test.js.map +0 -1
  1046. package/dist/src/utils/sandbox.test.d.ts +0 -6
  1047. package/dist/src/utils/sandbox.test.js +0 -314
  1048. package/dist/src/utils/sandbox.test.js.map +0 -1
  1049. package/dist/src/utils/sandboxUtils.test.d.ts +0 -6
  1050. package/dist/src/utils/sandboxUtils.test.js +0 -122
  1051. package/dist/src/utils/sandboxUtils.test.js.map +0 -1
  1052. package/dist/src/utils/sessionCleanup.integration.test.d.ts +0 -6
  1053. package/dist/src/utils/sessionCleanup.integration.test.js +0 -182
  1054. package/dist/src/utils/sessionCleanup.integration.test.js.map +0 -1
  1055. package/dist/src/utils/sessionCleanup.test.d.ts +0 -6
  1056. package/dist/src/utils/sessionCleanup.test.js +0 -1298
  1057. package/dist/src/utils/sessionCleanup.test.js.map +0 -1
  1058. package/dist/src/utils/sessionUtils.test.d.ts +0 -6
  1059. package/dist/src/utils/sessionUtils.test.js +0 -503
  1060. package/dist/src/utils/sessionUtils.test.js.map +0 -1
  1061. package/dist/src/utils/sessions.test.d.ts +0 -6
  1062. package/dist/src/utils/sessions.test.js +0 -581
  1063. package/dist/src/utils/sessions.test.js.map +0 -1
  1064. package/dist/src/utils/settingsUtils.test.d.ts +0 -6
  1065. package/dist/src/utils/settingsUtils.test.js +0 -808
  1066. package/dist/src/utils/settingsUtils.test.js.map +0 -1
  1067. package/dist/src/utils/skillUtils.test.d.ts +0 -6
  1068. package/dist/src/utils/skillUtils.test.js +0 -70
  1069. package/dist/src/utils/skillUtils.test.js.map +0 -1
  1070. package/dist/src/utils/startupWarnings.test.d.ts +0 -6
  1071. package/dist/src/utils/startupWarnings.test.js +0 -61
  1072. package/dist/src/utils/startupWarnings.test.js.map +0 -1
  1073. package/dist/src/utils/updateEventEmitter.test.d.ts +0 -6
  1074. package/dist/src/utils/updateEventEmitter.test.js +0 -18
  1075. package/dist/src/utils/updateEventEmitter.test.js.map +0 -1
  1076. package/dist/src/utils/userStartupWarnings.test.d.ts +0 -6
  1077. package/dist/src/utils/userStartupWarnings.test.js +0 -98
  1078. package/dist/src/utils/userStartupWarnings.test.js.map +0 -1
  1079. package/dist/src/utils/windowTitle.test.d.ts +0 -6
  1080. package/dist/src/utils/windowTitle.test.js +0 -216
  1081. package/dist/src/utils/windowTitle.test.js.map +0 -1
  1082. package/dist/src/validateNonInterActiveAuth.test.d.ts +0 -6
  1083. package/dist/src/validateNonInterActiveAuth.test.js +0 -319
  1084. package/dist/src/validateNonInterActiveAuth.test.js.map +0 -1
  1085. package/dist/src/zed-integration/fileSystemService.test.d.ts +0 -6
  1086. package/dist/src/zed-integration/fileSystemService.test.js +0 -88
  1087. package/dist/src/zed-integration/fileSystemService.test.js.map +0 -1
  1088. package/dist/src/zed-integration/zedIntegration.test.d.ts +0 -6
  1089. package/dist/src/zed-integration/zedIntegration.test.js +0 -625
  1090. package/dist/src/zed-integration/zedIntegration.test.js.map +0 -1
  1091. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,1298 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
- import * as fs from 'node:fs/promises';
8
- import * as path from 'node:path';
9
- import { SESSION_FILE_PREFIX, debugLogger, } from '@didim365/agent-cli-core';
10
- import { cleanupExpiredSessions } from './sessionCleanup.js';
11
- import { getAllSessionFiles } from './sessionUtils.js';
12
- // Mock the fs module
13
- vi.mock('fs/promises');
14
- vi.mock('./sessionUtils.js', () => ({
15
- getAllSessionFiles: vi.fn(),
16
- }));
17
- const mockFs = vi.mocked(fs);
18
- const mockGetAllSessionFiles = vi.mocked(getAllSessionFiles);
19
- // Create mock config
20
- function createMockConfig(overrides = {}) {
21
- return {
22
- storage: {
23
- getProjectTempDir: vi.fn().mockReturnValue('/tmp/test-project'),
24
- },
25
- getSessionId: vi.fn().mockReturnValue('current123'),
26
- getDebugMode: vi.fn().mockReturnValue(false),
27
- initialize: vi.fn().mockResolvedValue(undefined),
28
- ...overrides,
29
- };
30
- }
31
- // Create test session data
32
- function createTestSessions() {
33
- const now = new Date();
34
- const oneWeekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
35
- const twoWeeksAgo = new Date(now.getTime() - 14 * 24 * 60 * 60 * 1000);
36
- const oneMonthAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
37
- return [
38
- {
39
- id: 'current123',
40
- file: `${SESSION_FILE_PREFIX}2025-01-20T10-30-00-current12`,
41
- fileName: `${SESSION_FILE_PREFIX}2025-01-20T10-30-00-current12.json`,
42
- startTime: now.toISOString(),
43
- lastUpdated: now.toISOString(),
44
- messageCount: 5,
45
- displayName: 'Current session',
46
- firstUserMessage: 'Current session',
47
- isCurrentSession: true,
48
- index: 1,
49
- },
50
- {
51
- id: 'recent456',
52
- file: `${SESSION_FILE_PREFIX}2025-01-18T15-45-00-recent45`,
53
- fileName: `${SESSION_FILE_PREFIX}2025-01-18T15-45-00-recent45.json`,
54
- startTime: oneWeekAgo.toISOString(),
55
- lastUpdated: oneWeekAgo.toISOString(),
56
- messageCount: 10,
57
- displayName: 'Recent session',
58
- firstUserMessage: 'Recent session',
59
- isCurrentSession: false,
60
- index: 2,
61
- },
62
- {
63
- id: 'old789abc',
64
- file: `${SESSION_FILE_PREFIX}2025-01-10T09-15-00-old789ab`,
65
- fileName: `${SESSION_FILE_PREFIX}2025-01-10T09-15-00-old789ab.json`,
66
- startTime: twoWeeksAgo.toISOString(),
67
- lastUpdated: twoWeeksAgo.toISOString(),
68
- messageCount: 3,
69
- displayName: 'Old session',
70
- firstUserMessage: 'Old session',
71
- isCurrentSession: false,
72
- index: 3,
73
- },
74
- {
75
- id: 'ancient12',
76
- file: `${SESSION_FILE_PREFIX}2024-12-25T12-00-00-ancient1`,
77
- fileName: `${SESSION_FILE_PREFIX}2024-12-25T12-00-00-ancient1.json`,
78
- startTime: oneMonthAgo.toISOString(),
79
- lastUpdated: oneMonthAgo.toISOString(),
80
- messageCount: 15,
81
- displayName: 'Ancient session',
82
- firstUserMessage: 'Ancient session',
83
- isCurrentSession: false,
84
- index: 4,
85
- },
86
- ];
87
- }
88
- describe('Session Cleanup', () => {
89
- beforeEach(() => {
90
- vi.clearAllMocks();
91
- vi.spyOn(debugLogger, 'error').mockImplementation(() => { });
92
- vi.spyOn(debugLogger, 'warn').mockImplementation(() => { });
93
- // By default, return all test sessions as valid
94
- const sessions = createTestSessions();
95
- mockGetAllSessionFiles.mockResolvedValue(sessions.map((session) => ({
96
- fileName: session.fileName,
97
- sessionInfo: session,
98
- })));
99
- });
100
- afterEach(() => {
101
- vi.restoreAllMocks();
102
- });
103
- describe('cleanupExpiredSessions', () => {
104
- it('should return early when cleanup is disabled', async () => {
105
- const config = createMockConfig();
106
- const settings = {
107
- general: { sessionRetention: { enabled: false } },
108
- };
109
- const result = await cleanupExpiredSessions(config, settings);
110
- expect(result.disabled).toBe(true);
111
- expect(result.scanned).toBe(0);
112
- expect(result.deleted).toBe(0);
113
- expect(result.skipped).toBe(0);
114
- expect(result.failed).toBe(0);
115
- });
116
- it('should return early when sessionRetention is not configured', async () => {
117
- const config = createMockConfig();
118
- const settings = {};
119
- const result = await cleanupExpiredSessions(config, settings);
120
- expect(result.disabled).toBe(true);
121
- expect(result.scanned).toBe(0);
122
- expect(result.deleted).toBe(0);
123
- });
124
- it('should handle invalid maxAge configuration', async () => {
125
- const config = createMockConfig({
126
- getDebugMode: vi.fn().mockReturnValue(true),
127
- });
128
- const settings = {
129
- general: {
130
- sessionRetention: {
131
- enabled: true,
132
- maxAge: 'invalid-format',
133
- },
134
- },
135
- };
136
- const result = await cleanupExpiredSessions(config, settings);
137
- expect(result.disabled).toBe(true);
138
- expect(result.scanned).toBe(0);
139
- expect(result.deleted).toBe(0);
140
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('Session cleanup disabled: Error: Invalid retention period format'));
141
- });
142
- it('should delete sessions older than maxAge', async () => {
143
- const config = createMockConfig();
144
- const settings = {
145
- general: {
146
- sessionRetention: {
147
- enabled: true,
148
- maxAge: '10d', // 10 days
149
- },
150
- },
151
- };
152
- // Mock successful file operations
153
- mockFs.access.mockResolvedValue(undefined);
154
- mockFs.readFile.mockResolvedValue(JSON.stringify({
155
- sessionId: 'test',
156
- messages: [],
157
- startTime: '2025-01-01T00:00:00Z',
158
- lastUpdated: '2025-01-01T00:00:00Z',
159
- }));
160
- mockFs.unlink.mockResolvedValue(undefined);
161
- const result = await cleanupExpiredSessions(config, settings);
162
- expect(result.disabled).toBe(false);
163
- expect(result.scanned).toBe(4);
164
- expect(result.deleted).toBe(2); // Should delete the 2-week-old and 1-month-old sessions
165
- expect(result.skipped).toBe(2); // Current session + recent session should be skipped
166
- expect(result.failed).toBe(0);
167
- });
168
- it('should never delete current session', async () => {
169
- const config = createMockConfig();
170
- const settings = {
171
- general: {
172
- sessionRetention: {
173
- enabled: true,
174
- maxAge: '1d', // Very short retention
175
- },
176
- },
177
- };
178
- // Mock successful file operations
179
- mockFs.access.mockResolvedValue(undefined);
180
- mockFs.readFile.mockResolvedValue(JSON.stringify({
181
- sessionId: 'test',
182
- messages: [],
183
- startTime: '2025-01-01T00:00:00Z',
184
- lastUpdated: '2025-01-01T00:00:00Z',
185
- }));
186
- mockFs.unlink.mockResolvedValue(undefined);
187
- const result = await cleanupExpiredSessions(config, settings);
188
- // Should delete all sessions except the current one
189
- expect(result.disabled).toBe(false);
190
- expect(result.deleted).toBe(3);
191
- // Verify that unlink was never called with the current session file
192
- const unlinkCalls = mockFs.unlink.mock.calls;
193
- const currentSessionPath = path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}2025-01-20T10-30-00-current12.json`);
194
- expect(unlinkCalls.find((call) => call[0] === currentSessionPath)).toBeUndefined();
195
- });
196
- it('should handle count-based retention', async () => {
197
- const config = createMockConfig();
198
- const settings = {
199
- general: {
200
- sessionRetention: {
201
- enabled: true,
202
- maxCount: 2, // Keep only 2 most recent sessions
203
- },
204
- },
205
- };
206
- // Mock successful file operations
207
- mockFs.access.mockResolvedValue(undefined);
208
- mockFs.readFile.mockResolvedValue(JSON.stringify({
209
- sessionId: 'test',
210
- messages: [],
211
- startTime: '2025-01-01T00:00:00Z',
212
- lastUpdated: '2025-01-01T00:00:00Z',
213
- }));
214
- mockFs.unlink.mockResolvedValue(undefined);
215
- const result = await cleanupExpiredSessions(config, settings);
216
- expect(result.disabled).toBe(false);
217
- expect(result.scanned).toBe(4);
218
- expect(result.deleted).toBe(2); // Should delete 2 oldest sessions (after skipping the current one)
219
- expect(result.skipped).toBe(2); // Current session + 1 recent session should be kept
220
- });
221
- it('should handle file system errors gracefully', async () => {
222
- const config = createMockConfig();
223
- const settings = {
224
- general: {
225
- sessionRetention: {
226
- enabled: true,
227
- maxAge: '1d',
228
- },
229
- },
230
- };
231
- // Mock file operations to succeed for access and readFile but fail for unlink
232
- mockFs.access.mockResolvedValue(undefined);
233
- mockFs.readFile.mockResolvedValue(JSON.stringify({
234
- sessionId: 'test',
235
- messages: [],
236
- startTime: '2025-01-01T00:00:00Z',
237
- lastUpdated: '2025-01-01T00:00:00Z',
238
- }));
239
- mockFs.unlink.mockRejectedValue(new Error('Permission denied'));
240
- const result = await cleanupExpiredSessions(config, settings);
241
- expect(result.disabled).toBe(false);
242
- expect(result.scanned).toBe(4);
243
- expect(result.deleted).toBe(0);
244
- expect(result.failed).toBeGreaterThan(0);
245
- });
246
- it('should handle empty sessions directory', async () => {
247
- const config = createMockConfig();
248
- const settings = {
249
- general: {
250
- sessionRetention: {
251
- enabled: true,
252
- maxAge: '30d',
253
- },
254
- },
255
- };
256
- mockGetAllSessionFiles.mockResolvedValue([]);
257
- const result = await cleanupExpiredSessions(config, settings);
258
- expect(result.disabled).toBe(false);
259
- expect(result.scanned).toBe(0);
260
- expect(result.deleted).toBe(0);
261
- expect(result.skipped).toBe(0);
262
- expect(result.failed).toBe(0);
263
- });
264
- it('should handle global errors gracefully', async () => {
265
- const config = createMockConfig();
266
- const settings = {
267
- general: {
268
- sessionRetention: {
269
- enabled: true,
270
- maxAge: '30d',
271
- },
272
- },
273
- };
274
- // Mock getSessionFiles to throw an error
275
- mockGetAllSessionFiles.mockRejectedValue(new Error('Directory access failed'));
276
- const result = await cleanupExpiredSessions(config, settings);
277
- expect(result.disabled).toBe(false);
278
- expect(result.failed).toBe(1);
279
- expect(debugLogger.warn).toHaveBeenCalledWith('Session cleanup failed: Directory access failed');
280
- });
281
- it('should respect minRetention configuration', async () => {
282
- const config = createMockConfig();
283
- const settings = {
284
- general: {
285
- sessionRetention: {
286
- enabled: true,
287
- maxAge: '12h', // Less than 1 day minimum
288
- minRetention: '1d',
289
- },
290
- },
291
- };
292
- const result = await cleanupExpiredSessions(config, settings);
293
- // Should disable cleanup due to minRetention violation
294
- expect(result.disabled).toBe(true);
295
- expect(result.scanned).toBe(0);
296
- expect(result.deleted).toBe(0);
297
- });
298
- it('should log debug information when enabled', async () => {
299
- const config = createMockConfig({
300
- getDebugMode: vi.fn().mockReturnValue(true),
301
- });
302
- const settings = {
303
- general: {
304
- sessionRetention: {
305
- enabled: true,
306
- maxAge: '10d',
307
- },
308
- },
309
- };
310
- // Mock successful file operations
311
- mockFs.access.mockResolvedValue(undefined);
312
- mockFs.readFile.mockResolvedValue(JSON.stringify({
313
- sessionId: 'test',
314
- messages: [],
315
- startTime: '2025-01-01T00:00:00Z',
316
- lastUpdated: '2025-01-01T00:00:00Z',
317
- }));
318
- mockFs.unlink.mockResolvedValue(undefined);
319
- const debugSpy = vi
320
- .spyOn(debugLogger, 'debug')
321
- .mockImplementation(() => { });
322
- await cleanupExpiredSessions(config, settings);
323
- expect(debugSpy).toHaveBeenCalledWith(expect.stringContaining('Session cleanup: deleted'));
324
- expect(debugSpy).toHaveBeenCalledWith(expect.stringContaining('Deleted expired session:'));
325
- debugSpy.mockRestore();
326
- });
327
- });
328
- describe('Specific cleanup scenarios', () => {
329
- it('should delete sessions that exceed the cutoff date', async () => {
330
- const config = createMockConfig();
331
- const settings = {
332
- general: {
333
- sessionRetention: {
334
- enabled: true,
335
- maxAge: '7d', // Keep sessions for 7 days
336
- },
337
- },
338
- };
339
- // Create sessions with specific dates
340
- const now = new Date();
341
- const fiveDaysAgo = new Date(now.getTime() - 5 * 24 * 60 * 60 * 1000);
342
- const eightDaysAgo = new Date(now.getTime() - 8 * 24 * 60 * 60 * 1000);
343
- const fifteenDaysAgo = new Date(now.getTime() - 15 * 24 * 60 * 60 * 1000);
344
- const testSessions = [
345
- {
346
- id: 'current',
347
- file: `${SESSION_FILE_PREFIX}current`,
348
- fileName: `${SESSION_FILE_PREFIX}current.json`,
349
- startTime: now.toISOString(),
350
- lastUpdated: now.toISOString(),
351
- messageCount: 1,
352
- displayName: 'Current',
353
- firstUserMessage: 'Current',
354
- isCurrentSession: true,
355
- index: 1,
356
- },
357
- {
358
- id: 'session5d',
359
- file: `${SESSION_FILE_PREFIX}5d`,
360
- fileName: `${SESSION_FILE_PREFIX}5d.json`,
361
- startTime: fiveDaysAgo.toISOString(),
362
- lastUpdated: fiveDaysAgo.toISOString(),
363
- messageCount: 1,
364
- displayName: '5 days old',
365
- firstUserMessage: '5 days',
366
- isCurrentSession: false,
367
- index: 2,
368
- },
369
- {
370
- id: 'session8d',
371
- file: `${SESSION_FILE_PREFIX}8d`,
372
- fileName: `${SESSION_FILE_PREFIX}8d.json`,
373
- startTime: eightDaysAgo.toISOString(),
374
- lastUpdated: eightDaysAgo.toISOString(),
375
- messageCount: 1,
376
- displayName: '8 days old',
377
- firstUserMessage: '8 days',
378
- isCurrentSession: false,
379
- index: 3,
380
- },
381
- {
382
- id: 'session15d',
383
- file: `${SESSION_FILE_PREFIX}15d`,
384
- fileName: `${SESSION_FILE_PREFIX}15d.json`,
385
- startTime: fifteenDaysAgo.toISOString(),
386
- lastUpdated: fifteenDaysAgo.toISOString(),
387
- messageCount: 1,
388
- displayName: '15 days old',
389
- firstUserMessage: '15 days',
390
- isCurrentSession: false,
391
- index: 4,
392
- },
393
- ];
394
- mockGetAllSessionFiles.mockResolvedValue(testSessions.map((session) => ({
395
- fileName: session.fileName,
396
- sessionInfo: session,
397
- })));
398
- // Mock successful file operations
399
- mockFs.access.mockResolvedValue(undefined);
400
- mockFs.readFile.mockResolvedValue(JSON.stringify({
401
- sessionId: 'test',
402
- messages: [],
403
- startTime: '2025-01-01T00:00:00Z',
404
- lastUpdated: '2025-01-01T00:00:00Z',
405
- }));
406
- mockFs.unlink.mockResolvedValue(undefined);
407
- const result = await cleanupExpiredSessions(config, settings);
408
- // Should delete sessions older than 7 days (8d and 15d sessions)
409
- expect(result.disabled).toBe(false);
410
- expect(result.scanned).toBe(4);
411
- expect(result.deleted).toBe(2);
412
- expect(result.skipped).toBe(2); // Current + 5d session
413
- // Verify which files were deleted
414
- const unlinkCalls = mockFs.unlink.mock.calls.map((call) => call[0]);
415
- expect(unlinkCalls).toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}8d.json`));
416
- expect(unlinkCalls).toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}15d.json`));
417
- expect(unlinkCalls).not.toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}5d.json`));
418
- });
419
- it('should NOT delete sessions within the cutoff date', async () => {
420
- const config = createMockConfig();
421
- const settings = {
422
- general: {
423
- sessionRetention: {
424
- enabled: true,
425
- maxAge: '14d', // Keep sessions for 14 days
426
- },
427
- },
428
- };
429
- // Create sessions all within the retention period
430
- const now = new Date();
431
- const oneDayAgo = new Date(now.getTime() - 1 * 24 * 60 * 60 * 1000);
432
- const sevenDaysAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
433
- const thirteenDaysAgo = new Date(now.getTime() - 13 * 24 * 60 * 60 * 1000);
434
- const testSessions = [
435
- {
436
- id: 'current',
437
- file: `${SESSION_FILE_PREFIX}current`,
438
- fileName: `${SESSION_FILE_PREFIX}current.json`,
439
- startTime: now.toISOString(),
440
- lastUpdated: now.toISOString(),
441
- messageCount: 1,
442
- displayName: 'Current',
443
- firstUserMessage: 'Current',
444
- isCurrentSession: true,
445
- index: 1,
446
- },
447
- {
448
- id: 'session1d',
449
- file: `${SESSION_FILE_PREFIX}1d`,
450
- fileName: `${SESSION_FILE_PREFIX}1d.json`,
451
- startTime: oneDayAgo.toISOString(),
452
- lastUpdated: oneDayAgo.toISOString(),
453
- messageCount: 1,
454
- displayName: '1 day old',
455
- firstUserMessage: '1 day',
456
- isCurrentSession: false,
457
- index: 2,
458
- },
459
- {
460
- id: 'session7d',
461
- file: `${SESSION_FILE_PREFIX}7d`,
462
- fileName: `${SESSION_FILE_PREFIX}7d.json`,
463
- startTime: sevenDaysAgo.toISOString(),
464
- lastUpdated: sevenDaysAgo.toISOString(),
465
- messageCount: 1,
466
- displayName: '7 days old',
467
- firstUserMessage: '7 days',
468
- isCurrentSession: false,
469
- index: 3,
470
- },
471
- {
472
- id: 'session13d',
473
- file: `${SESSION_FILE_PREFIX}13d`,
474
- fileName: `${SESSION_FILE_PREFIX}13d.json`,
475
- startTime: thirteenDaysAgo.toISOString(),
476
- lastUpdated: thirteenDaysAgo.toISOString(),
477
- messageCount: 1,
478
- displayName: '13 days old',
479
- firstUserMessage: '13 days',
480
- isCurrentSession: false,
481
- index: 4,
482
- },
483
- ];
484
- mockGetAllSessionFiles.mockResolvedValue(testSessions.map((session) => ({
485
- fileName: session.fileName,
486
- sessionInfo: session,
487
- })));
488
- // Mock successful file operations
489
- mockFs.access.mockResolvedValue(undefined);
490
- mockFs.readFile.mockResolvedValue(JSON.stringify({
491
- sessionId: 'test',
492
- messages: [],
493
- startTime: '2025-01-01T00:00:00Z',
494
- lastUpdated: '2025-01-01T00:00:00Z',
495
- }));
496
- mockFs.unlink.mockResolvedValue(undefined);
497
- const result = await cleanupExpiredSessions(config, settings);
498
- // Should NOT delete any sessions as all are within 14 days
499
- expect(result.disabled).toBe(false);
500
- expect(result.scanned).toBe(4);
501
- expect(result.deleted).toBe(0);
502
- expect(result.skipped).toBe(4);
503
- expect(result.failed).toBe(0);
504
- // Verify no files were deleted
505
- expect(mockFs.unlink).not.toHaveBeenCalled();
506
- });
507
- it('should keep N most recent deletable sessions', async () => {
508
- const config = createMockConfig();
509
- const settings = {
510
- general: {
511
- sessionRetention: {
512
- enabled: true,
513
- maxCount: 3, // Keep only 3 most recent sessions
514
- },
515
- },
516
- };
517
- // Create 6 sessions with different timestamps
518
- const now = new Date();
519
- const sessions = [
520
- {
521
- id: 'current',
522
- file: `${SESSION_FILE_PREFIX}current`,
523
- fileName: `${SESSION_FILE_PREFIX}current.json`,
524
- startTime: now.toISOString(),
525
- lastUpdated: now.toISOString(),
526
- messageCount: 1,
527
- displayName: 'Current (newest)',
528
- firstUserMessage: 'Current',
529
- isCurrentSession: true,
530
- index: 1,
531
- },
532
- ];
533
- // Add 5 more sessions with decreasing timestamps
534
- for (let i = 1; i <= 5; i++) {
535
- const daysAgo = new Date(now.getTime() - i * 24 * 60 * 60 * 1000);
536
- sessions.push({
537
- id: `session${i}`,
538
- file: `${SESSION_FILE_PREFIX}${i}d`,
539
- fileName: `${SESSION_FILE_PREFIX}${i}d.json`,
540
- startTime: daysAgo.toISOString(),
541
- lastUpdated: daysAgo.toISOString(),
542
- messageCount: 1,
543
- displayName: `${i} days old`,
544
- firstUserMessage: `${i} days`,
545
- isCurrentSession: false,
546
- index: i + 1,
547
- });
548
- }
549
- mockGetAllSessionFiles.mockResolvedValue(sessions.map((session) => ({
550
- fileName: session.fileName,
551
- sessionInfo: session,
552
- })));
553
- // Mock successful file operations
554
- mockFs.access.mockResolvedValue(undefined);
555
- mockFs.readFile.mockResolvedValue(JSON.stringify({
556
- sessionId: 'test',
557
- messages: [],
558
- startTime: '2025-01-01T00:00:00Z',
559
- lastUpdated: '2025-01-01T00:00:00Z',
560
- }));
561
- mockFs.unlink.mockResolvedValue(undefined);
562
- const result = await cleanupExpiredSessions(config, settings);
563
- // Should keep current + 2 most recent (1d and 2d), delete 3d, 4d, 5d
564
- expect(result.disabled).toBe(false);
565
- expect(result.scanned).toBe(6);
566
- expect(result.deleted).toBe(3);
567
- expect(result.skipped).toBe(3);
568
- // Verify which files were deleted (should be the 3 oldest)
569
- const unlinkCalls = mockFs.unlink.mock.calls.map((call) => call[0]);
570
- expect(unlinkCalls).toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}3d.json`));
571
- expect(unlinkCalls).toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}4d.json`));
572
- expect(unlinkCalls).toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}5d.json`));
573
- // Verify which files were NOT deleted
574
- expect(unlinkCalls).not.toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}current.json`));
575
- expect(unlinkCalls).not.toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}1d.json`));
576
- expect(unlinkCalls).not.toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}2d.json`));
577
- });
578
- it('should handle combined maxAge and maxCount retention (most restrictive wins)', async () => {
579
- const config = createMockConfig();
580
- const settings = {
581
- general: {
582
- sessionRetention: {
583
- enabled: true,
584
- maxAge: '10d', // Keep sessions for 10 days
585
- maxCount: 2, // But also keep only 2 most recent
586
- },
587
- },
588
- };
589
- // Create sessions where maxCount is more restrictive
590
- const now = new Date();
591
- const threeDaysAgo = new Date(now.getTime() - 3 * 24 * 60 * 60 * 1000);
592
- const fiveDaysAgo = new Date(now.getTime() - 5 * 24 * 60 * 60 * 1000);
593
- const sevenDaysAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
594
- const twelveDaysAgo = new Date(now.getTime() - 12 * 24 * 60 * 60 * 1000);
595
- const testSessions = [
596
- {
597
- id: 'current',
598
- file: `${SESSION_FILE_PREFIX}current`,
599
- fileName: `${SESSION_FILE_PREFIX}current.json`,
600
- startTime: now.toISOString(),
601
- lastUpdated: now.toISOString(),
602
- messageCount: 1,
603
- displayName: 'Current',
604
- firstUserMessage: 'Current',
605
- isCurrentSession: true,
606
- index: 1,
607
- },
608
- {
609
- id: 'session3d',
610
- file: `${SESSION_FILE_PREFIX}3d`,
611
- fileName: `${SESSION_FILE_PREFIX}3d.json`,
612
- startTime: threeDaysAgo.toISOString(),
613
- lastUpdated: threeDaysAgo.toISOString(),
614
- messageCount: 1,
615
- displayName: '3 days old',
616
- firstUserMessage: '3 days',
617
- isCurrentSession: false,
618
- index: 2,
619
- },
620
- {
621
- id: 'session5d',
622
- file: `${SESSION_FILE_PREFIX}5d`,
623
- fileName: `${SESSION_FILE_PREFIX}5d.json`,
624
- startTime: fiveDaysAgo.toISOString(),
625
- lastUpdated: fiveDaysAgo.toISOString(),
626
- messageCount: 1,
627
- displayName: '5 days old',
628
- firstUserMessage: '5 days',
629
- isCurrentSession: false,
630
- index: 3,
631
- },
632
- {
633
- id: 'session7d',
634
- file: `${SESSION_FILE_PREFIX}7d`,
635
- fileName: `${SESSION_FILE_PREFIX}7d.json`,
636
- startTime: sevenDaysAgo.toISOString(),
637
- lastUpdated: sevenDaysAgo.toISOString(),
638
- messageCount: 1,
639
- displayName: '7 days old',
640
- firstUserMessage: '7 days',
641
- isCurrentSession: false,
642
- index: 4,
643
- },
644
- {
645
- id: 'session12d',
646
- file: `${SESSION_FILE_PREFIX}12d`,
647
- fileName: `${SESSION_FILE_PREFIX}12d.json`,
648
- startTime: twelveDaysAgo.toISOString(),
649
- lastUpdated: twelveDaysAgo.toISOString(),
650
- messageCount: 1,
651
- displayName: '12 days old',
652
- firstUserMessage: '12 days',
653
- isCurrentSession: false,
654
- index: 5,
655
- },
656
- ];
657
- mockGetAllSessionFiles.mockResolvedValue(testSessions.map((session) => ({
658
- fileName: session.fileName,
659
- sessionInfo: session,
660
- })));
661
- // Mock successful file operations
662
- mockFs.access.mockResolvedValue(undefined);
663
- mockFs.readFile.mockResolvedValue(JSON.stringify({
664
- sessionId: 'test',
665
- messages: [],
666
- startTime: '2025-01-01T00:00:00Z',
667
- lastUpdated: '2025-01-01T00:00:00Z',
668
- }));
669
- mockFs.unlink.mockResolvedValue(undefined);
670
- const result = await cleanupExpiredSessions(config, settings);
671
- // Should delete:
672
- // - session12d (exceeds maxAge of 10d)
673
- // - session7d and session5d (exceed maxCount of 2, keeping current + 3d)
674
- expect(result.disabled).toBe(false);
675
- expect(result.scanned).toBe(5);
676
- expect(result.deleted).toBe(3);
677
- expect(result.skipped).toBe(2); // Current + 3d session
678
- // Verify which files were deleted
679
- const unlinkCalls = mockFs.unlink.mock.calls.map((call) => call[0]);
680
- expect(unlinkCalls).toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}5d.json`));
681
- expect(unlinkCalls).toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}7d.json`));
682
- expect(unlinkCalls).toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}12d.json`));
683
- // Verify which files were NOT deleted
684
- expect(unlinkCalls).not.toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}current.json`));
685
- expect(unlinkCalls).not.toContain(path.join('/tmp/test-project', 'chats', `${SESSION_FILE_PREFIX}3d.json`));
686
- });
687
- });
688
- describe('parseRetentionPeriod format validation', () => {
689
- // Test all supported formats
690
- it.each([
691
- ['1h', 60 * 60 * 1000],
692
- ['24h', 24 * 60 * 60 * 1000],
693
- ['168h', 168 * 60 * 60 * 1000],
694
- ['1d', 24 * 60 * 60 * 1000],
695
- ['7d', 7 * 24 * 60 * 60 * 1000],
696
- ['30d', 30 * 24 * 60 * 60 * 1000],
697
- ['365d', 365 * 24 * 60 * 60 * 1000],
698
- ['1w', 7 * 24 * 60 * 60 * 1000],
699
- ['2w', 14 * 24 * 60 * 60 * 1000],
700
- ['4w', 28 * 24 * 60 * 60 * 1000],
701
- ['52w', 364 * 24 * 60 * 60 * 1000],
702
- ['1m', 30 * 24 * 60 * 60 * 1000],
703
- ['3m', 90 * 24 * 60 * 60 * 1000],
704
- ['6m', 180 * 24 * 60 * 60 * 1000],
705
- ['12m', 360 * 24 * 60 * 60 * 1000],
706
- ])('should correctly parse valid format %s', async (input) => {
707
- const config = createMockConfig();
708
- const settings = {
709
- general: {
710
- sessionRetention: {
711
- enabled: true,
712
- maxAge: input,
713
- // Set minRetention to 1h to allow testing of hour-based maxAge values
714
- minRetention: '1h',
715
- },
716
- },
717
- };
718
- mockGetAllSessionFiles.mockResolvedValue([]);
719
- // If it parses correctly, cleanup should proceed without error
720
- const result = await cleanupExpiredSessions(config, settings);
721
- expect(result.disabled).toBe(false);
722
- expect(result.failed).toBe(0);
723
- });
724
- // Test invalid formats
725
- it.each([
726
- '30', // Missing unit
727
- '30x', // Invalid unit
728
- 'd', // No number
729
- '1.5d', // Decimal not supported
730
- '-5d', // Negative number
731
- '1 d', // Space in format
732
- '1dd', // Double unit
733
- 'abc', // Non-numeric
734
- '30s', // Unsupported unit (seconds)
735
- '30y', // Unsupported unit (years)
736
- '0d', // Zero value (technically valid regex but semantically invalid)
737
- ])('should reject invalid format %s', async (input) => {
738
- const config = createMockConfig({
739
- getDebugMode: vi.fn().mockReturnValue(true),
740
- });
741
- const settings = {
742
- general: {
743
- sessionRetention: {
744
- enabled: true,
745
- maxAge: input,
746
- },
747
- },
748
- };
749
- const result = await cleanupExpiredSessions(config, settings);
750
- expect(result.disabled).toBe(true);
751
- expect(result.scanned).toBe(0);
752
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining(input === '0d'
753
- ? 'Invalid retention period: 0d. Value must be greater than 0'
754
- : `Invalid retention period format: ${input}`));
755
- });
756
- // Test special case - empty string
757
- it('should reject empty string', async () => {
758
- const config = createMockConfig({
759
- getDebugMode: vi.fn().mockReturnValue(true),
760
- });
761
- const settings = {
762
- general: {
763
- sessionRetention: {
764
- enabled: true,
765
- maxAge: '',
766
- },
767
- },
768
- };
769
- const result = await cleanupExpiredSessions(config, settings);
770
- expect(result.disabled).toBe(true);
771
- expect(result.scanned).toBe(0);
772
- // Empty string means no valid retention method specified
773
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('Either maxAge or maxCount must be specified'));
774
- });
775
- // Test edge cases
776
- it('should handle very large numbers', async () => {
777
- const config = createMockConfig();
778
- const settings = {
779
- general: {
780
- sessionRetention: {
781
- enabled: true,
782
- maxAge: '9999d', // Very large number
783
- },
784
- },
785
- };
786
- mockGetAllSessionFiles.mockResolvedValue([]);
787
- const result = await cleanupExpiredSessions(config, settings);
788
- expect(result.disabled).toBe(false);
789
- expect(result.failed).toBe(0);
790
- });
791
- it('should validate minRetention format', async () => {
792
- const config = createMockConfig({
793
- getDebugMode: vi.fn().mockReturnValue(true),
794
- });
795
- const settings = {
796
- general: {
797
- sessionRetention: {
798
- enabled: true,
799
- maxAge: '5d',
800
- minRetention: 'invalid-format', // Invalid minRetention
801
- },
802
- },
803
- };
804
- mockGetAllSessionFiles.mockResolvedValue([]);
805
- // Should fall back to default minRetention and proceed
806
- const result = await cleanupExpiredSessions(config, settings);
807
- // Since maxAge (5d) > default minRetention (1d), this should succeed
808
- expect(result.disabled).toBe(false);
809
- expect(result.failed).toBe(0);
810
- });
811
- });
812
- describe('Configuration validation', () => {
813
- it('should require either maxAge or maxCount', async () => {
814
- const config = createMockConfig({
815
- getDebugMode: vi.fn().mockReturnValue(true),
816
- });
817
- const settings = {
818
- general: {
819
- sessionRetention: {
820
- enabled: true,
821
- // Neither maxAge nor maxCount specified
822
- },
823
- },
824
- };
825
- const result = await cleanupExpiredSessions(config, settings);
826
- expect(result.disabled).toBe(true);
827
- expect(result.scanned).toBe(0);
828
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('Either maxAge or maxCount must be specified'));
829
- });
830
- it('should validate maxCount range', async () => {
831
- const config = createMockConfig({
832
- getDebugMode: vi.fn().mockReturnValue(true),
833
- });
834
- const settings = {
835
- general: {
836
- sessionRetention: {
837
- enabled: true,
838
- maxCount: 0, // Invalid count
839
- },
840
- },
841
- };
842
- const result = await cleanupExpiredSessions(config, settings);
843
- expect(result.disabled).toBe(true);
844
- expect(result.scanned).toBe(0);
845
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('maxCount must be at least 1'));
846
- });
847
- describe('maxAge format validation', () => {
848
- it('should reject invalid maxAge format - no unit', async () => {
849
- const config = createMockConfig({
850
- getDebugMode: vi.fn().mockReturnValue(true),
851
- });
852
- const settings = {
853
- general: {
854
- sessionRetention: {
855
- enabled: true,
856
- maxAge: '30', // Missing unit
857
- },
858
- },
859
- };
860
- const result = await cleanupExpiredSessions(config, settings);
861
- expect(result.disabled).toBe(true);
862
- expect(result.scanned).toBe(0);
863
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('Invalid retention period format: 30'));
864
- });
865
- it('should reject invalid maxAge format - invalid unit', async () => {
866
- const config = createMockConfig({
867
- getDebugMode: vi.fn().mockReturnValue(true),
868
- });
869
- const settings = {
870
- general: {
871
- sessionRetention: {
872
- enabled: true,
873
- maxAge: '30x', // Invalid unit 'x'
874
- },
875
- },
876
- };
877
- const result = await cleanupExpiredSessions(config, settings);
878
- expect(result.disabled).toBe(true);
879
- expect(result.scanned).toBe(0);
880
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('Invalid retention period format: 30x'));
881
- });
882
- it('should reject invalid maxAge format - no number', async () => {
883
- const config = createMockConfig({
884
- getDebugMode: vi.fn().mockReturnValue(true),
885
- });
886
- const settings = {
887
- general: {
888
- sessionRetention: {
889
- enabled: true,
890
- maxAge: 'd', // No number
891
- },
892
- },
893
- };
894
- const result = await cleanupExpiredSessions(config, settings);
895
- expect(result.disabled).toBe(true);
896
- expect(result.scanned).toBe(0);
897
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('Invalid retention period format: d'));
898
- });
899
- it('should reject invalid maxAge format - decimal number', async () => {
900
- const config = createMockConfig({
901
- getDebugMode: vi.fn().mockReturnValue(true),
902
- });
903
- const settings = {
904
- general: {
905
- sessionRetention: {
906
- enabled: true,
907
- maxAge: '1.5d', // Decimal not supported
908
- },
909
- },
910
- };
911
- const result = await cleanupExpiredSessions(config, settings);
912
- expect(result.disabled).toBe(true);
913
- expect(result.scanned).toBe(0);
914
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('Invalid retention period format: 1.5d'));
915
- });
916
- it('should reject invalid maxAge format - negative number', async () => {
917
- const config = createMockConfig({
918
- getDebugMode: vi.fn().mockReturnValue(true),
919
- });
920
- const settings = {
921
- general: {
922
- sessionRetention: {
923
- enabled: true,
924
- maxAge: '-5d', // Negative not allowed
925
- },
926
- },
927
- };
928
- const result = await cleanupExpiredSessions(config, settings);
929
- expect(result.disabled).toBe(true);
930
- expect(result.scanned).toBe(0);
931
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('Invalid retention period format: -5d'));
932
- });
933
- it('should accept valid maxAge format - hours', async () => {
934
- const config = createMockConfig();
935
- const settings = {
936
- general: {
937
- sessionRetention: {
938
- enabled: true,
939
- maxAge: '48h', // Valid: 48 hours
940
- maxCount: 10, // Need at least one valid retention method
941
- },
942
- },
943
- };
944
- mockGetAllSessionFiles.mockResolvedValue([]);
945
- const result = await cleanupExpiredSessions(config, settings);
946
- // Should not reject the configuration
947
- expect(result.disabled).toBe(false);
948
- expect(result.scanned).toBe(0);
949
- expect(result.failed).toBe(0);
950
- });
951
- it('should accept valid maxAge format - days', async () => {
952
- const config = createMockConfig();
953
- const settings = {
954
- general: {
955
- sessionRetention: {
956
- enabled: true,
957
- maxAge: '7d', // Valid: 7 days
958
- },
959
- },
960
- };
961
- mockGetAllSessionFiles.mockResolvedValue([]);
962
- const result = await cleanupExpiredSessions(config, settings);
963
- // Should not reject the configuration
964
- expect(result.disabled).toBe(false);
965
- expect(result.scanned).toBe(0);
966
- expect(result.failed).toBe(0);
967
- });
968
- it('should accept valid maxAge format - weeks', async () => {
969
- const config = createMockConfig();
970
- const settings = {
971
- general: {
972
- sessionRetention: {
973
- enabled: true,
974
- maxAge: '2w', // Valid: 2 weeks
975
- },
976
- },
977
- };
978
- mockGetAllSessionFiles.mockResolvedValue([]);
979
- const result = await cleanupExpiredSessions(config, settings);
980
- // Should not reject the configuration
981
- expect(result.disabled).toBe(false);
982
- expect(result.scanned).toBe(0);
983
- expect(result.failed).toBe(0);
984
- });
985
- it('should accept valid maxAge format - months', async () => {
986
- const config = createMockConfig();
987
- const settings = {
988
- general: {
989
- sessionRetention: {
990
- enabled: true,
991
- maxAge: '3m', // Valid: 3 months
992
- },
993
- },
994
- };
995
- mockGetAllSessionFiles.mockResolvedValue([]);
996
- const result = await cleanupExpiredSessions(config, settings);
997
- // Should not reject the configuration
998
- expect(result.disabled).toBe(false);
999
- expect(result.scanned).toBe(0);
1000
- expect(result.failed).toBe(0);
1001
- });
1002
- });
1003
- describe('minRetention validation', () => {
1004
- it('should reject maxAge less than default minRetention (1d)', async () => {
1005
- const config = createMockConfig({
1006
- getDebugMode: vi.fn().mockReturnValue(true),
1007
- });
1008
- const settings = {
1009
- general: {
1010
- sessionRetention: {
1011
- enabled: true,
1012
- maxAge: '12h', // Less than default 1d minRetention
1013
- },
1014
- },
1015
- };
1016
- const result = await cleanupExpiredSessions(config, settings);
1017
- expect(result.disabled).toBe(true);
1018
- expect(result.scanned).toBe(0);
1019
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('maxAge cannot be less than minRetention (1d)'));
1020
- });
1021
- it('should reject maxAge less than custom minRetention', async () => {
1022
- const config = createMockConfig({
1023
- getDebugMode: vi.fn().mockReturnValue(true),
1024
- });
1025
- const settings = {
1026
- general: {
1027
- sessionRetention: {
1028
- enabled: true,
1029
- maxAge: '2d',
1030
- minRetention: '3d', // maxAge < minRetention
1031
- },
1032
- },
1033
- };
1034
- const result = await cleanupExpiredSessions(config, settings);
1035
- expect(result.disabled).toBe(true);
1036
- expect(result.scanned).toBe(0);
1037
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('maxAge cannot be less than minRetention (3d)'));
1038
- });
1039
- it('should accept maxAge equal to minRetention', async () => {
1040
- const config = createMockConfig();
1041
- const settings = {
1042
- general: {
1043
- sessionRetention: {
1044
- enabled: true,
1045
- maxAge: '2d',
1046
- minRetention: '2d', // maxAge == minRetention (edge case)
1047
- },
1048
- },
1049
- };
1050
- mockGetAllSessionFiles.mockResolvedValue([]);
1051
- const result = await cleanupExpiredSessions(config, settings);
1052
- // Should not reject the configuration
1053
- expect(result.disabled).toBe(false);
1054
- expect(result.scanned).toBe(0);
1055
- expect(result.failed).toBe(0);
1056
- });
1057
- it('should accept maxAge greater than minRetention', async () => {
1058
- const config = createMockConfig();
1059
- const settings = {
1060
- general: {
1061
- sessionRetention: {
1062
- enabled: true,
1063
- maxAge: '7d',
1064
- minRetention: '2d', // maxAge > minRetention
1065
- },
1066
- },
1067
- };
1068
- mockGetAllSessionFiles.mockResolvedValue([]);
1069
- const result = await cleanupExpiredSessions(config, settings);
1070
- // Should not reject the configuration
1071
- expect(result.disabled).toBe(false);
1072
- expect(result.scanned).toBe(0);
1073
- expect(result.failed).toBe(0);
1074
- });
1075
- it('should handle invalid minRetention format gracefully', async () => {
1076
- const config = createMockConfig({
1077
- getDebugMode: vi.fn().mockReturnValue(true),
1078
- });
1079
- const settings = {
1080
- general: {
1081
- sessionRetention: {
1082
- enabled: true,
1083
- maxAge: '5d',
1084
- minRetention: 'invalid', // Invalid format
1085
- },
1086
- },
1087
- };
1088
- mockGetAllSessionFiles.mockResolvedValue([]);
1089
- // When minRetention is invalid, it should default to 1d
1090
- // Since maxAge (5d) > default minRetention (1d), this should be valid
1091
- const result = await cleanupExpiredSessions(config, settings);
1092
- // Should not reject due to minRetention (falls back to default)
1093
- expect(result.disabled).toBe(false);
1094
- expect(result.scanned).toBe(0);
1095
- expect(result.failed).toBe(0);
1096
- });
1097
- });
1098
- describe('maxCount boundary validation', () => {
1099
- it('should accept maxCount = 1 (minimum valid)', async () => {
1100
- const config = createMockConfig();
1101
- const settings = {
1102
- general: {
1103
- sessionRetention: {
1104
- enabled: true,
1105
- maxCount: 1, // Minimum valid value
1106
- },
1107
- },
1108
- };
1109
- mockGetAllSessionFiles.mockResolvedValue([]);
1110
- const result = await cleanupExpiredSessions(config, settings);
1111
- // Should accept the configuration
1112
- expect(result.disabled).toBe(false);
1113
- expect(result.scanned).toBe(0);
1114
- expect(result.failed).toBe(0);
1115
- });
1116
- it('should accept maxCount = 1000 (maximum valid)', async () => {
1117
- const config = createMockConfig();
1118
- const settings = {
1119
- general: {
1120
- sessionRetention: {
1121
- enabled: true,
1122
- maxCount: 1000, // Maximum valid value
1123
- },
1124
- },
1125
- };
1126
- mockGetAllSessionFiles.mockResolvedValue([]);
1127
- const result = await cleanupExpiredSessions(config, settings);
1128
- // Should accept the configuration
1129
- expect(result.disabled).toBe(false);
1130
- expect(result.scanned).toBe(0);
1131
- expect(result.failed).toBe(0);
1132
- });
1133
- it('should reject negative maxCount', async () => {
1134
- const config = createMockConfig({
1135
- getDebugMode: vi.fn().mockReturnValue(true),
1136
- });
1137
- const settings = {
1138
- general: {
1139
- sessionRetention: {
1140
- enabled: true,
1141
- maxCount: -1, // Negative value
1142
- },
1143
- },
1144
- };
1145
- const result = await cleanupExpiredSessions(config, settings);
1146
- expect(result.disabled).toBe(true);
1147
- expect(result.scanned).toBe(0);
1148
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('maxCount must be at least 1'));
1149
- });
1150
- it('should accept valid maxCount in normal range', async () => {
1151
- const config = createMockConfig();
1152
- const settings = {
1153
- general: {
1154
- sessionRetention: {
1155
- enabled: true,
1156
- maxCount: 50, // Normal valid value
1157
- },
1158
- },
1159
- };
1160
- mockGetAllSessionFiles.mockResolvedValue([]);
1161
- const result = await cleanupExpiredSessions(config, settings);
1162
- // Should accept the configuration
1163
- expect(result.disabled).toBe(false);
1164
- expect(result.scanned).toBe(0);
1165
- expect(result.failed).toBe(0);
1166
- });
1167
- });
1168
- describe('combined configuration validation', () => {
1169
- it('should accept valid maxAge and maxCount together', async () => {
1170
- const config = createMockConfig();
1171
- const settings = {
1172
- general: {
1173
- sessionRetention: {
1174
- enabled: true,
1175
- maxAge: '30d',
1176
- maxCount: 10,
1177
- },
1178
- },
1179
- };
1180
- mockGetAllSessionFiles.mockResolvedValue([]);
1181
- const result = await cleanupExpiredSessions(config, settings);
1182
- // Should accept the configuration
1183
- expect(result.disabled).toBe(false);
1184
- expect(result.scanned).toBe(0);
1185
- expect(result.failed).toBe(0);
1186
- });
1187
- it('should reject if both maxAge and maxCount are invalid', async () => {
1188
- const config = createMockConfig({
1189
- getDebugMode: vi.fn().mockReturnValue(true),
1190
- });
1191
- const settings = {
1192
- general: {
1193
- sessionRetention: {
1194
- enabled: true,
1195
- maxAge: 'invalid',
1196
- maxCount: 0,
1197
- },
1198
- },
1199
- };
1200
- const result = await cleanupExpiredSessions(config, settings);
1201
- expect(result.disabled).toBe(true);
1202
- expect(result.scanned).toBe(0);
1203
- // Should fail on first validation error (maxAge format)
1204
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('Invalid retention period format'));
1205
- });
1206
- it('should reject if maxAge is invalid even when maxCount is valid', async () => {
1207
- const config = createMockConfig({
1208
- getDebugMode: vi.fn().mockReturnValue(true),
1209
- });
1210
- const settings = {
1211
- general: {
1212
- sessionRetention: {
1213
- enabled: true,
1214
- maxAge: 'invalid', // Invalid format
1215
- maxCount: 5, // Valid count
1216
- },
1217
- },
1218
- };
1219
- // The validation logic rejects invalid maxAge format even if maxCount is valid
1220
- const result = await cleanupExpiredSessions(config, settings);
1221
- // Should reject due to invalid maxAge format
1222
- expect(result.disabled).toBe(true);
1223
- expect(result.scanned).toBe(0);
1224
- expect(debugLogger.warn).toHaveBeenCalledWith(expect.stringContaining('Invalid retention period format'));
1225
- });
1226
- });
1227
- it('should never throw an exception, always returning a result', async () => {
1228
- const config = createMockConfig();
1229
- const settings = {
1230
- general: {
1231
- sessionRetention: {
1232
- enabled: true,
1233
- maxAge: '7d',
1234
- },
1235
- },
1236
- };
1237
- // Mock getSessionFiles to throw an error
1238
- mockGetAllSessionFiles.mockRejectedValue(new Error('Failed to read directory'));
1239
- // Should not throw, should return a result with errors
1240
- const result = await cleanupExpiredSessions(config, settings);
1241
- expect(result).toBeDefined();
1242
- expect(result.disabled).toBe(false);
1243
- expect(result.failed).toBe(1);
1244
- });
1245
- it('should delete corrupted session files', async () => {
1246
- const config = createMockConfig();
1247
- const settings = {
1248
- general: {
1249
- sessionRetention: {
1250
- enabled: true,
1251
- maxAge: '30d',
1252
- },
1253
- },
1254
- };
1255
- // Mock getAllSessionFiles to return both valid and corrupted files
1256
- const validSession = createTestSessions()[0];
1257
- mockGetAllSessionFiles.mockResolvedValue([
1258
- { fileName: validSession.fileName, sessionInfo: validSession },
1259
- {
1260
- fileName: `${SESSION_FILE_PREFIX}2025-01-02T10-00-00-corrupt1.json`,
1261
- sessionInfo: null,
1262
- },
1263
- {
1264
- fileName: `${SESSION_FILE_PREFIX}2025-01-03T10-00-00-corrupt2.json`,
1265
- sessionInfo: null,
1266
- },
1267
- ]);
1268
- mockFs.unlink.mockResolvedValue(undefined);
1269
- const result = await cleanupExpiredSessions(config, settings);
1270
- expect(result.disabled).toBe(false);
1271
- expect(result.scanned).toBe(3); // 1 valid + 2 corrupted
1272
- expect(result.deleted).toBe(2); // Should delete the 2 corrupted files
1273
- expect(result.skipped).toBe(1); // The valid session is kept
1274
- // Verify corrupted files were deleted
1275
- expect(mockFs.unlink).toHaveBeenCalledWith(expect.stringContaining('corrupt1.json'));
1276
- expect(mockFs.unlink).toHaveBeenCalledWith(expect.stringContaining('corrupt2.json'));
1277
- });
1278
- it('should handle unexpected errors without throwing', async () => {
1279
- const config = createMockConfig();
1280
- const settings = {
1281
- general: {
1282
- sessionRetention: {
1283
- enabled: true,
1284
- maxAge: '7d',
1285
- },
1286
- },
1287
- };
1288
- // Mock getSessionFiles to throw a non-Error object
1289
- mockGetAllSessionFiles.mockRejectedValue('String error');
1290
- // Should not throw, should return a result with errors
1291
- const result = await cleanupExpiredSessions(config, settings);
1292
- expect(result).toBeDefined();
1293
- expect(result.disabled).toBe(false);
1294
- expect(result.failed).toBe(1);
1295
- });
1296
- });
1297
- });
1298
- //# sourceMappingURL=sessionCleanup.test.js.map