@tulex-cli/tulex-code 0.1.1

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 (3094) hide show
  1. package/README.md +54 -0
  2. package/dist/.last_build +0 -0
  3. package/dist/index.d.ts +7 -0
  4. package/dist/index.js +98 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/package.json +121 -0
  7. package/dist/src/acp-integration/acpAgent.d.ts +59 -0
  8. package/dist/src/acp-integration/acpAgent.js +3646 -0
  9. package/dist/src/acp-integration/acpAgent.js.map +1 -0
  10. package/dist/src/acp-integration/acpAgent.test.d.ts +6 -0
  11. package/dist/src/acp-integration/acpAgent.test.js +3690 -0
  12. package/dist/src/acp-integration/acpAgent.test.js.map +1 -0
  13. package/dist/src/acp-integration/acpAgent.worktree.test.d.ts +16 -0
  14. package/dist/src/acp-integration/acpAgent.worktree.test.js +354 -0
  15. package/dist/src/acp-integration/acpAgent.worktree.test.js.map +1 -0
  16. package/dist/src/acp-integration/authMethods.d.ts +9 -0
  17. package/dist/src/acp-integration/authMethods.js +28 -0
  18. package/dist/src/acp-integration/authMethods.js.map +1 -0
  19. package/dist/src/acp-integration/authMethods.test.d.ts +6 -0
  20. package/dist/src/acp-integration/authMethods.test.js +23 -0
  21. package/dist/src/acp-integration/authMethods.test.js.map +1 -0
  22. package/dist/src/acp-integration/authPreflight.test.d.ts +6 -0
  23. package/dist/src/acp-integration/authPreflight.test.js +54 -0
  24. package/dist/src/acp-integration/authPreflight.test.js.map +1 -0
  25. package/dist/src/acp-integration/errorCodes.d.ts +15 -0
  26. package/dist/src/acp-integration/errorCodes.js +22 -0
  27. package/dist/src/acp-integration/errorCodes.js.map +1 -0
  28. package/dist/src/acp-integration/runtimeOutputDirContext.d.ts +2 -0
  29. package/dist/src/acp-integration/runtimeOutputDirContext.js +5 -0
  30. package/dist/src/acp-integration/runtimeOutputDirContext.js.map +1 -0
  31. package/dist/src/acp-integration/runtimeOutputDirContext.test.d.ts +1 -0
  32. package/dist/src/acp-integration/runtimeOutputDirContext.test.js +29 -0
  33. package/dist/src/acp-integration/runtimeOutputDirContext.test.js.map +1 -0
  34. package/dist/src/acp-integration/service/filesystem.d.ts +17 -0
  35. package/dist/src/acp-integration/service/filesystem.js +73 -0
  36. package/dist/src/acp-integration/service/filesystem.js.map +1 -0
  37. package/dist/src/acp-integration/service/filesystem.test.d.ts +6 -0
  38. package/dist/src/acp-integration/service/filesystem.test.js +85 -0
  39. package/dist/src/acp-integration/service/filesystem.test.js.map +1 -0
  40. package/dist/src/acp-integration/session/HistoryReplayer.d.ts +63 -0
  41. package/dist/src/acp-integration/session/HistoryReplayer.js +222 -0
  42. package/dist/src/acp-integration/session/HistoryReplayer.js.map +1 -0
  43. package/dist/src/acp-integration/session/HistoryReplayer.test.d.ts +6 -0
  44. package/dist/src/acp-integration/session/HistoryReplayer.test.js +405 -0
  45. package/dist/src/acp-integration/session/HistoryReplayer.test.js.map +1 -0
  46. package/dist/src/acp-integration/session/Session.d.ts +150 -0
  47. package/dist/src/acp-integration/session/Session.js +2381 -0
  48. package/dist/src/acp-integration/session/Session.js.map +1 -0
  49. package/dist/src/acp-integration/session/Session.test.d.ts +6 -0
  50. package/dist/src/acp-integration/session/Session.test.js +3845 -0
  51. package/dist/src/acp-integration/session/Session.test.js.map +1 -0
  52. package/dist/src/acp-integration/session/Session.worktree.test.d.ts +18 -0
  53. package/dist/src/acp-integration/session/Session.worktree.test.js +195 -0
  54. package/dist/src/acp-integration/session/Session.worktree.test.js.map +1 -0
  55. package/dist/src/acp-integration/session/SubAgentTracker.d.ts +58 -0
  56. package/dist/src/acp-integration/session/SubAgentTracker.js +208 -0
  57. package/dist/src/acp-integration/session/SubAgentTracker.js.map +1 -0
  58. package/dist/src/acp-integration/session/SubAgentTracker.test.d.ts +6 -0
  59. package/dist/src/acp-integration/session/SubAgentTracker.test.js +612 -0
  60. package/dist/src/acp-integration/session/SubAgentTracker.test.js.map +1 -0
  61. package/dist/src/acp-integration/session/emitters/BaseEmitter.d.ts +34 -0
  62. package/dist/src/acp-integration/session/emitters/BaseEmitter.js +53 -0
  63. package/dist/src/acp-integration/session/emitters/BaseEmitter.js.map +1 -0
  64. package/dist/src/acp-integration/session/emitters/MessageEmitter.d.ts +61 -0
  65. package/dist/src/acp-integration/session/emitters/MessageEmitter.js +124 -0
  66. package/dist/src/acp-integration/session/emitters/MessageEmitter.js.map +1 -0
  67. package/dist/src/acp-integration/session/emitters/MessageEmitter.test.d.ts +6 -0
  68. package/dist/src/acp-integration/session/emitters/MessageEmitter.test.js +202 -0
  69. package/dist/src/acp-integration/session/emitters/MessageEmitter.test.js.map +1 -0
  70. package/dist/src/acp-integration/session/emitters/PlanEmitter.d.ts +39 -0
  71. package/dist/src/acp-integration/session/emitters/PlanEmitter.js +83 -0
  72. package/dist/src/acp-integration/session/emitters/PlanEmitter.js.map +1 -0
  73. package/dist/src/acp-integration/session/emitters/PlanEmitter.test.d.ts +6 -0
  74. package/dist/src/acp-integration/session/emitters/PlanEmitter.test.js +176 -0
  75. package/dist/src/acp-integration/session/emitters/PlanEmitter.test.js.map +1 -0
  76. package/dist/src/acp-integration/session/emitters/ToolCallEmitter.d.ts +82 -0
  77. package/dist/src/acp-integration/session/emitters/ToolCallEmitter.js +284 -0
  78. package/dist/src/acp-integration/session/emitters/ToolCallEmitter.js.map +1 -0
  79. package/dist/src/acp-integration/session/emitters/ToolCallEmitter.test.d.ts +6 -0
  80. package/dist/src/acp-integration/session/emitters/ToolCallEmitter.test.js +607 -0
  81. package/dist/src/acp-integration/session/emitters/ToolCallEmitter.test.js.map +1 -0
  82. package/dist/src/acp-integration/session/emitters/index.d.ts +9 -0
  83. package/dist/src/acp-integration/session/emitters/index.js +10 -0
  84. package/dist/src/acp-integration/session/emitters/index.js.map +1 -0
  85. package/dist/src/acp-integration/session/index.d.ts +24 -0
  86. package/dist/src/acp-integration/session/index.js +16 -0
  87. package/dist/src/acp-integration/session/index.js.map +1 -0
  88. package/dist/src/acp-integration/session/permissionUtils.d.ts +9 -0
  89. package/dist/src/acp-integration/session/permissionUtils.js +165 -0
  90. package/dist/src/acp-integration/session/permissionUtils.js.map +1 -0
  91. package/dist/src/acp-integration/session/permissionUtils.test.d.ts +6 -0
  92. package/dist/src/acp-integration/session/permissionUtils.test.js +83 -0
  93. package/dist/src/acp-integration/session/permissionUtils.test.js.map +1 -0
  94. package/dist/src/acp-integration/session/rewrite/LlmRewriter.d.ts +26 -0
  95. package/dist/src/acp-integration/session/rewrite/LlmRewriter.js +131 -0
  96. package/dist/src/acp-integration/session/rewrite/LlmRewriter.js.map +1 -0
  97. package/dist/src/acp-integration/session/rewrite/LlmRewriter.test.d.ts +6 -0
  98. package/dist/src/acp-integration/session/rewrite/LlmRewriter.test.js +188 -0
  99. package/dist/src/acp-integration/session/rewrite/LlmRewriter.test.js.map +1 -0
  100. package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.d.ts +42 -0
  101. package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.js +159 -0
  102. package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.js.map +1 -0
  103. package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.test.d.ts +6 -0
  104. package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.test.js +255 -0
  105. package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.test.js.map +1 -0
  106. package/dist/src/acp-integration/session/rewrite/README.md +35 -0
  107. package/dist/src/acp-integration/session/rewrite/TurnBuffer.d.ts +25 -0
  108. package/dist/src/acp-integration/session/rewrite/TurnBuffer.js +53 -0
  109. package/dist/src/acp-integration/session/rewrite/TurnBuffer.js.map +1 -0
  110. package/dist/src/acp-integration/session/rewrite/TurnBuffer.test.d.ts +6 -0
  111. package/dist/src/acp-integration/session/rewrite/TurnBuffer.test.js +95 -0
  112. package/dist/src/acp-integration/session/rewrite/TurnBuffer.test.js.map +1 -0
  113. package/dist/src/acp-integration/session/rewrite/config.d.ts +13 -0
  114. package/dist/src/acp-integration/session/rewrite/config.js +19 -0
  115. package/dist/src/acp-integration/session/rewrite/config.js.map +1 -0
  116. package/dist/src/acp-integration/session/rewrite/config.test.d.ts +6 -0
  117. package/dist/src/acp-integration/session/rewrite/config.test.js +72 -0
  118. package/dist/src/acp-integration/session/rewrite/config.test.js.map +1 -0
  119. package/dist/src/acp-integration/session/rewrite/index.d.ts +8 -0
  120. package/dist/src/acp-integration/session/rewrite/index.js +8 -0
  121. package/dist/src/acp-integration/session/rewrite/index.js.map +1 -0
  122. package/dist/src/acp-integration/session/rewrite/types.d.ts +36 -0
  123. package/dist/src/acp-integration/session/rewrite/types.js +7 -0
  124. package/dist/src/acp-integration/session/rewrite/types.js.map +1 -0
  125. package/dist/src/acp-integration/session/types.d.ts +93 -0
  126. package/dist/src/acp-integration/session/types.js +7 -0
  127. package/dist/src/acp-integration/session/types.js.map +1 -0
  128. package/dist/src/commands/auth.d.ts +9 -0
  129. package/dist/src/commands/auth.js +55 -0
  130. package/dist/src/commands/auth.js.map +1 -0
  131. package/dist/src/commands/auth.test.d.ts +6 -0
  132. package/dist/src/commands/auth.test.js +84 -0
  133. package/dist/src/commands/auth.test.js.map +1 -0
  134. package/dist/src/commands/channel/channel-registry.d.ts +4 -0
  135. package/dist/src/commands/channel/channel-registry.js +33 -0
  136. package/dist/src/commands/channel/channel-registry.js.map +1 -0
  137. package/dist/src/commands/channel/config-utils.d.ts +4 -0
  138. package/dist/src/commands/channel/config-utils.js +66 -0
  139. package/dist/src/commands/channel/config-utils.js.map +1 -0
  140. package/dist/src/commands/channel/config-utils.test.d.ts +1 -0
  141. package/dist/src/commands/channel/config-utils.test.js +142 -0
  142. package/dist/src/commands/channel/config-utils.test.js.map +1 -0
  143. package/dist/src/commands/channel/configure.d.ts +4 -0
  144. package/dist/src/commands/channel/configure.js +65 -0
  145. package/dist/src/commands/channel/configure.js.map +1 -0
  146. package/dist/src/commands/channel/pairing.d.ts +8 -0
  147. package/dist/src/commands/channel/pairing.js +49 -0
  148. package/dist/src/commands/channel/pairing.js.map +1 -0
  149. package/dist/src/commands/channel/pidfile.d.ts +25 -0
  150. package/dist/src/commands/channel/pidfile.js +104 -0
  151. package/dist/src/commands/channel/pidfile.js.map +1 -0
  152. package/dist/src/commands/channel/pidfile.test.d.ts +1 -0
  153. package/dist/src/commands/channel/pidfile.test.js +143 -0
  154. package/dist/src/commands/channel/pidfile.test.js.map +1 -0
  155. package/dist/src/commands/channel/start.d.ts +16 -0
  156. package/dist/src/commands/channel/start.js +352 -0
  157. package/dist/src/commands/channel/start.js.map +1 -0
  158. package/dist/src/commands/channel/start.test.d.ts +1 -0
  159. package/dist/src/commands/channel/start.test.js +156 -0
  160. package/dist/src/commands/channel/start.test.js.map +1 -0
  161. package/dist/src/commands/channel/status.d.ts +2 -0
  162. package/dist/src/commands/channel/status.js +58 -0
  163. package/dist/src/commands/channel/status.js.map +1 -0
  164. package/dist/src/commands/channel/stop.d.ts +2 -0
  165. package/dist/src/commands/channel/stop.js +34 -0
  166. package/dist/src/commands/channel/stop.js.map +1 -0
  167. package/dist/src/commands/channel.d.ts +2 -0
  168. package/dist/src/commands/channel.js +29 -0
  169. package/dist/src/commands/channel.js.map +1 -0
  170. package/dist/src/commands/extensions/consent.d.ts +47 -0
  171. package/dist/src/commands/extensions/consent.js +182 -0
  172. package/dist/src/commands/extensions/consent.js.map +1 -0
  173. package/dist/src/commands/extensions/consent.test.d.ts +6 -0
  174. package/dist/src/commands/extensions/consent.test.js +277 -0
  175. package/dist/src/commands/extensions/consent.test.js.map +1 -0
  176. package/dist/src/commands/extensions/disable.d.ts +13 -0
  177. package/dist/src/commands/extensions/disable.js +65 -0
  178. package/dist/src/commands/extensions/disable.js.map +1 -0
  179. package/dist/src/commands/extensions/disable.test.d.ts +6 -0
  180. package/dist/src/commands/extensions/disable.test.js +101 -0
  181. package/dist/src/commands/extensions/disable.test.js.map +1 -0
  182. package/dist/src/commands/extensions/enable.d.ts +13 -0
  183. package/dist/src/commands/extensions/enable.js +70 -0
  184. package/dist/src/commands/extensions/enable.js.map +1 -0
  185. package/dist/src/commands/extensions/enable.test.d.ts +6 -0
  186. package/dist/src/commands/extensions/enable.test.js +93 -0
  187. package/dist/src/commands/extensions/enable.test.js.map +1 -0
  188. package/dist/src/commands/extensions/examples/agent/agents/diary.md +86 -0
  189. package/dist/src/commands/extensions/examples/agent/qwen-extension.json +5 -0
  190. package/dist/src/commands/extensions/examples/commands/commands/fs/grep-code.md +3 -0
  191. package/dist/src/commands/extensions/examples/commands/qwen-extension.json +5 -0
  192. package/dist/src/commands/extensions/examples/context/QWEN.md +8 -0
  193. package/dist/src/commands/extensions/examples/context/qwen-extension.json +5 -0
  194. package/dist/src/commands/extensions/examples/mcp-server/example.ts +60 -0
  195. package/dist/src/commands/extensions/examples/mcp-server/package.json +18 -0
  196. package/dist/src/commands/extensions/examples/mcp-server/qwen-extension.json +12 -0
  197. package/dist/src/commands/extensions/examples/mcp-server/tsconfig.json +13 -0
  198. package/dist/src/commands/extensions/examples/skills/qwen-extension.json +5 -0
  199. package/dist/src/commands/extensions/examples/skills/skills/synonyms/SKILL.md +48 -0
  200. package/dist/src/commands/extensions/install.d.ts +17 -0
  201. package/dist/src/commands/extensions/install.js +105 -0
  202. package/dist/src/commands/extensions/install.js.map +1 -0
  203. package/dist/src/commands/extensions/install.test.d.ts +6 -0
  204. package/dist/src/commands/extensions/install.test.js +164 -0
  205. package/dist/src/commands/extensions/install.test.js.map +1 -0
  206. package/dist/src/commands/extensions/link.d.ts +12 -0
  207. package/dist/src/commands/extensions/link.js +48 -0
  208. package/dist/src/commands/extensions/link.js.map +1 -0
  209. package/dist/src/commands/extensions/link.test.d.ts +6 -0
  210. package/dist/src/commands/extensions/link.test.js +74 -0
  211. package/dist/src/commands/extensions/link.test.js.map +1 -0
  212. package/dist/src/commands/extensions/list.d.ts +8 -0
  213. package/dist/src/commands/extensions/list.js +35 -0
  214. package/dist/src/commands/extensions/list.js.map +1 -0
  215. package/dist/src/commands/extensions/list.test.d.ts +6 -0
  216. package/dist/src/commands/extensions/list.test.js +76 -0
  217. package/dist/src/commands/extensions/list.test.js.map +1 -0
  218. package/dist/src/commands/extensions/new.d.ts +7 -0
  219. package/dist/src/commands/extensions/new.js +95 -0
  220. package/dist/src/commands/extensions/new.js.map +1 -0
  221. package/dist/src/commands/extensions/new.test.d.ts +6 -0
  222. package/dist/src/commands/extensions/new.test.js +59 -0
  223. package/dist/src/commands/extensions/new.test.js.map +1 -0
  224. package/dist/src/commands/extensions/settings.d.ts +7 -0
  225. package/dist/src/commands/extensions/settings.js +115 -0
  226. package/dist/src/commands/extensions/settings.js.map +1 -0
  227. package/dist/src/commands/extensions/settings.test.d.ts +6 -0
  228. package/dist/src/commands/extensions/settings.test.js +251 -0
  229. package/dist/src/commands/extensions/settings.test.js.map +1 -0
  230. package/dist/src/commands/extensions/uninstall.d.ts +12 -0
  231. package/dist/src/commands/extensions/uninstall.js +50 -0
  232. package/dist/src/commands/extensions/uninstall.js.map +1 -0
  233. package/dist/src/commands/extensions/uninstall.test.d.ts +6 -0
  234. package/dist/src/commands/extensions/uninstall.test.js +18 -0
  235. package/dist/src/commands/extensions/uninstall.test.js.map +1 -0
  236. package/dist/src/commands/extensions/update.d.ts +13 -0
  237. package/dist/src/commands/extensions/update.js +102 -0
  238. package/dist/src/commands/extensions/update.js.map +1 -0
  239. package/dist/src/commands/extensions/update.test.d.ts +6 -0
  240. package/dist/src/commands/extensions/update.test.js +185 -0
  241. package/dist/src/commands/extensions/update.test.js.map +1 -0
  242. package/dist/src/commands/extensions/utils.d.ts +8 -0
  243. package/dist/src/commands/extensions/utils.js +79 -0
  244. package/dist/src/commands/extensions/utils.js.map +1 -0
  245. package/dist/src/commands/extensions/utils.test.d.ts +6 -0
  246. package/dist/src/commands/extensions/utils.test.js +147 -0
  247. package/dist/src/commands/extensions/utils.test.js.map +1 -0
  248. package/dist/src/commands/extensions.d.ts +7 -0
  249. package/dist/src/commands/extensions.js +35 -0
  250. package/dist/src/commands/extensions.js.map +1 -0
  251. package/dist/src/commands/extensions.test.d.ts +6 -0
  252. package/dist/src/commands/extensions.test.js +72 -0
  253. package/dist/src/commands/extensions.test.js.map +1 -0
  254. package/dist/src/commands/hooks.d.ts +7 -0
  255. package/dist/src/commands/hooks.js +20 -0
  256. package/dist/src/commands/hooks.js.map +1 -0
  257. package/dist/src/commands/mcp/add.d.ts +7 -0
  258. package/dist/src/commands/mcp/add.js +247 -0
  259. package/dist/src/commands/mcp/add.js.map +1 -0
  260. package/dist/src/commands/mcp/list.d.ts +8 -0
  261. package/dist/src/commands/mcp/list.js +118 -0
  262. package/dist/src/commands/mcp/list.js.map +1 -0
  263. package/dist/src/commands/mcp/reconnect.d.ts +7 -0
  264. package/dist/src/commands/mcp/reconnect.js +154 -0
  265. package/dist/src/commands/mcp/reconnect.js.map +1 -0
  266. package/dist/src/commands/mcp/remove.d.ts +7 -0
  267. package/dist/src/commands/mcp/remove.js +54 -0
  268. package/dist/src/commands/mcp/remove.js.map +1 -0
  269. package/dist/src/commands/mcp.d.ts +7 -0
  270. package/dist/src/commands/mcp.js +25 -0
  271. package/dist/src/commands/mcp.js.map +1 -0
  272. package/dist/src/commands/review/cleanup.d.ts +7 -0
  273. package/dist/src/commands/review/cleanup.js +81 -0
  274. package/dist/src/commands/review/cleanup.js.map +1 -0
  275. package/dist/src/commands/review/deterministic.d.ts +7 -0
  276. package/dist/src/commands/review/deterministic.js +474 -0
  277. package/dist/src/commands/review/deterministic.js.map +1 -0
  278. package/dist/src/commands/review/fetch-pr.d.ts +7 -0
  279. package/dist/src/commands/review/fetch-pr.js +124 -0
  280. package/dist/src/commands/review/fetch-pr.js.map +1 -0
  281. package/dist/src/commands/review/lib/gh.d.ts +34 -0
  282. package/dist/src/commands/review/lib/gh.js +64 -0
  283. package/dist/src/commands/review/lib/gh.js.map +1 -0
  284. package/dist/src/commands/review/lib/git.d.ts +18 -0
  285. package/dist/src/commands/review/lib/git.js +41 -0
  286. package/dist/src/commands/review/lib/git.js.map +1 -0
  287. package/dist/src/commands/review/lib/paths.d.ts +23 -0
  288. package/dist/src/commands/review/lib/paths.js +37 -0
  289. package/dist/src/commands/review/lib/paths.js.map +1 -0
  290. package/dist/src/commands/review/load-rules.d.ts +7 -0
  291. package/dist/src/commands/review/load-rules.js +112 -0
  292. package/dist/src/commands/review/load-rules.js.map +1 -0
  293. package/dist/src/commands/review/pr-context.d.ts +7 -0
  294. package/dist/src/commands/review/pr-context.js +214 -0
  295. package/dist/src/commands/review/pr-context.js.map +1 -0
  296. package/dist/src/commands/review/presubmit.d.ts +7 -0
  297. package/dist/src/commands/review/presubmit.js +190 -0
  298. package/dist/src/commands/review/presubmit.js.map +1 -0
  299. package/dist/src/commands/review.d.ts +7 -0
  300. package/dist/src/commands/review.js +28 -0
  301. package/dist/src/commands/review.js.map +1 -0
  302. package/dist/src/commands/serve.d.ts +21 -0
  303. package/dist/src/commands/serve.js +214 -0
  304. package/dist/src/commands/serve.js.map +1 -0
  305. package/dist/src/commands/sp.d.ts +7 -0
  306. package/dist/src/commands/sp.js +62 -0
  307. package/dist/src/commands/sp.js.map +1 -0
  308. package/dist/src/config/auth.d.ts +10 -0
  309. package/dist/src/config/auth.js +183 -0
  310. package/dist/src/config/auth.js.map +1 -0
  311. package/dist/src/config/auth.test.d.ts +6 -0
  312. package/dist/src/config/auth.test.js +292 -0
  313. package/dist/src/config/auth.test.js.map +1 -0
  314. package/dist/src/config/config.d.ts +144 -0
  315. package/dist/src/config/config.js +1618 -0
  316. package/dist/src/config/config.js.map +1 -0
  317. package/dist/src/config/jsonSchemaArg.test.d.ts +6 -0
  318. package/dist/src/config/jsonSchemaArg.test.js +305 -0
  319. package/dist/src/config/jsonSchemaArg.test.js.map +1 -0
  320. package/dist/src/config/keyBindings.d.ts +89 -0
  321. package/dist/src/config/keyBindings.js +188 -0
  322. package/dist/src/config/keyBindings.js.map +1 -0
  323. package/dist/src/config/keyBindings.test.d.ts +6 -0
  324. package/dist/src/config/keyBindings.test.js +51 -0
  325. package/dist/src/config/keyBindings.test.js.map +1 -0
  326. package/dist/src/config/loadedSettingsAdapter.d.ts +15 -0
  327. package/dist/src/config/loadedSettingsAdapter.js +80 -0
  328. package/dist/src/config/loadedSettingsAdapter.js.map +1 -0
  329. package/dist/src/config/loadedSettingsAdapter.test.d.ts +6 -0
  330. package/dist/src/config/loadedSettingsAdapter.test.js +127 -0
  331. package/dist/src/config/loadedSettingsAdapter.test.js.map +1 -0
  332. package/dist/src/config/migration/index.d.ts +59 -0
  333. package/dist/src/config/migration/index.js +94 -0
  334. package/dist/src/config/migration/index.js.map +1 -0
  335. package/dist/src/config/migration/index.test.d.ts +6 -0
  336. package/dist/src/config/migration/index.test.js +295 -0
  337. package/dist/src/config/migration/index.test.js.map +1 -0
  338. package/dist/src/config/migration/scheduler.d.ts +51 -0
  339. package/dist/src/config/migration/scheduler.js +95 -0
  340. package/dist/src/config/migration/scheduler.js.map +1 -0
  341. package/dist/src/config/migration/scheduler.test.d.ts +6 -0
  342. package/dist/src/config/migration/scheduler.test.js +129 -0
  343. package/dist/src/config/migration/scheduler.test.js.map +1 -0
  344. package/dist/src/config/migration/types.d.ts +53 -0
  345. package/dist/src/config/migration/types.js +7 -0
  346. package/dist/src/config/migration/types.js.map +1 -0
  347. package/dist/src/config/migration/versions/v1-to-v2-shared.d.ts +27 -0
  348. package/dist/src/config/migration/versions/v1-to-v2-shared.js +174 -0
  349. package/dist/src/config/migration/versions/v1-to-v2-shared.js.map +1 -0
  350. package/dist/src/config/migration/versions/v1-to-v2.d.ts +81 -0
  351. package/dist/src/config/migration/versions/v1-to-v2.js +222 -0
  352. package/dist/src/config/migration/versions/v1-to-v2.js.map +1 -0
  353. package/dist/src/config/migration/versions/v1-to-v2.test.d.ts +6 -0
  354. package/dist/src/config/migration/versions/v1-to-v2.test.js +189 -0
  355. package/dist/src/config/migration/versions/v1-to-v2.test.js.map +1 -0
  356. package/dist/src/config/migration/versions/v2-to-v3.d.ts +61 -0
  357. package/dist/src/config/migration/versions/v2-to-v3.js +185 -0
  358. package/dist/src/config/migration/versions/v2-to-v3.js.map +1 -0
  359. package/dist/src/config/migration/versions/v2-to-v3.test.d.ts +6 -0
  360. package/dist/src/config/migration/versions/v2-to-v3.test.js +337 -0
  361. package/dist/src/config/migration/versions/v2-to-v3.test.js.map +1 -0
  362. package/dist/src/config/migration/versions/v3-to-v4.d.ts +34 -0
  363. package/dist/src/config/migration/versions/v3-to-v4.js +126 -0
  364. package/dist/src/config/migration/versions/v3-to-v4.js.map +1 -0
  365. package/dist/src/config/migration/versions/v3-to-v4.test.d.ts +6 -0
  366. package/dist/src/config/migration/versions/v3-to-v4.test.js +164 -0
  367. package/dist/src/config/migration/versions/v3-to-v4.test.js.map +1 -0
  368. package/dist/src/config/modelProvidersScope.d.ts +20 -0
  369. package/dist/src/config/modelProvidersScope.js +39 -0
  370. package/dist/src/config/modelProvidersScope.js.map +1 -0
  371. package/dist/src/config/modelProvidersScope.test.d.ts +6 -0
  372. package/dist/src/config/modelProvidersScope.test.js +66 -0
  373. package/dist/src/config/modelProvidersScope.test.js.map +1 -0
  374. package/dist/src/config/path-freshness.test.d.ts +6 -0
  375. package/dist/src/config/path-freshness.test.js +52 -0
  376. package/dist/src/config/path-freshness.test.js.map +1 -0
  377. package/dist/src/config/sandboxConfig.d.ts +13 -0
  378. package/dist/src/config/sandboxConfig.js +74 -0
  379. package/dist/src/config/sandboxConfig.js.map +1 -0
  380. package/dist/src/config/settings.d.ts +119 -0
  381. package/dist/src/config/settings.js +1015 -0
  382. package/dist/src/config/settings.js.map +1 -0
  383. package/dist/src/config/settingsSchema.d.ts +2207 -0
  384. package/dist/src/config/settingsSchema.js +2246 -0
  385. package/dist/src/config/settingsSchema.js.map +1 -0
  386. package/dist/src/config/settingsSchema.test.d.ts +6 -0
  387. package/dist/src/config/settingsSchema.test.js +232 -0
  388. package/dist/src/config/settingsSchema.test.js.map +1 -0
  389. package/dist/src/config/trustedFolders.d.ts +54 -0
  390. package/dist/src/config/trustedFolders.js +176 -0
  391. package/dist/src/config/trustedFolders.js.map +1 -0
  392. package/dist/src/config/trustedFolders.test.d.ts +6 -0
  393. package/dist/src/config/trustedFolders.test.js +354 -0
  394. package/dist/src/config/trustedFolders.test.js.map +1 -0
  395. package/dist/src/core/auth.d.ts +13 -0
  396. package/dist/src/core/auth.js +34 -0
  397. package/dist/src/core/auth.js.map +1 -0
  398. package/dist/src/core/auth.test.d.ts +6 -0
  399. package/dist/src/core/auth.test.js +47 -0
  400. package/dist/src/core/auth.test.js.map +1 -0
  401. package/dist/src/core/initializer.d.ts +21 -0
  402. package/dist/src/core/initializer.js +42 -0
  403. package/dist/src/core/initializer.js.map +1 -0
  404. package/dist/src/core/initializer.test.d.ts +6 -0
  405. package/dist/src/core/initializer.test.js +123 -0
  406. package/dist/src/core/initializer.test.js.map +1 -0
  407. package/dist/src/core/theme.d.ts +12 -0
  408. package/dist/src/core/theme.js +25 -0
  409. package/dist/src/core/theme.js.map +1 -0
  410. package/dist/src/core/theme.test.d.ts +6 -0
  411. package/dist/src/core/theme.test.js +57 -0
  412. package/dist/src/core/theme.test.js.map +1 -0
  413. package/dist/src/dualOutput/DualOutputBridge.d.ts +84 -0
  414. package/dist/src/dualOutput/DualOutputBridge.js +293 -0
  415. package/dist/src/dualOutput/DualOutputBridge.js.map +1 -0
  416. package/dist/src/dualOutput/DualOutputBridge.test.d.ts +6 -0
  417. package/dist/src/dualOutput/DualOutputBridge.test.js +157 -0
  418. package/dist/src/dualOutput/DualOutputBridge.test.js.map +1 -0
  419. package/dist/src/dualOutput/DualOutputContext.d.ts +19 -0
  420. package/dist/src/dualOutput/DualOutputContext.js +22 -0
  421. package/dist/src/dualOutput/DualOutputContext.js.map +1 -0
  422. package/dist/src/dualOutput/index.d.ts +7 -0
  423. package/dist/src/dualOutput/index.js +8 -0
  424. package/dist/src/dualOutput/index.js.map +1 -0
  425. package/dist/src/export/index.d.ts +6 -0
  426. package/dist/src/export/index.js +7 -0
  427. package/dist/src/export/index.js.map +1 -0
  428. package/dist/src/gemini.d.ts +13 -0
  429. package/dist/src/gemini.js +908 -0
  430. package/dist/src/gemini.js.map +1 -0
  431. package/dist/src/gemini.test.d.ts +6 -0
  432. package/dist/src/gemini.test.js +975 -0
  433. package/dist/src/gemini.test.js.map +1 -0
  434. package/dist/src/generated/git-commit.d.ts +7 -0
  435. package/dist/src/generated/git-commit.js +10 -0
  436. package/dist/src/generated/git-commit.js.map +1 -0
  437. package/dist/src/i18n/index.d.ts +27 -0
  438. package/dist/src/i18n/index.js +213 -0
  439. package/dist/src/i18n/index.js.map +1 -0
  440. package/dist/src/i18n/index.test.d.ts +6 -0
  441. package/dist/src/i18n/index.test.js +103 -0
  442. package/dist/src/i18n/index.test.js.map +1 -0
  443. package/dist/src/i18n/languages.d.ts +43 -0
  444. package/dist/src/i18n/languages.js +138 -0
  445. package/dist/src/i18n/languages.js.map +1 -0
  446. package/dist/src/i18n/locales/ca.js +3951 -0
  447. package/dist/src/i18n/locales/de.js +2018 -0
  448. package/dist/src/i18n/locales/en.js +2161 -0
  449. package/dist/src/i18n/locales/fr.js +2013 -0
  450. package/dist/src/i18n/locales/ja.js +1780 -0
  451. package/dist/src/i18n/locales/pt.js +2005 -0
  452. package/dist/src/i18n/locales/ru.js +1993 -0
  453. package/dist/src/i18n/locales/zh-TW.js +1729 -0
  454. package/dist/src/i18n/locales/zh.js +1929 -0
  455. package/dist/src/i18n/mustTranslateKeys.d.ts +12 -0
  456. package/dist/src/i18n/mustTranslateKeys.js +111 -0
  457. package/dist/src/i18n/mustTranslateKeys.js.map +1 -0
  458. package/dist/src/i18n/mustTranslateKeys.test.d.ts +6 -0
  459. package/dist/src/i18n/mustTranslateKeys.test.js +103 -0
  460. package/dist/src/i18n/mustTranslateKeys.test.js.map +1 -0
  461. package/dist/src/i18n/translationDict.d.ts +9 -0
  462. package/dist/src/i18n/translationDict.js +17 -0
  463. package/dist/src/i18n/translationDict.js.map +1 -0
  464. package/dist/src/nonInteractive/control/ControlContext.d.ts +71 -0
  465. package/dist/src/nonInteractive/control/ControlContext.js +36 -0
  466. package/dist/src/nonInteractive/control/ControlContext.js.map +1 -0
  467. package/dist/src/nonInteractive/control/ControlDispatcher.d.ts +116 -0
  468. package/dist/src/nonInteractive/control/ControlDispatcher.js +290 -0
  469. package/dist/src/nonInteractive/control/ControlDispatcher.js.map +1 -0
  470. package/dist/src/nonInteractive/control/ControlDispatcher.test.d.ts +6 -0
  471. package/dist/src/nonInteractive/control/ControlDispatcher.test.js +614 -0
  472. package/dist/src/nonInteractive/control/ControlDispatcher.test.js.map +1 -0
  473. package/dist/src/nonInteractive/control/ControlService.d.ts +79 -0
  474. package/dist/src/nonInteractive/control/ControlService.js +139 -0
  475. package/dist/src/nonInteractive/control/ControlService.js.map +1 -0
  476. package/dist/src/nonInteractive/control/controllers/baseController.d.ts +53 -0
  477. package/dist/src/nonInteractive/control/controllers/baseController.js +136 -0
  478. package/dist/src/nonInteractive/control/controllers/baseController.js.map +1 -0
  479. package/dist/src/nonInteractive/control/controllers/hookController.d.ts +25 -0
  480. package/dist/src/nonInteractive/control/controllers/hookController.js +40 -0
  481. package/dist/src/nonInteractive/control/controllers/hookController.js.map +1 -0
  482. package/dist/src/nonInteractive/control/controllers/permissionController.d.ts +57 -0
  483. package/dist/src/nonInteractive/control/controllers/permissionController.js +361 -0
  484. package/dist/src/nonInteractive/control/controllers/permissionController.js.map +1 -0
  485. package/dist/src/nonInteractive/control/controllers/permissionController.test.d.ts +6 -0
  486. package/dist/src/nonInteractive/control/controllers/permissionController.test.js +140 -0
  487. package/dist/src/nonInteractive/control/controllers/permissionController.test.js.map +1 -0
  488. package/dist/src/nonInteractive/control/controllers/sdkMcpController.d.ts +54 -0
  489. package/dist/src/nonInteractive/control/controllers/sdkMcpController.js +80 -0
  490. package/dist/src/nonInteractive/control/controllers/sdkMcpController.js.map +1 -0
  491. package/dist/src/nonInteractive/control/controllers/systemController.d.ts +67 -0
  492. package/dist/src/nonInteractive/control/controllers/systemController.js +326 -0
  493. package/dist/src/nonInteractive/control/controllers/systemController.js.map +1 -0
  494. package/dist/src/nonInteractive/control/controllers/systemController.test.d.ts +6 -0
  495. package/dist/src/nonInteractive/control/controllers/systemController.test.js +121 -0
  496. package/dist/src/nonInteractive/control/controllers/systemController.test.js.map +1 -0
  497. package/dist/src/nonInteractive/control/types/serviceAPIs.d.ts +105 -0
  498. package/dist/src/nonInteractive/control/types/serviceAPIs.js +7 -0
  499. package/dist/src/nonInteractive/control/types/serviceAPIs.js.map +1 -0
  500. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.d.ts +505 -0
  501. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js +1041 -0
  502. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js.map +1 -0
  503. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.d.ts +6 -0
  504. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js +1304 -0
  505. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js.map +1 -0
  506. package/dist/src/nonInteractive/io/JsonOutputAdapter.d.ts +29 -0
  507. package/dist/src/nonInteractive/io/JsonOutputAdapter.js +64 -0
  508. package/dist/src/nonInteractive/io/JsonOutputAdapter.js.map +1 -0
  509. package/dist/src/nonInteractive/io/JsonOutputAdapter.test.d.ts +6 -0
  510. package/dist/src/nonInteractive/io/JsonOutputAdapter.test.js +684 -0
  511. package/dist/src/nonInteractive/io/JsonOutputAdapter.test.js.map +1 -0
  512. package/dist/src/nonInteractive/io/StreamJsonInputReader.d.ts +16 -0
  513. package/dist/src/nonInteractive/io/StreamJsonInputReader.js +54 -0
  514. package/dist/src/nonInteractive/io/StreamJsonInputReader.js.map +1 -0
  515. package/dist/src/nonInteractive/io/StreamJsonInputReader.test.d.ts +6 -0
  516. package/dist/src/nonInteractive/io/StreamJsonInputReader.test.js +178 -0
  517. package/dist/src/nonInteractive/io/StreamJsonInputReader.test.js.map +1 -0
  518. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.d.ts +84 -0
  519. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.dualOutput.test.d.ts +6 -0
  520. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.dualOutput.test.js +118 -0
  521. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.dualOutput.test.js.map +1 -0
  522. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.js +227 -0
  523. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.js.map +1 -0
  524. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.d.ts +6 -0
  525. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js +1046 -0
  526. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js.map +1 -0
  527. package/dist/src/nonInteractive/io/index.d.ts +6 -0
  528. package/dist/src/nonInteractive/io/index.js +7 -0
  529. package/dist/src/nonInteractive/io/index.js.map +1 -0
  530. package/dist/src/nonInteractive/session.d.ts +8 -0
  531. package/dist/src/nonInteractive/session.js +664 -0
  532. package/dist/src/nonInteractive/session.js.map +1 -0
  533. package/dist/src/nonInteractive/session.test.d.ts +6 -0
  534. package/dist/src/nonInteractive/session.test.js +680 -0
  535. package/dist/src/nonInteractive/session.test.js.map +1 -0
  536. package/dist/src/nonInteractive/types.d.ts +415 -0
  537. package/dist/src/nonInteractive/types.js +77 -0
  538. package/dist/src/nonInteractive/types.js.map +1 -0
  539. package/dist/src/nonInteractiveCli.d.ts +33 -0
  540. package/dist/src/nonInteractiveCli.js +1058 -0
  541. package/dist/src/nonInteractiveCli.js.map +1 -0
  542. package/dist/src/nonInteractiveCliCommands.d.ts +59 -0
  543. package/dist/src/nonInteractiveCliCommands.js +326 -0
  544. package/dist/src/nonInteractiveCliCommands.js.map +1 -0
  545. package/dist/src/nonInteractiveCliCommands.test.d.ts +6 -0
  546. package/dist/src/nonInteractiveCliCommands.test.js +484 -0
  547. package/dist/src/nonInteractiveCliCommands.test.js.map +1 -0
  548. package/dist/src/patches/is-in-ci.d.ts +7 -0
  549. package/dist/src/patches/is-in-ci.js +15 -0
  550. package/dist/src/patches/is-in-ci.js.map +1 -0
  551. package/dist/src/remoteInput/RemoteInputContext.d.ts +8 -0
  552. package/dist/src/remoteInput/RemoteInputContext.js +9 -0
  553. package/dist/src/remoteInput/RemoteInputContext.js.map +1 -0
  554. package/dist/src/remoteInput/RemoteInputWatcher.d.ts +83 -0
  555. package/dist/src/remoteInput/RemoteInputWatcher.js +201 -0
  556. package/dist/src/remoteInput/RemoteInputWatcher.js.map +1 -0
  557. package/dist/src/remoteInput/RemoteInputWatcher.test.d.ts +6 -0
  558. package/dist/src/remoteInput/RemoteInputWatcher.test.js +100 -0
  559. package/dist/src/remoteInput/RemoteInputWatcher.test.js.map +1 -0
  560. package/dist/src/remoteInput/index.d.ts +7 -0
  561. package/dist/src/remoteInput/index.js +8 -0
  562. package/dist/src/remoteInput/index.js.map +1 -0
  563. package/dist/src/serve/auth/deviceFlow.d.ts +595 -0
  564. package/dist/src/serve/auth/deviceFlow.js +1243 -0
  565. package/dist/src/serve/auth/deviceFlow.js.map +1 -0
  566. package/dist/src/serve/auth/deviceFlow.test.d.ts +6 -0
  567. package/dist/src/serve/auth/deviceFlow.test.js +1314 -0
  568. package/dist/src/serve/auth/deviceFlow.test.js.map +1 -0
  569. package/dist/src/serve/auth/qwenDeviceFlowProvider.d.ts +30 -0
  570. package/dist/src/serve/auth/qwenDeviceFlowProvider.js +331 -0
  571. package/dist/src/serve/auth/qwenDeviceFlowProvider.js.map +1 -0
  572. package/dist/src/serve/auth/qwenDeviceFlowProvider.test.d.ts +6 -0
  573. package/dist/src/serve/auth/qwenDeviceFlowProvider.test.js +301 -0
  574. package/dist/src/serve/auth/qwenDeviceFlowProvider.test.js.map +1 -0
  575. package/dist/src/serve/auth.d.ts +101 -0
  576. package/dist/src/serve/auth.js +216 -0
  577. package/dist/src/serve/auth.js.map +1 -0
  578. package/dist/src/serve/capabilities.d.ts +196 -0
  579. package/dist/src/serve/capabilities.js +227 -0
  580. package/dist/src/serve/capabilities.js.map +1 -0
  581. package/dist/src/serve/daemonStatusProvider.d.ts +14 -0
  582. package/dist/src/serve/daemonStatusProvider.js +252 -0
  583. package/dist/src/serve/daemonStatusProvider.js.map +1 -0
  584. package/dist/src/serve/debugMode.d.ts +27 -0
  585. package/dist/src/serve/debugMode.js +33 -0
  586. package/dist/src/serve/debugMode.js.map +1 -0
  587. package/dist/src/serve/demo.d.ts +11 -0
  588. package/dist/src/serve/demo.js +640 -0
  589. package/dist/src/serve/demo.js.map +1 -0
  590. package/dist/src/serve/envSnapshot.d.ts +28 -0
  591. package/dist/src/serve/envSnapshot.js +199 -0
  592. package/dist/src/serve/envSnapshot.js.map +1 -0
  593. package/dist/src/serve/envSnapshot.test.d.ts +6 -0
  594. package/dist/src/serve/envSnapshot.test.js +181 -0
  595. package/dist/src/serve/envSnapshot.test.js.map +1 -0
  596. package/dist/src/serve/eventBus.d.ts +6 -0
  597. package/dist/src/serve/eventBus.js +15 -0
  598. package/dist/src/serve/eventBus.js.map +1 -0
  599. package/dist/src/serve/fs/audit.d.ts +144 -0
  600. package/dist/src/serve/fs/audit.js +193 -0
  601. package/dist/src/serve/fs/audit.js.map +1 -0
  602. package/dist/src/serve/fs/audit.test.d.ts +6 -0
  603. package/dist/src/serve/fs/audit.test.js +246 -0
  604. package/dist/src/serve/fs/audit.test.js.map +1 -0
  605. package/dist/src/serve/fs/contract.test.d.ts +6 -0
  606. package/dist/src/serve/fs/contract.test.js +211 -0
  607. package/dist/src/serve/fs/contract.test.js.map +1 -0
  608. package/dist/src/serve/fs/errors.d.ts +87 -0
  609. package/dist/src/serve/fs/errors.js +128 -0
  610. package/dist/src/serve/fs/errors.js.map +1 -0
  611. package/dist/src/serve/fs/errors.test.d.ts +6 -0
  612. package/dist/src/serve/fs/errors.test.js +152 -0
  613. package/dist/src/serve/fs/errors.test.js.map +1 -0
  614. package/dist/src/serve/fs/index.d.ts +10 -0
  615. package/dist/src/serve/fs/index.js +11 -0
  616. package/dist/src/serve/fs/index.js.map +1 -0
  617. package/dist/src/serve/fs/paths.d.ts +103 -0
  618. package/dist/src/serve/fs/paths.js +433 -0
  619. package/dist/src/serve/fs/paths.js.map +1 -0
  620. package/dist/src/serve/fs/paths.test.d.ts +6 -0
  621. package/dist/src/serve/fs/paths.test.js +309 -0
  622. package/dist/src/serve/fs/paths.test.js.map +1 -0
  623. package/dist/src/serve/fs/policy.d.ts +142 -0
  624. package/dist/src/serve/fs/policy.js +189 -0
  625. package/dist/src/serve/fs/policy.js.map +1 -0
  626. package/dist/src/serve/fs/policy.test.d.ts +6 -0
  627. package/dist/src/serve/fs/policy.test.js +193 -0
  628. package/dist/src/serve/fs/policy.test.js.map +1 -0
  629. package/dist/src/serve/fs/workspaceFileSystem.d.ts +157 -0
  630. package/dist/src/serve/fs/workspaceFileSystem.js +1377 -0
  631. package/dist/src/serve/fs/workspaceFileSystem.js.map +1 -0
  632. package/dist/src/serve/fs/workspaceFileSystem.test.d.ts +6 -0
  633. package/dist/src/serve/fs/workspaceFileSystem.test.js +880 -0
  634. package/dist/src/serve/fs/workspaceFileSystem.test.js.map +1 -0
  635. package/dist/src/serve/httpAcpBridge.d.ts +80 -0
  636. package/dist/src/serve/httpAcpBridge.js +3559 -0
  637. package/dist/src/serve/httpAcpBridge.js.map +1 -0
  638. package/dist/src/serve/httpAcpBridge.test.d.ts +6 -0
  639. package/dist/src/serve/httpAcpBridge.test.js +4987 -0
  640. package/dist/src/serve/httpAcpBridge.test.js.map +1 -0
  641. package/dist/src/serve/inMemoryChannel.d.ts +6 -0
  642. package/dist/src/serve/inMemoryChannel.js +14 -0
  643. package/dist/src/serve/inMemoryChannel.js.map +1 -0
  644. package/dist/src/serve/index.d.ts +15 -0
  645. package/dist/src/serve/index.js +16 -0
  646. package/dist/src/serve/index.js.map +1 -0
  647. package/dist/src/serve/loopbackBinds.d.ts +18 -0
  648. package/dist/src/serve/loopbackBinds.js +33 -0
  649. package/dist/src/serve/loopbackBinds.js.map +1 -0
  650. package/dist/src/serve/routes/workspaceFileRead.d.ts +90 -0
  651. package/dist/src/serve/routes/workspaceFileRead.js +458 -0
  652. package/dist/src/serve/routes/workspaceFileRead.js.map +1 -0
  653. package/dist/src/serve/routes/workspaceFileRead.test.d.ts +6 -0
  654. package/dist/src/serve/routes/workspaceFileRead.test.js +453 -0
  655. package/dist/src/serve/routes/workspaceFileRead.test.js.map +1 -0
  656. package/dist/src/serve/routes/workspaceFileWrite.d.ts +17 -0
  657. package/dist/src/serve/routes/workspaceFileWrite.js +224 -0
  658. package/dist/src/serve/routes/workspaceFileWrite.js.map +1 -0
  659. package/dist/src/serve/routes/workspaceFileWrite.test.d.ts +6 -0
  660. package/dist/src/serve/routes/workspaceFileWrite.test.js +223 -0
  661. package/dist/src/serve/routes/workspaceFileWrite.test.js.map +1 -0
  662. package/dist/src/serve/runQwenServe.d.ts +67 -0
  663. package/dist/src/serve/runQwenServe.js +616 -0
  664. package/dist/src/serve/runQwenServe.js.map +1 -0
  665. package/dist/src/serve/server.d.ts +125 -0
  666. package/dist/src/serve/server.js +2297 -0
  667. package/dist/src/serve/server.js.map +1 -0
  668. package/dist/src/serve/status.d.ts +6 -0
  669. package/dist/src/serve/status.js +13 -0
  670. package/dist/src/serve/status.js.map +1 -0
  671. package/dist/src/serve/types.d.ts +175 -0
  672. package/dist/src/serve/types.js +10 -0
  673. package/dist/src/serve/types.js.map +1 -0
  674. package/dist/src/serve/workspaceAgents.d.ts +47 -0
  675. package/dist/src/serve/workspaceAgents.js +1171 -0
  676. package/dist/src/serve/workspaceAgents.js.map +1 -0
  677. package/dist/src/serve/workspaceAgents.test.d.ts +6 -0
  678. package/dist/src/serve/workspaceAgents.test.js +823 -0
  679. package/dist/src/serve/workspaceAgents.test.js.map +1 -0
  680. package/dist/src/serve/workspaceMemory.d.ts +60 -0
  681. package/dist/src/serve/workspaceMemory.js +323 -0
  682. package/dist/src/serve/workspaceMemory.js.map +1 -0
  683. package/dist/src/serve/workspaceMemory.test.d.ts +6 -0
  684. package/dist/src/serve/workspaceMemory.test.js +418 -0
  685. package/dist/src/serve/workspaceMemory.test.js.map +1 -0
  686. package/dist/src/services/BuiltinCommandLoader.d.ts +24 -0
  687. package/dist/src/services/BuiltinCommandLoader.js +159 -0
  688. package/dist/src/services/BuiltinCommandLoader.js.map +1 -0
  689. package/dist/src/services/BuiltinCommandLoader.test.d.ts +6 -0
  690. package/dist/src/services/BuiltinCommandLoader.test.js +234 -0
  691. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -0
  692. package/dist/src/services/BundledSkillLoader.d.ts +17 -0
  693. package/dist/src/services/BundledSkillLoader.js +97 -0
  694. package/dist/src/services/BundledSkillLoader.js.map +1 -0
  695. package/dist/src/services/BundledSkillLoader.test.d.ts +6 -0
  696. package/dist/src/services/BundledSkillLoader.test.js +301 -0
  697. package/dist/src/services/BundledSkillLoader.test.js.map +1 -0
  698. package/dist/src/services/CommandService.d.ts +69 -0
  699. package/dist/src/services/CommandService.js +128 -0
  700. package/dist/src/services/CommandService.js.map +1 -0
  701. package/dist/src/services/CommandService.test.d.ts +6 -0
  702. package/dist/src/services/CommandService.test.js +263 -0
  703. package/dist/src/services/CommandService.test.js.map +1 -0
  704. package/dist/src/services/FileCommandLoader-extension.test.d.ts +6 -0
  705. package/dist/src/services/FileCommandLoader-extension.test.js +279 -0
  706. package/dist/src/services/FileCommandLoader-extension.test.js.map +1 -0
  707. package/dist/src/services/FileCommandLoader-markdown.test.d.ts +6 -0
  708. package/dist/src/services/FileCommandLoader-markdown.test.js +111 -0
  709. package/dist/src/services/FileCommandLoader-markdown.test.js.map +1 -0
  710. package/dist/src/services/FileCommandLoader.d.ts +64 -0
  711. package/dist/src/services/FileCommandLoader.js +259 -0
  712. package/dist/src/services/FileCommandLoader.js.map +1 -0
  713. package/dist/src/services/McpPromptLoader.d.ts +35 -0
  714. package/dist/src/services/McpPromptLoader.js +261 -0
  715. package/dist/src/services/McpPromptLoader.js.map +1 -0
  716. package/dist/src/services/McpPromptLoader.test.d.ts +6 -0
  717. package/dist/src/services/McpPromptLoader.test.js +341 -0
  718. package/dist/src/services/McpPromptLoader.test.js.map +1 -0
  719. package/dist/src/services/SkillCommandLoader.d.ts +23 -0
  720. package/dist/src/services/SkillCommandLoader.js +110 -0
  721. package/dist/src/services/SkillCommandLoader.js.map +1 -0
  722. package/dist/src/services/SkillCommandLoader.test.d.ts +6 -0
  723. package/dist/src/services/SkillCommandLoader.test.js +307 -0
  724. package/dist/src/services/SkillCommandLoader.test.js.map +1 -0
  725. package/dist/src/services/command-factory.d.ts +25 -0
  726. package/dist/src/services/command-factory.js +122 -0
  727. package/dist/src/services/command-factory.js.map +1 -0
  728. package/dist/src/services/command-factory.test.d.ts +6 -0
  729. package/dist/src/services/command-factory.test.js +31 -0
  730. package/dist/src/services/command-factory.test.js.map +1 -0
  731. package/dist/src/services/command-migration-tool.d.ts +39 -0
  732. package/dist/src/services/command-migration-tool.js +135 -0
  733. package/dist/src/services/command-migration-tool.js.map +1 -0
  734. package/dist/src/services/command-migration-tool.test.d.ts +6 -0
  735. package/dist/src/services/command-migration-tool.test.js +175 -0
  736. package/dist/src/services/command-migration-tool.test.js.map +1 -0
  737. package/dist/src/services/commandMetadata.d.ts +21 -0
  738. package/dist/src/services/commandMetadata.js +106 -0
  739. package/dist/src/services/commandMetadata.js.map +1 -0
  740. package/dist/src/services/commandMetadata.test.d.ts +6 -0
  741. package/dist/src/services/commandMetadata.test.js +216 -0
  742. package/dist/src/services/commandMetadata.test.js.map +1 -0
  743. package/dist/src/services/commandUtils.d.ts +36 -0
  744. package/dist/src/services/commandUtils.js +57 -0
  745. package/dist/src/services/commandUtils.js.map +1 -0
  746. package/dist/src/services/commandUtils.test.d.ts +6 -0
  747. package/dist/src/services/commandUtils.test.js +159 -0
  748. package/dist/src/services/commandUtils.test.js.map +1 -0
  749. package/dist/src/services/insight/generators/DataProcessor.d.ts +23 -0
  750. package/dist/src/services/insight/generators/DataProcessor.js +1001 -0
  751. package/dist/src/services/insight/generators/DataProcessor.js.map +1 -0
  752. package/dist/src/services/insight/generators/DataProcessor.test.d.ts +6 -0
  753. package/dist/src/services/insight/generators/DataProcessor.test.js +1210 -0
  754. package/dist/src/services/insight/generators/DataProcessor.test.js.map +1 -0
  755. package/dist/src/services/insight/generators/StaticInsightGenerator.d.ts +16 -0
  756. package/dist/src/services/insight/generators/StaticInsightGenerator.js +63 -0
  757. package/dist/src/services/insight/generators/StaticInsightGenerator.js.map +1 -0
  758. package/dist/src/services/insight/generators/StaticInsightGenerator.test.d.ts +6 -0
  759. package/dist/src/services/insight/generators/StaticInsightGenerator.test.js +60 -0
  760. package/dist/src/services/insight/generators/StaticInsightGenerator.test.js.map +1 -0
  761. package/dist/src/services/insight/generators/TemplateRenderer.d.ts +9 -0
  762. package/dist/src/services/insight/generators/TemplateRenderer.js +49 -0
  763. package/dist/src/services/insight/generators/TemplateRenderer.js.map +1 -0
  764. package/dist/src/services/insight/types/QualitativeInsightTypes.d.ts +74 -0
  765. package/dist/src/services/insight/types/QualitativeInsightTypes.js +2 -0
  766. package/dist/src/services/insight/types/QualitativeInsightTypes.js.map +1 -0
  767. package/dist/src/services/insight/types/StaticInsightTypes.d.ts +59 -0
  768. package/dist/src/services/insight/types/StaticInsightTypes.js +7 -0
  769. package/dist/src/services/insight/types/StaticInsightTypes.js.map +1 -0
  770. package/dist/src/services/markdown-command-parser.d.ts +52 -0
  771. package/dist/src/services/markdown-command-parser.js +60 -0
  772. package/dist/src/services/markdown-command-parser.js.map +1 -0
  773. package/dist/src/services/markdown-command-parser.test.d.ts +6 -0
  774. package/dist/src/services/markdown-command-parser.test.js +146 -0
  775. package/dist/src/services/markdown-command-parser.test.js.map +1 -0
  776. package/dist/src/services/notificationService.d.ts +19 -0
  777. package/dist/src/services/notificationService.js +64 -0
  778. package/dist/src/services/notificationService.js.map +1 -0
  779. package/dist/src/services/notificationService.test.d.ts +6 -0
  780. package/dist/src/services/notificationService.test.js +114 -0
  781. package/dist/src/services/notificationService.test.js.map +1 -0
  782. package/dist/src/services/prompt-processors/argumentProcessor.d.ts +16 -0
  783. package/dist/src/services/prompt-processors/argumentProcessor.js +21 -0
  784. package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -0
  785. package/dist/src/services/prompt-processors/atFileProcessor.d.ts +12 -0
  786. package/dist/src/services/prompt-processors/atFileProcessor.js +63 -0
  787. package/dist/src/services/prompt-processors/atFileProcessor.js.map +1 -0
  788. package/dist/src/services/prompt-processors/atFileProcessor.test.d.ts +6 -0
  789. package/dist/src/services/prompt-processors/atFileProcessor.test.js +174 -0
  790. package/dist/src/services/prompt-processors/atFileProcessor.test.js.map +1 -0
  791. package/dist/src/services/prompt-processors/injectionParser.d.ts +29 -0
  792. package/dist/src/services/prompt-processors/injectionParser.js +60 -0
  793. package/dist/src/services/prompt-processors/injectionParser.js.map +1 -0
  794. package/dist/src/services/prompt-processors/injectionParser.test.d.ts +6 -0
  795. package/dist/src/services/prompt-processors/injectionParser.test.js +189 -0
  796. package/dist/src/services/prompt-processors/injectionParser.test.js.map +1 -0
  797. package/dist/src/services/prompt-processors/shellProcessor.d.ts +27 -0
  798. package/dist/src/services/prompt-processors/shellProcessor.js +146 -0
  799. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -0
  800. package/dist/src/services/prompt-processors/types.d.ts +45 -0
  801. package/dist/src/services/prompt-processors/types.js +20 -0
  802. package/dist/src/services/prompt-processors/types.js.map +1 -0
  803. package/dist/src/services/test-commands/example.md +5 -0
  804. package/dist/src/services/tips/index.d.ts +10 -0
  805. package/dist/src/services/tips/index.js +21 -0
  806. package/dist/src/services/tips/index.js.map +1 -0
  807. package/dist/src/services/tips/tipHistory.d.ts +49 -0
  808. package/dist/src/services/tips/tipHistory.js +138 -0
  809. package/dist/src/services/tips/tipHistory.js.map +1 -0
  810. package/dist/src/services/tips/tipHistory.test.d.ts +6 -0
  811. package/dist/src/services/tips/tipHistory.test.js +102 -0
  812. package/dist/src/services/tips/tipHistory.test.js.map +1 -0
  813. package/dist/src/services/tips/tipRegistry.d.ts +32 -0
  814. package/dist/src/services/tips/tipRegistry.js +148 -0
  815. package/dist/src/services/tips/tipRegistry.js.map +1 -0
  816. package/dist/src/services/tips/tipRegistry.test.d.ts +6 -0
  817. package/dist/src/services/tips/tipRegistry.test.js +65 -0
  818. package/dist/src/services/tips/tipRegistry.test.js.map +1 -0
  819. package/dist/src/services/tips/tipScheduler.d.ts +21 -0
  820. package/dist/src/services/tips/tipScheduler.js +38 -0
  821. package/dist/src/services/tips/tipScheduler.js.map +1 -0
  822. package/dist/src/services/tips/tipScheduler.test.d.ts +6 -0
  823. package/dist/src/services/tips/tipScheduler.test.js +126 -0
  824. package/dist/src/services/tips/tipScheduler.test.js.map +1 -0
  825. package/dist/src/services/types.d.ts +22 -0
  826. package/dist/src/services/types.js +7 -0
  827. package/dist/src/services/types.js.map +1 -0
  828. package/dist/src/startup/worktreeStartup.d.ts +112 -0
  829. package/dist/src/startup/worktreeStartup.js +350 -0
  830. package/dist/src/startup/worktreeStartup.js.map +1 -0
  831. package/dist/src/startup/worktreeStartup.test.d.ts +6 -0
  832. package/dist/src/startup/worktreeStartup.test.js +332 -0
  833. package/dist/src/startup/worktreeStartup.test.js.map +1 -0
  834. package/dist/src/test-utils/customMatchers.d.ts +14 -0
  835. package/dist/src/test-utils/customMatchers.js +40 -0
  836. package/dist/src/test-utils/customMatchers.js.map +1 -0
  837. package/dist/src/test-utils/mockCommandContext.d.ts +18 -0
  838. package/dist/src/test-utils/mockCommandContext.js +107 -0
  839. package/dist/src/test-utils/mockCommandContext.js.map +1 -0
  840. package/dist/src/test-utils/mockCommandContext.test.d.ts +6 -0
  841. package/dist/src/test-utils/mockCommandContext.test.js +51 -0
  842. package/dist/src/test-utils/mockCommandContext.test.js.map +1 -0
  843. package/dist/src/test-utils/render.d.ts +14 -0
  844. package/dist/src/test-utils/render.js +15 -0
  845. package/dist/src/test-utils/render.js.map +1 -0
  846. package/dist/src/ui/App.d.ts +6 -0
  847. package/dist/src/ui/App.js +65 -0
  848. package/dist/src/ui/App.js.map +1 -0
  849. package/dist/src/ui/AppContainer.d.ts +24 -0
  850. package/dist/src/ui/AppContainer.js +2853 -0
  851. package/dist/src/ui/AppContainer.js.map +1 -0
  852. package/dist/src/ui/AppContainer.test.d.ts +6 -0
  853. package/dist/src/ui/AppContainer.test.js +2368 -0
  854. package/dist/src/ui/AppContainer.test.js.map +1 -0
  855. package/dist/src/ui/CommandFormatMigrationNudge.d.ts +14 -0
  856. package/dist/src/ui/CommandFormatMigrationNudge.js +44 -0
  857. package/dist/src/ui/CommandFormatMigrationNudge.js.map +1 -0
  858. package/dist/src/ui/FeedbackDialog.d.ts +9 -0
  859. package/dist/src/ui/FeedbackDialog.js +44 -0
  860. package/dist/src/ui/FeedbackDialog.js.map +1 -0
  861. package/dist/src/ui/IdeIntegrationNudge.d.ts +16 -0
  862. package/dist/src/ui/IdeIntegrationNudge.js +53 -0
  863. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -0
  864. package/dist/src/ui/auth/AuthDialog.d.ts +7 -0
  865. package/dist/src/ui/auth/AuthDialog.js +214 -0
  866. package/dist/src/ui/auth/AuthDialog.js.map +1 -0
  867. package/dist/src/ui/auth/AuthDialog.test.d.ts +6 -0
  868. package/dist/src/ui/auth/AuthDialog.test.js +1029 -0
  869. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -0
  870. package/dist/src/ui/auth/AuthInProgress.d.ts +11 -0
  871. package/dist/src/ui/auth/AuthInProgress.js +24 -0
  872. package/dist/src/ui/auth/AuthInProgress.js.map +1 -0
  873. package/dist/src/ui/auth/ProviderSetupSteps.d.ts +11 -0
  874. package/dist/src/ui/auth/ProviderSetupSteps.js +320 -0
  875. package/dist/src/ui/auth/ProviderSetupSteps.js.map +1 -0
  876. package/dist/src/ui/auth/ProviderSetupSteps.test.d.ts +6 -0
  877. package/dist/src/ui/auth/ProviderSetupSteps.test.js +322 -0
  878. package/dist/src/ui/auth/ProviderSetupSteps.test.js.map +1 -0
  879. package/dist/src/ui/auth/useAuth.d.ts +76 -0
  880. package/dist/src/ui/auth/useAuth.js +192 -0
  881. package/dist/src/ui/auth/useAuth.js.map +1 -0
  882. package/dist/src/ui/auth/useAuth.test.d.ts +6 -0
  883. package/dist/src/ui/auth/useAuth.test.js +267 -0
  884. package/dist/src/ui/auth/useAuth.test.js.map +1 -0
  885. package/dist/src/ui/auth/useProviderSetupFlow.d.ts +54 -0
  886. package/dist/src/ui/auth/useProviderSetupFlow.js +380 -0
  887. package/dist/src/ui/auth/useProviderSetupFlow.js.map +1 -0
  888. package/dist/src/ui/colors.d.ts +7 -0
  889. package/dist/src/ui/colors.js +60 -0
  890. package/dist/src/ui/colors.js.map +1 -0
  891. package/dist/src/ui/commands/aboutCommand.d.ts +7 -0
  892. package/dist/src/ui/commands/aboutCommand.js +69 -0
  893. package/dist/src/ui/commands/aboutCommand.js.map +1 -0
  894. package/dist/src/ui/commands/agentsCommand.d.ts +7 -0
  895. package/dist/src/ui/commands/agentsCommand.js +42 -0
  896. package/dist/src/ui/commands/agentsCommand.js.map +1 -0
  897. package/dist/src/ui/commands/approvalModeCommand.d.ts +7 -0
  898. package/dist/src/ui/commands/approvalModeCommand.js +89 -0
  899. package/dist/src/ui/commands/approvalModeCommand.js.map +1 -0
  900. package/dist/src/ui/commands/approvalModeCommand.test.d.ts +6 -0
  901. package/dist/src/ui/commands/approvalModeCommand.test.js +112 -0
  902. package/dist/src/ui/commands/approvalModeCommand.test.js.map +1 -0
  903. package/dist/src/ui/commands/arenaCommand.agentComplete.test.d.ts +6 -0
  904. package/dist/src/ui/commands/arenaCommand.agentComplete.test.js +118 -0
  905. package/dist/src/ui/commands/arenaCommand.agentComplete.test.js.map +1 -0
  906. package/dist/src/ui/commands/arenaCommand.d.ts +7 -0
  907. package/dist/src/ui/commands/arenaCommand.js +519 -0
  908. package/dist/src/ui/commands/arenaCommand.js.map +1 -0
  909. package/dist/src/ui/commands/arenaCommand.test.d.ts +6 -0
  910. package/dist/src/ui/commands/arenaCommand.test.js +352 -0
  911. package/dist/src/ui/commands/arenaCommand.test.js.map +1 -0
  912. package/dist/src/ui/commands/authCommand.d.ts +7 -0
  913. package/dist/src/ui/commands/authCommand.js +31 -0
  914. package/dist/src/ui/commands/authCommand.js.map +1 -0
  915. package/dist/src/ui/commands/branchCommand.d.ts +7 -0
  916. package/dist/src/ui/commands/branchCommand.js +49 -0
  917. package/dist/src/ui/commands/branchCommand.js.map +1 -0
  918. package/dist/src/ui/commands/branchCommand.test.d.ts +6 -0
  919. package/dist/src/ui/commands/branchCommand.test.js +57 -0
  920. package/dist/src/ui/commands/branchCommand.test.js.map +1 -0
  921. package/dist/src/ui/commands/btwCommand.d.ts +7 -0
  922. package/dist/src/ui/commands/btwCommand.js +164 -0
  923. package/dist/src/ui/commands/btwCommand.js.map +1 -0
  924. package/dist/src/ui/commands/btwCommand.test.d.ts +6 -0
  925. package/dist/src/ui/commands/btwCommand.test.js +338 -0
  926. package/dist/src/ui/commands/btwCommand.test.js.map +1 -0
  927. package/dist/src/ui/commands/bugCommand.d.ts +7 -0
  928. package/dist/src/ui/commands/bugCommand.js +54 -0
  929. package/dist/src/ui/commands/bugCommand.js.map +1 -0
  930. package/dist/src/ui/commands/clearCommand.d.ts +7 -0
  931. package/dist/src/ui/commands/clearCommand.js +122 -0
  932. package/dist/src/ui/commands/clearCommand.js.map +1 -0
  933. package/dist/src/ui/commands/compressCommand.d.ts +7 -0
  934. package/dist/src/ui/commands/compressCommand.js +178 -0
  935. package/dist/src/ui/commands/compressCommand.js.map +1 -0
  936. package/dist/src/ui/commands/contextCommand.d.ts +14 -0
  937. package/dist/src/ui/commands/contextCommand.js +443 -0
  938. package/dist/src/ui/commands/contextCommand.js.map +1 -0
  939. package/dist/src/ui/commands/contextCommand.test.d.ts +6 -0
  940. package/dist/src/ui/commands/contextCommand.test.js +184 -0
  941. package/dist/src/ui/commands/contextCommand.test.js.map +1 -0
  942. package/dist/src/ui/commands/copyCommand.d.ts +7 -0
  943. package/dist/src/ui/commands/copyCommand.js +374 -0
  944. package/dist/src/ui/commands/copyCommand.js.map +1 -0
  945. package/dist/src/ui/commands/deleteCommand.d.ts +7 -0
  946. package/dist/src/ui/commands/deleteCommand.js +19 -0
  947. package/dist/src/ui/commands/deleteCommand.js.map +1 -0
  948. package/dist/src/ui/commands/deleteCommand.test.d.ts +6 -0
  949. package/dist/src/ui/commands/deleteCommand.test.js +27 -0
  950. package/dist/src/ui/commands/deleteCommand.test.js.map +1 -0
  951. package/dist/src/ui/commands/diffCommand.d.ts +42 -0
  952. package/dist/src/ui/commands/diffCommand.js +206 -0
  953. package/dist/src/ui/commands/diffCommand.js.map +1 -0
  954. package/dist/src/ui/commands/diffCommand.test.d.ts +6 -0
  955. package/dist/src/ui/commands/diffCommand.test.js +482 -0
  956. package/dist/src/ui/commands/diffCommand.test.js.map +1 -0
  957. package/dist/src/ui/commands/directoryCommand.d.ts +13 -0
  958. package/dist/src/ui/commands/directoryCommand.js +252 -0
  959. package/dist/src/ui/commands/directoryCommand.js.map +1 -0
  960. package/dist/src/ui/commands/docsCommand.d.ts +7 -0
  961. package/dist/src/ui/commands/docsCommand.js +49 -0
  962. package/dist/src/ui/commands/docsCommand.js.map +1 -0
  963. package/dist/src/ui/commands/doctorCommand.d.ts +7 -0
  964. package/dist/src/ui/commands/doctorCommand.js +530 -0
  965. package/dist/src/ui/commands/doctorCommand.js.map +1 -0
  966. package/dist/src/ui/commands/doctorCommand.test.d.ts +6 -0
  967. package/dist/src/ui/commands/doctorCommand.test.js +804 -0
  968. package/dist/src/ui/commands/doctorCommand.test.js.map +1 -0
  969. package/dist/src/ui/commands/dreamCommand.d.ts +7 -0
  970. package/dist/src/ui/commands/dreamCommand.js +42 -0
  971. package/dist/src/ui/commands/dreamCommand.js.map +1 -0
  972. package/dist/src/ui/commands/dreamCommand.test.d.ts +6 -0
  973. package/dist/src/ui/commands/dreamCommand.test.js +39 -0
  974. package/dist/src/ui/commands/dreamCommand.test.js.map +1 -0
  975. package/dist/src/ui/commands/editorCommand.d.ts +7 -0
  976. package/dist/src/ui/commands/editorCommand.js +20 -0
  977. package/dist/src/ui/commands/editorCommand.js.map +1 -0
  978. package/dist/src/ui/commands/exportCommand.d.ts +10 -0
  979. package/dist/src/ui/commands/exportCommand.js +373 -0
  980. package/dist/src/ui/commands/exportCommand.js.map +1 -0
  981. package/dist/src/ui/commands/exportCommand.test.d.ts +6 -0
  982. package/dist/src/ui/commands/exportCommand.test.js +905 -0
  983. package/dist/src/ui/commands/exportCommand.test.js.map +1 -0
  984. package/dist/src/ui/commands/extensionsCommand.d.ts +10 -0
  985. package/dist/src/ui/commands/extensionsCommand.js +185 -0
  986. package/dist/src/ui/commands/extensionsCommand.js.map +1 -0
  987. package/dist/src/ui/commands/forgetCommand.d.ts +7 -0
  988. package/dist/src/ui/commands/forgetCommand.js +45 -0
  989. package/dist/src/ui/commands/forgetCommand.js.map +1 -0
  990. package/dist/src/ui/commands/forkCommand.d.ts +7 -0
  991. package/dist/src/ui/commands/forkCommand.js +163 -0
  992. package/dist/src/ui/commands/forkCommand.js.map +1 -0
  993. package/dist/src/ui/commands/forkCommand.test.d.ts +6 -0
  994. package/dist/src/ui/commands/forkCommand.test.js +229 -0
  995. package/dist/src/ui/commands/forkCommand.test.js.map +1 -0
  996. package/dist/src/ui/commands/goalCommand.d.ts +7 -0
  997. package/dist/src/ui/commands/goalCommand.js +181 -0
  998. package/dist/src/ui/commands/goalCommand.js.map +1 -0
  999. package/dist/src/ui/commands/goalCommand.test.d.ts +6 -0
  1000. package/dist/src/ui/commands/goalCommand.test.js +328 -0
  1001. package/dist/src/ui/commands/goalCommand.test.js.map +1 -0
  1002. package/dist/src/ui/commands/helpCommand.d.ts +7 -0
  1003. package/dist/src/ui/commands/helpCommand.js +21 -0
  1004. package/dist/src/ui/commands/helpCommand.js.map +1 -0
  1005. package/dist/src/ui/commands/hooksCommand.d.ts +7 -0
  1006. package/dist/src/ui/commands/hooksCommand.js +153 -0
  1007. package/dist/src/ui/commands/hooksCommand.js.map +1 -0
  1008. package/dist/src/ui/commands/hooksCommand.test.d.ts +6 -0
  1009. package/dist/src/ui/commands/hooksCommand.test.js +189 -0
  1010. package/dist/src/ui/commands/hooksCommand.test.js.map +1 -0
  1011. package/dist/src/ui/commands/ideCommand.d.ts +7 -0
  1012. package/dist/src/ui/commands/ideCommand.js +256 -0
  1013. package/dist/src/ui/commands/ideCommand.js.map +1 -0
  1014. package/dist/src/ui/commands/initCommand.d.ts +7 -0
  1015. package/dist/src/ui/commands/initCommand.js +119 -0
  1016. package/dist/src/ui/commands/initCommand.js.map +1 -0
  1017. package/dist/src/ui/commands/insightCommand.d.ts +7 -0
  1018. package/dist/src/ui/commands/insightCommand.js +195 -0
  1019. package/dist/src/ui/commands/insightCommand.js.map +1 -0
  1020. package/dist/src/ui/commands/insightCommand.test.d.ts +6 -0
  1021. package/dist/src/ui/commands/insightCommand.test.js +173 -0
  1022. package/dist/src/ui/commands/insightCommand.test.js.map +1 -0
  1023. package/dist/src/ui/commands/languageCommand.d.ts +7 -0
  1024. package/dist/src/ui/commands/languageCommand.js +291 -0
  1025. package/dist/src/ui/commands/languageCommand.js.map +1 -0
  1026. package/dist/src/ui/commands/languageCommand.test.d.ts +6 -0
  1027. package/dist/src/ui/commands/languageCommand.test.js +664 -0
  1028. package/dist/src/ui/commands/languageCommand.test.js.map +1 -0
  1029. package/dist/src/ui/commands/lspCommand.d.ts +7 -0
  1030. package/dist/src/ui/commands/lspCommand.js +62 -0
  1031. package/dist/src/ui/commands/lspCommand.js.map +1 -0
  1032. package/dist/src/ui/commands/lspCommand.test.d.ts +6 -0
  1033. package/dist/src/ui/commands/lspCommand.test.js +175 -0
  1034. package/dist/src/ui/commands/lspCommand.test.js.map +1 -0
  1035. package/dist/src/ui/commands/mcpCommand.d.ts +7 -0
  1036. package/dist/src/ui/commands/mcpCommand.js +21 -0
  1037. package/dist/src/ui/commands/mcpCommand.js.map +1 -0
  1038. package/dist/src/ui/commands/memoryCommand.d.ts +7 -0
  1039. package/dist/src/ui/commands/memoryCommand.js +21 -0
  1040. package/dist/src/ui/commands/memoryCommand.js.map +1 -0
  1041. package/dist/src/ui/commands/modelCommand.d.ts +7 -0
  1042. package/dist/src/ui/commands/modelCommand.js +226 -0
  1043. package/dist/src/ui/commands/modelCommand.js.map +1 -0
  1044. package/dist/src/ui/commands/modelCommand.test.d.ts +6 -0
  1045. package/dist/src/ui/commands/modelCommand.test.js +503 -0
  1046. package/dist/src/ui/commands/modelCommand.test.js.map +1 -0
  1047. package/dist/src/ui/commands/permissionsCommand.d.ts +7 -0
  1048. package/dist/src/ui/commands/permissionsCommand.js +20 -0
  1049. package/dist/src/ui/commands/permissionsCommand.js.map +1 -0
  1050. package/dist/src/ui/commands/permissionsCommand.test.d.ts +6 -0
  1051. package/dist/src/ui/commands/permissionsCommand.test.js +30 -0
  1052. package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -0
  1053. package/dist/src/ui/commands/planCommand.d.ts +7 -0
  1054. package/dist/src/ui/commands/planCommand.js +88 -0
  1055. package/dist/src/ui/commands/planCommand.js.map +1 -0
  1056. package/dist/src/ui/commands/planCommand.test.d.ts +6 -0
  1057. package/dist/src/ui/commands/planCommand.test.js +113 -0
  1058. package/dist/src/ui/commands/planCommand.test.js.map +1 -0
  1059. package/dist/src/ui/commands/quitCommand.d.ts +7 -0
  1060. package/dist/src/ui/commands/quitCommand.js +38 -0
  1061. package/dist/src/ui/commands/quitCommand.js.map +1 -0
  1062. package/dist/src/ui/commands/recapCommand.d.ts +7 -0
  1063. package/dist/src/ui/commands/recapCommand.js +56 -0
  1064. package/dist/src/ui/commands/recapCommand.js.map +1 -0
  1065. package/dist/src/ui/commands/rememberCommand.d.ts +7 -0
  1066. package/dist/src/ui/commands/rememberCommand.js +54 -0
  1067. package/dist/src/ui/commands/rememberCommand.js.map +1 -0
  1068. package/dist/src/ui/commands/renameCommand.d.ts +7 -0
  1069. package/dist/src/ui/commands/renameCommand.js +208 -0
  1070. package/dist/src/ui/commands/renameCommand.js.map +1 -0
  1071. package/dist/src/ui/commands/renameCommand.test.d.ts +6 -0
  1072. package/dist/src/ui/commands/renameCommand.test.js +414 -0
  1073. package/dist/src/ui/commands/renameCommand.test.js.map +1 -0
  1074. package/dist/src/ui/commands/restoreCommand.d.ts +8 -0
  1075. package/dist/src/ui/commands/restoreCommand.js +159 -0
  1076. package/dist/src/ui/commands/restoreCommand.js.map +1 -0
  1077. package/dist/src/ui/commands/resumeCommand.d.ts +7 -0
  1078. package/dist/src/ui/commands/resumeCommand.js +65 -0
  1079. package/dist/src/ui/commands/resumeCommand.js.map +1 -0
  1080. package/dist/src/ui/commands/resumeCommand.test.d.ts +6 -0
  1081. package/dist/src/ui/commands/resumeCommand.test.js +135 -0
  1082. package/dist/src/ui/commands/resumeCommand.test.js.map +1 -0
  1083. package/dist/src/ui/commands/rewindCommand.d.ts +7 -0
  1084. package/dist/src/ui/commands/rewindCommand.js +20 -0
  1085. package/dist/src/ui/commands/rewindCommand.js.map +1 -0
  1086. package/dist/src/ui/commands/settingsCommand.d.ts +7 -0
  1087. package/dist/src/ui/commands/settingsCommand.js +20 -0
  1088. package/dist/src/ui/commands/settingsCommand.js.map +1 -0
  1089. package/dist/src/ui/commands/setupGithubCommand.d.ts +9 -0
  1090. package/dist/src/ui/commands/setupGithubCommand.js +165 -0
  1091. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -0
  1092. package/dist/src/ui/commands/setupGithubCommand.test.d.ts +6 -0
  1093. package/dist/src/ui/commands/setupGithubCommand.test.js +164 -0
  1094. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -0
  1095. package/dist/src/ui/commands/skillsCommand.d.ts +7 -0
  1096. package/dist/src/ui/commands/skillsCommand.js +63 -0
  1097. package/dist/src/ui/commands/skillsCommand.js.map +1 -0
  1098. package/dist/src/ui/commands/skillsCommand.test.d.ts +6 -0
  1099. package/dist/src/ui/commands/skillsCommand.test.js +136 -0
  1100. package/dist/src/ui/commands/skillsCommand.test.js.map +1 -0
  1101. package/dist/src/ui/commands/statsCommand.d.ts +7 -0
  1102. package/dist/src/ui/commands/statsCommand.js +130 -0
  1103. package/dist/src/ui/commands/statsCommand.js.map +1 -0
  1104. package/dist/src/ui/commands/statuslineCommand.d.ts +7 -0
  1105. package/dist/src/ui/commands/statuslineCommand.js +33 -0
  1106. package/dist/src/ui/commands/statuslineCommand.js.map +1 -0
  1107. package/dist/src/ui/commands/statuslineCommand.test.d.ts +6 -0
  1108. package/dist/src/ui/commands/statuslineCommand.test.js +54 -0
  1109. package/dist/src/ui/commands/statuslineCommand.test.js.map +1 -0
  1110. package/dist/src/ui/commands/summaryCommand.d.ts +7 -0
  1111. package/dist/src/ui/commands/summaryCommand.js +261 -0
  1112. package/dist/src/ui/commands/summaryCommand.js.map +1 -0
  1113. package/dist/src/ui/commands/tasksCommand.d.ts +7 -0
  1114. package/dist/src/ui/commands/tasksCommand.js +222 -0
  1115. package/dist/src/ui/commands/tasksCommand.js.map +1 -0
  1116. package/dist/src/ui/commands/tasksCommand.test.d.ts +6 -0
  1117. package/dist/src/ui/commands/tasksCommand.test.js +365 -0
  1118. package/dist/src/ui/commands/tasksCommand.test.js.map +1 -0
  1119. package/dist/src/ui/commands/terminalSetupCommand.d.ts +13 -0
  1120. package/dist/src/ui/commands/terminalSetupCommand.js +48 -0
  1121. package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -0
  1122. package/dist/src/ui/commands/themeCommand.d.ts +7 -0
  1123. package/dist/src/ui/commands/themeCommand.js +20 -0
  1124. package/dist/src/ui/commands/themeCommand.js.map +1 -0
  1125. package/dist/src/ui/commands/toolsCommand.d.ts +7 -0
  1126. package/dist/src/ui/commands/toolsCommand.js +45 -0
  1127. package/dist/src/ui/commands/toolsCommand.js.map +1 -0
  1128. package/dist/src/ui/commands/trustCommand.d.ts +7 -0
  1129. package/dist/src/ui/commands/trustCommand.js +20 -0
  1130. package/dist/src/ui/commands/trustCommand.js.map +1 -0
  1131. package/dist/src/ui/commands/trustCommand.test.d.ts +6 -0
  1132. package/dist/src/ui/commands/trustCommand.test.js +30 -0
  1133. package/dist/src/ui/commands/trustCommand.test.js.map +1 -0
  1134. package/dist/src/ui/commands/types.d.ts +298 -0
  1135. package/dist/src/ui/commands/types.js +13 -0
  1136. package/dist/src/ui/commands/types.js.map +1 -0
  1137. package/dist/src/ui/commands/vimCommand.d.ts +7 -0
  1138. package/dist/src/ui/commands/vimCommand.js +27 -0
  1139. package/dist/src/ui/commands/vimCommand.js.map +1 -0
  1140. package/dist/src/ui/components/AboutBox.d.ts +12 -0
  1141. package/dist/src/ui/components/AboutBox.js +10 -0
  1142. package/dist/src/ui/components/AboutBox.js.map +1 -0
  1143. package/dist/src/ui/components/AnsiOutput.d.ts +20 -0
  1144. package/dist/src/ui/components/AnsiOutput.js +27 -0
  1145. package/dist/src/ui/components/AnsiOutput.js.map +1 -0
  1146. package/dist/src/ui/components/AnsiOutput.test.d.ts +6 -0
  1147. package/dist/src/ui/components/AnsiOutput.test.js +134 -0
  1148. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -0
  1149. package/dist/src/ui/components/ApiKeyInput.d.ts +22 -0
  1150. package/dist/src/ui/components/ApiKeyInput.js +35 -0
  1151. package/dist/src/ui/components/ApiKeyInput.js.map +1 -0
  1152. package/dist/src/ui/components/AppHeader.d.ts +10 -0
  1153. package/dist/src/ui/components/AppHeader.js +49 -0
  1154. package/dist/src/ui/components/AppHeader.js.map +1 -0
  1155. package/dist/src/ui/components/AppHeader.test.d.ts +6 -0
  1156. package/dist/src/ui/components/AppHeader.test.js +109 -0
  1157. package/dist/src/ui/components/AppHeader.test.js.map +1 -0
  1158. package/dist/src/ui/components/ApprovalModeDialog.d.ts +21 -0
  1159. package/dist/src/ui/components/ApprovalModeDialog.js +109 -0
  1160. package/dist/src/ui/components/ApprovalModeDialog.js.map +1 -0
  1161. package/dist/src/ui/components/ApprovalModeDialog.test.d.ts +6 -0
  1162. package/dist/src/ui/components/ApprovalModeDialog.test.js +63 -0
  1163. package/dist/src/ui/components/ApprovalModeDialog.test.js.map +1 -0
  1164. package/dist/src/ui/components/AsciiArt.d.ts +1 -0
  1165. package/dist/src/ui/components/AsciiArt.js +54 -0
  1166. package/dist/src/ui/components/AsciiArt.js.map +1 -0
  1167. package/dist/src/ui/components/AutoAcceptIndicator.d.ts +12 -0
  1168. package/dist/src/ui/components/AutoAcceptIndicator.js +37 -0
  1169. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -0
  1170. package/dist/src/ui/components/BaseTextInput.d.ts +74 -0
  1171. package/dist/src/ui/components/BaseTextInput.js +144 -0
  1172. package/dist/src/ui/components/BaseTextInput.js.map +1 -0
  1173. package/dist/src/ui/components/BaseTextInput.test.d.ts +6 -0
  1174. package/dist/src/ui/components/BaseTextInput.test.js +78 -0
  1175. package/dist/src/ui/components/BaseTextInput.test.js.map +1 -0
  1176. package/dist/src/ui/components/Composer.d.ts +6 -0
  1177. package/dist/src/ui/components/Composer.js +92 -0
  1178. package/dist/src/ui/components/Composer.js.map +1 -0
  1179. package/dist/src/ui/components/Composer.test.d.ts +6 -0
  1180. package/dist/src/ui/components/Composer.test.js +344 -0
  1181. package/dist/src/ui/components/Composer.test.js.map +1 -0
  1182. package/dist/src/ui/components/ConsentPrompt.d.ts +14 -0
  1183. package/dist/src/ui/components/ConsentPrompt.js +35 -0
  1184. package/dist/src/ui/components/ConsentPrompt.js.map +1 -0
  1185. package/dist/src/ui/components/ConsentPrompt.test.d.ts +6 -0
  1186. package/dist/src/ui/components/ConsentPrompt.test.js +110 -0
  1187. package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -0
  1188. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +20 -0
  1189. package/dist/src/ui/components/ContextSummaryDisplay.js +90 -0
  1190. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -0
  1191. package/dist/src/ui/components/ContextUsageDisplay.d.ts +10 -0
  1192. package/dist/src/ui/components/ContextUsageDisplay.js +33 -0
  1193. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -0
  1194. package/dist/src/ui/components/DebugModeNotification.d.ts +9 -0
  1195. package/dist/src/ui/components/DebugModeNotification.js +23 -0
  1196. package/dist/src/ui/components/DebugModeNotification.js.map +1 -0
  1197. package/dist/src/ui/components/DebugProfiler.d.ts +6 -0
  1198. package/dist/src/ui/components/DebugProfiler.js +27 -0
  1199. package/dist/src/ui/components/DebugProfiler.js.map +1 -0
  1200. package/dist/src/ui/components/DialogManager.d.ts +12 -0
  1201. package/dist/src/ui/components/DialogManager.js +247 -0
  1202. package/dist/src/ui/components/DialogManager.js.map +1 -0
  1203. package/dist/src/ui/components/DiffDialog.d.ts +15 -0
  1204. package/dist/src/ui/components/DiffDialog.js +412 -0
  1205. package/dist/src/ui/components/DiffDialog.js.map +1 -0
  1206. package/dist/src/ui/components/EditorSettingsDialog.d.ts +16 -0
  1207. package/dist/src/ui/components/EditorSettingsDialog.js +76 -0
  1208. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -0
  1209. package/dist/src/ui/components/ExitWarning.d.ts +7 -0
  1210. package/dist/src/ui/components/ExitWarning.js +9 -0
  1211. package/dist/src/ui/components/ExitWarning.js.map +1 -0
  1212. package/dist/src/ui/components/ExternalAuthProgress.d.ts +14 -0
  1213. package/dist/src/ui/components/ExternalAuthProgress.js +14 -0
  1214. package/dist/src/ui/components/ExternalAuthProgress.js.map +1 -0
  1215. package/dist/src/ui/components/ExternalAuthProgress.test.d.ts +6 -0
  1216. package/dist/src/ui/components/ExternalAuthProgress.test.js +20 -0
  1217. package/dist/src/ui/components/ExternalAuthProgress.test.js.map +1 -0
  1218. package/dist/src/ui/components/FolderTrustDialog.d.ts +17 -0
  1219. package/dist/src/ui/components/FolderTrustDialog.js +58 -0
  1220. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -0
  1221. package/dist/src/ui/components/FolderTrustDialog.test.d.ts +6 -0
  1222. package/dist/src/ui/components/FolderTrustDialog.test.js +88 -0
  1223. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -0
  1224. package/dist/src/ui/components/Footer.d.ts +7 -0
  1225. package/dist/src/ui/components/Footer.js +104 -0
  1226. package/dist/src/ui/components/Footer.js.map +1 -0
  1227. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +22 -0
  1228. package/dist/src/ui/components/GeminiRespondingSpinner.js +47 -0
  1229. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -0
  1230. package/dist/src/ui/components/GeminiRespondingSpinner.test.d.ts +6 -0
  1231. package/dist/src/ui/components/GeminiRespondingSpinner.test.js +29 -0
  1232. package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +1 -0
  1233. package/dist/src/ui/components/GoalPill.d.ts +25 -0
  1234. package/dist/src/ui/components/GoalPill.js +77 -0
  1235. package/dist/src/ui/components/GoalPill.js.map +1 -0
  1236. package/dist/src/ui/components/GoalPill.test.d.ts +6 -0
  1237. package/dist/src/ui/components/GoalPill.test.js +56 -0
  1238. package/dist/src/ui/components/GoalPill.test.js.map +1 -0
  1239. package/dist/src/ui/components/Header.d.ts +62 -0
  1240. package/dist/src/ui/components/Header.js +155 -0
  1241. package/dist/src/ui/components/Header.js.map +1 -0
  1242. package/dist/src/ui/components/Header.test.d.ts +6 -0
  1243. package/dist/src/ui/components/Header.test.js +142 -0
  1244. package/dist/src/ui/components/Header.test.js.map +1 -0
  1245. package/dist/src/ui/components/Help.d.ts +18 -0
  1246. package/dist/src/ui/components/Help.js +236 -0
  1247. package/dist/src/ui/components/Help.js.map +1 -0
  1248. package/dist/src/ui/components/Help.test.d.ts +6 -0
  1249. package/dist/src/ui/components/Help.test.js +243 -0
  1250. package/dist/src/ui/components/Help.test.js.map +1 -0
  1251. package/dist/src/ui/components/HistoryItemDisplay.d.ts +39 -0
  1252. package/dist/src/ui/components/HistoryItemDisplay.js +51 -0
  1253. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -0
  1254. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +6 -0
  1255. package/dist/src/ui/components/HistoryItemDisplay.test.js +197 -0
  1256. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -0
  1257. package/dist/src/ui/components/IdeTrustChangeDialog.d.ts +11 -0
  1258. package/dist/src/ui/components/IdeTrustChangeDialog.js +34 -0
  1259. package/dist/src/ui/components/IdeTrustChangeDialog.js.map +1 -0
  1260. package/dist/src/ui/components/IdeTrustChangeDialog.test.d.ts +6 -0
  1261. package/dist/src/ui/components/IdeTrustChangeDialog.test.js +53 -0
  1262. package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -0
  1263. package/dist/src/ui/components/InputPrompt.d.ts +63 -0
  1264. package/dist/src/ui/components/InputPrompt.js +1220 -0
  1265. package/dist/src/ui/components/InputPrompt.js.map +1 -0
  1266. package/dist/src/ui/components/KeyboardShortcuts.d.ts +7 -0
  1267. package/dist/src/ui/components/KeyboardShortcuts.js +78 -0
  1268. package/dist/src/ui/components/KeyboardShortcuts.js.map +1 -0
  1269. package/dist/src/ui/components/LoadingIndicator.d.ts +31 -0
  1270. package/dist/src/ui/components/LoadingIndicator.js +46 -0
  1271. package/dist/src/ui/components/LoadingIndicator.js.map +1 -0
  1272. package/dist/src/ui/components/LoadingIndicator.test.d.ts +6 -0
  1273. package/dist/src/ui/components/LoadingIndicator.test.js +246 -0
  1274. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -0
  1275. package/dist/src/ui/components/LoopDetectionConfirmation.d.ts +13 -0
  1276. package/dist/src/ui/components/LoopDetectionConfirmation.js +37 -0
  1277. package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -0
  1278. package/dist/src/ui/components/LoopDetectionConfirmation.test.d.ts +6 -0
  1279. package/dist/src/ui/components/LoopDetectionConfirmation.test.js +28 -0
  1280. package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -0
  1281. package/dist/src/ui/components/MainContent.d.ts +6 -0
  1282. package/dist/src/ui/components/MainContent.js +437 -0
  1283. package/dist/src/ui/components/MainContent.js.map +1 -0
  1284. package/dist/src/ui/components/MainContent.test.d.ts +6 -0
  1285. package/dist/src/ui/components/MainContent.test.js +621 -0
  1286. package/dist/src/ui/components/MainContent.test.js.map +1 -0
  1287. package/dist/src/ui/components/MemoryDialog.d.ts +10 -0
  1288. package/dist/src/ui/components/MemoryDialog.js +288 -0
  1289. package/dist/src/ui/components/MemoryDialog.js.map +1 -0
  1290. package/dist/src/ui/components/MemoryDialog.test.d.ts +6 -0
  1291. package/dist/src/ui/components/MemoryDialog.test.js +165 -0
  1292. package/dist/src/ui/components/MemoryDialog.test.js.map +1 -0
  1293. package/dist/src/ui/components/MemoryUsageDisplay.d.ts +7 -0
  1294. package/dist/src/ui/components/MemoryUsageDisplay.js +24 -0
  1295. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -0
  1296. package/dist/src/ui/components/ModelDialog.d.ts +12 -0
  1297. package/dist/src/ui/components/ModelDialog.js +390 -0
  1298. package/dist/src/ui/components/ModelDialog.js.map +1 -0
  1299. package/dist/src/ui/components/ModelDialog.test.d.ts +6 -0
  1300. package/dist/src/ui/components/ModelDialog.test.js +489 -0
  1301. package/dist/src/ui/components/ModelDialog.test.js.map +1 -0
  1302. package/dist/src/ui/components/ModelStatsDisplay.d.ts +11 -0
  1303. package/dist/src/ui/components/ModelStatsDisplay.js +61 -0
  1304. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -0
  1305. package/dist/src/ui/components/Notifications.d.ts +6 -0
  1306. package/dist/src/ui/components/Notifications.js +20 -0
  1307. package/dist/src/ui/components/Notifications.js.map +1 -0
  1308. package/dist/src/ui/components/PermissionsDialog.d.ts +11 -0
  1309. package/dist/src/ui/components/PermissionsDialog.js +547 -0
  1310. package/dist/src/ui/components/PermissionsDialog.js.map +1 -0
  1311. package/dist/src/ui/components/PlanSummaryDisplay.d.ts +14 -0
  1312. package/dist/src/ui/components/PlanSummaryDisplay.js +10 -0
  1313. package/dist/src/ui/components/PlanSummaryDisplay.js.map +1 -0
  1314. package/dist/src/ui/components/PluginChoicePrompt.d.ts +18 -0
  1315. package/dist/src/ui/components/PluginChoicePrompt.js +96 -0
  1316. package/dist/src/ui/components/PluginChoicePrompt.js.map +1 -0
  1317. package/dist/src/ui/components/PluginChoicePrompt.test.d.ts +6 -0
  1318. package/dist/src/ui/components/PluginChoicePrompt.test.js +136 -0
  1319. package/dist/src/ui/components/PluginChoicePrompt.test.js.map +1 -0
  1320. package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
  1321. package/dist/src/ui/components/PrepareLabel.js +72 -0
  1322. package/dist/src/ui/components/PrepareLabel.js.map +1 -0
  1323. package/dist/src/ui/components/PrepareLabel.test.d.ts +6 -0
  1324. package/dist/src/ui/components/PrepareLabel.test.js +71 -0
  1325. package/dist/src/ui/components/PrepareLabel.test.js.map +1 -0
  1326. package/dist/src/ui/components/ProviderUpdatePrompt.d.ts +12 -0
  1327. package/dist/src/ui/components/ProviderUpdatePrompt.js +49 -0
  1328. package/dist/src/ui/components/ProviderUpdatePrompt.js.map +1 -0
  1329. package/dist/src/ui/components/QueuedMessageDisplay.d.ts +9 -0
  1330. package/dist/src/ui/components/QueuedMessageDisplay.js +35 -0
  1331. package/dist/src/ui/components/QueuedMessageDisplay.js.map +1 -0
  1332. package/dist/src/ui/components/QueuedMessageDisplay.test.d.ts +6 -0
  1333. package/dist/src/ui/components/QueuedMessageDisplay.test.js +76 -0
  1334. package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -0
  1335. package/dist/src/ui/components/QuittingDisplay.d.ts +6 -0
  1336. package/dist/src/ui/components/QuittingDisplay.js +21 -0
  1337. package/dist/src/ui/components/QuittingDisplay.js.map +1 -0
  1338. package/dist/src/ui/components/QwenOAuthProgress.d.ts +16 -0
  1339. package/dist/src/ui/components/QwenOAuthProgress.js +65 -0
  1340. package/dist/src/ui/components/QwenOAuthProgress.js.map +1 -0
  1341. package/dist/src/ui/components/QwenOAuthProgress.test.d.ts +6 -0
  1342. package/dist/src/ui/components/QwenOAuthProgress.test.js +287 -0
  1343. package/dist/src/ui/components/QwenOAuthProgress.test.js.map +1 -0
  1344. package/dist/src/ui/components/RewindSelector.d.ts +22 -0
  1345. package/dist/src/ui/components/RewindSelector.js +264 -0
  1346. package/dist/src/ui/components/RewindSelector.js.map +1 -0
  1347. package/dist/src/ui/components/RewindSelector.test.d.ts +6 -0
  1348. package/dist/src/ui/components/RewindSelector.test.js +146 -0
  1349. package/dist/src/ui/components/RewindSelector.test.js.map +1 -0
  1350. package/dist/src/ui/components/SessionPicker.d.ts +55 -0
  1351. package/dist/src/ui/components/SessionPicker.js +142 -0
  1352. package/dist/src/ui/components/SessionPicker.js.map +1 -0
  1353. package/dist/src/ui/components/SessionPreview.d.ts +20 -0
  1354. package/dist/src/ui/components/SessionPreview.js +97 -0
  1355. package/dist/src/ui/components/SessionPreview.js.map +1 -0
  1356. package/dist/src/ui/components/SessionPreview.test.d.ts +1 -0
  1357. package/dist/src/ui/components/SessionPreview.test.js +124 -0
  1358. package/dist/src/ui/components/SessionPreview.test.js.map +1 -0
  1359. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +12 -0
  1360. package/dist/src/ui/components/SessionSummaryDisplay.js +17 -0
  1361. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -0
  1362. package/dist/src/ui/components/SettingInputPrompt.d.ts +15 -0
  1363. package/dist/src/ui/components/SettingInputPrompt.js +63 -0
  1364. package/dist/src/ui/components/SettingInputPrompt.js.map +1 -0
  1365. package/dist/src/ui/components/SettingInputPrompt.test.d.ts +6 -0
  1366. package/dist/src/ui/components/SettingInputPrompt.test.js +60 -0
  1367. package/dist/src/ui/components/SettingInputPrompt.test.js.map +1 -0
  1368. package/dist/src/ui/components/SettingsCorruptedDialog.d.ts +14 -0
  1369. package/dist/src/ui/components/SettingsCorruptedDialog.js +44 -0
  1370. package/dist/src/ui/components/SettingsCorruptedDialog.js.map +1 -0
  1371. package/dist/src/ui/components/SettingsCorruptedDialog.test.d.ts +6 -0
  1372. package/dist/src/ui/components/SettingsCorruptedDialog.test.js +162 -0
  1373. package/dist/src/ui/components/SettingsCorruptedDialog.test.js.map +1 -0
  1374. package/dist/src/ui/components/SettingsDialog.d.ts +18 -0
  1375. package/dist/src/ui/components/SettingsDialog.js +658 -0
  1376. package/dist/src/ui/components/SettingsDialog.js.map +1 -0
  1377. package/dist/src/ui/components/SettingsDialog.test.d.ts +6 -0
  1378. package/dist/src/ui/components/SettingsDialog.test.js +1127 -0
  1379. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -0
  1380. package/dist/src/ui/components/ShellConfirmationDialog.d.ts +17 -0
  1381. package/dist/src/ui/components/ShellConfirmationDialog.js +75 -0
  1382. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -0
  1383. package/dist/src/ui/components/ShellConfirmationDialog.test.d.ts +6 -0
  1384. package/dist/src/ui/components/ShellConfirmationDialog.test.js +167 -0
  1385. package/dist/src/ui/components/ShellConfirmationDialog.test.js.map +1 -0
  1386. package/dist/src/ui/components/ShellInputPrompt.d.ts +11 -0
  1387. package/dist/src/ui/components/ShellInputPrompt.js +42 -0
  1388. package/dist/src/ui/components/ShellInputPrompt.js.map +1 -0
  1389. package/dist/src/ui/components/ShellModeIndicator.d.ts +7 -0
  1390. package/dist/src/ui/components/ShellModeIndicator.js +5 -0
  1391. package/dist/src/ui/components/ShellModeIndicator.js.map +1 -0
  1392. package/dist/src/ui/components/ShowMoreLines.d.ts +10 -0
  1393. package/dist/src/ui/components/ShowMoreLines.js +24 -0
  1394. package/dist/src/ui/components/ShowMoreLines.js.map +1 -0
  1395. package/dist/src/ui/components/StandaloneSessionPicker.d.ts +11 -0
  1396. package/dist/src/ui/components/StandaloneSessionPicker.js +105 -0
  1397. package/dist/src/ui/components/StandaloneSessionPicker.js.map +1 -0
  1398. package/dist/src/ui/components/StandaloneSessionPicker.test.d.ts +6 -0
  1399. package/dist/src/ui/components/StandaloneSessionPicker.test.js +667 -0
  1400. package/dist/src/ui/components/StandaloneSessionPicker.test.js.map +1 -0
  1401. package/dist/src/ui/components/StatsActivityTab.d.ts +14 -0
  1402. package/dist/src/ui/components/StatsActivityTab.js +85 -0
  1403. package/dist/src/ui/components/StatsActivityTab.js.map +1 -0
  1404. package/dist/src/ui/components/StatsDialog.d.ts +12 -0
  1405. package/dist/src/ui/components/StatsDialog.js +104 -0
  1406. package/dist/src/ui/components/StatsDialog.js.map +1 -0
  1407. package/dist/src/ui/components/StatsDisplay.d.ts +13 -0
  1408. package/dist/src/ui/components/StatsDisplay.js +52 -0
  1409. package/dist/src/ui/components/StatsDisplay.js.map +1 -0
  1410. package/dist/src/ui/components/StatsEfficiencyTab.d.ts +11 -0
  1411. package/dist/src/ui/components/StatsEfficiencyTab.js +99 -0
  1412. package/dist/src/ui/components/StatsEfficiencyTab.js.map +1 -0
  1413. package/dist/src/ui/components/StatsHeatmapView.d.ts +12 -0
  1414. package/dist/src/ui/components/StatsHeatmapView.js +40 -0
  1415. package/dist/src/ui/components/StatsHeatmapView.js.map +1 -0
  1416. package/dist/src/ui/components/StatsSessionTab.d.ts +7 -0
  1417. package/dist/src/ui/components/StatsSessionTab.js +40 -0
  1418. package/dist/src/ui/components/StatsSessionTab.js.map +1 -0
  1419. package/dist/src/ui/components/StatusLineDialog.d.ts +22 -0
  1420. package/dist/src/ui/components/StatusLineDialog.js +140 -0
  1421. package/dist/src/ui/components/StatusLineDialog.js.map +1 -0
  1422. package/dist/src/ui/components/StatusLineDialog.test.d.ts +6 -0
  1423. package/dist/src/ui/components/StatusLineDialog.test.js +180 -0
  1424. package/dist/src/ui/components/StatusLineDialog.test.js.map +1 -0
  1425. package/dist/src/ui/components/StickyTodoList.d.ts +14 -0
  1426. package/dist/src/ui/components/StickyTodoList.js +45 -0
  1427. package/dist/src/ui/components/StickyTodoList.js.map +1 -0
  1428. package/dist/src/ui/components/StickyTodoList.test.d.ts +6 -0
  1429. package/dist/src/ui/components/StickyTodoList.test.js +128 -0
  1430. package/dist/src/ui/components/StickyTodoList.test.js.map +1 -0
  1431. package/dist/src/ui/components/SuggestionsDisplay.d.ts +47 -0
  1432. package/dist/src/ui/components/SuggestionsDisplay.js +43 -0
  1433. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -0
  1434. package/dist/src/ui/components/SuggestionsDisplay.test.d.ts +6 -0
  1435. package/dist/src/ui/components/SuggestionsDisplay.test.js +39 -0
  1436. package/dist/src/ui/components/SuggestionsDisplay.test.js.map +1 -0
  1437. package/dist/src/ui/components/ThemeDialog.d.ts +20 -0
  1438. package/dist/src/ui/components/ThemeDialog.js +137 -0
  1439. package/dist/src/ui/components/ThemeDialog.js.map +1 -0
  1440. package/dist/src/ui/components/ThemeDialog.test.d.ts +6 -0
  1441. package/dist/src/ui/components/ThemeDialog.test.js +75 -0
  1442. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -0
  1443. package/dist/src/ui/components/ThinkingDots.d.ts +11 -0
  1444. package/dist/src/ui/components/ThinkingDots.js +47 -0
  1445. package/dist/src/ui/components/ThinkingDots.js.map +1 -0
  1446. package/dist/src/ui/components/ThinkingIndicator.d.ts +7 -0
  1447. package/dist/src/ui/components/ThinkingIndicator.js +13 -0
  1448. package/dist/src/ui/components/ThinkingIndicator.js.map +1 -0
  1449. package/dist/src/ui/components/Tips.d.ts +6 -0
  1450. package/dist/src/ui/components/Tips.js +37 -0
  1451. package/dist/src/ui/components/Tips.js.map +1 -0
  1452. package/dist/src/ui/components/Tips.test.d.ts +6 -0
  1453. package/dist/src/ui/components/Tips.test.js +145 -0
  1454. package/dist/src/ui/components/Tips.test.js.map +1 -0
  1455. package/dist/src/ui/components/TodoDisplay.d.ts +16 -0
  1456. package/dist/src/ui/components/TodoDisplay.js +27 -0
  1457. package/dist/src/ui/components/TodoDisplay.js.map +1 -0
  1458. package/dist/src/ui/components/TodoDisplay.test.d.ts +6 -0
  1459. package/dist/src/ui/components/TodoDisplay.test.js +77 -0
  1460. package/dist/src/ui/components/TodoDisplay.test.js.map +1 -0
  1461. package/dist/src/ui/components/ToolStatsDisplay.d.ts +11 -0
  1462. package/dist/src/ui/components/ToolStatsDisplay.js +42 -0
  1463. package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -0
  1464. package/dist/src/ui/components/TrustDialog.d.ts +13 -0
  1465. package/dist/src/ui/components/TrustDialog.js +48 -0
  1466. package/dist/src/ui/components/TrustDialog.js.map +1 -0
  1467. package/dist/src/ui/components/TrustDialog.test.d.ts +6 -0
  1468. package/dist/src/ui/components/TrustDialog.test.js +154 -0
  1469. package/dist/src/ui/components/TrustDialog.test.js.map +1 -0
  1470. package/dist/src/ui/components/UpdateNotification.d.ts +10 -0
  1471. package/dist/src/ui/components/UpdateNotification.js +10 -0
  1472. package/dist/src/ui/components/UpdateNotification.js.map +1 -0
  1473. package/dist/src/ui/components/WelcomeBackDialog.d.ts +13 -0
  1474. package/dist/src/ui/components/WelcomeBackDialog.js +43 -0
  1475. package/dist/src/ui/components/WelcomeBackDialog.js.map +1 -0
  1476. package/dist/src/ui/components/WorktreeExitDialog.d.ts +26 -0
  1477. package/dist/src/ui/components/WorktreeExitDialog.js +134 -0
  1478. package/dist/src/ui/components/WorktreeExitDialog.js.map +1 -0
  1479. package/dist/src/ui/components/WorktreeExitDialog.test.d.ts +6 -0
  1480. package/dist/src/ui/components/WorktreeExitDialog.test.js +41 -0
  1481. package/dist/src/ui/components/WorktreeExitDialog.test.js.map +1 -0
  1482. package/dist/src/ui/components/agent-view/AgentChatContent.d.ts +27 -0
  1483. package/dist/src/ui/components/agent-view/AgentChatContent.js +150 -0
  1484. package/dist/src/ui/components/agent-view/AgentChatContent.js.map +1 -0
  1485. package/dist/src/ui/components/agent-view/AgentChatView.d.ts +10 -0
  1486. package/dist/src/ui/components/agent-view/AgentChatView.js +24 -0
  1487. package/dist/src/ui/components/agent-view/AgentChatView.js.map +1 -0
  1488. package/dist/src/ui/components/agent-view/AgentComposer.d.ts +10 -0
  1489. package/dist/src/ui/components/agent-view/AgentComposer.js +183 -0
  1490. package/dist/src/ui/components/agent-view/AgentComposer.js.map +1 -0
  1491. package/dist/src/ui/components/agent-view/AgentFooter.d.ts +20 -0
  1492. package/dist/src/ui/components/agent-view/AgentFooter.js +15 -0
  1493. package/dist/src/ui/components/agent-view/AgentFooter.js.map +1 -0
  1494. package/dist/src/ui/components/agent-view/AgentHeader.d.ts +19 -0
  1495. package/dist/src/ui/components/agent-view/AgentHeader.js +13 -0
  1496. package/dist/src/ui/components/agent-view/AgentHeader.js.map +1 -0
  1497. package/dist/src/ui/components/agent-view/AgentTabBar.d.ts +6 -0
  1498. package/dist/src/ui/components/agent-view/AgentTabBar.js +110 -0
  1499. package/dist/src/ui/components/agent-view/AgentTabBar.js.map +1 -0
  1500. package/dist/src/ui/components/agent-view/AgentTabBar.test.d.ts +6 -0
  1501. package/dist/src/ui/components/agent-view/AgentTabBar.test.js +90 -0
  1502. package/dist/src/ui/components/agent-view/AgentTabBar.test.js.map +1 -0
  1503. package/dist/src/ui/components/agent-view/agentHistoryAdapter.d.ts +31 -0
  1504. package/dist/src/ui/components/agent-view/agentHistoryAdapter.js +148 -0
  1505. package/dist/src/ui/components/agent-view/agentHistoryAdapter.js.map +1 -0
  1506. package/dist/src/ui/components/agent-view/agentHistoryAdapter.test.d.ts +6 -0
  1507. package/dist/src/ui/components/agent-view/agentHistoryAdapter.test.js +318 -0
  1508. package/dist/src/ui/components/agent-view/agentHistoryAdapter.test.js.map +1 -0
  1509. package/dist/src/ui/components/agent-view/index.d.ts +11 -0
  1510. package/dist/src/ui/components/agent-view/index.js +12 -0
  1511. package/dist/src/ui/components/agent-view/index.js.map +1 -0
  1512. package/dist/src/ui/components/approvalModeVisuals.d.ts +11 -0
  1513. package/dist/src/ui/components/approvalModeVisuals.js +37 -0
  1514. package/dist/src/ui/components/approvalModeVisuals.js.map +1 -0
  1515. package/dist/src/ui/components/approvalModeVisuals.test.d.ts +6 -0
  1516. package/dist/src/ui/components/approvalModeVisuals.test.js +32 -0
  1517. package/dist/src/ui/components/approvalModeVisuals.test.js.map +1 -0
  1518. package/dist/src/ui/components/arena/ArenaCards.d.ts +21 -0
  1519. package/dist/src/ui/components/arena/ArenaCards.js +99 -0
  1520. package/dist/src/ui/components/arena/ArenaCards.js.map +1 -0
  1521. package/dist/src/ui/components/arena/ArenaCards.test.d.ts +6 -0
  1522. package/dist/src/ui/components/arena/ArenaCards.test.js +128 -0
  1523. package/dist/src/ui/components/arena/ArenaCards.test.js.map +1 -0
  1524. package/dist/src/ui/components/arena/ArenaSelectDialog.d.ts +16 -0
  1525. package/dist/src/ui/components/arena/ArenaSelectDialog.js +213 -0
  1526. package/dist/src/ui/components/arena/ArenaSelectDialog.js.map +1 -0
  1527. package/dist/src/ui/components/arena/ArenaSelectDialog.test.d.ts +6 -0
  1528. package/dist/src/ui/components/arena/ArenaSelectDialog.test.js +149 -0
  1529. package/dist/src/ui/components/arena/ArenaSelectDialog.test.js.map +1 -0
  1530. package/dist/src/ui/components/arena/ArenaStartDialog.d.ts +12 -0
  1531. package/dist/src/ui/components/arena/ArenaStartDialog.js +49 -0
  1532. package/dist/src/ui/components/arena/ArenaStartDialog.js.map +1 -0
  1533. package/dist/src/ui/components/arena/ArenaStatusDialog.d.ts +14 -0
  1534. package/dist/src/ui/components/arena/ArenaStatusDialog.js +111 -0
  1535. package/dist/src/ui/components/arena/ArenaStatusDialog.js.map +1 -0
  1536. package/dist/src/ui/components/arena/ArenaStopDialog.d.ts +15 -0
  1537. package/dist/src/ui/components/arena/ArenaStopDialog.js +113 -0
  1538. package/dist/src/ui/components/arena/ArenaStopDialog.js.map +1 -0
  1539. package/dist/src/ui/components/background-view/BackgroundTasksDialog.d.ts +17 -0
  1540. package/dist/src/ui/components/background-view/BackgroundTasksDialog.js +614 -0
  1541. package/dist/src/ui/components/background-view/BackgroundTasksDialog.js.map +1 -0
  1542. package/dist/src/ui/components/background-view/BackgroundTasksDialog.test.d.ts +6 -0
  1543. package/dist/src/ui/components/background-view/BackgroundTasksDialog.test.js +606 -0
  1544. package/dist/src/ui/components/background-view/BackgroundTasksDialog.test.js.map +1 -0
  1545. package/dist/src/ui/components/background-view/BackgroundTasksPill.d.ts +14 -0
  1546. package/dist/src/ui/components/background-view/BackgroundTasksPill.js +94 -0
  1547. package/dist/src/ui/components/background-view/BackgroundTasksPill.js.map +1 -0
  1548. package/dist/src/ui/components/background-view/BackgroundTasksPill.test.d.ts +6 -0
  1549. package/dist/src/ui/components/background-view/BackgroundTasksPill.test.js +158 -0
  1550. package/dist/src/ui/components/background-view/BackgroundTasksPill.test.js.map +1 -0
  1551. package/dist/src/ui/components/background-view/LiveAgentPanel.d.ts +43 -0
  1552. package/dist/src/ui/components/background-view/LiveAgentPanel.js +361 -0
  1553. package/dist/src/ui/components/background-view/LiveAgentPanel.js.map +1 -0
  1554. package/dist/src/ui/components/background-view/LiveAgentPanel.test.d.ts +6 -0
  1555. package/dist/src/ui/components/background-view/LiveAgentPanel.test.js +595 -0
  1556. package/dist/src/ui/components/background-view/LiveAgentPanel.test.js.map +1 -0
  1557. package/dist/src/ui/components/extensions/ExtensionsManagerDialog.d.ts +12 -0
  1558. package/dist/src/ui/components/extensions/ExtensionsManagerDialog.js +337 -0
  1559. package/dist/src/ui/components/extensions/ExtensionsManagerDialog.js.map +1 -0
  1560. package/dist/src/ui/components/extensions/ExtensionsManagerDialog.test.d.ts +6 -0
  1561. package/dist/src/ui/components/extensions/ExtensionsManagerDialog.test.js +90 -0
  1562. package/dist/src/ui/components/extensions/ExtensionsManagerDialog.test.js.map +1 -0
  1563. package/dist/src/ui/components/extensions/index.d.ts +8 -0
  1564. package/dist/src/ui/components/extensions/index.js +8 -0
  1565. package/dist/src/ui/components/extensions/index.js.map +1 -0
  1566. package/dist/src/ui/components/extensions/steps/ActionSelectionStep.d.ts +15 -0
  1567. package/dist/src/ui/components/extensions/steps/ActionSelectionStep.js +75 -0
  1568. package/dist/src/ui/components/extensions/steps/ActionSelectionStep.js.map +1 -0
  1569. package/dist/src/ui/components/extensions/steps/ActionSelectionStep.test.d.ts +6 -0
  1570. package/dist/src/ui/components/extensions/steps/ActionSelectionStep.test.js +56 -0
  1571. package/dist/src/ui/components/extensions/steps/ActionSelectionStep.test.js.map +1 -0
  1572. package/dist/src/ui/components/extensions/steps/ExtensionDetailStep.d.ts +11 -0
  1573. package/dist/src/ui/components/extensions/steps/ExtensionDetailStep.js +23 -0
  1574. package/dist/src/ui/components/extensions/steps/ExtensionDetailStep.js.map +1 -0
  1575. package/dist/src/ui/components/extensions/steps/ExtensionListStep.d.ts +13 -0
  1576. package/dist/src/ui/components/extensions/steps/ExtensionListStep.js +105 -0
  1577. package/dist/src/ui/components/extensions/steps/ExtensionListStep.js.map +1 -0
  1578. package/dist/src/ui/components/extensions/steps/ExtensionListStep.test.d.ts +6 -0
  1579. package/dist/src/ui/components/extensions/steps/ExtensionListStep.test.js +74 -0
  1580. package/dist/src/ui/components/extensions/steps/ExtensionListStep.test.js.map +1 -0
  1581. package/dist/src/ui/components/extensions/steps/ScopeSelectStep.d.ts +13 -0
  1582. package/dist/src/ui/components/extensions/steps/ScopeSelectStep.js +40 -0
  1583. package/dist/src/ui/components/extensions/steps/ScopeSelectStep.js.map +1 -0
  1584. package/dist/src/ui/components/extensions/steps/UninstallConfirmStep.d.ts +13 -0
  1585. package/dist/src/ui/components/extensions/steps/UninstallConfirmStep.js +38 -0
  1586. package/dist/src/ui/components/extensions/steps/UninstallConfirmStep.js.map +1 -0
  1587. package/dist/src/ui/components/extensions/steps/index.d.ts +10 -0
  1588. package/dist/src/ui/components/extensions/steps/index.js +11 -0
  1589. package/dist/src/ui/components/extensions/steps/index.js.map +1 -0
  1590. package/dist/src/ui/components/extensions/types.d.ts +73 -0
  1591. package/dist/src/ui/components/extensions/types.js +18 -0
  1592. package/dist/src/ui/components/extensions/types.js.map +1 -0
  1593. package/dist/src/ui/components/hooks/HandlerListBody.d.ts +12 -0
  1594. package/dist/src/ui/components/hooks/HandlerListBody.js +54 -0
  1595. package/dist/src/ui/components/hooks/HandlerListBody.js.map +1 -0
  1596. package/dist/src/ui/components/hooks/HandlerListBody.test.d.ts +6 -0
  1597. package/dist/src/ui/components/hooks/HandlerListBody.test.js +175 -0
  1598. package/dist/src/ui/components/hooks/HandlerListBody.test.js.map +1 -0
  1599. package/dist/src/ui/components/hooks/HookConfigDetailStep.d.ts +12 -0
  1600. package/dist/src/ui/components/hooks/HookConfigDetailStep.js +48 -0
  1601. package/dist/src/ui/components/hooks/HookConfigDetailStep.js.map +1 -0
  1602. package/dist/src/ui/components/hooks/HookConfigDetailStep.test.d.ts +6 -0
  1603. package/dist/src/ui/components/hooks/HookConfigDetailStep.test.js +236 -0
  1604. package/dist/src/ui/components/hooks/HookConfigDetailStep.test.js.map +1 -0
  1605. package/dist/src/ui/components/hooks/HookDetailStep.d.ts +12 -0
  1606. package/dist/src/ui/components/hooks/HookDetailStep.js +11 -0
  1607. package/dist/src/ui/components/hooks/HookDetailStep.js.map +1 -0
  1608. package/dist/src/ui/components/hooks/HookDetailStep.test.d.ts +6 -0
  1609. package/dist/src/ui/components/hooks/HookDetailStep.test.js +241 -0
  1610. package/dist/src/ui/components/hooks/HookDetailStep.test.js.map +1 -0
  1611. package/dist/src/ui/components/hooks/HookEventHandlerListStep.d.ts +12 -0
  1612. package/dist/src/ui/components/hooks/HookEventHandlerListStep.js +18 -0
  1613. package/dist/src/ui/components/hooks/HookEventHandlerListStep.js.map +1 -0
  1614. package/dist/src/ui/components/hooks/HookEventHeader.d.ts +13 -0
  1615. package/dist/src/ui/components/hooks/HookEventHeader.js +23 -0
  1616. package/dist/src/ui/components/hooks/HookEventHeader.js.map +1 -0
  1617. package/dist/src/ui/components/hooks/HookEventMatcherListStep.d.ts +12 -0
  1618. package/dist/src/ui/components/hooks/HookEventMatcherListStep.js +28 -0
  1619. package/dist/src/ui/components/hooks/HookEventMatcherListStep.js.map +1 -0
  1620. package/dist/src/ui/components/hooks/HookMatcherDetailStep.d.ts +13 -0
  1621. package/dist/src/ui/components/hooks/HookMatcherDetailStep.js +16 -0
  1622. package/dist/src/ui/components/hooks/HookMatcherDetailStep.js.map +1 -0
  1623. package/dist/src/ui/components/hooks/HookMatcherDetailStep.test.d.ts +6 -0
  1624. package/dist/src/ui/components/hooks/HookMatcherDetailStep.test.js +154 -0
  1625. package/dist/src/ui/components/hooks/HookMatcherDetailStep.test.js.map +1 -0
  1626. package/dist/src/ui/components/hooks/HooksDisabledStep.d.ts +10 -0
  1627. package/dist/src/ui/components/hooks/HooksDisabledStep.js +23 -0
  1628. package/dist/src/ui/components/hooks/HooksDisabledStep.js.map +1 -0
  1629. package/dist/src/ui/components/hooks/HooksDisabledStep.test.d.ts +6 -0
  1630. package/dist/src/ui/components/hooks/HooksDisabledStep.test.js +86 -0
  1631. package/dist/src/ui/components/hooks/HooksDisabledStep.test.js.map +1 -0
  1632. package/dist/src/ui/components/hooks/HooksListStep.d.ts +12 -0
  1633. package/dist/src/ui/components/hooks/HooksListStep.js +32 -0
  1634. package/dist/src/ui/components/hooks/HooksListStep.js.map +1 -0
  1635. package/dist/src/ui/components/hooks/HooksListStep.test.d.ts +6 -0
  1636. package/dist/src/ui/components/hooks/HooksListStep.test.js +144 -0
  1637. package/dist/src/ui/components/hooks/HooksListStep.test.js.map +1 -0
  1638. package/dist/src/ui/components/hooks/HooksManagementDialog.d.ts +7 -0
  1639. package/dist/src/ui/components/hooks/HooksManagementDialog.js +418 -0
  1640. package/dist/src/ui/components/hooks/HooksManagementDialog.js.map +1 -0
  1641. package/dist/src/ui/components/hooks/HooksManagementDialog.test.d.ts +6 -0
  1642. package/dist/src/ui/components/hooks/HooksManagementDialog.test.js +305 -0
  1643. package/dist/src/ui/components/hooks/HooksManagementDialog.test.js.map +1 -0
  1644. package/dist/src/ui/components/hooks/constants.d.ts +26 -0
  1645. package/dist/src/ui/components/hooks/constants.js +227 -0
  1646. package/dist/src/ui/components/hooks/constants.js.map +1 -0
  1647. package/dist/src/ui/components/hooks/constants.test.d.ts +6 -0
  1648. package/dist/src/ui/components/hooks/constants.test.js +317 -0
  1649. package/dist/src/ui/components/hooks/constants.test.js.map +1 -0
  1650. package/dist/src/ui/components/hooks/index.d.ts +12 -0
  1651. package/dist/src/ui/components/hooks/index.js +13 -0
  1652. package/dist/src/ui/components/hooks/index.js.map +1 -0
  1653. package/dist/src/ui/components/hooks/matcherGrouping.d.ts +9 -0
  1654. package/dist/src/ui/components/hooks/matcherGrouping.js +35 -0
  1655. package/dist/src/ui/components/hooks/matcherGrouping.js.map +1 -0
  1656. package/dist/src/ui/components/hooks/matcherGrouping.test.d.ts +6 -0
  1657. package/dist/src/ui/components/hooks/matcherGrouping.test.js +183 -0
  1658. package/dist/src/ui/components/hooks/matcherGrouping.test.js.map +1 -0
  1659. package/dist/src/ui/components/hooks/sourceLabels.d.ts +13 -0
  1660. package/dist/src/ui/components/hooks/sourceLabels.js +35 -0
  1661. package/dist/src/ui/components/hooks/sourceLabels.js.map +1 -0
  1662. package/dist/src/ui/components/hooks/sourceLabels.test.d.ts +6 -0
  1663. package/dist/src/ui/components/hooks/sourceLabels.test.js +81 -0
  1664. package/dist/src/ui/components/hooks/sourceLabels.test.js.map +1 -0
  1665. package/dist/src/ui/components/hooks/types.d.ts +42 -0
  1666. package/dist/src/ui/components/hooks/types.js +13 -0
  1667. package/dist/src/ui/components/hooks/types.js.map +1 -0
  1668. package/dist/src/ui/components/mcp/MCPHealthPill.d.ts +24 -0
  1669. package/dist/src/ui/components/mcp/MCPHealthPill.js +33 -0
  1670. package/dist/src/ui/components/mcp/MCPHealthPill.js.map +1 -0
  1671. package/dist/src/ui/components/mcp/MCPHealthPill.test.d.ts +6 -0
  1672. package/dist/src/ui/components/mcp/MCPHealthPill.test.js +42 -0
  1673. package/dist/src/ui/components/mcp/MCPHealthPill.test.js.map +1 -0
  1674. package/dist/src/ui/components/mcp/MCPManagementDialog.d.ts +7 -0
  1675. package/dist/src/ui/components/mcp/MCPManagementDialog.js +472 -0
  1676. package/dist/src/ui/components/mcp/MCPManagementDialog.js.map +1 -0
  1677. package/dist/src/ui/components/mcp/constants.d.ts +29 -0
  1678. package/dist/src/ui/components/mcp/constants.js +34 -0
  1679. package/dist/src/ui/components/mcp/constants.js.map +1 -0
  1680. package/dist/src/ui/components/mcp/index.d.ts +12 -0
  1681. package/dist/src/ui/components/mcp/index.js +15 -0
  1682. package/dist/src/ui/components/mcp/index.js.map +1 -0
  1683. package/dist/src/ui/components/mcp/steps/AuthenticateStep.d.ts +7 -0
  1684. package/dist/src/ui/components/mcp/steps/AuthenticateStep.js +187 -0
  1685. package/dist/src/ui/components/mcp/steps/AuthenticateStep.js.map +1 -0
  1686. package/dist/src/ui/components/mcp/steps/DisableScopeSelectStep.d.ts +7 -0
  1687. package/dist/src/ui/components/mcp/steps/DisableScopeSelectStep.js +44 -0
  1688. package/dist/src/ui/components/mcp/steps/DisableScopeSelectStep.js.map +1 -0
  1689. package/dist/src/ui/components/mcp/steps/ServerDetailStep.d.ts +7 -0
  1690. package/dist/src/ui/components/mcp/steps/ServerDetailStep.js +108 -0
  1691. package/dist/src/ui/components/mcp/steps/ServerDetailStep.js.map +1 -0
  1692. package/dist/src/ui/components/mcp/steps/ServerListStep.d.ts +7 -0
  1693. package/dist/src/ui/components/mcp/steps/ServerListStep.js +74 -0
  1694. package/dist/src/ui/components/mcp/steps/ServerListStep.js.map +1 -0
  1695. package/dist/src/ui/components/mcp/steps/ServerListStep.test.d.ts +6 -0
  1696. package/dist/src/ui/components/mcp/steps/ServerListStep.test.js +60 -0
  1697. package/dist/src/ui/components/mcp/steps/ServerListStep.test.js.map +1 -0
  1698. package/dist/src/ui/components/mcp/steps/ToolDetailStep.d.ts +7 -0
  1699. package/dist/src/ui/components/mcp/steps/ToolDetailStep.js +49 -0
  1700. package/dist/src/ui/components/mcp/steps/ToolDetailStep.js.map +1 -0
  1701. package/dist/src/ui/components/mcp/steps/ToolListStep.d.ts +7 -0
  1702. package/dist/src/ui/components/mcp/steps/ToolListStep.js +80 -0
  1703. package/dist/src/ui/components/mcp/steps/ToolListStep.js.map +1 -0
  1704. package/dist/src/ui/components/mcp/steps/ToolListStep.test.d.ts +6 -0
  1705. package/dist/src/ui/components/mcp/steps/ToolListStep.test.js +55 -0
  1706. package/dist/src/ui/components/mcp/steps/ToolListStep.test.js.map +1 -0
  1707. package/dist/src/ui/components/mcp/types.d.ts +177 -0
  1708. package/dist/src/ui/components/mcp/types.js +17 -0
  1709. package/dist/src/ui/components/mcp/types.js.map +1 -0
  1710. package/dist/src/ui/components/mcp/utils.d.ts +40 -0
  1711. package/dist/src/ui/components/mcp/utils.js +126 -0
  1712. package/dist/src/ui/components/mcp/utils.js.map +1 -0
  1713. package/dist/src/ui/components/mcp/utils.test.d.ts +6 -0
  1714. package/dist/src/ui/components/mcp/utils.test.js +130 -0
  1715. package/dist/src/ui/components/mcp/utils.test.js.map +1 -0
  1716. package/dist/src/ui/components/messages/AskUserQuestionDialog.d.ts +14 -0
  1717. package/dist/src/ui/components/messages/AskUserQuestionDialog.js +291 -0
  1718. package/dist/src/ui/components/messages/AskUserQuestionDialog.js.map +1 -0
  1719. package/dist/src/ui/components/messages/AskUserQuestionDialog.test.d.ts +6 -0
  1720. package/dist/src/ui/components/messages/AskUserQuestionDialog.test.js +281 -0
  1721. package/dist/src/ui/components/messages/AskUserQuestionDialog.test.js.map +1 -0
  1722. package/dist/src/ui/components/messages/BtwMessage.d.ts +14 -0
  1723. package/dist/src/ui/components/messages/BtwMessage.js +30 -0
  1724. package/dist/src/ui/components/messages/BtwMessage.js.map +1 -0
  1725. package/dist/src/ui/components/messages/BtwMessage.test.d.ts +6 -0
  1726. package/dist/src/ui/components/messages/BtwMessage.test.js +60 -0
  1727. package/dist/src/ui/components/messages/BtwMessage.test.js.map +1 -0
  1728. package/dist/src/ui/components/messages/CompactToolGroupDisplay.d.ts +20 -0
  1729. package/dist/src/ui/components/messages/CompactToolGroupDisplay.js +80 -0
  1730. package/dist/src/ui/components/messages/CompactToolGroupDisplay.js.map +1 -0
  1731. package/dist/src/ui/components/messages/CompactToolGroupDisplay.test.d.ts +6 -0
  1732. package/dist/src/ui/components/messages/CompactToolGroupDisplay.test.js +139 -0
  1733. package/dist/src/ui/components/messages/CompactToolGroupDisplay.test.js.map +1 -0
  1734. package/dist/src/ui/components/messages/CompressionMessage.d.ts +10 -0
  1735. package/dist/src/ui/components/messages/CompressionMessage.js +50 -0
  1736. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -0
  1737. package/dist/src/ui/components/messages/CompressionMessage.test.d.ts +6 -0
  1738. package/dist/src/ui/components/messages/CompressionMessage.test.js +160 -0
  1739. package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -0
  1740. package/dist/src/ui/components/messages/ConversationMessages.d.ts +46 -0
  1741. package/dist/src/ui/components/messages/ConversationMessages.js +32 -0
  1742. package/dist/src/ui/components/messages/ConversationMessages.js.map +1 -0
  1743. package/dist/src/ui/components/messages/DiffRenderer.d.ts +19 -0
  1744. package/dist/src/ui/components/messages/DiffRenderer.js +219 -0
  1745. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -0
  1746. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +6 -0
  1747. package/dist/src/ui/components/messages/DiffRenderer.test.js +296 -0
  1748. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -0
  1749. package/dist/src/ui/components/messages/DiffStatsDisplay.d.ts +18 -0
  1750. package/dist/src/ui/components/messages/DiffStatsDisplay.js +50 -0
  1751. package/dist/src/ui/components/messages/DiffStatsDisplay.js.map +1 -0
  1752. package/dist/src/ui/components/messages/DiffStatsDisplay.test.d.ts +6 -0
  1753. package/dist/src/ui/components/messages/DiffStatsDisplay.test.js +165 -0
  1754. package/dist/src/ui/components/messages/DiffStatsDisplay.test.js.map +1 -0
  1755. package/dist/src/ui/components/messages/GoalStatusMessage.d.ts +16 -0
  1756. package/dist/src/ui/components/messages/GoalStatusMessage.js +76 -0
  1757. package/dist/src/ui/components/messages/GoalStatusMessage.js.map +1 -0
  1758. package/dist/src/ui/components/messages/GoalStatusMessage.test.d.ts +6 -0
  1759. package/dist/src/ui/components/messages/GoalStatusMessage.test.js +32 -0
  1760. package/dist/src/ui/components/messages/GoalStatusMessage.test.js.map +1 -0
  1761. package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.d.ts +33 -0
  1762. package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.js +196 -0
  1763. package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.js.map +1 -0
  1764. package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.test.d.ts +6 -0
  1765. package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.test.js +219 -0
  1766. package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.test.js.map +1 -0
  1767. package/dist/src/ui/components/messages/InsightProgressMessage.d.ts +12 -0
  1768. package/dist/src/ui/components/messages/InsightProgressMessage.js +20 -0
  1769. package/dist/src/ui/components/messages/InsightProgressMessage.js.map +1 -0
  1770. package/dist/src/ui/components/messages/MemorySavedMessage.d.ts +18 -0
  1771. package/dist/src/ui/components/messages/MemorySavedMessage.js +15 -0
  1772. package/dist/src/ui/components/messages/MemorySavedMessage.js.map +1 -0
  1773. package/dist/src/ui/components/messages/StatusMessages.d.ts +33 -0
  1774. package/dist/src/ui/components/messages/StatusMessages.js +28 -0
  1775. package/dist/src/ui/components/messages/StatusMessages.js.map +1 -0
  1776. package/dist/src/ui/components/messages/StatusMessages.test.d.ts +6 -0
  1777. package/dist/src/ui/components/messages/StatusMessages.test.js +21 -0
  1778. package/dist/src/ui/components/messages/StatusMessages.test.js.map +1 -0
  1779. package/dist/src/ui/components/messages/SummaryMessage.d.ts +11 -0
  1780. package/dist/src/ui/components/messages/SummaryMessage.js +38 -0
  1781. package/dist/src/ui/components/messages/SummaryMessage.js.map +1 -0
  1782. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +16 -0
  1783. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +352 -0
  1784. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -0
  1785. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +6 -0
  1786. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +312 -0
  1787. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -0
  1788. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +58 -0
  1789. package/dist/src/ui/components/messages/ToolGroupMessage.js +278 -0
  1790. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -0
  1791. package/dist/src/ui/components/messages/ToolGroupMessage.test.d.ts +6 -0
  1792. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +619 -0
  1793. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -0
  1794. package/dist/src/ui/components/messages/ToolMessage.d.ts +39 -0
  1795. package/dist/src/ui/components/messages/ToolMessage.js +400 -0
  1796. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -0
  1797. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +6 -0
  1798. package/dist/src/ui/components/messages/ToolMessage.test.js +575 -0
  1799. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -0
  1800. package/dist/src/ui/components/shared/BaseSelectionList.d.ts +40 -0
  1801. package/dist/src/ui/components/shared/BaseSelectionList.js +75 -0
  1802. package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -0
  1803. package/dist/src/ui/components/shared/BaseSelectionList.test.d.ts +6 -0
  1804. package/dist/src/ui/components/shared/BaseSelectionList.test.js +376 -0
  1805. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -0
  1806. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.d.ts +37 -0
  1807. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js +13 -0
  1808. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js.map +1 -0
  1809. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.d.ts +6 -0
  1810. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +79 -0
  1811. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -0
  1812. package/dist/src/ui/components/shared/EnumSelector.d.ts +18 -0
  1813. package/dist/src/ui/components/shared/EnumSelector.js +44 -0
  1814. package/dist/src/ui/components/shared/EnumSelector.js.map +1 -0
  1815. package/dist/src/ui/components/shared/EnumSelector.test.d.ts +6 -0
  1816. package/dist/src/ui/components/shared/EnumSelector.test.js +70 -0
  1817. package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -0
  1818. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +61 -0
  1819. package/dist/src/ui/components/shared/MaxSizedBox.js +453 -0
  1820. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -0
  1821. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +6 -0
  1822. package/dist/src/ui/components/shared/MaxSizedBox.test.js +154 -0
  1823. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -0
  1824. package/dist/src/ui/components/shared/MultiSelect.d.ts +30 -0
  1825. package/dist/src/ui/components/shared/MultiSelect.js +94 -0
  1826. package/dist/src/ui/components/shared/MultiSelect.js.map +1 -0
  1827. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +45 -0
  1828. package/dist/src/ui/components/shared/RadioButtonSelect.js +21 -0
  1829. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -0
  1830. package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +6 -0
  1831. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +134 -0
  1832. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -0
  1833. package/dist/src/ui/components/shared/ScopeSelector.d.ts +19 -0
  1834. package/dist/src/ui/components/shared/ScopeSelector.js +16 -0
  1835. package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -0
  1836. package/dist/src/ui/components/shared/ScrollableList.d.ts +19 -0
  1837. package/dist/src/ui/components/shared/ScrollableList.js +97 -0
  1838. package/dist/src/ui/components/shared/ScrollableList.js.map +1 -0
  1839. package/dist/src/ui/components/shared/ScrollableList.test.d.ts +6 -0
  1840. package/dist/src/ui/components/shared/ScrollableList.test.js +158 -0
  1841. package/dist/src/ui/components/shared/ScrollableList.test.js.map +1 -0
  1842. package/dist/src/ui/components/shared/StaticRender.d.ts +25 -0
  1843. package/dist/src/ui/components/shared/StaticRender.js +25 -0
  1844. package/dist/src/ui/components/shared/StaticRender.js.map +1 -0
  1845. package/dist/src/ui/components/shared/TextInput.d.ts +25 -0
  1846. package/dist/src/ui/components/shared/TextInput.js +163 -0
  1847. package/dist/src/ui/components/shared/TextInput.js.map +1 -0
  1848. package/dist/src/ui/components/shared/TextInput.test.d.ts +6 -0
  1849. package/dist/src/ui/components/shared/TextInput.test.js +91 -0
  1850. package/dist/src/ui/components/shared/TextInput.test.js.map +1 -0
  1851. package/dist/src/ui/components/shared/ToolElapsedTime.d.ts +30 -0
  1852. package/dist/src/ui/components/shared/ToolElapsedTime.js +43 -0
  1853. package/dist/src/ui/components/shared/ToolElapsedTime.js.map +1 -0
  1854. package/dist/src/ui/components/shared/ToolElapsedTime.test.d.ts +6 -0
  1855. package/dist/src/ui/components/shared/ToolElapsedTime.test.js +63 -0
  1856. package/dist/src/ui/components/shared/ToolElapsedTime.test.js.map +1 -0
  1857. package/dist/src/ui/components/shared/ToolStatusIndicator.d.ts +14 -0
  1858. package/dist/src/ui/components/shared/ToolStatusIndicator.js +13 -0
  1859. package/dist/src/ui/components/shared/ToolStatusIndicator.js.map +1 -0
  1860. package/dist/src/ui/components/shared/VirtualizedList.d.ts +49 -0
  1861. package/dist/src/ui/components/shared/VirtualizedList.js +529 -0
  1862. package/dist/src/ui/components/shared/VirtualizedList.js.map +1 -0
  1863. package/dist/src/ui/components/shared/VirtualizedList.test.d.ts +6 -0
  1864. package/dist/src/ui/components/shared/VirtualizedList.test.js +371 -0
  1865. package/dist/src/ui/components/shared/VirtualizedList.test.js.map +1 -0
  1866. package/dist/src/ui/components/shared/text-buffer-external-editor.test.d.ts +6 -0
  1867. package/dist/src/ui/components/shared/text-buffer-external-editor.test.js +657 -0
  1868. package/dist/src/ui/components/shared/text-buffer-external-editor.test.js.map +1 -0
  1869. package/dist/src/ui/components/shared/text-buffer.d.ts +503 -0
  1870. package/dist/src/ui/components/shared/text-buffer.js +2181 -0
  1871. package/dist/src/ui/components/shared/text-buffer.js.map +1 -0
  1872. package/dist/src/ui/components/shared/vim-buffer-actions.d.ts +74 -0
  1873. package/dist/src/ui/components/shared/vim-buffer-actions.js +612 -0
  1874. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -0
  1875. package/dist/src/ui/components/skills/SkillsManagerDialog.d.ts +44 -0
  1876. package/dist/src/ui/components/skills/SkillsManagerDialog.js +423 -0
  1877. package/dist/src/ui/components/skills/SkillsManagerDialog.js.map +1 -0
  1878. package/dist/src/ui/components/stats-helpers.d.ts +30 -0
  1879. package/dist/src/ui/components/stats-helpers.js +79 -0
  1880. package/dist/src/ui/components/stats-helpers.js.map +1 -0
  1881. package/dist/src/ui/components/subagents/constants.d.ts +23 -0
  1882. package/dist/src/ui/components/subagents/constants.js +67 -0
  1883. package/dist/src/ui/components/subagents/constants.js.map +1 -0
  1884. package/dist/src/ui/components/subagents/create/AgentCreationWizard.d.ts +15 -0
  1885. package/dist/src/ui/components/subagents/create/AgentCreationWizard.js +173 -0
  1886. package/dist/src/ui/components/subagents/create/AgentCreationWizard.js.map +1 -0
  1887. package/dist/src/ui/components/subagents/create/ColorSelector.d.ts +15 -0
  1888. package/dist/src/ui/components/subagents/create/ColorSelector.js +43 -0
  1889. package/dist/src/ui/components/subagents/create/ColorSelector.js.map +1 -0
  1890. package/dist/src/ui/components/subagents/create/CreationSummary.d.ts +10 -0
  1891. package/dist/src/ui/components/subagents/create/CreationSummary.js +176 -0
  1892. package/dist/src/ui/components/subagents/create/CreationSummary.js.map +1 -0
  1893. package/dist/src/ui/components/subagents/create/DescriptionInput.d.ts +10 -0
  1894. package/dist/src/ui/components/subagents/create/DescriptionInput.js +107 -0
  1895. package/dist/src/ui/components/subagents/create/DescriptionInput.js.map +1 -0
  1896. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.d.ts +10 -0
  1897. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js +39 -0
  1898. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js.map +1 -0
  1899. package/dist/src/ui/components/subagents/create/LocationSelector.d.ts +10 -0
  1900. package/dist/src/ui/components/subagents/create/LocationSelector.js +39 -0
  1901. package/dist/src/ui/components/subagents/create/LocationSelector.js.map +1 -0
  1902. package/dist/src/ui/components/subagents/create/TextEntryStep.d.ts +26 -0
  1903. package/dist/src/ui/components/subagents/create/TextEntryStep.js +28 -0
  1904. package/dist/src/ui/components/subagents/create/TextEntryStep.js.map +1 -0
  1905. package/dist/src/ui/components/subagents/create/ToolSelector.d.ts +16 -0
  1906. package/dist/src/ui/components/subagents/create/ToolSelector.js +145 -0
  1907. package/dist/src/ui/components/subagents/create/ToolSelector.js.map +1 -0
  1908. package/dist/src/ui/components/subagents/index.d.ts +7 -0
  1909. package/dist/src/ui/components/subagents/index.js +13 -0
  1910. package/dist/src/ui/components/subagents/index.js.map +1 -0
  1911. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.d.ts +13 -0
  1912. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js +73 -0
  1913. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js.map +1 -0
  1914. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.d.ts +13 -0
  1915. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js +38 -0
  1916. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js.map +1 -0
  1917. package/dist/src/ui/components/subagents/manage/AgentEditStep.d.ts +15 -0
  1918. package/dist/src/ui/components/subagents/manage/AgentEditStep.js +76 -0
  1919. package/dist/src/ui/components/subagents/manage/AgentEditStep.js.map +1 -0
  1920. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.d.ts +12 -0
  1921. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js +342 -0
  1922. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js.map +1 -0
  1923. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.test.d.ts +6 -0
  1924. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.test.js +56 -0
  1925. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.test.js.map +1 -0
  1926. package/dist/src/ui/components/subagents/manage/AgentViewerStep.d.ts +11 -0
  1927. package/dist/src/ui/components/subagents/manage/AgentViewerStep.js +20 -0
  1928. package/dist/src/ui/components/subagents/manage/AgentViewerStep.js.map +1 -0
  1929. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.d.ts +15 -0
  1930. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js +214 -0
  1931. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js.map +1 -0
  1932. package/dist/src/ui/components/subagents/reducers.d.ts +14 -0
  1933. package/dist/src/ui/components/subagents/reducers.js +162 -0
  1934. package/dist/src/ui/components/subagents/reducers.js.map +1 -0
  1935. package/dist/src/ui/components/subagents/types.d.ts +137 -0
  1936. package/dist/src/ui/components/subagents/types.js +15 -0
  1937. package/dist/src/ui/components/subagents/types.js.map +1 -0
  1938. package/dist/src/ui/components/subagents/utils.d.ts +15 -0
  1939. package/dist/src/ui/components/subagents/utils.js +79 -0
  1940. package/dist/src/ui/components/subagents/utils.js.map +1 -0
  1941. package/dist/src/ui/components/views/ContextUsage.d.ts +23 -0
  1942. package/dist/src/ui/components/views/ContextUsage.js +130 -0
  1943. package/dist/src/ui/components/views/ContextUsage.js.map +1 -0
  1944. package/dist/src/ui/components/views/ContextUsage.test.d.ts +6 -0
  1945. package/dist/src/ui/components/views/ContextUsage.test.js +76 -0
  1946. package/dist/src/ui/components/views/ContextUsage.test.js.map +1 -0
  1947. package/dist/src/ui/components/views/DoctorReport.d.ts +18 -0
  1948. package/dist/src/ui/components/views/DoctorReport.js +45 -0
  1949. package/dist/src/ui/components/views/DoctorReport.js.map +1 -0
  1950. package/dist/src/ui/components/views/ExtensionsList.d.ts +6 -0
  1951. package/dist/src/ui/components/views/ExtensionsList.js +49 -0
  1952. package/dist/src/ui/components/views/ExtensionsList.js.map +1 -0
  1953. package/dist/src/ui/components/views/ExtensionsList.test.d.ts +6 -0
  1954. package/dist/src/ui/components/views/ExtensionsList.test.js +88 -0
  1955. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -0
  1956. package/dist/src/ui/components/views/McpStatus.d.ts +27 -0
  1957. package/dist/src/ui/components/views/McpStatus.js +90 -0
  1958. package/dist/src/ui/components/views/McpStatus.js.map +1 -0
  1959. package/dist/src/ui/components/views/McpStatus.test.d.ts +6 -0
  1960. package/dist/src/ui/components/views/McpStatus.test.js +117 -0
  1961. package/dist/src/ui/components/views/McpStatus.test.js.map +1 -0
  1962. package/dist/src/ui/components/views/SkillsList.d.ts +12 -0
  1963. package/dist/src/ui/components/views/SkillsList.js +7 -0
  1964. package/dist/src/ui/components/views/SkillsList.js.map +1 -0
  1965. package/dist/src/ui/components/views/ToolsList.d.ts +14 -0
  1966. package/dist/src/ui/components/views/ToolsList.js +8 -0
  1967. package/dist/src/ui/components/views/ToolsList.js.map +1 -0
  1968. package/dist/src/ui/components/views/ToolsList.test.d.ts +6 -0
  1969. package/dist/src/ui/components/views/ToolsList.test.js +45 -0
  1970. package/dist/src/ui/components/views/ToolsList.test.js.map +1 -0
  1971. package/dist/src/ui/constants.d.ts +18 -0
  1972. package/dist/src/ui/constants.js +23 -0
  1973. package/dist/src/ui/constants.js.map +1 -0
  1974. package/dist/src/ui/contexts/AgentViewContext.d.ts +49 -0
  1975. package/dist/src/ui/contexts/AgentViewContext.js +187 -0
  1976. package/dist/src/ui/contexts/AgentViewContext.js.map +1 -0
  1977. package/dist/src/ui/contexts/AppContext.d.ts +11 -0
  1978. package/dist/src/ui/contexts/AppContext.js +15 -0
  1979. package/dist/src/ui/contexts/AppContext.js.map +1 -0
  1980. package/dist/src/ui/contexts/BackgroundTaskViewContext.d.ts +60 -0
  1981. package/dist/src/ui/contexts/BackgroundTaskViewContext.js +238 -0
  1982. package/dist/src/ui/contexts/BackgroundTaskViewContext.js.map +1 -0
  1983. package/dist/src/ui/contexts/CompactModeContext.d.ts +13 -0
  1984. package/dist/src/ui/contexts/CompactModeContext.js +13 -0
  1985. package/dist/src/ui/contexts/CompactModeContext.js.map +1 -0
  1986. package/dist/src/ui/contexts/ConfigContext.d.ts +9 -0
  1987. package/dist/src/ui/contexts/ConfigContext.js +16 -0
  1988. package/dist/src/ui/contexts/ConfigContext.js.map +1 -0
  1989. package/dist/src/ui/contexts/KeypressContext.d.ts +40 -0
  1990. package/dist/src/ui/contexts/KeypressContext.js +959 -0
  1991. package/dist/src/ui/contexts/KeypressContext.js.map +1 -0
  1992. package/dist/src/ui/contexts/KeypressContext.test.d.ts +6 -0
  1993. package/dist/src/ui/contexts/KeypressContext.test.js +1360 -0
  1994. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -0
  1995. package/dist/src/ui/contexts/OverflowContext.d.ts +19 -0
  1996. package/dist/src/ui/contexts/OverflowContext.js +38 -0
  1997. package/dist/src/ui/contexts/OverflowContext.js.map +1 -0
  1998. package/dist/src/ui/contexts/RenderModeContext.d.ts +14 -0
  1999. package/dist/src/ui/contexts/RenderModeContext.js +15 -0
  2000. package/dist/src/ui/contexts/RenderModeContext.js.map +1 -0
  2001. package/dist/src/ui/contexts/SessionContext.d.ts +47 -0
  2002. package/dist/src/ui/contexts/SessionContext.js +180 -0
  2003. package/dist/src/ui/contexts/SessionContext.js.map +1 -0
  2004. package/dist/src/ui/contexts/SettingsContext.d.ts +9 -0
  2005. package/dist/src/ui/contexts/SettingsContext.js +15 -0
  2006. package/dist/src/ui/contexts/SettingsContext.js.map +1 -0
  2007. package/dist/src/ui/contexts/ShellFocusContext.d.ts +7 -0
  2008. package/dist/src/ui/contexts/ShellFocusContext.js +9 -0
  2009. package/dist/src/ui/contexts/ShellFocusContext.js.map +1 -0
  2010. package/dist/src/ui/contexts/StreamingContext.d.ts +9 -0
  2011. package/dist/src/ui/contexts/StreamingContext.js +15 -0
  2012. package/dist/src/ui/contexts/StreamingContext.js.map +1 -0
  2013. package/dist/src/ui/contexts/TerminalOutputContext.d.ts +12 -0
  2014. package/dist/src/ui/contexts/TerminalOutputContext.js +11 -0
  2015. package/dist/src/ui/contexts/TerminalOutputContext.js.map +1 -0
  2016. package/dist/src/ui/contexts/UIActionsContext.d.ts +91 -0
  2017. package/dist/src/ui/contexts/UIActionsContext.js +22 -0
  2018. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -0
  2019. package/dist/src/ui/contexts/UIStateContext.d.ts +158 -0
  2020. package/dist/src/ui/contexts/UIStateContext.js +20 -0
  2021. package/dist/src/ui/contexts/UIStateContext.js.map +1 -0
  2022. package/dist/src/ui/contexts/VimModeContext.d.ts +31 -0
  2023. package/dist/src/ui/contexts/VimModeContext.js +60 -0
  2024. package/dist/src/ui/contexts/VimModeContext.js.map +1 -0
  2025. package/dist/src/ui/contexts/VimModeContext.test.d.ts +11 -0
  2026. package/dist/src/ui/contexts/VimModeContext.test.js +99 -0
  2027. package/dist/src/ui/contexts/VimModeContext.test.js.map +1 -0
  2028. package/dist/src/ui/daemon/DaemonTuiAdapter.d.ts +101 -0
  2029. package/dist/src/ui/daemon/DaemonTuiAdapter.js +695 -0
  2030. package/dist/src/ui/daemon/DaemonTuiAdapter.js.map +1 -0
  2031. package/dist/src/ui/daemon/DaemonTuiAdapter.test.d.ts +6 -0
  2032. package/dist/src/ui/daemon/DaemonTuiAdapter.test.js +784 -0
  2033. package/dist/src/ui/daemon/DaemonTuiAdapter.test.js.map +1 -0
  2034. package/dist/src/ui/editors/editorSettingsManager.d.ts +19 -0
  2035. package/dist/src/ui/editors/editorSettingsManager.js +48 -0
  2036. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -0
  2037. package/dist/src/ui/hooks/atCommandProcessor.d.ts +33 -0
  2038. package/dist/src/ui/hooks/atCommandProcessor.js +344 -0
  2039. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -0
  2040. package/dist/src/ui/hooks/atCommandProcessor.test.d.ts +6 -0
  2041. package/dist/src/ui/hooks/atCommandProcessor.test.js +871 -0
  2042. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -0
  2043. package/dist/src/ui/hooks/keyToAnsi.d.ts +15 -0
  2044. package/dist/src/ui/hooks/keyToAnsi.js +67 -0
  2045. package/dist/src/ui/hooks/keyToAnsi.js.map +1 -0
  2046. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +18 -0
  2047. package/dist/src/ui/hooks/shellCommandProcessor.js +287 -0
  2048. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -0
  2049. package/dist/src/ui/hooks/shellCommandProcessor.test.d.ts +6 -0
  2050. package/dist/src/ui/hooks/shellCommandProcessor.test.js +509 -0
  2051. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -0
  2052. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +71 -0
  2053. package/dist/src/ui/hooks/slashCommandProcessor.js +837 -0
  2054. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -0
  2055. package/dist/src/ui/hooks/useAgentStreamingState.d.ts +29 -0
  2056. package/dist/src/ui/hooks/useAgentStreamingState.js +109 -0
  2057. package/dist/src/ui/hooks/useAgentStreamingState.js.map +1 -0
  2058. package/dist/src/ui/hooks/useAgentsManagerDialog.d.ts +11 -0
  2059. package/dist/src/ui/hooks/useAgentsManagerDialog.js +21 -0
  2060. package/dist/src/ui/hooks/useAgentsManagerDialog.js.map +1 -0
  2061. package/dist/src/ui/hooks/useAnimatedScrollbar.d.ts +37 -0
  2062. package/dist/src/ui/hooks/useAnimatedScrollbar.js +44 -0
  2063. package/dist/src/ui/hooks/useAnimatedScrollbar.js.map +1 -0
  2064. package/dist/src/ui/hooks/useAnimatedScrollbar.test.d.ts +6 -0
  2065. package/dist/src/ui/hooks/useAnimatedScrollbar.test.js +74 -0
  2066. package/dist/src/ui/hooks/useAnimatedScrollbar.test.js.map +1 -0
  2067. package/dist/src/ui/hooks/useAnimationFrame.d.ts +25 -0
  2068. package/dist/src/ui/hooks/useAnimationFrame.js +86 -0
  2069. package/dist/src/ui/hooks/useAnimationFrame.js.map +1 -0
  2070. package/dist/src/ui/hooks/useApprovalModeCommand.d.ts +14 -0
  2071. package/dist/src/ui/hooks/useApprovalModeCommand.js +33 -0
  2072. package/dist/src/ui/hooks/useApprovalModeCommand.js.map +1 -0
  2073. package/dist/src/ui/hooks/useArenaCommand.d.ts +13 -0
  2074. package/dist/src/ui/hooks/useArenaCommand.js +21 -0
  2075. package/dist/src/ui/hooks/useArenaCommand.js.map +1 -0
  2076. package/dist/src/ui/hooks/useArenaInProcess.d.ts +14 -0
  2077. package/dist/src/ui/hooks/useArenaInProcess.js +136 -0
  2078. package/dist/src/ui/hooks/useArenaInProcess.js.map +1 -0
  2079. package/dist/src/ui/hooks/useAtCompletion.d.ts +23 -0
  2080. package/dist/src/ui/hooks/useAtCompletion.js +184 -0
  2081. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -0
  2082. package/dist/src/ui/hooks/useAttentionNotifications.d.ts +22 -0
  2083. package/dist/src/ui/hooks/useAttentionNotifications.js +89 -0
  2084. package/dist/src/ui/hooks/useAttentionNotifications.js.map +1 -0
  2085. package/dist/src/ui/hooks/useAttentionNotifications.test.d.ts +6 -0
  2086. package/dist/src/ui/hooks/useAttentionNotifications.test.js +222 -0
  2087. package/dist/src/ui/hooks/useAttentionNotifications.test.js.map +1 -0
  2088. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +32 -0
  2089. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +124 -0
  2090. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -0
  2091. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.d.ts +6 -0
  2092. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +379 -0
  2093. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -0
  2094. package/dist/src/ui/hooks/useAwaySummary.d.ts +35 -0
  2095. package/dist/src/ui/hooks/useAwaySummary.js +141 -0
  2096. package/dist/src/ui/hooks/useAwaySummary.js.map +1 -0
  2097. package/dist/src/ui/hooks/useAwaySummary.test.d.ts +6 -0
  2098. package/dist/src/ui/hooks/useAwaySummary.test.js +103 -0
  2099. package/dist/src/ui/hooks/useAwaySummary.test.js.map +1 -0
  2100. package/dist/src/ui/hooks/useBackgroundTaskView.d.ts +69 -0
  2101. package/dist/src/ui/hooks/useBackgroundTaskView.js +217 -0
  2102. package/dist/src/ui/hooks/useBackgroundTaskView.js.map +1 -0
  2103. package/dist/src/ui/hooks/useBackgroundTaskView.test.d.ts +6 -0
  2104. package/dist/src/ui/hooks/useBackgroundTaskView.test.js +455 -0
  2105. package/dist/src/ui/hooks/useBackgroundTaskView.test.js.map +1 -0
  2106. package/dist/src/ui/hooks/useBatchedScroll.d.ts +14 -0
  2107. package/dist/src/ui/hooks/useBatchedScroll.js +25 -0
  2108. package/dist/src/ui/hooks/useBatchedScroll.js.map +1 -0
  2109. package/dist/src/ui/hooks/useBatchedScroll.test.d.ts +6 -0
  2110. package/dist/src/ui/hooks/useBatchedScroll.test.js +42 -0
  2111. package/dist/src/ui/hooks/useBatchedScroll.test.js.map +1 -0
  2112. package/dist/src/ui/hooks/useBracketedPaste.d.ts +12 -0
  2113. package/dist/src/ui/hooks/useBracketedPaste.js +32 -0
  2114. package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -0
  2115. package/dist/src/ui/hooks/useBranchCommand.d.ts +33 -0
  2116. package/dist/src/ui/hooks/useBranchCommand.js +230 -0
  2117. package/dist/src/ui/hooks/useBranchCommand.js.map +1 -0
  2118. package/dist/src/ui/hooks/useBranchCommand.test.d.ts +6 -0
  2119. package/dist/src/ui/hooks/useBranchCommand.test.js +386 -0
  2120. package/dist/src/ui/hooks/useBranchCommand.test.js.map +1 -0
  2121. package/dist/src/ui/hooks/useCommandCompletion.d.ts +37 -0
  2122. package/dist/src/ui/hooks/useCommandCompletion.js +227 -0
  2123. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -0
  2124. package/dist/src/ui/hooks/useCommandMigration.d.ts +16 -0
  2125. package/dist/src/ui/hooks/useCommandMigration.js +40 -0
  2126. package/dist/src/ui/hooks/useCommandMigration.js.map +1 -0
  2127. package/dist/src/ui/hooks/useCompletion.d.ts +24 -0
  2128. package/dist/src/ui/hooks/useCompletion.js +88 -0
  2129. package/dist/src/ui/hooks/useCompletion.js.map +1 -0
  2130. package/dist/src/ui/hooks/useConfigInitMessage.d.ts +6 -0
  2131. package/dist/src/ui/hooks/useConfigInitMessage.js +45 -0
  2132. package/dist/src/ui/hooks/useConfigInitMessage.js.map +1 -0
  2133. package/dist/src/ui/hooks/useConfigInitMessage.test.d.ts +6 -0
  2134. package/dist/src/ui/hooks/useConfigInitMessage.test.js +80 -0
  2135. package/dist/src/ui/hooks/useConfigInitMessage.test.js.map +1 -0
  2136. package/dist/src/ui/hooks/useContextualTips.d.ts +19 -0
  2137. package/dist/src/ui/hooks/useContextualTips.js +65 -0
  2138. package/dist/src/ui/hooks/useContextualTips.js.map +1 -0
  2139. package/dist/src/ui/hooks/useDeleteCommand.d.ts +19 -0
  2140. package/dist/src/ui/hooks/useDeleteCommand.js +167 -0
  2141. package/dist/src/ui/hooks/useDeleteCommand.js.map +1 -0
  2142. package/dist/src/ui/hooks/useDeleteCommand.test.d.ts +6 -0
  2143. package/dist/src/ui/hooks/useDeleteCommand.test.js +391 -0
  2144. package/dist/src/ui/hooks/useDeleteCommand.test.js.map +1 -0
  2145. package/dist/src/ui/hooks/useDialogClose.d.ts +48 -0
  2146. package/dist/src/ui/hooks/useDialogClose.js +102 -0
  2147. package/dist/src/ui/hooks/useDialogClose.js.map +1 -0
  2148. package/dist/src/ui/hooks/useDiffData.d.ts +32 -0
  2149. package/dist/src/ui/hooks/useDiffData.js +72 -0
  2150. package/dist/src/ui/hooks/useDiffData.js.map +1 -0
  2151. package/dist/src/ui/hooks/useDoublePress.d.ts +18 -0
  2152. package/dist/src/ui/hooks/useDoublePress.js +47 -0
  2153. package/dist/src/ui/hooks/useDoublePress.js.map +1 -0
  2154. package/dist/src/ui/hooks/useEditorSettings.d.ts +16 -0
  2155. package/dist/src/ui/hooks/useEditorSettings.js +43 -0
  2156. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -0
  2157. package/dist/src/ui/hooks/useEditorSettings.test.d.ts +6 -0
  2158. package/dist/src/ui/hooks/useEditorSettings.test.js +164 -0
  2159. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -0
  2160. package/dist/src/ui/hooks/useExportCompletion.d.ts +70 -0
  2161. package/dist/src/ui/hooks/useExportCompletion.js +208 -0
  2162. package/dist/src/ui/hooks/useExportCompletion.js.map +1 -0
  2163. package/dist/src/ui/hooks/useExportCompletion.test.d.ts +6 -0
  2164. package/dist/src/ui/hooks/useExportCompletion.test.js +190 -0
  2165. package/dist/src/ui/hooks/useExportCompletion.test.js.map +1 -0
  2166. package/dist/src/ui/hooks/useExtensionUpdates.d.ts +71 -0
  2167. package/dist/src/ui/hooks/useExtensionUpdates.js +229 -0
  2168. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -0
  2169. package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +6 -0
  2170. package/dist/src/ui/hooks/useExtensionUpdates.test.js +455 -0
  2171. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
  2172. package/dist/src/ui/hooks/useExtensionsManagerDialog.d.ts +12 -0
  2173. package/dist/src/ui/hooks/useExtensionsManagerDialog.js +21 -0
  2174. package/dist/src/ui/hooks/useExtensionsManagerDialog.js.map +1 -0
  2175. package/dist/src/ui/hooks/useFeedbackDialog.d.ts +18 -0
  2176. package/dist/src/ui/hooks/useFeedbackDialog.js +130 -0
  2177. package/dist/src/ui/hooks/useFeedbackDialog.js.map +1 -0
  2178. package/dist/src/ui/hooks/useFocus.d.ts +10 -0
  2179. package/dist/src/ui/hooks/useFocus.js +51 -0
  2180. package/dist/src/ui/hooks/useFocus.js.map +1 -0
  2181. package/dist/src/ui/hooks/useFolderTrust.d.ts +13 -0
  2182. package/dist/src/ui/hooks/useFolderTrust.js +60 -0
  2183. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -0
  2184. package/dist/src/ui/hooks/useFollowupSuggestions.d.ts +53 -0
  2185. package/dist/src/ui/hooks/useFollowupSuggestions.js +89 -0
  2186. package/dist/src/ui/hooks/useFollowupSuggestions.js.map +1 -0
  2187. package/dist/src/ui/hooks/useGeminiStream.d.ts +76 -0
  2188. package/dist/src/ui/hooks/useGeminiStream.js +1899 -0
  2189. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -0
  2190. package/dist/src/ui/hooks/useGitBranchName.d.ts +6 -0
  2191. package/dist/src/ui/hooks/useGitBranchName.js +61 -0
  2192. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -0
  2193. package/dist/src/ui/hooks/useGitBranchName.test.d.ts +6 -0
  2194. package/dist/src/ui/hooks/useGitBranchName.test.js +192 -0
  2195. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -0
  2196. package/dist/src/ui/hooks/useHistoryManager.d.ts +24 -0
  2197. package/dist/src/ui/hooks/useHistoryManager.js +183 -0
  2198. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -0
  2199. package/dist/src/ui/hooks/useHistoryManager.test.d.ts +6 -0
  2200. package/dist/src/ui/hooks/useHistoryManager.test.js +495 -0
  2201. package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -0
  2202. package/dist/src/ui/hooks/useHooksDialog.d.ts +11 -0
  2203. package/dist/src/ui/hooks/useHooksDialog.js +21 -0
  2204. package/dist/src/ui/hooks/useHooksDialog.js.map +1 -0
  2205. package/dist/src/ui/hooks/useIdeTrustListener.d.ts +16 -0
  2206. package/dist/src/ui/hooks/useIdeTrustListener.js +65 -0
  2207. package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -0
  2208. package/dist/src/ui/hooks/useIdeTrustListener.test.d.ts +6 -0
  2209. package/dist/src/ui/hooks/useIdeTrustListener.test.js +183 -0
  2210. package/dist/src/ui/hooks/useIdeTrustListener.test.js.map +1 -0
  2211. package/dist/src/ui/hooks/useInitializationAuthError.d.ts +22 -0
  2212. package/dist/src/ui/hooks/useInitializationAuthError.js +40 -0
  2213. package/dist/src/ui/hooks/useInitializationAuthError.js.map +1 -0
  2214. package/dist/src/ui/hooks/useInputHistory.d.ts +20 -0
  2215. package/dist/src/ui/hooks/useInputHistory.js +85 -0
  2216. package/dist/src/ui/hooks/useInputHistory.js.map +1 -0
  2217. package/dist/src/ui/hooks/useInputHistory.test.d.ts +6 -0
  2218. package/dist/src/ui/hooks/useInputHistory.test.js +207 -0
  2219. package/dist/src/ui/hooks/useInputHistory.test.js.map +1 -0
  2220. package/dist/src/ui/hooks/useInputHistoryStore.d.ts +19 -0
  2221. package/dist/src/ui/hooks/useInputHistoryStore.js +83 -0
  2222. package/dist/src/ui/hooks/useInputHistoryStore.js.map +1 -0
  2223. package/dist/src/ui/hooks/useInputHistoryStore.test.d.ts +6 -0
  2224. package/dist/src/ui/hooks/useInputHistoryStore.test.js +231 -0
  2225. package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -0
  2226. package/dist/src/ui/hooks/useKeypress.d.ts +17 -0
  2227. package/dist/src/ui/hooks/useKeypress.js +27 -0
  2228. package/dist/src/ui/hooks/useKeypress.js.map +1 -0
  2229. package/dist/src/ui/hooks/useKittyKeyboardProtocol.d.ts +15 -0
  2230. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +20 -0
  2231. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -0
  2232. package/dist/src/ui/hooks/useLaunchEditor.d.ts +5 -0
  2233. package/dist/src/ui/hooks/useLaunchEditor.js +75 -0
  2234. package/dist/src/ui/hooks/useLaunchEditor.js.map +1 -0
  2235. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +11 -0
  2236. package/dist/src/ui/hooks/useLoadingIndicator.js +50 -0
  2237. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -0
  2238. package/dist/src/ui/hooks/useLoadingIndicator.test.d.ts +6 -0
  2239. package/dist/src/ui/hooks/useLoadingIndicator.test.js +172 -0
  2240. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -0
  2241. package/dist/src/ui/hooks/useLogger.d.ts +11 -0
  2242. package/dist/src/ui/hooks/useLogger.js +32 -0
  2243. package/dist/src/ui/hooks/useLogger.js.map +1 -0
  2244. package/dist/src/ui/hooks/useMCPHealth.d.ts +16 -0
  2245. package/dist/src/ui/hooks/useMCPHealth.js +56 -0
  2246. package/dist/src/ui/hooks/useMCPHealth.js.map +1 -0
  2247. package/dist/src/ui/hooks/useMcpDialog.d.ts +11 -0
  2248. package/dist/src/ui/hooks/useMcpDialog.js +21 -0
  2249. package/dist/src/ui/hooks/useMcpDialog.js.map +1 -0
  2250. package/dist/src/ui/hooks/useMemoryDialog.d.ts +11 -0
  2251. package/dist/src/ui/hooks/useMemoryDialog.js +21 -0
  2252. package/dist/src/ui/hooks/useMemoryDialog.js.map +1 -0
  2253. package/dist/src/ui/hooks/useMemoryMonitor.d.ts +17 -0
  2254. package/dist/src/ui/hooks/useMemoryMonitor.js +83 -0
  2255. package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -0
  2256. package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +6 -0
  2257. package/dist/src/ui/hooks/useMemoryMonitor.test.js +153 -0
  2258. package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +1 -0
  2259. package/dist/src/ui/hooks/useMessageQueue.d.ts +18 -0
  2260. package/dist/src/ui/hooks/useMessageQueue.js +67 -0
  2261. package/dist/src/ui/hooks/useMessageQueue.js.map +1 -0
  2262. package/dist/src/ui/hooks/useMessageQueue.test.d.ts +6 -0
  2263. package/dist/src/ui/hooks/useMessageQueue.test.js +219 -0
  2264. package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -0
  2265. package/dist/src/ui/hooks/useModelCommand.d.ts +15 -0
  2266. package/dist/src/ui/hooks/useModelCommand.js +25 -0
  2267. package/dist/src/ui/hooks/useModelCommand.js.map +1 -0
  2268. package/dist/src/ui/hooks/useModelCommand.test.d.ts +6 -0
  2269. package/dist/src/ui/hooks/useModelCommand.test.js +35 -0
  2270. package/dist/src/ui/hooks/useModelCommand.test.js.map +1 -0
  2271. package/dist/src/ui/hooks/useMouseEvents.d.ts +44 -0
  2272. package/dist/src/ui/hooks/useMouseEvents.js +85 -0
  2273. package/dist/src/ui/hooks/useMouseEvents.js.map +1 -0
  2274. package/dist/src/ui/hooks/usePhraseCycler.d.ts +14 -0
  2275. package/dist/src/ui/hooks/usePhraseCycler.js +70 -0
  2276. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -0
  2277. package/dist/src/ui/hooks/usePreferredEditor.d.ts +7 -0
  2278. package/dist/src/ui/hooks/usePreferredEditor.js +25 -0
  2279. package/dist/src/ui/hooks/usePreferredEditor.js.map +1 -0
  2280. package/dist/src/ui/hooks/useProviderUpdates.d.ts +33 -0
  2281. package/dist/src/ui/hooks/useProviderUpdates.js +215 -0
  2282. package/dist/src/ui/hooks/useProviderUpdates.js.map +1 -0
  2283. package/dist/src/ui/hooks/useProviderUpdates.test.d.ts +6 -0
  2284. package/dist/src/ui/hooks/useProviderUpdates.test.js +293 -0
  2285. package/dist/src/ui/hooks/useProviderUpdates.test.js.map +1 -0
  2286. package/dist/src/ui/hooks/useQwenAuth.d.ts +20 -0
  2287. package/dist/src/ui/hooks/useQwenAuth.js +74 -0
  2288. package/dist/src/ui/hooks/useQwenAuth.js.map +1 -0
  2289. package/dist/src/ui/hooks/useQwenAuth.test.d.ts +6 -0
  2290. package/dist/src/ui/hooks/useQwenAuth.test.js +266 -0
  2291. package/dist/src/ui/hooks/useQwenAuth.test.js.map +1 -0
  2292. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +33 -0
  2293. package/dist/src/ui/hooks/useReactToolScheduler.js +236 -0
  2294. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -0
  2295. package/dist/src/ui/hooks/useRefreshMemoryCommand.d.ts +6 -0
  2296. package/dist/src/ui/hooks/useRefreshMemoryCommand.js +7 -0
  2297. package/dist/src/ui/hooks/useRefreshMemoryCommand.js.map +1 -0
  2298. package/dist/src/ui/hooks/useResumeCommand.d.ts +31 -0
  2299. package/dist/src/ui/hooks/useResumeCommand.js +114 -0
  2300. package/dist/src/ui/hooks/useResumeCommand.js.map +1 -0
  2301. package/dist/src/ui/hooks/useResumeCommand.test.d.ts +6 -0
  2302. package/dist/src/ui/hooks/useResumeCommand.test.js +349 -0
  2303. package/dist/src/ui/hooks/useResumeCommand.test.js.map +1 -0
  2304. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
  2305. package/dist/src/ui/hooks/useReverseSearchCompletion.js +103 -0
  2306. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
  2307. package/dist/src/ui/hooks/useReverseSearchCompletion.test.d.ts +6 -0
  2308. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +163 -0
  2309. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -0
  2310. package/dist/src/ui/hooks/useSelectionList.d.ts +41 -0
  2311. package/dist/src/ui/hooks/useSelectionList.js +276 -0
  2312. package/dist/src/ui/hooks/useSelectionList.js.map +1 -0
  2313. package/dist/src/ui/hooks/useSelectionList.test.d.ts +6 -0
  2314. package/dist/src/ui/hooks/useSelectionList.test.js +782 -0
  2315. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -0
  2316. package/dist/src/ui/hooks/useSessionPicker.d.ts +95 -0
  2317. package/dist/src/ui/hooks/useSessionPicker.js +383 -0
  2318. package/dist/src/ui/hooks/useSessionPicker.js.map +1 -0
  2319. package/dist/src/ui/hooks/useSessionPicker.test.d.ts +6 -0
  2320. package/dist/src/ui/hooks/useSessionPicker.test.js +94 -0
  2321. package/dist/src/ui/hooks/useSessionPicker.test.js.map +1 -0
  2322. package/dist/src/ui/hooks/useSessionSearchInput.d.ts +69 -0
  2323. package/dist/src/ui/hooks/useSessionSearchInput.js +124 -0
  2324. package/dist/src/ui/hooks/useSessionSearchInput.js.map +1 -0
  2325. package/dist/src/ui/hooks/useSessionSearchInput.test.d.ts +6 -0
  2326. package/dist/src/ui/hooks/useSessionSearchInput.test.js +342 -0
  2327. package/dist/src/ui/hooks/useSessionSearchInput.test.js.map +1 -0
  2328. package/dist/src/ui/hooks/useSettingsCommand.d.ts +10 -0
  2329. package/dist/src/ui/hooks/useSettingsCommand.js +21 -0
  2330. package/dist/src/ui/hooks/useSettingsCommand.js.map +1 -0
  2331. package/dist/src/ui/hooks/useShellHistory.d.ts +14 -0
  2332. package/dist/src/ui/hooks/useShellHistory.js +112 -0
  2333. package/dist/src/ui/hooks/useShellHistory.js.map +1 -0
  2334. package/dist/src/ui/hooks/useShellHistory.test.d.ts +6 -0
  2335. package/dist/src/ui/hooks/useShellHistory.test.js +193 -0
  2336. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -0
  2337. package/dist/src/ui/hooks/useShowMemoryCommand.d.ts +9 -0
  2338. package/dist/src/ui/hooks/useShowMemoryCommand.js +55 -0
  2339. package/dist/src/ui/hooks/useShowMemoryCommand.js.map +1 -0
  2340. package/dist/src/ui/hooks/useSkillsManagerDialog.d.ts +11 -0
  2341. package/dist/src/ui/hooks/useSkillsManagerDialog.js +21 -0
  2342. package/dist/src/ui/hooks/useSkillsManagerDialog.js.map +1 -0
  2343. package/dist/src/ui/hooks/useSlashCompletion.d.ts +27 -0
  2344. package/dist/src/ui/hooks/useSlashCompletion.integration.test.d.ts +6 -0
  2345. package/dist/src/ui/hooks/useSlashCompletion.integration.test.js +84 -0
  2346. package/dist/src/ui/hooks/useSlashCompletion.integration.test.js.map +1 -0
  2347. package/dist/src/ui/hooks/useSlashCompletion.js +490 -0
  2348. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
  2349. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +9 -0
  2350. package/dist/src/ui/hooks/useSlashCompletion.test.js +805 -0
  2351. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -0
  2352. package/dist/src/ui/hooks/useStateAndRef.d.ts +7 -0
  2353. package/dist/src/ui/hooks/useStateAndRef.js +26 -0
  2354. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -0
  2355. package/dist/src/ui/hooks/useStatsDialog.d.ts +11 -0
  2356. package/dist/src/ui/hooks/useStatsDialog.js +13 -0
  2357. package/dist/src/ui/hooks/useStatsDialog.js.map +1 -0
  2358. package/dist/src/ui/hooks/useStatusLine.d.ts +84 -0
  2359. package/dist/src/ui/hooks/useStatusLine.js +528 -0
  2360. package/dist/src/ui/hooks/useStatusLine.js.map +1 -0
  2361. package/dist/src/ui/hooks/useStatusLine.test.d.ts +6 -0
  2362. package/dist/src/ui/hooks/useStatusLine.test.js +1039 -0
  2363. package/dist/src/ui/hooks/useStatusLine.test.js.map +1 -0
  2364. package/dist/src/ui/hooks/useSubagentCreateDialog.d.ts +10 -0
  2365. package/dist/src/ui/hooks/useSubagentCreateDialog.js +21 -0
  2366. package/dist/src/ui/hooks/useSubagentCreateDialog.js.map +1 -0
  2367. package/dist/src/ui/hooks/useTerminalNotification.d.ts +32 -0
  2368. package/dist/src/ui/hooks/useTerminalNotification.js +45 -0
  2369. package/dist/src/ui/hooks/useTerminalNotification.js.map +1 -0
  2370. package/dist/src/ui/hooks/useTerminalNotification.test.d.ts +6 -0
  2371. package/dist/src/ui/hooks/useTerminalNotification.test.js +69 -0
  2372. package/dist/src/ui/hooks/useTerminalNotification.test.js.map +1 -0
  2373. package/dist/src/ui/hooks/useTerminalProgress.d.ts +12 -0
  2374. package/dist/src/ui/hooks/useTerminalProgress.js +76 -0
  2375. package/dist/src/ui/hooks/useTerminalProgress.js.map +1 -0
  2376. package/dist/src/ui/hooks/useTerminalSize.d.ts +13 -0
  2377. package/dist/src/ui/hooks/useTerminalSize.js +30 -0
  2378. package/dist/src/ui/hooks/useTerminalSize.js.map +1 -0
  2379. package/dist/src/ui/hooks/useThemeCommand.d.ts +15 -0
  2380. package/dist/src/ui/hooks/useThemeCommand.js +85 -0
  2381. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -0
  2382. package/dist/src/ui/hooks/useThemeCommand.test.d.ts +6 -0
  2383. package/dist/src/ui/hooks/useThemeCommand.test.js +42 -0
  2384. package/dist/src/ui/hooks/useThemeCommand.test.js.map +1 -0
  2385. package/dist/src/ui/hooks/useTimer.d.ts +12 -0
  2386. package/dist/src/ui/hooks/useTimer.js +58 -0
  2387. package/dist/src/ui/hooks/useTimer.js.map +1 -0
  2388. package/dist/src/ui/hooks/useTimer.test.d.ts +6 -0
  2389. package/dist/src/ui/hooks/useTimer.test.js +90 -0
  2390. package/dist/src/ui/hooks/useTimer.test.js.map +1 -0
  2391. package/dist/src/ui/hooks/useTomlMigration.d.ts +1 -0
  2392. package/dist/src/ui/hooks/useTomlMigration.js +2 -0
  2393. package/dist/src/ui/hooks/useTomlMigration.js.map +1 -0
  2394. package/dist/src/ui/hooks/useToolScheduler.test.d.ts +6 -0
  2395. package/dist/src/ui/hooks/useToolScheduler.test.js +624 -0
  2396. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -0
  2397. package/dist/src/ui/hooks/useTrustModify.d.ts +17 -0
  2398. package/dist/src/ui/hooks/useTrustModify.js +78 -0
  2399. package/dist/src/ui/hooks/useTrustModify.js.map +1 -0
  2400. package/dist/src/ui/hooks/useTrustModify.test.d.ts +6 -0
  2401. package/dist/src/ui/hooks/useTrustModify.test.js +182 -0
  2402. package/dist/src/ui/hooks/useTrustModify.test.js.map +1 -0
  2403. package/dist/src/ui/hooks/useTurnDiffs.d.ts +34 -0
  2404. package/dist/src/ui/hooks/useTurnDiffs.js +130 -0
  2405. package/dist/src/ui/hooks/useTurnDiffs.js.map +1 -0
  2406. package/dist/src/ui/hooks/useTurnDiffs.test.d.ts +6 -0
  2407. package/dist/src/ui/hooks/useTurnDiffs.test.js +164 -0
  2408. package/dist/src/ui/hooks/useTurnDiffs.test.js.map +1 -0
  2409. package/dist/src/ui/hooks/useWelcomeBack.d.ts +23 -0
  2410. package/dist/src/ui/hooks/useWelcomeBack.js +99 -0
  2411. package/dist/src/ui/hooks/useWelcomeBack.js.map +1 -0
  2412. package/dist/src/ui/hooks/useWelcomeBack.test.d.ts +6 -0
  2413. package/dist/src/ui/hooks/useWelcomeBack.test.js +94 -0
  2414. package/dist/src/ui/hooks/useWelcomeBack.test.js.map +1 -0
  2415. package/dist/src/ui/hooks/useWorktreeSession.d.ts +26 -0
  2416. package/dist/src/ui/hooks/useWorktreeSession.js +92 -0
  2417. package/dist/src/ui/hooks/useWorktreeSession.js.map +1 -0
  2418. package/dist/src/ui/hooks/useWorktreeSession.test.d.ts +6 -0
  2419. package/dist/src/ui/hooks/useWorktreeSession.test.js +84 -0
  2420. package/dist/src/ui/hooks/useWorktreeSession.test.js.map +1 -0
  2421. package/dist/src/ui/hooks/vim.d.ts +13 -0
  2422. package/dist/src/ui/hooks/vim.js +1637 -0
  2423. package/dist/src/ui/hooks/vim.js.map +1 -0
  2424. package/dist/src/ui/hooks/vim.test.d.ts +6 -0
  2425. package/dist/src/ui/hooks/vim.test.js +1975 -0
  2426. package/dist/src/ui/hooks/vim.test.js.map +1 -0
  2427. package/dist/src/ui/keyMatchers.d.ts +27 -0
  2428. package/dist/src/ui/keyMatchers.js +71 -0
  2429. package/dist/src/ui/keyMatchers.js.map +1 -0
  2430. package/dist/src/ui/keyMatchers.test.d.ts +6 -0
  2431. package/dist/src/ui/keyMatchers.test.js +421 -0
  2432. package/dist/src/ui/keyMatchers.test.js.map +1 -0
  2433. package/dist/src/ui/layouts/DefaultAppLayout.d.ts +7 -0
  2434. package/dist/src/ui/layouts/DefaultAppLayout.js +49 -0
  2435. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -0
  2436. package/dist/src/ui/layouts/DefaultAppLayout.test.d.ts +6 -0
  2437. package/dist/src/ui/layouts/DefaultAppLayout.test.js +185 -0
  2438. package/dist/src/ui/layouts/DefaultAppLayout.test.js.map +1 -0
  2439. package/dist/src/ui/layouts/ScreenReaderAppLayout.d.ts +7 -0
  2440. package/dist/src/ui/layouts/ScreenReaderAppLayout.js +27 -0
  2441. package/dist/src/ui/layouts/ScreenReaderAppLayout.js.map +1 -0
  2442. package/dist/src/ui/layouts/ScreenReaderAppLayout.test.d.ts +6 -0
  2443. package/dist/src/ui/layouts/ScreenReaderAppLayout.test.js +135 -0
  2444. package/dist/src/ui/layouts/ScreenReaderAppLayout.test.js.map +1 -0
  2445. package/dist/src/ui/models/availableModels.d.ts +30 -0
  2446. package/dist/src/ui/models/availableModels.js +103 -0
  2447. package/dist/src/ui/models/availableModels.js.map +1 -0
  2448. package/dist/src/ui/models/availableModels.test.d.ts +6 -0
  2449. package/dist/src/ui/models/availableModels.test.js +142 -0
  2450. package/dist/src/ui/models/availableModels.test.js.map +1 -0
  2451. package/dist/src/ui/noninteractive/nonInteractiveUi.d.ts +12 -0
  2452. package/dist/src/ui/noninteractive/nonInteractiveUi.js +33 -0
  2453. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -0
  2454. package/dist/src/ui/semantic-colors.d.ts +7 -0
  2455. package/dist/src/ui/semantic-colors.js +24 -0
  2456. package/dist/src/ui/semantic-colors.js.map +1 -0
  2457. package/dist/src/ui/state/extensions.d.ts +43 -0
  2458. package/dist/src/ui/state/extensions.js +63 -0
  2459. package/dist/src/ui/state/extensions.js.map +1 -0
  2460. package/dist/src/ui/statusLinePresets.d.ts +79 -0
  2461. package/dist/src/ui/statusLinePresets.js +310 -0
  2462. package/dist/src/ui/statusLinePresets.js.map +1 -0
  2463. package/dist/src/ui/statusLinePresets.test.d.ts +6 -0
  2464. package/dist/src/ui/statusLinePresets.test.js +221 -0
  2465. package/dist/src/ui/statusLinePresets.test.js.map +1 -0
  2466. package/dist/src/ui/textConstants.d.ts +9 -0
  2467. package/dist/src/ui/textConstants.js +10 -0
  2468. package/dist/src/ui/textConstants.js.map +1 -0
  2469. package/dist/src/ui/themes/ansi-light.d.ts +7 -0
  2470. package/dist/src/ui/themes/ansi-light.js +144 -0
  2471. package/dist/src/ui/themes/ansi-light.js.map +1 -0
  2472. package/dist/src/ui/themes/ansi.d.ts +7 -0
  2473. package/dist/src/ui/themes/ansi.js +154 -0
  2474. package/dist/src/ui/themes/ansi.js.map +1 -0
  2475. package/dist/src/ui/themes/atom-one-dark.d.ts +7 -0
  2476. package/dist/src/ui/themes/atom-one-dark.js +140 -0
  2477. package/dist/src/ui/themes/atom-one-dark.js.map +1 -0
  2478. package/dist/src/ui/themes/ayu-light.d.ts +7 -0
  2479. package/dist/src/ui/themes/ayu-light.js +132 -0
  2480. package/dist/src/ui/themes/ayu-light.js.map +1 -0
  2481. package/dist/src/ui/themes/ayu.d.ts +7 -0
  2482. package/dist/src/ui/themes/ayu.js +106 -0
  2483. package/dist/src/ui/themes/ayu.js.map +1 -0
  2484. package/dist/src/ui/themes/color-utils.d.ts +21 -0
  2485. package/dist/src/ui/themes/color-utils.js +223 -0
  2486. package/dist/src/ui/themes/color-utils.js.map +1 -0
  2487. package/dist/src/ui/themes/color-utils.test.d.ts +6 -0
  2488. package/dist/src/ui/themes/color-utils.test.js +197 -0
  2489. package/dist/src/ui/themes/color-utils.test.js.map +1 -0
  2490. package/dist/src/ui/themes/default-light.d.ts +7 -0
  2491. package/dist/src/ui/themes/default-light.js +100 -0
  2492. package/dist/src/ui/themes/default-light.js.map +1 -0
  2493. package/dist/src/ui/themes/default.d.ts +7 -0
  2494. package/dist/src/ui/themes/default.js +143 -0
  2495. package/dist/src/ui/themes/default.js.map +1 -0
  2496. package/dist/src/ui/themes/detect-terminal-theme.d.ts +75 -0
  2497. package/dist/src/ui/themes/detect-terminal-theme.js +228 -0
  2498. package/dist/src/ui/themes/detect-terminal-theme.js.map +1 -0
  2499. package/dist/src/ui/themes/detect-terminal-theme.test.d.ts +6 -0
  2500. package/dist/src/ui/themes/detect-terminal-theme.test.js +269 -0
  2501. package/dist/src/ui/themes/detect-terminal-theme.test.js.map +1 -0
  2502. package/dist/src/ui/themes/dracula.d.ts +7 -0
  2503. package/dist/src/ui/themes/dracula.js +117 -0
  2504. package/dist/src/ui/themes/dracula.js.map +1 -0
  2505. package/dist/src/ui/themes/github-dark.d.ts +7 -0
  2506. package/dist/src/ui/themes/github-dark.js +140 -0
  2507. package/dist/src/ui/themes/github-dark.js.map +1 -0
  2508. package/dist/src/ui/themes/github-light.d.ts +7 -0
  2509. package/dist/src/ui/themes/github-light.js +142 -0
  2510. package/dist/src/ui/themes/github-light.js.map +1 -0
  2511. package/dist/src/ui/themes/googlecode.d.ts +7 -0
  2512. package/dist/src/ui/themes/googlecode.js +139 -0
  2513. package/dist/src/ui/themes/googlecode.js.map +1 -0
  2514. package/dist/src/ui/themes/no-color.d.ts +7 -0
  2515. package/dist/src/ui/themes/no-color.js +120 -0
  2516. package/dist/src/ui/themes/no-color.js.map +1 -0
  2517. package/dist/src/ui/themes/qwen-dark.d.ts +7 -0
  2518. package/dist/src/ui/themes/qwen-dark.js +107 -0
  2519. package/dist/src/ui/themes/qwen-dark.js.map +1 -0
  2520. package/dist/src/ui/themes/qwen-light.d.ts +7 -0
  2521. package/dist/src/ui/themes/qwen-light.js +133 -0
  2522. package/dist/src/ui/themes/qwen-light.js.map +1 -0
  2523. package/dist/src/ui/themes/semantic-tokens.d.ts +40 -0
  2524. package/dist/src/ui/themes/semantic-tokens.js +103 -0
  2525. package/dist/src/ui/themes/semantic-tokens.js.map +1 -0
  2526. package/dist/src/ui/themes/shades-of-purple.d.ts +11 -0
  2527. package/dist/src/ui/themes/shades-of-purple.js +306 -0
  2528. package/dist/src/ui/themes/shades-of-purple.js.map +1 -0
  2529. package/dist/src/ui/themes/theme-manager.d.ts +91 -0
  2530. package/dist/src/ui/themes/theme-manager.js +311 -0
  2531. package/dist/src/ui/themes/theme-manager.js.map +1 -0
  2532. package/dist/src/ui/themes/theme-manager.test.d.ts +6 -0
  2533. package/dist/src/ui/themes/theme-manager.test.js +188 -0
  2534. package/dist/src/ui/themes/theme-manager.test.js.map +1 -0
  2535. package/dist/src/ui/themes/theme.d.ts +137 -0
  2536. package/dist/src/ui/themes/theme.js +393 -0
  2537. package/dist/src/ui/themes/theme.js.map +1 -0
  2538. package/dist/src/ui/themes/xcode.d.ts +7 -0
  2539. package/dist/src/ui/themes/xcode.js +147 -0
  2540. package/dist/src/ui/themes/xcode.js.map +1 -0
  2541. package/dist/src/ui/types.d.ts +620 -0
  2542. package/dist/src/ui/types.js +77 -0
  2543. package/dist/src/ui/types.js.map +1 -0
  2544. package/dist/src/ui/utils/CodeColorizer.d.ts +18 -0
  2545. package/dist/src/ui/utils/CodeColorizer.js +155 -0
  2546. package/dist/src/ui/utils/CodeColorizer.js.map +1 -0
  2547. package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +18 -0
  2548. package/dist/src/ui/utils/InlineMarkdownRenderer.js +173 -0
  2549. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -0
  2550. package/dist/src/ui/utils/InlineMarkdownRenderer.test.d.ts +6 -0
  2551. package/dist/src/ui/utils/InlineMarkdownRenderer.test.js +303 -0
  2552. package/dist/src/ui/utils/InlineMarkdownRenderer.test.js.map +1 -0
  2553. package/dist/src/ui/utils/MarkdownDisplay.d.ts +25 -0
  2554. package/dist/src/ui/utils/MarkdownDisplay.js +420 -0
  2555. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -0
  2556. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +6 -0
  2557. package/dist/src/ui/utils/MarkdownDisplay.test.js +702 -0
  2558. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -0
  2559. package/dist/src/ui/utils/MermaidDiagram.d.ts +15 -0
  2560. package/dist/src/ui/utils/MermaidDiagram.js +88 -0
  2561. package/dist/src/ui/utils/MermaidDiagram.js.map +1 -0
  2562. package/dist/src/ui/utils/MermaidDiagram.test.d.ts +6 -0
  2563. package/dist/src/ui/utils/MermaidDiagram.test.js +90 -0
  2564. package/dist/src/ui/utils/MermaidDiagram.test.js.map +1 -0
  2565. package/dist/src/ui/utils/TableRenderer.d.ts +30 -0
  2566. package/dist/src/ui/utils/TableRenderer.js +563 -0
  2567. package/dist/src/ui/utils/TableRenderer.js.map +1 -0
  2568. package/dist/src/ui/utils/TableRenderer.test.d.ts +6 -0
  2569. package/dist/src/ui/utils/TableRenderer.test.js +568 -0
  2570. package/dist/src/ui/utils/TableRenderer.test.js.map +1 -0
  2571. package/dist/src/ui/utils/approvalModeDisplay.d.ts +8 -0
  2572. package/dist/src/ui/utils/approvalModeDisplay.js +34 -0
  2573. package/dist/src/ui/utils/approvalModeDisplay.js.map +1 -0
  2574. package/dist/src/ui/utils/approvalModeDisplay.test.d.ts +6 -0
  2575. package/dist/src/ui/utils/approvalModeDisplay.test.js +35 -0
  2576. package/dist/src/ui/utils/approvalModeDisplay.test.js.map +1 -0
  2577. package/dist/src/ui/utils/asciiCharts.d.ts +44 -0
  2578. package/dist/src/ui/utils/asciiCharts.js +307 -0
  2579. package/dist/src/ui/utils/asciiCharts.js.map +1 -0
  2580. package/dist/src/ui/utils/asciiCharts.test.d.ts +6 -0
  2581. package/dist/src/ui/utils/asciiCharts.test.js +208 -0
  2582. package/dist/src/ui/utils/asciiCharts.test.js.map +1 -0
  2583. package/dist/src/ui/utils/backgroundWorkUtils.d.ts +8 -0
  2584. package/dist/src/ui/utils/backgroundWorkUtils.js +16 -0
  2585. package/dist/src/ui/utils/backgroundWorkUtils.js.map +1 -0
  2586. package/dist/src/ui/utils/backgroundWorkUtils.test.d.ts +6 -0
  2587. package/dist/src/ui/utils/backgroundWorkUtils.test.js +85 -0
  2588. package/dist/src/ui/utils/backgroundWorkUtils.test.js.map +1 -0
  2589. package/dist/src/ui/utils/clipboardUtils.d.ts +28 -0
  2590. package/dist/src/ui/utils/clipboardUtils.js +522 -0
  2591. package/dist/src/ui/utils/clipboardUtils.js.map +1 -0
  2592. package/dist/src/ui/utils/clipboardUtils.test.d.ts +6 -0
  2593. package/dist/src/ui/utils/clipboardUtils.test.js +465 -0
  2594. package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -0
  2595. package/dist/src/ui/utils/commandUtils.d.ts +112 -0
  2596. package/dist/src/ui/utils/commandUtils.js +285 -0
  2597. package/dist/src/ui/utils/commandUtils.js.map +1 -0
  2598. package/dist/src/ui/utils/commandUtils.test.d.ts +6 -0
  2599. package/dist/src/ui/utils/commandUtils.test.js +560 -0
  2600. package/dist/src/ui/utils/commandUtils.test.js.map +1 -0
  2601. package/dist/src/ui/utils/computeStats.d.ts +10 -0
  2602. package/dist/src/ui/utils/computeStats.js +57 -0
  2603. package/dist/src/ui/utils/computeStats.js.map +1 -0
  2604. package/dist/src/ui/utils/customBanner.d.ts +35 -0
  2605. package/dist/src/ui/utils/customBanner.js +361 -0
  2606. package/dist/src/ui/utils/customBanner.js.map +1 -0
  2607. package/dist/src/ui/utils/customBanner.test.d.ts +6 -0
  2608. package/dist/src/ui/utils/customBanner.test.js +439 -0
  2609. package/dist/src/ui/utils/customBanner.test.js.map +1 -0
  2610. package/dist/src/ui/utils/displayUtils.d.ts +25 -0
  2611. package/dist/src/ui/utils/displayUtils.js +46 -0
  2612. package/dist/src/ui/utils/displayUtils.js.map +1 -0
  2613. package/dist/src/ui/utils/displayUtils.test.d.ts +6 -0
  2614. package/dist/src/ui/utils/displayUtils.test.js +61 -0
  2615. package/dist/src/ui/utils/displayUtils.test.js.map +1 -0
  2616. package/dist/src/ui/utils/export/collect.d.ts +16 -0
  2617. package/dist/src/ui/utils/export/collect.js +509 -0
  2618. package/dist/src/ui/utils/export/collect.js.map +1 -0
  2619. package/dist/src/ui/utils/export/collect.test.d.ts +6 -0
  2620. package/dist/src/ui/utils/export/collect.test.js +80 -0
  2621. package/dist/src/ui/utils/export/collect.test.js.map +1 -0
  2622. package/dist/src/ui/utils/export/formatters/html.d.ts +23 -0
  2623. package/dist/src/ui/utils/export/formatters/html.js +65 -0
  2624. package/dist/src/ui/utils/export/formatters/html.js.map +1 -0
  2625. package/dist/src/ui/utils/export/formatters/json.d.ts +11 -0
  2626. package/dist/src/ui/utils/export/formatters/json.js +13 -0
  2627. package/dist/src/ui/utils/export/formatters/json.js.map +1 -0
  2628. package/dist/src/ui/utils/export/formatters/jsonl.d.ts +11 -0
  2629. package/dist/src/ui/utils/export/formatters/jsonl.js +69 -0
  2630. package/dist/src/ui/utils/export/formatters/jsonl.js.map +1 -0
  2631. package/dist/src/ui/utils/export/formatters/markdown.d.ts +10 -0
  2632. package/dist/src/ui/utils/export/formatters/markdown.js +254 -0
  2633. package/dist/src/ui/utils/export/formatters/markdown.js.map +1 -0
  2634. package/dist/src/ui/utils/export/index.d.ts +13 -0
  2635. package/dist/src/ui/utils/export/index.js +13 -0
  2636. package/dist/src/ui/utils/export/index.js.map +1 -0
  2637. package/dist/src/ui/utils/export/normalize.d.ts +12 -0
  2638. package/dist/src/ui/utils/export/normalize.js +279 -0
  2639. package/dist/src/ui/utils/export/normalize.js.map +1 -0
  2640. package/dist/src/ui/utils/export/normalize.test.d.ts +6 -0
  2641. package/dist/src/ui/utils/export/normalize.test.js +62 -0
  2642. package/dist/src/ui/utils/export/normalize.test.js.map +1 -0
  2643. package/dist/src/ui/utils/export/types.d.ts +93 -0
  2644. package/dist/src/ui/utils/export/types.js +7 -0
  2645. package/dist/src/ui/utils/export/types.js.map +1 -0
  2646. package/dist/src/ui/utils/export/utils.d.ts +9 -0
  2647. package/dist/src/ui/utils/export/utils.js +13 -0
  2648. package/dist/src/ui/utils/export/utils.js.map +1 -0
  2649. package/dist/src/ui/utils/formatters.d.ts +28 -0
  2650. package/dist/src/ui/utils/formatters.js +100 -0
  2651. package/dist/src/ui/utils/formatters.js.map +1 -0
  2652. package/dist/src/ui/utils/formatters.test.d.ts +6 -0
  2653. package/dist/src/ui/utils/formatters.test.js +141 -0
  2654. package/dist/src/ui/utils/formatters.test.js.map +1 -0
  2655. package/dist/src/ui/utils/gradientUtils.d.ts +6 -0
  2656. package/dist/src/ui/utils/gradientUtils.js +11 -0
  2657. package/dist/src/ui/utils/gradientUtils.js.map +1 -0
  2658. package/dist/src/ui/utils/highlight.d.ts +12 -0
  2659. package/dist/src/ui/utils/highlight.js +90 -0
  2660. package/dist/src/ui/utils/highlight.js.map +1 -0
  2661. package/dist/src/ui/utils/highlight.test.d.ts +6 -0
  2662. package/dist/src/ui/utils/highlight.test.js +173 -0
  2663. package/dist/src/ui/utils/highlight.test.js.map +1 -0
  2664. package/dist/src/ui/utils/historyMapping.d.ts +44 -0
  2665. package/dist/src/ui/utils/historyMapping.js +110 -0
  2666. package/dist/src/ui/utils/historyMapping.js.map +1 -0
  2667. package/dist/src/ui/utils/historyMapping.test.d.ts +6 -0
  2668. package/dist/src/ui/utils/historyMapping.test.js +376 -0
  2669. package/dist/src/ui/utils/historyMapping.test.js.map +1 -0
  2670. package/dist/src/ui/utils/historyUtils.d.ts +34 -0
  2671. package/dist/src/ui/utils/historyUtils.js +117 -0
  2672. package/dist/src/ui/utils/historyUtils.js.map +1 -0
  2673. package/dist/src/ui/utils/historyUtils.test.d.ts +6 -0
  2674. package/dist/src/ui/utils/historyUtils.test.js +107 -0
  2675. package/dist/src/ui/utils/historyUtils.test.js.map +1 -0
  2676. package/dist/src/ui/utils/isNarrowWidth.d.ts +6 -0
  2677. package/dist/src/ui/utils/isNarrowWidth.js +9 -0
  2678. package/dist/src/ui/utils/isNarrowWidth.js.map +1 -0
  2679. package/dist/src/ui/utils/kittyProtocolDetector.d.ts +19 -0
  2680. package/dist/src/ui/utils/kittyProtocolDetector.js +115 -0
  2681. package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -0
  2682. package/dist/src/ui/utils/latexRenderer.d.ts +6 -0
  2683. package/dist/src/ui/utils/latexRenderer.js +187 -0
  2684. package/dist/src/ui/utils/latexRenderer.js.map +1 -0
  2685. package/dist/src/ui/utils/latexRenderer.test.d.ts +6 -0
  2686. package/dist/src/ui/utils/latexRenderer.test.js +27 -0
  2687. package/dist/src/ui/utils/latexRenderer.test.js.map +1 -0
  2688. package/dist/src/ui/utils/layoutUtils.d.ts +32 -0
  2689. package/dist/src/ui/utils/layoutUtils.js +46 -0
  2690. package/dist/src/ui/utils/layoutUtils.js.map +1 -0
  2691. package/dist/src/ui/utils/layoutUtils.test.d.ts +6 -0
  2692. package/dist/src/ui/utils/layoutUtils.test.js +30 -0
  2693. package/dist/src/ui/utils/layoutUtils.test.js.map +1 -0
  2694. package/dist/src/ui/utils/lowlightLoader.d.ts +43 -0
  2695. package/dist/src/ui/utils/lowlightLoader.js +88 -0
  2696. package/dist/src/ui/utils/lowlightLoader.js.map +1 -0
  2697. package/dist/src/ui/utils/lowlightLoader.test.d.ts +6 -0
  2698. package/dist/src/ui/utils/lowlightLoader.test.js +120 -0
  2699. package/dist/src/ui/utils/lowlightLoader.test.js.map +1 -0
  2700. package/dist/src/ui/utils/markdownUtilities.d.ts +6 -0
  2701. package/dist/src/ui/utils/markdownUtilities.js +110 -0
  2702. package/dist/src/ui/utils/markdownUtilities.js.map +1 -0
  2703. package/dist/src/ui/utils/markdownUtilities.test.d.ts +6 -0
  2704. package/dist/src/ui/utils/markdownUtilities.test.js +42 -0
  2705. package/dist/src/ui/utils/markdownUtilities.test.js.map +1 -0
  2706. package/dist/src/ui/utils/mergeCompactToolGroups.d.ts +62 -0
  2707. package/dist/src/ui/utils/mergeCompactToolGroups.js +212 -0
  2708. package/dist/src/ui/utils/mergeCompactToolGroups.js.map +1 -0
  2709. package/dist/src/ui/utils/mergeCompactToolGroups.test.d.ts +6 -0
  2710. package/dist/src/ui/utils/mergeCompactToolGroups.test.js +473 -0
  2711. package/dist/src/ui/utils/mergeCompactToolGroups.test.js.map +1 -0
  2712. package/dist/src/ui/utils/mermaidImageRenderer.d.ts +54 -0
  2713. package/dist/src/ui/utils/mermaidImageRenderer.js +955 -0
  2714. package/dist/src/ui/utils/mermaidImageRenderer.js.map +1 -0
  2715. package/dist/src/ui/utils/mermaidImageRenderer.test.d.ts +6 -0
  2716. package/dist/src/ui/utils/mermaidImageRenderer.test.js +528 -0
  2717. package/dist/src/ui/utils/mermaidImageRenderer.test.js.map +1 -0
  2718. package/dist/src/ui/utils/mermaidVisualRenderer.d.ts +12 -0
  2719. package/dist/src/ui/utils/mermaidVisualRenderer.js +1097 -0
  2720. package/dist/src/ui/utils/mermaidVisualRenderer.js.map +1 -0
  2721. package/dist/src/ui/utils/mermaidVisualRenderer.test.d.ts +6 -0
  2722. package/dist/src/ui/utils/mermaidVisualRenderer.test.js +69 -0
  2723. package/dist/src/ui/utils/mermaidVisualRenderer.test.js.map +1 -0
  2724. package/dist/src/ui/utils/modelsBySource.d.ts +47 -0
  2725. package/dist/src/ui/utils/modelsBySource.js +89 -0
  2726. package/dist/src/ui/utils/modelsBySource.js.map +1 -0
  2727. package/dist/src/ui/utils/modelsBySource.test.d.ts +6 -0
  2728. package/dist/src/ui/utils/modelsBySource.test.js +111 -0
  2729. package/dist/src/ui/utils/modelsBySource.test.js.map +1 -0
  2730. package/dist/src/ui/utils/mouse.d.ts +39 -0
  2731. package/dist/src/ui/utils/mouse.js +169 -0
  2732. package/dist/src/ui/utils/mouse.js.map +1 -0
  2733. package/dist/src/ui/utils/mouse.test.d.ts +6 -0
  2734. package/dist/src/ui/utils/mouse.test.js +117 -0
  2735. package/dist/src/ui/utils/mouse.test.js.map +1 -0
  2736. package/dist/src/ui/utils/osc8.d.ts +124 -0
  2737. package/dist/src/ui/utils/osc8.js +463 -0
  2738. package/dist/src/ui/utils/osc8.js.map +1 -0
  2739. package/dist/src/ui/utils/osc8.test.d.ts +6 -0
  2740. package/dist/src/ui/utils/osc8.test.js +494 -0
  2741. package/dist/src/ui/utils/osc8.test.js.map +1 -0
  2742. package/dist/src/ui/utils/platformConstants.d.ts +75 -0
  2743. package/dist/src/ui/utils/platformConstants.js +78 -0
  2744. package/dist/src/ui/utils/platformConstants.js.map +1 -0
  2745. package/dist/src/ui/utils/restoreGoal.d.ts +47 -0
  2746. package/dist/src/ui/utils/restoreGoal.js +124 -0
  2747. package/dist/src/ui/utils/restoreGoal.js.map +1 -0
  2748. package/dist/src/ui/utils/restoreGoal.test.d.ts +6 -0
  2749. package/dist/src/ui/utils/restoreGoal.test.js +220 -0
  2750. package/dist/src/ui/utils/restoreGoal.test.js.map +1 -0
  2751. package/dist/src/ui/utils/resumeHistoryUtils.d.ts +22 -0
  2752. package/dist/src/ui/utils/resumeHistoryUtils.js +410 -0
  2753. package/dist/src/ui/utils/resumeHistoryUtils.js.map +1 -0
  2754. package/dist/src/ui/utils/resumeHistoryUtils.test.d.ts +6 -0
  2755. package/dist/src/ui/utils/resumeHistoryUtils.test.js +378 -0
  2756. package/dist/src/ui/utils/resumeHistoryUtils.test.js.map +1 -0
  2757. package/dist/src/ui/utils/sessionPickerUtils.d.ts +35 -0
  2758. package/dist/src/ui/utils/sessionPickerUtils.js +69 -0
  2759. package/dist/src/ui/utils/sessionPickerUtils.js.map +1 -0
  2760. package/dist/src/ui/utils/sessionPickerUtils.test.d.ts +6 -0
  2761. package/dist/src/ui/utils/sessionPickerUtils.test.js +79 -0
  2762. package/dist/src/ui/utils/sessionPickerUtils.test.js.map +1 -0
  2763. package/dist/src/ui/utils/statsDataService.d.ts +49 -0
  2764. package/dist/src/ui/utils/statsDataService.js +221 -0
  2765. package/dist/src/ui/utils/statsDataService.js.map +1 -0
  2766. package/dist/src/ui/utils/statsDataService.test.d.ts +6 -0
  2767. package/dist/src/ui/utils/statsDataService.test.js +406 -0
  2768. package/dist/src/ui/utils/statsDataService.test.js.map +1 -0
  2769. package/dist/src/ui/utils/synchronizedOutput.d.ts +16 -0
  2770. package/dist/src/ui/utils/synchronizedOutput.js +88 -0
  2771. package/dist/src/ui/utils/synchronizedOutput.js.map +1 -0
  2772. package/dist/src/ui/utils/synchronizedOutput.test.d.ts +6 -0
  2773. package/dist/src/ui/utils/synchronizedOutput.test.js +154 -0
  2774. package/dist/src/ui/utils/synchronizedOutput.test.js.map +1 -0
  2775. package/dist/src/ui/utils/terminalRedrawOptimizer.d.ts +21 -0
  2776. package/dist/src/ui/utils/terminalRedrawOptimizer.js +108 -0
  2777. package/dist/src/ui/utils/terminalRedrawOptimizer.js.map +1 -0
  2778. package/dist/src/ui/utils/terminalRedrawOptimizer.test.d.ts +6 -0
  2779. package/dist/src/ui/utils/terminalRedrawOptimizer.test.js +85 -0
  2780. package/dist/src/ui/utils/terminalRedrawOptimizer.test.js.map +1 -0
  2781. package/dist/src/ui/utils/terminalSetup.d.ts +30 -0
  2782. package/dist/src/ui/utils/terminalSetup.js +310 -0
  2783. package/dist/src/ui/utils/terminalSetup.js.map +1 -0
  2784. package/dist/src/ui/utils/textUtils.d.ts +86 -0
  2785. package/dist/src/ui/utils/textUtils.js +360 -0
  2786. package/dist/src/ui/utils/textUtils.js.map +1 -0
  2787. package/dist/src/ui/utils/textUtils.test.d.ts +6 -0
  2788. package/dist/src/ui/utils/textUtils.test.js +269 -0
  2789. package/dist/src/ui/utils/textUtils.test.js.map +1 -0
  2790. package/dist/src/ui/utils/todoSnapshot.d.ts +13 -0
  2791. package/dist/src/ui/utils/todoSnapshot.js +133 -0
  2792. package/dist/src/ui/utils/todoSnapshot.js.map +1 -0
  2793. package/dist/src/ui/utils/todoSnapshot.test.d.ts +6 -0
  2794. package/dist/src/ui/utils/todoSnapshot.test.js +281 -0
  2795. package/dist/src/ui/utils/todoSnapshot.test.js.map +1 -0
  2796. package/dist/src/ui/utils/updateCheck.d.ts +12 -0
  2797. package/dist/src/ui/utils/updateCheck.js +80 -0
  2798. package/dist/src/ui/utils/updateCheck.js.map +1 -0
  2799. package/dist/src/ui/utils/updateCheck.test.d.ts +6 -0
  2800. package/dist/src/ui/utils/updateCheck.test.js +145 -0
  2801. package/dist/src/ui/utils/updateCheck.test.js.map +1 -0
  2802. package/dist/src/utils/acpModelUtils.d.ts +39 -0
  2803. package/dist/src/utils/acpModelUtils.js +61 -0
  2804. package/dist/src/utils/acpModelUtils.js.map +1 -0
  2805. package/dist/src/utils/acpModelUtils.test.d.ts +6 -0
  2806. package/dist/src/utils/acpModelUtils.test.js +31 -0
  2807. package/dist/src/utils/acpModelUtils.test.js.map +1 -0
  2808. package/dist/src/utils/apiPreconnect.d.ts +22 -0
  2809. package/dist/src/utils/apiPreconnect.js +188 -0
  2810. package/dist/src/utils/apiPreconnect.js.map +1 -0
  2811. package/dist/src/utils/apiPreconnect.test.d.ts +6 -0
  2812. package/dist/src/utils/apiPreconnect.test.js +252 -0
  2813. package/dist/src/utils/apiPreconnect.test.js.map +1 -0
  2814. package/dist/src/utils/checks.d.ts +19 -0
  2815. package/dist/src/utils/checks.js +24 -0
  2816. package/dist/src/utils/checks.js.map +1 -0
  2817. package/dist/src/utils/cleanup.d.ts +23 -0
  2818. package/dist/src/utils/cleanup.js +96 -0
  2819. package/dist/src/utils/cleanup.js.map +1 -0
  2820. package/dist/src/utils/commands.d.ts +20 -0
  2821. package/dist/src/utils/commands.js +53 -0
  2822. package/dist/src/utils/commands.js.map +1 -0
  2823. package/dist/src/utils/commands.test.d.ts +6 -0
  2824. package/dist/src/utils/commands.test.js +115 -0
  2825. package/dist/src/utils/commands.test.js.map +1 -0
  2826. package/dist/src/utils/commentJson.d.ts +25 -0
  2827. package/dist/src/utils/commentJson.js +113 -0
  2828. package/dist/src/utils/commentJson.js.map +1 -0
  2829. package/dist/src/utils/commentJson.test.d.ts +6 -0
  2830. package/dist/src/utils/commentJson.test.js +385 -0
  2831. package/dist/src/utils/commentJson.test.js.map +1 -0
  2832. package/dist/src/utils/costCalculator.d.ts +14 -0
  2833. package/dist/src/utils/costCalculator.js +19 -0
  2834. package/dist/src/utils/costCalculator.js.map +1 -0
  2835. package/dist/src/utils/costCalculator.test.d.ts +6 -0
  2836. package/dist/src/utils/costCalculator.test.js +177 -0
  2837. package/dist/src/utils/costCalculator.test.js.map +1 -0
  2838. package/dist/src/utils/cpuProfiler.d.ts +63 -0
  2839. package/dist/src/utils/cpuProfiler.js +341 -0
  2840. package/dist/src/utils/cpuProfiler.js.map +1 -0
  2841. package/dist/src/utils/cpuProfiler.test.d.ts +6 -0
  2842. package/dist/src/utils/cpuProfiler.test.js +293 -0
  2843. package/dist/src/utils/cpuProfiler.test.js.map +1 -0
  2844. package/dist/src/utils/deepMerge.d.ts +9 -0
  2845. package/dist/src/utils/deepMerge.js +58 -0
  2846. package/dist/src/utils/deepMerge.js.map +1 -0
  2847. package/dist/src/utils/deepMerge.test.d.ts +6 -0
  2848. package/dist/src/utils/deepMerge.test.js +143 -0
  2849. package/dist/src/utils/deepMerge.test.js.map +1 -0
  2850. package/dist/src/utils/dialogScopeUtils.d.ts +28 -0
  2851. package/dist/src/utils/dialogScopeUtils.js +51 -0
  2852. package/dist/src/utils/dialogScopeUtils.js.map +1 -0
  2853. package/dist/src/utils/doctorChecks.d.ts +11 -0
  2854. package/dist/src/utils/doctorChecks.js +351 -0
  2855. package/dist/src/utils/doctorChecks.js.map +1 -0
  2856. package/dist/src/utils/doctorChecks.test.d.ts +6 -0
  2857. package/dist/src/utils/doctorChecks.test.js +280 -0
  2858. package/dist/src/utils/doctorChecks.test.js.map +1 -0
  2859. package/dist/src/utils/earlyInputCapture.d.ts +33 -0
  2860. package/dist/src/utils/earlyInputCapture.js +311 -0
  2861. package/dist/src/utils/earlyInputCapture.js.map +1 -0
  2862. package/dist/src/utils/earlyInputCapture.test.d.ts +6 -0
  2863. package/dist/src/utils/earlyInputCapture.test.js +274 -0
  2864. package/dist/src/utils/earlyInputCapture.test.js.map +1 -0
  2865. package/dist/src/utils/envVarResolver.d.ts +39 -0
  2866. package/dist/src/utils/envVarResolver.js +100 -0
  2867. package/dist/src/utils/envVarResolver.js.map +1 -0
  2868. package/dist/src/utils/envVarResolver.test.d.ts +6 -0
  2869. package/dist/src/utils/envVarResolver.test.js +221 -0
  2870. package/dist/src/utils/envVarResolver.test.js.map +1 -0
  2871. package/dist/src/utils/errors.d.ts +76 -0
  2872. package/dist/src/utils/errors.js +237 -0
  2873. package/dist/src/utils/errors.js.map +1 -0
  2874. package/dist/src/utils/errors.test.d.ts +6 -0
  2875. package/dist/src/utils/errors.test.js +536 -0
  2876. package/dist/src/utils/errors.test.js.map +1 -0
  2877. package/dist/src/utils/events.d.ts +13 -0
  2878. package/dist/src/utils/events.js +15 -0
  2879. package/dist/src/utils/events.js.map +1 -0
  2880. package/dist/src/utils/gitUtils.d.ts +30 -0
  2881. package/dist/src/utils/gitUtils.js +108 -0
  2882. package/dist/src/utils/gitUtils.js.map +1 -0
  2883. package/dist/src/utils/gitUtils.test.d.ts +6 -0
  2884. package/dist/src/utils/gitUtils.test.js +172 -0
  2885. package/dist/src/utils/gitUtils.test.js.map +1 -0
  2886. package/dist/src/utils/handleAutoUpdate.d.ts +16 -0
  2887. package/dist/src/utils/handleAutoUpdate.js +144 -0
  2888. package/dist/src/utils/handleAutoUpdate.js.map +1 -0
  2889. package/dist/src/utils/headlessSafetyWarnings.d.ts +21 -0
  2890. package/dist/src/utils/headlessSafetyWarnings.js +45 -0
  2891. package/dist/src/utils/headlessSafetyWarnings.js.map +1 -0
  2892. package/dist/src/utils/headlessSafetyWarnings.test.d.ts +6 -0
  2893. package/dist/src/utils/headlessSafetyWarnings.test.js +66 -0
  2894. package/dist/src/utils/headlessSafetyWarnings.test.js.map +1 -0
  2895. package/dist/src/utils/housekeeping/cleanup.d.ts +15 -0
  2896. package/dist/src/utils/housekeeping/cleanup.js +69 -0
  2897. package/dist/src/utils/housekeeping/cleanup.js.map +1 -0
  2898. package/dist/src/utils/housekeeping/cleanup.test.d.ts +6 -0
  2899. package/dist/src/utils/housekeeping/cleanup.test.js +166 -0
  2900. package/dist/src/utils/housekeeping/cleanup.test.js.map +1 -0
  2901. package/dist/src/utils/housekeeping/lastInteractionAt.d.ts +9 -0
  2902. package/dist/src/utils/housekeeping/lastInteractionAt.js +22 -0
  2903. package/dist/src/utils/housekeeping/lastInteractionAt.js.map +1 -0
  2904. package/dist/src/utils/housekeeping/scheduler.d.ts +17 -0
  2905. package/dist/src/utils/housekeeping/scheduler.js +130 -0
  2906. package/dist/src/utils/housekeeping/scheduler.js.map +1 -0
  2907. package/dist/src/utils/housekeeping/scheduler.test.d.ts +6 -0
  2908. package/dist/src/utils/housekeeping/scheduler.test.js +190 -0
  2909. package/dist/src/utils/housekeeping/scheduler.test.js.map +1 -0
  2910. package/dist/src/utils/housekeeping/throttledOnce.d.ts +13 -0
  2911. package/dist/src/utils/housekeeping/throttledOnce.js +110 -0
  2912. package/dist/src/utils/housekeeping/throttledOnce.js.map +1 -0
  2913. package/dist/src/utils/housekeeping/throttledOnce.test.d.ts +6 -0
  2914. package/dist/src/utils/housekeeping/throttledOnce.test.js +94 -0
  2915. package/dist/src/utils/housekeeping/throttledOnce.test.js.map +1 -0
  2916. package/dist/src/utils/installationInfo.d.ts +26 -0
  2917. package/dist/src/utils/installationInfo.js +266 -0
  2918. package/dist/src/utils/installationInfo.js.map +1 -0
  2919. package/dist/src/utils/installationInfo.test.d.ts +6 -0
  2920. package/dist/src/utils/installationInfo.test.js +466 -0
  2921. package/dist/src/utils/installationInfo.test.js.map +1 -0
  2922. package/dist/src/utils/languageUtils.d.ts +40 -0
  2923. package/dist/src/utils/languageUtils.js +163 -0
  2924. package/dist/src/utils/languageUtils.js.map +1 -0
  2925. package/dist/src/utils/languageUtils.test.d.ts +6 -0
  2926. package/dist/src/utils/languageUtils.test.js +341 -0
  2927. package/dist/src/utils/languageUtils.test.js.map +1 -0
  2928. package/dist/src/utils/math.d.ts +13 -0
  2929. package/dist/src/utils/math.js +14 -0
  2930. package/dist/src/utils/math.js.map +1 -0
  2931. package/dist/src/utils/memoryDiagnostics.d.ts +65 -0
  2932. package/dist/src/utils/memoryDiagnostics.js +365 -0
  2933. package/dist/src/utils/memoryDiagnostics.js.map +1 -0
  2934. package/dist/src/utils/memoryDiagnostics.test.d.ts +6 -0
  2935. package/dist/src/utils/memoryDiagnostics.test.js +641 -0
  2936. package/dist/src/utils/memoryDiagnostics.test.js.map +1 -0
  2937. package/dist/src/utils/modelConfigUtils.d.ts +55 -0
  2938. package/dist/src/utils/modelConfigUtils.js +186 -0
  2939. package/dist/src/utils/modelConfigUtils.js.map +1 -0
  2940. package/dist/src/utils/modelConfigUtils.test.d.ts +6 -0
  2941. package/dist/src/utils/modelConfigUtils.test.js +1247 -0
  2942. package/dist/src/utils/modelConfigUtils.test.js.map +1 -0
  2943. package/dist/src/utils/nonInteractiveHelpers.d.ts +101 -0
  2944. package/dist/src/utils/nonInteractiveHelpers.js +479 -0
  2945. package/dist/src/utils/nonInteractiveHelpers.js.map +1 -0
  2946. package/dist/src/utils/nonInteractiveHelpers.test.d.ts +6 -0
  2947. package/dist/src/utils/nonInteractiveHelpers.test.js +1038 -0
  2948. package/dist/src/utils/nonInteractiveHelpers.test.js.map +1 -0
  2949. package/dist/src/utils/osc.d.ts +91 -0
  2950. package/dist/src/utils/osc.js +162 -0
  2951. package/dist/src/utils/osc.js.map +1 -0
  2952. package/dist/src/utils/osc.test.d.ts +6 -0
  2953. package/dist/src/utils/osc.test.js +217 -0
  2954. package/dist/src/utils/osc.test.js.map +1 -0
  2955. package/dist/src/utils/package.d.ts +12 -0
  2956. package/dist/src/utils/package.js +24 -0
  2957. package/dist/src/utils/package.js.map +1 -0
  2958. package/dist/src/utils/processUtils.d.ts +13 -0
  2959. package/dist/src/utils/processUtils.js +18 -0
  2960. package/dist/src/utils/processUtils.js.map +1 -0
  2961. package/dist/src/utils/processUtils.test.d.ts +6 -0
  2962. package/dist/src/utils/processUtils.test.js +20 -0
  2963. package/dist/src/utils/processUtils.test.js.map +1 -0
  2964. package/dist/src/utils/readStdin.d.ts +6 -0
  2965. package/dist/src/utils/readStdin.js +60 -0
  2966. package/dist/src/utils/readStdin.js.map +1 -0
  2967. package/dist/src/utils/readStdin.test.d.ts +6 -0
  2968. package/dist/src/utils/readStdin.test.js +88 -0
  2969. package/dist/src/utils/readStdin.test.js.map +1 -0
  2970. package/dist/src/utils/relaunch.d.ts +9 -0
  2971. package/dist/src/utils/relaunch.js +68 -0
  2972. package/dist/src/utils/relaunch.js.map +1 -0
  2973. package/dist/src/utils/relaunch.test.d.ts +6 -0
  2974. package/dist/src/utils/relaunch.test.js +291 -0
  2975. package/dist/src/utils/relaunch.test.js.map +1 -0
  2976. package/dist/src/utils/resolvePath.d.ts +6 -0
  2977. package/dist/src/utils/resolvePath.js +21 -0
  2978. package/dist/src/utils/resolvePath.js.map +1 -0
  2979. package/dist/src/utils/runBudget.d.ts +116 -0
  2980. package/dist/src/utils/runBudget.js +235 -0
  2981. package/dist/src/utils/runBudget.js.map +1 -0
  2982. package/dist/src/utils/runBudget.test.d.ts +6 -0
  2983. package/dist/src/utils/runBudget.test.js +187 -0
  2984. package/dist/src/utils/runBudget.test.js.map +1 -0
  2985. package/dist/src/utils/sandbox-macos-permissive-closed.sb +33 -0
  2986. package/dist/src/utils/sandbox-macos-permissive-open.sb +28 -0
  2987. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +38 -0
  2988. package/dist/src/utils/sandbox-macos-restrictive-closed.sb +94 -0
  2989. package/dist/src/utils/sandbox-macos-restrictive-open.sb +97 -0
  2990. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +99 -0
  2991. package/dist/src/utils/sandbox.d.ts +7 -0
  2992. package/dist/src/utils/sandbox.js +788 -0
  2993. package/dist/src/utils/sandbox.js.map +1 -0
  2994. package/dist/src/utils/sessionPaths.d.ts +19 -0
  2995. package/dist/src/utils/sessionPaths.js +141 -0
  2996. package/dist/src/utils/sessionPaths.js.map +1 -0
  2997. package/dist/src/utils/sessionPaths.test.d.ts +6 -0
  2998. package/dist/src/utils/sessionPaths.test.js +249 -0
  2999. package/dist/src/utils/sessionPaths.test.js.map +1 -0
  3000. package/dist/src/utils/settingsUtils.d.ts +167 -0
  3001. package/dist/src/utils/settingsUtils.js +532 -0
  3002. package/dist/src/utils/settingsUtils.js.map +1 -0
  3003. package/dist/src/utils/settingsUtils.test.d.ts +6 -0
  3004. package/dist/src/utils/settingsUtils.test.js +849 -0
  3005. package/dist/src/utils/settingsUtils.test.js.map +1 -0
  3006. package/dist/src/utils/spawnWrapper.d.ts +7 -0
  3007. package/dist/src/utils/spawnWrapper.js +8 -0
  3008. package/dist/src/utils/spawnWrapper.js.map +1 -0
  3009. package/dist/src/utils/standalone-update-verify.d.ts +12 -0
  3010. package/dist/src/utils/standalone-update-verify.js +43 -0
  3011. package/dist/src/utils/standalone-update-verify.js.map +1 -0
  3012. package/dist/src/utils/standalone-update-verify.test.d.ts +6 -0
  3013. package/dist/src/utils/standalone-update-verify.test.js +27 -0
  3014. package/dist/src/utils/standalone-update-verify.test.js.map +1 -0
  3015. package/dist/src/utils/standalone-update.d.ts +27 -0
  3016. package/dist/src/utils/standalone-update.js +714 -0
  3017. package/dist/src/utils/standalone-update.js.map +1 -0
  3018. package/dist/src/utils/standalone-update.test.d.ts +6 -0
  3019. package/dist/src/utils/standalone-update.test.js +301 -0
  3020. package/dist/src/utils/standalone-update.test.js.map +1 -0
  3021. package/dist/src/utils/startupProfiler.d.ts +90 -0
  3022. package/dist/src/utils/startupProfiler.js +267 -0
  3023. package/dist/src/utils/startupProfiler.js.map +1 -0
  3024. package/dist/src/utils/startupProfiler.test.d.ts +1 -0
  3025. package/dist/src/utils/startupProfiler.test.js +293 -0
  3026. package/dist/src/utils/startupProfiler.test.js.map +1 -0
  3027. package/dist/src/utils/startupWarnings.d.ts +6 -0
  3028. package/dist/src/utils/startupWarnings.js +40 -0
  3029. package/dist/src/utils/startupWarnings.js.map +1 -0
  3030. package/dist/src/utils/stdioHelpers.d.ts +31 -0
  3031. package/dist/src/utils/stdioHelpers.js +38 -0
  3032. package/dist/src/utils/stdioHelpers.js.map +1 -0
  3033. package/dist/src/utils/systemInfo.d.ts +78 -0
  3034. package/dist/src/utils/systemInfo.js +208 -0
  3035. package/dist/src/utils/systemInfo.js.map +1 -0
  3036. package/dist/src/utils/systemInfo.test.d.ts +6 -0
  3037. package/dist/src/utils/systemInfo.test.js +380 -0
  3038. package/dist/src/utils/systemInfo.test.js.map +1 -0
  3039. package/dist/src/utils/systemInfoFields.d.ts +18 -0
  3040. package/dist/src/utils/systemInfoFields.js +102 -0
  3041. package/dist/src/utils/systemInfoFields.js.map +1 -0
  3042. package/dist/src/utils/systemInfoFields.test.d.ts +6 -0
  3043. package/dist/src/utils/systemInfoFields.test.js +74 -0
  3044. package/dist/src/utils/systemInfoFields.test.js.map +1 -0
  3045. package/dist/src/utils/terminalSequence.d.ts +21 -0
  3046. package/dist/src/utils/terminalSequence.js +124 -0
  3047. package/dist/src/utils/terminalSequence.js.map +1 -0
  3048. package/dist/src/utils/terminalSequence.test.d.ts +6 -0
  3049. package/dist/src/utils/terminalSequence.test.js +132 -0
  3050. package/dist/src/utils/terminalSequence.test.js.map +1 -0
  3051. package/dist/src/utils/truncatedDiffPreview.d.ts +6 -0
  3052. package/dist/src/utils/truncatedDiffPreview.js +18 -0
  3053. package/dist/src/utils/truncatedDiffPreview.js.map +1 -0
  3054. package/dist/src/utils/updateEventEmitter.d.ts +11 -0
  3055. package/dist/src/utils/updateEventEmitter.js +12 -0
  3056. package/dist/src/utils/updateEventEmitter.js.map +1 -0
  3057. package/dist/src/utils/userPromptExpansionHook.d.ts +9 -0
  3058. package/dist/src/utils/userPromptExpansionHook.js +30 -0
  3059. package/dist/src/utils/userPromptExpansionHook.js.map +1 -0
  3060. package/dist/src/utils/userPromptExpansionHook.test.d.ts +6 -0
  3061. package/dist/src/utils/userPromptExpansionHook.test.js +69 -0
  3062. package/dist/src/utils/userPromptExpansionHook.test.js.map +1 -0
  3063. package/dist/src/utils/userStartupWarnings.d.ts +12 -0
  3064. package/dist/src/utils/userStartupWarnings.js +74 -0
  3065. package/dist/src/utils/userStartupWarnings.js.map +1 -0
  3066. package/dist/src/utils/userStartupWarnings.test.d.ts +6 -0
  3067. package/dist/src/utils/userStartupWarnings.test.js +88 -0
  3068. package/dist/src/utils/userStartupWarnings.test.js.map +1 -0
  3069. package/dist/src/utils/version.d.ts +6 -0
  3070. package/dist/src/utils/version.js +11 -0
  3071. package/dist/src/utils/version.js.map +1 -0
  3072. package/dist/src/utils/warningHandler.d.ts +29 -0
  3073. package/dist/src/utils/warningHandler.js +100 -0
  3074. package/dist/src/utils/warningHandler.js.map +1 -0
  3075. package/dist/src/utils/warningHandler.test.d.ts +6 -0
  3076. package/dist/src/utils/warningHandler.test.js +185 -0
  3077. package/dist/src/utils/warningHandler.test.js.map +1 -0
  3078. package/dist/src/utils/windowTitle.d.ts +12 -0
  3079. package/dist/src/utils/windowTitle.js +19 -0
  3080. package/dist/src/utils/windowTitle.js.map +1 -0
  3081. package/dist/src/utils/windowTitle.test.d.ts +6 -0
  3082. package/dist/src/utils/windowTitle.test.js +49 -0
  3083. package/dist/src/utils/windowTitle.test.js.map +1 -0
  3084. package/dist/src/utils/writeWithBackup.d.ts +49 -0
  3085. package/dist/src/utils/writeWithBackup.js +136 -0
  3086. package/dist/src/utils/writeWithBackup.js.map +1 -0
  3087. package/dist/src/utils/writeWithBackup.test.d.ts +6 -0
  3088. package/dist/src/utils/writeWithBackup.test.js +177 -0
  3089. package/dist/src/utils/writeWithBackup.test.js.map +1 -0
  3090. package/dist/src/validateNonInterActiveAuth.d.ts +8 -0
  3091. package/dist/src/validateNonInterActiveAuth.js +66 -0
  3092. package/dist/src/validateNonInterActiveAuth.js.map +1 -0
  3093. package/dist/tsconfig.tsbuildinfo +1 -0
  3094. package/package.json +121 -0
@@ -0,0 +1,2853 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { useMemo, useState, useCallback, useEffect, useRef, useLayoutEffect, } from 'react';
8
+ import { measureElement } from 'ink';
9
+ import { App } from './App.js';
10
+ import { AppContext } from './contexts/AppContext.js';
11
+ import { UIStateContext } from './contexts/UIStateContext.js';
12
+ import { UIActionsContext, } from './contexts/UIActionsContext.js';
13
+ import { ConfigContext } from './contexts/ConfigContext.js';
14
+ import { ToolCallStatus, } from './types.js';
15
+ import { MessageType, StreamingState } from './types.js';
16
+ import { IdeClient, ideContextStore, createDebugLogger, getErrorMessage, getAllGeminiMdFilenames, ShellExecutionService, Storage, createInstructionsLoadedCallback, SessionEndReason, generatePromptSuggestion, logPromptSuggestion, PromptSuggestionEvent, logSpeculation, SpeculationEvent, startSpeculation, acceptSpeculation, abortSpeculation, IDLE_SPECULATION, ApprovalMode, ConditionalRulesRegistry, MCPDiscoveryState, ToolConfirmationOutcome, ToolNames, clearWorktreeSession, restoreWorktreeContext, GitWorktreeService, readWorktreeSessionMarker, } from '@tulex-cli/tulex-cli-core';
17
+ import { buildResumedHistoryItems } from './utils/resumeHistoryUtils.js';
18
+ import { loadLowlight } from './utils/lowlightLoader.js';
19
+ import { restoreGoalFromHistory } from './utils/restoreGoal.js';
20
+ import { getStickyTodos, getStickyTodoMaxVisibleItems, getStickyTodosLayoutKey, getStickyTodosRenderKey, } from './utils/todoSnapshot.js';
21
+ import { loadHierarchicalGeminiMemory } from '../config/config.js';
22
+ import { profileCheckpoint, finalizeStartupProfile, } from '../utils/startupProfiler.js';
23
+ import { appEvents } from '../utils/events.js';
24
+ import process from 'node:process';
25
+ /**
26
+ * Window in which mcp-client-update events are coalesced before the cli calls
27
+ * `setTools()`. Matches Claude Code's `MCP_BATCH_FLUSH_MS` (16 ≈ one 60Hz
28
+ * frame). Smaller windows would refresh the model tool list more often
29
+ * without user benefit; larger windows would let multiple servers settle
30
+ * before the model sees them. 16ms is the sweet spot validated by Claude's
31
+ * production deployment (see design.md § 8.3 + § 3.2 Round 2).
32
+ */
33
+ const MCP_BATCH_FLUSH_MS = 16;
34
+ /**
35
+ * Maximum time we keep the startup profile open waiting for MCP discovery to
36
+ * settle. Slightly longer than the default 30s per-server discovery timeout
37
+ * so a server that times out can still log its `outcome: failed` event into
38
+ * the profile. After this cap the profile file is written regardless.
39
+ */
40
+ const STARTUP_PROFILE_FINALIZE_CAP_MS = 35_000;
41
+ import { useHistory } from './hooks/useHistoryManager.js';
42
+ import { useMemoryMonitor } from './hooks/useMemoryMonitor.js';
43
+ import { useThemeCommand } from './hooks/useThemeCommand.js';
44
+ import { useFeedbackDialog } from './hooks/useFeedbackDialog.js';
45
+ import { useAuthCommand } from './auth/useAuth.js';
46
+ import { useEditorSettings } from './hooks/useEditorSettings.js';
47
+ import { usePreferredEditor } from './hooks/usePreferredEditor.js';
48
+ import { useSettingsCommand } from './hooks/useSettingsCommand.js';
49
+ import { useModelCommand } from './hooks/useModelCommand.js';
50
+ import { useArenaCommand } from './hooks/useArenaCommand.js';
51
+ import { useApprovalModeCommand } from './hooks/useApprovalModeCommand.js';
52
+ import { useBranchCommand } from './hooks/useBranchCommand.js';
53
+ import { useResumeCommand } from './hooks/useResumeCommand.js';
54
+ import { useDeleteCommand } from './hooks/useDeleteCommand.js';
55
+ import { useSlashCommandProcessor } from './hooks/slashCommandProcessor.js';
56
+ import { useDoublePress } from './hooks/useDoublePress.js';
57
+ import { computeApiTruncationIndex, isRealUserTurn, } from './utils/historyMapping.js';
58
+ import { useVimModeState, useVimModeActions, } from './contexts/VimModeContext.js';
59
+ import { CompactModeProvider } from './contexts/CompactModeContext.js';
60
+ import { useTerminalSize } from './hooks/useTerminalSize.js';
61
+ import { calculatePromptWidths } from './components/InputPrompt.js';
62
+ import { useStdin, useStdout } from 'ink';
63
+ import ansiEscapes from 'ansi-escapes';
64
+ import * as fs from 'node:fs';
65
+ import { basename } from 'node:path';
66
+ import { computeWindowTitle } from '../utils/windowTitle.js';
67
+ import { clearScreen } from '../utils/stdioHelpers.js';
68
+ import { useTextBuffer } from './components/shared/text-buffer.js';
69
+ import { useLogger } from './hooks/useLogger.js';
70
+ import { useGeminiStream, } from './hooks/useGeminiStream.js';
71
+ import { useVim } from './hooks/vim.js';
72
+ import { isBtwCommand, isSlashCommand } from './utils/commandUtils.js';
73
+ import { SettingScope } from '../config/settings.js';
74
+ import {} from '../core/initializer.js';
75
+ import { useFocus } from './hooks/useFocus.js';
76
+ import { useAwaySummary } from './hooks/useAwaySummary.js';
77
+ import { useBracketedPaste } from './hooks/useBracketedPaste.js';
78
+ import { useKeypress } from './hooks/useKeypress.js';
79
+ import { keyMatchers, Command } from './keyMatchers.js';
80
+ import { useLoadingIndicator } from './hooks/useLoadingIndicator.js';
81
+ import { useTerminalProgress } from './hooks/useTerminalProgress.js';
82
+ import { useFolderTrust } from './hooks/useFolderTrust.js';
83
+ import { useIdeTrustListener } from './hooks/useIdeTrustListener.js';
84
+ import {} from './IdeIntegrationNudge.js';
85
+ import {} from './CommandFormatMigrationNudge.js';
86
+ import { useCommandMigration } from './hooks/useCommandMigration.js';
87
+ import { migrateTomlCommands } from '../services/command-migration-tool.js';
88
+ import {} from './utils/updateCheck.js';
89
+ import { setUpdateHandler } from '../utils/handleAutoUpdate.js';
90
+ import { registerCleanup, runExitCleanup } from '../utils/cleanup.js';
91
+ import { useMessageQueue } from './hooks/useMessageQueue.js';
92
+ import { useAutoAcceptIndicator } from './hooks/useAutoAcceptIndicator.js';
93
+ import { useSessionStats } from './contexts/SessionContext.js';
94
+ import { useGitBranchName } from './hooks/useGitBranchName.js';
95
+ import { useWorktreeSession } from './hooks/useWorktreeSession.js';
96
+ import { useExtensionUpdates, useConfirmUpdateRequests, useSettingInputRequests, usePluginChoiceRequests, } from './hooks/useExtensionUpdates.js';
97
+ import { useProviderUpdates } from './hooks/useProviderUpdates.js';
98
+ import { ShellFocusContext } from './contexts/ShellFocusContext.js';
99
+ import { RenderModeProvider, } from './contexts/RenderModeContext.js';
100
+ import { TerminalOutputProvider } from './contexts/TerminalOutputContext.js';
101
+ import { useAgentViewState } from './contexts/AgentViewContext.js';
102
+ import { useBackgroundTaskViewState, useBackgroundTaskViewActions, } from './contexts/BackgroundTaskViewContext.js';
103
+ import { t } from '../i18n/index.js';
104
+ import { useWelcomeBack } from './hooks/useWelcomeBack.js';
105
+ import { useDialogClose } from './hooks/useDialogClose.js';
106
+ import { useInitializationAuthError } from './hooks/useInitializationAuthError.js';
107
+ import { useSubagentCreateDialog } from './hooks/useSubagentCreateDialog.js';
108
+ import { useAgentsManagerDialog } from './hooks/useAgentsManagerDialog.js';
109
+ import { useSkillsManagerDialog } from './hooks/useSkillsManagerDialog.js';
110
+ import { useExtensionsManagerDialog } from './hooks/useExtensionsManagerDialog.js';
111
+ import { useMcpDialog } from './hooks/useMcpDialog.js';
112
+ import { useHooksDialog } from './hooks/useHooksDialog.js';
113
+ import { useStatsDialog } from './hooks/useStatsDialog.js';
114
+ import { useMemoryDialog } from './hooks/useMemoryDialog.js';
115
+ import { useAttentionNotifications } from './hooks/useAttentionNotifications.js';
116
+ import { buildTerminalNotification } from './hooks/useTerminalNotification.js';
117
+ import { useContextualTips } from './hooks/useContextualTips.js';
118
+ import { getTipHistory } from '../services/tips/index.js';
119
+ import { useRemoteInput } from '../remoteInput/RemoteInputContext.js';
120
+ import { useDualOutput } from '../dualOutput/DualOutputContext.js';
121
+ import { requestConsentInteractive, requestConsentOrFail, } from '../commands/extensions/consent.js';
122
+ import { compactToggleHasVisualEffect } from './utils/mergeCompactToolGroups.js';
123
+ import { findLastUserItemIndex, isSyntheticHistoryItem, itemsAfterAreOnlySynthetic, } from './utils/historyUtils.js';
124
+ import { MAIN_CONTENT_HEIGHT_RESERVATION } from './utils/layoutUtils.js';
125
+ const CTRL_EXIT_PROMPT_DURATION_MS = 1000;
126
+ const debugLogger = createDebugLogger('APP_CONTAINER');
127
+ export function isRenderModeToggleKey(key) {
128
+ return (keyMatchers[Command.TOGGLE_RENDER_MODE](key) ||
129
+ (key.name === 'm' && key.meta && !key.ctrl && !key.paste));
130
+ }
131
+ export function getNextRenderMode(current) {
132
+ return current === 'render' ? 'raw' : 'render';
133
+ }
134
+ export function handleRenderModeToggleKey(key, setRenderMode) {
135
+ if (!isRenderModeToggleKey(key)) {
136
+ return false;
137
+ }
138
+ setRenderMode(getNextRenderMode);
139
+ return true;
140
+ }
141
+ function isToolExecuting(pendingHistoryItems) {
142
+ return pendingHistoryItems.some((item) => {
143
+ if (item && item.type === 'tool_group') {
144
+ return item.tools.some((tool) => ToolCallStatus.Executing === tool.status);
145
+ }
146
+ return false;
147
+ });
148
+ }
149
+ function useStableStickyTodos(todos) {
150
+ const renderKey = getStickyTodosRenderKey(todos);
151
+ const stableTodosRef = useRef(null);
152
+ if (stableTodosRef.current?.renderKey !== renderKey) {
153
+ stableTodosRef.current = { renderKey, todos };
154
+ }
155
+ return stableTodosRef.current.todos;
156
+ }
157
+ // Exported for tests. Given a newest-first list of messages, return a list
158
+ // with duplicates removed, keeping the first (newest) occurrence of each.
159
+ export function dedupeNewestFirst(messages) {
160
+ const seen = new Set();
161
+ const result = [];
162
+ for (const msg of messages) {
163
+ if (!seen.has(msg)) {
164
+ seen.add(msg);
165
+ result.push(msg);
166
+ }
167
+ }
168
+ return result;
169
+ }
170
+ /**
171
+ * The fraction of the terminal width to allocate to the shell.
172
+ * This provides horizontal padding.
173
+ */
174
+ const SHELL_WIDTH_FRACTION = 0.89;
175
+ /**
176
+ * The number of lines to subtract from the available terminal height
177
+ * for the shell. This provides vertical padding and space for other UI elements.
178
+ */
179
+ const SHELL_HEIGHT_PADDING = 10;
180
+ export const AppContainer = (props) => {
181
+ const { settings, config, initializationResult } = props;
182
+ const historyManager = useHistory();
183
+ // `useHistory()` returns a fresh memoized object whenever `history` changes,
184
+ // so depending on `historyManager` directly inside event-handler callbacks
185
+ // would rebuild them on every message. Mirror history into a ref so
186
+ // handlers can read the latest snapshot at call time without reactive deps.
187
+ const historyRef = useRef(historyManager.history);
188
+ historyRef.current = historyManager.history;
189
+ useMemoryMonitor(historyManager);
190
+ const [debugMessage, setDebugMessage] = useState('');
191
+ const [quittingMessages, setQuittingMessages] = useState(null);
192
+ const [themeError, setThemeError] = useState(initializationResult.themeError);
193
+ const [isProcessing, setIsProcessing] = useState(false);
194
+ const [embeddedShellFocused, setEmbeddedShellFocused] = useState(false);
195
+ const [geminiMdFileCount, setGeminiMdFileCount] = useState(initializationResult.geminiMdFileCount);
196
+ const [shellModeActive, setShellModeActive] = useState(false);
197
+ const [modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError] = useState(false);
198
+ const [historyRemountKey, setHistoryRemountKey] = useState(0);
199
+ const [updateInfo, setUpdateInfo] = useState(null);
200
+ const [isTrustedFolder, setIsTrustedFolder] = useState(config.isTrustedFolder());
201
+ const extensionManager = config.getExtensionManager();
202
+ const { addConfirmUpdateExtensionRequest, confirmUpdateExtensionRequests } = useConfirmUpdateRequests();
203
+ const { addSettingInputRequest, settingInputRequests } = useSettingInputRequests();
204
+ const { addPluginChoiceRequest, pluginChoiceRequests } = usePluginChoiceRequests();
205
+ extensionManager.setRequestConsent(requestConsentOrFail.bind(null, (description) => requestConsentInteractive(description, addConfirmUpdateExtensionRequest)));
206
+ extensionManager.setRequestChoicePlugin((marketplace) => new Promise((resolve, reject) => {
207
+ addPluginChoiceRequest({
208
+ marketplaceName: marketplace.name,
209
+ plugins: marketplace.plugins.map((p) => ({
210
+ name: p.name,
211
+ description: p.description,
212
+ })),
213
+ onSelect: (pluginName) => {
214
+ resolve(pluginName);
215
+ },
216
+ onCancel: () => {
217
+ reject(new Error('Plugin selection cancelled'));
218
+ },
219
+ });
220
+ }));
221
+ extensionManager.setRequestSetting((setting) => new Promise((resolve, reject) => {
222
+ addSettingInputRequest({
223
+ settingName: setting.name,
224
+ settingDescription: setting.description,
225
+ sensitive: setting.sensitive ?? false,
226
+ onSubmit: (value) => {
227
+ resolve(value);
228
+ },
229
+ onCancel: () => {
230
+ reject(new Error('Setting input cancelled'));
231
+ },
232
+ });
233
+ }));
234
+ const { extensionsUpdateState, extensionsUpdateStateInternal, dispatchExtensionStateUpdate, } = useExtensionUpdates(extensionManager, historyManager.addItem, config.getWorkingDir());
235
+ const { providerUpdateRequest, dismissProviderUpdate } = useProviderUpdates(settings, config, historyManager.addItem);
236
+ const [isTrustDialogOpen, setTrustDialogOpen] = useState(false);
237
+ const openTrustDialog = useCallback(() => setTrustDialogOpen(true), []);
238
+ const closeTrustDialog = useCallback(() => setTrustDialogOpen(false), []);
239
+ const [isPermissionsDialogOpen, setPermissionsDialogOpen] = useState(false);
240
+ const openPermissionsDialog = useCallback(() => setPermissionsDialogOpen(true), []);
241
+ const closePermissionsDialog = useCallback(() => setPermissionsDialogOpen(false), []);
242
+ const [currentModel, setCurrentModel] = useState(() => config.getModel());
243
+ const [isConfigInitialized, setConfigInitialized] = useState(false);
244
+ const [userMessages, setUserMessages] = useState([]);
245
+ // Terminal and layout hooks
246
+ const { columns: terminalWidth, rows: terminalHeight } = useTerminalSize();
247
+ const { stdin, setRawMode } = useStdin();
248
+ const { stdout } = useStdout();
249
+ // Raw write function for terminal escape sequences.
250
+ // Uses process.stdout directly instead of Ink's useStdout() because
251
+ // standard Ink v6.2.3 proxies stdout writes through its rendering
252
+ // pipeline, which can corrupt binary escape sequences (OSC, DCS).
253
+ const writeRaw = useCallback((data) => {
254
+ process.stdout.write(data);
255
+ }, []);
256
+ // Terminal notification helpers (constructed directly, not via context)
257
+ const terminal = useMemo(() => buildTerminalNotification(writeRaw), [writeRaw]);
258
+ // Additional hooks moved from App.tsx
259
+ const { stats: sessionStats, startNewSession } = useSessionStats();
260
+ const logger = useLogger(config.storage, sessionStats.sessionId);
261
+ const branchName = useGitBranchName(config.getTargetDir());
262
+ const worktreeSession = useWorktreeSession(config);
263
+ const [showWorktreeExitDialog, setShowWorktreeExitDialog] = useState(false);
264
+ /**
265
+ * One-shot worktree restore reminder for the TUI path. Set during
266
+ * `--resume` when the persisted sidecar names a live worktree, then
267
+ * consumed and cleared by `handleFinalSubmit` on the user's first
268
+ * prompt — same shape as ACP `Session.pendingWorktreeNotice` and
269
+ * headless's `<system-reminder>` prefix. Without this, the resumed
270
+ * model would see an INFO history item in the TUI but never receive
271
+ * the reminder in the next API request, leaving it free to edit the
272
+ * parent checkout. (PR #4174 review #3259975249.)
273
+ */
274
+ const pendingWorktreeNoticeRef = useRef(null);
275
+ const activeWorktree = useMemo(() => worktreeSession
276
+ ? {
277
+ slug: worktreeSession.slug,
278
+ branch: worktreeSession.worktreeBranch,
279
+ path: worktreeSession.worktreePath,
280
+ originalCwd: worktreeSession.originalCwd,
281
+ originalBranch: worktreeSession.originalBranch,
282
+ originalHeadCommit: worktreeSession.originalHeadCommit,
283
+ }
284
+ : null, [worktreeSession]);
285
+ // Layout measurements
286
+ const mainControlsRef = useRef(null);
287
+ const originalTitleRef = useRef(computeWindowTitle(basename(config.getTargetDir())));
288
+ const lastTitleRef = useRef(null);
289
+ const staticExtraHeight = 3;
290
+ // Prefetch the lowlight chunk on mount so the dynamic import is already
291
+ // in flight before the first code block needs colorizing. Without this
292
+ // kick-off, code blocks committed to ink's append-only <Static> region
293
+ // before the import resolves stay plain text for the rest of the session
294
+ // — Static can only be re-rendered via `refreshStatic`, which is not
295
+ // wired to lowlight load completion. Common reachable paths: short
296
+ // `--prompt -p` runs that finalize quickly, Ctrl+C-cancelled first turns,
297
+ // and the first-paint history replay on `--resume`. Firing the load
298
+ // from mount keeps the startup parse-cost win (V8 still parses off the
299
+ // critical path) while restoring the "first paint sees a loaded
300
+ // instance" guarantee. Errors are silently swallowed; CodeColorizer
301
+ // already falls back to plain text on miss.
302
+ useEffect(() => {
303
+ void loadLowlight().catch((err) => {
304
+ // The loader caches rejection with a cooldown (see
305
+ // `LOWLIGHT_RETRY_COOLDOWN_MS` / `lowlightLastFailureAt` in
306
+ // `lowlightLoader.ts`). This useEffect runs once on mount, so this
307
+ // catch fires at most once per session regardless. Log to the debug
308
+ // channel so a degraded syntax-highlight state (corrupted install,
309
+ // missing chunk) leaves a breadcrumb without spamming the user's
310
+ // TTY — `CodeColorizer` already falls back to plain text.
311
+ debugLogger.warn(`Failed to load lowlight chunk; code blocks will render as plain text: ${err instanceof Error ? err.message : String(err)}`);
312
+ });
313
+ }, []);
314
+ // Initialize config (runs once on mount)
315
+ useEffect(() => {
316
+ (async () => {
317
+ // Note: the program will not work if this fails so let errors be
318
+ // handled by the global catch.
319
+ profileCheckpoint('config_initialize_start');
320
+ await config.initialize();
321
+ profileCheckpoint('config_initialize_end');
322
+ setConfigInitialized(true);
323
+ profileCheckpoint('input_enabled');
324
+ // Profile finalize is intentionally NOT here. With PR-A's background
325
+ // MCP discovery, MCP-related events (`mcp_server_ready:*`,
326
+ // `mcp_first_tool_registered`, `mcp_all_servers_settled`,
327
+ // `gemini_tools_updated`) arrive AFTER `input_enabled`. The dedicated
328
+ // `useEffect` below (gated by `configInitialized`) defers finalize
329
+ // until MCP discovery settles or the 35s hard cap elapses — that way
330
+ // the profile captures the full MCP timeline without holding back
331
+ // the user-facing TTI.
332
+ // Phase D-1: when launched with --worktree, gemini.tsx stashes a
333
+ // one-shot notice on Config. Consume it here so it surfaces in the
334
+ // transcript AND gets injected into the next user prompt. This
335
+ // wins over the Phase C resume-restore path below — startup beats
336
+ // resume on the same prompt.
337
+ const startupWorktreeNotice = config.consumePendingStartupWorktreeNotice();
338
+ if (startupWorktreeNotice) {
339
+ historyManager.addItem({ type: MessageType.INFO, text: startupWorktreeNotice }, Date.now());
340
+ pendingWorktreeNoticeRef.current = startupWorktreeNotice;
341
+ }
342
+ const resumedSessionData = config.getResumedSessionData();
343
+ if (resumedSessionData) {
344
+ const historyItems = buildResumedHistoryItems(resumedSessionData, config);
345
+ historyManager.loadHistory(historyItems);
346
+ // Re-arm any `/goal` that was active when the prior session ended.
347
+ try {
348
+ restoreGoalFromHistory(historyItems, config, historyManager.addItem);
349
+ }
350
+ catch {
351
+ // Restore is best-effort — never block resume on it.
352
+ }
353
+ const recovered = await config.loadPausedBackgroundAgents(config.getSessionId());
354
+ if (recovered.length > 0) {
355
+ historyManager.addItem({
356
+ type: MessageType.INFO,
357
+ text: config
358
+ .getBackgroundAgentResumeService()
359
+ .buildRecoveredBackgroundAgentsNotice(recovered.length),
360
+ }, Date.now());
361
+ }
362
+ // Restore session name tag from custom title
363
+ const title = config
364
+ .getSessionService()
365
+ .getSessionTitle(config.getSessionId());
366
+ if (title) {
367
+ setSessionName(title);
368
+ }
369
+ // Restore worktree context (shared logic — headless and ACP use
370
+ // the same helper). Stale sidecars get cleaned up; live ones
371
+ // produce an INFO message the model sees on the next turn.
372
+ // Skipped when Phase D-1 already injected a --worktree startup
373
+ // notice above (startup wins over resume on the same prompt).
374
+ if (!startupWorktreeNotice) {
375
+ try {
376
+ const sessionPath = config
377
+ .getSessionService()
378
+ .getWorktreeSessionPath(config.getSessionId());
379
+ const restored = await restoreWorktreeContext(sessionPath, (err) => {
380
+ // eslint-disable-next-line no-console
381
+ console.debug('worktree session restore warning:', err);
382
+ });
383
+ if (restored.contextMessage) {
384
+ // UI: show the notice in the transcript so the user knows.
385
+ historyManager.addItem({ type: MessageType.INFO, text: restored.contextMessage }, Date.now());
386
+ // Model: queue the notice for one-shot injection into the
387
+ // next user prompt (consumed by handleFinalSubmit). The INFO
388
+ // history item alone is UI-only — the model never sees it,
389
+ // so without this it could resume editing the parent
390
+ // checkout despite the user seeing the worktree path.
391
+ pendingWorktreeNoticeRef.current = restored.contextMessage;
392
+ }
393
+ }
394
+ catch (error) {
395
+ // Best-effort: failures here only affect UI hint visibility,
396
+ // not the resumed conversation itself.
397
+ // eslint-disable-next-line no-console
398
+ console.debug('worktree session restore failed:', error);
399
+ }
400
+ }
401
+ }
402
+ })();
403
+ // Register SessionEnd cleanup for process exit
404
+ registerCleanup(async () => {
405
+ try {
406
+ await config
407
+ .getHookSystem()
408
+ ?.fireSessionEndEvent(SessionEndReason.PromptInputExit);
409
+ debugLogger.debug('SessionEnd event completed successfully!!!');
410
+ }
411
+ catch (err) {
412
+ debugLogger.error(`SessionEnd hook failed: ${err}`);
413
+ }
414
+ });
415
+ registerCleanup(async () => {
416
+ const ideClient = await IdeClient.getInstance();
417
+ await ideClient.disconnect();
418
+ });
419
+ // eslint-disable-next-line react-hooks/exhaustive-deps
420
+ }, [config]);
421
+ /**
422
+ * PR-A wiring: progressive MCP availability.
423
+ *
424
+ * This effect does two coupled things, both gated on `configInitialized`:
425
+ *
426
+ * 1. **16ms batch-flush of `setTools()`**: as each MCP server completes
427
+ * discover, `McpClientManager` emits `mcp-client-update`. We coalesce
428
+ * these into at most one `GeminiClient.setTools()` call per ~16ms
429
+ * window. With three MCP servers settling within a few ms of each
430
+ * other, the model sees one consolidated tool refresh instead of
431
+ * three back-to-back; with a server stream over 1s, the model sees
432
+ * each batch with at most one frame of lag (this is the gap the
433
+ * baseline measured at 6235 ms in three-mixed-mcp before PR-A).
434
+ *
435
+ * 2. **Deferred startup-profile finalize**: in PR-A's default mode
436
+ * MCP discovery runs in the background, so MCP-related profiler
437
+ * events arrive AFTER `input_enabled`. The profile file is held open
438
+ * until either the manager's discovery state reaches `COMPLETED`
439
+ * (all servers ready or failed) or `STARTUP_PROFILE_FINALIZE_CAP_MS`
440
+ * elapses (so a hung server doesn't keep the profile open forever).
441
+ *
442
+ * In legacy blocking mode (`QWEN_CODE_LEGACY_MCP_BLOCKING=1`) MCP
443
+ * discovery already completed inside `config.initialize()`, so this
444
+ * effect observes `MCPDiscoveryState.COMPLETED` immediately and finalizes
445
+ * without waiting.
446
+ */
447
+ useEffect(() => {
448
+ if (!isConfigInitialized)
449
+ return undefined;
450
+ const geminiClient = config.getGeminiClient();
451
+ if (!geminiClient)
452
+ return undefined;
453
+ const manager = config.getToolRegistry().getMcpClientManager();
454
+ let flushTimer = null;
455
+ let finalized = false;
456
+ const finalizeOnce = () => {
457
+ if (finalized)
458
+ return;
459
+ finalized = true;
460
+ finalizeStartupProfile(config.getSessionId());
461
+ };
462
+ // Runs the pending batched setTools() immediately and clears the timer.
463
+ // Returns a promise that resolves when setTools() finishes so callers
464
+ // can sequence subsequent work after `gemini_tools_updated` is
465
+ // recorded into the startup profile.
466
+ const flushNow = () => {
467
+ if (flushTimer !== null) {
468
+ clearTimeout(flushTimer);
469
+ flushTimer = null;
470
+ }
471
+ // GeminiClient.setTools() has no try/catch around warmAll() /
472
+ // getFunctionDeclarations() / getChat().setTools(). A silent
473
+ // discard here would make production tool-registration regressions
474
+ // invisible, so route the error through debugLogger.
475
+ return geminiClient.setTools().catch((err) => {
476
+ debugLogger.error(`setTools() batch-flush failed: ${err instanceof Error ? err.message : String(err)}`);
477
+ });
478
+ };
479
+ const scheduleFlush = () => {
480
+ if (flushTimer !== null)
481
+ return;
482
+ flushTimer = setTimeout(() => {
483
+ flushTimer = null;
484
+ void flushNow();
485
+ }, MCP_BATCH_FLUSH_MS);
486
+ };
487
+ // Match the non-interactive entry points (`gemini.tsx`, `session.ts`,
488
+ // `acpAgent.ts`) which warn to stderr when MCP discovery completes with
489
+ // failed servers. The interactive path can't use stderr (it would
490
+ // collide with Ink's rendered output), so we route through
491
+ // `debugLogger.warn` so it shows up under `QWEN_CODE_DEBUG=1` and in
492
+ // the debug log file — matching the channel `setTools()` errors above
493
+ // use. The MCP status footer pill already surfaces failures
494
+ // continuously in the UI; this log is the actionable-on-debug record
495
+ // wenshao asked for in round 7.
496
+ let failureSurfaced = false;
497
+ const surfaceFailuresOnce = () => {
498
+ if (failureSurfaced)
499
+ return;
500
+ failureSurfaced = true;
501
+ const failedNames = typeof config.getFailedMcpServerNames === 'function'
502
+ ? config.getFailedMcpServerNames()
503
+ : [];
504
+ if (failedNames.length > 0) {
505
+ debugLogger.warn(`MCP server(s) failed to start: ${failedNames.join(', ')}. ` +
506
+ `Continuing with built-in tools and any servers that did connect.`);
507
+ }
508
+ };
509
+ const onMcpUpdate = () => {
510
+ if (manager.getDiscoveryState() === MCPDiscoveryState.COMPLETED) {
511
+ // Discovery has settled. Flush the pending setTools() NOW (rather
512
+ // than waiting for the 16ms batch timer) and only finalize after
513
+ // it runs — `setTools()` emits the `gemini_tools_updated` event,
514
+ // and finalizing before it fires would drop that event because
515
+ // the module-level `finalized` guard suppresses every subsequent
516
+ // record. That dropped event is what `gemini_tools_lag` is
517
+ // derived from in the profile summary.
518
+ surfaceFailuresOnce();
519
+ void flushNow().finally(finalizeOnce);
520
+ }
521
+ else {
522
+ scheduleFlush();
523
+ }
524
+ };
525
+ // Legacy / no-MCP path: discovery already finished synchronously
526
+ // inside config.initialize(), so finalize immediately and only keep
527
+ // the flush listener around for late refreshes (e.g. SkillTool's
528
+ // post-construction refreshSkills triggering setTools).
529
+ if (manager.getDiscoveryState() === MCPDiscoveryState.COMPLETED) {
530
+ surfaceFailuresOnce();
531
+ finalizeOnce();
532
+ }
533
+ appEvents.on('mcp-client-update', onMcpUpdate);
534
+ const finalizeCap = setTimeout(finalizeOnce, STARTUP_PROFILE_FINALIZE_CAP_MS);
535
+ return () => {
536
+ appEvents.off('mcp-client-update', onMcpUpdate);
537
+ if (flushTimer !== null)
538
+ clearTimeout(flushTimer);
539
+ clearTimeout(finalizeCap);
540
+ };
541
+ }, [isConfigInitialized, config]);
542
+ // Track idle state via ref so the update handler can defer notifications
543
+ // while the model is streaming, without triggering re-renders.
544
+ // Note: isIdleRef.current is assigned after streamingState becomes available
545
+ // (see the assignment below useGeminiStream).
546
+ const isIdleRef = useRef(true);
547
+ const updateHandlerRef = useRef(null);
548
+ useEffect(() => {
549
+ const handler = setUpdateHandler(historyManager.addItem, setUpdateInfo, isIdleRef);
550
+ updateHandlerRef.current = handler;
551
+ return () => handler?.cleanup();
552
+ }, [historyManager.addItem]);
553
+ // Derive widths for InputPrompt using shared helper
554
+ const { inputWidth, suggestionsWidth } = useMemo(() => {
555
+ const { inputWidth, suggestionsWidth } = calculatePromptWidths(terminalWidth);
556
+ return { inputWidth, suggestionsWidth };
557
+ }, [terminalWidth]);
558
+ // Uniform width for bordered box components: accounts for margins and caps at 100
559
+ const mainAreaWidth = Math.min(terminalWidth - 4, 100);
560
+ const staticAreaMaxItemHeight = Math.max(terminalHeight * 4, 100);
561
+ const isValidPath = useCallback((filePath) => {
562
+ try {
563
+ return fs.existsSync(filePath) && fs.statSync(filePath).isFile();
564
+ }
565
+ catch (_e) {
566
+ return false;
567
+ }
568
+ }, []);
569
+ const preferredEditor = usePreferredEditor();
570
+ const buffer = useTextBuffer({
571
+ initialText: '',
572
+ viewport: { height: 10, width: inputWidth },
573
+ stdin,
574
+ setRawMode,
575
+ isValidPath,
576
+ shellModeActive,
577
+ preferredEditor,
578
+ });
579
+ useEffect(() => {
580
+ const fetchUserMessages = async () => {
581
+ const pastMessagesRaw = (await logger?.getPreviousUserMessages()) || [];
582
+ const currentSessionUserMessages = historyManager.history
583
+ .filter((item) => item.type === 'user' &&
584
+ typeof item.text === 'string' &&
585
+ item.text.trim() !== '')
586
+ .map((item) => item.text)
587
+ .reverse();
588
+ // Current-session messages are already newest-first; combining with past
589
+ // messages gives a newest-first list. dedupeNewestFirst keeps the first
590
+ // (newest) occurrence so resubmitting an old prompt promotes it to
591
+ // "most recent" rather than leaving a stale copy at an older position.
592
+ const combinedMessages = [
593
+ ...currentSessionUserMessages,
594
+ ...pastMessagesRaw,
595
+ ];
596
+ setUserMessages(dedupeNewestFirst(combinedMessages).reverse());
597
+ };
598
+ fetchUserMessages();
599
+ }, [historyManager.history, logger]);
600
+ const remountStaticHistory = useCallback(() => {
601
+ setHistoryRemountKey((prev) => prev + 1);
602
+ }, []);
603
+ // In VP mode (ui.useTerminalBuffer) the React tree fully owns the visible
604
+ // region via ink 7 native overflow clipping. Writing clearTerminal /
605
+ // cursorTo+eraseDown would be a wasted flash and would also corrupt the
606
+ // in-app scroll position. The remount-key bump is also a near-no-op for
607
+ // VP: nothing in the VP render path is keyed by historyRemountKey, so
608
+ // the only reason to bump it is to keep the legacy `<Static>` branch in
609
+ // sync if the user toggles `useTerminalBuffer` off mid-session. The
610
+ // visible refresh in VP mode comes for free from the React tree
611
+ // re-reading `mergedHistory` / `allVirtualItems` on whatever state
612
+ // change triggered refreshStatic (Ctrl+O, model change, etc.).
613
+ const useTerminalBuffer = settings.merged.ui?.useTerminalBuffer ?? false;
614
+ const refreshStatic = useCallback(() => {
615
+ if (!useTerminalBuffer) {
616
+ stdout.write(ansiEscapes.clearTerminal);
617
+ }
618
+ remountStaticHistory();
619
+ }, [useTerminalBuffer, remountStaticHistory, stdout]);
620
+ // Targeted repaint for resize events: move cursor to top-left and erase
621
+ // downward instead of a full clearTerminal, avoiding the full-screen
622
+ // flash. Ink's <Static> region is append-only, so when terminal width
623
+ // changes (tmux split, fullscreen toggle, font size change) we must
624
+ // explicitly re-emit the static history at the new width — otherwise
625
+ // header content stays at the old width and visibly tears.
626
+ // VP mode handles resize via ink's reflow + its own overflow clipping, so
627
+ // the physical write is unnecessary there too.
628
+ const repaintStaticViewport = useCallback(() => {
629
+ if (!useTerminalBuffer) {
630
+ stdout.write(`${ansiEscapes.cursorTo(0, 0)}${ansiEscapes.eraseDown}`);
631
+ }
632
+ remountStaticHistory();
633
+ }, [useTerminalBuffer, remountStaticHistory, stdout]);
634
+ // Track previous terminal width across renders so we only repaint when
635
+ // the width actually changes. Initialized to the current width to avoid
636
+ // a spurious repaint on first mount.
637
+ const previousTerminalWidthRef = useRef(terminalWidth);
638
+ // Keep the static header in sync with model changes without polling.
639
+ // Ink's <Static> output is append-only, so model changes must explicitly
640
+ // clear and remount the static region to redraw the banner at the top.
641
+ //
642
+ // Two requirements pull in opposite directions:
643
+ // (a) refreshStatic() must NOT be called from inside a setState updater,
644
+ // because React.StrictMode double-invokes updaters in dev and we'd
645
+ // fire two clearTerminal writes per model swap.
646
+ // (b) setHistoryRemountKey (inside refreshStatic) and setCurrentModel
647
+ // MUST land in the SAME commit. MainContent's <Static> key is
648
+ // `${historyRemountKey}-${currentModel}` and its render-phase
649
+ // progressive-replay reset (lastRemountKey !== historyRemountKey)
650
+ // only fires when historyRemountKey changes. If currentModel
651
+ // changes first in its own render, Static remounts with the OLD
652
+ // remount key and the unreset (full-length) replayCount — i.e.
653
+ // a full-history Static render that bypasses progressive replay
654
+ // (the issue #3899 freeze regression). See PR #4119 review.
655
+ //
656
+ // Fix: side-effect lives in the event handler (NOT the updater); a ref
657
+ // guard de-dupes same-model notifications. React batches the
658
+ // setHistoryRemountKey (via refreshStatic) and setCurrentModel calls in
659
+ // this event handler into a single commit, so the render-phase reset
660
+ // and the Static remount happen together — no full-history flash.
661
+ const lastNotifiedModelRef = useRef(currentModel);
662
+ useEffect(() => {
663
+ const unsubscribe = config.onModelChange((model) => {
664
+ if (lastNotifiedModelRef.current === model) {
665
+ return;
666
+ }
667
+ lastNotifiedModelRef.current = model;
668
+ refreshStatic();
669
+ setCurrentModel(model);
670
+ });
671
+ return unsubscribe;
672
+ }, [config, refreshStatic]);
673
+ const { isThemeDialogOpen, openThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, historyManager.addItem, initializationResult.themeError);
674
+ const { isApprovalModeDialogOpen, openApprovalModeDialog, handleApprovalModeSelect, } = useApprovalModeCommand(settings, config);
675
+ const auth = useAuthCommand(settings, config, historyManager.addItem, refreshStatic);
676
+ const { state: authState, actions: authActions } = auth;
677
+ const { onAuthError, openAuthDialog, closeAuthDialog } = authActions;
678
+ const { isAuthDialogOpen, isAuthenticating, pendingAuthType } = authState;
679
+ useInitializationAuthError(initializationResult.authError, onAuthError);
680
+ // Sync user tier from config when authentication changes
681
+ // TODO: Implement getUserTier() method on Config if needed
682
+ // useEffect(() => {
683
+ // if (authState === AuthState.Authenticated) {
684
+ // setUserTier(config.getUserTier());
685
+ // }
686
+ // }, [config, authState]);
687
+ // Check for enforced auth type mismatch
688
+ useEffect(() => {
689
+ // Check for initialization error first
690
+ const currentAuthType = config.getModelsConfig().getCurrentAuthType();
691
+ if (settings.merged.security?.auth?.enforcedType &&
692
+ currentAuthType &&
693
+ settings.merged.security?.auth.enforcedType !== currentAuthType) {
694
+ onAuthError(t('Authentication is enforced to be {{enforcedType}}, but you are currently using {{currentType}}.', {
695
+ enforcedType: String(settings.merged.security?.auth.enforcedType),
696
+ currentType: String(currentAuthType),
697
+ }));
698
+ }
699
+ }, [settings.merged.security?.auth?.enforcedType, config, onAuthError]);
700
+ const [editorError, setEditorError] = useState(null);
701
+ const { isEditorDialogOpen, openEditorDialog, handleEditorSelect, exitEditorDialog, } = useEditorSettings(settings, setEditorError, historyManager.addItem);
702
+ const { isSettingsDialogOpen, openSettingsDialog, closeSettingsDialog } = useSettingsCommand();
703
+ const [isStatusLineDialogOpen, setStatusLineDialogOpen] = useState(false);
704
+ const openStatusLineDialog = useCallback(() => setStatusLineDialogOpen(true), []);
705
+ const closeStatusLineDialog = useCallback(() => setStatusLineDialogOpen(false), []);
706
+ const [statusLineSettingsVersion, setStatusLineSettingsVersion] = useState(0);
707
+ const [statusLineConfigOverride, setStatusLineConfigOverride] = useState(undefined);
708
+ const notifyStatusLineSettingsChanged = useCallback((newConfig) => {
709
+ setStatusLineConfigOverride(newConfig);
710
+ setStatusLineSettingsVersion((version) => version + 1);
711
+ }, []);
712
+ const { isMemoryDialogOpen, openMemoryDialog, closeMemoryDialog } = useMemoryDialog();
713
+ const { isModelDialogOpen, isFastModelMode, openModelDialog, closeModelDialog, } = useModelCommand();
714
+ const { activeArenaDialog, openArenaDialog, closeArenaDialog } = useArenaCommand();
715
+ // Session name state (set via /rename, restored on /resume)
716
+ const [sessionName, setSessionName] = useState(null);
717
+ const { isResumeDialogOpen, resumeMatchedSessions, openResumeDialog, closeResumeDialog, handleResume, } = useResumeCommand({
718
+ config,
719
+ historyManager,
720
+ startNewSession,
721
+ setSessionName,
722
+ remount: refreshStatic,
723
+ });
724
+ const { handleBranch } = useBranchCommand({
725
+ config,
726
+ historyManager,
727
+ startNewSession,
728
+ setSessionName,
729
+ remount: refreshStatic,
730
+ });
731
+ const { isDeleteDialogOpen, openDeleteDialog, closeDeleteDialog, handleDelete, handleDeleteMany, } = useDeleteCommand({
732
+ config,
733
+ addItem: historyManager.addItem,
734
+ });
735
+ const [isHelpDialogOpen, setHelpDialogOpen] = useState(false);
736
+ const [activeHelpTab, setHelpTab] = useState('general');
737
+ const openHelpDialog = useCallback(() => setHelpDialogOpen(true), []);
738
+ const closeHelpDialog = useCallback(() => setHelpDialogOpen(false), []);
739
+ const { vimEnabled, vimMode } = useVimModeState();
740
+ const { toggleVimEnabled } = useVimModeActions();
741
+ const { isSubagentCreateDialogOpen, openSubagentCreateDialog, closeSubagentCreateDialog, } = useSubagentCreateDialog();
742
+ const { isAgentsManagerDialogOpen, openAgentsManagerDialog, closeAgentsManagerDialog, } = useAgentsManagerDialog();
743
+ const { isSkillsManagerDialogOpen, openSkillsManagerDialog, closeSkillsManagerDialog, } = useSkillsManagerDialog();
744
+ const { isExtensionsManagerDialogOpen, openExtensionsManagerDialog, closeExtensionsManagerDialog, } = useExtensionsManagerDialog();
745
+ const { isMcpDialogOpen, openMcpDialog, closeMcpDialog } = useMcpDialog();
746
+ const { isHooksDialogOpen, openHooksDialog, closeHooksDialog } = useHooksDialog();
747
+ const { isStatsDialogOpen, openStatsDialog, closeStatsDialog } = useStatsDialog();
748
+ // Ref bridge: the guarded openRewindSelector callback is defined later
749
+ // (after useDoublePress), but slashCommandActions needs it now. The ref
750
+ // lets the useMemo capture a stable function pointer whose implementation
751
+ // is swapped in once the real callback exists.
752
+ const openRewindSelectorRef = useRef(() => { });
753
+ // /diff opens a per-turn diff dialog. Unlike rewind, no double-press or
754
+ // history-bound guard is needed, so the open/close handlers can live here
755
+ // (no ref bridge required).
756
+ const [isDiffDialogOpen, setIsDiffDialogOpen] = useState(false);
757
+ const openDiffDialog = useCallback(() => {
758
+ setIsDiffDialogOpen(true);
759
+ }, []);
760
+ const closeDiffDialog = useCallback(() => {
761
+ setIsDiffDialogOpen(false);
762
+ }, []);
763
+ const slashCommandActions = useMemo(() => ({
764
+ openAuthDialog,
765
+ openThemeDialog,
766
+ openEditorDialog,
767
+ openMemoryDialog,
768
+ openSettingsDialog,
769
+ openStatusLineDialog,
770
+ openModelDialog,
771
+ openTrustDialog,
772
+ openArenaDialog,
773
+ openPermissionsDialog,
774
+ openApprovalModeDialog,
775
+ quit: (messages) => {
776
+ setQuittingMessages(messages);
777
+ setTimeout(async () => {
778
+ await runExitCleanup();
779
+ process.exit(0);
780
+ }, 100);
781
+ },
782
+ setDebugMessage,
783
+ dispatchExtensionStateUpdate,
784
+ addConfirmUpdateExtensionRequest,
785
+ openSubagentCreateDialog,
786
+ openAgentsManagerDialog,
787
+ openSkillsManagerDialog,
788
+ openExtensionsManagerDialog,
789
+ openMcpDialog,
790
+ openHooksDialog,
791
+ openStatsDialog,
792
+ openResumeDialog,
793
+ openRewindSelector: () => openRewindSelectorRef.current(),
794
+ openDiffDialog,
795
+ handleResume,
796
+ handleBranch,
797
+ openDeleteDialog,
798
+ openHelpDialog,
799
+ }), [
800
+ openAuthDialog,
801
+ openThemeDialog,
802
+ openEditorDialog,
803
+ openMemoryDialog,
804
+ openSettingsDialog,
805
+ openStatusLineDialog,
806
+ openModelDialog,
807
+ openArenaDialog,
808
+ setDebugMessage,
809
+ dispatchExtensionStateUpdate,
810
+ openTrustDialog,
811
+ openPermissionsDialog,
812
+ openApprovalModeDialog,
813
+ addConfirmUpdateExtensionRequest,
814
+ openSubagentCreateDialog,
815
+ openAgentsManagerDialog,
816
+ openSkillsManagerDialog,
817
+ openExtensionsManagerDialog,
818
+ openMcpDialog,
819
+ openHooksDialog,
820
+ openStatsDialog,
821
+ openResumeDialog,
822
+ handleResume,
823
+ handleBranch,
824
+ openDeleteDialog,
825
+ openHelpDialog,
826
+ openDiffDialog,
827
+ ]);
828
+ const { handleSlashCommand, slashCommands, recentSlashCommands, pendingHistoryItems: pendingSlashCommandHistoryItems, btwItem, setBtwItem, cancelBtw, commandContext, shellConfirmationRequest, confirmationRequest, reloadCommands, } = useSlashCommandProcessor(config, settings, historyManager.addItem, historyManager.clearItems, historyManager.loadHistory, remountStaticHistory, toggleVimEnabled, isProcessing, setIsProcessing, isIdleRef, setGeminiMdFileCount, slashCommandActions, extensionsUpdateStateInternal, isConfigInitialized, logger, historyManager.updateItem, setSessionName);
829
+ // onDebugMessage should log to debug logfile, not update footer debugMessage
830
+ const onDebugMessage = useCallback((message) => {
831
+ config.getDebugLogger().debug(message);
832
+ }, [config]);
833
+ const handleWorktreeExit = useCallback(async (choice) => {
834
+ if (choice === 'cancel') {
835
+ setShowWorktreeExitDialog(false);
836
+ return;
837
+ }
838
+ setShowWorktreeExitDialog(false);
839
+ if (choice === 'remove' && activeWorktree) {
840
+ try {
841
+ // Anchor at the repo top-level (captured at enter time) rather
842
+ // than the current targetDir — when the CLI was launched from
843
+ // a monorepo subdirectory, `config.getTargetDir()` is that
844
+ // subdir but the worktree lives at `<repoRoot>/.qwen/worktrees/`,
845
+ // so a service rooted at the subdir would never find it. (PR
846
+ // #4174 review finding 3252368637.)
847
+ const svc = new GitWorktreeService(activeWorktree.originalCwd);
848
+ // Ownership guard — read the in-worktree session marker and
849
+ // refuse to remove a worktree owned by a different session
850
+ // (stale sidecar, copied state from another machine, etc.).
851
+ // Mirrors the guard ExitWorktreeTool applies on the model
852
+ // path; without it the dialog could destroy a worktree it
853
+ // doesn't own. (PR #4174 review #3259975247.)
854
+ const owner = await readWorktreeSessionMarker(activeWorktree.path);
855
+ const currentSessionId = config.getSessionId();
856
+ if (owner !== null && owner !== currentSessionId) {
857
+ historyManager.addItem({
858
+ type: MessageType.ERROR,
859
+ text: `Refusing to remove worktree "${activeWorktree.slug}" — ` +
860
+ `it was created by a different session (owner=${owner}). ` +
861
+ `Resume the owning session to drop it, or remove it ` +
862
+ `manually with \`git worktree remove ${activeWorktree.path}\`.`,
863
+ }, Date.now());
864
+ return;
865
+ }
866
+ // The user just clicked Remove on a dialog that already showed
867
+ // the dirty-state and unmerged-commit counts ("discards N
868
+ // commits, M files"). Force-delete the branch to honour that
869
+ // intent — without it, `git branch -d` refuses unmerged
870
+ // commits and the branch is silently preserved, contradicting
871
+ // the dialog text. (Finding 3252368640 part 2.)
872
+ const result = await svc.removeUserWorktree(activeWorktree.slug, {
873
+ deleteBranch: true,
874
+ forceDeleteBranch: true,
875
+ });
876
+ // removeUserWorktree returns {success, error} on failure — it
877
+ // does NOT throw — so the previous try/catch never tripped on
878
+ // a soft failure. If removal failed, leave the sidecar intact
879
+ // so the next --resume can still see the worktree. Surface
880
+ // the error in history and stay in the session so the user
881
+ // can decide what to do (retry via exit_worktree, fix the
882
+ // underlying problem, or force-quit). Previously the dialog
883
+ // silently /quit on failure, contradicting the "discards N
884
+ // commits, M files" intent the user clicked Remove on.
885
+ // (Findings 3252368640 part 1 + 3256237933.)
886
+ if (!result.success) {
887
+ historyManager.addItem({
888
+ type: MessageType.ERROR,
889
+ text: `Failed to remove worktree "${activeWorktree.slug}": ` +
890
+ `${result.error ?? 'unknown error'}. The worktree is ` +
891
+ `still on disk; use \`exit_worktree\` to retry or ` +
892
+ `remove it manually with \`git worktree remove\`.`,
893
+ }, Date.now());
894
+ return;
895
+ }
896
+ await clearWorktreeSession(config
897
+ .getSessionService()
898
+ .getWorktreeSessionPath(config.getSessionId()));
899
+ }
900
+ catch (error) {
901
+ // Hard failure (e.g. git binary missing, GitWorktreeService
902
+ // constructor threw). Same treatment as the soft failure
903
+ // path: surface to the user and stay alive — silent /quit
904
+ // here would leave the user wondering whether the worktree
905
+ // was actually removed.
906
+ historyManager.addItem({
907
+ type: MessageType.ERROR,
908
+ text: `Worktree removal failed for "${activeWorktree.slug}": ` +
909
+ `${error instanceof Error ? error.message : String(error)}. ` +
910
+ `Use \`exit_worktree\` or remove it manually.`,
911
+ }, Date.now());
912
+ return;
913
+ }
914
+ }
915
+ handleSlashCommand('/quit');
916
+ }, [activeWorktree, config, handleSlashCommand, historyManager]);
917
+ const performMemoryRefresh = useCallback(async () => {
918
+ historyManager.addItem({
919
+ type: MessageType.INFO,
920
+ text: 'Refreshing hierarchical memory (QWEN.md or other context files)...',
921
+ }, Date.now());
922
+ try {
923
+ const { memoryContent, fileCount, conditionalRules, projectRoot } = await loadHierarchicalGeminiMemory(process.cwd(), settings.merged.context?.loadFromIncludeDirectories
924
+ ? config.getWorkspaceContext().getDirectories()
925
+ : [], config.getFileService(), config.getExtensionContextFilePaths(), config.isTrustedFolder(), settings.merged.context?.importFormat || 'tree', // Use setting or default to 'tree'
926
+ config.getContextRuleExcludes(), {
927
+ loadReason: 'refresh',
928
+ onInstructionsLoaded: createInstructionsLoadedCallback(() => config.getHookSystem()),
929
+ });
930
+ config.setUserMemory(memoryContent);
931
+ config.setGeminiMdFileCount(fileCount);
932
+ config.setConditionalRulesRegistry(new ConditionalRulesRegistry(conditionalRules, projectRoot));
933
+ setGeminiMdFileCount(fileCount);
934
+ historyManager.addItem({
935
+ type: MessageType.INFO,
936
+ text: `Memory refreshed successfully. ${memoryContent.length > 0
937
+ ? `Loaded ${memoryContent.length} characters from ${fileCount} file(s).`
938
+ : 'No memory content found.'}`,
939
+ }, Date.now());
940
+ debugLogger.debug(`[DEBUG] Refreshed memory content in config: ${memoryContent.substring(0, 200)}...`);
941
+ }
942
+ catch (error) {
943
+ const errorMessage = getErrorMessage(error);
944
+ historyManager.addItem({
945
+ type: MessageType.ERROR,
946
+ text: `Error refreshing memory: ${errorMessage}`,
947
+ }, Date.now());
948
+ debugLogger.error('Error refreshing memory:', error);
949
+ }
950
+ }, [config, historyManager, settings.merged]);
951
+ const cancelHandlerRef = useRef(() => { });
952
+ const midTurnDrainRef = useRef(null);
953
+ const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, retryLastPrompt, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, pendingToolCalls, streamingResponseLengthRef, isReceivingContent, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, onDebugMessage, handleSlashCommand, shellModeActive, () => settings.merged.general?.preferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, refreshStatic, (info) => cancelHandlerRef.current(info), setEmbeddedShellFocused, terminalWidth, terminalHeight, midTurnDrainRef, logger);
954
+ // Now that streamingState is available, keep isIdleRef in sync and
955
+ // flush any deferred update notifications when the model finishes responding.
956
+ isIdleRef.current = streamingState === StreamingState.Idle;
957
+ useEffect(() => {
958
+ if (streamingState === StreamingState.Idle) {
959
+ updateHandlerRef.current?.flush();
960
+ }
961
+ }, [streamingState]);
962
+ // Contextual tips — show tips based on context usage after model responses
963
+ // Defer TipHistory loading when tips are disabled to avoid side effects
964
+ // (sessionCount increment + disk write) when the user has opted out.
965
+ const tipsDisabled = !!(settings.merged.ui?.hideTips || config.getScreenReader());
966
+ const tipHistory = useMemo(() => (tipsDisabled ? null : getTipHistory()), [tipsDisabled]);
967
+ useContextualTips({
968
+ streamingState,
969
+ lastPromptTokenCount: sessionStats.lastPromptTokenCount,
970
+ sessionPromptCount: sessionStats.promptCount,
971
+ config,
972
+ tipHistory,
973
+ addItem: historyManager.addItem,
974
+ hideTips: tipsDisabled,
975
+ });
976
+ // Track whether the input area has any Tab consumer (autocomplete dropdown,
977
+ // followup suggestion, mid-input ghost text, reverse/command search). When
978
+ // true, we suppress the Windows-only "bare Tab cycles approval mode"
979
+ // fallback so a single Tab keystroke triggers only one action. See #4171.
980
+ const [hasTabConsumer, setHasTabConsumer] = useState(false);
981
+ const agentViewState = useAgentViewState();
982
+ const { dialogOpen: bgTasksDialogOpen } = useBackgroundTaskViewState();
983
+ const { closeDialog: closeBgTasksDialog } = useBackgroundTaskViewActions();
984
+ // Prompt suggestion state
985
+ const [promptSuggestion, setPromptSuggestion] = useState(null);
986
+ const prevStreamingStateRef = useRef(StreamingState.Idle);
987
+ const speculationRef = useRef(IDLE_SPECULATION);
988
+ const suggestionAbortRef = useRef(null);
989
+ // Dismiss callback — clears suggestion + aborts in-flight generation/speculation
990
+ const dismissPromptSuggestion = useCallback(() => {
991
+ setPromptSuggestion(null);
992
+ suggestionAbortRef.current?.abort();
993
+ suggestionAbortRef.current = null;
994
+ }, []);
995
+ // Auto-accept indicator — disabled on agent tabs (agents handle their own)
996
+ const geminiClient = config.getGeminiClient();
997
+ const showAutoAcceptIndicator = useAutoAcceptIndicator({
998
+ config,
999
+ settings,
1000
+ addItem: historyManager.addItem,
1001
+ onApprovalModeChange: handleApprovalModeChange,
1002
+ shouldBlockTab: () => hasTabConsumer,
1003
+ disabled: agentViewState.activeView !== 'main',
1004
+ });
1005
+ const { messageQueue, addMessage, popAllMessages, drainQueue, popNextSegment, } = useMessageQueue();
1006
+ // Bridge message queue to mid-turn drain via ref.
1007
+ // drainQueue reads the synchronous queueRef inside the hook, so it
1008
+ // stays consistent with popNextSegment even before React re-renders.
1009
+ midTurnDrainRef.current = drainQueue;
1010
+ // Connect remote input watcher to submitQuery for bidirectional sync.
1011
+ // When an external process writes a command to the input-file,
1012
+ // the watcher calls submitQuery as if the user typed it in the TUI.
1013
+ const remoteInput = useRemoteInput();
1014
+ useEffect(() => {
1015
+ if (!remoteInput)
1016
+ return;
1017
+ remoteInput.setSubmitFn((text) => submitQuery(text));
1018
+ }, [remoteInput, submitQuery]);
1019
+ // Notify remote input watcher when TUI becomes idle so it can
1020
+ // retry queued commands that were deferred while TUI was busy.
1021
+ useEffect(() => {
1022
+ if (!remoteInput)
1023
+ return;
1024
+ if (streamingState === StreamingState.Idle) {
1025
+ remoteInput.notifyIdle();
1026
+ }
1027
+ }, [remoteInput, streamingState]);
1028
+ // Dual-output tool-confirmation bridge.
1029
+ //
1030
+ // When a tool call enters awaiting_approval we emit a `control_request`
1031
+ // (subtype: can_use_tool) on the dual-output channel so an external
1032
+ // consumer can decide. Whichever side resolves first (TUI native UI or
1033
+ // `confirmation_response` written to --input-file) wins; we always emit
1034
+ // a `control_response` mirroring the final decision so observers stay in
1035
+ // sync.
1036
+ const dualOutput = useDualOutput();
1037
+ const confirmRequestMap = useRef(new Map()); // requestId → callId
1038
+ const confirmCallIdMap = useRef(new Map()); // callId → requestId
1039
+ const confirmEmitted = useRef(new Set());
1040
+ useEffect(() => {
1041
+ if (!dualOutput || !dualOutput.isConnected)
1042
+ return;
1043
+ for (const tc of pendingToolCalls) {
1044
+ if (tc.status === 'awaiting_approval' &&
1045
+ !confirmEmitted.current.has(tc.request.callId)) {
1046
+ const requestId = crypto.randomUUID();
1047
+ confirmRequestMap.current.set(requestId, tc.request.callId);
1048
+ confirmCallIdMap.current.set(tc.request.callId, requestId);
1049
+ confirmEmitted.current.add(tc.request.callId);
1050
+ dualOutput.emitPermissionRequest(requestId, tc.request.name, tc.request.callId, tc.request.args);
1051
+ }
1052
+ }
1053
+ // Detect tools that left awaiting_approval (TUI-native resolution) so we
1054
+ // can emit a matching control_response back to external consumers.
1055
+ for (const [callId, requestId] of confirmCallIdMap.current) {
1056
+ const tc = pendingToolCalls.find((t) => t.request.callId === callId);
1057
+ if (tc &&
1058
+ tc.status !== 'awaiting_approval' &&
1059
+ confirmEmitted.current.has(callId)) {
1060
+ const allowed = tc.status !== 'cancelled' && tc.status !== 'error';
1061
+ dualOutput.emitControlResponse(requestId, allowed);
1062
+ confirmRequestMap.current.delete(requestId);
1063
+ confirmCallIdMap.current.delete(callId);
1064
+ confirmEmitted.current.delete(callId);
1065
+ }
1066
+ }
1067
+ }, [dualOutput, pendingToolCalls]);
1068
+ // Keep latest state in refs so the confirmation handler (registered once)
1069
+ // always reads current values without needing re-registration.
1070
+ const pendingToolCallsRef = useRef(pendingToolCalls);
1071
+ pendingToolCallsRef.current = pendingToolCalls;
1072
+ const dualOutputRef = useRef(dualOutput);
1073
+ dualOutputRef.current = dualOutput;
1074
+ // Route confirmation_response commands written to --input-file back into
1075
+ // the tool's onConfirm handler. Registered once (deps: [remoteInput]) to
1076
+ // avoid teardown/re-registration churn on every pendingToolCalls change.
1077
+ useEffect(() => {
1078
+ if (!remoteInput)
1079
+ return;
1080
+ remoteInput.setConfirmationHandler((requestId, allowed) => {
1081
+ const callId = confirmRequestMap.current.get(requestId);
1082
+ if (!callId) {
1083
+ dualOutputRef.current?.emitControlError(requestId, 'unknown request_id (already resolved, cancelled, or never issued)');
1084
+ return;
1085
+ }
1086
+ const tc = pendingToolCallsRef.current.find((t) => t.request.callId === callId && t.status === 'awaiting_approval');
1087
+ if (!tc) {
1088
+ dualOutputRef.current?.emitControlError(requestId, 'tool call is no longer awaiting approval');
1089
+ return;
1090
+ }
1091
+ const waitingTc = tc;
1092
+ if (!waitingTc.confirmationDetails?.onConfirm) {
1093
+ dualOutputRef.current?.emitControlError(requestId, 'tool call has no onConfirm handler');
1094
+ return;
1095
+ }
1096
+ void waitingTc.confirmationDetails.onConfirm(allowed
1097
+ ? ToolConfirmationOutcome.ProceedOnce
1098
+ : ToolConfirmationOutcome.Cancel);
1099
+ // Do NOT clean up maps here — let the mirror useEffect (line ~870)
1100
+ // detect the state transition and emit control_response + clean up,
1101
+ // keeping the emission path symmetric for both TUI-native and
1102
+ // external-initiated resolutions.
1103
+ });
1104
+ return () => {
1105
+ remoteInput.setConfirmationHandler(() => { });
1106
+ };
1107
+ }, [remoteInput]);
1108
+ // Callback for handling final submit (must be after addMessage from useMessageQueue)
1109
+ const handleFinalSubmit = useCallback((submittedValue) => {
1110
+ // Route to active in-process agent if viewing a sub-agent tab.
1111
+ if (agentViewState.activeView !== 'main') {
1112
+ const agent = agentViewState.agents.get(agentViewState.activeView);
1113
+ if (agent) {
1114
+ agent.interactiveAgent.enqueueMessage(submittedValue.trim());
1115
+ return;
1116
+ }
1117
+ }
1118
+ // Phase C: one-shot worktree restore reminder. Set during --resume
1119
+ // when the persisted sidecar names a live worktree. We only inject
1120
+ // on top-level user prompts (not btw-during-response, not slash
1121
+ // commands — those go through different paths). Once consumed,
1122
+ // clear the ref so subsequent prompts aren't repeatedly prefixed.
1123
+ const worktreeNotice = pendingWorktreeNoticeRef.current;
1124
+ if (worktreeNotice && !isSlashCommand(submittedValue)) {
1125
+ pendingWorktreeNoticeRef.current = null;
1126
+ submittedValue =
1127
+ `<system-reminder>\n${worktreeNotice}\n</system-reminder>\n\n` +
1128
+ submittedValue;
1129
+ }
1130
+ if (streamingState === StreamingState.Responding &&
1131
+ isBtwCommand(submittedValue)) {
1132
+ void submitQuery(submittedValue);
1133
+ return;
1134
+ }
1135
+ // Handle bare exit/quit commands (without the / prefix)
1136
+ if (['exit', 'quit', ':q', ':q!', ':wq', ':wq!'].includes(submittedValue.trim())) {
1137
+ void handleSlashCommand('/quit');
1138
+ return;
1139
+ }
1140
+ // Check if speculation has results for this submission
1141
+ const spec = speculationRef.current;
1142
+ if (spec.status !== 'idle' &&
1143
+ spec.suggestion === submittedValue &&
1144
+ spec.status === 'completed') {
1145
+ // Accept completed speculation: inject messages and apply files
1146
+ acceptSpeculation(spec, geminiClient)
1147
+ .then((result) => {
1148
+ logSpeculation(config, new SpeculationEvent({
1149
+ outcome: 'accepted',
1150
+ turns_used: spec.messages.filter((m) => m.role === 'model')
1151
+ .length,
1152
+ files_written: result.filesApplied.length,
1153
+ tool_use_count: spec.toolUseCount,
1154
+ duration_ms: Date.now() - spec.startTime,
1155
+ boundary_type: spec.boundary?.type,
1156
+ had_pipelined_suggestion: !!result.nextSuggestion,
1157
+ }));
1158
+ // Speculation completed fully (no boundary) — render results in UI
1159
+ {
1160
+ const now = Date.now();
1161
+ // Render each speculated message as the appropriate HistoryItem
1162
+ for (let mi = 0; mi < result.messages.length; mi++) {
1163
+ const msg = result.messages[mi];
1164
+ if (msg.role === 'user' && msg.parts) {
1165
+ // Check if this is a tool result (functionResponse) or user text
1166
+ const hasText = msg.parts.some((p) => p.text && !p.functionResponse);
1167
+ if (hasText) {
1168
+ const text = msg.parts
1169
+ .map((p) => p.text ?? '')
1170
+ .filter(Boolean)
1171
+ .join('');
1172
+ if (text) {
1173
+ historyManager.addItem({ type: 'user', text }, now);
1174
+ }
1175
+ }
1176
+ // functionResponse parts are rendered as part of the tool_group below
1177
+ }
1178
+ else if (msg.role === 'model' && msg.parts) {
1179
+ // Extract text and tool calls separately
1180
+ const textParts = msg.parts
1181
+ .filter((p) => p.text && !p.functionCall)
1182
+ .map((p) => p.text)
1183
+ .join('');
1184
+ const toolCalls = msg.parts.filter((p) => p.functionCall);
1185
+ if (textParts) {
1186
+ historyManager.addItem({ type: 'gemini', text: textParts }, now);
1187
+ }
1188
+ if (toolCalls.length > 0) {
1189
+ // Find matching tool results from the next message
1190
+ const nextMsg = result.messages[mi + 1];
1191
+ const toolResults = nextMsg?.parts?.filter((p) => p.functionResponse) ?? [];
1192
+ const tools = toolCalls.map((tc, i) => {
1193
+ const name = tc.functionCall?.name ?? 'unknown';
1194
+ const args = tc.functionCall?.args ?? {};
1195
+ const resp = toolResults[i]?.functionResponse?.response;
1196
+ const resultText = typeof resp === 'object' && resp
1197
+ ? (resp['output'] ??
1198
+ JSON.stringify(resp))
1199
+ : String(resp ?? '');
1200
+ return {
1201
+ callId: `spec-${name}-${i}`,
1202
+ name,
1203
+ description: Object.entries(args)
1204
+ .map(([k, v]) => `${k}: ${String(v).slice(0, 80)}`)
1205
+ .join(', ') || name,
1206
+ resultDisplay: String(resultText).slice(0, 500),
1207
+ status: ToolCallStatus.Success,
1208
+ confirmationDetails: undefined,
1209
+ };
1210
+ });
1211
+ const toolGroupItem = {
1212
+ type: 'tool_group',
1213
+ tools,
1214
+ };
1215
+ historyManager.addItem(toolGroupItem, now);
1216
+ }
1217
+ }
1218
+ }
1219
+ }
1220
+ if (result.nextSuggestion) {
1221
+ setPromptSuggestion(result.nextSuggestion);
1222
+ }
1223
+ })
1224
+ .catch(() => {
1225
+ // Fallback: submit normally
1226
+ addMessage(submittedValue);
1227
+ });
1228
+ speculationRef.current = IDLE_SPECULATION;
1229
+ return;
1230
+ }
1231
+ // Abort any running speculation since we're submitting something different
1232
+ if (spec.status === 'running') {
1233
+ abortSpeculation(spec).catch(() => { });
1234
+ speculationRef.current = IDLE_SPECULATION;
1235
+ }
1236
+ if (streamingState === StreamingState.Idle &&
1237
+ isSlashCommand(submittedValue)) {
1238
+ void submitQuery(submittedValue);
1239
+ return;
1240
+ }
1241
+ addMessage(submittedValue);
1242
+ }, [
1243
+ addMessage,
1244
+ agentViewState,
1245
+ streamingState,
1246
+ submitQuery,
1247
+ handleSlashCommand,
1248
+ config,
1249
+ geminiClient,
1250
+ historyManager,
1251
+ ]);
1252
+ const handleArenaModelsSelected = useCallback((models) => {
1253
+ const value = models.join(',');
1254
+ buffer.setText(`/arena start --models ${value} `);
1255
+ closeArenaDialog();
1256
+ }, [buffer, closeArenaDialog]);
1257
+ // Welcome back functionality (must be after handleFinalSubmit)
1258
+ const { welcomeBackInfo, showWelcomeBackDialog, welcomeBackChoice, handleWelcomeBackSelection, handleWelcomeBackClose, } = useWelcomeBack(config, handleFinalSubmit, buffer, settings.merged);
1259
+ const pendingHistoryItems = useMemo(() => [...pendingSlashCommandHistoryItems, ...pendingGeminiHistoryItems], [pendingSlashCommandHistoryItems, pendingGeminiHistoryItems]);
1260
+ const rawStickyTodos = useMemo(() => getStickyTodos(historyManager.history, pendingHistoryItems), [historyManager.history, pendingHistoryItems]);
1261
+ const stickyTodos = useStableStickyTodos(rawStickyTodos);
1262
+ // Terminal tab progress bar (OSC 9;4) for iTerm2/Ghostty
1263
+ useTerminalProgress(streamingState, isToolExecuting(pendingHistoryItems));
1264
+ cancelHandlerRef.current = useCallback((info) => {
1265
+ // Combine the React-state pending items (slash command, retry countdown,
1266
+ // tool group, etc.) with the synchronous snapshot of the Gemini pending
1267
+ // item from `useGeminiStream`. The snapshot closes the race where a
1268
+ // stream chunk just set `pendingHistoryItem` but the consumer's React
1269
+ // state still reads as empty — without it, auto-restore could wrongly
1270
+ // truncate just-committed meaningful content.
1271
+ const pendingHistoryItems = [
1272
+ ...pendingSlashCommandHistoryItems,
1273
+ ...pendingGeminiHistoryItems,
1274
+ ];
1275
+ if (info?.pendingItem) {
1276
+ pendingHistoryItems.push(info.pendingItem);
1277
+ }
1278
+ const draftWasEmpty = buffer.text.length === 0;
1279
+ // Always drain the queue back into the buffer (claude-code parity:
1280
+ // popAllEditable preserves queued text on every cancel path, including
1281
+ // tool-execution cancels — never silently drop the user's queued work).
1282
+ const popped = popAllMessages();
1283
+ if (popped) {
1284
+ const currentText = buffer.text;
1285
+ buffer.setText(currentText ? `${popped}\n${currentText}` : popped);
1286
+ }
1287
+ // Auto-restore-on-cancel: if the user hit ESC immediately after submit
1288
+ // (nothing meaningful was produced), pull the just-submitted prompt back
1289
+ // into the input box and rewind the transcript so it doesn't show a
1290
+ // stranded "user prompt + Request cancelled." pair. Mirrors claude-code
1291
+ // (REPL.tsx auto-restore branch).
1292
+ //
1293
+ // Guards (all required):
1294
+ // - Buffer was empty before the queue drain (don't clobber typed-during-
1295
+ // loading text).
1296
+ // - Queue was empty (popped === null): if the user queued more input,
1297
+ // they've moved on — don't undo their previous prompt.
1298
+ // - No pending stream item carries meaningful content. `tool_group` is
1299
+ // non-synthetic regardless of status (executing/canceled/done), so
1300
+ // this also covers the tool-execution cancel case.
1301
+ // - Items committed AFTER the last user prompt are all synthetic
1302
+ // (info/error/warning/cancel notice).
1303
+ //
1304
+ // truncateToItem is functional setState — it observes the latest queued
1305
+ // history, including any INFO/pending item just appended by
1306
+ // cancelOngoingRequest, and slices them all off together with the user
1307
+ // item. No flicker because React batches with the same render pass.
1308
+ // Each bail-out below is silent in production; toggle DEBUG=1 to
1309
+ // diagnose "ESC pressed but my prompt didn't return to the input box"
1310
+ // by reading which guard fired.
1311
+ if (!draftWasEmpty) {
1312
+ debugLogger.debug('auto-restore bail: buffer was non-empty');
1313
+ return;
1314
+ }
1315
+ if (popped !== null) {
1316
+ debugLogger.debug('auto-restore bail: queue had items (drained to buffer)');
1317
+ return;
1318
+ }
1319
+ if (pendingHistoryItems.some((item) => !isSyntheticHistoryItem(item))) {
1320
+ debugLogger.debug('auto-restore bail: pending stream item has meaningful content');
1321
+ return;
1322
+ }
1323
+ // Synchronous "did the turn produce any content event" flag from
1324
+ // useGeminiStream. Catches the race where the pre-cancel flush
1325
+ // committed gemini_content via addItem and a later thought event
1326
+ // overwrote pendingHistoryItem with a synthetic value — the
1327
+ // committed text isn't in historyRef.current yet (React hasn't
1328
+ // re-rendered), so the trailing-only-synthetic check below would
1329
+ // otherwise pass and we'd wrongly truncate the committed content.
1330
+ if (info?.turnProducedMeaningfulContent) {
1331
+ debugLogger.debug('auto-restore bail: turn produced meaningful content during stream/flush');
1332
+ return;
1333
+ }
1334
+ // The cancelled turn must have added a `user` history item itself —
1335
+ // Cron / Notification / slash submit_prompt / Retry paths submit
1336
+ // without pushing a user item, so an older user item that happens
1337
+ // to be followed only by synthetic content must NOT be wrongly
1338
+ // auto-restored on top of those turns.
1339
+ const cancelledTurnUserItem = info?.lastTurnUserItem;
1340
+ if (cancelledTurnUserItem == null) {
1341
+ debugLogger.debug('auto-restore bail: cancelled turn did not add a user history item');
1342
+ return;
1343
+ }
1344
+ const history = historyRef.current;
1345
+ const lastUserIdx = findLastUserItemIndex(history);
1346
+ if (lastUserIdx === -1) {
1347
+ debugLogger.debug('auto-restore bail: no user item in history');
1348
+ return;
1349
+ }
1350
+ if (!itemsAfterAreOnlySynthetic(history, lastUserIdx)) {
1351
+ debugLogger.debug('auto-restore bail: meaningful content committed after last user item');
1352
+ return;
1353
+ }
1354
+ const lastUserItem = history[lastUserIdx];
1355
+ if (lastUserItem.type !== 'user') {
1356
+ debugLogger.debug('auto-restore bail: lastUserItem type narrowing failed (unexpected)');
1357
+ return;
1358
+ }
1359
+ // Identity match: the user item we're rewinding has to be the one
1360
+ // this turn added. Use ID (not just text) so a consecutive-
1361
+ // duplicate user submit — where `addItem` skipped insertion but
1362
+ // still returned a fresh id — doesn't make this guard wrongly
1363
+ // match an older identical-text USER row. Text is checked too as
1364
+ // a cheap sanity belt.
1365
+ if (lastUserItem.id !== cancelledTurnUserItem.id ||
1366
+ lastUserItem.text !== cancelledTurnUserItem.text) {
1367
+ debugLogger.debug('auto-restore bail: lastUserItem identity does not match cancelled-turn user item');
1368
+ return;
1369
+ }
1370
+ debugLogger.debug('auto-restore: rewinding cancelled turn and restoring prompt');
1371
+ historyManager.truncateToItem(lastUserItem.id);
1372
+ // Repaint the terminal so the cancelled `> prompt` and trailing
1373
+ // INFO disappear from the static-rendered transcript. Ink's
1374
+ // `<Static>` region is append-only — once a line has been printed,
1375
+ // shrinking the underlying array doesn't unprint it. `refreshStatic`
1376
+ // writes the ANSI clear-terminal escape AND bumps the static
1377
+ // remount key so the next render reprints only the truncated
1378
+ // history. Matches what `/clear` and `handleClearScreen` do for
1379
+ // the same reason. Skipping this leaves the user seeing the
1380
+ // cancelled prompt twice — once in scrollback and once pre-filled
1381
+ // in the input buffer.
1382
+ refreshStatic();
1383
+ buffer.setText(lastUserItem.text);
1384
+ // Third cleanup leg: the in-memory chat history. `GeminiChat`
1385
+ // appends the user content before the stream generator runs, and
1386
+ // the abort path doesn't pop it. Without this strip, the NEXT
1387
+ // request's wire payload would carry the cancelled prompt as an
1388
+ // orphan user turn alongside the new one — model context would
1389
+ // contradict what the UI told the user was rewound. Mirrors the
1390
+ // existing strip in the Retry submit path
1391
+ // (GeminiClient.sendMessageStream).
1392
+ geminiClient?.stripOrphanedUserEntriesFromHistory?.();
1393
+ // Also undo the cross-session ↑-history disk entry written by
1394
+ // useGeminiStream's `logger.logMessage` — otherwise
1395
+ // getPreviousUserMessages would resurrect the cancelled prompt next
1396
+ // session. Fire-and-forget; the UI restore must not block on disk
1397
+ // I/O. Logger.removeLastUserMessage already swallows internal
1398
+ // errors and returns false, but attach a .catch as defence so a
1399
+ // future code path that throws doesn't surface as an
1400
+ // UnhandledPromiseRejection.
1401
+ void logger?.removeLastUserMessage().catch((err) => {
1402
+ debugLogger.debug('Failed to undo cancelled prompt from log:', err);
1403
+ });
1404
+ }, [
1405
+ buffer,
1406
+ popAllMessages,
1407
+ historyManager,
1408
+ logger,
1409
+ geminiClient,
1410
+ refreshStatic,
1411
+ pendingSlashCommandHistoryItems,
1412
+ pendingGeminiHistoryItems,
1413
+ ]);
1414
+ const handleClearScreen = useCallback(() => {
1415
+ historyManager.clearItems();
1416
+ clearScreen();
1417
+ remountStaticHistory();
1418
+ }, [historyManager, remountStaticHistory]);
1419
+ const { handleInput: vimHandleInput } = useVim(buffer, handleFinalSubmit);
1420
+ /**
1421
+ * Determines if the input prompt should be active and accept user input.
1422
+ * Input is disabled during:
1423
+ * - Initialization errors
1424
+ * - Slash command processing
1425
+ * - Tool confirmations (WaitingForConfirmation state)
1426
+ * - Any future streaming states not explicitly allowed
1427
+ */
1428
+ const isInputActive = !initError &&
1429
+ !isProcessing &&
1430
+ (streamingState === StreamingState.Idle ||
1431
+ streamingState === StreamingState.Responding);
1432
+ const isFocused = useFocus();
1433
+ useBracketedPaste();
1434
+ useAwaySummary({
1435
+ enabled: settings.merged.general?.showSessionRecap ?? false,
1436
+ config,
1437
+ isFocused,
1438
+ isIdle: streamingState === StreamingState.Idle,
1439
+ addItem: historyManager.addItem,
1440
+ history: historyManager.history,
1441
+ awayThresholdMinutes: settings.merged.general?.sessionRecapAwayThresholdMinutes,
1442
+ });
1443
+ // Context file names computation
1444
+ const contextFileNames = useMemo(() => {
1445
+ const fromSettings = settings.merged.context?.fileName;
1446
+ return fromSettings
1447
+ ? Array.isArray(fromSettings)
1448
+ ? fromSettings
1449
+ : [fromSettings]
1450
+ : getAllGeminiMdFilenames();
1451
+ }, [settings.merged.context?.fileName]);
1452
+ // Initial prompt handling
1453
+ const initialPrompt = useMemo(() => config.getQuestion(), [config]);
1454
+ const initialPromptSubmitted = useRef(false);
1455
+ useEffect(() => {
1456
+ if (initialPrompt &&
1457
+ isConfigInitialized &&
1458
+ !initialPromptSubmitted.current &&
1459
+ !isAuthenticating &&
1460
+ !isAuthDialogOpen &&
1461
+ !isThemeDialogOpen &&
1462
+ !isEditorDialogOpen &&
1463
+ !showWelcomeBackDialog &&
1464
+ welcomeBackChoice !== 'restart' &&
1465
+ geminiClient?.isInitialized?.()) {
1466
+ handleFinalSubmit(initialPrompt);
1467
+ initialPromptSubmitted.current = true;
1468
+ }
1469
+ }, [
1470
+ initialPrompt,
1471
+ isConfigInitialized,
1472
+ handleFinalSubmit,
1473
+ isAuthenticating,
1474
+ isAuthDialogOpen,
1475
+ isThemeDialogOpen,
1476
+ isEditorDialogOpen,
1477
+ showWelcomeBackDialog,
1478
+ welcomeBackChoice,
1479
+ geminiClient,
1480
+ ]);
1481
+ // Generate prompt suggestions when streaming completes
1482
+ const followupSuggestionsEnabled = settings.merged.ui?.enableFollowupSuggestions === true;
1483
+ useEffect(() => {
1484
+ // Clear suggestion when feature is disabled at runtime
1485
+ if (!followupSuggestionsEnabled) {
1486
+ suggestionAbortRef.current?.abort();
1487
+ setPromptSuggestion(null);
1488
+ if (speculationRef.current.status === 'running') {
1489
+ abortSpeculation(speculationRef.current).catch(() => { });
1490
+ speculationRef.current = IDLE_SPECULATION;
1491
+ }
1492
+ }
1493
+ // Clear suggestion and abort pending generation/speculation when a new turn starts
1494
+ if (prevStreamingStateRef.current === StreamingState.Idle &&
1495
+ streamingState === StreamingState.Responding) {
1496
+ suggestionAbortRef.current?.abort();
1497
+ setPromptSuggestion(null);
1498
+ if (speculationRef.current.status !== 'idle') {
1499
+ abortSpeculation(speculationRef.current).catch(() => { });
1500
+ speculationRef.current = IDLE_SPECULATION;
1501
+ }
1502
+ }
1503
+ // Only trigger when transitioning from Responding to Idle (and enabled)
1504
+ // Skip when dialogs are active, in plan mode, elicitation pending, or last response was error
1505
+ if (followupSuggestionsEnabled &&
1506
+ config.isInteractive() &&
1507
+ !config.getSdkMode() &&
1508
+ prevStreamingStateRef.current === StreamingState.Responding &&
1509
+ streamingState === StreamingState.Idle &&
1510
+ // Check both committed history and pending items for errors
1511
+ // (API errors go to pendingGeminiHistoryItems, not historyManager.history)
1512
+ historyManager.history[historyManager.history.length - 1]?.type !==
1513
+ 'error' &&
1514
+ !pendingGeminiHistoryItems.some((item) => item.type === 'error') &&
1515
+ !shellConfirmationRequest &&
1516
+ !confirmationRequest &&
1517
+ !loopDetectionConfirmationRequest &&
1518
+ !isPermissionsDialogOpen &&
1519
+ settingInputRequests.length === 0 &&
1520
+ config.getApprovalMode() !== ApprovalMode.PLAN) {
1521
+ const ac = new AbortController();
1522
+ suggestionAbortRef.current = ac;
1523
+ // Only clone the tail — full structuredClone of a large resumed session
1524
+ // causes transient heap peaks that trigger OOM (#4624).
1525
+ const conversationHistory = geminiClient.getHistoryTail(40, true);
1526
+ generatePromptSuggestion(config, conversationHistory, ac.signal, {
1527
+ enableCacheSharing: settings.merged.ui?.enableCacheSharing === true,
1528
+ })
1529
+ .then((result) => {
1530
+ if (ac.signal.aborted)
1531
+ return;
1532
+ if (result.suggestion) {
1533
+ setPromptSuggestion(result.suggestion);
1534
+ // Start speculation if enabled (runs in background)
1535
+ if (settings.merged.ui?.enableSpeculation) {
1536
+ startSpeculation(config, result.suggestion, ac.signal)
1537
+ .then((state) => {
1538
+ speculationRef.current = state;
1539
+ })
1540
+ .catch(() => {
1541
+ // Speculation failure is non-blocking
1542
+ });
1543
+ }
1544
+ }
1545
+ else if (result.filterReason) {
1546
+ // Log suppressed suggestion for analytics
1547
+ logPromptSuggestion(config, new PromptSuggestionEvent({
1548
+ outcome: 'suppressed',
1549
+ reason: result.filterReason,
1550
+ }));
1551
+ }
1552
+ })
1553
+ .catch(() => {
1554
+ // Silently degrade — don't disrupt the user experience
1555
+ });
1556
+ }
1557
+ // Only update prev ref when streamingState actually changes, so that
1558
+ // dialog-dependency re-runs don't cause us to miss a Responding→Idle transition.
1559
+ if (prevStreamingStateRef.current !== streamingState) {
1560
+ prevStreamingStateRef.current = streamingState;
1561
+ }
1562
+ return () => {
1563
+ suggestionAbortRef.current?.abort();
1564
+ // Cleanup speculation on unmount (#21)
1565
+ if (speculationRef.current.status !== 'idle') {
1566
+ abortSpeculation(speculationRef.current).catch(() => { });
1567
+ speculationRef.current = IDLE_SPECULATION;
1568
+ }
1569
+ };
1570
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- guards may change independently
1571
+ }, [
1572
+ streamingState,
1573
+ followupSuggestionsEnabled,
1574
+ shellConfirmationRequest,
1575
+ confirmationRequest,
1576
+ loopDetectionConfirmationRequest,
1577
+ isPermissionsDialogOpen,
1578
+ settingInputRequests,
1579
+ ]);
1580
+ // Abort speculation when promptSuggestion is cleared (new turn, feature toggle, or
1581
+ // user-initiated dismiss via typing/paste). InputPrompt calls onPromptSuggestionDismiss
1582
+ // on user input, which clears promptSuggestion, triggering this effect to abort speculation.
1583
+ useEffect(() => {
1584
+ if (!promptSuggestion && speculationRef.current.status !== 'idle') {
1585
+ abortSpeculation(speculationRef.current).catch(() => { });
1586
+ speculationRef.current = IDLE_SPECULATION;
1587
+ }
1588
+ }, [promptSuggestion]);
1589
+ const [idePromptAnswered, setIdePromptAnswered] = useState(false);
1590
+ const [currentIDE, setCurrentIDE] = useState(null);
1591
+ useEffect(() => {
1592
+ const getIde = async () => {
1593
+ const ideClient = await IdeClient.getInstance();
1594
+ const currentIde = ideClient.getCurrentIde();
1595
+ setCurrentIDE(currentIde || null);
1596
+ };
1597
+ getIde();
1598
+ }, []);
1599
+ const shouldShowIdePrompt = Boolean(currentIDE &&
1600
+ !config.getIdeMode() &&
1601
+ !settings.merged.ide?.hasSeenNudge &&
1602
+ !idePromptAnswered);
1603
+ // Command migration nudge
1604
+ const { showMigrationNudge: shouldShowCommandMigrationNudge, tomlFiles: commandMigrationTomlFiles, setShowMigrationNudge: setShowCommandMigrationNudge, } = useCommandMigration(settings, config.storage);
1605
+ const [showToolDescriptions, setShowToolDescriptions] = useState(false);
1606
+ const [compactMode, setCompactMode] = useState(settings.merged.ui?.compactMode ?? true);
1607
+ const [compactInline] = useState(settings.merged.ui?.compactInline ?? false);
1608
+ const configuredRenderMode = settings.merged.ui?.renderMode;
1609
+ const [renderMode, setRenderMode] = useState(configuredRenderMode === 'raw' ? 'raw' : 'render');
1610
+ const renderModeConfigMountedRef = useRef(false);
1611
+ useEffect(() => {
1612
+ if (!renderModeConfigMountedRef.current) {
1613
+ renderModeConfigMountedRef.current = true;
1614
+ return;
1615
+ }
1616
+ setRenderMode(configuredRenderMode === 'raw' ? 'raw' : 'render');
1617
+ }, [configuredRenderMode]);
1618
+ const renderModeMountedRef = useRef(false);
1619
+ useEffect(() => {
1620
+ if (!renderModeMountedRef.current) {
1621
+ renderModeMountedRef.current = true;
1622
+ return;
1623
+ }
1624
+ refreshStatic();
1625
+ }, [renderMode, refreshStatic]);
1626
+ const [ctrlCPressedOnce, setCtrlCPressedOnce] = useState(false);
1627
+ const ctrlCTimerRef = useRef(null);
1628
+ const [ctrlDPressedOnce, setCtrlDPressedOnce] = useState(false);
1629
+ const ctrlDTimerRef = useRef(null);
1630
+ const [escapePressedOnce, setEscapePressedOnce] = useState(false);
1631
+ const escapeTimerRef = useRef(null);
1632
+ const dialogsVisibleRef = useRef(false);
1633
+ const [isRewindSelectorOpen, setIsRewindSelectorOpen] = useState(false);
1634
+ const [rewindEscPending, setRewindEscPending] = useState(false);
1635
+ const [constrainHeight, setConstrainHeight] = useState(true);
1636
+ const [ideContextState, setIdeContextState] = useState();
1637
+ const [showEscapePrompt, setShowEscapePrompt] = useState(false);
1638
+ const [showIdeRestartPrompt, setShowIdeRestartPrompt] = useState(false);
1639
+ const { isFolderTrustDialogOpen, handleFolderTrustSelect, isRestarting } = useFolderTrust(settings, setIsTrustedFolder);
1640
+ const { needsRestart: ideNeedsRestart, restartReason: ideTrustRestartReason, } = useIdeTrustListener();
1641
+ const { isFeedbackDialogOpen, openFeedbackDialog, closeFeedbackDialog, temporaryCloseFeedbackDialog, submitFeedback, } = useFeedbackDialog({
1642
+ config,
1643
+ settings,
1644
+ streamingState,
1645
+ history: historyManager.history,
1646
+ sessionStats,
1647
+ });
1648
+ const dialogsVisible = showWelcomeBackDialog ||
1649
+ shouldShowIdePrompt ||
1650
+ shouldShowCommandMigrationNudge ||
1651
+ isFolderTrustDialogOpen ||
1652
+ !!shellConfirmationRequest ||
1653
+ !!confirmationRequest ||
1654
+ confirmUpdateExtensionRequests.length > 0 ||
1655
+ !!providerUpdateRequest ||
1656
+ settingInputRequests.length > 0 ||
1657
+ pluginChoiceRequests.length > 0 ||
1658
+ !!loopDetectionConfirmationRequest ||
1659
+ isThemeDialogOpen ||
1660
+ isSettingsDialogOpen ||
1661
+ isStatusLineDialogOpen ||
1662
+ isMemoryDialogOpen ||
1663
+ isModelDialogOpen ||
1664
+ isTrustDialogOpen ||
1665
+ activeArenaDialog !== null ||
1666
+ isPermissionsDialogOpen ||
1667
+ isAuthDialogOpen ||
1668
+ isAuthenticating ||
1669
+ isEditorDialogOpen ||
1670
+ showIdeRestartPrompt ||
1671
+ isSubagentCreateDialogOpen ||
1672
+ isAgentsManagerDialogOpen ||
1673
+ isSkillsManagerDialogOpen ||
1674
+ isMcpDialogOpen ||
1675
+ isHooksDialogOpen ||
1676
+ isStatsDialogOpen ||
1677
+ isApprovalModeDialogOpen ||
1678
+ isResumeDialogOpen ||
1679
+ isDeleteDialogOpen ||
1680
+ isHelpDialogOpen ||
1681
+ isExtensionsManagerDialogOpen ||
1682
+ isRewindSelectorOpen ||
1683
+ isDiffDialogOpen ||
1684
+ bgTasksDialogOpen ||
1685
+ showWorktreeExitDialog ||
1686
+ !!(settings.corruptedPath && !settings.corruptionDialogDismissed);
1687
+ dialogsVisibleRef.current = dialogsVisible;
1688
+ const shouldShowStickyTodos = stickyTodos !== null &&
1689
+ !dialogsVisible &&
1690
+ !isFeedbackDialogOpen &&
1691
+ streamingState !== StreamingState.WaitingForConfirmation;
1692
+ const stickyTodoWidth = Math.min(mainAreaWidth, 64);
1693
+ const stickyTodoMaxVisibleItems = getStickyTodoMaxVisibleItems(terminalHeight);
1694
+ const stickyTodosLayoutKey = shouldShowStickyTodos
1695
+ ? getStickyTodosLayoutKey(stickyTodos, stickyTodoWidth, stickyTodoMaxVisibleItems)
1696
+ : 'hidden';
1697
+ const [controlsHeight, setControlsHeight] = useState(0);
1698
+ useLayoutEffect(() => {
1699
+ if (!mainControlsRef.current) {
1700
+ setControlsHeight((previousHeight) => previousHeight === 0 ? previousHeight : 0);
1701
+ return;
1702
+ }
1703
+ const fullFooterMeasurement = measureElement(mainControlsRef.current);
1704
+ setControlsHeight((previousHeight) => previousHeight === fullFooterMeasurement.height
1705
+ ? previousHeight
1706
+ : fullFooterMeasurement.height);
1707
+ }, [
1708
+ buffer,
1709
+ terminalWidth,
1710
+ terminalHeight,
1711
+ btwItem,
1712
+ dialogsVisible,
1713
+ stickyTodosLayoutKey,
1714
+ ]);
1715
+ // agentViewState is declared earlier (before handleFinalSubmit) so it
1716
+ // is available for input routing. Referenced here for layout computation.
1717
+ const tabBarHeight = agentViewState.agents.size > 0 ? 1 : 0;
1718
+ const availableTerminalHeight = Math.max(0, terminalHeight -
1719
+ controlsHeight -
1720
+ staticExtraHeight -
1721
+ MAIN_CONTENT_HEIGHT_RESERVATION -
1722
+ tabBarHeight);
1723
+ config.setShellExecutionConfig({
1724
+ terminalWidth: Math.floor(terminalWidth * SHELL_WIDTH_FRACTION),
1725
+ terminalHeight: Math.max(Math.floor(availableTerminalHeight - SHELL_HEIGHT_PADDING), 1),
1726
+ pager: settings.merged.tools?.shell?.pager,
1727
+ showColor: settings.merged.tools?.shell?.showColor,
1728
+ });
1729
+ useEffect(() => {
1730
+ if (activePtyId) {
1731
+ ShellExecutionService.resizePty(activePtyId, Math.floor(terminalWidth * SHELL_WIDTH_FRACTION), Math.max(Math.floor(availableTerminalHeight - SHELL_HEIGHT_PADDING), 1));
1732
+ }
1733
+ }, [terminalWidth, availableTerminalHeight, activePtyId]);
1734
+ // Repaint static header on terminal resize. Without this, tmux pane
1735
+ // resizes and fullscreen toggles leave the static region rendered at the
1736
+ // old width — header content visibly tears until the next refreshStatic
1737
+ // (e.g. /model). Cheap repaint (cursor-to + erase-down) rather than a
1738
+ // full clearTerminal to avoid the full-screen flash.
1739
+ useEffect(() => {
1740
+ if (previousTerminalWidthRef.current === terminalWidth) {
1741
+ return;
1742
+ }
1743
+ previousTerminalWidthRef.current = terminalWidth;
1744
+ repaintStaticViewport();
1745
+ }, [terminalWidth, repaintStaticViewport]);
1746
+ useEffect(() => {
1747
+ if (ideNeedsRestart) {
1748
+ // IDE trust changed, force a restart.
1749
+ setShowIdeRestartPrompt(true);
1750
+ }
1751
+ }, [ideNeedsRestart]);
1752
+ useEffect(() => {
1753
+ const unsubscribe = ideContextStore.subscribe(setIdeContextState);
1754
+ setIdeContextState(ideContextStore.get());
1755
+ return unsubscribe;
1756
+ }, []);
1757
+ const handleEscapePromptChange = useCallback((showPrompt) => {
1758
+ setShowEscapePrompt(showPrompt);
1759
+ }, []);
1760
+ // --- Rewind selector callbacks ---
1761
+ // IDE guard here is NOT redundant with the keyboard handler guard (line ~2375):
1762
+ // /rewind calls openRewindSelector directly, bypassing the keyboard handler.
1763
+ const openRewindSelector = useCallback(() => {
1764
+ if (streamingState !== StreamingState.Idle)
1765
+ return;
1766
+ if (dialogsVisibleRef.current)
1767
+ return;
1768
+ if (config.getIdeMode()) {
1769
+ historyManager.addItem({
1770
+ type: 'info',
1771
+ text: 'Rewind is disabled in IDE mode.',
1772
+ }, Date.now());
1773
+ return;
1774
+ }
1775
+ const hasUserTurns = historyManager.history.some((h) => h.type === 'user');
1776
+ if (!hasUserTurns)
1777
+ return;
1778
+ setIsRewindSelectorOpen(true);
1779
+ }, [streamingState, config, historyManager]);
1780
+ openRewindSelectorRef.current = openRewindSelector;
1781
+ const closeRewindSelector = useCallback(() => {
1782
+ setIsRewindSelectorOpen(false);
1783
+ }, []);
1784
+ const handleRewindConfirm = useCallback(async (userItem, option) => {
1785
+ try {
1786
+ // For 'both', validate that conversation can be truncated BEFORE
1787
+ // touching files — otherwise we'd roll back the workspace while
1788
+ // the conversation stays at the newer state.
1789
+ const needsConversation = option === 'conversation' || option === 'both';
1790
+ const geminiClient = needsConversation
1791
+ ? config.getGeminiClient()
1792
+ : null;
1793
+ let apiTruncateIndex = -1;
1794
+ let conversationSkippedNoClient = false;
1795
+ if (needsConversation) {
1796
+ if (!geminiClient) {
1797
+ if (option === 'conversation') {
1798
+ historyManager.addItem({
1799
+ type: 'error',
1800
+ text: t('Cannot rewind conversation: no active model client.'),
1801
+ }, Date.now());
1802
+ return;
1803
+ }
1804
+ // 'both' with no client: skip conversation, still try files,
1805
+ // and surface a warning after the restore output.
1806
+ conversationSkippedNoClient = true;
1807
+ }
1808
+ else {
1809
+ apiTruncateIndex = computeApiTruncationIndex(historyManager.history, userItem.id, geminiClient.getHistoryShallow());
1810
+ if (apiTruncateIndex < 0) {
1811
+ historyManager.addItem({
1812
+ type: 'error',
1813
+ text: t('Cannot rewind to a turn that was compressed. Try a more recent turn.'),
1814
+ }, Date.now());
1815
+ if (option === 'both') {
1816
+ // Abort file restore too — don't create inconsistent state
1817
+ return;
1818
+ }
1819
+ return;
1820
+ }
1821
+ }
1822
+ }
1823
+ // Restore code (files on disk). For 'code'-only, don't truncate
1824
+ // the snapshot timeline — the conversation turns remain visible
1825
+ // and their snapshots must stay available for future rewinds.
1826
+ let fileRestoreMessage;
1827
+ let fileRestoreError;
1828
+ let hasRestoreFailure = false;
1829
+ if (option === 'code' || option === 'both') {
1830
+ const promptId = userItem.promptId;
1831
+ if (promptId) {
1832
+ try {
1833
+ const truncateHistory = option === 'both' && !!geminiClient && apiTruncateIndex >= 0;
1834
+ const result = await config
1835
+ .getFileHistoryService()
1836
+ .rewind(promptId, truncateHistory);
1837
+ if (result.filesChanged.length > 0) {
1838
+ fileRestoreMessage = t('Restored {{count}} file(s).', {
1839
+ count: String(result.filesChanged.length),
1840
+ });
1841
+ }
1842
+ else if (result.filesFailed.length === 0) {
1843
+ fileRestoreMessage = t('No files needed to be restored.');
1844
+ }
1845
+ if (result.filesFailed.length > 0) {
1846
+ hasRestoreFailure = true;
1847
+ fileRestoreError = t('Failed to restore {{count}} file(s): {{files}}', {
1848
+ count: String(result.filesFailed.length),
1849
+ files: result.filesFailed
1850
+ .map((f) => f.split('/').pop())
1851
+ .join(', '),
1852
+ });
1853
+ }
1854
+ }
1855
+ catch (error) {
1856
+ hasRestoreFailure = true;
1857
+ fileRestoreError = t('Failed to restore files: {{error}}', {
1858
+ error: error instanceof Error ? error.message : String(error),
1859
+ });
1860
+ }
1861
+ }
1862
+ else {
1863
+ hasRestoreFailure = true;
1864
+ fileRestoreError = t('Cannot restore files: this turn was created before file checkpointing was enabled.');
1865
+ }
1866
+ }
1867
+ // Truncate conversation (already validated above).
1868
+ // Skip if file restore had failures in "both" mode to avoid inconsistent state.
1869
+ if (needsConversation &&
1870
+ geminiClient &&
1871
+ apiTruncateIndex >= 0 &&
1872
+ !(option === 'both' && hasRestoreFailure)) {
1873
+ const originalHistory = historyManager.history;
1874
+ const originalLength = originalHistory.length;
1875
+ let targetTurnIndex = 0;
1876
+ for (const h of originalHistory) {
1877
+ if (h.id === userItem.id)
1878
+ break;
1879
+ if (isRealUserTurn(h))
1880
+ targetTurnIndex++;
1881
+ }
1882
+ geminiClient.truncateHistory(apiTruncateIndex);
1883
+ const truncatedUi = originalHistory.filter((h) => h.id < userItem.id);
1884
+ historyManager.loadHistory(truncatedUi);
1885
+ refreshStatic();
1886
+ if (userItem.type === 'user' && userItem.text) {
1887
+ buffer.setText(userItem.text);
1888
+ }
1889
+ historyManager.addItem({
1890
+ type: 'info',
1891
+ text: t('Conversation rewound. Edit your prompt and press Enter to continue.'),
1892
+ }, Date.now());
1893
+ config.getChatRecordingService()?.rewindRecording(targetTurnIndex, {
1894
+ truncatedCount: originalLength - truncatedUi.length,
1895
+ });
1896
+ }
1897
+ // Show file restore result after conversation truncation so the
1898
+ // message isn't immediately removed by loadHistory.
1899
+ if (fileRestoreMessage) {
1900
+ historyManager.addItem({ type: 'info', text: fileRestoreMessage }, Date.now());
1901
+ }
1902
+ if (fileRestoreError) {
1903
+ historyManager.addItem({ type: 'error', text: fileRestoreError }, Date.now());
1904
+ }
1905
+ if (conversationSkippedNoClient) {
1906
+ historyManager.addItem({
1907
+ type: 'info',
1908
+ text: t('Code restored, but conversation could not be rewound (no active client).'),
1909
+ }, Date.now());
1910
+ }
1911
+ }
1912
+ catch (error) {
1913
+ historyManager.addItem({
1914
+ type: 'error',
1915
+ text: t('Rewind failed: {{error}}', {
1916
+ error: error instanceof Error ? error.message : String(error),
1917
+ }),
1918
+ }, Date.now());
1919
+ }
1920
+ finally {
1921
+ setIsRewindSelectorOpen(false);
1922
+ }
1923
+ }, [config, historyManager, refreshStatic, buffer]);
1924
+ const handleDoubleEscRewind = useDoublePress(openRewindSelector, (pending) => setRewindEscPending(pending));
1925
+ const handleIdePromptComplete = useCallback((result) => {
1926
+ if (result.userSelection === 'yes') {
1927
+ // Check whether the extension has been pre-installed
1928
+ if (result.isExtensionPreInstalled) {
1929
+ handleSlashCommand('/ide enable');
1930
+ }
1931
+ else {
1932
+ handleSlashCommand('/ide install');
1933
+ }
1934
+ settings.setValue(SettingScope.User, 'ide.hasSeenNudge', true);
1935
+ }
1936
+ else if (result.userSelection === 'dismiss') {
1937
+ settings.setValue(SettingScope.User, 'ide.hasSeenNudge', true);
1938
+ }
1939
+ setIdePromptAnswered(true);
1940
+ }, [handleSlashCommand, settings]);
1941
+ const handleCommandMigrationComplete = useCallback(async (result) => {
1942
+ setShowCommandMigrationNudge(false);
1943
+ if (result.userSelection === 'yes') {
1944
+ // Perform migration for both workspace and user levels
1945
+ try {
1946
+ const results = [];
1947
+ // Migrate workspace commands
1948
+ const workspaceCommandsDir = config.storage.getProjectCommandsDir();
1949
+ const workspaceResult = await migrateTomlCommands({
1950
+ commandDir: workspaceCommandsDir,
1951
+ createBackup: true,
1952
+ deleteOriginal: false,
1953
+ });
1954
+ if (workspaceResult.convertedFiles.length > 0 ||
1955
+ workspaceResult.failedFiles.length > 0) {
1956
+ results.push({ level: 'workspace', result: workspaceResult });
1957
+ }
1958
+ // Migrate user commands
1959
+ const userCommandsDir = Storage.getUserCommandsDir();
1960
+ const userResult = await migrateTomlCommands({
1961
+ commandDir: userCommandsDir,
1962
+ createBackup: true,
1963
+ deleteOriginal: false,
1964
+ });
1965
+ if (userResult.convertedFiles.length > 0 ||
1966
+ userResult.failedFiles.length > 0) {
1967
+ results.push({ level: 'user', result: userResult });
1968
+ }
1969
+ // Report results
1970
+ for (const { level, result: migrationResult } of results) {
1971
+ if (migrationResult.success &&
1972
+ migrationResult.convertedFiles.length > 0) {
1973
+ historyManager.addItem({
1974
+ type: MessageType.INFO,
1975
+ text: `[${level}] Successfully migrated ${migrationResult.convertedFiles.length} command file${migrationResult.convertedFiles.length > 1 ? 's' : ''} to Markdown format. Original files backed up as .toml.backup`,
1976
+ }, Date.now());
1977
+ }
1978
+ if (migrationResult.failedFiles.length > 0) {
1979
+ historyManager.addItem({
1980
+ type: MessageType.ERROR,
1981
+ text: `[${level}] Failed to migrate ${migrationResult.failedFiles.length} file${migrationResult.failedFiles.length > 1 ? 's' : ''}:\n${migrationResult.failedFiles.map((f) => ` • ${f.file}: ${f.error}`).join('\n')}`,
1982
+ }, Date.now());
1983
+ }
1984
+ }
1985
+ if (results.length === 0) {
1986
+ historyManager.addItem({
1987
+ type: MessageType.INFO,
1988
+ text: 'No TOML files found to migrate.',
1989
+ }, Date.now());
1990
+ }
1991
+ }
1992
+ catch (error) {
1993
+ historyManager.addItem({
1994
+ type: MessageType.ERROR,
1995
+ text: `❌ Migration failed: ${getErrorMessage(error)}`,
1996
+ }, Date.now());
1997
+ }
1998
+ }
1999
+ }, [historyManager, setShowCommandMigrationNudge, config.storage]);
2000
+ const currentCandidatesTokens = Object.values(sessionStats.metrics?.models ?? {}).reduce((acc, model) => acc + (model.tokens?.candidates ?? 0), 0);
2001
+ const { elapsedTime, currentLoadingPhrase, taskStartTokens } = useLoadingIndicator(streamingState, settings.merged.ui?.customWittyPhrases, currentCandidatesTokens);
2002
+ useAttentionNotifications({
2003
+ isFocused,
2004
+ streamingState,
2005
+ elapsedTime,
2006
+ settings,
2007
+ config,
2008
+ terminal,
2009
+ pendingToolCalls,
2010
+ });
2011
+ // Dialog close functionality
2012
+ const { closeAnyOpenDialog } = useDialogClose({
2013
+ isThemeDialogOpen,
2014
+ handleThemeSelect,
2015
+ isApprovalModeDialogOpen,
2016
+ handleApprovalModeSelect,
2017
+ isAuthDialogOpen,
2018
+ closeAuthDialog,
2019
+ pendingAuthType,
2020
+ isEditorDialogOpen,
2021
+ exitEditorDialog,
2022
+ isSettingsDialogOpen,
2023
+ closeSettingsDialog,
2024
+ isStatusLineDialogOpen,
2025
+ closeStatusLineDialog,
2026
+ isMemoryDialogOpen,
2027
+ closeMemoryDialog,
2028
+ activeArenaDialog,
2029
+ closeArenaDialog,
2030
+ isFolderTrustDialogOpen,
2031
+ showWelcomeBackDialog,
2032
+ handleWelcomeBackClose,
2033
+ isHelpDialogOpen,
2034
+ closeHelpDialog,
2035
+ isBackgroundTasksDialogOpen: bgTasksDialogOpen,
2036
+ closeBackgroundTasksDialog: closeBgTasksDialog,
2037
+ isDiffDialogOpen,
2038
+ closeDiffDialog,
2039
+ isStatsDialogOpen,
2040
+ closeStatsDialog,
2041
+ showWorktreeExitDialog,
2042
+ closeWorktreeExitDialog: () => setShowWorktreeExitDialog(false),
2043
+ });
2044
+ const handleExit = useCallback((pressedOnce, setPressedOnce, timerRef) => {
2045
+ // Fast double-press: Direct quit (preserve user habit) — unless the
2046
+ // session is inside an active worktree, in which case intercept and
2047
+ // show WorktreeExitDialog so the user explicitly decides keep vs
2048
+ // remove before the process exits.
2049
+ if (pressedOnce) {
2050
+ if (timerRef.current) {
2051
+ clearTimeout(timerRef.current);
2052
+ }
2053
+ if (activeWorktree) {
2054
+ setShowWorktreeExitDialog(true);
2055
+ setPressedOnce(false);
2056
+ return;
2057
+ }
2058
+ // Exit directly
2059
+ handleSlashCommand('/quit');
2060
+ return;
2061
+ }
2062
+ // First press: Prioritize cleanup tasks
2063
+ // 1. Close other dialogs (highest priority)
2064
+ /**
2065
+ * For AuthDialog it is required to complete the authentication process,
2066
+ * otherwise user cannot proceed to the next step.
2067
+ * So a quit on AuthDialog should go with normal two press quit.
2068
+ */
2069
+ if (isAuthDialogOpen) {
2070
+ setPressedOnce(true);
2071
+ timerRef.current = setTimeout(() => {
2072
+ setPressedOnce(false);
2073
+ }, 500);
2074
+ return;
2075
+ }
2076
+ // 2. Close other dialogs (highest priority)
2077
+ if (closeAnyOpenDialog()) {
2078
+ return; // Dialog closed, end processing
2079
+ }
2080
+ // 3. Cancel in-flight btw side-question
2081
+ if (btwItem && btwItem.btw.isPending && !dialogsVisibleRef.current) {
2082
+ cancelBtw();
2083
+ return; // Btw cancelled, end processing
2084
+ }
2085
+ // 4. Cancel ongoing requests
2086
+ if (streamingState === StreamingState.Responding) {
2087
+ cancelOngoingRequest?.();
2088
+ return; // Request cancelled, end processing
2089
+ }
2090
+ // 5. Clear input buffer (if has content)
2091
+ if (buffer.text.length > 0) {
2092
+ buffer.setText('');
2093
+ return; // Input cleared, end processing
2094
+ }
2095
+ // All cleanup tasks completed, set flag for double-press to quit
2096
+ setPressedOnce(true);
2097
+ timerRef.current = setTimeout(() => {
2098
+ setPressedOnce(false);
2099
+ }, CTRL_EXIT_PROMPT_DURATION_MS);
2100
+ }, [
2101
+ isAuthDialogOpen,
2102
+ handleSlashCommand,
2103
+ closeAnyOpenDialog,
2104
+ btwItem,
2105
+ cancelBtw,
2106
+ streamingState,
2107
+ cancelOngoingRequest,
2108
+ buffer,
2109
+ activeWorktree,
2110
+ ]);
2111
+ const handleGlobalKeypress = useCallback((key) => {
2112
+ // Debug log keystrokes if enabled
2113
+ if (settings.merged.general?.debugKeystrokeLogging) {
2114
+ debugLogger.debug('[DEBUG] Keystroke:', JSON.stringify(key));
2115
+ }
2116
+ if (keyMatchers[Command.QUIT](key)) {
2117
+ if (isAuthenticating) {
2118
+ return;
2119
+ }
2120
+ // On first press: set flag, start timer, and call handleExit for cleanup
2121
+ // On second press (within timeout): handleExit sees flag and does fast quit
2122
+ if (!ctrlCPressedOnce) {
2123
+ setCtrlCPressedOnce(true);
2124
+ ctrlCTimerRef.current = setTimeout(() => {
2125
+ setCtrlCPressedOnce(false);
2126
+ ctrlCTimerRef.current = null;
2127
+ }, CTRL_EXIT_PROMPT_DURATION_MS);
2128
+ }
2129
+ handleExit(ctrlCPressedOnce, setCtrlCPressedOnce, ctrlCTimerRef);
2130
+ return;
2131
+ }
2132
+ else if (keyMatchers[Command.EXIT](key)) {
2133
+ // Cancel in-flight btw even when buffer has text (Ctrl+D)
2134
+ if (btwItem && btwItem.btw.isPending && !dialogsVisibleRef.current) {
2135
+ cancelBtw();
2136
+ return;
2137
+ }
2138
+ if (buffer.text.length > 0) {
2139
+ return;
2140
+ }
2141
+ handleExit(ctrlDPressedOnce, setCtrlDPressedOnce, ctrlDTimerRef);
2142
+ return;
2143
+ }
2144
+ else if (keyMatchers[Command.ESCAPE](key)) {
2145
+ // In vim INSERT mode, let vim's own handler (in InputPrompt) consume
2146
+ // the Esc to switch to NORMAL mode. Without this guard, both handlers
2147
+ // fire on the same keypress — vim switches mode AND AppContainer
2148
+ // shows "Press Esc again to clear" or cancels the stream.
2149
+ if (vimEnabled && vimMode === 'INSERT') {
2150
+ return;
2151
+ }
2152
+ // Dismiss or cancel btw side-question on Escape,
2153
+ // but only when btw is actually visible (not hidden behind a dialog).
2154
+ if (btwItem && !dialogsVisibleRef.current) {
2155
+ cancelBtw();
2156
+ return;
2157
+ }
2158
+ // Skip if shell is focused (to allow shell's own escape handling)
2159
+ if (embeddedShellFocused) {
2160
+ return;
2161
+ }
2162
+ // If input has content, use double-press to clear
2163
+ if (buffer.text.length > 0) {
2164
+ if (escapePressedOnce) {
2165
+ // Second press: clear input, keep the flag to allow immediate cancel
2166
+ buffer.setText('');
2167
+ return;
2168
+ }
2169
+ // First press: set flag and show prompt
2170
+ setEscapePressedOnce(true);
2171
+ escapeTimerRef.current = setTimeout(() => {
2172
+ setEscapePressedOnce(false);
2173
+ escapeTimerRef.current = null;
2174
+ }, CTRL_EXIT_PROMPT_DURATION_MS);
2175
+ return;
2176
+ }
2177
+ // Input is empty, cancel request immediately (no double-press needed)
2178
+ // Skip when a dialog (background tasks, etc.) is open — ESC should
2179
+ // close the dialog, not cancel the running request.
2180
+ if (streamingState === StreamingState.Responding &&
2181
+ !dialogsVisibleRef.current) {
2182
+ if (escapeTimerRef.current) {
2183
+ clearTimeout(escapeTimerRef.current);
2184
+ escapeTimerRef.current = null;
2185
+ }
2186
+ cancelOngoingRequest?.();
2187
+ setEscapePressedOnce(false);
2188
+ return;
2189
+ }
2190
+ // Input is empty and idle — double-ESC opens rewind selector
2191
+ if (streamingState === StreamingState.Idle &&
2192
+ !dialogsVisibleRef.current &&
2193
+ !config.getIdeMode()) {
2194
+ if (escapeTimerRef.current) {
2195
+ clearTimeout(escapeTimerRef.current);
2196
+ escapeTimerRef.current = null;
2197
+ }
2198
+ setEscapePressedOnce(false);
2199
+ handleDoubleEscRewind();
2200
+ return;
2201
+ }
2202
+ // No action available, reset the flag
2203
+ if (escapeTimerRef.current) {
2204
+ clearTimeout(escapeTimerRef.current);
2205
+ escapeTimerRef.current = null;
2206
+ }
2207
+ setEscapePressedOnce(false);
2208
+ return;
2209
+ }
2210
+ // Dismiss completed btw side-question on Space or Enter,
2211
+ // but only when btw is visible and the input buffer is empty.
2212
+ if (btwItem &&
2213
+ !btwItem.btw.isPending &&
2214
+ !dialogsVisibleRef.current &&
2215
+ buffer.text.length === 0) {
2216
+ if (key.name === 'return' || key.sequence === ' ') {
2217
+ setBtwItem(null);
2218
+ return;
2219
+ }
2220
+ }
2221
+ // Note: Ctrl+C/D btw cancellation is handled inside handleExit
2222
+ // (step 3), not here, because Command.QUIT/EXIT match first.
2223
+ let enteringConstrainHeightMode = false;
2224
+ if (!constrainHeight) {
2225
+ enteringConstrainHeightMode = true;
2226
+ setConstrainHeight(true);
2227
+ }
2228
+ if (handleRenderModeToggleKey(key, setRenderMode)) {
2229
+ return;
2230
+ }
2231
+ else if (keyMatchers[Command.TOGGLE_TOOL_DESCRIPTIONS](key)) {
2232
+ const newValue = !showToolDescriptions;
2233
+ setShowToolDescriptions(newValue);
2234
+ const mcpServers = config.getMcpServers();
2235
+ if (Object.keys(mcpServers || {}).length > 0) {
2236
+ handleSlashCommand(newValue ? '/mcp desc' : '/mcp nodesc');
2237
+ }
2238
+ }
2239
+ else if (keyMatchers[Command.TOGGLE_IDE_CONTEXT_DETAIL](key) &&
2240
+ config.getIdeMode() &&
2241
+ ideContextState) {
2242
+ handleSlashCommand('/ide status');
2243
+ }
2244
+ else if (keyMatchers[Command.SHOW_MORE_LINES](key) &&
2245
+ !enteringConstrainHeightMode) {
2246
+ setConstrainHeight(false);
2247
+ }
2248
+ else if (keyMatchers[Command.TOGGLE_SHELL_INPUT_FOCUS](key)) {
2249
+ if (activePtyId || embeddedShellFocused) {
2250
+ setEmbeddedShellFocused((prev) => !prev);
2251
+ }
2252
+ }
2253
+ else if (keyMatchers[Command.TOGGLE_COMPACT_MODE](key)) {
2254
+ const newValue = !compactMode;
2255
+ setCompactMode(newValue);
2256
+ void settings.setValue(SettingScope.User, 'ui.compactMode', newValue);
2257
+ // Skip the expensive clearTerminal + Static remount when no past
2258
+ // item would render differently (no tool_group / gemini_thought*).
2259
+ // Future items pick up the new mode naturally because Static is
2260
+ // append-only. Issue #3899: this unfreezes Ctrl+O for plain-chat
2261
+ // long sessions; tool/thinking-bearing sessions still go through
2262
+ // the (now chunked) full path in MainContent.
2263
+ if (compactToggleHasVisualEffect(historyRef.current)) {
2264
+ refreshStatic();
2265
+ }
2266
+ }
2267
+ else if (keyMatchers[Command.PROMOTE_SHELL_TO_BACKGROUND](key)) {
2268
+ // Ctrl+B: promote a running foreground shell command to a
2269
+ // background task (#3831). The child keeps running, the
2270
+ // agent's turn unblocks, and the shell becomes a regular
2271
+ // BackgroundShellEntry visible in `/tasks` + the dialog and
2272
+ // stoppable via `task_stop`.
2273
+ //
2274
+ // Read from the ref (NOT the destructured `pendingToolCalls`)
2275
+ // so we don't have to put `pendingToolCalls` in the deps
2276
+ // array — that would re-bind the keypress handler on every
2277
+ // tool-call status update, which is noisy.
2278
+ //
2279
+ // No-op when no foreground shell is currently executing OR
2280
+ // the executing tool call is non-shell (no
2281
+ // `promoteAbortController` projected). Falling through in
2282
+ // the no-op case is intentional: while the agent is idle the
2283
+ // input layer's own Ctrl+B handler (cursor-left in the
2284
+ // prompt) should still fire as before.
2285
+ //
2286
+ // Broadcast caveat: `KeypressContext.broadcast()` has no
2287
+ // consumed-flag mechanism today, so even after we `return`
2288
+ // here the same Ctrl+B keypress is also dispatched to other
2289
+ // useKeypress consumers (text buffer cursor-left,
2290
+ // DebugProfiler, etc.). Visible side effect during a
2291
+ // successful promote: the input cursor will move one
2292
+ // character left if the prompt has focus. Cosmetic; tracked
2293
+ // for a follow-up that introduces a `consumed` return value
2294
+ // on KeypressHandler so global handlers can swallow keys.
2295
+ const executingShell = pendingToolCallsRef.current.find((tc) => tc.status === 'executing' &&
2296
+ // Defense-in-depth: also gate on the tool name. Today only
2297
+ // the shell tool's invocation wires `promoteAbortController`,
2298
+ // but a future copy-paste / type-confusion that adds the
2299
+ // property to a non-shell tool would otherwise let Ctrl+B
2300
+ // mistakenly fire `abort({kind:'background'})` on a tool
2301
+ // whose service has no promote-handoff handler.
2302
+ tc.request.name === ToolNames.SHELL &&
2303
+ tc.promoteAbortController !== undefined);
2304
+ if (executingShell?.promoteAbortController) {
2305
+ debugLogger.debug(`Ctrl+B promote: matched executing shell tool call ${executingShell.request.callId}`);
2306
+ executingShell.promoteAbortController.abort({
2307
+ kind: 'background',
2308
+ });
2309
+ return;
2310
+ }
2311
+ debugLogger.debug(`Ctrl+B promote: no executing shell tool call; falling through ` +
2312
+ `(streamingState=${streamingState}, ` +
2313
+ `pendingToolCalls=${pendingToolCallsRef.current.length})`);
2314
+ }
2315
+ }, [
2316
+ constrainHeight,
2317
+ setConstrainHeight,
2318
+ showToolDescriptions,
2319
+ setShowToolDescriptions,
2320
+ config,
2321
+ ideContextState,
2322
+ handleExit,
2323
+ ctrlCPressedOnce,
2324
+ setCtrlCPressedOnce,
2325
+ ctrlCTimerRef,
2326
+ ctrlDPressedOnce,
2327
+ setCtrlDPressedOnce,
2328
+ ctrlDTimerRef,
2329
+ escapePressedOnce,
2330
+ setEscapePressedOnce,
2331
+ escapeTimerRef,
2332
+ streamingState,
2333
+ cancelOngoingRequest,
2334
+ buffer,
2335
+ handleSlashCommand,
2336
+ activePtyId,
2337
+ embeddedShellFocused,
2338
+ btwItem,
2339
+ setBtwItem,
2340
+ cancelBtw,
2341
+ // `settings` is a stable LoadedSettings instance (not recreated on render).
2342
+ // ESLint requires it here because the callback calls settings.setValue().
2343
+ // debugKeystrokeLogging is read at call time, so no stale closure risk.
2344
+ settings,
2345
+ isAuthenticating,
2346
+ compactMode,
2347
+ setCompactMode,
2348
+ setRenderMode,
2349
+ refreshStatic,
2350
+ handleDoubleEscRewind,
2351
+ vimEnabled,
2352
+ vimMode,
2353
+ ]);
2354
+ useKeypress(handleGlobalKeypress, { isActive: true });
2355
+ // Update terminal title with Qwen Code status and thoughts
2356
+ useEffect(() => {
2357
+ // Respect both showStatusInTitle and hideWindowTitle settings
2358
+ if (!settings.merged.ui?.showStatusInTitle ||
2359
+ settings.merged.ui?.hideWindowTitle)
2360
+ return;
2361
+ let title;
2362
+ if (streamingState === StreamingState.Idle) {
2363
+ title = originalTitleRef.current;
2364
+ }
2365
+ else {
2366
+ const statusText = thought?.subject
2367
+ ?.replace(/[\r\n]+/g, ' ')
2368
+ .substring(0, 80);
2369
+ title = statusText || originalTitleRef.current;
2370
+ }
2371
+ // Pad the title to a fixed width to prevent taskbar icon resizing.
2372
+ const paddedTitle = title.padEnd(80, ' ');
2373
+ // Only update the title if it's different from the last value we set
2374
+ if (lastTitleRef.current !== paddedTitle) {
2375
+ lastTitleRef.current = paddedTitle;
2376
+ stdout.write(`\x1b]2;${paddedTitle}\x07`);
2377
+ }
2378
+ // Note: We don't need to reset the window title on exit because Qwen Code is already doing that elsewhere
2379
+ }, [
2380
+ streamingState,
2381
+ thought,
2382
+ settings.merged.ui?.showStatusInTitle,
2383
+ settings.merged.ui?.hideWindowTitle,
2384
+ stdout,
2385
+ ]);
2386
+ // Drain queued messages when idle. `queueDrainNonce` re-fires the effect
2387
+ // after each submission settles so multi-step queues drain end-to-end.
2388
+ const queueDrainingRef = useRef(false);
2389
+ const [queueDrainNonce, setQueueDrainNonce] = useState(0);
2390
+ useEffect(() => {
2391
+ if (queueDrainingRef.current)
2392
+ return;
2393
+ if (!isConfigInitialized)
2394
+ return;
2395
+ if (streamingState !== StreamingState.Idle)
2396
+ return;
2397
+ if (dialogsVisible)
2398
+ return;
2399
+ if (messageQueue.length === 0)
2400
+ return;
2401
+ // Two-phase: batch plain prompts as one turn, else pop next slash command.
2402
+ const plainPrompts = drainQueue();
2403
+ const submission = plainPrompts.length > 0 ? plainPrompts.join('\n\n') : popNextSegment();
2404
+ if (submission === null)
2405
+ return;
2406
+ queueDrainingRef.current = true;
2407
+ Promise.resolve(submitQuery(submission)).finally(() => {
2408
+ queueDrainingRef.current = false;
2409
+ setQueueDrainNonce((n) => n + 1);
2410
+ });
2411
+ }, [
2412
+ isConfigInitialized,
2413
+ streamingState,
2414
+ dialogsVisible,
2415
+ messageQueue,
2416
+ drainQueue,
2417
+ popNextSegment,
2418
+ submitQuery,
2419
+ queueDrainNonce,
2420
+ ]);
2421
+ const nightly = props.version.includes('nightly');
2422
+ const uiState = useMemo(() => ({
2423
+ history: historyManager.history,
2424
+ historyManager,
2425
+ isThemeDialogOpen,
2426
+ themeError,
2427
+ auth: authState,
2428
+ isConfigInitialized,
2429
+ editorError,
2430
+ isEditorDialogOpen,
2431
+ debugMessage,
2432
+ quittingMessages,
2433
+ isSettingsDialogOpen,
2434
+ isStatusLineDialogOpen,
2435
+ statusLineSettingsVersion,
2436
+ statusLineConfigOverride,
2437
+ isMemoryDialogOpen,
2438
+ isModelDialogOpen,
2439
+ isFastModelMode,
2440
+ isTrustDialogOpen,
2441
+ activeArenaDialog,
2442
+ isPermissionsDialogOpen,
2443
+ isApprovalModeDialogOpen,
2444
+ isResumeDialogOpen,
2445
+ resumeMatchedSessions,
2446
+ isDeleteDialogOpen,
2447
+ isHelpDialogOpen,
2448
+ activeHelpTab,
2449
+ slashCommands,
2450
+ recentSlashCommands,
2451
+ pendingSlashCommandHistoryItems,
2452
+ commandContext,
2453
+ shellConfirmationRequest,
2454
+ confirmationRequest,
2455
+ confirmUpdateExtensionRequests,
2456
+ providerUpdateRequest,
2457
+ settingInputRequests,
2458
+ pluginChoiceRequests,
2459
+ loopDetectionConfirmationRequest,
2460
+ geminiMdFileCount,
2461
+ streamingState,
2462
+ initError,
2463
+ pendingGeminiHistoryItems,
2464
+ thought,
2465
+ shellModeActive,
2466
+ userMessages,
2467
+ buffer,
2468
+ inputWidth,
2469
+ suggestionsWidth,
2470
+ isInputActive,
2471
+ shouldShowIdePrompt,
2472
+ shouldShowCommandMigrationNudge,
2473
+ commandMigrationTomlFiles,
2474
+ isFolderTrustDialogOpen: isFolderTrustDialogOpen ?? false,
2475
+ isTrustedFolder,
2476
+ constrainHeight,
2477
+ ideContextState,
2478
+ showToolDescriptions,
2479
+ ctrlCPressedOnce,
2480
+ ctrlDPressedOnce,
2481
+ showEscapePrompt,
2482
+ isFocused,
2483
+ elapsedTime,
2484
+ currentLoadingPhrase,
2485
+ historyRemountKey,
2486
+ messageQueue,
2487
+ showAutoAcceptIndicator,
2488
+ currentModel,
2489
+ contextFileNames,
2490
+ availableTerminalHeight,
2491
+ useTerminalBuffer,
2492
+ mainAreaWidth,
2493
+ staticAreaMaxItemHeight,
2494
+ staticExtraHeight,
2495
+ dialogsVisible,
2496
+ pendingHistoryItems,
2497
+ stickyTodos,
2498
+ btwItem,
2499
+ setBtwItem,
2500
+ cancelBtw,
2501
+ nightly,
2502
+ branchName,
2503
+ activeWorktree,
2504
+ showWorktreeExitDialog,
2505
+ sessionStats,
2506
+ terminalWidth,
2507
+ terminalHeight,
2508
+ mainControlsRef,
2509
+ currentIDE,
2510
+ updateInfo,
2511
+ showIdeRestartPrompt,
2512
+ ideTrustRestartReason,
2513
+ isRestarting,
2514
+ extensionsUpdateState,
2515
+ activePtyId,
2516
+ embeddedShellFocused,
2517
+ // Welcome back dialog
2518
+ showWelcomeBackDialog,
2519
+ welcomeBackInfo,
2520
+ welcomeBackChoice,
2521
+ // Subagent dialogs
2522
+ isSubagentCreateDialogOpen,
2523
+ isAgentsManagerDialogOpen,
2524
+ // Skills manager dialog (`/skills`)
2525
+ isSkillsManagerDialogOpen,
2526
+ // Extensions manager dialog
2527
+ isExtensionsManagerDialogOpen,
2528
+ // MCP dialog
2529
+ isMcpDialogOpen,
2530
+ // Hooks dialog
2531
+ isHooksDialogOpen,
2532
+ isStatsDialogOpen,
2533
+ // Feedback dialog
2534
+ isFeedbackDialogOpen,
2535
+ // Per-task token tracking
2536
+ taskStartTokens,
2537
+ // Real-time token display
2538
+ streamingResponseLengthRef,
2539
+ isReceivingContent,
2540
+ // Session name
2541
+ sessionName,
2542
+ setSessionName,
2543
+ // Prompt suggestion
2544
+ promptSuggestion,
2545
+ dismissPromptSuggestion,
2546
+ // Rewind selector
2547
+ isRewindSelectorOpen,
2548
+ rewindEscPending,
2549
+ // Diff dialog
2550
+ isDiffDialogOpen,
2551
+ }), [
2552
+ isThemeDialogOpen,
2553
+ themeError,
2554
+ authState,
2555
+ isConfigInitialized,
2556
+ editorError,
2557
+ isEditorDialogOpen,
2558
+ debugMessage,
2559
+ quittingMessages,
2560
+ isSettingsDialogOpen,
2561
+ isStatusLineDialogOpen,
2562
+ statusLineSettingsVersion,
2563
+ statusLineConfigOverride,
2564
+ isMemoryDialogOpen,
2565
+ isModelDialogOpen,
2566
+ isFastModelMode,
2567
+ isTrustDialogOpen,
2568
+ activeArenaDialog,
2569
+ isPermissionsDialogOpen,
2570
+ isApprovalModeDialogOpen,
2571
+ isResumeDialogOpen,
2572
+ resumeMatchedSessions,
2573
+ isDeleteDialogOpen,
2574
+ isHelpDialogOpen,
2575
+ activeHelpTab,
2576
+ slashCommands,
2577
+ recentSlashCommands,
2578
+ pendingSlashCommandHistoryItems,
2579
+ commandContext,
2580
+ shellConfirmationRequest,
2581
+ confirmationRequest,
2582
+ confirmUpdateExtensionRequests,
2583
+ providerUpdateRequest,
2584
+ settingInputRequests,
2585
+ pluginChoiceRequests,
2586
+ loopDetectionConfirmationRequest,
2587
+ geminiMdFileCount,
2588
+ streamingState,
2589
+ initError,
2590
+ pendingGeminiHistoryItems,
2591
+ thought,
2592
+ shellModeActive,
2593
+ userMessages,
2594
+ buffer,
2595
+ inputWidth,
2596
+ suggestionsWidth,
2597
+ isInputActive,
2598
+ shouldShowIdePrompt,
2599
+ shouldShowCommandMigrationNudge,
2600
+ commandMigrationTomlFiles,
2601
+ isFolderTrustDialogOpen,
2602
+ isTrustedFolder,
2603
+ constrainHeight,
2604
+ ideContextState,
2605
+ showToolDescriptions,
2606
+ ctrlCPressedOnce,
2607
+ ctrlDPressedOnce,
2608
+ showEscapePrompt,
2609
+ isFocused,
2610
+ elapsedTime,
2611
+ currentLoadingPhrase,
2612
+ historyRemountKey,
2613
+ messageQueue,
2614
+ showAutoAcceptIndicator,
2615
+ contextFileNames,
2616
+ availableTerminalHeight,
2617
+ useTerminalBuffer,
2618
+ mainAreaWidth,
2619
+ staticAreaMaxItemHeight,
2620
+ staticExtraHeight,
2621
+ dialogsVisible,
2622
+ pendingHistoryItems,
2623
+ stickyTodos,
2624
+ btwItem,
2625
+ setBtwItem,
2626
+ cancelBtw,
2627
+ nightly,
2628
+ branchName,
2629
+ activeWorktree,
2630
+ showWorktreeExitDialog,
2631
+ sessionStats,
2632
+ terminalWidth,
2633
+ terminalHeight,
2634
+ mainControlsRef,
2635
+ currentIDE,
2636
+ updateInfo,
2637
+ showIdeRestartPrompt,
2638
+ ideTrustRestartReason,
2639
+ isRestarting,
2640
+ currentModel,
2641
+ extensionsUpdateState,
2642
+ activePtyId,
2643
+ historyManager,
2644
+ embeddedShellFocused,
2645
+ // Welcome back dialog
2646
+ showWelcomeBackDialog,
2647
+ welcomeBackInfo,
2648
+ welcomeBackChoice,
2649
+ // Subagent dialogs
2650
+ isSubagentCreateDialogOpen,
2651
+ isAgentsManagerDialogOpen,
2652
+ // Skills manager dialog (`/skills`)
2653
+ isSkillsManagerDialogOpen,
2654
+ // Extensions manager dialog
2655
+ isExtensionsManagerDialogOpen,
2656
+ // MCP dialog
2657
+ isMcpDialogOpen,
2658
+ // Hooks dialog
2659
+ isHooksDialogOpen,
2660
+ isStatsDialogOpen,
2661
+ // Feedback dialog
2662
+ isFeedbackDialogOpen,
2663
+ // Per-task token tracking
2664
+ taskStartTokens,
2665
+ // Real-time token display
2666
+ streamingResponseLengthRef,
2667
+ isReceivingContent,
2668
+ // Session name
2669
+ sessionName,
2670
+ setSessionName,
2671
+ // Prompt suggestion
2672
+ promptSuggestion,
2673
+ dismissPromptSuggestion,
2674
+ // Rewind selector
2675
+ isRewindSelectorOpen,
2676
+ rewindEscPending,
2677
+ // Diff dialog
2678
+ isDiffDialogOpen,
2679
+ ]);
2680
+ const uiActions = useMemo(() => ({
2681
+ openThemeDialog,
2682
+ openEditorDialog,
2683
+ openMemoryDialog,
2684
+ handleThemeSelect,
2685
+ handleThemeHighlight,
2686
+ handleApprovalModeSelect,
2687
+ auth: authActions,
2688
+ handleEditorSelect,
2689
+ exitEditorDialog,
2690
+ closeSettingsDialog,
2691
+ closeStatusLineDialog,
2692
+ notifyStatusLineSettingsChanged,
2693
+ closeMemoryDialog,
2694
+ closeModelDialog,
2695
+ openModelDialog,
2696
+ openArenaDialog,
2697
+ closeArenaDialog,
2698
+ handleArenaModelsSelected,
2699
+ dismissProviderUpdate,
2700
+ closeTrustDialog,
2701
+ closePermissionsDialog,
2702
+ setShellModeActive,
2703
+ vimHandleInput,
2704
+ handleIdePromptComplete,
2705
+ handleCommandMigrationComplete,
2706
+ handleFolderTrustSelect,
2707
+ setConstrainHeight,
2708
+ onEscapePromptChange: handleEscapePromptChange,
2709
+ onTabConsumerChange: setHasTabConsumer,
2710
+ refreshStatic,
2711
+ handleFinalSubmit,
2712
+ handleRetryLastPrompt: retryLastPrompt,
2713
+ handleClearScreen,
2714
+ popAllQueuedMessages: popAllMessages,
2715
+ // Welcome back dialog
2716
+ handleWelcomeBackSelection,
2717
+ handleWelcomeBackClose,
2718
+ // Worktree exit dialog
2719
+ handleWorktreeExit,
2720
+ // Subagent dialogs
2721
+ closeSubagentCreateDialog,
2722
+ closeAgentsManagerDialog,
2723
+ // Skills manager dialog (`/skills`)
2724
+ openSkillsManagerDialog,
2725
+ closeSkillsManagerDialog,
2726
+ reloadCommands,
2727
+ setInputBuffer: buffer.setText,
2728
+ // Extensions manager dialog
2729
+ closeExtensionsManagerDialog,
2730
+ // MCP dialog
2731
+ closeMcpDialog,
2732
+ // Hooks dialog
2733
+ openHooksDialog,
2734
+ // Hooks dialog
2735
+ closeHooksDialog,
2736
+ closeStatsDialog,
2737
+ // Resume session dialog
2738
+ openResumeDialog,
2739
+ closeResumeDialog,
2740
+ handleResume,
2741
+ // Branch (fork) session
2742
+ handleBranch,
2743
+ // Delete session dialog
2744
+ openDeleteDialog,
2745
+ closeDeleteDialog,
2746
+ handleDelete,
2747
+ handleDeleteMany,
2748
+ // Help dialog
2749
+ openHelpDialog,
2750
+ closeHelpDialog,
2751
+ setHelpTab,
2752
+ // Feedback dialog
2753
+ openFeedbackDialog,
2754
+ closeFeedbackDialog,
2755
+ temporaryCloseFeedbackDialog,
2756
+ submitFeedback,
2757
+ // Rewind selector
2758
+ openRewindSelector,
2759
+ closeRewindSelector,
2760
+ handleRewindConfirm,
2761
+ // Diff dialog
2762
+ openDiffDialog,
2763
+ closeDiffDialog,
2764
+ }), [
2765
+ openThemeDialog,
2766
+ openEditorDialog,
2767
+ openMemoryDialog,
2768
+ handleThemeSelect,
2769
+ handleThemeHighlight,
2770
+ handleApprovalModeSelect,
2771
+ authActions,
2772
+ handleEditorSelect,
2773
+ exitEditorDialog,
2774
+ closeSettingsDialog,
2775
+ closeStatusLineDialog,
2776
+ notifyStatusLineSettingsChanged,
2777
+ closeMemoryDialog,
2778
+ closeModelDialog,
2779
+ openModelDialog,
2780
+ openArenaDialog,
2781
+ closeArenaDialog,
2782
+ handleArenaModelsSelected,
2783
+ dismissProviderUpdate,
2784
+ closeTrustDialog,
2785
+ closePermissionsDialog,
2786
+ setShellModeActive,
2787
+ vimHandleInput,
2788
+ handleIdePromptComplete,
2789
+ handleCommandMigrationComplete,
2790
+ handleFolderTrustSelect,
2791
+ setConstrainHeight,
2792
+ handleEscapePromptChange,
2793
+ refreshStatic,
2794
+ handleFinalSubmit,
2795
+ retryLastPrompt,
2796
+ handleClearScreen,
2797
+ popAllMessages,
2798
+ handleWelcomeBackSelection,
2799
+ handleWelcomeBackClose,
2800
+ handleWorktreeExit,
2801
+ // Subagent dialogs
2802
+ closeSubagentCreateDialog,
2803
+ closeAgentsManagerDialog,
2804
+ // Skills manager dialog (`/skills`)
2805
+ openSkillsManagerDialog,
2806
+ closeSkillsManagerDialog,
2807
+ reloadCommands,
2808
+ buffer.setText,
2809
+ // Extensions manager dialog
2810
+ closeExtensionsManagerDialog,
2811
+ // MCP dialog
2812
+ closeMcpDialog,
2813
+ // Hooks dialog
2814
+ openHooksDialog,
2815
+ // Hooks dialog
2816
+ closeHooksDialog,
2817
+ closeStatsDialog,
2818
+ // Resume session dialog
2819
+ openResumeDialog,
2820
+ closeResumeDialog,
2821
+ handleResume,
2822
+ // Branch (fork) session
2823
+ handleBranch,
2824
+ // Delete session dialog
2825
+ openDeleteDialog,
2826
+ closeDeleteDialog,
2827
+ handleDelete,
2828
+ handleDeleteMany,
2829
+ // Help dialog
2830
+ openHelpDialog,
2831
+ closeHelpDialog,
2832
+ setHelpTab,
2833
+ // Feedback dialog
2834
+ openFeedbackDialog,
2835
+ closeFeedbackDialog,
2836
+ temporaryCloseFeedbackDialog,
2837
+ submitFeedback,
2838
+ // Rewind selector
2839
+ openRewindSelector,
2840
+ closeRewindSelector,
2841
+ handleRewindConfirm,
2842
+ // Diff dialog
2843
+ openDiffDialog,
2844
+ closeDiffDialog,
2845
+ ]);
2846
+ const compactModeValue = useMemo(() => ({ compactMode, compactInline, setCompactMode }), [compactMode, compactInline, setCompactMode]);
2847
+ const renderModeValue = useMemo(() => ({ renderMode, setRenderMode }), [renderMode, setRenderMode]);
2848
+ return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
2849
+ version: props.version,
2850
+ startupWarnings: props.startupWarnings || [],
2851
+ }, children: _jsx(CompactModeProvider, { value: compactModeValue, children: _jsx(RenderModeProvider, { value: renderModeValue, children: _jsx(TerminalOutputProvider, { value: writeRaw, children: _jsx(ShellFocusContext.Provider, { value: isFocused, children: _jsx(App, {}) }) }) }) }) }) }) }) }));
2852
+ };
2853
+ //# sourceMappingURL=AppContainer.js.map